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 836faa38d5..b76fb80bdd 100755 --- a/.ci/android/build.sh +++ b/.ci/android/build.sh @@ -1,21 +1,137 @@ -#!/bin/bash -e +#!/bin/sh -e -# SPDX-FileCopyrightText: Copyright 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 assembleMainlineRelease -./gradlew bundleMainlineRelease +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 50b7bbc332..0000000000 --- a/.ci/android/package.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/sh - -# SPDX-FileCopyrightText: Copyright 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.sh b/.ci/license-header.sh index 784c6bac5a..6b19f91185 100755 --- a/.ci/license-header.sh +++ b/.ci/license-header.sh @@ -1,13 +1,13 @@ #!/bin/sh -e -# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +# SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project # SPDX-License-Identifier: GPL-3.0-or-later # 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" +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" # license header constants, please change when needed :)))) -YEAR=2025 +YEAR=2026 HOLDER="Eden Emulator Project" LICENSE="GPL-3.0-or-later" @@ -41,9 +41,8 @@ EOF while true; do case "$1" in - (-uc) UPDATE=true; COMMIT=true ;; (-u|--update) UPDATE=true ;; - (-c|--commit) COMMIT=true ;; + (-c|--commit) UPDATE=true; COMMIT=true ;; ("$0") break ;; ("") break ;; (*) usage ;; @@ -113,10 +112,10 @@ for file in $FILES; do [ "$excluded" = "true" ] && continue case "$file" in - *.cmake|*.sh|CMakeLists.txt) + *.cmake|*.sh|*CMakeLists.txt) begin="#" ;; - *.kt*|*.cpp|*.h) + *.kt*|*.cpp|*.h|*.qml) begin="//" ;; *) @@ -186,7 +185,7 @@ if [ "$UPDATE" = "true" ]; then for file in $SRC_FILES $OTHER_FILES; do case $(basename -- "$file") in - *.cmake|CMakeLists.txt) + *.cmake|*CMakeLists.txt) begin="#" shell="false" ;; @@ -194,7 +193,7 @@ if [ "$UPDATE" = "true" ]; then begin="#" shell=true ;; - *.kt*|*.cpp|*.h) + *) begin="//" shell="false" ;; diff --git a/.ci/linux/build.sh b/.ci/linux/build.sh index 16eaef394b..2a0a7e58b1 100755 --- a/.ci/linux/build.sh +++ b/.ci/linux/build.sh @@ -1,6 +1,6 @@ #!/bin/bash -e -# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +# SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project # SPDX-License-Identifier: GPL-3.0-or-later case "$1" in @@ -104,8 +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 \ - -DDYNARMIC_ENABLE_LTO=ON \ + -DENABLE_LTO=ON \ "${EXTRA_CMAKE_FLAGS[@]}" ninja -j${NPROC} diff --git a/.ci/windows/build.sh b/.ci/windows/build.sh old mode 100644 new mode 100755 index fd1883048c..48cca8eb4d --- a/.ci/windows/build.sh +++ b/.ci/windows/build.sh @@ -1,6 +1,6 @@ #!/bin/bash -ex -# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +# SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project # SPDX-License-Identifier: GPL-3.0-or-later if [ "$COMPILER" == "clang" ] @@ -32,9 +32,8 @@ cmake .. -G Ninja \ -DYUZU_ROOM_STANDALONE=OFF \ -DYUZU_USE_QT_MULTIMEDIA=${USE_MULTIMEDIA:-false} \ -DYUZU_USE_QT_WEB_ENGINE=${USE_WEBENGINE:-false} \ - -DYUZU_ENABLE_LTO=ON \ + -DENABLE_LTO=ON \ -DCMAKE_EXE_LINKER_FLAGS=" /LTCG" \ - -DDYNARMIC_ENABLE_LTO=ON \ -DYUZU_USE_BUNDLED_QT=${BUNDLE_QT:-false} \ -DUSE_CCACHE=${CCACHE:-false} \ -DENABLE_UPDATE_CHECKER=${DEVEL:-true} \ 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/.github/workflows/sources.yml b/.forgejo/workflows/sources.yml similarity index 100% rename from .github/workflows/sources.yml rename to .forgejo/workflows/sources.yml diff --git a/.github/workflows/strings.yml b/.forgejo/workflows/strings.yml similarity index 89% rename from .github/workflows/strings.yml rename to .forgejo/workflows/strings.yml index 614c5c12d0..ae8a7220e1 100644 --- a/.github/workflows/strings.yml +++ b/.forgejo/workflows/strings.yml @@ -13,7 +13,7 @@ jobs: fetch-depth: 0 - name: Find Unused Strings - run: ./tools/find-unused-strings.sh + run: ./tools/unused-strings.sh - name: Find Stale Translations run: ./tools/stale-translations.sh diff --git a/.github/workflows/translations.yml b/.forgejo/workflows/translations.yml similarity index 95% rename from .github/workflows/translations.yml rename to .forgejo/workflows/translations.yml index 92bb1fdf5d..4a2d52e745 100644 --- a/.github/workflows/translations.yml +++ b/.forgejo/workflows/translations.yml @@ -1,10 +1,9 @@ name: tx-pull on: - # monday, wednesday, saturday at 2pm + # tuesday, saturday at 2pm schedule: - cron: - - '0 14 * * 1,3,6' + - cron: '0 14 * * 2,6' workflow_dispatch: jobs: @@ -59,4 +58,3 @@ jobs: -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/.gitignore b/.gitignore index d070d94681..67bdd8adf4 100644 --- a/.gitignore +++ b/.gitignore @@ -37,6 +37,8 @@ CMakeLists.txt.user* # *nix related # Common convention for backup or temporary files *~ +*.core +dtrace-out/ # Visual Studio CMake settings CMakeSettings.json @@ -61,3 +63,4 @@ artifacts *.AppImage* /install* vulkansdk*.exe +*.tar.zst diff --git a/.patch/boost/0002-use-marmasm.patch b/.patch/boost/0002-use-marmasm.patch deleted file mode 100644 index 10f490b878..0000000000 --- a/.patch/boost/0002-use-marmasm.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- a/libs/context/CMakeLists.txt 2025-09-08 00:42:31.303651800 -0400 -+++ b/libs/context/CMakeLists.txt 2025-09-08 00:42:40.592184300 -0400 -@@ -146,7 +146,7 @@ - set(ASM_LANGUAGE ASM) - endif() - elseif(BOOST_CONTEXT_ASSEMBLER STREQUAL armasm) -- set(ASM_LANGUAGE ASM_ARMASM) -+ set(ASM_LANGUAGE ASM_MARMASM) - else() - set(ASM_LANGUAGE ASM_MASM) - endif() diff --git a/.patch/boost/0003-armasm-options.patch b/.patch/boost/0003-armasm-options.patch deleted file mode 100644 index 3869f95f6f..0000000000 --- a/.patch/boost/0003-armasm-options.patch +++ /dev/null @@ -1,14 +0,0 @@ -diff --git a/libs/context/CMakeLists.txt b/libs/context/CMakeLists.txt -index 8210f65..0e59dd7 100644 ---- a/libs/context/CMakeLists.txt -+++ b/libs/context/CMakeLists.txt -@@ -186,7 +186,8 @@ if(BOOST_CONTEXT_IMPLEMENTATION STREQUAL "fcontext") - set_property(SOURCE ${ASM_SOURCES} APPEND PROPERTY COMPILE_OPTIONS "/safeseh") - endif() - -- else() # masm -+ # armasm doesn't support most of these options -+ elseif(NOT BOOST_CONTEXT_ASSEMBLER STREQUAL armasm) # masm - if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") - set_property(SOURCE ${ASM_SOURCES} APPEND PROPERTY COMPILE_OPTIONS "-x" "assembler-with-cpp") - elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang") 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/httplib/0001-mingw.patch b/.patch/httplib/0001-mingw.patch index fa3e53a88c..da9a9e74bd 100644 --- a/.patch/httplib/0001-mingw.patch +++ b/.patch/httplib/0001-mingw.patch @@ -1,52 +1,62 @@ -From e1a946ffb79022d38351a0623f819a5419965c3e Mon Sep 17 00:00:00 2001 +From 436fc1978c78edd085d99b33275b24be0ac96aa0 Mon Sep 17 00:00:00 2001 From: crueter -Date: Fri, 24 Oct 2025 23:41:09 -0700 -Subject: [PATCH] [build] Fix MinGW missing GetAddrInfoExCancel definition +Date: Sun, 1 Feb 2026 16:21:10 -0500 +Subject: [PATCH] Fix build on MinGW -MinGW does not define GetAddrInfoExCancel in its wstcpi whatever header, -so to get around this we can just load it with GetProcAddress et al. +MinGW doesn't define GetAddrInfoExCancel. Signed-off-by: crueter --- - httplib.h | 14 ++++++++++++-- - 1 file changed, 12 insertions(+), 2 deletions(-) + httplib.h | 18 ++++++++++++++++-- + 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/httplib.h b/httplib.h -index e15ba44..90a76dc 100644 +index ec8d2a2..5f9a510 100644 --- a/httplib.h +++ b/httplib.h -@@ -203,11 +203,13 @@ +@@ -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 -@@ -3557,7 +3559,15 @@ inline int getaddrinfo_with_timeout(const char *node, const char *service, +@@ -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"); ++ 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.0 +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/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/mbedtls/0002-aesni-fix.patch b/.patch/mbedtls/0002-aesni-fix.patch deleted file mode 100644 index dc5d3153b7..0000000000 --- a/.patch/mbedtls/0002-aesni-fix.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/library/aesni.h b/library/aesni.h -index 754c984c79..59e27afd3e 100644 ---- a/library/aesni.h -+++ b/library/aesni.h -@@ -35,7 +35,7 @@ - /* GCC-like compilers: currently, we only support intrinsics if the requisite - * target flag is enabled when building the library (e.g. `gcc -mpclmul -msse2` - * or `clang -maes -mpclmul`). */ --#if (defined(__GNUC__) || defined(__clang__)) && defined(__AES__) && defined(__PCLMUL__) -+#if defined(__GNUC__) || defined(__clang__) - #define MBEDTLS_AESNI_HAVE_INTRINSICS - #endif - /* For 32-bit, we only support intrinsics */ diff --git a/.patch/mbedtls/0003-aesni-fix.patch b/.patch/mbedtls/0003-aesni-fix.patch deleted file mode 100644 index c620b42554..0000000000 --- a/.patch/mbedtls/0003-aesni-fix.patch +++ /dev/null @@ -1,22 +0,0 @@ -diff --git a/library/aesni.c b/library/aesni.c -index 2857068..3e104ab 100644 ---- a/library/aesni.c -+++ b/library/aesni.c -@@ -31,16 +31,14 @@ - #include - #endif - --#if defined(MBEDTLS_ARCH_IS_X86) - #if defined(MBEDTLS_COMPILER_IS_GCC) - #pragma GCC push_options - #pragma GCC target ("pclmul,sse2,aes") - #define MBEDTLS_POP_TARGET_PRAGMA --#elif defined(__clang__) && (__clang_major__ >= 5) -+#elif defined(__clang__) - #pragma clang attribute push (__attribute__((target("pclmul,sse2,aes"))), apply_to=function) - #define MBEDTLS_POP_TARGET_PRAGMA - #endif --#endif - - #if !defined(MBEDTLS_AES_USE_HARDWARE_ONLY) - /* diff --git a/.patch/mcl/0001-assert-macro.patch b/.patch/mcl/0001-assert-macro.patch deleted file mode 100644 index 2d7d0dd1b0..0000000000 --- a/.patch/mcl/0001-assert-macro.patch +++ /dev/null @@ -1,55 +0,0 @@ -diff --git a/include/mcl/assert.hpp b/include/mcl/assert.hpp -index f77dbe7..9ec0b9c 100644 ---- a/include/mcl/assert.hpp -+++ b/include/mcl/assert.hpp -@@ -23,8 +23,11 @@ template - - } // namespace mcl::detail - -+#ifndef UNREACHABLE - #define UNREACHABLE() ASSERT_FALSE("Unreachable code!") -+#endif - -+#ifndef ASSERT - #define ASSERT(expr) \ - [&] { \ - if (std::is_constant_evaluated()) { \ -@@ -37,7 +40,9 @@ template - } \ - } \ - }() -+#endif - -+#ifndef ASSERT_MSG - #define ASSERT_MSG(expr, ...) \ - [&] { \ - if (std::is_constant_evaluated()) { \ -@@ -50,13 +55,24 @@ template - } \ - } \ - }() -+#endif - -+#ifndef ASSERT_FALSE - #define ASSERT_FALSE(...) ::mcl::detail::assert_terminate("false", __VA_ARGS__) -+#endif - - #if defined(NDEBUG) || defined(MCL_IGNORE_ASSERTS) --# define DEBUG_ASSERT(expr) ASSUME(expr) --# define DEBUG_ASSERT_MSG(expr, ...) ASSUME(expr) -+# ifndef DEBUG_ASSERT -+# define DEBUG_ASSERT(expr) ASSUME(expr) -+# endif -+# ifndef DEBUG_ASSERT_MSG -+# define DEBUG_ASSERT_MSG(expr, ...) ASSUME(expr) -+# endif - #else --# define DEBUG_ASSERT(expr) ASSERT(expr) --# define DEBUG_ASSERT_MSG(expr, ...) ASSERT_MSG(expr, __VA_ARGS__) -+# ifndef DEBUG_ASSERT -+# define DEBUG_ASSERT(expr) ASSERT(expr) -+# endif -+# ifndef DEBUG_ASSERT_MSG -+# define DEBUG_ASSERT_MSG(expr, ...) ASSERT_MSG(expr, __VA_ARGS__) -+# endif - #endif 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/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 65dd8821ad..081c21e583 100644 --- a/.reuse/dep5 +++ b/.reuse/dep5 @@ -13,7 +13,6 @@ Copyright: yuzu Emulator Project License: GPL-2.0-or-later Files: dist/qt_themes/default/icons/256x256/eden.png - dist/qt_themes/default/icons/256x256/eden_named.png dist/yuzu.bmp dist/eden.icns dist/eden.ico diff --git a/CMakeLists.txt b/CMakeLists.txt index 0d385b9436..42717c496d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,87 +1,39 @@ -# 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 "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() - list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules") list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/externals/cmake-modules") -# 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() +set(CPM_SOURCE_CACHE ${CMAKE_SOURCE_DIR}/.cache/cpm) +set(CMAKE_EXPORT_COMPILE_COMMANDS ON) -# NB: this does not account for SPARC -# If you get Eden working on SPARC, please shoot crueter@crueter.xyz multiple emails -# and you will be hailed for eternity -if (PLATFORM_SUN) - # Terrific Solaris 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") +include(DetectPlatform) +include(DetectArchitecture) +include(DefaultConfig) +include(UseLTO) +include(FasterLinker) +include(UseCcache) +include(CMakeDependentOption) +include(CTest) +include(CPMUtil) - # 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() +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) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -I${CMAKE_SYSROOT}/usr/X11R6/include") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -I${CMAKE_SYSROOT}/usr/X11R6/include") + # 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") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -I${CMAKE_SYSROOT}/usr/X11R7/include") + 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() @@ -90,37 +42,50 @@ if (PLATFORM_NETBSD) set(ENV{PKG_CONFIG_PATH} "${PKG_CONFIG_PATH}:${CMAKE_SYSROOT}/usr/pkg/lib/ffmpeg7/pkgconfig") endif() -# MSYS2 utilities -if (PLATFORM_MSYS) - include(FixMsysPaths) - # really, really dumb heuristic to detect what environment we are in - macro(system var) - if (CMAKE_COMMAND MATCHES ${var}) - set(MSYSTEM ${var}) - endif() - endmacro() +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) - system(mingw64) - system(clang64) - system(clangarm64) - system(ucrt64) + # 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) - if (NOT DEFINED MSYSTEM) - set(MSYSTEM msys2) - endif() + # allow static libs for boost though + set(Boost_USE_STATIC_LIBS ON) + set(CMAKE_FIND_LIBRARY_SUFFIXES ".a") + set(OPENSSL_USE_STATIC_LIBS ON) - # 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) + 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) - include(StaticQtLibs) - # lol set(Boost_USE_STATIC_LIBS ON) set(BUILD_SHARED_LIBS OFF) @@ -128,9 +93,6 @@ if (YUZU_STATIC_BUILD) ## find .a libs first (static, usually) set(CMAKE_FIND_LIBRARY_SUFFIXES ".a") - ## some libraries define a Library::Name_static alternative ## - set(YUZU_STATIC_SUFFIX _static) - ## some libraries use CMAKE_IMPORT_LIBRARY_SUFFIX e.g. Harfbuzz ## set(CMAKE_IMPORT_LIBRARY_SUFFIX ".a") @@ -162,15 +124,11 @@ if (YUZU_STATIC_BUILD) set(HTTPLIB_USE_BROTLI_IF_AVAILABLE OFF) elseif(APPLE) - # these libs do not properly provide static libs/let you do it with cmake - set(YUZU_USE_CPM ON) - set(YUZU_USE_BUNDLED_FFMPEG ON) set(YUZU_USE_BUNDLED_SDL2 ON) set(YUZU_USE_BUNDLED_OPENSSL ON) - # IMPORTED_IMPLIB not set for imported target - # TODO(crueter): wtf + # 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) @@ -178,92 +136,6 @@ if (YUZU_STATIC_BUILD) endif() 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) - # https://sourceforge.net/p/predef/wiki/Architectures/ - # TODO: THIS IS FUCKING FLAWED ONLY THE FIRST SYMBOL THAT APPEARS WILL BE CONSIDERED :( - 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() - detect_architecture("__ARM64__" arm64) - detect_architecture("__aarch64__" arm64) - detect_architecture("_M_ARM64" arm64) - - detect_architecture("__arm__" arm) - detect_architecture("__TARGET_ARCH_ARM" arm) - detect_architecture("_M_ARM" arm) - - detect_architecture("__x86_64" x86_64) - detect_architecture("__x86_64__" x86_64) - detect_architecture("__amd64" x86_64) - detect_architecture("_M_X64" x86_64) - - detect_architecture("__i386" x86) - detect_architecture("__i386__" x86) - detect_architecture("_M_IX86" x86) - - detect_architecture("__ia64" ia64) - detect_architecture("__ia64__" ia64) - detect_architecture("_M_IA64" ia64) - - detect_architecture("__mips" mips) - detect_architecture("__mips__" mips) - detect_architecture("_M_MRX000" mips) - - detect_architecture("__powerpc64__" ppc64) - detect_architecture("__ppc64__" ppc64) - detect_architecture("__PPC64__" ppc64) - detect_architecture("_ARCH_PPC64" ppc64) - - detect_architecture("__ppc__" ppc) - detect_architecture("__ppc" ppc) - detect_architecture("__powerpc__" ppc) - detect_architecture("_ARCH_COM" ppc) - detect_architecture("_ARCH_PWR" ppc) - detect_architecture("_ARCH_PPC" ppc) - detect_architecture("_M_MPPC" ppc) - detect_architecture("_M_PPC" ppc) - - detect_architecture("__riscv" riscv) - - detect_architecture("__EMSCRIPTEN__" wasm) -endif() - -if (NOT DEFINED ARCHITECTURE) - set(ARCHITECTURE "GENERIC") - set(ARCHITECTURE_GENERIC 1) - add_definitions(-DARCHITECTURE_GENERIC=1) -endif() - -message(STATUS "Target architecture: ${ARCHITECTURE}") - 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; \ @@ -271,8 +143,8 @@ if (MSVC AND ARCHITECTURE_x86) endif() if (CXX_CLANG_CL) + # clang-cl prints literally 10000+ warnings without this add_compile_options( - # clang-cl prints literally 10000+ warnings without this $<$:-Wno-unused-command-line-argument> $<$:-Wno-unsafe-buffer-usage> $<$:-Wno-unused-value> @@ -281,9 +153,7 @@ if (CXX_CLANG_CL) $<$:-Wno-reserved-identifier> $<$:-Wno-deprecated-declarations> $<$:-Wno-cast-function-type-mismatch> - $<$:/EHsc> # thanks microsoft - ) - + $<$:/EHsc>) # REQUIRED CPU features IN Windows-amd64 if (ARCHITECTURE_x86_64) add_compile_options( @@ -293,37 +163,16 @@ if (CXX_CLANG_CL) endif() endif() -set(CPM_SOURCE_CACHE ${CMAKE_SOURCE_DIR}/.cache/cpm) - -include(DownloadExternals) -include(CMakeDependentOption) -include(CTest) - # Disable Warnings as Errors for MSVC if (MSVC AND NOT CXX_CLANG) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W3 /WX-") + # 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 OR PLATFORM_DRAGONFLYBSD) - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -L${CMAKE_SYSROOT}/usr/local/lib") -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) - # 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 "ENABLE_SDL2;NOT MSVC" OFF) -cmake_dependent_option(YUZU_USE_BUNDLED_SDL2 "Download bundled SDL2 build" "${MSVC}" "ENABLE_SDL2" OFF) - -# 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_BUNDLED_QT "Download bundled Qt binaries" "${MSVC}" "ENABLE_QT" OFF) -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") +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) @@ -331,7 +180,6 @@ set(EXT_DEFAULT OFF) if (MSVC OR ANDROID) set(EXT_DEFAULT ON) endif() -option(YUZU_USE_CPM "Use CPM to fetch system dependencies (fmt, boost, etc) if needed. Externals will still be fetched." ${EXT_DEFAULT}) # ffmpeg option(YUZU_USE_BUNDLED_FFMPEG "Download bundled FFmpeg" ${EXT_DEFAULT}) @@ -339,15 +187,16 @@ cmake_dependent_option(YUZU_USE_EXTERNAL_FFMPEG "Build FFmpeg from external sour # sirit set(BUNDLED_SIRIT_DEFAULT OFF) -if ((MSVC AND NOT (CMAKE_BUILD_TYPE MATCHES "Debug|RelWithDebInfo") OR ANDROID)) +if (MSVC AND NOT (CMAKE_BUILD_TYPE MATCHES "Deb") OR ANDROID) set(BUNDLED_SIRIT_DEFAULT ON) endif() + option(YUZU_USE_BUNDLED_SIRIT "Download bundled sirit" ${BUNDLED_SIRIT_DEFAULT}) -# Re-allow on FreeBSD once its on mainline ports -cmake_dependent_option(ENABLE_LIBUSB "Enable the use of LibUSB" ON "WIN32 OR PLATFORM_LINUX OR APPLE" 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) -cmake_dependent_option(ENABLE_OPENGL "Enable OpenGL" ON "NOT WIN32 OR NOT ARCHITECTURE_arm64" OFF) +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_WEB_SERVICE "Enable web services (telemetry, etc.)" ON) @@ -357,117 +206,43 @@ cmake_dependent_option(USE_DISCORD_PRESENCE "Enables Discord Rich Presence" OFF option(YUZU_TESTS "Compile tests" "${BUILD_TESTING}") -option(YUZU_ENABLE_LTO "Enable link-time optimization" OFF) -if(YUZU_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). Re-run CMake with -DYUZU_ENABLE_LTO=OFF.") - endif() - set(CMAKE_POLICY_DEFAULT_CMP0069 NEW) - set(CMAKE_INTERPROCEDURAL_OPTIMIZATION ${COMPILER_SUPPORTS_LTO}) -endif() - -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 "Found ccache at: ${CCACHE_BINARY}") - set(CMAKE_C_COMPILER_LAUNCHER ${CCACHE_BINARY}) - set(CMAKE_CXX_COMPILER_LAUNCHER ${CCACHE_BINARY}) - else() - message(FATAL_ERROR "USE_CCACHE enabled, but no executable found at: ${CCACHE_PATH}") - endif() - # Follow SCCache recommendations: - # - if(WIN32) - if(CMAKE_BUILD_TYPE STREQUAL "Debug") - string(REPLACE "/Zi" "/Z7" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}") - string(REPLACE "/Zi" "/Z7" CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG}") - elseif(CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo") - 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() -endif() - -# TODO(crueter): CI this? option(YUZU_DOWNLOAD_ANDROID_VVL "Download validation layer binary for android" ON) option(YUZU_LEGACY "Apply patches that improve compatibility with older GPUs (e.g. Snapdragon 865) at the cost of performance" OFF) +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_STANDALONE "Enable standalone room executable" ON "YUZU_ROOM" OFF) -cmake_dependent_option(YUZU_CMD "Compile the eden-cli executable" ON "ENABLE_SDL2;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) +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") -cmake_dependent_option(YUZU_USE_FASTER_LD "Check if a faster linker is available" ON "LINUX" OFF) - cmake_dependent_option(YUZU_USE_BUNDLED_MOLTENVK "Download bundled MoltenVK lib" ON "APPLE" OFF) option(YUZU_DISABLE_LLVM "Disable LLVM (useful for CI)" 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 OR USE_DISCORD_PRESENCE) - set(DEFAULT_ENABLE_OPENSSL ON) -endif() - -option(ENABLE_OPENSSL "Enable OpenSSL backend for ISslConnection" ${DEFAULT_ENABLE_OPENSSL}) -if (ENABLE_OPENSSL) - set(DEFAULT_YUZU_USE_BUNDLED_OPENSSL OFF) - if (EXT_DEFAULT OR PLATFORM_SUN) - set(DEFAULT_YUZU_USE_BUNDLED_OPENSSL ON) - endif() - option(YUZU_USE_BUNDLED_OPENSSL "Download bundled OpenSSL build" ${DEFAULT_YUZU_USE_BUNDLED_OPENSSL}) -endif() +option(YUZU_USE_BUNDLED_OPENSSL "Download bundled OpenSSL build" ${DEFAULT_YUZU_USE_BUNDLED_OPENSSL}) if (ANDROID AND YUZU_DOWNLOAD_ANDROID_VVL) - # TODO(crueter): CPM this - set(vvl_version "1.4.321.0") - 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}/vulkan-sdk-${vvl_version}/android-binaries-${vvl_version}.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() - -# 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") @@ -475,25 +250,23 @@ if(EXISTS ${PROJECT_SOURCE_DIR}/hooks/pre-commit AND NOT EXISTS ${PROJECT_SOURCE endif() endif() -configure_file(${PROJECT_SOURCE_DIR}/dist/compatibility_list/compatibility_list.qrc - ${PROJECT_BINARY_DIR}/dist/compatibility_list/compatibility_list.qrc +set(compat_base dist/compatibility_list/compatibility_list) +set(compat_qrc ${compat_base}.qrc) +set(compat_json ${compat_base}.json) + +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() if (YUZU_LEGACY) @@ -523,44 +296,51 @@ if ((ANDROID OR APPLE OR UNIX) AND (NOT PLATFORM_LINUX OR ANDROID) AND NOT WIN32 endif() # Build/optimization presets -if (PLATFORM_LINUX OR CXX_CLANG) +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) # 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") - 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 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 @@ -575,66 +355,77 @@ 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) + +find_package(RenderDoc MODULE) # openssl funniness -if (ENABLE_OPENSSL) - if (YUZU_USE_BUNDLED_OPENSSL) - AddJsonPackage(openssl) - if (OpenSSL_ADDED) - add_compile_definitions(YUZU_BUNDLED_OPENSSL) - endif() +if (YUZU_USE_BUNDLED_OPENSSL) + set(BUILD_SHARED_LIBS OFF) + AddJsonPackage(openssl) + if (OpenSSL_ADDED) + add_compile_definitions(YUZU_BUNDLED_OPENSSL) endif() - - find_package(OpenSSL 1.1.1 REQUIRED) endif() -if (YUZU_USE_CPM) - message(STATUS "Fetching needed dependencies with CPM") +find_package(OpenSSL 3 REQUIRED) - set(BUILD_SHARED_LIBS OFF) - set(BUILD_TESTING OFF) - set(ENABLE_TESTING OFF) +message(STATUS "Fetching needed dependencies with CPM") - # TODO(crueter): renderdoc? +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) +# boost +set(BOOST_INCLUDE_LIBRARIES algorithm icl pool container heap asio headers process filesystem crc variant) - AddJsonPackage(boost) +AddJsonPackage(boost) - # really annoying thing where boost::headers doesn't work with cpm - # TODO(crueter) investigate - set(BOOST_NO_HEADERS ${Boost_ADDED}) +# 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() - - if (NOT MSVC OR CXX_CLANG) - # boost sucks - if (PLATFORM_SUN) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthreads") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pthreads") - 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() +if (Boost_ADDED) + if (MSVC OR ANDROID) + add_compile_definitions(YUZU_BOOST_v1) endif() - # fmt - AddJsonPackage(fmt) + if (NOT MSVC OR CXX_CLANG) + # boost sucks + if (PLATFORM_SUN) + add_compile_options($<$:-pthreads>) + endif() - # lz4 - AddJsonPackage(lz4) - - if (lz4_ADDED) - add_library(lz4::lz4 ALIAS lz4_static) + 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 +AddJsonPackage(fmt) + +# lz4 +AddJsonPackage(lz4) + +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 AddJsonPackage(nlohmann) @@ -645,21 +436,13 @@ if (YUZU_USE_CPM) add_library(ZLIB::ZLIB ALIAS zlibstatic) endif() - # zstd - AddJsonPackage(zstd) - - if (zstd_ADDED) - add_library(zstd::zstd ALIAS libzstd_static) - add_library(zstd::libzstd ALIAS libzstd_static) - endif() - # Opus AddJsonPackage(opus) if (Opus_ADDED) if (MSVC AND CXX_CLANG) target_compile_options(opus PRIVATE - -Wno-implicit-function-declaration + $<$:-Wno-implicit-function-declaration> ) endif() endif() @@ -667,34 +450,6 @@ if (YUZU_USE_CPM) if (NOT TARGET Opus::opus) add_library(Opus::opus ALIAS opus) endif() -else() - # Enforce the search mode of non-required packages for better and shorter failure messages - find_package(fmt 8 REQUIRED) - - if (NOT YUZU_DISABLE_LLVM) - find_package(LLVM MODULE COMPONENTS Demangle) - endif() - - find_package(nlohmann_json 3.8 REQUIRED) - find_package(lz4 REQUIRED) - find_package(RenderDoc MODULE) - find_package(stb MODULE) - - find_package(Opus 1.3 MODULE REQUIRED) - - find_package(ZLIB 1.2 REQUIRED) - find_package(zstd 1.5 REQUIRED MODULE) - - # wow - find_package(Boost 1.57.0 CONFIG REQUIRED OPTIONAL_COMPONENTS headers context system fiber filesystem) - - 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) - endif() endif() if(NOT TARGET Boost::headers) @@ -731,11 +486,10 @@ endfunction() # ============================================= 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}) + 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) @@ -746,10 +500,6 @@ elseif (WIN32) endif() elseif (PLATFORM_HAIKU) # Haiku is so special :) - # Some fucking genius decided to name an entire module "network" in 2019 - # this caused great disaster amongst the Haiku community who had came first with - # their "libnetwork.so"; since CMake doesn't do magic, we have to use an ABSOLUTE PATH - # to the library itself, otherwise it will think we are linking to... our network thing set(PLATFORM_LIBRARIES bsd /boot/system/lib/libnetwork.so) elseif (CMAKE_SYSTEM_NAME MATCHES "^(Linux|kFreeBSD|GNU|SunOS)$") set(PLATFORM_LIBRARIES rt) @@ -760,51 +510,64 @@ message(STATUS "Platform Libraries: ${PLATFORM_LIBRARIES}") add_subdirectory(externals) # pass targets from externals -find_package(libusb) -find_package(VulkanMemoryAllocator) +# TODO(crueter): CPMUtil Propagate func? find_package(enet) -find_package(MbedTLS) -find_package(VulkanUtilityLibraries) -find_package(SimpleIni) -find_package(SPIRV-Tools) -find_package(sirit) +find_package(unordered_dense REQUIRED) if (ARCHITECTURE_x86 OR ARCHITECTURE_x86_64) find_package(xbyak) endif() -if (ENABLE_WEB_SERVICE OR ENABLE_QT_UPDATE_CHECKER) - # Workaround: httplib will kill itself if you attempt to do a find_package propagation - # find_package(httplib CONFIG) -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 (ENABLE_SDL2) - 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) +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) @@ -813,13 +576,13 @@ 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) @@ -848,40 +611,36 @@ 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() - set(YUZU_QT_COMPONENTS ${YUZU_QT_COMPONENTS2} PARENT_SCOPE) -endfunction(set_yuzu_qt_components) -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 "") + + ## Qt Externals ## + + # QuaZip + AddJsonPackage(quazip) endif() -if (UNIX AND NOT APPLE AND NOT ANDROID) - find_package(PkgConfig REQUIRED) - pkg_check_modules(LIBVA libva) -endif() - -if (NOT (YUZU_USE_BUNDLED_FFMPEG OR YUZU_USE_EXTERNAL_FFMPEG)) +if (NOT YUZU_STATIC_ROOM AND NOT (YUZU_USE_BUNDLED_FFMPEG OR YUZU_USE_EXTERNAL_FFMPEG)) # Use system installed FFmpeg find_package(FFmpeg REQUIRED QUIET COMPONENTS ${FFmpeg_COMPONENTS}) @@ -892,67 +651,16 @@ if (NOT (YUZU_USE_BUNDLED_FFMPEG OR YUZU_USE_EXTERNAL_FFMPEG)) 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) - -# 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 @@ -982,55 +690,11 @@ if (MSVC AND CXX_CLANG) add_library(llvm-mingw-runtime STATIC IMPORTED) set_target_properties(llvm-mingw-runtime PROPERTIES - IMPORTED_LOCATION "${LIB_PATH}" - ) + IMPORTED_LOCATION "${LIB_PATH}") link_libraries(llvm-mingw-runtime) endif() -#[[ - search order: - - gold (GCC only) - the best, generally, but unfortunately not packaged anymore - - mold (GCC only) - generally does well on GCC - - ldd - preferred on clang - - bfd - the final fallback - - If none are found (macOS uses ld.prime, etc) just use the default linker -]] -if (YUZU_USE_FASTER_LD) - find_program(LINKER_BFD bfd) - if (LINKER_BFD) - set(LINKER bfd) - endif() - - find_program(LINKER_LLD lld) - if (LINKER_LLD) - set(LINKER lld) - endif() - - if (CXX_GCC) - find_program(LINKER_MOLD mold) - if (LINKER_MOLD AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "12.1") - set(LINKER mold) - endif() - - find_program(LINKER_GOLD gold) - if (LINKER_GOLD) - set(LINKER gold) - endif() - endif() - - if (LINKER) - message(NOTICE "Selecting ${LINKER} as linker") - add_link_options("-fuse-ld=${LINKER}") - else() - message(WARNING "No faster linker found--using default") - endif() - - if (LINKER STREQUAL "lld" AND CXX_GCC) - message(WARNING "Using lld on GCC may cause issues with certain LTO settings. If the program fails to compile, disable YUZU_USE_FASTER_LD, or install mold or GNU gold.") - endif() -endif() - # Set runtime library to MD/MDd for all configurations if(MSVC) set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>DLL") @@ -1050,14 +714,6 @@ if(MSVC) ) endif() -if (MINGW) - # This saves a truly ridiculous amount of time during linking - # In my tests, without this it takes 2 mins, with it takes 3-5 seconds - # or on GitHub Actions, 10 minutes -> 3 seconds - set(MINGW_FLAGS "-Wl,--strip-all -Wl,--gc-sections") - set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} ${MINGW_FLAGS}") -endif() - add_subdirectory(src) # Set yuzu project or yuzu-cmd project as default StartUp Project in Visual Studio depending on whether QT is enabled or not diff --git a/CMakeModules/CPM.cmake b/CMakeModules/CPM.cmake index 2d97f5493c..5544d8eefe 100644 --- a/CMakeModules/CPM.cmake +++ b/CMakeModules/CPM.cmake @@ -1,8 +1,3 @@ -# SPDX-FileCopyrightText: Copyright 2025 crueter -# SPDX-License-Identifier: GPL-3.0-or-later - -# This is a slightly modified version of CPM.cmake - # CPM.cmake - CMake's missing package manager # =========================================== # See https://github.com/cpm-cmake/CPM.cmake for usage and update instructions. diff --git a/CMakeModules/CPMUtil.cmake b/CMakeModules/CPMUtil.cmake index 78bab05030..b992f24083 100644 --- a/CMakeModules/CPMUtil.cmake +++ b/CMakeModules/CPMUtil.cmake @@ -1,7 +1,9 @@ -# SPDX-FileCopyrightText: Copyright 2025 crueter -# SPDX-License-Identifier: GPL-3.0-or-later +# SPDX-FileCopyrightText: Copyright 2026 crueter +# SPDX-License-Identifier: LGPL-3.0-or-later -if (MSVC OR ANDROID) +set(CPM_SOURCE_CACHE "${PROJECT_SOURCE_DIR}/.cache/cpm" CACHE STRING "" FORCE) + +if(MSVC OR ANDROID) set(BUNDLED_DEFAULT ON) else() set(BUNDLED_DEFAULT OFF) @@ -19,10 +21,19 @@ include(CPM) # cpmfile parsing set(CPMUTIL_JSON_FILE "${CMAKE_CURRENT_SOURCE_DIR}/cpmfile.json") -if (EXISTS ${CPMUTIL_JSON_FILE}) +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(WARNING "[CPMUtil] cpmfile ${CPMUTIL_JSON_FILE} does not exist, AddJsonPackage will be a no-op") + message(DEBUG "[CPMUtil] cpmfile ${CPMUTIL_JSON_FILE}" + "does not exist, AddJsonPackage will be a no-op") endif() # Utility stuff @@ -30,6 +41,11 @@ 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") @@ -45,14 +61,14 @@ endfunction() function(get_json_element object out member default) string(JSON out_type ERROR_VARIABLE err TYPE "${object}" ${member}) - if (err) + if(err) set("${out}" "${default}" PARENT_SCOPE) return() endif() string(JSON outvar GET "${object}" ${member}) - if (out_type STREQUAL "ARRAY") + if(out_type STREQUAL "ARRAY") string(JSON _len LENGTH "${object}" ${member}) # array_to_list("${outvar}" ${_len} outvar) set("${out}_LENGTH" "${_len}" PARENT_SCOPE) @@ -61,20 +77,178 @@ function(get_json_element object out member default) 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 + # 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}") + "${ARGN}") list(LENGTH ARGN argnLength) @@ -83,38 +257,26 @@ function(AddJsonPackage) set(JSON_NAME "${ARGV0}") endif() - if (NOT DEFINED CPMFILE_CONTENT) - cpm_utils_message(WARNING ${name} "No cpmfile, AddJsonPackage is a no-op") + if(NOT DEFINED CPMFILE_CONTENT) + cpm_utils_message(WARNING ${name} + "No cpmfile, AddJsonPackage is a no-op") return() endif() - if (NOT DEFINED JSON_NAME) + 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}") + string(JSON object ERROR_VARIABLE + err GET "${CPMFILE_CONTENT}" "${JSON_NAME}") - if (err) + if(err) cpm_utils_message(FATAL_ERROR ${JSON_NAME} "Not found in cpmfile") endif() - 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() + parse_object(${object}) + if(ci) AddCIPackage( VERSION ${version} NAME ${name} @@ -122,116 +284,40 @@ function(AddJsonPackage) PACKAGE ${package} EXTENSION ${extension} MIN_VERSION ${min_version} - DISABLED_PLATFORMS ${disabled_platforms} - ) + DISABLED_PLATFORMS ${disabled_platforms}) - # pass stuff to parent scope - set(${package}_ADDED "${${package}_ADDED}" - PARENT_SCOPE) - set(${package}_SOURCE_DIR "${${package}_SOURCE_DIR}" - PARENT_SCOPE) - set(${package}_BINARY_DIR "${${package}_BINARY_DIR}" - PARENT_SCOPE) - - return() - endif() - - 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}) + 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() - # 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 "${CMAKE_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() - - 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}" - SOURCE_SUBDIR "${source_subdir}" - - GIT_VERSION ${git_version} - GIT_HOST ${git_host} - - ARTIFACT ${artifact} - TAG ${tag} - ) - # pass stuff to parent scope - set(${package}_ADDED "${${package}_ADDED}" - PARENT_SCOPE) - set(${package}_SOURCE_DIR "${${package}_SOURCE_DIR}" - PARENT_SCOPE) - set(${package}_BINARY_DIR "${${package}_BINARY_DIR}" - PARENT_SCOPE) - + Propagate(${package}_ADDED) + Propagate(${package}_SOURCE_DIR) + Propagate(${package}_BINARY_DIR) endfunction() function(AddPackage) @@ -278,137 +364,148 @@ function(AddPackage) KEY BUNDLED_PACKAGE FORCE_BUNDLED_PACKAGE - FIND_PACKAGE_ARGUMENTS - ) + 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() - 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}") + 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 (NOT DEFINED PKG_ARGS_GIT_HOST) + 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) + if(DEFINED PKG_ARGS_URL) set(pkg_url ${PKG_ARGS_URL}) - if (DEFINED 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) + 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) + 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}.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 (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") + "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}") - elseif (DEFINED PKG_ARGS_VERSION) + "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}") + "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) # 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}) + if(NOT EXISTS ${outfile} AND NOT EXISTS + ${CPM_SOURCE_CACHE}/${lowername}/${pkg_key}) file(DOWNLOAD ${hash_url} ${outfile}) endif() - if (EXISTS ${outfile}) + if(EXISTS ${outfile}) file(READ ${outfile} pkg_hash_tmp) endif() - if (DEFINED ${pkg_hash_tmp}) + if(DEFINED ${pkg_hash_tmp}) set(pkg_hash "${hash_algo}=${pkg_hash_tmp}") endif() endif() @@ -426,19 +523,20 @@ function(AddPackage) - CPMUTIL_FORCE_BUNDLED - BUNDLED_PACKAGE - default to allow local - ]]# - if (PKG_ARGS_FORCE_BUNDLED_PACKAGE) + ]] + if(PKG_ARGS_FORCE_BUNDLED_PACKAGE) set_precedence(OFF OFF) - elseif (${PKG_ARGS_NAME}_FORCE_SYSTEM) + elseif(${PKG_ARGS_NAME}_FORCE_SYSTEM) set_precedence(ON ON) - elseif (${PKG_ARGS_NAME}_FORCE_BUNDLED) + elseif(${PKG_ARGS_NAME}_FORCE_BUNDLED) set_precedence(OFF OFF) - elseif (CPMUTIL_FORCE_SYSTEM) + 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) + elseif(DEFINED PKG_ARGS_BUNDLED_PACKAGE AND + NOT PKG_ARGS_BUNDLED_PACKAGE STREQUAL "unset") + if(PKG_ARGS_BUNDLED_PACKAGE) set(local OFF) else() set(local ON) @@ -449,10 +547,9 @@ function(AddPackage) set_precedence(ON OFF) endif() - if (DEFINED PKG_ARGS_VERSION) + if(DEFINED PKG_ARGS_VERSION) list(APPEND EXTRA_ARGS - VERSION ${PKG_ARGS_VERSION} - ) + VERSION ${PKG_ARGS_VERSION}) endif() CPMAddPackage( @@ -469,38 +566,37 @@ function(AddPackage) ${EXTRA_ARGS} - ${PKG_ARGS_UNPARSED_ARGUMENTS} - ) + ${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 PKG_ARGS_GIT_VERSION) - set_property(GLOBAL APPEND PROPERTY CPM_PACKAGE_SHAS - ${PKG_ARGS_GIT_VERSION}) - elseif (DEFINED PKG_ARGS_TAG) + ${PKG_ARGS_SHA}) + elseif(DEFINED PKG_ARGS_GIT_VERSION) set_property(GLOBAL APPEND PROPERTY CPM_PACKAGE_SHAS - ${PKG_ARGS_TAG}) - elseif(DEFINED PKG_ARGS_VERSION) - set_property(GLOBAL APPEND PROPERTY CPM_PACKAGE_SHAS - ${PKG_ARGS_VERSION}) + ${PKG_ARGS_GIT_VERSION}) + elseif(DEFINED PKG_ARGS_TAG) + set_property(GLOBAL APPEND PROPERTY CPM_PACKAGE_SHAS + ${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() @@ -514,24 +610,6 @@ function(AddPackage) endfunction() -function(add_ci_package key) - set(ARTIFACT ${ARTIFACT_NAME}-${key}-${ARTIFACT_VERSION}.${ARTIFACT_EXT}) - - AddPackage( - NAME ${ARTIFACT_PACKAGE} - REPO ${ARTIFACT_REPO} - TAG v${ARTIFACT_VERSION} - GIT_VERSION ${ARTIFACT_VERSION} - ARTIFACT ${ARTIFACT} - - KEY ${key}-${ARTIFACT_VERSION} - HASH_SUFFIX sha512sum - FORCE_BUNDLED_PACKAGE ON - ) - - set(ARTIFACT_DIR ${${ARTIFACT_PACKAGE}_SOURCE_DIR} PARENT_SCOPE) -endfunction() - # TODO(crueter): we could do an AddMultiArchPackage, multiplatformpackage? # name is the artifact name, package is for find_package override function(AddCIPackage) @@ -541,12 +619,17 @@ function(AddCIPackage) REPO PACKAGE EXTENSION - MIN_VERSION - ) + MIN_VERSION) set(multiValueArgs DISABLED_PLATFORMS) - cmake_parse_arguments(PKG_ARGS "" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) + 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") @@ -561,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}) @@ -573,11 +656,11 @@ function(AddCIPackage) set(ARTIFACT_EXT ${PKG_ARGS_EXTENSION}) 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() @@ -587,51 +670,75 @@ function(AddCIPackage) set(ARTIFACT_REPO ${PKG_ARGS_REPO}) set(ARTIFACT_PACKAGE ${PKG_ARGS_PACKAGE}) - if ((MSVC AND ARCHITECTURE_x86_64) AND NOT "windows-amd64" IN_LIST DISABLED_PLATFORMS) - add_ci_package(windows-amd64) + 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) AND NOT "windows-arm64" IN_LIST DISABLED_PLATFORMS) - add_ci_package(windows-arm64) - endif() + if (DEFINED pkgname AND NOT "${pkgname}" IN_LIST DISABLED_PLATFORMS) + set(ARTIFACT + "${ARTIFACT_NAME}-${pkgname}-${ARTIFACT_VERSION}.${ARTIFACT_EXT}") - if ((MINGW AND ARCHITECTURE_x86_64) AND NOT "mingw-amd64" IN_LIST DISABLED_PLATFORMS) - add_ci_package(mingw-amd64) - endif() + AddPackage( + NAME ${ARTIFACT_PACKAGE} + REPO ${ARTIFACT_REPO} + TAG "v${ARTIFACT_VERSION}" + GIT_VERSION ${ARTIFACT_VERSION} + ARTIFACT ${ARTIFACT} - if ((MINGW AND ARCHITECTURE_arm64) AND NOT "mingw-arm64" IN_LIST DISABLED_PLATFORMS) - add_ci_package(mingw-arm64) - endif() + KEY "${pkgname}-${ARTIFACT_VERSION}" + HASH_SUFFIX sha512sum + FORCE_BUNDLED_PACKAGE ON + DOWNLOAD_ONLY ${PKG_ARGS_MODULE}) - if (ANDROID AND NOT "android" IN_LIST DISABLED_PLATFORMS) - add_ci_package(android) - endif() - - if(PLATFORM_SUN AND NOT "solaris-amd64" IN_LIST DISABLED_PLATFORMS) - add_ci_package(solaris-amd64) - endif() - - if(PLATFORM_FREEBSD AND NOT "freebsd-amd64" IN_LIST DISABLED_PLATFORMS) - add_ci_package(freebsd-amd64) - endif() - - if((PLATFORM_LINUX AND ARCHITECTURE_x86_64) AND NOT "linux-amd64" IN_LIST DISABLED_PLATFORMS) - add_ci_package(linux-amd64) - endif() - - if((PLATFORM_LINUX AND ARCHITECTURE_arm64) AND NOT "linux-aarch64" IN_LIST DISABLED_PLATFORMS) - add_ci_package(linux-aarch64) - endif() - - # TODO(crueter): macOS amd64/aarch64 split mayhaps - if (APPLE AND NOT "macos-universal" IN_LIST DISABLED_PLATFORMS) - add_ci_package(macos-universal) - endif() - - if (DEFINED ARTIFACT_DIR) set(${ARTIFACT_PACKAGE}_ADDED TRUE PARENT_SCOPE) - set(${ARTIFACT_PACKAGE}_SOURCE_DIR "${ARTIFACT_DIR}" PARENT_SCOPE) + set(${ARTIFACT_PACKAGE}_SOURCE_DIR + "${${ARTIFACT_PACKAGE}_SOURCE_DIR}" 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/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/DownloadExternals.cmake b/CMakeModules/DownloadExternals.cmake deleted file mode 100644 index f6e3aaa4ad..0000000000 --- a/CMakeModules/DownloadExternals.cmake +++ /dev/null @@ -1,271 +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") - set(CACHE_KEY "") - - # TODO(crueter): Need to convert ffmpeg to a CI. - if (WIN32 OR FORCE_WIN_ARCHIVES) - if (ARCHITECTURE_arm64) - set(CACHE_KEY "windows") - set(package_repo "ext-windows-arm64-bin/raw/master/") - set(package_extension ".zip") - elseif(ARCHITECTURE_x86_64) - set(CACHE_KEY "windows") - set(package_repo "ext-windows-bin/raw/master/") - set(package_extension ".7z") - endif() - 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() - string(CONCAT package_url "${package_base_url}" "${package_repo}") - string(CONCAT full_url "${package_url}" "${remote_path}" "${lib_name}" "${package_extension}") - message(STATUS "Resolved bundled URL: ${full_url}") - - # TODO(crueter): DELETE THIS ENTIRELY, GLORY BE TO THE CI! - AddPackage( - NAME ${cpm_key} - VERSION ${version} - URL ${full_url} - DOWNLOAD_ONLY YES - KEY ${CACHE_KEY} - BUNDLED_PACKAGE ON - # TODO(crueter): hash - ) - - if (DEFINED ${cpm_key}_SOURCE_DIR) - set(${prefix_var} "${${cpm_key}_SOURCE_DIR}" PARENT_SCOPE) - message(STATUS "Using bundled binaries at ${${cpm_key}_SOURCE_DIR}") - else() - message(FATAL_ERROR "AddPackage did not set ${cpm_key}_SOURCE_DIR") - endif() -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 "gcc_64") - 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") - list(APPEND install_args install-tool --outputdir "${base_path}" "${host}" desktop "${target}") - else() - set(prefix "${base_path}/${target}/${arch_path}") - list(APPEND install_args install-qt --outputdir "${base_path}" "${host}" "${type}" "${target}" "${arch}" -m qt_base) - - if (YUZU_USE_QT_MULTIMEDIA) - list(APPEND install_args qtmultimedia) - endif() - - if (YUZU_USE_QT_WEB_ENGINE) - list(APPEND install_args qtpositioning qtwebchannel qtwebengine) - endif() - - if (NOT "${YUZU_QT_MIRROR}" STREQUAL "") - message(STATUS "Using Qt mirror ${YUZU_QT_MIRROR}") - list(APPEND 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}" - RESULT_VARIABLE aqt_res - OUTPUT_VARIABLE aqt_out - ERROR_VARIABLE aqt_err) - if (NOT aqt_res EQUAL 0) - message(FATAL_ERROR "aqt.exe failed: ${aqt_err}") - endif() - 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}" - RESULT_VARIABLE aqt_res - ERROR_VARIABLE aqt_err) - if (NOT aqt_res EQUAL 0) - message(FATAL_ERROR "aqt-macos failed: ${aqt_err}") - endif() - else() - find_program(PYTHON3_EXECUTABLE python3) - if (NOT PYTHON3_EXECUTABLE) - message(FATAL_ERROR "python3 is required to install Qt using aqt (pip mode).") - endif() - set(aqt_install_path "${base_path}/aqt") - file(MAKE_DIRECTORY "${aqt_install_path}") - - execute_process(COMMAND "${PYTHON3_EXECUTABLE}" -m pip install --target="${aqt_install_path}" aqtinstall - WORKING_DIRECTORY "${base_path}" - RESULT_VARIABLE pip_res - ERROR_VARIABLE pip_err) - if (NOT pip_res EQUAL 0) - message(FATAL_ERROR "pip install aqtinstall failed: ${pip_err}") - endif() - - execute_process(COMMAND "${CMAKE_COMMAND}" -E env PYTHONPATH="${aqt_install_path}" "${PYTHON3_EXECUTABLE}" -m aqt ${install_args} - WORKING_DIRECTORY "${base_path}" - RESULT_VARIABLE aqt_res - ERROR_VARIABLE aqt_err) - if (NOT aqt_res EQUAL 0) - message(FATAL_ERROR "aqt (python) failed: ${aqt_err}") - endif() - 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) - - set(base_path "${CMAKE_BINARY_DIR}/externals/qt") - 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 version platform) - if(NOT version) - message(FATAL_ERROR "download_moltenvk: version argument is required") - endif() - if(NOT platform) - message(FATAL_ERROR "download_moltenvk: platform argument is required") - endif() - - 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" - RESULT_VARIABLE tar_res - ERROR_VARIABLE tar_err - ) - if(NOT tar_res EQUAL 0) - message(FATAL_ERROR "Extracting MoltenVK failed: ${tar_err}") - endif() - endif() - list(APPEND CMAKE_PREFIX_PATH "${MOLTENVK_DIR}/MoltenVK/dylib/${platform}") - set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} PARENT_SCOPE) -endfunction() - diff --git a/CMakeModules/Findzstd.cmake b/CMakeModules/Findzstd.cmake index 2afdb56a8c..8e44b7a892 100644 --- a/CMakeModules/Findzstd.cmake +++ b/CMakeModules/Findzstd.cmake @@ -14,8 +14,7 @@ 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) @@ -36,4 +35,7 @@ if (NOT TARGET zstd::libzstd) 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/GenerateSCMRev.cmake b/CMakeModules/GenerateSCMRev.cmake index 1ae608c085..947a4963ee 100644 --- a/CMakeModules/GenerateSCMRev.cmake +++ b/CMakeModules/GenerateSCMRev.cmake @@ -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: 2019 yuzu Emulator Project @@ -15,27 +15,43 @@ endfunction() get_timestamp(BUILD_DATE) if (DEFINED GIT_RELEASE) - set(BUILD_VERSION "${GIT_TAG}") - set(GIT_REFSPEC "${GIT_RELEASE}") - set(IS_DEV_BUILD false) + set(BUILD_VERSION "${GIT_TAG}") + set(GIT_REFSPEC "${GIT_RELEASE}") + set(IS_DEV_BUILD false) else() - string(SUBSTRING ${GIT_COMMIT} 0 10 BUILD_VERSION) - set(BUILD_VERSION "${BUILD_VERSION}-${GIT_REFSPEC}") - set(IS_DEV_BUILD true) + 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") + +# 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}") -# Auto-updater metadata! Must somewhat mirror GitHub API endpoint -set(BUILD_AUTO_UPDATE_WEBSITE "https://github.com") -set(BUILD_AUTO_UPDATE_API "http://api.github.com") -set(BUILD_AUTO_UPDATE_REPO "eden-emulator/Releases") - configure_file(scm_rev.cpp.in scm_rev.cpp @ONLY) diff --git a/CMakeModules/GetSCMRev.cmake b/CMakeModules/GetSCMRev.cmake deleted file mode 100644 index ee5ce6a91c..0000000000 --- a/CMakeModules/GetSCMRev.cmake +++ /dev/null @@ -1,49 +0,0 @@ -# SPDX-FileCopyrightText: 2025 crueter -# SPDX-License-Identifier: GPL-3.0-or-later - -include(GetGitRevisionDescription) - -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() - get_git_head_revision(GIT_REFSPEC GIT_COMMIT) - git_branch_name(GIT_REFSPEC) - 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() - git_describe(GIT_TAG --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 "Git release: ${GIT_RELEASE}") -endif() - -trim(GIT_REFSPEC) -trim(GIT_COMMIT) -trim(GIT_TAG) - -message(STATUS "Git commit: ${GIT_COMMIT}") -message(STATUS "Git tag: ${GIT_TAG}") -message(STATUS "Git refspec: ${GIT_REFSPEC}") diff --git a/CMakeModules/StaticQtLibs.cmake b/CMakeModules/StaticQtLibs.cmake deleted file mode 100644 index be2f060a25..0000000000 --- a/CMakeModules/StaticQtLibs.cmake +++ /dev/null @@ -1,31 +0,0 @@ -# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project -# SPDX-License-Identifier: GPL-3.0-or-later - -## When linking to a static Qt build on MinGW, certain additional libraries -## must be statically linked to as well. - -function(static_qt_link target) - macro(extra_libs) - foreach(lib ${ARGN}) - find_library(${lib}_LIBRARY ${lib} REQUIRED) - target_link_libraries(${target} PRIVATE ${${lib}_LIBRARY}) - endforeach() - endmacro() - - # I am constantly impressed at how ridiculously stupid the linker is - # NB: yes, we have to put them here twice. I have no idea why - - # libtiff.a - extra_libs(tiff jbig bz2 lzma deflate jpeg tiff) - - # libfreetype.a - extra_libs(freetype bz2 Lerc brotlidec brotlicommon freetype) - - # libharfbuzz.a - extra_libs(harfbuzz graphite2) - - # sijfjkfnjkdfjsbjsbsdfhvbdf - if (ENABLE_OPENSSL) - target_link_libraries(${target} PRIVATE OpenSSL::SSL OpenSSL::Crypto) - endif() -endfunction() 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 c5aa17ad1e..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

@@ -52,15 +52,19 @@ Check out our [website](https://eden-emu.dev) for the latest news on exciting fe ## 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 See the [General Build Guide](docs/Build.md) @@ -69,7 +73,9 @@ For information on provided development tooling, see the [Tools directory](./too ## 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 @@ -82,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 index 6cf7ed1a41..1bb29afae4 100644 --- a/cpmfile.json +++ b/cpmfile.json @@ -4,30 +4,28 @@ "package": "OpenSSL", "name": "openssl", "repo": "crueter-ci/OpenSSL", - "version": "3.6.0-e3608d80df", - "min_version": "1.1.1" + "version": "3.6.0-1cb0d36b39", + "min_version": "3" }, "boost": { "package": "Boost", "repo": "boostorg/boost", "tag": "boost-%VERSION%", "artifact": "%TAG%-cmake.tar.xz", - "hash": "4fb7f6fde92762305aad8754d7643cd918dd1f3f67e104e9ab385b18c73178d72a17321354eb203b790b6702f2cf6d725a5d6e2dfbc63b1e35f9eb59fb42ece9", - "git_version": "1.89.0", + "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", - "0002-use-marmasm.patch", - "0003-armasm-options.patch" + "0001-clang-cl.patch" ] }, "fmt": { "repo": "fmtlib/fmt", "tag": "%VERSION%", - "hash": "c4ab814c20fbad7e3f0ae169125a4988a2795631194703251481dc36b18da65c886c4faa9acd046b0a295005217b3689eb0126108a9ba5aac2ca909aae263c2f", + "hash": "f0da82c545b01692e9fd30fdfb613dbb8dd9716983dcd0ff19ac2a8d36f74beb5540ef38072fdecc1e34191b3682a8542ecbf3a61ef287dbba0a2679d4e023f2", "version": "8", - "git_version": "12.0.0" + "git_version": "12.1.0" }, "lz4": { "name": "lz4", @@ -48,9 +46,9 @@ "package": "ZLIB", "repo": "madler/zlib", "tag": "v%VERSION%", - "hash": "8c9642495bafd6fad4ab9fb67f09b268c69ff9af0f4f20cf15dfc18852ff1f312bd8ca41de761b3f8d8e90e77d79f2ccacd3d4c5b19e475ecf09d021fdfe9088", + "hash": "16fea4df307a68cf0035858abe2fd550250618a97590e202037acd18a666f57afc10f8836cbbd472d54a0e76539d0e558cb26f059d53de52ff90634bbf4f47d4", "version": "1.2", - "git_version": "1.3.1", + "git_version": "1.3.2", "options": [ "ZLIB_BUILD_SHARED OFF", "ZLIB_INSTALL OFF" @@ -69,13 +67,17 @@ }, "opus": { "package": "Opus", - "repo": "crueter/opus", - "sha": "ab19c44fad", - "hash": "d632e8f83c5d3245db404bcb637113f9860bf16331498ba2c8e77979d1febee6b52d8b1da448e7d54eeac373e912cd55e3e300fc6c242244923323280dc43fbe", + "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": { @@ -85,11 +87,32 @@ "bundled": true }, "llvm-mingw": { - "repo": "misc/llvm-mingw", - "git_host": "git.crueter.xyz", + "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/dev.eden_emu.eden.desktop b/dist/dev.eden_emu.eden.desktop index 5d2d7cd8c5..98bdf81a46 100755 --- a/dist/dev.eden_emu.eden.desktop +++ b/dist/dev.eden_emu.eden.desktop @@ -9,7 +9,7 @@ Version=1.0 Type=Application Name=Eden GenericName=Switch Emulator -Comment=Nintendo Switch video game console emulator +Comment=Multiplatform FOSS Switch 1 emulator written in C++, derived from Yuzu and Sudachi Icon=dev.eden_emu.eden TryExec=eden Exec=eden %f diff --git a/dist/dev.eden_emu.eden.metainfo.xml b/dist/dev.eden_emu.eden.metainfo.xml index cfd1741748..83398eed3b 100644 --- a/dist/dev.eden_emu.eden.metainfo.xml +++ b/dist/dev.eden_emu.eden.metainfo.xml @@ -1,20 +1,22 @@ + + - org.yuzu_emu.yuzu + org.eden_emu.eden CC0-1.0 - yuzu + eden 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!

+

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

Game @@ -24,16 +26,16 @@ SPDX-License-Identifier: CC0-1.0 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 + 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 @@ -50,13 +52,6 @@ SPDX-License-Identifier: CC0-1.0 16384 GPL-3.0-or-later - yuzu Emulator Team + Eden 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/dev.eden_emu.eden.svg b/dist/dev.eden_emu.eden.svg index eff6ccbb01..f88b52f625 100644 --- a/dist/dev.eden_emu.eden.svg +++ b/dist/dev.eden_emu.eden.svg @@ -1 +1,230 @@ - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dist/yuzu.bmp b/dist/eden.bmp similarity index 50% rename from dist/yuzu.bmp rename to dist/eden.bmp index a548aaf7e6..888138ccf7 100644 Binary files a/dist/yuzu.bmp and b/dist/eden.bmp differ diff --git a/dist/eden.icns b/dist/eden.icns index 0ccb1ff11b..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 4dc347af28..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.svg b/dist/eden_named.svg deleted file mode 100644 index 127bd05ae1..0000000000 --- a/dist/eden_named.svg +++ /dev/null @@ -1,81 +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 index 7c444a7e04..4259f9ba39 100644 --- a/dist/icon_variations/README.md +++ b/dist/icon_variations/README.md @@ -2,7 +2,7 @@ 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. +- `base_named.svg` - Named variant (deprecated). - `base_small.svg`: Variant used for tiny icons (16x16, 64x64, etc). - `base.svg`: Variant without branding/naming. 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 index eff6ccbb01..f88b52f625 100644 --- a/dist/icon_variations/base.svg +++ b/dist/icon_variations/base.svg @@ -1 +1,230 @@ - \ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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/base_named.svg b/dist/icon_variations/base_named.svg deleted file mode 100644 index 127bd05ae1..0000000000 --- a/dist/icon_variations/base_named.svg +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/dist/icon_variations/halloween2025_named.svg b/dist/icon_variations/halloween2025_named.svg deleted file mode 100644 index 78fcaef5d9..0000000000 --- a/dist/icon_variations/halloween2025_named.svg +++ /dev/null @@ -1,110 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - 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/icon_variations/original.svg b/dist/icon_variations/original.svg new file mode 100644 index 0000000000..eff6ccbb01 --- /dev/null +++ b/dist/icon_variations/original.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/dist/icon_variations/base_small.svg b/dist/icon_variations/original_small.svg similarity index 100% rename from dist/icon_variations/base_small.svg rename to dist/icon_variations/original_small.svg 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/languages/ar.ts b/dist/languages/ar.ts index 108a5a8945..72195d7f4a 100644 --- a/dist/languages/ar.ts +++ b/dist/languages/ar.ts @@ -33,12 +33,12 @@ 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;">ويستند إلى محاكي يوزو الذي توقف تطويره في مارس 2024 GPLv3.0+ إيدن هو محاكي تجريبي مفتوح المصدر لجهاز نينتندو سويتش مرخص بموجب. <br /><br />لا ينبغي استخدام هذا البرنامج لتشغيل ألعاب لم تحصل عليها بطريقة قانونية.</span></p></body></html> +<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://discord.gg/kXAmGCXBGD"><span style=" text-decoration: underline; color:#039be5;">Discord</span></a> | <a href="https://rvlt.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;">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/kXAmGCXBGD"><span style=" text-decoration: underline; color:#039be5;">ديسكورد</span></a> | <a href="https://rvlt.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;">تويتر</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><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> @@ -71,7 +71,7 @@ li.checked::marker { content: "\2612"; } Configuration completed! - اكتمل التكوين! + تم اكتمال الإعداد! @@ -377,141 +377,151 @@ This would ban both their forum username and their IP address. % - + 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 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 4GB of the board to the devkit 8/6GB. + + Increases the amount of emulated RAM. Doesn't affect performance/stability but may allow HD texture mods to load. - يزيد حجم ذاكرة الوصول العشوائي RAM المُحاكاة من 4 جيجابايت للوحة إلى 8/6 جيجابايت لمجموعة التطوير. -لا يؤثر ذلك على الأداء/الاستقرار، ولكنه قد يسمح بتحميل تعديلات نسيجيه عالية الدقة. + يزيد من حجم ذاكرة الوصول العشوائي المُحاكاة. +لا يؤثر على الأداء أو الاستقرار، ولكنه قد يسمح بتحميل تعديلات نسيج عالية الدقة. - + Limit Speed Percent الحد من السرعة في المئة - + 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. @@ -520,183 +530,181 @@ 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.). Can help reduce stuttering at lower framerates. يُزامن سرعة نواة المعالج مع أقصى سرعة عرض للعبة لزيادة معدل الإطارات في الثانية دون التأثير على سرعة اللعبة (الرسوم المتحركة، والفيزياء، إلخ). يساعد في تقليل التلعثم عند معدلات الإطارات المنخفضة. - + Accuracy: الدقة: - + 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. - - Virtual Table Bouncing - Virtual Table Bouncing - - - - Bounces (by emulating a 0-valued return) any functions that triggers a prefetch abort - يرفض (عن طريق محاكاة عودة بقيمة 0) أي وظائف تؤدي إلى إيقاف عملية التخزين المسبق - - - + 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 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: واجهة برمجة التطبيقات: - + Changes the output graphics API. Vulkan is recommended. يُغيّر واجهة برمجة تطبيقات الرسومات الناتجة. Vulkan يُنصح باستخدام - + Device: جهاز: - + This setting selects the GPU to use (Vulkan only). - (Vulkan فقط) يحدد هذا الإعداد وحدة معالجة الرسوميات التي سيتم استخدامها + (Vulkan فقط) يحدد هذا الإعداد وحدة معالجة الرسومات التي سيتم استخدامها - - Shader Backend: - الواجهة الخلفية للتظليل: - - - - The shader backend to use with OpenGL. -GLSL is recommended. - OpenGL برنامج التظليل الخلفي المُستخدم مع -GLSL يُنصح باستخدام - - - + Resolution: الدقة: - + Forces to render at a different resolution. Higher resolutions require more VRAM and bandwidth. Options lower than 1X can cause artifacts. @@ -705,27 +713,27 @@ Options lower than 1X can cause artifacts. قد تؤدي الخيارات الأقل من 1X إلى حدوث تشوهات. - + Window Adapting Filter: مرشح تكييف النافذة: - + FSR Sharpness: 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 can produce a more stable picture in lower resolutions. @@ -734,12 +742,12 @@ FXAA can produce a more stable picture in lower resolutions. يُمكن لـ 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. @@ -748,12 +756,12 @@ Exclusive fullscreen may offer better performance and better Freesync/Gsync supp قد يوفر وضع ملء الشاشة الحصري أداءً أفضل ودعمًا أفضل لتقنيتي Freesync/Gsync. - + Aspect Ratio: نسبة العرض إلى الارتفاع: - + 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. @@ -762,24 +770,24 @@ Also controls the aspect ratio of captured screenshots. كما يتحكم في نسبة العرض إلى الارتفاع للقطات الشاشة الملتقطة. - + 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 SPIRV تحسين مخرجات - + Runs an additional optimization pass over generated SPIRV shaders. Will increase time required for shader compilation. May slightly improve performance. @@ -790,36 +798,24 @@ This feature is experimental. هذه الميزة تجريبية. - - 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. GPU: Use the GPU's compute shaders to decode ASTC textures (recommended). @@ -831,12 +827,12 @@ stuttering but may present artifacts. وحدة المعالجة المركزية بشكل غير متزامن: استخدمها لفك تشفير قوام ASTC عند الطلب. يزيل هذا الخيار تقطع فك تشفير ASTC، ولكنه قد يُظهر بعض العيوب. - + ASTC Recompression Method: ASTC طريقة إعادة ضغط: - + 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. @@ -844,34 +840,44 @@ BC1/BC3: The intermediate format will be recompressed to BC1 or BC3 format, 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. 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 allows tearing as it recovers from a slow down. Mailbox can have lower latency than FIFO and does not tear but may drop frames. @@ -882,12 +888,12 @@ Immediate (no synchronization) presents whatever is available and can exhibit te يُظهر الوضع الفوري (بدون مزامنة) كل ما هو متاح، وقد يُظهر تمزقًا. - + 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. @@ -896,104 +902,149 @@ 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. Safe to set at 16x on most GPUs. يتحكم بجودة عرض الملمس بزوايا مائلة. من الآمن ضبطه على 16x على معظم وحدات معالجة الرسومات. - - GPU Accuracy: - دقة وحدة معالجة الرسومات: + + GPU Mode: + وضع وحدة معالجة الرسومات: - - Controls the 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 as a last resort. - يتحكم بدقة محاكاة وحدة معالجة الرسومات -.تُعرض معظم الألعاب بشكل جيد مع الدقة العادية، ولكن لا يزال مطلوبًا في بعضها الدقة العالية. -عادةً ما تُعرض الجسيمات بشكل صحيح فقط مع الدقة العالية. -يُنصح باستخدام الدقة العالية كحل أخير. + + 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. + يتحكم في وضع محاكاة وحدة معالجة الرسومات.تُعرض معظم الألعاب بشكل جيد في الوضعين السريع أو المتوازن، ولكن الوضع الدقيق لا يزال مطلوبًا لبعض الألعاب.تميل الجسيمات إلى العرض بشكل صحيح فقط في الوضع الدقيق. - + DMA Accuracy: DMA دقة: - + Controls the DMA precision accuracy. Safe precision fixes issues in some games but may degrade performance. الدقة الآمنة تعمل على إصلاح المشكلات في بعض الألعاب ولكنها قد تؤدي إلى انخفاض الأداء DMA يتحكم في دقة - - Enable asynchronous shader compilation (Hack) - تمكين تجميع التظليل غير المتزامن ( اختراق) + + Enable asynchronous shader compilation + تفعيل تجميع التظليل غير المتزامن - + May reduce shader stutter. قد يقلل من تقطع التظليل. - - Fast GPU Time (Hack) - وقت وحدة معالجة الرسومات السريع (اختراق) + + 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. - رفع تردد وحدة معالجة الرسومات المُحاكاة لزيادة الدقة الديناميكية ومسافة العرض. -استخدم 128 للحصول على أقصى أداء و512 لأقصى دقة رسومات. +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 فقط) تمكين خطوط أنابيب الحوسبة - + 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. @@ -1002,166 +1053,182 @@ 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 الرسومية، ووميض النسيج الرمادي على بطاقات Nvidia الرسومية في لعبة Luigi's Mansion 3. + + + Extended Dynamic State الحالة الديناميكية الموسعة - + Controls the number of features that can be used in Extended Dynamic State. -Higher numbers allow for more features and can increase performance, but may cause issues. -The default value is per-system. - يتحكم في عدد الميزات التي يمكن استخدامها في الحالة الديناميكية الممتدة. -الأرقام الأعلى تسمح بمزيد من الميزات، وقد تزيد الأداء، ولكنها قد تسبب مشاكل. -القيمة الافتراضية هي لكل نظام. +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 some games. -Only Vulkan 1.0+ devices support this extension. - يُحسّن الإضاءة ومعالجة الرؤوس في بعض الألعاب. -تدعم هذه الإضافة أجهزة Vulkan 1.0+‎ فقط. + + Enables vertex input dynamic state feature for better quality and performance. + يتيح ميزة الحالة الديناميكية لإدخال الرأس لتحسين الجودة والأداء. - - Descriptor Indexing - فهرسة الوصف - - - - Improves texture & buffer handling and the Maxwell translation layer. -Some Vulkan 1.1+ and all 1.2+ devices support this extension. - يُحسّن معالجة الملمس والذاكرة المؤقتة وطبقة ترجمة ماكسويل. -تدعم بعض أجهزة Vulkan الإصدار 1.1+‎ وجميع أجهزة 1.2+‎ هذه الإضافة. - - - + 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. يتحكم في بذرة مولد الأرقام العشوائية. يُستخدم بشكل رئيسي في سباقات السرعة. - + Device Name اسم الجهاز - + The name of the console. اسم وحدة التحكم. - + Custom RTC Date: المخصص RTC تاريخ: - + 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: اللغة: - + This option can be overridden when region setting is auto-select يمكن تجاوز هذا الخيار عند تحديد إعداد المنطقة تلقائيًا - + Region: المنطقة: - + The region of the console. منطقة وحدة التحكم. - + Time Zone: المنطقة الزمنية: - + The time zone of the console. المنطقة الزمنية لوحدة التحكم. - + Sound Output Mode: وضع إخراج الصوت: - + Console 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. @@ -1170,908 +1237,1049 @@ Setting to Handheld can help improve performance for low end systems. يُمكن أن يُساعد الضبط على الوضع المحمول على تحسين أداء الأجهزة منخفضة المواصفات. - + + Unit Serial + الرقم التسلسلي للوحدة + + + + Battery Serial + الرقم التسلسلي للبطارية + + + + Debug knobs + مقابض تصحيح الأخطاء + + + 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 تأكيد قبل إيقاف المحاكاة - + Overrides prompts asking to confirm stopping the emulation. Enabling it bypasses such prompts and directly exits the emulation. يتجاوز المطالبات التي تطلب تأكيد إيقاف المحاكاة. يؤدي تمكينه إلى تجاوز هذه المطالبات والخروج مباشرة من المحاكاة. - + Hide mouse on inactivity إخفاء الماوس عند عدم النشاط - + Hides the mouse after 2.5s of inactivity. يخفي الماوس بعد 2.5 ثانية من عدم النشاط. - + Disable controller applet تعطيل تطبيق التحكم - + 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) - GLASM (Assembly Shaders, NVIDIA Only) - - - - SPIR-V (Experimental, AMD/Mesa Only) - SPIR-V (Experimental, AMD/Mesa Only) - - - - Normal - عادي - - - - High - عالي - - - - Extreme - أقصى - - - - - Default - افتراضي - - - - Unsafe (fast) - غير آمن (سريع) - - - - Safe (stable) - آمنة (مستقرة) - - - + + 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 دقه - + + + 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) - + 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) - - Serbian (српски) - الصربية (српски) + + 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 (غير آمنة) - + Docked الإرساء - + Handheld محمول - + + + Off + تعطيل + + + Boost (1700MHz) تعزيز (1700 ميجا هرتز) - + Fast (2000MHz) سريع (2000 ميجاهرتز) - + Always ask (Default) اسأل دائمًا (افتراضي) - + Only if game specifies not to stop فقط إذا حددت اللعبة عدم التوقف - + Never ask لا تسأل أبدا - - Low (128) - منخفض (128) - - - + + 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 @@ -2105,7 +2313,7 @@ When a program attempts to open the controller applet, it is immediately closed. Configure Infrared Camera - إعداد كاميرا الاشعة فوق الحمراء + إعدادات كاميرا الأشعة فوق الحمراء @@ -2140,10 +2348,10 @@ When a program attempts to open the controller applet, it is immediately closed. Restore Defaults - استعادة الافتراضي + استعادة الإعدادات الافتراضية - + Auto تلقائي @@ -2206,7 +2414,7 @@ When a program 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> + <html><head/><body><p><span style=" font-weight:600;">للتصحيح فقط.</span><br/>إذا لم تكن متأكدًا من وظيفة هذه الخيارات، فاتركها جميعًا ممكّنة. <br/>عند تعطيل هذه الإعدادات، لا تصبح سارية المفعول إلا عند تمكين تصحيح أخطاء وحدة المعالجة المركزية. </p></body></html> @@ -2252,7 +2460,7 @@ When a program attempts to open the controller applet, it is immediately closed. Enable return stack buffer - تمكين مخزن إرجاع المكدس + تمكين مخزن مؤقت لمكدس الإرجاع @@ -2420,7 +2628,7 @@ When a program attempts to open the controller applet, it is immediately closed. Logging - تسجيل الدخول + السجلات @@ -2594,46 +2802,86 @@ When a program attempts to open the controller applet, it is immediately closed. + Use dev.keys + dev.keys استخدام مفاتيح التطوير + + + Enable Debug Asserts تمكين تأكيدات التصحيح - + Debugging تصحيح الأخطاء - + + Battery Serial: + :رقم تسلسلي للبطارية + + + + 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. - فعّل هذا لإخراج أحدث قائمة أوامر صوتية مُولّدة إلى وحدة التحكم. ينطبق هذا فقط على الألعاب التي تستخدم مُقدّم الصوت. + قم بتمكين هذه الخيار لإخراج أحدث قائمة أوامر صوتية تم إنشاؤها إلى وحدة التحكم. يؤثر فقط على الألعاب التي تستخدم عارض الصوت. - + Dump Audio Commands To Console** - **إرسال أوامر الصوت إلى وحدة التحكم + تفريغ أوامر الصوت إلى وحدة التحكم - + Flush log output on each line مسح إخراج السجل على كل سطر - + Enable FS Access Log FS تمكين سجل وصول - + Enable Verbose Reporting Services** - **تمكين خدمات التقارير المطولة + تمكين خدمات التقارير التفصيلية - + Censor username in logs اخفي اسم المستخدم في السجلات - + **This will be reset automatically when Eden closes. **سيتم إعادة تعيين هذا تلقائيًا عند إغلاق إيدن. @@ -2643,7 +2891,7 @@ When a program attempts to open the controller applet, it is immediately closed. Configure Debug Controller - تهيئة تصحيح أخطاء ذراع التحكم + إعدادات تصحيح أخطاء ذراع التحكم @@ -2653,7 +2901,7 @@ When a program attempts to open the controller applet, it is immediately closed. Defaults - الافتراضيات + الافتراضية @@ -2680,7 +2928,7 @@ When a program attempts to open the controller applet, it is immediately closed. Eden Configuration - تكوين إيدن + إعدادات إيدن @@ -2694,13 +2942,13 @@ When a program attempts to open the controller applet, it is immediately closed. - + Audio الصوت - + CPU المعالج @@ -2716,13 +2964,13 @@ When a program attempts to open the controller applet, it is immediately closed. - + General عام - + Graphics الرسومات @@ -2733,8 +2981,8 @@ When a program attempts to open the controller applet, it is immediately closed. - GraphicsExtensions - ملحقات الرسومات + GraphicsExtra + رسومات إضافية @@ -2743,7 +2991,7 @@ When a program attempts to open the controller applet, it is immediately closed. - + Controls ذراع التحكم @@ -2759,7 +3007,7 @@ When a program attempts to open the controller applet, it is immediately closed. - + System النظام @@ -2771,7 +3019,7 @@ When a program attempts to open the controller applet, it is immediately closed. Web - الشبكة + الويب @@ -2799,9 +3047,10 @@ When a program attempts to open the controller applet, it is immediately closed. - - - + + + + ... ... @@ -2811,90 +3060,184 @@ When a program 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... حدد مجلد الذاكرة الداخلية المحاكاة... - + Select Emulated SD Directory... حدد مجلد بطاقة الذاكرة الذي تمت محاكاته - + + + Select Save Data Directory... + حدد مجلد بيانات الحفظ... + + + Select Gamecard Path... أختر مسار بطاقة اللعبة - + Select Dump Directory... حدد مجلد التفريغ - + Select Mod Load Directory... حدد مجلد تحميل التعديل + + + Save Data Directory + مجلد بيانات الحفظ + + + + Choose an action for the save data directory: + اختر إجراءً لمجلد بيانات الحفظ: + + + + 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? + تم نقل بيانات الحفظ بنجاح.هل تريد حذف بيانات الحفظ القديمة؟ + ConfigureGeneral @@ -2911,23 +3254,53 @@ When a program 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 إعادة تعيين جميع الإعدادات - + 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. + هذا المجلد موجود بالفعل في القائمة. @@ -2958,33 +3331,33 @@ When a program 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 مفعل @@ -3002,7 +3375,7 @@ When a program attempts to open the controller applet, it is immediately closed. متقدم - + Advanced Graphics Settings إعدادات الرسومات المتقدمة @@ -3016,16 +3389,26 @@ When a program attempts to open the controller applet, it is immediately closed. - Extensions - ملحقات + Extras + إضافات - - Vulkan Extensions Settings - Vulkan إعدادات ملحقات + + Hacks + اختراقات - + + Changing these options from their default may cause issues. Novitii cavete! + قد يؤدي تغيير هذه الخيارات عن إعداداتها الافتراضية إلى حدوث مشكلات. تنبيه للمبتدئين! + + + + Vulkan Extensions + Vulkan ملحقات + + + % Sample Shading percentage (e.g. 50%) % @@ -3071,7 +3454,7 @@ When a program attempts to open the controller applet, it is immediately closed. Hotkey - زر الاختصار + زر الاختصار للوحة المفاتيح @@ -3142,7 +3525,7 @@ When a program attempts to open the controller applet, it is immediately closed. ConfigureInput - تكوين الإدخال + إعدادات الإدخال @@ -3222,7 +3605,7 @@ When a program attempts to open the controller applet, it is immediately closed. Configure - تعديل + الإعدادات @@ -3282,7 +3665,7 @@ When a program attempts to open the controller applet, it is immediately closed. Defaults - الإعدادات الافتراضية + الافتراضية @@ -3295,7 +3678,7 @@ When a program attempts to open the controller applet, it is immediately closed. Configure Input - إعداد الإدخال + إعدادات الإدخال @@ -3426,7 +3809,7 @@ When a program attempts to open the controller applet, it is immediately closed. Configure - تكوين + الإعدادات @@ -3556,7 +3939,7 @@ When a program attempts to open the controller applet, it is immediately closed. Use global input configuration - استخدم تكوين الإدخال العالمي + استخدم إعدادات الإدخال العالمي @@ -3569,7 +3952,7 @@ When a program attempts to open the controller applet, it is immediately closed. Configure Input - إعداد الإدخال + إعدادات الإدخال @@ -3603,7 +3986,7 @@ When a program attempts to open the controller applet, it is immediately closed. - + Left Stick العصا اليسرى @@ -3687,7 +4070,7 @@ When a program attempts to open the controller applet, it is immediately closed. Modifier Range: 0% - 0% :نطاق التعديل + 0% :تعديل النطاق @@ -3713,14 +4096,14 @@ When a program attempts to open the controller applet, it is immediately closed. - + ZL ZL - + L L @@ -3733,22 +4116,22 @@ When a program attempts to open the controller applet, it is immediately closed. - + Plus Plus - + ZR ZR - - + + R R @@ -3805,7 +4188,7 @@ When a program attempts to open the controller applet, it is immediately closed. - + Right Stick العصا اليمنى @@ -3817,7 +4200,7 @@ When a program attempts to open the controller applet, it is immediately closed. Configure - تكوين + الإعدادات @@ -3915,7 +4298,7 @@ To invert the axes, first move your joystick vertically, and then horizontally.< Modifier Range: %1% - %1% :نطاق التعديل + %1% :تعديل النطاق @@ -3946,7 +4329,7 @@ To invert the axes, first move your joystick vertically, and then horizontally.< GameCube Controller - ذراع تحكم جيم كيوب + GameCube ذراع تحكم @@ -3974,88 +4357,88 @@ To invert the axes, first move your joystick vertically, and then horizontally.< 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" فشل في حفظ ملف تعريف الإدخال @@ -4075,16 +4458,7 @@ To invert the axes, first move your joystick vertically, and then horizontally.< Defaults - الإعدادات الافتراضية - - - - ConfigureLinuxTab - - - - Linux - لينكس + الافتراضية @@ -4092,7 +4466,7 @@ To invert the axes, first move your joystick vertically, and then horizontally.< Configure Motion / Touch - إعداد الحركة / اللمس + إعدادات الحركة / اللمس @@ -4112,9 +4486,9 @@ To invert the axes, first move your joystick vertically, and then horizontally.< - + Configure - تكوين + الإعدادات @@ -4124,7 +4498,7 @@ To invert the axes, first move your joystick vertically, and then horizontally.< CemuhookUDP Config - CemuhookUDP تكوين + CemuhookUDP إعدادات @@ -4142,105 +4516,95 @@ To invert the axes, first move your joystick vertically, and then horizontally.< :المنفذ - - Learn More - معرفة المزيد - - - - + + Test إختبار - + Add Server إضافة خادم - + Remove Server إزالة الخادم - - <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> - <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;">اعرف المزيد</span></a> - - - + %1:%2 %1:%2 + + - - - - - + + + Eden إيدن - + Port number has invalid characters يحتوي رقم المنفذ على أحرف غير صالحة - + 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 اختبار + أو ضبط المعايرة قيد التقدم. <br>يرجى الانتظار حتى الانتهاء UDP اختبار @@ -4248,7 +4612,7 @@ To invert the axes, first move your joystick vertically, and then horizontally.< Configure mouse panning - تكوين تحريك الماوس + إعدادات حركة الماوس @@ -4307,7 +4671,7 @@ To invert the axes, first move your joystick vertically, and then horizontally.< Strength - قوة + القوة @@ -4369,11 +4733,6 @@ Current values are %1% and %2% respectively. Enable Airplane Mode تمكين وضع الطيران - - - None - لا شيء - ConfigurePerGame @@ -4428,52 +4787,57 @@ Current values are %1% and %2% respectively. بعض الإعدادات متوفرة فقط عندما لا تكون اللعبة قيد التشغيل. - + Add-Ons الإضافات - + System النظام - + CPU المعالج - + Graphics الرسومات - + Adv. Graphics الرسومات المتقدمة - - GPU Extensions - ملحقات وحدة معالجة الرسومات + + Ext. Graphics + الرسومات الخارجية - + Audio الصوت - + Input Profiles ملفات تعريف الإدخال - - Linux - لينكس + + Network + الشبكة - + + Applets + التطبيقات الصغيرة + + + Properties خصائص @@ -4491,15 +4855,115 @@ 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. + فشل تثبيت التعديلات التالية: + %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 + &فتح في مدير الملفات + ConfigureProfileManager @@ -4528,38 +4992,18 @@ Current values are %1% and %2% respectively. Username اسم المستخدم - - - Set Image - تعيين الصورة - - Select Avatar - اختر الصورة الرمزية - - - 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)) @@ -4567,169 +5011,80 @@ Current values are %1% and %2% respectively. %2 - - Enter Username - أدخل اسم المستخدم - - - + Users المستخدمين - - Enter a username for the new user: - :أدخل اسم مستخدم للمستخدم الجديد - - - - Enter a new username: - :أدخل اسم مستخدم جديد - - - + 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 saving user image خطأ في حفظ صورة المستخدم - + Unable to save image to file غير قادر على حفظ الصورة في الملف - - Select User Image - اختر صورة المستخدم + + &Edit + &تعديل - - Image Formats (*.jpg *.jpeg *.png *.bmp) - تنسيقات الصور (*.jpg *.jpeg *.png *.bmp) + + &Delete + &حذف - - 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. - لم يتم العثور على أي صور رمزية في الأرشيف. - - - - ConfigureProfileManagerAvatarDialog - - - Select - اختر - - - - Cancel - إلغاء - - - - Background Color - لون الخلفية - - - - Select Firmware Avatar - حدد الصورة الرمزية للفيرموير + + Edit User + تعديل المستخدم ConfigureProfileManagerDeleteDialog - + Delete this user? All of the user's save data will be deleted. حذف هذا المستخدم؟ سيتم حذف جميع بيانات الحفظ الخاصة بالمستخدم. - + Confirm Delete تأكيد الحذف - + Name: %1 UUID: %2 الاسم: %1 @@ -4741,12 +5096,12 @@ 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 الأيسر (المادي الأيسر والمحاكي المزدوج) قبل بدء اللعبة. + لاستخدام Ring-Con، قم إعداد اللاعب 1 كـ Joy-Con الأيمن (المادي والمحاكي)، واللاعب 2 كـ Joy-Con الأيسر (المادي الأيسر والمحاكي المزدوج) قبل بدء اللعبة. @@ -4836,7 +5191,7 @@ UUID: %2 Configuring - التكوين + الإعدادات @@ -4897,13 +5252,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>النصية TAS-nx يقرأ مدخلات وحدة التحكم من البرامج النصية بنفس تنسيق برامج.<br/>للحصول على شرح أكثر تفصيلاً، يرجى الرجوع إلى <a href="https://eden-emulator.github.io/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 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). - للتحقق من مفاتيح التشغيل السريع التي تتحكم في التشغيل/التسجيل، يرجى الرجوع إلى إعدادات مفاتيح التشغيل السريع (تكوين -> عام -> مفاتيح التشغيل السريع). + للتحقق من مفاتيح الاختصار التي تتحكم في التشغيل/التسجيل، يرجى الرجوع إلى إعدادات مفاتيح الاختصار (الإعدادات-> عام -> مفاتيح الاختصار). @@ -4931,17 +5286,22 @@ UUID: %2 إيقاف التنفيذ مؤقتا أثناء التحميل - + + Show recording dialog + عرض مربع حوار التسجيل + + + Script Directory مجلد السكربت - + Path المسار - + ... ... @@ -4954,7 +5314,7 @@ UUID: %2 TAS تخصيص - + Select TAS Load Directory... TAS حدد مجلد تحميل... @@ -4964,7 +5324,7 @@ UUID: %2 Configure Touchscreen Mappings - تكوين تعيينات شاشة اللمس + إعدادات تعيينات شاشة اللمس @@ -5056,7 +5416,7 @@ Drag points to change position, or double-click table cells to edit values. Configure Touchscreen - تكوين شاشة اللمس + إعدادات شاشة اللمس @@ -5092,64 +5452,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 معرف العنوان - + Title Name اسم العنوان @@ -5174,7 +5513,7 @@ Drag points to change position, or double-click table cells to edit values. Note: Changing language will apply your configuration. - ملاحظة: سيؤدي تغيير اللغة إلى تطبيق التكوين الخاص بك. + ملاحظة: سيؤدي تغيير اللغة إلى تطبيق الإعدادات الخاصة بك. @@ -5218,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 الإنجليزية - + Auto (%1 x %2, %3 x %4) Screenshot width value تلقائي (%1 x %2, %3 x %4) @@ -5293,7 +5627,7 @@ Drag points to change position, or double-click table cells to edit values. Configure Vibration - تكوين الاهتزاز + إعدادات الاهتزاز @@ -5378,12 +5712,12 @@ Drag points to change position, or double-click table cells to edit values. Web - الشبكة + الويب Eden Web Service - خدمة شبكة إيدن + خدمة ويب إيدن @@ -5403,7 +5737,7 @@ Drag points to change position, or double-click table cells to edit values. Web Service configuration can only be changed when a public room isn't being hosted. - لا يمكن تغيير تكوين خدمة الويب إلا في حالة عدم استضافة غرفة عامة. + لا يمكن تغيير إعدادات خدمة الويب إلا عندما لا تكون هناك غرفة عامة مستضافة. @@ -5416,20 +5750,20 @@ Drag points to change position, or double-click table cells to edit values.عرض اللعبة الحالية في حالة ديسكورد الخاصة بك - - + + All Good Tooltip كل شيء جيد - + Must be between 4-20 characters Tooltip يجب أن يكون بين 4-20 حرفًا - + Must be 48 characters, and lowercase a-z Tooltip يجب أن يكون 48 حرفًا، وبأحرف صغيرة من a إلى z @@ -5461,29 +5795,29 @@ Drag points to change position, or double-click table cells to edit values.حذف أي بيانات أمر لا رجعة فيه! - + Shaders التظليل - + UserNAND UserNAND - + SysNAND SysNAND - + Mods التعديلات - + Saves - حفظ + الحفظ @@ -5519,7 +5853,7 @@ Drag points to change position, or double-click table cells to edit values.استيراد البيانات لهذا المجلد. قد يستغرق هذا بعض الوقت، وسيؤدي إلى حذف جميع البيانات الموجودة! - + Calculating... يتم الحساب... @@ -5542,12 +5876,12 @@ Drag points to change position, or double-click table cells to edit values.<html><head/><body><p>المشاريع التي تجعل إيدن ممكنة</p></body></html> - + Dependency التبعية - + Version الإصدار @@ -5712,7 +6046,7 @@ They may have left the room. No valid network interface is selected. Please go to Configure -> System -> Network and make a selection. لم يتم تحديد واجهة شبكة صالحة. -يرجى الانتقال إلى تكوين -> النظام -> الشبكة وتحديد خيار. +يرجى الانتقال إلى الإعدادات -> النظام -> الشبكة وتحديد خيار. @@ -5723,44 +6057,44 @@ Please go to Configure -> System -> Network and make a selection. GRenderWindow - - + + OpenGL not available! OpenGL غير متوفر! - + OpenGL shared contexts are not supported. OpenGL لا يتم دعم السياقات المشتركة - + Eden has not been compiled with OpenGL support. OpenGL لم يتم تجميع إيدن بدعم - - + + 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 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% @@ -5768,203 +6102,208 @@ Please go to Configure -> System -> Network and make a selection. 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 إزالة جميع المحتويات القابلة للتنزيل المثبتة - + Remove Custom Configuration - إزالة التكوين المخصص + إزالة الإعدادات المخصصة - + 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 - تكوين اللعبة + إعدادات اللعبة - + Scan Subfolders مسح الملفات الداخلية - + Remove Game Directory إزالة مجلد اللعبة - + ▲ Move Up ▲ نقل للأعلى - + ▼ Move Down ▼ نقل للأسفل - + Open Directory Location فتح موقع المجلد - + Clear مسح - + Name الاسم - + Compatibility التوافق - + Add-ons الإضافات - + File type نوع الملف - + Size الحجم - + Play time زمن اللعب @@ -5972,62 +6311,62 @@ Please go to Configure -> System -> Network and make a selection. 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. لم يتم اختبار اللعبة بعد. @@ -6035,7 +6374,7 @@ Please go to Configure -> System -> Network and make a selection. GameListPlaceholder - + Double-click to add a new folder to the game list انقر نقرًا مزدوجًا لإضافة مجلد جديد إلى قائمة الألعاب @@ -6043,17 +6382,17 @@ Please go to Configure -> System -> Network and make a selection. GameListSearchField - + %1 of %n result(s) %1 من %n نتيجة (نتائج)%1 من %n نتيجة (نتائج)%1 من %n نتيجة (نتائج)%1 من %n نتيجة (نتائج)%1 من %n نتيجة (نتائج)%1 من %n نتيجة (نتائج) - + Filter: :تصفية - + Enter pattern to filter أدخل النمط المطلوب لتصفية النتائج @@ -6073,7 +6412,7 @@ Please go to Configure -> System -> Network and make a selection. Preferred Game - لعبة مفضلة + اللعبة المفضلة @@ -6129,12 +6468,12 @@ Please go to Configure -> System -> Network and make a selection. 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. Debug Message: فشل في الإعلان عن الغرفة في الردهة العامة. من أجل استضافة غرفة بشكل عام، يجب أن يكون لديك حساب إيدن صالح مُكوَّن في المحاكاة -> الإعدادات -> الويب. إذا كنت لا ترغب في نشر الغرفة في الردهة العامة، فاختر "غير مدرجة" بدلاً من ذلك. @@ -6144,189 +6483,207 @@ 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 خروج من إيدن - + 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 @@ -6379,22 +6736,22 @@ Debug Message: 5m 4s الوقت المقدر - + Loading... جارٍ التحميل... - + Loading Shaders %1 / %2 %1 / %2 جارٍ تحميل التظليل - + Launching... يتم التشغيل... - + Estimated Time %1 %1 الوقت المقدر @@ -6443,42 +6800,42 @@ Debug Message: تحديث القائمة - + Password Required to Join كلمة المرور مطلوبة للإنظمام - + Password: :كلمة المرور - + Players اللاعبين - + Room Name اسم الغرفة - + Preferred Game - لعبة مفضلة + اللعبة المفضلة - + Host المستضيف - + Refreshing تحديث - + Refresh List تحديث القائمة @@ -6527,719 +6884,776 @@ Debug Message: + &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 &أدوات - + Am&iibo أم&يبو - - &Applets - &التطبيقات الصغيرة + + 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 &حول إيدن - + 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 &الأسئلة الشائعة - + &Capture Screenshot &التقاط لقطة للشاشة - - Open &Album + + &Album &الألبوم - + &Set Nickname and Owner &تعيين الاسم المستعار والمالك - + &Delete Game Data حذف بيانات اللعبة - + &Restore Amiibo &استعادة أميبو - + &Format Amiibo &تنسيق أميبو - - Open &Mii Editor + + &Mii Editor &Mii محرر - + &Configure TAS... - &TAS تكوين + &TAS إعدادات - + Configure C&urrent Game... - تكوين اللعبة ال&حالية... + إعدادات اللعبة ال&حالية - - + + &Start &بدء - + &Reset &إعادة تعيين - - + + R&ecord ت&سجيل - + Open &Controller Menu &قائمة ذراع التحكم - + Install Decryption &Keys تثبيت &مفاتيح فك التشفير - - Open &Home Menu + + &Home Menu &القائمة الرئيسية - - Open &Setup - &برنامج الإعداد - - - + &Desktop &سطح المكتب - + &Application Menu &قائمة التطبيقات - + &Root Data Folder &مجلد البيانات الرئيسي - + &NAND Folder &مجلد الذاكرة الداخلية - + &SDMC Folder - &SDMC مجلد + &مجلد بطاقة الذاكرة - + &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.<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>. - أثناء التشغيل Vulkan فشل تهيئة<br><br>انقر<a href='https://eden-emulator.github.io/wiki/faq/#yuzu-starts-with-the-error-broken-vulkan-installation-detected'>هنا للحصول على تعليمات لإصلاح المشكلة</a>. + + 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><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. - أنت تستخدم تنسيق مجلد ROM المُفكك لهذه اللعبة، وهو تنسيق قديم استُبدل بصيغ أخرى مثل NCA وNAX وXCI وNSP. تفتقر مجلدات ROM المُفككة إلى الأيقونات والبيانات الوصفية ودعم التحديثات. <br><br>لشرح تنسيقات Switch المختلفة التي يدعمها Eden، <a href='https://eden-emulator.github.io/wiki/overview-of-switch-game-formats'>تصفح صفحتنا</a>. هذه الرسالة لن تظهر مجددًا. + + 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/Revolt for help. + + %1<br>Please redump your files or ask on Discord/Stoat for help. %1 signifies an error string. - %1<br>Discord/Revolt يرجى إعادة تحميل ملفاتك أو طلب المساعدة على + %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) - ملف التبديل القابل للتثبيت (*.nca *.nsp *.xci);؛أرشيف محتوى Nintendo (*.nca);؛حزمة إرسال Nintendo (*.nsp);؛صورة خرطوشة NX (*.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 تم تثبيت ملف (ملفات) جديدة @@ -7251,7 +7665,7 @@ Please, only use this feature to install updates and DLC. - + %n file(s) were overwritten %n تم استبدال ملف (ملفات) @@ -7263,7 +7677,7 @@ Please, only use this feature to install updates and DLC. - + %n file(s) failed to install %n فشل تثبيت ملف (ملفات) @@ -7275,214 +7689,214 @@ Please, only use this feature to install updates and DLC. - + 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 @@ -7491,230 +7905,155 @@ OS reported error: %1 أبلغ نظام التشغيل عن خطأ: %1 - - - - - - + No firmware available لا يوجد فيرموير متوفر - - Please install firmware to use the Album applet. - يرجى تثبيت الفيرموير لاستخدام تطبيق الألبوم. - - - - Album Applet - التطبيق الصغير للألبوم - - - - Album applet is not available. Please reinstall firmware. - التطبيق الصغير للألبوم غير متوفر. الرجاء إعادة تثبيت الفيرموير. - - - - Please install firmware to use the Cabinet applet. - يرجى تثبيت الفيرموير لاستخدام تطبيق الخزانة. - - - - Cabinet Applet - التطبيق الصغير للخزانة - - - - Cabinet applet is not available. Please reinstall firmware. - التطبيق الصغير للخزانة غير متوفر. الرجاء إعادة تثبيت الفيرموير. - - - - Please install firmware to use the Mii editor. - Mii يرجى تثبيت الفيرموير لاستخدام محرر - - - - Mii Edit Applet - Mii تحرير التطبيق الصغير - - - - Mii editor is not available. Please reinstall firmware. - غير متوفر. يرجى إعادة تثبيت الفيرموير Mii محرر - - - - Please install firmware to use the Controller Menu. - يرجى تثبيت الفيروير لاستخدام قائمة ذراع التحكم. - - - - Controller Applet - تطبيق صغير للذراع التحكم - - - - Controller Menu is not available. Please reinstall firmware. - قائمة ذراع التحكم غير متوفرة. الرجاء إعادة تثبيت الفيرموير - - - + Firmware Corrupted الفيرموير تالف - - Home Menu Applet - القائمة الرئيسية + + Unknown applet + تطبيق غير معروف - - Home Menu is not available. Please reinstall firmware. - القائمة الرئيسية غير متوفرة. يرجى إعادة تثبيت الفيرموير. + + Applet doesn't map to a known value. + لا يرتبط التطبيق المصغر بقيمة معروفة. - - Please install firmware to use Starter. - Starter الرجاء تثبيت الفيرموير لاستخدام. + + Record not found + لم يتم العثور على السجل - - Starter Applet - Starter تطبيق + + Applet not found. Please reinstall firmware. + لم يتم العثور على التطبيق المصغر. يرجى إعادة تثبيت الفيرموير. - - Starter is not available. Please reinstall firmware. - غير متوفر. يُرجى إعادة تثبيت الفيرموير Starter. - - - + Capture Screenshot التقاط لقطة شاشة - + PNG Image (*.png) PNG Image (*.png) - + Update Available تحديث متوفر - - Download the %1 update? - تنزيل التحديث %1؟ + + 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 - - %1 %2 - %1 %2 - - - + FSR FSR - + NO AA NO AA - + VOLUME: MUTE الصوت: كتم الصوت - + VOLUME: %1% Volume percentage (e.g. 50%) %1% :الصوت - + Derivation Components Missing مكونات الاشتقاق مفقودة - - Encryption keys are 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. @@ -7725,59 +8064,74 @@ Would you like to force it for future launches? هل ترغب في فرض استخدامه في عمليات التشغيل المستقبلية؟ - + 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? @@ -7785,11 +8139,6 @@ Would you like to bypass this and exit anyway? هل ترغب في تجاوز هذا والخروج على أي حال؟ - - - None - لا شيء - FXAA @@ -7816,27 +8165,27 @@ Would you like to bypass this and exit anyway? Bicubic - + Zero-Tangent Zero-Tangent - + B-Spline B-Spline - + Mitchell Mitchell - + Spline-1 Spline-1 - + Gaussian Gaussian @@ -7872,18 +8221,18 @@ Would you like to bypass this and exit anyway? - Normal - عادي + Fast + سريع - High - عالي + Balanced + متوازن - Extreme - أقصى حد + Accurate + دقه @@ -7891,42 +8240,37 @@ Would you like to bypass this and exit anyway? Vulkan - - OpenGL - OpenGL + + OpenGL GLSL + OpenGL GLSL - - Null - لا شيء + + OpenGL SPIRV + OpenGL SPIRV - GLSL - GLSL + OpenGL GLASM + OpenGL GLASM - GLASM - GLASM - - - - SPIRV - SPIRV + Null + لا شيء MigrationWorker - + 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. @@ -7943,7 +8287,7 @@ If this is not desirable, delete the following files: %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: @@ -7954,11 +8298,24 @@ If you wish to clean up the files which were left in the old data location, you %1 - + Data was migrated successfully. تم نقل البيانات بنجاح. + + ModSelectDialog + + + Dialog + حوار + + + + The specified folder or archive contains the following mods. Select which ones to install. + يحتوي المجلد أو الأرشيف المحدد على التعديلات التالية. حدد التعديلات التي تريد تثبيتها. + + ModerationDialog @@ -8083,6 +8440,135 @@ Proceed anyway? أنت على وشك مغادرة الغرفة. سيتم إغلاق جميع اتصالات الشبكة. + + NewUserDialog + + + + 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 حرفًا + + OverlayDialog @@ -8116,50 +8602,122 @@ 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 - - Installed SD Titles - عناوين المثبتة على بطاقة الذاكرة - - - - Installed NAND Titles - عناوين المثبتة على الذاكرة الداخلية - - - - System Titles - عناوين النظام - - - - Add New Game Directory - إضافة مجلد ألعاب جديد - - - - Favorites - المفضلة - - - - - + + + Migration الترحيل - + Clear Shader Cache مسح ذاكرة التخزين المؤقتة للتظليل @@ -8194,19 +8752,19 @@ p, li { white-space: pre-wrap; } لا - + You can manually re-trigger this prompt by deleting the new config directory: %1 يمكنك إعادة تشغيل هذه المطالبة يدويًا عن طريق حذف دليل التكوين الجديد: %1 - + Migrating الترحيل - + Migrating, this may take a while... جارٍ الترحيل، قد يستغرق هذا بعض الوقت... @@ -8588,15 +9146,60 @@ p, li { white-space: pre-wrap; } لا يلعب أي لعبة - + %1 is not playing a game %1 لا يلعب أي لعبة - + %1 is playing %2 %1 يلعب %2 + + + Play Time: %1 + زمن اللعب: %1 + + + + Never Played + لم تُلعب قط + + + + Version: %1 + الإصدار: %1 + + + + Version: 1.0.0 + الإصدار: 1.0.0 + + + + Installed SD Titles + عناوين المثبتة على بطاقة الذاكرة + + + + Installed NAND Titles + عناوين المثبتة على الذاكرة الداخلية + + + + System Titles + عناوين النظام + + + + Add New Game Directory + إضافة مجلد ألعاب جديد + + + + Favorites + المفضلة + QtAmiiboSettingsDialog @@ -8714,47 +9317,47 @@ p, li { white-space: pre-wrap; } 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 @@ -8763,204 +9366,204 @@ p, li { white-space: pre-wrap; } %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. تأكد من أن لديك أذونات قراءة على المجلد المحدد وحاول مرة أخرى. @@ -8968,22 +9571,22 @@ Only do this if you're 100% sure you want to delete this data. QtCommon::FS - + Linked Save Data بيانات الحفظ المرتبطة - + Save data has been linked. تم ربط بيانات الحفظ. - + Failed to link save data فشل ربط بيانات الحفظ - + Could not link directory: %1 To: @@ -8994,268 +9597,359 @@ 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. + فشل إزالة إعدادات اللعبة المخصص. - 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. فشل إنشاء أو فتح ذاكرة التخزين المؤقتة للتظليل لهذا العنوان، تأكد من أن دليل بيانات التطبيق لديك يحتوي على أذونات الكتابة. @@ -9263,89 +9957,89 @@ To: 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. Versions 19.0.1 or earlier are recommended, as 20.0.0+ is currently experimental. - البرنامج الثابت مفقود. يلزم وجود برنامج ثابت لتشغيل بعض الألعاب واستخدام القائمة الرئيسية. يُنصح باستخدام الإصدار 19.0.1 أو إصدار أقدم، لأن الإصدار 20.0.0+ ما زال تجريبيًا. + + 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. - تم التحقق من وجود البرنامج الثابت، ولكن تعذر قراءته. تحقق من مفاتيح فك التشفير، وقم بتفريغ البرنامج الثابت إذا لزم الأمر. + تم التحقق من وجود الفيرموير، ولكن تعذر قراءته. تحقق من مفاتيح فك التشفير، وقم بتفريغ الفيرموير إذا لزم الأمر. @@ -9362,60 +10056,60 @@ 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 غير موجود في قاعدة بيانات عناوين @@ -9456,7 +10150,7 @@ This is recommended if you want to share data between emulators. - + Pro Controller Pro Controller @@ -9469,7 +10163,7 @@ This is recommended if you want to share data between emulators. - + Dual Joycons جوي كون ثنائي @@ -9482,7 +10176,7 @@ This is recommended if you want to share data between emulators. - + Left Joycon جوي كون اليسرى @@ -9495,7 +10189,7 @@ This is recommended if you want to share data between emulators. - + Right Joycon جوي كون اليمنى @@ -9509,7 +10203,7 @@ This is recommended if you want to share data between emulators. Use Current Config - استخدم التكوين الحالي + استخدام الإعدادات الحالية @@ -9524,7 +10218,7 @@ This is recommended if you want to share data between emulators. - + Handheld محمول @@ -9572,7 +10266,7 @@ This is recommended if you want to share data between emulators. Configure - تكوين + الإعدادات @@ -9645,32 +10339,32 @@ This is recommended if you want to share data between emulators. لا توجد اذرع تحكم كافية - + GameCube Controller - ذراع تحكم جيم كيوب + GameCube ذراع تحكم - + Poke Ball Plus Poke Ball Plus - + NES Controller ذراع تحكم NES - + SNES Controller ذراع تحكم SNES - + N64 Controller ذراع تحكم N64 - + Sega Genesis Sega Genesis @@ -9746,7 +10440,7 @@ Please try again or contact the developer of the software. Profile Nickname Editor - تعديل اسم المستخدم للملف التعريف + محرر الاسم المستعار للملف التعريف @@ -9825,13 +10519,13 @@ 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 إلغاء @@ -9868,12 +10562,12 @@ By selecting "From Eden", previous save data stored in Ryujinx will be إلغاء - + Failed to link save data فشل ربط بيانات الحفظ - + OS returned error: %1 أعاد نظام التشغيل خطأ: %1 @@ -9909,47 +10603,9 @@ By selecting "From Eden", previous save data stored in Ryujinx will be :ثواني - + Total play time reached maximum. وصل إجمالي زمن التشغيل إلى الحد الأقصى. - - fs - - - 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 تعذر العثور على بيانات حفظ - - - \ No newline at end of file + diff --git a/dist/languages/ca.ts b/dist/languages/ca.ts index 397b33a48f..74a8c99ef9 100644 --- a/dist/languages/ca.ts +++ b/dist/languages/ca.ts @@ -4,12 +4,12 @@ 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> @@ -30,13 +30,13 @@ li.checked::marker { content: "\2612"; } - <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/kXAmGCXBGD"><span style=" text-decoration: underline; color:#039be5;">Discord</span></a> | <a href="https://rvlt.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;">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;">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. Eden no està afiliada a Nintendo de cap manera.</span></p></body></html> @@ -49,7 +49,7 @@ li.checked::marker { content: "\2612"; } Cancel - Cancel·la + Cancel·lar @@ -102,7 +102,7 @@ li.checked::marker { content: "\2612"; } %1 has left - %1 ha marxat + %1 s'ha marxat @@ -112,17 +112,17 @@ li.checked::marker { content: "\2612"; } %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 @@ -133,7 +133,7 @@ li.checked::marker { content: "\2612"; } 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? @@ -143,7 +143,7 @@ li.checked::marker { content: "\2612"; } Ban - Ban + Vetar @@ -153,19 +153,19 @@ li.checked::marker { content: "\2612"; } 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 - Banejar jugador + 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 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. @@ -188,7 +188,7 @@ This would ban both their forum username and their IP address. Leave Room - Abandonar sala + Abandonar la sala @@ -214,7 +214,7 @@ This would ban both their forum username and their IP address. Report Compatibility - Informeu sobre la compatibilitat + Informar sobre la compatibilitat @@ -225,7 +225,7 @@ This would ban both their forum username and their IP address. Report Game Compatibility - Informeu sobre la compatibilitat del joc + Informar sobre la compatibilitat del joc @@ -240,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 @@ -250,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ú @@ -265,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. @@ -280,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 @@ -295,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 @@ -315,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 @@ -366,390 +366,399 @@ This would ban both their forum username and their IP address. % - + Amiibo editor - + Editor d'Amiibo + + + + Controller configuration + Configuració del comandament - Controller configuration - - - - Data erase - + Error Error - + Net connect - + Player select - + Software keyboard - + Mii Edit - + Editor de Mii + + + + Online web + Web en línia - Online web - + Shop + Botiga - Shop - + Photo viewer + Àlbum - Photo viewer - + Offline web + Web fora de línia - Offline web - - - - 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: - - - - Input Device: - Dispositiu d'Entrada: - + Output Device: + Dispositiu de sortida: + + + + Input Device: + 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 maximum of 4. This is mainly a debug option and shouldn't be disabled. - + Memory Layout - - Increases the amount of emulated RAM from 4GB of the board to the devkit 8/6GB. + + 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. 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. - - Synchronize Core Speed + + 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.). Can help reduce stuttering at lower framerates. - + Accuracy: Precisió: - + 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. - - Virtual Table Bouncing - - - - - Bounces (by emulating a 0-valued return) any functions that triggers a prefetch abort - - - - + 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 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: - + Changes the output graphics API. Vulkan is recommended. - + Device: Dispositiu: - + This setting selects the GPU to use (Vulkan only). - - Shader Backend: - Suport de shaders: - - - - The shader backend to use with OpenGL. -GLSL is recommended. - - - - + Resolution: Resolució: - + 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 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 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 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 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 - + 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. @@ -757,35 +766,24 @@ 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. GPU: Use the GPU's compute shaders to decode ASTC textures (recommended). @@ -794,45 +792,55 @@ stuttering but may present artifacts. - + ASTC Recompression Method: - + 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. 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 allows tearing as it recovers from a slow down. Mailbox can have lower latency than FIFO and does not tear but may drop frames. @@ -840,1175 +848,1379 @@ Immediate (no synchronization) presents whatever is available and can exhibit te - + 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. Safe to set at 16x on most GPUs. - - GPU Accuracy: + + GPU Mode: + Mode de la 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. - - Controls the 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 as a last resort. - - - - + DMA Accuracy: - + Precisió DMA: - + Controls the DMA precision accuracy. Safe precision fixes issues in some games but may degrade performance. - - Enable asynchronous shader compilation (Hack) + + Enable asynchronous shader compilation - + May reduce shader stutter. - - Fast GPU Time (Hack) + + 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) - + 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 numbers allow for more features and can increase performance, but may cause issues. -The default value is per-system. +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 some games. -Only Vulkan 1.0+ devices support this extension. + + Enables vertex input dynamic state feature for better quality and performance. - - Descriptor Indexing - - - - - Improves texture & buffer handling and the Maxwell translation layer. -Some Vulkan 1.1+ and all 1.2+ devices support this extension. - - - - + 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. - + Device Name - Nom del Dispositiu + Nom del dispositiu - + The name of the console. - + Custom RTC Date: - + 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: - + This option can be overridden when region setting is auto-select - + Region: Regió: - + The region of the console. - + Time Zone: Zona horària: - + The time zone of the console. - + Sound Output Mode: - + Console Mode: - + Mode de la consola - + 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. - + + Unit Serial + + + + + Battery Serial + + + + + Debug knobs + + + + 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 - + 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 - + Hides the mouse after 2.5s of inactivity. - + Disable controller applet - + 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 - - - - - - Default - Valor predeterminat - - - - Unsafe (fast) - - - - - Safe (stable) - - - - + + 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 - + + + 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) + 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) - - Serbian (српски) - + + 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) - + 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 - - 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 + + ConfigureApplets @@ -2020,7 +2232,7 @@ When a program attempts to open the controller applet, it is immediately closed. Applets - + Applets @@ -2080,7 +2292,7 @@ When a program attempts to open the controller applet, it is immediately closed. Restaurar els valors predeterminats - + Auto Auto @@ -2530,46 +2742,86 @@ When a program attempts to open the controller applet, it is immediately closed. + Use dev.keys + + + + Enable Debug Asserts Activar alertes de depuració - + Debugging Depuració - + + 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. 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. - + 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** - + Censor username in logs - + **This will be reset automatically when Eden closes. @@ -2630,13 +2882,13 @@ When a program attempts to open the controller applet, it is immediately closed. - + Audio Àudio - + CPU CPU @@ -2652,13 +2904,13 @@ When a program attempts to open the controller applet, it is immediately closed. - + General General - + Graphics Gràfics @@ -2669,7 +2921,7 @@ When a program attempts to open the controller applet, it is immediately closed. - GraphicsExtensions + GraphicsExtra @@ -2679,7 +2931,7 @@ When a program attempts to open the controller applet, it is immediately closed. - + Controls Controls @@ -2695,7 +2947,7 @@ When a program attempts to open the controller applet, it is immediately closed. - + System Sistema @@ -2735,9 +2987,10 @@ When a program attempts to open the controller applet, it is immediately closed. - - - + + + + ... ... @@ -2747,90 +3000,184 @@ When a program 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... + + + Save Data Directory + + + + + Choose an action for the save data directory: + + + + + 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? + + ConfigureGeneral @@ -2847,23 +3194,53 @@ When a program 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 - + 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... - - 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? + + Directory Already Added + + + + + This directory is already in the list. + @@ -2894,33 +3271,33 @@ When a program 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 @@ -2938,7 +3315,7 @@ When a program attempts to open the controller applet, it is immediately closed. Avançat - + Advanced Graphics Settings Paràmetres gràfics avançats @@ -2952,16 +3329,26 @@ When a program attempts to open the controller applet, it is immediately closed. - Extensions + Extras - - Vulkan Extensions Settings + + Hacks - + + Changing these options from their default may cause issues. Novitii cavete! + + + + + Vulkan Extensions + + + + % Sample Shading percentage (e.g. 50%) @@ -3344,7 +3731,7 @@ When a program attempts to open the controller applet, it is immediately closed. Touchscreen - Pantalla Tàctil + Panell tàctil @@ -3539,7 +3926,7 @@ When a program attempts to open the controller applet, it is immediately closed. - + Left Stick Palanca esquerra @@ -3649,14 +4036,14 @@ When a program attempts to open the controller applet, it is immediately closed. - + ZL ZL - + L L @@ -3669,22 +4056,22 @@ When a program attempts to open the controller applet, it is immediately closed. - + Plus Més - + ZR ZR - - + + R R @@ -3741,7 +4128,7 @@ When a program attempts to open the controller applet, it is immediately closed. - + Right Stick Palanca dreta @@ -3910,88 +4297,88 @@ Per invertir els eixos, primer moveu el joystick verticalment i després horitzo 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" @@ -4014,15 +4401,6 @@ Per invertir els eixos, primer moveu el joystick verticalment i després horitzo Valors predeterminats - - ConfigureLinuxTab - - - - Linux - - - ConfigureMotionTouch @@ -4048,7 +4426,7 @@ Per invertir els eixos, primer moveu el joystick verticalment i després horitzo - + Configure Configuració @@ -4078,103 +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://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> - - - - + %1:%2 %1:%2 + + - - - - - + + + Eden - + Eden - + Port number has invalid characters El número de port té caràcters invàlids - + 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.  - + 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. @@ -4304,11 +4672,6 @@ Current values are %1% and %2% respectively. Enable Airplane Mode - - - None - Cap - ConfigurePerGame @@ -4363,52 +4726,57 @@ 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 + + + Properties Propietats @@ -4426,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 @@ -4463,38 +4926,18 @@ Current values are %1% and %2% respectively. Username Nom d'usuari - - - Set Image - Establir imatge - - Select Avatar - - - - 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)) @@ -4502,169 +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: - - - + 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 saving user image - + Unable to save image to file - - Select User Image - Seleccioni una imatge d'usuari - - - - Image Formats (*.jpg *.jpeg *.png *.bmp) + + &Edit - - No firmware available + + &Delete - - 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. - - - - - ConfigureProfileManagerAvatarDialog - - - Select - - - - - Cancel - - - - - Background Color - - - - - Select Firmware Avatar + + 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 @@ -4832,7 +5186,7 @@ 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> @@ -4866,17 +5220,22 @@ UUID: %2 Pausar execució durant les càrregues - + + Show recording dialog + + + + Script Directory Directori d'scripts - + Path Ruta - + ... ... @@ -4889,7 +5248,7 @@ UUID: %2 Configuració TAS - + Select TAS Load Directory... Selecciona el directori de càrrega TAS... @@ -5027,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 @@ -5153,71 +5491,66 @@ Arrossegui els punts per a canviar la posició, o faci doble clic a les cel·les - 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 @@ -5351,20 +5684,20 @@ Arrossegui els punts per a canviar la posició, o faci doble clic a les cel·les Mostrar el joc actual al seu estat de Discord - - + + All Good Tooltip - + Must be between 4-20 characters Tooltip - + Must be 48 characters, and lowercase a-z Tooltip @@ -5396,27 +5729,27 @@ Arrossegui els punts per a canviar la posició, o faci doble clic a les cel·les - + Shaders - + UserNAND - + SysNAND - + Mods - + Saves @@ -5454,7 +5787,7 @@ Arrossegui els punts per a canviar la posició, o faci doble clic a les cel·les - + Calculating... @@ -5477,14 +5810,14 @@ Arrossegui els punts per a canviar la posició, o faci doble clic a les cel·les - + Dependency - + Version - + Versió @@ -5650,50 +5983,50 @@ Please go to Configure -> System -> Network and make a selection. Error - + Error GRenderWindow - - + + OpenGL not available! OpenGL no disponible! - + OpenGL shared contexts are not supported. - + 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 @@ -5701,203 +6034,208 @@ Please go to Configure -> System -> Network and make a selection. 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 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 - + 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 @@ -5905,62 +6243,62 @@ Please go to Configure -> System -> Network and make a selection. 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. @@ -5968,7 +6306,7 @@ Please go to Configure -> System -> Network and make a selection. 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 @@ -5976,17 +6314,17 @@ Please go to Configure -> System -> Network and make a selection. GameListSearchField - + %1 of %n result(s) %1 de %n resultat(s)%1 de %n resultat(s) - + Filter: Filtre: - + Enter pattern to filter Introdueixi patró per a filtrar @@ -6062,12 +6400,12 @@ Please go to Configure -> System -> Network and make a selection. 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. Debug Message: @@ -6076,189 +6414,207 @@ 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 - + 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 @@ -6311,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 @@ -6375,42 +6731,42 @@ Debug Message: - + Password Required to Join - + Password: - + Players Jugadors - + Room Name Nom de la sala - + Preferred Game - + Host - + Refreshing - + Refresh List @@ -6459,1171 +6815,1153 @@ Debug Message: + &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 - + Am&iibo - - &Applets + + 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 - + 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 - + &Capture Screenshot &Captura de pantalla - - - Open &Album - - - - - &Set Nickname and Owner - - - - - &Delete Game Data - - - &Restore Amiibo + &Album - &Format Amiibo + &Set Nickname and Owner - Open &Mii Editor + &Delete Game Data + &Restore Amiibo + + + + + &Format Amiibo + + + + + &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 Decryption &Keys - - Open &Home Menu + + &Home Menu - - Open &Setup - - - - + &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.<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>. + + 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><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. + + 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/Revolt for help. + + %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 - - Please install firmware to use the Album applet. - - - - - Album Applet - - - - - Album applet is not available. Please reinstall firmware. - - - - - Please install firmware to use the Cabinet applet. - - - - - Cabinet Applet - - - - - Cabinet applet is not available. Please reinstall firmware. - - - - - Please install firmware to use the Mii editor. - - - - - Mii Edit Applet - - - - - Mii editor is not available. Please reinstall firmware. - - - - - Please install firmware to use the Controller Menu. - - - - - Controller Applet - - - - - Controller Menu is not available. Please reinstall firmware. - - - - + Firmware Corrupted - - Home Menu Applet + + Unknown applet - - Home Menu is not available. Please reinstall firmware. + + Applet doesn't map to a known value. - - Please install firmware to use Starter. + + Record not found - - Starter Applet + + Applet not found. Please reinstall firmware. - - Starter is not available. Please reinstall firmware. - - - - + Capture Screenshot - + PNG Image (*.png) - + Update Available - - Download the %1 update? - - - - - TAS state: Running %1/%2 - - - - - TAS state: Recording %1 - - - - - TAS state: Idle %1/%2 - - - - - TAS State: Invalid - - - - - &Stop Running + + 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 - - %1 %2 - - - - + FSR - + FSR - + NO AA - + SENSE AA - + VOLUME: MUTE - + VOLUME: %1% Volume percentage (e.g. 50%) - + VOLUMEN: %1% - + Derivation Components Missing - - Encryption keys are 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. @@ -7631,78 +7969,88 @@ 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? - - - None - - FXAA - + FXAA SMAA - + SMAA @@ -7712,42 +8060,42 @@ Would you like to bypass this and exit anyway? Bilinear - + Bilineal Bicubic - + Bicúbic - + Zero-Tangent - + B-Spline - + Mitchell - + Spline-1 - + Gaussian - + Gaussià Lanczos - + Lanczos @@ -7757,7 +8105,7 @@ Would you like to bypass this and exit anyway? Area - + Àrea @@ -7767,69 +8115,64 @@ Would you like to bypass this and exit anyway? Docked - + Sobretaula Handheld - + Portàtil - Normal + Fast - High + Balanced - Extreme + Accurate Vulkan - - - - - OpenGL - + Vulkan - Null - + OpenGL GLSL + OpenGL GLSL + + + + OpenGL SPIRV + OpenGL SPIRV - GLSL - + OpenGL GLASM + OpenGL GLASM - GLASM - - - - - SPIRV - + Null + Nul MigrationWorker - + 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. @@ -7840,7 +8183,7 @@ If this is not desirable, delete the following files: - + 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: @@ -7848,11 +8191,24 @@ If you wish to clean up the files which were left in the old data location, you - + Data was migrated successfully. + + ModSelectDialog + + + Dialog + + + + + The specified folder or archive contains the following mods. Select which ones to install. + + + ModerationDialog @@ -7894,7 +8250,7 @@ If you wish to clean up the files which were left in the old data location, you IP Address - + Adreça IP @@ -7975,6 +8331,135 @@ Proceed anyway? + + NewUserDialog + + + + 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 + + + OverlayDialog @@ -8008,50 +8493,122 @@ 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 - - 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 - - - - - + + + Migration - + Clear Shader Cache @@ -8075,27 +8632,29 @@ p, li { white-space: pre-wrap; } - + + + No - + No - + You can manually re-trigger this prompt by deleting the new config directory: %1 - + Migrating - + Migrating, this may take a while... @@ -8477,15 +9036,60 @@ p, li { white-space: pre-wrap; } - + %1 is not playing a game - + %1 is playing %2 + + + Play Time: %1 + + + + + Never Played + Mai jugat + + + + 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 + QtAmiiboSettingsDialog @@ -8527,7 +9131,7 @@ p, li { white-space: pre-wrap; } Owner - + Propietari @@ -8537,7 +9141,7 @@ p, li { white-space: pre-wrap; } dd/MM/yyyy - + dd/MM/yyyy @@ -8547,7 +9151,7 @@ p, li { white-space: pre-wrap; } dd/MM/yyyy - + dd/MM/yyyy @@ -8603,250 +9207,250 @@ p, li { white-space: pre-wrap; } 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. @@ -8854,22 +9458,22 @@ Only do this if you're 100% sure you want to delete this data. QtCommon::FS - + Linked Save Data - + Save data has been linked. - + Failed to link save data - + Could not link directory: %1 To: @@ -8877,268 +9481,357 @@ To: - + 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 - - Home Menu is not available. Please reinstall firmware. + + 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. @@ -9146,83 +9839,83 @@ To: 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. Versions 19.0.1 or earlier are recommended, as 20.0.0+ is currently experimental. + + Firmware missing. Firmware is required to run certain games and use the Home Menu. @@ -9243,56 +9936,56 @@ 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. @@ -9333,7 +10026,7 @@ This is recommended if you want to share data between emulators. - + Pro Controller Controlador Pro @@ -9346,7 +10039,7 @@ This is recommended if you want to share data between emulators. - + Dual Joycons Joycons duals @@ -9359,7 +10052,7 @@ This is recommended if you want to share data between emulators. - + Left Joycon Joycon esquerra @@ -9372,7 +10065,7 @@ This is recommended if you want to share data between emulators. - + Right Joycon Joycon dret @@ -9401,7 +10094,7 @@ This is recommended if you want to share data between emulators. - + Handheld Portàtil @@ -9522,32 +10215,32 @@ This is recommended if you want to share data between emulators. - + 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 @@ -9702,13 +10395,13 @@ 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 @@ -9740,15 +10433,15 @@ By selecting "From Eden", previous save data stored in Ryujinx will be Cancel - + Cancel·lar - + Failed to link save data - + OS returned error: %1 @@ -9771,58 +10464,22 @@ By selecting "From Eden", previous save data stored in Ryujinx will be Hours: - + Hores: Minutes: - + Minuts: Seconds: - + Segons: - + Total play time reached maximum. - - fs - - - 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 - - - - \ No newline at end of file + diff --git a/dist/languages/cs.ts b/dist/languages/cs.ts index 399b588f12..34cf60f078 100644 --- a/dist/languages/cs.ts +++ b/dist/languages/cs.ts @@ -4,7 +4,7 @@ About Eden - + O aplikaci Eden @@ -30,7 +30,7 @@ li.checked::marker { content: "\2612"; } - <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/kXAmGCXBGD"><span style=" text-decoration: underline; color:#039be5;">Discord</span></a> | <a href="https://rvlt.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;">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;">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> @@ -366,390 +366,399 @@ This would ban both their forum username and their IP address. % - + 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 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 4GB of the board to the devkit 8/6GB. + + 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. 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. - - Synchronize Core Speed + + 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.). Can help reduce stuttering at lower framerates. - + Accuracy: Přesnost: - + 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. - - Virtual Table Bouncing - - - - - Bounces (by emulating a 0-valued return) any functions that triggers a prefetch abort - - - - + 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 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: - + Changes the output graphics API. Vulkan is recommended. - + Device: Zařízení: - + This setting selects the GPU to use (Vulkan only). - - Shader Backend: - - - - - The shader backend to use with OpenGL. -GLSL is recommended. - - - - + Resolution: Rozlišení: - + 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 using FSR's dynamic contrast. - + Anti-Aliasing Method: - + The anti-aliasing method to use. SMAA offers the best quality. 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 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 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 - + Runs an additional optimization pass over generated SPIRV shaders. Will increase time required for shader compilation. May slightly improve performance. @@ -757,35 +766,24 @@ 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. GPU: Use the GPU's compute shaders to decode ASTC textures (recommended). @@ -794,45 +792,55 @@ stuttering but may present artifacts. - + ASTC Recompression Method: - + 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. 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 allows tearing as it recovers from a slow down. Mailbox can have lower latency than FIFO and does not tear but may drop frames. @@ -840,1175 +848,1379 @@ Immediate (no synchronization) presents whatever is available and can exhibit te - + 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. Safe to set at 16x on most GPUs. - - GPU Accuracy: + + GPU Mode: - - Controls the 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 as a last resort. + + 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. - + DMA Accuracy: - + Controls the DMA precision accuracy. Safe precision fixes issues in some games but may degrade performance. - - Enable asynchronous shader compilation (Hack) + + Enable asynchronous shader compilation - + May reduce shader stutter. - - Fast GPU Time (Hack) + + 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) - + 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 numbers allow for more features and can increase performance, but may cause issues. -The default value is per-system. +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 some games. -Only Vulkan 1.0+ devices support this extension. + + Enables vertex input dynamic state feature for better quality and performance. - - Descriptor Indexing - - - - - Improves texture & buffer handling and the Maxwell translation layer. -Some Vulkan 1.1+ and all 1.2+ devices support this extension. - - - - + 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. - + Device Name Název Zařízení - + The name of the console. - + Custom RTC Date: - + 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: - + This option can be overridden when region setting is auto-select - + Region: Region: - + The region of the console. - + Time Zone: Časové Pásmo: - + The time zone of the console. - + Sound Output Mode: - + Console 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. - + + Unit Serial + + + + + Battery Serial + + + + + Debug knobs + + + + 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 Potvrzení před zastavením emulace - + 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ě - + Hides the mouse after 2.5s of inactivity. - + Disable controller applet - + 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í - - - - - Default - Výchozí - - - - Unsafe (fast) - - - - - Safe (stable) - - - - + + 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é - + + + 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) - - Serbian (српски) + + 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) - + 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 - - 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 + + ConfigureApplets @@ -2080,7 +2292,7 @@ When a program attempts to open the controller applet, it is immediately closed. Vrátit výchozí nastavení - + Auto Automatické @@ -2522,46 +2734,86 @@ When a program attempts to open the controller applet, it is immediately closed. + Use dev.keys + + + + Enable Debug Asserts Povolit Debug Asserts - + Debugging Ladění - + + 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. @@ -2622,13 +2874,13 @@ When a program attempts to open the controller applet, it is immediately closed. - + Audio Zvuk - + CPU CPU @@ -2644,13 +2896,13 @@ When a program attempts to open the controller applet, it is immediately closed. - + General Obecné - + Graphics Grafika @@ -2661,7 +2913,7 @@ When a program attempts to open the controller applet, it is immediately closed. - GraphicsExtensions + GraphicsExtra @@ -2671,7 +2923,7 @@ When a program attempts to open the controller applet, it is immediately closed. - + Controls Ovládání @@ -2687,7 +2939,7 @@ When a program attempts to open the controller applet, it is immediately closed. - + System Systém @@ -2727,9 +2979,10 @@ When a program attempts to open the controller applet, it is immediately closed. - - - + + + + ... ... @@ -2739,90 +2992,184 @@ When a program 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... + + + Save Data Directory + + + + + Choose an action for the save data directory: + + + + + 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? + + ConfigureGeneral @@ -2839,24 +3186,54 @@ When a program 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í - + 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 @@ -2886,33 +3263,33 @@ When a program 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 @@ -2930,7 +3307,7 @@ When a program attempts to open the controller applet, it is immediately closed. Pokročilé - + Advanced Graphics Settings Pokročilé nastavení grafiky @@ -2944,16 +3321,26 @@ When a program attempts to open the controller applet, it is immediately closed. - Extensions + Extras - - Vulkan Extensions Settings + + Hacks - + + Changing these options from their default may cause issues. Novitii cavete! + + + + + Vulkan Extensions + + + + % Sample Shading percentage (e.g. 50%) @@ -3531,7 +3918,7 @@ When a program attempts to open the controller applet, it is immediately closed. - + Left Stick Levá Páčka @@ -3641,14 +4028,14 @@ When a program attempts to open the controller applet, it is immediately closed. - + ZL ZL - + L L @@ -3661,22 +4048,22 @@ When a program attempts to open the controller applet, it is immediately closed. - + Plus Plus - + ZR ZR - - + + R R @@ -3733,7 +4120,7 @@ When a program attempts to open the controller applet, it is immediately closed. - + Right Stick Pravá páčka @@ -3902,88 +4289,88 @@ Pro převrácení os nejprve posuňte joystick vertikálně, poté horizontáln - + 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" @@ -4006,15 +4393,6 @@ Pro převrácení os nejprve posuňte joystick vertikálně, poté horizontáln Výchozí - - ConfigureLinuxTab - - - - Linux - - - ConfigureMotionTouch @@ -4040,7 +4418,7 @@ Pro převrácení os nejprve posuňte joystick vertikálně, poté horizontáln - + Configure Konfigurovat @@ -4070,103 +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://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> - - - - + %1:%2 %1:%2 + + - - - - - + + + Eden - + Port number has invalid characters Číslo portu obsahuje neplatné znaky - + 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í. @@ -4296,11 +4664,6 @@ Current values are %1% and %2% respectively. Enable Airplane Mode - - - None - Žádné - ConfigurePerGame @@ -4355,52 +4718,57 @@ 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 + + + + Properties Vlastnosti @@ -4418,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 @@ -4455,38 +4918,18 @@ Current values are %1% and %2% respectively. Username Přezdívka - - - Set Image - Nastavit obrázek - - Select Avatar - - - - 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)) @@ -4494,169 +4937,80 @@ 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: - - - + 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 saving user image - + Unable to save image to file - - Select User Image - Vyberte obrázek uživatele - - - - Image Formats (*.jpg *.jpeg *.png *.bmp) + + &Edit - - No firmware available + + &Delete - - 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. - - - - - ConfigureProfileManagerAvatarDialog - - - Select - - - - - Cancel - - - - - Background Color - - - - - Select Firmware Avatar + + 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 @@ -4823,7 +5177,7 @@ 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> @@ -4857,17 +5211,22 @@ UUID: %2 - + + Show recording dialog + + + + Script Directory - + Path Cesta - + ... ... @@ -4880,7 +5239,7 @@ UUID: %2 - + Select TAS Load Directory... @@ -5018,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 @@ -5144,71 +5482,66 @@ Táhněte body pro změnu pozice nebo dvojitě klikněte na buňky tabulky pro z - Game 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 @@ -5342,20 +5675,20 @@ Táhněte body pro změnu pozice nebo dvojitě klikněte na buňky tabulky pro z Zobrazovat Aktuální hru v Discordu - - + + All Good Tooltip - + Must be between 4-20 characters Tooltip - + Must be 48 characters, and lowercase a-z Tooltip @@ -5387,27 +5720,27 @@ Táhněte body pro změnu pozice nebo dvojitě klikněte na buňky tabulky pro z - + Shaders - + UserNAND - + SysNAND - + Mods - + Saves @@ -5445,7 +5778,7 @@ Táhněte body pro změnu pozice nebo dvojitě klikněte na buňky tabulky pro z - + Calculating... @@ -5468,12 +5801,12 @@ Táhněte body pro změnu pozice nebo dvojitě klikněte na buňky tabulky pro z - + Dependency - + Version @@ -5647,44 +5980,44 @@ Please go to Configure -> System -> Network and make a selection. GRenderWindow - - + + OpenGL not available! OpenGL není k dispozici! - + OpenGL shared contexts are not supported. - + 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 @@ -5692,203 +6025,208 @@ Please go to Configure -> System -> Network and make a selection. 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 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 - + 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í @@ -5896,62 +6234,62 @@ Please go to Configure -> System -> Network and make a selection. 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 @@ -5959,7 +6297,7 @@ Please go to Configure -> System -> Network and make a selection. 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 @@ -5967,17 +6305,17 @@ Please go to Configure -> System -> Network and make a selection. GameListSearchField - + %1 of %n result(s) - + Filter: Filtr: - + Enter pattern to filter Zadejte filtr @@ -6053,12 +6391,12 @@ Please go to Configure -> System -> Network and make a selection. 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. Debug Message: @@ -6067,189 +6405,207 @@ 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 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 @@ -6301,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 @@ -6365,42 +6721,42 @@ Debug Message: - + Password Required to Join - + Password: - + Players Hráči - + Room Name Název Místnosti - + Preferred Game Preferovaná hra - + Host - + Refreshing - + Refresh List Obnovit Seznam @@ -6449,1171 +6805,1153 @@ Debug Message: + &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 - + Am&iibo - - &Applets + + 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 - + 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 - + &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 Decryption &Keys - - Open &Home Menu + + &Home Menu - - Open &Setup - - - - + &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.<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>. + + 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><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. + + 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/Revolt for help. + + %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 - - Please install firmware to use the Album applet. - - - - - Album Applet - - - - - Album applet is not available. Please reinstall firmware. - - - - - Please install firmware to use the Cabinet applet. - - - - - Cabinet Applet - - - - - Cabinet applet is not available. Please reinstall firmware. - - - - - Please install firmware to use the Mii editor. - - - - - Mii Edit Applet - - - - - Mii editor is not available. Please reinstall firmware. - - - - - Please install firmware to use the Controller Menu. - - - - - Controller Applet - - - - - Controller Menu is not available. Please reinstall firmware. - - - - + Firmware Corrupted - - Home Menu Applet + + Unknown applet - - Home Menu is not available. Please reinstall firmware. + + Applet doesn't map to a known value. - - Please install firmware to use Starter. + + Record not found - - Starter Applet + + Applet not found. Please reinstall firmware. - - Starter is not available. Please reinstall firmware. - - - - + Capture Screenshot - + PNG Image (*.png) - + Update Available - - Download the %1 update? - - - - - TAS state: Running %1/%2 - - - - - TAS state: Recording %1 - - - - - TAS state: Idle %1/%2 - - - - - TAS State: Invalid - - - - - &Stop Running + + 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 - - %1 %2 - - - - + FSR - + NO AA - + VOLUME: MUTE - + VOLUME: %1% Volume percentage (e.g. 50%) - + Derivation Components Missing - - Encryption keys are 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. @@ -7621,69 +7959,79 @@ 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? - - - None - - FXAA @@ -7710,27 +8058,27 @@ Would you like to bypass this and exit anyway? - + Zero-Tangent - + B-Spline - + Mitchell - + Spline-1 - + Gaussian @@ -7766,17 +8114,17 @@ Would you like to bypass this and exit anyway? - Normal + Fast - High + Balanced - Extreme + Accurate @@ -7785,41 +8133,36 @@ Would you like to bypass this and exit anyway? - - OpenGL + + OpenGL GLSL - - Null + + OpenGL SPIRV - GLSL + OpenGL GLASM - GLASM - - - - - SPIRV + Null MigrationWorker - + 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. @@ -7830,7 +8173,7 @@ If this is not desirable, delete the following files: - + 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: @@ -7838,11 +8181,24 @@ If you wish to clean up the files which were left in the old data location, you - + Data was migrated successfully. + + ModSelectDialog + + + Dialog + + + + + The specified folder or archive contains the following mods. Select which ones to install. + + + ModerationDialog @@ -7965,6 +8321,135 @@ Proceed anyway? + + 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 + + + OverlayDialog @@ -7998,50 +8483,122 @@ 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 - - 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é - - - - - + + + Migration - + Clear Shader Cache @@ -8074,18 +8631,18 @@ p, li { white-space: pre-wrap; } - + You can manually re-trigger this prompt by deleting the new config directory: %1 - + Migrating - + Migrating, this may take a while... @@ -8467,15 +9024,60 @@ p, li { white-space: pre-wrap; } Nehraje hru - + %1 is not playing a game %1 nehraje hru - + %1 is playing %2 %1 hraje %2 + + + Play Time: %1 + + + + + Never Played + + + + + 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é + QtAmiiboSettingsDialog @@ -8593,250 +9195,250 @@ p, li { white-space: pre-wrap; } 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. @@ -8844,22 +9446,22 @@ Only do this if you're 100% sure you want to delete this data. QtCommon::FS - + Linked Save Data - + Save data has been linked. - + Failed to link save data - + Could not link directory: %1 To: @@ -8867,268 +9469,357 @@ To: - + 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. @@ -9136,83 +9827,83 @@ To: 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. Versions 19.0.1 or earlier are recommended, as 20.0.0+ is currently experimental. + + Firmware missing. Firmware is required to run certain games and use the Home Menu. @@ -9233,56 +9924,56 @@ 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. @@ -9323,7 +10014,7 @@ This is recommended if you want to share data between emulators. - + Pro Controller Pro Controller @@ -9336,7 +10027,7 @@ This is recommended if you want to share data between emulators. - + Dual Joycons Oba Joycony @@ -9349,7 +10040,7 @@ This is recommended if you want to share data between emulators. - + Left Joycon Levý Joycon @@ -9362,7 +10053,7 @@ This is recommended if you want to share data between emulators. - + Right Joycon Pravý Joycon @@ -9391,7 +10082,7 @@ This is recommended if you want to share data between emulators. - + Handheld Handheld @@ -9512,32 +10203,32 @@ This is recommended if you want to share data between emulators. - + GameCube Controller Ovladač GameCube - + Poke Ball Plus - + NES Controller - + SNES Controller - + N64 Controller - + Sega Genesis @@ -9692,13 +10383,13 @@ 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 @@ -9733,12 +10424,12 @@ By selecting "From Eden", previous save data stored in Ryujinx will be - + Failed to link save data - + OS returned error: %1 @@ -9774,45 +10465,9 @@ By selecting "From Eden", previous save data stored in Ryujinx will be - + Total play time reached maximum. - - fs - - - 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 - - - - \ No newline at end of file + diff --git a/dist/languages/da.ts b/dist/languages/da.ts index e6ed11e201..939c641541 100644 --- a/dist/languages/da.ts +++ b/dist/languages/da.ts @@ -30,7 +30,7 @@ li.checked::marker { content: "\2612"; } - <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/kXAmGCXBGD"><span style=" text-decoration: underline; color:#039be5;">Discord</span></a> | <a href="https://rvlt.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;">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;">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> @@ -368,390 +368,399 @@ Dette vil bandlyse både vedkommendes forum-brugernavn og IP-adresse.% - + 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 - - Output Engine: - Udgangsmotor: + + Enable Overlay Applet + - - Output Device: + + Enables Horizon's built-in overlay applet. Press and hold the home button for 1 second to show it. - Input Device: - + Output Engine: + Udgangsmotor: - Mute audio + 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 maximum of 4. This is mainly a debug option and shouldn't be disabled. - + Memory Layout - - Increases the amount of emulated RAM from 4GB of the board to the devkit 8/6GB. + + 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. 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. - - Synchronize Core Speed + + 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.). Can help reduce stuttering at lower framerates. - + Accuracy: Nøjagtighed - + 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. - - Virtual Table Bouncing - - - - - Bounces (by emulating a 0-valued return) any functions that triggers a prefetch abort - - - - + 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 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: - + Changes the output graphics API. Vulkan is recommended. - + Device: Enhed: - + This setting selects the GPU to use (Vulkan only). - - Shader Backend: - Shader-Bagende: - - - - The shader backend to use with OpenGL. -GLSL is recommended. - - - - + Resolution: Opløsning: - + 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 using FSR's dynamic contrast. - + Anti-Aliasing Method: Anti-Aliaseringsmetode: - + The anti-aliasing method to use. SMAA offers the best quality. 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 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 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 - + Runs an additional optimization pass over generated SPIRV shaders. Will increase time required for shader compilation. May slightly improve performance. @@ -759,35 +768,24 @@ 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. GPU: Use the GPU's compute shaders to decode ASTC textures (recommended). @@ -796,45 +794,55 @@ stuttering but may present artifacts. - + ASTC Recompression Method: - + 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. 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 allows tearing as it recovers from a slow down. Mailbox can have lower latency than FIFO and does not tear but may drop frames. @@ -842,1175 +850,1379 @@ Immediate (no synchronization) presents whatever is available and can exhibit te - + 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. Safe to set at 16x on most GPUs. - - GPU Accuracy: + + GPU Mode: - - Controls the 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 as a last resort. + + 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. - + DMA Accuracy: - + Controls the DMA precision accuracy. Safe precision fixes issues in some games but may degrade performance. - - Enable asynchronous shader compilation (Hack) + + Enable asynchronous shader compilation - + May reduce shader stutter. - - Fast GPU Time (Hack) + + 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) - + 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 numbers allow for more features and can increase performance, but may cause issues. -The default value is per-system. +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 some games. -Only Vulkan 1.0+ devices support this extension. + + Enables vertex input dynamic state feature for better quality and performance. - - Descriptor Indexing - - - - - Improves texture & buffer handling and the Maxwell translation layer. -Some Vulkan 1.1+ and all 1.2+ devices support this extension. - - - - + 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. - + Device Name - + The name of the console. - + Custom RTC Date: - + 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: - + This option can be overridden when region setting is auto-select - + Region: Region - + The region of the console. - + Time Zone: Tidszone - + The time zone of the console. - + Sound Output Mode: - + Console 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. - + + Unit Serial + + + + + Battery Serial + + + + + Debug knobs + + + + 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 - + 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 - + Hides the mouse after 2.5s of inactivity. - + Disable controller applet - + 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 - - - - - - Default - Standard - - - - Unsafe (fast) - - - - - Safe (stable) - - - - + + 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 - + + + 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) - - Serbian (српски) + + 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) - + Docked Dokket - + Handheld Håndholdt - + + + 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 + + ConfigureApplets @@ -2082,7 +2294,7 @@ When a program attempts to open the controller applet, it is immediately closed. Gendan Standarder - + Auto Automatisk @@ -2530,46 +2742,86 @@ When a program attempts to open the controller applet, it is immediately closed. + Use dev.keys + + + + Enable Debug Asserts Aktivér Fejlfindingshævdelser - + Debugging Fejlfinding - + + 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. Aktivér dette, for at udgyde den senest genererede lyd-kommandoliste til konsollen. Påvirker kun spil, som gør brug af lyd-renderingen. - + 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 - + Censor username in logs - + **This will be reset automatically when Eden closes. @@ -2630,13 +2882,13 @@ When a program attempts to open the controller applet, it is immediately closed. - + Audio Lyd - + CPU CPU @@ -2652,13 +2904,13 @@ When a program attempts to open the controller applet, it is immediately closed. - + General Generelt - + Graphics Grafik @@ -2669,7 +2921,7 @@ When a program attempts to open the controller applet, it is immediately closed. - GraphicsExtensions + GraphicsExtra @@ -2679,7 +2931,7 @@ When a program attempts to open the controller applet, it is immediately closed. - + Controls Styring @@ -2695,7 +2947,7 @@ When a program attempts to open the controller applet, it is immediately closed. - + System System @@ -2735,9 +2987,10 @@ When a program attempts to open the controller applet, it is immediately closed. - - - + + + + ... ... @@ -2747,90 +3000,184 @@ When a program 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... + + + Save Data Directory + + + + + Choose an action for the save data directory: + + + + + 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? + + ConfigureGeneral @@ -2847,24 +3194,54 @@ When a program 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 - + 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 @@ -2894,33 +3271,33 @@ When a program attempts to open the controller applet, it is immediately closed. Baggrundsfarve: - + % FSR sharpening percentage (e.g. 50%) % - + Off - + VSync Off - + Recommended - + On - + VSync On @@ -2938,7 +3315,7 @@ When a program attempts to open the controller applet, it is immediately closed. Avanceret - + Advanced Graphics Settings Avancerede Grafikindstillinger @@ -2952,16 +3329,26 @@ When a program attempts to open the controller applet, it is immediately closed. - Extensions + Extras - - Vulkan Extensions Settings + + Hacks - + + Changing these options from their default may cause issues. Novitii cavete! + + + + + Vulkan Extensions + + + + % Sample Shading percentage (e.g. 50%) @@ -3539,7 +3926,7 @@ When a program attempts to open the controller applet, it is immediately closed. - + Left Stick Venstre Styrepind @@ -3649,14 +4036,14 @@ When a program attempts to open the controller applet, it is immediately closed. - + ZL ZL - + L L @@ -3669,22 +4056,22 @@ When a program attempts to open the controller applet, it is immediately closed. - + Plus Plus - + ZR ZR - - + + R R @@ -3741,7 +4128,7 @@ When a program attempts to open the controller applet, it is immediately closed. - + Right Stick Højre Styrepind @@ -3910,88 +4297,88 @@ Bevæg, for at omvende akserne, først din styrepind lodret og så vandret. - + 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 @@ -4014,15 +4401,6 @@ Bevæg, for at omvende akserne, først din styrepind lodret og så vandret.Standarder - - ConfigureLinuxTab - - - - Linux - - - ConfigureMotionTouch @@ -4048,7 +4426,7 @@ Bevæg, for at omvende akserne, først din styrepind lodret og så vandret. - + Configure Konfigurér @@ -4078,103 +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://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> - - - - + %1:%2 %1:%2 + + - - - - - + + + Eden - + Port number has invalid characters Portnummer indeholder ugyldige tegn - + 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. @@ -4304,11 +4672,6 @@ Current values are %1% and %2% respectively. Enable Airplane Mode - - - None - Ingen - ConfigurePerGame @@ -4363,52 +4726,57 @@ Current values are %1% and %2% respectively. - + Add-Ons Tilføjelser - + System System - + CPU CPU - + Graphics Grafik - + Adv. Graphics - - GPU Extensions + + Ext. Graphics - + Audio Lyd - + Input Profiles - - Linux + + Network - + + Applets + + + + Properties Egenskaber @@ -4426,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 @@ -4463,38 +4926,18 @@ Current values are %1% and %2% respectively. Username Brugernavn - - - Set Image - Angiv Billede - - Select Avatar - - - - 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)) @@ -4502,169 +4945,80 @@ 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: - - - + 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 saving user image - + Unable to save image to file - - Select User Image - Vælg Brugerbillede - - - - Image Formats (*.jpg *.jpeg *.png *.bmp) + + &Edit - - No firmware available + + &Delete - - 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. - - - - - ConfigureProfileManagerAvatarDialog - - - Select - - - - - Cancel - - - - - Background Color - - - - - Select Firmware Avatar + + 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 @@ -4831,7 +5185,7 @@ 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> @@ -4865,17 +5219,22 @@ UUID: %2 Sæt eksekvering på pause under indlæsninger - + + Show recording dialog + + + + Script Directory Skriftmappe - + Path Sti - + ... ... @@ -4888,7 +5247,7 @@ UUID: %2 TAS-Konfiguration - + Select TAS Load Directory... Vælg TAS-Indlæsningsmappe... @@ -5026,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 @@ -5152,71 +5490,66 @@ Træk punkter, for at skifte position, eller dobbeltklik i tabelceller, for at r - 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 @@ -5350,20 +5683,20 @@ Træk punkter, for at skifte position, eller dobbeltklik i tabelceller, for at r Vis Aktuelt Spil i din Discord-Status - - + + All Good Tooltip - + Must be between 4-20 characters Tooltip - + Must be 48 characters, and lowercase a-z Tooltip @@ -5395,27 +5728,27 @@ Træk punkter, for at skifte position, eller dobbeltklik i tabelceller, for at r - + Shaders - + UserNAND - + SysNAND - + Mods - + Saves @@ -5453,7 +5786,7 @@ Træk punkter, for at skifte position, eller dobbeltklik i tabelceller, for at r - + Calculating... @@ -5476,12 +5809,12 @@ Træk punkter, for at skifte position, eller dobbeltklik i tabelceller, for at r - + Dependency - + Version @@ -5655,44 +5988,44 @@ Please go to Configure -> System -> Network and make a selection. GRenderWindow - - + + OpenGL not available! - + OpenGL shared contexts are not supported. - + 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 @@ -5700,203 +6033,208 @@ Please go to Configure -> System -> Network and make a selection. 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 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 - + 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 @@ -5904,62 +6242,62 @@ Please go to Configure -> System -> Network and make a selection. 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. @@ -5967,7 +6305,7 @@ Please go to Configure -> System -> Network and make a selection. GameListPlaceholder - + Double-click to add a new folder to the game list @@ -5975,17 +6313,17 @@ Please go to Configure -> System -> Network and make a selection. GameListSearchField - + %1 of %n result(s) - + Filter: Filter: - + Enter pattern to filter @@ -6061,12 +6399,12 @@ Please go to Configure -> System -> Network and make a selection. 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. Debug Message: @@ -6075,189 +6413,207 @@ 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 - + Configure Current Game - + Continue/Pause Emulation - + Exit Fullscreen - + 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 @@ -6309,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 @@ -6373,42 +6729,42 @@ Debug Message: - + Password Required to Join - + Password: - + Players Spillere - + Room Name - + Preferred Game - + Host - + Refreshing - + Refresh List @@ -6457,1171 +6813,1153 @@ Debug Message: + &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 - + Am&iibo - - &Applets + + 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 - + 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 - + &Capture Screenshot - - - Open &Album - - - - - &Set Nickname and Owner - - - - - &Delete Game Data - - - &Restore Amiibo + &Album - &Format Amiibo + &Set Nickname and Owner - Open &Mii Editor + &Delete Game Data + &Restore Amiibo + + + + + &Format Amiibo + + + + + &Mii Editor + + + + &Configure TAS... - + Configure C&urrent Game... - - + + &Start - + &Reset - - + + R&ecord - + Open &Controller Menu - + Install Decryption &Keys - - Open &Home Menu + + &Home Menu - - Open &Setup - - - - + &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.<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>. + + 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><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. + + 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/Revolt for help. + + %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 - - Please install firmware to use the Album applet. - - - - - Album Applet - - - - - Album applet is not available. Please reinstall firmware. - - - - - Please install firmware to use the Cabinet applet. - - - - - Cabinet Applet - - - - - Cabinet applet is not available. Please reinstall firmware. - - - - - Please install firmware to use the Mii editor. - - - - - Mii Edit Applet - - - - - Mii editor is not available. Please reinstall firmware. - - - - - Please install firmware to use the Controller Menu. - - - - - Controller Applet - - - - - Controller Menu is not available. Please reinstall firmware. - - - - + Firmware Corrupted - - Home Menu Applet + + Unknown applet - - Home Menu is not available. Please reinstall firmware. + + Applet doesn't map to a known value. - - Please install firmware to use Starter. + + Record not found - - Starter Applet + + Applet not found. Please reinstall firmware. - - Starter is not available. Please reinstall firmware. - - - - + Capture Screenshot - + PNG Image (*.png) - + Update Available - - Download the %1 update? - - - - - TAS state: Running %1/%2 - - - - - TAS state: Recording %1 - - - - - TAS state: Idle %1/%2 - - - - - TAS State: Invalid - - - - - &Stop Running + + 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 - - %1 %2 - - - - + FSR - + NO AA - + VOLUME: MUTE - + VOLUME: %1% Volume percentage (e.g. 50%) - + Derivation Components Missing - - Encryption keys are 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. @@ -7629,69 +7967,79 @@ 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? - - - None - - FXAA @@ -7718,27 +8066,27 @@ Would you like to bypass this and exit anyway? - + Zero-Tangent - + B-Spline - + Mitchell - + Spline-1 - + Gaussian @@ -7774,17 +8122,17 @@ Would you like to bypass this and exit anyway? - Normal + Fast - High + Balanced - Extreme + Accurate @@ -7793,41 +8141,36 @@ Would you like to bypass this and exit anyway? - - OpenGL + + OpenGL GLSL - - Null + + OpenGL SPIRV - GLSL + OpenGL GLASM - GLASM - - - - - SPIRV + Null MigrationWorker - + 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. @@ -7838,7 +8181,7 @@ If this is not desirable, delete the following files: - + 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: @@ -7846,11 +8189,24 @@ If you wish to clean up the files which were left in the old data location, you - + Data was migrated successfully. + + ModSelectDialog + + + Dialog + + + + + The specified folder or archive contains the following mods. Select which ones to install. + + + ModerationDialog @@ -7973,6 +8329,135 @@ Proceed anyway? + + 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 + + + OverlayDialog @@ -8002,50 +8487,122 @@ p, li { white-space: pre-wrap; } + + 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 - Installerede SD-Titler - - - - Installed NAND Titles - Installerede NAND-Titler - - - - System Titles - Systemtitler - - - - Add New Game Directory - Tilføj Ny Spilmappe - - - - Favorites - - - - - - + + + Migration - + Clear Shader Cache @@ -8078,18 +8635,18 @@ p, li { white-space: pre-wrap; } - + You can manually re-trigger this prompt by deleting the new config directory: %1 - + Migrating - + Migrating, this may take a while... @@ -8471,15 +9028,60 @@ p, li { white-space: pre-wrap; } - + %1 is not playing a game - + %1 is playing %2 + + + Play Time: %1 + + + + + Never Played + + + + + 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 + + QtAmiiboSettingsDialog @@ -8597,250 +9199,250 @@ p, li { white-space: pre-wrap; } 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. @@ -8848,22 +9450,22 @@ Only do this if you're 100% sure you want to delete this data. QtCommon::FS - + Linked Save Data - + Save data has been linked. - + Failed to link save data - + Could not link directory: %1 To: @@ -8871,268 +9473,357 @@ To: - + 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. @@ -9140,83 +9831,83 @@ To: 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. Versions 19.0.1 or earlier are recommended, as 20.0.0+ is currently experimental. + + Firmware missing. Firmware is required to run certain games and use the Home Menu. @@ -9237,56 +9928,56 @@ 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. @@ -9327,7 +10018,7 @@ This is recommended if you want to share data between emulators. - + Pro Controller Pro-Styringsenhed @@ -9340,7 +10031,7 @@ This is recommended if you want to share data between emulators. - + Dual Joycons Dobbelt-Joycon @@ -9353,7 +10044,7 @@ This is recommended if you want to share data between emulators. - + Left Joycon Venstre Joycon @@ -9366,7 +10057,7 @@ This is recommended if you want to share data between emulators. - + Right Joycon Højre Joycon @@ -9395,7 +10086,7 @@ This is recommended if you want to share data between emulators. - + Handheld Håndholdt @@ -9516,32 +10207,32 @@ This is recommended if you want to share data between emulators. - + GameCube Controller GameCube-Styringsenhed - + Poke Ball Plus - + NES Controller - + SNES Controller - + N64 Controller - + Sega Genesis @@ -9686,13 +10377,13 @@ p, li { white-space: pre-wrap; } - - + + OK OK - + Cancel Afbryd @@ -9727,12 +10418,12 @@ By selecting "From Eden", previous save data stored in Ryujinx will be - + Failed to link save data - + OS returned error: %1 @@ -9768,45 +10459,9 @@ By selecting "From Eden", previous save data stored in Ryujinx will be - + Total play time reached maximum. - - fs - - - 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 - - - - \ No newline at end of file + diff --git a/dist/languages/de.ts b/dist/languages/de.ts index e2081488db..bed5d5e94d 100644 --- a/dist/languages/de.ts +++ b/dist/languages/de.ts @@ -30,7 +30,7 @@ li.checked::marker { content: "\2612"; } - <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/kXAmGCXBGD"><span style=" text-decoration: underline; color:#039be5;">Discord</span></a> | <a href="https://rvlt.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;">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;">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> @@ -367,391 +367,404 @@ Dies würde deren Forum-Benutzernamen und deren IP-Adresse sperren.% - + 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 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 4GB of the board to the devkit 8/6GB. + + 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. 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. - - Synchronize Core Speed - + + 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.). Can help reduce stuttering at lower framerates. - + Accuracy: Genauigkeit der Emulation: - + 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. - - Virtual Table Bouncing - - - - - Bounces (by emulating a 0-valued return) any functions that triggers a prefetch abort - - - - + 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 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: - + Changes the output graphics API. Vulkan is recommended. - + Device: Gerät: - + 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 with OpenGL. -GLSL is recommended. - - - - + Resolution: Auflösung: - + 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 using FSR's dynamic contrast. - + Anti-Aliasing Method: Kantenglättungs-Methode: - + The anti-aliasing method to use. SMAA offers the best quality. 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 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 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 - + Optimiere SPIRV-Ausgabe - + Runs an additional optimization pass over generated SPIRV shaders. Will increase time required for shader compilation. May slightly improve performance. @@ -759,35 +772,24 @@ 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. GPU: Use the GPU's compute shaders to decode ASTC textures (recommended). @@ -796,45 +798,55 @@ stuttering but may present artifacts. - + ASTC Recompression Method: ASTC-Rekompression-Methode: - + 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. - - VRAM Usage Mode: + + 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. 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 allows tearing as it recovers from a slow down. Mailbox can have lower latency than FIFO and does not tear but may drop frames. @@ -842,1175 +854,1384 @@ Immediate (no synchronization) presents whatever is available and can exhibit te - + 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. Safe to set at 16x on most GPUs. - - GPU Accuracy: - + + GPU Mode: + GPU-Modus: - - Controls the 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 as a last resort. - + + 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. - + DMA Accuracy: - + DMA-Genauigkeit: - + Controls the DMA precision accuracy. Safe precision fixes issues in some games but may degrade performance. - - Enable asynchronous shader compilation (Hack) - + + Enable asynchronous shader compilation + Aktiviere asynchrones Shader-Kompilieren - + May reduce shader stutter. - + Reduziert vielleicht Shader stottern. - - Fast GPU Time (Hack) - + + Fast GPU Time + Schnelle GPU-Zeit - + 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 + 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) - + 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. - + 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 numbers allow for more features and can increase performance, but may cause issues. -The default value is per-system. +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 some games. -Only Vulkan 1.0+ devices support this extension. + + Enables vertex input dynamic state feature for better quality and performance. - - Descriptor Indexing - - - - - Improves texture & buffer handling and the Maxwell translation layer. -Some Vulkan 1.1+ and all 1.2+ devices support this extension. - - - - + 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. - + Device Name Gerätename - + The name of the console. - + Der Name der Konsole. - + Custom RTC Date: - + Benutzerdefinierte Echtzeituhrdatum: - + 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: - + 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 console. - + Die Region der Konsole. - + Time Zone: Zeitzone: - + The time zone of the console. - + Die Zeitzone der Konsole. - + Sound Output Mode: Tonausgangsmodus: - + Console Mode: Konsolenmodus: - + 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. - + + Unit Serial + + + + + Battery Serial + + + + + Debug knobs + + + + Prompt for user profile on boot - + Beim Start nach Nutzer fragen - + Useful if multiple people use the same PC. - + Nützlich falls mehrere Personen den gleichen Computer benutzen. - + Pause when not in focus - + Pausiere falls nicht im Fokus - + Pauses emulation when focusing on other windows. - + Pausiere Emulation falls andere Fenster im Fokus/Vordergrund sind. - + Confirm before stopping emulation Vor dem Stoppen der Emulation bestätigen - + Overrides prompts asking to confirm stopping the emulation. Enabling it bypasses such prompts and directly exits the emulation. - + Hide mouse on inactivity Mauszeiger verstecken - + 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 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 - - - - - Default - Standard - - - - Unsafe (fast) - - - - - Safe (stable) - - - - + + 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 - + + + 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) - - Serbian (српски) + + 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) - + 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 - - Low (128) - - - - + + 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 - - High (512) + + ExtendedDynamicState 2 + + + ExtendedDynamicState 3 + + + + + Tree View + Baum Ansicht + + + + Grid View + Raster Ansicht + ConfigureApplets @@ -2022,7 +2243,7 @@ When a program attempts to open the controller applet, it is immediately closed. Applets - + Applets @@ -2082,7 +2303,7 @@ When a program attempts to open the controller applet, it is immediately closed. Standardwerte wiederherstellen - + Auto Auto @@ -2531,46 +2752,86 @@ When a program attempts to open the controller applet, it is immediately closed. + Use dev.keys + + + + Enable Debug Asserts aktiviere Debug-Meldungen - + Debugging Debugging - + + 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. Aktivieren Sie diese Option, um den zuletzt generierten Audio-Log auf der Konsole auszugeben. Betrifft nur Spiele, die den Audio-Renderer verwenden. - + 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** - + Censor username in logs - + **This will be reset automatically when Eden closes. @@ -2617,7 +2878,7 @@ When a program attempts to open the controller applet, it is immediately closed. Eden Configuration - + Eden Konfiguration @@ -2627,17 +2888,17 @@ When a program attempts to open the controller applet, it is immediately closed. Applets - + Applets - + Audio Audio - + CPU CPU @@ -2653,13 +2914,13 @@ When a program attempts to open the controller applet, it is immediately closed. - + General Allgemein - + Graphics Grafik @@ -2670,8 +2931,8 @@ When a program attempts to open the controller applet, it is immediately closed. - GraphicsExtensions - + GraphicsExtra + GrafikExtras @@ -2680,7 +2941,7 @@ When a program attempts to open the controller applet, it is immediately closed. - + Controls Steuerung @@ -2696,7 +2957,7 @@ When a program attempts to open the controller applet, it is immediately closed. - + System System @@ -2736,9 +2997,10 @@ When a program attempts to open the controller applet, it is immediately closed. - - - + + + + ... ... @@ -2748,90 +3010,185 @@ When a program 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... + + + Save Data Directory + Speicherdatenverzeichnis + + + + Choose an action for the save data directory: + + + + + 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? + + ConfigureGeneral @@ -2848,24 +3205,54 @@ When a program 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 - + 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 @@ -2895,33 +3282,33 @@ When a program 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 @@ -2939,7 +3326,7 @@ When a program attempts to open the controller applet, it is immediately closed. Erweitert - + Advanced Graphics Settings Erweiterte Grafik-Einstellungen @@ -2949,23 +3336,33 @@ When a program attempts to open the controller applet, it is immediately closed. Form - + Form - Extensions + Extras + Extras + + + + Hacks + Hacks + + + + Changing these options from their default may cause issues. Novitii cavete! - - Vulkan Extensions Settings - + + Vulkan Extensions + Vulkan Erweiterungen - + % Sample Shading percentage (e.g. 50%) - + % @@ -3390,7 +3787,7 @@ When a program attempts to open the controller applet, it is immediately closed. Requires restarting Eden - + Erfordert einen Neustart Edens @@ -3540,7 +3937,7 @@ When a program attempts to open the controller applet, it is immediately closed. - + Left Stick Linker Analogstick @@ -3650,14 +4047,14 @@ When a program attempts to open the controller applet, it is immediately closed. - + ZL ZL - + L L @@ -3670,22 +4067,22 @@ When a program attempts to open the controller applet, it is immediately closed. - + Plus Plus - + ZR ZR - - + + R R @@ -3742,7 +4139,7 @@ When a program attempts to open the controller applet, it is immediately closed. - + Right Stick Rechter Analogstick @@ -3911,88 +4308,88 @@ Um die Achsen umzukehren, bewege den Joystick zuerst vertikal und dann horizonta 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 @@ -4015,15 +4412,6 @@ Um die Achsen umzukehren, bewege den Joystick zuerst vertikal und dann horizonta Standardwerte - - ConfigureLinuxTab - - - - Linux - Linux - - ConfigureMotionTouch @@ -4049,7 +4437,7 @@ Um die Achsen umzukehren, bewege den Joystick zuerst vertikal und dann horizonta - + Configure Einrichtung @@ -4079,103 +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://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> - - - - + %1:%2 %1:%2 + + - - - - - + + + Eden - + Port number has invalid characters Port-Nummer hat ungültige Zeichen - + 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. @@ -4304,12 +4682,7 @@ Aktuell liegen die Werte bei %1% bzw. %2%. Enable Airplane Mode - - - - - None - Keiner + Aktiviere Flugmodus @@ -4365,52 +4738,57 @@ 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 + + + + Properties Einstellungen @@ -4428,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 @@ -4465,38 +4940,18 @@ Aktuell liegen die Werte bei %1% bzw. %2%. Username Nutzername - - - Set Image - Bild wählen - - Select Avatar - - - - 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)) @@ -4504,169 +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: - - - + 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 saving user image - + Fehler beim Speichern des Profilbildes - + Unable to save image to file - + Speichern des Bildes als Datei fehlgeschlagen - - Select User Image - Profilbild wählen + + &Edit + &Bearbeiten - - Image Formats (*.jpg *.jpeg *.png *.bmp) - + + &Delete + &Löschen - - 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. - - - - - ConfigureProfileManagerAvatarDialog - - - Select - - - - - Cancel - - - - - Background Color - - - - - Select Firmware Avatar - + + 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 @@ -4834,7 +5200,7 @@ 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> @@ -4868,17 +5234,22 @@ UUID: %2 Pausiere Ausführung während des Ladens - + + Show recording dialog + + + + Script Directory Skript-Verzeichnis - + Path Pfad - + ... ... @@ -4891,7 +5262,7 @@ UUID: %2 TAS-Konfiguration - + Select TAS Load Directory... TAS-Lade-Verzeichnis auswählen... @@ -5029,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 @@ -5155,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) @@ -5335,7 +5680,7 @@ Ziehe die Punkte mit deiner Maus, um ihre Position zu ändern. Doppelklicke auf Generate - + Generieren @@ -5353,23 +5698,23 @@ Ziehe die Punkte mit deiner Maus, um ihre Position zu ändern. Doppelklicke auf Zeig dein momentanes Spiel in deinem Discord-Status - - + + All Good Tooltip - + Alles gut - + Must be between 4-20 characters Tooltip - + Muss 4-20 Zeichen lang sein - + Must be 48 characters, and lowercase a-z Tooltip - + Muss 48 Zeichen lang sein und nur Kleinbuchstaben a-z enthalten @@ -5390,37 +5735,37 @@ Ziehe die Punkte mit deiner Maus, um ihre Position zu ändern. Doppelklicke auf Data Manager - + Datenmanager Deleting ANY data is IRREVERSABLE! - + Das Löschen JEGLICHER Daten ist UNUMKEHRBAR! - + Shaders - + UserNAND - + SysNAND - + Mods - + Mods - + Saves - + Speicherstände @@ -5428,7 +5773,7 @@ Ziehe die Punkte mit deiner Maus, um ihre Position zu ändern. Doppelklicke auf Form - + Form @@ -5438,7 +5783,7 @@ Ziehe die Punkte mit deiner Maus, um ihre Position zu ändern. Doppelklicke auf Open with your system file manager - + Mit deinem System eigenen Dateimanager öffnen @@ -5456,9 +5801,9 @@ Ziehe die Punkte mit deiner Maus, um ihre Position zu ändern. Doppelklicke auf - + Calculating... - + Berechnen... @@ -5466,27 +5811,27 @@ Ziehe die Punkte mit deiner Maus, um ihre Position zu ändern. Doppelklicke auf 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 @@ -5550,17 +5895,17 @@ 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. Room name is not valid. Must be 4 to 20 alphanumeric characters. - + 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. @@ -5570,7 +5915,7 @@ Ziehe die Punkte mit deiner Maus, um ihre Position zu ändern. Doppelklicke auf Port must be a number between 0 to 65535. - + Port muss eine Zahl zwischen 0 und 65535 sein. @@ -5580,7 +5925,7 @@ Ziehe die Punkte mit deiner Maus, um ihre Position zu ändern. Doppelklicke auf Unable to find an internet connection. Check your internet settings. - + Es konnte keine Internetverbindung hergestellt werden. Überprüfe deine Netzwerkeinstellungen. @@ -5590,12 +5935,12 @@ Ziehe die Punkte mit deiner Maus, um ihre Position zu ändern. Doppelklicke auf 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 Eden might be necessary. - + Erstellen eines Raumes ist fehlgeschlagen. Bitte versuche es erneut. Eden neuzustarten ist vielleicht nötig. @@ -5610,12 +5955,12 @@ Ziehe die Punkte mit deiner Maus, um ihre Position zu ändern. Doppelklicke auf 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. @@ -5630,12 +5975,12 @@ Ziehe die Punkte mit deiner Maus, um ihre Position zu ändern. Doppelklicke auf IP address is already in use. Please choose another. - + 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 auszuführen. @@ -5652,50 +5997,50 @@ Please go to Configure -> System -> Network and make a selection. Error - + Fehler GRenderWindow - - + + OpenGL not available! OpenGL nicht verfügbar! - + OpenGL shared contexts are not supported. Gemeinsame OpenGL-Kontexte werden nicht unterstützt. - + 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 @@ -5703,203 +6048,208 @@ Please go to Configure -> System -> Network and make a selection. 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 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 - + 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 @@ -5907,62 +6257,62 @@ Please go to Configure -> System -> Network and make a selection. 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. @@ -5970,7 +6320,7 @@ Please go to Configure -> System -> Network and make a selection. GameListPlaceholder - + Double-click to add a new folder to the game list Doppelklicke, um einen neuen Ordner zur Spieleliste hinzuzufügen. @@ -5978,17 +6328,17 @@ Please go to Configure -> System -> Network and make a selection. GameListSearchField - + %1 of %n result(s) %1 von %n Ergebnis%1 von %n Ergebnisse(n) - + Filter: Filter: - + Enter pattern to filter Wörter zum Filtern eingeben @@ -6064,12 +6414,12 @@ Please go to Configure -> System -> Network and make a selection. 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. Debug Message: @@ -6078,189 +6428,207 @@ Debug Message: 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 Eden - + Verlasse 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 @@ -6312,22 +6680,22 @@ Debug Message: 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 @@ -6376,42 +6744,42 @@ Debug Message: 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 @@ -6436,7 +6804,7 @@ Debug Message: Open &Eden Folders - + Öffnen &Eden-Ordner @@ -6460,1171 +6828,1153 @@ Debug Message: + &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 - + Am&iibo - - &Applets + + 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 - + &Über Eden - + Single &Window Mode &Einzelfenster-Modus - + Con&figure... Kon&figurieren - + Ctrl+, + Strg+ + + + + Enable Overlay Display Applet - - Display D&ock Widget Headers - D&ock-Widget-Header anzeigen - - - + 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 - + &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 Decryption &Keys - - Open &Home Menu + + &Home Menu - - Open &Setup - - - - + &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. - - 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 - + 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><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. + + 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/Revolt for help. + + %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 - - Please install firmware to use the Album applet. - - - - - Album Applet - - - - - Album applet is not available. Please reinstall firmware. - - - - - Please install firmware to use the Cabinet applet. - - - - - Cabinet Applet - - - - - Cabinet applet is not available. Please reinstall firmware. - - - - - Please install firmware to use the Mii editor. - - - - - Mii Edit Applet - - - - - Mii editor is not available. Please reinstall firmware. - - - - - Please install firmware to use the Controller Menu. - - - - - Controller Applet - - - - - Controller Menu is not available. Please reinstall firmware. - - - - + Firmware Corrupted - - Home Menu Applet + + Unknown applet - - Home Menu is not available. Please reinstall firmware. + + Applet doesn't map to a known value. - - Please install firmware to use Starter. + + Record not found - - Starter Applet + + Applet not found. Please reinstall firmware. - - Starter is not available. Please reinstall firmware. - - - - + Capture Screenshot - + PNG Image (*.png) - + Update Available - - Download the %1 update? - - - - - TAS state: Running %1/%2 - - - - - TAS state: Recording %1 - - - - - TAS state: Idle %1/%2 - - - - - TAS State: Invalid - - - - - &Stop Running + + 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 - - %1 %2 - - - - + FSR - + NO AA - + VOLUME: MUTE - + VOLUME: %1% Volume percentage (e.g. 50%) - + Derivation Components Missing - - Encryption keys are 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. @@ -7632,69 +7982,79 @@ 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? - - - None - - FXAA @@ -7721,27 +8081,27 @@ Would you like to bypass this and exit anyway? - + Zero-Tangent - + B-Spline - + Mitchell - + Spline-1 - + Gaussian @@ -7777,17 +8137,17 @@ Would you like to bypass this and exit anyway? - Normal + Fast - High + Balanced - Extreme + Accurate @@ -7796,41 +8156,36 @@ Would you like to bypass this and exit anyway? - - OpenGL + + OpenGL GLSL - - Null + + OpenGL SPIRV - GLSL + OpenGL GLASM - GLASM - - - - - SPIRV + Null MigrationWorker - + 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. @@ -7841,7 +8196,7 @@ If this is not desirable, delete the following files: - + 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: @@ -7849,11 +8204,24 @@ If you wish to clean up the files which were left in the old data location, you - + Data was migrated successfully. + + ModSelectDialog + + + Dialog + + + + + The specified folder or archive contains the following mods. Select which ones to install. + + + ModerationDialog @@ -7977,6 +8345,135 @@ Proceed anyway? Du bist dabei den Raum zu verlassen. Jede Verbindung zum Netzwerk wird geschlossen. + + 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 + + + OverlayDialog @@ -8010,50 +8507,122 @@ 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 - - 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 - - - - - + + + Migration - + Clear Shader Cache @@ -8086,18 +8655,18 @@ p, li { white-space: pre-wrap; } - + You can manually re-trigger this prompt by deleting the new config directory: %1 - + Migrating - + Migrating, this may take a while... @@ -8479,15 +9048,60 @@ p, li { white-space: pre-wrap; } Spielt kein Spiel - + %1 is not playing a game %1 spielt kein Spiel - + %1 is playing %2 %1 spielt %2 + + + Play Time: %1 + + + + + Never Played + + + + + 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 + QtAmiiboSettingsDialog @@ -8605,250 +9219,250 @@ p, li { white-space: pre-wrap; } 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. @@ -8856,22 +9470,22 @@ Only do this if you're 100% sure you want to delete this data. QtCommon::FS - + Linked Save Data - + Save data has been linked. - + Failed to link save data - + Could not link directory: %1 To: @@ -8879,268 +9493,357 @@ To: - + 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. @@ -9148,83 +9851,83 @@ To: 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. Versions 19.0.1 or earlier are recommended, as 20.0.0+ is currently experimental. + + Firmware missing. Firmware is required to run certain games and use the Home Menu. @@ -9245,56 +9948,56 @@ 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. @@ -9335,7 +10038,7 @@ This is recommended if you want to share data between emulators. - + Pro Controller Pro-Controller @@ -9348,7 +10051,7 @@ This is recommended if you want to share data between emulators. - + Dual Joycons Zwei Joycons @@ -9361,7 +10064,7 @@ This is recommended if you want to share data between emulators. - + Left Joycon Linker Joycon @@ -9374,7 +10077,7 @@ This is recommended if you want to share data between emulators. - + Right Joycon Rechter Joycon @@ -9403,7 +10106,7 @@ This is recommended if you want to share data between emulators. - + Handheld Handheld @@ -9524,32 +10227,32 @@ This is recommended if you want to share data between emulators. 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 @@ -9704,13 +10407,13 @@ 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 @@ -9742,15 +10445,15 @@ By selecting "From Eden", previous save data stored in Ryujinx will be Cancel - + Abbrechen - + Failed to link save data - + OS returned error: %1 @@ -9773,58 +10476,22 @@ By selecting "From Eden", previous save data stored in Ryujinx will be Hours: - + Stunden: Minutes: - + Minuten: Seconds: - + Sekunden: - + Total play time reached maximum. - - fs - - - 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 - - - - \ No newline at end of file + diff --git a/dist/languages/el.ts b/dist/languages/el.ts index 0a5d627dd5..9742495ac4 100644 --- a/dist/languages/el.ts +++ b/dist/languages/el.ts @@ -30,7 +30,7 @@ li.checked::marker { content: "\2612"; } - <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/kXAmGCXBGD"><span style=" text-decoration: underline; color:#039be5;">Discord</span></a> | <a href="https://rvlt.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;">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;">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> @@ -368,390 +368,399 @@ This would ban both their forum username and their IP address. % - + 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 - - Output Engine: - Μηχανή εξόδου: + + Enable Overlay Applet + - - Output Device: + + Enables Horizon's built-in overlay applet. Press and hold the home button for 1 second to show it. - Input Device: - + Output Engine: + Μηχανή εξόδου: - Mute audio + 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 maximum of 4. This is mainly a debug option and shouldn't be disabled. - + Memory Layout - - Increases the amount of emulated RAM from 4GB of the board to the devkit 8/6GB. + + 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. 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. - - Synchronize Core Speed + + 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.). Can help reduce stuttering at lower framerates. - + Accuracy: Ακρίβεια: - + 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. - - Virtual Table Bouncing - - - - - Bounces (by emulating a 0-valued return) any functions that triggers a prefetch abort - - - - + 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 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: - + Changes the output graphics API. Vulkan is recommended. - + Device: Συσκευή: - + This setting selects the GPU to use (Vulkan only). - - Shader Backend: - - - - - The shader backend to use with OpenGL. -GLSL is recommended. - - - - + Resolution: Ανάλυση: - + 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 using FSR's dynamic contrast. - + Anti-Aliasing Method: Μέθοδος Anti-Aliasing: - + The anti-aliasing method to use. SMAA offers the best quality. 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 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 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 - + Runs an additional optimization pass over generated SPIRV shaders. Will increase time required for shader compilation. May slightly improve performance. @@ -759,35 +768,24 @@ 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. GPU: Use the GPU's compute shaders to decode ASTC textures (recommended). @@ -796,45 +794,55 @@ stuttering but may present artifacts. - + ASTC Recompression Method: - + 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. 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 allows tearing as it recovers from a slow down. Mailbox can have lower latency than FIFO and does not tear but may drop frames. @@ -842,1175 +850,1379 @@ Immediate (no synchronization) presents whatever is available and can exhibit te - + 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. Safe to set at 16x on most GPUs. - - GPU Accuracy: + + GPU Mode: - - Controls the 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 as a last resort. + + 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. - + DMA Accuracy: - + Controls the DMA precision accuracy. Safe precision fixes issues in some games but may degrade performance. - - Enable asynchronous shader compilation (Hack) + + Enable asynchronous shader compilation - + May reduce shader stutter. - - Fast GPU Time (Hack) + + 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) - + 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 numbers allow for more features and can increase performance, but may cause issues. -The default value is per-system. +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 some games. -Only Vulkan 1.0+ devices support this extension. + + Enables vertex input dynamic state feature for better quality and performance. - - Descriptor Indexing - - - - - Improves texture & buffer handling and the Maxwell translation layer. -Some Vulkan 1.1+ and all 1.2+ devices support this extension. - - - - + 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. - + Device Name - + The name of the console. - + Custom RTC Date: - + 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: - + This option can be overridden when region setting is auto-select - + Region: Περιφέρεια: - + The region of the console. - + Time Zone: Ζώνη Ώρας: - + The time zone of the console. - + Sound Output Mode: - + Console 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. - + + Unit Serial + + + + + Battery Serial + + + + + Debug knobs + + + + 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 - + Overrides prompts asking to confirm stopping the emulation. Enabling it bypasses such prompts and directly exits the emulation. - + Hide mouse on inactivity Απόκρυψη δρομέα ποντικιού στην αδράνεια - + Hides the mouse after 2.5s of inactivity. - + Disable controller applet - + 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 - - - - - - Default - Προεπιλεγμένο - - - - Unsafe (fast) - - - - - Safe (stable) - - - - + + 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 Ακριβής - + + + 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) - - Serbian (српски) + + 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) - + Docked Docked - + Handheld Handheld - + + + 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 + + ConfigureApplets @@ -2082,7 +2294,7 @@ When a program attempts to open the controller applet, it is immediately closed. Επαναφορά Προεπιλογών - + Auto Αυτόματη @@ -2522,46 +2734,86 @@ When a program attempts to open the controller applet, it is immediately closed. + Use dev.keys + + + + Enable Debug Asserts Ενεργοποίηση Βεβαιώσεων Εντοπισμού Σφαλμάτων - + Debugging Εντοπισμός Σφαλμάτων - + + 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. @@ -2622,13 +2874,13 @@ When a program attempts to open the controller applet, it is immediately closed. - + Audio Ήχος - + CPU CPU @@ -2644,13 +2896,13 @@ When a program attempts to open the controller applet, it is immediately closed. - + General Γενικά - + Graphics Γραφικά @@ -2661,7 +2913,7 @@ When a program attempts to open the controller applet, it is immediately closed. - GraphicsExtensions + GraphicsExtra @@ -2671,7 +2923,7 @@ When a program attempts to open the controller applet, it is immediately closed. - + Controls Χειρισμός @@ -2687,7 +2939,7 @@ When a program attempts to open the controller applet, it is immediately closed. - + System Σύστημα @@ -2727,9 +2979,10 @@ When a program attempts to open the controller applet, it is immediately closed. - - - + + + + ... ... @@ -2739,90 +2992,184 @@ When a program 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 Save Data Directory... + + + + Select Gamecard Path... - + Select Dump Directory... - + Select Mod Load Directory... + + + Save Data Directory + + + + + Choose an action for the save data directory: + + + + + 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? + + ConfigureGeneral @@ -2839,24 +3186,54 @@ When a program 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 Επαναφορά Όλων των Ρυθμίσεων - + 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 @@ -2886,33 +3263,33 @@ When a program attempts to open the controller applet, it is immediately closed. Χρώμα Φόντου: - + % FSR sharpening percentage (e.g. 50%) % - + Off - + VSync Off - + Recommended - + On - + VSync On @@ -2930,7 +3307,7 @@ When a program attempts to open the controller applet, it is immediately closed. Για προχωρημένους - + Advanced Graphics Settings Προηγμένες Ρυθμίσεις Γραφικών @@ -2944,16 +3321,26 @@ When a program attempts to open the controller applet, it is immediately closed. - Extensions + Extras - - Vulkan Extensions Settings + + Hacks - + + Changing these options from their default may cause issues. Novitii cavete! + + + + + Vulkan Extensions + + + + % Sample Shading percentage (e.g. 50%) @@ -3531,7 +3918,7 @@ When a program attempts to open the controller applet, it is immediately closed. - + Left Stick Αριστερό Stick @@ -3641,14 +4028,14 @@ When a program attempts to open the controller applet, it is immediately closed. - + ZL ZL - + L L @@ -3661,22 +4048,22 @@ When a program attempts to open the controller applet, it is immediately closed. - + Plus Συν - + ZR ZR - - + + R R @@ -3733,7 +4120,7 @@ When a program attempts to open the controller applet, it is immediately closed. - + Right Stick Δεξιός Μοχλός @@ -3902,88 +4289,88 @@ To invert the axes, first move your joystick vertically, and then horizontally.< 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" απέτυχε @@ -4006,15 +4393,6 @@ To invert the axes, first move your joystick vertically, and then horizontally.< Προκαθορισμένα - - ConfigureLinuxTab - - - - Linux - - - ConfigureMotionTouch @@ -4040,7 +4418,7 @@ To invert the axes, first move your joystick vertically, and then horizontally.< - + Configure Διαμόρφωση @@ -4070,103 +4448,93 @@ To invert the axes, first move your joystick vertically, and then horizontally.< Πόρτα: - - Learn More - Μάθετε Περισσότερα - - - - + + Test Τεστ - + Add Server Προσθήκη Διακομιστή - + Remove Server Κατάργηση Διακομιστή - - <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> - - - - + %1:%2 %1:%2 + + - - - - - + + + Eden - + Port number has invalid characters Ο αριθμός θύρας έχει μη έγκυρους χαρακτήρες - + 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>Παρακαλώ περιμένετε να τελειώσουν. @@ -4296,11 +4664,6 @@ Current values are %1% and %2% respectively. Enable Airplane Mode - - - None - Κανένα - ConfigurePerGame @@ -4355,52 +4718,57 @@ 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 + + + + Properties Ιδιότητες @@ -4418,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 @@ -4455,38 +4918,18 @@ Current values are %1% and %2% respectively. Username Όνομα χρήστη - - - Set Image - Ορισμός Εικόνας - - Select Avatar - - - - 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)) @@ -4494,169 +4937,80 @@ Current values are %1% and %2% respectively. %2 - - Enter Username - Εισάγετε Όνομα Χρήστη - - - + Users Χρήστες - - Enter a username for the new user: - Εισαγάγετε ένα όνομα χρήστη για τον νέο χρήστη: - - - - Enter a new username: - Εισαγάγετε ένα νέο όνομα χρήστη: - - - + 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 saving user image - + Unable to save image to file - - Select User Image - Επιλέξτε Εικόνα χρήστη - - - - Image Formats (*.jpg *.jpeg *.png *.bmp) + + &Edit - - No firmware available + + &Delete - - 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. - - - - - ConfigureProfileManagerAvatarDialog - - - Select - - - - - Cancel - - - - - Background Color - - - - - Select Firmware Avatar + + Edit User ConfigureProfileManagerDeleteDialog - + Delete this user? All of the user's save data will be deleted. - + Confirm Delete Επιβεβαίωση Διαγραφής - + Name: %1 UUID: %2 @@ -4823,7 +5177,7 @@ 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> @@ -4857,17 +5211,22 @@ UUID: %2 Παύση εκτέλεσης κατά τη διάρκεια φόρτωσης - + + Show recording dialog + + + + Script Directory Κατάλογος Σεναρίων - + Path Μονοπάτι - + ... ... @@ -4880,7 +5239,7 @@ UUID: %2 Ρυθμίσεις TAS - + Select TAS Load Directory... @@ -5017,64 +5376,43 @@ Drag points to change position, or double-click table cells to edit values. ConfigureUI - - - + + None Κανένα - - Small (32x32) - - - - - Standard (64x64) - - - - - Large (128x128) - - - - - Full Size (256x256) - - - - + Small (24x24) - + Standard (48x48) - + Large (72x72) - + Filename Όνομα αρχείου - + Filetype Τύπος αρχείου - + Title ID ID Τίτλου - + Title Name Όνομα τίτλου @@ -5143,71 +5481,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) - + Screenshots Path: - + ... ... - + TextLabel - + Resolution: Ανάλυση: - + Select Screenshots Path... - + <System> <System> - + English Αγγλικά - + Auto (%1 x %2, %3 x %4) Screenshot width value @@ -5341,20 +5674,20 @@ Drag points to change position, or double-click table cells to edit values. - - + + All Good Tooltip - + Must be between 4-20 characters Tooltip - + Must be 48 characters, and lowercase a-z Tooltip @@ -5386,27 +5719,27 @@ Drag points to change position, or double-click table cells to edit values. - + Shaders - + UserNAND - + SysNAND - + Mods - + Saves @@ -5444,7 +5777,7 @@ Drag points to change position, or double-click table cells to edit values. - + Calculating... @@ -5467,12 +5800,12 @@ Drag points to change position, or double-click table cells to edit values. - + Dependency - + Version @@ -5646,44 +5979,44 @@ Please go to Configure -> System -> Network and make a selection. GRenderWindow - - + + OpenGL not available! Το OpenGL δεν είναι διαθέσιμο! - + OpenGL shared contexts are not supported. - + 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 @@ -5691,203 +6024,208 @@ Please go to Configure -> System -> Network and make a selection. 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 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 - + Scan Subfolders Σκανάρισμα Υποφακέλων - + Remove Game Directory Αφαίρεση Φακέλου Παιχνιδιών - + ▲ Move Up ▲ Μετακίνηση Επάνω - + ▼ Move Down ▼ Μετακίνηση Κάτω - + Open Directory Location Ανοίξτε την Τοποθεσία Καταλόγου - + Clear Καθαρισμός - + Name Όνομα - + Compatibility Συμβατότητα - + Add-ons Πρόσθετα - + File type Τύπος αρχείου - + Size Μέγεθος - + Play time @@ -5895,62 +6233,62 @@ Please go to Configure -> System -> Network and make a selection. 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. Το παιχνίδι δεν έχει ακόμα τεσταριστεί. @@ -5958,7 +6296,7 @@ Please go to Configure -> System -> Network and make a selection. GameListPlaceholder - + Double-click to add a new folder to the game list Διπλο-κλικ για προσθήκη νεου φακέλου στη λίστα παιχνιδιών @@ -5966,17 +6304,17 @@ Please go to Configure -> System -> Network and make a selection. GameListSearchField - + %1 of %n result(s) - + Filter: Φίλτρο: - + Enter pattern to filter Εισαγάγετε μοτίβο για φιλτράρισμα @@ -6052,12 +6390,12 @@ Please go to Configure -> System -> Network and make a selection. 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. Debug Message: @@ -6066,189 +6404,207 @@ 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 - + 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 @@ -6300,22 +6656,22 @@ Debug Message: - + Loading... Φόρτωση... - + Loading Shaders %1 / %2 - + Launching... Εκκίνηση... - + Estimated Time %1 @@ -6364,42 +6720,42 @@ Debug Message: - + Password Required to Join - + Password: - + Players - + Room Name - + Preferred Game - + Host - + Refreshing - + Refresh List @@ -6448,1171 +6804,1153 @@ Debug Message: + &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 - + Am&iibo - - &Applets + + 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 - + 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 - + &Capture Screenshot - - - Open &Album - - - - - &Set Nickname and Owner - - - - - &Delete Game Data - - - &Restore Amiibo + &Album - &Format Amiibo + &Set Nickname and Owner - Open &Mii Editor + &Delete Game Data + &Restore Amiibo + + + + + &Format Amiibo + + + + + &Mii Editor + + + + &Configure TAS... - + Configure C&urrent Game... - - + + &Start &Έναρξη - + &Reset - - + + R&ecord - + Open &Controller Menu - + Install Decryption &Keys - - Open &Home Menu + + &Home Menu - - Open &Setup - - - - + &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.<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>. + + 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><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. + + 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/Revolt for help. + + %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 - - Please install firmware to use the Album applet. - - - - - Album Applet - - - - - Album applet is not available. Please reinstall firmware. - - - - - Please install firmware to use the Cabinet applet. - - - - - Cabinet Applet - - - - - Cabinet applet is not available. Please reinstall firmware. - - - - - Please install firmware to use the Mii editor. - - - - - Mii Edit Applet - - - - - Mii editor is not available. Please reinstall firmware. - - - - - Please install firmware to use the Controller Menu. - - - - - Controller Applet - - - - - Controller Menu is not available. Please reinstall firmware. - - - - + Firmware Corrupted - - Home Menu Applet + + Unknown applet - - Home Menu is not available. Please reinstall firmware. + + Applet doesn't map to a known value. - - Please install firmware to use Starter. + + Record not found - - Starter Applet + + Applet not found. Please reinstall firmware. - - Starter is not available. Please reinstall firmware. - - - - + Capture Screenshot - + PNG Image (*.png) - + Update Available - - Download the %1 update? - - - - - TAS state: Running %1/%2 - - - - - TAS state: Recording %1 - - - - - TAS state: Idle %1/%2 - - - - - TAS State: Invalid - - - - - &Stop Running + + 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 - - %1 %2 - - - - + FSR - + NO AA - + VOLUME: MUTE - + VOLUME: %1% Volume percentage (e.g. 50%) - + Derivation Components Missing - - Encryption keys are 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. @@ -7620,69 +7958,79 @@ 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? - - - None - - FXAA @@ -7709,27 +8057,27 @@ Would you like to bypass this and exit anyway? - + Zero-Tangent - + B-Spline - + Mitchell - + Spline-1 - + Gaussian @@ -7765,17 +8113,17 @@ Would you like to bypass this and exit anyway? - Normal + Fast - High + Balanced - Extreme + Accurate @@ -7784,41 +8132,36 @@ Would you like to bypass this and exit anyway? - - OpenGL + + OpenGL GLSL - - Null + + OpenGL SPIRV - GLSL + OpenGL GLASM - GLASM - - - - - SPIRV + Null MigrationWorker - + 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. @@ -7829,7 +8172,7 @@ If this is not desirable, delete the following files: - + 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: @@ -7837,11 +8180,24 @@ If you wish to clean up the files which were left in the old data location, you - + Data was migrated successfully. + + ModSelectDialog + + + Dialog + + + + + The specified folder or archive contains the following mods. Select which ones to install. + + + ModerationDialog @@ -7965,6 +8321,135 @@ Proceed anyway? Ετοιμάζεστε να φύγετε από το δωμάτιο. Όλες οι δικτυακές συνδέσεις θα κλείσουν. + + 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 + + + OverlayDialog @@ -7994,50 +8479,122 @@ p, li { white-space: pre-wrap; } + + 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 - - - - - Installed NAND Titles - - - - - System Titles - Τίτλοι Συστήματος - - - - Add New Game Directory - Προσθήκη Νέας Τοποθεσίας Παιχνιδιών - - - - Favorites - Αγαπημένα - - - - - + + + Migration - + Clear Shader Cache @@ -8070,18 +8627,18 @@ p, li { white-space: pre-wrap; } - + You can manually re-trigger this prompt by deleting the new config directory: %1 - + Migrating - + Migrating, this may take a while... @@ -8463,15 +9020,60 @@ p, li { white-space: pre-wrap; } Δεν παίζει παιχνίδι - + %1 is not playing a game %1 δεν παίζει παιχνίδι - + %1 is playing %2 %1 παίζει %2 + + + Play Time: %1 + + + + + Never Played + + + + + Version: %1 + + + + + Version: 1.0.0 + + + + + Installed SD Titles + + + + + Installed NAND Titles + + + + + System Titles + Τίτλοι Συστήματος + + + + Add New Game Directory + Προσθήκη Νέας Τοποθεσίας Παιχνιδιών + + + + Favorites + Αγαπημένα + QtAmiiboSettingsDialog @@ -8589,250 +9191,250 @@ p, li { white-space: pre-wrap; } 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. @@ -8840,22 +9442,22 @@ Only do this if you're 100% sure you want to delete this data. QtCommon::FS - + Linked Save Data - + Save data has been linked. - + Failed to link save data - + Could not link directory: %1 To: @@ -8863,268 +9465,357 @@ To: - + 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. @@ -9132,83 +9823,83 @@ To: 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. Versions 19.0.1 or earlier are recommended, as 20.0.0+ is currently experimental. + + Firmware missing. Firmware is required to run certain games and use the Home Menu. @@ -9229,56 +9920,56 @@ 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. @@ -9319,7 +10010,7 @@ This is recommended if you want to share data between emulators. - + Pro Controller Pro Controller @@ -9332,7 +10023,7 @@ This is recommended if you want to share data between emulators. - + Dual Joycons Διπλά Joycons @@ -9345,7 +10036,7 @@ This is recommended if you want to share data between emulators. - + Left Joycon Αριστερό Joycon @@ -9358,7 +10049,7 @@ This is recommended if you want to share data between emulators. - + Right Joycon Δεξί Joycon @@ -9387,7 +10078,7 @@ This is recommended if you want to share data between emulators. - + Handheld Handheld @@ -9508,32 +10199,32 @@ This is recommended if you want to share data between emulators. - + GameCube Controller Χειριστήριο GameCube - + Poke Ball Plus Poke Ball Plus - + NES Controller Χειριστήριο NES - + SNES Controller Χειριστήριο SNES - + N64 Controller Χειριστήριο N64 - + Sega Genesis Sega Genesis @@ -9682,13 +10373,13 @@ 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 Ακύρωση @@ -9723,12 +10414,12 @@ By selecting "From Eden", previous save data stored in Ryujinx will be - + Failed to link save data - + OS returned error: %1 @@ -9764,45 +10455,9 @@ By selecting "From Eden", previous save data stored in Ryujinx will be - + Total play time reached maximum. - - fs - - - 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 - - - - \ No newline at end of file + diff --git a/dist/languages/es.ts b/dist/languages/es.ts index 14de81f117..29557af4b2 100644 --- a/dist/languages/es.ts +++ b/dist/languages/es.ts @@ -33,17 +33,17 @@ 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 para la Nintendo Switch bajo la licencia GPLv3.0+ que es basado en el emulador Yuzu que finalizó su desarrollo en Marzo 2024. <br /><br />Este software no debería ser usado para jugar juegos que legalmente no hayas obtenido.</span></p></body></html> +<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://discord.gg/kXAmGCXBGD"><span style=" text-decoration: underline; color:#039be5;">Discord</span></a> | <a href="https://rvlt.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;">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;">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. Eden no está afiliado de ninguna forma con Nintendo.</span></p></body></html> @@ -61,12 +61,12 @@ li.checked::marker { content: "\2612"; } 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. @@ -76,7 +76,7 @@ li.checked::marker { content: "\2612"; } OK - OK + Aceptar @@ -89,7 +89,7 @@ li.checked::marker { content: "\2612"; } Send Chat Message - Enviar mensaje del chat + Enviar mensaje al chat @@ -104,12 +104,12 @@ li.checked::marker { content: "\2612"; } %1 has joined - %1 se ha unido + %1 se unió %1 has left - %1 se ha ido + %1 se fué @@ -140,7 +140,7 @@ li.checked::marker { content: "\2612"; } 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? @@ -155,26 +155,26 @@ li.checked::marker { content: "\2612"; } 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 jugador + Vetar al 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. @@ -234,32 +234,32 @@ Esto banearía su nombre del foro y su dirección IP. Report Game Compatibility - Informar de compatibilidad del juego + 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 eliges 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 compatabilidad 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 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;">Cual version de Eden se esta 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 esta conectada </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 @@ -269,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> @@ -279,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> @@ -339,12 +339,12 @@ 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. @@ -359,7 +359,7 @@ Esto banearía su nombre del foro y su dirección IP. 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 @@ -375,328 +375,336 @@ Esto banearía su nombre del foro y su dirección IP. % - + 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 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 4GB of the board to the devkit 8/6GB. + + Increases the amount of emulated RAM. Doesn't affect performance/stability but may allow HD texture mods to load. - Aumenta la cantidad de RAM emulada de 4 GB de la placa base a 8/6 GB del kit de desarrollo. -No afecta el rendimiento ni la estabilidad, pero puede permitir la carga de mods de texturas HD. + 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. 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 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.). 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: - + 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 - Tiempo rapido de CPU + + 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 débiles puede reducir el rendimiento y algunos juegos pueden funcionar incorrectamente. + 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. - Establezca un valor personalizado para los ticks de la CPU. Valores más altos pueden aumentar el rendimiento, pero pueden causar interbloqueos. Se recomienda un rango de 77-21000. + 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) - Virtual Table Bouncing - - - - - Bounces (by emulating a 0-valued return) any functions that triggers a prefetch abort - - - - - Enable Host MMU Emulation (fastmem) - Activa emulación de 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. - Esta optimización acelera el acceso de la memoria por parte de la programa invitado. -Al actualizarlo, las lecturas/escrituras de memoria de la programa invitado se realizan directamente a la memoria y habilita el utilización de la Host MMU + 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 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: - + Changes the output graphics API. Vulkan is recommended. - Cambia la API de salida de gráficos. + Cambia la API de salida gráfica. Se recomienda Vulkan. - + Device: Dispositivo: - + This setting selects the GPU to use (Vulkan only). - Este ajuste selecciona la GPU a utilizar (solo Vulkan). + Este ajuste selecciona la GPU a usar (solo Vulkan). - - Shader Backend: - Soporte de shaders: - - - - The shader backend to use with OpenGL. -GLSL is recommended. - Define el motor de sombreado que se utilizará con OpenGL. -Se recomienda usar GLSL. - - - + Resolution: Resolución: - + Forces to render at a different resolution. Higher resolutions require more VRAM and bandwidth. Options lower than 1X can cause artifacts. @@ -705,55 +713,55 @@ 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 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 can produce a more stable picture in lower resolutions. - El método de suavizado de bordes (anti-aliasing) que se usará. + 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 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. @@ -762,83 +770,71 @@ La mayoría de los juegos solo admiten 16:9, por lo que se requieren modificacio También controla la relación de aspecto de las capturas de pantalla. - + Use persistent pipeline cache - Usar caché de canalización persistente. + 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 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. - Corre un paso de optimización adicional sobre los shaders SPIRV generados. -Aumenta el tiempo requerido para compilar shaders. -Puede mejorar el rendimiento un poco. -Este caracteristica es 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. 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 decodificarse las texturas ASTC. -CPU: utiliza el procesador para la decodificación. -GPU: utiliza los sombreadores de la tarjeta gráfica para decodificar las texturas ASTC (recomendado). -CPU asíncrono: usa el procesador para decodificar las texturas ASTC bajo demanda. Elimina los tirones causados por la decodificación ASTC, pero puede generar errores visuales. + 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: - + 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. @@ -846,323 +842,398 @@ BC1/BC3: The intermediate format will be recompressed to BC1 or BC3 format, 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. Aggressive mode may impact performance of other applications such as recording software. - Selecciona si el emulador prefiere conservar memoria o maximizar el uso de memoria de video disponible para mejorar el rendimiento. -El modo agresivo puede afectar el rendimiento de otras aplicaciones, como el software de grabación. + 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 + 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 uso de la CPU y mejorando la latencia. Esto puede causar crasheos leves. + 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 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) presents whatever is available and can exhibit tearing. - FIFO (VSync) no pierde fotogramas ni presenta desgarros de imagen (tearing), pero está limitado por la tasa de actualización del monitor. + 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 data entre los cómputos y operaciones de memoria. + 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. 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. - - GPU Accuracy: - Precisión de GPU: + + GPU Mode: + Modo de la GPU: - - Controls the 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 as a last resort. - Controla el exactitud del emulacion del GPU -La mayoridad de juegos renderizan bien con Normal, pero Alto todavia esta requirdo para algunos. -Las partículas tienden a representarse correctamente solo con alta precisión.. -Extremo solamente se deberia de usar como resorto final. + + 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. - + DMA Accuracy: Precisión de DMA: - + 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 - - Enable asynchronous shader compilation (Hack) - Activa la compilación de shaders asincrónicos (hack). + + Enable asynchronous shader compilation + Activa la compilación de shaders asincrónicos - + May reduce shader stutter. Puede reducir los tirones causados por la carga de sombreadores. - - Fast GPU Time (Hack) - Tiempo de GPU rápido (Hack) + + Fast GPU Time + Tiempo rápido de la GPU - + Overclocks the emulated GPU to increase dynamic resolution and render distance. -Use 128 for maximal performance and 512 for maximal graphics fidelity. - Overcloquea la GPU emulada para aumentar la resolución dinámica y la distancia del rendimiento. -Usa 128 para rendimiento máximo y 512 para fidelidad gráfico máximo. +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) - + 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. - Requerido para algunos juegos. -Esta configuración solo existe para los controladores propietarios de Intel y puede causar fallos si se activa. -En los demás controladores, compute pipelines siempre están habilitadas. + 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 numbers allow for more features and can increase performance, but may cause issues. -The default value is per-system. - Controla el numero de características que pueden ser usadas en el estado dinámico extendido. -Números mas altos permiten mas características y pueden aumentar el rendimiento, pero pueden causar problemas. -El valor predeterminado es por sistema. +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. - - Provoking Vertex - Vértice provocante + + Vertex Input Dynamic State + Estado dinámico de entrada de vértices - - Improves lighting and vertex handling in some games. -Only Vulkan 1.0+ devices support this extension. - Mejora la iluminación y la gestión de vértices en algunos juegos. -Solo los dispositivos Vulkan 1.0+ son compatibles con esta extensión. + + 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. - - Descriptor Indexing - Indexación del descriptor - - - - Improves texture & buffer handling and the Maxwell translation layer. -Some Vulkan 1.1+ and all 1.2+ devices support this extension. - Mejora el manejo de las texturas y buffers y la capa de traduccion de Maxwell. Solo compatible con algunas GPUs que soporten Vulkan 1.1, pero compatible con todos los GPUs que suporten Vulkan 1.2+ - - - + 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. Controla la semilla del generador de números aleatorios. Usado principalmente para speedrunning. - + Device Name Nombre del dispositivo - + The name of the console. El nombre de la consola - + Custom RTC Date: Fecha Personalizada RTC: - + This option allows to change the clock of the console. Can be used to manipulate time in games. 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: - + 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 console. La Región de la Consola. - + Time Zone: Zona horaria: - + 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 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. @@ -1171,907 +1242,1048 @@ Los juegos cambiarán su resolución, detalles y compatibilidad con los mandos s Configurar el modo portátil puede mejorar el rendimiento en sistemas de gama baja. - + + Unit Serial + Nº de serie de la unidad + + + + Battery Serial + Nº de serie de la batería + + + + Debug knobs + Perillas de depuración + + + Prompt for user profile on boot Solicitud para perfil de usuario al arrancar - + Useful if multiple people use the same PC. Útil si múltiples personas usan la misma PC - + Pause when not in focus - Pausa el juego automáticamente cuando la ventana no está activa o en primer plano. + Pausar cuando la ventana no esté activa - + Pauses emulation when focusing on other windows. - Pausa la emulación cuando la ventana esta en segundo plano. + Pausa la emulación cuando esta activa otra ventana diferente. - + Confirm before stopping emulation Confirmar detención - + Overrides prompts asking to confirm stopping the emulation. Enabling it bypasses such prompts and directly exits the emulation. 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. - + 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 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 - Busca actualizaciones + Buscar actualizaciones - + Whether or not to check for updates upon startup. - Si buscar o no buscar actualizaciones cada inicio. + 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 - Conservativo - - - - Aggressive - Agresivo - - - - 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 - - - - - Default - Predeterminado - - - - Unsafe (fast) - Inseguro (rápido) - - - - Safe (stable) - Seguro (estable) - - - + + 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 - + + + 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) - - Serbian (српски) - Serbian (српски) + + 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) - + 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 - - Low (128) - Bajo (128) - - - + + 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 @@ -2143,7 +2355,7 @@ Cuando un programa intenta abrir el applet del controlador, se cierra inmediatam Restaurar valores predeterminados - + Auto Auto @@ -2206,7 +2418,7 @@ Cuando un programa intenta abrir el applet del controlador, se cierra inmediatam <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> @@ -2246,13 +2458,13 @@ Cuando un programa intenta abrir el applet del controlador, se cierra inmediatam <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 @@ -2317,7 +2529,7 @@ Cuando un programa intenta abrir el applet del controlador, se cierra inmediatam <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> @@ -2397,7 +2609,7 @@ Cuando un programa intenta abrir el applet del controlador, se cierra inmediatam 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. @@ -2465,7 +2677,7 @@ Cuando un programa intenta abrir el applet del controlador, se cierra inmediatam 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. @@ -2495,12 +2707,12 @@ Cuando un programa intenta abrir el applet del controlador, se cierra inmediatam 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 @@ -2555,7 +2767,7 @@ Cuando un programa intenta abrir el applet del controlador, se cierra inmediatam Disable Buffer Reorder - Desactivar reordenamiento de búffer + Desactivar el reordenamiento de búferes @@ -2565,17 +2777,17 @@ Cuando un programa intenta abrir el applet del controlador, se cierra inmediatam 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 @@ -2594,46 +2806,86 @@ Cuando un programa intenta abrir el applet del controlador, se cierra inmediatam + Use dev.keys + Usar dev.keys + + + Enable Debug Asserts Activar alertas de depuración - + Debugging Depuración - + + Battery Serial: + Nº de serie de la batería: + + + + 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. - + 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** - + Censor username in logs Censura nombre de usario en logs - + **This will be reset automatically when Eden closes. **Esto se reiniciara automáticamente cuando Eden se cierre. @@ -2685,7 +2937,7 @@ Cuando un programa intenta abrir el applet del controlador, se cierra inmediatam 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. @@ -2694,13 +2946,13 @@ Cuando un programa intenta abrir el applet del controlador, se cierra inmediatam - + Audio Audio - + CPU CPU @@ -2716,13 +2968,13 @@ Cuando un programa intenta abrir el applet del controlador, se cierra inmediatam - + General General - + Graphics Gráficos @@ -2733,8 +2985,8 @@ Cuando un programa intenta abrir el applet del controlador, se cierra inmediatam - GraphicsExtensions - Extensiones gráficos + GraphicsExtra + GraficasExtra @@ -2743,7 +2995,7 @@ Cuando un programa intenta abrir el applet del controlador, se cierra inmediatam - + Controls Controles @@ -2759,7 +3011,7 @@ Cuando un programa intenta abrir el applet del controlador, se cierra inmediatam - + System Sistema @@ -2799,9 +3051,10 @@ Cuando un programa intenta abrir el applet del controlador, se cierra inmediatam - - - + + + + ... ... @@ -2811,89 +3064,195 @@ Cuando un programa intenta abrir el applet del controlador, se cierra inmediatam 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... + + + + Save Data Directory + Directorio de Datos guardados... + + + + Choose an action for the save data directory: + Elige un acción para el directorio de datos guardados: + + + + 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? @@ -2911,24 +3270,54 @@ Cuando un programa intenta abrir el applet del controlador, se cierra inmediatam - 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 - + 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 @@ -2958,33 +3347,33 @@ Cuando un programa intenta abrir el applet del controlador, se cierra inmediatam Color de fondo: - + % FSR sharpening percentage (e.g. 50%) % - + Off Desactivado - + VSync Off VSync Desactivado - + Recommended Recomendado - + On Activado - + VSync On VSync Activado @@ -3002,7 +3391,7 @@ Cuando un programa intenta abrir el applet del controlador, se cierra inmediatam Avanzado - + Advanced Graphics Settings Ajustes avanzados de gráficos @@ -3016,16 +3405,26 @@ Cuando un programa intenta abrir el applet del controlador, se cierra inmediatam - Extensions - Extensiones + Extras + Extras - - Vulkan Extensions Settings - Configuraciones de los extensiones de Vulkan + + Hacks + Hacks - + + 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%) % @@ -3201,7 +3600,7 @@ Cuando un programa intenta abrir el applet del controlador, se cierra inmediatam Console Mode - Modo de la consola + Modo consola @@ -3431,7 +3830,7 @@ Cuando un programa intenta abrir el applet del controlador, se cierra inmediatam Ring Controller - Ring Controller + Mando Ring @@ -3458,7 +3857,7 @@ Cuando un programa intenta abrir el applet del controlador, se cierra inmediatam 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) @@ -3483,7 +3882,7 @@ Cuando un programa intenta abrir el applet del controlador, se cierra inmediatam 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. @@ -3603,7 +4002,7 @@ Cuando un programa intenta abrir el applet del controlador, se cierra inmediatam - + Left Stick Palanca izquierda @@ -3713,14 +4112,14 @@ Cuando un programa intenta abrir el applet del controlador, se cierra inmediatam - + ZL ZL - + L L @@ -3733,22 +4132,22 @@ Cuando un programa intenta abrir el applet del controlador, se cierra inmediatam - + Plus Más - + ZR ZR - - + + R R @@ -3805,7 +4204,7 @@ Cuando un programa intenta abrir el applet del controlador, se cierra inmediatam - + Right Stick Palanca derecha @@ -3974,88 +4373,88 @@ Para invertir los ejes, mueve primero el joystick de manera vertical, y luego ho 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" @@ -4078,15 +4477,6 @@ Para invertir los ejes, mueve primero el joystick de manera vertical, y luego ho Predeterminados - - ConfigureLinuxTab - - - - Linux - Linux - - ConfigureMotionTouch @@ -4112,7 +4502,7 @@ Para invertir los ejes, mueve primero el joystick de manera vertical, y luego ho - + Configure Configurar @@ -4142,103 +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://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> - <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;">Aprende Mas</span></a> - - - + %1:%2 %1:%2 + + - - - - - + + + Eden Eden - + Port number has invalid characters El número del puerto tiene caracteres que no son válidos - + 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. @@ -4369,11 +4749,6 @@ Los valores actuales son %1% y %2% respectivamente. Enable Airplane Mode Activa modo avión - - - None - Ninguna - ConfigurePerGame @@ -4425,55 +4800,60 @@ 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 - Extensiones de la GPU + + Ext. Graphics + Extensiones Gráficas - + Audio Audio - + Input Profiles Perfiles de entrada - - Linux - Linux + + Network + Red - + + Applets + Applets + + + Properties Propiedades @@ -4488,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 @@ -4528,38 +5007,18 @@ Los valores actuales son %1% y %2% respectivamente. Username Nombre de usuario - - - Set Image - Seleccionar imagen - - Select Avatar - Seleccionar Avatar - - - 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)) @@ -4567,169 +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: - - - + 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 saving user image Error al guardar el imagen de usuario - + Unable to save image to file Error al guardar el imagen al archivo - - Select User Image - Selecciona una imagen de usuario + + &Edit + &Editar - - Image Formats (*.jpg *.jpeg *.png *.bmp) - Formatos de Imagen (*.jpg *.jpeg *.png *.bmp) + + &Delete + &Borrar - - No firmware available - No hay firmware disponible - - - - Please install the firmware to use firmware avatars. - Por favor instale la firmware para usar avatars de firmware. - - - - - Error loading archive - Error en iniciar archivo. - - - - Archive is not available. Please install/reinstall firmware. - Archivo no esta disponible. Por favor instala/reinstala el firmware. - - - - Could not locate RomFS. Your file or decryption keys may be corrupted. - No se pudo encontrar RomFS. Su archivo o llave de desencriptación puede estar corrupta. - - - - Error extracting archive - Error extrayendo archivo - - - - Could not extract RomFS. Your file or decryption keys may be corrupted. - No se pudo extraer RomFS. Su archivo o llave de desencriptación puede estar corrupta. - - - - Error finding image directory - Error buscando el directorio de imagen - - - - Failed to find image directory in the archive. - Error encontrando el directorio de imagen en el archivo. - - - - No images found - Ningún imagen encontrado - - - - No avatar images were found in the archive. - Ningún imagen de avatar encontrado en el archivo. - - - - ConfigureProfileManagerAvatarDialog - - - Select - Seleccióne - - - - Cancel - Cancelar - - - - Background Color - Color de fondo - - - - Select Firmware Avatar - Seleccionar Avatar de firmware + + 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 @@ -4741,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 @@ -4841,12 +5211,12 @@ UUID: %2 The current mapped device doesn't support the ring controller - El dispositivo de entrada actual no soporta el Ring Controller. + 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 + El dispositivo de entrada actual no tiene el ring incorporado @@ -4897,8 +5267,8 @@ 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>Lee las entradas del control de los scripts en el mismo formato a los scripts de TAS-nx.<br/> Para una explicación más detallada, por favor consulte la<a href="https://eden-emulator.github.io/help/feature/tas/"><span style=" text-decoration: underline; color:#039be5;">pagina de ayuda</span></a> en el sito de web de Eden</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> @@ -4908,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. @@ -4918,7 +5288,7 @@ UUID: %2 Enable TAS features - Activar características TAS + Activar funciones TAS @@ -4931,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 - + ... ... @@ -4951,12 +5326,12 @@ UUID: %2 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... @@ -4990,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. @@ -5023,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: @@ -5048,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] @@ -5061,7 +5436,7 @@ Arrastra los puntos para cambiar de posición, o haz doble clic en las celdas de 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. - Auxilio: Las configuraciones en esta página afectan el funcionamiento interno de la pantalla tactil emulado de eden. Cambiando estas configuraciones puede resultar en comportamiento indeseable, por ejemplo, la pantalla parando de trabajar. Solamente deberías usar este pagina si sabes lo que estas haciendo. + 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. @@ -5092,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 @@ -5199,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 @@ -5218,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) @@ -5416,20 +5765,20 @@ Arrastra los puntos para cambiar de posición, o haz doble clic en las celdas de Mostrar el juego actual en el estado de Discord - - + + All Good Tooltip Todo bien - + Must be between 4-20 characters Tooltip Debe tener entre 4-20 caracteres - + Must be 48 characters, and lowercase a-z Tooltip Debe tener 48 caracteres, solo letras minúsculas a-z @@ -5453,35 +5802,35 @@ Arrastra los puntos para cambiar de posición, o haz doble clic en las celdas de Data Manager - Gestor de data + Gestor de datos Deleting ANY data is IRREVERSABLE! - ¡Eliminar CUALQUIER data es IRREVERSIBLE! + ¡Eliminar CUALQUIER dato es IRREVERSIBLE! - + Shaders Sombreadores - + UserNAND NAND de usuario - + SysNAND NAND de sistema - + Mods - Modificaciones + Mods - + Saves Guardados @@ -5506,20 +5855,20 @@ Arrastra los puntos para cambiar de posición, o haz doble clic en las celdas de Delete all data in this directory. THIS IS 100% IRREVERSABLE! - Eliminar toda la data en este directorio. ¡ESTO ES 100% IRREVERSIBLE! + Eliminar todos los datos en este directorio. ¡ESTO ES 100% IRREVERSIBLE! Export all data in this directory. This may take a while! - Exportar toda la data en este directorio. ¡Esto puede tomar un tiempo! + 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 toda la data en este directorio. Esto puede tomar un tiempo, ¡y borrará TODA LA DATA EXISTENTE! + Importar todos los datos en este directorio. Esto puede tomar un tiempo, ¡y borrará TODOS LOS DATOS EXISTENTES! - + Calculating... Calculando... @@ -5542,12 +5891,12 @@ Arrastra los puntos para cambiar de posición, o haz doble clic en las celdas de <html><head/><body><p>Los proyectos que hicieron Eden posible </p></body></html> - + Dependency Dependencia - + Version Versión @@ -5562,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 @@ -5638,7 +5987,7 @@ Arrastra los puntos para cambiar de posición, o haz doble clic en las celdas de 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, agrega una carpeta de juegos haciendo clic en el icono de suma 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. @@ -5678,7 +6027,7 @@ Arrastra los puntos para cambiar de posición, o haz doble clic en las celdas de An unknown error occurred. If this error continues to occur, please open an issue - Error desconocido. Si sigue este error, por favor, abre una solicitud de errores. + Ha ocurrido un error desconocido. Si este error persiste, por favor abra una solicitud de fallos. @@ -5693,7 +6042,7 @@ Arrastra los puntos para cambiar de posición, o haz doble clic en las celdas de 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. @@ -5723,44 +6072,44 @@ Por favor, vaya a Configuración -> Sistema -> Red y selecciona una interf GRenderWindow - - + + OpenGL not available! ¡OpenGL no está disponible! - + OpenGL shared contexts are not supported. Los contextos compartidos de OpenGL no son compatibles. - + Eden has not been compiled with OpenGL support. Eden no ha sido compilado con soporte para OpenGL. - - + + 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 @@ -5768,203 +6117,208 @@ Por favor, vaya a Configuración -> Sistema -> Red y selecciona una interf 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 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 data de tiempo de juego + 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 - + 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 @@ -5972,62 +6326,62 @@ Por favor, vaya a Configuración -> Sistema -> Red y selecciona una interf 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. @@ -6035,7 +6389,7 @@ Por favor, vaya a Configuración -> Sistema -> Red y selecciona una interf 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. @@ -6043,17 +6397,17 @@ Por favor, vaya a Configuración -> Sistema -> Red y selecciona una interf GameListSearchField - + %1 of %n result(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 @@ -6129,12 +6483,12 @@ Por favor, vaya a Configuración -> Sistema -> Red y selecciona una interf 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. Debug Message: 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. @@ -6144,189 +6498,207 @@ 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 - + Configure Current Game - Configure el Juego actual + Configure el juego actual - + Continue/Pause Emulation Continuar/Pausar emulación - + Exit Fullscreen Salir de pantalla completa - + Exit Eden - Sale de Eden + Salir de 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 @@ -6366,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 @@ -6379,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 @@ -6440,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 @@ -6503,7 +6875,7 @@ Mensaje de depuración: Open &Eden Folders - Abre Archivos de &Eden + Abrir carpetas de &Eden @@ -6527,1378 +6899,1384 @@ Mensaje de 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 - + Am&iibo Am&iibo - - &Applets - &Applets + + Launch &Applet + Ejecutar &Applet - + &TAS &TAS - + &Create Home Menu Shortcut - &Cree un Atajo del Menu de Inicio + &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 - &Sobre Eden + &Acerca de Eden - + 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 - + &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 Decryption &Keys Instalar &llaves de desencriptación - - Open &Home Menu - Abrir menú $Home + + &Home Menu + &Menú de inicio - - Open &Setup - Abre &Configuracion - - - + &Desktop &Escritorio - + &Application Menu - &Menu de aplicación + &Menú de la aplicación - + &Root Data Folder &Datos de Archivo Root - + &NAND Folder &Archivo NAND - + &SDMC Folder &Archivo SDMC - + &Mod Folder - &Archivo Mod + Carpeta de &mods - + &Log Folder &Archivo Registro - + From Folder - Del Archivo + Desde carpeta - + From ZIP - Del ZIP + Desde archivo ZIP - + &Eden Dependencies &Dependencias de Eden - + &Data Manager - Gestor de &Data + 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.<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>. - + + 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><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. - + + 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/Revolt for help. + + %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 - - - - - - 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 - + 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.) - - - - - Failed to Install - - - - - The title type you selected for the NCA is invalid. - - - - - File not found - + 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. - - - - - - 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. - + El mando del modo portátil no puede usarse en el modo sobremesa. El mando pro será seleccionado en su lugar. - Select Dumped Firmware Source Location - + + Amiibo + Amiibo - - Select Dumped Firmware ZIP - + + + The current amiibo has been removed + El amiibo actual fue borrado - - Zipped Archives (*.zip) - + + Error + Error - - Firmware cleanup failed - + + + The current game is not looking for amiibos + El juego actual no está buscando amiibos - - Failed to clean up extracted firmware cache. -Check write permissions in the system temp directory and try again. -OS reported error: %1 - + + Amiibo File (%1);; All Files (*.*) + Archivo Amiibo (%1);; Todos los archivos (*.*) - - - - - - - No firmware available - + + Load Amiibo + Cargar Amiibo - - Please install firmware to use the Album applet. - + + Error loading Amiibo data + Error al cargar los datos del Amiibo - - Album Applet - + + 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 - Album applet is not available. Please reinstall firmware. - - - - - Please install firmware to use the Cabinet applet. - - - - - Cabinet Applet - - - - Cabinet applet is not available. Please reinstall firmware. - + Keys not installed + Claves no instaladas - - Please install firmware to use the Mii editor. - + + + 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 - Mii Edit Applet - + 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 - - Mii editor is not available. Please reinstall firmware. - + + No firmware available + No hay firmware disponible - - Please install firmware to use the Controller Menu. - - - - - Controller Applet - - - - - Controller Menu is not available. Please reinstall firmware. - - - - + Firmware Corrupted - + Firmware corrompido - - Home Menu Applet - + + Unknown applet + Applet desconocido - - Home Menu is not available. Please reinstall firmware. - + + Applet doesn't map to a known value. + Applet no asigna a un valor conocido. - - Please install firmware to use Starter. - + + Record not found + Grabación no encontrada - - Starter Applet - + + Applet not found. Please reinstall firmware. + Apple no encontrado. Por favor vuelva a instalar el firmware. - - Starter is not available. Please reinstall firmware. - - - - + Capture Screenshot - + Captura de pantalla - + PNG Image (*.png) - + Imagen PNG (*.png) - + Update Available - + Actualización disponible - - Download the %1 update? - - - - - TAS state: Running %1/%2 - - - - - TAS state: Recording %1 - - - - - TAS state: Idle %1/%2 - - - - - TAS State: Invalid - - - - - &Stop Running - + + 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 - - %1 %2 - - - - + 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 - - Encryption keys are missing. - + + 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? - - - - - None - + 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 - - - - - Zero-Tangent - + Bicúbico - B-Spline - + Zero-Tangent + Tangente cero - Mitchell - + B-Spline + B-Spline - Spline-1 - + Mitchell + Mitchell - + + Spline-1 + Spline-1 + + + Gaussian - + Gaussiano Lanczos - + Lanczos ScaleForce - + ScaleForce Area - + Área MMPX - + MMPX Docked - + Anclado Handheld - + Portátil - Normal - + Fast + Rápido - High - + Balanced + Equilibrado - Extreme - + Accurate + Preciso Vulkan - - - - - OpenGL - + Vulkan - Null - + OpenGL GLSL + OpenGL GLSL + + + + OpenGL SPIRV + OpenGL SPIRV - GLSL - + OpenGL GLASM + OpenGL GLASM - GLASM - - - - - SPIRV - + Null + Nulo MigrationWorker - + 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. @@ -7915,7 +8293,7 @@ Si esto no es deseable, borre los siguientes archivos: %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: @@ -7926,11 +8304,24 @@ Si quieres limpiar los archivos que se quedaron en el ubicacion de datos anticua %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. + + ModerationDialog @@ -8031,7 +8422,7 @@ Mensaje de depuración: 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? @@ -8055,6 +8446,135 @@ Proceed anyway? Estás a punto de abandonar la sala. Las conexiones de red serán interrumpidas. + + NewUserDialog + + + + 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 + + OverlayDialog @@ -8088,62 +8608,134 @@ 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 - - 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 juegos - - - - Favorites - Favoritos - - - - - + + + Migration Migracion - + Clear Shader Cache Limpiar caché de sombreador Keep Old Data - Mantener data antigua + Mantener los datos antiguos Clear Old Data - Limpiar data antigua + Limpiar los datos antiguos @@ -8166,19 +8758,19 @@ p, li { white-space: pre-wrap; } No - + 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... @@ -8560,15 +9152,60 @@ p, li { white-space: pre-wrap; } No jugando ningún juego - + %1 is not playing a game %1 no está jugando ningún juego - + %1 is playing %2 %1 esta jugando %2 + + + Play Time: %1 + Tiempo de juego: %1 + + + + Never Played + Nunca jugado + + + + 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 + QtAmiiboSettingsDialog @@ -8686,47 +9323,47 @@ p, li { white-space: pre-wrap; } 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 @@ -8735,206 +9372,206 @@ p, li { white-space: pre-wrap; } %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 data. Esto puede tomar unos minutos... + 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. @@ -8942,291 +9579,387 @@ Haz esto solo si estás 100% seguro de que deseas borrarlos. 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 - Failed to link save data - - - - Could not link directory: %1 To: %2 - + No se pudo vincular el directorio: + %1 +A: + %2 + + + + Already Linked + Ya está vinculado - Already Linked - + This title is already linked to Ryujinx. Would you like to unlink it? + Este título ya está vinculado a Ryujinx. ¿Desea desvincularlo? - - This title is already linked to Ryujinx. Would you like to unlink it? - + + Failed to unlink old directory + Fallo al desvincular el directorio antiguo - Failed to unlink old directory - - - - - - OS returned error: %1 - - - + 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 - Unlink Successful - + 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. - - Successfully unlinked Ryujinx save data. Save data has been kept intact. - + + 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 removiendo la caché de canalización del controlador Vulkan + 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 Atajo + Crear acceso directo - + Do you want to launch the game in fullscreen? ¿Desea iniciar el juego en pantalla completa? - + Shortcut Created - Atajo Creado + Acceso directo creado - + Successfully created a shortcut to %1 - Se ha creado un atajo a %1 con exito + Se ha creado un acceso directo a %1 con éxito - + Shortcut may be Volatile! - Atajo podría ser volátil! + ¡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 atajo a la AppImage actual. Hay posibilidad que esto no trabaja bien si actualizas ¿Continuar? + Esto creará un acceso directo a la AppImage actual. Puede que no funcione bien si actualiza. ¿Continuar? - + Failed to Create Shortcut - Fallo en Crear Atajo + Fallo al crear el acceso directo - + Failed to create a shortcut to %1 - Fallo en crear un atajo a %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. @@ -9235,92 +9968,92 @@ Asegúrate de que el directorio de datos de la aplicación tenga permisos de esc QtCommon::StringLookup - + Contains game save data. DO NOT REMOVE UNLESS YOU KNOW WHAT YOU'RE DOING! - Contiene datos de guardado del juego. NO ELIMINAR A MENOS QUE SEPAS LO QUE ESTAS HACIENDO! - - - - Contains Vulkan and OpenGL pipeline caches. Generally safe to remove. - Contiene las cachés de las pipelines de Vulkan y OpenGL. Generalmente es seguro eliminarlas. + 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 modificaciones del juego, parches y trucos. + 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. Versions 19.0.1 or earlier are recommended, as 20.0.0+ is currently experimental. - + + 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. @@ -9337,62 +10070,62 @@ Selecciona el botón correspondiente para transferir los datos desde ese emulado 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 header on Ryujinx title database. - + Invalid byte alignment on Ryujinx title database. + Alineación de bytes inválidos en la base de datos de títulos de Ryujinx. - Invalid magic header on Ryujinx title database. - + No items found in Ryujinx title database. + No se encontraron entradas en la base de datos de títulos de Ryujinx. - Invalid byte alignment on Ryujinx title database. - - - - - No items found in Ryujinx title database. - - - - Title %1 not found in Ryujinx title database. - + Título %1 no encontrado en la base de datos de títulos de Ryujinx. @@ -9431,7 +10164,7 @@ Se recomienda si deseas compartir datos entre emuladores. - + Pro Controller Controlador Pro @@ -9444,7 +10177,7 @@ Se recomienda si deseas compartir datos entre emuladores. - + Dual Joycons Joycons duales @@ -9457,7 +10190,7 @@ Se recomienda si deseas compartir datos entre emuladores. - + Left Joycon Joycon izquierdo @@ -9470,7 +10203,7 @@ Se recomienda si deseas compartir datos entre emuladores. - + Right Joycon Joycon derecho @@ -9499,7 +10232,7 @@ Se recomienda si deseas compartir datos entre emuladores. - + Handheld Portátil @@ -9620,32 +10353,32 @@ Se recomienda si deseas compartir datos entre emuladores. 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 @@ -9766,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? @@ -9800,13 +10533,13 @@ 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 @@ -9816,39 +10549,41 @@ p, li { white-space: pre-wrap; } 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 @@ -9882,45 +10617,9 @@ By selecting "From Eden", previous save data stored in Ryujinx will be Segundos: - + Total play time reached maximum. Se ha alcanzado el límite total de tiempo de juego. - - fs - - - 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 - - - - \ No newline at end of file + diff --git a/dist/languages/fi.ts b/dist/languages/fi.ts index 8e4d98aced..f29f994c13 100644 --- a/dist/languages/fi.ts +++ b/dist/languages/fi.ts @@ -30,7 +30,7 @@ li.checked::marker { content: "\2612"; } - <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/kXAmGCXBGD"><span style=" text-decoration: underline; color:#039be5;">Discord</span></a> | <a href="https://rvlt.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;">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;">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> @@ -366,390 +366,399 @@ This would ban both their forum username and their IP address. - + 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 - - Output Engine: + + Enable Overlay Applet - - Output Device: + + Enables Horizon's built-in overlay applet. Press and hold the home button for 1 second to show it. - Input Device: + Output Engine: - Mute audio + Output Device: - Volume: + Input Device: + + + + + Mute audio + Volume: + + + + Mute audio when in background - + Multicore CPU Emulation - + 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 4GB of the board to the devkit 8/6GB. + + 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. 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. - - Synchronize Core Speed + + 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.). Can help reduce stuttering at lower framerates. - + Accuracy: - + 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. - - Virtual Table Bouncing - - - - - Bounces (by emulating a 0-valued return) any functions that triggers a prefetch abort - - - - + 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) - + This option improves speed by reducing accuracy of fused-multiply-add instructions on CPUs without native FMA support. - + 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) - + 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 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: - + Changes the output graphics API. Vulkan is recommended. - + Device: - + This setting selects the GPU to use (Vulkan only). - - Shader Backend: - - - - - The shader backend to use with OpenGL. -GLSL is recommended. - - - - + Resolution: - + 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 using FSR's dynamic contrast. - + Anti-Aliasing Method: - + The anti-aliasing method to use. SMAA offers the best quality. 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 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 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 - + Runs an additional optimization pass over generated SPIRV shaders. Will increase time required for shader compilation. May slightly improve performance. @@ -757,35 +766,24 @@ 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. GPU: Use the GPU's compute shaders to decode ASTC textures (recommended). @@ -794,45 +792,55 @@ stuttering but may present artifacts. - + ASTC Recompression Method: - + 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. 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 allows tearing as it recovers from a slow down. Mailbox can have lower latency than FIFO and does not tear but may drop frames. @@ -840,1175 +848,1379 @@ Immediate (no synchronization) presents whatever is available and can exhibit te - + 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. Safe to set at 16x on most GPUs. - - GPU Accuracy: + + GPU Mode: - - Controls the 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 as a last resort. + + 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. - + DMA Accuracy: - + Controls the DMA precision accuracy. Safe precision fixes issues in some games but may degrade performance. - - Enable asynchronous shader compilation (Hack) + + Enable asynchronous shader compilation - + May reduce shader stutter. - - Fast GPU Time (Hack) + + 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) - + 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 numbers allow for more features and can increase performance, but may cause issues. -The default value is per-system. +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 some games. -Only Vulkan 1.0+ devices support this extension. + + Enables vertex input dynamic state feature for better quality and performance. - - Descriptor Indexing - - - - - Improves texture & buffer handling and the Maxwell translation layer. -Some Vulkan 1.1+ and all 1.2+ devices support this extension. - - - - + 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. - + Device Name - + The name of the console. - + Custom RTC Date: - + 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: - + This option can be overridden when region setting is auto-select - + Region: - + The region of the console. - + Time Zone: - + The time zone of the console. - + Sound Output Mode: - + Console 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. - + + Unit Serial + + + + + Battery Serial + + + + + Debug knobs + + + + 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 - + Overrides prompts asking to confirm stopping the emulation. Enabling it bypasses such prompts and directly exits the emulation. - + Hide mouse on inactivity - + Hides the mouse after 2.5s of inactivity. - + Disable controller applet - + 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 - + 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 - - - - - - Default - - - - - Unsafe (fast) - - - - - Safe (stable) - - - - + + 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 - + + + 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) - - Serbian (српски) + + 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 - + Stereo - + Surround - + 4GB DRAM (Default) - + 6GB DRAM (Unsafe) - + 8GB DRAM - + 10GB DRAM (Unsafe) - + 12GB DRAM (Unsafe) - + Docked - + Handheld - + + + 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 + + ConfigureApplets @@ -2080,7 +2292,7 @@ When a program attempts to open the controller applet, it is immediately closed. - + Auto @@ -2499,46 +2711,86 @@ Ota sisäiset sivutaulukot käyttöön + Use dev.keys + + + + Enable Debug Asserts - + 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. @@ -2599,13 +2851,13 @@ Ota sisäiset sivutaulukot käyttöön - + Audio Ääni - + CPU CPU (prosessori) @@ -2621,13 +2873,13 @@ Ota sisäiset sivutaulukot käyttöön - + General Yleiset - + Graphics Grafiikka @@ -2638,7 +2890,7 @@ Ota sisäiset sivutaulukot käyttöön - GraphicsExtensions + GraphicsExtra @@ -2648,7 +2900,7 @@ Ota sisäiset sivutaulukot käyttöön - + Controls Ohjainmääritykset @@ -2664,7 +2916,7 @@ Ota sisäiset sivutaulukot käyttöön - + System Järjestelmä @@ -2704,9 +2956,10 @@ Ota sisäiset sivutaulukot käyttöön - - - + + + + ... ... @@ -2716,90 +2969,184 @@ Ota sisäiset sivutaulukot käyttöön - + + Save Data + + + + Gamecard - + 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 Save Data Directory... + + + + Select Gamecard Path... - + Select Dump Directory... - + Select Mod Load Directory... + + + Save Data Directory + + + + + Choose an action for the save data directory: + + + + + 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? + + ConfigureGeneral @@ -2816,24 +3163,54 @@ Ota sisäiset sivutaulukot käyttöön - Linux + External Content - + + Add directories to scan for DLCs and Updates without installing to NAND + + + + + Add Directory + + + + + Remove Selected + + + + Reset All Settings - + 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 @@ -2863,33 +3240,33 @@ Ota sisäiset sivutaulukot käyttöön Taustan väri: - + % FSR sharpening percentage (e.g. 50%) - + Off - + VSync Off - + Recommended - + On - + VSync On @@ -2907,7 +3284,7 @@ Ota sisäiset sivutaulukot käyttöön Edistyneet asetukset - + Advanced Graphics Settings @@ -2921,16 +3298,26 @@ Ota sisäiset sivutaulukot käyttöön - Extensions + Extras - - Vulkan Extensions Settings + + Hacks - + + Changing these options from their default may cause issues. Novitii cavete! + + + + + Vulkan Extensions + + + + % Sample Shading percentage (e.g. 50%) @@ -3508,7 +3895,7 @@ Ota sisäiset sivutaulukot käyttöön - + Left Stick Vasen joystick @@ -3618,14 +4005,14 @@ Ota sisäiset sivutaulukot käyttöön - + ZL - + L @@ -3638,22 +4025,22 @@ Ota sisäiset sivutaulukot käyttöön - + Plus - + ZR - - + + R @@ -3710,7 +4097,7 @@ Ota sisäiset sivutaulukot käyttöön - + Right Stick Oikea joystick @@ -3878,88 +4265,88 @@ To invert the axes, first move your joystick vertically, and then horizontally.< - + Start / Pause - + Z - + Control 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" - + Delete Input Profile - + Failed to delete the input profile "%1" - + Load Input Profile - + Failed to load the input profile "%1" - + Save Input Profile - + Failed to save the input profile "%1" @@ -3982,15 +4369,6 @@ To invert the axes, first move your joystick vertically, and then horizontally.< Oletusasetukset - - ConfigureLinuxTab - - - - Linux - - - ConfigureMotionTouch @@ -4016,7 +4394,7 @@ To invert the axes, first move your joystick vertically, and then horizontally.< - + Configure Säädä @@ -4046,103 +4424,93 @@ To invert the axes, first move your joystick vertically, and then horizontally.< Portti: - - Learn More - - - - - + + Test - + Add Server - + Remove Server - - <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> - - - - + %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. @@ -4272,11 +4640,6 @@ Current values are %1% and %2% respectively. Enable Airplane Mode - - - None - None - ConfigurePerGame @@ -4331,52 +4694,57 @@ Current values are %1% and %2% respectively. - + Add-Ons Lisäosat - + System Järjestelmä - + CPU CPU (prosessori) - + Graphics Grafiikat - + Adv. Graphics - - GPU Extensions + + Ext. Graphics - + Audio Ääni - + Input Profiles - - Linux + + Network - + + Applets + + + + Properties Ominaisuudet @@ -4394,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 @@ -4431,38 +4894,18 @@ Current values are %1% and %2% respectively. Username Nimimerkki - - - Set Image - Aseta kuva - - Select Avatar - - - - 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)) @@ -4470,169 +4913,80 @@ 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 - - - + 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 - + Error saving user image - + Unable to save image to file - - Select User Image - Valitse käyttäjän kuva - - - - Image Formats (*.jpg *.jpeg *.png *.bmp) + + &Edit - - No firmware available + + &Delete - - 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. - - - - - ConfigureProfileManagerAvatarDialog - - - Select - - - - - Cancel - - - - - Background Color - - - - - Select Firmware Avatar + + Edit User ConfigureProfileManagerDeleteDialog - + Delete this user? All of the user's save data will be deleted. - + Confirm Delete - + Name: %1 UUID: %2 @@ -4799,7 +5153,7 @@ 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> @@ -4833,17 +5187,22 @@ UUID: %2 - + + Show recording dialog + + + + Script Directory - + Path - + ... ... @@ -4856,7 +5215,7 @@ UUID: %2 - + Select TAS Load Directory... @@ -4993,64 +5352,43 @@ Drag points to change position, or double-click table cells to edit values. ConfigureUI - - - + + None None - - Small (32x32) - - - - - Standard (64x64) - - - - - Large (128x128) - - - - - Full Size (256x256) - - - - + Small (24x24) - + Standard (48x48) - + Large (72x72) - + Filename Tiedostonimi - + Filetype - + Title ID Nimike ID - + Title Name @@ -5119,71 +5457,66 @@ Drag points to change position, or double-click table cells to edit values. - Game 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 @@ -5317,20 +5650,20 @@ Drag points to change position, or double-click table cells to edit values.Näytä tämänhetkinen peli Discordin tilanäkymässä - - + + All Good Tooltip - + Must be between 4-20 characters Tooltip - + Must be 48 characters, and lowercase a-z Tooltip @@ -5362,27 +5695,27 @@ Drag points to change position, or double-click table cells to edit values. - + Shaders - + UserNAND - + SysNAND - + Mods - + Saves @@ -5420,7 +5753,7 @@ Drag points to change position, or double-click table cells to edit values. - + Calculating... @@ -5443,12 +5776,12 @@ Drag points to change position, or double-click table cells to edit values. - + Dependency - + Version @@ -5622,44 +5955,44 @@ Please go to Configure -> System -> Network and make a selection. GRenderWindow - - + + OpenGL not available! openGL ei ole saatavilla! - + OpenGL shared contexts are not supported. - + 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 @@ -5667,203 +6000,208 @@ Please go to Configure -> System -> Network and make a selection. GameList - + + &Add New Game Directory + + + + 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 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 - + 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 @@ -5871,62 +6209,62 @@ Please go to Configure -> System -> Network and make a selection. GameListItemCompat - + Ingame - + Game starts, but crashes or major glitches prevent it from being completed. - + Perfect Täydellinen - + 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/Valikko - + 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 @@ -5934,7 +6272,7 @@ Please go to Configure -> System -> Network and make a selection. GameListPlaceholder - + Double-click to add a new folder to the game list Tuplaklikkaa lisätäksesi uusi kansio pelilistaan. @@ -5942,17 +6280,17 @@ Please go to Configure -> System -> Network and make a selection. GameListSearchField - + %1 of %n result(s) - + Filter: Suodatin: - + Enter pattern to filter Syötä suodatettava tekstipätkä @@ -6028,12 +6366,12 @@ Please go to Configure -> System -> Network and make a selection. 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. Debug Message: @@ -6042,189 +6380,207 @@ 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 - + 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 @@ -6276,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 @@ -6340,42 +6696,42 @@ Debug Message: - + Password Required to Join - + Password: - + Players - + Room Name - + Preferred Game - + Host - + Refreshing - + Refresh List @@ -6424,1171 +6780,1153 @@ Debug Message: + &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 - + Am&iibo - - &Applets + + 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 - + 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 - + &Capture Screenshot - - - Open &Album - - - - - &Set Nickname and Owner - - - - - &Delete Game Data - - - &Restore Amiibo + &Album - &Format Amiibo + &Set Nickname and Owner - Open &Mii Editor + &Delete Game Data + &Restore Amiibo + + + + + &Format Amiibo + + + + + &Mii Editor + + + + &Configure TAS... - + Configure C&urrent Game... - - + + &Start &Käynnistä - + &Reset - - + + R&ecord - + Open &Controller Menu - + Install Decryption &Keys - - Open &Home Menu + + &Home Menu - - Open &Setup - - - - + &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.<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>. + + 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><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. + + 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/Revolt for help. + + %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 - - Please install firmware to use the Album applet. - - - - - Album Applet - - - - - Album applet is not available. Please reinstall firmware. - - - - - Please install firmware to use the Cabinet applet. - - - - - Cabinet Applet - - - - - Cabinet applet is not available. Please reinstall firmware. - - - - - Please install firmware to use the Mii editor. - - - - - Mii Edit Applet - - - - - Mii editor is not available. Please reinstall firmware. - - - - - Please install firmware to use the Controller Menu. - - - - - Controller Applet - - - - - Controller Menu is not available. Please reinstall firmware. - - - - + Firmware Corrupted - - Home Menu Applet + + Unknown applet - - Home Menu is not available. Please reinstall firmware. + + Applet doesn't map to a known value. - - Please install firmware to use Starter. + + Record not found - - Starter Applet + + Applet not found. Please reinstall firmware. - - Starter is not available. Please reinstall firmware. - - - - + Capture Screenshot - + PNG Image (*.png) - + Update Available - - Download the %1 update? - - - - - TAS state: Running %1/%2 - - - - - TAS state: Recording %1 - - - - - TAS state: Idle %1/%2 - - - - - TAS State: Invalid - - - - - &Stop Running + + 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 - - %1 %2 - - - - + FSR - + NO AA - + VOLUME: MUTE - + VOLUME: %1% Volume percentage (e.g. 50%) - + Derivation Components Missing - - Encryption keys are 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. @@ -7596,69 +7934,79 @@ 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? - - - None - - FXAA @@ -7685,27 +8033,27 @@ Would you like to bypass this and exit anyway? - + Zero-Tangent - + B-Spline - + Mitchell - + Spline-1 - + Gaussian @@ -7741,17 +8089,17 @@ Would you like to bypass this and exit anyway? - Normal + Fast - High + Balanced - Extreme + Accurate @@ -7760,41 +8108,36 @@ Would you like to bypass this and exit anyway? - - OpenGL + + OpenGL GLSL - - Null + + OpenGL SPIRV - GLSL + OpenGL GLASM - GLASM - - - - - SPIRV + Null MigrationWorker - + 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. @@ -7805,7 +8148,7 @@ If this is not desirable, delete the following files: - + 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: @@ -7813,11 +8156,24 @@ If you wish to clean up the files which were left in the old data location, you - + Data was migrated successfully. + + ModSelectDialog + + + Dialog + + + + + The specified folder or archive contains the following mods. Select which ones to install. + + + ModerationDialog @@ -7940,6 +8296,135 @@ Proceed anyway? + + 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 + + + OverlayDialog @@ -7969,50 +8454,122 @@ p, li { white-space: pre-wrap; } + + 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 - - - - Installed NAND Titles - Asennetut NAND-sovellukset - - - - System Titles - Järjestelmäsovellukset - - - - Add New Game Directory - Lisää uusi pelikansio - - - - Favorites - - - - - - + + + Migration - + Clear Shader Cache @@ -8045,18 +8602,18 @@ p, li { white-space: pre-wrap; } - + You can manually re-trigger this prompt by deleting the new config directory: %1 - + Migrating - + Migrating, this may take a while... @@ -8438,15 +8995,60 @@ p, li { white-space: pre-wrap; } - + %1 is not playing a game - + %1 is playing %2 + + + Play Time: %1 + + + + + Never Played + + + + + Version: %1 + + + + + Version: 1.0.0 + + + + + Installed SD Titles + Asennetut SD-sovellukset + + + + Installed NAND Titles + Asennetut NAND-sovellukset + + + + System Titles + Järjestelmäsovellukset + + + + Add New Game Directory + Lisää uusi pelikansio + + + + Favorites + + QtAmiiboSettingsDialog @@ -8564,250 +9166,250 @@ p, li { white-space: pre-wrap; } 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. @@ -8815,22 +9417,22 @@ Only do this if you're 100% sure you want to delete this data. QtCommon::FS - + Linked Save Data - + Save data has been linked. - + Failed to link save data - + Could not link directory: %1 To: @@ -8838,268 +9440,357 @@ To: - + 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. @@ -9107,83 +9798,83 @@ To: 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. Versions 19.0.1 or earlier are recommended, as 20.0.0+ is currently experimental. + + Firmware missing. Firmware is required to run certain games and use the Home Menu. @@ -9204,56 +9895,56 @@ 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. @@ -9294,7 +9985,7 @@ This is recommended if you want to share data between emulators. - + Pro Controller @@ -9307,7 +9998,7 @@ This is recommended if you want to share data between emulators. - + Dual Joycons @@ -9320,7 +10011,7 @@ This is recommended if you want to share data between emulators. - + Left Joycon @@ -9333,7 +10024,7 @@ This is recommended if you want to share data between emulators. - + Right Joycon @@ -9362,7 +10053,7 @@ This is recommended if you want to share data between emulators. - + Handheld Käsikonsolimoodi @@ -9483,32 +10174,32 @@ This is recommended if you want to share data between emulators. - + GameCube Controller - + Poke Ball Plus - + NES Controller - + SNES Controller - + N64 Controller - + Sega Genesis @@ -9653,13 +10344,13 @@ p, li { white-space: pre-wrap; } - - + + OK OK - + Cancel Peruuta @@ -9694,12 +10385,12 @@ By selecting "From Eden", previous save data stored in Ryujinx will be - + Failed to link save data - + OS returned error: %1 @@ -9735,45 +10426,9 @@ By selecting "From Eden", previous save data stored in Ryujinx will be - + Total play time reached maximum. - - fs - - - 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 - - - - \ No newline at end of file + diff --git a/dist/languages/fr.ts b/dist/languages/fr.ts index 2998d110aa..1339bd47ed 100644 --- a/dist/languages/fr.ts +++ b/dist/languages/fr.ts @@ -37,8 +37,8 @@ li.checked::marker { content: "\2612"; } - <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/kXAmGCXBGD"><span style=" text-decoration: underline; color:#039be5;">Discord</span></a> | <a href="https://rvlt.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;">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/kXAmGCXBGD"><span style=" text-decoration: underline; color:#039be5;">Discord</span></a> | <a href="https://rvlt.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><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> @@ -375,141 +375,150 @@ Cela bannirait à la fois son nom d'utilisateur du forum et son adresse IP. % - + 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 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 4GB of the board to the devkit 8/6GB. + + Increases the amount of emulated RAM. Doesn't affect performance/stability but may allow HD texture mods to load. - Augmente la quantité de RAM émulée de 4 Go sur la Switch à 8/6 Go comme sur les kits de développement. -Cela n’affecte pas les performances ni la stabilité, mais peut permettre le chargement de mods de textures HD. + - + 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. 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. @@ -518,72 +527,82 @@ 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 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.). 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 : - + Change the accuracy of the emulated CPU (for debugging only). Modifie la précision du CPU émulé (réservé au débogage). - - + + Backend: Arrière-plan : - - Fast CPU Time - Temps CPU rapide + + 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. - - Virtual Table Bouncing - - - - - Bounces (by emulating a 0-valued return) any functions that triggers a prefetch abort - - - - + 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. @@ -592,112 +611,100 @@ L'activer permet à l'invité de lire/écrire directement dans la mém 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 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 : - + 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 (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 with OpenGL. -GLSL is recommended. - Le moteur de shaders à utiliser avec OpenGL. -GLSL est recommandé. - - - + Resolution: Résolution : - + Forces to render at a different resolution. Higher resolutions require more VRAM and bandwidth. Options lower than 1X can cause artifacts. @@ -706,27 +713,27 @@ 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 : - + FSR Sharpness: Netteté 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 can produce a more stable picture in lower resolutions. @@ -735,12 +742,12 @@ SMAA offre la meilleure qualité. 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. @@ -749,12 +756,12 @@ 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 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. @@ -763,24 +770,24 @@ La plupart des jeux ne supportent que le format 16:9, donc des modifications son Contrôle également le format des captures d’écran. - + 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 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. @@ -791,24 +798,12 @@ 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 : - + 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. @@ -817,12 +812,12 @@ 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. GPU: Use the GPU's compute shaders to decode ASTC textures (recommended). @@ -834,12 +829,12 @@ GPU : Utiliser les shaders de calcul du GPU pour décoder les textures ASTC (rec 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 : - + 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. @@ -847,34 +842,44 @@ BC1/BC3: The intermediate format will be recompressed to BC1 or BC3 format, 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. 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 allows tearing as it recovers from a slow down. Mailbox can have lower latency than FIFO and does not tear but may drop frames. @@ -885,12 +890,12 @@ Mailbox peut offrir une latence inférieure à FIFO et n’entraîne pas de déc 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. @@ -899,104 +904,144 @@ Cette option corrige des problèmes dans les jeux, mais peut dégrader les perfo 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 (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. 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. - - GPU Accuracy: - Précision du GPU + + GPU Mode: + Mode GPU : - - Controls the 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 as a last resort. - Contrôle la précision de l’émulation GPU. -La plupart des jeux s’affichent correctement en mode Normal, mais le mode Élevé reste nécessaire pour certains. -Les particules ont généralement besoin du mode Élevé pour être rendues correctement. -Le mode Extrême ne devrait être utilisé qu’en dernier recours. + + 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. + - + DMA Accuracy: Précision du DMA : - + 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. - - Enable asynchronous shader compilation (Hack) - Activer la compilation asynchrone des shaders (Hack) + + Enable asynchronous shader compilation + Activer la compilation asynchrone des shaders - + May reduce shader stutter. Peut réduire les saccades dues aux shaders. - - Fast GPU Time (Hack) - Temps GPU rapide (Hack) + + Fast GPU Time + Temps GPU rapide - + Overclocks the emulated GPU to increase dynamic resolution and render distance. -Use 128 for maximal performance and 512 for maximal graphics fidelity. - Surcadence le GPU émulé afin d’augmenter la résolution dynamique et la distance d’affichage. -Utilisez 128 pour des performances maximales et 512 pour une fidélité graphique maximale. +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 (Vulkan sur Intel uniquement) - + 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. @@ -1005,80 +1050,95 @@ Ce réglage n’existe que pour les pilotes propriétaires Intel et peut provoqu 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. - + 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 numbers allow for more features and can increase performance, but may cause issues. -The default value is per-system. - Contrôle le nombre de fonctionnalités utilisables dans l’État Dynamique Étendu. -Un nombre plus élevé permet d’activer plus de fonctionnalités et peut améliorer les performances, mais peut aussi provoquer des problèmes. -La valeur par défaut dépend du système. +Higher states allow for more features and can increase performance, but may cause additional graphical issues. + - - Provoking Vertex - Vertex provoquant + + Vertex Input Dynamic State + - - Improves lighting and vertex handling in some games. -Only Vulkan 1.0+ devices support this extension. - Améliore l’éclairage et la gestion des points 3D dans certains jeux. -Seuls les appareils compatibles avec Vulkan 1.0+ prennent en charge cette extension. + + Enables vertex input dynamic state feature for better quality and performance. + - - Descriptor Indexing - Indexation des descripteurs - - - - Improves texture & buffer handling and the Maxwell translation layer. -Some Vulkan 1.1+ and all 1.2+ devices support this extension. - Améliore la gestion des textures et des tampons ainsi que la couche de traduction Maxwell. -Certains appareils compatibles Vulkan 1.1+ et tous ceux en 1.2+ prennent en charge cette extension. - - - + 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. @@ -1086,86 +1146,86 @@ 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. 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 console. Nom de la console. - + Custom RTC Date: Date RTC personnalisée : - + This option allows to change the clock of the console. Can be used to manipulate time in games. 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 : - + 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 console. Région de la console. - + Time Zone: Fuseau horaire : - + 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 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. @@ -1174,908 +1234,1049 @@ Les jeux adaptent leur résolution, leurs paramètres graphiques et les manettes Passer en mode Portable peut améliorer les performances sur les systèmes peu puissants. - + + Unit Serial + + + + + Battery Serial + + + + + Debug knobs + + + + Prompt for user profile on boot Choisir l’utilisateur au démarrage. - + Useful if multiple people use the same PC. Utile si plusieurs personnes utilisent le même PC. - + Pause when not in focus Pause lorsque la fenêtre n’est pas active. - + Pauses emulation when focusing on other windows. Met l’émulation en pause dès que l’utilisateur change de fenêtre. - + Confirm before stopping emulation Confirmer avant d'arrêter l'émulation - + Overrides prompts asking to confirm stopping the emulation. Enabling it bypasses such prompts and directly exits the emulation. 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é - + 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 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 - - - - - Default - Par défaut - - - - Unsafe (fast) - Insecure (rapide) - - - - Safe (stable) - Sûr (stable) - - - + + 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 - + + + 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) - - Serbian (српски) - Serbe (српски) + + 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) - + 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 - - Low (128) - Faible (128) - - - + + 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 @@ -2147,7 +2348,7 @@ Lorsqu’un programme tente d’ouvrir ce menu, il est immédiatement fermé.
Restaurer les paramètres par défaut - + Auto Auto @@ -2598,46 +2799,86 @@ Lorsqu’un programme tente d’ouvrir ce menu, il est immédiatement fermé. + Use dev.keys + + + + Enable Debug Asserts Activer les assertions de débogage - + Debugging Débogage - + + 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. 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. - + 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** - + Censor username in logs Censurer le nom d'utilisateur dans les logs - + **This will be reset automatically when Eden closes. **Ceci sera automatiquement réinitialisé à la fermeture d'Eden. @@ -2698,13 +2939,13 @@ Lorsqu’un programme tente d’ouvrir ce menu, il est immédiatement fermé. - + Audio Son - + CPU CPU @@ -2720,13 +2961,13 @@ Lorsqu’un programme tente d’ouvrir ce menu, il est immédiatement fermé. - + General Général - + Graphics Vidéo @@ -2737,8 +2978,8 @@ Lorsqu’un programme tente d’ouvrir ce menu, il est immédiatement fermé. - GraphicsExtensions - Extensions graphiques + GraphicsExtra + @@ -2747,7 +2988,7 @@ Lorsqu’un programme tente d’ouvrir ce menu, il est immédiatement fermé. - + Controls Contrôles @@ -2763,7 +3004,7 @@ Lorsqu’un programme tente d’ouvrir ce menu, il est immédiatement fermé. - + System Système @@ -2803,9 +3044,10 @@ Lorsqu’un programme tente d’ouvrir ce menu, il est immédiatement fermé. - - - + + + + ... ... @@ -2815,90 +3057,184 @@ Lorsqu’un programme tente d’ouvrir ce menu, il est immédiatement fermé.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... + + + Save Data Directory + + + + + Choose an action for the save data directory: + + + + + 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? + + ConfigureGeneral @@ -2915,24 +3251,54 @@ Lorsqu’un programme tente d’ouvrir ce menu, il est immédiatement fermé. - 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 - + 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 @@ -2962,33 +3328,33 @@ Lorsqu’un programme tente d’ouvrir ce menu, il est immédiatement fermé.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 @@ -3006,7 +3372,7 @@ Lorsqu’un programme tente d’ouvrir ce menu, il est immédiatement fermé.Avancée - + Advanced Graphics Settings Paramètres Vidéo Avancés @@ -3020,16 +3386,26 @@ Lorsqu’un programme tente d’ouvrir ce menu, il est immédiatement fermé. - Extensions - Extensions + Extras + - - Vulkan Extensions Settings - Paramètres des extensions de Vulkan + + Hacks + - + + Changing these options from their default may cause issues. Novitii cavete! + + + + + Vulkan Extensions + + + + % Sample Shading percentage (e.g. 50%) % @@ -3607,7 +3983,7 @@ Lorsqu’un programme tente d’ouvrir ce menu, il est immédiatement fermé. - + Left Stick Stick Gauche @@ -3717,14 +4093,14 @@ Lorsqu’un programme tente d’ouvrir ce menu, il est immédiatement fermé. - + ZL ZL - + L L @@ -3737,22 +4113,22 @@ Lorsqu’un programme tente d’ouvrir ce menu, il est immédiatement fermé. - + Plus Plus - + ZR ZR - - + + R R @@ -3809,7 +4185,7 @@ Lorsqu’un programme tente d’ouvrir ce menu, il est immédiatement fermé. - + Right Stick Stick Droit @@ -3978,88 +4354,88 @@ Pour inverser les axes, bougez d'abord votre joystick verticalement, puis h 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" @@ -4082,15 +4458,6 @@ Pour inverser les axes, bougez d'abord votre joystick verticalement, puis h Par défaut - - ConfigureLinuxTab - - - - Linux - Linux - - ConfigureMotionTouch @@ -4116,7 +4483,7 @@ Pour inverser les axes, bougez d'abord votre joystick verticalement, puis h - + Configure Configurer @@ -4146,103 +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://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> - <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;">En savoir plus</span></a> - - - + %1:%2 %1:%2 + + - - - - - + + + Eden Eden - + Port number has invalid characters Le numéro de port contient des caractères invalides - + 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. @@ -4373,11 +4730,6 @@ Les valeurs actuelles sont respectivement de %1% et %2%. Enable Airplane Mode Activer le mode avion - - - None - Aucun - ConfigurePerGame @@ -4432,52 +4784,57 @@ 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 - Extensions GPU + + Ext. Graphics + - + Audio Audio - + Input Profiles Profils d'entrée - - Linux - Linux + + Network + - + + Applets + + + + Properties Propriétés @@ -4495,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 @@ -4532,38 +4984,18 @@ Les valeurs actuelles sont respectivement de %1% et %2%. Username Nom d'utilisateur - - - Set Image - Mettre une image - - Select Avatar - Sélectionner un avatar - - - 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)) @@ -4571,169 +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 : - - - + 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 saving user image Erreur lors de l'enregistrement de la photo de profile - + Unable to save image to file Impossible d’enregistrer l’image. - - Select User Image - Sélectionner l'image de l'utilisateur + + &Edit + - - Image Formats (*.jpg *.jpeg *.png *.bmp) - Format d'images (*.jpg *.jpeg *.png *.bmp) + + &Delete + - - No firmware available - Pas de firmware disponible - - - - Please install the firmware to use firmware avatars. - Veuillez installer le firmware pour utiliser les avatars de la Switch. - - - - - Error loading archive - Erreur lors du chargement de l'archive - - - - Archive is not available. Please install/reinstall firmware. - L’archive n’est pas disponible. Merci d'installer ou réinstaller le firmware. - - - - Could not locate RomFS. Your file or decryption keys may be corrupted. - Impossible de localiser les données de jeu. Votre fichier ou vos clés de déchiffrement sont peut-être corrompus. - - - - Error extracting archive - Erreur lors de l’extraction de l’archive. - - - - Could not extract RomFS. Your file or decryption keys may be corrupted. - Impossible d’extraire les données de jeu. Votre fichier ou vos clés de déchiffrement sont peut-être corrompus. - - - - Error finding image directory - Impossible de trouver le répertoire des images. - - - - Failed to find image directory in the archive. - Impossible de trouver le répertoire des images dans l'archive. - - - - No images found - Aucune image trouvée. - - - - No avatar images were found in the archive. - Aucune image d'avatar trouvée dans l'archive. - - - - ConfigureProfileManagerAvatarDialog - - - Select - Choisir - - - - Cancel - Annuler - - - - Background Color - Couleur de l’arrière-plan. - - - - Select Firmware Avatar - Sélectionner l'avatar du système. + + 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 @@ -4901,8 +5244,8 @@ 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>Lit les entrées du contrôleur à partir de scripts dans le même format que les scripts TAS-nx.<br/>Pour une explication plus détaillée, veuillez consulter la <a href="https://eden-emulator.github.io/help/feature/tas/"><span style=" text-decoration: underline; color:#039be5;">page d’aide</span></a> sur le site d'Eden.</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> + @@ -4935,17 +5278,22 @@ UUID : %2 Mettre en pause l'exécution pendant le chargement - + + Show recording dialog + + + + Script Directory Dossier de script - + Path Chemin - + ... ... @@ -4958,7 +5306,7 @@ UUID : %2 Configuration du TAS - + Select TAS Load Directory... Sélectionner le dossier de chargement du TAS... @@ -5096,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 @@ -5222,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) @@ -5420,20 +5742,20 @@ Faites glisser les points pour modifier la position ou double-cliquez sur les ce Afficher le jeu en cours dans le Statut Discord - - + + All Good Tooltip Tout est OK. - + Must be between 4-20 characters Tooltip Doit comporter entre 4 et 20 caractères. - + Must be 48 characters, and lowercase a-z Tooltip Doit comporter 48 caractères, en minuscules (a-z). @@ -5465,27 +5787,27 @@ Faites glisser les points pour modifier la position ou double-cliquez sur les ce La suppression de TOUTES les données est IRRÉVERSIBLE ! - + Shaders Shaders - + UserNAND NAND utilisateur - + SysNAND SysNAND - + Mods Mods - + Saves Sauvegardes @@ -5523,7 +5845,7 @@ Faites glisser les points pour modifier la position ou double-cliquez sur les ce 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… @@ -5546,12 +5868,12 @@ Faites glisser les points pour modifier la position ou double-cliquez sur les ce <html><head/><body><p>Les projets qui rendent Eden possible</p></body></html> - + Dependency Dépendance - + Version Version @@ -5727,44 +6049,44 @@ Veuillez aller dans Configurer -> Système -> Réseau puis en choisir une. 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. - + Eden has not been compiled with OpenGL support. Eden n'a pas été compilé avec le support OpenGL - - + + 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 @@ -5772,203 +6094,208 @@ Veuillez aller dans Configurer -> Système -> Réseau puis en choisir une. 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 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 - + 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 @@ -5976,62 +6303,62 @@ Veuillez aller dans Configurer -> Système -> Réseau puis en choisir une. 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é. @@ -6039,7 +6366,7 @@ Veuillez aller dans Configurer -> Système -> Réseau puis en choisir une. GameListPlaceholder - + Double-click to add a new folder to the game list Double-cliquez pour ajouter un nouveau dossier à la liste de jeux @@ -6047,17 +6374,17 @@ Veuillez aller dans Configurer -> Système -> Réseau puis en choisir une. GameListSearchField - + %1 of %n result(s) %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 @@ -6133,12 +6460,12 @@ Veuillez aller dans Configurer -> Système -> Réseau puis en choisir une. 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. Debug Message: É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. @@ -6148,189 +6475,207 @@ 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 - + Configure Current Game Configurer le jeu actuel - + Continue/Pause Emulation Continuer/Suspendre l'Émulation - + Exit Fullscreen Quitter le plein écran - + Exit Eden Fermer 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 @@ -6383,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 @@ -6447,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 @@ -6531,1171 +6876,1153 @@ Message de 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 - + Am&iibo Am&iibo - - &Applets - &Mini‑programmes système + + 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 &À propos d'Eden - + 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 - + &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 Decryption &Keys Installer les &clés de déchiffrement - - Open &Home Menu - Ouvrir le &Menu d’accueil + + &Home Menu + - - Open &Setup - Ouvrir &les Paramètres - - - + &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.<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>. + + 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><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. + + 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/Revolt for help. + + %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 - - Please install firmware to use the Album applet. - - - - - Album Applet - - - - - Album applet is not available. Please reinstall firmware. - - - - - Please install firmware to use the Cabinet applet. - - - - - Cabinet Applet - - - - - Cabinet applet is not available. Please reinstall firmware. - - - - - Please install firmware to use the Mii editor. - - - - - Mii Edit Applet - - - - - Mii editor is not available. Please reinstall firmware. - - - - - Please install firmware to use the Controller Menu. - - - - - Controller Applet - - - - - Controller Menu is not available. Please reinstall firmware. - - - - + Firmware Corrupted Firmware corrompu - - Home Menu Applet + + Unknown applet - - Home Menu is not available. Please reinstall firmware. + + Applet doesn't map to a known value. - - Please install firmware to use Starter. + + Record not found - - Starter Applet + + Applet not found. Please reinstall firmware. - - Starter is not available. Please reinstall firmware. - - - - + Capture Screenshot - + PNG Image (*.png) - + Update Available - - Download the %1 update? - - - - - TAS state: Running %1/%2 - - - - - TAS state: Recording %1 - - - - - TAS state: Idle %1/%2 - - - - - TAS State: Invalid - - - - - &Stop Running + + 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 - - %1 %2 - - - - + FSR FSR - + NO AA - + VOLUME: MUTE VOLUME : MUET - + VOLUME: %1% Volume percentage (e.g. 50%) - + Derivation Components Missing - - Encryption keys are 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. @@ -7703,69 +8030,79 @@ 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? - - - None - Aucun - FXAA @@ -7792,27 +8129,27 @@ Would you like to bypass this and exit anyway? Bicubique - + Zero-Tangent Zero-Tangente - + B-Spline B-Spline - + Mitchell Mitchell - + Spline-1 Spline-1 - + Gaussian Gaussien @@ -7848,18 +8185,18 @@ Would you like to bypass this and exit anyway? - Normal - Normal + Fast + - High - Haut + Balanced + - Extreme - Extrême + Accurate + @@ -7867,42 +8204,37 @@ Would you like to bypass this and exit anyway? Vulkan - - OpenGL - OpenGL + + OpenGL GLSL + - - Null + + OpenGL SPIRV - GLSL + OpenGL GLASM - GLASM - - - - - SPIRV + Null MigrationWorker - + 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. @@ -7919,7 +8251,7 @@ Si cela n'est pas convenable, supprimez les fichiers suivants : %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: @@ -7930,11 +8262,24 @@ Si vous souhaitez supprimer les fichiers qui ont été laissés dans l'anci %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. + + + ModerationDialog @@ -8059,6 +8404,135 @@ Continuer quand même ? Vous êtes sur le point de quitter le salon. Toutes les connexions réseau seront fermées. + + 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 + + + OverlayDialog @@ -8092,50 +8566,122 @@ 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 - - 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 - - - - - + + + Migration Migration - + Clear Shader Cache Supprimer le cache de shader @@ -8170,19 +8716,19 @@ p, li { white-space: pre-wrap; } Non - + 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... @@ -8564,15 +9110,60 @@ p, li { white-space: pre-wrap; } Ne joue pas à un jeu - + %1 is not playing a game %1 ne joue pas à un jeu - + %1 is playing %2 %1 joue à %2 + + + Play Time: %1 + + + + + Never Played + + + + + 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 + QtAmiiboSettingsDialog @@ -8690,47 +9281,47 @@ p, li { white-space: pre-wrap; } 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 @@ -8739,204 +9330,204 @@ p, li { white-space: pre-wrap; } %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. @@ -8944,22 +9535,22 @@ Ne faites cela que si vous êtes sûr à 100 % de vouloir supprimer ces donné 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: @@ -8970,268 +9561,357 @@ 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. @@ -9239,83 +9919,83 @@ To: 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. Versions 19.0.1 or earlier are recommended, as 20.0.0+ is currently experimental. + + Firmware missing. Firmware is required to run certain games and use the Home Menu. @@ -9338,59 +10018,59 @@ Sélectionnez le bouton correspondant pour migrer les données depuis cet émula 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. @@ -9431,7 +10111,7 @@ Ceci est recommandé si vous souhaitez partager les données entre les émulateu - + Pro Controller Manette Switch Pro @@ -9444,7 +10124,7 @@ Ceci est recommandé si vous souhaitez partager les données entre les émulateu - + Dual Joycons Deux Joycons @@ -9457,7 +10137,7 @@ Ceci est recommandé si vous souhaitez partager les données entre les émulateu - + Left Joycon Joycon gauche @@ -9470,7 +10150,7 @@ Ceci est recommandé si vous souhaitez partager les données entre les émulateu - + Right Joycon Joycon droit @@ -9499,7 +10179,7 @@ Ceci est recommandé si vous souhaitez partager les données entre les émulateu - + Handheld Mode Portable @@ -9620,32 +10300,32 @@ Ceci est recommandé si vous souhaitez partager les données entre les émulateu 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 @@ -9800,13 +10480,13 @@ 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 @@ -9843,12 +10523,12 @@ En sélectionnant « Depuis Eden », les données de sauvegarde précédemment s Annuler - + Failed to link save data - + OS returned error: %1 @@ -9884,45 +10564,9 @@ En sélectionnant « Depuis Eden », les données de sauvegarde précédemment s Secondes : - + Total play time reached maximum. Le temps de jeu total a atteint le maximum. - - fs - - - 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 - - - - \ No newline at end of file + diff --git a/dist/languages/hu.ts b/dist/languages/hu.ts index b691071f64..ad9a959bb8 100644 --- a/dist/languages/hu.ts +++ b/dist/languages/hu.ts @@ -30,7 +30,7 @@ li.checked::marker { content: "\2612"; } - <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/kXAmGCXBGD"><span style=" text-decoration: underline; color:#039be5;">Discord</span></a> | <a href="https://rvlt.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;">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;">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> @@ -368,356 +368,365 @@ Ez kitiltaná a fórum felhasználóneve és az IP címe alapján. % - + 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 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 4GB of the board to the devkit 8/6GB. + + 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. 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. - - Synchronize Core Speed + + 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.). Can help reduce stuttering at lower framerates. - + Accuracy: Pontosság: - + 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. - - Virtual Table Bouncing - - - - - Bounces (by emulating a 0-valued return) any functions that triggers a prefetch abort - - - - + 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 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: - + Changes the output graphics API. Vulkan is recommended. - + Device: Eszköz: - + This setting selects the GPU to use (Vulkan only). - - Shader Backend: - Árnyékoló Backend: - - - - The shader backend to use with OpenGL. -GLSL is recommended. - - - - + Resolution: Felbontás: - + 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 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 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. @@ -726,36 +735,36 @@ 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 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 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 - + Runs an additional optimization pass over generated SPIRV shaders. Will increase time required for shader compilation. May slightly improve performance. @@ -763,24 +772,12 @@ 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. @@ -789,12 +786,12 @@ 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. GPU: Use the GPU's compute shaders to decode ASTC textures (recommended). @@ -803,45 +800,55 @@ stuttering but may present artifacts. - + ASTC Recompression Method: ASTC újraszűrési módszer: - + 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. 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 allows tearing as it recovers from a slow down. Mailbox can have lower latency than FIFO and does not tear but may drop frames. @@ -849,1175 +856,1379 @@ Immediate (no synchronization) presents whatever is available and can exhibit te - + 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. Safe to set at 16x on most GPUs. - - GPU Accuracy: + + GPU Mode: - - Controls the 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 as a last resort. + + 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. - + DMA Accuracy: - + Controls the DMA precision accuracy. Safe precision fixes issues in some games but may degrade performance. - - Enable asynchronous shader compilation (Hack) + + Enable asynchronous shader compilation - + May reduce shader stutter. - - Fast GPU Time (Hack) + + 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 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) - + 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 numbers allow for more features and can increase performance, but may cause issues. -The default value is per-system. +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 some games. -Only Vulkan 1.0+ devices support this extension. + + Enables vertex input dynamic state feature for better quality and performance. - - Descriptor Indexing - - - - - Improves texture & buffer handling and the Maxwell translation layer. -Some Vulkan 1.1+ and all 1.2+ devices support this extension. - - - - + 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. - + Device Name Eszköznév - + The name of the console. - + Custom RTC Date: Egyéni RTC dátum: - + 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: Nyelv: - + This option can be overridden when region setting is auto-select - + Region: Régió: - + The region of the console. - + Time Zone: Időzóna: - + The time zone of the console. - + Sound Output Mode: Hangkimeneti mód: - + Console Mode: Konzol mód: - + 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. - + + Unit Serial + + + + + Battery Serial + + + + + Debug knobs + + + + 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 Emuláció leállításának megerősítése - + Overrides prompts asking to confirm stopping the emulation. Enabling it bypasses such prompts and directly exits the emulation. - + Hide mouse on inactivity Egér elrejtése inaktivitáskor - + Hides the mouse after 2.5s of inactivity. - + Disable controller applet Vezérlő applet letiltása - + 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 - - - - - Default - Alapértelmezett - - - - Unsafe (fast) - - - - - Safe (stable) - - - - + + 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 - + + + 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) - - Serbian (српски) + + 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) - + 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á - - 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 + + ConfigureApplets @@ -2089,7 +2300,7 @@ When a program attempts to open the controller applet, it is immediately closed. Visszaállítás - + Auto Automatikus @@ -2513,46 +2724,86 @@ When a program attempts to open the controller applet, it is immediately closed. + Use dev.keys + + + + Enable Debug Asserts - + Debugging Hibakeresés - + + 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** 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** - + Censor username in logs - + **This will be reset automatically when Eden closes. @@ -2613,13 +2864,13 @@ When a program attempts to open the controller applet, it is immediately closed. - + Audio Hang - + CPU CPU @@ -2635,13 +2886,13 @@ When a program attempts to open the controller applet, it is immediately closed. - + General Általános - + Graphics Grafika @@ -2652,7 +2903,7 @@ When a program attempts to open the controller applet, it is immediately closed. - GraphicsExtensions + GraphicsExtra @@ -2662,7 +2913,7 @@ When a program attempts to open the controller applet, it is immediately closed. - + Controls Irányítás @@ -2678,7 +2929,7 @@ When a program attempts to open the controller applet, it is immediately closed. - + System Rendszer @@ -2718,9 +2969,10 @@ When a program attempts to open the controller applet, it is immediately closed. - - - + + + + ... ... @@ -2730,90 +2982,184 @@ When a program attempts to open the controller applet, it is immediately closed. 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... + + + Save Data Directory + + + + + Choose an action for the save data directory: + + + + + 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? + + ConfigureGeneral @@ -2830,24 +3176,54 @@ When a program 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 Összes beállítás visszaállítása - + 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 @@ When a program attempts to open the controller applet, it is immediately closed. 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 @@ When a program attempts to open the controller applet, it is immediately closed. Haladó - + Advanced Graphics Settings Haladó grafikai beállítások @@ -2935,16 +3311,26 @@ When a program attempts to open the controller applet, it is immediately closed. - Extensions + Extras - - Vulkan Extensions Settings + + Hacks - + + Changing these options from their default may cause issues. Novitii cavete! + + + + + Vulkan Extensions + + + + % Sample Shading percentage (e.g. 50%) @@ -3522,7 +3908,7 @@ When a program attempts to open the controller applet, it is immediately closed. - + Left Stick Bal kar @@ -3632,14 +4018,14 @@ When a program attempts to open the controller applet, it is immediately closed. - + ZL ZL - + L L @@ -3652,22 +4038,22 @@ When a program attempts to open the controller applet, it is immediately closed. - + Plus Plusz - + ZR ZR - - + + R R @@ -3724,7 +4110,7 @@ When a program attempts to open the controller applet, it is immediately closed. - + Right Stick Jobb kar @@ -3893,88 +4279,88 @@ A tengely megfordításához mozgasd a kart először függőlegesen, majd vízs 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,103 +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://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> - - - - + %1:%2 %1:%2 + + - - - - - + + + Eden - + Port number has invalid characters A port érvénytelen karaktereket tartalmaz - + 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. @@ -4288,11 +4655,6 @@ A jelenlegi érték %1% és %2%. Enable Airplane Mode - - - None - Nincs - ConfigurePerGame @@ -4347,52 +4709,57 @@ 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 + + + + Properties Tulajdonságok @@ -4410,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 @@ -4447,38 +4909,18 @@ A jelenlegi érték %1% és %2%. Username Felhasználónév - - - Set Image - Kép beállítása - - Select Avatar - - - - 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)) @@ -4486,169 +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: - - - + 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 saving user image - + Unable to save image to file - - Select User Image - Felhasználói kép kiválasztása - - - - Image Formats (*.jpg *.jpeg *.png *.bmp) + + &Edit - - No firmware available + + &Delete - - 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. - - - - - ConfigureProfileManagerAvatarDialog - - - Select - - - - - Cancel - - - - - Background Color - - - - - Select Firmware Avatar + + 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 @@ -4816,7 +5169,7 @@ 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> @@ -4850,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 - + ... ... @@ -4873,7 +5231,7 @@ UUID: %2 TAS konfigurálása - + Select TAS Load Directory... TAS betöltési könyvtár kiválasztása... @@ -5011,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 @@ -5137,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) @@ -5335,20 +5667,20 @@ Húzd a pontokat a pozíció megváltoztatásához, vagy kattints duplán a táb Jelenlegi játék megjelenítése a Discord állapotodban - - + + All Good Tooltip - + Must be between 4-20 characters Tooltip - + Must be 48 characters, and lowercase a-z Tooltip @@ -5380,27 +5712,27 @@ Húzd a pontokat a pozíció megváltoztatásához, vagy kattints duplán a táb - + Shaders - + UserNAND - + SysNAND - + Mods - + Saves @@ -5438,7 +5770,7 @@ Húzd a pontokat a pozíció megváltoztatásához, vagy kattints duplán a táb - + Calculating... @@ -5461,12 +5793,12 @@ Húzd a pontokat a pozíció megváltoztatásához, vagy kattints duplán a táb - + Dependency - + Version @@ -5640,44 +5972,44 @@ Please go to Configure -> System -> Network and make a selection. GRenderWindow - - + + OpenGL not available! OpenGL nem elérhető! - + OpenGL shared contexts are not supported. - + 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 @@ -5685,203 +6017,208 @@ Please go to Configure -> System -> Network and make a selection. 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 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 - + 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ő @@ -5889,62 +6226,62 @@ Please go to Configure -> System -> Network and make a selection. 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. @@ -5952,7 +6289,7 @@ Please go to Configure -> System -> Network and make a selection. 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. @@ -5960,17 +6297,17 @@ Please go to Configure -> System -> Network and make a selection. GameListSearchField - + %1 of %n result(s) %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 @@ -6046,12 +6383,12 @@ Please go to Configure -> System -> Network and make a selection. 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. Debug Message: @@ -6060,189 +6397,207 @@ Debug Message: 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 - + 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 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 @@ -6295,22 +6650,22 @@ Debug Message: 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 @@ -6359,42 +6714,42 @@ Debug Message: 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 @@ -6443,1171 +6798,1153 @@ Debug Message: + &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 - + Am&iibo - - &Applets + + 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 - + 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 - + &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 Decryption &Keys - - Open &Home Menu + + &Home Menu - - Open &Setup - - - - + &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.<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>. + + 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><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. + + 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/Revolt for help. + + %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 - - Please install firmware to use the Album applet. - - - - - Album Applet - - - - - Album applet is not available. Please reinstall firmware. - - - - - Please install firmware to use the Cabinet applet. - - - - - Cabinet Applet - - - - - Cabinet applet is not available. Please reinstall firmware. - - - - - Please install firmware to use the Mii editor. - - - - - Mii Edit Applet - - - - - Mii editor is not available. Please reinstall firmware. - - - - - Please install firmware to use the Controller Menu. - - - - - Controller Applet - - - - - Controller Menu is not available. Please reinstall firmware. - - - - + Firmware Corrupted - - Home Menu Applet + + Unknown applet - - Home Menu is not available. Please reinstall firmware. + + Applet doesn't map to a known value. - - Please install firmware to use Starter. + + Record not found - - Starter Applet + + Applet not found. Please reinstall firmware. - - Starter is not available. Please reinstall firmware. - - - - + Capture Screenshot - + PNG Image (*.png) - + Update Available - - Download the %1 update? - - - - - TAS state: Running %1/%2 - - - - - TAS state: Recording %1 - - - - - TAS state: Idle %1/%2 - - - - - TAS State: Invalid - - - - - &Stop Running + + 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 - - %1 %2 - - - - + FSR - + NO AA - + VOLUME: MUTE - + VOLUME: %1% Volume percentage (e.g. 50%) - + Derivation Components Missing - - Encryption keys are 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. @@ -7615,69 +7952,79 @@ 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? - - - None - - FXAA @@ -7704,27 +8051,27 @@ Would you like to bypass this and exit anyway? - + Zero-Tangent - + B-Spline - + Mitchell - + Spline-1 - + Gaussian @@ -7760,17 +8107,17 @@ Would you like to bypass this and exit anyway? - Normal + Fast - High + Balanced - Extreme + Accurate @@ -7779,41 +8126,36 @@ Would you like to bypass this and exit anyway? - - OpenGL + + OpenGL GLSL - - Null + + OpenGL SPIRV - GLSL + OpenGL GLASM - GLASM - - - - - SPIRV + Null MigrationWorker - + 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. @@ -7824,7 +8166,7 @@ If this is not desirable, delete the following files: - + 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: @@ -7832,11 +8174,24 @@ If you wish to clean up the files which were left in the old data location, you - + Data was migrated successfully. + + ModSelectDialog + + + Dialog + + + + + The specified folder or archive contains the following mods. Select which ones to install. + + + ModerationDialog @@ -7961,6 +8316,135 @@ Mindenképp folytatod? Éppen készülsz elhagyni a szobát. Minden hálózati kapcsolat lezárul. + + 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 + + + OverlayDialog @@ -7994,50 +8478,122 @@ 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 - - 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 - - - - - + + + Migration - + Clear Shader Cache @@ -8070,18 +8626,18 @@ p, li { white-space: pre-wrap; } - + You can manually re-trigger this prompt by deleting the new config directory: %1 - + Migrating - + Migrating, this may take a while... @@ -8463,15 +9019,60 @@ p, li { white-space: pre-wrap; } Nincs játékban - + %1 is not playing a game %1 éppen nem játszik - + %1 is playing %2 %1 ezzel játszik: %2 + + + Play Time: %1 + + + + + Never Played + + + + + 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 + QtAmiiboSettingsDialog @@ -8589,250 +9190,250 @@ p, li { white-space: pre-wrap; } 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. @@ -8840,22 +9441,22 @@ Only do this if you're 100% sure you want to delete this data. QtCommon::FS - + Linked Save Data - + Save data has been linked. - + Failed to link save data - + Could not link directory: %1 To: @@ -8863,268 +9464,357 @@ To: - + 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. @@ -9132,83 +9822,83 @@ To: 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. Versions 19.0.1 or earlier are recommended, as 20.0.0+ is currently experimental. + + Firmware missing. Firmware is required to run certain games and use the Home Menu. @@ -9229,56 +9919,56 @@ 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. @@ -9319,7 +10009,7 @@ This is recommended if you want to share data between emulators. - + Pro Controller Pro kontroller @@ -9332,7 +10022,7 @@ This is recommended if you want to share data between emulators. - + Dual Joycons Dual Joycon @@ -9345,7 +10035,7 @@ This is recommended if you want to share data between emulators. - + Left Joycon Bal Joycon @@ -9358,7 +10048,7 @@ This is recommended if you want to share data between emulators. - + Right Joycon Jobb Joycon @@ -9387,7 +10077,7 @@ This is recommended if you want to share data between emulators. - + Handheld Kézi @@ -9508,32 +10198,32 @@ This is recommended if you want to share data between emulators. 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 @@ -9688,13 +10378,13 @@ 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 @@ -9729,12 +10419,12 @@ By selecting "From Eden", previous save data stored in Ryujinx will be - + Failed to link save data - + OS returned error: %1 @@ -9770,45 +10460,9 @@ By selecting "From Eden", previous save data stored in Ryujinx will be - + Total play time reached maximum. - - fs - - - 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 - - - - \ No newline at end of file + diff --git a/dist/languages/id.ts b/dist/languages/id.ts index 9f99646183..26e9e4a601 100644 --- a/dist/languages/id.ts +++ b/dist/languages/id.ts @@ -37,7 +37,7 @@ li.checked::marker { content: "\2612"; } - <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/kXAmGCXBGD"><span style=" text-decoration: underline; color:#039be5;">Discord</span></a> | <a href="https://rvlt.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;">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;">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> @@ -375,210 +375,230 @@ Ini akan melarang nama pengguna forum mereka dan alamat IP mereka. % - + 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 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 4GB of the board to the devkit 8/6GB. + + 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. 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 Sinkronisasi Kecepatan Inti - + 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: - + Change the accuracy of the emulated CPU (for debugging only). - - + + Backend: Backend: - - Fast CPU Time - Percepatan Waktu CPU + + 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. - - Virtual Table Bouncing - - - - - Bounces (by emulating a 0-valued return) any functions that triggers a prefetch abort - - - - + 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. @@ -587,148 +607,137 @@ Saat diaktifkan, dapat menyebablkan reads/writes memori tamu dilakukan langsung 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 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: - + Changes the output graphics API. Vulkan is recommended. - + Device: Perangkat: - + This setting selects the GPU to use (Vulkan only). - - Shader Backend: - Backend Shader: - - - - The shader backend to use with OpenGL. -GLSL is recommended. - - - - + Resolution: Resolusi: - + 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 using FSR's dynamic contrast. - + Anti-Aliasing Method: Metode Anti-Aliasing: - + The anti-aliasing method to use. SMAA offers the best quality. 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. @@ -737,36 +746,36 @@ 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 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 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 - + Runs an additional optimization pass over generated SPIRV shaders. Will increase time required for shader compilation. May slightly improve performance. @@ -777,24 +786,12 @@ 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. @@ -803,12 +800,12 @@ 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. GPU: Use the GPU's compute shaders to decode ASTC textures (recommended). @@ -817,45 +814,55 @@ stuttering but may present artifacts. - + ASTC Recompression Method: ASTC Metode Pemampatan Ulang: - + 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. 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 allows tearing as it recovers from a slow down. Mailbox can have lower latency than FIFO and does not tear but may drop frames. @@ -863,1176 +870,1380 @@ Immediate (no synchronization) presents whatever is available and can exhibit te - + 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. Safe to set at 16x on most GPUs. - - GPU Accuracy: - Akurasi GPU: - - - - Controls the 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 as a last resort. + + GPU Mode: - + + 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. + + + + DMA Accuracy: - + Controls the DMA precision accuracy. Safe precision fixes issues in some games but may degrade performance. - - Enable asynchronous shader compilation (Hack) + + Enable asynchronous shader compilation - + May reduce shader stutter. - - Fast GPU Time (Hack) + + 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 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) - + 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 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 numbers allow for more features and can increase performance, but may cause issues. -The default value is per-system. +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 some games. -Only Vulkan 1.0+ devices support this extension. + + Enables vertex input dynamic state feature for better quality and performance. - - Descriptor Indexing - - - - - Improves texture & buffer handling and the Maxwell translation layer. -Some Vulkan 1.1+ and all 1.2+ devices support this extension. - - - - + 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. - + Device Name Nama Perangkat - + The name of the console. - + Custom RTC Date: Tanggal RTC Kustom: - + 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: Bahasa - + This option can be overridden when region setting is auto-select - + Region: Wilayah: - + The region of the console. - + Time Zone: Zona Waktu: - + The time zone of the console. - + Sound Output Mode: Mode keluaran suara. - + Console Mode: Mode Konsol - + 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. - + + Unit Serial + + + + + Battery Serial + + + + + Debug knobs + + + + 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 Konfirmasi sebelum menghentikan emulasi - + Overrides prompts asking to confirm stopping the emulation. Enabling it bypasses such prompts and directly exits the emulation. - + Hide mouse on inactivity Sembunyikan mouse saat tidak aktif - + Hides the mouse after 2.5s of inactivity. - + Disable controller applet Nonaktifkan aplikasi pengontrol - + 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 - Konservatif - - - - Aggressive - Agresif - - - - 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 - - - - - Default - Bawaan - - - - Unsafe (fast) - - - - - Safe (stable) - - - - + + 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 - + + + 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) - - Serbian (српски) + + 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) - + 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 - - 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 + + ConfigureApplets @@ -2104,7 +2315,7 @@ When a program attempts to open the controller applet, it is immediately closed. Kembalikan ke Semula - + Auto Otomatis @@ -2554,46 +2765,86 @@ Memungkinkan berbagai macam optimasi IR. + Use dev.keys + + + + Enable Debug Asserts Nyalakan Awakutu Assert - + Debugging Pengawakutuan - + + 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. Aktifkan ini untuk menghasilkan daftar perintah audio terbaru ke konsol. Hanya mempengaruhi permainan yang menggunakan renderer audio. - + 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** - + Censor username in logs - + **This will be reset automatically when Eden closes. @@ -2654,13 +2905,13 @@ Memungkinkan berbagai macam optimasi IR. - + Audio Audio - + CPU CPU @@ -2676,13 +2927,13 @@ Memungkinkan berbagai macam optimasi IR. - + General Umum - + Graphics Grafis @@ -2693,7 +2944,7 @@ Memungkinkan berbagai macam optimasi IR. - GraphicsExtensions + GraphicsExtra @@ -2703,7 +2954,7 @@ Memungkinkan berbagai macam optimasi IR. - + Controls Kendali @@ -2719,7 +2970,7 @@ Memungkinkan berbagai macam optimasi IR. - + System Sistem @@ -2759,9 +3010,10 @@ Memungkinkan berbagai macam optimasi IR. - - - + + + + ... ... @@ -2771,90 +3023,184 @@ 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... + + + Save Data Directory + + + + + Choose an action for the save data directory: + + + + + 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? + + ConfigureGeneral @@ -2871,24 +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 - + 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 @@ -2918,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 @@ -2962,7 +3338,7 @@ Memungkinkan berbagai macam optimasi IR. Lanjutan - + Advanced Graphics Settings Pengaturan Grafis Lanjutan @@ -2976,16 +3352,26 @@ Memungkinkan berbagai macam optimasi IR. - Extensions + Extras - - Vulkan Extensions Settings + + Hacks - + + Changing these options from their default may cause issues. Novitii cavete! + + + + + Vulkan Extensions + + + + % Sample Shading percentage (e.g. 50%) @@ -3563,7 +3949,7 @@ Memungkinkan berbagai macam optimasi IR. - + Left Stick Stik Kiri @@ -3673,14 +4059,14 @@ Memungkinkan berbagai macam optimasi IR. - + ZL ZL - + L L @@ -3693,22 +4079,22 @@ Memungkinkan berbagai macam optimasi IR. - + Plus Tambah - + ZR ZR - - + + R R @@ -3765,7 +4151,7 @@ Memungkinkan berbagai macam optimasi IR. - + Right Stick Stik Kanan @@ -3934,88 +4320,88 @@ Untuk membalikkan sumbu, pertama gerakkan joystik secara tegak lurus, lalu menda 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" @@ -4038,15 +4424,6 @@ Untuk membalikkan sumbu, pertama gerakkan joystik secara tegak lurus, lalu menda Bawaan - - ConfigureLinuxTab - - - - Linux - Linux - - ConfigureMotionTouch @@ -4072,7 +4449,7 @@ Untuk membalikkan sumbu, pertama gerakkan joystik secara tegak lurus, lalu menda - + Configure Konfigurasi @@ -4102,103 +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://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> - - - - + %1:%2 %1:%2 + + - - - - - + + + Eden - + Port number has invalid characters Terdapat karakter tidak sah di angka port - + 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. @@ -4328,11 +4695,6 @@ Current values are %1% and %2% respectively. Enable Airplane Mode - - - None - Tak ada - ConfigurePerGame @@ -4387,52 +4749,57 @@ 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 + + + + Properties Properti @@ -4450,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 @@ -4487,38 +4949,18 @@ Current values are %1% and %2% respectively. Username Nama Pengguna - - - Set Image - Atur Gambar - - Select Avatar - - - - 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)) @@ -4526,169 +4968,80 @@ 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: - - - + 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 saving user image - + Unable to save image to file - - Select User Image - Pilih Gambar Pengguna - - - - Image Formats (*.jpg *.jpeg *.png *.bmp) + + &Edit - - No firmware available + + &Delete - - 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. - - - - - ConfigureProfileManagerAvatarDialog - - - Select - - - - - Cancel - - - - - Background Color - - - - - Select Firmware Avatar + + Edit User ConfigureProfileManagerDeleteDialog - + Delete this user? All of the user's save data will be deleted. - + Confirm Delete Konfirmasi Penghapusan - + Name: %1 UUID: %2 @@ -4855,7 +5208,7 @@ 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> @@ -4889,17 +5242,22 @@ UUID: %2 - + + Show recording dialog + + + + Script Directory - + Path Jalur - + ... ... @@ -4912,7 +5270,7 @@ UUID: %2 - + Select TAS Load Directory... @@ -5049,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 @@ -5175,71 +5512,66 @@ Drag points to change position, or double-click table cells to edit values. - 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 @@ -5373,20 +5705,20 @@ Drag points to change position, or double-click table cells to edit values.Tampilkan Permainan Saat ini pada Status Discord Anda - - + + All Good Tooltip - + Must be between 4-20 characters Tooltip - + Must be 48 characters, and lowercase a-z Tooltip @@ -5418,27 +5750,27 @@ Drag points to change position, or double-click table cells to edit values. - + Shaders - + UserNAND - + SysNAND - + Mods - + Saves @@ -5476,7 +5808,7 @@ Drag points to change position, or double-click table cells to edit values. - + Calculating... @@ -5499,12 +5831,12 @@ Drag points to change position, or double-click table cells to edit values. - + Dependency - + Version @@ -5678,44 +6010,44 @@ Please go to Configure -> System -> Network and make a selection. GRenderWindow - - + + OpenGL not available! OpenGL tidak tersedia! - + OpenGL shared contexts are not supported. - + 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 @@ -5723,203 +6055,208 @@ Please go to Configure -> System -> Network and make a selection. 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 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 - + 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 @@ -5927,62 +6264,62 @@ Please go to Configure -> System -> Network and make a selection. 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. @@ -5990,7 +6327,7 @@ Please go to Configure -> System -> Network and make a selection. GameListPlaceholder - + Double-click to add a new folder to the game list Klik dua kali untuk menambahkan folder sebagai daftar permainan. @@ -5998,17 +6335,17 @@ Please go to Configure -> System -> Network and make a selection. GameListSearchField - + %1 of %n result(s) - + Filter: - + Enter pattern to filter Masukkan pola untuk memfilter @@ -6084,12 +6421,12 @@ Please go to Configure -> System -> Network and make a selection. 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. Debug Message: @@ -6098,189 +6435,207 @@ 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 - + Configure Current Game - + Continue/Pause Emulation - + Exit Fullscreen - + 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 @@ -6332,22 +6687,22 @@ Debug Message: Waktu yang diperlukan 5m 4d - + Loading... Memuat... - + Loading Shaders %1 / %2 - + Launching... Memulai... - + Estimated Time %1 @@ -6396,42 +6751,42 @@ Debug Message: - + Password Required to Join Kata sandi diperlukan untuk bergabung - + Password: Kata sandi - + Players Pemain - + Room Name Nama Ruang - + Preferred Game - + Host - + Refreshing - + Refresh List @@ -6480,1171 +6835,1153 @@ Debug Message: + &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 - + Am&iibo - - &Applets + + 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 - + 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 - - - - - &Set Nickname and Owner - - - - - &Delete Game Data - - - &Restore Amiibo + &Album - &Format Amiibo + &Set Nickname and Owner - Open &Mii Editor + &Delete Game Data + &Restore Amiibo + + + + + &Format Amiibo + + + + + &Mii Editor + + + + &Configure TAS... - + Configure C&urrent Game... - - + + &Start &Mulai - + &Reset - - + + R&ecord R&ekam - + Open &Controller Menu - + Install Decryption &Keys - - Open &Home Menu + + &Home Menu - - Open &Setup - - - - + &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.<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>. + + 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><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. + + 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/Revolt for help. + + %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 - - Please install firmware to use the Album applet. - - - - - Album Applet - - - - - Album applet is not available. Please reinstall firmware. - - - - - Please install firmware to use the Cabinet applet. - - - - - Cabinet Applet - - - - - Cabinet applet is not available. Please reinstall firmware. - - - - - Please install firmware to use the Mii editor. - - - - - Mii Edit Applet - - - - - Mii editor is not available. Please reinstall firmware. - - - - - Please install firmware to use the Controller Menu. - - - - - Controller Applet - - - - - Controller Menu is not available. Please reinstall firmware. - - - - + Firmware Corrupted - - Home Menu Applet + + Unknown applet - - Home Menu is not available. Please reinstall firmware. + + Applet doesn't map to a known value. - - Please install firmware to use Starter. + + Record not found - - Starter Applet + + Applet not found. Please reinstall firmware. - - Starter is not available. Please reinstall firmware. - - - - + Capture Screenshot - + PNG Image (*.png) - + Update Available - - Download the %1 update? - - - - - TAS state: Running %1/%2 - - - - - TAS state: Recording %1 - - - - - TAS state: Idle %1/%2 - - - - - TAS State: Invalid - - - - - &Stop Running + + 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 - - %1 %2 - - - - + FSR - + NO AA - + VOLUME: MUTE - + VOLUME: %1% Volume percentage (e.g. 50%) - + Derivation Components Missing - - Encryption keys are 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. @@ -7652,69 +7989,79 @@ 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? - - - None - - FXAA @@ -7741,27 +8088,27 @@ Would you like to bypass this and exit anyway? - + Zero-Tangent - + B-Spline - + Mitchell - + Spline-1 - + Gaussian @@ -7797,17 +8144,17 @@ Would you like to bypass this and exit anyway? - Normal + Fast - High + Balanced - Extreme + Accurate @@ -7816,41 +8163,36 @@ Would you like to bypass this and exit anyway? - - OpenGL + + OpenGL GLSL - - Null + + OpenGL SPIRV - GLSL + OpenGL GLASM - GLASM - - - - - SPIRV + Null MigrationWorker - + 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. @@ -7861,7 +8203,7 @@ If this is not desirable, delete the following files: - + 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: @@ -7869,11 +8211,24 @@ If you wish to clean up the files which were left in the old data location, you - + Data was migrated successfully. + + ModSelectDialog + + + Dialog + + + + + The specified folder or archive contains the following mods. Select which ones to install. + + + ModerationDialog @@ -7996,6 +8351,135 @@ Proceed anyway? + + 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 + + + OverlayDialog @@ -8025,50 +8509,122 @@ p, li { white-space: pre-wrap; } + + 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 - - Installed SD Titles - - - - - Installed NAND Titles - - - - - System Titles - - - - - Add New Game Directory - Tambahkan direktori permainan - - - - Favorites - - - - - - + + + Migration - + Clear Shader Cache @@ -8101,18 +8657,18 @@ p, li { white-space: pre-wrap; } - + You can manually re-trigger this prompt by deleting the new config directory: %1 - + Migrating - + Migrating, this may take a while... @@ -8494,15 +9050,60 @@ p, li { white-space: pre-wrap; } - + %1 is not playing a game - + %1 is playing %2 + + + Play Time: %1 + + + + + Never Played + + + + + Version: %1 + + + + + Version: 1.0.0 + + + + + Installed SD Titles + + + + + Installed NAND Titles + + + + + System Titles + + + + + Add New Game Directory + Tambahkan direktori permainan + + + + Favorites + + QtAmiiboSettingsDialog @@ -8620,250 +9221,250 @@ p, li { white-space: pre-wrap; } 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. @@ -8871,22 +9472,22 @@ Only do this if you're 100% sure you want to delete this data. QtCommon::FS - + Linked Save Data - + Save data has been linked. - + Failed to link save data - + Could not link directory: %1 To: @@ -8894,268 +9495,357 @@ To: - + 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. @@ -9163,83 +9853,83 @@ To: 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. Versions 19.0.1 or earlier are recommended, as 20.0.0+ is currently experimental. + + Firmware missing. Firmware is required to run certain games and use the Home Menu. @@ -9260,56 +9950,56 @@ 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. @@ -9350,7 +10040,7 @@ This is recommended if you want to share data between emulators. - + Pro Controller Kontroler Pro @@ -9363,7 +10053,7 @@ This is recommended if you want to share data between emulators. - + Dual Joycons Joycon Dual @@ -9376,7 +10066,7 @@ This is recommended if you want to share data between emulators. - + Left Joycon Joycon Kiri @@ -9389,7 +10079,7 @@ This is recommended if you want to share data between emulators. - + Right Joycon Joycon Kanan @@ -9418,7 +10108,7 @@ This is recommended if you want to share data between emulators. - + Handheld Jinjing @@ -9539,32 +10229,32 @@ This is recommended if you want to share data between emulators. - + 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 @@ -9709,13 +10399,13 @@ p, li { white-space: pre-wrap; } - - + + OK OK - + Cancel Batalkan @@ -9750,12 +10440,12 @@ By selecting "From Eden", previous save data stored in Ryujinx will be - + Failed to link save data - + OS returned error: %1 @@ -9791,45 +10481,9 @@ By selecting "From Eden", previous save data stored in Ryujinx will be - + Total play time reached maximum. - - fs - - - 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 - - - - \ No newline at end of file + diff --git a/dist/languages/it.ts b/dist/languages/it.ts index 00970a3509..aa18ace584 100644 --- a/dist/languages/it.ts +++ b/dist/languages/it.ts @@ -33,12 +33,12 @@ 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 della console 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> +<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://discord.gg/kXAmGCXBGD"><span style=" text-decoration: underline; color:#039be5;">Discord</span></a> | <a href="https://rvlt.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;">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/kXAmGCXBGD"><span style=" text-decoration: underline; color:#039be5;">Discord</span></a> | <a href="https://rvlt.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;">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> @@ -314,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 @@ -375,141 +375,151 @@ Questo bannerà sia il suo nome utente del forum che il suo indirizzo IP.% - + 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 - + 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 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 4GB of the board to the devkit 8/6GB. + + Increases the amount of emulated RAM. Doesn't affect performance/stability but may allow HD texture mods to load. - Aumenta l'utilizzo della RAM emulata dai 4GB del modello di serie agli 8/6GB del devkit. -Non impatta le prestazioni o la stabilità, ma potrebbe permettere il caricamento delle mod con texture in alta definizione. + 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. 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. @@ -517,72 +527,82 @@ Disabling it means unlocking the framerate to the maximum your PC can reach. - + + 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.). 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: Precisione: - + 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 - Tempo CPU veloce + + 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. - - Virtual Table Bouncing - - - - - Bounces (by emulating a 0-valued return) any functions that triggers a prefetch abort - - - - + 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. @@ -591,112 +611,100 @@ Abilitandola, le letture/scritture nella memoria del guest vengono eseguite dire 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. 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. 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. 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 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: - + 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 (Vulkan only). Quest'opzione seleziona la GPU da usare (solo con Vulkan). - - Shader Backend: - Back-end degli shader: - - - - The shader backend to use with OpenGL. -GLSL is recommended. - Lo shader backend da usare con OpenGL. -GLSL è consigliato. - - - + Resolution: Risoluzione: - + Forces to render at a different resolution. Higher resolutions require more VRAM and bandwidth. Options lower than 1X can cause artifacts. @@ -705,27 +713,27 @@ 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 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 can produce a more stable picture in lower resolutions. @@ -734,12 +742,12 @@ 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. @@ -748,12 +756,12 @@ Exclusive fullscreen may offer better performance and better Freesync/Gsync supp "Schermo intero esclusivo" può offrire prestazioni maggiori e un supporto migliore al Freesync/Gsync. - + Aspect Ratio: Rapporto d'aspetto: - + 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. @@ -762,24 +770,24 @@ La maggior parte dei giochi supporta solo 16:9, quindi le mod sono necessarie pe Controlla anche il rapporto d'aspetto degli screenshot. - + 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 Ottimizza output SPIR-V - + Runs an additional optimization pass over generated SPIRV shaders. Will increase time required for shader compilation. May slightly improve performance. @@ -790,24 +798,12 @@ Potrebbe aumentare di poco le prestazioni. Questa funzione è sperimentale. - - Use asynchronous GPU emulation - Usa l'emulazione asincrona della GPU - - - - Uses an extra CPU thread for rendering. -This option should always remain enabled. - Utilizza un thread aggiuntivo della CPU per il rendering. -Quest'opzione dovrebbe sempre rimanere abilitata. - - - + 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. @@ -816,12 +812,12 @@ In most cases, GPU decoding provides the best performance. 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. GPU: Use the GPU's compute shaders to decode ASTC textures (recommended). @@ -833,12 +829,12 @@ GPU: Usa i compute shader della GPU per decodificare le texture ASTC (consigliat 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: - + 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. @@ -846,34 +842,44 @@ BC1/BC3: The intermediate format will be recompressed to BC1 or BC3 format, 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. 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 allows tearing as it recovers from a slow down. Mailbox can have lower latency than FIFO and does not tear but may drop frames. @@ -884,12 +890,12 @@ Mailbox può avere una latenza minore di FIFO e non ha tearing ma potrebbe perde 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. @@ -898,104 +904,147 @@ Questa opzione dovrebbe risolvere problemi in alcuni giochi, ma potrebbe ridurre 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. 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. - - GPU Accuracy: - Precisione GPU: + + GPU Mode: + Modalità GPU: - - Controls the 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 as a last resort. - Controlla la precisione dell'emulazione della GPU. -La maggior parte dei giochi gira bene con "Normale", ma "Alta" è richiesto per alcuni titoli. -I particellari tendono a essere renderizzati correttamente solo con la precisione impostata su "Alta". -"Estrema" dovrebbe essere usato solo come ultima spiaggia. + + 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". - + DMA Accuracy: Precisione DMA: - + 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. - - Enable asynchronous shader compilation (Hack) - Abilita la compilazione asincrona degli shader (espediente) + + Enable asynchronous shader compilation + Abilita la compilazione asincrona degli shader - + May reduce shader stutter. Può ridurre i fenomeni di stuttering (scatti) causati dagli shader. - - Fast GPU Time (Hack) - Tempo GPU veloce (espediente) + + Fast GPU Time + Tempo GPU veloce - + 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. Aumenta il clock della GPU emulata per aumentare la risoluzione dinamica e la distanza di rendering. -Usa 128 per massimizzare le prestazioni e 512 per massimizzare la qualità visiva. +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 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) - + 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. @@ -1004,166 +1053,182 @@ Quest'impostazione esiste solo per i driver proprietari Intel e potrebbe fa 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 numbers allow for more features and can increase performance, but may cause issues. -The default value is per-system. - Controlla il numero di funzioni che possono essere usate nello stato dinamico esteso. -Numeri più alti permettono più funzioni e potrebbero migliorare le prestazioni, ma possono causare problemi. -Il valore predefinito varia da sistema a sistema. +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. - - Provoking Vertex - Provoking Vertex + + Vertex Input Dynamic State + - - Improves lighting and vertex handling in some games. -Only Vulkan 1.0+ devices support this extension. - Migliora l'illuminazione e la gestione dei vertici in alcuni giochi. -Solo i dispositivi con Vulkan 1.0+ supportano quest'estensione. + + Enables vertex input dynamic state feature for better quality and performance. + - - Descriptor Indexing - Indicizzazione descrittori - - - - Improves texture & buffer handling and the Maxwell translation layer. -Some Vulkan 1.1+ and all 1.2+ devices support this extension. - Migliora la gestione di texture e buffer, ma anche il layer di traduzione Maxwell. -Alcuni dispositivi con Vulkan 1.1+ e tutti quelli con 1.2+ supportano quest'estensione. - - - + 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. Controlla il seme del generatore di numeri casuali. Principalmente utilizzato per le speedrun. - + Device Name Nome del dispositivo - + The name of the console. Il nome della console. - + Custom RTC Date: Data RTC personalizzata: - + 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: - + 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 console. La regione della console. - + Time Zone: Fuso orario: - + 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 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. @@ -1172,908 +1237,1049 @@ I giochi ne terranno conto e modificheranno la risoluzione, i dettagli e i contr Impostare l'opzione su "Portatile" può aiutare a migliorare le prestazioni sui sistemi meno potenti. - + + Unit Serial + Codice seriale dell'unità + + + + Battery Serial + Codice seriale della batteria + + + + Debug knobs + + + + Prompt for user profile on boot Scegli il profilo utente all'avvio - + Useful if multiple people use the same PC. Utile se più persone utilizzano lo stesso PC. - + Pause when not in focus Metti in pausa quando la finestra non è in primo piano - + Pauses emulation when focusing on other windows. Mette in pausa l'emulazione quando altre finestre sono in primo piano. - + Confirm before stopping emulation Chiedi conferma prima di arrestare l'emulazione - + 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 - + 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 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 - Conservativa - - - - Aggressive - Aggressiva - - - - 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 - - - - - Default - Predefinito - - - - Unsafe (fast) - Non sicuro (veloce) - - - - Safe (stable) - Sicuro (stabile) - - - + + 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 - + + + 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) - - Serbian (српски) - Serbo (српски) + + 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) - + 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 - - Low (128) - Basso (128) - - - + + 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 @@ -2145,7 +2351,7 @@ Quando un programma proverà ad aprire l'applet del controller, quest' Ripristina valori predefiniti - + Auto Auto @@ -2555,7 +2761,7 @@ Quando un programma proverà ad aprire l'applet del controller, quest' Disable Buffer Reorder - Disabilita il Riordinamento del Buffer + Disabilita il riordinamento dei buffer @@ -2594,46 +2800,86 @@ Quando un programma proverà ad aprire l'applet del controller, quest' + Use dev.keys + Usa dev.keys + + + Enable Debug Asserts Abilita le asserzioni di debug - + Debugging Debug - + + Battery Serial: + Codice seriale della batteria: + + + + 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. - + 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** - + Censor username in logs Censura il nome utente nei log - + **This will be reset automatically when Eden closes. **L'opzione verrà automaticamente ripristinata alla chiusura di Eden. @@ -2694,13 +2940,13 @@ Quando un programma proverà ad aprire l'applet del controller, quest' - + Audio Audio - + CPU CPU @@ -2716,13 +2962,13 @@ Quando un programma proverà ad aprire l'applet del controller, quest' - + General Generale - + Graphics Grafica @@ -2733,8 +2979,8 @@ Quando un programma proverà ad aprire l'applet del controller, quest' - GraphicsExtensions - EstensioniGrafiche + GraphicsExtra + @@ -2743,7 +2989,7 @@ Quando un programma proverà ad aprire l'applet del controller, quest' - + Controls Comandi @@ -2759,7 +3005,7 @@ Quando un programma proverà ad aprire l'applet del controller, quest' - + System Sistema @@ -2799,9 +3045,10 @@ Quando un programma proverà ad aprire l'applet del controller, quest' - - - + + + + ... ... @@ -2811,90 +3058,196 @@ Quando un programma proverà ad aprire l'applet del controller, quest' 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... + + + Save Data Directory + Cartella dei dati di salvataggio + + + + Choose an action for the save data directory: + Scegli cosa fare per la cartella dei dati di salvataggio: + + + + 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? + ConfigureGeneral @@ -2911,24 +3264,54 @@ Quando un programma proverà ad aprire l'applet del controller, quest' - 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 - + 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 @@ -2958,33 +3341,33 @@ Quando un programma proverà ad aprire l'applet del controller, quest' Colore dello sfondo: - + % FSR sharpening percentage (e.g. 50%) % - + Off Disattivato - + VSync Off VSync disattivato - + Recommended Consigliata - + On Attivato - + VSync On VSync attivato @@ -3002,7 +3385,7 @@ Quando un programma proverà ad aprire l'applet del controller, quest' Avanzate - + Advanced Graphics Settings Impostazioni grafiche avanzate @@ -3016,16 +3399,26 @@ Quando un programma proverà ad aprire l'applet del controller, quest' - Extensions - Estensioni + Extras + Opzioni aggiuntive - - Vulkan Extensions Settings - Impostazioni delle estensioni di Vulkan + + Hacks + Espedienti - + + Changing these options from their default may cause issues. Novitii cavete! + + + + + Vulkan Extensions + Estensioni di Vulkan + + + % Sample Shading percentage (e.g. 50%) % @@ -3603,7 +3996,7 @@ Quando un programma proverà ad aprire l'applet del controller, quest' - + Left Stick Levetta sinistra @@ -3713,14 +4106,14 @@ Quando un programma proverà ad aprire l'applet del controller, quest' - + ZL ZL - + L L @@ -3733,22 +4126,22 @@ Quando un programma proverà ad aprire l'applet del controller, quest' - + Plus Più - + ZR ZR - - + + R R @@ -3805,7 +4198,7 @@ Quando un programma proverà ad aprire l'applet del controller, quest' - + Right Stick Levetta destra @@ -3974,88 +4367,88 @@ Per invertire gli assi, prima muovi la levetta verticalmente, e poi orizzontalme 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" @@ -4078,15 +4471,6 @@ Per invertire gli assi, prima muovi la levetta verticalmente, e poi orizzontalme Predefiniti - - ConfigureLinuxTab - - - - Linux - Linux - - ConfigureMotionTouch @@ -4112,7 +4496,7 @@ Per invertire gli assi, prima muovi la levetta verticalmente, e poi orizzontalme - + Configure Configura @@ -4142,103 +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://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> - <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;">Scopri di più</span></a> - - - + %1:%2 %1:%2 + + - - - - - + + + Eden Eden - + Port number has invalid characters Il numero di porta contiene caratteri non validi - + 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. @@ -4373,11 +4747,6 @@ Per attivarlo, disattiva il mouse emulato. Enable Airplane Mode Abilita la modalità aereo - - - None - Nessuna - ConfigurePerGame @@ -4432,52 +4801,57 @@ 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 - Estensioni GPU + + Ext. Graphics + Grafica (Estensioni) - + Audio Audio - + Input Profiles Profili di input - - Linux - Linux + + Network + Rete - + + Applets + Applet + + + Properties Proprietà @@ -4495,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 @@ -4532,38 +5006,18 @@ Per attivarlo, disattiva il mouse emulato. Username Nome utente - - - Set Image - Imposta immagine - - Select Avatar - Seleziona avatar - - - 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)) @@ -4571,169 +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 per il nuovo utente: - - - - Enter a new username: - Inserisci un nuovo nome utente: - - - + 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 saving user image Impossibile salvare l'immagine utente - + Unable to save image to file Impossibile salvare l'immagine nel file - - Select User Image - Seleziona immagine utente + + &Edit + &Modifica - - Image Formats (*.jpg *.jpeg *.png *.bmp) - Formati immagine (*.jpg *.jpeg *.png *.bmp) + + &Delete + &Elimina - - 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 la RomFS. Il tuo file o le chiavi di decrittazione potrebbero essere danneggiati. - - - - Error extracting archive - Estrazione dell'archivio fallita - - - - Could not extract RomFS. Your file or decryption keys may be corrupted. - Impossibile estrarre la RomFS. Il tuo file o le chiavi di decrittazione 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. - Nessuna immagine avatar è stata trovata nell'archivio. - - - - ConfigureProfileManagerAvatarDialog - - - Select - Seleziona - - - - Cancel - Annulla - - - - Background Color - Colore dello sfondo - - - - Select Firmware Avatar - Seleziona avatar del firmware + + 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 @@ -4901,8 +5266,8 @@ 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>Legge l'input del controller dagli script nello stesso formato di TAS-nx.<br/>Per una spiegazione più dettagliata, consulta la<a href="https://eden-emulator.github.io/help/feature/tas/"><span style=" text-decoration: underline; color:#039be5;">pagina di aiuto</span></a>sul sito di Eden.</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> @@ -4935,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 - + ... ... @@ -4958,7 +5328,7 @@ UUID: %2 Configurazione TAS - + Select TAS Load Directory... Seleziona la cartella di caricamento TAS... @@ -5096,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 @@ -5222,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) @@ -5420,20 +5764,20 @@ Trascina i punti per cambiare posizione, oppure clicca due volte la cella in tab Mostra il gioco in uso nel tuo stato di Discord - - + + All Good Tooltip - Tutto ok + OK - + Must be between 4-20 characters Tooltip Dev'essere compreso fra 4 e 20 caratteri - + Must be 48 characters, and lowercase a-z Tooltip Devono essere 48 caratteri e contenere minuscole a-z @@ -5462,30 +5806,30 @@ Trascina i punti per cambiare posizione, oppure clicca due volte la cella in tab Deleting ANY data is IRREVERSABLE! - Cancellare qualunque dato è IRREVERSIBILE! + La cancellazione di qualsiasi dato è IRREVERSIBILE! - + Shaders Shader - + UserNAND UserNAND - + SysNAND SysNAND - + Mods Mod - + Saves Salvataggi @@ -5505,25 +5849,25 @@ Trascina i punti per cambiare posizione, oppure clicca due volte la cella in tab Open with your system file manager - Apri con il tuo file manager di sitema + Apri con il gestore file di sistema Delete all data in this directory. THIS IS 100% IRREVERSABLE! - Cancella tutti i dati in questa cartella. QUESTO È IRREVERSIBILE AL 100%! + 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 passare un po' di tempo! + 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. Ci vuole un po' di tempo, e cancellerà TUTTI I DATI ESISTENTI! + Importa dati in questa cartella. Potrebbe impiegare un po' di tempo, e TUTTI I DATI ESISTENTI verranno cancellati! - + Calculating... Calcolo in corso... @@ -5546,12 +5890,12 @@ Trascina i punti per cambiare posizione, oppure clicca due volte la cella in tab <html><head/><body><p>I progetti che rendono Eden possibile</p></body></html> - + Dependency Dipendenza - + Version Versione @@ -5727,44 +6071,44 @@ Vai su Configura -> Sistema -> Rete e selezionane una. GRenderWindow - - + + OpenGL not available! OpenGL non disponibile! - + OpenGL shared contexts are not supported. Gli shared context di OpenGL non sono supportati. - + Eden has not been compiled with OpenGL support. Eden non è stato compilato con il supporto a OpenGL. - - + + 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 @@ -5772,203 +6116,208 @@ Vai su Configura -> Sistema -> Rete e selezionane una. 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 Cache Storage 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à - + Copy Title ID to Clipboard 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 - + 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 @@ -5976,62 +6325,62 @@ Vai su Configura -> Sistema -> Rete e selezionane una. 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. @@ -6039,7 +6388,7 @@ Vai su Configura -> Sistema -> Rete e selezionane una. GameListPlaceholder - + Double-click to add a new folder to the game list Clicca due volte per aggiungere una nuova cartella alla lista dei giochi @@ -6047,17 +6396,17 @@ Vai su Configura -> Sistema -> Rete e selezionane una. GameListSearchField - + %1 of %n result(s) %1 di %n risultato%1 di %n di risultati%1 di %n risultati - + Filter: Filtro: - + Enter pattern to filter Inserisci pattern per filtrare @@ -6133,12 +6482,12 @@ Vai su Configura -> Sistema -> Rete e selezionane una. 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. Debug Message: 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. @@ -6148,189 +6497,207 @@ 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 precisione GPU + + Change GPU Mode + Cambia modalità GPU - + Configure 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 Eden Esci da Eden - + Fullscreen Schermo intero - + Load File Carica file - + Load/Remove Amiibo Carica/Rimuovi Amiibo - - Multiplayer Browse Public Game Lobby - Multigiocatore - Sfoglia lobby di gioco pubblica + + Browse Public Game Lobby + Sfoglia lobby di gioco pubblica - - Multiplayer Create Room - Multigiocatore - Crea stanza + + Create Room + Crea stanza - - Multiplayer Direct Connect to Room - Multigiocatore - Collegamento diretto a una stanza + + Direct Connect to Room + Collegamento diretto a una stanza - - Multiplayer Leave Room - Multigiocatore - Esci dalla stanza + + Leave Room + Esci dalla stanza - - Multiplayer Show Current Room - Multigiocatore - Mostra stanza attuale + + 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 @@ -6383,22 +6750,22 @@ Messaggio 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 @@ -6447,42 +6814,42 @@ Messaggio 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 @@ -6531,719 +6898,776 @@ Messaggio 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 - + Am&iibo Am&iibo - - &Applets - &Applet + + 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 &Informazioni su Eden - + 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 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 - + &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 Decryption &Keys Installa le &chiavi di crittografia - - Open &Home Menu - Apri il menù &Home + + &Home Menu + Menù &Home - - Open &Setup - Apri &configurazione - - - + &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.<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>. - L'inizializzazione di Vulkan è fallita durante l'avvio.<br><br>Clicca <a href='https://eden-emulator.github.io/wiki/faq/#yuzu-starts-with-the-error-broken-vulkan-installation-detected'>qui per istruzioni su come risolvere il problema</a>. + + 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><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. - 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><br>Per una spiegazione sui vari formati della console Switch supportati da Eden, <a href='https://eden-emulator.github.io/wiki/overview-of-switch-game-formats'>consulta la nostra wiki</a>. Non riceverai di nuovo questo avviso. + + 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/Revolt for help. + + %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/Revolt. + %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 @@ -7252,7 +7676,7 @@ Usa questa funzione solo per installare aggiornamenti e DLC. - + %n file(s) were overwritten %n file è stato sovrascritto @@ -7261,7 +7685,7 @@ Usa questa funzione solo per installare aggiornamenti e DLC. - + %n file(s) failed to install %n file non è stato installato a causa di errori @@ -7270,515 +7694,453 @@ Usa questa funzione solo per installare aggiornamenti e DLC. - + 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 - - Please install firmware to use the Album applet. - Installa 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 firmware to use the Cabinet applet. - Installa il firmware per usare l'applet Cabinet. - - - - Cabinet Applet - Applet Cabinet - - - - Cabinet applet is not available. Please reinstall firmware. - L'applet Cabinet non è disponibile. Reinstalla il firmware. - - - - Please install firmware to use the Mii editor. - Installa 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 firmware to use the Controller Menu. - Installa il firmware per usare il menù dei controller. - - - - Controller Applet - Menù dei controller - - - - Controller Menu is not available. Please reinstall firmware. - Il menù dei controller non è disponibile. Reinstalla il firmware. - - - + Firmware Corrupted Firmware corrotto - - Home Menu Applet - Applet menù Home + + Unknown applet + Applet sconosciuto - - Home Menu is not available. Please reinstall firmware. - Il menù Home non è disponibile. Reinstalla il firmware. + + Applet doesn't map to a known value. + L'applet non è associato a un valore noto. - - Please install firmware to use Starter. - Installa il firmware per usare l'applet Starter. + + Record not found + Non trovato - - Starter Applet - Applet Starter + + Applet not found. Please reinstall firmware. + Applet non trovato. Reinstalla il firmware. - - Starter is not available. Please reinstall firmware. - L'applet Starter non è disponibile. Reinstalla il firmware. - - - + Capture Screenshot Cattura screenshot - + PNG Image (*.png) Immagine PNG (*.png) - + Update Available Aggiornamento disponibile - - Download the %1 update? - Vuoi scaricare l'aggiornamento %1? + + 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 - - %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 - - Encryption keys are missing. - Chiavi di crittografia 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 - Select RomFS Dump Target - + 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? - - - None - Nessuno - FXAA @@ -7805,27 +8167,27 @@ Vuoi uscire comunque? Bicubico - + Zero-Tangent Zero-Tangent - + B-Spline B-Spline - + Mitchell Mitchell - + Spline-1 Spline-1 - + Gaussian Gaussiano @@ -7861,18 +8223,18 @@ Vuoi uscire comunque? - Normal - Normale + Fast + Veloce - High - Alta + Balanced + Bilanciata - Extreme - Estrema + Accurate + Accurata @@ -7880,41 +8242,36 @@ Vuoi uscire comunque? Vulkan - - OpenGL - OpenGL + + OpenGL GLSL + OpenGL GLSL - - Null - Nullo + + OpenGL SPIRV + OpenGL SPIR-V - GLSL - GLSL + OpenGL GLASM + OpenGL GLASM - GLASM - GLASM - - - - SPIRV - SPIRV + Null + Nullo MigrationWorker - + 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. @@ -7925,7 +8282,7 @@ If this is not desirable, delete the following files: - + 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: @@ -7933,9 +8290,22 @@ If you wish to clean up the files which were left in the old data location, you - + Data was migrated successfully. - I dati sono stati migrati con successo. + 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. @@ -8062,6 +8432,135 @@ Vuoi continuare lo stesso? Stai per uscire dalla stanza. Ogni connessione di rete verrà chiusa. + + NewUserDialog + + + + 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 + + OverlayDialog @@ -8095,52 +8594,124 @@ 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 - - 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 - - - - - + + + Migration - + Trasferimento - + Clear Shader Cache - + Svuota la cache degli shader @@ -8162,29 +8733,31 @@ p, li { white-space: pre-wrap; } - + + + No - + No - + You can manually re-trigger this prompt by deleting the new config directory: %1 - + Migrating - Migrazione in corso + Trasferimento in corso - + Migrating, this may take a while... - La migrazione è in corso, potrebbe richiedere un po' di tempo... + Il trasferimento è in corso, potrebbe richiedere un po' di tempo... @@ -8564,15 +9137,60 @@ p, li { white-space: pre-wrap; } Non in gioco - + %1 is not playing a game %1 non sta giocando a un gioco - + %1 is playing %2 %1 sta giocando a %2 + + + Play Time: %1 + Tempo di gioco: %1 + + + + Never Played + Mai giocato + + + + 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 + QtAmiiboSettingsDialog @@ -8690,47 +9308,47 @@ p, li { white-space: pre-wrap; } 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 @@ -8739,203 +9357,204 @@ p, li { white-space: pre-wrap; } %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. @@ -8943,22 +9562,22 @@ Only do this if you're 100% sure you want to delete this data. 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: @@ -8969,268 +9588,361 @@ 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. @@ -9238,153 +9950,159 @@ A: 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. Versions 19.0.1 or earlier are recommended, as 20.0.0+ is currently experimental. - + + 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. - Invalid magic header on Ryujinx title database. - - - - - Invalid byte alignment on Ryujinx title database. - - - - 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. @@ -9425,7 +10143,7 @@ This is recommended if you want to share data between emulators. - + Pro Controller Pro Controller @@ -9438,7 +10156,7 @@ This is recommended if you want to share data between emulators. - + Dual Joycons Due Joycon @@ -9451,7 +10169,7 @@ This is recommended if you want to share data between emulators. - + Left Joycon Joycon sinistro @@ -9464,7 +10182,7 @@ This is recommended if you want to share data between emulators. - + Right Joycon Joycon destro @@ -9493,7 +10211,7 @@ This is recommended if you want to share data between emulators. - + Handheld Portatile @@ -9614,32 +10332,32 @@ This is recommended if you want to share data between emulators. 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 @@ -9740,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 @@ -9794,13 +10512,13 @@ 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 @@ -9837,12 +10555,12 @@ Selezionando "Da Eden", i dati di salvataggio pre-esistenti in Ryujinx Annulla - + Failed to link save data Impossibile collegare i dati di salvataggio - + OS returned error: %1 Il sistema ha restituito un errore: %1 @@ -9878,47 +10596,9 @@ Selezionando "Da Eden", i dati di salvataggio pre-esistenti in Ryujinx Secondi: - + Total play time reached maximum. Il tempo di gioco totale ha raggiunto il limite massimo. - - fs - - - 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 - - - \ No newline at end of file + diff --git a/dist/languages/ja_JP.ts b/dist/languages/ja_JP.ts index d3ee35524d..bad9dcfcf2 100644 --- a/dist/languages/ja_JP.ts +++ b/dist/languages/ja_JP.ts @@ -4,12 +4,12 @@ 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> @@ -30,7 +30,7 @@ li.checked::marker { content: "\2612"; } - <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/kXAmGCXBGD"><span style=" text-decoration: underline; color:#039be5;">Discord</span></a> | <a href="https://rvlt.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;">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;">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> @@ -368,390 +368,399 @@ This would ban both their forum username and their IP address. % - + 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 maximum of 4. This is mainly a debug option and shouldn't be disabled. - + Memory Layout メモリレイアウト - - Increases the amount of emulated RAM from 4GB of the board to the devkit 8/6GB. + + 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. 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. - - Synchronize Core Speed + + 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.). Can help reduce stuttering at lower framerates. - + Accuracy: エミュレーション精度: - + 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. - - Virtual Table Bouncing - - - - - Bounces (by emulating a 0-valued return) any functions that triggers a prefetch abort - - - - + 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 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: - + Changes the output graphics API. Vulkan is recommended. - + Device: 使用デバイス: - + This setting selects the GPU to use (Vulkan only). - - Shader Backend: - シェーダーバックエンド: - - - - The shader backend to use with OpenGL. -GLSL is recommended. - - - - + Resolution: 解像度: - + 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 using FSR's dynamic contrast. - + Anti-Aliasing Method: アンチエイリアス方式: - + The anti-aliasing method to use. SMAA offers the best quality. 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 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 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 - + Runs an additional optimization pass over generated SPIRV shaders. Will increase time required for shader compilation. May slightly improve performance. @@ -759,35 +768,24 @@ 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. GPU: Use the GPU's compute shaders to decode ASTC textures (recommended). @@ -796,1221 +794,1438 @@ stuttering but may present artifacts. - + ASTC Recompression Method: ASTC 再圧縮方式: - + 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. 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 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) presents whatever is available and can exhibit tearing. - + FIFO (VSync) はフレーム落ちやティアリングがありませんがスクリーンのリフレッシュレートに制限されます. +FIFO Relaxed は FIFO に似ていますが, 速度低下からの回復時にティアリングを許容します. +Mailbox は FIFO よりも遅延が小さくティアリングがありませんがフレーム落ちの可能性があります. +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. Safe to set at 16x on most GPUs. - - GPU Accuracy: + + GPU Mode: + 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. - - Controls the 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 as a last resort. - - - - + DMA Accuracy: - + DMA精度: - + Controls the DMA precision accuracy. Safe precision fixes issues in some games but may degrade performance. - - Enable asynchronous shader compilation (Hack) + + Enable asynchronous shader compilation - + May reduce shader stutter. - - Fast GPU Time (Hack) + + 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 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 のみ) - + 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 numbers allow for more features and can increase performance, but may cause issues. -The default value is per-system. +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 some games. -Only Vulkan 1.0+ devices support this extension. + + Enables vertex input dynamic state feature for better quality and performance. - - Descriptor Indexing - - - - - Improves texture & buffer handling and the Maxwell translation layer. -Some Vulkan 1.1+ and all 1.2+ devices support this extension. - - - - + 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. - + Device Name デバイス名 - + The name of the console. - + Custom RTC Date: - + 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: 言語: - + This option can be overridden when region setting is auto-select - + Region: 地域: - + The region of the console. - + Time Zone: タイムゾーン: - + The time zone of the console. - + Sound Output Mode: 音声出力モード: - + Console 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. - + + Unit Serial + + + + + Battery Serial + + + + + Debug knobs + + + + 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 エミュレーションを停止する前に確認する - + Overrides prompts asking to confirm stopping the emulation. Enabling it bypasses such prompts and directly exits the emulation. - + Hide mouse on inactivity 非アクティブ時にマウスカーソルを隠す - + Hides the mouse after 2.5s of inactivity. - + Disable controller applet コントローラーアプレットの無効化 - + 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 - - - - - - Default - デフォルト - - - - Unsafe (fast) - - - - - Safe (stable) - - - - + + 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 正確 - + + + 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) - - Serbian (српски) + + 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) - + Docked Docked - + Handheld 携帯モード - + + + Off + + + + Boost (1700MHz) - + Boost (1700MHz) - + Fast (2000MHz) - + 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 + + ConfigureApplets @@ -2082,7 +2297,7 @@ When a program attempts to open the controller applet, it is immediately closed. デフォルトに戻す - + Auto 自動 @@ -2533,46 +2748,86 @@ When a program attempts to open the controller applet, it is immediately closed. + Use dev.keys + + + + Enable Debug Asserts デバッグアサートの有効化 - + Debugging デバッグ - + + 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 FSアクセスログの有効化 - + Enable Verbose Reporting Services** 詳細なレポートサービスの有効化** - + Censor username in logs - + **This will be reset automatically when Eden closes. @@ -2633,13 +2888,13 @@ When a program attempts to open the controller applet, it is immediately closed. - + Audio サウンド - + CPU CPU @@ -2655,13 +2910,13 @@ When a program attempts to open the controller applet, it is immediately closed. - + General 全般 - + Graphics グラフィック @@ -2672,7 +2927,7 @@ When a program attempts to open the controller applet, it is immediately closed. - GraphicsExtensions + GraphicsExtra @@ -2682,7 +2937,7 @@ When a program attempts to open the controller applet, it is immediately closed. - + Controls 操作 @@ -2698,7 +2953,7 @@ When a program attempts to open the controller applet, it is immediately closed. - + System システム @@ -2738,9 +2993,10 @@ When a program attempts to open the controller applet, it is immediately closed. - - - + + + + ... ... @@ -2750,90 +3006,184 @@ When a program 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読込元ディレクトリを選択... + + + Save Data Directory + + + + + Choose an action for the save data directory: + + + + + 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? + + ConfigureGeneral @@ -2850,23 +3200,53 @@ When a program 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 すべての設定をリセット - + 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... - - This reset all settings and remove all per-game configurations. This will not delete game directories, profiles, or input profiles. Proceed? - すべての設定がリセットされ、ゲームごとの設定もすべて削除されます。ゲームディレクトリ、プロファイル、入力プロファイルは削除されません。続行しますか? + + Directory Already Added + + + + + This directory is already in the list. + @@ -2897,33 +3277,33 @@ When a program 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 オン @@ -2941,7 +3321,7 @@ When a program attempts to open the controller applet, it is immediately closed. 高度な設定 - + Advanced Graphics Settings グラフィックの高度な設定 @@ -2955,19 +3335,29 @@ When a program attempts to open the controller applet, it is immediately closed. - Extensions + Extras - - Vulkan Extensions Settings + + Hacks - + + Changing these options from their default may cause issues. Novitii cavete! + + + + + Vulkan Extensions + GPU拡張機能 + + + % Sample Shading percentage (e.g. 50%) - + % @@ -3542,7 +3932,7 @@ When a program attempts to open the controller applet, it is immediately closed. - + Left Stick Lスティック @@ -3652,14 +4042,14 @@ When a program attempts to open the controller applet, it is immediately closed. - + ZL ZL - + L L @@ -3672,22 +4062,22 @@ When a program attempts to open the controller applet, it is immediately closed. - + Plus + - + ZR ZR - - + + R R @@ -3744,7 +4134,7 @@ When a program attempts to open the controller applet, it is immediately closed. - + Right Stick Rスティック @@ -3913,88 +4303,88 @@ To invert the axes, first move your joystick vertically, and then horizontally.< メガドライブ - + 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" のセーブに失敗しました @@ -4017,15 +4407,6 @@ To invert the axes, first move your joystick vertically, and then horizontally.< デフォルト - - ConfigureLinuxTab - - - - Linux - Linux - - ConfigureMotionTouch @@ -4051,7 +4432,7 @@ To invert the axes, first move your joystick vertically, and then horizontally.< - + Configure 設定 @@ -4081,103 +4462,93 @@ To invert the axes, first move your joystick vertically, and then horizontally.< ポート: - - Learn More - 詳細情報 - - - - + + Test テスト - + Add Server サーバーを追加 - + Remove Server サーバーを削除 - - <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> - - - - + %1:%2 %1:%2 + + - - - - - + + + Eden - + Eden - + Port number has invalid characters ポート番号に無効な文字が含まれています - + 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>完了までお待ちください。 @@ -4307,11 +4678,6 @@ Current values are %1% and %2% respectively. Enable Airplane Mode - - - None - なし - ConfigurePerGame @@ -4366,52 +4732,57 @@ 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 + + + + Properties プロパティ @@ -4429,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 @@ -4466,38 +4932,18 @@ Current values are %1% and %2% respectively. Username ユーザー名 - - - Set Image - ユーザー画像を設定 - - Select Avatar - - - - 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)) @@ -4505,169 +4951,80 @@ Current values are %1% and %2% respectively. %2 - - Enter Username - ユーザ名 - - - + Users ユーザ - - Enter a username for the new user: - 新しいユーザのユーザ名を入力: - - - - Enter a new username: - 新しいユーザ名を入力: - - - + 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 saving user image - + Unable to save image to file - - Select User Image - ユーザ画像を選択 - - - - Image Formats (*.jpg *.jpeg *.png *.bmp) + + &Edit - - No firmware available + + &Delete - - 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. - - - - - ConfigureProfileManagerAvatarDialog - - - Select - - - - - Cancel - - - - - Background Color - - - - - Select Firmware Avatar + + Edit User ConfigureProfileManagerDeleteDialog - + Delete this user? All of the user's save data will be deleted. このユーザを削除しますか? このユーザのすべてのセーブデータが削除されます. - + Confirm Delete ユーザの削除 - + Name: %1 UUID: %2 名称: %1 @@ -4835,7 +5192,7 @@ 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> @@ -4869,17 +5226,22 @@ UUID: %2 ロード中は実行を一時停止 - + + Show recording dialog + + + + Script Directory スクリプトディレクトリ - + Path パス - + ... ... @@ -4892,7 +5254,7 @@ UUID: %2 TAS 設定 - + Select TAS Load Directory... TAS ロードディレクトリを選択... @@ -5030,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 タイトル名 @@ -5156,71 +5497,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 - + Resolution: 解像度: - + Select Screenshots Path... スクリーンショットの保存先を選択... - + <System> <System> - + English English - + Auto (%1 x %2, %3 x %4) Screenshot width value @@ -5354,20 +5690,20 @@ Drag points to change position, or double-click table cells to edit values.Discordのステータスに実行中のゲームを表示 - - + + All Good Tooltip - + Must be between 4-20 characters Tooltip - + Must be 48 characters, and lowercase a-z Tooltip @@ -5399,27 +5735,27 @@ Drag points to change position, or double-click table cells to edit values. - + Shaders - + UserNAND - + SysNAND - + Mods - + Saves @@ -5457,7 +5793,7 @@ Drag points to change position, or double-click table cells to edit values. - + Calculating... @@ -5480,14 +5816,14 @@ Drag points to change position, or double-click table cells to edit values. - + Dependency - + Version - + バージョン @@ -5551,27 +5887,27 @@ 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. - + 有効なIPv4アドレスではありません。 Port must be a number between 0 to 65535. - + 0〜65535の間を入力してください @@ -5631,12 +5967,12 @@ Drag points to change position, or double-click table cells to edit values. IP address is already in use. Please choose another. - + IPアドレスはすでに使用されています。別のものを選択してください。 You do not have enough permission to perform this action. - + この操作を実行するための十分な権限がありません。 @@ -5653,50 +5989,50 @@ Please go to Configure -> System -> Network and make a selection. Error - + エラー GRenderWindow - - + + OpenGL not available! OpenGLは使用できません! - + OpenGL shared contexts are not supported. - + 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 @@ -5704,203 +6040,208 @@ Please go to Configure -> System -> Network and make a selection. 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 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 - + Scan Subfolders サブフォルダをスキャンする - + Remove Game Directory ゲームディレクトリを削除する - + ▲ Move Up ▲ 上へ移動 - + ▼ Move Down ▼ 下へ移動 - + Open Directory Location ディレクトリの場所を開く - + Clear クリア - + Name ゲーム名 - + Compatibility 互換性 - + Add-ons アドオン - + File type ファイル種別 - + Size ファイルサイズ - + Play time プレイ時間 @@ -5908,62 +6249,62 @@ Please go to Configure -> System -> Network and make a selection. 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. このゲームはまだテストされていません。 @@ -5971,7 +6312,7 @@ Please go to Configure -> System -> Network and make a selection. GameListPlaceholder - + Double-click to add a new folder to the game list 新しいゲームリストフォルダを追加するにはダブルクリックしてください。 @@ -5979,17 +6320,17 @@ Please go to Configure -> System -> Network and make a selection. GameListSearchField - + %1 of %n result(s) - + Filter: フィルター: - + Enter pattern to filter フィルターパターンを入力 @@ -6065,12 +6406,12 @@ Please go to Configure -> System -> Network and make a selection. 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. Debug Message: @@ -6079,189 +6420,207 @@ 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 - GPU精度を変更 + + Change GPU Mode + - + Configure - + Configure Current Game - + Continue/Pause Emulation エミュレーションの一時停止/再開 - + Exit Fullscreen フルスクリーンをやめる - + 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 @@ -6314,22 +6673,22 @@ Debug Message: 予想時間 5分4秒 - + Loading... ロード中... - + Loading Shaders %1 / %2 シェーダーをロード中 %1 / %2 - + Launching... 起動中... - + Estimated Time %1 予想時間 %1 @@ -6378,42 +6737,42 @@ Debug Message: ロビー更新 - + Password Required to Join 参加にはパスワードが必要です。 - + Password: パスワード: - + Players プレイヤー - + Room Name ルーム名 - + Preferred Game 優先ゲーム - + Host ホスト - + Refreshing 更新中 - + Refresh List リスト更新 @@ -6462,1171 +6821,1153 @@ Debug Message: + &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) - + Am&iibo - - &Applets + + 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 - + 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 - + &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 Decryption &Keys - - Open &Home Menu + + &Home Menu - - Open &Setup - - - - + &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.<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>. + + 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><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. + + 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/Revolt for help. + + %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 - - Please install firmware to use the Album applet. - - - - - Album Applet - - - - - Album applet is not available. Please reinstall firmware. - - - - - Please install firmware to use the Cabinet applet. - - - - - Cabinet Applet - - - - - Cabinet applet is not available. Please reinstall firmware. - - - - - Please install firmware to use the Mii editor. - - - - - Mii Edit Applet - - - - - Mii editor is not available. Please reinstall firmware. - - - - - Please install firmware to use the Controller Menu. - - - - - Controller Applet - - - - - Controller Menu is not available. Please reinstall firmware. - - - - + Firmware Corrupted - - Home Menu Applet + + Unknown applet - - Home Menu is not available. Please reinstall firmware. + + Applet doesn't map to a known value. - - Please install firmware to use Starter. + + Record not found - - Starter Applet + + Applet not found. Please reinstall firmware. - - Starter is not available. Please reinstall firmware. - - - - + Capture Screenshot - + PNG Image (*.png) - + Update Available - - Download the %1 update? - - - - - TAS state: Running %1/%2 - - - - - TAS state: Recording %1 - - - - - TAS state: Idle %1/%2 - - - - - TAS State: Invalid - - - - - &Stop Running + + 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 - - %1 %2 - - - - + FSR - + NO AA - + VOLUME: MUTE - + VOLUME: %1% Volume percentage (e.g. 50%) - + Derivation Components Missing - - Encryption keys are 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. @@ -7634,69 +7975,79 @@ 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? - - - None - - FXAA @@ -7723,27 +8074,27 @@ Would you like to bypass this and exit anyway? - + Zero-Tangent - + B-Spline - + Mitchell - + Spline-1 - + Gaussian @@ -7779,17 +8130,17 @@ Would you like to bypass this and exit anyway? - Normal + Fast - High + Balanced - Extreme + Accurate @@ -7798,41 +8149,36 @@ Would you like to bypass this and exit anyway? - - OpenGL + + OpenGL GLSL - - Null + + OpenGL SPIRV - GLSL + OpenGL GLASM - GLASM - - - - - SPIRV + Null MigrationWorker - + 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. @@ -7843,7 +8189,7 @@ If this is not desirable, delete the following files: - + 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: @@ -7851,11 +8197,24 @@ If you wish to clean up the files which were left in the old data location, you - + Data was migrated successfully. + + ModSelectDialog + + + Dialog + + + + + The specified folder or archive contains the following mods. Select which ones to install. + + + ModerationDialog @@ -7980,6 +8339,135 @@ Proceed anyway? ルームを退出しようとしています。ネットワーク接続はすべて終了します。 + + 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 + + + OverlayDialog @@ -8013,50 +8501,122 @@ 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 - - Installed SD Titles - インストール済みSDタイトル - - - - Installed NAND Titles - インストール済みNANDタイトル - - - - System Titles - システムタイトル - - - - Add New Game Directory - 新しいゲームディレクトリを追加する - - - - Favorites - お気に入り - - - - - + + + Migration - + Clear Shader Cache @@ -8089,18 +8649,18 @@ p, li { white-space: pre-wrap; } - + You can manually re-trigger this prompt by deleting the new config directory: %1 - + Migrating - + Migrating, this may take a while... @@ -8482,15 +9042,60 @@ p, li { white-space: pre-wrap; } - + %1 is not playing a game %1はゲームのプレイ中ではありません - + %1 is playing %2 %1は%2をプレイ中です + + + Play Time: %1 + + + + + Never Played + + + + + Version: %1 + + + + + Version: 1.0.0 + + + + + Installed SD Titles + インストール済みSDタイトル + + + + Installed NAND Titles + インストール済みNANDタイトル + + + + System Titles + システムタイトル + + + + Add New Game Directory + 新しいゲームディレクトリを追加する + + + + Favorites + お気に入り + QtAmiiboSettingsDialog @@ -8608,250 +9213,250 @@ p, li { white-space: pre-wrap; } 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. @@ -8859,22 +9464,22 @@ Only do this if you're 100% sure you want to delete this data. QtCommon::FS - + Linked Save Data - + Save data has been linked. - + Failed to link save data - + Could not link directory: %1 To: @@ -8882,268 +9487,357 @@ To: - + 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. @@ -9151,83 +9845,83 @@ To: 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. Versions 19.0.1 or earlier are recommended, as 20.0.0+ is currently experimental. + + Firmware missing. Firmware is required to run certain games and use the Home Menu. @@ -9248,56 +9942,56 @@ 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. @@ -9338,7 +10032,7 @@ This is recommended if you want to share data between emulators. - + Pro Controller Proコントローラー @@ -9351,7 +10045,7 @@ This is recommended if you want to share data between emulators. - + Dual Joycons Joy-Con(L/R) @@ -9364,7 +10058,7 @@ This is recommended if you want to share data between emulators. - + Left Joycon Joy-Con(L) @@ -9377,7 +10071,7 @@ This is recommended if you want to share data between emulators. - + Right Joycon Joy-Con(R) @@ -9406,7 +10100,7 @@ This is recommended if you want to share data between emulators. - + Handheld 携帯モード @@ -9527,32 +10221,32 @@ This is recommended if you want to share data between emulators. - + GameCube Controller ゲームキューブコントローラー - + Poke Ball Plus モンスターボールプラス - + NES Controller ファミコン・コントローラー - + SNES Controller スーパーファミコン・コントローラー - + N64 Controller ニンテンドウ64・コントローラー - + Sega Genesis メガドライブ @@ -9707,13 +10401,13 @@ 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 キャンセル @@ -9745,15 +10439,15 @@ By selecting "From Eden", previous save data stored in Ryujinx will be Cancel - + キャンセル - + Failed to link save data - + OS returned error: %1 @@ -9789,45 +10483,9 @@ By selecting "From Eden", previous save data stored in Ryujinx will be - + Total play time reached maximum. - - fs - - - 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 - - - - \ No newline at end of file + diff --git a/dist/languages/ko_KR.ts b/dist/languages/ko_KR.ts index b565af6106..078e3b3a20 100644 --- a/dist/languages/ko_KR.ts +++ b/dist/languages/ko_KR.ts @@ -30,7 +30,7 @@ li.checked::marker { content: "\2612"; } - <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/kXAmGCXBGD"><span style=" text-decoration: underline; color:#039be5;">Discord</span></a> | <a href="https://rvlt.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;">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;">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> @@ -368,390 +368,399 @@ This would ban both their forum username and their IP address. % - + 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 maximum of 4. This is mainly a debug option and shouldn't be disabled. - + Memory Layout - - Increases the amount of emulated RAM from 4GB of the board to the devkit 8/6GB. + + 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. 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. - - Synchronize Core Speed + + 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.). Can help reduce stuttering at lower framerates. - + Accuracy: 정확도: - + 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. - - Virtual Table Bouncing - - - - - Bounces (by emulating a 0-valued return) any functions that triggers a prefetch abort - - - - + 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 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: - + Changes the output graphics API. Vulkan is recommended. - + Device: 장치: - + This setting selects the GPU to use (Vulkan only). - - Shader Backend: - 셰이더 백엔드: - - - - The shader backend to use with OpenGL. -GLSL is recommended. - - - - + Resolution: 해상도: - + 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 using FSR's dynamic contrast. - + Anti-Aliasing Method: 안티에일리어싱 방식: - + The anti-aliasing method to use. SMAA offers the best quality. 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 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 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 - + Runs an additional optimization pass over generated SPIRV shaders. Will increase time required for shader compilation. May slightly improve performance. @@ -759,35 +768,24 @@ 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. GPU: Use the GPU's compute shaders to decode ASTC textures (recommended). @@ -796,45 +794,55 @@ stuttering but may present artifacts. - + ASTC Recompression Method: - + 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. 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 allows tearing as it recovers from a slow down. Mailbox can have lower latency than FIFO and does not tear but may drop frames. @@ -842,1175 +850,1379 @@ Immediate (no synchronization) presents whatever is available and can exhibit te - + 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. Safe to set at 16x on most GPUs. - - GPU Accuracy: + + GPU Mode: - - Controls the 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 as a last resort. + + 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. - + DMA Accuracy: - + Controls the DMA precision accuracy. Safe precision fixes issues in some games but may degrade performance. - - Enable asynchronous shader compilation (Hack) + + Enable asynchronous shader compilation - + May reduce shader stutter. - - Fast GPU Time (Hack) + + 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 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) - + 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 numbers allow for more features and can increase performance, but may cause issues. -The default value is per-system. +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 some games. -Only Vulkan 1.0+ devices support this extension. + + Enables vertex input dynamic state feature for better quality and performance. - - Descriptor Indexing - - - - - Improves texture & buffer handling and the Maxwell translation layer. -Some Vulkan 1.1+ and all 1.2+ devices support this extension. - - - - + 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. - + Device Name 장치 이름 - + The name of the console. - + Custom RTC Date: - + 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: - + This option can be overridden when region setting is auto-select - + Region: 국가: - + The region of the console. - + Time Zone: 시계: - + The time zone of the console. - + Sound Output Mode: 소리 출력 모드: - + Console 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. - + + Unit Serial + + + + + Battery Serial + + + + + Debug knobs + + + + 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 - + Overrides prompts asking to confirm stopping the emulation. Enabling it bypasses such prompts and directly exits the emulation. - + Hide mouse on inactivity 비활성 상태일 때 마우스 숨기기 - + Hides the mouse after 2.5s of inactivity. - + Disable controller applet 컨트롤러 애플릿 비활성화 - + 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 - 익스트림 - - - - - Default - 기본값 - - - - Unsafe (fast) - - - - - Safe (stable) - - - - + + 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 정확함 - + + + 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) - - Serbian (српски) + + 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) - + Docked 거치 모드 - + Handheld 휴대 모드 - + + + 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 + + ConfigureApplets @@ -2082,7 +2294,7 @@ When a program attempts to open the controller applet, it is immediately closed. 기본값으로 초기화 - + Auto 자동 @@ -2534,46 +2746,86 @@ When a program attempts to open the controller applet, it is immediately closed. + Use dev.keys + + + + Enable Debug Asserts 디버그 에러 검출 활성화 - + Debugging 디버깅 - + + 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 FS 액세스 로그 활성화 - + Enable Verbose Reporting Services** 자세한 리포팅 서비스 활성화** - + Censor username in logs - + **This will be reset automatically when Eden closes. @@ -2634,13 +2886,13 @@ When a program attempts to open the controller applet, it is immediately closed. - + Audio 오디오 - + CPU CPU @@ -2656,13 +2908,13 @@ When a program attempts to open the controller applet, it is immediately closed. - + General 일반 - + Graphics 그래픽 @@ -2673,7 +2925,7 @@ When a program attempts to open the controller applet, it is immediately closed. - GraphicsExtensions + GraphicsExtra @@ -2683,7 +2935,7 @@ When a program attempts to open the controller applet, it is immediately closed. - + Controls 조작 @@ -2699,7 +2951,7 @@ When a program attempts to open the controller applet, it is immediately closed. - + System 시스템 @@ -2739,9 +2991,10 @@ When a program attempts to open the controller applet, it is immediately closed. - - - + + + + ... ... @@ -2751,90 +3004,184 @@ When a program 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... 모드 불러오기 경로 설정 + + + Save Data Directory + + + + + Choose an action for the save data directory: + + + + + 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? + + ConfigureGeneral @@ -2851,24 +3198,54 @@ When a program 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 모든 설정 초기화 - + 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 @@ -2898,33 +3275,33 @@ When a program attempts to open the controller applet, it is immediately closed. 배경색: - + % FSR sharpening percentage (e.g. 50%) % - + Off - + VSync Off 수직동기화 끔 - + Recommended 추천 - + On - + VSync On 수직동기화 켬 @@ -2942,7 +3319,7 @@ When a program attempts to open the controller applet, it is immediately closed. 고급 - + Advanced Graphics Settings 고급 그래픽 설정 @@ -2956,16 +3333,26 @@ When a program attempts to open the controller applet, it is immediately closed. - Extensions + Extras - - Vulkan Extensions Settings + + Hacks - + + Changing these options from their default may cause issues. Novitii cavete! + + + + + Vulkan Extensions + + + + % Sample Shading percentage (e.g. 50%) @@ -3543,7 +3930,7 @@ When a program attempts to open the controller applet, it is immediately closed. - + Left Stick L 스틱 @@ -3653,14 +4040,14 @@ When a program attempts to open the controller applet, it is immediately closed. - + ZL ZL - + L L @@ -3673,22 +4060,22 @@ When a program attempts to open the controller applet, it is immediately closed. - + Plus + - + ZR ZR - - + + R R @@ -3745,7 +4132,7 @@ When a program attempts to open the controller applet, it is immediately closed. - + Right Stick R 스틱 @@ -3914,88 +4301,88 @@ To invert the axes, first move your joystick vertically, and then horizontally.< 세가 제네시스 - + 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" 입력 프로필 저장 실패 @@ -4018,15 +4405,6 @@ To invert the axes, first move your joystick vertically, and then horizontally.< 기본값 - - ConfigureLinuxTab - - - - Linux - - - ConfigureMotionTouch @@ -4052,7 +4430,7 @@ To invert the axes, first move your joystick vertically, and then horizontally.< - + Configure 설정 @@ -4082,103 +4460,93 @@ To invert the axes, first move your joystick vertically, and then horizontally.< 포트: - - Learn More - 자세히 알아보기 - - - - + + Test 테스트 - + Add Server 서버 추가 - + Remove Server 원격 서버 - - <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> - - - - + %1:%2 %1:%2 + + - - - - - + + + Eden - + Port number has invalid characters 포트 번호에 유효하지 않은 글자가 있습니다. - + 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>끝날 때까지 기다려주세요. @@ -4308,11 +4676,6 @@ Current values are %1% and %2% respectively. Enable Airplane Mode - - - None - 없음 - ConfigurePerGame @@ -4367,52 +4730,57 @@ 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 + + + + Properties 속성 @@ -4430,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 @@ -4467,38 +4930,18 @@ Current values are %1% and %2% respectively. Username 유저 이름 - - - Set Image - 이미지 설정 - - Select Avatar - - - - 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)) @@ -4506,169 +4949,80 @@ Current values are %1% and %2% respectively. %2 - - Enter Username - 유저 이름을 입력하세요 - - - + Users 유저 - - Enter a username for the new user: - 새로운 유저를 위한 유저 이름을 입력하세요: - - - - Enter a new username: - 새로운 유저 이름을 입력하세요: - - - + 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 saving user image - + Unable to save image to file - - Select User Image - 유저 이미지 선택 - - - - Image Formats (*.jpg *.jpeg *.png *.bmp) + + &Edit - - No firmware available + + &Delete - - 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. - - - - - ConfigureProfileManagerAvatarDialog - - - Select - - - - - Cancel - - - - - Background Color - - - - - Select Firmware Avatar + + Edit User ConfigureProfileManagerDeleteDialog - + Delete this user? All of the user's save data will be deleted. 이 사용자를 삭제하시겠습니까? 사용자의 저장 데이터가 모두 삭제됩니다. - + Confirm Delete 삭제 확인 - + Name: %1 UUID: %2 이름: %1 @@ -4836,7 +5190,7 @@ 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> @@ -4870,17 +5224,22 @@ UUID: %2 로드 중 실행 일시중지 - + + Show recording dialog + + + + Script Directory 스크립트 주소 - + Path 주소 - + ... ... @@ -4893,7 +5252,7 @@ UUID: %2 TAS 설정 - + Select TAS Load Directory... TAS 로드 디렉토리 선택... @@ -5031,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 타이틀 이름 @@ -5157,71 +5495,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 - + Resolution: 해상도: - + Select Screenshots Path... 스크린샷 경로 선택... - + <System> <System> - + English English - + Auto (%1 x %2, %3 x %4) Screenshot width value 자동 (%1 x %2, %3 x %4) @@ -5355,20 +5688,20 @@ Drag points to change position, or double-click table cells to edit values.디스코드에 실행중인 게임을 나타낼 수 있습니다. - - + + All Good Tooltip - + Must be between 4-20 characters Tooltip - + Must be 48 characters, and lowercase a-z Tooltip @@ -5400,27 +5733,27 @@ Drag points to change position, or double-click table cells to edit values. - + Shaders - + UserNAND - + SysNAND - + Mods - + Saves @@ -5458,7 +5791,7 @@ Drag points to change position, or double-click table cells to edit values. - + Calculating... @@ -5481,12 +5814,12 @@ Drag points to change position, or double-click table cells to edit values. - + Dependency - + Version @@ -5660,44 +5993,44 @@ Please go to Configure -> System -> Network and make a selection. GRenderWindow - - + + OpenGL not available! OpenGL을 사용할 수 없습니다! - + OpenGL shared contexts are not supported. 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가 1개 이상의 OpenGL 확장 기능을 지원하지 않습니다. 최신 그래픽 드라이버가 설치되어 있는지 확인하세요. <br><br>GL 렌더링 장치:<br>%1<br><br>지원하지 않는 확장 기능:<br>%2 @@ -5705,203 +6038,208 @@ Please go to Configure -> System -> Network and make a selection. 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 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 - + Scan Subfolders 하위 폴더 스캔 - + Remove Game Directory 게임 디렉토리 제거 - + ▲ Move Up ▲ 위로 이동 - + ▼ Move Down ▼ 아래로 이동 - + Open Directory Location 디렉토리 위치 열기 - + Clear 초기화 - + Name 이름 - + Compatibility 호환성 - + Add-ons 부가 기능 - + File type 파일 형식 - + Size 크기 - + Play time @@ -5909,62 +6247,62 @@ Please go to Configure -> System -> Network and make a selection. 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. 이 게임은 아직 테스트되지 않았습니다. @@ -5972,7 +6310,7 @@ Please go to Configure -> System -> Network and make a selection. GameListPlaceholder - + Double-click to add a new folder to the game list 더블 클릭하여 게임 목록에 새 폴더 추가 @@ -5980,17 +6318,17 @@ Please go to Configure -> System -> Network and make a selection. GameListSearchField - + %1 of %n result(s) - + Filter: 필터: - + Enter pattern to filter 검색 필터 입력 @@ -6066,12 +6404,12 @@ Please go to Configure -> System -> Network and make a selection. 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. Debug Message: @@ -6080,189 +6418,207 @@ 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 - GPU 정확성 변경 + + Change GPU Mode + - + Configure - + Configure Current Game - + Continue/Pause Emulation 재개/에뮬레이션 일시중지 - + Exit Fullscreen 전체화면 종료 - + 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 @@ -6315,22 +6671,22 @@ Debug Message: 예상 시간 5m 4s - + Loading... 불러오는 중... - + Loading Shaders %1 / %2 셰이더 로딩 %1 / %2 - + Launching... 실행 중... - + Estimated Time %1 예상 시간 %1 @@ -6379,42 +6735,42 @@ Debug Message: 로비 새로 고침 - + Password Required to Join 입장시 비밀번호가 필요합니다 - + Password: 비밀번호: - + Players 플레이어 - + Room Name 방 이름 - + Preferred Game 선호하는 게임 - + Host 호스트 - + Refreshing 새로 고치는 중 - + Refresh List 새로 고침 목록 @@ -6463,1171 +6819,1153 @@ Debug Message: + &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) - + Am&iibo - - &Applets + + 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 - + 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) - + &Capture Screenshot 스크린샷 찍기(&C) - - - Open &Album - - - - - &Set Nickname and Owner - - - - - &Delete Game Data - - - &Restore Amiibo + &Album - &Format Amiibo + &Set Nickname and Owner - Open &Mii Editor + &Delete Game Data + &Restore Amiibo + + + + + &Format Amiibo + + + + + &Mii Editor + + + + &Configure TAS... TAS설정...(&C) - + Configure C&urrent Game... 실행중인 게임 맞춤 설정...(&u) - - + + &Start 시작(&S) - + &Reset 리셋(&R) - - + + R&ecord 레코드(&e) - + Open &Controller Menu - + Install Decryption &Keys - - Open &Home Menu + + &Home Menu - - Open &Setup - - - - + &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.<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>. + + 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><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. + + 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/Revolt for help. + + %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 - - Please install firmware to use the Album applet. - - - - - Album Applet - - - - - Album applet is not available. Please reinstall firmware. - - - - - Please install firmware to use the Cabinet applet. - - - - - Cabinet Applet - - - - - Cabinet applet is not available. Please reinstall firmware. - - - - - Please install firmware to use the Mii editor. - - - - - Mii Edit Applet - - - - - Mii editor is not available. Please reinstall firmware. - - - - - Please install firmware to use the Controller Menu. - - - - - Controller Applet - - - - - Controller Menu is not available. Please reinstall firmware. - - - - + Firmware Corrupted - - Home Menu Applet + + Unknown applet - - Home Menu is not available. Please reinstall firmware. + + Applet doesn't map to a known value. - - Please install firmware to use Starter. + + Record not found - - Starter Applet + + Applet not found. Please reinstall firmware. - - Starter is not available. Please reinstall firmware. - - - - + Capture Screenshot - + PNG Image (*.png) - + Update Available - - Download the %1 update? - - - - - TAS state: Running %1/%2 - - - - - TAS state: Recording %1 - - - - - TAS state: Idle %1/%2 - - - - - TAS State: Invalid - - - - - &Stop Running + + 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 - - %1 %2 - - - - + FSR - + NO AA - + VOLUME: MUTE - + VOLUME: %1% Volume percentage (e.g. 50%) - + Derivation Components Missing - - Encryption keys are 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. @@ -7635,69 +7973,79 @@ 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? - - - None - - FXAA @@ -7724,27 +8072,27 @@ Would you like to bypass this and exit anyway? - + Zero-Tangent - + B-Spline - + Mitchell - + Spline-1 - + Gaussian @@ -7780,17 +8128,17 @@ Would you like to bypass this and exit anyway? - Normal + Fast - High + Balanced - Extreme + Accurate @@ -7799,41 +8147,36 @@ Would you like to bypass this and exit anyway? - - OpenGL + + OpenGL GLSL - - Null + + OpenGL SPIRV - GLSL + OpenGL GLASM - GLASM - - - - - SPIRV + Null MigrationWorker - + 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. @@ -7844,7 +8187,7 @@ If this is not desirable, delete the following files: - + 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: @@ -7852,11 +8195,24 @@ If you wish to clean up the files which were left in the old data location, you - + Data was migrated successfully. + + ModSelectDialog + + + Dialog + + + + + The specified folder or archive contains the following mods. Select which ones to install. + + + ModerationDialog @@ -7981,6 +8337,135 @@ Proceed anyway? 방을 떠나려고 합니다. 모든 네트워크 연결이 닫힙니다. + + 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 + + + OverlayDialog @@ -8014,50 +8499,122 @@ 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 - - Installed SD Titles - 설치된 SD 타이틀 - - - - Installed NAND Titles - 설치된 NAND 타이틀 - - - - System Titles - 시스템 타이틀 - - - - Add New Game Directory - 새 게임 디렉토리 추가 - - - - Favorites - 선호하는 게임 - - - - - + + + Migration - + Clear Shader Cache @@ -8090,18 +8647,18 @@ p, li { white-space: pre-wrap; } - + You can manually re-trigger this prompt by deleting the new config directory: %1 - + Migrating - + Migrating, this may take a while... @@ -8483,15 +9040,60 @@ p, li { white-space: pre-wrap; } 게임을 하지 않음 - + %1 is not playing a game %1은(는) 게임을 하고 있지 않습니다 - + %1 is playing %2 %1이(가) %2을(를) 플레이 중입니다 + + + Play Time: %1 + + + + + Never Played + + + + + Version: %1 + + + + + Version: 1.0.0 + + + + + Installed SD Titles + 설치된 SD 타이틀 + + + + Installed NAND Titles + 설치된 NAND 타이틀 + + + + System Titles + 시스템 타이틀 + + + + Add New Game Directory + 새 게임 디렉토리 추가 + + + + Favorites + 선호하는 게임 + QtAmiiboSettingsDialog @@ -8609,250 +9211,250 @@ p, li { white-space: pre-wrap; } 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. @@ -8860,22 +9462,22 @@ Only do this if you're 100% sure you want to delete this data. QtCommon::FS - + Linked Save Data - + Save data has been linked. - + Failed to link save data - + Could not link directory: %1 To: @@ -8883,268 +9485,357 @@ To: - + 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. @@ -9152,83 +9843,83 @@ To: 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. Versions 19.0.1 or earlier are recommended, as 20.0.0+ is currently experimental. + + Firmware missing. Firmware is required to run certain games and use the Home Menu. @@ -9249,56 +9940,56 @@ 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. @@ -9339,7 +10030,7 @@ This is recommended if you want to share data between emulators. - + Pro Controller 프로 컨트롤러 @@ -9352,7 +10043,7 @@ This is recommended if you want to share data between emulators. - + Dual Joycons 듀얼 조이콘 @@ -9365,7 +10056,7 @@ This is recommended if you want to share data between emulators. - + Left Joycon 왼쪽 조이콘 @@ -9378,7 +10069,7 @@ This is recommended if you want to share data between emulators. - + Right Joycon 오른쪽 조이콘 @@ -9407,7 +10098,7 @@ This is recommended if you want to share data between emulators. - + Handheld 휴대 모드 @@ -9528,32 +10219,32 @@ This is recommended if you want to share data between emulators. - + GameCube Controller GameCube 컨트롤러 - + Poke Ball Plus 몬스터볼 Plus - + NES Controller NES 컨트롤러 - + SNES Controller SNES 컨트롤러 - + N64 Controller N64 컨트롤러 - + Sega Genesis 세가 제네시스 @@ -9708,13 +10399,13 @@ 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 취소 @@ -9749,12 +10440,12 @@ By selecting "From Eden", previous save data stored in Ryujinx will be - + Failed to link save data - + OS returned error: %1 @@ -9790,45 +10481,9 @@ By selecting "From Eden", previous save data stored in Ryujinx will be - + Total play time reached maximum. - - fs - - - 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 - - - - \ No newline at end of file + diff --git a/dist/languages/nb.ts b/dist/languages/nb.ts index d8a904a421..6c88a222aa 100644 --- a/dist/languages/nb.ts +++ b/dist/languages/nb.ts @@ -4,7 +4,7 @@ About Eden - + Om Eden @@ -30,7 +30,7 @@ li.checked::marker { content: "\2612"; } - <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/kXAmGCXBGD"><span style=" text-decoration: underline; color:#039be5;">Discord</span></a> | <a href="https://rvlt.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;">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;">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> @@ -82,12 +82,12 @@ li.checked::marker { content: "\2612"; } Send Chat Message - Send Chat Melding + Send chatmelding Send Message - Send Melding + Send melding @@ -122,18 +122,18 @@ li.checked::marker { content: "\2612"; } 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? @@ -148,7 +148,7 @@ li.checked::marker { content: "\2612"; } Kick Player - Spark Ut Spiller + Spark ut spiller @@ -158,7 +158,7 @@ li.checked::marker { content: "\2612"; } Ban Player - Bannlys Spiller + Bannlys spiller @@ -190,7 +190,7 @@ Dette vil bannlyse både deres forum brukernavn og deres IP adresse. Leave Room - Forlat Rommet + Forlat rom @@ -216,7 +216,7 @@ Dette vil bannlyse både deres forum brukernavn og deres IP adresse. Report Compatibility - Rapporter Kompabilitet + Meld inn kompatibilitet @@ -227,7 +227,7 @@ Dette vil bannlyse både deres forum brukernavn og deres IP adresse. Report Game Compatibility - Rapporter Spillkompabilitet + Meld inn spillkompatibilitet @@ -337,7 +337,7 @@ 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! @@ -368,390 +368,399 @@ Dette vil bannlyse både deres forum brukernavn og deres IP adresse.% - + Amiibo editor - + Amiibo-redigerer + + + + Controller configuration + Kontrolleroppsett - Controller configuration - + Data erase + Datasletting - Data erase - - - - Error Feil - + Net connect - + Nettverkstilkobling + + + + Player select + Spillervalg - Player select - - - - 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 - - Output Engine: - Utgangsmotor - - - - Output Device: - Utgangsenhet: + + Enables Horizon's built-in overlay applet. Press and hold the home button for 1 second to show it. + - Input Device: - Inngangsenhet: + Output Engine: + Utdatamotor: - Mute audio - + Output Device: + Utdataenhet: + Input Device: + 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 maximum of 4. This is mainly a debug option and shouldn't be disabled. - + Memory Layout - + Minneoppsett - - Increases the amount of emulated RAM from 4GB of the board to the devkit 8/6GB. + + 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. 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. - - Synchronize Core Speed + + 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.). Can help reduce stuttering at lower framerates. - + Accuracy: Nøyaktighet: - + 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. - - Virtual Table Bouncing - - - - - Bounces (by emulating a 0-valued return) any functions that triggers a prefetch abort - - - - + 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 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: - + Changes the output graphics API. Vulkan is recommended. - + Device: Enhet: - + This setting selects the GPU to use (Vulkan only). - - Shader Backend: - Shader-backend: - - - - The shader backend to use with OpenGL. -GLSL is recommended. - - - - + Resolution: Oppløsning: - + 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 using FSR's dynamic contrast. - + Anti-Aliasing Method: - Anti-aliasing–metode: + Antialiasingmetode: - + The anti-aliasing method to use. SMAA offers the best quality. 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 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 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 - + Optimaliser SPIRV-utdata - + Runs an additional optimization pass over generated SPIRV shaders. Will increase time required for shader compilation. May slightly improve performance. @@ -759,35 +768,24 @@ 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. GPU: Use the GPU's compute shaders to decode ASTC textures (recommended). @@ -796,45 +794,55 @@ stuttering but may present artifacts. - + ASTC Recompression Method: - + 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. 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 allows tearing as it recovers from a slow down. Mailbox can have lower latency than FIFO and does not tear but may drop frames. @@ -842,1173 +850,1377 @@ Immediate (no synchronization) presents whatever is available and can exhibit te - + 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. Safe to set at 16x on most GPUs. - - GPU Accuracy: + + GPU Mode: + GPU-modus: + + + + 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. - - Controls the 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 as a last resort. - - - - + DMA Accuracy: - + DMA-nøyaktighet: - + Controls the DMA precision accuracy. Safe precision fixes issues in some games but may degrade performance. - - Enable asynchronous shader compilation (Hack) + + Enable asynchronous shader compilation - + May reduce shader stutter. - - Fast GPU Time (Hack) + + 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. - - Use Vulkan pipeline cache - Bruk Vulkan rørledningsbuffer + + 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 + + + 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) - + 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 numbers allow for more features and can increase performance, but may cause issues. -The default value is per-system. +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 some games. -Only Vulkan 1.0+ devices support this extension. + + Enables vertex input dynamic state feature for better quality and performance. - - Descriptor Indexing - - - - - Improves texture & buffer handling and the Maxwell translation layer. -Some Vulkan 1.1+ and all 1.2+ devices support this extension. - - - - + 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. - + Device Name Enhetsnavn - + The name of the console. - + Konsollens navn. - + Custom RTC Date: - + Selvvalgt RTC-dato: - + 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: - + This option can be overridden when region setting is auto-select - + Region: Region: - + The region of the console. - + Konsollens region. - + Time Zone: Tidssone: - + The time zone of the console. - + Konsollens tidssone. - + Sound Output Mode: - Lydutgangsmodus: + Lydutdatamodus: - + Console Mode: - + Konsollmodus: - + 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. - + + Unit Serial + + + + + Battery Serial + + + + + Debug knobs + + + + 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 - + Bekreft før stopping av emulering - + 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 - + Hides the mouse after 2.5s of inactivity. - + Disable controller applet Deaktiver kontroller-appleten - + 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 - - - - - Default - Standard - - - - Unsafe (fast) - - - - - Safe (stable) - - - - + + 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 - + + + 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 - Prosessorvideodekoding + CPU-videodekoding - + GPU Video Decoding (Default) - GPU-videodekoding (standard) + 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.75X (540p/810p) [EKSPERIMENTELL] + 0,75× (540p/810p) [EKSPERIMENTELL] - + 1X (720p/1080p) - 1X (720p/1080p) + 1× (720p/1080p) - + 1.25X (900p/1350p) [EXPERIMENTAL] - + 1,25× (900p/1350p) [EKSPERIMENTELL] - + 1.5X (1080p/1620p) [EXPERIMENTAL] - 1.5X (1080p/1620p) [EXPERIMENTELL] + 1,5× (1080p/1620p) [EKSPERIMENTELL] - + 2X (1440p/2160p) - 2X (1440p/2160p) + 2× (1440p/2160p) - + 3X (2160p/3240p) - 3X (2160p/3240p) + 3× (2160p/3240p) - + 4X (2880p/4320p) - 4X (2880p/4320p) + 4× (2880p/4320p) - + 5X (3600p/5400p) - 5X (3600p/5400p) + 5× (3600p/5400p) - + 6X (4320p/6480p) - 6X (4320p/6480p) + 6× (4320p/6480p) - + 7X (5040p/7560p) - 7X (5040p/7560p) + 7× (5040p/7560p) - + 8X (5760p/8640p) - 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 Vindu + 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) - - Serbian (српски) - + + 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) - + 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 - - Low (128) - - - - + + 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 - - High (512) + + ExtendedDynamicState 2 + + + + + ExtendedDynamicState 3 + + + + + Tree View + + + + + Grid View @@ -2044,12 +2256,12 @@ When a program 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. @@ -2069,7 +2281,7 @@ When a program attempts to open the controller applet, it is immediately closed. Resolution: 320*240 - Oppløsning: 320*240 + Oppløsning: 320×240 @@ -2079,10 +2291,10 @@ When a program attempts to open the controller applet, it is immediately closed. Restore Defaults - Gjenopprett Standardverdier + Gjenopprett standarder - + Auto Auto @@ -2102,7 +2314,7 @@ When a program attempts to open the controller applet, it is immediately closed. General - Generelt + Generell @@ -2384,12 +2596,12 @@ When a program attempts to open the controller applet, it is immediately closed. Open Log Location - Åpne Logg-Plassering + Åpne loggplassering Homebrew - Homebrew + Hjemmebrent @@ -2439,7 +2651,7 @@ When a program attempts to open the controller applet, it is immediately closed. Dump Game Shaders - Dump Spill Shadere + Dump spillskyggelegginger @@ -2509,7 +2721,7 @@ When a program 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 @@ -2519,7 +2731,7 @@ When a program attempts to open the controller applet, it is immediately closed. Enable All Controller Types - Aktiver Alle Kontrollertyper + Skru på alle kontrollertyper @@ -2529,50 +2741,90 @@ When a program attempts to open the controller applet, it is immediately closed. Kiosk (Quest) Mode - Kiosk (Quest) Modus + Kioskmodus (Quest-modus) + Use dev.keys + + + + Enable Debug Asserts Aktiver Feilsøkingsoppgaver - + Debugging Feilsøking - + + 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. Aktiver dette for å sende den siste genererte lydkommandolisten til konsollen. Påvirker bare spill som bruker lydrenderen. - + Dump Audio Commands To Console** - Dump Lydkommandoer Til Konsollen** + Dump lydkommandoer til konsollen** - + Flush log output on each line - + Enable FS Access Log - Aktiver FS Tilgangs Logg + Skru på FS-tilgangslogg - + Enable Verbose Reporting Services** Aktiver Verbose Reporting Services** - + Censor username in logs - + **This will be reset automatically when Eden closes. @@ -2587,12 +2839,12 @@ When a program attempts to open the controller applet, it is immediately closed. Clear - Fjern + Tøm Defaults - Standardverdier + Standardinnstillinger @@ -2619,7 +2871,7 @@ When a program attempts to open the controller applet, it is immediately closed. Eden Configuration - + Eden-oppsett @@ -2633,13 +2885,13 @@ When a program attempts to open the controller applet, it is immediately closed. - + Audio Lyd - + CPU CPU @@ -2655,13 +2907,13 @@ When a program attempts to open the controller applet, it is immediately closed. - + General - Generelt + Generell - + Graphics Grafikk @@ -2672,7 +2924,7 @@ When a program attempts to open the controller applet, it is immediately closed. - GraphicsExtensions + GraphicsExtra @@ -2682,7 +2934,7 @@ When a program attempts to open the controller applet, it is immediately closed. - + Controls Kontrollere @@ -2698,14 +2950,14 @@ When a program attempts to open the controller applet, it is immediately closed. - + System System Game List - Spill Liste + Spilliste @@ -2728,7 +2980,7 @@ When a program attempts to open the controller applet, it is immediately closed. Storage Directories - Lagringsmappe + Lagringsmapper @@ -2738,101 +2990,196 @@ When a program 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 ... + + + + Save Data Directory + + + + + Choose an action for the save data directory: + + + + + 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? + @@ -2846,27 +3193,57 @@ When a program 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 - + 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... - - 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? + + Directory Already Added + + + + + This directory is already in the list. + @@ -2884,7 +3261,7 @@ When a program attempts to open the controller applet, it is immediately closed. API Settings - API-Innstillinger + API-innstillinger @@ -2897,33 +3274,33 @@ When a program 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å @@ -2941,9 +3318,9 @@ When a program attempts to open the controller applet, it is immediately closed. Avansert - + Advanced Graphics Settings - Avanserte Grafikkinnstillinger + Avanserte grafikkinnstillinger @@ -2955,16 +3332,26 @@ When a program attempts to open the controller applet, it is immediately closed. - Extensions + Extras - - Vulkan Extensions Settings + + Hacks - + + Changing these options from their default may cause issues. Novitii cavete! + + + + + Vulkan Extensions + Vulkan-utvidelser + + + % Sample Shading percentage (e.g. 50%) @@ -2995,12 +3382,12 @@ When a program attempts to open the controller applet, it is immediately closed. Clear All - Fjern Alle + Tøm alle Restore Defaults - Gjenopprett Standardverdier + Gjenopprett standarder @@ -3022,7 +3409,7 @@ When a program attempts to open the controller applet, it is immediately closed. Conflicting Key Sequence - Mostridende tastesekvens + Motstridende tastesekvens @@ -3053,12 +3440,12 @@ When a program attempts to open the controller applet, it is immediately closed. Restore Default - Gjenopprett Standardverdi + Gjenopprett standarder Clear - Fjern + Tøm @@ -3140,12 +3527,12 @@ When a program attempts to open the controller applet, it is immediately closed. Console Mode - Konsollmodus + Bærbar modus Docked - Dokket + I dokking @@ -3155,13 +3542,13 @@ When a program attempts to open the controller applet, it is immediately closed. Vibration - Vibrasjon + Vibrering Configure - Konfigurer + Sett opp @@ -3221,12 +3608,12 @@ When a program attempts to open the controller applet, it is immediately closed. Defaults - Standardverdier + Standardinnstillinger Clear - Fjern + Tøm @@ -3234,12 +3621,12 @@ When a program attempts to open the controller applet, it is immediately closed. Configure Input - Konfigurer Inngang + Sett opp inndata Joycon Colors - Joycon-Farger + Joycon-farger @@ -3256,7 +3643,7 @@ When a program attempts to open the controller applet, it is immediately closed. L Body - V Kropp + L Kropp @@ -3268,7 +3655,7 @@ When a program attempts to open the controller applet, it is immediately closed. L Button - V Knapp + L-knapp @@ -3280,7 +3667,7 @@ When a program attempts to open the controller applet, it is immediately closed. R Body - H Kropp + R Kropp @@ -3292,7 +3679,7 @@ When a program attempts to open the controller applet, it is immediately closed. R Button - H Knapp + R-knapp @@ -3347,7 +3734,7 @@ When a program attempts to open the controller applet, it is immediately closed. Touchscreen - Touch-skjerm + Berøringsskjerm @@ -3365,7 +3752,7 @@ When a program attempts to open the controller applet, it is immediately closed. Configure - Konfigurer + Sett opp @@ -3375,7 +3762,7 @@ When a program attempts to open the controller applet, it is immediately closed. Infrared Camera - Infrarødt Kamera + Infrarødt kamera @@ -3412,12 +3799,12 @@ When a program attempts to open the controller applet, it is immediately closed. 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] @@ -3432,7 +3819,7 @@ When a program attempts to open the controller applet, it is immediately closed. Motion / Touch - Bevegelse / Touch + Bevegelse / Berøring @@ -3455,12 +3842,12 @@ When a program attempts to open the controller applet, it is immediately closed. Player 1 Profile - Spiller 1 Profil + Spiller 1 profil Player 2 Profile - Spiller 2 Profil + Spiller 2 profil @@ -3508,12 +3895,12 @@ When a program attempts to open the controller applet, it is immediately closed. Configure Input - Konfigurer Inngang + Sett opp inndata Connect Controller - Tilkoble Kontroller + Koble til kontroller @@ -3542,9 +3929,9 @@ When a program attempts to open the controller applet, it is immediately closed. - + Left Stick - Venstre Pinne + Venstre styrepinne @@ -3594,7 +3981,7 @@ When a program attempts to open the controller applet, it is immediately closed. Pressed - Trykket + Inntrykket @@ -3652,14 +4039,14 @@ When a program attempts to open the controller applet, it is immediately closed. - + ZL ZL - + L L @@ -3672,22 +4059,22 @@ When a program attempts to open the controller applet, it is immediately closed. - + Plus Pluss - + ZR ZR - - + + R R @@ -3716,7 +4103,7 @@ When a program attempts to open the controller applet, it is immediately closed. Face Buttons - Frontknapper + Hovedknapper @@ -3744,9 +4131,9 @@ When a program attempts to open the controller applet, it is immediately closed. - + Right Stick - Høyre Pinne + Høyre styrepinne @@ -3756,7 +4143,7 @@ When a program attempts to open the controller applet, it is immediately closed. Configure - Konfigurer + Sett opp @@ -3764,7 +4151,7 @@ When a program attempts to open the controller applet, it is immediately closed. Clear - Fjern + Tøm @@ -3773,7 +4160,7 @@ When a program attempts to open the controller applet, it is immediately closed. [not set] - [ikke satt] + [ikke angitt] @@ -3791,13 +4178,13 @@ When a program attempts to open the controller applet, it is immediately closed. Turbo button - Turbo-Knapp + Turbo-knapp Invert axis - Inverter akse + Invertér akse @@ -3815,7 +4202,7 @@ When a program attempts to open the controller applet, it is immediately closed. Toggle axis - veksle akse + Veksle akse @@ -3830,7 +4217,7 @@ When a program attempts to open the controller applet, it is immediately closed. Map Analog Stick - Kartlegg Analog Spak + Kartlegg analog styrepinne @@ -3860,7 +4247,7 @@ For å invertere aksene, flytt først stikken vertikalt, og så horistonalt. Pro Controller - Pro-Kontroller + Pro Controller @@ -3890,7 +4277,7 @@ For å invertere aksene, flytt først stikken vertikalt, og så horistonalt. Poke Ball Plus - Poke Ball Plus + Poké Ball Plus @@ -3910,91 +4297,91 @@ For å invertere aksene, flytt først stikken vertikalt, og så horistonalt. 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" @@ -4004,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 @@ -4036,12 +4414,12 @@ For å invertere aksene, flytt først stikken vertikalt, og så horistonalt. Touch - Touch + Berøring UDP Calibration: - UDP-kalibrasjon + UDP-kalibrering: @@ -4051,9 +4429,9 @@ For å invertere aksene, flytt først stikken vertikalt, og så horistonalt. - + Configure - Konfigurer + Sett opp @@ -4063,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. @@ -4081,105 +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://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> - - - - + %1:%2 %1:%2 + + - - - - - + + + Eden - + Eden - + Port number has invalid characters Portnummeret har ugyldige tegn - + 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. @@ -4207,7 +4575,7 @@ For å invertere aksene, flytt først stikken vertikalt, og så horistonalt. Horizontal - Horisontal + Vannrett @@ -4221,7 +4589,7 @@ For å invertere aksene, flytt først stikken vertikalt, og så horistonalt. Vertical - Vertikal + Loddrett @@ -4296,7 +4664,7 @@ Gjeldende verdier er henholdsvis %1% og %2%. General - Generelt + Generell @@ -4306,12 +4674,7 @@ Gjeldende verdier er henholdsvis %1% og %2%. Enable Airplane Mode - - - - - None - Ingen + Skru på flymodus @@ -4367,52 +4730,57 @@ 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 - + Properties Egenskaper @@ -4430,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 @@ -4460,45 +4923,25 @@ Gjeldende verdier er henholdsvis %1% og %2%. Current User - Nåværende Bruker + Nåværende bruker Username Brukernavn - - - Set Image - Sett Bilde - - Select Avatar - - - - 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)) @@ -4506,173 +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 - - - + 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 saving user image - + Unable to save image to file - - Select User Image - Sett Bruker Bilde + + &Edit + R&edigér - - Image Formats (*.jpg *.jpeg *.png *.bmp) - + + &Delete + &Slett - - 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. - - - - - ConfigureProfileManagerAvatarDialog - - - Select - - - - - Cancel - - - - - Background Color - - - - - Select Firmware Avatar - + + 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 @@ -4690,7 +5043,7 @@ UUID: %2 Virtual Ring Sensor Parameters - Parametre For Virituell Ringsensor + Parametre for virtuell ringsensor @@ -4712,7 +5065,7 @@ UUID: %2 Direct Joycon Driver - Driver For Direkte JoyCon Tilkobling + Driver for direkte Joycon-tilkobling @@ -4723,38 +5076,38 @@ 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 @@ -4836,7 +5189,7 @@ 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> @@ -4870,17 +5223,22 @@ UUID: %2 Sett kjøring på vent under lasting - + + Show recording dialog + + + + Script Directory Skriptmappe - + Path - Sti + Filbane - + ... ... @@ -4890,10 +5248,10 @@ UUID: %2 TAS Configuration - TAS-konfigurasjon + TAS-oppsett - + Select TAS Load Directory... Velg TAS-lastemappe... @@ -4903,7 +5261,7 @@ UUID: %2 Configure Touchscreen Mappings - Konfigurer Kartlegging av Berøringsskjerm + Sett opp kartlegging av berøringsskjerm @@ -4957,7 +5315,7 @@ Dra punkter for å endre posisjon, eller dobbelttrykk på tabellfelter for å re New Profile - Ny Profil + Ny profil @@ -4967,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 @@ -5025,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 @@ -5108,7 +5445,7 @@ Dra punkter for å endre posisjon, eller dobbelttrykk på tabellfelter for å re General - Generelt + Generell @@ -5118,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 @@ -5143,12 +5480,12 @@ 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 @@ -5157,71 +5494,66 @@ Dra punkter for å endre posisjon, eller dobbelttrykk på tabellfelter for å re - 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) @@ -5242,7 +5574,7 @@ Dra punkter for å endre posisjon, eller dobbelttrykk på tabellfelter for å re Vibration - Vibrasjon + Vibrering @@ -5327,12 +5659,12 @@ Dra punkter for å endre posisjon, eller dobbelttrykk på tabellfelter for å re Token: - Token: + Sjetong: Username: - Brukernavn: + Brukernavn: @@ -5347,28 +5679,28 @@ Dra punkter for å endre posisjon, eller dobbelttrykk på tabellfelter for å re Discord Presence - Discord Nærvær + Discord-tilstedeværelse Show Current Game in your Discord Status - Vis Gjeldene Spill på din Discord Status + Vis nåværende spill på Discord-statusen din + + + + + All Good + Tooltip + Alt er i orden - - All Good - Tooltip - - - - Must be between 4-20 characters Tooltip - + Must be 48 characters, and lowercase a-z Tooltip @@ -5392,7 +5724,7 @@ Dra punkter for å endre posisjon, eller dobbelttrykk på tabellfelter for å re Data Manager - + Databehandler @@ -5400,27 +5732,27 @@ Dra punkter for å endre posisjon, eller dobbelttrykk på tabellfelter for å re - + Shaders - + Skyggeleggere - + UserNAND - + SysNAND - + SysNAND - + Mods - + Saves @@ -5458,7 +5790,7 @@ Dra punkter for å endre posisjon, eller dobbelttrykk på tabellfelter for å re - + Calculating... @@ -5468,7 +5800,7 @@ Dra punkter for å endre posisjon, eller dobbelttrykk på tabellfelter for å re Eden Dependencies - + Eden-avhengigheter @@ -5481,14 +5813,14 @@ Dra punkter for å endre posisjon, eller dobbelttrykk på tabellfelter for å re - + Dependency - + Avhengighet - + Version - + Versjon @@ -5496,7 +5828,7 @@ Dra punkter for å endre posisjon, eller dobbelttrykk på tabellfelter for å re Direct Connect - Direkte Tilkobling + Direktetilkobling @@ -5531,7 +5863,7 @@ Dra punkter for å endre posisjon, eller dobbelttrykk på tabellfelter for å re Connect - Koble Til + Koble til @@ -5539,12 +5871,12 @@ Dra punkter for å endre posisjon, eller dobbelttrykk på tabellfelter for å re Connecting - Kobler Til + Kobler til Connect - Koble Til + Koble til @@ -5612,7 +5944,7 @@ Dra punkter for å endre posisjon, eller dobbelttrykk på tabellfelter for å re Incorrect password. - + Feil passord. @@ -5654,50 +5986,50 @@ Please go to Configure -> System -> Network and make a selection. Error - + Feil GRenderWindow - - + + OpenGL not available! OpenGL ikke tilgjengelig! - + OpenGL shared contexts are not supported. Delte OpenGL-kontekster støttes ikke. - + 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 @@ -5705,203 +6037,208 @@ Please go to Configure -> System -> Network and make a selection. 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 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 - + 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 @@ -5909,62 +6246,62 @@ Please go to Configure -> System -> Network and make a selection. 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å. @@ -5972,7 +6309,7 @@ Please go to Configure -> System -> Network and make a selection. GameListPlaceholder - + Double-click to add a new folder to the game list Dobbeltrykk for å legge til en ny mappe i spillisten @@ -5980,17 +6317,17 @@ Please go to Configure -> System -> Network and make a selection. 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 @@ -6000,7 +6337,7 @@ Please go to Configure -> System -> Network and make a selection. Create Room - Opprett Rom + Opprett rom @@ -6066,12 +6403,12 @@ Please go to Configure -> System -> Network and make a selection. 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. Debug Message: @@ -6080,188 +6417,206 @@ Debug Message: 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 - + 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 Eden - + Avslutt 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 + + + + Direct Connect to Room - - Multiplayer Direct Connect to Room + + Leave Room + Forlat rom + + + + Show Current Room - - Multiplayer Leave Room - - - - - Multiplayer 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 + @@ -6279,12 +6634,12 @@ Debug Message: Install - Installer + Installér Install Files to NAND - Installer filer til NAND + Installér filer til NAND @@ -6302,37 +6657,37 @@ Debug Message: 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 @@ -6361,7 +6716,7 @@ Debug Message: Games I Own - Spill Jeg Eier + Spill jeg eier @@ -6371,7 +6726,7 @@ Debug Message: Hide Full Rooms - Gjem Fulle Rom + Skjul fulle rom @@ -6379,44 +6734,44 @@ Debug Message: 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 @@ -6434,12 +6789,12 @@ Debug Message: &Recent Files - Nylige file&r + &Nylige filer Open &Eden Folders - + Åpne &Eden-mapper @@ -6454,7 +6809,7 @@ Debug Message: &Reset Window Size - Nullstill vindusstø&rrelse + &Tilbakestill vindusstørrelse @@ -6463,1171 +6818,1153 @@ Debug Message: + &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 - + Am&iibo + am&iibo + + + + Launch &Applet - - &Applets - - - - + &TAS &TAS - + &Create Home Menu Shortcut - + Install &Firmware - + Installér &fastvare - + &Help &Hjelp - - - &Install Files to NAND... - &Installer filer til NAND... - - - - L&oad File... - Last inn fil... (&O) - - - - Load &Folder... - Last inn mappe (&F) - + &Install Files to NAND... + &Installér filer til NAND ... + + + + L&oad File... + La&st inn fil ... + + + + Load &Folder... + Last inn ma&ppe... + + + E&xit - &Avslutt + A&vslutt - - + + &Pause - &Paus + &Pause - + &Stop - &Stop + &Stopp - + &Verify Installed Contents - + &About Eden - + &Om Eden - + Single &Window Mode - Énvindusmodus (&W) + 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 - + &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 Decryption &Keys - - Open &Home Menu - + + &Home Menu + &Hjem-meny - - Open &Setup - - - - + &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.<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>. + + 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><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. + + 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/Revolt for help. + + %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 - - Please install firmware to use the Album applet. - - - - - Album Applet - - - - - Album applet is not available. Please reinstall firmware. - - - - - Please install firmware to use the Cabinet applet. - - - - - Cabinet Applet - - - - - Cabinet applet is not available. Please reinstall firmware. - - - - - Please install firmware to use the Mii editor. - - - - - Mii Edit Applet - - - - - Mii editor is not available. Please reinstall firmware. - - - - - Please install firmware to use the Controller Menu. - - - - - Controller Applet - - - - - Controller Menu is not available. Please reinstall firmware. - - - - + Firmware Corrupted - - Home Menu Applet + + Unknown applet - - Home Menu is not available. Please reinstall firmware. + + Applet doesn't map to a known value. - - Please install firmware to use Starter. + + Record not found - - Starter Applet + + Applet not found. Please reinstall firmware. - - Starter is not available. Please reinstall firmware. - - - - + Capture Screenshot - + Ta skjermklipp - + PNG Image (*.png) - + PNG-bilde (*.png) - + Update Available - + Oppdatering tilgjengelig - - Download the %1 update? - + + 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 - - %1 %2 - - - - + FSR - + FSR - + NO AA - + INGEN AA - + VOLUME: MUTE - + VOLUM: DEMP - + VOLUME: %1% Volume percentage (e.g. 50%) - + VOLUM: %1% - + Derivation Components Missing - - Encryption keys are 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. @@ -7635,123 +7972,133 @@ 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? - - - None - - FXAA - + FXAA SMAA - + SMAA Nearest - + Nærmeste Bilinear - + Bilineær Bicubic - + Bikubisk - + Zero-Tangent - - - B-Spline - - - Mitchell - + B-Spline + B-Spline - Spline-1 - + Mitchell + Mitchell - + + Spline-1 + Spline-1 + + + Gaussian - + Gaussisk Lanczos - + Lanczos @@ -7761,79 +8108,74 @@ Would you like to bypass this and exit anyway? Area - + Område MMPX - + MMPX Docked - + I dokking Handheld - + Håndholdt - Normal - + Fast + Rask - High - + Balanced + Balansert - Extreme - + Accurate + Nøyaktig Vulkan - - - - - OpenGL - + Vulkan - Null - + OpenGL GLSL + OpenGL GLSL + + + + OpenGL SPIRV + OpenGL SPIRV - GLSL - + OpenGL GLASM + OpenGL GLASM - GLASM - - - - - SPIRV - + Null + Null MigrationWorker - + 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. @@ -7844,7 +8186,7 @@ If this is not desirable, delete the following files: - + 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: @@ -7852,11 +8194,24 @@ If you wish to clean up the files which were left in the old data location, you - + Data was migrated successfully. + + ModSelectDialog + + + Dialog + + + + + The specified folder or archive contains the following mods. Select which ones to install. + + + ModerationDialog @@ -7893,17 +8248,17 @@ If you wish to clean up the files which were left in the old data location, you Forum Username - Forum Brukernavn + Forumbrukernavn IP Address - IP Adresse + IP-adresse Refresh - Oppdater + Oppfrisk @@ -7921,7 +8276,7 @@ If you wish to clean up the files which were left in the old data location, you Not Connected - Ikke Tilkoblet + Ikke tilkoblet @@ -7963,7 +8318,7 @@ Fortsette likevel? Leave Room - Forlat Rommet + Forlat rom @@ -7981,6 +8336,135 @@ Fortsette likevel? Du er i ferd med å forlate rommet. Eventuelle nettverkstilkoblinger vil bli stengt. + + NewUserDialog + + + + 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 + + + OverlayDialog @@ -8014,50 +8498,122 @@ 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 - - Installed SD Titles - Installerte SD-titler - - - - Installed NAND Titles - Installerte NAND-titler - - - - System Titles - System Titler - - - - Add New Game Directory - Legg til ny spillmappe - - - - Favorites - Favoritter - - - - - + + + Migration - + Clear Shader Cache @@ -8081,27 +8637,29 @@ p, li { white-space: pre-wrap; } - + + + No - + Nei - + You can manually re-trigger this prompt by deleting the new config directory: %1 - + Migrating - + Migrating, this may take a while... @@ -8133,7 +8691,7 @@ p, li { white-space: pre-wrap; } [not set] - [ikke satt] + [ikke angitt] @@ -8315,7 +8873,7 @@ p, li { white-space: pre-wrap; } Options - Instillinger + Innstillinger @@ -8395,12 +8953,12 @@ p, li { white-space: pre-wrap; } Stick L - Venstre Stikke + Venstre styrepinne Stick R - Høyre Stikke + Høyre styrepinne @@ -8426,7 +8984,7 @@ p, li { white-space: pre-wrap; } Touch - Touch + Berøring @@ -8447,7 +9005,7 @@ p, li { white-space: pre-wrap; } Task - oppgave + Oppgave @@ -8483,27 +9041,72 @@ p, li { white-space: pre-wrap; } Spiller ikke et spill - + %1 is not playing a game %1 spiller ikke et spill - + %1 is playing %2 %1 spiller %2 + + + Play Time: %1 + Tid spilt: %1 + + + + Never Played + Aldri spilt + + + + 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 + QtAmiiboSettingsDialog Amiibo Settings - Amiibo Innstillinger + Amiibo-innstillinger Amiibo Info - Amiibo Info + amiibo-info @@ -8513,7 +9116,7 @@ p, li { white-space: pre-wrap; } Type - TypeType + Type @@ -8523,12 +9126,12 @@ p, li { white-space: pre-wrap; } Amiibo Data - Amiibo Data + amiibo-data Custom Name - Tilpasset Navn + Tilpasset navn @@ -8538,7 +9141,7 @@ p, li { white-space: pre-wrap; } Creation Date - Skapelsesdato + Opprettingsdato @@ -8548,7 +9151,7 @@ p, li { white-space: pre-wrap; } Modification Date - Modifiseringsdato + Endringsdato @@ -8563,12 +9166,12 @@ p, li { white-space: pre-wrap; } Game Id - Spillid + Spill-ID Mount Amiibo - Monter Amiibo + Montér amiibo @@ -8609,250 +9212,250 @@ p, li { white-space: pre-wrap; } 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. @@ -8860,22 +9463,22 @@ Only do this if you're 100% sure you want to delete this data. QtCommon::FS - + Linked Save Data - + Save data has been linked. - + Failed to link save data - + Could not link directory: %1 To: @@ -8883,268 +9486,357 @@ To: - + 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. @@ -9152,83 +9844,83 @@ To: 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. Versions 19.0.1 or earlier are recommended, as 20.0.0+ is currently experimental. + + Firmware missing. Firmware is required to run certain games and use the Home Menu. @@ -9249,56 +9941,56 @@ 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. @@ -9339,9 +10031,9 @@ This is recommended if you want to share data between emulators. - + Pro Controller - Pro-Kontroller + Pro Controller @@ -9352,7 +10044,7 @@ This is recommended if you want to share data between emulators. - + Dual Joycons Doble Joycons @@ -9365,7 +10057,7 @@ This is recommended if you want to share data between emulators. - + Left Joycon Venstre Joycon @@ -9378,7 +10070,7 @@ This is recommended if you want to share data between emulators. - + Right Joycon Høyre Joycon @@ -9407,7 +10099,7 @@ This is recommended if you want to share data between emulators. - + Handheld Håndholdt @@ -9439,23 +10131,23 @@ This is recommended if you want to share data between emulators. Console Mode - Konsollmodus + Bærbar modus Docked - Dokket + I dokking Vibration - Vibrasjon + Vibrering Configure - Konfigurer + Sett opp @@ -9470,7 +10162,7 @@ This is recommended if you want to share data between emulators. Create - Lag + Opprett @@ -9525,37 +10217,37 @@ This is recommended if you want to share data between emulators. 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 @@ -9624,7 +10316,7 @@ Prøv igjen eller kontakt utvikleren av programvaren. Profile Icon Editor - Redigering av profilikon + Profilikonredigerer @@ -9687,7 +10379,7 @@ Prøv igjen eller kontakt utvikleren av programvaren. Software Keyboard - Programvare Tastatur + Programvaretastatur @@ -9708,13 +10400,13 @@ 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 @@ -9736,25 +10428,25 @@ By selecting "From Eden", previous save data stored in Ryujinx will be From Eden - + Fra Eden From Ryujinx - + Fra Ryujinx Cancel - + Avbryt - + Failed to link save data - + OS returned error: %1 @@ -9764,7 +10456,7 @@ By selecting "From Eden", previous save data stored in Ryujinx will be Enter a hotkey - Skriv inn en hurtigtast + Velg en hurtigtast @@ -9777,58 +10469,22 @@ By selecting "From Eden", previous save data stored in Ryujinx will be Hours: - + Timer: Minutes: - + Minutter: Seconds: - + Sekunder: - + Total play time reached maximum. - - fs - - - 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 - - - - \ No newline at end of file + diff --git a/dist/languages/nl.ts b/dist/languages/nl.ts index f27b36ea33..869ead9df0 100644 --- a/dist/languages/nl.ts +++ b/dist/languages/nl.ts @@ -30,7 +30,7 @@ li.checked::marker { content: "\2612"; } - <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/kXAmGCXBGD"><span style=" text-decoration: underline; color:#039be5;">Discord</span></a> | <a href="https://rvlt.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;">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;">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> @@ -368,140 +368,149 @@ Dit zou zowel hun forum gebruikersnaam als hun IP-adres verbannen. % - + 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 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 4GB of the board to the devkit 8/6GB. + + Increases the amount of emulated RAM. Doesn't affect performance/stability but may allow HD texture mods to load. - Verhoogt de hoeveelheid geëmuleerd RAM van 4 GB van het bord naar de devkit 8/6 GB. -Heeft geen invloed op de prestaties/stabiliteit, maar maakt het mogelijk om HD-textuurmods te laden. + - + 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. 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. @@ -510,40 +519,60 @@ 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 Synchroniseer kernsnelheid - + 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: - + Change the accuracy of the emulated CPU (for debugging only). - - + + Backend: - - Fast CPU Time - Snelle CPU-tijd + + 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. @@ -551,32 +580,22 @@ Gebruik Boost (1700 MHz) om op de hoogste native kloksnelheid van de Switch te d - + 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. - - Virtual Table Bouncing - - - - - Bounces (by emulating a 0-valued return) any functions that triggers a prefetch abort - - - - + 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. @@ -585,183 +604,172 @@ Als u deze optie inschakelt, worden lees- en schrijfbewerkingen in het gastgeheu 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 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: - + Changes the output graphics API. Vulkan is recommended. - + Device: Apparaat: - + This setting selects the GPU to use (Vulkan only). - - Shader Backend: - Shader Backend: - - - - The shader backend to use with OpenGL. -GLSL is recommended. - - - - + Resolution: Resolutie: - + 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 using FSR's dynamic contrast. - + Anti-Aliasing Method: Antialiasing-methode: - + The anti-aliasing method to use. SMAA offers the best quality. 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 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 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 - + Runs an additional optimization pass over generated SPIRV shaders. Will increase time required for shader compilation. May slightly improve performance. @@ -769,35 +777,24 @@ 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. GPU: Use the GPU's compute shaders to decode ASTC textures (recommended). @@ -806,45 +803,55 @@ stuttering but may present artifacts. - + ASTC Recompression Method: - + 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. 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 allows tearing as it recovers from a slow down. Mailbox can have lower latency than FIFO and does not tear but may drop frames. @@ -852,1175 +859,1379 @@ Immediate (no synchronization) presents whatever is available and can exhibit te - + 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. Safe to set at 16x on most GPUs. - - GPU Accuracy: - GPU Nauwkeurigheid: - - - - Controls the 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 as a last resort. + + GPU Mode: - + + 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. + + + + DMA Accuracy: - + Controls the DMA precision accuracy. Safe precision fixes issues in some games but may degrade performance. - - Enable asynchronous shader compilation (Hack) + + Enable asynchronous shader compilation - + May reduce shader stutter. - - Fast GPU Time (Hack) + + 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 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) - + 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 numbers allow for more features and can increase performance, but may cause issues. -The default value is per-system. +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 some games. -Only Vulkan 1.0+ devices support this extension. + + Enables vertex input dynamic state feature for better quality and performance. - - Descriptor Indexing - - - - - Improves texture & buffer handling and the Maxwell translation layer. -Some Vulkan 1.1+ and all 1.2+ devices support this extension. - - - - + 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. - + Device Name Apparaatnaam - + The name of the console. - + Custom RTC Date: Aangepaste RTC Datum: - + 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: - + This option can be overridden when region setting is auto-select - + Region: Regio: - + The region of the console. - + Time Zone: Tijdzone: - + The time zone of the console. - + Sound Output Mode: Geluidsuitvoermodus: - + Console Mode: Console Modus: - + 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. - + + Unit Serial + + + + + Battery Serial + + + + + Debug knobs + + + + 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 Bevestig voordat u de emulatie stopt - + 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 - + Hides the mouse after 2.5s of inactivity. - + Disable controller applet Controller-applet uitschakelen - + 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 - - - - - Default - Standaard - - - - Unsafe (fast) - - - - - Safe (stable) - - - - + + 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 - + + + 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) - - Serbian (српски) + + 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) - + Docked Docked - + Handheld Handheld - + + + 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 + + ConfigureApplets @@ -2092,7 +2303,7 @@ When a program attempts to open the controller applet, it is immediately closed. Standaard Herstellen - + Auto Auto @@ -2531,46 +2742,86 @@ When a program attempts to open the controller applet, it is immediately closed. + Use dev.keys + + + + Enable Debug Asserts Schakel Debug-asserts in - + Debugging Debugging - + + 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. Zet dit aan om de laatst gegenereerde audio commandolijst naar de console te sturen. Alleen van invloed op spellen die de audio renderer gebruiken. - + 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 - + Censor username in logs - + **This will be reset automatically when Eden closes. @@ -2631,13 +2882,13 @@ When a program attempts to open the controller applet, it is immediately closed. - + Audio Audio - + CPU CPU @@ -2653,13 +2904,13 @@ When a program attempts to open the controller applet, it is immediately closed. - + General Algemeen - + Graphics Graphics @@ -2670,7 +2921,7 @@ When a program attempts to open the controller applet, it is immediately closed. - GraphicsExtensions + GraphicsExtra @@ -2680,7 +2931,7 @@ When a program attempts to open the controller applet, it is immediately closed. - + Controls Bediening @@ -2696,7 +2947,7 @@ When a program attempts to open the controller applet, it is immediately closed. - + System Systeem @@ -2736,9 +2987,10 @@ When a program attempts to open the controller applet, it is immediately closed. - - - + + + + ... ... @@ -2748,90 +3000,184 @@ When a program 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... + + + Save Data Directory + + + + + Choose an action for the save data directory: + + + + + 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? + + ConfigureGeneral @@ -2848,24 +3194,54 @@ When a program 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 - + 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 @@ -2895,33 +3271,33 @@ When a program 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 @@ -2939,7 +3315,7 @@ When a program attempts to open the controller applet, it is immediately closed. Geavanceerd - + Advanced Graphics Settings Geavanceerde Grafische Instellingen @@ -2953,16 +3329,26 @@ When a program attempts to open the controller applet, it is immediately closed. - Extensions + Extras - - Vulkan Extensions Settings + + Hacks - + + Changing these options from their default may cause issues. Novitii cavete! + + + + + Vulkan Extensions + + + + % Sample Shading percentage (e.g. 50%) @@ -3540,7 +3926,7 @@ When a program attempts to open the controller applet, it is immediately closed. - + Left Stick Linker Stick @@ -3650,14 +4036,14 @@ When a program attempts to open the controller applet, it is immediately closed. - + ZL ZL - + L L @@ -3670,22 +4056,22 @@ When a program attempts to open the controller applet, it is immediately closed. - + Plus Plus - + ZR ZR - - + + R R @@ -3742,7 +4128,7 @@ When a program attempts to open the controller applet, it is immediately closed. - + Right Stick Rechter Stick @@ -3911,88 +4297,88 @@ Om de assen om te keren, beweeg je de joystick eerst verticaal en vervolgens hor 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 @@ -4015,15 +4401,6 @@ Om de assen om te keren, beweeg je de joystick eerst verticaal en vervolgens hor Standaardinstellingen - - ConfigureLinuxTab - - - - Linux - - - ConfigureMotionTouch @@ -4049,7 +4426,7 @@ Om de assen om te keren, beweeg je de joystick eerst verticaal en vervolgens hor - + Configure Configureer @@ -4079,103 +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://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> - - - - + %1:%2 %1:%2 + + - - - - - + + + Eden - + Port number has invalid characters Poortnummer bevat ongeldige tekens - + 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. @@ -4306,11 +4673,6 @@ De huidige waarden zijn %1% en %2%. Enable Airplane Mode - - - None - Geen - ConfigurePerGame @@ -4365,52 +4727,57 @@ 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 + + + + Properties Eigenschappen @@ -4428,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 @@ -4465,38 +4927,18 @@ De huidige waarden zijn %1% en %2%. Username Gebruikersnaam - - - Set Image - Stel Afbeelding In - - Select Avatar - - - - 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)) @@ -4504,169 +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: - - - + 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 saving user image - + Unable to save image to file - - Select User Image - Selecteer Gebruikersfoto - - - - Image Formats (*.jpg *.jpeg *.png *.bmp) + + &Edit - - No firmware available + + &Delete - - 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. - - - - - ConfigureProfileManagerAvatarDialog - - - Select - - - - - Cancel - - - - - Background Color - - - - - Select Firmware Avatar + + 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 @@ -4834,7 +5187,7 @@ 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> @@ -4868,17 +5221,22 @@ UUID: %2 Onderbreek de uitvoering tijdens ladingen - + + Show recording dialog + + + + Script Directory Script-map - + Path Pad - + ... ... @@ -4891,7 +5249,7 @@ UUID: %2 TAS-configuratie - + Select TAS Load Directory... Selecteer TAS-laadmap... @@ -5029,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 @@ -5155,71 +5492,66 @@ Versleep punten om de positie te veranderen, of dubbelklik op tabelcellen om waa - 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) @@ -5353,20 +5685,20 @@ Versleep punten om de positie te veranderen, of dubbelklik op tabelcellen om waa Toon huidige game in uw Discord-status - - + + All Good Tooltip - + Must be between 4-20 characters Tooltip - + Must be 48 characters, and lowercase a-z Tooltip @@ -5398,27 +5730,27 @@ Versleep punten om de positie te veranderen, of dubbelklik op tabelcellen om waa - + Shaders - + UserNAND - + SysNAND - + Mods - + Saves @@ -5456,7 +5788,7 @@ Versleep punten om de positie te veranderen, of dubbelklik op tabelcellen om waa - + Calculating... @@ -5479,12 +5811,12 @@ Versleep punten om de positie te veranderen, of dubbelklik op tabelcellen om waa - + Dependency - + Version @@ -5658,44 +5990,44 @@ Please go to Configure -> System -> Network and make a selection. GRenderWindow - - + + OpenGL not available! OpenGL niet beschikbaar! - + OpenGL shared contexts are not supported. OpenGL gedeelde contexten worden niet ondersteund. - + 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 @@ -5703,203 +6035,208 @@ Please go to Configure -> System -> Network and make a selection. 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 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 - + 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 @@ -5907,62 +6244,62 @@ Please go to Configure -> System -> Network and make a selection. 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. @@ -5970,7 +6307,7 @@ Please go to Configure -> System -> Network and make a selection. GameListPlaceholder - + Double-click to add a new folder to the game list Dubbel-klik om een ​​nieuwe map toe te voegen aan de spellijst @@ -5978,17 +6315,17 @@ Please go to Configure -> System -> Network and make a selection. GameListSearchField - + %1 of %n result(s) %1 van %n resultaat(en)%1 van %n resultaat(en) - + Filter: Filter: - + Enter pattern to filter Voer patroon in om te filteren @@ -6064,12 +6401,12 @@ Please go to Configure -> System -> Network and make a selection. 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. Debug Message: @@ -6078,189 +6415,207 @@ Debug Message: 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 - + Configure Current Game - + Continue/Pause Emulation Emulatie Doorgaan/Onderbreken - + Exit Fullscreen Volledig Scherm Afsluiten - + 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 @@ -6313,22 +6668,22 @@ Debug Message: Geschatte Tijd 5m 4s - + Loading... Laden... - + Loading Shaders %1 / %2 Shaders Laden %1 / %2 - + Launching... Starten... - + Estimated Time %1 Geschatte Tijd %1 @@ -6377,42 +6732,42 @@ Debug Message: 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 @@ -6461,1171 +6816,1153 @@ Debug Message: + &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 - + Am&iibo - - &Applets + + 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 - + 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 - + &Capture Screenshot &Leg Schermafbeelding Vast - - - Open &Album - - - - - &Set Nickname and Owner - - - - - &Delete Game Data - - - &Restore Amiibo + &Album - &Format Amiibo + &Set Nickname and Owner - Open &Mii Editor + &Delete Game Data + &Restore Amiibo + + + + + &Format Amiibo + + + + + &Mii Editor + + + + &Configure TAS... &Configureer TAS... - + Configure C&urrent Game... Configureer Huidig Spel... - - + + &Start &Start - + &Reset &Herstel - - + + R&ecord Opnemen - + Open &Controller Menu - + Install Decryption &Keys - - Open &Home Menu + + &Home Menu - - Open &Setup - - - - + &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.<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>. + + 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><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. + + 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/Revolt for help. + + %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 - - Please install firmware to use the Album applet. - - - - - Album Applet - - - - - Album applet is not available. Please reinstall firmware. - - - - - Please install firmware to use the Cabinet applet. - - - - - Cabinet Applet - - - - - Cabinet applet is not available. Please reinstall firmware. - - - - - Please install firmware to use the Mii editor. - - - - - Mii Edit Applet - - - - - Mii editor is not available. Please reinstall firmware. - - - - - Please install firmware to use the Controller Menu. - - - - - Controller Applet - - - - - Controller Menu is not available. Please reinstall firmware. - - - - + Firmware Corrupted - - Home Menu Applet + + Unknown applet - - Home Menu is not available. Please reinstall firmware. + + Applet doesn't map to a known value. - - Please install firmware to use Starter. + + Record not found - - Starter Applet + + Applet not found. Please reinstall firmware. - - Starter is not available. Please reinstall firmware. - - - - + Capture Screenshot - + PNG Image (*.png) - + Update Available - - Download the %1 update? - - - - - TAS state: Running %1/%2 - - - - - TAS state: Recording %1 - - - - - TAS state: Idle %1/%2 - - - - - TAS State: Invalid - - - - - &Stop Running + + 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 - - %1 %2 - - - - + FSR - + NO AA - + VOLUME: MUTE - + VOLUME: %1% Volume percentage (e.g. 50%) - + Derivation Components Missing - - Encryption keys are 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. @@ -7633,69 +7970,79 @@ 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? - - - None - - FXAA @@ -7722,27 +8069,27 @@ Would you like to bypass this and exit anyway? - + Zero-Tangent - + B-Spline - + Mitchell - + Spline-1 - + Gaussian @@ -7778,17 +8125,17 @@ Would you like to bypass this and exit anyway? - Normal + Fast - High + Balanced - Extreme + Accurate @@ -7797,41 +8144,36 @@ Would you like to bypass this and exit anyway? - - OpenGL + + OpenGL GLSL - - Null + + OpenGL SPIRV - GLSL + OpenGL GLASM - GLASM - - - - - SPIRV + Null MigrationWorker - + 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. @@ -7842,7 +8184,7 @@ If this is not desirable, delete the following files: - + 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: @@ -7850,11 +8192,24 @@ If you wish to clean up the files which were left in the old data location, you - + Data was migrated successfully. + + ModSelectDialog + + + Dialog + + + + + The specified folder or archive contains the following mods. Select which ones to install. + + + ModerationDialog @@ -7979,6 +8334,135 @@ Toch doorgaan? Je staat op het punt de kamer te verlaten. Alle netwerkverbindingen worden afgesloten. + + 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 + + + OverlayDialog @@ -8012,50 +8496,122 @@ 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 - - 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 - - - - - + + + Migration - + Clear Shader Cache @@ -8088,18 +8644,18 @@ p, li { white-space: pre-wrap; } - + You can manually re-trigger this prompt by deleting the new config directory: %1 - + Migrating - + Migrating, this may take a while... @@ -8481,15 +9037,60 @@ p, li { white-space: pre-wrap; } Geen spel aan het spelen - + %1 is not playing a game %1 speelt geen spel - + %1 is playing %2 %1 speelt %2 + + + Play Time: %1 + + + + + Never Played + + + + + 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 + QtAmiiboSettingsDialog @@ -8607,250 +9208,250 @@ p, li { white-space: pre-wrap; } 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. @@ -8858,22 +9459,22 @@ Only do this if you're 100% sure you want to delete this data. QtCommon::FS - + Linked Save Data - + Save data has been linked. - + Failed to link save data - + Could not link directory: %1 To: @@ -8881,268 +9482,357 @@ To: - + 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. @@ -9150,83 +9840,83 @@ To: 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. Versions 19.0.1 or earlier are recommended, as 20.0.0+ is currently experimental. + + Firmware missing. Firmware is required to run certain games and use the Home Menu. @@ -9247,56 +9937,56 @@ 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. @@ -9337,7 +10027,7 @@ This is recommended if you want to share data between emulators. - + Pro Controller Pro Controller @@ -9350,7 +10040,7 @@ This is recommended if you want to share data between emulators. - + Dual Joycons Twee Joycons @@ -9363,7 +10053,7 @@ This is recommended if you want to share data between emulators. - + Left Joycon Linker Joycon @@ -9376,7 +10066,7 @@ This is recommended if you want to share data between emulators. - + Right Joycon Rechter Joycon @@ -9405,7 +10095,7 @@ This is recommended if you want to share data between emulators. - + Handheld Handheld @@ -9526,32 +10216,32 @@ This is recommended if you want to share data between emulators. - + 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 @@ -9706,13 +10396,13 @@ 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 @@ -9747,12 +10437,12 @@ By selecting "From Eden", previous save data stored in Ryujinx will be - + Failed to link save data - + OS returned error: %1 @@ -9788,45 +10478,9 @@ By selecting "From Eden", previous save data stored in Ryujinx will be - + Total play time reached maximum. - - fs - - - 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 - - - - \ No newline at end of file + diff --git a/dist/languages/pl.ts b/dist/languages/pl.ts index fe269ea576..6668939f93 100644 --- a/dist/languages/pl.ts +++ b/dist/languages/pl.ts @@ -37,8 +37,8 @@ li.checked::marker { content: "\2612"; } - <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/kXAmGCXBGD"><span style=" text-decoration: underline; color:#039be5;">Discord</span></a> | <a href="https://rvlt.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;">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/kXAmGCXBGD"><span style=" text-decoration: underline; color:#039be5;">Discord</span></a> | <a href="https://rvlt.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;">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> @@ -375,141 +375,150 @@ To zbanuje jego/jej nick na forum, oraz jego/jej adres IP. % - + 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 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 4GB of the board to the devkit 8/6GB. + + Increases the amount of emulated RAM. Doesn't affect performance/stability but may allow HD texture mods to load. - Zwiększa ilość emulowanej pamięci RAM z 4 GB (wariant płyty) do 8/6 GB (wariant devkit). -Nie wpływa na wydajność ani stabilność, ale może umożliwić wczytywanie modów z teksturami HD. + - + 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. 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. @@ -518,72 +527,82 @@ 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 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.). 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: - + Change the accuracy of the emulated CPU (for debugging only). Zmień dokładność emulowanego CPU (tylko do debugowania). - - + + Backend: Backend: - - Fast CPU Time - Szybki czas CPU + + 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. - - Virtual Table Bouncing - Odbijanie tablicy wirtualnej - - - - Bounces (by emulating a 0-valued return) any functions that triggers a prefetch abort - Pomija (emulując zwrócenie wartości 0) wszystkie funkcje, które wyzwalają wyjątek prefetch - - - + 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. @@ -592,112 +611,100 @@ Włączenie powoduje, że odczyty/zapisy pamięci gościa trafiają bezpośredni 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 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: - + 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 (Vulkan only). To ustawienie wybiera używany GPU (tylko Vulkan). - - Shader Backend: - Backend Shaderów: - - - - The shader backend to use with OpenGL. -GLSL is recommended. - Backend shaderów używany z OpenGL. -Zalecany jest GLSL. - - - + Resolution: Rozdzielczość: - + Forces to render at a different resolution. Higher resolutions require more VRAM and bandwidth. Options lower than 1X can cause artifacts. @@ -706,27 +713,27 @@ 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 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 can produce a more stable picture in lower resolutions. @@ -735,12 +742,12 @@ 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. @@ -749,12 +756,12 @@ Tryb bez ramek zapewnia najlepszą zgodność z klawiaturą ekranową wymaganą Pełny ekran wyłączny może oferować lepszą wydajność i lepsze wsparcie FreeSync/G-Sync. - + Aspect Ratio: Format obrazu: - + 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. @@ -763,24 +770,24 @@ Większość gier obsługuje wyłącznie 16:9, więc inne proporcje wymagają mo Kontroluje także proporcje przechwytywanych zrzutów ekranu. - + 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 Optymalizacja wydajności SPIRV - + Runs an additional optimization pass over generated SPIRV shaders. Will increase time required for shader compilation. May slightly improve performance. @@ -791,24 +798,12 @@ 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. - Używa dodatkowego wątku CPU do renderowania. -Ta opcja powinna zawsze pozostać włączona. - - - + 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. @@ -817,12 +812,12 @@ Dekodowanie może być wykonywane przez CPU albo GPU, albo może być całkowici 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. GPU: Use the GPU's compute shaders to decode ASTC textures (recommended). @@ -834,12 +829,12 @@ 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: - + 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. @@ -847,34 +842,44 @@ BC1/BC3: The intermediate format will be recompressed to BC1 or BC3 format, 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. 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 allows tearing as it recovers from a slow down. Mailbox can have lower latency than FIFO and does not tear but may drop frames. @@ -885,12 +890,12 @@ Mailbox może mieć niższe opóźnienia niż FIFO i nie powoduje tearingu, ale 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. @@ -898,104 +903,147 @@ Unreal Engine 4 games often see the most significant changes thereof. 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. 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. - - GPU Accuracy: - Dokładność GPU: + + GPU Mode: + Tryb GPU: - - Controls the 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 as a last resort. - Steruje dokładnością emulacji GPU. -Większość gier renderuje się poprawnie przy ustawieniu Normalne, ale część nadal wymaga ustawienia Wysokie. -Cząsteczki zwykle renderują się poprawnie dopiero przy Wysokiej dokładności. -Ustawienie Ekstremalne stosuj tylko w ostateczności. + + 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. - + DMA Accuracy: Dokładność DMA: - + 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ść. - - Enable asynchronous shader compilation (Hack) - Włącz asynchroniczną kompilację shaderów (hack) + + Enable asynchronous shader compilation + Włącz asynchroniczną kompilację shaderów - + May reduce shader stutter. Może zmniejszyć zacięcia spowodowane kompilacją shaderów. - - Fast GPU Time (Hack) - Szybki czas GPU (hack) + + Fast GPU Time + Szybki czas GPU - + Overclocks the emulated GPU to increase dynamic resolution and render distance. -Use 128 for maximal performance and 512 for maximal graphics fidelity. - Podkręca emulowany GPU, aby zwiększyć dynamiczną rozdzielczość i dystans renderowania. -Użyj 128 dla maksymalnej wydajności i 512 dla maksymalnej jakości grafiki. +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) - + 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. @@ -1004,166 +1052,182 @@ To ustawienie istnieje wyłącznie dla sterowników Intela i może spowodować b 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 numbers allow for more features and can increase performance, but may cause issues. -The default value is per-system. - Kontroluje liczbę funkcji, które mogą być używane w Rozszerzonym Stanie Dynamicznym. -Wyższe wartości pozwalają na więcej funkcji i mogą zwiększyć wydajność, ale mogą powodować problemy . -Wartość domyślna może się różnić w zależności od systemu. +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ą. - - Provoking Vertex - Wierzchołek prowokujący + + Vertex Input Dynamic State + Dynamiczny stan wejścia wierzchołków - - Improves lighting and vertex handling in some games. -Only Vulkan 1.0+ devices support this extension. - Poprawia oświetlenie i obsługę wierzchołków w niektórych grach. -To rozszerzenie jest obsługiwane tylko na urządzeniach z Vulkanem 1.0+. + + 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ść. - - Descriptor Indexing - Indeksowanie deskryptorów - - - - Improves texture & buffer handling and the Maxwell translation layer. -Some Vulkan 1.1+ and all 1.2+ devices support this extension. - Poprawia obsługę tekstur i buforów oraz warstwę translacji Maxwell. -Niektóre urządzenia z Vulkanem 1.1+ i wszystkie z 1.2+ obsługują to rozszerzenie. - - - + 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. Ustala ziarno generatora liczb losowych. Głównie używane do speedrunów. - + Device Name Nazwa urządzenia - + The name of the console. The name of the console. - + Custom RTC Date: Własna data RTC - + 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: - + 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 console. Region konsoli. - + Time Zone: Strefa czasowa: - + 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 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. @@ -1172,908 +1236,1049 @@ W zależności od tego ustawienia gry zmienią swoją rozdzielczość, szczegó Ustawienie na Handheld może poprawić wydajność na słabszych komputerach. - + + Unit Serial + + + + + Battery Serial + + + + + Debug knobs + + + + Prompt for user profile on boot Pytaj o profil użytkownika przy uruchomieniu. - + Useful if multiple people use the same PC. Przydatne, gdy z tego samego PC korzysta wiele osób. - + Pause when not in focus Wstrzymuj, gdy okno nie jest aktywne - + Pauses emulation when focusing on other windows. Wstrzymuje emulację po przełączeniu na inne okna. - + Confirm before stopping emulation Potwierdzaj przed zatrzymaniem emulacji - + 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 - + 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 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 - Konserwatywny - - - - Aggressive - Agresywny - - - - OpenGL - OpenGL - - - - Vulkan - Vulkan - - - - Null - Null - - - - GLSL - GLSL - - - - GLASM (Assembly Shaders, NVIDIA Only) - GLASM (Zgromadzone Shadery, tylko NVIDIA) - - - - SPIR-V (Experimental, AMD/Mesa Only) - SPIR-V (eksperymentalne, tylko AMD/Mesa) - - - - Normal - Normalny - - - - High - Wysoki - - - - Extreme - Ekstremalny - - - - - Default - Domyślny - - - - Unsafe (fast) - Niezalecane (szybkie) - - - - Safe (stable) - Bezpieczne (stabilne) - - - + + 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 - + + + 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) - - Serbian (српски) - Serbski + + 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) - + 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 - - Low (128) - Niskie (128) - - - + + 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 + + ConfigureApplets @@ -2145,7 +2350,7 @@ Jeśli emulowane oprogramowanie próbuje otworzyć aplet kontrolera, jest on nat Przywróć domyślne - + Auto Automatyczny @@ -2594,46 +2799,86 @@ Gdy ta opcja jest włączona, niedopasowanie jest uruchamiane tylko wtedy, gdy d + Use dev.keys + + + + Enable Debug Asserts Włącz potwierdzenia debugowania - + Debugging Debugowanie - + + Battery Serial: + Numer seryjny baterii: + + + + 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. - + 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** - + Censor username in logs Ukrywaj nazwę użytkownika w logach - + **This will be reset automatically when Eden closes. **To zostanie automatycznie zresetowane po zamknięciu Edena. @@ -2694,13 +2939,13 @@ Gdy ta opcja jest włączona, niedopasowanie jest uruchamiane tylko wtedy, gdy d - + Audio Dźwięk - + CPU CPU @@ -2716,13 +2961,13 @@ Gdy ta opcja jest włączona, niedopasowanie jest uruchamiane tylko wtedy, gdy d - + General Ogólne - + Graphics Grafika @@ -2733,8 +2978,8 @@ Gdy ta opcja jest włączona, niedopasowanie jest uruchamiane tylko wtedy, gdy d - GraphicsExtensions - GraphicsExtensions + GraphicsExtra + GraphicsExtra @@ -2743,7 +2988,7 @@ Gdy ta opcja jest włączona, niedopasowanie jest uruchamiane tylko wtedy, gdy d - + Controls Sterowanie @@ -2759,7 +3004,7 @@ Gdy ta opcja jest włączona, niedopasowanie jest uruchamiane tylko wtedy, gdy d - + System System @@ -2799,9 +3044,10 @@ Gdy ta opcja jest włączona, niedopasowanie jest uruchamiane tylko wtedy, gdy d - - - + + + + ... ... @@ -2811,90 +3057,196 @@ 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... + + + Save Data Directory + Katalog danych zapisu + + + + Choose an action for the save data directory: + Wybierz działanie dla katalogu danych zapisu: + + + + 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? + ConfigureGeneral @@ -2911,24 +3263,54 @@ Gdy ta opcja jest włączona, niedopasowanie jest uruchamiane tylko wtedy, gdy d - Linux - 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 - + 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 @@ -2958,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 @@ -3002,7 +3384,7 @@ Gdy ta opcja jest włączona, niedopasowanie jest uruchamiane tylko wtedy, gdy d Zaawansowane - + Advanced Graphics Settings Zaawansowane ustawienia grafiki @@ -3016,16 +3398,26 @@ Gdy ta opcja jest włączona, niedopasowanie jest uruchamiane tylko wtedy, gdy d - Extensions - Rozszerzenia + Extras + Dodatki - - Vulkan Extensions Settings - Ustawienia rozszerzeń Vulkan + + Hacks + Hacki - + + 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%) % @@ -3603,7 +3995,7 @@ Gdy ta opcja jest włączona, niedopasowanie jest uruchamiane tylko wtedy, gdy d - + Left Stick Lewa gałka @@ -3713,14 +4105,14 @@ Gdy ta opcja jest włączona, niedopasowanie jest uruchamiane tylko wtedy, gdy d - + ZL ZL - + L L @@ -3733,22 +4125,22 @@ Gdy ta opcja jest włączona, niedopasowanie jest uruchamiane tylko wtedy, gdy d - + Plus Plus - + ZR ZR - - + + R R @@ -3805,7 +4197,7 @@ Gdy ta opcja jest włączona, niedopasowanie jest uruchamiane tylko wtedy, gdy d - + Right Stick Prawa gałka @@ -3974,88 +4366,88 @@ Aby odwrócić osie, najpierw przesuń joystick pionowo, a następnie poziomo.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" @@ -4078,15 +4470,6 @@ Aby odwrócić osie, najpierw przesuń joystick pionowo, a następnie poziomo.Domyślne - - ConfigureLinuxTab - - - - Linux - Linux - - ConfigureMotionTouch @@ -4112,7 +4495,7 @@ Aby odwrócić osie, najpierw przesuń joystick pionowo, a następnie poziomo. - + Configure Konfiguruj @@ -4142,103 +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://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> - <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;">Dowiedz się więcej</span></a> - - - + %1:%2 %1:%2 + + - - - - - + + + Eden Eden - + Port number has invalid characters Port zawiera nieprawidłowe znaki - + 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. @@ -4369,11 +4742,6 @@ Obecne wartości to odpowiednio %1% i %2%. Enable Airplane Mode Włącz tryb samolotowy - - - None - Żadny - ConfigurePerGame @@ -4428,52 +4796,57 @@ Obecne wartości to odpowiednio %1% i %2%. 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 - Rozszerzenia GPU + + Ext. Graphics + Dodatkowa grafika - + Audio Dźwięk - + Input Profiles Profil wejściowy - - Linux - Linux + + Network + Sieć - + + Applets + + + + Properties Właściwości @@ -4491,15 +4864,110 @@ Obecne wartości to odpowiednio %1% i %2%. 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 @@ -4528,38 +4996,18 @@ Obecne wartości to odpowiednio %1% i %2%. Username Nazwa Użytkownika - - - Set Image - Ustaw zdjęcie - - Select Avatar - Wybierz awatar - - - 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)) @@ -4567,169 +5015,80 @@ Obecne wartości to odpowiednio %1% i %2%. %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: - - - + 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 saving user image Błąd zapisu obrazu użytkownika - + Unable to save image to file Nie można zapisać obrazu do pliku - - Select User Image - Ustaw zdjęcie użytkownika + + &Edit + - - Image Formats (*.jpg *.jpeg *.png *.bmp) - Formaty obrazów (.jpg *.jpeg *.png *.bmp) + + &Delete + - - No firmware available - Brak dostępnego firmware'u - - - - Please install the firmware to use firmware avatars. - Zainstaluj firmware, aby używać awatarów z firmware’u. - - - - - Error loading archive - Błąd podczas ładowania archiwum - - - - Archive is not available. Please install/reinstall firmware. - Archiwum jest niedostępne. Zainstaluj/ponownie zainstaluj Firmware. - - - - Could not locate RomFS. Your file or decryption keys may be corrupted. - Nie można zlokalizować RomFS. Plik lub klucze deszyfrujące mogą być uszkodzone. - - - - Error extracting archive - Błąd podczas rozpakowywania archiwum - - - - Could not extract RomFS. Your file or decryption keys may be corrupted. - Nie można wyodrębnić RomFS. Plik lub klucze deszyfrujące mogą być uszkodzone. - - - - Error finding image directory - Błąd wyszukiwania katalogu obrazów - - - - Failed to find image directory in the archive. - Nie udało się znaleźć katalogu obrazów w archiwum. - - - - No images found - Nie znaleziono obrazów - - - - No avatar images were found in the archive. - W archiwum nie znaleziono obrazów awatarów. - - - - ConfigureProfileManagerAvatarDialog - - - Select - Wybierz - - - - Cancel - Anuluj - - - - Background Color - Kolor tła - - - - Select Firmware Avatar - Wybierz awatar z firmware’u + + 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 @@ -4897,8 +5256,8 @@ 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>Odczytuje dane wejściowe kontrolera ze skryptów w tym samym formacie, co skrypty TAS-nx.<br/>W celu uzyskania bardziej szczegółowych informacji prosimy zapoznać się ze <a href="https://eden-emulator.github.io/help/feature/tas/"><span style=" text-decoration: underline; color:#039be5;">stroną pomocy</span></a> na stronie internetowej Eden.</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> @@ -4931,17 +5290,22 @@ UUID: %2 Zatrzymuj wykonanie w trakcie ładowania - + + Show recording dialog + + + + Script Directory Ścieżka Skryptu - + Path Ścieżka - + ... ... @@ -4954,7 +5318,7 @@ UUID: %2 Konfiguracja TAS - + Select TAS Load Directory... Wybierz Ścieżkę Załadowania TAS-a @@ -5092,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 @@ -5218,71 +5561,66 @@ Przeciągnij punkty, aby zmienić pozycję, lub kliknij dwukrotnie komórki tabe - 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) @@ -5416,20 +5754,20 @@ Przeciągnij punkty, aby zmienić pozycję, lub kliknij dwukrotnie komórki tabe Pokazuj obecną grę w twoim statusie Discorda - - + + All Good Tooltip Wszystko w porządku - + Must be between 4-20 characters Tooltip Musi mieć od 4 do 20 znaków - + Must be 48 characters, and lowercase a-z Tooltip Musi mieć 48 znaków i składać się z małych liter a–z @@ -5461,27 +5799,27 @@ Przeciągnij punkty, aby zmienić pozycję, lub kliknij dwukrotnie komórki tabe Usunięcie JAKICHKOLWIEK danych jest NIEODWRACALNE! - + Shaders Shadery - + UserNAND UserNAND - + SysNAND SysNAND - + Mods Mody - + Saves Zapisy @@ -5519,7 +5857,7 @@ Przeciągnij punkty, aby zmienić pozycję, lub kliknij dwukrotnie komórki tabe Zaimportuj dane dla tego katalogu. To może chwilę potrwać i USUNIE WSZYSTKIE ISTNIEJĄCE DANE! - + Calculating... Obliczanie... @@ -5542,12 +5880,12 @@ Przeciągnij punkty, aby zmienić pozycję, lub kliknij dwukrotnie komórki tabe <html><head/><body><p>Projekty, dzięki którym Eden jest możliwy</p></body></html> - + Dependency Zależność - + Version Wersja @@ -5723,44 +6061,44 @@ Przejdź do sekcji Konfiguracja -> System -> Sieć i dokonaj wyboru. GRenderWindow - - + + OpenGL not available! OpenGL niedostępny! - + OpenGL shared contexts are not supported. Współdzielone konteksty OpenGL nie są obsługiwane. - + Eden has not been compiled with OpenGL support. Eden nie został skompilowany z obsługą OpenGL. - - + + 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 @@ -5768,203 +6106,208 @@ Przejdź do sekcji Konfiguracja -> System -> Sieć i dokonaj wyboru. 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 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ę - + 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 @@ -5972,62 +6315,62 @@ Przejdź do sekcji Konfiguracja -> System -> Sieć i dokonaj wyboru. 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. @@ -6035,7 +6378,7 @@ Przejdź do sekcji Konfiguracja -> System -> Sieć i dokonaj wyboru. GameListPlaceholder - + Double-click to add a new folder to the game list Kliknij podwójnie aby dodać folder do listy gier @@ -6043,17 +6386,17 @@ Przejdź do sekcji Konfiguracja -> System -> Sieć i dokonaj wyboru. GameListSearchField - + %1 of %n result(s) %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 @@ -6129,12 +6472,12 @@ Przejdź do sekcji Konfiguracja -> System -> Sieć i dokonaj wyboru. 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. Debug Message: 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. @@ -6144,189 +6487,207 @@ 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 Eden Opuść Eden - + Fullscreen Pełny ekran - + Load File Załaduj plik... - + Load/Remove Amiibo Załaduj/Usuń Amiibo - - Multiplayer Browse Public Game Lobby - Multiplayer: przeglądaj publiczne lobby gier + + Browse Public Game Lobby + - - Multiplayer Create Room - Multiplayer: utwórz pokój + + Create Room + - - Multiplayer Direct Connect to Room - Multiplayer: bezpośrednio połącz z pokojem + + Direct Connect to Room + - - Multiplayer Leave Room - Multiplayer: opuść pokój + + Leave Room + - - Multiplayer Show Current Room - Multiplayer: pokaż bieżący pokój + + 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 @@ -6379,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 @@ -6443,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ę @@ -6527,720 +6888,777 @@ Komunikat debugowania: + &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 - + Am&iibo Am&iibo - - &Applets - &Aplety + + 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... &Załaduj Plik... - + Load &Folder... Załaduj &Folder... - + E&xit &Wyjście - - + + &Pause &Pauza - + &Stop &Stop - + &Verify Installed Contents &Zweryfikuj zainstalowane zasoby - + &About Eden &O Eden - + Single &Window Mode Tryb &Pojedyńczego Okna - + Con&figure... &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 - + Show &Status Bar 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 &Pełny ekran - + &Restart &Restart - + Load/Remove &Amiibo... Załaduj/Usuń &Amiibo... - + &Report Compatibility &Zaraportuj kompatybilność - + Open &Mods Page Otwórz stronę z &Modami - + Open &Quickstart Guide Otwórz &Poradnik szybkiego startu - + &FAQ &FAQ - + &Capture Screenshot &Zrób zdjęcie - - Open &Album - Otwórz &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 - Otwórz Edytor &Mii + + &Mii Editor + - + &Configure TAS... &Skonfiguruj TAS - + Configure C&urrent Game... Skonfiguruj &obecną grę... - - + + &Start &Start - + &Reset &Zresetuj - - + + R&ecord &Nagraj - + Open &Controller Menu Otwórz Menu &kontrolera - + Install Decryption &Keys Zainstaluj &klucze deszyfrujące - - Open &Home Menu - Otwórz &Menu główne + + &Home Menu + - - Open &Setup - Otwórz &Ustawienia - - - + &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.<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>. - Inicjalizacja Vulkan nie powiodła się podczas uruchamiania.<br><br>Kliknij <a href='https://eden-emulator.github.io/wiki/faq/#yuzu-starts-with-the-error-broken-vulkan-installation-detected'>tutaj, aby uzyskać instrukcje dotyczące rozwiązania tego problemu.</a>. + + 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><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. - Używasz zdekonstruowanego formatu katalogu ROM dla tej gry, który jest przestarzałym formatem, zastąpionym przez inne, takie jak NCA, NAX, XCI lub NSP. Zdekonstruowane katalogi ROM nie zawierają ikon, metadanych i nie obsługują aktualizacji.<br><br>Aby uzyskać wyjaśnienie różnych formatów Switcha obsługiwanych przez Eden, <a href='https://eden-emulator.github.io/wiki/overview-of-switch-game-formats'>zajrzyj do naszej wiki</a>. Ten komunikat nie będzie już wyświetlany. + + 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/Revolt for help. + + %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/Revolt. + %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 @@ -7250,7 +7668,7 @@ Proszę, używaj tej funkcji tylko do instalowania łatek i DLC. - + %n file(s) were overwritten %n plik został nadpisany @@ -7260,7 +7678,7 @@ Proszę, używaj tej funkcji tylko do instalowania łatek i DLC. - + %n file(s) failed to install Nie udało się zainstalować %n pliku @@ -7270,214 +7688,214 @@ Proszę, używaj tej funkcji tylko do instalowania łatek i DLC. - + 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 @@ -7486,230 +7904,155 @@ Sprawdź uprawnienia zapisu do systemowego katalogu tymczasowego i spróbuj pono Błąd zgłoszony przez system: %1 - - - - - - + No firmware available Brak dostępnego firmware'u - - Please install firmware to use the Album applet. - Zainstaluj firmware, aby używać apletu Album. - - - - Album Applet - Aplet Album - - - - Album applet is not available. Please reinstall firmware. - Aplet Album jest niedostępny. Zainstaluj ponownie firmware. - - - - Please install firmware to use the Cabinet applet. - Zainstaluj firmware, aby używać apletu Cabinet - - - - Cabinet Applet - Aplet Cabinet - - - - Cabinet applet is not available. Please reinstall firmware. - Aplet Cabinet jest niedostępny. Zainstaluj ponownie firmware. - - - - Please install firmware to use the Mii editor. - Zainstaluj firmware, aby używać edytora Mii. - - - - Mii Edit Applet - Aplet Edytor Mii - - - - Mii editor is not available. Please reinstall firmware. - Edytor Mii jest niedostępny. Zainstaluj ponownie firmware. - - - - Please install firmware to use the Controller Menu. - Zainstaluj firmware, aby używać Menu kontrolera. - - - - Controller Applet - Aplet kontrolera - - - - Controller Menu is not available. Please reinstall firmware. - Menu kontrolera jest niedostępne. Zainstaluj ponownie firmware. - - - + Firmware Corrupted Uszkodzony Firmware - - Home Menu Applet - Aplet „Menu główne” + + Unknown applet + - - Home Menu is not available. Please reinstall firmware. - Menu główne jest niedostępne. Zainstaluj ponownie firmware. + + Applet doesn't map to a known value. + - - Please install firmware to use Starter. - Zainstaluj firmware, aby używać Starter + + Record not found + - - Starter Applet - Aplet Starter + + Applet not found. Please reinstall firmware. + - - Starter is not available. Please reinstall firmware. - Starter nie jest dostępny. Proszę ponownie zainstalować firmware. - - - + Capture Screenshot Zrób zrzut ekranu - + PNG Image (*.png) Obrazek PNG (*.png) - + Update Available Dostępna aktualizacja - - Download the %1 update? - Pobrać aktualizację %1? + + 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 - - %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 - - Encryption keys are missing. - Brak kluczy szyfrujących. + + 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. @@ -7719,70 +8062,80 @@ 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? - - - None - Żadna (wyłączony) - FXAA @@ -7809,27 +8162,27 @@ Czy chcesz to pominąć i wyjść mimo to? Bikubiczny - + Zero-Tangent Zero-Tangent - + B-Spline B-Spline - + Mitchell Mitchell - + Spline-1 Spline-1 - + Gaussian Kulisty @@ -7865,18 +8218,18 @@ Czy chcesz to pominąć i wyjść mimo to? - Normal - Normalny + Fast + Szybkie - High - Wysoki + Balanced + Zrównoważony - Extreme - Ekstremalny + Accurate + Dokładny @@ -7884,42 +8237,37 @@ Czy chcesz to pominąć i wyjść mimo to? Vulkan - - OpenGL - OpenGL + + OpenGL GLSL + - - Null - Null + + OpenGL SPIRV + - GLSL - GLSL + OpenGL GLASM + - GLASM - GLASM - - - - SPIRV - SPIRV + Null + Null MigrationWorker - + 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. @@ -7936,7 +8284,7 @@ Jeśli nie chcesz, żeby tak się stało, usuń następujące pliki: %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: @@ -7947,11 +8295,24 @@ Jeśli chcesz usunąć pliki, które pozostały w starej lokalizacji danych, mo %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. + + + ModerationDialog @@ -8076,6 +8437,135 @@ Czy kontynuować mimo to? Wychodzisz z pokoju multiplayer. Wszystkie połączenia zostaną zamknięte. + + 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 + + + OverlayDialog @@ -8109,50 +8599,122 @@ 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 - - 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 - - - - - + + + Migration Migracja - + Clear Shader Cache Wyczyść pamięć podręczną shaderów @@ -8187,19 +8749,19 @@ p, li { white-space: pre-wrap; } Nie - + 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ć... @@ -8581,15 +9143,60 @@ p, li { white-space: pre-wrap; } Nie gra w żadną grę - + %1 is not playing a game %1 nie gra w żadną grę - + %1 is playing %2 %1 gra w %2 + + + Play Time: %1 + + + + + Never Played + + + + + 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 + QtAmiiboSettingsDialog @@ -8707,47 +9314,47 @@ p, li { white-space: pre-wrap; } 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 @@ -8755,204 +9362,204 @@ p, li { white-space: pre-wrap; } %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. @@ -8960,22 +9567,22 @@ Wykonaj to tylko, jeśli w 100% chcesz usunąć te dane. 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: @@ -8986,268 +9593,359 @@ 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. @@ -9255,84 +9953,84 @@ Z: 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. Versions 19.0.1 or earlier are recommended, as 20.0.0+ is currently experimental. - Brak firmware’u. Firmware jest wymagany do uruchamiania niektórych gier i korzystania z Menu głównego. Zalecane są wersje 19.0.1 lub wcześniejsze, ponieważ 20.0.0+ jest obecnie eksperymentalne. + + Firmware missing. Firmware is required to run certain games and use the Home Menu. + @@ -9354,59 +10052,59 @@ 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. @@ -9447,7 +10145,7 @@ Zalecane, jeśli chcesz współdzielić dane między emulatorami. - + Pro Controller Pro kontroler @@ -9460,7 +10158,7 @@ Zalecane, jeśli chcesz współdzielić dane między emulatorami. - + Dual Joycons Para Joyconów @@ -9473,7 +10171,7 @@ Zalecane, jeśli chcesz współdzielić dane między emulatorami. - + Left Joycon Lewy Joycon @@ -9486,7 +10184,7 @@ Zalecane, jeśli chcesz współdzielić dane między emulatorami. - + Right Joycon Prawy Joycon @@ -9515,7 +10213,7 @@ Zalecane, jeśli chcesz współdzielić dane między emulatorami. - + Handheld Handheld @@ -9636,32 +10334,32 @@ Zalecane, jeśli chcesz współdzielić dane między emulatorami. 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 @@ -9816,13 +10514,13 @@ 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 @@ -9859,12 +10557,12 @@ Wybierając „Z Eden”, dotychczasowe dane zapisu przechowywane w Ryujinx zost 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 @@ -9900,47 +10598,9 @@ Wybierając „Z Eden”, dotychczasowe dane zapisu przechowywane w Ryujinx zost Sekundy: - + Total play time reached maximum. Łączny czas gry osiągnął maksimum. - - fs - - - Could not find Ryujinx installation - Nie można odnaleźć 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 - - - \ No newline at end of file + diff --git a/dist/languages/pt_BR.ts b/dist/languages/pt_BR.ts index aabac97551..c0ff995256 100644 --- a/dist/languages/pt_BR.ts +++ b/dist/languages/pt_BR.ts @@ -37,13 +37,13 @@ li.checked::marker { content: "\2612"; } - <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/kXAmGCXBGD"><span style=" text-decoration: underline; color:#039be5;">Discord</span></a> | <a href="https://rvlt.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;">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;">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 registrada da Nintendo. Eden não é afiliada à Nintendo de forma alguma.</span></p></body></html> @@ -61,12 +61,12 @@ li.checked::marker { content: "\2612"; } Touch the top left corner <br>of your touchpad. - Toca no canto superior esquerdo <br>do teu touchpad. + Toque no canto superior esquerdo <br>do seu touchpad. Now touch the bottom right corner <br>of your touchpad. - Agora toca no canto inferior direito <br> do teu touchpad. + Agora toque no canto inferior direito <br> do seu touchpad. @@ -239,7 +239,7 @@ Isto banirá tanto o nome de usuário como o endereço IP do fórum. <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> @@ -349,7 +349,7 @@ Isto banirá tanto o nome de usuário como o endereço IP do fórum. Submitting - Entregando + Enviando @@ -375,481 +375,504 @@ Isto banirá tanto o nome de usuário como o endereço IP do fórum.% - + 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 + Autenticação Wi-Fi - + My page Minha página - + + 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 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 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 - - Increases the amount of emulated RAM from 4GB of the board to the devkit 8/6GB. + + 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 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. 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 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.). 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: - + 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. - - Virtual Table Bouncing - - - - - Bounces (by emulating a 0-valued return) any functions that triggers a prefetch abort - - - - + 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) - FMA inseguro (Melhorar performance no CPU 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á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 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: - + Changes the output graphics API. Vulkan is recommended. - + Device: Dispositivo: - + This setting selects the GPU to use (Vulkan only). - - Shader Backend: - Suporte de shaders: - - - - The shader backend to use with OpenGL. -GLSL is recommended. - - - - + Resolution: Resoluçã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 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 can produce a more stable picture in lower resolutions. - + O método anti-aliasing a ser utilizado. +SMAA oferece a melhor qualidade. +FXAA pode produzir uma imagem mais estável em resoluções mais baixas. - + 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. 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 do Ecrã: - + 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 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 - + 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 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. 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. 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. +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: - + 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. 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 Sincronização vertical: - + FIFO (VSync) does not drop frames or exhibit tearing but is limited by the screen refresh rate. 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. @@ -857,1176 +880,1383 @@ Immediate (no synchronization) presents whatever is available and can exhibit te - + 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 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. Safe to set at 16x on most GPUs. - - GPU Accuracy: + + GPU Mode: - - Controls the 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 as a last resort. + + 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. - + DMA Accuracy: - + 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. + + + + Enable asynchronous shader compilation - - Enable asynchronous shader compilation (Hack) - - - - + May reduce shader stutter. - - Fast GPU Time (Hack) + + 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 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) - + 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 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 numbers allow for more features and can increase performance, but may cause issues. -The default value is per-system. +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 some games. -Only Vulkan 1.0+ devices support this extension. + + Enables vertex input dynamic state feature for better quality and performance. - - Descriptor Indexing - - - - - Improves texture & buffer handling and the Maxwell translation layer. -Some Vulkan 1.1+ and all 1.2+ devices support this extension. - - - - + 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 de RNG - + Controls the seed of the random number generator. Mainly used for speedrunning. - + Device Name Nome do Dispositivo - + The name of the console. - + Custom RTC Date: Data personalizada do RTC: - + 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: - + This option can be overridden when region setting is auto-select - + Region: Região: - + The region of the console. - + Time Zone: Fuso Horário: - + The time zone of the console. - + Sound Output Mode: Modo de saída de som - + Console Mode: Modo Console: - + 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. - + + Unit Serial + + + + + Battery Serial + + + + + Debug knobs + + + + 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 Confirmar antes de parar a emulação - + Overrides prompts asking to confirm stopping the emulation. Enabling it bypasses such prompts and directly exits the emulation. - + Hide mouse on inactivity Esconder rato quando inactivo. - + Hides the mouse after 2.5s of inactivity. - + Disable controller applet - Desabilitar miniaplicativo de controle + Desabilitar applet de controle - + 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 + Applet real - + Never Nunca - + On Load - + Always Sempre - + CPU CPU - + GPU GPU - + CPU Asynchronous CPU Assíncrona - + Uncompressed (Best quality) - Descompactado (Melhor Q + Descompactado (Melhor Qualidade) - + 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 - - - - - Default - Padrão - - - - Unsafe (fast) - - - - - Safe (stable) - - - - + + 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 + + + + Fast + + + + + Balanced + + + + + Accurate Preciso - + + + 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 - + + 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) - - Serbian (српски) + + 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 + Egito - + 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 + Irã - + 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 + 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) - + 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 - - 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 + + ConfigureApplets @@ -2038,12 +2268,12 @@ When a program attempts to open the controller applet, it is immediately closed. Applets - Miniaplicativos + Applets Applet mode preference - Modo de preferência dos miniaplicativos + Modo de preferência de Applets @@ -2098,7 +2328,7 @@ When a program attempts to open the controller applet, it is immediately closed. Restaurar Padrões - + Auto Automático @@ -2171,14 +2401,15 @@ When a program attempts to open the controller applet, it is immediately closed. <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 optimização acelera o acesso à memória acedida por programas de convidados.</div> -<div style="white-space: nowrap">Ao activá-la mostra acessos por linha ao PageTable::pointers em código emitido.</div> -<div style="white-space: nowrap">Desactivando-a força todos os acessos à memória a passar 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 - Activar tabela de páginas em linha. + Ativar tabelas de página em linha. @@ -2186,12 +2417,12 @@ When a program 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>Esta optimização evita as pesquisas do expedidor ao permitir que os blocos básicos emitidos saltem directamente 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 - Activar ligações de bloco + Ativar ligações de bloco @@ -2199,12 +2430,12 @@ When a program 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>Esta optimização evita as pesquisas do expedidor, mantendo um registo dos potenciais endereços de retorno das instruções BL. Isto aproxima o que acontece com um buffer de pilha de retorno numa 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> Enable return stack buffer - Activar buffer do return stack + Ativar buffer de pilha de retorno @@ -2212,12 +2443,12 @@ When a program attempts to open the controller applet, it is immediately closed. <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>Activa 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> +<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 - Activar expedidor rápido + Ativar expedidor rápido @@ -2225,12 +2456,12 @@ When a program attempts to open the controller applet, it is immediately closed. <div>Enables an IR optimization that reduces unnecessary accesses to the CPU context structure.</div> -<div>Activa uma optimização IR que reduz acessos desnecessários ao contexto de estrutura do CPU</div> +<div>Ativa uma otimização IR que reduz acessos desnecessários ao contexto de estrutura do CPU</div> Enable context elimination - Activar eliminação de contexto + Ativar eliminação de contexto @@ -2238,12 +2469,12 @@ When a program attempts to open the controller applet, it is immediately closed. <div>Enables IR optimizations that involve constant propagation.</div> -<div>Activa optimizações IR que involvem propagação constante.</div> +<div>Ativa otimizações IR que involvem propagação constante.</div> Enable constant propagation - Activar propagação constante + Ativar propagação constante @@ -2251,12 +2482,12 @@ When a program attempts to open the controller applet, it is immediately closed. <div>Enables miscellaneous IR optimizations.</div> -<div>Activa várias optimizações IR</div> +<div>Ativa várias otimizações IR</div> Enable miscellaneous optimizations - Activar diversas optimizações + Ativar diversas otimizações @@ -2265,13 +2496,13 @@ When a program attempts to open the controller applet, it is immediately closed. <div style="white-space: nowrap">When disabled, a misalignment is triggered on all misaligned accesses.</div> -<div style="white-space: nowrap">Quando activado, um desalinhamento só é accionado quando um acesso atravessa um limite de página.</div> -<div style="white-space: nowrap">Quando desactivado, um desalinhamento é accionado 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 - Activar redução da verificação de desalinhamento + Ativar redução da verificação de desalinhamento @@ -2289,7 +2520,7 @@ When a program attempts to open the controller applet, it is immediately closed. 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) @@ -2307,7 +2538,7 @@ When a program attempts to open the controller applet, it is immediately closed. 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) @@ -2497,7 +2728,7 @@ When a program 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>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> @@ -2541,48 +2772,88 @@ When a program attempts to open the controller applet, it is immediately closed. + Use dev.keys + + + + Enable Debug Asserts Ativar asserções de depuração - + Debugging Depuração - + + 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 Verbose Reporting Services** Ativar serviços de relatório detalhado** - + Censor username in logs - + **This will be reset automatically when Eden closes. - + **Reseterá automaticamente quando o Eden fechar. @@ -2627,7 +2898,7 @@ When a program attempts to open the controller applet, it is immediately closed. Eden Configuration - + Configurar Eden @@ -2637,17 +2908,17 @@ When a program attempts to open the controller applet, it is immediately closed. Applets - Miniaplicativos + Applets - + Audio Audio - + CPU CPU @@ -2663,13 +2934,13 @@ When a program attempts to open the controller applet, it is immediately closed. - + General Geral - + Graphics Gráficos @@ -2680,7 +2951,7 @@ When a program attempts to open the controller applet, it is immediately closed. - GraphicsExtensions + GraphicsExtra @@ -2690,7 +2961,7 @@ When a program attempts to open the controller applet, it is immediately closed. - + Controls Controlos @@ -2706,7 +2977,7 @@ When a program attempts to open the controller applet, it is immediately closed. - + System Sistema @@ -2746,9 +3017,10 @@ When a program attempts to open the controller applet, it is immediately closed. - - - + + + + ... ... @@ -2758,90 +3030,184 @@ When a program attempts to open the controller applet, it is immediately closed. 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 + 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... Selecionar o Diretório do Mod Load ... + + + Save Data Directory + + + + + Choose an action for the save data directory: + + + + + 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? + + ConfigureGeneral @@ -2858,24 +3224,54 @@ When a program attempts to open the controller applet, it is immediately closed. - 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 Restaurar todas as configurações - + 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... + 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. + ConfigureGraphics @@ -2905,33 +3301,33 @@ When a program attempts to open the controller applet, it is immediately closed. 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 @@ -2949,7 +3345,7 @@ When a program attempts to open the controller applet, it is immediately closed. Avançado - + Advanced Graphics Settings Definições de Gráficos Avançadas @@ -2963,16 +3359,26 @@ When a program attempts to open the controller applet, it is immediately closed. - Extensions - Extensões - - - - Vulkan Extensions Settings + Extras - + + Hacks + + + + + Changing these options from their default may cause issues. Novitii cavete! + + + + + Vulkan Extensions + + + + % Sample Shading percentage (e.g. 50%) % @@ -3148,7 +3554,7 @@ When a program attempts to open the controller applet, it is immediately closed. Console Mode - Modo de Consola + Modo de Console @@ -3400,12 +3806,12 @@ When a program attempts to open the controller applet, it is immediately closed. 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) @@ -3536,7 +3942,7 @@ When a program attempts to open the controller applet, it is immediately closed. Save - Guardar + Salvar @@ -3550,7 +3956,7 @@ When a program attempts to open the controller applet, it is immediately closed. - + Left Stick Analógico Esquerdo @@ -3660,14 +4066,14 @@ When a program attempts to open the controller applet, it is immediately closed. - + ZL ZL - + L L @@ -3680,22 +4086,22 @@ When a program attempts to open the controller applet, it is immediately closed. - + Plus Mais - + ZR ZR - - + + R R @@ -3752,7 +4158,7 @@ When a program attempts to open the controller applet, it is immediately closed. - + Right Stick Analógico Direito @@ -3921,90 +4327,90 @@ Para inverter os eixos, mova o seu analógico primeiro verticalmente e depois ho 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 + Salvar perfil de controle - + Failed to save the input profile "%1" - Falha ao guardar o perfil de controlo "%1" + Falha ao salvar o perfil de controle "%1" @@ -4025,15 +4431,6 @@ Para inverter os eixos, mova o seu analógico primeiro verticalmente e depois ho Padrões - - ConfigureLinuxTab - - - - Linux - Linux - - ConfigureMotionTouch @@ -4059,7 +4456,7 @@ Para inverter os eixos, mova o seu analógico primeiro verticalmente e depois ho - + Configure Configurar @@ -4089,103 +4486,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://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> - - - - + %1:%2 %1:%2 + + - - - - - + + + Eden - + Eden - + Port number has invalid characters O número da porta tem caracteres inválidos - + 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. @@ -4316,11 +4703,6 @@ Os valores atuais são %1% e %2% respectivamente. Enable Airplane Mode - - - None - Nenhum - ConfigurePerGame @@ -4375,52 +4757,57 @@ 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 + Applets + + + Properties Propriedades @@ -4438,15 +4825,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 @@ -4475,38 +4957,18 @@ Os valores atuais são %1% e %2% respectivamente. Username Nome de Utilizador - - - Set Image - Definir Imagem - - Select Avatar - - - - 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)) @@ -4514,169 +4976,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: - - - + 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 saving user image - + Unable to save image to file - - Select User Image - Definir Imagem de utilizador - - - - Image Formats (*.jpg *.jpeg *.png *.bmp) + + &Edit - - No firmware available + + &Delete - - 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. - - - - - ConfigureProfileManagerAvatarDialog - - - Select - - - - - Cancel - - - - - Background Color - - - - - Select Firmware Avatar + + 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 @@ -4844,7 +5217,7 @@ 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> @@ -4878,17 +5251,22 @@ UUID: %2 Pausar execução durante carregamentos - + + Show recording dialog + + + + Script Directory Diretório do script - + Path Caminho - + ... ... @@ -4901,7 +5279,7 @@ UUID: %2 Configurar TAS - + Select TAS Load Directory... Selecionar diretório de carregamento TAS @@ -5039,64 +5417,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 @@ -5165,71 +5522,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) + Perguntar Onde Guardar Capturas de Tela (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) @@ -5350,7 +5702,7 @@ Arrasta os pontos para mudar a posição, ou dá duplo-clique nas células da ta 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. + Configurações de Serviço de Rede só podem ser alteradas quando uma sala pública não está sendo hospedada. @@ -5363,20 +5715,20 @@ Arrasta os pontos para mudar a posição, ou dá duplo-clique nas células da ta Mostrar o Jogo Atual no seu Estado de Discord - - + + All Good Tooltip - + Must be between 4-20 characters Tooltip - + Must be 48 characters, and lowercase a-z Tooltip @@ -5408,27 +5760,27 @@ Arrasta os pontos para mudar a posição, ou dá duplo-clique nas células da ta - + Shaders - + Shaders - + UserNAND - + UserNAND - + SysNAND - + SysNAND - + Mods - + Mods - + Saves @@ -5466,7 +5818,7 @@ Arrasta os pontos para mudar a posição, ou dá duplo-clique nas células da ta - + Calculating... @@ -5476,25 +5828,25 @@ Arrasta os pontos para mudar a posição, ou dá duplo-clique nas células da ta 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 @@ -5514,7 +5866,7 @@ Arrasta os pontos para mudar a posição, ou dá duplo-clique nas células da ta <html><head/><body><p>Server address of the host</p></body></html> - <html><head/><body><p>Endereço do host</p></body></html> + <html><head/><body><p>Endereço de servidor do anfitrião</p></body></html> @@ -5585,7 +5937,7 @@ Arrasta os pontos para mudar a posição, ou dá duplo-clique nas células da ta 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 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. @@ -5595,7 +5947,7 @@ Arrasta os pontos para mudar a posição, ou dá duplo-clique nas células da ta 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 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. @@ -5605,7 +5957,7 @@ Arrasta os pontos para mudar a posição, ou dá duplo-clique nas células da ta Creating a room failed. Please retry. Restarting Eden might be necessary. - + Falha ao criar sala. Tente novamente. Reiniciar o Eden pode ser necessário. @@ -5615,7 +5967,7 @@ Arrasta os pontos para mudar a posição, ou dá duplo-clique nas células da ta 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. @@ -5668,44 +6020,44 @@ Please go to Configure -> System -> Network and make a selection. 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. - + 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 @@ -5713,203 +6065,208 @@ Please go to Configure -> System -> Network and make a selection. 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 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 - + Vincular ao 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 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 - + 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 @@ -5917,62 +6274,62 @@ Please go to Configure -> System -> Network and make a selection. 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. @@ -5980,7 +6337,7 @@ Please go to Configure -> System -> Network and make a selection. GameListPlaceholder - + Double-click to add a new folder to the game list Clique duas vezes para adicionar uma nova pasta à lista de jogos @@ -5988,17 +6345,17 @@ Please go to Configure -> System -> Network and make a selection. GameListSearchField - + %1 of %n result(s) - + Filter: Filtro: - + Enter pattern to filter Digite o padrão para filtrar @@ -6074,203 +6431,222 @@ Please go to Configure -> System -> Network and make a selection. 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. Debug Message: - + 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 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 + Alterar modo de GPU - + Configure - + Configurar - + Configure Current Game - + Configurar Jogo Atual - + Continue/Pause Emulation Continuar/Pausar Emulação - + Exit Fullscreen Sair da Tela Cheia - + Exit Eden - + Sair do 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 + 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 - + 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 + Alternar Sobreposição de Desempenho + InstallDialog @@ -6292,7 +6668,7 @@ Debug Message: Install Files to NAND - Instalar Ficheiros no NAND + Instalar Ficheiros na NAND @@ -6323,22 +6699,22 @@ Debug Message: 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 @@ -6387,42 +6763,42 @@ Debug Message: 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 @@ -6447,7 +6823,7 @@ Debug Message: Open &Eden Folders - + Abrir Pastas do &Eden @@ -6471,1171 +6847,1153 @@ Debug Message: + &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 &Multijogador - + &Tools &Ferramentas - + Am&iibo - + Am&iibo - - &Applets - + + Launch &Applet + Iniciar &Applet - + &TAS &TAS - + &Create Home Menu Shortcut - + Install &Firmware - + Instalar &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 - + &Sobre o Eden - + Single &Window Mode Modo de &janela única - + Con&figure... Con&figurar... - + Ctrl+, + Ctrl+, + + + + Enable Overlay Display Applet - - Display D&ock Widget Headers - Exibir barra de títul&os de widgets afixados - - - + 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 - + &Capture Screenshot &Captura de Tela - - Open &Album - Abrir &Álbum + + &Album + &Álbum - + &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 Decryption &Keys - - Open &Home Menu + + &Home Menu - - Open &Setup - - - - + &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. - - 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 - + 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><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. + + 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/Revolt for help. + + %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 - - Please install firmware to use the Album applet. - - - - - Album Applet - - - - - Album applet is not available. Please reinstall firmware. - - - - - Please install firmware to use the Cabinet applet. - - - - - Cabinet Applet - - - - - Cabinet applet is not available. Please reinstall firmware. - - - - - Please install firmware to use the Mii editor. - - - - - Mii Edit Applet - - - - - Mii editor is not available. Please reinstall firmware. - - - - - Please install firmware to use the Controller Menu. - - - - - Controller Applet - - - - - Controller Menu is not available. Please reinstall firmware. - - - - + Firmware Corrupted - - Home Menu Applet + + Unknown applet - - Home Menu is not available. Please reinstall firmware. + + Applet doesn't map to a known value. - - Please install firmware to use Starter. + + Record not found - - Starter Applet + + Applet not found. Please reinstall firmware. - - Starter is not available. Please reinstall firmware. - - - - + Capture Screenshot - + PNG Image (*.png) - + Update Available - - Download the %1 update? - - - - - TAS state: Running %1/%2 - - - - - TAS state: Recording %1 - - - - - TAS state: Idle %1/%2 - - - - - TAS State: Invalid - - - - - &Stop Running + + 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 - - %1 %2 - - - - + FSR - + NO AA - + VOLUME: MUTE - + VOLUME: %1% Volume percentage (e.g. 50%) - + Derivation Components Missing - - Encryption keys are 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. @@ -7643,69 +8001,79 @@ 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? - - - None - - FXAA @@ -7732,27 +8100,27 @@ Would you like to bypass this and exit anyway? - + Zero-Tangent - + B-Spline - + Mitchell - + Spline-1 - + Gaussian @@ -7788,17 +8156,17 @@ Would you like to bypass this and exit anyway? - Normal + Fast - High + Balanced - Extreme + Accurate @@ -7807,41 +8175,36 @@ Would you like to bypass this and exit anyway? - - OpenGL + + OpenGL GLSL - - Null + + OpenGL SPIRV - GLSL + OpenGL GLASM - GLASM - - - - - SPIRV + Null MigrationWorker - + 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. @@ -7852,7 +8215,7 @@ If this is not desirable, delete the following files: - + 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: @@ -7860,11 +8223,24 @@ If you wish to clean up the files which were left in the old data location, you - + Data was migrated successfully. + + ModSelectDialog + + + Dialog + + + + + The specified folder or archive contains the following mods. Select which ones to install. + + + ModerationDialog @@ -7989,6 +8365,135 @@ Você deseja prosseguir mesmo assim? Você está prestes a sair da sala. Todas conexões de rede serão encerradas. + + NewUserDialog + + + + 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 + + + OverlayDialog @@ -8022,50 +8527,122 @@ 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 - - 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 - - - - - + + + Migration - + Clear Shader Cache @@ -8100,18 +8677,18 @@ p, li { white-space: pre-wrap; } - + You can manually re-trigger this prompt by deleting the new config directory: %1 - + Migrating - + Migrating, this may take a while... @@ -8493,15 +9070,60 @@ p, li { white-space: pre-wrap; } Não está jogando um jogo - + %1 is not playing a game %1 não está jogando um jogo - + %1 is playing %2 %1 está jogando %2 + + + Play Time: %1 + + + + + Never Played + + + + + 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 + QtAmiiboSettingsDialog @@ -8619,250 +9241,250 @@ p, li { white-space: pre-wrap; } 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. @@ -8870,22 +9492,22 @@ Only do this if you're 100% sure you want to delete this data. QtCommon::FS - + Linked Save Data - + Save data has been linked. - + Failed to link save data - + Could not link directory: %1 To: @@ -8893,268 +9515,359 @@ To: - + 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 - 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. - + 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. @@ -9162,83 +9875,83 @@ To: 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. Versions 19.0.1 or earlier are recommended, as 20.0.0+ is currently experimental. + + Firmware missing. Firmware is required to run certain games and use the Home Menu. @@ -9259,58 +9972,58 @@ 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 header on Ryujinx title database. - + Invalid byte alignment on Ryujinx title database. + Alinhamento de bytes inválido na base de dados de títulos do Ryujinx. - Invalid magic header on Ryujinx title database. - + No items found in Ryujinx title database. + Nenhum item encontrado na base de dados de títulos do Ryujinx. - Invalid byte alignment on Ryujinx title database. - - - - - No items found in Ryujinx title database. - - - - Title %1 not found in Ryujinx title database. - + Título %1 não encontrado na base de dados de títulos do Ryujinx. @@ -9349,7 +10062,7 @@ This is recommended if you want to share data between emulators. - + Pro Controller Comando Pro @@ -9362,7 +10075,7 @@ This is recommended if you want to share data between emulators. - + Dual Joycons Par de Joycons @@ -9375,7 +10088,7 @@ This is recommended if you want to share data between emulators. - + Left Joycon Joycon Esquerdo @@ -9388,7 +10101,7 @@ This is recommended if you want to share data between emulators. - + Right Joycon Joycon Direito @@ -9417,7 +10130,7 @@ This is recommended if you want to share data between emulators. - + Handheld Portátil @@ -9538,32 +10251,32 @@ This is recommended if you want to share data between emulators. 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 @@ -9718,13 +10431,13 @@ 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 @@ -9734,14 +10447,16 @@ p, li { white-space: pre-wrap; } 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". @@ -9751,7 +10466,7 @@ By selecting "From Eden", previous save data stored in Ryujinx will be From Ryujinx - + Do Ryujinx @@ -9759,12 +10474,12 @@ By selecting "From Eden", previous save data stored in Ryujinx will be - + Failed to link save data - + OS returned error: %1 @@ -9800,45 +10515,9 @@ By selecting "From Eden", previous save data stored in Ryujinx will be - + Total play time reached maximum. - - fs - - - 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 - - - - \ No newline at end of file + diff --git a/dist/languages/pt_PT.ts b/dist/languages/pt_PT.ts index bbe27a23cb..fb0f3e11c9 100644 --- a/dist/languages/pt_PT.ts +++ b/dist/languages/pt_PT.ts @@ -30,7 +30,7 @@ li.checked::marker { content: "\2612"; } - <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/kXAmGCXBGD"><span style=" text-decoration: underline; color:#039be5;">Discord</span></a> | <a href="https://rvlt.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;">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;">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> @@ -368,357 +368,366 @@ Isto banirá tanto o nome de usuário do fórum como o endereço IP.% - + 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 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 4GB of the board to the devkit 8/6GB. + + 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. 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. - - Synchronize Core Speed + + 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.). Can help reduce stuttering at lower framerates. - + Accuracy: Precisão: - + 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. - - Virtual Table Bouncing - - - - - Bounces (by emulating a 0-valued return) any functions that triggers a prefetch abort - - - - + 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 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: - + Changes the output graphics API. Vulkan is recommended. - + Device: Dispositivo: - + This setting selects the GPU to use (Vulkan only). - - Shader Backend: - Suporte de shaders: - - - - The shader backend to use with OpenGL. -GLSL is recommended. - - - - + Resolution: Resoluçã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 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 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. @@ -727,36 +736,36 @@ 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 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 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 - + Runs an additional optimization pass over generated SPIRV shaders. Will increase time required for shader compilation. May slightly improve performance. @@ -764,24 +773,12 @@ 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. @@ -790,12 +787,12 @@ 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. GPU: Use the GPU's compute shaders to decode ASTC textures (recommended). @@ -804,45 +801,55 @@ stuttering but may present artifacts. - + ASTC Recompression Method: Método de Recompressão ASTC: - + 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. 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 allows tearing as it recovers from a slow down. Mailbox can have lower latency than FIFO and does not tear but may drop frames. @@ -850,1176 +857,1380 @@ Immediate (no synchronization) presents whatever is available and can exhibit te - + 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. Safe to set at 16x on most GPUs. - - GPU Accuracy: + + GPU Mode: - - Controls the 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 as a last resort. + + 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. - + DMA Accuracy: - + Controls the DMA precision accuracy. Safe precision fixes issues in some games but may degrade performance. - - Enable asynchronous shader compilation (Hack) + + Enable asynchronous shader compilation - + May reduce shader stutter. - - Fast GPU Time (Hack) + + 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 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) - + 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 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 numbers allow for more features and can increase performance, but may cause issues. -The default value is per-system. +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 some games. -Only Vulkan 1.0+ devices support this extension. + + Enables vertex input dynamic state feature for better quality and performance. - - Descriptor Indexing - - - - - Improves texture & buffer handling and the Maxwell translation layer. -Some Vulkan 1.1+ and all 1.2+ devices support this extension. - - - - + 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. - + Device Name Nome do Dispositivo - + The name of the console. - + Custom RTC Date: Data personalizada do RTC: - + 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: - + This option can be overridden when region setting is auto-select - + Region: Região: - + The region of the console. - + Time Zone: Fuso Horário: - + The time zone of the console. - + Sound Output Mode: Modo de saída de som - + Console Mode: Modo Console: - + 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. - + + Unit Serial + + + + + Battery Serial + + + + + Debug knobs + + + + 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 Confirmar antes de parar a emulação - + Overrides prompts asking to confirm stopping the emulation. Enabling it bypasses such prompts and directly exits the emulation. - + Hide mouse on inactivity Esconder rato quando inactivo. - + Hides the mouse after 2.5s of inactivity. - + Disable controller applet Desabilitar miniaplicativo de controle - + 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 - - - - - Default - Padrão - - - - Unsafe (fast) - - - - - Safe (stable) - - - - + + 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 - + + + 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) - - Serbian (српски) + + 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) - + 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 - - 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 + + ConfigureApplets @@ -2091,7 +2302,7 @@ When a program attempts to open the controller applet, it is immediately closed. Restaurar Padrões - + Auto Automático @@ -2534,46 +2745,86 @@ When a program attempts to open the controller applet, it is immediately closed. + Use dev.keys + + + + Enable Debug Asserts Ativar asserções de depuração - + Debugging Depuração - + + 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 Verbose Reporting Services** Ativar serviços de relatório detalhado** - + Censor username in logs - + **This will be reset automatically when Eden closes. @@ -2634,13 +2885,13 @@ When a program attempts to open the controller applet, it is immediately closed. - + Audio Audio - + CPU CPU @@ -2656,13 +2907,13 @@ When a program attempts to open the controller applet, it is immediately closed. - + General Geral - + Graphics Gráficos @@ -2673,7 +2924,7 @@ When a program attempts to open the controller applet, it is immediately closed. - GraphicsExtensions + GraphicsExtra @@ -2683,7 +2934,7 @@ When a program attempts to open the controller applet, it is immediately closed. - + Controls Controlos @@ -2699,7 +2950,7 @@ When a program attempts to open the controller applet, it is immediately closed. - + System Sistema @@ -2739,9 +2990,10 @@ When a program attempts to open the controller applet, it is immediately closed. - - - + + + + ... ... @@ -2751,90 +3003,184 @@ When a program attempts to open the controller applet, it is immediately closed. 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 ... + + + Save Data Directory + + + + + Choose an action for the save data directory: + + + + + 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? + + ConfigureGeneral @@ -2851,24 +3197,54 @@ When a program 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 Restaurar todas as configurações - + 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 @@ -2898,33 +3274,33 @@ When a program attempts to open the controller applet, it is immediately closed. 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 @@ -2942,7 +3318,7 @@ When a program attempts to open the controller applet, it is immediately closed. Avançado - + Advanced Graphics Settings Definições de Gráficos Avançadas @@ -2956,16 +3332,26 @@ When a program attempts to open the controller applet, it is immediately closed. - Extensions + Extras - - Vulkan Extensions Settings + + Hacks - + + Changing these options from their default may cause issues. Novitii cavete! + + + + + Vulkan Extensions + + + + % Sample Shading percentage (e.g. 50%) @@ -3543,7 +3929,7 @@ When a program attempts to open the controller applet, it is immediately closed. - + Left Stick Analógico Esquerdo @@ -3653,14 +4039,14 @@ When a program attempts to open the controller applet, it is immediately closed. - + ZL ZL - + L L @@ -3673,22 +4059,22 @@ When a program attempts to open the controller applet, it is immediately closed. - + Plus Mais - + ZR ZR - - + + R R @@ -3745,7 +4131,7 @@ When a program attempts to open the controller applet, it is immediately closed. - + Right Stick Analógico Direito @@ -3914,88 +4300,88 @@ Para inverter os eixos, mova o seu analógico primeiro verticalmente e depois ho 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" @@ -4018,15 +4404,6 @@ Para inverter os eixos, mova o seu analógico primeiro verticalmente e depois ho Padrões - - ConfigureLinuxTab - - - - Linux - Linux - - ConfigureMotionTouch @@ -4052,7 +4429,7 @@ Para inverter os eixos, mova o seu analógico primeiro verticalmente e depois ho - + Configure Configurar @@ -4082,103 +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://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> - - - - + %1:%2 %1:%2 + + - - - - - + + + Eden - + Port number has invalid characters O número da porta tem caracteres inválidos - + 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. @@ -4309,11 +4676,6 @@ Os valores atuais são %1% e %2% respectivamente. Enable Airplane Mode - - - None - Nenhum - ConfigurePerGame @@ -4368,52 +4730,57 @@ 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 + + + + Properties Propriedades @@ -4431,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 @@ -4468,38 +4930,18 @@ Os valores atuais são %1% e %2% respectivamente. Username Nome de Utilizador - - - Set Image - Definir Imagem - - Select Avatar - - - - 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,169 +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: - - - + 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 saving user image - + Unable to save image to file - - Select User Image - Definir Imagem de utilizador - - - - Image Formats (*.jpg *.jpeg *.png *.bmp) + + &Edit - - No firmware available + + &Delete - - 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. - - - - - ConfigureProfileManagerAvatarDialog - - - Select - - - - - Cancel - - - - - Background Color - - - - - Select Firmware Avatar + + 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 @@ -4837,7 +5190,7 @@ 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> @@ -4871,17 +5224,22 @@ UUID: %2 Pausar execução durante carregamentos - + + Show recording dialog + + + + Script Directory Diretório do script - + Path Caminho - + ... ... @@ -4894,7 +5252,7 @@ UUID: %2 Configurar TAS - + Select TAS Load Directory... Selecionar diretório de carregamento TAS @@ -5032,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 @@ -5158,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) @@ -5356,20 +5688,20 @@ Arrasta os pontos para mudar a posição, ou dá duplo-clique nas células da ta Mostrar o Jogo Atual no seu Estado de Discord - - + + All Good Tooltip - + Must be between 4-20 characters Tooltip - + Must be 48 characters, and lowercase a-z Tooltip @@ -5401,27 +5733,27 @@ Arrasta os pontos para mudar a posição, ou dá duplo-clique nas células da ta - + Shaders - + UserNAND - + SysNAND - + Mods - + Saves @@ -5459,7 +5791,7 @@ Arrasta os pontos para mudar a posição, ou dá duplo-clique nas células da ta - + Calculating... @@ -5482,12 +5814,12 @@ Arrasta os pontos para mudar a posição, ou dá duplo-clique nas células da ta - + Dependency - + Version @@ -5661,44 +5993,44 @@ Please go to Configure -> System -> Network and make a selection. 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. - + 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 @@ -5706,203 +6038,208 @@ Please go to Configure -> System -> Network and make a selection. 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 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 - + 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 @@ -5910,62 +6247,62 @@ Please go to Configure -> System -> Network and make a selection. 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. @@ -5973,7 +6310,7 @@ Please go to Configure -> System -> Network and make a selection. GameListPlaceholder - + Double-click to add a new folder to the game list Clique duas vezes para adicionar uma nova pasta à lista de jogos @@ -5981,17 +6318,17 @@ Please go to Configure -> System -> Network and make a selection. GameListSearchField - + %1 of %n result(s) - + Filter: Filtro: - + Enter pattern to filter Digite o padrão para filtrar @@ -6067,12 +6404,12 @@ Please go to Configure -> System -> Network and make a selection. 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. Debug Message: @@ -6081,189 +6418,207 @@ Debug Message: 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 - + Configure Current Game - + Continue/Pause Emulation Continuar/Pausar Emulação - + Exit Fullscreen Sair da Tela Cheia - + 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 @@ -6316,22 +6671,22 @@ Debug Message: 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 @@ -6380,42 +6735,42 @@ Debug Message: 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 @@ -6464,1171 +6819,1153 @@ Debug Message: + &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 - + Am&iibo - - &Applets + + 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 - + 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 - + &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 Decryption &Keys - - Open &Home Menu + + &Home Menu - - Open &Setup - - - - + &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.<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>. + + 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><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. + + 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/Revolt for help. + + %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 - - Please install firmware to use the Album applet. - - - - - Album Applet - - - - - Album applet is not available. Please reinstall firmware. - - - - - Please install firmware to use the Cabinet applet. - - - - - Cabinet Applet - - - - - Cabinet applet is not available. Please reinstall firmware. - - - - - Please install firmware to use the Mii editor. - - - - - Mii Edit Applet - - - - - Mii editor is not available. Please reinstall firmware. - - - - - Please install firmware to use the Controller Menu. - - - - - Controller Applet - - - - - Controller Menu is not available. Please reinstall firmware. - - - - + Firmware Corrupted - - Home Menu Applet + + Unknown applet - - Home Menu is not available. Please reinstall firmware. + + Applet doesn't map to a known value. - - Please install firmware to use Starter. + + Record not found - - Starter Applet + + Applet not found. Please reinstall firmware. - - Starter is not available. Please reinstall firmware. - - - - + Capture Screenshot - + PNG Image (*.png) - + Update Available - - Download the %1 update? - - - - - TAS state: Running %1/%2 - - - - - TAS state: Recording %1 - - - - - TAS state: Idle %1/%2 - - - - - TAS State: Invalid - - - - - &Stop Running + + 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 - - %1 %2 - - - - + FSR - + NO AA - + VOLUME: MUTE - + VOLUME: %1% Volume percentage (e.g. 50%) - + Derivation Components Missing - - Encryption keys are 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. @@ -7636,69 +7973,79 @@ 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? - - - None - - FXAA @@ -7725,27 +8072,27 @@ Would you like to bypass this and exit anyway? - + Zero-Tangent - + B-Spline - + Mitchell - + Spline-1 - + Gaussian @@ -7781,17 +8128,17 @@ Would you like to bypass this and exit anyway? - Normal + Fast - High + Balanced - Extreme + Accurate @@ -7800,41 +8147,36 @@ Would you like to bypass this and exit anyway? - - OpenGL + + OpenGL GLSL - - Null + + OpenGL SPIRV - GLSL + OpenGL GLASM - GLASM - - - - - SPIRV + Null MigrationWorker - + 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. @@ -7845,7 +8187,7 @@ If this is not desirable, delete the following files: - + 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: @@ -7853,11 +8195,24 @@ If you wish to clean up the files which were left in the old data location, you - + Data was migrated successfully. + + ModSelectDialog + + + Dialog + + + + + The specified folder or archive contains the following mods. Select which ones to install. + + + ModerationDialog @@ -7982,6 +8337,135 @@ Você deseja prosseguir mesmo assim? Você está prestes a sair da sala. Todas conexões de rede serão encerradas. + + 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 + + + OverlayDialog @@ -8015,50 +8499,122 @@ 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 - - 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 - - - - - + + + Migration - + Clear Shader Cache @@ -8091,18 +8647,18 @@ p, li { white-space: pre-wrap; } - + You can manually re-trigger this prompt by deleting the new config directory: %1 - + Migrating - + Migrating, this may take a while... @@ -8484,15 +9040,60 @@ p, li { white-space: pre-wrap; } Não está jogando um jogo - + %1 is not playing a game %1 não está jogando um jogo - + %1 is playing %2 %1 está jogando %2 + + + Play Time: %1 + + + + + Never Played + + + + + 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 + QtAmiiboSettingsDialog @@ -8610,250 +9211,250 @@ p, li { white-space: pre-wrap; } 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. @@ -8861,22 +9462,22 @@ Only do this if you're 100% sure you want to delete this data. QtCommon::FS - + Linked Save Data - + Save data has been linked. - + Failed to link save data - + Could not link directory: %1 To: @@ -8884,268 +9485,357 @@ To: - + 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. @@ -9153,83 +9843,83 @@ To: 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. Versions 19.0.1 or earlier are recommended, as 20.0.0+ is currently experimental. + + Firmware missing. Firmware is required to run certain games and use the Home Menu. @@ -9250,56 +9940,56 @@ 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. @@ -9340,7 +10030,7 @@ This is recommended if you want to share data between emulators. - + Pro Controller Comando Pro @@ -9353,7 +10043,7 @@ This is recommended if you want to share data between emulators. - + Dual Joycons Par de Joycons @@ -9366,7 +10056,7 @@ This is recommended if you want to share data between emulators. - + Left Joycon Joycon Esquerdo @@ -9379,7 +10069,7 @@ This is recommended if you want to share data between emulators. - + Right Joycon Joycon Direito @@ -9408,7 +10098,7 @@ This is recommended if you want to share data between emulators. - + Handheld Portátil @@ -9529,32 +10219,32 @@ This is recommended if you want to share data between emulators. 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 @@ -9709,13 +10399,13 @@ 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 @@ -9750,12 +10440,12 @@ By selecting "From Eden", previous save data stored in Ryujinx will be - + Failed to link save data - + OS returned error: %1 @@ -9791,45 +10481,9 @@ By selecting "From Eden", previous save data stored in Ryujinx will be - + Total play time reached maximum. - - fs - - - 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 - - - - \ No newline at end of file + diff --git a/dist/languages/ru_RU.ts b/dist/languages/ru_RU.ts index 9b1546f427..2511049613 100644 --- a/dist/languages/ru_RU.ts +++ b/dist/languages/ru_RU.ts @@ -37,13 +37,13 @@ li.checked::marker { content: "\2612"; } - <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/kXAmGCXBGD"><span style=" text-decoration: underline; color:#039be5;">Discord</span></a> | <a href="https://rvlt.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;">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;">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. Проект Eden никак не связан с Nintendo.</span></p></body></html> @@ -375,141 +375,151 @@ This would ban both their forum username and their IP address. % - + 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 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 4GB of the board to the devkit 8/6GB. + + Increases the amount of emulated RAM. Doesn't affect performance/stability but may allow HD texture mods to load. - Увеличивает объем эмулируемой оперативной памяти с 4 ГБ на плате до 8/6 ГБ на девките. + Увеличивает объем эмулируемой оперативной памяти. Не влияет на производительность/стабильность, но может загружать моды на 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. 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. @@ -518,72 +528,82 @@ 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.). Can help reduce stuttering at lower framerates. Синхронизирует скорость работы ядра ЦПУ с максимальной скоростью рендеринга в игре, чтобы повысить FPS, не влияя на скорость игры (анимацию, физику и т.д.). Может помочь уменьшить заикания при низкой частоте кадров. - + Accuracy: Точность: - + Change the accuracy of the emulated CPU (for debugging only). Изменяет точность работы эмулируемого ЦПУ (только для отладки). - - + + Backend: Бэкэнд: - - Fast CPU Time - Ускоренные Тайминги CPU + + 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. - - Virtual Table Bouncing - - - - - Bounces (by emulating a 0-valued return) any functions that triggers a prefetch abort - - - - + 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. @@ -592,110 +612,98 @@ 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. Этот вариант улучшает скорость путем снижения точности инструкций слияния-умножения-сложения на процессорах без поддержки нативной 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 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: - + Changes the output graphics API. Vulkan is recommended. Изменяет графический интерфейс вывода. Рекомендуется использовать Vulkan. - + Device: Устройство: - + This setting selects the GPU to use (Vulkan only). Этот параметр определяет используемый ГПУ (только для Vulkan). - - Shader Backend: - Бэкенд шейдеров: - - - - The shader backend to use with OpenGL. -GLSL is recommended. - Внутренняя часть шейдера для использования с OpenGL. -Рекомендуется использовать GLSL. - - - + Resolution: Разрешение: - + Forces to render at a different resolution. Higher resolutions require more VRAM and bandwidth. Options lower than 1X can cause artifacts. @@ -704,27 +712,27 @@ Options lower than 1X can cause artifacts. Опции ниже 1X могут вызывать артефакты. - + Window Adapting Filter: Фильтр адаптации окна: - + FSR Sharpness: Резкость 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 can produce a more stable picture in lower resolutions. @@ -733,12 +741,12 @@ 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,12 +755,12 @@ Borderless более совместим с экранной клавиатур Эксклюзивный полноэкранный режим может иметь лучшую производительность и лучшую поддержку Freesync/Gsync. - + Aspect Ratio: Соотношение сторон: - + 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. @@ -761,23 +769,23 @@ Also controls the aspect ratio of captured screenshots. Также контролирует соотношение сторон захваченных скриншотов. - + 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 Оптимизация вывода SPIRV - + Runs an additional optimization pass over generated SPIRV shaders. Will increase time required for shader compilation. May slightly improve performance. @@ -788,24 +796,12 @@ This feature is experimental. Эта функция экспериментальна. - - 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. @@ -814,12 +810,12 @@ 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. GPU: Use the GPU's compute shaders to decode ASTC textures (recommended). @@ -831,12 +827,12 @@ GPU: Использовать вычислительные шейдеры ГП CPU Асинхронно: Использовать ЦП для декодирования текстур ASTC по мере их поступления. Полностью устраняет заикание при декодировании ASTC, но может вызывать артефакты. - + ASTC Recompression Method: Метод пересжатия ASTC: - + 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. @@ -845,34 +841,44 @@ 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. 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 allows tearing as it recovers from a slow down. Mailbox can have lower latency than FIFO and does not tear but may drop frames. @@ -883,12 +889,12 @@ 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. @@ -897,105 +903,152 @@ 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. Safe to set at 16x on most GPUs. Контролирует качество отображения текстур под наклонными углами. Безопасно выбрать до 16x на многих ГПУ. - - GPU Accuracy: - Точность GPU: + + GPU Mode: + Режим ГП: - - Controls the 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 as a last resort. - Контролирует аккуратность эмуляции 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. + Управляет режимом эмуляции графического процессора. +Большинство игр нормально отображаются в режимах «Быстрый» или «Сбалансированный», но для некоторых требуется режим «Точный». +Частицы обычно корректно отображаются только в режиме «Точный». - + DMA Accuracy: Точность DMA: - + Controls the DMA precision accuracy. Safe precision fixes issues in some games but may degrade performance. Управляет точностью DMA. Безопасная точность может исправить проблемы в некоторых играх, но также может повлиять на производительность. - - Enable asynchronous shader compilation (Hack) - Использовать асинхронную компиляцию шейдеров (Чит) + + Enable asynchronous shader compilation + Включить асинхронную компиляцию шейдеров - + May reduce shader stutter. Может уменьшить заикание шейдера. - - Fast GPU Time (Hack) - Быстрые тайминги ГПУ (Чит) + + 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. - Разгоняет эмулируемый ГПУ, чтобы увеличить динамическое разрешение и расстояние рендеринга. -Используйте 128 для максимальной производительности и 512 для максимальной точности графики. +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) - + 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. @@ -1004,166 +1057,183 @@ 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 + История буфера<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 numbers allow for more features and can increase performance, but may cause issues. -The default value is per-system. - Управляет количеством функций, которые можно использовать в расширенном динамическом состоянии. -Более высокие значения позволяют использовать больше функций и могут повысить производительность, но могут вызвать проблемы. - Значение по умолчанию - для каждой системы. +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 some games. -Only Vulkan 1.0+ devices support this extension. - Улучшает освещение и обработку вершин в определенных играх. - Поддерживаются устройства только с Vulkan 1.0+. + + Enables vertex input dynamic state feature for better quality and performance. + Включает функцию динамического состояния вершинного ввода для повышения качества и производительности. - - Descriptor Indexing - Индексирование дескрипторов - - - - Improves texture & buffer handling and the Maxwell translation layer. -Some Vulkan 1.1+ and all 1.2+ devices support this extension. - Улучшает текстуру и обработку буфера и уровень трансляции Maxwell. -Некоторые устройства Vulkan 1.1+ и все 1.2+ поддерживают это расширение. - - - + 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. Управляет начальным значением генератора случайных чисел. В основном используется для спидранов. - + Device Name Название устройства - + The name of the console. Имя консоли. - + Custom RTC Date: Пользовательская RTC-дата: - + 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: Язык: - + This option can be overridden when region setting is auto-select Это Может быть перезаписано если регион выбирается автоматически - + Region: Регион: - + The region of the console. Регион консоли. - + Time Zone: Часовой пояс: - + The time zone of the console. Часовой пояс консоли. - + Sound Output Mode: Режим вывода звука: - + Console 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. @@ -1172,908 +1242,1049 @@ Setting to Handheld can help improve performance for low end systems. Установка в режим портативной консоли может помочь улучшить производительность для слабых устройств. - + + Unit Serial + + + + + Battery Serial + + + + + Debug knobs + + + + 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 Подтвердите перед остановкой эмуляции - + Overrides prompts asking to confirm stopping the emulation. Enabling it bypasses such prompts and directly exits the emulation. Эта настройка переопределяет запросы игры, запрашивающие подтверждение остановки игры. Включение этой настройки обходит такие запросы и непосредственно завершает эмуляцию. - + Hide mouse on inactivity Спрятать мышь при неактивности - + Hides the mouse after 2.5s of inactivity. Эта настройка скрывает указатель мыши после 2,5 секунды бездействия. - + Disable controller applet Отключить веб-апплет - + 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 - Экстрим - - - - - Default - По умолчанию - - - - Unsafe (fast) - Небезопасно (быстро) - - - - Safe (stable) - Безопасно (стабильно) - - - + + 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 Точно - + + + 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) - - Serbian (српски) - Serbian (српски) + + 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ГБ ОЗУ(Небезопасно) - + Docked В док-станции - + Handheld Портативный - + + + Off + Выкл. + + + Boost (1700MHz) Разгон (1700MHz) - + Fast (2000MHz) Быстрая (2000MHz) - + Always ask (Default) Всегда спрашивать (По умолчанию) - + Only if game specifies not to stop Только если игра указывает не останавливаться - + Never ask Никогда не спрашивать - - Low (128) - Низкий (128) - - - + + 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 @@ -2145,7 +2356,7 @@ When a program attempts to open the controller applet, it is immediately closed. По умолчанию - + Auto Авто @@ -2596,46 +2807,86 @@ When a program attempts to open the controller applet, it is immediately closed. + Use dev.keys + + + + Enable Debug Asserts Включить отладочные утверждения - + Debugging Отладка - + + Battery Serial: + Серийный номер батареи: + + + + 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. Включите эту опцию, чтобы вывести на консоль последний сгенерированный список аудиокоманд. Влияет только на игры, использующие аудио рендерер. - + 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. **Это будет автоматически сбрасываться когда Eden закрывается. @@ -2696,13 +2947,13 @@ When a program attempts to open the controller applet, it is immediately closed. - + Audio Звук - + CPU ЦП @@ -2718,13 +2969,13 @@ When a program attempts to open the controller applet, it is immediately closed. - + General Общие - + Graphics Графика @@ -2735,8 +2986,8 @@ When a program attempts to open the controller applet, it is immediately closed. - GraphicsExtensions - ГрафическиеРасширения + GraphicsExtra + Дополнительно (Графика) @@ -2745,7 +2996,7 @@ When a program attempts to open the controller applet, it is immediately closed. - + Controls Управление @@ -2761,7 +3012,7 @@ When a program attempts to open the controller applet, it is immediately closed. - + System Система @@ -2801,9 +3052,10 @@ When a program attempts to open the controller applet, it is immediately closed. - - - + + + + ... ... @@ -2813,90 +3065,192 @@ When a program 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... Выберите папку для модов... + + + Save Data Directory + Папка сохранений + + + + Choose an action for the save data directory: + Выберите действие для каталога сохранения данных: + + + + 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? + Игровые данные успешно перенесены. +Вы хотите удалить старые игровые данные? + ConfigureGeneral @@ -2913,24 +3267,54 @@ When a program 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 Сбросить все настройки - + 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 @@ -2960,33 +3344,33 @@ When a program attempts to open the controller applet, it is immediately closed. Фоновый цвет: - + % FSR sharpening percentage (e.g. 50%) % - + Off Отключена - + VSync Off Верт. синхронизация отключена - + Recommended Рекомендуется - + On Включена - + VSync On Верт. синхронизация включена @@ -3004,7 +3388,7 @@ When a program attempts to open the controller applet, it is immediately closed. Расширенные - + Advanced Graphics Settings Расширенные настройки графики @@ -3018,16 +3402,26 @@ When a program attempts to open the controller applet, it is immediately closed. - Extensions - Расширения + Extras + Дополнительно - - Vulkan Extensions Settings - Настройки Расширения Vulkan + + Hacks + Хаки - + + Changing these options from their default may cause issues. Novitii cavete! + Внимание! Изменение стандартных настроек этих параметров может вызвать проблемы. + + + + Vulkan Extensions + Vulkan Расширения + + + % Sample Shading percentage (e.g. 50%) % @@ -3605,7 +3999,7 @@ When a program attempts to open the controller applet, it is immediately closed. - + Left Stick Левый мини-джойстик @@ -3715,14 +4109,14 @@ When a program attempts to open the controller applet, it is immediately closed. - + ZL ZL - + L L @@ -3735,22 +4129,22 @@ When a program attempts to open the controller applet, it is immediately closed. - + Plus Плюс - + ZR ZR - - + + R R @@ -3807,7 +4201,7 @@ When a program attempts to open the controller applet, it is immediately closed. - + Right Stick Правый мини-джойстик @@ -3976,88 +4370,88 @@ To invert the axes, first move your joystick vertically, and then horizontally.< 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" @@ -4080,15 +4474,6 @@ To invert the axes, first move your joystick vertically, and then horizontally.< По умолчанию - - ConfigureLinuxTab - - - - Linux - Linux - - ConfigureMotionTouch @@ -4114,7 +4499,7 @@ To invert the axes, first move your joystick vertically, and then horizontally.< - + Configure Настроить @@ -4144,103 +4529,93 @@ To invert the axes, first move your joystick vertically, and then horizontally.< Порт: - - Learn More - Узнать больше - - - - + + Test Тест - + Add Server Добавить сервер - + Remove Server Удалить сервер - - <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> - <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;">Узнайте больше</span></a> - - - + %1:%2 %1:%2 + + - - - - - + + + Eden Eden - + Port number has invalid characters Номер порта содержит недопустимые символы - + 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>Пожалуйста, подождите завершения. @@ -4371,11 +4746,6 @@ Current values are %1% and %2% respectively. Enable Airplane Mode Включить режим полета - - - None - Нет - ConfigurePerGame @@ -4430,52 +4800,57 @@ 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 + Апплеты + + + Properties Свойства @@ -4493,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 @@ -4530,38 +5005,18 @@ Current values are %1% and %2% respectively. Username Имя пользователя - - - Set Image - Выбрать изображение - - Select Avatar - Выберите Аватар - - - 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)) @@ -4569,169 +5024,80 @@ Current values are %1% and %2% respectively. %2 - - Enter Username - Введите имя пользователя - - - + Users Пользователи - - Enter a username for the new user: - Введите имя пользователя для нового профиля: - - - - Enter a new username: - Введите новое имя пользователя: - - - + 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 saving user image Ошибка при сохранении пользовательского изображения - + Unable to save image to file Не удается сохранить изображение в файл - - Select User Image - Выберите изображение пользователя + + &Edit + &Редактировать - - Image Formats (*.jpg *.jpeg *.png *.bmp) - Форматы изображений (*.jpg *.jpeg *.png *.bmp) + + &Delete + &Удалить - - 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. - Не удалось найти изображения к аватарам в архиве. - - - - ConfigureProfileManagerAvatarDialog - - - Select - Выбрать - - - - Cancel - Отмена - - - - Background Color - Фоновый цвет - - - - Select Firmware Avatar - Выберите Аватар Прошивки + + Edit User + Редактировать пользователя ConfigureProfileManagerDeleteDialog - + Delete this user? All of the user's save data will be deleted. Удалить этого пользователя? Все сохраненные данные пользователя будут удалены. - + Confirm Delete Подтвердите удаление - + Name: %1 UUID: %2 Имя: %1 @@ -4899,8 +5265,8 @@ 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>Считывает входные данные контроллера из скриптов в том же формате, что и скрипты TAS-nx.<br/> Для более подробной информации, пожалуйста посетите <a href="https://eden-emulator.github.io/help/feature/tas/"><span style=" text-decoration: underline; color:#039be5;">страницу справки</span></a>на веб-сайте Eden.</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> @@ -4933,17 +5299,22 @@ UUID: %2 Приостановить выполнение во время загрузки - + + Show recording dialog + + + + Script Directory Папка для скриптов - + Path Путь - + ... ... @@ -4956,7 +5327,7 @@ UUID: %2 Настройка TAS - + Select TAS Load Directory... Выбрать папку загрузки TAS... @@ -5094,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 Название игры @@ -5220,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) @@ -5418,20 +5763,20 @@ Drag points to change position, or double-click table cells to edit values.Показывать текущую игру в вашем статусе Discord - - + + All Good Tooltip Все хорошо - + Must be between 4-20 characters Tooltip 4-20 символов - + Must be 48 characters, and lowercase a-z Tooltip Должно быть 48 символов и содержать только строчные буквы a-z @@ -5463,27 +5808,27 @@ Drag points to change position, or double-click table cells to edit values.Удаление ЛЮБЫХ данных НЕВОЗВРАТИМО! - + Shaders Шейдеры - + UserNAND UserNAND - + SysNAND SysNAND - + Mods Моды - + Saves Сохранения @@ -5521,7 +5866,7 @@ Drag points to change position, or double-click table cells to edit values.Импортирует данные для этого каталога. Это может занять некоторое время и приведет к удалению ВСЕХ СУЩЕСТВУЮЩИХ ДАННЫХ! - + Calculating... Подсчитываем... @@ -5544,12 +5889,12 @@ Drag points to change position, or double-click table cells to edit values.<html><head/><body><p>Проекты, которые сделали Eden возможным</p></body></html> - + Dependency Зависимость - + Version Версия @@ -5725,44 +6070,44 @@ Please go to Configure -> System -> Network and make a selection. GRenderWindow - - + + OpenGL not available! OpenGL не доступен! - + OpenGL shared contexts are not supported. Общие контексты OpenGL не поддерживаются. - + Eden has not been compiled with OpenGL support. Eden не был скомпилирован с поддержкой OpenGL. - - + + 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 @@ -5770,203 +6115,208 @@ Please go to Configure -> System -> Network and make a selection. 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 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 Настроить игру - + Scan Subfolders Сканировать подпапки - + Remove Game Directory Удалить папку с играми - + ▲ Move Up ▲ Переместить вверх - + ▼ Move Down ▼ Переместить вниз - + Open Directory Location Открыть расположение папки - + Clear Очистить - + Name Имя - + Compatibility Совместимость - + Add-ons Дополнения - + File type Тип файла - + Size Размер - + Play time Время игры @@ -5974,62 +6324,62 @@ Please go to Configure -> System -> Network and make a selection. 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. Игру ещё не проверяли на совместимость. @@ -6037,7 +6387,7 @@ Please go to Configure -> System -> Network and make a selection. GameListPlaceholder - + Double-click to add a new folder to the game list Нажмите дважды, чтобы добавить новую папку в список игр @@ -6045,17 +6395,17 @@ Please go to Configure -> System -> Network and make a selection. GameListSearchField - + %1 of %n result(s) %1 из %n результат(ов)%1 из %n результат(ов)%1 из %n результат(ов)%1 из %n результат(ов) - + Filter: Поиск: - + Enter pattern to filter Введите текст для поиска @@ -6131,12 +6481,12 @@ Please go to Configure -> System -> Network and make a selection. 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. Debug Message: Не удалось объявить комнату в общедоступном лобби. Чтобы разместить комнату в открытом доступе, у вас должна быть действительная учетная запись Eden, настроенная в Эмуляция -> Настройка -> Веб. Если вы не хотите публиковать номер в общедоступном лобби, выберите "Не размещать". @@ -6146,189 +6496,207 @@ 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 Выйти из 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 @@ -6381,22 +6749,22 @@ Debug Message: Примерное время 5м 4с - + Loading... Загрузка... - + Loading Shaders %1 / %2 Загрузка шейдеров %1 / %2 - + Launching... Запуск... - + Estimated Time %1 Осталось примерно %1 @@ -6445,42 +6813,42 @@ Debug Message: Обновить лобби - + Password Required to Join Для входа необходим пароль - + Password: Пароль: - + Players Игроки - + Room Name Название комнаты - + Preferred Game Предпочтительная игра - + Host Хост - + Refreshing Обновление - + Refresh List Обновить список @@ -6529,1378 +6897,1387 @@ Debug Message: + &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] Инструменты - + Am&iibo Amiibo - - &Applets - &Applets + + 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 - + 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] ЧАВО - + &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 Decryption &Keys - + Установить ключи - - Open &Home Menu - + + &Home Menu + &Главное меню - - Open &Setup - Открыть &Setup - - - + &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.<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>. - + + 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><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. - + + 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/Revolt for help. + + %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 - - - - - - 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 - + Ошибка при открытии папки %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.) - - - - - Failed to Install - - - - - The title type you selected for the NCA is invalid. - - - - - File not found - + Пожалуйста, выберите тип приложения, который вы хотите установить для этого 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. - - - - - - 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. - + Портативный контроллер не может быть использован в режиме док-станции. Будет выбран контроллер Pro. - Select Dumped Firmware Source Location - + + Amiibo + Amiibo - - Select Dumped Firmware ZIP - + + + The current amiibo has been removed + Текущий amiibo был удален - - Zipped Archives (*.zip) - + + Error + Ошибка - - Firmware cleanup failed - + + + The current game is not looking for amiibos + Текущая игра не ищет amiibo - - Failed to clean up extracted firmware cache. -Check write permissions in the system temp directory and try again. -OS reported error: %1 - + + Amiibo File (%1);; All Files (*.*) + Файл Amiibo (%1);; Все Файлы (*.*) - - - - - - - No firmware available - + + Load Amiibo + Загрузить Amiibo - - Please install firmware to use the Album applet. - + + Error loading Amiibo data + Ошибка загрузки данных Amiibo - - Album Applet - + + The selected file is not a valid amiibo + Выбранный файл не является действительным Amiibo + + + + The selected file is already on use + Выбранный файл уже используется + + + + An unknown error occurred + Произошла неизвестная ошибка - Album applet is not available. Please reinstall firmware. - - - - - Please install firmware to use the Cabinet applet. - - - - - Cabinet Applet - - - - Cabinet applet is not available. Please reinstall firmware. - + Keys not installed + Ключи не установлены - - Please install firmware to use the Mii editor. - + + + 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 + Не удалось выполнить очистку прошивки - Mii Edit Applet - + Failed to clean up extracted firmware cache. +Check write permissions in the system temp directory and try again. +OS reported error: %1 + Не удалось очистить извлеченный кэш прошивки. +Проверьте права на запись во временном каталоге системы и повторите попытку. +Операционная система сообщила об ошибке: %1 - - Mii editor is not available. Please reinstall firmware. - + + No firmware available + Нет доступной прошивки - - Please install firmware to use the Controller Menu. - - - - - Controller Applet - - - - - Controller Menu is not available. Please reinstall firmware. - - - - + Firmware Corrupted - + Прошивка повреждена - - Home Menu Applet - + + Unknown applet + Неизвестный апплет - - Home Menu is not available. Please reinstall firmware. - + + Applet doesn't map to a known value. + Апплет не сопоставляется с известным значением. - - Please install firmware to use Starter. - + + Record not found + Запись не найдена - - Starter Applet - + + Applet not found. Please reinstall firmware. + Апплет не найден. Пожалуйста, переустановите прошивку. - - Starter is not available. Please reinstall firmware. - - - - + Capture Screenshot - + Сделать скриншот - + PNG Image (*.png) - + Изображение PNG (*.png) - + Update Available - + Обновление доступно - - Download the %1 update? - - - - - TAS state: Running %1/%2 - - - - - TAS state: Recording %1 - - - - - TAS state: Idle %1/%2 - - - - - TAS State: Invalid - - - - - &Stop Running - + + 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 мс - - %1 %2 - - - - + FSR - + FSR - + NO AA - + БЕЗ СГЛАЖИВАНИЯ - + VOLUME: MUTE - + ГРОМКОСТЬ: ЗАГЛУШЕНА - + VOLUME: %1% Volume percentage (e.g. 50%) - + ГРОМКОСТЬ: %1% - + Derivation Components Missing - + Компоненты расчета отсутствуют - - Encryption keys are 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? - - - - - None - + Запущенное в данный момент приложение запросило Eden не завершать работу. + +Хотели бы вы обойти это и выйти в любом случае? FXAA - + FXAA SMAA - + SMAA Nearest - + Ближайший Bilinear - + Билинейный Bicubic - - - - - Zero-Tangent - + Бикубический - B-Spline - + Zero-Tangent + Zero-Tangent - Mitchell - + B-Spline + B-Spline - Spline-1 - + Mitchell + Mitchell - + + Spline-1 + Spline-1 + + + Gaussian - + Гаусс Lanczos - + Lanczos ScaleForce - + ScaleForce Area - + Зона MMPX - + MMPX Docked - + Док-станция Handheld - + Портативный - Normal - + Fast + Быстрый - High - + Balanced + Сбалансированный - Extreme - + Accurate + Точность Vulkan - - - - - OpenGL - + Vulkan - Null - + OpenGL GLSL + OpenGL GLSL + + + + OpenGL SPIRV + OpenGL SPIRV - GLSL - + OpenGL GLASM + OpenGL GLASM - GLASM - - - - - SPIRV - + Null + Null MigrationWorker - + 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. @@ -7917,7 +8294,7 @@ If this is not desirable, delete the following files: %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: @@ -7928,11 +8305,24 @@ If you wish to clean up the files which were left in the old data location, you %1 - + Data was migrated successfully. Данные успешно перенесены. + + ModSelectDialog + + + Dialog + Диалог + + + + The specified folder or archive contains the following mods. Select which ones to install. + Указанная папка или архив содержит следующие модификации. Выберите, какие из них необходимо установить. + + ModerationDialog @@ -8057,6 +8447,135 @@ Proceed anyway? Вы собираетесь покинуть комнату. Все сетевые подключения будут закрыты. + + NewUserDialog + + + + 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 символов + + OverlayDialog @@ -8090,67 +8609,139 @@ 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 - - Installed SD Titles - Установленные SD игры - - - - Installed NAND Titles - Установленные NAND игры - - - - System Titles - Системные игры - - - - Add New Game Directory - Добавить новую папку с играми - - - - Favorites - Избранные - - - - - + + + Migration Перенос - + Clear Shader Cache - + Очистить кэш шейдеров Keep Old Data - + Сохранить старые данные Clear Old Data - + Очистить старые данные Link Old Directory - + Путь старой директории @@ -8168,19 +8759,19 @@ p, li { white-space: pre-wrap; } Нет - + You can manually re-trigger this prompt by deleting the new config directory: %1 Вы можете вручную повторно запустить этот запрос, удалив новый каталог конфигурации: %1 - + Migrating Переносим - + Migrating, this may take a while... Переносим, это может занять некоторое время... @@ -8562,15 +9153,60 @@ p, li { white-space: pre-wrap; } Не играет в игру - + %1 is not playing a game %1 не играет в игру - + %1 is playing %2 %1 играет в %2 + + + Play Time: %1 + Игровое время: %1 + + + + Never Played + Ни разу не сыграно + + + + 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 + Избранные + QtAmiiboSettingsDialog @@ -8688,47 +9324,47 @@ p, li { white-space: pre-wrap; } 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 @@ -8737,651 +9373,752 @@ p, li { white-space: pre-wrap; } %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% уверены, что хотите удалить эти данные. - 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) + Сжатые Архивы (*.zip) + + + + Exporting data. This may take a while... + Экспортирование данных. Это может занять некоторое время... + + + + Exporting + Экспортирование + + + + Exported Successfully + Успешно экспортировано + + + + Data was exported successfully. + Данные были успешно экспортированы. + + + + Export Cancelled + Экспорт отменен + + + + Export was cancelled by the user. + Экспорт был отменён пользователем. - Select Export Location - + Export Failed + Экспорт не удался - %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 Warning - + Import Failed + Импорт не удался - 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 + Не удалось сохранить данные - Failed to link save data - - - - Could not link directory: %1 To: %2 - + Не удалось установить связь каталог: + %1 +C: + %2 + + + + Already Linked + Уже связано - Already Linked - + This title is already linked to Ryujinx. Would you like to unlink it? + Это приложение уже связано с Ryujinx. Хотите отменить связь? - - This title is already linked to Ryujinx. Would you like to unlink it? - + + Failed to unlink old directory + Не удалось отвязать старый каталог - Failed to unlink old directory - - - - - - OS returned error: %1 - - - + OS returned error: %1 + ОС вернула ошибку: %1 + + + Failed to copy save data - + Не удалось скопировать сохраненные данные + + + + Unlink Successful + Успешная отвязка - Unlink Successful - + Successfully unlinked Ryujinx save data. Save data has been kept intact. + Сохраненные данные Ryujinx были успешно отвязаны. Сохраненные данные остались нетронутыми. - - Successfully unlinked Ryujinx save data. Save data has been kept intact. - + + 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::Path + QtCommon::Mod - - Error Opening Shader Cache - + + 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. - + Содержит данные внутриигрового сохранения. НЕ УДАЛЯЙТЕ, ЕСЛИ НЕ ЗНАЕТЕ, ЧТО ДЕЛАЕТЕ! - Contains updates and DLC for games. - + Contains Vulkan and OpenGL pipeline caches. Generally safe to remove. + Содержит потоковые кэши Vulkan и OpenGL. Как правило безопасно для удаления. - Contains firmware and applet data. - + Contains updates and DLC for games. + Содержит обновления и DLC для игр. - Contains game mods, patches, and cheats. - + Contains firmware and applet data. + Содержит прошивку и данные апплета. - - Decryption Keys were successfully installed - + + Contains game mods, patches, and cheats. + Содержит игровые моды, патчи и читы. - Unable to read key directory, aborting - + 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 - + Не удалось инициализировать ключи. Проверьте, актуальны ли ваши инструменты для дампа и передампите ключи. - Unable to locate potential firmware NCA files - + Successfully installed firmware version %1 + Успешно установлена прошивки версии %1 - Failed to delete one or more firmware files. - + 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. Versions 19.0.1 or earlier are recommended, as 20.0.0+ is currently experimental. - + + 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. - Ryujinx title database does not exist. - + Invalid magic header on Ryujinx title database. + Недопустимый magic заголовок в базе данных приложений Ryujinx. - Invalid header on Ryujinx title database. - + Invalid byte alignment on Ryujinx title database. + Неверное выравнивание байтов в базе данных приложений Ryujinx. - Invalid magic header on Ryujinx title database. - + No items found in Ryujinx title database. + В базе данных приложений Ryujinx не найдено ни одного элемента. - Invalid byte alignment on Ryujinx title database. - - - - - No items found in Ryujinx title database. - - - - Title %1 not found in Ryujinx title database. - + Приложение %1 не найдено в базе данных приложений Ryujinx. @@ -9420,7 +10157,7 @@ This is recommended if you want to share data between emulators. - + Pro Controller Контроллер Pro @@ -9433,7 +10170,7 @@ This is recommended if you want to share data between emulators. - + Dual Joycons Двойные Joy-Сon'ы @@ -9446,7 +10183,7 @@ This is recommended if you want to share data between emulators. - + Left Joycon Левый Joy-Сon @@ -9459,7 +10196,7 @@ This is recommended if you want to share data between emulators. - + Right Joycon Правый Joy-Сon @@ -9488,7 +10225,7 @@ This is recommended if you want to share data between emulators. - + Handheld Портативный @@ -9609,32 +10346,32 @@ This is recommended if you want to share data between emulators. Недостаточно контроллеров - + GameCube Controller Контроллер GameCube - + Poke Ball Plus Poke Ball Plus - + NES Controller Контроллер NES - + SNES Controller Контроллер SNES - + N64 Controller Контроллер N64 - + Sega Genesis Sega Genesis @@ -9789,13 +10526,13 @@ 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 Отмена @@ -9805,39 +10542,41 @@ p, li { white-space: pre-wrap; } 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 @@ -9853,63 +10592,27 @@ By selecting "From Eden", previous save data stored in Ryujinx will be Set Play Time Data - + Изменить игровое время Hours: - + Часы: Minutes: - + Минуты: Seconds: - + Секунды: - + Total play time reached maximum. - + Общее максимальное игровое время. - - fs - - - 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 - - - - \ No newline at end of file + diff --git a/dist/languages/sv.ts b/dist/languages/sv.ts index aac2aa920b..8c525ba02a 100644 --- a/dist/languages/sv.ts +++ b/dist/languages/sv.ts @@ -37,8 +37,8 @@ li.checked::marker { content: "\2612"; } - <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/kXAmGCXBGD"><span style=" text-decoration: underline; color:#039be5;">Discord</span></a> | <a href="https://rvlt.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;">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/kXAmGCXBGD"><span style=" text-decoration: underline; color:#039be5;">Discord</span></a> | <a href="https://rvlt.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;">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> @@ -375,141 +375,151 @@ Detta skulle stänga av både deras forumanvändarnamn och deras IP-adress.% - + 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: 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 Emulering av flerkärnig CPU - + 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 4GB of the board to the devkit 8/6GB. + + Increases the amount of emulated RAM. Doesn't affect performance/stability but may allow HD texture mods to load. - Ökar mängden RAM som emuleras från 4 GB på kortet till devkit 8/6 GB. + Ö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 hastighet i procent - + 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. @@ -518,72 +528,82 @@ 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. + 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.). 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: - + 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 - Snabb CPU-tid + + 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. - - Virtual Table Bouncing - Virtuell tabellavvisning - - - - Bounces (by emulating a 0-valued return) any functions that triggers a prefetch abort - Avvisar (genom att emulera ett returvärde på 0) alla funktioner som utlöser ett avbrott i förhämtningen - - - + 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. @@ -592,112 +612,100 @@ Om den aktiveras sker läsning/skrivning av gästminnet direkt i minnet och anv Om den inaktiveras tvingas all minnesåtkomst att använda programvaru-MMU-emulering. - + Unfuse FMA (improve performance on CPUs without 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 (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 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: - + 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 (Vulkan only). Denna inställning väljer vilken GPU som ska användas (endast Vulkan). - - Shader Backend: - Backend för shader: - - - - The shader backend to use with OpenGL. -GLSL is recommended. - Shader-backend som ska användas med OpenGL. -GLSL rekommenderas. - - - + Resolution: Status: - + Forces to render at a different resolution. Higher resolutions require more VRAM and bandwidth. Options lower than 1X can cause artifacts. @@ -706,27 +714,27 @@ 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 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 can produce a more stable picture in lower resolutions. @@ -735,12 +743,12 @@ 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. @@ -749,12 +757,12 @@ Borderless ger bäst kompatibilitet med skärmtangentbordet som vissa spel kräv Exklusiv helskärm kan ge bättre prestanda och bättre stöd för Freesync/Gsync. - + Aspect Ratio: Bildförhållande: - + 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. @@ -763,24 +771,24 @@ De flesta spel stöder endast 16:9, så modifieringar krävs för att få andra Kontrollerar även bildförhållandet för tagna skärmdumpar. - + 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 Optimera SPIRV-utdata - + Runs an additional optimization pass over generated SPIRV shaders. Will increase time required for shader compilation. May slightly improve performance. @@ -791,24 +799,12 @@ 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. - Använder en extra CPU-tråd för rendering. -Detta alternativ bör alltid vara aktiverat. - - - + 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. @@ -817,12 +813,12 @@ Den kan antingen använda CPU eller GPU för avkodning, eller inte utföra någo 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. GPU: Use the GPU's compute shaders to decode ASTC textures (recommended). @@ -835,12 +831,12 @@ CPU asynkront: Använd CPU:n för att avkoda ASTC-texturer vid behov. Eliminerar men kan ge artefakter. - + ASTC Recompression Method: ASTC-återkomprimeringsmetod: - + 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. @@ -849,34 +845,44 @@ BC1/BC3: Det mellanliggande formatet kommer att komprimeras om till BC1- eller B 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. 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 allows tearing as it recovers from a slow down. Mailbox can have lower latency than FIFO and does not tear but may drop frames. @@ -887,12 +893,12 @@ Mailbox kan ha lägre latens än FIFO och uppvisar inte tearing, men kan tappa b 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. @@ -903,32 +909,32 @@ 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. Safe to set at 16x on most GPUs. Kontrollerar kvaliteten på texturrendering vid sneda vinklar. @@ -936,72 +942,120 @@ Safe to set at 16x on most GPUs. Säker att ställa in på 16x på de flesta GPU:er. - - GPU Accuracy: - GPU-noggrannhet: + + GPU Mode: + GPU-läge: - - Controls the 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 as a last resort. - Kontrollerar GPU-emuleringens noggrannhet. -De flesta spel renderas bra med Normal, men för vissa krävs fortfarande Hög. -Partiklar tenderar att endast renderas korrekt med hög noggrannhet. -Extrem bör endast användas som en sista utväg. + + 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. - + DMA Accuracy: DMA-noggrannhet: - + 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 (Hack) - Aktivera asynkron shader-kompilering (hack) + + Enable asynchronous shader compilation + Aktivera asynkron shaderkompilering - + May reduce shader stutter. Kan minska shader-hackighet. - - Fast GPU Time (Hack) - Snabb GPU-tid (hack) + + Fast GPU Time + Snabb GPU-tid - + 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. Överklockar den emulerade GPU:n för att öka den dynamiska upplösningen och renderingsavståndet. -Använd 128 för maximal prestanda och 512 för maximal grafikåtergivning. +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) - + 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. @@ -1010,166 +1064,184 @@ Denna inställning finns endast för Intels egna drivrutiner och kan orsaka kras 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 numbers allow for more features and can increase performance, but may cause issues. -The default value is per-system. - Kontrollerar antalet funktioner som kan användas i Extended Dynamic State. -Högre siffror möjliggör fler funktioner och kan öka prestandan, men kan också orsaka problem. -Standardvärdet är per system. +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. - - Provoking Vertex - Provocerande toppunkt + + Vertex Input Dynamic State + Dynamiskt tillstånd för vertexinmatning - - Improves lighting and vertex handling in some games. -Only Vulkan 1.0+ devices support this extension. - Förbättrar belysning och vertexhantering i vissa spel. -Endast enheter med Vulkan 1.0+ stöder denna tilläggsfunktion. + + 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. - - Descriptor Indexing - Indexering av deskriptorer - - - - Improves texture & buffer handling and the Maxwell translation layer. -Some Vulkan 1.1+ and all 1.2+ devices support this extension. - Förbättrar textur- och bufferthantering samt Maxwell-översättningslagret. -Vissa Vulkan 1.1+ och alla 1.2+ enheter stöder detta tillägg. - - - + 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-frö - + Controls the seed of the random number generator. Mainly used for speedrunning. Att kontrollera fröet till slumptalsgeneratorn. Används främst för speedrunning. - + Device Name Enhetsnamn - + The name of the console. Konsolens namn. - + Custom RTC Date: Anpassat RTC-datum: - + 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: - + 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 console. Konsolens region. - + Time Zone: Tidszon: - + The time zone of the console. Konsolens tidszon. - + Sound Output Mode: Ljudutmatningsläge: - + Console Mode: Konsolläge: - + 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. @@ -1178,908 +1250,1049 @@ Spel ändrar upplösning, detaljer och stödda kontroller beroende på denna ins Inställningen Handhållen kan förbättra prestandan för enklare system. - + + Unit Serial + Enhetens serienr + + + + Battery Serial + Batteriets serienr + + + + Debug knobs + Felsökningsknappar + + + Prompt for user profile on boot Fråga efter användarprofil vid uppstart - + Useful if multiple people use the same PC. Användbart om flera personer använder samma dator. - + Pause when not in focus Pausa när inte i fokus - + Pauses emulation when focusing on other windows. Pausar emulering när fokus är på andra fönster. - + Confirm before stopping emulation Bekräfta innan emuleringen stoppas - + 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 Dölj musen vid inaktivitet - + 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 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 - Konservativ - - - - Aggressive - Aggressiv - - - - OpenGL - OpenGL - - - - Vulkan - Vulkan - - - - Null - Null - - - - GLSL - GLSL - - - - GLASM (Assembly Shaders, NVIDIA Only) - GLASM (Assembly Shaders, endast NVIDIA) - - - - SPIR-V (Experimental, AMD/Mesa Only) - SPIR-V (experimentell, endast AMD/Mesa) - - - - Normal - Normal - - - - High - Hög - - - - Extreme - Extrem - - - - - Default - Standard - - - - Unsafe (fast) - Osäker (snabb) - - - - Safe (stable) - Säker (stabil) - - - + + 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 Exakt - + + + 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) Nederländska (Nederlands) - + Portuguese (português) Portugisiska (português) - + Russian (Русский) Ryska (Русский) - + Taiwanese Taiwanesiska - + British English Brittisk engelska - + Canadian French Kanadensisk franska - + Latin American Spanish Latinamerikansk spanska - + Simplified Chinese Förenklad kinesiska - + Traditional Chinese (正體中文) Traditionell kinesiska (正體中文) - + Brazilian Portuguese (português do Brasil) Brasiliansk portugisiska (português do Brasil) - - Serbian (српски) - Serbiska (српски) + + Polish (polska) + Polska (polska) - - + + Thai (แบบไทย) + Thai (แบบไทย) + + + + Japan Japan - + USA USA - + 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 Irland - + EST EST - + EST5EDT EST5EDT - + GB GB - + 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 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) - + Docked Dockad - + 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 - - Low (128) - Låg (128) - - - + + 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 + ConfigureApplets @@ -2151,7 +2364,7 @@ När ett program försöker öppna kontrollerappletten stängs den omedelbart.Återställ till standard - + Auto Auto @@ -2602,46 +2815,86 @@ När ett program försöker öppna kontrollerappletten stängs den omedelbart. + Use dev.keys + Använd dev.keys + + + Enable Debug Asserts Aktivera Debug Asserts - + Debugging Felsökning - + + Battery Serial: + Batteriets serienummer: + + + + 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. - + 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** - + 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. @@ -2702,13 +2955,13 @@ När ett program försöker öppna kontrollerappletten stängs den omedelbart. - + Audio Ljud - + CPU CPU @@ -2724,13 +2977,13 @@ När ett program försöker öppna kontrollerappletten stängs den omedelbart. - + General Allmänt - + Graphics Grafik @@ -2741,8 +2994,8 @@ När ett program försöker öppna kontrollerappletten stängs den omedelbart. - GraphicsExtensions - GraphicsExtensions + GraphicsExtra + GraphicsExtra @@ -2751,9 +3004,9 @@ När ett program försöker öppna kontrollerappletten stängs den omedelbart. - + Controls - Kontrollerar + Kontroller @@ -2767,7 +3020,7 @@ När ett program försöker öppna kontrollerappletten stängs den omedelbart. - + System System @@ -2807,9 +3060,10 @@ När ett program försöker öppna kontrollerappletten stängs den omedelbart. - - - + + + + ... ... @@ -2819,90 +3073,196 @@ När ett program försöker öppna kontrollerappletten stängs den omedelbart.SD-kort - + + Save Data + Sparat data + + + Gamecard Gamecard - + Path Sökväg - + Inserted Infogad - + Current Game Aktuellt spel - + Patch Manager Patchhanterare - + Dump Decompressed NSOs Dumpa dekomprimerade NSO:er - + Dump ExeFS Dumpa ExeFS - + Mod Load Root Rot för inläsning av mods - + Dump Root Dumpa rot - + Caching Mellanlagring - + Cache Game List Metadata Metadata för spellistan i cacheminnet - + Reset Metadata Cache Å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 katalog för modinläsningar... + + + Save Data Directory + Katalog för sparat data + + + + Choose an action for the save data directory: + Välj en åtgärd för katalogen för sparat data: + + + + 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? + ConfigureGeneral @@ -2919,24 +3279,54 @@ När ett program försöker öppna kontrollerappletten stängs den omedelbart. - Linux - 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 - + 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. + ConfigureGraphics @@ -2966,33 +3356,33 @@ När ett program försöker öppna kontrollerappletten stängs den omedelbart.Bakgrundsfärg: - + % FSR sharpening percentage (e.g. 50%) % - + Off Av - + VSync Off VSync Av - + Recommended Rekommenderad - + On - + VSync On VSync På @@ -3010,7 +3400,7 @@ När ett program försöker öppna kontrollerappletten stängs den omedelbart.Avancerat - + Advanced Graphics Settings Avancerade grafikinställningar @@ -3024,16 +3414,26 @@ När ett program försöker öppna kontrollerappletten stängs den omedelbart. - Extensions - Tillägg + Extras + Extras - - Vulkan Extensions Settings - Inställningar för Vulkan-utökningar + + Hacks + Hack - + + 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%) % @@ -3611,7 +4011,7 @@ När ett program försöker öppna kontrollerappletten stängs den omedelbart. - + Left Stick Vänster styrspak @@ -3721,14 +4121,14 @@ När ett program försöker öppna kontrollerappletten stängs den omedelbart. - + ZL ZL - + L L @@ -3741,22 +4141,22 @@ När ett program försöker öppna kontrollerappletten stängs den omedelbart. - + Plus Plus - + ZR ZR - - + + R R @@ -3813,7 +4213,7 @@ När ett program försöker öppna kontrollerappletten stängs den omedelbart. - + Right Stick Högerspak @@ -3982,88 +4382,88 @@ Om du vill invertera axlarna för du joysticken först vertikalt och sedan horis 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 - + 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 - + Failed to delete the input profile "%1" Misslyckades med att ta bort inmatningsprofilen "%1" - + Load Input Profile Läs in inmatningsprofil - + Failed to load the input profile "%1" Misslyckades med att läsa in inmatningsprofilen "%1" - + Save Input Profile Spara inmatningsprofil - + Failed to save the input profile "%1" Misslyckades med att spara inmatningsprofilen "%1" @@ -4086,15 +4486,6 @@ Om du vill invertera axlarna för du joysticken först vertikalt och sedan horis Standard - - ConfigureLinuxTab - - - - Linux - Linux - - ConfigureMotionTouch @@ -4120,7 +4511,7 @@ Om du vill invertera axlarna för du joysticken först vertikalt och sedan horis - + Configure Konfigurera @@ -4150,103 +4541,93 @@ Om du vill invertera axlarna för du joysticken först vertikalt och sedan horis Port: - - Learn More - Läs mer - - - - + + Test Testa - + Add Server Lägg till server - + Remove Server Ta bort server - - <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> - <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;">Lär dig mer</span></a> - - - + %1:%2 %1:%2 + + - - - - - + + + Eden Eden - + Port number has invalid characters Portnumret har ogiltiga tecken - + 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 - + This UDP server already exists Denna UDP-server finns redan - + 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 Testet lyckades - + Successfully received data from the server. Tog emot data från servern. - + Test Failed 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 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 pågår.<br>Vänta tills de är klara. @@ -4377,11 +4758,6 @@ Nuvarande värden är %1% respektive %2%. Enable Airplane Mode Aktivera flygplansläge - - - None - Ingen - ConfigurePerGame @@ -4436,52 +4812,57 @@ Nuvarande värden är %1% respektive %2%. 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 Avancerad grafik - - GPU Extensions - GPU-tillägg + + Ext. Graphics + Ext. grafik - + Audio Ljud - + Input Profiles Inmatningsprofiler - - Linux - Linux + + Network + Nätverk - + + Applets + Appletar + + + Properties Egenskaper @@ -4499,15 +4880,115 @@ Nuvarande värden är %1% respektive %2%. Tillägg - + + 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 @@ -4524,7 +5005,7 @@ Nuvarande värden är %1% respektive %2%. Profile Manager - Profilansvarig + Profilhanterare @@ -4536,38 +5017,18 @@ Nuvarande värden är %1% respektive %2%. Username Användarnamn - - - Set Image - Ställ in bild - - Select Avatar - Välj avatar - - - Add Lägg till - - Rename - Byt namn - - - - Remove - Ta bort - - - + Profile management is available only when game is not running. 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)) @@ -4575,169 +5036,80 @@ Nuvarande värden är %1% respektive %2%. %2 - - Enter Username - Ange användarnamn - - - + Users Användare - - Enter a username for the new user: - Ange ett användarnamn för den nya användaren: - - - - Enter a new username: - Ange ett nytt användarnamn: - - - + Error deleting image Fel vid borttagning av bild - + Error occurred attempting to overwrite previous image at: %1. Fel uppstod vid försök att skriva över föregående bild vid: %1. - + Error deleting file Fel vid borttagning av fil - + Unable to delete existing file: %1. Det går inte att ta bort en befintlig fil: %1. - + Error creating user image directory Fel vid skapande av katalog för användarbilder - + Unable to create directory %1 for storing user images. Det går inte att skapa katalog %1 f eller lagra användarbilder. - + Error saving user image Fel vid sparande av användarbild - + Unable to save image to file Kunde inte spara bild till fil - - Select User Image - Välj användarbild + + &Edit + R&edigera - - Image Formats (*.jpg *.jpeg *.png *.bmp) - Bildformat (*.jpg *.jpeg *.png *.bmp) + + &Delete + &Ta bort - - No firmware available - Ingen firmware tillgänglig - - - - Please install the firmware to use firmware avatars. - Installera firmware för att använda firmware-avatarer. - - - - - 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 firmware. - - - - Could not locate RomFS. Your file or decryption keys may be corrupted. - RomFS kunde inte hittas. 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. - Det gick inte att extrahera RomFS. Din fil eller dina avkrypteringsnycklar kan vara skadade. - - - - Error finding image directory - Fel vid försök att hitta bildkatalog - - - - Failed to find image directory in the archive. - Misslyckades med att hitta bildkatalog i arkivet. - - - - No images found - Inga bilder hittades - - - - No avatar images were found in the archive. - Inga avatarbilder hittades i arkivet. - - - - ConfigureProfileManagerAvatarDialog - - - Select - Välj - - - - Cancel - Avbryt - - - - Background Color - Bakgrundsfärg - - - - Select Firmware Avatar - Välj firmware-avatar + + 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 borttagning - + Name: %1 UUID: %2 Namn: %1 @@ -4905,8 +5277,8 @@ 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>Läser in kontrollerinmatning från skript i samma format som TAS-nx-skript.<br/>För en mer detaljerad förklaring, se <a href="https://eden-emulator.github.io/help/feature/tas/"><span style=" text-decoration: underline; color:#039be5;"> hjälpsidan </span></a> på Eden-webbplatsen.</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> @@ -4939,17 +5311,22 @@ UUID: %2 Pausa exekvering under inläsningar - + + Show recording dialog + Visa inspelningsdialog + + + Script Directory Skriptkatalog - + Path Sökväg - + ... ... @@ -4962,7 +5339,7 @@ UUID: %2 TAS-konfiguration - + Select TAS Load Directory... Välj katalog för TAS-inläsningar... @@ -5100,64 +5477,43 @@ Dra punkterna för att ändra position, eller dubbelklicka på tabellcellerna f ConfigureUI - - - + + None Ingen - - Small (32x32) - Liten (32x32) - - - - Standard (64x64) - Standard (64x64) - - - - Large (128x128) - Stor (128x128) - - - - Full Size (256x256) - Full storlek (256x256) - - - + Small (24x24) Liten (24x24) - + Standard (48x48) Standard (48x48) - + Large (72x72) Stor (72x72) - + Filename Filnamn - + Filetype Filtyp - + Title ID Titelns ID - + Title Name Titelnamn @@ -5226,71 +5582,66 @@ Dra punkterna för att ändra position, eller dubbelklicka på tabellcellerna f - Game Icon Size: - Storlek på spelikonen: - - - Folder Icon Size: Ikonstorlek för mapp: - + Row 1 Text: Rad 1-text: - + Row 2 Text: Rad 2-text: - + Screenshots Skärmbilder - + Ask Where To Save Screenshots (Windows Only) Fråga var du vill spara skärmdumpar (endast Windows) - + Screenshots Path: Sökväg för skärmdumpar: - + ... ... - + TextLabel TextLabel - + Resolution: Status: - + Select Screenshots Path... 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) @@ -5424,20 +5775,20 @@ Dra punkterna för att ändra position, eller dubbelklicka på tabellcellerna f Visa aktuellt spel i din Discord-status - - + + All Good Tooltip Allt är bra - + Must be between 4-20 characters Tooltip Måste bestå av mellan 4 och 20 tecken - + Must be 48 characters, and lowercase a-z Tooltip Måste bestå av 48 tecken och små bokstäver a-z @@ -5469,27 +5820,27 @@ Dra punkterna för att ändra position, eller dubbelklicka på tabellcellerna f Borttagning av VALFRITT data går INTE ATT ÅNGRA! - + Shaders Shaders - + UserNAND UserNAND - + SysNAND SysNAND - + Mods Moddar - + Saves Sparningar @@ -5527,7 +5878,7 @@ Dra punkterna för att ändra position, eller dubbelklicka på tabellcellerna f Importera data för denna katalog. Detta kan ta en stund och kommer att ta bort ALLT BEFINTLIGT DATA! - + Calculating... Beräknar... @@ -5550,12 +5901,12 @@ Dra punkterna för att ändra position, eller dubbelklicka på tabellcellerna f <html><head/><body><p>Projekten som gör Eden möjligt</p></body></html> - + Dependency Beroende - + Version Version @@ -5731,44 +6082,44 @@ Gå till Konfigurera -> System -> Nätverk och gör ett val. GRenderWindow - - + + OpenGL not available! OpenGL är inte tillgängligt! - + OpenGL shared contexts are not supported. Delade OpenGL-kontexter stöds inte. - + Eden has not been compiled with OpenGL support. Eden har inte kompilerats med OpenGL-stöd. - - + + Error while initializing 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 @@ -5776,203 +6127,208 @@ Gå till Konfigurera -> System -> Nätverk och gör ett val. 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 plats för sparat data - + Open Mod Data Location Ö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 - + Remove Installed Update Ta bort installerad uppdatering - + Remove All Installed DLC Ta bort alla installerade DLC - + Remove Custom Configuration Ta bort anpassad konfiguration - + 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 - + 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 - + Navigate to GameDB entry 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 - + Scan Subfolders Sök igenom undermappar - + Remove Game Directory Ta bort spelkatalog - + ▲ Move Up ▲ Flytta upp - + ▼ Move Down ▼ Flytta ner - + Open Directory Location Öppna katalogplats - + Clear Rensa - + Name Namn - + Compatibility Kompatibilitet - + Add-ons Tillägg - + File type Filtyp - + Size Storlek - + Play time Speltid @@ -5980,62 +6336,62 @@ Gå till Konfigurera -> System -> Nätverk och gör ett val. 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 - + The game crashes when attempting to startup. Spelet kraschar när det försöker starta. - + Not Tested Inte testat - + The game has not yet been tested. Spelet har ännu inte testats. @@ -6043,7 +6399,7 @@ Gå till Konfigurera -> System -> Nätverk och gör ett val. GameListPlaceholder - + Double-click to add a new folder to the game list Dubbelklicka för att lägga till en ny mapp i spellistan @@ -6051,17 +6407,17 @@ Gå till Konfigurera -> System -> Nätverk och gör ett val. GameListSearchField - + %1 of %n result(s) %1 av %n resultat%1 av %n resultat - + Filter: Filtrera: - + Enter pattern to filter Ange mönster för att filtrera @@ -6137,12 +6493,12 @@ Gå till Konfigurera -> System -> Nätverk och gör ett val. 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. 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. @@ -6152,189 +6508,207 @@ 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 Ta skärmbild - + Change Adapting Filter Ändra anpassningsfilter - + Change Docked Mode Ändra dockningsläge - - Change GPU Accuracy - Ändra GPU-noggrannhet + + Change GPU Mode + Ändra GPU-läge - + Configure Konfigurera - + Configure Current Game Konfigurera aktuellt spel - + Continue/Pause Emulation Fortsätt/Pausa emulering - + Exit Fullscreen Avsluta helskärm - + Exit Eden Avsluta Eden - + Fullscreen Helskärm - + Load File Läs in fil - + Load/Remove Amiibo Läs in/ta bort Amiibo - - Multiplayer Browse Public Game Lobby - Bläddra i offentlig spellobby för flera spelare + + Browse Public Game Lobby + Bläddra i den publika spellobbyn - - Multiplayer Create Room - Skapa rum för flera spelare + + Create Room + Skapa rum - - Multiplayer Direct Connect to Room - Direktanslutning till rum för flera spelare + + Direct Connect to Room + Direktanslutning till rum - - Multiplayer Leave Room - Lämna rum för flera spelare + + Leave Room + Lämna rum - - Multiplayer Show Current Room - Visa aktuellt rum för flera spelare + + 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 @@ -6387,22 +6761,22 @@ Felsökningsmeddelande: Beräknad tid 5m 4s - + Loading... Läser in... - + Loading Shaders %1 / %2 Läser in shaders %1 / %2 - + Launching... Startar... - + Estimated Time %1 Beräknad tid %1 @@ -6451,42 +6825,42 @@ Felsökningsmeddelande: 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 - + Host Värd - + Refreshing Uppdaterar - + Refresh List Uppdatera lista @@ -6535,719 +6909,776 @@ Felsökningsmeddelande: + &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 - + Am&iibo Am&iibo - - &Applets - &Appletar + + 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 &Stoppa - + &Verify Installed Contents &Verifiera installerat innehåll - + &About Eden &Om Eden - + Single &Window Mode Enkelt &fönsterläge - + Con&figure... Kon&figurera... - + Ctrl+, Ctrl+, - - Display D&ock Widget Headers - Visa rubriker för d&ock-widget + + 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 - + &Restart 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 - Öppna &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 - Öppna &Mii-redigerare + + &Mii Editor + &Mii-redigerare - + &Configure TAS... &Konfigurera TAS... - + Configure C&urrent Game... Konfigurera a&ktuellt spel... - - + + &Start &Starta - + &Reset Starta &om - - + + R&ecord Spela &in - + Open &Controller Menu Öppna &kontrollermenyn - + Install Decryption &Keys Installera avkrypteringsn&ycklar - - Open &Home Menu - Öppna &hemmenyn + + &Home Menu + &Hemmeny - - Open &Setup - Öppna &konfiguration - - - + &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.<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>. - Vulkan-initialiseringen misslyckades under uppstarten.<br><br>Klicka<a href='https://eden-emulator.github.io/wiki/faq/#yuzu-starts-with-the-error-broken-vulkan-installation-detected'> här för instruktioner om hur du åtgärdar problemet</a>. + + 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><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. - 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><br> För en förklaring av de olika Switch-format som Eden stöder, <a href='https://eden-emulator.github.io/wiki/overview-of-switch-game-formats'>kolla in vår wiki</a>. Detta meddelande kommer inte att visas igen. + + 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/Revolt for help. + + %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 be om hjälp på Discord/Revolt. + %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 @@ -7255,7 +7686,7 @@ Använd endast denna funktion för att installera uppdateringar och DLC. - + %n file(s) were overwritten %n fil skrevs över @@ -7263,7 +7694,7 @@ Använd endast denna funktion för att installera uppdateringar och DLC. - + %n file(s) failed to install %n fil gick inte att installera @@ -7271,214 +7702,214 @@ Använd endast denna funktion för att installera uppdateringar och DLC. - + 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 @@ -7487,230 +7918,155 @@ Kontrollera skrivbehörigheten i systemets temporära katalog och försök igen. OS rapporterade fel: %1 - - - - - - + No firmware available Ingen firmware tillgänglig - - Please install firmware to use the Album applet. - Installera firmware för att kunna använda albumappletten. - - - - Album Applet - Album-applet - - - - Album applet is not available. Please reinstall firmware. - Album-applet är inte tillgänglig. Installera om firmware. - - - - Please install firmware to use the Cabinet applet. - Installera firmware för att kunna använda Cabinet-applet. - - - - Cabinet Applet - Cabinet-applet - - - - Cabinet applet is not available. Please reinstall firmware. - Cabinet-applet är inte tillgänglig. Installera om firmware. - - - - Please install firmware to use the Mii editor. - Installera firmware för att kunna använda Mii-redigeraren. - - - - Mii Edit Applet - Mii-redigeringsapplet - - - - Mii editor is not available. Please reinstall firmware. - Mii-redigeraren är inte tillgänglig. Installera om firmware. - - - - Please install firmware to use the Controller Menu. - Installera firmware för att kunna använda kontrollermenyn. - - - - Controller Applet - Kontroller-applet - - - - Controller Menu is not available. Please reinstall firmware. - Kontrollermenyn är inte tillgänglig. Installera om firmware. - - - + Firmware Corrupted Firmware är skadat - - Home Menu Applet - Hemmeny-applet + + Unknown applet + Okänd applet - - Home Menu is not available. Please reinstall firmware. - Hemmenyn är inte tillgänglig. Installera om firmware. + + Applet doesn't map to a known value. + Appleten mappar inte till ett känt värde. - - Please install firmware to use Starter. - Installera firmware för att kunna använda Starter. + + Record not found + Posten hittades inte - - Starter Applet - Starter-applet + + Applet not found. Please reinstall firmware. + Appleten hittades inte. Installera om fast programvara. - - Starter is not available. Please reinstall firmware. - Starter är inte tillgänglig. Installera om firmware. - - - + Capture Screenshot Ta skärmbild - + PNG Image (*.png) PNG-bild (*.png) - + Update Available Uppdatering tillgänglig - - Download the %1 update? - Hämta ner uppdateringen %1? + + 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 - - %1 %2 - %1 %2 - - - + FSR FSR - + NO AA NO AA - + VOLUME: MUTE VOLYM: TYST - + VOLUME: %1% Volume percentage (e.g. 50%) VOLYM: %1% - + Derivation Components Missing Deriveringskomponenter saknas - - Encryption keys are missing. - Krypteringsnycklar 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. @@ -7721,59 +8077,74 @@ 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? @@ -7781,11 +8152,6 @@ Would you like to bypass this and exit anyway? Vill du kringgå detta och stänga ändå? - - - None - Ingen - FXAA @@ -7812,27 +8178,27 @@ Vill du kringgå detta och stänga ändå? Bikubisk - + Zero-Tangent Zero-Tangent - + B-Spline B-Spline - + Mitchell Mitchell - + Spline-1 Spline-1 - + Gaussian Gaussian @@ -7868,18 +8234,18 @@ Vill du kringgå detta och stänga ändå? - Normal - Normal + Fast + Snabb - High - Hög + Balanced + Balanserad - Extreme - Extrem + Accurate + Noggrann @@ -7887,42 +8253,37 @@ Vill du kringgå detta och stänga ändå? Vulkan - - OpenGL - OpenGL + + OpenGL GLSL + OpenGL GLSL - - Null - Null + + OpenGL SPIRV + OpenGL SPIRV - GLSL - GLSL + OpenGL GLASM + OpenGL GLASM - GLASM - GLASM - - - - SPIRV - SPIRV + Null + Null MigrationWorker - + 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. @@ -7939,7 +8300,7 @@ Om detta inte är önskvärt, ta bort följande filer: %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: @@ -7950,11 +8311,24 @@ Om du vill rensa upp bland de filer som låg kvar på den gamla dataplatsen kan %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. + + ModerationDialog @@ -8079,6 +8453,135 @@ Fortsätt ändå? Du är på väg att lämna rummet. Alla nätverksanslutningar kommer att stängas. + + NewUserDialog + + + + 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 + + OverlayDialog @@ -8112,50 +8615,122 @@ 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 + 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/PAUS + + ProfileAvatarDialog + + + Select + Välj + + + + Cancel + Avbryt + + + + Background Color + Bakgrundsfärg + + + + Select Firmware Avatar + Välj avatar från fast programvara + + QObject - - 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 - - - - - + + + Migration Migrering - + Clear Shader Cache Töm shader-cache @@ -8190,19 +8765,19 @@ p, li { white-space: pre-wrap; } Nej - + 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... @@ -8584,15 +9159,60 @@ p, li { white-space: pre-wrap; } Spelar inget spel - + %1 is not playing a game %1 spelar inte ett spel - + %1 is playing %2 %1 spelar %2 + + + Play Time: %1 + Speltid: %1 + + + + Never Played + Aldrig spelat + + + + 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 + QtAmiiboSettingsDialog @@ -8710,47 +9330,47 @@ p, li { white-space: pre-wrap; } 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 @@ -8759,204 +9379,204 @@ p, li { white-space: pre-wrap; } %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. @@ -8964,22 +9584,22 @@ Gör detta endast om du är 100% säker på att du vill radera dessa data. 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: @@ -8990,268 +9610,361 @@ 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. @@ -9259,84 +9972,84 @@ Till: 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. Versions 19.0.1 or earlier are recommended, as 20.0.0+ is currently experimental. - Firmware saknas. Firmware krävs för att köra vissa spel och använda hemmenyn. Version 19.0.1 eller tidigare rekommenderas, eftersom 20.0.0+ för närvarande är experimentell. + + 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. @@ -9358,60 +10071,60 @@ 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. @@ -9452,7 +10165,7 @@ Detta rekommenderas om du vill dela data mellan emulatorer. - + Pro Controller Pro Controller @@ -9465,7 +10178,7 @@ Detta rekommenderas om du vill dela data mellan emulatorer. - + Dual Joycons Dubbla Joycons @@ -9478,7 +10191,7 @@ Detta rekommenderas om du vill dela data mellan emulatorer. - + Left Joycon Vänster Joycon @@ -9491,7 +10204,7 @@ Detta rekommenderas om du vill dela data mellan emulatorer. - + Right Joycon Höger Joycon @@ -9520,7 +10233,7 @@ Detta rekommenderas om du vill dela data mellan emulatorer. - + Handheld Handhållen @@ -9641,32 +10354,32 @@ Detta rekommenderas om du vill dela data mellan emulatorer. Inte tillräckligt med kontroller - + 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 @@ -9821,13 +10534,13 @@ 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 @@ -9864,12 +10577,12 @@ Om du väljer ”Från Eden” tas tidigare sparade data bort som lagrats i Ryuj Avbryt - + Failed to link save data Misslyckades med att länka sparat data - + OS returned error: %1 OS returnerade fel: %1 @@ -9905,47 +10618,9 @@ Om du väljer ”Från Eden” tas tidigare sparade data bort som lagrats i Ryuj Sekunder: - + Total play time reached maximum. Maximal total speltid uppnådd. - - fs - - - 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 - Portabel plats för 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 giltiga Ryujinx-data. - - - - - Could not find Ryujinx save data - Kunde inte hitta Ryujinx sparade data - - - \ No newline at end of file + diff --git a/dist/languages/tr_TR.ts b/dist/languages/tr_TR.ts index 81c2297fcc..9edaac9303 100644 --- a/dist/languages/tr_TR.ts +++ b/dist/languages/tr_TR.ts @@ -4,12 +4,12 @@ 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> @@ -26,17 +26,24 @@ 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 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://discord.gg/kXAmGCXBGD"><span style=" text-decoration: underline; color:#039be5;">Discord</span></a> | <a href="https://rvlt.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;">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;">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'nun ticari bir markasıdır. Eden, Nintendo ile hiçbir şekilde bağlantılı değildir.</span></p></body></html> @@ -232,7 +239,7 @@ Bu işlem onların hem forum kullanıcı adını hem de IP adresini banlar. <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> @@ -368,1647 +375,1870 @@ Bu işlem onların hem forum kullanıcı adını hem de IP adresini banlar.% - + Amiibo editor - + Amiibo editor + + + + Controller configuration + Kontrolcü yapılandırması - Controller configuration - + Data erase + Veri silme - Data erase - - - - Error Hata - + Net connect - + Ağ bağlantısı + + + + Player select + Oyuncu seçimi - Player select - + Software keyboard + Yazılımsal klavye - Software keyboard - + Mii Edit + Mii Düzenleme - Mii Edit - + Online web + Çevrim içi ağ - Online web - + Shop + Mağaza - Shop - + Photo viewer + Fotoğraf görüntüleyici - Photo viewer - + Offline web + Çevrim dışı ağ - Offline web - + Login share + Oturum paylaşımı - Login share - + Wifi web auth + Wi-Fi web kimlik doğrulaması - Wifi web auth - + My page + Sayfam - My page + 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 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 4GB of the board to the devkit 8/6GB. + + 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. 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. - - Synchronize Core Speed + + Slow Speed + + + + + When the Slow Speed hotkey is pressed, the speed will be limited to this percentage. - 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. - + 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.). +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: - + 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) - Virtual Table Bouncing - - - - - Bounces (by emulating a 0-valued return) any functions that triggers a prefetch abort - - - - - 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. - + 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 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: - + 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 (Vulkan only). - + Bu ayar, kullanılacak GPU'yu seçer (yalnızca Vulkan). - - Shader Backend: - Shader Backend: - - - - The shader backend to use with OpenGL. -GLSL is recommended. - - - - + Resolution: Çözünürlük: - + 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 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 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 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 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 - + 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. 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 - + 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. 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 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) 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. 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. - - GPU Accuracy: - + + GPU Mode: + Grafik Kartı Modu - - Controls the 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 as a last resort. - + + 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. - + DMA Accuracy: - + DMA Doğruluğu: - + 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. - - Enable asynchronous shader compilation (Hack) - + + Enable asynchronous shader compilation + Asenkron gölgelendirici derlemeyi etkinleştir - + May reduce shader stutter. - + Gölgelendirici/shader takılmalarını azaltabilir. - - Fast GPU Time (Hack) - + + Fast GPU Time + Hızlı Grafik Kartı Süresi - + 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. + 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) - + 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 numbers allow for more features and can increase performance, but may cause issues. -The default value is per-system. - +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. - - Provoking Vertex - + + Vertex Input Dynamic State + Vertex Dinamik Durumu - - Improves lighting and vertex handling in some games. -Only Vulkan 1.0+ devices support this extension. - + + 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. - - Descriptor Indexing - - - - - Improves texture & buffer handling and the Maxwell translation layer. -Some Vulkan 1.1+ and all 1.2+ devices support this extension. - - - - + 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. - + 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 console. - + Konsolun adı - + Custom RTC Date: - + Özel RTC Tarihi - + 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: - + 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 console. - + Konsolun bölgesi - + Time Zone: Saat Dilimi: - + The time zone of the console. - + Konsolun saat dilimi - + Sound Output Mode: Ses Çıkış Modu: - + Console Mode: Konsol Modu: - + 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. + + + + Unit Serial - + + Battery Serial + + + + + Debug knobs + + + + Prompt for user profile on boot - + Açılışta kullanıcı profili için sor - + Useful if multiple people use the same PC. - + Aynı bilgisayarı birden fazla kişi kullanıyorsa yararlıdır. - + Pause when not in focus - + Odaklı değilken duraklat - + Pauses emulation when focusing on other windows. - + Diğer pencerelere odaklanıldığında emülasyonu duraklatır. - + Confirm before stopping emulation - + Emülasyonu durdurmadan önce onayla - + 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 - + 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 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 - - - - - Default - Varsayılan - - - - Unsafe (fast) - - - - - Safe (stable) - - - - + + 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 - + + + 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) - - Serbian (српски) + + 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) - + 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 - - Low (128) - - - - + + Medium (256) + Orta (256) + + + + + High (512) + Yüksek (512) + + + + Very Small (16 MB) - - High (512) + + 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 @@ -2022,12 +2252,12 @@ When a program attempts to open the controller applet, it is immediately closed. Applets - + Aplikasyonlar Applet mode preference - + Aplikasyon modu tercihi @@ -2082,7 +2312,7 @@ When a program attempts to open the controller applet, it is immediately closed. Varsayılana Döndür - + Auto Otomatik @@ -2112,7 +2342,7 @@ When a program attempts to open the controller applet, it is immediately closed. CPU Backend - + CPU Arkayüzü @@ -2357,12 +2587,12 @@ When a program attempts to open the controller applet, it is immediately closed. Logging - Kütük Tutma + Günlük Kaydı Tutma Global Log Filter - Evrensel Kütük Filtresi + Evrensel Günlük Kaydı Filtresi @@ -2382,7 +2612,7 @@ When a program attempts to open the controller applet, it is immediately closed. Open Log Location - Kütük Konumunu Aç + Günlük Kaydı Konumunu Aç @@ -2442,7 +2672,7 @@ When a program attempts to open the controller applet, it is immediately closed. Enable Renderdoc Hotkey - + Renderdoc Kısayol Tuşunu Etkinleştir @@ -2487,12 +2717,12 @@ When a program 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 @@ -2522,7 +2752,7 @@ When a program attempts to open the controller applet, it is immediately closed. Enable Auto-Stub - + Otomatik Taslağı Etkinleştir @@ -2531,48 +2761,88 @@ When a program attempts to open the controller applet, it is immediately closed. + Use dev.keys + + + + Enable Debug Asserts Hata Ayıklama Assert'lerini Etkinleştir - + Debugging Hata ayıklama - + + Battery Serial: + Pil Seri Numarası: + + + + 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. - + 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 - + Censor username in logs - + Günlüklerde kullanıcı adını sansürle - + **This will be reset automatically when Eden closes. - + **Bu, Eden kapandığında otomatik olarak sıfırlanacaktır. @@ -2617,27 +2887,27 @@ When a program attempts to open the controller applet, it is immediately closed. 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 @@ -2653,13 +2923,13 @@ When a program attempts to open the controller applet, it is immediately closed. - + General Genel - + Graphics Grafikler @@ -2670,8 +2940,8 @@ When a program attempts to open the controller applet, it is immediately closed. - GraphicsExtensions - + GraphicsExtra + Ek Grafikler @@ -2680,7 +2950,7 @@ When a program attempts to open the controller applet, it is immediately closed. - + Controls Kontroller @@ -2696,7 +2966,7 @@ When a program attempts to open the controller applet, it is immediately closed. - + System Sistem @@ -2736,9 +3006,10 @@ When a program attempts to open the controller applet, it is immediately closed. - - - + + + + ... ... @@ -2748,90 +3019,196 @@ When a program 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ç... + + + Save Data Directory + Kayıt Verisi Dizini + + + + Choose an action for the save data directory: + Kayıt verisi dizini için bir işlem seçin: + + + + 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? + ConfigureGeneral @@ -2848,23 +3225,53 @@ When a program 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 - + 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... - - 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? + + Directory Already Added + + + + + This directory is already in the list. + @@ -2895,33 +3302,33 @@ When a program 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 @@ -2939,7 +3346,7 @@ When a program attempts to open the controller applet, it is immediately closed. Gelişmiş - + Advanced Graphics Settings Gelişmiş Grafik Ayarları: @@ -2949,28 +3356,38 @@ When a program attempts to open the controller applet, it is immediately closed. Form - + Form - Extensions - + Extras + Extralar - - Vulkan Extensions Settings - + + Hacks + Hileler - + + 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. @@ -3041,12 +3458,12 @@ When a program attempts to open the controller applet, it is immediately closed. 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. @@ -3390,7 +3807,7 @@ When a program attempts to open the controller applet, it is immediately closed. Requires restarting Eden - + Eden'in yeniden başlatılmasını gerektirir @@ -3420,12 +3837,12 @@ When a program attempts to open the controller applet, it is immediately closed. 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 @@ -3540,7 +3957,7 @@ When a program attempts to open the controller applet, it is immediately closed. - + Left Stick Sol Analog @@ -3650,14 +4067,14 @@ When a program attempts to open the controller applet, it is immediately closed. - + ZL ZL - + L L @@ -3670,22 +4087,22 @@ When a program attempts to open the controller applet, it is immediately closed. - + Plus Artı - + ZR ZR - - + + R R @@ -3742,14 +4159,14 @@ When a program attempts to open the controller applet, it is immediately closed. - + Right Stick Sağ Analog Mouse panning - + Fare kaydırma @@ -3823,7 +4240,7 @@ When a program attempts to open the controller applet, it is immediately closed. Calibrate sensor - + Sensörü kalibre et @@ -3911,88 +4328,88 @@ Eksenleri ters çevirmek için, önce joystickinizi dikey sonra yatay olarak har 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 @@ -4015,15 +4432,6 @@ Eksenleri ters çevirmek için, önce joystickinizi dikey sonra yatay olarak har Varsayılanlar - - ConfigureLinuxTab - - - - Linux - Linux - - ConfigureMotionTouch @@ -4049,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: @@ -4079,103 +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://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> - - - - + %1:%2 %1:%2 + + - - - - - + + + Eden - + Eden - + Port number has invalid characters Port numarasında geçersiz karakterler var - + 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. @@ -4185,7 +4583,7 @@ Eksenleri ters çevirmek için, önce joystickinizi dikey sonra yatay olarak har Configure mouse panning - + Fare kaydırmayı yapılandır @@ -4195,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. @@ -4224,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üç @@ -4260,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. @@ -4303,12 +4702,7 @@ Current values are %1% and %2% respectively. Enable Airplane Mode - - - - - None - Hiçbiri + Uçak Modunu Etkinleştir @@ -4361,55 +4755,60 @@ 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 + + + + Properties Özellikler @@ -4427,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 @@ -4464,38 +4958,18 @@ Current values are %1% and %2% respectively. Username Kullanıcı Adı - - - Set Image - Resim Belirle - - Select Avatar - - - - 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)) @@ -4503,169 +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: - - - + 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 saving user image - + Kullanıcı resmi kaydedilirken hata oluştu - + Unable to save image to file + Resim dosyaya kaydedilemiyor + + + + &Edit - - Select User Image - Kullanıcı Resmi Seçin - - - - Image Formats (*.jpg *.jpeg *.png *.bmp) + + &Delete - - 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. - - - - - ConfigureProfileManagerAvatarDialog - - - Select - - - - - Cancel - - - - - Background Color - - - - - Select Firmware Avatar + + 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 @@ -4833,7 +5218,7 @@ 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> @@ -4867,17 +5252,22 @@ UUID: %2 Yüklemeler sırasında yürütmeyi duraklat - + + Show recording dialog + + + + Script Directory Script Konumu - + Path Konum - + ... ... @@ -4890,7 +5280,7 @@ UUID: %2 TAS Yapılandırması - + Select TAS Load Directory... Tas Yükleme Dizini Seçin @@ -5028,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ı @@ -5154,71 +5523,66 @@ Noktanın konumunu değiştirmek için sürükleyin ya da sayıların üstüne - 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 @@ -5352,23 +5716,23 @@ Noktanın konumunu değiştirmek için sürükleyin ya da sayıların üstüne Şu anda oynadığın oyunu Discord'da durum olarak göster - - + + All Good Tooltip - + Her Şey Yolunda - + Must be between 4-20 characters Tooltip - + 4-20 karakter arasında olmalıdır - + Must be 48 characters, and lowercase a-z Tooltip - + 48 karakter olmalı ve a-z arası küçük harf içermelidir @@ -5389,37 +5753,37 @@ Noktanın konumunu değiştirmek için sürükleyin ya da sayıların üstüne 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 - Shaders - - - - - UserNAND - - - - - SysNAND - - - - - Mods - - - - Saves - + Kayıtlar @@ -5427,37 +5791,37 @@ Noktanın konumunu değiştirmek için sürükleyin ya da sayıların üstüne 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... @@ -5465,27 +5829,27 @@ Noktanın konumunu değiştirmek için sürükleyin ya da sayıların üstüne 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 @@ -5549,98 +5913,98 @@ 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ç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ç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ı 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. Port must be a number between 0 to 65535. - + 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 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. 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ı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 zaten dolu olduğu için odaya bağlanılamıyor. 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 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. - + 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. - + 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 oluşmaya devam ederse, lütfen bir sorun kaydı açın Connection to room lost. Try to reconnect. - + Oda bağlantısı kesildi. Yeniden bağlanmayı deneyin. You have been kicked by the room host. - + Oda sahibi tarafından kovuldunuz. IP address is already in use. Please choose another. - + 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 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. - + Kovmaya/yasaklamaya çalıştığınız kullanıcı bulunamadı. Odadan ayrılmış olabilirler. @@ -5651,50 +6015,50 @@ Please go to Configure -> System -> Network and make a selection. Error - + Hata GRenderWindow - - + + OpenGL not available! OpenGL kullanıma uygun değil! - + OpenGL shared contexts are not supported. OpenGL paylaşılan bağlam desteklenmiyor. - + 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 @@ -5702,203 +6066,208 @@ Please go to Configure -> System -> Network and make a selection. 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 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 - + 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 @@ -5906,62 +6275,62 @@ Please go to Configure -> System -> Network and make a selection. 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. @@ -5969,7 +6338,7 @@ Please go to Configure -> System -> Network and make a selection. 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. @@ -5977,17 +6346,17 @@ Please go to Configure -> System -> Network and make a selection. GameListSearchField - + %1 of %n result(s) %n sonucun %1'i%n sonucun %1'i - + Filter: Filtre: - + Enter pattern to filter Filtrelemek için bir düzen giriniz @@ -6063,12 +6432,12 @@ Please go to Configure -> System -> Network and make a selection. 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. Debug Message: @@ -6077,189 +6446,207 @@ Debug Message: 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 - + Configure Current Game - + Continue/Pause Emulation Sürdür/Emülasyonu duraklat - + Exit Fullscreen Tam Ekrandan Çık - + 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 @@ -6312,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 @@ -6376,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 @@ -6460,1171 +6847,1153 @@ Debug Message: + &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 - + Am&iibo - - &Applets + + 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 - + 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 - + &Capture Screenshot &Ekran Görüntüsü Al - - - Open &Album - - - - - &Set Nickname and Owner - - - - - &Delete Game Data - - - &Restore Amiibo + &Album - &Format Amiibo + &Set Nickname and Owner - Open &Mii Editor + &Delete Game Data + &Restore Amiibo + + + + + &Format Amiibo + + + + + &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 Decryption &Keys - - Open &Home Menu + + &Home Menu - - Open &Setup - - - - + &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.<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>. - + + 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><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. + + 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/Revolt for help. + + %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 - - Please install firmware to use the Album applet. - - - - - Album Applet - - - - - Album applet is not available. Please reinstall firmware. - - - - - Please install firmware to use the Cabinet applet. - - - - - Cabinet Applet - - - - - Cabinet applet is not available. Please reinstall firmware. - - - - - Please install firmware to use the Mii editor. - - - - - Mii Edit Applet - - - - - Mii editor is not available. Please reinstall firmware. - - - - - Please install firmware to use the Controller Menu. - - - - - Controller Applet - - - - - Controller Menu is not available. Please reinstall firmware. - - - - + Firmware Corrupted + Donanım Yazılımı/Firmware Bozuk + + + + Unknown applet - - Home Menu Applet + + Applet doesn't map to a known value. - - Home Menu is not available. Please reinstall firmware. + + Record not found - - Please install firmware to use Starter. + + Applet not found. Please reinstall firmware. - - Starter Applet - - - - - Starter is not available. Please reinstall firmware. - - - - + Capture Screenshot - + PNG Image (*.png) - + Update Available - + Güncelleme Mevcut - - Download the %1 update? - - - - - TAS state: Running %1/%2 - - - - - TAS state: Recording %1 - - - - - TAS state: Idle %1/%2 - - - - - TAS State: Invalid - - - - - &Stop Running + + 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 - - %1 %2 - - - - + FSR - + NO AA - + VOLUME: MUTE - + VOLUME: %1% Volume percentage (e.g. 50%) - + Derivation Components Missing - - Encryption keys are 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. @@ -7632,69 +8001,79 @@ 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? - - - None - - FXAA @@ -7721,27 +8100,27 @@ Would you like to bypass this and exit anyway? - + Zero-Tangent - + B-Spline - + Mitchell - + Spline-1 - + Gaussian @@ -7777,17 +8156,17 @@ Would you like to bypass this and exit anyway? - Normal + Fast - High + Balanced - Extreme + Accurate @@ -7796,41 +8175,36 @@ Would you like to bypass this and exit anyway? - - OpenGL + + OpenGL GLSL - - Null + + OpenGL SPIRV - GLSL + OpenGL GLASM - GLASM - - - - - SPIRV + Null MigrationWorker - + 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. @@ -7841,7 +8215,7 @@ If this is not desirable, delete the following files: - + 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: @@ -7849,11 +8223,24 @@ If you wish to clean up the files which were left in the old data location, you - + Data was migrated successfully. + + ModSelectDialog + + + Dialog + + + + + The specified folder or archive contains the following mods. Select which ones to install. + + + ModerationDialog @@ -7978,6 +8365,135 @@ Devam etmek istiyor musunuz? Odadan çıkmak üzeresiniz. Herhangi bir ağ bağlantısı kapanacaktır. + + 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 + + + OverlayDialog @@ -8011,50 +8527,122 @@ 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 - - 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 - - - - - + + + Migration - + Clear Shader Cache @@ -8087,18 +8675,18 @@ p, li { white-space: pre-wrap; } - + You can manually re-trigger this prompt by deleting the new config directory: %1 - + Migrating - + Migrating, this may take a while... @@ -8480,15 +9068,60 @@ p, li { white-space: pre-wrap; } Şu anda oyun oynamıyor - + %1 is not playing a game %1 şu anda oyun oynamıyor - + %1 is playing %2 %1 %2'yi oynuyor + + + Play Time: %1 + + + + + Never Played + + + + + 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 + QtAmiiboSettingsDialog @@ -8606,250 +9239,250 @@ p, li { white-space: pre-wrap; } 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. @@ -8857,22 +9490,22 @@ Only do this if you're 100% sure you want to delete this data. QtCommon::FS - + Linked Save Data - + Save data has been linked. - + Failed to link save data - + Could not link directory: %1 To: @@ -8880,268 +9513,357 @@ To: - + 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. @@ -9149,83 +9871,83 @@ To: 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. Versions 19.0.1 or earlier are recommended, as 20.0.0+ is currently experimental. + + Firmware missing. Firmware is required to run certain games and use the Home Menu. @@ -9246,56 +9968,56 @@ 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. @@ -9336,7 +10058,7 @@ This is recommended if you want to share data between emulators. - + Pro Controller Pro Controller @@ -9349,7 +10071,7 @@ This is recommended if you want to share data between emulators. - + Dual Joycons İkili Joyconlar @@ -9362,7 +10084,7 @@ This is recommended if you want to share data between emulators. - + Left Joycon Sol Joycon @@ -9375,7 +10097,7 @@ This is recommended if you want to share data between emulators. - + Right Joycon Sağ Joycon @@ -9404,7 +10126,7 @@ This is recommended if you want to share data between emulators. - + Handheld Handheld @@ -9525,32 +10247,32 @@ This is recommended if you want to share data between emulators. - + 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 @@ -9705,13 +10427,13 @@ 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 @@ -9746,12 +10468,12 @@ By selecting "From Eden", previous save data stored in Ryujinx will be - + Failed to link save data - + OS returned error: %1 @@ -9787,45 +10509,9 @@ By selecting "From Eden", previous save data stored in Ryujinx will be - + Total play time reached maximum. - - fs - - - 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 - - - - \ No newline at end of file + diff --git a/dist/languages/uk.ts b/dist/languages/uk.ts index fcef3100de..ecc023ea8b 100644 --- a/dist/languages/uk.ts +++ b/dist/languages/uk.ts @@ -37,8 +37,8 @@ li.checked::marker { content: "\2612"; } - <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/kXAmGCXBGD"><span style=" text-decoration: underline; color:#039be5;">Discord</span></a> | <a href="https://rvlt.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;">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/kXAmGCXBGD"><span style=" text-decoration: underline; color:#039be5;">Discord</span></a> | <a href="https://rvlt.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;">Ліцензія</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> @@ -375,141 +375,151 @@ This would ban both their forum username and their IP address. % - + 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 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 4GB of the board to the devkit 8/6GB. + + Increases the amount of emulated RAM. Doesn't affect performance/stability but may allow HD texture mods to load. - Збільшує обсяг емульованої оперативної пам’яті з 4 ГБ як у стандартного Switch до 6/8 ГБ із версії для розробників. + Збільшує обсяг емульованої оперативної пам’яті/ Не впливає на продуктивність/стабільність, але може дозволити завантажувати модифіковані текстури вищої роздільності. - + Limit Speed Percent Відсоток обмеження швидкості - + 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. @@ -518,186 +528,184 @@ 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.). Can help reduce stuttering at lower framerates. Синхронізує швидкість ядер ЦП з максимальною швидкістю візуалізації гри, щоб збільшити частоту кадрів, при цьому не впливаючи на швидкість гри (анімації, фізика тощо). Може зменшити затримки при низькій частоті кадрів. - + Accuracy: Точність: - + 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 МГц)» для подвійної частоти. +Використовуйте «Підвищення (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. - - Virtual Table Bouncing - Відхиляння віртуальних таблиць - - - - Bounces (by emulating a 0-valued return) any functions that triggers a prefetch abort - Відхиляє (емулюючи повернення нульового значення) будь-які функції, що викликають переривання попереднього завантаження - - - + Enable Host MMU Emulation (fastmem) - Увімкнути емуляцію MMU господаря (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 хоста. Вимкнення змушує використовувати для доступу до пам’яті програмну емуляцію 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 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: - + Changes the output graphics API. Vulkan is recommended. Змінює API виведення графіки. Рекомендовано використовувати Vulkan. - + Device: Пристрій: - + This setting selects the GPU to use (Vulkan only). Це налаштування вибирає ГП для використання (лише Vulkan). - - Shader Backend: - Бекенд шейдерів: - - - - The shader backend to use with OpenGL. -GLSL is recommended. - Бекенд шейдерів для використання з OpenGL. -Рекомендовано використовувати GLSL. - - - + Resolution: Роздільність: - + Forces to render at a different resolution. Higher resolutions require more VRAM and bandwidth. Options lower than 1X can cause artifacts. @@ -706,27 +714,27 @@ Options lower than 1X can cause artifacts. Варіанти нище ніж 1X можуть спричинити проблеми з візуалізацією. - + Window Adapting Filter: Фільтр адаптації вікна: - + FSR Sharpness: Різкість 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 can produce a more stable picture in lower resolutions. @@ -735,12 +743,12 @@ 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,12 +757,12 @@ Exclusive fullscreen may offer better performance and better Freesync/Gsync supp «Ексклюзивний повноекранний» може надати кращі продуктивність і підтримку Freesync/Gsync. - + Aspect Ratio: Співвідношення сторін: - + 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. @@ -763,24 +771,24 @@ Also controls the aspect ratio of captured screenshots. Також керує співвідношеням сторін знімків екрана. - + 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 Оптимізовувати виведення SPIRV - + Runs an additional optimization pass over generated SPIRV shaders. Will increase time required for shader compilation. May slightly improve performance. @@ -791,24 +799,12 @@ This feature is experimental. Ця функція є експериментальною. - - 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. @@ -817,12 +813,12 @@ 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. GPU: Use the GPU's compute shaders to decode ASTC textures (recommended). @@ -834,12 +830,12 @@ stuttering but may present artifacts. Асинхронно ЦП: Використання ЦП для декодування ASTC-текстур по мірі їх викликів. Повністю усуває затримки декодування ASTC ціною проблем з візуалізацією, поки текстури декодуються. - + ASTC Recompression Method: Метод перестиснення ASTC: - + 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. @@ -847,34 +843,44 @@ BC1/BC3: The intermediate format will be recompressed to BC1 or BC3 format, 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. 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 allows tearing as it recovers from a slow down. Mailbox can have lower latency than FIFO and does not tear but may drop frames. @@ -885,12 +891,12 @@ 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. @@ -899,104 +905,152 @@ 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. Safe to set at 16x on most GPUs. Керує якістю візуалізації текстур під непрямими кутами. Для більшості ГП можна вільно вибирати 16x. - - GPU Accuracy: - Точність ГП: + + GPU Mode: + Режим ГП: - - Controls the 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 as a last resort. - Керує точністю емуляції ГП. -Більшість ігор добре візуалізуються в режимі «Нормально», але для деяких може бути необхідний «Високо». -Частинки зазвичай правильно візуалізуються з точністю «Високо». -Режим «Екстремально» повинен використовуватися у виняткових випадках. + + 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. + Керує режимом емуляції ГП. +Більшість ігор добре візуалізуються з режимами «Швидко» або «Збалансовано», але деякі ігри можуть потребувати режиму «Точно». +Частинки зазвичай правильно візуалізуються лише з режимом «Точно». - + DMA Accuracy: Точність DMA: - + Controls the DMA precision accuracy. Safe precision fixes issues in some games but may degrade performance. Керує точністю DMA. Вища точність виправляє проблеми з деякими іграми, але може погіршити продуктивність. - - Enable asynchronous shader compilation (Hack) - Увімкнути асинхронну компіляцію шейдерів (обхідне рішення) + + Enable asynchronous shader compilation + Увімкнути асинхронну компіляцію шейдерів - + May reduce shader stutter. Може зменшити шейдерні затримки. - - Fast GPU Time (Hack) - Швидкий час роботи ГП (обхідне рішення) + + 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. Розганяє емульований ГП для збільшення динамічної роздільності та відстані візуалізації. -Використовуйте 128 для максимальної продуктивності та 512 для максмальної точності графіки. +Використовуйте 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 - + 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) - + 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. @@ -1005,166 +1059,184 @@ 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. + Прибирає світіння в 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 numbers allow for more features and can increase performance, but may cause issues. -The default value is per-system. +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 some games. -Only Vulkan 1.0+ devices support this extension. - Покращує освітлення та взаємодію з вершинами у деяких іграх. -Це розширення підтримують лише пристрої з Vulkan 1.0+. + + Enables vertex input dynamic state feature for better quality and performance. + Вмикає можливість динамічного стану введення вершин для кращих якості й продуктивності. - - Descriptor Indexing - Індексування дескрипторів - - - - Improves texture & buffer handling and the Maxwell translation layer. -Some Vulkan 1.1+ and all 1.2+ devices support this extension. - Покращує взаємодію з текстурами й буфером, а також шар перетворення Maxwell. -Це розширення підтримують деякі пристрої з Vulkan 1.1+ та всі з 1.2+. - - - + 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. Керує початковим значення генератора випадкових чисел. Зазвичай використовується в спідранах. - + Device Name Назва пристрою - + The name of the console. Назва консолі. - + Custom RTC Date: Користувацька дата RTC: - + 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: Мова: - + This option can be overridden when region setting is auto-select Це налаштування може перевизначитися, якщо налаштування регіону вибирається автоматично - + Region: Регіон: - + The region of the console. Регіон консолі. - + Time Zone: Часовий пояс: - + The time zone of the console. Часовий пояс консолі. - + Sound Output Mode: Режим виведення звуку: - + Console 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. @@ -1173,908 +1245,1049 @@ Setting to Handheld can help improve performance for low end systems. Налаштування «Портативний» може покращити продуктивність на слабких системах. - + + Unit Serial + Серійний номер пристрою + + + + Battery Serial + Серійний номер акумулятора + + + + Debug knobs + Зневаджувальні регулятори + + + 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 Підтверджувати зупинку емуляції - + Overrides prompts asking to confirm stopping the emulation. Enabling it bypasses such prompts and directly exits the emulation. Перевизначає запити на підтвердження зупинки емуляції. Увімкнення обходить такі запити й одразу зупиняє емуляцію. - + Hide mouse on inactivity Приховувати курсор миші при бездіяльності - + Hides the mouse after 2.5s of inactivity. Приховує курсор миші після 2,5 с її бездіяльності. - + Disable controller applet Вимкнути аплет контролера - + 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 (Середня якість) - - 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 - Екстремально - - - - - Default - Стандартно - - - - Unsafe (fast) - Небезпечно (швидко) - - - - Safe (stable) - Безпечно (стабільно) - - - + + 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 (асемблерні шейдери, лише NVIDIA) + + + + OpenGL SPIR-V (Experimental, AMD/Mesa Only) + OpenGL SPIR-V (експериментально, лише AMD/Mesa) + + + + Null + Нічого + + + + Fast + Швидко + + + + Balanced + Збалансовано + + + + 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) [ЕКСПЕРИМЕНТАЛЬНО] - + 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 - + Area Області - + MMPX MMPX - + Zero-Tangent Нульовий тангенс - + B-Spline B-Spline - + 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) - - Serbian (српски) - Сербська (српски) + + 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-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 (небезпечно) - + Docked У докстанції - + Handheld Портативний - + + + Off + Вимкнено + + + Boost (1700MHz) Підвищення (1700 МГц) - + Fast (2000MHz) Швидко (2000 МГц) - + Always ask (Default) Завжди запитувати (стандартно) - + Only if game specifies not to stop Лише якщо гра вказує не зупиняти - + Never ask Ніколи не запитувати - - Low (128) - Низько (128) - - - + + 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 @@ -2146,7 +2359,7 @@ When a program attempts to open the controller applet, it is immediately closed. Відновити стандартні - + Auto Автоматично @@ -2171,7 +2384,7 @@ When a program attempts to open the controller applet, it is immediately closed. We recommend setting accuracy to "Auto". - Ми рекомендуємо встановити точність на «Автоматично». + Радимо встановити точність на «Автоматично». @@ -2209,7 +2422,7 @@ When a program 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> + <html><head/><body><p><span style=" font-weight:600;">Лише для зневадження.</span><br/>Якщо ви не впевнені, що саме роблять ці налаштування, залиште їх увімкненими. <br/>Якщо вимкнені, ці налаштування набувають чинності лише при увімкненому зневадженню ЦП. </p></body></html> @@ -2338,14 +2551,14 @@ When a program attempts to open the controller applet, it is immediately closed. <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> Enable Host MMU Emulation (general memory instructions) - Увімкнути емуляцію MMU господаря (інструкції загальної пам’яті) + Увімкнути емуляцію MMU хоста (інструкції загальної пам’яті) @@ -2356,14 +2569,14 @@ When a program attempts to open the controller applet, it is immediately closed. <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> Enable Host MMU Emulation (exclusive memory instructions) - Увімкнути емуляцію MMU господаря (інструкції ексклюзивної пам’яті) + Увімкнути емуляцію MMU хоста (інструкції ексклюзивної пам’яті) @@ -2438,7 +2651,7 @@ When a program attempts to open the controller applet, it is immediately closed. Enable Extended Logging** - Увімкнути розширений журнал** + Увімкнути розширене журналювання** @@ -2597,46 +2810,86 @@ When a program attempts to open the controller applet, it is immediately closed. + Use dev.keys + Використовувати dev.keys + + + Enable Debug Asserts Увімкнути зневаджувальні перевірки - + Debugging Зневадження - + + Battery Serial: + Серійний номер акумулятора: + + + + 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. Увімкніть, щоб виводити до консолі перелік останніх згенерированих аудіокоманд. Впливає лише на ігри, які використовують аудіорендерер. - + 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. **Це налаштування автоматично скинеться після закриття Eden. @@ -2688,7 +2941,7 @@ When a program attempts to open the controller applet, it is immediately closed. Some settings are only available when a game is not running. - Деякі налаштування доступні тільки тоді, коли гру не запущено. + Деякі налаштування доступні лише тоді, коли гру не запущено. @@ -2697,13 +2950,13 @@ When a program attempts to open the controller applet, it is immediately closed. - + Audio Звук - + CPU ЦП @@ -2719,13 +2972,13 @@ When a program attempts to open the controller applet, it is immediately closed. - + General Загальні - + Graphics Графіка @@ -2736,8 +2989,8 @@ When a program attempts to open the controller applet, it is immediately closed. - GraphicsExtensions - ГрафікаРозширення + GraphicsExtra + Графіка (дод.) @@ -2746,7 +2999,7 @@ When a program attempts to open the controller applet, it is immediately closed. - + Controls Керування @@ -2762,7 +3015,7 @@ When a program attempts to open the controller applet, it is immediately closed. - + System Система @@ -2802,9 +3055,10 @@ When a program attempts to open the controller applet, it is immediately closed. - - - + + + + ... ... @@ -2814,90 +3068,196 @@ When a program 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... Виберіть теку для завантаження модів... + + + Save Data Directory + Тека даних збережень + + + + Choose an action for the save data directory: + Виберіть дію для теки даних збережень: + + + + 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? + Дані збережень успішно перенесено. + +Хочете видалити старі дані збережень? + ConfigureGeneral @@ -2914,24 +3274,54 @@ When a program 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 + Додайте теки для сканування на наявність доповнень і оновлень, не встановлюючи їх у NAND + + + + Add Directory + Додати теку + + + + Remove Selected + Вилучити вибране + + + Reset All Settings Скинути всі налаштування - + 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 @@ -2961,33 +3351,33 @@ When a program attempts to open the controller applet, it is immediately closed. Колір тла: - + % FSR sharpening percentage (e.g. 50%) % - + Off Вимкнено - + VSync Off Вертикальну синхронізацію вимкнено - + Recommended Рекомендовано - + On Увімкнено - + VSync On Вертикальну синхронізацію увімкнено @@ -3005,7 +3395,7 @@ When a program attempts to open the controller applet, it is immediately closed. Додаткові - + Advanced Graphics Settings Додаткові налаштування графіки @@ -3019,16 +3409,26 @@ When a program attempts to open the controller applet, it is immediately closed. - Extensions - Розширення + Extras + Додатково - - Vulkan Extensions Settings - Налаштування розширень Vulkan + + Hacks + Обхідні рішення - + + Changing these options from their default may cause issues. Novitii cavete! + Зміна цих параметрів з їхніх стандартних значень може спричинити проблеми. Noviti cavete! + + + + Vulkan Extensions + Розширення Vulkan + + + % Sample Shading percentage (e.g. 50%) % @@ -3606,7 +4006,7 @@ When a program attempts to open the controller applet, it is immediately closed. - + Left Stick Лівий джойстик @@ -3716,14 +4116,14 @@ When a program attempts to open the controller applet, it is immediately closed. - + ZL ZL - + L L @@ -3736,22 +4136,22 @@ When a program attempts to open the controller applet, it is immediately closed. - + Plus Плюс - + ZR ZR - - + + R R @@ -3808,7 +4208,7 @@ When a program attempts to open the controller applet, it is immediately closed. - + Right Stick Правий джойстик @@ -3977,88 +4377,88 @@ To invert the axes, first move your joystick vertically, and then horizontally.< Sega Genesis - + Start / Pause - Старт / Пауза + Запустити / Призупинити - + Z Z - + Control Stick Джойстик Control - + 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» @@ -4081,15 +4481,6 @@ To invert the axes, first move your joystick vertically, and then horizontally.< Стандартні - - ConfigureLinuxTab - - - - Linux - Linux - - ConfigureMotionTouch @@ -4115,7 +4506,7 @@ To invert the axes, first move your joystick vertically, and then horizontally.< - + Configure Налаштувати @@ -4145,103 +4536,93 @@ To invert the axes, first move your joystick vertically, and then horizontally.< Порт: - - Learn More - Дізнатися більше - - - - + + Test Тест - + Add Server Додати сервер - + Remove Server Вилучити сервер - - <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> - <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;">Дізнатися більше</span></a> - - - + %1:%2 %1:%2 + + - - - - - + + + Eden Eden - + Port number has invalid characters Номер порту містить неправильні символи - + 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>Дочекайтеся завершення. @@ -4372,11 +4753,6 @@ Current values are %1% and %2% respectively. Enable Airplane Mode Увімкнути режим «У літаку» - - - None - Жодного - ConfigurePerGame @@ -4431,52 +4807,57 @@ 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 + Аплети + + + Properties Властивості @@ -4494,15 +4875,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 + Розташування модів у 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 @@ -4531,38 +5012,18 @@ Current values are %1% and %2% respectively. Username Ім’я користувача - - - Set Image - Вибрати зображення - - Select Avatar - Вибрати аватар - - - 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)) @@ -4570,169 +5031,80 @@ Current values are %1% and %2% respectively. %2 - - Enter Username - Введіть ім’я користувача - - - + Users Користувачі - - Enter a username for the new user: - Введіть ім’я користувача для нового профілю: - - - - Enter a new username: - Введіть нове ім’я користувача: - - - + 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 saving user image - Помилка збереження зображення користувача + Помилка під час збереження зображення користувача - + Unable to save image to file Неможливо зберегти зображення до файлу - - Select User Image - Виберіть зображення користувача + + &Edit + [&E] Редагувати - - Image Formats (*.jpg *.jpeg *.png *.bmp) - Формати зображень (*.jpg *.jpeg *.png *.bmp) + + &Delete + [&D] Видалити - - 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. - Зображення аватарів не виявлено в архіві. - - - - ConfigureProfileManagerAvatarDialog - - - Select - Вибрати - - - - Cancel - Скасувати - - - - Background Color - Колір тла - - - - Select Firmware Avatar - Виберіть аватар прошивки + + Edit User + Редагувати користувача ConfigureProfileManagerDeleteDialog - + Delete this user? All of the user's save data will be deleted. Видалити цього користувача? Усі дані збережень цього користувача будуть видалені. - + Confirm Delete Підтвердження видалення - + Name: %1 UUID: %2 Ім’я: %1 @@ -4829,7 +5201,7 @@ UUID: %2 Error enabling ring input - Помилка увімкнення введення Ring + Помилка під час увімкнення введення Ring @@ -4900,8 +5272,8 @@ 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>Зчитує введення контролера зі скриптів у однаковому форматі зі скриптами TAS-nx.<br/>Для подробиць ознайомтеся зі <a href="https://eden-emulator.github.io/help/feature/tas/"><span style=" text-decoration: underline; color:#039be5;">сторінкою допомги</span></a> на вебсайті Eden.</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> @@ -4934,17 +5306,22 @@ UUID: %2 Призупинити виконання під час завантаження - + + Show recording dialog + Показати діалог запису + + + Script Directory Тека скриптів - + Path Шлях - + ... ... @@ -4957,7 +5334,7 @@ UUID: %2 Налаштування TAS - + Select TAS Load Directory... Виберіть теку завантаження TAS... @@ -5095,64 +5472,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 Назва гри @@ -5177,7 +5533,7 @@ Drag points to change position, or double-click table cells to edit values. Note: Changing language will apply your configuration. - Примітка: Зміна мови призведе до застосування налаштувань. + Примітка: Змінивши мову, ви застосуєте налаштування. @@ -5221,71 +5577,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) @@ -5419,20 +5770,20 @@ Drag points to change position, or double-click table cells to edit values.Показувати поточну гру у вашому статусі Discord - - + + All Good Tooltip Усе добре - + Must be between 4-20 characters Tooltip Повинно бути в межах 4–20 символів - + Must be 48 characters, and lowercase a-z Tooltip Повинно бути 48 символів a–z нижнього регістру @@ -5464,27 +5815,27 @@ Drag points to change position, or double-click table cells to edit values.Видалення БУДЬ-ЯКИХ даних НЕЗВОРОТНЕ! - + Shaders Шейдери - + UserNAND Користувацька NAND - + SysNAND Системна NAND - + Mods Моди - + Saves Збереження @@ -5522,7 +5873,7 @@ Drag points to change position, or double-click table cells to edit values.Імпортувати дані до цієї теки. Це може тривати певний час і видалить УСІ НАЯВНІ ДАНІ! - + Calculating... Обчислення... @@ -5545,12 +5896,12 @@ Drag points to change position, or double-click table cells to edit values.<html><head/><body><p>Завдяки цим проєктам став можливим Eden</p></body></html> - + Dependency Залежність - + Version Версія @@ -5570,7 +5921,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> + <html><head/><body><p>Адреса сервера хоста</p></body></html> @@ -5580,7 +5931,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> + <html><head/><body><p>Номер порту, який прослуховується хостом</p></body></html> @@ -5651,7 +6002,7 @@ Drag points to change position, or double-click table cells to edit values. 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. - Неможливо під’єднатися до господаря. Переконайтеся, що налаштування з’єднання правильні. Якщо однаково не вдається під’єднатися, зверніться до власника кімнати й запевніться, що зовнішній порт налаштовано правильно. + Неможливо під’єднатися до хоста. Переконайтеся, що налаштування з’єднання правильні. Якщо однаково не вдається під’єднатися, зверніться до власника кімнати й запевніться, що зовнішній порт налаштовано правильно. @@ -5726,44 +6077,44 @@ Please go to Configure -> System -> Network and make a selection. GRenderWindow - - + + OpenGL not available! OpenGL недоступний! - + OpenGL shared contexts are not supported. Спільні контексти OpenGL не підтримуються. - + Eden has not been compiled with OpenGL support. Eden не скомпільовано з підтримкою OpenGL. - - + + 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 @@ -5771,203 +6122,208 @@ Please go to Configure -> System -> Network and make a selection. 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 Вилучити всі доповнення - + Remove Custom Configuration Вилучити користувацьке налаштування - + 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 Налаштувати гру - + Scan Subfolders Сканувати підтеки - + Remove Game Directory Вилучити теку гри - + ▲ Move Up ▲ Перемістити вверх - + ▼ Move Down ▼ Перемістити вниз - + Open Directory Location Відкрити розташування теки - + Clear Очистити - + Name Назва - + Compatibility Сумісність - + Add-ons Додатки - + File type Тип файлу - + Size Розмір - + Play time Награний час @@ -5975,62 +6331,62 @@ Please go to Configure -> System -> Network and make a selection. 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. Гру ще не протестовано. @@ -6038,7 +6394,7 @@ Please go to Configure -> System -> Network and make a selection. GameListPlaceholder - + Double-click to add a new folder to the game list Натисніть двічі, щоб додати нову теку до переліку ігор @@ -6046,17 +6402,17 @@ Please go to Configure -> System -> Network and make a selection. GameListSearchField - + %1 of %n result(s) %1 із %n результату%1 із %n результатів%1 із %n результатів%1 із %n результатів - + Filter: Фільтр: - + Enter pattern to filter Введіть шаблон для фільтрування @@ -6132,12 +6488,12 @@ Please go to Configure -> System -> Network and make a selection. 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. Debug Message: Не вдалося анонсувати кімнату в публічному лобі. Щоб створити лобі публічно, вам потрібно правильно налаштувати обліковий запис Eden у: «Емуляція» → «Налаштувати» → «Мережа». Виберіть «Прихована», якщо ви не хочете публікувати кімнату в публічному лобі. @@ -6147,188 +6503,206 @@ 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 Вийти з 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 + Перемкнути оверлей продуктивності @@ -6336,12 +6710,12 @@ Debug Message: Please confirm these are the files you wish to install. - Будь ласка, переконайтеся, що це ті файли, які ви хочете встановити. + Підтвердьте, що це ті файли, які ви хочете встановити. Installing an Update or DLC will overwrite the previously installed one. - Встановлення оновлення або завантажуваного контенту перезапише раніше встановлене. + Встановлення оновлення або доповнення перезапише те, що було встановлено раніше. @@ -6351,7 +6725,7 @@ Debug Message: Install Files to NAND - Встановити файли в NAND + Встановити файли до NAND @@ -6360,7 +6734,7 @@ Debug Message: The text can't contain any of the following characters: %1 - У тексті неприпустимі такі символи: + Текст не може містити будь-які з таких символів: %1 @@ -6369,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 @@ -6407,7 +6781,7 @@ Debug Message: Public Room Browser - Браузер публічних кімнат + Перегляд публічних кімнат @@ -6428,7 +6802,7 @@ Debug Message: Games I Own - Ігри, якими я володію + Мої ігри @@ -6446,44 +6820,44 @@ Debug Message: Оновити лобі - + Password Required to Join - Для входу необхідний пароль + Для входу потрібен пароль - + Password: Пароль: - + Players Гравці - + Room Name Назва кімнати - + Preferred Game - Переважна гра + Бажана гра - + Host - Хост + Власник - + Refreshing Оновлення - + Refresh List - Оновити список + Оновити перелік @@ -6530,719 +6904,776 @@ Debug Message: + &Game List Mode + [&G] Режим переліку ігор + + + + Game &Icon Size + [&I] Розмір значків ігор + + + Reset Window Size to &720p [&7] Скинути розмір вікна до 720p - + Reset Window Size to 720p Скинути розмір вікна до 720p - + Reset Window Size to &900p [&9] Скинути розмір вікна до 900p - + Reset Window Size to 900p Скинути розмір вікна до 900p - + Reset Window Size to &1080p [&1] Скинути розмір вікна до 1080p - + Reset Window Size to 1080p Скинути розмір вікна до 1080p - + &Multiplayer - [&M] Мультиплеєр + [&M] Багатоосібна гра - + &Tools [&T] Інструменти - + Am&iibo [&I] Amiibo - - &Applets - [&A] Аплети + + Launch &Applet + [&A] Запустити аплет - + &TAS [&T] TAS - + &Create Home Menu Shortcut - [&C] Створити ярлик домашнього меню + [&C] Створити ярлик меню-домівки - + Install &Firmware [&F] Встановити прошивку - + &Help [&H] Допомога - + &Install Files to NAND... - [&I] Встановити файли в NAND... + [&I] Встановити файли до NAND... - + L&oad File... [&O] Завантажити файл... - + Load &Folder... [&F] Завантажити теку... - + E&xit - [&X] Вихід + [&X] Вийти - - + + &Pause - [&P] Пауза + [&P] Призупинити - + &Stop - [&S] Стоп + [&S] Зупинити - + &Verify Installed Contents [&V] Перевірити встановлений вміст - + &About Eden [&A] Про Eden - + Single &Window Mode - [&W] Режим одного вікна + [&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] Показати панель стану - + Show Status Bar - Показати панель статусу + Показати панель стану - + &Browse Public Game Lobby [&B] Переглянути публічні ігрові лобі - + &Create Room [&C] Створити кімнату - + &Leave Room [&L] Покинути кімнату - + &Direct Connect to Room - [&D] Пряме під’єднання до кімнати + [&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] ЧаПи - + &Capture Screenshot [&C] Зробити знімок екрана - - Open &Album - [&A] Відкрити альбом + + &Album + [&A] Альбом - + &Set Nickname and Owner [&S] Указати псевдонім і власника - + &Delete Game Data [&D] Видалити дані гри - + &Restore Amiibo [&R] Відновити amiibo - + &Format Amiibo [&F] Форматувати amiibo - - Open &Mii Editor - [&M] Відкрити редактор Mii + + &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 Decryption &Keys [&K] Встановити ключі дешифрування - - Open &Home Menu - [&H] Відкрити «Меню-домівку» + + &Home Menu + [&H] Меню-домівка - - Open &Setup - [&S] Відкрити налаштування - - - + &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.<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>. - Не вдалося ініціалізувати Vulkan під час запуску.<br><br>Натисніть <a href='https://eden-emulator.github.io/wiki/faq/#yuzu-starts-with-the-error-broken-vulkan-installation-detected'>тут, щоб отримати інструкції стосовно цієї проблеми</a>. + + 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><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. - Для цієї гри ви використовуєте формат теки з деконструйованим ROM, який є застарілим форматом, заміненим на інші, як-от NCA, NAX, XCI, або NSP. У тек із деконструйованими ROM немає значків, метаданих, а також вони не підтримують оновлення.<br><br>Для подробиць стосовно різноманітних форматів Switch, які підтримує Eden, <a href='https://eden-emulator.github.io/wiki/overview-of-switch-game-formats'>ознайомтеся з нашою вікі</a>. Це повідомлення не буде показано знову. + + 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/Revolt for help. + + %1<br>Please redump your files or ask on Discord/Stoat for help. %1 signifies an error string. - %1<br>Повторно створіть дамп файлів або зверніться по допомогу на Discord/Revolt. + %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» + Помилка під час відкриття теки «%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» + Помилка під час відкриття «%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 файл @@ -7252,7 +7683,7 @@ Please, only use this feature to install updates and DLC. - + %n file(s) were overwritten Перезаписано %n файл @@ -7262,7 +7693,7 @@ Please, only use this feature to install updates and DLC. - + %n file(s) failed to install Не вдалося встановити %n файл @@ -7272,214 +7703,214 @@ Please, only use this feature to install updates and DLC. - + 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 + Помилка під час відкриття 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 + Помилка під час завантаження даних 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 @@ -7488,230 +7919,155 @@ OS reported error: %1 Помилка зі звіту від ОС: %1 - - - - - - + No firmware available Немає доступних прошивок - - Please install firmware to use the Album applet. - Встановіть прошивку, щоб користуватися аплетом «Альбом». - - - - Album Applet - Аплет «Альбом» - - - - Album applet is not available. Please reinstall firmware. - Аплет «Альбом» недоступний. Перевстановіть прошивку. - - - - Please install firmware to use the Cabinet applet. - Встановіть прошивку, щоб користуватися аплетом «Шафа». - - - - Cabinet Applet - Аплет «Шафа» - - - - Cabinet applet is not available. Please reinstall firmware. - Аплет «Шафа» недоступний. Перевстановіть прошивку. - - - - Please install firmware to use the Mii editor. - Встановіть прошивку, щоб користуватися редактором Mii. - - - - Mii Edit Applet - Аплет «Редактор Mii» - - - - Mii editor is not available. Please reinstall firmware. - Редактор Mii недоступний. Перевстановіть прошивку. - - - - Please install firmware to use the Controller Menu. - Встановіть прошивку, щоб користуватися меню контролерів. - - - - Controller Applet - Аплет «Контролери» - - - - Controller Menu is not available. Please reinstall firmware. - Меню контролерів недоступне. Перевстановіть прошивку. - - - + Firmware Corrupted Прошивка пошкоджена - - Home Menu Applet - Аплет «Меню-домівка» + + Unknown applet + Невідомий аплет - - Home Menu is not available. Please reinstall firmware. - Меню-домівка недоступне. Перевстановіть прошивку. + + Applet doesn't map to a known value. + Аплет не призначено до відомого значення. - - Please install firmware to use Starter. - Встановіть прошивку, щоб користуватися аплетом «Початок». + + Record not found + Запис не виявлено - - Starter Applet - Аплет «Початок» + + Applet not found. Please reinstall firmware. + Аплет не виявлено. Перевстановіть прошивку. - - Starter is not available. Please reinstall firmware. - Аплет «Початок» недоступний. Перевстановіть прошивку. - - - + Capture Screenshot Зробити знімок екрана - + PNG Image (*.png) Зображення PNG (*.png) - + Update Available Доступне оновлення - - Download the %1 update? - Завантажити оновлення %1? + + 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 мс - - %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. - Відсутні ключі шифрування. + + 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. @@ -7722,59 +8078,74 @@ Would you like to force it for future launches? Хочете примусово увімкнути його для наступних запусків? - + 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? @@ -7782,11 +8153,6 @@ Would you like to bypass this and exit anyway? Обійти цей запит і однаково закрити його? - - - None - Жодного - FXAA @@ -7813,27 +8179,27 @@ Would you like to bypass this and exit anyway? Бікубічний - + Zero-Tangent Нульовий тангенс - + B-Spline B-Spline - + Mitchell Мітчелла - + Spline-1 Spline-1 - + Gaussian Ґаусса @@ -7869,18 +8235,18 @@ Would you like to bypass this and exit anyway? - Normal - Нормально + Fast + Швидко - High - Високо + Balanced + Збалансовано - Extreme - Екстремально + Accurate + Точно @@ -7888,42 +8254,37 @@ Would you like to bypass this and exit anyway? Vulkan - - OpenGL - OpenGL + + OpenGL GLSL + OpenGL GLSL - - Null - Нічого + + OpenGL SPIRV + OpenGL SPIRV - GLSL - GLSL + OpenGL GLASM + OpenGL GLASM - GLASM - GLASM - - - - SPIRV - SPIRV + Null + Нічого MigrationWorker - + 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. @@ -7933,14 +8294,14 @@ If this is not desirable, delete the following files: %4 -Зверніть увагу, що ваші налаштування й дані будуть поширені з: %1. +Зверніть увагу, що ваші налаштування й дані будуть поділятися з: %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: @@ -7951,11 +8312,24 @@ If you wish to clean up the files which were left in the old data location, you %1 - + Data was migrated successfully. Дані перенесено успішно. + + ModSelectDialog + + + Dialog + Діалог + + + + The specified folder or archive contains the following mods. Select which ones to install. + Указана тека або архів містить такі моди. Виберіть, які з них потрібно встановити. + + ModerationDialog @@ -7966,7 +8340,7 @@ If you wish to clean up the files which were left in the old data location, you Ban List - Список заблокованих + Перелік заблокованих гравців @@ -7982,7 +8356,7 @@ If you wish to clean up the files which were left in the old data location, you Subject - Суб'єкт + Тема @@ -7992,7 +8366,7 @@ If you wish to clean up the files which were left in the old data location, you Forum Username - Ім'я користувача на форумі + Ім’я користувача на форумі @@ -8010,22 +8384,22 @@ If you wish to clean up the files which were left in the old data location, you Current connection status - Поточний стан з'єднання + Поточний стан з’єднання Not Connected. Click here to find a room! - Не з'єднано. Натисніть тут, щоб знайти кімнату! + Не під’єднано. Натисніть тут, щоб знайти кімнату! Not Connected - Не з'єднано + Не під’єднано Connected - З'єднано + Під’єднано @@ -8041,8 +8415,8 @@ If you wish to clean up the files which were left in the old data location, you Failed to update the room information. Please check your Internet connection and try hosting the room again. Debug Message: - Не вдалося оновити інформацію про кімнату. Будь ласка, перевірте підключення до Інтернету та спробуйте знову зайти в кімнату. -Повідомлення налагодження: + Не вдалося оновити інформацію про кімнату. Перевірте з’єднання з Інтернетом і повторно спробуйте зайти в кімнату. +Зневаджувальне повідомлення: @@ -8062,7 +8436,7 @@ Proceed anyway? Leave Room - Залишити кімнату + Покинути кімнату @@ -8072,7 +8446,7 @@ Proceed anyway? Disconnect - Від'єднатися + Від’єднатися @@ -8080,6 +8454,135 @@ Proceed anyway? Ви збираєтеся покинути кімнату. Усі мережеві підключення буде закрито. + + NewUserDialog + + + + 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 символів + + OverlayDialog @@ -8113,50 +8616,122 @@ 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 - - Installed SD Titles - Встановлені SD ігри - - - - Installed NAND Titles - Встановлені NAND ігри - - - - System Titles - Системні ігри - - - - Add New Game Directory - Додати нову папку з іграми - - - - Favorites - Улюблені - - - - - + + + Migration - Міграція + Перенесення - + Clear Shader Cache Очистити кеш шейдерів @@ -8191,19 +8766,19 @@ p, li { white-space: pre-wrap; } Ні - + You can manually re-trigger this prompt by deleting the new config directory: %1 Ви можете вручну викликати це повідомлення, видаливши нову теку налаштувань: %1 - + Migrating - Міграція + Перенесення - + Migrating, this may take a while... Перенесення. Це може тривати певний час... @@ -8434,7 +9009,7 @@ p, li { white-space: pre-wrap; } [invalid] - [неприпустимо] + [неправильно] @@ -8472,7 +9047,7 @@ p, li { white-space: pre-wrap; } [unused] - [не використаний] + [не використано] @@ -8497,12 +9072,12 @@ p, li { white-space: pre-wrap; } Stick L - Лівий стік + Джойстик L Stick R - Правий стік + Джойстик R @@ -8518,7 +9093,7 @@ p, li { white-space: pre-wrap; } Home - Home + Домівка @@ -8544,7 +9119,7 @@ p, li { white-space: pre-wrap; } Forward - Вперед + Уперед @@ -8585,15 +9160,60 @@ p, li { white-space: pre-wrap; } Не грає в гру - + %1 is not playing a game - %1 не грає у гру + %1 не грає в гру - + %1 is playing %2 %1 грає в %2 + + + Play Time: %1 + Награний час: %1 + + + + Never Played + Ще не зіграно + + + + 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 + Улюблені + QtAmiiboSettingsDialog @@ -8605,7 +9225,7 @@ p, li { white-space: pre-wrap; } Amiibo Info - Інформація щодо Amiibo + Інформація щодо amiibo @@ -8630,7 +9250,7 @@ p, li { white-space: pre-wrap; } Custom Name - Користувацьке ім'я + Користувацьке ім’я @@ -8645,7 +9265,7 @@ p, li { white-space: pre-wrap; } dd/MM/yyyy - dd/MM/yyyy + дд/ММ/рррр @@ -8655,7 +9275,7 @@ p, li { white-space: pre-wrap; } dd/MM/yyyy - dd/MM/yyyy + дд/ММ/рррр @@ -8711,47 +9331,47 @@ p, li { white-space: pre-wrap; } 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 @@ -8760,204 +9380,204 @@ p, li { white-space: pre-wrap; } %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. Запевніться, що у вас є дозволи на читання зі вказаної теки й спробуйте знову. @@ -8965,22 +9585,22 @@ Only do this if you're 100% sure you want to delete this data. QtCommon::FS - + Linked Save Data Під’єднані дані збережень - + Save data has been linked. Дані збережень під’єднано. - + Failed to link save data Не вдалося під’єднати дані збережень. - + Could not link directory: %1 To: @@ -8991,268 +9611,361 @@ 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 використовується в портативному режимі. + +Хочете власноруч вибрати портативну теку для використання? + + + + 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 + Помилка під час вилучення кешу конвеєра драйвера 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 є дозвіл на записування. @@ -9260,84 +9973,84 @@ To: 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. Versions 19.0.1 or earlier are recommended, as 20.0.0+ is currently experimental. - Відсутня прошивка. Прошивка необхідна для запуску певних ігор і використання «Меню-домівки». Рекомендується використовувати версію 19.0.1 або старішу, оскільки версії 20.0.0+ наразі є експериментальними. + + Firmware missing. Firmware is required to run certain games and use the Home Menu. + Відсутня прошивка. Прошивка необхідна для запуску певних ігор і використання меню-домівки. @@ -9359,59 +10072,59 @@ 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. Створює посилання у файловій системі між старою текою і текою 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. @@ -9452,7 +10165,7 @@ This is recommended if you want to share data between emulators. - + Pro Controller Контролер Pro @@ -9465,7 +10178,7 @@ This is recommended if you want to share data between emulators. - + Dual Joycons Подвійні Joy-Con'и @@ -9478,7 +10191,7 @@ This is recommended if you want to share data between emulators. - + Left Joycon Лівий Joy-Con @@ -9491,7 +10204,7 @@ This is recommended if you want to share data between emulators. - + Right Joycon Правий Joy-Con @@ -9520,7 +10233,7 @@ This is recommended if you want to share data between emulators. - + Handheld Портативний @@ -9641,32 +10354,32 @@ This is recommended if you want to share data between emulators. Недостатньо контролерів - + GameCube Controller Контролер GameCube - + Poke Ball Plus Poke Ball Plus - + NES Controller Контролер NES - + SNES Controller Контролер SNES - + N64 Controller Контролер N64 - + Sega Genesis Sega Genesis @@ -9821,13 +10534,13 @@ 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 Скасувати @@ -9864,12 +10577,12 @@ By selecting "From Eden", previous save data stored in Ryujinx will be Скасувати - + Failed to link save data Не вдалося під’єднати дані збережень. - + OS returned error: %1 ОС повернула помилку: %1 @@ -9905,47 +10618,9 @@ By selecting "From Eden", previous save data stored in Ryujinx will be Секунди: - + Total play time reached maximum. Загальний награний час досягнув максимуму. - - fs - - - 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 - - - \ No newline at end of file + diff --git a/dist/languages/vi.ts b/dist/languages/vi.ts index 502b444574..aeef3f2908 100644 --- a/dist/languages/vi.ts +++ b/dist/languages/vi.ts @@ -30,7 +30,7 @@ li.checked::marker { content: "\2612"; } - <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/kXAmGCXBGD"><span style=" text-decoration: underline; color:#039be5;">Discord</span></a> | <a href="https://rvlt.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;">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;">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> @@ -368,390 +368,399 @@ Việc này sẽ ban tên người dùng trên diễn đàn và IP của họ lu % - + 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 maximum of 4. This is mainly a debug option and shouldn't be disabled. - + Memory Layout - - Increases the amount of emulated RAM from 4GB of the board to the devkit 8/6GB. + + 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. 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. - - Synchronize Core Speed + + 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.). Can help reduce stuttering at lower framerates. - + Accuracy: Độ chính xác: - + 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. - - Virtual Table Bouncing - - - - - Bounces (by emulating a 0-valued return) any functions that triggers a prefetch abort - - - - + 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 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: - + Changes the output graphics API. Vulkan is recommended. - + Device: Thiết bị: - + This setting selects the GPU to use (Vulkan only). - - Shader Backend: - Backend shader: - - - - The shader backend to use with OpenGL. -GLSL is recommended. - - - - + Resolution: Độ phân giải: - + 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 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 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 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 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 - + Runs an additional optimization pass over generated SPIRV shaders. Will increase time required for shader compilation. May slightly improve performance. @@ -759,35 +768,24 @@ 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. GPU: Use the GPU's compute shaders to decode ASTC textures (recommended). @@ -796,45 +794,55 @@ stuttering but may present artifacts. - + ASTC Recompression Method: - + 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. 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 allows tearing as it recovers from a slow down. Mailbox can have lower latency than FIFO and does not tear but may drop frames. @@ -842,1175 +850,1379 @@ Immediate (no synchronization) presents whatever is available and can exhibit te - + 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. Safe to set at 16x on most GPUs. - - GPU Accuracy: + + GPU Mode: - - Controls the 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 as a last resort. + + 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. - + DMA Accuracy: - + Controls the DMA precision accuracy. Safe precision fixes issues in some games but may degrade performance. - - Enable asynchronous shader compilation (Hack) + + Enable asynchronous shader compilation - + May reduce shader stutter. - - Fast GPU Time (Hack) + + 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 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) - + 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 numbers allow for more features and can increase performance, but may cause issues. -The default value is per-system. +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 some games. -Only Vulkan 1.0+ devices support this extension. + + Enables vertex input dynamic state feature for better quality and performance. - - Descriptor Indexing - - - - - Improves texture & buffer handling and the Maxwell translation layer. -Some Vulkan 1.1+ and all 1.2+ devices support this extension. - - - - + 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. - + Device Name Tên thiết bị - + The name of the console. - + Custom RTC Date: - + 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: - + This option can be overridden when region setting is auto-select - + Region: Vùng: - + The region of the console. - + Time Zone: Múi giờ: - + The time zone of the console. - + Sound Output Mode: Chế độ đầu ra âm thanh: - + Console 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. - + + Unit Serial + + + + + Battery Serial + + + + + Debug knobs + + + + 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 - + 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 - + 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 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 - - - - - Default - Mặc định - - - - Unsafe (fast) - - - - - Safe (stable) - - - - + + 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 - + + + 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) - - Serbian (српски) + + 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) - + Docked Docked - + Handheld Handheld - + + + 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 + + ConfigureApplets @@ -2082,7 +2294,7 @@ When a program attempts to open the controller applet, it is immediately closed. Khôi phục mặc định - + Auto Tự động @@ -2533,46 +2745,86 @@ When a program attempts to open the controller applet, it is immediately closed. + Use dev.keys + + + + Enable Debug Asserts Bật kiểm tra lỗi gỡ lỗi - + Debugging Gỡ lỗi - + + 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. 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. - + 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** - + Censor username in logs - + **This will be reset automatically when Eden closes. @@ -2633,13 +2885,13 @@ When a program attempts to open the controller applet, it is immediately closed. - + Audio Âm thanh - + CPU CPU @@ -2655,13 +2907,13 @@ When a program attempts to open the controller applet, it is immediately closed. - + General Chung - + Graphics Đồ hoạ @@ -2672,7 +2924,7 @@ When a program attempts to open the controller applet, it is immediately closed. - GraphicsExtensions + GraphicsExtra @@ -2682,7 +2934,7 @@ When a program attempts to open the controller applet, it is immediately closed. - + Controls Điều khiển @@ -2698,7 +2950,7 @@ When a program attempts to open the controller applet, it is immediately closed. - + System Hệ thống @@ -2738,9 +2990,10 @@ When a program attempts to open the controller applet, it is immediately closed. - - - + + + + ... ... @@ -2750,90 +3003,184 @@ When a program 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... + + + Save Data Directory + + + + + Choose an action for the save data directory: + + + + + 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? + + ConfigureGeneral @@ -2850,24 +3197,54 @@ When a program 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 - + 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 @@ -2897,33 +3274,33 @@ When a program 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 @@ -2941,7 +3318,7 @@ When a program attempts to open the controller applet, it is immediately closed. Nâng cao - + Advanced Graphics Settings Cài đặt đồ hoạ nâng cao @@ -2955,16 +3332,26 @@ When a program attempts to open the controller applet, it is immediately closed. - Extensions + Extras - - Vulkan Extensions Settings + + Hacks - + + Changing these options from their default may cause issues. Novitii cavete! + + + + + Vulkan Extensions + + + + % Sample Shading percentage (e.g. 50%) @@ -3542,7 +3929,7 @@ When a program attempts to open the controller applet, it is immediately closed. - + Left Stick Cần trái @@ -3652,14 +4039,14 @@ When a program attempts to open the controller applet, it is immediately closed. - + ZL ZL - + L L @@ -3672,22 +4059,22 @@ When a program attempts to open the controller applet, it is immediately closed. - + Plus Cộng - + ZR ZR - - + + R R @@ -3744,7 +4131,7 @@ When a program attempts to open the controller applet, it is immediately closed. - + Right Stick Cần phải @@ -3913,88 +4300,88 @@ To invert the axes, first move your joystick vertically, and then horizontally.< 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" @@ -4017,15 +4404,6 @@ To invert the axes, first move your joystick vertically, and then horizontally.< Mặc định - - ConfigureLinuxTab - - - - Linux - - - ConfigureMotionTouch @@ -4051,7 +4429,7 @@ To invert the axes, first move your joystick vertically, and then horizontally.< - + Configure Cấu hình @@ -4081,103 +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://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> - - - - + %1:%2 %1:%2 + + - - - - - + + + Eden - + Port number has invalid characters Cổng có kí tự không hợp lệ - + 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. @@ -4308,11 +4676,6 @@ Các giá trị hiện tại lần lượt là %1% và %2%. Enable Airplane Mode - - - None - Không có - ConfigurePerGame @@ -4367,52 +4730,57 @@ 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 + + + + Properties Thuộc tính @@ -4430,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 @@ -4467,38 +4930,18 @@ Các giá trị hiện tại lần lượt là %1% và %2%. Username Tên người dùng - - - Set Image - Đặt hình ảnh - - Select Avatar - - - - 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)) @@ -4506,169 +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: - - - + 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 saving user image - + Unable to save image to file - - Select User Image - Chọn ảnh người dùng - - - - Image Formats (*.jpg *.jpeg *.png *.bmp) + + &Edit - - No firmware available + + &Delete - - 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. - - - - - ConfigureProfileManagerAvatarDialog - - - Select - - - - - Cancel - - - - - Background Color - - - - - Select Firmware Avatar + + 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 @@ -4836,7 +5190,7 @@ 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> @@ -4870,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 - + ... ... @@ -4893,7 +5252,7 @@ UUID: %2 Cấu hình TAS - + Select TAS Load Directory... Chọn thư mục nạp TAS... @@ -5031,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 @@ -5157,71 +5495,66 @@ Kéo điểm để thay đổi vị trí, hoặc nhấp đúp chuột vào ô tr - 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) @@ -5355,20 +5688,20 @@ Kéo điểm để thay đổi vị trí, hoặc nhấp đúp chuột vào ô tr Hiển thị game hiện tại lên trạng thái Discord của bạn - - + + All Good Tooltip - + Must be between 4-20 characters Tooltip - + Must be 48 characters, and lowercase a-z Tooltip @@ -5400,27 +5733,27 @@ Kéo điểm để thay đổi vị trí, hoặc nhấp đúp chuột vào ô tr - + Shaders - + UserNAND - + SysNAND - + Mods - + Saves @@ -5458,7 +5791,7 @@ Kéo điểm để thay đổi vị trí, hoặc nhấp đúp chuột vào ô tr - + Calculating... @@ -5481,12 +5814,12 @@ Kéo điểm để thay đổi vị trí, hoặc nhấp đúp chuột vào ô tr - + Dependency - + Version @@ -5660,44 +5993,44 @@ Please go to Configure -> System -> Network and make a selection. 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ợ. - + 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 @@ -5705,203 +6038,208 @@ Please go to Configure -> System -> Network and make a selection. 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 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 - + 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 @@ -5909,62 +6247,62 @@ Please go to Configure -> System -> Network and make a selection. 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. @@ -5972,7 +6310,7 @@ Please go to Configure -> System -> Network and make a selection. 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 @@ -5980,17 +6318,17 @@ Please go to Configure -> System -> Network and make a selection. GameListSearchField - + %1 of %n result(s) - + Filter: Lọc: - + Enter pattern to filter Nhập mẫu để lọc @@ -6066,12 +6404,12 @@ Please go to Configure -> System -> Network and make a selection. 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. Debug Message: @@ -6080,189 +6418,207 @@ Debug Message: 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 - + 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 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 @@ -6315,22 +6671,22 @@ Debug Message: 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 @@ -6379,42 +6735,42 @@ Debug Message: 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 @@ -6463,1171 +6819,1153 @@ Debug Message: + &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ụ - + Am&iibo - - &Applets + + 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 - + 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 - + &Capture Screenshot &Chụp ảnh màn hình - - - Open &Album - - - - - &Set Nickname and Owner - - - - - &Delete Game Data - - - &Restore Amiibo + &Album - &Format Amiibo + &Set Nickname and Owner - Open &Mii Editor + &Delete Game Data + &Restore Amiibo + + + + + &Format Amiibo + + + + + &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 Decryption &Keys - - Open &Home Menu + + &Home Menu - - Open &Setup - - - - + &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.<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>. + + 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><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. + + 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/Revolt for help. + + %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 - - Please install firmware to use the Album applet. - - - - - Album Applet - - - - - Album applet is not available. Please reinstall firmware. - - - - - Please install firmware to use the Cabinet applet. - - - - - Cabinet Applet - - - - - Cabinet applet is not available. Please reinstall firmware. - - - - - Please install firmware to use the Mii editor. - - - - - Mii Edit Applet - - - - - Mii editor is not available. Please reinstall firmware. - - - - - Please install firmware to use the Controller Menu. - - - - - Controller Applet - - - - - Controller Menu is not available. Please reinstall firmware. - - - - + Firmware Corrupted - - Home Menu Applet + + Unknown applet - - Home Menu is not available. Please reinstall firmware. + + Applet doesn't map to a known value. - - Please install firmware to use Starter. + + Record not found - - Starter Applet + + Applet not found. Please reinstall firmware. - - Starter is not available. Please reinstall firmware. - - - - + Capture Screenshot - + PNG Image (*.png) - + Update Available - - Download the %1 update? - - - - - TAS state: Running %1/%2 - - - - - TAS state: Recording %1 - - - - - TAS state: Idle %1/%2 - - - - - TAS State: Invalid - - - - - &Stop Running + + 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 - - %1 %2 - - - - + FSR - + NO AA - + VOLUME: MUTE - + VOLUME: %1% Volume percentage (e.g. 50%) - + Derivation Components Missing - - Encryption keys are 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. @@ -7635,69 +7973,79 @@ 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? - - - None - - FXAA @@ -7724,27 +8072,27 @@ Would you like to bypass this and exit anyway? - + Zero-Tangent - + B-Spline - + Mitchell - + Spline-1 - + Gaussian @@ -7780,17 +8128,17 @@ Would you like to bypass this and exit anyway? - Normal + Fast - High + Balanced - Extreme + Accurate @@ -7799,41 +8147,36 @@ Would you like to bypass this and exit anyway? - - OpenGL + + OpenGL GLSL - - Null + + OpenGL SPIRV - GLSL + OpenGL GLASM - GLASM - - - - - SPIRV + Null MigrationWorker - + 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. @@ -7844,7 +8187,7 @@ If this is not desirable, delete the following files: - + 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: @@ -7852,11 +8195,24 @@ If you wish to clean up the files which were left in the old data location, you - + Data was migrated successfully. + + ModSelectDialog + + + Dialog + + + + + The specified folder or archive contains the following mods. Select which ones to install. + + + ModerationDialog @@ -7981,6 +8337,135 @@ Tiếp tục? Bạn sắp rời khỏi phòng. Mọi kết nối mạng sẽ bị đóng. + + 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 + + + OverlayDialog @@ -8014,50 +8499,122 @@ 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 - - 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 - - - - - + + + Migration - + Clear Shader Cache @@ -8090,18 +8647,18 @@ p, li { white-space: pre-wrap; } - + You can manually re-trigger this prompt by deleting the new config directory: %1 - + Migrating - + Migrating, this may take a while... @@ -8483,15 +9040,60 @@ p, li { white-space: pre-wrap; } Hiện không chơi game - + %1 is not playing a game %1 hiện không chơi game - + %1 is playing %2 %1 đang chơi %2 + + + Play Time: %1 + + + + + Never Played + + + + + 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 + QtAmiiboSettingsDialog @@ -8609,250 +9211,250 @@ p, li { white-space: pre-wrap; } 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. @@ -8860,22 +9462,22 @@ Only do this if you're 100% sure you want to delete this data. QtCommon::FS - + Linked Save Data - + Save data has been linked. - + Failed to link save data - + Could not link directory: %1 To: @@ -8883,268 +9485,357 @@ To: - + 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. @@ -9152,83 +9843,83 @@ To: 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. Versions 19.0.1 or earlier are recommended, as 20.0.0+ is currently experimental. + + Firmware missing. Firmware is required to run certain games and use the Home Menu. @@ -9249,56 +9940,56 @@ 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. @@ -9339,7 +10030,7 @@ This is recommended if you want to share data between emulators. - + Pro Controller Pro Controller @@ -9352,7 +10043,7 @@ This is recommended if you want to share data between emulators. - + Dual Joycons Joycon đôi @@ -9365,7 +10056,7 @@ This is recommended if you want to share data between emulators. - + Left Joycon Joycon trái @@ -9378,7 +10069,7 @@ This is recommended if you want to share data between emulators. - + Right Joycon Joycon phải @@ -9407,7 +10098,7 @@ This is recommended if you want to share data between emulators. - + Handheld Handheld @@ -9528,32 +10219,32 @@ This is recommended if you want to share data between emulators. - + 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 @@ -9708,13 +10399,13 @@ 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ỏ @@ -9749,12 +10440,12 @@ By selecting "From Eden", previous save data stored in Ryujinx will be - + Failed to link save data - + OS returned error: %1 @@ -9790,45 +10481,9 @@ By selecting "From Eden", previous save data stored in Ryujinx will be - + Total play time reached maximum. - - fs - - - 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 - - - - \ No newline at end of file + diff --git a/dist/languages/vi_VN.ts b/dist/languages/vi_VN.ts index 9e09bf1c75..a588ef4952 100644 --- a/dist/languages/vi_VN.ts +++ b/dist/languages/vi_VN.ts @@ -30,7 +30,7 @@ li.checked::marker { content: "\2612"; } - <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/kXAmGCXBGD"><span style=" text-decoration: underline; color:#039be5;">Discord</span></a> | <a href="https://rvlt.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;">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;">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> @@ -368,390 +368,399 @@ This would ban both their forum username and their IP address. % - + 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 maximum of 4. This is mainly a debug option and shouldn't be disabled. - + Memory Layout - - Increases the amount of emulated RAM from 4GB of the board to the devkit 8/6GB. + + 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. 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. - - Synchronize Core Speed + + 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.). Can help reduce stuttering at lower framerates. - + Accuracy: Độ chính xác - + 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. - - Virtual Table Bouncing - - - - - Bounces (by emulating a 0-valued return) any functions that triggers a prefetch abort - - - - + 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 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ạ: - + Changes the output graphics API. Vulkan is recommended. - + Device: Thiết bị đồ hoạ: - + This setting selects the GPU to use (Vulkan only). - - Shader Backend: - Backend shader: - - - - The shader backend to use with OpenGL. -GLSL is recommended. - - - - + Resolution: Độ phân giải: - + 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 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 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 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 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 - + Runs an additional optimization pass over generated SPIRV shaders. Will increase time required for shader compilation. May slightly improve performance. @@ -759,35 +768,24 @@ 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. GPU: Use the GPU's compute shaders to decode ASTC textures (recommended). @@ -796,45 +794,55 @@ stuttering but may present artifacts. - + ASTC Recompression Method: - + 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. 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 allows tearing as it recovers from a slow down. Mailbox can have lower latency than FIFO and does not tear but may drop frames. @@ -842,1176 +850,1379 @@ Immediate (no synchronization) presents whatever is available and can exhibit te - + 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. Safe to set at 16x on most GPUs. - - GPU Accuracy: + + GPU Mode: - - Controls the 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 as a last resort. + + 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. - + DMA Accuracy: - + Controls the DMA precision accuracy. Safe precision fixes issues in some games but may degrade performance. - - Enable asynchronous shader compilation (Hack) + + Enable asynchronous shader compilation - + May reduce shader stutter. - - Fast GPU Time (Hack) + + 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 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) - + 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 numbers allow for more features and can increase performance, but may cause issues. -The default value is per-system. +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 some games. -Only Vulkan 1.0+ devices support this extension. + + Enables vertex input dynamic state feature for better quality and performance. - - Descriptor Indexing - - - - - Improves texture & buffer handling and the Maxwell translation layer. -Some Vulkan 1.1+ and all 1.2+ devices support this extension. - Cải thiện việc xử lý texture và bộ đệm buffer, cũng như lớp dịch Maxwell. -Một số thiết bị hỗ trợ Vulkan 1.1+ và tất cả thiết bị Vulkan 1.2+ đều hỗ trợ tiện ích mở rộng này. - - - + 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. - + Device Name Tên thiết bị - + The name of the console. - + Custom RTC Date: - + 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: - + This option can be overridden when region setting is auto-select - + Region: Vùng: - + The region of the console. - + Time Zone: Múi giờ: - + The time zone of the console. - + Sound Output Mode: Chế độ đầu ra âm thanh - + Console 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. - + + Unit Serial + + + + + Battery Serial + + + + + Debug knobs + + + + 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 - + 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 - + 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 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 - - - - - Default - Mặc định - - - - Unsafe (fast) - - - - - Safe (stable) - - - - + + 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 - + + + 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) - - Serbian (српски) + + 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) - + 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 - - 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 + + ConfigureApplets @@ -2083,7 +2294,7 @@ When a program attempts to open the controller applet, it is immediately closed. Khôi phục về mặc định - + Auto Tự động @@ -2534,46 +2745,86 @@ When a program attempts to open the controller applet, it is immediately closed. + Use dev.keys + + + + Enable Debug Asserts Bật kiểm tra lỗi gỡ lỗi - + Debugging Vá lỗi - + + 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. 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. - + 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** - + Censor username in logs - + **This will be reset automatically when Eden closes. @@ -2634,13 +2885,13 @@ When a program attempts to open the controller applet, it is immediately closed. - + Audio Âm thanh - + CPU CPU @@ -2656,13 +2907,13 @@ When a program attempts to open the controller applet, it is immediately closed. - + General Chung - + Graphics Đồ hoạ @@ -2673,7 +2924,7 @@ When a program attempts to open the controller applet, it is immediately closed. - GraphicsExtensions + GraphicsExtra @@ -2683,7 +2934,7 @@ When a program attempts to open the controller applet, it is immediately closed. - + Controls Phím @@ -2699,7 +2950,7 @@ When a program attempts to open the controller applet, it is immediately closed. - + System Hệ thống @@ -2739,9 +2990,10 @@ When a program attempts to open the controller applet, it is immediately closed. - - - + + + + ... ... @@ -2751,90 +3003,184 @@ When a program 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... + + + Save Data Directory + + + + + Choose an action for the save data directory: + + + + + 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? + + ConfigureGeneral @@ -2851,24 +3197,54 @@ When a program 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 - + 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 @@ -2898,33 +3274,33 @@ When a program 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 @@ -2942,7 +3318,7 @@ When a program attempts to open the controller applet, it is immediately closed. Nâng cao - + Advanced Graphics Settings Cài đặt đồ hoạ nâng cao @@ -2956,16 +3332,26 @@ When a program attempts to open the controller applet, it is immediately closed. - Extensions + Extras - - Vulkan Extensions Settings + + Hacks - + + Changing these options from their default may cause issues. Novitii cavete! + + + + + Vulkan Extensions + + + + % Sample Shading percentage (e.g. 50%) @@ -3543,7 +3929,7 @@ When a program attempts to open the controller applet, it is immediately closed. - + Left Stick Cần trái @@ -3653,14 +4039,14 @@ When a program attempts to open the controller applet, it is immediately closed. - + ZL ZL - + L L @@ -3673,22 +4059,22 @@ When a program attempts to open the controller applet, it is immediately closed. - + Plus Cộng - + ZR ZR - - + + R R @@ -3745,7 +4131,7 @@ When a program attempts to open the controller applet, it is immediately closed. - + Right Stick Cần phải @@ -3914,88 +4300,88 @@ Nếu muốn đảo ngược hướng cần điều khiển, di chuyển cần s 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 @@ -4018,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 @@ -4052,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 @@ -4082,103 +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://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> - - - - + %1:%2 %1:%2 + + - - - - - + + + Eden - + Port number has invalid characters Cổng có kí tự không hợp lệ - + 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. @@ -4309,11 +4676,6 @@ Các giá trị hiện tại lần lượt là %1% và %2%. Enable Airplane Mode - - - None - Trống - ConfigurePerGame @@ -4368,52 +4730,57 @@ 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 + + + + Properties Thuộc tính @@ -4431,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 @@ -4468,38 +4930,18 @@ Các giá trị hiện tại lần lượt là %1% và %2%. Username Tên - - - Set Image - Đặt Hình Ảnh - - Select Avatar - - - - 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)) @@ -4507,169 +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: - - - + 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 saving user image - + Unable to save image to file - - Select User Image - Chọn Ảnh cho Người Dùng - - - - Image Formats (*.jpg *.jpeg *.png *.bmp) + + &Edit - - No firmware available + + &Delete - - 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. - - - - - ConfigureProfileManagerAvatarDialog - - - Select - - - - - Cancel - - - - - Background Color - - - - - Select Firmware Avatar + + 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 @@ -4837,7 +5190,7 @@ 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> @@ -4871,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 - + ... ... @@ -4894,7 +5252,7 @@ UUID: %2 Cấu hình TAS - + Select TAS Load Directory... Chọn thư mục tải TAS @@ -5032,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 @@ -5158,71 +5495,66 @@ Kéo điểm để thay đổi vị trí, hoặc nhấp đúp chuột vào ô tr - 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) @@ -5356,20 +5688,20 @@ Kéo điểm để thay đổi vị trí, hoặc nhấp đúp chuột vào ô tr Hiển thị trò chơi hiện tại lên thông tin Discord của bạn - - + + All Good Tooltip - + Must be between 4-20 characters Tooltip - + Must be 48 characters, and lowercase a-z Tooltip @@ -5401,27 +5733,27 @@ Kéo điểm để thay đổi vị trí, hoặc nhấp đúp chuột vào ô tr - + Shaders - + UserNAND - + SysNAND - + Mods - + Saves @@ -5459,7 +5791,7 @@ Kéo điểm để thay đổi vị trí, hoặc nhấp đúp chuột vào ô tr - + Calculating... @@ -5482,12 +5814,12 @@ Kéo điểm để thay đổi vị trí, hoặc nhấp đúp chuột vào ô tr - + Dependency - + Version @@ -5661,44 +5993,44 @@ Please go to Configure -> System -> Network and make a selection. 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ợ. - + 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 @@ -5706,203 +6038,208 @@ Please go to Configure -> System -> Network and make a selection. 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 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 - + 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 @@ -5910,62 +6247,62 @@ Please go to Configure -> System -> Network and make a selection. 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ả. @@ -5973,7 +6310,7 @@ Please go to Configure -> System -> Network and make a selection. 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 @@ -5981,17 +6318,17 @@ Please go to Configure -> System -> Network and make a selection. GameListSearchField - + %1 of %n result(s) - + Filter: Bộ lọc: - + Enter pattern to filter Nhập khuôn để lọc @@ -6067,12 +6404,12 @@ Please go to Configure -> System -> Network and make a selection. 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. Debug Message: @@ -6081,189 +6418,207 @@ Debug Message: 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 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 @@ -6316,22 +6671,22 @@ Debug Message: 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 @@ -6380,42 +6735,42 @@ Debug Message: 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 @@ -6464,1171 +6819,1153 @@ Debug Message: + &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ụ - + Am&iibo - - &Applets + + 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 - + 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 - + &Capture Screenshot &Chụp ảnh màn hình - - - Open &Album - - - - - &Set Nickname and Owner - - - - - &Delete Game Data - - - &Restore Amiibo + &Album - &Format Amiibo + &Set Nickname and Owner - Open &Mii Editor + &Delete Game Data + &Restore Amiibo + + + + + &Format Amiibo + + + + + &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 Decryption &Keys - - Open &Home Menu + + &Home Menu - - Open &Setup - - - - + &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.<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>. + + 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><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. + + 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/Revolt for help. + + %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 - - Please install firmware to use the Album applet. - - - - - Album Applet - - - - - Album applet is not available. Please reinstall firmware. - - - - - Please install firmware to use the Cabinet applet. - - - - - Cabinet Applet - - - - - Cabinet applet is not available. Please reinstall firmware. - - - - - Please install firmware to use the Mii editor. - - - - - Mii Edit Applet - - - - - Mii editor is not available. Please reinstall firmware. - - - - - Please install firmware to use the Controller Menu. - - - - - Controller Applet - - - - - Controller Menu is not available. Please reinstall firmware. - - - - + Firmware Corrupted - - Home Menu Applet + + Unknown applet - - Home Menu is not available. Please reinstall firmware. + + Applet doesn't map to a known value. - - Please install firmware to use Starter. + + Record not found - - Starter Applet + + Applet not found. Please reinstall firmware. - - Starter is not available. Please reinstall firmware. - - - - + Capture Screenshot - + PNG Image (*.png) - + Update Available - - Download the %1 update? - - - - - TAS state: Running %1/%2 - - - - - TAS state: Recording %1 - - - - - TAS state: Idle %1/%2 - - - - - TAS State: Invalid - - - - - &Stop Running + + 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 - - %1 %2 - - - - + FSR - + NO AA - + VOLUME: MUTE - + VOLUME: %1% Volume percentage (e.g. 50%) - + Derivation Components Missing - - Encryption keys are 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. @@ -7636,69 +7973,79 @@ 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? - - - None - - FXAA @@ -7725,27 +8072,27 @@ Would you like to bypass this and exit anyway? - + Zero-Tangent - + B-Spline - + Mitchell - + Spline-1 - + Gaussian @@ -7781,17 +8128,17 @@ Would you like to bypass this and exit anyway? - Normal + Fast - High + Balanced - Extreme + Accurate @@ -7800,41 +8147,36 @@ Would you like to bypass this and exit anyway? - - OpenGL + + OpenGL GLSL - - Null + + OpenGL SPIRV - GLSL + OpenGL GLASM - GLASM - - - - - SPIRV + Null MigrationWorker - + 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. @@ -7845,7 +8187,7 @@ If this is not desirable, delete the following files: - + 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: @@ -7853,11 +8195,24 @@ If you wish to clean up the files which were left in the old data location, you - + Data was migrated successfully. + + ModSelectDialog + + + Dialog + + + + + The specified folder or archive contains the following mods. Select which ones to install. + + + ModerationDialog @@ -7982,6 +8337,135 @@ Tiếp tục? Bạn sắp rời khỏi phòng. Mọi kết nối mạng sẽ bị đóng. + + 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 + + + OverlayDialog @@ -8015,50 +8499,122 @@ 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 - - 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 - - - - - + + + Migration - + Clear Shader Cache @@ -8091,18 +8647,18 @@ p, li { white-space: pre-wrap; } - + You can manually re-trigger this prompt by deleting the new config directory: %1 - + Migrating - + Migrating, this may take a while... @@ -8484,15 +9040,60 @@ p, li { white-space: pre-wrap; } Hiện không chơi game - + %1 is not playing a game %1 hiện không chơi game - + %1 is playing %2 %1 đang chơi %2 + + + Play Time: %1 + + + + + Never Played + + + + + 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 + QtAmiiboSettingsDialog @@ -8610,250 +9211,250 @@ p, li { white-space: pre-wrap; } 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. @@ -8861,22 +9462,22 @@ Only do this if you're 100% sure you want to delete this data. QtCommon::FS - + Linked Save Data - + Save data has been linked. - + Failed to link save data - + Could not link directory: %1 To: @@ -8884,268 +9485,357 @@ To: - + 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. @@ -9153,83 +9843,83 @@ To: 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. Versions 19.0.1 or earlier are recommended, as 20.0.0+ is currently experimental. + + Firmware missing. Firmware is required to run certain games and use the Home Menu. @@ -9250,56 +9940,56 @@ 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. @@ -9340,7 +10030,7 @@ This is recommended if you want to share data between emulators. - + Pro Controller Tay cầm Pro Controller @@ -9353,7 +10043,7 @@ This is recommended if you want to share data between emulators. - + Dual Joycons Joycon đôi @@ -9366,7 +10056,7 @@ This is recommended if you want to share data between emulators. - + Left Joycon Joycon Trái @@ -9379,7 +10069,7 @@ This is recommended if you want to share data between emulators. - + Right Joycon Joycon Phải @@ -9408,7 +10098,7 @@ This is recommended if you want to share data between emulators. - + Handheld Cầm tay @@ -9529,32 +10219,32 @@ This is recommended if you want to share data between emulators. - + 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 @@ -9709,13 +10399,13 @@ 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ỏ @@ -9750,12 +10440,12 @@ By selecting "From Eden", previous save data stored in Ryujinx will be - + Failed to link save data - + OS returned error: %1 @@ -9791,45 +10481,9 @@ By selecting "From Eden", previous save data stored in Ryujinx will be - + Total play time reached maximum. - - fs - - - 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 - - - - \ No newline at end of file + diff --git a/dist/languages/zh_CN.ts b/dist/languages/zh_CN.ts index e1c5848d3e..6fb006631b 100644 --- a/dist/languages/zh_CN.ts +++ b/dist/languages/zh_CN.ts @@ -37,8 +37,8 @@ li.checked::marker { content: "\2612"; } - <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/kXAmGCXBGD"><span style=" text-decoration: underline; color:#039be5;">Discord</span></a> | <a href="https://rvlt.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;">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/kXAmGCXBGD"><span style=" text-decoration: underline; color:#039be5;">Discord</span></a> | <a href="https://rvlt.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;">许可</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> @@ -375,141 +375,151 @@ This would ban both their forum username and their IP address. % - + 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 内置的覆盖层小程序。请按住 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 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 4GB of the board to the devkit 8/6GB. + + Increases the amount of emulated RAM. Doesn't affect performance/stability but may allow HD texture mods to load. - 将模拟RAM从Switch实机的4GB增加到开发机的6/8GB。 -不会提高性能,但可以改善高清材质mod的兼容性。 + 增加模拟内存的容量。 +不影响性能或稳定性,但可能对加载高清贴图模组有帮助。 - + Limit Speed Percent 运行速度限制 - + 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. @@ -518,40 +528,60 @@ 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 同步 CPU 核心速度 - + 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: 精度: - + Change the accuracy of the emulated CPU (for debugging only). 更改模拟 CPU 的精度(仅供调试使用)。 - - + + Backend: 后端: - - Fast CPU Time - 快速 CPU 时间 + + 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 可能会出现性能下降,某些游戏也可能会出现异常行为。 @@ -561,32 +591,22 @@ 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。 - - Virtual Table Bouncing - 虚拟表返回 - - - - Bounces (by emulating a 0-valued return) any functions that triggers a prefetch abort - 通过模拟返回值为 0 的方式使任何触发预取中止的函数返回 - - - + 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. @@ -595,112 +615,100 @@ Disabling this forces all memory accesses to use Software MMU Emulation. - + 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 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: - + Changes the output graphics API. Vulkan is recommended. 更改图形输出的 API。 推荐使用 Vulkan。 - + Device: 设备: - + This setting selects the GPU to use (Vulkan only). 设置Vulkan下使用的GPU。 - - Shader Backend: - 着色器后端: - - - - The shader backend to use with OpenGL. -GLSL is recommended. - 与 OpenGL 一起使用的着色器后端。 -推荐 GLSL, - - - + Resolution: 分辨率: - + Forces to render at a different resolution. Higher resolutions require more VRAM and bandwidth. Options lower than 1X can cause artifacts. @@ -709,27 +717,27 @@ Options lower than 1X can cause artifacts. 低于 1X 的选项可能造成渲染问题。 - + Window Adapting Filter: 窗口滤镜: - + FSR Sharpness: 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 can produce a more stable picture in lower resolutions. @@ -738,12 +746,12 @@ 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. @@ -752,12 +760,12 @@ Exclusive fullscreen may offer better performance and better Freesync/Gsync supp 独占全屏提供更好的性能和 Freesync/Gsync 支持。 - + Aspect Ratio: 屏幕纵横比: - + 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. @@ -766,24 +774,24 @@ Also controls the aspect ratio of captured screenshots. 此设置同时控制捕获截图的高宽比。 - + 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 优化 SPIRV 输出 - + Runs an additional optimization pass over generated SPIRV shaders. Will increase time required for shader compilation. May slightly improve performance. @@ -792,24 +800,12 @@ This feature is experimental. 实验性功能。也许会略微提升性能,但会增加着色器编译所需的时间。 - - 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. @@ -818,12 +814,12 @@ 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. GPU: Use the GPU's compute shaders to decode ASTC textures (recommended). @@ -836,12 +832,12 @@ CPU 异步模拟:使用 CPU 在 ASTC 纹理到达时对其进行解码。 消除 ASTC 解码带来的卡顿,但在解码时可能出现渲染问题。 - + ASTC Recompression Method: ASTC 纹理重压缩方式: - + 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. @@ -850,34 +846,44 @@ 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. 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 allows tearing as it recovers from a slow down. Mailbox can have lower latency than FIFO and does not tear but may drop frames. @@ -888,12 +894,12 @@ 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. @@ -902,104 +908,148 @@ 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. Safe to set at 16x on most GPUs. 控制在斜角下纹理渲染的质量。 大多数 GPU 上设置为 16 倍是安全的。 - - GPU Accuracy: - GPU 精度: + + GPU Mode: + GPU 模式: - - Controls the 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 as a last resort. - 控制 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 模拟的精确度。大部分游戏在性能或平衡模式下可以正常渲染,但部分游戏需要设置为精确。粒子效果通常只有在精确模式下才能正确显示。 - + DMA Accuracy: DMA 精度: - + Controls the DMA precision accuracy. Safe precision fixes issues in some games but may degrade performance. 控制 DMA 精度。安全精度可修复某些游戏中的问题,但可能会降低性能。 - - Enable asynchronous shader compilation (Hack) - 开启异步着色器编译 (Hack) + + Enable asynchronous shader compilation + 开启异步着色器编译 - + May reduce shader stutter. 可能减少着色器卡顿。 - - Fast GPU Time (Hack) - 快速 GPU 时间(Hack) + + Fast GPU Time + GPU 超频频率 - + Overclocks the emulated GPU to increase dynamic resolution and render distance. -Use 128 for maximal performance and 512 for maximal graphics fidelity. - 对模拟的 GPU 进行超频,以提升动态分辨率和渲染距离。 -设置为 128 可获得最佳性能、512 可获得最高画质。 +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 模式) - + 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. @@ -1008,165 +1058,183 @@ 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 numbers allow for more features and can increase performance, but may cause issues. -The default value is per-system. - 控制在扩展动态状态中可使用的函数数量。 -数字越大,可用函数越多并且可能提高性能,但也可能导致问题。 -默认值因系统而异。 +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 some games. -Only Vulkan 1.0+ devices support this extension. - 改善某些游戏中的照明和顶点处理。仅 Vulkan 1.0 设备支持此扩展。 + + Enables vertex input dynamic state feature for better quality and performance. + 开启顶点输入动态状态功能来获得更好的质量和性能。 - - Descriptor Indexing - 描述符索引 - - - - Improves texture & buffer handling and the Maxwell translation layer. -Some Vulkan 1.1+ and all 1.2+ devices support this extension. - 改进了纹理和缓冲处理以及 Maxwell 翻译层。 -部分 Vulkan 1.1 设备和所有 1.2 设备支持此扩展。 - - - + 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. 控制随机数生成器的种子。 主要用于竞速游戏。 - + Device Name 设备名称 - + The name of the console. 主机的数量。 - + Custom RTC Date: 自定义系统时间: - + 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: 语言: - + This option can be overridden when region setting is auto-select 当区域设置为自动选择时可以使用此选项替代。 - + Region: 地区: - + The region of the console. 主机的区域。 - + Time Zone: 时区: - + The time zone of the console. 主机的时区。 - + Sound Output Mode: 声音输出模式: - + Console 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. @@ -1175,908 +1243,1049 @@ Setting to Handheld can help improve performance for low end systems. 将设置为掌机模式可以帮助低端系统提高性能。 - + + Unit Serial + 单元序列号: + + + + Battery Serial + 电池序列号: + + + + Debug knobs + 调试开关 + + + Prompt for user profile on boot 启动时提示选择用户账户 - + Useful if multiple people use the same PC. 在多人使用相同的 PC 时有效。 - + Pause when not in focus 在丢失焦点时暂停 - + Pauses emulation when focusing on other windows. 当焦点位于其它窗口时暂停模拟器。 - + Confirm before stopping emulation 停止模拟时需要确认 - + Overrides prompts asking to confirm stopping the emulation. Enabling it bypasses such prompts and directly exits the emulation. 替代提示以确认停止模拟。 启用它将绕过此类提示并直接退出模拟。 - + Hide mouse on inactivity 自动隐藏鼠标光标 - + Hides the mouse after 2.5s of inactivity. 在 2.5 秒无活动后隐藏鼠标。 - + Disable controller applet 禁用控制器小程序 - + 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 - 极高 - - - - - Default - 系统默认 - - - - Unsafe (fast) - 不安全(快速) - - - - Safe (stable) - 安全(稳定) - - - + + 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 高精度 - + + + 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) - - Serbian (српски) - 塞尔维亚语 (српски) + + 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+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 (不安全) - + Docked 主机模式 - + Handheld 掌机模式 - + + + Off + 关闭 + + + Boost (1700MHz) 加速 (1700MHz) - + Fast (2000MHz) 快速 (2000MHz) - + Always ask (Default) 总是询问 (默认) - + Only if game specifies not to stop 仅当游戏不希望停止时 - + Never ask 从不询问 - - Low (128) - 低(128) - - - + + 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 @@ -2148,7 +2357,7 @@ When a program attempts to open the controller applet, it is immediately closed. 恢复默认 - + Auto 自动 @@ -2599,46 +2808,86 @@ When a program attempts to open the controller applet, it is immediately closed. + Use dev.keys + 使用 dev.keys + + + Enable Debug Asserts 启用调试断言 - + Debugging 调试选项 - + + Battery Serial: + 电池序列号: + + + + 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. 启用此选项会将最新的音频命令列表输出到控制台。只影响使用音频渲染器的游戏。 - + 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. **这会在 Eden 关闭时自动重置。 @@ -2699,13 +2948,13 @@ When a program attempts to open the controller applet, it is immediately closed. - + Audio 声音 - + CPU CPU @@ -2721,13 +2970,13 @@ When a program attempts to open the controller applet, it is immediately closed. - + General 通用 - + Graphics 图形 @@ -2738,8 +2987,8 @@ When a program attempts to open the controller applet, it is immediately closed. - GraphicsExtensions - 图形扩展 + GraphicsExtra + 图形增强 @@ -2748,7 +2997,7 @@ When a program attempts to open the controller applet, it is immediately closed. - + Controls 控制 @@ -2764,7 +3013,7 @@ When a program attempts to open the controller applet, it is immediately closed. - + System 系统 @@ -2804,9 +3053,10 @@ When a program attempts to open the controller applet, it is immediately closed. - - - + + + + ... ... @@ -2816,90 +3066,184 @@ When a program 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 载入目录... + + + Save Data Directory + 选择存档目录 + + + + Choose an action for the save data directory: + 为存档目录选择一个操作: + + + + 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? + 存档已成功迁移。是否要删除旧存档数据? + ConfigureGeneral @@ -2916,24 +3260,54 @@ When a program 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 重置所有设置项 - + 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 @@ -2963,33 +3337,33 @@ When a program attempts to open the controller applet, it is immediately closed. 背景颜色: - + % FSR sharpening percentage (e.g. 50%) % - + Off 关闭 - + VSync Off 垂直同步关 - + Recommended 推荐 - + On 开启 - + VSync On 垂直同步开 @@ -3007,7 +3381,7 @@ When a program attempts to open the controller applet, it is immediately closed. 高级 - + Advanced Graphics Settings 高级图形选项 @@ -3021,16 +3395,26 @@ When a program attempts to open the controller applet, it is immediately closed. - Extensions - 扩展 + Extras + 额外 - - Vulkan Extensions Settings - Vulkan 扩展设置 + + Hacks + Hacks - + + Changing these options from their default may cause issues. Novitii cavete! + 更改这些选项可能会导致问题。新手小心! + + + + Vulkan Extensions + Vulkan 扩展 + + + % Sample Shading percentage (e.g. 50%) % @@ -3608,7 +3992,7 @@ When a program attempts to open the controller applet, it is immediately closed. - + Left Stick 左摇杆 @@ -3718,14 +4102,14 @@ When a program attempts to open the controller applet, it is immediately closed. - + ZL ZL - + L L @@ -3738,22 +4122,22 @@ When a program attempts to open the controller applet, it is immediately closed. - + Plus - + ZR ZR - - + + R R @@ -3810,7 +4194,7 @@ When a program attempts to open the controller applet, it is immediately closed. - + Right Stick 右摇杆 @@ -3979,88 +4363,88 @@ To invert the axes, first move your joystick vertically, and then horizontally.< 世嘉创世纪 - + 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" 失败 @@ -4083,15 +4467,6 @@ To invert the axes, first move your joystick vertically, and then horizontally.< 系统默认 - - ConfigureLinuxTab - - - - Linux - Linux - - ConfigureMotionTouch @@ -4117,7 +4492,7 @@ To invert the axes, first move your joystick vertically, and then horizontally.< - + Configure 设置 @@ -4147,103 +4522,93 @@ To invert the axes, first move your joystick vertically, and then horizontally.< 端口: - - Learn More - 了解更多 - - - - + + Test 测试 - + Add Server 添加服务器 - + Remove Server 移除服务器 - - <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> - <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;">了解更多</span></a> - - - + %1:%2 %1:%2 + + - - - - - + + + Eden Eden - + Port number has invalid characters 端口号中包含无效字符 - + 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>请耐心等待。 @@ -4374,11 +4739,6 @@ Current values are %1% and %2% respectively. Enable Airplane Mode 启用飞行模式 - - - None - - ConfigurePerGame @@ -4433,52 +4793,57 @@ Current values are %1% and %2% respectively. 只有当游戏不在运行时,某些设置项才可用。 - + Add-Ons 附加项 - + System 系统 - + CPU CPU - + Graphics 图形 - + Adv. Graphics 高级图形 - - GPU Extensions - GPU 扩展 + + Ext. Graphics + 扩展图形 - + Audio 声音 - + Input Profiles 输入配置文件 - - Linux - Linux + + Network + 网络 - + + Applets + 小程序 + + + Properties 属性 @@ -4496,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 @@ -4533,38 +4997,18 @@ Current values are %1% and %2% respectively. Username 用户名 - - - Set Image - 设置图像 - - Select Avatar - 选择头像 - - - 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)) @@ -4572,169 +5016,80 @@ Current values are %1% and %2% respectively. %2 - - Enter Username - 输入用户名 - - - + Users 用户 - - Enter a username for the new user: - 输入新用户的用户名: - - - - Enter a new username: - 输入新的用户名: - - - + 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 saving user image 保存用户图像错误 - + Unable to save image to file 无法保存图像到文件 - - Select User Image - 选择用户图像 + + &Edit + 编辑 (&E) - - Image Formats (*.jpg *.jpeg *.png *.bmp) - 图像格式 (*.jpg *.jpeg *.png *.bmp) + + &Delete + 删除 (&D) - - 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. - 在档案找找不到头像图像。 - - - - ConfigureProfileManagerAvatarDialog - - - Select - 选择 - - - - Cancel - 取消 - - - - Background Color - 背景颜色 - - - - Select Firmware Avatar - 选择固件自带头像 + + Edit User + 编辑用户 ConfigureProfileManagerDeleteDialog - + Delete this user? All of the user's save data will be deleted. 删除此用户?此用户保存的所有数据都将被删除。 - + Confirm Delete 确认删除 - + Name: %1 UUID: %2 名称: %1 @@ -4902,8 +5257,8 @@ 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>以与 TAS-nx 脚本相同的格式从脚本中读取控制器输入<br/>如需更详细的说明请访问 Eden 网站上的<a href="https://eden-emulator.github.io/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 user handbook.</p></body></html> + <html><head/><body><p>使用与 TAS-nx 脚本相同的格式从脚本中读取控制器输入。<br/>如需更详细的说明,请参阅用户手册。</p></body></html> @@ -4936,17 +5291,22 @@ UUID: %2 遇到载入画面时暂停执行 - + + Show recording dialog + + + + Script Directory 脚本目录 - + Path 路径 - + ... ... @@ -4959,7 +5319,7 @@ UUID: %2 TAS 设置 - + Select TAS Load Directory... 选择 TAS 载入目录... @@ -5097,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 游戏名称 @@ -5223,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) @@ -5421,20 +5755,20 @@ Drag points to change position, or double-click table cells to edit values.在您的 Discord 状态中显示当前游戏 - - + + All Good Tooltip 全部正常 - + Must be between 4-20 characters Tooltip 必须在4-20个字符之间 - + Must be 48 characters, and lowercase a-z Tooltip 必须为48个字符,且a-z为小写 @@ -5466,27 +5800,27 @@ Drag points to change position, or double-click table cells to edit values.删除任何数据都是不可逆的! - + Shaders 着色器 - + UserNAND 用户 NAND - + SysNAND 系统 NAND - + Mods Mod - + Saves 存档 @@ -5524,7 +5858,7 @@ Drag points to change position, or double-click table cells to edit values.导入此目录的数据。这可能需要一些时间,并且会删除所有现有数据! - + Calculating... 正在计算... @@ -5547,12 +5881,12 @@ Drag points to change position, or double-click table cells to edit values.<html><head/><body><p>让 Eden 成为可能的项目</p></body></html> - + Dependency 依赖项 - + Version 版本 @@ -5727,44 +6061,44 @@ Please go to Configure -> System -> Network and make a selection. GRenderWindow - - + + OpenGL not available! OpenGL 模式不可用! - + OpenGL shared contexts are not supported. 不支持 OpenGL 共享上下文。 - + Eden has not been compiled with OpenGL support. Eden 尚未编译为支持 OpenGL。 - - + + 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 @@ -5772,203 +6106,208 @@ Please go to Configure -> System -> Network and make a selection. 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 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 配置游戏 - + Scan Subfolders 扫描子文件夹 - + Remove Game Directory 移除游戏目录 - + ▲ Move Up ▲ 向上移动 - + ▼ Move Down ▼ 向下移动 - + Open Directory Location 打开目录位置 - + Clear 清除 - + Name 名称 - + Compatibility 兼容性 - + Add-ons 附加项 - + File type 文件类型 - + Size 大小 - + Play time 游玩时间 @@ -5976,62 +6315,62 @@ Please go to Configure -> System -> Network and make a selection. 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. 游戏尚未经过测试。 @@ -6039,7 +6378,7 @@ Please go to Configure -> System -> Network and make a selection. GameListPlaceholder - + Double-click to add a new folder to the game list 双击添加新的游戏文件夹 @@ -6047,17 +6386,17 @@ Please go to Configure -> System -> Network and make a selection. GameListSearchField - + %1 of %n result(s) %n个结果中的第%1个 - + Filter: 搜索: - + Enter pattern to filter 搜索游戏 @@ -6133,12 +6472,12 @@ Please go to Configure -> System -> Network and make a selection. 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. Debug Message: @@ -6147,189 +6486,207 @@ 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 - 更改 GPU 精度 + + Change GPU Mode + 更改 GPU 模式 - + Configure 配置 - + Configure Current Game 配置当前游戏 - + Continue/Pause Emulation 继续/暂停模拟 - + Exit Fullscreen 退出全屏 - + Exit Eden 退出 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 @@ -6382,22 +6739,22 @@ Debug Message: 所需时间: 5 分 4 秒 - + Loading... 加载中... - + Loading Shaders %1 / %2 正在加载着色器: %1 / %2 - + Launching... 启动中... - + Estimated Time %1 所需时间: %1 @@ -6446,42 +6803,42 @@ Debug Message: 刷新游戏大厅 - + Password Required to Join 需要密码 - + Password: 密码: - + Players 玩家数 - + Room Name 房间名称 - + Preferred Game 首选游戏 - + Host 房主 - + Refreshing 刷新中 - + Refresh List 刷新列表 @@ -6530,946 +6887,1003 @@ Debug Message: + &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) - + Am&iibo Am&iibo - - &Applets - 小程序(&A) + + 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 关于 Eden(&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) - + &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 Decryption &Keys 安装解密密钥(&K) - - Open &Home Menu - 打开主页菜单(&H) + + &Home Menu + 主页 (&H) - - Open &Setup - 打开设置(&S) - - - + &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.<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>. - 启动时初始化 Vulkan 失败。<br><br>点击 <a href='https://eden-emulator.github.io/wiki/faq/#yuzu-starts-with-the-error-broken-vulkan-installation-detected'>这里获取修复此问题的指导</a>。 + + 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><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. - 您正在为此游戏使用解包 ROM 目录格式,这是一种已过时的格式,已被 NCA、NAX、XCI 或 NSP 等其他格式取代。解包 ROM 目录缺少图标、元数据和更新支持。<br><br>关于 Eden 支持的各种 Switch 格式的说明, <a href='https://eden-emulator.github.io/wiki/overview-of-switch-game-formats'>请查看我们的维基</a>。此消息将不再显示。 + + 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/Revolt for help. + + %1<br>Please redump your files or ask on Discord/Stoat for help. %1 signifies an error string. - %1<br>请重新导出您的文件,或在 Discord/Revolt 上寻求帮助。</br> + %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可传输着色器缓存吗? + 要删除 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 @@ -7478,230 +7892,155 @@ OS reported error: %1 操作系统报告错误: %1 - - - - - - + No firmware available 没有可用的固件 - - Please install firmware to use the Album applet. - 请安装固件以使用相册小程序。 - - - - Album Applet - 相册小程序 - - - - Album applet is not available. Please reinstall firmware. - 相册小程序不可用。请重新安装固件。 - - - - Please install firmware to use the Cabinet applet. - 请安装固件以使用设置小程序。 - - - - Cabinet Applet - 设置小程序 - - - - Cabinet applet is not available. Please reinstall firmware. - 设置小程序不可用。请重新安装固件。 - - - - Please install firmware to use the Mii editor. - 请安装固件以使用 Mii 编辑器。 - - - - Mii Edit Applet - Mii 编辑小程序 - - - - Mii editor is not available. Please reinstall firmware. - Mii 编辑器不可用。请重新安装固件。 - - - - Please install firmware to use the Controller Menu. - 请安装固件以使用控制器菜单。 - - - - Controller Applet - 控制器小程序 - - - - Controller Menu is not available. Please reinstall firmware. - 控制器菜单不可用。请重新安装固件。 - - - + Firmware Corrupted 固件已损坏 - - Home Menu Applet - 主菜单小程序 + + Unknown applet + 未知小程序 - - Home Menu is not available. Please reinstall firmware. - 主菜单不可用。请重新安装固件。 + + Applet doesn't map to a known value. + 无法识别该小程序对应的值。 - - Please install firmware to use Starter. - 请安装固件以使用入门。 + + Record not found + 找不到记录程序 - - Starter Applet - 入门小程序 + + Applet not found. Please reinstall firmware. + 找不到小程序。请重新安装固件。 - - Starter is not available. Please reinstall firmware. - 启动器不可用。请重新安装固件。 - - - + Capture Screenshot 截取屏幕截图 - + PNG Image (*.png) PNG 图像 (*.png) - + Update Available 有可用更新 - - Download the %1 update? - 要下载 %1 更新吗? + + 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 - - %1 %2 - %1 %2 - - - + FSR FSR - + NO AA 无 AA - + VOLUME: MUTE 音量: 静音 - + VOLUME: %1% Volume percentage (e.g. 50%) 音量: %1% - + Derivation Components Missing 缺少派生组件 - - Encryption keys are 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. @@ -7712,59 +8051,74 @@ Would you like to force it for future launches? 您想要在未来的启动中强制执行吗? - + 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? @@ -7772,11 +8126,6 @@ Would you like to bypass this and exit anyway? 您想要绕过并退出吗? - - - None - - FXAA @@ -7803,27 +8152,27 @@ Would you like to bypass this and exit anyway? 双三次 - + Zero-Tangent 零切线 - + B-Spline B-Spline - + Mitchell Mitchell - + Spline-1 Spline-1 - + Gaussian Gaussian @@ -7859,18 +8208,18 @@ Would you like to bypass this and exit anyway? - Normal - 正常 + Fast + 加速 - High - + Balanced + 平衡 - Extreme - 极端 + Accurate + 精确 @@ -7878,42 +8227,37 @@ Would you like to bypass this and exit anyway? Vulkan - - OpenGL - OpenGL + + OpenGL GLSL + OpenGL GLSL - - Null - + + OpenGL SPIRV + OpenGL SPIRV - GLSL - GLSL + OpenGL GLASM + OpenGL GLASM - GLASM - GLASM - - - - SPIRV - SPIRV + Null + MigrationWorker - + 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. @@ -7930,7 +8274,7 @@ If this is not desirable, delete the following files: %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: @@ -7941,11 +8285,24 @@ If you wish to clean up the files which were left in the old data location, you %1 - + Data was migrated successfully. 数据已成功迁移。 + + ModSelectDialog + + + Dialog + 对话框 + + + + The specified folder or archive contains the following mods. Select which ones to install. + 指定的文件夹或归档包含以下模组。选择安装哪些。 + + ModerationDialog @@ -8070,6 +8427,135 @@ Proceed anyway? 您正要离开房间。所有的网络连接都将关闭。 + + NewUserDialog + + + + 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 个字符 + + OverlayDialog @@ -8103,50 +8589,122 @@ 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 - - Installed SD Titles - SD 卡中安装的项目 - - - - Installed NAND Titles - NAND 中安装的项目 - - - - System Titles - 系统项目 - - - - Add New Game Directory - 添加游戏目录 - - - - Favorites - 收藏 - - - - - + + + Migration 迁移 - + Clear Shader Cache 清除着色器缓存 @@ -8181,19 +8739,19 @@ p, li { white-space: pre-wrap; } - + You can manually re-trigger this prompt by deleting the new config directory: %1 您可以通过删除新建的配置目录来重新触发此提示: %1 - + Migrating 迁移中 - + Migrating, this may take a while... 迁移中,可能需要一段时间,请稍候…… @@ -8575,15 +9133,60 @@ p, li { white-space: pre-wrap; } 不在玩游戏 - + %1 is not playing a game %1 不在玩游戏 - + %1 is playing %2 %1 正在玩 %2 + + + Play Time: %1 + 游玩时间:%1 + + + + Never Played + 未曾游玩 + + + + 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 + 收藏 + QtAmiiboSettingsDialog @@ -8701,47 +9304,47 @@ p, li { white-space: pre-wrap; } 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 @@ -8750,204 +9353,204 @@ p, li { white-space: pre-wrap; } %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. 请确认是否您具有目标目录的读取权限然后再次尝试。 @@ -8955,22 +9558,22 @@ Only do this if you're 100% sure you want to delete this data. QtCommon::FS - + Linked Save Data 链接存档数据 - + Save data has been linked. 已链接存档数据。 - + Failed to link save data 链接存档数据失败 - + Could not link directory: %1 To: @@ -8981,268 +9584,359 @@ 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 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 目录具有写入权限。 @@ -9250,89 +9944,89 @@ To: 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. Versions 19.0.1 or earlier are recommended, as 20.0.0+ is currently experimental. - + + 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. - + 固件已报告存在,但无法读取。如有必要请检查解密密钥并重新转储固件。 @@ -9349,60 +10043,60 @@ 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. 在旧目录和 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。 @@ -9443,7 +10137,7 @@ This is recommended if you want to share data between emulators. - + Pro Controller Pro 控制器 @@ -9456,7 +10150,7 @@ This is recommended if you want to share data between emulators. - + Dual Joycons 双 Joycons 手柄 @@ -9469,7 +10163,7 @@ This is recommended if you want to share data between emulators. - + Left Joycon 左 Joycon 手柄 @@ -9482,7 +10176,7 @@ This is recommended if you want to share data between emulators. - + Right Joycon 右 Joycon 手柄 @@ -9511,7 +10205,7 @@ This is recommended if you want to share data between emulators. - + Handheld 掌机模式 @@ -9632,32 +10326,32 @@ This is recommended if you want to share data between emulators. 控制器数量不足 - + GameCube Controller GameCube 控制器 - + Poke Ball Plus 精灵球 PLUS - + NES Controller NES 控制器 - + SNES Controller SNES 控制器 - + N64 Controller N64 控制器 - + Sega Genesis 世嘉创世纪 @@ -9812,13 +10506,13 @@ 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 取消 @@ -9855,12 +10549,12 @@ By selecting "From Eden", previous save data stored in Ryujinx will be 取消 - + Failed to link save data 链接存档数据失败 - + OS returned error: %1 OS 返回错误: %1 @@ -9896,47 +10590,9 @@ By selecting "From Eden", previous save data stored in Ryujinx will be 秒: - + Total play time reached maximum. 总计游戏时间已到达最大值。 - - fs - - - 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 存档数据 - - - \ No newline at end of file + diff --git a/dist/languages/zh_TW.ts b/dist/languages/zh_TW.ts index 7559a0169e..4227f7500d 100644 --- a/dist/languages/zh_TW.ts +++ b/dist/languages/zh_TW.ts @@ -33,17 +33,17 @@ 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> +<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://discord.gg/kXAmGCXBGD"><span style=" text-decoration: underline; color:#039be5;">Discord</span></a> | <a href="https://rvlt.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;">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;">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;任天堂Switch&quot; 是任天堂的商標,Eden跟任天堂沒有任何關係</span></p></body></html> @@ -187,12 +187,12 @@ This would ban both their forum username and their IP address. Room Description - 房間敘述 + 房間介紹 Moderation... - 審核中... + 房主審核中... @@ -375,141 +375,150 @@ This would ban both their forum username and their IP address. % - + 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. + + + + 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 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 4GB of the board to the devkit 8/6GB. + + Increases the amount of emulated RAM. Doesn't affect performance/stability but may allow HD texture mods to load. - 將模擬的RAM從4GB提升至Switch開發機的6GB或8GB -此設定不會影響效能和穩定性,但可能有助於使用高畫質模組的遊戲載入 + - + Limit Speed Percent 執行速度限制 - + 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. @@ -518,72 +527,82 @@ 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.). Can help reduce stuttering at lower framerates. 將CPU核心的速度與遊戲所能到達的最大渲染速度同步,以在不改變遊戲實際速度的情況下提高FPS 可在較低FPS時減少卡頓的情況 - + Accuracy: 準確度: - + Change the accuracy of the emulated CPU (for debugging only). 改變模擬CPU的準確度(僅限偵錯用) - - + + Backend: 後端: - - Fast CPU Time - 快速CPU時間 + + 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。 - - Virtual Table Bouncing - - - - - Bounces (by emulating a 0-valued return) any functions that triggers a prefetch abort - - - - + 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. @@ -592,112 +611,100 @@ 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上的運行速度 - + 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 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: - + Changes the output graphics API. Vulkan is recommended. 更改使用的圖形API 推薦使用Vulkan - + Device: 裝置: - + This setting selects the GPU to use (Vulkan only). 選擇要使用的GPU(僅限Vulkan) - - Shader Backend: - 著色器後端: - - - - The shader backend to use with OpenGL. -GLSL is recommended. - 選擇OpenGL要使用的著色器後端 -推薦使用GLSL - - - + Resolution: 解析度: - + Forces to render at a different resolution. Higher resolutions require more VRAM and bandwidth. Options lower than 1X can cause artifacts. @@ -706,27 +713,27 @@ Options lower than 1X can cause artifacts. 選擇低於1X的解析度可能會導致畫面異常 - + Window Adapting Filter: 視窗適應過濾器: - + FSR Sharpness: 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 can produce a more stable picture in lower resolutions. @@ -735,12 +742,12 @@ 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,36 +756,36 @@ Exclusive fullscreen may offer better performance and better Freesync/Gsync supp 獨佔全螢幕將提供更好的性能以及更佳的FreeSync/G-Sync支援 - + Aspect Ratio: 長寬比: - + 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 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 - + Runs an additional optimization pass over generated SPIRV shaders. Will increase time required for shader compilation. May slightly improve performance. @@ -788,24 +795,12 @@ This feature is experimental. 但可能會稍微提高效能 - - 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,12 +809,12 @@ 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. GPU: Use the GPU's compute shaders to decode ASTC textures (recommended). @@ -828,45 +823,55 @@ stuttering but may present artifacts. - + ASTC Recompression Method: ASTC重新壓縮方式: - + 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. 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 allows tearing as it recovers from a slow down. Mailbox can have lower latency than FIFO and does not tear but may drop frames. @@ -874,1176 +879,1380 @@ Immediate (no synchronization) presents whatever is available and can exhibit te - + 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. 透過將畫面顯示移至獨立的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. Safe to set at 16x on most GPUs. - - GPU Accuracy: - GPU準確度層級: - - - - Controls the 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 as a last resort. + + GPU Mode: - + + 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. + + + + DMA Accuracy: - + Controls the DMA precision accuracy. Safe precision fixes issues in some games but may degrade performance. - - Enable asynchronous shader compilation (Hack) + + Enable asynchronous shader compilation - + May reduce shader stutter. - - Fast GPU Time (Hack) + + 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 启用 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 模式) - + 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 numbers allow for more features and can increase performance, but may cause issues. -The default value is per-system. +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 some games. -Only Vulkan 1.0+ devices support this extension. + + Enables vertex input dynamic state feature for better quality and performance. - - Descriptor Indexing - - - - - Improves texture & buffer handling and the Maxwell translation layer. -Some Vulkan 1.1+ and all 1.2+ devices support this extension. - - - - + 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. - + Device Name 裝置名稱 - + The name of the console. - + Custom RTC Date: 自定义系统时间: - + 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: 语言: - + This option can be overridden when region setting is auto-select - + Region: 區域: - + The region of the console. - + Time Zone: 時區: - + The time zone of the console. - + Sound Output Mode: 音訊輸出模式: - + Console 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. - + + Unit Serial + + + + + Battery Serial + + + + + Debug knobs + + + + 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 停止模拟时需要确认 - + Overrides prompts asking to confirm stopping the emulation. Enabling it bypasses such prompts and directly exits the emulation. - + Hide mouse on inactivity 滑鼠閒置時自動隱藏 - + Hides the mouse after 2.5s of inactivity. - + Disable controller applet 禁用控制器程序 - + 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 - 極高 - - - - - Default - 預設 - - - - Unsafe (fast) - - - - - Safe (stable) - - - - + + 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 高精度 - + + + 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) - - Serbian (српски) + + 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) - + Docked TV - + Handheld 掌機模式 - + + + 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 + + ConfigureApplets @@ -2115,7 +2324,7 @@ When a program attempts to open the controller applet, it is immediately closed. 還原預設值 - + Auto 自動 @@ -2565,46 +2774,86 @@ When a program attempts to open the controller applet, it is immediately closed. + Use dev.keys + + + + Enable Debug Asserts 啟用偵錯 - + Debugging 偵錯 - + + 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. @@ -2665,13 +2914,13 @@ When a program attempts to open the controller applet, it is immediately closed. - + Audio 音訊 - + CPU CPU @@ -2687,13 +2936,13 @@ When a program attempts to open the controller applet, it is immediately closed. - + General 一般 - + Graphics 圖形 @@ -2704,7 +2953,7 @@ When a program attempts to open the controller applet, it is immediately closed. - GraphicsExtensions + GraphicsExtra @@ -2714,7 +2963,7 @@ When a program attempts to open the controller applet, it is immediately closed. - + Controls 控制 @@ -2730,7 +2979,7 @@ When a program attempts to open the controller applet, it is immediately closed. - + System 系統 @@ -2770,9 +3019,10 @@ When a program attempts to open the controller applet, it is immediately closed. - - - + + + + ... ... @@ -2782,90 +3032,184 @@ When a program 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... 選擇載入模組資料夾... + + + Save Data Directory + + + + + Choose an action for the save data directory: + + + + + 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? + + ConfigureGeneral @@ -2882,24 +3226,54 @@ When a program 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 重設所有設定 - + 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 @@ -2929,33 +3303,33 @@ When a program attempts to open the controller applet, it is immediately closed. 背景顏色: - + % FSR sharpening percentage (e.g. 50%) % - + Off 關閉 - + VSync Off 垂直同步關 - + Recommended 推薦 - + On 開啟 - + VSync On 垂直同步開 @@ -2973,7 +3347,7 @@ When a program attempts to open the controller applet, it is immediately closed. 進階 - + Advanced Graphics Settings 進階圖形設定 @@ -2987,16 +3361,26 @@ When a program attempts to open the controller applet, it is immediately closed. - Extensions + Extras - - Vulkan Extensions Settings + + Hacks - + + Changing these options from their default may cause issues. Novitii cavete! + + + + + Vulkan Extensions + + + + % Sample Shading percentage (e.g. 50%) @@ -3574,7 +3958,7 @@ When a program attempts to open the controller applet, it is immediately closed. - + Left Stick 左搖桿 @@ -3684,14 +4068,14 @@ When a program attempts to open the controller applet, it is immediately closed. - + ZL ZL - + L L @@ -3704,22 +4088,22 @@ When a program attempts to open the controller applet, it is immediately closed. - + Plus - + ZR ZR - - + + R R @@ -3776,7 +4160,7 @@ When a program attempts to open the controller applet, it is immediately closed. - + Right Stick 右搖桿 @@ -3945,88 +4329,88 @@ To invert the axes, first move your joystick vertically, and then horizontally.< 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」失敗 @@ -4049,15 +4433,6 @@ To invert the axes, first move your joystick vertically, and then horizontally.< 預設 - - ConfigureLinuxTab - - - - Linux - Linux - - ConfigureMotionTouch @@ -4083,7 +4458,7 @@ To invert the axes, first move your joystick vertically, and then horizontally.< - + Configure 設定 @@ -4113,103 +4488,93 @@ To invert the axes, first move your joystick vertically, and then horizontally.< 連線埠: - - Learn More - 了解更多 - - - - + + Test 測試 - + Add Server 新增伺服器 - + Remove Server 移除伺服器 - - <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> - - - - + %1:%2 %1:%2 + + - - - - - + + + Eden - + Port number has invalid characters 連線埠中包含無效字元 - + 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>請耐心等候。 @@ -4340,11 +4705,6 @@ Current values are %1% and %2% respectively. Enable Airplane Mode - - - None - - ConfigurePerGame @@ -4399,52 +4759,57 @@ 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 + + + + Properties 屬性 @@ -4462,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 @@ -4499,38 +4959,18 @@ Current values are %1% and %2% respectively. Username 使用者名稱 - - - Set Image - 選擇圖片 - - Select Avatar - - - - 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)) @@ -4538,169 +4978,80 @@ Current values are %1% and %2% respectively. %2 - - Enter Username - 輸入使用者名稱 - - - + Users 使用者 - - Enter a username for the new user: - 輸入新使用者的名稱 - - - - Enter a new username: - 輸入新的使用者名稱 - - - + 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 saving user image - + Unable to save image to file - - Select User Image - 選擇使用者圖片 - - - - Image Formats (*.jpg *.jpeg *.png *.bmp) + + &Edit - - No firmware available + + &Delete - - 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. - - - - - ConfigureProfileManagerAvatarDialog - - - Select - - - - - Cancel - - - - - Background Color - - - - - Select Firmware Avatar + + Edit User ConfigureProfileManagerDeleteDialog - + Delete this user? All of the user's save data will be deleted. 删除此用户?此用户保存的所有数据都将被删除。 - + Confirm Delete 確認刪除 - + Name: %1 UUID: %2 名稱: %1 @@ -4868,7 +5219,7 @@ 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> @@ -4902,17 +5253,22 @@ UUID: %2 載入畫面時暫停執行 - + + Show recording dialog + + + + Script Directory 腳本資料夾 - + Path 路徑 - + ... ... @@ -4925,7 +5281,7 @@ UUID: %2 TAS 設定 - + Select TAS Load Directory... 選擇 TAS 載入資料夾... @@ -5063,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 遊戲名稱 @@ -5189,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) @@ -5387,20 +5717,20 @@ Drag points to change position, or double-click table cells to edit values.在 Discord 遊戲狀態上顯示目前的遊戲 - - + + All Good Tooltip - + Must be between 4-20 characters Tooltip - + Must be 48 characters, and lowercase a-z Tooltip @@ -5432,27 +5762,27 @@ Drag points to change position, or double-click table cells to edit values. - + Shaders - + UserNAND - + SysNAND - + Mods - + Saves @@ -5490,7 +5820,7 @@ Drag points to change position, or double-click table cells to edit values. - + Calculating... @@ -5513,12 +5843,12 @@ Drag points to change position, or double-click table cells to edit values. - + Dependency - + Version @@ -5692,44 +6022,44 @@ Please go to Configure -> System -> Network and make a selection. GRenderWindow - - + + OpenGL not available! 無法使用 OpenGL 模式! - + OpenGL shared contexts are not supported. 不支援 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 @@ -5737,203 +6067,208 @@ Please go to Configure -> System -> Network and make a selection. 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 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 - + Scan Subfolders 包含子資料夾 - + Remove Game Directory 移除遊戲資料夾 - + ▲ Move Up ▲ 向上移動 - + ▼ Move Down ▼ 向下移動 - + Open Directory Location 開啟資料夾位置 - + Clear 清除 - + Name 名稱 - + Compatibility 相容性 - + Add-ons 延伸模組 - + File type 檔案格式 - + Size 大小 - + Play time 遊玩時間 @@ -5941,62 +6276,62 @@ Please go to Configure -> System -> Network and make a selection. 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. 此遊戲尚未經過測試 @@ -6004,7 +6339,7 @@ Please go to Configure -> System -> Network and make a selection. GameListPlaceholder - + Double-click to add a new folder to the game list 連點兩下以新增資料夾至遊戲清單 @@ -6012,17 +6347,17 @@ Please go to Configure -> System -> Network and make a selection. GameListSearchField - + %1 of %n result(s) - + Filter: 搜尋: - + Enter pattern to filter 輸入文字以搜尋 @@ -6098,12 +6433,12 @@ Please go to Configure -> System -> Network and make a selection. 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. Debug Message: @@ -6112,189 +6447,207 @@ 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 - 變更 GPU 精確度 + + Change GPU Mode + - + Configure - + Configure Current Game - + Continue/Pause Emulation 繼續/暫停模擬 - + Exit Fullscreen 離開全螢幕 - + 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 @@ -6346,22 +6699,22 @@ Debug Message: 預估時間:5 分 4 秒 - + Loading... 載入中... - + Loading Shaders %1 / %2 載入著色器:%1 / %2 - + Launching... 啟動中... - + Estimated Time %1 預估時間:%1 @@ -6410,42 +6763,42 @@ Debug Message: 重新整理遊戲大廳 - + Password Required to Join 加入需要密碼 - + Password: 密碼: - + Players 玩家 - + Room Name 房間名稱 - + Preferred Game 偏好遊戲 - + Host 主機 - + Refreshing 正在重新整理 - + Refresh List 重新整理清單 @@ -6494,1171 +6847,1153 @@ Debug Message: + &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) - + Am&iibo - - &Applets + + 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 - + 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) - + &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 Decryption &Keys - - Open &Home Menu + + &Home Menu - - Open &Setup - - - - + &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.<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>. + + 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><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. + + 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/Revolt for help. + + %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 - - Please install firmware to use the Album applet. - - - - - Album Applet - - - - - Album applet is not available. Please reinstall firmware. - - - - - Please install firmware to use the Cabinet applet. - - - - - Cabinet Applet - - - - - Cabinet applet is not available. Please reinstall firmware. - - - - - Please install firmware to use the Mii editor. - - - - - Mii Edit Applet - - - - - Mii editor is not available. Please reinstall firmware. - - - - - Please install firmware to use the Controller Menu. - - - - - Controller Applet - - - - - Controller Menu is not available. Please reinstall firmware. - - - - + Firmware Corrupted - - Home Menu Applet + + Unknown applet - - Home Menu is not available. Please reinstall firmware. + + Applet doesn't map to a known value. - - Please install firmware to use Starter. + + Record not found - - Starter Applet + + Applet not found. Please reinstall firmware. - - Starter is not available. Please reinstall firmware. - - - - + Capture Screenshot - + PNG Image (*.png) - + Update Available - - Download the %1 update? - - - - - TAS state: Running %1/%2 - - - - - TAS state: Recording %1 - - - - - TAS state: Idle %1/%2 - - - - - TAS State: Invalid - - - - - &Stop Running + + 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 - - %1 %2 - - - - + FSR - + NO AA - + VOLUME: MUTE - + VOLUME: %1% Volume percentage (e.g. 50%) - + Derivation Components Missing - - Encryption keys are 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. @@ -7666,69 +8001,79 @@ 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? - - - None - - FXAA @@ -7755,27 +8100,27 @@ Would you like to bypass this and exit anyway? - + Zero-Tangent - + B-Spline - + Mitchell - + Spline-1 - + Gaussian @@ -7811,17 +8156,17 @@ Would you like to bypass this and exit anyway? - Normal + Fast - High + Balanced - Extreme + Accurate @@ -7830,41 +8175,36 @@ Would you like to bypass this and exit anyway? - - OpenGL + + OpenGL GLSL - - Null + + OpenGL SPIRV - GLSL + OpenGL GLASM - GLASM - - - - - SPIRV + Null MigrationWorker - + 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. @@ -7875,7 +8215,7 @@ If this is not desirable, delete the following files: - + 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: @@ -7883,11 +8223,24 @@ If you wish to clean up the files which were left in the old data location, you - + Data was migrated successfully. + + ModSelectDialog + + + Dialog + + + + + The specified folder or archive contains the following mods. Select which ones to install. + + + ModerationDialog @@ -8012,6 +8365,135 @@ Proceed anyway? 您準備離開房間。房間的連線將關閉。 + + 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 + + + OverlayDialog @@ -8045,50 +8527,122 @@ 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 - - Installed SD Titles - 安裝在 SD 卡中的遊戲 - - - - Installed NAND Titles - 安裝在內部儲存空間中的遊戲 - - - - System Titles - 系統項目 - - - - Add New Game Directory - 加入遊戲資料夾 - - - - Favorites - 我的最愛 - - - - - + + + Migration - + Clear Shader Cache @@ -8121,18 +8675,18 @@ p, li { white-space: pre-wrap; } - + You can manually re-trigger this prompt by deleting the new config directory: %1 - + Migrating - + Migrating, this may take a while... @@ -8514,15 +9068,60 @@ p, li { white-space: pre-wrap; } 不在玩遊戲 - + %1 is not playing a game %1 不在玩遊戲 - + %1 is playing %2 %1 正在玩 %2 + + + Play Time: %1 + + + + + Never Played + + + + + Version: %1 + + + + + Version: 1.0.0 + + + + + Installed SD Titles + 安裝在 SD 卡中的遊戲 + + + + Installed NAND Titles + 安裝在內部儲存空間中的遊戲 + + + + System Titles + 系統項目 + + + + Add New Game Directory + 加入遊戲資料夾 + + + + Favorites + 我的最愛 + QtAmiiboSettingsDialog @@ -8640,250 +9239,250 @@ p, li { white-space: pre-wrap; } 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. @@ -8891,22 +9490,22 @@ Only do this if you're 100% sure you want to delete this data. QtCommon::FS - + Linked Save Data - + Save data has been linked. - + Failed to link save data - + Could not link directory: %1 To: @@ -8914,268 +9513,357 @@ To: - + 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. @@ -9183,83 +9871,83 @@ To: 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. Versions 19.0.1 or earlier are recommended, as 20.0.0+ is currently experimental. + + Firmware missing. Firmware is required to run certain games and use the Home Menu. @@ -9280,56 +9968,56 @@ 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. @@ -9370,7 +10058,7 @@ This is recommended if you want to share data between emulators. - + Pro Controller Pro 手把 @@ -9383,7 +10071,7 @@ This is recommended if you want to share data between emulators. - + Dual Joycons 雙 Joycon 手把 @@ -9396,7 +10084,7 @@ This is recommended if you want to share data between emulators. - + Left Joycon 左 Joycon 手把 @@ -9409,7 +10097,7 @@ This is recommended if you want to share data between emulators. - + Right Joycon 右 Joycon 手把 @@ -9438,7 +10126,7 @@ This is recommended if you want to share data between emulators. - + Handheld 掌機模式 @@ -9559,32 +10247,32 @@ This is recommended if you want to share data between emulators. 控制器數量不足 - + GameCube Controller GameCube 手把 - + Poke Ball Plus 精靈球 PLUS - + NES Controller NES 控制手把 - + SNES Controller SNES 控制手把 - + N64 Controller N64 控制手把 - + Sega Genesis Mega Drive @@ -9739,13 +10427,13 @@ 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 取消 @@ -9780,12 +10468,12 @@ By selecting "From Eden", previous save data stored in Ryujinx will be - + Failed to link save data - + OS returned error: %1 @@ -9821,45 +10509,9 @@ By selecting "From Eden", previous save data stored in Ryujinx will be - + Total play time reached maximum. - - fs - - - 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 - - - - \ No newline at end of file + diff --git a/dist/qt_themes/default/icons/256x256/eden.png b/dist/qt_themes/default/icons/256x256/eden.png index 2d15238885..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 a38816b031..0000000000 Binary files a/dist/qt_themes/default/icons/256x256/eden_named.png and /dev/null differ diff --git a/dist/yuzu.icns b/dist/yuzu.icns deleted file mode 100644 index 0ccb1ff11b..0000000000 Binary files a/dist/yuzu.icns and /dev/null differ diff --git a/docs/Build.md b/docs/Build.md index 0bb70ee322..394fe4871d 100644 --- a/docs/Build.md +++ b/docs/Build.md @@ -6,9 +6,11 @@ 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 @@ -53,30 +55,35 @@ Hit "Configure Project", then wait for CMake to finish configuring (may take a w > [!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) +> +> - 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 [Options](Options.md) page for additional CMake options. +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 @@ -95,7 +102,7 @@ cmake -S . -B build -G "" -DCMAKE_C_COMPILER=clang-cl -DCMAKE_CXX_COM
Click to Open -* Clone the Repository: +- Clone the Repository: @@ -105,26 +112,26 @@ cmake -S . -B build -G "" -DCMAKE_C_COMPILER=clang-cl -DCMAKE_CXX_COM ### Building & Setup -* Once Cloned, You will be taken to a prompt like the image below: +- 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` +- 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 +- 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. +- Now run by clicking the play button or pressing Shift+F10, and eden will auto-launch once built.
@@ -132,12 +139,13 @@ cmake -S . -B build -G "" -DCMAKE_C_COMPILER=clang-cl -DCMAKE_CXX_COM ## 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 Revolt or Discord. +Otherwise, feel free to ask for help in Stoat or Discord. ## Caveats @@ -153,20 +161,16 @@ Simply hit Ctrl+B, or the "hammer" icon in the bottom left. To run, hit the "pla 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 -Some platforms have convenience scripts provided for building. - -- **[Linux](scripts/Linux.md)** -- **[Windows](scripts/Windows.md)** - -macOS scripts will come soon. +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 index 2df3b8856b..8da1f3d949 100644 --- a/docs/CODEOWNERS +++ b/docs/CODEOWNERS @@ -18,7 +18,7 @@ src/web_service @AleksandrPopovich src/dynarmic @Lizzie src/core @Lizzie @Maufeat @PavelBARABANOV @MrPurple666 @JPikachu -src/core/hle @Maufeat @PavelBARABANOV @SDK-Chan +src/core/hle @Maufeat @PavelBARABANOV src/core/arm @Lizzie @MrPurple666 src/*_room @AleksandrPopovich src/video_core @CamilleLaVey @MaranBr @Wildcard @weakboson diff --git a/docs/CPMUtil/AddCIPackage b/docs/CPMUtil/AddCIPackage deleted file mode 100644 index 559db69ea9..0000000000 --- a/docs/CPMUtil/AddCIPackage +++ /dev/null @@ -1,17 +0,0 @@ -# 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` - * `android` - * `solaris-amd64` - * `freebsd-amd64` - * `linux-amd64` - * `linux-aarch64` - * `macos-universal` \ No newline at end of file diff --git a/docs/CPMUtil/AddCIPackage.md b/docs/CPMUtil/AddCIPackage.md index bcd72e10da..bc7c1ccfad 100644 --- a/docs/CPMUtil/AddCIPackage.md +++ b/docs/CPMUtil/AddCIPackage.md @@ -7,13 +7,14 @@ - `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` - * `solaris-amd64` - * `freebsd-amd64` - * `linux-amd64` - * `linux-aarch64` - * `macos-universal` \ No newline at end of file + - `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 index d8719eec0a..464cd1731b 100644 --- a/docs/CPMUtil/AddJsonPackage.md +++ b/docs/CPMUtil/AddJsonPackage.md @@ -22,11 +22,11 @@ If `ci` is `false`: - `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 + - 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) + - 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` @@ -101,4 +101,4 @@ In order: OpenSSL CI, Boost (tag + artifact), Opus (options + find_args), discor ] } } -``` \ No newline at end of file +``` diff --git a/docs/CPMUtil/AddPackage.md b/docs/CPMUtil/AddPackage.md index 410c84a958..6e9ae1b775 100644 --- a/docs/CPMUtil/AddPackage.md +++ b/docs/CPMUtil/AddPackage.md @@ -17,7 +17,7 @@ - `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. + - 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. @@ -26,23 +26,23 @@ 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. + - 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 + - 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 + - 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 + - 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 + - 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 + - The final download URL will be `https://github.com/${REPO}/archive/refs/heads/master.zip` + - Generally not recommended unless the project is dead ## Hashing @@ -54,20 +54,20 @@ 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. + - 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: + - 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 + - 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 @@ -80,12 +80,14 @@ Hashing strategies, descending order of precedence: 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 @@ -101,8 +103,8 @@ 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` + - 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): @@ -113,4 +115,4 @@ Versions (bundled): - `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)` +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 index 8fe4df5237..dbc5f0922a 100644 --- a/docs/CPMUtil/README.md +++ b/docs/CPMUtil/README.md @@ -5,17 +5,19 @@ CPMUtil is a wrapper around CPM that aims to reduce boilerplate and add useful u Global Options: - `CPMUTIL_FORCE_SYSTEM` (default `OFF`): Require all CPM dependencies to use system packages. NOT RECOMMENDED! - * You may optionally override this (section) + - 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 @@ -29,6 +31,14 @@ The core of CPMUtil is the [`AddPackage`](./AddPackage.md) function. [`AddPackag [`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. @@ -36,11 +46,25 @@ CPMUtil will create three lists of dependencies where `AddPackage` or similar wa - `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`. + - 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) \ No newline at end of file +- [`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 index ac847d052d..d554f3ff77 100644 --- a/docs/Caveats.md +++ b/docs/Caveats.md @@ -1,17 +1,20 @@ # Caveats -- [Caveats](#caveats) - - [Arch Linux](#arch-linux) - - [Gentoo Linux](#gentoo-linux) - - [macOS](#macos) - - [Solaris](#solaris) - - [HaikuOS](#haikuos) - - [OpenBSD](#openbsd) - - [FreeBSD](#freebsd) - - [NetBSD](#netbsd) - - [MSYS2](#msys2) - - [Windows 8.1 and below](#windows-81-and-below) +- [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 @@ -49,6 +52,7 @@ 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 @@ -77,13 +81,17 @@ For this reason this patch is NOT applied to default on all platforms (for obvio 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`. +If clang has errors, try using `g++11`. ## FreeBSD @@ -91,19 +99,35 @@ Eden is not currently available as a port on FreeBSD, though it is in the works. 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 -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/x86_64/10.0_2025Q3/All/"' >/etc/pkg_install.conf`. If `pkgin` is taking too much time consider adding the following to `/etc/rc.conf`: +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`. Then build with `cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_COMPILER=clang -B build`. +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 @@ -114,13 +138,21 @@ cmake --build build -- -j`nproc` cmake --install build ``` -# DragonFlyBSD +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`. @@ -131,13 +163,9 @@ If build hangs, use `hammer2 bulkfree`. ## MSYS2 -`qt6-static` isn't supported yet. +Only the `MINGW64` environment is tested (or `CLANGARM64` on ARM); however, all of the others should work (in theory) sans `MINGW32`. -Only the `MINGW64` environment is tested; however, all of the others should work (in theory) sans `MINGW32`. - -Currently, only FFmpeg can be used as a system dependency; the others will result in linker errors. - -When packaging an MSYS2 build, you will need to copy all dependent DLLs recursively alongside the `windeployqt6`; for example: +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 @@ -186,14 +214,24 @@ windeployqt6 --no-compiler-runtime --no-opengl-sw --no-system-dxc-compiler \ find ./*/ -name "*.dll" | while read -r dll; do deps "$dll"; done ``` -## Windows 8.1 and below - -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. - ## 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/Coding.md b/docs/Coding.md deleted file mode 100644 index 8d02df4088..0000000000 --- a/docs/Coding.md +++ /dev/null @@ -1,79 +0,0 @@ -# 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. - -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 - -Do not put if/while/etc braces after lines: -```c++ -// no dont do this -if (thing) -{ - some(); // ... -} - -// do this -if (thing) { - some(); // ... -} - -// or this -if (thing) - some(); // ... - -// this is also ok -if (thing) some(); -``` - -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); -``` diff --git a/docs/CrossCompile.md b/docs/CrossCompile.md index 49a2774b04..1f6ef447e6 100644 --- a/docs/CrossCompile.md +++ b/docs/CrossCompile.md @@ -1,6 +1,8 @@ -# Cross Compile +# Cross compiling -## ARM64 +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. diff --git a/docs/Debug.md b/docs/Debug.md index 3fc3bc9fee..f384918fe2 100644 --- a/docs/Debug.md +++ b/docs/Debug.md @@ -22,17 +22,25 @@ Debug logs can be found in General -> Debug -> Open Log Location on desktop, and Ignoring SIGSEGV when debugging in host: -- **gdb**: `handle all nostop pass`. +- **gdb**: `handle SIGSEGV nostop pass`. - **lldb**: `pro hand -p true -s false -n false SIGSEGV`. ## Debugging (guest code) ### gdb -Run `./build/bin/eden-cli -c -d -g ` +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` -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`. +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 diff --git a/docs/Deps.md b/docs/Deps.md index 05764341ec..80caf1685f 100644 --- a/docs/Deps.md +++ b/docs/Deps.md @@ -1,42 +1,44 @@ # 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+ + * 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)** (experimental) + * **[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` + * 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)** + * **[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 MSYS2, Git Bash, etc) + * *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. + * 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 -If you are on Windows, a convenience script to install MSVC, MSYS2, Qt, all necessary packages for MSYS2, and set up a zsh environment with useful keybinds and aliases can be found [here](https://git.crueter.xyz/scripts/windev). -- For help setting up Qt Creator, run `./install.sh -h qtcreator` +* 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`) @@ -49,14 +51,14 @@ All other dependencies will be downloaded and built by [CPM](https://github.com/ * [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/) 1.1.1+ +* [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+ -* [MbedTLS](https://github.com/Mbed-TLS/mbedtls) 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) @@ -71,18 +73,20 @@ Certain other dependencies will be fetched by CPM regardless. System packages *c * [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. + * 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) -* [mcl](https://github.com/azahar-emu/mcl) - subject to removal 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 @@ -98,7 +102,7 @@ Click on the arrows to expand. GURU must be enabled: -``` +```sh sudo emerge -a app-eselect/eselect-repository sudo eselect repository enable guru sudo emaint sync -r guru @@ -115,7 +119,7 @@ sudo emerge -a \ 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 net-libs/mbedtls \ + net-libs/enet \ sys-libs/zlib \ dev-cpp/nlohmann_json dev-cpp/simpleini dev-cpp/cpp-httplib dev-cpp/cpp-jwt \ games-util/gamemode \ @@ -124,17 +128,17 @@ sudo emerge -a \ 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` +* 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` -- `net-libs/mbedtls cmac` -- `media-libs/libsdl2 haptic joystick sound video` -- `dev-cpp/cpp-httplib ssl` + +* `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) @@ -144,34 +148,38 @@ Required USE flags: Arch Linux ```sh -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 vulkan-headers vulkan-utility-libraries libusb spirv-tools spirv-headers +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 libmbedtls-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 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 +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 speexdsp-devel wayland-devel zlib-devel ffmpeg-devel libXext-devel boost jq +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 @@ -183,30 +191,32 @@ 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 mbedtls-dev mbedtls-static mesa-dev qt6-qtbase-dev qt6-qtbase-private-dev libquazip1-qt6 ffmpeg-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 +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 ``` -`mbedtls-static` has to be specified otherwise `libeverest.a` and `libp256m.a` will fail to be found. -
Void Linux ```sh -xbps-install -Su git make cmake clang pkg-config patch mbedtls-devel 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 fmt-devel json-c++ libenet-devel libusb-devel +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? @@ -218,6 +228,8 @@ Yes, `nlohmann-json` is just named `json-c++`. Why? 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 @@ -231,8 +243,9 @@ brew install autoconf automake boost ffmpeg fmt glslang hidapi libtool libusb lz 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 vulkan-loader +brew install molten-vk ``` [Caveats](./Caveats.md#macos). @@ -241,7 +254,7 @@ brew install molten-vk vulkan-loader
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/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/jwt-cpp devel/unordered-dense mbedtls3 vulkan-headers quazip-qt6` +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. @@ -251,7 +264,7 @@ If using FreeBSD 12 or prior, use `devel/pkg-config` instead.
NetBSD -For NetBSD +10.1: `pkgin install git cmake boost fmtlib SDL2 catch2 libjwt spirv-headers ffmpeg7 libva nlohmann-json jq libopus qt6 mbedtls3 cpp-httplib lz4 vulkan-headers nasm autoconf enet pkg-config libusb1`. +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). @@ -261,7 +274,7 @@ For NetBSD +10.1: `pkgin install git cmake boost fmtlib SDL2 catch2 libjwt spirv ```sh pkg_add -u -pkg_add cmake nasm git boost unzip--iconv autoconf-2.72p0 bash ffmpeg glslang gmake llvm-19.1.7p3 qt6 jq fmt nlohmann-json enet boost vulkan-utility-libraries vulkan-headers spirv-headers spirv-tools catch2 sdl2 libusb1-1.0.27 +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). @@ -271,7 +284,7 @@ pkg_add cmake nasm git boost unzip--iconv autoconf-2.72p0 bash ffmpeg glslang gm 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 quazip-qt6 unordered-dense libva-vdpau-driver libva-utils libva-intel-driver +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). @@ -292,23 +305,24 @@ sudo pkg install qt6 boost glslang libzip library/lz4 libusb-1 nlohmann-json ope * 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-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 mbedtls libusb unordered_dense" - +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 but currently untested. - - 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. If you choose to use Clang, you *may* be better off using the clang64 environment. - - 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. + * 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` @@ -320,7 +334,7 @@ pacman -Syuu --needed --noconfirm $packages HaikuOS ```sh -pkgman install git cmake patch libfmt_devel nlohmann_json lz4_devel opus_devel boost1.89_devel vulkan_devel qt6_base_devel libsdl2_devel ffmpeg7_devel libx11_devel enet_devel catch2_devel quazip1_qt6_devel qt6_5compat_devel libusb1_devel libz_devel mbedtls3_devel glslang +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). diff --git a/docs/Development.md b/docs/Development.md index 062bc140d9..eb9f4159b5 100644 --- a/docs/Development.md +++ b/docs/Development.md @@ -82,15 +82,15 @@ 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 ``` # Assets and large files 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 index b4d4f5f6b3..3eb6effe92 100644 --- a/docs/Options.md +++ b/docs/Options.md @@ -5,6 +5,7 @@ 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` @@ -12,57 +13,88 @@ Notes: - 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 + - `OPTION_NAME` (TYPE DEFAULT) DESCRIPTION ## Options -- `YUZU_USE_CPM` (ON for non-UNIX) Use CPM to fetch system dependencies (fmt, boost, etc) if needed. Externals will still be fetched. See the [CPM](CPM.md) and [Deps](Deps.md) docs for more info. +### 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 -- `YUZU_USE_BUNDLED_FFMPEG` (ON for non-UNIX) Download (Windows, Android) or build (UNIX) bundled FFmpeg - `ENABLE_CUBEB` (ON) Enables the cubeb audio backend + - This option is subject for removal. - `YUZU_TESTS` (ON) Compile tests - requires Catch2 -- `YUZU_DOWNLOAD_ANDROID_VVL` (ON) Download validation layer binary for Android -- `YUZU_ENABLE_LTO` (OFF) Enable link-time optimization - * Not recommended on Windows - * UNIX may be better off appending `-flto=thin` to compiler args -- `YUZU_DOWNLOAD_TIME_ZONE_DATA` (ON) Always download time zone binaries - * Currently, build fails without this -- `YUZU_USE_FASTER_LD` (ON) Check if a faster linker is available - * Only available on UNIX -- `YUZU_USE_BUNDLED_MOLTENVK` (ON, macOS only) Download bundled MoltenVK lib) -- `YUZU_TZDB_PATH` (string) Path to a pre-downloaded timezone database (useful for nixOS) -- `ENABLE_OPENSSL` (ON for Linux and *BSD) Enable OpenSSL backend for the ssl service - * Always enabled if the web service is enabled -- `YUZU_USE_BUNDLED_OPENSSL` (ON for MSVC) Download bundled OpenSSL build - * Always on for Android - * Unavailable on OpenBSD -- `ENABLE_UPDATE_CHECKER` (OFF) Enable update checker for the Qt an Android frontends +- `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 -The following options are desktop only: -- `ENABLE_SDL2` (ON) Enable the SDL2 desktop, audio, and input frontend (HIGHLY RECOMMENDED!) - * Unavailable on Android -- `YUZU_USE_EXTERNAL_SDL2` (ON for non-UNIX) Compiles SDL2 from source -- `YUZU_USE_BUNDLED_SDL2` (ON for MSVC) Download a prebuilt SDL2 - * Unavailable on OpenBSD - * Only enabled if YUZU_USE_CPM and ENABLE_SDL2 are both ON -- `ENABLE_LIBUSB` (ON) Enable the use of the libusb input frontend (HIGHLY RECOMMENDED) -- `ENABLE_OPENGL` (ON) Enable the OpenGL graphics frontend - * Unavailable on Windows/ARM64 and Android - `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 - * Note that using **system Qt** requires you to include the Qt CMake directory in `CMAKE_PREFIX_PATH`, e.g: - * `-DCMAKE_PREFIX_PATH=C:/Qt/6.9.0/msvc2022_64/lib/cmake/Qt6` + - 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) -- `YUZU_ROOM` (ON) Enable dedicated room functionality -- `YUZU_ROOM_STANDALONE` (ON) Enable standalone room executable (eden-room) - * Requires `YUZU_ROOM` -- `YUZU_CMD` (ON) Compile the SDL2 frontend (eden-cli) - requires SDL2 -- `YUZU_CRASH_DUMPS` Compile crash dump (Minidump) support" - * Currently only available on Windows and Linux -See `src/dynarmic/CMakeLists.txt` for additional options--usually, these don't need changed \ No newline at end of file +### 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 index 5a52315fcc..68775f99d8 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,13 +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)** -- **[Coding guidelines](Coding.md)** - **[Dependencies](Deps.md)** - **[Debug Guidelines](./Debug.md)** -- **[CPM - CMake Package Manager](CPMUtil.md)** +- **[CPM - CMake Package Manager](./CPMUtil)** - **[Platform-Specific Caveats](Caveats.md)** -- **[User Handbook](./user)** +- **[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 index 6995db6d9a..5e5f7cebf6 100644 --- a/docs/SIGNUP.md +++ b/docs/SIGNUP.md @@ -18,7 +18,7 @@ First of all, you MUST have a valid reason to sign up for our Git. Valid reasons The following are not valid reasons to sign up: - I want to contribute to Eden. - * Be at least somewhat specific! + * 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. @@ -41,17 +41,36 @@ 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. +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 requests or the following email. +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. -
\ No newline at end of file +> [!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 5805ed2797..60ec31a678 100644 --- a/docs/build/Android.md +++ b/docs/build/Android.md @@ -1,30 +1,37 @@ -# Note: These build instructions are a work-in-progress. +# 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`. +## 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 - + +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 @@ -38,7 +45,44 @@ Eden by default will be cloned into - 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`. 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. + +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 -https://developer.android.com/studio/intro + + 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/src/dynarmic/docs/Design.md b/docs/dynarmic/Design.md similarity index 50% rename from src/dynarmic/docs/Design.md rename to docs/dynarmic/Design.md index ffa8ccecdb..020cfd65bd 100644 --- a/src/dynarmic/docs/Design.md +++ b/docs/dynarmic/Design.md @@ -286,15 +286,6 @@ Exclusive OR (i.e.: XOR) Memory access. -### Terminal: Interpret - -```c++ -SetTerm(IR::Term::Interpret{next}) -``` - -This terminal instruction calls the interpreter, starting at `next`. -The interpreter must interpret exactly one instruction. - ### Terminal: ReturnToDispatch ```c++ @@ -343,3 +334,279 @@ 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/src/dynarmic/docs/Fastmem.svg b/docs/dynarmic/Fastmem.svg similarity index 100% rename from src/dynarmic/docs/Fastmem.svg rename to docs/dynarmic/Fastmem.svg diff --git a/src/dynarmic/docs/HostToGuest.svg b/docs/dynarmic/HostToGuest.svg similarity index 100% rename from src/dynarmic/docs/HostToGuest.svg rename to docs/dynarmic/HostToGuest.svg diff --git a/src/dynarmic/README.md b/docs/dynarmic/README.md similarity index 98% rename from src/dynarmic/README.md rename to docs/dynarmic/README.md index 38248a0dc2..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. } 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/scripts/Linux.md b/docs/scripts/Linux.md deleted file mode 100644 index 93e76c222e..0000000000 --- a/docs/scripts/Linux.md +++ /dev/null @@ -1,31 +0,0 @@ -# Linux Build Scripts - -* Provided script: `.ci/linux/build.sh` -* Must specify arch target, e.g.: `.ci/linux/build.sh amd64` -* Valid targets: - * `native`: Optimize to your native host architecture - * `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 -* Extra CMake flags go after the arch target. - -### Environment Variables - -* `NPROC`: Number of compilation threads (default: all cores) -* `TARGET`: Set `appimage` to disable standalone `eden-cli` and `eden-room` -* `BUILD_TYPE`: Build type (default: `Release`) - -Boolean flags (set `true` to enable, `false` to disable): - -* `DEVEL` (default `FALSE`): Disable Qt update checker -* `USE_WEBENGINE` (default `FALSE`): Enable Qt WebEngine -* `USE_MULTIMEDIA` (default `FALSE`): Enable Qt Multimedia - -* AppImage packaging script: `.ci/linux/package.sh` - - * Accepts same arch targets as build script - * Use `DEVEL=true` to rename app to `Eden Nightly` and disable the update checker - * This should generally not be used unless in a tailor-made packaging environment (e.g. Actions/CI) \ No newline at end of file diff --git a/docs/scripts/Windows.md b/docs/scripts/Windows.md deleted file mode 100644 index e60c2119a2..0000000000 --- a/docs/scripts/Windows.md +++ /dev/null @@ -1,29 +0,0 @@ -# Windows Build Scripts - -* A convenience script for building is provided in `.ci/windows/build.sh`. -* You must run this with Bash, e.g. Git Bash or the 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: - * `WINDEPLOYQT="/c/Qt/6.9.1/msvc2022_64/bin/windeployqt6.exe" .ci/windows/build.sh`. -* You can use `aqtinstall`, more info on and - - -* Extra CMake flags should be placed in the arguments of the script. - -#### Additional environment variables can be used to control building: - -* `BUILD_TYPE` (default `Release`): Sets the build type to use. - -* 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 FALSE): 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` - * `.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`. 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/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/Basics.md b/docs/user/Basics.md index 5101f4d9c3..794a0935d5 100644 --- a/docs/user/Basics.md +++ b/docs/user/Basics.md @@ -16,6 +16,15 @@ The CPU must support FMA for an optimal gameplay experience. The GPU needs to su 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 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 index ccbc6cea4c..ad359b9049 100644 --- a/docs/user/Graphics.md +++ b/docs/user/Graphics.md @@ -1,5 +1,7 @@ # User Handbook - Graphics +Graphical enhancements and visual quality improvments. This doesn't cover texture mods. + ## Visual Enhancements ### Anti-aliasing @@ -43,6 +45,12 @@ Various graphical filters exist - each of them aimed at a specific target/image - **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). @@ -83,4 +91,23 @@ The OpenGL backend would invoke behaviour that would result in swarst/LLVMpipe w ### 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 purpouses `lavapipe` is recommended over the GPU driver; there is in-kernel support for NVIDIA cards through. +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/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 index 64895f4aa8..c1c4cd200a 100644 --- a/docs/user/README.md +++ b/docs/user/README.md @@ -4,10 +4,48 @@ 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)** -- **[Platforms and Architectures](Architectures.md)** -- **[Testing](Testing.md)** -- **[Data, savefiles and storage](Storage.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/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 index 4ef7925f90..eb3beeb37c 100644 --- a/docs/user/Testing.md +++ b/docs/user/Testing.md @@ -1,34 +1,99 @@ -# User Handbook - Testing - -While this is mainly aimed for testers - normal users can benefit from these guidelines to make their life easier when trying to outline and/or report an issue. - -## How to Test a PR Against the Based Master When Issues Arise +# 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. -### What to Do When Something Seems Off +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. -### Two Possible Outcomes +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. -### Report your findings +## 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. -- Example: -``` -1. "Tested on based master — issue not present. Bad result for PR, likely regression introduced." -2. "Tested on based master — issue already present. Good result for PR, not a regression." -``` +- 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**. \ No newline at end of file +**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 index 4c337b2c5f..5bd72ebe72 100644 --- a/docs/user/ThirdParty.md +++ b/docs/user/ThirdParty.md @@ -4,5 +4,70 @@ The Eden emulator by itself lacks some functionality - or otherwise requires ext 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. -- [Nightly Eden builds](https://github.com/pflyly/eden-nightly) - [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 51980dfffe..ba0545b7a7 100644 --- a/externals/CMakeLists.txt +++ b/externals/CMakeLists.txt @@ -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: 2016 Citra Emulator Project @@ -25,18 +25,9 @@ set(BUILD_SHARED_LIBS OFF) # Skip install rules for all externals set_directory_properties(PROPERTIES EXCLUDE_FROM_ALL ON) -# Xbyak (also used by Dynarmic, so needs to be added first) +# Xbyak if (ARCHITECTURE_x86 OR ARCHITECTURE_x86_64) - if (PLATFORM_SUN OR PLATFORM_OPENBSD) - AddJsonPackage(xbyak_sun) - else() - AddJsonPackage(xbyak) - endif() -endif() - -# Oaknut (also used by Dynarmic, so needs to be added first) -if (ARCHITECTURE_arm64 OR DYNARMIC_TESTS) - AddJsonPackage(oaknut) + AddJsonPackage(xbyak) endif() # enet @@ -50,17 +41,53 @@ if (NOT TARGET enet::enet) add_library(enet::enet ALIAS enet) endif() -# mbedtls -AddJsonPackage(mbedtls) +# stb +add_library(stb stb/stb_dxt.cpp) +target_include_directories(stb PUBLIC ./stb) -# VulkanUtilityHeaders - pulls in headers and utility libs -AddJsonPackage(vulkan-utility-headers) - -# small hack -if (NOT VulkanUtilityLibraries_ADDED) - find_package(VulkanHeaders 1.3.274 REQUIRED) +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) @@ -85,16 +112,15 @@ if(ENABLE_CUBEB) if (cubeb_ADDED) if (NOT MSVC) if (TARGET speex) - target_compile_options(speex PRIVATE -Wno-sign-compare) + 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 + $<$:-Wno-implicit-const-int-float-conversion> + $<$:-Wno-shadow> + $<$:-Wno-missing-declarations> + $<$:-Wno-return-type> + $<$:-Wno-uninitialized> ) else() target_compile_options(cubeb PRIVATE @@ -109,8 +135,7 @@ if(ENABLE_CUBEB) endif() 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) +if (NOT ANDROID) if (YUZU_USE_EXTERNAL_SDL2) message(STATUS "Using SDL2 from externals.") if (NOT WIN32) @@ -161,7 +186,9 @@ if (YUZU_USE_BUNDLED_SIRIT) else() AddJsonPackage(sirit) if(MSVC AND CXX_CLANG) - target_compile_options(siritobj PRIVATE -Wno-error=unused-command-line-argument) + target_compile_options(siritobj PRIVATE + $<$:-Wno-error=unused-command-line-argument> + ) endif() endif() @@ -197,7 +224,7 @@ AddJsonPackage(vulkan-memory-allocator) if (VulkanMemoryAllocator_ADDED) if (CXX_CLANG) target_compile_options(VulkanMemoryAllocator INTERFACE - -Wno-unused-variable + $<$:-Wno-unused-variable> ) elseif(MSVC) target_compile_options(VulkanMemoryAllocator INTERFACE @@ -206,19 +233,11 @@ if (VulkanMemoryAllocator_ADDED) endif() endif() -# httplib -if (ENABLE_WEB_SERVICE OR ENABLE_UPDATE_CHECKER) - AddJsonPackage(httplib) -endif() - # cpp-jwt if (ENABLE_WEB_SERVICE OR ENABLE_UPDATE_CHECKER) AddJsonPackage(cpp-jwt) endif() -# unordered_dense -AddJsonPackage(unordered-dense) - # FFMpeg if (YUZU_USE_EXTERNAL_FFMPEG OR YUZU_USE_BUNDLED_FFMPEG) add_subdirectory(ffmpeg) @@ -235,22 +254,6 @@ endif() # TZDB (Time Zone Database) add_subdirectory(nx_tzdb) -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) @@ -267,9 +270,11 @@ 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() @@ -392,3 +397,17 @@ if (ANDROID) add_library(oboe::oboe ALIAS oboe) endif() + +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 index ee5ccb451e..b8472774ae 100644 --- a/externals/cpmfile.json +++ b/externals/cpmfile.json @@ -9,7 +9,7 @@ }, "sirit": { "repo": "eden-emulator/sirit", - "git_version": "1.0.2", + "git_version": "1.0.4", "tag": "v%VERSION%", "artifact": "sirit-source-%VERSION%.tar.zst", "hash_suffix": "sha512sum", @@ -23,49 +23,43 @@ "package": "sirit", "name": "sirit", "repo": "eden-emulator/sirit", - "version": "1.0.2", - "disabled_platforms": [ - "mingw-amd64", - "mingw-arm64" - ] + "version": "1.0.4" }, "httplib": { "repo": "yhirose/cpp-httplib", "tag": "v%VERSION%", - "hash": "b364500f76e2ecb0fe21b032d831272e3f1dfeea71af74e325f8fc4ce9dcdb3c941b97a5b422bdeafb9facd058597b90f8bfc284fb9afe3c33fefa15dd5a010b", - "git_version": "0.26.0", + "hash": "5efa8140aadffe105dcf39935b732476e95755f6c7473ada3d0b64df2bc02c557633ae3948a25b45e1cf67e89a3ff6329fb30362e4ac033b9a1d1e453aa2eded", + "git_version": "0.37.0", + "version": "0.18.7", "find_args": "MODULE GLOBAL", "patches": [ - "0001-mingw.patch" + "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": "crueter/cpp-jwt", - "sha": "9eaea6328f", - "hash": "35b0b2bfb143585c7b2bd6dc6ca7df5ae5c6e2681000b2ebca077b0ac4bc1e6b6afbe1ce8e47f6d2edad12fcc6404f677acc2ad205661d819b8821ce6f4823fd", + "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_sun": { - "package": "xbyak", - "repo": "herumi/xbyak", - "tag": "v%VERSION%", - "hash": "b40dade90fb0e46a2bd52934f7ce461e37be931b571e58cbe2203bc08ed5b54c7ff1a29026c74c7f9805e4e3f6c9636deca528e6b4a8093ce7eae145218599f1", - "git_version": "7.29", - "bundled": true, - "skip_updates": true - }, "xbyak": { "package": "xbyak", "repo": "herumi/xbyak", "tag": "v%VERSION%", - "hash": "1042090405c426e339506c179d53e91d4d545ce9c9f53d8f797caa092d589f913a9bcb9c8f31c4c60870acb954c556e305fb6732c66bc3c8f1cd924f9172def9", - "git_version": "7.22", - "bundled": true, - "skip_updates": true + "hash": "b6475276b2faaeb315734ea8f4f8bd87ededcee768961b39679bee547e7f3e98884d8b7851e176d861dab30a80a76e6ea302f8c111483607dde969b4797ea95a", + "git_version": "7.35.2" }, "oaknut": { "repo": "eden-emulator/oaknut", @@ -75,9 +69,9 @@ "hash": "9697e80a7d5d9bcb3ce51051a9a24962fb90ca79d215f1f03ae6b58da8ba13a63b5dda1b4dde3d26ac6445029696b8ef2883f4e5a777b342bba01283ed293856" }, "libadrenotools": { - "repo": "bylaws/libadrenotools", - "sha": "8fae8ce254", - "hash": "db4a74ce15559c75e01d1868a90701519b655d77f2a343bbee283a42f8332dc9046960fb022dc969f205e457348a3f99cb8be6e1cd91264d2ae1235294b9f9b2", + "repo": "eden-emulator/libadrenotools", + "sha": "8ba23b42d7", + "hash": "f6526620cb752876edc5ed4c0925d57b873a8218ee09ad10859ee476e9333259784f61c1dcc55a2bcba597352d18aff22cd2e4c1925ec2ae94074e09d7da2265", "patches": [ "0001-linkerns-cpm.patch" ] @@ -92,23 +86,12 @@ "unordered-dense": { "package": "unordered_dense", "repo": "martinus/unordered_dense", - "tag": "v%VERSION%", - "hash": "f9c819e28e1c1a387acfee09277d6af5e366597a0d39acf1c687acf0608a941ba966af8aaebdb8fba0126c7360269c4a51754ef4cab17c35c01a30215f953368", + "sha": "7b55cab841", + "hash": "d2106f6640f6bfb81755e4b8bfb64982e46ec4a507cacdb38f940123212ccf35a20b43c70c6f01d7bfb8c246d1a16f7845d8052971949cea9def1475e3fa02c8", "find_args": "CONFIG", - "git_version": "4.5.0" - }, - "mbedtls": { - "package": "MbedTLS", - "repo": "Mbed-TLS/mbedtls", - "tag": "mbedtls-%VERSION%", - "hash": "6671fb8fcaa832e5b115dfdce8f78baa6a4aea71f5c89a640583634cdee27aefe3bf4be075744da91f7c3ae5ea4e0c765c8fc3937b5cfd9ea73d87ef496524da", - "version": "3", - "git_version": "3.6.4", - "artifact": "%TAG%.tar.bz2", - "skip_updates": true, + "bundled": true, "patches": [ - "0002-aesni-fix.patch", - "0003-aesni-fix.patch" + "0001-avoid-memset-when-clearing-an-empty-table.patch" ] }, "enet": { @@ -119,33 +102,25 @@ "git_version": "1.3.18", "find_args": "MODULE" }, - "vulkan-utility-headers": { - "package": "VulkanUtilityLibraries", - "repo": "scripts/VulkanUtilityHeaders", - "tag": "%VERSION%", - "git_version": "1.4.328", - "artifact": "VulkanUtilityHeaders.tar.zst", - "git_host": "git.crueter.xyz", - "hash": "9922217b39faf73cd4fc1510f2fdba14a49aa5c0d77f9ee24ee0512cef16b234d0cabc83c1fec861fa5df1d43e7f086ca9b6501753899119f39c5ca530cb0dae" - }, "spirv-tools": { "package": "SPIRV-Tools", - "repo": "crueter/SPIRV-Tools", - "sha": "2fa2d44485", - "hash": "3124bbddf7bd44f11445edeca6786b5bba9fb314f27dc087d0bbd9951b0936884ece2b9b40b75cfc8e31ab10ba55854e73aa63df835c40423b1c81dd47b1437d", + "repo": "KhronosGroup/SPIRV-Tools", + "sha": "0a7e28689a", + "hash": "eadfcceb82f4b414528d99962335e4f806101168474028f3cf7691ac40c37f323decf2a42c525e2d5bfa6f14ff132d6c5cf9b87c151490efad01f5e13ade1520", "git_version": "2025.4", "options": [ "SPIRV_SKIP_EXECUTABLES ON" ], "patches": [ - "0001-netbsd-fix.patch" + "0001-netbsd-fix.patch", + "0002-allow-static-only.patch" ] }, "spirv-headers": { "package": "SPIRV-Headers", "repo": "KhronosGroup/SPIRV-Headers", - "sha": "01e0577914", - "hash": "e2b90e95b6f492e640cd27c090d7072f0d03c8fc7382be67cbe176fc8f3fdd78b59f5f0b906198e09808fde645427f409cb9ab8fe4843de7f7dc5b510d454a0a", + "sha": "04f10f650d", + "hash": "cae8cd179c9013068876908fecc1d158168310ad6ac250398a41f0f5206ceff6469e2aaeab9c820bce9d1b08950c725c89c46e94b89a692be9805432cf749396", "options": [ "SPIRV_WERROR OFF" ] @@ -167,16 +142,16 @@ "package": "SDL2", "name": "SDL2", "repo": "crueter-ci/SDL2", - "version": "2.32.10-38e0094637", + "version": "2.32.10-3c28e8ecc0", "min_version": "2.26.4" }, "catch2": { "package": "Catch2", "repo": "catchorg/Catch2", "tag": "v%VERSION%", - "hash": "a95495142f915d6e9c2a23e80fe360343e9097680066a2f9d3037a070ba5f81ee5559a0407cc9e972dc2afae325873f1fc7ea07a64012c0f01aac6e549f03e3f", + "hash": "7eea385d79d88a5690cde131fe7ccda97d5c54ea09d6f515000d7bf07c828809d61c1ac99912c1ee507cf933f61c1c47ecdcc45df7850ffa82714034b0fccf35", "version": "3.0.1", - "git_version": "3.11.0", + "git_version": "3.13.0", "patches": [ "0001-solaris-isnan-fix.patch" ] @@ -184,24 +159,23 @@ "discord-rpc": { "package": "DiscordRPC", "repo": "eden-emulator/discord-rpc", - "sha": "1cf7772bb6", - "hash": "9a6c35887dcacceb4ba1bf3141edb73b05b2abc719a8d81dad9cb9dd5b039ce203946787335d9d738af669c10cf2534638b645635a22096fc28dcae2475e0cbe", + "sha": "0d8b2d6a37", + "hash": "8213c43dcb0f7d479f5861091d111ed12fbdec1e62e6d729d65a4bc181d82f48a35d5fd3cd5c291f2393ac7c9681eabc6b76609755f55376284c8a8d67e148f3", "find_args": "MODULE" }, "simpleini": { "package": "SimpleIni", "repo": "brofield/simpleini", "tag": "v%VERSION%", - "hash": "6c198636816a0018adbf7f735d402c64245c6fcd540b7360d4388d46f007f3a520686cdaec4705cb8cb31401b2cb4797a80b42ea5d08a6a5807c0848386f7ca1", + "hash": "b937c18a7b6277d77ca7ebfb216af4984810f77af4c32d101b7685369a4bd5eb61406223f82698e167e6311a728d07415ab59639fdf19eff71ad6dc2abfda989", "find_args": "MODULE", - "git_version": "4.22" + "git_version": "4.25" }, "sdl2_generic": { "package": "SDL2", "repo": "libsdl-org/SDL", "tag": "release-%VERSION%", "hash": "d5622d6bb7266f7942a7b8ad43e8a22524893bf0c2ea1af91204838d9b78d32768843f6faa248757427b8404b8c6443776d4afa6b672cd8571a4e0c03a829383", - "key": "generic", "bundled": true, "git_version": "2.32.10", "skip_updates": true @@ -211,8 +185,84 @@ "repo": "libsdl-org/SDL", "sha": "cc016b0046", "hash": "b8d9873446cdb922387471df9968e078714683046674ef0d0edddf8e25da65a539a3bae83d635496b970237f90b07b36a69f8d7855d450de59311d6d6e8c3dbc", - "key": "steamdeck", "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 58461d8934..3140f8e545 100644 --- a/externals/ffmpeg/CMakeLists.txt +++ b/externals/ffmpeg/CMakeLists.txt @@ -4,8 +4,6 @@ # SPDX-FileCopyrightText: 2021 yuzu Emulator Project # SPDX-License-Identifier: GPL-2.0-or-later -include(CPMUtil) - # TODO(crueter, MaranBr): Externals FFmpeg 8.0 set(FFmpeg_HWACCEL_LIBRARIES) @@ -114,16 +112,6 @@ if (UNIX AND NOT ANDROID) endif() if (YUZU_USE_BUNDLED_FFMPEG) - # MSVC conflicts with ksuser otherwise - # MinGW has the funny quirk of requiring avutil after avcodec - # Android needs some deps to be compiled with PIC (TODO) - # TODO(crueter) fix - if (ANDROID) - set(BUILD_SHARED_LIBS ON) - else() - set(BUILD_SHARED_LIBS OFF) - endif() - AddJsonPackage(ffmpeg-ci) set(FFmpeg_INCLUDE_DIR @@ -227,7 +215,6 @@ else() --disable-ffmpeg --disable-ffprobe --disable-network - --disable-postproc --disable-swresample --enable-decoder=h264 --enable-decoder=vp8 diff --git a/externals/ffmpeg/cpmfile.json b/externals/ffmpeg/cpmfile.json deleted file mode 100644 index 0baeeb4713..0000000000 --- a/externals/ffmpeg/cpmfile.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "ffmpeg": { - "repo": "FFmpeg/FFmpeg", - "sha": "c2184b65d2", - "hash": "007b1ccdd4d3ea3324835258d9a255103253bd66edb442b12d9c60dca85149cad52136a3b3120e5094115b6a3d9e80eeacbf9c07e5ffafc9ac459614d5fa3b22", - "bundled": true - }, - "ffmpeg-ci": { - "ci": true, - "package": "FFmpeg", - "name": "ffmpeg", - "repo": "crueter-ci/FFmpeg", - "version": "8.0-be99d2c0b2", - "min_version": "4.1" - } -} 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 a53464ea98..47b54f43cc 100644 --- a/externals/libusb/CMakeLists.txt +++ b/externals/libusb/CMakeLists.txt @@ -1,11 +1,9 @@ -# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +# 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 -include(CPMUtil) - AddJsonPackage(libusb) if (NOT libusb_ADDED) @@ -234,7 +232,7 @@ else() # MINGW OR (${CMAKE_SYSTEM_NAME} MATCHES "Linux") ) 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}") diff --git a/externals/libusb/cpmfile.json b/externals/libusb/cpmfile.json deleted file mode 100644 index 4abe225ab3..0000000000 --- a/externals/libusb/cpmfile.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "libusb": { - "repo": "libusb/libusb", - "tag": "v%VERSION%", - "hash": "98c5f7940ff06b25c9aa65aa98e23de4c79a4c1067595f4c73cc145af23a1c286639e1ba11185cd91bab702081f307b973f08a4c9746576dc8d01b3620a3aeb5", - "find_args": "MODULE", - "git_version": "1.0.29", - "patches": [ - "0001-netbsd-gettime.patch" - ] - } -} diff --git a/externals/nx_tzdb/CMakeLists.txt b/externals/nx_tzdb/CMakeLists.txt index efb3e2b058..a82bf0b132 100644 --- a/externals/nx_tzdb/CMakeLists.txt +++ b/externals/nx_tzdb/CMakeLists.txt @@ -1,11 +1,9 @@ -# 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 # SPDX-License-Identifier: GPL-2.0-or-later -include(CPMUtil) - set(NX_TZDB_INCLUDE_DIR "${CMAKE_CURRENT_BINARY_DIR}/include") add_library(nx_tzdb INTERFACE) @@ -35,7 +33,7 @@ endif() if(NOT YUZU_TZDB_PATH STREQUAL "") set(NX_TZDB_BASE_DIR "${YUZU_TZDB_PATH}") -elseif (MSVC AND NOT CXX_CLANG AND YUZU_ENABLE_LTO) +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") diff --git a/externals/nx_tzdb/cpmfile.json b/externals/nx_tzdb/cpmfile.json deleted file mode 100644 index 908201564f..0000000000 --- a/externals/nx_tzdb/cpmfile.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "tzdb": { - "package": "nx_tzdb", - "repo": "misc/tzdb_to_nx", - "git_host": "git.crueter.xyz", - "artifact": "%VERSION%.tar.gz", - "tag": "%VERSION%", - "hash": "dc37a189a44ce8b5c988ca550582431a6c7eadfd3c6e709bee6277116ee803e714333e85c9e6cbb5c69346a14d6f2cc7ed96e8aa09cc5fb8a89f945059651db6", - "version": "121125" - } -} diff --git a/externals/renderdoc/renderdoc_app.h b/externals/renderdoc/renderdoc_app.h index e6c1511deb..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 @@ -72,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 // @@ -564,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 // @@ -592,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: @@ -622,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; @@ -701,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/shell.nix b/shell.nix index 3c91286738..d8257b88d9 100644 --- a/shell.nix +++ b/shell.nix @@ -9,7 +9,7 @@ pkgs.mkShellNoCC { # libraries openssl boost fmt nlohmann_json lz4 zlib zstd enet libopus vulkan-headers vulkan-utility-libraries - spirv-tools spirv-headers vulkan-loader unzip mbedtls + spirv-tools spirv-headers vulkan-loader unzip glslang python3 httplib cpp-jwt ffmpeg-headless libusb1 cubeb # eden @@ -20,4 +20,4 @@ pkgs.mkShellNoCC { # optional components discord-rpc gamemode ]; -} \ No newline at end of file +} diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 2510458812..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,6 +17,14 @@ 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 AND NOT CXX_CLANG) set(CMAKE_CONFIGURATION_TYPES Debug Release CACHE STRING "" FORCE) @@ -87,6 +95,10 @@ if (MSVC AND NOT CXX_CLANG) /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 (NOT CXX_CLANG) @@ -101,53 +113,47 @@ if (MSVC AND NOT CXX_CLANG) 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() if (NOT MSVC) add_compile_options( - -fwrapv - ) + $<$:-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 - ) + $<$:-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 - ) + $<$:-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 - ) + $<$:-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 CXX_CLANG) - add_compile_options("-stdlib=libc++") + add_compile_options($<$:-stdlib=libc++>) endif() # GCC bugs @@ -155,10 +161,9 @@ else() # 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. @@ -170,25 +175,18 @@ else() add_compile_definitions(_FILE_OFFSET_BITS=64) endif() - if (YUZU_STATIC_BUILD) - add_compile_definitions(QT_STATICPLUGIN) + if (YUZU_STATIC_BUILD AND NOT APPLE) + add_compile_options(-static) - # macos doesn't even let you make static executables... wtf? - if (NOT APPLE) - add_compile_options(-static) - if (YUZU_STATIC_BUILD) - # yuzu-cmd requires us to explicitly link libpthread, libgcc, and libstdc++ as static - # At a guess, it's probably because Qt handles the Qt executable for us, whereas this does not - add_link_options(-static -lpthread) - add_link_options(-static-libgcc -static-libstdc++) - endif() - endif() + # 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_compile_definitions(MINGW_HAS_SECURE_API) - # Only windows has this requirement, thanks windows + # Only windows has this requirement if (WIN32 AND ARCHITECTURE_x86_64) add_compile_options("-msse4.1") endif() @@ -205,35 +203,39 @@ 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_definitions(-DYUZU_QT_WIDGETS) 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 b03ae732d4..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,6 +29,8 @@ plugins { */ val autoVersion = (((System.currentTimeMillis() / 1000) - 1451606400) / 10).toInt() +val edenDir = project(":Eden").projectDir + @Suppress("UnstableApiUsage") android { namespace = "org.yuzu.yuzu_emu" @@ -33,9 +38,11 @@ android { compileSdkVersion = "android-36" ndkVersion = "28.2.13676358" + val isNightly = + providers.gradleProperty("nightly").orNull?.toBooleanStrictOrNull() ?: false + buildFeatures { viewBinding = true - buildConfig = true } compileOptions { @@ -61,28 +68,18 @@ android { minSdk = 24 targetSdk = 36 versionName = getGitVersion() - versionCode = autoVersion - ndk { - @SuppressLint("ChromeOsAbiSupport") - abiFilters += listOf("arm64-v8a") - } - - buildConfigField("String", "GIT_HASH", "\"${getGitHash()}\"") - buildConfigField("String", "BRANCH", "\"${getBranch()}\"") - externalNativeBuild { cmake { val extraCMakeArgs = (project.findProperty("YUZU_ANDROID_ARGS") as String?)?.split("\\s+".toRegex()) ?: emptyList() + arguments.addAll( listOf( "-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", "-DCPMUTIL_FORCE_BUNDLED=ON", @@ -92,14 +89,21 @@ android { "-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") signingConfigs { if (keystoreFile != null) { @@ -118,6 +122,9 @@ 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. @@ -128,10 +135,17 @@ android { signingConfigs.getByName("default") } + 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" ) } @@ -143,9 +157,12 @@ android { 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 @@ -159,63 +176,73 @@ android { isJniDebuggable = true versionNameSuffix = "-debug" applicationIdSuffix = ".debug" + + manifestPlaceholders += mapOf("appNameSuffix" to " Debug") } } - // this is really annoying but idk any other ways to fix this behavior - applicationVariants.all { - val variant = this - when { - variant.flavorName == "legacy" && variant.buildType.name == "debug" -> { - variant.resValue("string", "app_name_suffixed", "Eden Legacy Debug") - } - variant.flavorName == "mainline" && variant.buildType.name == "debug" -> { - variant.resValue("string", "app_name_suffixed", "Eden Debug") - } - variant.flavorName == "genshinSpoof" && variant.buildType.name == "debug" -> { - variant.resValue("string", "app_name_suffixed", "Eden Optimized Debug") - } - variant.flavorName == "legacy" && variant.buildType.name == "relWithDebInfo" -> { - variant.resValue("string", "app_name_suffixed", "Eden Legacy Debug Release") - } - variant.flavorName == "mainline" && variant.buildType.name == "relWithDebInfo" -> { - variant.resValue("string", "app_name_suffixed", "Eden Debug Release") - } - variant.flavorName == "genshinSpoof" && variant.buildType.name == "relWithDebInfo" -> { - variant.resValue("string", "app_name_suffixed", "Eden Optimized Debug Release") + // 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") } } - } - android { - flavorDimensions.add("version") - productFlavors { - create("mainline") { - dimension = "version" - resValue("string", "app_name_suffixed", "Eden") + 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("genshinSpoof") { - dimension = "version" - resValue("string", "app_name_suffixed", "Eden Optimized") - applicationId = "com.miHoYo.Yuanshen" - } + create("legacy") { + dimension = "version" + manifestPlaceholders += mapOf("appNameBase" to "Eden Legacy") + resValue("string", "app_name_suffixed", "Eden Legacy") + applicationId = "dev.legacy.eden_emulator" - create("legacy") { - dimension = "version" - resValue("string", "app_name_suffixed", "Eden Legacy") - applicationId = "dev.legacy.eden_emulator" - - externalNativeBuild { - cmake { - arguments.add("-DYUZU_LEGACY=ON") - } + externalNativeBuild { + cmake { + arguments.add("-DYUZU_LEGACY=ON") } + } - sourceSets { - getByName("legacy") { - res.srcDirs("src/main/legacy") - } + 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") } } } @@ -224,11 +251,29 @@ android { externalNativeBuild { cmake { version = "3.22.1" - path = file("../../../CMakeLists.txt") + path = file("${edenDir}/CMakeLists.txt") } } + + productFlavors.all { + val currentName = manifestPlaceholders["appNameBase"] as? String ?: "Eden" + val suffix = if (isNightly) " Nightly" else "" + + // 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")) + } +} tasks.register("ktlintReset", fun Delete.() { delete(File(layout.buildDirectory.toString() + File.separator + "intermediates/ktLint")) @@ -237,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() } @@ -284,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") @@ -302,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") @@ -327,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 45c5dfef8c..b899ca07fa 100644 --- a/src/android/app/src/main/AndroidManifest.xml +++ b/src/android/app/src/main/AndroidManifest.xml @@ -24,18 +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 18ace18393..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,6 +205,26 @@ 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 */ @@ -215,18 +240,33 @@ object NativeLibrary { /** * Checks for available updates. */ - external fun checkForUpdate(): String? + 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, @@ -445,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. * @@ -556,6 +607,12 @@ 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 */ @@ -585,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 0ba8519f92..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 @@ -24,6 +24,7 @@ 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 @@ -61,12 +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() } 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 58598ccdc4..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 @@ -18,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 @@ -63,11 +69,12 @@ 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 @@ -85,6 +92,28 @@ 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)) @@ -126,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 @@ -140,6 +189,9 @@ 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) @@ -194,21 +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() { @@ -223,22 +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 && - event.source and InputDevice.SOURCE_KEYBOARD != InputDevice.SOURCE_KEYBOARD && - event.source and InputDevice.SOURCE_MOUSE != InputDevice.SOURCE_MOUSE + + 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) } @@ -247,12 +417,17 @@ 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 ) { @@ -268,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 @@ -510,10 +732,12 @@ class EmulationActivity : AppCompatActivity(), SensorEventListener { when (event.action) { MotionEvent.ACTION_DOWN -> { touchDownTime = System.currentTimeMillis() - // show overlay immediately on touch and cancel timer - if (!emulationViewModel.drawerOpen.value) { + // 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.showOverlay() + fragment.toggleOverlay(true) } } MotionEvent.ACTION_UP -> { @@ -535,19 +759,48 @@ class EmulationActivity : AppCompatActivity(), SensorEventListener { } 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) } @@ -570,6 +823,12 @@ 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) @@ -583,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 2be91ba46a..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,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,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 @@ -31,14 +32,29 @@ class AddonAdapter(val addonViewModel: AddonViewModel) : binding.addonSwitch.isChecked = model.enabled binding.addonSwitch.setOnCheckedChangeListener { _, checked -> - model.enabled = checked + if (PatchType.from(model.type) == PatchType.Update && checked) { + addonViewModel.enableOnlyThisUpdate(model) + notifyDataSetChanged() + } else { + model.enabled = checked + } } - val deleteAction = { - 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) } - binding.deleteCard.setOnClickListener { deleteAction() } - binding.buttonDelete.setOnClickListener { deleteAction() } } } } 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/GamePropertiesAdapter.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/adapters/GamePropertiesAdapter.kt index a8ec82e560..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,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,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 @@ -89,29 +91,33 @@ class GamePropertiesAdapter( val hasVisibleActions = submenuProperty.secondaryActions?.any { it.isShown } == true + binding.layoutSecondaryActions.removeAllViews() + binding.dividerSecondaryActions.setVisible(false) if (hasVisibleActions) { - binding.dividerSecondaryActions.setVisible(true) binding.layoutSecondaryActions.setVisible(true) - submenuProperty.secondaryActions!!.forEach { secondaryAction -> - if (secondaryAction.isShown) { - val button = com.google.android.material.button.MaterialButton( - binding.root.context, - null, - com.google.android.material.R.attr.materialButtonOutlinedStyle - ).apply { - setIconResource(secondaryAction.iconId) - iconSize = (18 * binding.root.context.resources.displayMetrics.density).toInt() - text = binding.root.context.getString(secondaryAction.descriptionId) - contentDescription = binding.root.context.getString(secondaryAction.descriptionId) - setOnClickListener { secondaryAction.action.invoke() } - } - binding.layoutSecondaryActions.addView(button) + 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.dividerSecondaryActions.setVisible(false) 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 5c21ea7dc1..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 @@ -14,48 +14,55 @@ enum class BooleanSetting(override val key: String) : AbstractBooleanSetting { 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"), - - 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"), @@ -69,8 +76,17 @@ enum class BooleanSetting(override val key: String) : AbstractBooleanSetting { SHOW_SHADERS_BUILDING("show_shaders_building"), DEBUG_FLUSH_BY_LINE("flush_line"), - USE_LRU_CACHE("use_lru_cache"); + DONT_SHOW_DRIVER_SHADER_WARNING("dont_show_driver_shader_warning"), + ENABLE_OVERLAY("enable_overlay"), + // 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 3bccc97607..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,15 @@ 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"), @@ -41,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"), @@ -61,7 +66,9 @@ enum class IntSetting(override val key: String) : AbstractIntSetting { LOGIN_SHARE_APPLET("login_share_applet_mode"), WIFI_WEB_AUTH_APPLET("wifi_web_auth_applet_mode"), MY_PAGE_APPLET("my_page_applet_mode"), - INPUT_OVERLAY_AUTO_HIDE("input_overlay_auto_hide") + 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 2992ba2e0c..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 @@ -25,14 +25,19 @@ object Settings { SECTION_INPUT_PLAYER_SEVEN, SECTION_INPUT_PLAYER_EIGHT, 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_MEMORY_WARNING_SHOWN = "MemoryWarningShown" @@ -99,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 716d3aae56..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 @@ -97,8 +102,12 @@ abstract class SettingsItem( 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 = "" @@ -116,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, @@ -132,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, @@ -141,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 = "%" @@ -178,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, @@ -229,21 +237,6 @@ abstract class SettingsItem( override fun reset() = BooleanSetting.USE_DOCKED_MODE.reset() } - 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( @@ -319,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, @@ -350,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, @@ -379,6 +355,37 @@ 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, @@ -395,6 +402,13 @@ abstract class SettingsItem( 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( @@ -431,7 +445,7 @@ abstract class SettingsItem( SwitchSetting( BooleanSetting.SHOW_FRAMETIME, R.string.show_frametime, - descriptionId = R.string.show_frametime_description + descriptionId = 0 ) ) put( @@ -452,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( @@ -482,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 ) ) @@ -602,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, @@ -627,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, @@ -644,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( @@ -683,6 +749,13 @@ 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, @@ -699,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( @@ -755,6 +835,28 @@ abstract class SettingsItem( 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( @@ -773,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, @@ -780,6 +890,72 @@ 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.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 + ) + ) val fastmem = object : AbstractBooleanSetting { override fun getBoolean(needsGlobal: Boolean): Boolean = @@ -795,6 +971,7 @@ abstract class SettingsItem( override val isRuntimeModifiable: Boolean = false override val defaultValue: Boolean = true override val isSwitchable: Boolean = true + override val pairedSettingKey: String = "" override var global: Boolean get() { return BooleanSetting.FASTMEM.global && @@ -831,7 +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/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/SettingsActivity.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsActivity.kt index dd932fcafb..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,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 @@ -103,6 +103,7 @@ class SettingsActivity : AppCompatActivity() { ) setInsets() + applyFullscreenPreference() } fun navigateBack() { @@ -122,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...") @@ -188,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 71a3e54cb3..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,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 @@ -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 @@ -93,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) } @@ -205,8 +218,20 @@ class SettingsAdapter( } 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) { @@ -442,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 51d0455fd5..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 @@ -29,6 +29,7 @@ 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 @@ -68,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, @@ -107,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() } @@ -186,20 +194,6 @@ class SettingsDialogFragment : DialogFragment(), DialogInterface.OnClickListener updateButtonState(isValid) } - spinboxBinding.buttonDecrement.setOnClickListener { - val current = spinboxBinding.editValue.text.toString().toIntOrNull() ?: currentValue - val newValue = current - 1 - spinboxBinding.editValue.setText(newValue.toString()) - updateValidity(newValue) - } - - spinboxBinding.buttonIncrement.setOnClickListener { - val current = spinboxBinding.editValue.text.toString().toIntOrNull() ?: currentValue - val newValue = current + 1 - spinboxBinding.editValue.setText(newValue.toString()) - updateValidity(newValue) - } - fun attachRepeat(button: View, delta: Int) { val handler = Handler(Looper.getMainLooper()) var runnable: Runnable? = null @@ -388,6 +382,10 @@ class SettingsDialogFragment : DialogFragment(), DialogInterface.OnClickListener } 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 @@ -432,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 b495206bb2..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 @@ -107,8 +128,9 @@ class SettingsFragmentPresenter( MenuTag.SECTION_INPUT_PLAYER_EIGHT -> addInputPlayer(sl, 7) 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) { @@ -179,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, @@ -195,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, @@ -211,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)) @@ -272,8 +334,22 @@ 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) } } @@ -285,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) @@ -449,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.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.CPUOPT_UNSAFE_HOST_MMU.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) { @@ -1027,7 +1074,10 @@ 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) + } } add(HeaderSetting(R.string.app_settings)) @@ -1037,29 +1087,11 @@ class SettingsFragmentPresenter( 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)) - - 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 themeMode: AbstractIntSetting = object : AbstractIntSetting { override fun getInt(needsGlobal: Boolean): Int = IntSetting.THEME_MODE.getInt() override fun setInt(value: Int) { @@ -1081,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, @@ -1112,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 = @@ -1152,23 +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(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) + } + } + + 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 d47e33244e..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 @@ -59,6 +59,16 @@ class SettingsViewModel : ViewModel() { 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 } @@ -112,6 +122,18 @@ class SettingsViewModel : ViewModel() { _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/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 dea762dc17..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 T22", + 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 2c30f94bc7..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.* @@ -49,12 +50,14 @@ 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 @@ -68,12 +71,14 @@ 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 @@ -85,17 +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 java.io.ByteArrayOutputStream import java.io.File -import kotlin.coroutines.coroutineContext +import java.nio.ByteBuffer import kotlin.coroutines.resume import kotlin.coroutines.suspendCoroutine +import kotlin.or class EmulationFragment : Fragment(), SurfaceHolder.Callback { private lateinit var emulationState: EmulationState @@ -105,7 +113,10 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { private var socUpdater: (() -> Unit)? = null val handler = Handler(Looper.getMainLooper()) - private var isOverlayVisible = true + + private var controllerInputReceived = false + private var hasPhysicalControllerConnected = false + private var overlayHiddenByPhysicalController = false private var _binding: FragmentEmulationBinding? = null @@ -123,15 +134,27 @@ 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 @@ -201,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 @@ -217,6 +244,14 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { } } + if (emulationViewModel.isEmulationStopping.value) { + deferGameSetupUntilStopCompletes = true + if (game == null) { + game = args.game ?: intentGame + } + return + } + finishGameSetup() } @@ -239,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( @@ -275,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!!) @@ -299,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 } } @@ -558,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" @@ -568,16 +622,54 @@ 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() } @@ -601,6 +693,11 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { 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) { @@ -614,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) { @@ -641,11 +754,9 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { when (it.itemId) { R.id.menu_pause_emulation -> { if (emulationState.isPaused) { - emulationState.run(false) - updatePauseMenuEntry(false) + resumeEmulationFromUi() } else { - emulationState.pause() - updatePauseMenuEntry(true) + pauseEmulationAndCaptureFrame() } binding.inGameMenu.requestFocus() true @@ -653,9 +764,8 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { R.id.menu_quick_overlay -> { val newState = !BooleanSetting.SHOW_INPUT_OVERLAY.getBoolean() - BooleanSetting.SHOW_INPUT_OVERLAY.setBoolean(newState) - updateQuickOverlayMenuEntry(newState) - binding.surfaceInputOverlay.refreshControls() + toggleOverlay(newState) + updateQuickOverlayMenuEntry(BooleanSetting.SHOW_INPUT_OVERLAY.getBoolean()) NativeConfig.saveGlobalConfig() true } @@ -666,16 +776,24 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { 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 } @@ -729,6 +847,7 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { } R.id.menu_exit -> { + clearPausedFrame() emulationState.stop() NativeConfig.reloadGlobalConfig() emulationViewModel.setIsEmulationStopping(true) @@ -741,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( @@ -755,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 @@ -824,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) { @@ -860,26 +1019,24 @@ 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) val b = _binding ?: return @@ -894,9 +1051,13 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { b.surfaceInputOverlay.setVisible(visible = false, gone = false) } } else { - b.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) { b.surfaceInputOverlay.layout = OverlayLayout.Portrait @@ -916,6 +1077,134 @@ 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 @@ -957,6 +1246,71 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { } } + 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 @@ -1050,8 +1404,9 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { override fun onPause() { if (this::emulationState.isInitialized) { if (emulationState.isRunning && emulationActivity?.isInPictureInPictureMode != true) { - emulationState.pause() - updatePauseMenuEntry(true) + pauseEmulationAndCaptureFrame() + } else { + updatePausedFrameVisibility() } } super.onPause() @@ -1061,12 +1416,19 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { 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() } @@ -1080,6 +1442,7 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { b.inGameMenu.post { if (!this::emulationState.isInitialized || _binding == null) return@post updatePauseMenuEntry(emulationState.isPaused) + updatePausedFrameVisibility() } } @@ -1087,6 +1450,7 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { // we need to reinitialize the auto-hide timer initializeOverlayAutoHide() + addQuickSettings() } private fun resetInputOverlay() { @@ -1100,7 +1464,7 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { @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( @@ -1109,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 && @@ -1127,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) } @@ -1300,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( @@ -1309,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) { @@ -1340,8 +1709,7 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { NativeConfig.isPerGameConfigLoaded() ) ) { - if (sb.isNotEmpty()) sb.append(" | ") - sb.append(Build.SOC_MODEL) + appendWithPipe(Build.SOC_MODEL) } } @@ -1349,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() @@ -1515,13 +1882,78 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { // 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) @@ -1538,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() } @@ -1566,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 @@ -1614,9 +2055,7 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { R.id.menu_show_overlay -> { it.isChecked = !it.isChecked - BooleanSetting.SHOW_INPUT_OVERLAY.setBoolean(it.isChecked) - updateQuickOverlayMenuEntry(it.isChecked) - binding.surfaceInputOverlay.refreshControls() + toggleOverlay(it.isChecked) true } @@ -1751,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( @@ -1785,6 +2244,7 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { state = State.STOPPED } else { Log.warning("[EmulationFragment] Stop called while already stopped.") + NativeLibrary.stopEmulation() } } @@ -1818,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() @@ -1839,7 +2322,7 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { @Synchronized fun updateSurface() { - if (surface != null) { + if (surface != null && state == State.RUNNING) { NativeLibrary.surfaceChanged(surface) } } @@ -1855,20 +2338,20 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { @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." ) } @@ -1876,29 +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() - NativeLibrary.playTimeManagerStart() + 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 { @@ -1914,7 +2403,7 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { companion object { fun fromValue(value: Int): AmiiboState = - values().firstOrNull { it.value == value } ?: Disabled + entries.firstOrNull { it.value == value } ?: Disabled } } @@ -1927,7 +2416,7 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { companion object { fun fromValue(value: Int): AmiiboLoadResult = - values().firstOrNull { it.value == value } ?: Unknown + entries.firstOrNull { it.value == value } ?: Unknown } } @@ -1940,58 +2429,124 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { private fun startOverlayAutoHideTimer(seconds: Int) { handler.removeCallbacksAndMessages(null) + val showInputOverlay = BooleanSetting.SHOW_INPUT_OVERLAY.getBoolean() handler.postDelayed({ - if (isOverlayVisible) { - hideOverlay() + if (showInputOverlay && isAdded && _binding != null) { + if (overlayTouchActive) { + startOverlayAutoHideTimer(seconds) + } else { + autoHideOverlay() + } } }, seconds * 1000L) } fun handleScreenTap(isLongTap: Boolean) { - val autoHideSeconds = IntSetting.INPUT_OVERLAY_AUTO_HIDE.getInt() - val shouldProceed = BooleanSetting.SHOW_INPUT_OVERLAY.getBoolean() && BooleanSetting.ENABLE_INPUT_OVERLAY_AUTO_HIDE.getBoolean() - - if (!shouldProceed) { - return - } - + if (!isAdded || _binding == null) return + if (binding.surfaceInputOverlay.isGamelessMode()) return + if (!BooleanSetting.ENABLE_INPUT_OVERLAY_AUTO_HIDE.getBoolean()) return // failsafe - if (autoHideSeconds == 0) { - showOverlay() - return - } - - if (!isOverlayVisible && !isLongTap) { - showOverlay() - } - - startOverlayAutoHideTimer(autoHideSeconds) - } - - private fun initializeOverlayAutoHide() { val autoHideSeconds = IntSetting.INPUT_OVERLAY_AUTO_HIDE.getInt() - val autoHideEnabled = BooleanSetting.ENABLE_INPUT_OVERLAY_AUTO_HIDE.getBoolean() - val showOverlay = BooleanSetting.SHOW_INPUT_OVERLAY.getBoolean() - - if (autoHideEnabled && showOverlay) { - showOverlay() + 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 - fun showOverlay() { - if (!isOverlayVisible) { - isOverlayVisible = true - ViewUtils.showView(binding.surfaceInputOverlay, 500) + 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 hideOverlay() { - if (isOverlayVisible) { - isOverlayVisible = false - ViewUtils.hideView(binding.surfaceInputOverlay, 500) + 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 6861916430..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,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 @@ -35,6 +35,8 @@ 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 @@ -45,6 +47,7 @@ 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 @@ -60,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() @@ -117,6 +121,20 @@ class GamePropertiesFragment : Fragment() { .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( @@ -132,8 +150,11 @@ class GamePropertiesFragment : Fragment() { } override fun onDestroy() { + val isChangingConfigurations = activity?.isChangingConfigurations == true super.onDestroy() - gamesViewModel.reloadGames(true) + if (!isChangingConfigurations) { + gamesViewModel.reloadGames(true) + } } private fun getPlayTime() { @@ -145,13 +166,12 @@ class GamePropertiesFragment : Fragment() { val seconds = playTimeSeconds % 60 val readablePlayTime = when { - hours > 0 -> "${hours}h ${minutes}m ${seconds}s" - minutes > 0 -> "${minutes}m ${seconds}s" - else -> "${seconds}s" - } + 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)) - append(readablePlayTime) + append(getString(R.string.playtime) + " " + readablePlayTime) } binding.playtime.setOnClickListener { @@ -251,8 +271,10 @@ class GamePropertiesFragment : Fragment() { R.string.info_description, R.drawable.ic_info_outline, action = { - val action = GamePropertiesFragmentDirections - .actionPerGamePropertiesFragmentToGameInfoFragment(args.game) + val action = HomeNavigationDirections.actionGlobalSettingsSubscreenActivity( + SettingsSubscreen.GAME_INFO, + args.game + ) binding.root.findNavController().navigate(action) } ) @@ -311,6 +333,24 @@ class GamePropertiesFragment : Fragment() { ) ) + 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( @@ -319,8 +359,28 @@ class GamePropertiesFragment : Fragment() { R.drawable.ic_build, detailsFlow = driverViewModel.selectedDriverTitle, action = { - val action = GamePropertiesFragmentDirections - .actionPerGamePropertiesFragmentToDriverManagerFragment(args.game) + 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) } ) @@ -328,18 +388,6 @@ class GamePropertiesFragment : Fragment() { } if (!args.game.isHomebrew) { - add( - SubmenuProperty( - R.string.add_ons, - R.string.add_ons_description, - R.drawable.ic_edit, - action = { - val action = GamePropertiesFragmentDirections - .actionPerGamePropertiesFragmentToAddonsFragment(args.game) - binding.root.findNavController().navigate(action) - } - ) - ) add( InstallableProperty( R.string.save_data, 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 6cb35014b4..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( @@ -114,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 }, @@ -130,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, @@ -146,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, @@ -160,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) } ) ) @@ -171,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) } ) ) @@ -222,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, @@ -247,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) } ) ) @@ -408,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 eff96248e0..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,9 +454,13 @@ 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()) } @@ -405,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 @@ -415,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/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/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/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 256e5968d1..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,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.overlay @@ -8,6 +8,8 @@ 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 @@ -18,7 +20,6 @@ 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 @@ -40,16 +41,17 @@ 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 @@ -60,10 +62,19 @@ class InputOverlay(context: Context, attrs: AttributeSet?) : 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) @@ -91,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) } @@ -102,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) } @@ -668,14 +709,19 @@ 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() @@ -712,9 +758,14 @@ class InputOverlay(context: Context, attrs: AttributeSet?) : if (!editMode) { scaleDialog?.dismiss() scaleDialog = null + gamelessMode = false } + + invalidate() } + fun isGamelessMode(): Boolean = gamelessMode + private fun showScaleDialog( button: InputOverlayDrawableButton?, dpad: InputOverlayDrawableDpad?, @@ -867,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 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 01f07e4f36..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 @@ -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 @@ -229,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 @@ -242,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 bc3ff15b21..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 @@ -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 @@ -213,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 @@ -242,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/ui/GamesFragment.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/ui/GamesFragment.kt index 80055628e1..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) @@ -208,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 @@ -237,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) } } @@ -441,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 @@ -494,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 da790a4fc4..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,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.main @@ -26,35 +26,36 @@ 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 android.os.Build -import org.yuzu.yuzu_emu.model.TaskState 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 @@ -85,8 +86,6 @@ class MainActivity : AppCompatActivity(), ThemeProvider { binding = ActivityMainBinding.inflate(layoutInflater) - // Since Android 15, google automatically forces "games" to be 60 hrz - // This ensures the display's max refresh rate is actually used display?.let { val supportedModes = it.supportedModes val maxRefreshRate = supportedModes.maxByOrNull { mode -> mode.refreshRate } @@ -168,6 +167,7 @@ class MainActivity : AppCompatActivity(), ThemeProvider { checkForUpdates() } setInsets() + applyFullscreenPreference() } private fun checkForUpdates() { @@ -175,20 +175,25 @@ class MainActivity : AppCompatActivity(), ThemeProvider { val latestVersion = NativeLibrary.checkForUpdate() if (latestVersion != null) { runOnUiThread { - showUpdateDialog(latestVersion) + val tag: String = latestVersion[0] + val name: String = latestVersion[1] + showUpdateDialog(tag, name) } } }.start() } - private fun showUpdateDialog(version: String) { + private fun showUpdateDialog(tag: String, name: String) { MaterialAlertDialogBuilder(this) .setTitle(R.string.update_available) - .setMessage(getString(R.string.update_available_description, version)) + .setMessage(getString(R.string.update_available_description, name)) .setPositiveButton(android.R.string.ok) { _, _ -> - val url = NativeLibrary.getUpdateUrl(version) - val intent = Intent(Intent.ACTION_VIEW, url.toUri()) - startActivity(intent) + 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() @@ -201,6 +206,87 @@ class MainActivity : AppCompatActivity(), ThemeProvider { .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() + } + } + } + ) + } + } + + 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) @@ -258,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( @@ -277,6 +371,10 @@ class MainActivity : AppCompatActivity(), ThemeProvider { windowInsets } + private fun applyFullscreenPreference() { + FullscreenHelper.applyToActivity(this) + } + override fun setTheme(resId: Int) { super.setTheme(resId) themeId = resId @@ -294,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, @@ -315,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") @@ -328,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 -> @@ -366,216 +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) - 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) - 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( @@ -584,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 = @@ -610,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/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/DirectoryInitialization.kt b/src/android/app/src/main/java/org/yuzu/yuzu_emu/utils/DirectoryInitialization.kt index 5325f688b6..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,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.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) { 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/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 2c35e7349a..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 @@ -20,9 +17,8 @@ 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. */ @@ -34,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 @@ -55,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 @@ -70,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 } @@ -79,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 } } @@ -95,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) } @@ -104,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 @@ -202,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?.let { WindowInsetsCompat.toWindowInsetsCompat(it, this) } - val bottomInset = insets?.getInsets(WindowInsetsCompat.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) @@ -257,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) { @@ -306,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 @@ -357,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) } } @@ -382,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, @@ -426,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()) } @@ -435,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 @@ -453,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 cb17de46da..c68e206d24 100644 --- a/src/android/app/src/main/jni/CMakeLists.txt +++ b/src/android/app/src/main/jni/CMakeLists.txt @@ -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,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 @@ -26,10 +27,7 @@ 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) -endif() - +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() diff --git a/src/android/app/src/main/jni/android_config.cpp b/src/android/app/src/main/jni/android_config.cpp index 41ac680d6b..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: Copyright 2025 Eden Emulator Project +// 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(); } @@ -222,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(); } diff --git a/src/android/app/src/main/jni/android_settings.h b/src/android/app/src/main/jni/android_settings.h index 8a46a22df1..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 @@ -54,17 +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; @@ -92,6 +95,11 @@ namespace AndroidSettings { 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, @@ -141,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", @@ -151,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, @@ -182,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 ffef4f740c..210689ce55 100644 --- a/src/android/app/src/main/jni/native.cpp +++ b/src/android/app/src/main/jni/native.cpp @@ -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: Copyright 2023 yuzu Emulator Project @@ -42,19 +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" @@ -66,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" @@ -83,6 +88,8 @@ #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" @@ -209,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; @@ -225,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 @@ -275,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(); @@ -289,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 }); @@ -681,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, @@ -730,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), @@ -853,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. @@ -1113,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) { @@ -1166,11 +1263,8 @@ 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)) { - if (!Common::FS::CreateDir(play_time_dir)) { - LOG_WARNING(Frontend, "Failed to create play time directory"); - } - } + 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(); } @@ -1183,13 +1277,16 @@ void Java_org_yuzu_yuzu_1emu_NativeLibrary_playTimeManagerStart(JNIEnv* env, job } void Java_org_yuzu_yuzu_1emu_NativeLibrary_playTimeManagerStop(JNIEnv* env, jobject obj) { - play_time_manager->Stop(); + if (play_time_manager) + play_time_manager->Stop(); } -jlong Java_org_yuzu_yuzu_1emu_NativeLibrary_playTimeManagerGetPlayTime(JNIEnv* env, jobject obj, - jstring jprogramId) { - u64 program_id = EmulationSession::GetProgramId(env, jprogramId); - return play_time_manager->GetPlayTime(program_id); +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, @@ -1199,17 +1296,17 @@ jlong Java_org_yuzu_yuzu_1emu_NativeLibrary_playTimeManagerGetCurrentTitleId(JNI void Java_org_yuzu_yuzu_1emu_NativeLibrary_playTimeManagerResetProgramPlayTime(JNIEnv* env, jobject obj, jstring jprogramId) { - u64 program_id = EmulationSession::GetProgramId(env, 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) { - u64 program_id = EmulationSession::GetProgramId(env, jprogramId); if (play_time_manager) { - play_time_manager->SetPlayTime(program_id, static_cast(playTimeSeconds)); + u64 program_id = EmulationSession::GetProgramId(env, jprogramId); + play_time_manager->SetPlayTime(program_id, u64(playTimeSeconds)); } } @@ -1308,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; } @@ -1389,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); } @@ -1418,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(); } @@ -1572,7 +1676,6 @@ JNIEXPORT void JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_updatePowerState( g_has_battery.store(hasBattery, std::memory_order_relaxed); } -// return #ifdef ENABLE_UPDATE_CHECKER JNIEXPORT jboolean JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_isUpdateCheckerEnabled( JNIEnv* env, jobject obj) { @@ -1583,22 +1686,39 @@ JNIEXPORT jboolean JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_isUpdateChecker #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 jstring JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_checkForUpdate( + +JNIEXPORT jobjectArray JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_checkForUpdate( JNIEnv* env, jobject obj) { - const bool is_prerelease = ((strstr(Common::g_build_version, "pre-alpha") != nullptr) || - (strstr(Common::g_build_version, "alpha") != nullptr) || - (strstr(Common::g_build_version, "beta") != nullptr) || - (strstr(Common::g_build_version, "rc") != nullptr)); - const std::optional latest_release_tag = - UpdateChecker::GetLatestRelease(is_prerelease); + std::optional release = UpdateChecker::GetUpdate(); + if (!release) return nullptr; - if (latest_release_tag && latest_release_tag.value() != Common::g_build_version) { - return env->NewStringUTF(latest_release_tag.value().c_str()); - } - 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( @@ -1613,6 +1733,434 @@ JNIEXPORT jstring JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_getUpdateUrl( 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 e6021ed217..647fdbb997 100644 --- a/src/android/app/src/main/jni/native_config.cpp +++ b/src/android/app/src/main/jni/native_config.cpp @@ -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 #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) { @@ -545,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/res/drawable-v26/ic_launcher.xml b/src/android/app/src/main/res/drawable-v26/ic_launcher.xml deleted file mode 100644 index 29ca039176..0000000000 --- a/src/android/app/src/main/res/drawable-v26/ic_launcher.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - 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/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 db7e53410d..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 ddb43b349c..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.png b/src/android/app/src/main/res/drawable/ic_launcher.png deleted file mode 100644 index 6247771ad0..0000000000 Binary files a/src/android/app/src/main/res/drawable/ic_launcher.png and /dev/null differ 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"> + + + + + + -