diff --git a/.ci/libretro-ci.yml b/.ci/libretro-ci.yml new file mode 100644 index 000000000..41473e9a7 --- /dev/null +++ b/.ci/libretro-ci.yml @@ -0,0 +1,133 @@ +.core-defs: + variables: + JNI_PATH: . + CORENAME: azahar + API_LEVEL: 21 + BASE_CORE_ARGS: -DENABLE_LIBRETRO=ON -DENABLE_TESTS=OFF + CORE_ARGS: ${BASE_CORE_ARGS} + EXTRA_PATH: bin/Release + +variables: + STATIC_RETROARCH_BRANCH: master + GIT_SUBMODULE_STRATEGY: recursive + +# Inclusion templates, required for the build to work +include: + ################################## DESKTOPS ############################## ## + # Windows 64-bit + - project: 'libretro-infrastructure/ci-templates' + file: '/windows-cmake-mingw.yml' + + # Linux 64-bit + - project: 'libretro-infrastructure/ci-templates' + file: '/linux-cmake.yml' + + # MacOS x86_64 + - project: 'libretro-infrastructure/ci-templates' + file: '/osx-cmake-x86.yml' + + # MacOS ARM64 + - project: 'libretro-infrastructure/ci-templates' + file: '/osx-cmake-arm64.yml' + + ################################## CELLULAR ############################## ## + # Android + - project: 'libretro-infrastructure/ci-templates' + file: '/android-cmake.yml' + + # iOS + - project: 'libretro-infrastructure/ci-templates' + file: '/ios-cmake.yml' + + # tvOS + - project: 'libretro-infrastructure/ci-templates' + file: '/tvos-cmake.yml' + + ################################## CONSOLES ############################## ## + +# Stages for building +stages: + - build-prepare + - build-shared + - build-static + +############################################################################## +#################################### STAGES ################################## +############################################################################## +# +################################### DESKTOPS ################################# +# Windows 64-bit +libretro-build-windows-x64: + extends: + - .core-defs + - .libretro-windows-cmake-x86_64 + image: $CI_SERVER_HOST:5050/libretro-infrastructure/libretro-build-mxe-win-cross-cores:mingw12 + variables: + CORE_ARGS: ${BASE_CORE_ARGS} -DENABLE_LTO=OFF -G Ninja + +# Linux 64-bit +libretro-build-linux-x64: + extends: + - .core-defs + - .libretro-linux-cmake-x86_64 + image: $CI_SERVER_HOST:5050/libretro-infrastructure/libretro-build-amd64-ubuntu:backports + variables: + CORE_ARGS: ${BASE_CORE_ARGS} -DENABLE_LTO=OFF + CC: /usr/bin/gcc-12 + CXX: /usr/bin/g++-12 + +# MacOS x86_64 +libretro-build-osx-x64: + tags: + - mac-apple-silicon + variables: + CORE_ARGS: ${BASE_CORE_ARGS} -DCMAKE_OSX_ARCHITECTURES=x86_64 + MACOSX_DEPLOYMENT_TARGET: "11.0" + extends: + - .core-defs + - .libretro-osx-cmake-x86_64 + +# MacOS ARM64 +libretro-build-osx-arm64: + extends: + - .core-defs + - .libretro-osx-cmake-arm64 + variables: + MACOSX_DEPLOYMENT_TARGET: "11.0" + +################################### CELLULAR ################################# +# Android ARMv8a +android-arm64-v8a: + extends: + - .libretro-android-cmake-arm64-v8a + - .core-defs + variables: + ANDROID_NDK_VERSION: 26.2.11394342 + NDK_ROOT: /android-sdk-linux/ndk/$ANDROID_NDK_VERSION + LIBNAME: ${CORENAME}_libretro.so + artifacts: + paths: + - $LIBNAME + +# iOS arm64 +libretro-build-ios-arm64: + extends: + - .libretro-ios-cmake-arm64 + - .core-defs + variables: + CORE_ARGS: ${BASE_CORE_ARGS} -DCITRA_USE_PRECOMPILED_HEADERS=OFF -DCMAKE_SYSTEM_NAME=iOS -DCMAKE_OSX_ARCHITECTURES=arm64 -DENABLE_OPT=OFF + IOS_MINVER: "14.0" + EXTRA_PATH: bin/RelWithDebInfo + +# tvOS arm64 +libretro-build-tvos-arm64: + extends: + - .libretro-tvos-cmake-arm64 + - .core-defs + variables: + CORE_ARGS: ${BASE_CORE_ARGS} -DCITRA_USE_PRECOMPILED_HEADERS=OFF -DIOS=ON -DCMAKE_SYSTEM_NAME=tvOS -DCMAKE_OSX_SYSROOT=appletvos -DCMAKE_OSX_ARCHITECTURES=arm64 -DENABLE_OPT=OFF + MINVER: "14.0" + EXTRA_PATH: bin/RelWithDebInfo + +################################### CONSOLES ################################# + diff --git a/.ci/libretro-pack.sh b/.ci/libretro-pack.sh new file mode 100755 index 000000000..d0a17a83e --- /dev/null +++ b/.ci/libretro-pack.sh @@ -0,0 +1,13 @@ +#!/bin/bash -ex + +# Determine the full revision name. +GITDATE="`git show -s --date=short --format='%ad' | sed 's/-//g'`" +GITREV="`git show -s --format='%h'`" + +REV_NAME="azahar-libretro-$OS-$TARGET-$GITDATE-$GITREV" +if [ "$GITHUB_REF_TYPE" = "tag" ]; then + REV_NAME="azahar-libretro-$OS-$TARGET-$GITHUB_REF_NAME" +fi + +# Create .zip +zip -j -9 $REV_NAME.zip $BUILD_DIR/$EXTRA_PATH/azahar_libretro.* diff --git a/.ci/linux.sh b/.ci/linux.sh index 8cdf33abf..c7a1ef4cd 100755 --- a/.ci/linux.sh +++ b/.ci/linux.sh @@ -1,6 +1,6 @@ #!/bin/bash -ex -if [[ "$TARGET" == "appimage"* ]]; then +if [[ "$TARGET" == "appimage"* ]] || [[ "$TARGET" == "clang"* ]]; then # Compile the AppImage we distribute with Clang. export EXTRA_CMAKE_FLAGS=(-DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_COMPILER=clang diff --git a/.ci/pack.sh b/.ci/pack.sh index 30a2d9546..3d4ce9c9e 100755 --- a/.ci/pack.sh +++ b/.ci/pack.sh @@ -8,7 +8,7 @@ REV_NAME="azahar-$OS-$TARGET-$GITDATE-$GITREV" # Determine the name of the release being built. if [ "$GITHUB_REF_TYPE" = "tag" ]; then RELEASE_NAME=azahar-$GITHUB_REF_NAME - REV_NAME="azahar-$GITHUB_REF_NAME-$OS-$TARGET" + REV_NAME="azahar-$OS-$TARGET-$GITHUB_REF_NAME" else RELEASE_NAME=azahar-head fi diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 1fdd627e6..afc631112 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -23,12 +23,12 @@ jobs: name: source path: artifacts/ - linux: + linux-x86_64: runs-on: ubuntu-latest strategy: fail-fast: false matrix: - target: ["appimage", "appimage-wayland", "fresh"] + target: ["appimage", "appimage-wayland", "gcc-nopch"] container: image: opensauce04/azahar-build-environment:latest options: -u 1001 @@ -49,9 +49,9 @@ jobs: uses: actions/cache@v4 with: path: ${{ env.CCACHE_DIR }} - key: ${{ runner.os }}-${{ matrix.target }}-${{ github.sha }} + key: ${{ github.job }}-${{ matrix.target }}-${{ github.sha }} restore-keys: | - ${{ runner.os }}-${{ matrix.target }}- + ${{ github.job }}-${{ matrix.target }}- - name: Build if: ${{ env.SHOULD_RUN == 'true' }} run: ./.ci/linux.sh @@ -68,11 +68,40 @@ jobs: if: ${{ contains(matrix.target, 'appimage') && env.SHOULD_RUN == 'true' }} uses: actions/upload-artifact@v4 with: - name: ${{ env.OS }}-${{ env.TARGET }} + name: ${{ github.job }}-${{ matrix.target }} path: artifacts/ + linux-arm64: + runs-on: ubuntu-24.04-arm + strategy: + fail-fast: false + matrix: + target: ["clang", "gcc-nopch"] + container: + image: opensauce04/azahar-build-environment:latest + options: -u 1001 + env: + CCACHE_DIR: ${{ github.workspace }}/.ccache + CCACHE_COMPILERCHECK: content + CCACHE_SLOPPINESS: time_macros + OS: linux + TARGET: ${{ matrix.target }} + steps: + - uses: actions/checkout@v4 + with: + submodules: recursive + - name: Set up cache + uses: actions/cache@v4 + with: + path: ${{ env.CCACHE_DIR }} + key: ${{ github.job }}-${{ matrix.target }}-${{ github.sha }} + restore-keys: | + ${{ github.job }}-${{ matrix.target }}- + - name: Build + run: ./.ci/linux.sh + macos: - runs-on: ${{ (matrix.target == 'x86_64' && 'macos-15-intel') || 'macos-26' }} + runs-on: ${{ (matrix.target == 'x86_64' && 'macos-26-intel') || 'macos-26' }} strategy: fail-fast: false matrix: diff --git a/.github/workflows/libretro.yml b/.github/workflows/libretro.yml new file mode 100644 index 000000000..668afad70 --- /dev/null +++ b/.github/workflows/libretro.yml @@ -0,0 +1,178 @@ +name: citra-libretro + +on: + push: + branches: [ "*" ] + tags: [ "*" ] + pull_request: + branches: [ master ] + workflow_dispatch: + +env: + CORE_ARGS: -DENABLE_LIBRETRO=ON + +jobs: + android: + runs-on: ubuntu-22.04 + env: + OS: android + TARGET: arm64-v8a + API_LEVEL: 21 + ANDROID_NDK_VERSION: 26.2.11394342 + ANDROID_ABI: arm64-v8a + BUILD_DIR: build/android-arm64-v8a + EXTRA_PATH: bin/Release + steps: + - uses: actions/checkout@v4 + with: + submodules: recursive + - name: Set tag name + run: | + if [[ "$GITHUB_REF_TYPE" == "tag" ]]; then + echo "GIT_TAG_NAME=$GITHUB_REF_NAME" >> $GITHUB_ENV + fi + echo $GIT_TAG_NAME + - name: Update Android SDK CMake version + run: | + echo "y" | ${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager "ndk;$ANDROID_NDK_VERSION" + echo "y" | ${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager "cmake;3.30.3" + - name: Build + run: | + export NDK_ROOT=${ANDROID_SDK_ROOT}/ndk/$ANDROID_NDK_VERSION + ${ANDROID_SDK_ROOT}/cmake/3.30.3/bin/cmake $CORE_ARGS -DANDROID_PLATFORM=android-$API_LEVEL -DCMAKE_TOOLCHAIN_FILE=$NDK_ROOT/build/cmake/android.toolchain.cmake -DANDROID_STL=c++_static -DANDROID_ABI=$ANDROID_ABI . -B $BUILD_DIR + ${ANDROID_SDK_ROOT}/cmake/3.30.3/bin/cmake --build $BUILD_DIR --target azahar_libretro --config Release -j $(nproc) + - name: Pack + run: ./.ci/libretro-pack.sh + - name: Upload + uses: actions/upload-artifact@v4 + with: + name: ${{ env.OS }}-${{ env.TARGET }} + path: ./*.zip + linux: + runs-on: ubuntu-22.04 + env: + OS: linux + TARGET: x86_64 + BUILD_DIR: build/linux-x86_64 + EXTRA_PATH: bin/Release + EXTRA_CORE_ARGS: -DCMAKE_C_COMPILER=gcc-12 -DCMAKE_CXX_COMPILER=g++-12 -DENABLE_LTO=OFF + steps: + - uses: actions/checkout@v4 + with: + submodules: recursive + - name: Build + run: | + cmake $CORE_ARGS $EXTRA_CORE_ARGS . -B $BUILD_DIR + cmake --build $BUILD_DIR --target azahar_libretro --config Release -j $(nproc) + - name: Pack + run: ./.ci/libretro-pack.sh + - name: Upload + uses: actions/upload-artifact@v4 + with: + name: ${{ env.OS }}-${{ env.TARGET }} + path: ./*.zip + windows: + runs-on: ubuntu-latest + env: + OS: windows + TARGET: x86_64 + BUILD_DIR: build/windows-x86_64 + EXTRA_CORE_ARGS: -DENABLE_LTO=OFF -G Ninja + CMAKE: x86_64-w64-mingw32.static-cmake + IMAGE: git.libretro.com:5050/libretro-infrastructure/libretro-build-mxe-win-cross-cores:mingw12 + EXTRA_PATH: bin/Release + steps: + - uses: actions/checkout@v4 + with: + submodules: recursive + - name: Build in cross-container + run: | + docker pull $IMAGE + docker run --rm --user root \ + -v "${GITHUB_WORKSPACE}:${GITHUB_WORKSPACE}" \ + -w "${GITHUB_WORKSPACE}" \ + $IMAGE \ + bash -lc "\ + ${CMAKE} $CORE_ARGS $EXTRA_CORE_ARGS . -B $BUILD_DIR && \ + ${CMAKE} --build $BUILD_DIR --target azahar_libretro --config Release -j $(nproc)" + - name: Pack + run: ./.ci/libretro-pack.sh + - name: Upload + uses: actions/upload-artifact@v4 + with: + name: ${{ env.OS }}-${{ env.TARGET }} + path: ./*.zip + macos: + runs-on: macos-26 + strategy: + matrix: + target: ["x86_64", "arm64"] + env: + OS: macos + TARGET: ${{ matrix.target }} + MACOSX_DEPLOYMENT_TARGET: 11.0 + BUILD_DIR: build/osx-${{ matrix.target }} + EXTRA_PATH: bin/Release + steps: + - uses: actions/checkout@v4 + with: + submodules: recursive + - name: Install tools + run: brew install spirv-tools + - name: Build + run: | + cmake $CORE_ARGS -DCMAKE_OSX_ARCHITECTURES=$TARGET . -B $BUILD_DIR + cmake --build $BUILD_DIR --target azahar_libretro --config Release + - name: Pack + run: ./.ci/libretro-pack.sh + - name: Upload + uses: actions/upload-artifact@v4 + with: + name: ${{ env.OS }}-${{ env.TARGET }} + path: ./*.zip + ios: + runs-on: macos-26 + env: + OS: ios + TARGET: arm64 + BUILD_DIR: build/ios-arm64 + EXTRA_PATH: bin/Release + EXTRA_CORE_ARGS: -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_C_FLAGS=-DIOS -DCMAKE_CXX_FLAGS=-DIOS -DIOS=ON -DCMAKE_SYSTEM_NAME=iOS -DCMAKE_OSX_DEPLOYMENT_TARGET=14.0 -DCITRA_USE_PRECOMPILED_HEADERS=OFF -DCMAKE_OSX_ARCHITECTURES=arm64 -DENABLE_OPT=OFF + steps: + - uses: actions/checkout@v4 + with: + submodules: recursive + - name: Build + run: | + cmake $CORE_ARGS $EXTRA_CORE_ARGS . -B $BUILD_DIR + cmake --build $BUILD_DIR --target azahar_libretro --config Release + - name: Pack + run: ./.ci/libretro-pack.sh + - name: Upload + uses: actions/upload-artifact@v4 + with: + name: ${{ env.OS }}-${{ env.TARGET }} + path: ./*.zip + tvos: + runs-on: macos-26 + env: + OS: tvos + TARGET: arm64 + BUILD_DIR: build/tvos-arm64 + EXTRA_PATH: bin/Release + EXTRA_CORE_ARGS: -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DCMAKE_C_FLAGS=-DIOS -DCMAKE_CXX_FLAGS=-DIOS -DIOS=ON -DCMAKE_SYSTEM_NAME=tvOS -DCMAKE_OSX_DEPLOYMENT_TARGET=14.0 -DCITRA_USE_PRECOMPILED_HEADERS=OFF -DCMAKE_OSX_SYSROOT=appletvos -DCMAKE_OSX_ARCHITECTURES=arm64 -DENABLE_OPT=OFF + steps: + - uses: actions/checkout@v4 + with: + submodules: recursive + - name: Build + run: | + cmake $CORE_ARGS $EXTRA_CORE_ARGS . -B $BUILD_DIR + cmake --build $BUILD_DIR --target azahar_libretro --config Release + - name: Pack + run: ./.ci/libretro-pack.sh + - name: Upload + uses: actions/upload-artifact@v4 + with: + name: ${{ env.OS }}-${{ env.TARGET }} + path: ./*.zip diff --git a/.gitignore b/.gitignore index 6000a682d..3a44642e1 100644 --- a/.gitignore +++ b/.gitignore @@ -56,3 +56,7 @@ repo/ .ccache/ node_modules/ VULKAN_SDK/ + +# Version info files +GIT-COMMIT +GIT-TAG diff --git a/.gitmodules b/.gitmodules index cb600a64c..18c5cc79a 100644 --- a/.gitmodules +++ b/.gitmodules @@ -103,3 +103,6 @@ [submodule "externals/xxHash"] path = externals/xxHash url = https://github.com/Cyan4973/xxHash.git +[submodule "externals/libretro-common"] + path = externals/libretro-common/libretro-common + url = https://github.com/libretro/libretro-common.git diff --git a/CMakeLists.txt b/CMakeLists.txt index 1c0e51b67..54eb90e90 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -17,20 +17,23 @@ list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules") list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/externals/cmake-modules") include(DownloadExternals) include(CMakeDependentOption) -include(FindPkgConfig) project(citra LANGUAGES C CXX ASM) +# must be invoked after project() command when using CMAKE_TOOLCHAIN_FILE +include(FindPkgConfig) if (CMAKE_SYSTEM_NAME STREQUAL "Darwin" OR CMAKE_SYSTEM_NAME STREQUAL "iOS") enable_language(OBJC OBJCXX) endif() +option(ENABLE_LIBRETRO "Build as a LibRetro core" OFF) + # Some submodules like to pick their own default build type if not specified. # Make sure we default to Release build type always, unless the generator has custom types. if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Choose the type of build." FORCE) endif() -if (APPLE) +if (APPLE AND NOT ENABLE_LIBRETRO) # Silence warnings on empty objects, for example when platform-specific code is #ifdef'd out. set(CMAKE_C_ARCHIVE_CREATE " Scr ") set(CMAKE_CXX_ARCHIVE_CREATE " Scr ") @@ -90,8 +93,18 @@ else() set(DEFAULT_ENABLE_OPENGL ON) endif() +# Track which options were explicitly set by the user (for libretro conflict detection) +set(_LIBRETRO_INCOMPATIBLE_OPTIONS + ENABLE_SDL2 ENABLE_QT ENABLE_WEB_SERVICE ENABLE_SCRIPTING + ENABLE_OPENAL ENABLE_ROOM ENABLE_ROOM_STANDALONE ENABLE_CUBEB ENABLE_LIBUSB) +set(_USER_SET_OPTIONS "") +foreach(_opt IN LISTS _LIBRETRO_INCOMPATIBLE_OPTIONS) + if(DEFINED ${_opt}) + list(APPEND _USER_SET_OPTIONS ${_opt}) + endif() +endforeach() + option(ENABLE_SDL2 "Enable using SDL2" ON) -CMAKE_DEPENDENT_OPTION(ENABLE_SDL2_FRONTEND "Enable the SDL2 frontend" OFF "ENABLE_SDL2;NOT ANDROID AND NOT IOS" OFF) option(USE_SYSTEM_SDL2 "Use the system SDL2 lib (instead of the bundled one)" OFF) # Set bundled qt as dependent options. @@ -130,6 +143,31 @@ option(ENABLE_NATIVE_OPTIMIZATION "Enables processor-specific optimizations via option(CITRA_USE_PRECOMPILED_HEADERS "Use precompiled headers" ON) option(CITRA_WARNINGS_AS_ERRORS "Enable warnings as errors" ON) +# Handle incompatible options for libretro builds +if(ENABLE_LIBRETRO) + # Check for explicitly-set conflicting options + set(_CONFLICTS "") + foreach(_opt IN LISTS _LIBRETRO_INCOMPATIBLE_OPTIONS) + list(FIND _USER_SET_OPTIONS ${_opt} _idx) + if(NOT _idx EQUAL -1 AND ${_opt}) + list(APPEND _CONFLICTS ${_opt}) + endif() + endforeach() + + if(_CONFLICTS) + string(REPLACE ";" ", " _CONFLICTS_STR "${_CONFLICTS}") + message(FATAL_ERROR + "ENABLE_LIBRETRO is incompatible with: ${_CONFLICTS_STR}\n" + "These options were explicitly enabled but are not supported for libretro builds.\n" + "Remove these options or set them to OFF.") + endif() + + # Force disable incompatible options (handles defaulted-on options) + foreach(_opt IN LISTS _LIBRETRO_INCOMPATIBLE_OPTIONS) + set(${_opt} OFF CACHE BOOL "Disabled for libretro" FORCE) + endforeach() +endif() + # Pass the following values to C++ land if (ENABLE_QT) add_definitions(-DENABLE_QT) @@ -143,9 +181,6 @@ endif() if (ENABLE_SDL2) add_definitions(-DENABLE_SDL2) endif() -if (ENABLE_SDL2_FRONTEND) - add_definitions(-DENABLE_SDL2_FRONTEND) -endif() if(ENABLE_SSE42 AND (CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64|AMD64")) message(STATUS "SSE4.2 enabled for x86_64") @@ -223,7 +258,7 @@ function(check_submodules_present) foreach(module ${gitmodules}) string(REGEX REPLACE "path *= *" "" module ${module}) if (NOT EXISTS "${PROJECT_SOURCE_DIR}/${module}/.git") - message(SEND_ERROR "Git submodule ${module} not found." + message(SEND_ERROR "Git submodule ${module} not found.\n" "Please run: git submodule update --init --recursive") endif() endforeach() @@ -300,6 +335,9 @@ set(CMAKE_VISIBILITY_INLINES_HIDDEN NO) # set up output paths for executable binaries set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin/$) +if (ENABLE_LIBRETRO) + set(CMAKE_POSITION_INDEPENDENT_CODE ON) +endif() # System imported libraries # ====================== @@ -359,7 +397,7 @@ if (APPLE) find_library(IOSURFACE_LIBRARY IOSurface REQUIRED) set(PLATFORM_LIBRARIES ${COCOA_LIBRARY} ${AVFOUNDATION_LIBRARY} ${IOSURFACE_LIBRARY} ${MOLTENVK_LIBRARY}) - if (ENABLE_VULKAN) + if (ENABLE_VULKAN AND NOT ENABLE_LIBRETRO) if (NOT USE_SYSTEM_MOLTENVK) download_moltenvk() endif() @@ -513,8 +551,6 @@ if (NOT ANDROID AND NOT IOS) include(BundleTarget) if (ENABLE_QT) qt_bundle_target(citra_meta) - elseif (ENABLE_SDL2_FRONTEND) - bundle_target(citra_meta) endif() if (ENABLE_ROOM_STANDALONE) bundle_target(citra_room_standalone) diff --git a/CMakeModules/GenerateBuildInfo.cmake b/CMakeModules/GenerateBuildInfo.cmake index b3f4556ab..e1ec81a8b 100644 --- a/CMakeModules/GenerateBuildInfo.cmake +++ b/CMakeModules/GenerateBuildInfo.cmake @@ -1,4 +1,6 @@ macro(generate_build_info) + find_package(Git QUIET) + # Gets a UTC timstamp and sets the provided variable to it function(get_timestamp _var) string(TIMESTAMP timestamp UTC) @@ -6,9 +8,14 @@ macro(generate_build_info) endfunction() get_timestamp(BUILD_DATE) - list(APPEND CMAKE_MODULE_PATH "${SRC_DIR}/externals/cmake-modules") + list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/externals/cmake-modules") - if (EXISTS "${SRC_DIR}/.git/objects") + if (EXISTS "${CMAKE_SOURCE_DIR}/GIT-COMMIT" AND EXISTS "${CMAKE_SOURCE_DIR}/GIT-TAG") + file(READ "${CMAKE_SOURCE_DIR}/GIT-COMMIT" GIT_REV_RAW LIMIT 64) + string(STRIP "${GIT_REV_RAW}" GIT_REV) + string(SUBSTRING "${GIT_REV_RAW}" 0 9 GIT_DESC) + set(GIT_BRANCH "HEAD") + elseif (EXISTS "${CMAKE_SOURCE_DIR}/.git/objects") # Find the package here with the known path so that the GetGit commands can find it as well find_package(Git QUIET PATHS "${GIT_EXECUTABLE}") @@ -17,12 +24,6 @@ macro(generate_build_info) get_git_head_revision(GIT_REF_SPEC GIT_REV) git_describe(GIT_DESC --always --long --dirty) git_branch_name(GIT_BRANCH) - elseif (EXISTS "${SRC_DIR}/GIT-COMMIT" AND EXISTS "${SRC_DIR}/GIT-TAG") - # unified source archive - file(READ "${SRC_DIR}/GIT-COMMIT" GIT_REV_RAW LIMIT 64) - string(STRIP "${GIT_REV_RAW}" GIT_REV) - string(SUBSTRING "${GIT_REV_RAW}" 0 9 GIT_DESC) - set(GIT_BRANCH "HEAD") else() # self-packed archive? set(GIT_REV "UNKNOWN") @@ -39,8 +40,8 @@ macro(generate_build_info) if ($ENV{GITHUB_REF_TYPE} STREQUAL "tag") set(GIT_TAG $ENV{GITHUB_REF_NAME}) endif() - elseif (EXISTS "${SRC_DIR}/GIT-COMMIT" AND EXISTS "${SRC_DIR}/GIT-TAG") - file(READ "${SRC_DIR}/GIT-TAG" GIT_TAG) + elseif (EXISTS "${CMAKE_SOURCE_DIR}/GIT-COMMIT" AND EXISTS "${CMAKE_SOURCE_DIR}/GIT-TAG") + file(READ "${CMAKE_SOURCE_DIR}/GIT-TAG" GIT_TAG) string(STRIP ${GIT_TAG} GIT_TAG) endif() diff --git a/CMakeModules/GenerateSCMRev.cmake b/CMakeModules/GenerateSCMRev.cmake index 8d0f63cdc..ddc6249ca 100644 --- a/CMakeModules/GenerateSCMRev.cmake +++ b/CMakeModules/GenerateSCMRev.cmake @@ -1,9 +1,10 @@ -list(APPEND CMAKE_MODULE_PATH "${SRC_DIR}/CMakeModules") +list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/CMakeModules") + include(GenerateBuildInfo) generate_build_info() # The variable SRC_DIR must be passed into the script (since it uses the current build directory for all values of CMAKE_*_DIR) -set(VIDEO_CORE "${SRC_DIR}/src/video_core") +set(VIDEO_CORE "${CMAKE_SOURCE_DIR}/src/video_core") set(HASH_FILES "${VIDEO_CORE}/renderer_opengl/gl_shader_disk_cache.cpp" "${VIDEO_CORE}/renderer_opengl/gl_shader_disk_cache.h" @@ -11,6 +12,10 @@ set(HASH_FILES "${VIDEO_CORE}/renderer_opengl/gl_shader_util.h" "${VIDEO_CORE}/renderer_vulkan/vk_shader_util.cpp" "${VIDEO_CORE}/renderer_vulkan/vk_shader_util.h" + "${VIDEO_CORE}/renderer_vulkan/vk_shader_disk_cache.cpp" + "${VIDEO_CORE}/renderer_vulkan/vk_shader_disk_cache.h" + "${VIDEO_CORE}/renderer_vulkan/vk_pipeline_cache.cpp" + "${VIDEO_CORE}/renderer_vulkan/vk_pipeline_cache.h" "${VIDEO_CORE}/shader/generator/glsl_fs_shader_gen.cpp" "${VIDEO_CORE}/shader/generator/glsl_fs_shader_gen.h" "${VIDEO_CORE}/shader/generator/glsl_shader_decompiler.cpp" @@ -19,6 +24,7 @@ set(HASH_FILES "${VIDEO_CORE}/shader/generator/glsl_shader_gen.h" "${VIDEO_CORE}/shader/generator/pica_fs_config.cpp" "${VIDEO_CORE}/shader/generator/pica_fs_config.h" + "${VIDEO_CORE}/shader/generator/profile.h" "${VIDEO_CORE}/shader/generator/shader_gen.cpp" "${VIDEO_CORE}/shader/generator/shader_gen.h" "${VIDEO_CORE}/shader/generator/shader_uniforms.cpp" @@ -42,4 +48,4 @@ foreach (F IN LISTS HASH_FILES) set(COMBINED "${COMBINED}${TMP}") endforeach() string(MD5 SHADER_CACHE_VERSION "${COMBINED}") -configure_file("${SRC_DIR}/src/common/scm_rev.cpp.in" "scm_rev.cpp" @ONLY) +configure_file("${CMAKE_SOURCE_DIR}/src/common/scm_rev.cpp.in" "scm_rev.cpp" @ONLY) diff --git a/CMakeModules/GenerateSettingKeys.cmake b/CMakeModules/GenerateSettingKeys.cmake new file mode 100644 index 000000000..4fe58113c --- /dev/null +++ b/CMakeModules/GenerateSettingKeys.cmake @@ -0,0 +1,278 @@ +## This file should be the *only place* where setting keys exist as strings. +# All references to setting strings should be derived from the +# `setting_keys.h` and `jni_setting_keys.cpp` files generated here. + +# !!! Changes made here should be mirrored to SettingKeys.kt if used on Android + +# Shared setting keys (multi-platform) +foreach(KEY IN ITEMS + "use_artic_base_controller" + "enable_gamemode" + "use_cpu_jit" + "cpu_clock_percentage" + "is_new_3ds" + "lle_applets" + "deterministic_async_operations" + "enable_required_online_lle_modules" + "use_virtual_sd" + "use_custom_storage" + "compress_cia_installs" + "region_value" + "init_clock" + "init_time" + "init_time_offset" + "init_ticks_type" + "init_ticks_override" + "plugin_loader" + "allow_plugin_loader" + "steps_per_hour" + "apply_region_free_patch" + "graphics_api" + "physical_device" + "use_gles" + "renderer_debug" + "dump_command_buffers" + "spirv_shader_gen" + "disable_spirv_optimizer" + "async_shader_compilation" + "async_presentation" + "use_hw_shader" + "use_disk_shader_cache" + "shaders_accurate_mul" + "use_vsync" + "use_display_refresh_rate_detection" + "use_shader_jit" + "resolution_factor" + "frame_limit" + "turbo_limit" + "texture_filter" + "texture_sampling" + "delay_game_render_thread_us" + "layout_option" + "swap_screen" + "upright_screen" + "secondary_display_layout" + "large_screen_proportion" + "screen_gap" + "small_screen_position" + "custom_top_x" + "custom_top_y" + "custom_top_width" + "custom_top_height" + "custom_bottom_x" + "custom_bottom_y" + "custom_bottom_width" + "custom_bottom_height" + "custom_second_layer_opacity" + "aspect_ratio" + "screen_top_stretch" + "screen_top_leftright_padding" + "screen_top_topbottom_padding" + "screen_bottom_stretch" + "screen_bottom_leftright_padding" + "screen_bottom_topbottom_padding" + "portrait_layout_option" + "custom_portrait_top_x" + "custom_portrait_top_y" + "custom_portrait_top_width" + "custom_portrait_top_height" + "custom_portrait_bottom_x" + "custom_portrait_bottom_y" + "custom_portrait_bottom_width" + "custom_portrait_bottom_height" + "bg_red" + "bg_green" + "bg_blue" + "render_3d" + "factor_3d" + "swap_eyes_3d" + "render_3d_which_display" + "mono_render_option" + "cardboard_screen_size" + "cardboard_x_shift" + "cardboard_y_shift" + "filter_mode" + "pp_shader_name" + "anaglyph_shader_name" + "dump_textures" + "custom_textures" + "preload_textures" + "async_custom_loading" + "disable_right_eye_render" + "audio_emulation" + "enable_audio_stretching" + "enable_realtime_audio" + "volume" + "output_type" + "output_device" + "input_type" + "input_device" + "delay_start_for_lle_modules" + "use_gdbstub" + "gdbstub_port" + "instant_debug_log" + "enable_rpc_server" + "log_filter" + "log_regex_filter" + "toggle_unique_data_console_type" + "use_integer_scaling" + "layouts_to_cycle" + "camera_inner_flip" + "camera_outer_left_flip" + "camera_outer_right_flip" + "camera_inner_name" + "camera_inner_config" + "camera_outer_left_name" + "camera_outer_left_config" + "camera_outer_right_name" + "camera_outer_right_config" + "video_encoder" + "video_encoder_options" + "video_bitrate" + "audio_encoder" + "audio_encoder_options" + "audio_bitrate" + "last_artic_base_addr" + "motion_device" + "touch_device" + "udp_input_address" + "udp_input_port" + "udp_pad_index" + "record_frame_times" + "language" # FIXME: DUPLICATE KEY (libretro equivalent: language_value) + "web_api_url" + "citra_username" + "citra_token" +) + set(SETTING_KEY_LIST "${SETTING_KEY_LIST}\n\"${KEY}\",") + set(SETTING_KEY_DEFINITIONS "${SETTING_KEY_DEFINITIONS}\nDEFINE_KEY(${KEY})") + if (ANDROID) + string(REPLACE "_" "_1" KEY_JNI_ESCAPED ${KEY}) + set(JNI_SETTING_KEY_DEFINITIONS "${JNI_SETTING_KEY_DEFINITIONS} + JNI_DEFINE_KEY(${KEY}, ${KEY_JNI_ESCAPED})") + endif() +endforeach() + +# Qt exclusive setting keys +# Note: A lot of these are very generic because our Qt settings are currently put under groups: +# E.g. UILayout\geometry +# TODO: We should probably get rid of these groups and use complete keys at some point. -OS +# FIXME: Some of these settings don't use the standard snake_case. When we can migrate, address that. -OS +if (ENABLE_QT) + foreach(KEY IN ITEMS + "nickname" + "ip" + "port" + "room_nickname" + "room_name" + "room_port" + "host_type" + "max_player" + "room_description" + "multiplayer_filter_text" + "multiplayer_filter_games_owned" + "multiplayer_filter_hide_empty" + "multiplayer_filter_hide_full" + "username_ban_list" + "username" + "ip_ban_list" + "romsPath" + "symbolsPath" + "movieRecordPath" + "moviePlaybackPath" + "videoDumpingPath" + "gameListRootDir" + "gameListDeepScan" + "path" + "deep_scan" + "expanded" + "recentFiles" + "output_format" + "format_options" + "theme" + "program_id" + "geometry" + "state" + "geometryRenderWindow" + "gameListHeaderState" + "microProfileDialogGeometry" + "name" + "bind" + "profile" + "use_touchpad" + "controller_touch_device" + "use_touch_from_button" + "touch_from_button_map" + "touch_from_button_maps" # Why are these two so similar? Basically typo bait + "nand_directory" + "sdmc_directory" + "game_id" + "KeySeq" + "gamedirs" + "libvorbis" + "Context" + "favorites" + ) + set(SETTING_KEY_LIST "${SETTING_KEY_LIST}\n\"${KEY}\",") + set(SETTING_KEY_DEFINITIONS "${SETTING_KEY_DEFINITIONS}\nDEFINE_KEY(${KEY})") + endforeach() +endif() + +# Android exclusive setting keys (standalone app only, not Android libretro) +if (ANDROID) + foreach(KEY IN ITEMS + "expand_to_cutout_area" + "performance_overlay_enable" + "performance_overlay_show_fps" + "performance_overlay_show_frame_time" + "performance_overlay_show_speed" + "performance_overlay_show_app_ram_usage" + "performance_overlay_show_available_ram" + "performance_overlay_show_battery_temp" + "performance_overlay_background" + "use_frame_limit" # FIXME: DUPLICATE KEY (shared equivalent: frame_limit) + "android_hide_images" + "screen_orientation" + "performance_overlay_position" + ) + string(REPLACE "_" "_1" KEY_JNI_ESCAPED ${KEY}) + set(SETTING_KEY_LIST "${SETTING_KEY_LIST}\n\"${KEY}\",") + set(SETTING_KEY_DEFINITIONS "${SETTING_KEY_DEFINITIONS}\nDEFINE_KEY(${KEY})") + set(JNI_SETTING_KEY_DEFINITIONS "${JNI_SETTING_KEY_DEFINITIONS} + JNI_DEFINE_KEY(${KEY}, ${KEY_JNI_ESCAPED})") + endforeach() +endif() + +# Libretro exclusive setting keys +if (ENABLE_LIBRETRO) + foreach(KEY IN ITEMS + "language_value" + "swap_screen_mode" + "use_libretro_save_path" + "analog_function" + "analog_deadzone" + "enable_mouse_touchscreen" + "enable_touch_touchscreen" + "render_touchscreen" + "enable_motion" + "motion_sensitivity" + ) + string(REPLACE "_" "_1" KEY_JNI_ESCAPED ${KEY}) + set(SETTING_KEY_LIST "${SETTING_KEY_LIST}\n\"${KEY}\",") + set(SETTING_KEY_DEFINITIONS "${SETTING_KEY_DEFINITIONS}\nDEFINE_KEY(${KEY})") + endforeach() +endif() + +# Trim trailing comma and newline from SETTING_KEY_LIST +string(LENGTH "${SETTING_KEY_LIST}" SETTING_KEY_LIST_LENGTH) +math(EXPR SETTING_KEY_LIST_NEW_LENGTH "${SETTING_KEY_LIST_LENGTH} - 1") +string(SUBSTRING "${SETTING_KEY_LIST}" 0 ${SETTING_KEY_LIST_NEW_LENGTH} SETTING_KEY_LIST) + +# Configure files +configure_file("common/setting_keys.h.in" "common/setting_keys.h" @ONLY) +if (ENABLE_QT) + configure_file("citra_qt/setting_qkeys.h.in" "citra_qt/setting_qkeys.h" @ONLY) +endif() +if (ANDROID AND NOT ENABLE_LIBRETRO) + configure_file("android/app/src/main/jni/jni_setting_keys.cpp.in" "android/app/src/main/jni/jni_setting_keys.cpp" @ONLY) +endif() diff --git a/dist/languages/ca_ES_valencia.ts b/dist/languages/ca_ES_valencia.ts index b3614b36b..e2853b1f7 100644 --- a/dist/languages/ca_ES_valencia.ts +++ b/dist/languages/ca_ES_valencia.ts @@ -297,7 +297,7 @@ Aixó banejarà el seu nom d'usuari de fòrum i la seua adreça IP. Emulation - + Emulació @@ -326,8 +326,8 @@ Aixó banejarà el seu nom d'usuari de fòrum i la seua adreça IP. - This post-processing effect adjusts audio speed to match emulation speed and helps prevent audio stutter. This however increases audio latency. - Este efecte de post-processat ajusta la velocitat de l'àudio per a igualar-la a la de l'emulador i ajuda a previndre aturades d'àudio, però augmenta la latència d'este. + <html><head/><body><p>This post-processing effect adjusts audio speed to match emulation speed and helps prevent audio stutter. This however increases audio latency.</p></body></html> + <html><head/><body><p>Este efecte de post-processat ajusta la velocitat de l'àudio per a igualar-la a la de l'emulador i ajuda a previndre aturades d'àudio, però augmenta la latència d'este.</p></body></html> @@ -336,8 +336,8 @@ Aixó banejarà el seu nom d'usuari de fòrum i la seua adreça IP. - Scales audio playback speed to account for drops in emulation framerate. This means that audio will play at full speed even while the application framerate is low. May cause audio desync issues. - Ajusta la velocitat de reproducció d'àudio per a compensar les caigudes en la velocitat d'emulació. Això significa que l'àudio es reproduirà a velocitat completa fins i tot quan la velocitat de quadres del joc siga baixa. Pot causar problemes de desincronització d'àudio. + <html><head/><body><p>Scales audio playback speed to account for drops in emulation framerate. This means that audio will play at full speed even while the application framerate is low. May cause audio desync issues.</p></body></html> + <html><head/><body><p>Ajusta la velocitat de reproducció d'àudio per a compensar les caigudes en la velocitat d'emulació. Això significa que l'àudio es reproduirà a velocitat completa fins i tot quan la velocitat de quadres del joc siga baixa. Pot causar problemes de desincronització d'àudio.</p></body></html> @@ -414,7 +414,7 @@ Aixó banejarà el seu nom d'usuari de fòrum i la seua adreça IP. Camera to Configure - + Configurar la càmera @@ -435,7 +435,7 @@ Aixó banejarà el seu nom d'usuari de fòrum i la seua adreça IP. Camera mode - + Mode de càmera @@ -456,7 +456,7 @@ Aixó banejarà el seu nom d'usuari de fòrum i la seua adreça IP. Camera position - + Posició de càmera @@ -476,13 +476,13 @@ Aixó banejarà el seu nom d'usuari de fòrum i la seua adreça IP. - Select where the image of the emulated camera comes from. It may be an image or a real camera. - Selecciona el lloc d'on prové la imatge de la càmera emulada. Pot ser una imatge o una càmera real. + <html><head/><body><p>Select where the image of the emulated camera comes from. It may be an image or a real camera.</p></body></html> + <html><head/><body><p>Selecciona el lloc d'on prové la imatge de la càmera emulada. Pot ser una imatge o una càmera real.</p></body></html> Camera Image Source - + Font de la imatge de la càmera @@ -502,7 +502,7 @@ Aixó banejarà el seu nom d'usuari de fòrum i la seua adreça IP. File - + Fitxer @@ -529,7 +529,7 @@ Aixó banejarà el seu nom d'usuari de fòrum i la seua adreça IP. Flip - + Rotació @@ -805,21 +805,31 @@ Desitja ignorar l'error i continuar? + <html><head/><body><p>Toggles the unique data console type (Old 3DS ↔ New 3DS) to be able to download the opposite system firmware type from system settings.</p></body></html> + <html><head/><body><p>Permet alternar el tipus de consola (Old 3DS &#8596; New 3DS) per a poder descarregar el firmware del sistema oposat des de la configuració del sistema.</p></body></html> + + + + Toggle unique data console type + Canviar tipus de consola en les dades úniques de consola + + + Force deterministic async operations Forçar operacions asíncrones deterministes - + <html><head/><body><p>Forces all async operations to run on the main thread, making them deterministic. Do not enable if you don't know what you are doing.</p></body></html> <html><head/><body><p>Obliga al fet que totes les operacions asíncrones s'executen en el fil principal, la qual cosa les fa deterministes. No l'habilites si no saps el que estàs fent.</p></body></html> - + Enable RPC server Activar servidor RPC - + <html><head/><body><p>Enables the RPC server on port 45987. This allows remotely reading/writing guest memory, do not enable if you don't know what you are doing.</p></body></html> <html><head/><body><p>Activa el servidor RPC en el port 45987. Això permet llegir/escriure de manera remota la memòria emulada, no l'actives si no saps el que estàs fent.</p></body></html> @@ -1017,178 +1027,188 @@ Desitja ignorar l'error i continuar? - Enable Linear Filtering - + Use Integer Scaling + Restringir l'escalat a múltiples sencers - + + <html><head/><body><p>Use Integer Scaling</p><p>Enforces that the larger screen in all layouts is an integer scale of the 240px height of the original 3DS screen.</p></body></html> + <html><head/><body><p>Restringir l'escalat a múltiples sencers</p><p>Limita que la pantalla més gran en tots els dissenys tinga un escalat múltiple de l'altura de 240 px de la pantalla 3DS original.</p></body></html> + + + + Enable Linear Filtering + Activar filtre linear + + + Post-Processing Shader Ombreig de post-processat - + Texture Filter Filtre de Textures - + None Cap - + Anime4K Anime4K - + Bicubic Bicubic - + ScaleForce ScaleForce - + xBRZ xBRZ - + MMPX MMPX - + Stereoscopy Estereoscopia - + Stereoscopic 3D Mode Mode 3D Estereoscòpic - + Off Apagat - + Side by Side De costat a costat - + Side by Side Full Width - + De costat a costat ample complet - + Anaglyph Anàglifo - + Interlaced Entrellaçat - + Reverse Interlaced Entrellaçat invers - + Depth Profunditat - + % % - + Note: Depth values over 100% are not possible on real hardware and may cause graphical issues Nota: Els valors de profunditat superiors al 100% no són possibles en hardware real i poden causar problemes gràfics. - + Eye to Render in Monoscopic Mode Ull per a renderitzar en mode monoscòpic - + Left Eye (default) Ull esquerre (predeterminat) - + Right Eye Ull dret - + Disable Right Eye Rendering - + Desactivar Renderitzat d'Ull Dret - + <html><head/><body><p>Disable Right Eye Rendering</p><p>Disables rendering the right eye image when not using stereoscopic mode. Greatly improves performance in some applications, but can cause flickering in others.</p></body></html> <html><head/><body><p>Desactivar Dibuixat d'Ull Dret</p><p>Desactiva el dibuixat de la imatge de l'ull dret quan no s'utilitza el mode estereoscòpic. Millora significativament el rendiment en alguns jocs, però pot causar parpelleig en uns altres.</p></body></html> - + Swap Eyes - + Intercanviar Ulls - + Utility Utilitat - + <html><head/><body><p>Replace textures with PNG files.</p><p>Textures are loaded from load/textures/[Title ID]/.</p></body></html> <html><head/><body><p>Canvia les textures per fitxers PNG.</p><p>Les textures són carregades des de load/textures/[Title ID]/.</p></body></html> - + Use custom textures - + Usar textures personalitzades - + <html><head/><body><p>Dump textures to PNG files.</p><p>Textures are dumped to dump/textures/[Title ID]/.</p></body></html> <html><head/><body><p>Bolca les textures a fitxers PNG.</p><p>Les textures són bolcades a load/textures/[Title ID]/.</p></body></html> - + Dump textures - + Bolcar textures - + <html><head/><body><p>Load all custom textures into memory on boot, instead of loading them when the application requires them.</p></body></html> <html><head/><body><p>Càrrega totes les textures personalitzades en memòria en iniciar, en comptes de carregar-les quan l'aplicació les necessite.</p></body></html> - + Preload custom textures - + Precarregar textures personalitzades - + <html><head/><body><p>Load custom textures asynchronously with background threads to reduce loading stutter</p></body></html> <html><head/><body><p>Càrrega les textures personalitzades de manera asíncrona amb els fils de fons per a reduir les aturades de càrrega</p></body></html> - + Async custom texture loading - + Càrrega de textures personalitzades asíncrona @@ -1201,7 +1221,7 @@ Desitja ignorar l'error i continuar? Updates - + Actualitzacions @@ -1211,17 +1231,17 @@ Desitja ignorar l'error i continuar? Update Channel - + Canal d'actualització Stable - + Estable Prerelease - + Prellançament @@ -1266,12 +1286,12 @@ Desitja ignorar l'error i continuar? Set emulation speed - + Establir la velocitat d'emulació Emulation Speed - + Velocitat d'Emulació @@ -1383,12 +1403,12 @@ Desitja ignorar l'error i continuar? SPIR-V shader generation - + Generació de ombrejats SPIR-V Disable GLSL -> SPIR-V optimizer - + Desativar optimitzador GLSL -> SPIR-V @@ -1408,7 +1428,7 @@ Desitja ignorar l'error i continuar? Enable hardware shader - + Activar ombrejador de hardware @@ -1418,7 +1438,7 @@ Desitja ignorar l'error i continuar? Accurate multiplication - + Multiplicació precisa @@ -1428,7 +1448,7 @@ Desitja ignorar l'error i continuar? Enable shader JIT - + Activar ombreig JIT @@ -1438,17 +1458,17 @@ Desitja ignorar l'error i continuar? Enable async shader compilation - + Activar compilació de ombrejadors asíncrona <html><head/><body><p>Perform presentation on separate threads. Improves performance when using Vulkan in most applications. Adds ~1 frame of input lag.</p></body></html> - + <html><head/><body><p>Presentar en fils diferents. Millora el rendiment quan s'usa Vulkan en molts jocs. Agrega ~1 fotograma de retard de lag.</p></body></html> Enable async presentation - + Activar presentació asíncrona @@ -1488,12 +1508,12 @@ Desitja ignorar l'error i continuar? Use disk shader cache - + Usar caché emmagatzemada d'ombrejadors - VSync prevents the screen from tearing, but some graphics cards have lower performance with VSync enabled. Keep it enabled if you don't notice a performance difference. - La Sincronització Vertical impedix el tearing de la imatge, però algunes targetes gràfiques tenen pitjor rendiment quan este està activat. Mantingues-ho activat si no notes cap diferència en el rendiment. + <html><head/><body><p>VSync prevents the screen from tearing, but some graphics cards have lower performance with VSync enabled. Keep it enabled if you don't notice a performance difference.</p></body></html> + <html><head/><body><p>La Sincronització Vertical impedix el tearing de la imatge, però algunes targetes gràfiques tenen pitjor rendiment quan este està activat. Mantingues-ho activat si no notes cap diferència en el rendiment.</p></body></html> @@ -1501,22 +1521,32 @@ Desitja ignorar l'error i continuar? Activar Sincronització Vertical - + + <html><head/><body><p>When enabled, this setting detects when the refresh rate of the screen is below that of the 3DS, and when it is, disables VSync automatically to avoid emulation speed being forced below 100%.</p></body></html> + <html><head/><body><p>Quan està habilitada, esta configuració detecta quan la freqüència d'actualització de la pantalla és menor que la del 3DS i, quan ho és, deshabilita automàticament VSync per a evitar que la velocitat d'emulació es veja forçada a ser inferior al 100%.</p></body></html> + + + + Enable display refresh rate detection + Habilitar detecció de freqüència d'actualització de pantalla + + + Use global Usar global - + Use per-application Usar configuració de l'aplicació - + Delay Application Render Thread - + Endarrerir fil de renderitzat - + <html><head/><body><p>Delays the emulated application render thread the specified amount of milliseconds every time it submits render commands to the GPU.</p><p>Adjust this feature in the (very few) dynamic framerate applications to fix performance issues.</p></body></html> <html><head/><body><p>Demora el fil emulat de renderitzat del joc una determinada quantitat de mil·lisegons cada vegada que envie comandos de renderitzat a la GPU.</p><p>Ajusta esta característica en els (pocs) jocs amb FPS dinàmics per a arreglar problemes de rendiment.</p></body></html> @@ -1995,170 +2025,243 @@ Desitja ignorar l'error i continuar? - + Custom Layout Estil Personalitzat - - Swap screens - - - - + Rotate screens upright - + Girar pantalles en vertical - + + Swap screens + Intercanviar pantalles + + + + Customize layout cycling + Personalitzar cicle d'estil + + + Screen Gap Separació de Pantalla - + Large Screen Proportion Proporció de Pantalla Gran - + Small Screen Position Posició de Pantalla Xicoteta - + Upper Right Amunt a la dreta - + Middle Right Centre a la dreta - + Bottom Right (default) Abaix a la dreta (predeterminat) - + Upper Left Amunt a l'esquerra: - + Middle Left Centre a l'esquerra - + Bottom Left Abaix a l'esquerra - + Above large screen Damunt de la pantalla gran - + Below large screen Davall de la pantalla gran - + Background Color Color de fons - - + + Top Screen Pantalla superior - - + + X Position Posició X - - - - - - - - - + + + + + + + + - - + + + px px - - + + Y Position Posició Y - - + + Width Ample - - + + Height Altura - - + + Bottom Screen Pantalla inferior - + <html><head/><body><p>Bottom Screen Opacity %</p></body></html> - + <html><head/><body><p>Percentatge d'Opacitat de la Pantalla Inferior %</p></body></html> - + Single Screen Layout Estil de Pantalla Única - - + + Stretch Allargar - - + + Left/Right Padding Padding horitzontal - - + + Top/Bottom Padding Padding vertical - + Note: These settings affect the Single Screen and Separate Windows layouts Nota: Esta configuració afecta als estils de pantalla única i finestres separades + + ConfigureLayoutCycle + + + Configure Layout Cycling + Configurar cicle d'estil + + + + Screen Layout Cycling Customization + Personalització de cicle d'estil de pantalla + + + + Select which screen layout options should be cycled with the "Toggle Screen Layout" hotkey + Seleccione quines opcions d'estil de pantalla s'han d'alternar amb la tecla d'accés ràpid "Alternar estil de pantalla" + + + + Use Global Value + Usar valor global + + + + Default + Per omissió + + + + Single Screen + Pantalla única + + + + Large Screen + Pantalla amplia + + + + Side by Side + Conjunta + + + + Separate Windows + Ventanes separades + + + + Hybrid + Híbrid + + + + Custom + Personalitzada + + + + No Layout Selected + No s'ha seleccionat cap estil + + + + Please select at least one layout option to cycle through. + Per favor selecciona almenys una opció d'estil. + + ConfigureMotionTouch - + Configure Motion / Touch Configurar Moviment / Tàctil @@ -2186,8 +2289,10 @@ Desitja ignorar l'error i continuar? - - + + + + Configure Configurar @@ -2217,58 +2322,68 @@ Desitja ignorar l'error i continuar? Usar assignació de botons: - + + Map touchpads on controllers like the DualSense directly to touch + Assignar panells tàctils de comandaments com el DualSense directament com a control tàctil + + + + Use controller touchpad + Usar el panell tàctil del comandament + + + CemuhookUDP Config Configuració de CemuhookUDP - + You may use any Cemuhook compatible UDP input source to provide motion and touch input. Pots usar qualsevol controlador UDP compatible amb Cemuhook per a controlar el moviment i les funcions tàctils. - + Server: Servidor: - + Port: Port: - + Pad: Controlador: - + Pad 1 Controlador 1 - + Pad 2 Controlador 2 - + Pad 3 Controlador 3 - + Pad 4 Controlador 4 - + Learn More Més Informació - - + + Test Provar @@ -2299,57 +2414,68 @@ Desitja ignorar l'error i continuar? <a href='https://web.archive.org/web/20240301211230/https://citra-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">Més Informació</span></a> - + + Information Informació - + After pressing OK, press a button on the controller whose motion you want to track. Després de polsar "Acceptar", polsa un botó en el controlador el moviment del qual vols que seguisca. - + [press button] [pulsa un botó] - + + After pressing OK, tap the touchpad on the controller you want to track. + Després de polsar "Acceptar", toca el panell tàctil del comandament que desitja usar. + + + + [press touchpad] + [pressiona el panell tàctil] + + + Testing Provant - + Configuring Configurant - + Test Successful Prova Exitosa - + Successfully received data from the server. Dades rebudes del servidor amb èxit. - + 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 del servidor.<br>Assegura't que el servidor estiga configurat correctament i que la direcció i el port són correctes. - + Azahar Azahar - + UDP Test or calibration configuration is in progress.<br>Please wait for them to finish. La prova de UDP o la configuració de calibratge està en marxa.<br>Per favor, espera a que estes acaben. @@ -2472,7 +2598,7 @@ Desitja ignorar l'error i continuar? Use virtual SD card - + Usar targeta SD virtual @@ -2482,7 +2608,7 @@ Desitja ignorar l'error i continuar? Use custom storage location - + Usar emmagatzematge personalitzat @@ -2519,8 +2645,8 @@ Desitja ignorar l'error i continuar? - Compresses the content of CIA files when installed to the emulated SD card. Only affects CIA content which is installed while the setting is enabled. - Comprimix el contingut de fitxers CIA quan són instal·lats a la SD emulada. Només afecta contingut CIA instal·lat amb esta opció activada. + <html><head/><body><p>Compresses the content of CIA files when installed to the emulated SD card. Only affects CIA content which is installed while the setting is enabled.</p></body></html> + <html><head/><body><p>Comprimix el contingut de fitxers CIA quan són instal·lats a la SD emulada. Només afecta contingut CIA instal·lat amb esta opció activada.</p></body></html> @@ -2570,7 +2696,7 @@ les funcions en línia (si estan instal·lats) Region - + Regió @@ -2581,12 +2707,13 @@ les funcions en línia (si estan instal·lats) Apply region free patch to installed applications. - + Aplicar modificació de regió lliure +a les aplicacions instal·lades. Patches the region of installed applications to be region free, so that they always appear on the home menu. - + Modifica la regió de les aplicacions instal·lades perquè siguen de regió lliure, de manera que sempre apareguen en el menú Home. @@ -2852,7 +2979,7 @@ installed applications. 3GX Plugin Loader - + Carregador de complements 3GX @@ -3804,12 +3931,12 @@ Mou els punts per a canviar la posició, o fes doble clic en les cel·les de la Interface Language - + Idioma de la Interfície Theme - + Tema @@ -3819,7 +3946,7 @@ Mou els punts per a canviar la posició, o fes doble clic en les cel·les de la Icon Size - + Grandària d'Icona @@ -3840,7 +3967,7 @@ Mou els punts per a canviar la posició, o fes doble clic en les cel·les de la Row 1 Text - + Text de Fila 1 @@ -3875,17 +4002,17 @@ Mou els punts per a canviar la posició, o fes doble clic en les cel·les de la Row 2 Text - + Text de Fila 2 Hide titles without icon - + Ocultar títols sense icona Single line mode - + Mode Una Línia @@ -3895,7 +4022,7 @@ Mou els punts per a canviar la posició, o fes doble clic en les cel·les de la Show advanced frame time info - + Mostrar informació de fotogrames avançada @@ -4102,511 +4229,530 @@ Per favor, comprove la instal·lació de FFmpeg usada per a la compilació. GMainWindow - + + Warning + Advertència + + + + The `azahar` executable is being run directly rather than via the Azahar.app bundle. + +When run this way, the app may be missing certain functionality such as camera emulation. + +It is recommended to instead run Azahar using the `open` command, e.g.: +`open ./Azahar.app` + L'executable `azahar` s'ha executat directament en lloc del paquet Azahar.app. + +En executar-se d'esta manera, és possible que l'aplicació no tinga certes funcions, com l'emulació de càmera. + +Es recomana executar Azahar amb el comando `*open`, per exemple: `*open ./Azahar.app` + + + No Suitable Vulkan Devices Detected Dispositius compatibles amb Vulkan no trobats. - + Vulkan initialization failed during boot.<br/>Your GPU may not support Vulkan 1.1, or you do not have the latest graphics driver. L'inici de Vulkan va fallar durant l'inici.<br/>El teu GPU, o no suporta Vulkan 1.1, o no té els últims drivers gràfics. - + Current Artic traffic speed. Higher values indicate bigger transfer loads. Velocitat actual del trànsit Artic. Valors més alts indiquen major càrrega de transferència. - - + + Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a 3DS. La velocitat d'emulació actual. Valors majors o menors de 100% indiquen que la velocitat d'emulació funciona més ràpida o lentament que en una 3DS. - - + + How many frames per second the app is currently displaying. This will vary from app to app and scene to scene. Els fotogrames per segon que està mostrant el joc. Variaran d'aplicació en aplicació i d'escena a escena. - - + + Time taken to emulate a 3DS frame, not counting framelimiting or v-sync. For full-speed emulation this should be at most 16.67 ms. El temps que porta emular un fotograma de 3DS, sense tindre en compte el limitador de fotogrames, ni la sincronització vertical. Per a una emulació òptima, este valor no ha de superar els 16.67 ms. - + MicroProfile (unavailable) MicroProfile (no disponible) - + Clear Recent Files Netejar Fitxers Recents - + &Continue &Continuar - + &Pause &Pausar - + Azahar is running an application TRANSLATORS: This string is shown to the user to explain why Citra needs to prevent the computer from sleeping Azahar està executant una aplicació - - + + Invalid App Format Format d'aplicació invàlid - - + + Your app format is not supported.<br/>Please follow the guides to redump your <a href='https://web.archive.org/web/20240304210021/https://citra-emu.org/wiki/dumping-game-cartridges/'>game cartridges</a> or <a href='https://web.archive.org/web/20240304210011/https://citra-emu.org/wiki/dumping-installed-titles/'>installed titles</a>. El teu format d'aplicació no és vàlid.<br/>Per favor, seguix les instruccions per a tornar a bolcar les teues <a href='https://web.archive.org/web/20240304210021/https://citra-emu.org/wiki/dumping-game-cartridges/'>cartutxos de joc</a> i/o <a href='https://web.archive.org/web/20240304210011/https://citra-emu.org/wiki/dumping-installed-titles/'>títols instal·lats</a>. - + App Corrupted Aplicació corrupta - + Your app is corrupted. <br/>Please follow the guides to redump your <a href='https://web.archive.org/web/20240304210021/https://citra-emu.org/wiki/dumping-game-cartridges/'>game cartridges</a> or <a href='https://web.archive.org/web/20240304210011/https://citra-emu.org/wiki/dumping-installed-titles/'>installed titles</a>. La teua aplicació està corrupta. <br/>Per favor, seguix les instruccions per a tornar a bolcar les teues <a href='https://web.archive.org/web/20240304210021/https://citra-emu.org/wiki/dumping-game-cartridges/'>cartutxos de joc</a> i/o <a href='https://web.archive.org/web/20240304210011/https://citra-emu.org/wiki/dumping-installed-titles/'>títols instal·lats</a>. - + App Encrypted Aplicació encriptada - + Your app is encrypted. <br/><a href='https://azahar-emu.org/blog/game-loading-changes/'>Please check our blog for more info.</a> La teua aplicació està encriptada. <br/><a href='https://azahar-emu.org/blog/game-loading-changes/'>Per favor visita el nostre blog per a més informació.</a> - + Unsupported App Aplicació no suportada - + GBA Virtual Console is not supported by Azahar. Consola Virtual de GBA no està suportada per Azahar. - - + + Artic Server Artic Server - + Invalid system mode - + Mode de sistema no vàlid - + New 3DS exclusive applications cannot be loaded without enabling the New 3DS mode. - + Les aplicacions exclusives de New 3DS no es poden carregar sense activar el mode New 3DS. - + Error while loading App! Error en carregar l'aplicació! - + An unknown error occurred. Please see the log for more details. Un error desconegut ha ocorregut. Per favor, mira el log per a més detalls. - + CIA must be installed before usage El CIA ha d'estar instal·lat abans d'usar-se - + Before using this CIA, you must install it. Do you want to install it now? Abans d'usar este CIA, has d'instal·lar-ho. Vols instal·lar-ho ara? - + Quick Load Càrrega Ràpida - + Quick Save Guardat Ràpid - - + + Slot %1 Ranura %1 - + %2 %3 %2 %3 - + Quick Save - %1 Guardat Ràpid - %1 - + Quick Load - %1 Càrrega Ràpida - %1 - + Slot %1 - %2 %3 Ranura %1 - %2 %3 - + Error Opening %1 Folder Error en obrir la carpeta %1 - - + + Folder does not exist! La carpeta no existix! - + Remove Play Time Data Llevar Dades de Temps de Joc - + Reset play time? Reiniciar temps de joc? - - - - + + + + Create Shortcut Crear drecera - + Do you want to launch the application in fullscreen? Desitja llançar esta aplicació en pantalla completa? - + Successfully created a shortcut to %1 Drecera a %1 creat amb èxit - + This will create a shortcut to the current AppImage. This may not work well if you update. Continue? Aixó crearà una drecera a la AppImage actual. Pot no funcionar bé si actualitzes. Continuar? - + Failed to create a shortcut to %1 Fallada en crear una drecera a %1 - + Create Icon Crear icona - + Cannot create icon file. Path "%1" does not exist and cannot be created. No es va poder crear un arxiu d'icona. La ruta "%1" no existix i no pot ser creada. - + Dumping... Bolcant... - - + + Cancel Cancel·lar - - - - - - - - - + + + + + + + + + Azahar Azahar - + Could not dump base RomFS. Refer to the log for details. No es va poder bolcar el RomFS base. Comprove el registre per a més detalls. - + Error Opening %1 Error en obrir %1 - + Select Directory Seleccionar directori - + Properties Propietats - + The application properties could not be loaded. Les propietats de l'aplicació no han pogut ser carregades. - + 3DS Executable (%1);;All Files (*.*) %1 is an identifier for the 3DS executable file extensions. Executable 3DS(%1);;Tots els arxius(*.*) - + Load File Carregar Fitxer - - + + Set Up System Files Configurar Fitxers del Sistema - + <p>Azahar needs console unique data and firmware files from a real console to be able to use some of its features.<br>Such files and data can be set up with the <a href=https://github.com/azahar-emu/ArticSetupTool>Azahar Artic Setup Tool</a><br>Notes:<ul><li><b>This operation will install console unique data to Azahar, do not share your user or nand folders<br>after performing the setup process!</b></li><li>While doing the setup process, Azahar will link to the console running the setup tool. You can unlink the<br>console later from the System tab in the emulator configuration menu.</li><li>Do not go online with both Azahar and your 3DS console at the same time after setting up system files,<br>as it could cause issues.</li><li>Old 3DS setup is needed for the New 3DS setup to work (doing both setup modes is recommended).</li><li>Both setup modes will work regardless of the model of the console running the setup tool.</li></ul><hr></p> <p>Azahar necessita fitxers d'una consola real per poder utilitzar algunes de les seues funcions.<br>Pots obtindre els fitxers amb la <a href=https://github.com/azahar-emu/ArticSetupTool>ferramenta de configuració Azahar</a><br>Notes:<ul><li><b>Aquesta operació instal·larà fitxers únics de la consola a Azahar, no compartisques les teues carpetes d'usuari o nand<br>després de completar el procés de configuració!</b></li><li>Després de la configuració, Azahar s'enllaçarà a la consola que ha executat la ferramenta de configuració. Pots desvincular la<br>consola més tard des de la pestanya "Fitxers de sistema" del menú d'opcions de l'emulador.</li><li>No et connectes en línia amb Azahar i la consola 3DS al mateix temps després de configurar els arxius del sistema,<br>ja que això podria causar problemes.</li><li>La configuració de Old 3DS és necessària perquè funcione la configuració de New 3DS (configurar els dos modes és recomanat).</li><li>Els dos modes de configuració funcionaran independentment del model de la consola que execute la ferramenta de configuració.</li></ul><hr></p> - + Enter Azahar Artic Setup Tool address: Introduïx la direcció de la ferramenta de configuració: - + <br>Choose setup mode: <br>Tria mode de configuració: - + (ℹ️) Old 3DS setup (ℹ️) Configuració Old 3DS - - + + Setup is possible. La configuració és possible. - + (⚠) New 3DS setup (⚠) Configuració New 3DS - + Old 3DS setup is required first. La configuració Old 3DS es neccessaria abans. - + (✅) Old 3DS setup (✅) Configuració Old 3DS - - + + Setup completed. Configuració completada. - + (ℹ️) New 3DS setup (ℹ️) Configuració New 3DS - + (✅) New 3DS setup (✅) Configuració New 3DS - + The system files for the selected mode are already set up. Reinstall the files anyway? Els fitxers de sistema per al mode seleccionat ja estan configurats. Vols reinstal·lar els arxius de totes maneres? - + Load Files Carregar Fitxers - + 3DS Installation File (*.cia *.zcia) Fitxers d'Instalació de 3DS (*.cia *.zcia) - - - + + + All Files (*.*) Tots els fitxers (*.*) - + Connect to Artic Base Connectar amb Artic Base - + Enter Artic Base server address: Introduïx la direcció del servidor Artic Base - + %1 has been installed successfully. %1 s'ha instal·lat amb èxit. - + Unable to open File No es va poder obrir el Fitxer - + Could not open %1 No es va poder obrir %1 - + Installation aborted Instal·lació interrompuda - + The installation of %1 was aborted. Please see the log for more details La instal·lació de %1 ha sigut avortada.\n Per favor, mira el log per a més informació. - + Invalid File Fitxer no vàlid - + %1 is not a valid CIA %1 no és un CIA vàlid. - + CIA Encrypted CIA encriptat - + Your CIA file is encrypted.<br/><a href='https://azahar-emu.org/blog/game-loading-changes/'>Please check our blog for more info.</a> El teu fitxer CIA està encriptat. <br/><a href='https://azahar-emu.org/blog/game-loading-changes/'>Per favor visita el nostre blog per a més informació.</a> - + Unable to find File No es pot trobar el Fitxer - + Could not find %1 No es va poder trobar %1 - - - - - Z3DS Compression - - - - - Failed to compress some files, check log for details. - - - - - Failed to decompress some files, check log for details. - - - - - All files have been compressed successfully. - - - - - All files have been decompressed successfully. - - - + + + + Z3DS Compression + Compressió Z3DS + + + + Failed to compress some files, check log for details. + No es van poder comprimir alguns arxius, mira el registre per a més detalls. + + + + Failed to decompress some files, check log for details. + No es van poder descomprimir alguns arxius, mira el registre per a més detalls. + + + + All files have been compressed successfully. + Tots els fitxers s'han comprimit amb èxit. + + + + All files have been decompressed successfully. + Tots els fitxers s'han descomprimit amb èxit. + + + Uninstalling '%1'... Desinstal·lant '%1'... - + Failed to uninstall '%1'. Va fallar la desinstal·lació de '%1'. - + Successfully uninstalled '%1'. '%1' desinstal·lat amb èxit. - + File not found Fitxer no trobat - + File "%1" not found Fitxer "%1" no trobat - + Savestates Estats - + Warning: Savestates are NOT a replacement for in-application saves, and are not meant to be reliable. Use at your own risk! @@ -4615,86 +4761,86 @@ Use at your own risk! Usa'ls sota el teu propi risc! - - - + + + Error opening amiibo data file Error en obrir els fitxers de dades de l'Amiibo - + A tag is already in use. Ja està en ús una etiqueta. - + Application is not looking for amiibos. L'aplicació no està buscant amiibos. - + Amiibo File (%1);; All Files (*.*) Fitxer d'Amiibo (%1);; Tots els arxius (*.*) - + Load Amiibo Carregar Amiibo - + Unable to open amiibo file "%1" for reading. No es va poder obrir el fitxer amiibo "%1" per a la seua lectura. - + Record Movie Gravar Pel·lícula - + Movie recording cancelled. Gravació de pel·lícula cancel·lada. - - + + Movie Saved Pel·lícula Guardada - - + + The movie is successfully saved. Pel·lícula guardada amb èxit. - + Application will unpause L'aplicació es resumirà - + The application will be unpaused, and the next frame will be captured. Is this okay? L'aplicació es resumirà, i el següent fotograma serà capturat. Estàs d'acord? - + Invalid Screenshot Directory Directori de captures de pantalla no vàlid - + Cannot create specified screenshot directory. Screenshot path is set back to its default value. No es pot crear el directori de captures de pantalla. La ruta de captures de pantalla torna al seu valor per omissió. - + Could not load video dumper No es va poder carregar el bolcador de vídeo - + FFmpeg could not be loaded. Make sure you have a compatible version installed. To install FFmpeg to Azahar, press Open and select your FFmpeg directory. @@ -4707,265 +4853,265 @@ Per a instal·lar FFmpeg en Azahar, polsa Obrir i tria el directori de FFmpeg. Per a veure una guia sobre com instal·lar FFmpeg, polsa Ajuda. - + Load 3DS ROM Files - + Carregar ROM de 3DS - + 3DS ROM Files (*.cia *.cci *.3dsx *.cxi *.3ds) - + Fitxers ROM 3DS (*.cia *.cci *.3dsx *.cxi *.3ds) - + 3DS Compressed ROM File (*.%1) Fitxer ROM 3DS comprimit (*.%1) - + Save 3DS Compressed ROM File Desar fitxer 3DS comprimit - + Select Output 3DS Compressed ROM Folder - + Seleccione la carpeta d'eixida comprimida dels ROMs 3DS - + Load 3DS Compressed ROM Files - + Carregar fitxers 3DS comprimits - + 3DS Compressed ROM Files (*.zcia *zcci *z3dsx *zcxi) Fitxer ROM 3DS comprimit (*.zcia *zcci *z3dsx *zcxi) - + 3DS ROM File (*.%1) Fitxer ROM 3DS (*.%1) - + Save 3DS ROM File Desar fitxer ROM 3DS - + Select Output 3DS ROM Folder - + Seleccione la carpeta d'eixida dels ROMs 3DS - + Select FFmpeg Directory Seleccionar Directori FFmpeg - + The provided FFmpeg directory is missing %1. Please make sure the correct directory was selected. Al directori de FFmpeg indicat li falta %1. Per favor, assegura't d'haver seleccionat el directori correcte. - + FFmpeg has been sucessfully installed. FFmpeg ha sigut instal·lat amb èxit. - + Installation of FFmpeg failed. Check the log file for details. La instal·lació de FFmpeg ha fallat. Comprova l'arxiu del registre per a més detalls. - + Could not start video dumping.<br>Please ensure that the video encoder is configured correctly.<br>Refer to the log for details. No es va poder començar a gravar vídeo.<br>Assegura't que el codificador de vídeo està configurat correctament.<br>Per a més detalls, observa el registre. - + Recording %1 Gravant %1 - + Playing %1 / %2 Reproduint %1 / %2 - + Movie Finished Pel·lícula acabada - + (Accessing SharedExtData) (Accedint al SharedExtData) - + (Accessing SystemSaveData) (Accedint al SystemSaveData) - + (Accessing BossExtData) (Accedint al BossExtData) - + (Accessing ExtData) (Accedint al ExtData) - + (Accessing SaveData) (Accedint al SaveData) - + MB/s MB/s - + KB/s KB/s - + Artic Traffic: %1 %2%3 Tràfic Artic: %1 %2%3 - + Speed: %1% Velocitat: %1% - + Speed: %1% / %2% Velocitat: %1% / %2% - + App: %1 FPS App: %1 FPS - + Frame: %1 ms (GPU: [CMD: %2 ms, SWP: %3 ms], IPC: %4 ms, SVC: %5 ms, Rem: %6 ms) Frame: %1 ms (GPU: [CMD: %2 ms, SWP: %3 ms], IPC: %4 ms, SVC: %5 ms, Rem: %6 ms) - + Frame: %1 ms Frame: %1 ms - + VOLUME: MUTE VOLUM: SILENCI - + VOLUME: %1% Volume percentage (e.g. 50%) VOLUM: %1% - + %1 is missing. Please <a href='https://web.archive.org/web/20240304201103/https://citra-emu.org/wiki/dumping-system-archives-and-the-shared-fonts-from-a-3ds-console/'>dump your system archives</a>.<br/>Continuing emulation may result in crashes and bugs. Falta %1 . Per favor,<a href='https://web.archive.org/web/20240304201103/https://citra-emu.org/wiki/dumping-system-archives-and-the-shared-fonts-from-a-3ds-console/'>bolca els teus arxius de sistema</a>.<br/>Continuar l'emulació pot resultar en penges i errors. - + A system archive Un fitxer del sistema - + System Archive Not Found El fitxer del sistema no s'ha trobat - + System Archive Missing Falta un Fitxer de Sistema - + Save/load Error Error de guardat/càrrega - + Fatal Error Error Fatal - + A fatal error occurred. <a href='https://web.archive.org/web/20240228001712/https://community.citra-emu.org/t/how-to-upload-the-log-file/296'>Check the log</a> for details.<br/>Continuing emulation may result in crashes and bugs. Error fatal.<a href='https://web.archive.org/web/20240228001712/https://community.citra-emu.org/t/how-to-upload-the-log-file/296'>Mira el log</a>per a més detalls.<br/>Continuar l'emulació pot resultar en penges i errors. - + Fatal Error encountered Error Fatal trobat - + Continue Continuar - + Quit Application Tancar aplicació - + OK Aceptar - + Would you like to exit now? Vols eixir ara? - + The application is still running. Would you like to stop emulation? L'aplicació seguix en execució. Vols parar l'emulació? - + Playback Completed Reproducció Completada - + Movie playback completed. Reproducció de pel·lícula completada. - + Update Available Actualització disponible - + Update %1 for Azahar is available. Would you like to download it? L'actualització %1 d'Azahar ja està disponible. Vols descarregar-la? - + Primary Window Finestra Primària - + Secondary Window Finestra Secundària @@ -5028,42 +5174,42 @@ Vols descarregar-la? GRenderWindow - + OpenGL not available! OpenGL no disponible! - + OpenGL shared contexts are not supported. Els contextos compartits de OpenGL no estan suportats. - + Error while initializing OpenGL! Error en iniciar OpenGL! - + Your GPU may not support OpenGL, or you do not have the latest graphics driver. El teu GPU, o no suporta OpenGL, o no tens els últims drivers de la targeta gràfica. - + Error while initializing OpenGL 4.3! Error en iniciar OpenGL 4.3! - + Your GPU may not support OpenGL 4.3, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1 El teu GPU, o no suporta OpenGL 4.3, o no tens els últims drivers de la targeta gràfica.<br><br>Renderitzador GL:<br>%1 - + Error while initializing OpenGL ES 3.2! Error en iniciar OpenGL ES 3.2! - + Your GPU may not support OpenGL ES 3.2, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1 El teu GPU, o no suporta OpenGL ES 3.2, o no tens els últims drivers de la targeta gràfica.<br><br>Renderitzador GL:<br>%1 @@ -5071,180 +5217,185 @@ Vols descarregar-la? GameList - - + + Compatibility Compatibilitad - - + + Region Regió - - + + File type Tipus de Fitxer - - + + Size Grandària - - + + Play time Temps de joc - + Favorite Favorit - + Eject Cartridge - + Expulsar Cartutx - + Insert Cartridge - + Inserir Cartutx - + Open Obrir - + Application Location Localització d'aplicacions - + Save Data Location Localització de dades de guardat - + Extra Data Location Localització de Dades Extra - + Update Data Location Localització de dades d'actualització - + DLC Data Location Localització de dades de DLC - + Texture Dump Location Localització del bolcat de textures - + Custom Texture Location Localització de les textures personalitzades - + Mods Location Localització dels mods - + Dump RomFS Bolcar RomFS - + Disk Shader Cache Caché de ombrejador de disc - + Open Shader Cache Location Obrir ubicació de cache de ombrejador - + Delete OpenGL Shader Cache Eliminar cache d'ombreig de OpenGL - + + Delete Vulkan Shader Cache + Eliminar cache d'ombreig de Vulkan + + + Uninstall Desinstal·lar - + Everything Tot - + Application Aplicació - + Update Actualitzar - + DLC DLC - + Remove Play Time Data Llevar Dades de Temps de Joc - + Create Shortcut Crear drecera - + Add to Desktop Afegir a l'escriptori - + Add to Applications Menu Afegir al Menú d'Aplicacions - + Stress Test: App Launch - + Prova d'estrés: llançament de l'aplicació - + Properties Propietats - - - - + + + + Azahar Azahar - + Are you sure you want to completely uninstall '%1'? This will delete the application if installed, as well as any installed updates or DLC. @@ -5253,64 +5404,64 @@ This will delete the application if installed, as well as any installed updates Aixó eliminarà l'aplicació si està instal·lada, així com també les actualitzacions i DLC instal·lades. - - + + %1 (Update) %1 (Actualització) - - + + %1 (DLC) %1 (DLC) - + Are you sure you want to uninstall '%1'? Estàs segur de voler desinstal·lar '%1'? - + Are you sure you want to uninstall the update for '%1'? Estàs segur de voler desinstal·lar l'actualització de '%1'? - + Are you sure you want to uninstall all DLC for '%1'? Estàs segur de voler desinstal·lar tot el DLC de '%1'? - + Scan Subfolders Escanejar subdirectoris - + Remove Application Directory Eliminar directori d'aplicacions - + Move Up Moure a dalt - + Move Down Moure avall - + Open Directory Location Obrir ubicació del directori - + Clear Reiniciar - + Name Nom @@ -5396,7 +5547,7 @@ Screen. GameListPlaceholder - + Double-click to add a new folder to the application list Faça doble clic per a agregar una nova carpeta a la llista d'aplicacions @@ -5404,27 +5555,27 @@ Screen. GameListSearchField - + of de - + result resultat - + results resultats - + Filter: Filtre: - + Enter pattern to filter Introduïx un patró per a filtrar @@ -6057,24 +6208,24 @@ Missatge de depuració: Preparant ombrejadors %1 / %2 - - Loading Shaders %1 / %2 - Carregant ombrejadors %1 / %2 + + Loading %3 %1 / %2 + Carregant %3 %1 / %2 - + Launching... Iniciant... - + Now Loading %1 Carregant %1 - + Estimated Time %1 Temps Estimat %1 @@ -7050,17 +7201,17 @@ Pot ser que haja deixat la sala. Obrir Fitxer - + Error Error - + Couldn't load the camera La cambra no s'ha pogut carregar - + Couldn't load %1 No s'ha pogut carregar %1 diff --git a/dist/languages/da_DK.ts b/dist/languages/da_DK.ts index 965e89336..c4b990066 100644 --- a/dist/languages/da_DK.ts +++ b/dist/languages/da_DK.ts @@ -328,8 +328,8 @@ Dette vil udelukke både deres forum-brugernavn og IP-adresse. - This post-processing effect adjusts audio speed to match emulation speed and helps prevent audio stutter. This however increases audio latency. - Denne efterbehandling justerer lydens hastighed så den passer emuleringens og hjælper med at undgå hak i lyden. Denne effekt skaber større forsinkelse af lyden. + <html><head/><body><p>This post-processing effect adjusts audio speed to match emulation speed and helps prevent audio stutter. This however increases audio latency.</p></body></html> + @@ -338,8 +338,8 @@ Dette vil udelukke både deres forum-brugernavn og IP-adresse. - Scales audio playback speed to account for drops in emulation framerate. This means that audio will play at full speed even while the application framerate is low. May cause audio desync issues. - Skalerer lydafspilningshastigheden for at tage højde for fald i emuleringens billedhastighed. Dette betyder, at lyden afspilles med fuld hastighed, selvom spillets billedhastighed er lav. Kan give problemer med synkroniseringen af lyd. + <html><head/><body><p>Scales audio playback speed to account for drops in emulation framerate. This means that audio will play at full speed even while the application framerate is low. May cause audio desync issues.</p></body></html> + @@ -478,8 +478,8 @@ Dette vil udelukke både deres forum-brugernavn og IP-adresse. - Select where the image of the emulated camera comes from. It may be an image or a real camera. - Vælg hvor billedet til det emulerede kamera kommer fra. Det kan være et billede eller et rigtigt kamera. + <html><head/><body><p>Select where the image of the emulated camera comes from. It may be an image or a real camera.</p></body></html> + @@ -807,21 +807,31 @@ Vil du ignorere fejlen og fortsætte? + <html><head/><body><p>Toggles the unique data console type (Old 3DS ↔ New 3DS) to be able to download the opposite system firmware type from system settings.</p></body></html> + + + + + Toggle unique data console type + + + + Force deterministic async operations Tving deterministiske asynkrone operationer - + <html><head/><body><p>Forces all async operations to run on the main thread, making them deterministic. Do not enable if you don't know what you are doing.</p></body></html> <html><head/><body><p>Tvinger alle asynkrone operationer til at køre på hovedtråden, hvilket gør dem deterministiske. Aktiver ikke, hvis du ikke ved, hvad du laver.</p></body></html> - + Enable RPC server - + <html><head/><body><p>Enables the RPC server on port 45987. This allows remotely reading/writing guest memory, do not enable if you don't know what you are doing.</p></body></html> @@ -1019,176 +1029,186 @@ Vil du ignorere fejlen og fortsætte? + Use Integer Scaling + + + + + <html><head/><body><p>Use Integer Scaling</p><p>Enforces that the larger screen in all layouts is an integer scale of the 240px height of the original 3DS screen.</p></body></html> + + + + Enable Linear Filtering - + Post-Processing Shader Efterbehandling Shader - + Texture Filter Teksturfilter - + None Ingen - + Anime4K Anime4K - + Bicubic Bikubisk - + ScaleForce ScaleForce - + xBRZ xBRZ - + MMPX MMPX - + Stereoscopy Stereoskopi - + Stereoscopic 3D Mode Stereoskopisk 3D-tilstand - + Off Slukket - + Side by Side Side om Side - + Side by Side Full Width - + Anaglyph Anaglyf - + Interlaced Interlaced - + Reverse Interlaced Omvendt interlaced - + Depth Dybde - + % % - + Note: Depth values over 100% are not possible on real hardware and may cause graphical issues Bemærk: Dybdeværdier over 100 % er ikke muligt på rigtig hardware og kan forårsage grafiske problemer - + Eye to Render in Monoscopic Mode Øje til gengivelse i monoskopisk tilstand - + Left Eye (default) Venstre øje (standard) - + Right Eye Højre øje - + Disable Right Eye Rendering - + <html><head/><body><p>Disable Right Eye Rendering</p><p>Disables rendering the right eye image when not using stereoscopic mode. Greatly improves performance in some applications, but can cause flickering in others.</p></body></html> <html><head/><body><p>Deaktiver højre øje-gengivelse</p><p>Deaktiverer gengivelse af højre øje billede, når der ikke bruges stereoskopisk tilstand. Forbedrer ydeevnen betydeligt i nogle applikationer, men kan forårsage flimren i andre.</p></body></html> - + Swap Eyes - + Utility Værktøj - + <html><head/><body><p>Replace textures with PNG files.</p><p>Textures are loaded from load/textures/[Title ID]/.</p></body></html> <html><head/><body><p>Erstat teksturer med PNG-filer.</p><p>Teksturer indlæses fra load/textures/[Titel ID]/.</p></body></html> - + Use custom textures - + <html><head/><body><p>Dump textures to PNG files.</p><p>Textures are dumped to dump/textures/[Title ID]/.</p></body></html> - + Dump textures - + <html><head/><body><p>Load all custom textures into memory on boot, instead of loading them when the application requires them.</p></body></html> - + Preload custom textures - + <html><head/><body><p>Load custom textures asynchronously with background threads to reduce loading stutter</p></body></html> - + Async custom texture loading @@ -1494,7 +1514,7 @@ Vil du ignorere fejlen og fortsætte? - VSync prevents the screen from tearing, but some graphics cards have lower performance with VSync enabled. Keep it enabled if you don't notice a performance difference. + <html><head/><body><p>VSync prevents the screen from tearing, but some graphics cards have lower performance with VSync enabled. Keep it enabled if you don't notice a performance difference.</p></body></html> @@ -1503,22 +1523,32 @@ Vil du ignorere fejlen og fortsætte? - + + <html><head/><body><p>When enabled, this setting detects when the refresh rate of the screen is below that of the 3DS, and when it is, disables VSync automatically to avoid emulation speed being forced below 100%.</p></body></html> + + + + + Enable display refresh rate detection + + + + Use global - + Use per-application - + Delay Application Render Thread - + <html><head/><body><p>Delays the emulated application render thread the specified amount of milliseconds every time it submits render commands to the GPU.</p><p>Adjust this feature in the (very few) dynamic framerate applications to fix performance issues.</p></body></html> @@ -1997,170 +2027,243 @@ Vil du ignorere fejlen og fortsætte? - + Custom Layout - - Swap screens - - - - + Rotate screens upright - + + Swap screens + + + + + Customize layout cycling + + + + Screen Gap - + Large Screen Proportion - + Small Screen Position - + Upper Right - + Middle Right - + Bottom Right (default) - + Upper Left - + Middle Left - + Bottom Left - + Above large screen - + Below large screen - + Background Color - - + + Top Screen - - + + X Position - - - - - - - - - + + + + + + + + - - + + + px - - + + Y Position - - + + Width - - + + Height - - + + Bottom Screen - + <html><head/><body><p>Bottom Screen Opacity %</p></body></html> - + Single Screen Layout - - + + Stretch - - + + Left/Right Padding - - + + Top/Bottom Padding - + Note: These settings affect the Single Screen and Separate Windows layouts + + ConfigureLayoutCycle + + + Configure Layout Cycling + + + + + Screen Layout Cycling Customization + + + + + Select which screen layout options should be cycled with the "Toggle Screen Layout" hotkey + + + + + Use Global Value + + + + + Default + Standard + + + + Single Screen + Enkelt skærm + + + + Large Screen + Stor skærm + + + + Side by Side + + + + + Separate Windows + + + + + Hybrid + + + + + Custom + Tilpasset + + + + No Layout Selected + + + + + Please select at least one layout option to cycle through. + + + ConfigureMotionTouch - + Configure Motion / Touch Konfigurer bevægelse/touch @@ -2188,8 +2291,10 @@ Vil du ignorere fejlen og fortsætte? - - + + + + Configure Konfigurer @@ -2219,58 +2324,68 @@ Vil du ignorere fejlen og fortsætte? - + + Map touchpads on controllers like the DualSense directly to touch + + + + + Use controller touchpad + + + + CemuhookUDP Config Konfiguration af CemuhookUDP - + You may use any Cemuhook compatible UDP input source to provide motion and touch input. Du kan bruge enhver Cemuhook-kompatibel UDP-inputkilde til at levere bevægelses- og touchinput. - + Server: Server: - + Port: Port: - + Pad: Controller: - + Pad 1 Controller 1 - + Pad 2 Controller 2 - + Pad 3 Controller 3 - + Pad 4 Controller 4 - + Learn More Lær mere - - + + Test Test @@ -2301,57 +2416,68 @@ Vil du ignorere fejlen og fortsætte? - + + Information Information - + After pressing OK, press a button on the controller whose motion you want to track. - + [press button] - + + After pressing OK, tap the touchpad on the controller you want to track. + + + + + [press touchpad] + + + + Testing Tester - + Configuring Konfigurerer - + Test Successful Testen var succesfuld - + Successfully received data from the server. Data blev succesfuldt modtaget fra serveren. - + Test Failed Testen fejlede - + 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>Kontroller venligst om server er sat op korrekt og at adressen og porten er rigtig. - + Azahar - + UDP Test or calibration configuration is in progress.<br>Please wait for them to finish. UDP-test eller konfiguration af kalibrering er i gang.<br>Vent venligst til de er fuldført. @@ -2521,7 +2647,7 @@ Vil du ignorere fejlen og fortsætte? - Compresses the content of CIA files when installed to the emulated SD card. Only affects CIA content which is installed while the setting is enabled. + <html><head/><body><p>Compresses the content of CIA files when installed to the emulated SD card. Only affects CIA content which is installed while the setting is enabled.</p></body></html> @@ -4101,595 +4227,610 @@ Please check your FFmpeg installation used for compilation. GMainWindow - + + Warning + Advarsel + + + + The `azahar` executable is being run directly rather than via the Azahar.app bundle. + +When run this way, the app may be missing certain functionality such as camera emulation. + +It is recommended to instead run Azahar using the `open` command, e.g.: +`open ./Azahar.app` + + + + No Suitable Vulkan Devices Detected - + Vulkan initialization failed during boot.<br/>Your GPU may not support Vulkan 1.1, or you do not have the latest graphics driver. - + Current Artic traffic speed. Higher values indicate bigger transfer loads. - - + + Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a 3DS. Nuværende emuleringshastighed. Værdier højere eller lavere end 100% indikerer at emuleringen kører hurtigere eller langsommere end en 3DS. - - + + How many frames per second the app is currently displaying. This will vary from app to app and scene to scene. - - + + Time taken to emulate a 3DS frame, not counting framelimiting or v-sync. For full-speed emulation this should be at most 16.67 ms. Tid det tog at emulere en 3DS-skærmbillede, hastighedsbegrænsning og v-sync er tille talt med. For emulering med fuld hastighed skal dette højest være 16,67ms. - + MicroProfile (unavailable) - + Clear Recent Files Ryd seneste filer - + &Continue - + &Pause - + Azahar is running an application TRANSLATORS: This string is shown to the user to explain why Citra needs to prevent the computer from sleeping - - + + Invalid App Format - - + + Your app format is not supported.<br/>Please follow the guides to redump your <a href='https://web.archive.org/web/20240304210021/https://citra-emu.org/wiki/dumping-game-cartridges/'>game cartridges</a> or <a href='https://web.archive.org/web/20240304210011/https://citra-emu.org/wiki/dumping-installed-titles/'>installed titles</a>. - + App Corrupted - + Your app is corrupted. <br/>Please follow the guides to redump your <a href='https://web.archive.org/web/20240304210021/https://citra-emu.org/wiki/dumping-game-cartridges/'>game cartridges</a> or <a href='https://web.archive.org/web/20240304210011/https://citra-emu.org/wiki/dumping-installed-titles/'>installed titles</a>. - + App Encrypted - + Your app is encrypted. <br/><a href='https://azahar-emu.org/blog/game-loading-changes/'>Please check our blog for more info.</a> - + Unsupported App - + GBA Virtual Console is not supported by Azahar. - - + + Artic Server - + Invalid system mode - + New 3DS exclusive applications cannot be loaded without enabling the New 3DS mode. - + Error while loading App! - + An unknown error occurred. Please see the log for more details. - + CIA must be installed before usage CIA skal installeres før brug - + Before using this CIA, you must install it. Do you want to install it now? Før du kan bruge denne CIA, skal den være installeret. Vil du installere den nu? - + Quick Load - + Quick Save - - + + Slot %1 - + %2 %3 - + Quick Save - %1 - + Quick Load - %1 - + Slot %1 - %2 %3 - + Error Opening %1 Folder Fejl ved åbning af %1-mappen - - + + Folder does not exist! Mappen findes ikke! - + Remove Play Time Data - + Reset play time? - - - - + + + + Create Shortcut - + Do you want to launch the application in fullscreen? - + Successfully created a shortcut to %1 - + This will create a shortcut to the current AppImage. This may not work well if you update. Continue? - + Failed to create a shortcut to %1 - + Create Icon - + Cannot create icon file. Path "%1" does not exist and cannot be created. - + Dumping... - - + + Cancel Annuller - - - - - - - - - + + + + + + + + + Azahar - + Could not dump base RomFS. Refer to the log for details. - + Error Opening %1 Fejl ved åbning af %1 - + Select Directory Vælg mappe - + Properties - + The application properties could not be loaded. - + 3DS Executable (%1);;All Files (*.*) %1 is an identifier for the 3DS executable file extensions. 3DS-program (%1);;Alle filer (*.*) - + Load File Indlæs fil - - + + Set Up System Files - + <p>Azahar needs console unique data and firmware files from a real console to be able to use some of its features.<br>Such files and data can be set up with the <a href=https://github.com/azahar-emu/ArticSetupTool>Azahar Artic Setup Tool</a><br>Notes:<ul><li><b>This operation will install console unique data to Azahar, do not share your user or nand folders<br>after performing the setup process!</b></li><li>While doing the setup process, Azahar will link to the console running the setup tool. You can unlink the<br>console later from the System tab in the emulator configuration menu.</li><li>Do not go online with both Azahar and your 3DS console at the same time after setting up system files,<br>as it could cause issues.</li><li>Old 3DS setup is needed for the New 3DS setup to work (doing both setup modes is recommended).</li><li>Both setup modes will work regardless of the model of the console running the setup tool.</li></ul><hr></p> - + Enter Azahar Artic Setup Tool address: - + <br>Choose setup mode: - + (ℹ️) Old 3DS setup - - + + Setup is possible. - + (⚠) New 3DS setup - + Old 3DS setup is required first. - + (✅) Old 3DS setup - - + + Setup completed. - + (ℹ️) New 3DS setup - + (✅) New 3DS setup - + The system files for the selected mode are already set up. Reinstall the files anyway? - + Load Files Indlæs filer - + 3DS Installation File (*.cia *.zcia) - - - + + + All Files (*.*) Alle filer (*.*) - + Connect to Artic Base - + Enter Artic Base server address: - + %1 has been installed successfully. %1 blev succesfuldt installeret. - + Unable to open File Kunne ikke åbne filen - + Could not open %1 Kunne ikke åbne %1 - + Installation aborted Installation afbrudt - + The installation of %1 was aborted. Please see the log for more details Installationen af %1 blev afbrudt. Se logfilen for flere detaljer. - + Invalid File Ugyldig fil - + %1 is not a valid CIA %1 er ikke en gyldig CIA - + CIA Encrypted - + Your CIA file is encrypted.<br/><a href='https://azahar-emu.org/blog/game-loading-changes/'>Please check our blog for more info.</a> - + Unable to find File - + Could not find %1 - - - - + + + + Z3DS Compression - + Failed to compress some files, check log for details. - + Failed to decompress some files, check log for details. - + All files have been compressed successfully. - + All files have been decompressed successfully. - + Uninstalling '%1'... - + Failed to uninstall '%1'. - + Successfully uninstalled '%1'. - + File not found Filen blev ikke fundet - + File "%1" not found Filen "%1" blev ikke fundet - + Savestates - + Warning: Savestates are NOT a replacement for in-application saves, and are not meant to be reliable. Use at your own risk! - - - + + + Error opening amiibo data file - + A tag is already in use. - + Application is not looking for amiibos. - + Amiibo File (%1);; All Files (*.*) Amiibo-fil (%1);;Alle filer (*.*) - + Load Amiibo Indlæs Amiibo - + Unable to open amiibo file "%1" for reading. - + Record Movie Optag film - + Movie recording cancelled. Filmoptagelse afbrudt - - + + Movie Saved Film gemt - - + + The movie is successfully saved. Filmen er succesfuldt blevet gemt. - + Application will unpause - + The application will be unpaused, and the next frame will be captured. Is this okay? - + Invalid Screenshot Directory - + Cannot create specified screenshot directory. Screenshot path is set back to its default value. - + Could not load video dumper - + FFmpeg could not be loaded. Make sure you have a compatible version installed. To install FFmpeg to Azahar, press Open and select your FFmpeg directory. @@ -4698,264 +4839,264 @@ To view a guide on how to install FFmpeg, press Help. - + Load 3DS ROM Files - + 3DS ROM Files (*.cia *.cci *.3dsx *.cxi *.3ds) - + 3DS Compressed ROM File (*.%1) - + Save 3DS Compressed ROM File - + Select Output 3DS Compressed ROM Folder - + Load 3DS Compressed ROM Files - + 3DS Compressed ROM Files (*.zcia *zcci *z3dsx *zcxi) - + 3DS ROM File (*.%1) - + Save 3DS ROM File - + Select Output 3DS ROM Folder - + Select FFmpeg Directory - + The provided FFmpeg directory is missing %1. Please make sure the correct directory was selected. - + FFmpeg has been sucessfully installed. - + Installation of FFmpeg failed. Check the log file for details. - + Could not start video dumping.<br>Please ensure that the video encoder is configured correctly.<br>Refer to the log for details. - + Recording %1 - + Playing %1 / %2 - + Movie Finished - + (Accessing SharedExtData) - + (Accessing SystemSaveData) - + (Accessing BossExtData) - + (Accessing ExtData) - + (Accessing SaveData) - + MB/s - + KB/s - + Artic Traffic: %1 %2%3 - + Speed: %1% Hastighed: %1% - + Speed: %1% / %2% Hastighed: %1%/%2% - + App: %1 FPS - + Frame: %1 ms (GPU: [CMD: %2 ms, SWP: %3 ms], IPC: %4 ms, SVC: %5 ms, Rem: %6 ms) - + Frame: %1 ms Billede: %1ms - + VOLUME: MUTE - + VOLUME: %1% Volume percentage (e.g. 50%) - + %1 is missing. Please <a href='https://web.archive.org/web/20240304201103/https://citra-emu.org/wiki/dumping-system-archives-and-the-shared-fonts-from-a-3ds-console/'>dump your system archives</a>.<br/>Continuing emulation may result in crashes and bugs. - + A system archive - + System Archive Not Found Systemarkiver blev ikke fundet - + System Archive Missing - + Save/load Error - + Fatal Error Alvorlig fejl - + A fatal error occurred. <a href='https://web.archive.org/web/20240228001712/https://community.citra-emu.org/t/how-to-upload-the-log-file/296'>Check the log</a> for details.<br/>Continuing emulation may result in crashes and bugs. - + Fatal Error encountered - + Continue Fortsæt - + Quit Application - + OK OK - + Would you like to exit now? Vil du afslutte nu? - + The application is still running. Would you like to stop emulation? - + Playback Completed Afspilning færdig - + Movie playback completed. Afspilning af filmen er færdig. - + Update Available - + Update %1 for Azahar is available. Would you like to download it? - + Primary Window - + Secondary Window @@ -5018,42 +5159,42 @@ Would you like to download it? GRenderWindow - + OpenGL not available! - + OpenGL shared contexts are not supported. - + Error while initializing OpenGL! - + Your GPU may not support OpenGL, or you do not have the latest graphics driver. - + Error while initializing OpenGL 4.3! - + Your GPU may not support OpenGL 4.3, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1 - + Error while initializing OpenGL ES 3.2! - + Your GPU may not support OpenGL ES 3.2, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1 @@ -5061,244 +5202,249 @@ Would you like to download it? GameList - - + + Compatibility Kompatibilitet - - + + Region Region - - + + File type Filtype - - + + Size Størrelse - - + + Play time - + Favorite - + Eject Cartridge - + Insert Cartridge - + Open - + Application Location - + Save Data Location - + Extra Data Location - + Update Data Location - + DLC Data Location - + Texture Dump Location - + Custom Texture Location - + Mods Location - + Dump RomFS - + Disk Shader Cache - + Open Shader Cache Location - + Delete OpenGL Shader Cache - + + Delete Vulkan Shader Cache + + + + Uninstall - + Everything - + Application - + Update - + DLC - + Remove Play Time Data - + Create Shortcut - + Add to Desktop - + Add to Applications Menu - + Stress Test: App Launch - + Properties - - - - + + + + Azahar - + Are you sure you want to completely uninstall '%1'? This will delete the application if installed, as well as any installed updates or DLC. - - + + %1 (Update) - - + + %1 (DLC) - + Are you sure you want to uninstall '%1'? - + Are you sure you want to uninstall the update for '%1'? - + Are you sure you want to uninstall all DLC for '%1'? - + Scan Subfolders Skan undermapper - + Remove Application Directory - + Move Up - + Move Down - + Open Directory Location Åbn mappens placering - + Clear Ryd - + Name Navn @@ -5384,7 +5530,7 @@ Screen. GameListPlaceholder - + Double-click to add a new folder to the application list @@ -5392,27 +5538,27 @@ Screen. GameListSearchField - + of af - + result resultat - + results resultater - + Filter: Filter: - + Enter pattern to filter Indtast mønster til filtrering @@ -6044,23 +6190,23 @@ Debug Message: - - Loading Shaders %1 / %2 + + Loading %3 %1 / %2 - + Launching... - + Now Loading %1 - + Estimated Time %1 @@ -7033,17 +7179,17 @@ They may have left the room. Åbn fil - + Error Fejl - + Couldn't load the camera Kunne ikke sætte kameraet op - + Couldn't load %1 Kunne ikke indlæse %1 diff --git a/dist/languages/de.ts b/dist/languages/de.ts index 0f2a63ae4..99717701d 100644 --- a/dist/languages/de.ts +++ b/dist/languages/de.ts @@ -328,8 +328,8 @@ Dies bannt sowohl den Forum-Nutzernamen, als auch die IP-Adresse. - This post-processing effect adjusts audio speed to match emulation speed and helps prevent audio stutter. This however increases audio latency. - Dieser Nachbearbeitungseffekt passt die Audiogeschwindigkeit an die Emulationsgeschwindigkeit an und hilft, Audiostottern zu vermeiden. Dabei wird allerdings die Audiolatenz erhöht. + <html><head/><body><p>This post-processing effect adjusts audio speed to match emulation speed and helps prevent audio stutter. This however increases audio latency.</p></body></html> + @@ -338,8 +338,8 @@ Dies bannt sowohl den Forum-Nutzernamen, als auch die IP-Adresse. - Scales audio playback speed to account for drops in emulation framerate. This means that audio will play at full speed even while the application framerate is low. May cause audio desync issues. - Skaliert die Audiowiedergabegeschwindigkeit, um Einbrüche in der Emulations-Framerate auszugleichen. Dies bedeutet, dass Audio mit voller Geschwindigkeit wiedergegeben wird, auch wenn die Anwendungs-Framerate niedriger ist. Kann zu Audio-Fehlsynchronisierungsproblemen führen. + <html><head/><body><p>Scales audio playback speed to account for drops in emulation framerate. This means that audio will play at full speed even while the application framerate is low. May cause audio desync issues.</p></body></html> + @@ -478,8 +478,8 @@ Dies bannt sowohl den Forum-Nutzernamen, als auch die IP-Adresse. - Select where the image of the emulated camera comes from. It may be an image or a real camera. - Wähle eine Quelle für das emulierte Kamerabild. Dies kann ein Bild oder eine echte Kamera sein. + <html><head/><body><p>Select where the image of the emulated camera comes from. It may be an image or a real camera.</p></body></html> + @@ -807,21 +807,31 @@ Möchtest du den Fehler ignorieren und fortfahren? + <html><head/><body><p>Toggles the unique data console type (Old 3DS ↔ New 3DS) to be able to download the opposite system firmware type from system settings.</p></body></html> + + + + + Toggle unique data console type + + + + Force deterministic async operations Erzwinge deterministische asynchrone Operationen - + <html><head/><body><p>Forces all async operations to run on the main thread, making them deterministic. Do not enable if you don't know what you are doing.</p></body></html> <html><head/><body><p>Zwingt alle asynchrone Operationen auf dem Haupt-Thread zu laufen, wodurch sie deterministisch werden. Aktiviere diese Funktion nicht, wenn du nicht weißt, was das bringt.</p></body></html> - + Enable RPC server RPC-Server aktivieren - + <html><head/><body><p>Enables the RPC server on port 45987. This allows remotely reading/writing guest memory, do not enable if you don't know what you are doing.</p></body></html> <html><head/><body><p>Aktiviert den RPC-Server auf Port 45987. Dadurch kann über das Netzwerk der emulierte Speicher gelesen und beschrieben werden. Aktiviere diese Funktion nicht, wenn du nicht weißt, was das bringt.</p></body></html> @@ -1019,176 +1029,186 @@ Möchtest du den Fehler ignorieren und fortfahren? + Use Integer Scaling + + + + + <html><head/><body><p>Use Integer Scaling</p><p>Enforces that the larger screen in all layouts is an integer scale of the 240px height of the original 3DS screen.</p></body></html> + + + + Enable Linear Filtering - + Post-Processing Shader Nachbearbeitungsshader - + Texture Filter Texturenfilter - + None Keiner - + Anime4K Anime4K - + Bicubic Bikubisch - + ScaleForce ScaleForce - + xBRZ xBRZ - + MMPX MMPX - + Stereoscopy Stereoskopie - + Stereoscopic 3D Mode Stereoskopischer 3D-Modus - + Off Aus - + Side by Side Nebeneinander - + Side by Side Full Width - + Anaglyph Anaglyphen - + Interlaced Überlappend - + Reverse Interlaced Invers überlappend - + Depth Tiefe - + % % - + Note: Depth values over 100% are not possible on real hardware and may cause graphical issues Hinweis: Tiefenwerte über 100% sind auf echter Hardware nicht möglich und könnten grafische Probleme verursachen - + Eye to Render in Monoscopic Mode Auge zum Rendern im Monoskopischen Modus - + Left Eye (default) Linkes Auge (Voreinstellung) - + Right Eye Rechtes Auge - + Disable Right Eye Rendering - + <html><head/><body><p>Disable Right Eye Rendering</p><p>Disables rendering the right eye image when not using stereoscopic mode. Greatly improves performance in some applications, but can cause flickering in others.</p></body></html> <html><head/><body><p>Deaktiviert die Darstellung des Bildes für das rechte Auge</p><p>Deaktiviert die Darstellung des Bildes für das rechte Auge, wenn der stereoskopische Modus nicht verwendet wird. Verbessert die Leistung in einigen Anwendungen erheblich, kann aber bei anderen Flackern verursachen. </p></body></html> - + Swap Eyes - + Utility Dienstprogramm - + <html><head/><body><p>Replace textures with PNG files.</p><p>Textures are loaded from load/textures/[Title ID]/.</p></body></html> <html><head/><body><p>Ersetze Texturen mit PNG-Dateien.</p><p>Texturen werden von „load/textures/[Title-ID]/“ geladen.</p></body></html> - + Use custom textures - + <html><head/><body><p>Dump textures to PNG files.</p><p>Textures are dumped to dump/textures/[Title ID]/.</p></body></html> <html><head/><body><p>Dumpe Texturen als PNG-Datei.</p><p>Texturen werden unter „dump/textures/[Title-ID]/“ gedumpt.</p></body></html> - + Dump textures - + <html><head/><body><p>Load all custom textures into memory on boot, instead of loading them when the application requires them.</p></body></html> <html><head/><body><p>Lädt alle benutzerdefinierten Texturen beim Start in den Speicher, anstatt sie erst zu laden wenn die Anwendung sie benötigt.</p></body></html> - + Preload custom textures - + <html><head/><body><p>Load custom textures asynchronously with background threads to reduce loading stutter</p></body></html> <html><head/><body><p>Lädt alle benutzerdefinierten Texturen asynchron mit Hintergrund-Threads, um das Stottern beim Laden zu reduzieren</p></body></html> - + Async custom texture loading @@ -1494,8 +1514,8 @@ Möchtest du den Fehler ignorieren und fortfahren? - VSync prevents the screen from tearing, but some graphics cards have lower performance with VSync enabled. Keep it enabled if you don't notice a performance difference. - VSync verhindert Bildschirmzerrung, allerdings haben manche Grafikkarten eine schlechtere Leistung, wenn VSync aktiv ist. Lass es aktiviert, wenn du keinen Leistungsunterschied bemerkst. + <html><head/><body><p>VSync prevents the screen from tearing, but some graphics cards have lower performance with VSync enabled. Keep it enabled if you don't notice a performance difference.</p></body></html> + @@ -1503,22 +1523,32 @@ Möchtest du den Fehler ignorieren und fortfahren? V-Sync aktivieren - + + <html><head/><body><p>When enabled, this setting detects when the refresh rate of the screen is below that of the 3DS, and when it is, disables VSync automatically to avoid emulation speed being forced below 100%.</p></body></html> + + + + + Enable display refresh rate detection + + + + Use global Global nutzen - + Use per-application Anwendungsspezifisch benutzen - + Delay Application Render Thread - + <html><head/><body><p>Delays the emulated application render thread the specified amount of milliseconds every time it submits render commands to the GPU.</p><p>Adjust this feature in the (very few) dynamic framerate applications to fix performance issues.</p></body></html> <html><head/><body><p>Verzögert den emulierten Anwendungs-Render-Thread jedes Mal um die angegebene Anzahl von Millisekunden, wenn er Render-Befehle an die GPU sendet.</p><p> Passe diese Funktion in den (sehr wenigen) Anwendungen mit dynamischer Framerate an, um Leistungsprobleme zu beheben.</p></body></html> @@ -1997,170 +2027,243 @@ Möchtest du den Fehler ignorieren und fortfahren? - + Custom Layout Benutzerdefinierte Anordnung - - Swap screens - - - - + Rotate screens upright - + + Swap screens + + + + + Customize layout cycling + + + + Screen Gap Bildschirmabstand - + Large Screen Proportion Größe des großen Bildschirms - + Small Screen Position Position des kleinen Bildschirms - + Upper Right Oben rechts - + Middle Right Mitte rechts - + Bottom Right (default) Unten rechts (Standard) - + Upper Left Oben links - + Middle Left Mitte links - + Bottom Left Unten links - + Above large screen Überm großen Bildschirm - + Below large screen Unterm großen Bildschirm - + Background Color Hintergrundfarbe - - + + Top Screen Oberer Bildschirm - - + + X Position X-Position - - - - - - - - - + + + + + + + + - - + + + px px - - + + Y Position Y-Position - - + + Width Breite - - + + Height Höhe - - + + Bottom Screen Unterer Bildschirm - + <html><head/><body><p>Bottom Screen Opacity %</p></body></html> - + Single Screen Layout Einzelbildschirmanordnung - - + + Stretch Strecken - - + + Left/Right Padding Umrandung (Links/Rechts) - - + + Top/Bottom Padding Umrandung (Oben/Unten) - + Note: These settings affect the Single Screen and Separate Windows layouts Hinweis: Diese Einstellungen beeinflussen die „Einzelbildschirm“- und „Getrennte Fenster“-Anordnung + + ConfigureLayoutCycle + + + Configure Layout Cycling + + + + + Screen Layout Cycling Customization + + + + + Select which screen layout options should be cycled with the "Toggle Screen Layout" hotkey + + + + + Use Global Value + + + + + Default + Standard + + + + Single Screen + + + + + Large Screen + Großer Bildschirm + + + + Side by Side + Nebeneinander + + + + Separate Windows + Getrennte Fenster + + + + Hybrid + + + + + Custom + Benutzerdefiniert + + + + No Layout Selected + + + + + Please select at least one layout option to cycle through. + + + ConfigureMotionTouch - + Configure Motion / Touch Bewegungssteuerung / Toucheingaben konfigurieren @@ -2188,8 +2291,10 @@ Möchtest du den Fehler ignorieren und fortfahren? - - + + + + Configure Konfiguration @@ -2219,58 +2324,68 @@ Möchtest du den Fehler ignorieren und fortfahren? Tastenzuweisung nutzen: - + + Map touchpads on controllers like the DualSense directly to touch + + + + + Use controller touchpad + + + + CemuhookUDP Config CemuhookUDP Konfiguration - + You may use any Cemuhook compatible UDP input source to provide motion and touch input. Du kannst jede Cemuhook kompatible UDP-Quelle verwenden, um Touch- und Bewegungseingaben bereitzustellen. - + Server: Server: - + Port: Port: - + Pad: Pad: - + Pad 1 Pad 1 - + Pad 2 Pad 2 - + Pad 3 Pad 3 - + Pad 4 Pad 4 - + Learn More Mehr erfahren - - + + Test Test @@ -2301,57 +2416,68 @@ Möchtest du den Fehler ignorieren und fortfahren? - + + Information Information - + After pressing OK, press a button on the controller whose motion you want to track. Nachdem du auf „O.K.“ geklickt hast, drücke eine Taste auf dem Controller, dessen Bewegung erfasst werden soll. - + [press button] [drücke eine Taste] - + + After pressing OK, tap the touchpad on the controller you want to track. + + + + + [press touchpad] + + + + Testing Test läuft - + Configuring Wird konfiguriert - + Test Successful Test erfolgreich - + Successfully received data from the server. Daten wurden erfolgreich vom Server empfangen. - + Test Failed Test gescheitert - + 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. Keine gültigen Daten vom Server empfangen. <br>Bitte stelle sicher, dass der Server korrekt eingerichtet ist und sowohl die Serveradresse, als auch der Port richtig sind. - + Azahar Azahar - + UDP Test or calibration configuration is in progress.<br>Please wait for them to finish. UDP-Test oder Kalibrierung werden gerade ausgeführt.<br>Bitte warte, bis der Test abgeschlossen sind. @@ -2521,7 +2647,7 @@ Möchtest du den Fehler ignorieren und fortfahren? - Compresses the content of CIA files when installed to the emulated SD card. Only affects CIA content which is installed while the setting is enabled. + <html><head/><body><p>Compresses the content of CIA files when installed to the emulated SD card. Only affects CIA content which is installed while the setting is enabled.</p></body></html> @@ -4104,511 +4230,526 @@ Bitte überprüfe deine FFmpeg-Installation, die für die Kompilierung verwendet GMainWindow - + + Warning + Warnung + + + + The `azahar` executable is being run directly rather than via the Azahar.app bundle. + +When run this way, the app may be missing certain functionality such as camera emulation. + +It is recommended to instead run Azahar using the `open` command, e.g.: +`open ./Azahar.app` + + + + No Suitable Vulkan Devices Detected Keine geeigneten Vulkan-Geräte gefunden - + Vulkan initialization failed during boot.<br/>Your GPU may not support Vulkan 1.1, or you do not have the latest graphics driver. Vulkan-Initialisierung beim Starten fehlgeschlagen.<br/>Deine Grafikkarte unterstützt möglicherweise „Vulkan 1.1“ nicht, oder ist nicht auf dem aktuellsten Stand. - + Current Artic traffic speed. Higher values indicate bigger transfer loads. Aktuelle Artic Daten-Verkehrsgeschwindigkeit. Höhere Werte weisen auf größere Übertragungslasten hin. - - + + Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a 3DS. Derzeitige Emulationsgeschwindigkeit. Werte höher oder niedriger als 100% zeigen, dass die Emulation schneller oder langsamer läuft als auf einem 3DS. - - + + How many frames per second the app is currently displaying. This will vary from app to app and scene to scene. Wie viele Bilder pro Sekunde die App aktuell anzeigt. Dies ist von App zu App und von Szene zu Szene unterschiedlich. - - + + Time taken to emulate a 3DS frame, not counting framelimiting or v-sync. For full-speed emulation this should be at most 16.67 ms. Die benötigte Zeit um ein 3DS-Einzelbild zu emulieren (V-Sync oder Bildratenbegrenzung nicht mitgezählt). Bei Echtzeitemulation sollte dieser Wert höchstens 16,67ms betragen. - + MicroProfile (unavailable) MicroProfile (Nicht verfügbar) - + Clear Recent Files Zuletzt verwendete Dateien zurücksetzen - + &Continue &Fortsetzen - + &Pause &Pause - + Azahar is running an application TRANSLATORS: This string is shown to the user to explain why Citra needs to prevent the computer from sleeping Azahar führt eine Anwendung aus - - + + Invalid App Format Falsches App Format - - + + Your app format is not supported.<br/>Please follow the guides to redump your <a href='https://web.archive.org/web/20240304210021/https://citra-emu.org/wiki/dumping-game-cartridges/'>game cartridges</a> or <a href='https://web.archive.org/web/20240304210011/https://citra-emu.org/wiki/dumping-installed-titles/'>installed titles</a>. Dein App-Format wird nicht unterstützt. <br/>Bitte folge den Anleitungen um deine <a href='https://web.archive.org/web/20240304210021/https://citra-emu.org/wiki/dumping-game-cartridges/'>Spielkarten</a> oder <a href='https://web.archive.org/web/20240304210011/https://citra-emu.org/wiki/dumping-installed-titles/'>installierten Titel</a> erneut zu dumpen. - + App Corrupted Anwendung beschädigt - + Your app is corrupted. <br/>Please follow the guides to redump your <a href='https://web.archive.org/web/20240304210021/https://citra-emu.org/wiki/dumping-game-cartridges/'>game cartridges</a> or <a href='https://web.archive.org/web/20240304210011/https://citra-emu.org/wiki/dumping-installed-titles/'>installed titles</a>. Deine App ist beschädigt. <br/>Folge bitte den Anleitungen um deine <a href='https://web.archive.org/web/20240304210021/https://citra-emu.org/wiki/dumping-game-cartridges/'>Spielkarten</a> oder <a href='https://web.archive.org/web/20240304210011/https://citra-emu.org/wiki/dumping-installed-titles/'>installierten Titel</a> erneut zu dumpen. - + App Encrypted Anwendung verschlüsselt - + Your app is encrypted. <br/><a href='https://azahar-emu.org/blog/game-loading-changes/'>Please check our blog for more info.</a> Deine App ist verschlüsselt. <br/><a href='https://azahar-emu.org/blog/game-loading-changes/'>Bitte lies unseren Blog für weitere Informationen.</a> - + Unsupported App Nicht unterstützte Anwendung - + GBA Virtual Console is not supported by Azahar. GBA Virtual Console wird nicht von Azahar unterstützt - - + + Artic Server Artic Server - + Invalid system mode - + New 3DS exclusive applications cannot be loaded without enabling the New 3DS mode. - + Error while loading App! Fehler beim Laden der Anwendung! - + An unknown error occurred. Please see the log for more details. Ein unbekannter Fehler ist aufgetreten. Mehr Details im Protokoll. - + CIA must be installed before usage CIA muss vor der Benutzung installiert sein - + Before using this CIA, you must install it. Do you want to install it now? Vor dem Nutzen dieser CIA muss sie installiert werden. Soll dies jetzt getan werden? - + Quick Load Schnellladen - + Quick Save Schnellspeichern - - + + Slot %1 Speicherplatz %1 - + %2 %3 %2 %3 - + Quick Save - %1 Schnellspeichern - %1 - + Quick Load - %1 Schnellladen - %1 - + Slot %1 - %2 %3 Speicherplatz %1 - %2 %3 - + Error Opening %1 Folder Fehler beim Öffnen des Ordners %1 - - + + Folder does not exist! Ordner existiert nicht! - + Remove Play Time Data Spielzeitdaten löschen - + Reset play time? Spielzeit zurücksetzen - - - - + + + + Create Shortcut Verknüpfung erstellen - + Do you want to launch the application in fullscreen? Möchtest du die Anwendung in Vollbild starten? - + Successfully created a shortcut to %1 Es wurde erfolgreich eine Verknüpfung für %1 erstellt - + This will create a shortcut to the current AppImage. This may not work well if you update. Continue? Dadurch wird eine Verknüpfung zum aktuellen AppImage erstellt. Dies funktioniert möglicherweise nicht mehr richtig, wenn du aktualisierst. Möchtest du fortfahren? - + Failed to create a shortcut to %1 Es konnte keine Verknüpfung für %1 erstellt werden - + Create Icon Icon erstellen - + Cannot create icon file. Path "%1" does not exist and cannot be created. Es konnte kein Icon-Pfad erstellt werden. „%1“ existiert nicht, oder kann nicht erstellt werden. - + Dumping... Dumpvorgang... - - + + Cancel Abbrechen - - - - - - - - - + + + + + + + + + Azahar Azahar - + Could not dump base RomFS. Refer to the log for details. Konnte Base-RomFS nicht dumpen. Schau im Protokoll für weitere Informationen nach. - + Error Opening %1 Fehler beim Öffnen von %1 - + Select Directory Verzeichnis auswählen - + Properties Eigenschaften - + The application properties could not be loaded. Die Anwendungseigenschaften konnten nicht geladen werden. - + 3DS Executable (%1);;All Files (*.*) %1 is an identifier for the 3DS executable file extensions. 3DS Programmdatei (%1);;Alle Dateien (*.*) - + Load File Datei laden - - + + Set Up System Files Systemdateien einrichten - + <p>Azahar needs console unique data and firmware files from a real console to be able to use some of its features.<br>Such files and data can be set up with the <a href=https://github.com/azahar-emu/ArticSetupTool>Azahar Artic Setup Tool</a><br>Notes:<ul><li><b>This operation will install console unique data to Azahar, do not share your user or nand folders<br>after performing the setup process!</b></li><li>While doing the setup process, Azahar will link to the console running the setup tool. You can unlink the<br>console later from the System tab in the emulator configuration menu.</li><li>Do not go online with both Azahar and your 3DS console at the same time after setting up system files,<br>as it could cause issues.</li><li>Old 3DS setup is needed for the New 3DS setup to work (doing both setup modes is recommended).</li><li>Both setup modes will work regardless of the model of the console running the setup tool.</li></ul><hr></p> <p>Azahar benötigt Konsolendaten und Firmware-Dateien von einer echten Konsole, um einige Funktionen nutzen zu können. <br>Du kannst solche Dateien mit dem <a href=https://github.com/azahar-emu/ArticSetupTool>Azahar Artic Einrichtungs-Tool</a> einrichten.<br>Hinweise:<ul><li><b>Bei diesem Vorgang werden konsolenspezifische Dateien in Azahar installiert. Gib deine Benutzer- oder NAND-Ordner nicht frei, <br>nachdem der Einrichtungsvorgang durchgeführt wurde!</b></li><li>Während des Einrichtungsvorgangs verknüpft Azahar deine Konsole mit dem Einrichtungstool. Du kannst die Verknüpfung <br>jederzeit im „Systemdateien“-Reiter in den Emulatoreinstellungen trennen.</li><li>Gehe nicht zeitgleich mit deinem eigenen 3DS und Azahar online, <br>da dies sonst zu Problemen führen könnte.</li><li>Damit die New 3DS-Einrichtung funktioniert, ist zuerst eine Old 3DS-Einrichtung erforderlich (Es wird empfohlen, beides einzurichten).</li><li>Beide Setup-Modi funktionieren unabhängig vom Modell der Konsole, auf dem das Setup-Tool ausgeführt wird.</li></ul><hr></p> - + Enter Azahar Artic Setup Tool address: Gib die Adresse des Azahar Artic Einrichtung-Tools ein: - + <br>Choose setup mode: <br>Wähle den Einrichtungsmodus: - + (ℹ️) Old 3DS setup (ℹ️) Old 3DS-Einrichtung - - + + Setup is possible. Einrichtung ist möglich. - + (⚠) New 3DS setup (⚠) New 3DS-Einrichtung - + Old 3DS setup is required first. Du musst zuerst die Old 3DS-Einrichtung abschließen. - + (✅) Old 3DS setup (✅) Old 3DS-Einrichtung - - + + Setup completed. Einrichtung abgeschlossen - + (ℹ️) New 3DS setup (ℹ️) New 3DS-Einrichtung - + (✅) New 3DS setup (✅) New 3DS-Einrichtung - + The system files for the selected mode are already set up. Reinstall the files anyway? Die Systemdateien für den ausgewählten Modus sind bereits eingerichtet. Die Dateien trotzdem neu installieren? - + Load Files Dateien laden - + 3DS Installation File (*.cia *.zcia) - - - + + + All Files (*.*) Alle Dateien (*.*) - + Connect to Artic Base Verbinde dich mit Artic-Base - + Enter Artic Base server address: Gib die Artic-Base-Serveradresse ein - + %1 has been installed successfully. %1 wurde erfolgreich installiert. - + Unable to open File Datei konnte nicht geöffnet werden - + Could not open %1 Konnte %1 nicht öffnen - + Installation aborted Installation abgebrochen - + The installation of %1 was aborted. Please see the log for more details Die Installation von %1 wurde abgebrochen. Schaue im Protokoll für weitere Informationen nach - + Invalid File Ungültige Datei - + %1 is not a valid CIA %1 ist keine gültige CIA - + CIA Encrypted CIA verschlüsselt - + Your CIA file is encrypted.<br/><a href='https://azahar-emu.org/blog/game-loading-changes/'>Please check our blog for more info.</a> Deine CIA Datei ist verschlüsselt. <br/><a href='https://azahar-emu.org/blog/game-loading-changes/'>Bitte lese unseren Blog für mehr Info.</a> - + Unable to find File Datei konnte nicht gefunden werden - + Could not find %1 %1 konnte nicht gefunden werden - - - - + + + + Z3DS Compression - + Failed to compress some files, check log for details. - + Failed to decompress some files, check log for details. - + All files have been compressed successfully. - + All files have been decompressed successfully. - + Uninstalling '%1'... '%1' wird deinstalliert… - + Failed to uninstall '%1'. Deinstallation von '%1' fehlgeschlagen. - + Successfully uninstalled '%1'. '%1' erfolgreich deinstalliert. - + File not found Datei nicht gefunden - + File "%1" not found Datei "%1" nicht gefunden - + Savestates Speicherstände - + Warning: Savestates are NOT a replacement for in-application saves, and are not meant to be reliable. Use at your own risk! @@ -4617,86 +4758,86 @@ Use at your own risk! Nutzung auf eigene Gefahr! - - - + + + Error opening amiibo data file Fehler beim Öffnen der Amiibo-Datei - + A tag is already in use. Eine Markierung wird schon genutzt. - + Application is not looking for amiibos. Die Anwendung sucht keine Amiibos. - + Amiibo File (%1);; All Files (*.*) Amiibo-Datei (%1);; Alle Dateien (*.*) - + Load Amiibo Amiibo wird geladen - + Unable to open amiibo file "%1" for reading. Die Amiibo-Datei "%1" konnte nicht zum Lesen geöffnet werden. - + Record Movie Aufnahme starten - + Movie recording cancelled. Aufnahme abgebrochen. - - + + Movie Saved Aufnahme gespeichert - - + + The movie is successfully saved. Die Aufnahme wurde erfolgreich gespeichert. - + Application will unpause Die Anwendung wird fortgesetzt - + The application will be unpaused, and the next frame will be captured. Is this okay? Die Anwendung wird fortgesetzt und das nächste Bild wird aufgenommen. Ist das okay? - + Invalid Screenshot Directory Ungültiges Bildschirmfoto-Verzeichnis - + Cannot create specified screenshot directory. Screenshot path is set back to its default value. Das angegebene Bildschirmfoto-Verzeichnis kann nicht erstellt werden. Der Bildschirmfotopfad wurde auf die Voreinstellung zurückgesetzt. - + Could not load video dumper Konnte Video-Dumper nicht laden - + FFmpeg could not be loaded. Make sure you have a compatible version installed. To install FFmpeg to Azahar, press Open and select your FFmpeg directory. @@ -4709,265 +4850,265 @@ Um FFmpeg in Azahar zu installieren, klicke auf „Offnen“ und wähle dein FFm Um eine Anleitung zur Installation von FFmpeg anzuzeigen, klicke auf „Hilfe“. - + Load 3DS ROM Files - + 3DS ROM Files (*.cia *.cci *.3dsx *.cxi *.3ds) - + 3DS Compressed ROM File (*.%1) - + Save 3DS Compressed ROM File - + Select Output 3DS Compressed ROM Folder - + Load 3DS Compressed ROM Files - + 3DS Compressed ROM Files (*.zcia *zcci *z3dsx *zcxi) - + 3DS ROM File (*.%1) - + Save 3DS ROM File - + Select Output 3DS ROM Folder - + Select FFmpeg Directory Wähle FFmpeg-Verzeichnis - + The provided FFmpeg directory is missing %1. Please make sure the correct directory was selected. Das angegebene FFmpeg-Verzeichnis fehlt %1. Bitte stelle sicher, dass du das richtige Verzeichnis ausgewählt hast. - + FFmpeg has been sucessfully installed. FFmpeg wurde erfolgreich installiert. - + Installation of FFmpeg failed. Check the log file for details. Installation von FFmpeg fehlgeschlagen. Prüfe die Protokolldatei für Details. - + Could not start video dumping.<br>Please ensure that the video encoder is configured correctly.<br>Refer to the log for details. Video-Dump konnte nicht gestartet werden.<br>Bitte überprüfe, ob der Video-Encoder richtig eingestellt ist.<br>Schau im Protokoll für weitere Informationen nach. - + Recording %1 %1 wird aufgenommen - + Playing %1 / %2 %1 / %2 wird abgespielt - + Movie Finished Aufnahme beendet - + (Accessing SharedExtData) (Zugriff auf SharedExtData) - + (Accessing SystemSaveData) (Zugriff auf SystemSaveData) - + (Accessing BossExtData) (Zugriff auf BossExtData) - + (Accessing ExtData) (Zugriff auf ExtData) - + (Accessing SaveData) (Zugriff auf SaveData) - + MB/s MB/s - + KB/s KB/s - + Artic Traffic: %1 %2%3 Artic Traffic: %1 %2%3 - + Speed: %1% Geschwindigkeit: %1% - + Speed: %1% / %2% Geschwindigkeit: %1% / %2% - + App: %1 FPS App: %1 FPS - + Frame: %1 ms (GPU: [CMD: %2 ms, SWP: %3 ms], IPC: %4 ms, SVC: %5 ms, Rem: %6 ms) Frame: %1 ms (GPU: [CMD: %2 ms, SWP: %3 ms], IPC: %4 ms, SVC: %5 ms, Rem: %6 ms) - + Frame: %1 ms Einzelbild: %1 ms - + VOLUME: MUTE LAUTSTÄRKE: STUMM - + VOLUME: %1% Volume percentage (e.g. 50%) LAUTSTÄRKE: %1% - + %1 is missing. Please <a href='https://web.archive.org/web/20240304201103/https://citra-emu.org/wiki/dumping-system-archives-and-the-shared-fonts-from-a-3ds-console/'>dump your system archives</a>.<br/>Continuing emulation may result in crashes and bugs. - + A system archive Ein Systemarchiv - + System Archive Not Found Systemarchiv nicht gefunden - + System Archive Missing Systemarchiv fehlt - + Save/load Error Speichern/Laden Fehler - + Fatal Error Schwerwiegender Fehler - + A fatal error occurred. <a href='https://web.archive.org/web/20240228001712/https://community.citra-emu.org/t/how-to-upload-the-log-file/296'>Check the log</a> for details.<br/>Continuing emulation may result in crashes and bugs. - + Fatal Error encountered Auf schwerwiegenden Fehler gestoßen - + Continue Fortsetzen - + Quit Application Beende die Anwendung - + OK O.K. - + Would you like to exit now? Möchtest du die Anwendung jetzt verlassen? - + The application is still running. Would you like to stop emulation? Die Anwendung läuft noch. Möchtest du die Emulation stoppen? - + Playback Completed Wiedergabe abgeschlossen - + Movie playback completed. Wiedergabe der Aufnahme abgeschlossen. - + Update Available Aktualisierung verfügbar - + Update %1 for Azahar is available. Would you like to download it? Für Azahar ist die Aktualisierung %1 verfügbar. Soll es heruntergeladen werden? - + Primary Window Hauptfenster - + Secondary Window Zweifenster @@ -5030,42 +5171,42 @@ Soll es heruntergeladen werden? GRenderWindow - + OpenGL not available! OpenGL nicht verfügbar! - + OpenGL shared contexts are not supported. OpenGL-Shared-Contexts sind nicht unterstützt. - + 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 möglicherweise kein OpenGL, oder sie ist nicht auf dem neuesten Stand. - + Error while initializing OpenGL 4.3! Fehler beim Initialisieren von „OpenGL 4.3“! - + Your GPU may not support OpenGL 4.3, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1 Deine Grafikkarte unterstützt möglicherweise kein „OpenGL 4.3“, oder sie ist nicht auf dem neusten Stand.<br><br>GL Renderer:<br>%1 - + Error while initializing OpenGL ES 3.2! Fehler beim Initialisieren von „OpenGL ES 3.2“! - + Your GPU may not support OpenGL ES 3.2, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1 Deine Grafikkarte unterstützt möglicherweise kein „OpenGL ES 3.2“, oder sie ist nicht auf dem neusten Stand.<br><br>GL-Renderer:<br>%1 @@ -5073,180 +5214,185 @@ Soll es heruntergeladen werden? GameList - - + + Compatibility Kompatibilität - - + + Region Region - - + + File type Dateiart - - + + Size Größe - - + + Play time Spielzeit - + Favorite Favorit - + Eject Cartridge - + Insert Cartridge - + Open Öffnen - + Application Location Anwendungsspeicherort - + Save Data Location Speicherdatenstandort - + Extra Data Location Extradatenstandort - + Update Data Location Updatedaten-Verzeichnis - + DLC Data Location DLC-Verzeichnis - + Texture Dump Location Textur-Dump-Pfad - + Custom Texture Location Benutzerdefinierte-Texturen-Verzeichnis - + Mods Location Mod-Verzeichnis - + Dump RomFS RomFS dumpen - + Disk Shader Cache Shader-Cache - + Open Shader Cache Location Shader-Cache-Standort öffnen - + Delete OpenGL Shader Cache OpenGL-Shader-Cache löschen - + + Delete Vulkan Shader Cache + + + + Uninstall Deinstallieren - + Everything Alles - + Application Anwendung - + Update Update - + DLC Zusatzinhalte - + Remove Play Time Data Spielzeitdaten entfernen - + Create Shortcut Verknüpfung erstellen - + Add to Desktop Zum Desktop hinzufügen - + Add to Applications Menu Zum Anwendungsmenü hinzufügen - + Stress Test: App Launch - + Properties Eigenschaften - - - - + + + + Azahar Azahar - + Are you sure you want to completely uninstall '%1'? This will delete the application if installed, as well as any installed updates or DLC. @@ -5255,64 +5401,64 @@ This will delete the application if installed, as well as any installed updates Dadurch werden die Anwendung, sofern installiert, sowie alle installierten Updates oder DLCs gelöscht. - - + + %1 (Update) %1 (Update) - - + + %1 (DLC) %1 (Zusatzinhalt) - + Are you sure you want to uninstall '%1'? Bist du sicher, dass du '%1' deinstallieren möchtest? - + Are you sure you want to uninstall the update for '%1'? Bist du sicher, dass du das Update für '%1' deinstallieren möchtest? - + Are you sure you want to uninstall all DLC for '%1'? Bist du sicher, dass du die Zusatzinhalte für '%1' deinstallieren möchtest? - + Scan Subfolders Unterordner scannen - + Remove Application Directory Anwendungsverzeichnis entfernen - + Move Up Hoch bewegen - + Move Down Runter bewegen - + Open Directory Location Verzeichnispfad öffnen - + Clear Leeren - + Name Name @@ -5400,7 +5546,7 @@ Screen. GameListPlaceholder - + Double-click to add a new folder to the application list Klicke doppelt, um einen neuen Ordner zur Anwendungsliste hinzuzufügen @@ -5408,27 +5554,27 @@ Screen. GameListSearchField - + of von - + result Ergebnis - + results Ergebnisse - + Filter: Filter: - + Enter pattern to filter Gib Wörter zum Filtern ein @@ -6062,24 +6208,24 @@ Debug-Meldung: Bereite Shader vor %1 / %2 - - Loading Shaders %1 / %2 - Lade Shader %1 / %2 + + Loading %3 %1 / %2 + - + Launching... Startvorgang... - + Now Loading %1 Lädt %1 - + Estimated Time %1 Geschätzte verbleibende Zeit %1 @@ -7056,17 +7202,17 @@ Vielleicht hat dieser Nutzer bereits den Raum verlassen. Datei öffnen - + Error Fehler - + Couldn't load the camera Kamera konnte nicht geladen werden - + Couldn't load %1 %1 konnte nicht geladen werden diff --git a/dist/languages/el.ts b/dist/languages/el.ts index 67f2980d3..5bcd5fa68 100644 --- a/dist/languages/el.ts +++ b/dist/languages/el.ts @@ -29,12 +29,12 @@ <html><head/><body><p><img src=":/icons/default/256x256/azahar.png"/></p></body></html> - + <html><head/><body><p><img src=":/icons/default/256x256/azahar.png"/></p></body></html> <html><head/><body><p><span style=" font-size:28pt;">Azahar</span></p></body></html> - + <html><head/><body><p><span style=" font-size:28pt;">Azahar</span></p></body></html> @@ -50,17 +50,23 @@ p, li { white-space: pre-wrap; } <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;">Azahar is a free and open source 3DS emulator licensed under GPLv2.0 or any later version.</span></p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'MS Shell Dlg 2'; font-size:8pt;"><br /></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">This software should not be used to play games you have not legally obtained.</span></p></body></html> - + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Ubuntu'; font-size:11pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">Το Azahar είναι ένας δωρεάν εξομοιωτής ανοικτού κώδικα για 3DS και διατίθεται υπό την άδεια GPLv2.0 ή νεότερες εκδόσεις της.</span></p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'MS Shell Dlg 2'; font-size:8pt;"><br /></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12pt;">Το παρόν λογισμικό δεν θα πρέπει να χρησιμοποιείται για παιχνίδια που δεν έχετε αποκτήσει με νόμιμο τρόπο.</span></p></body></html> <html><head/><body><p><a href="https://azahar-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://github.com/azahar-emu/azahar"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://github.com/azahar-emu/azahar/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://github.com/azahar-emu/azahar/blob/master/license.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - + <html><head/><body><p><a href="https://azahar-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Ιστότοπος</span></a> | <a href="https://github.com/azahar-emu/azahar"><span style=" text-decoration: underline; color:#039be5;">Πηγαίος κώδικας</span></a> | <a href="https://github.com/azahar-emu/azahar/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Εθελοντές</span></a> | <a href="https://github.com/azahar-emu/azahar/blob/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;3DS&quot; is a trademark of Nintendo. Azahar is not affiliated with Nintendo in any way.</span></p></body></html> - + <html><head/><body><p><span style=" font-size:7pt;">Το «3DS» αποτελεί εμπορικό σήμα της Nintendo. Το Azahar δεν σχετίζεται με τη Nintendo με κανένα τρόπο.</span></p></body></html> @@ -288,12 +294,12 @@ This would ban both their forum username and their IP address. Output - Απόδοση + Έξοδος Emulation - Εξομοίωση + Εξομοίωση @@ -313,17 +319,17 @@ This would ban both their forum username and their IP address. Output Type - Τύπος Απόδοσης + Τύπος εξόδου Output Device - Συσκευή Εξόδου + Συσκευή εξόδου - This post-processing effect adjusts audio speed to match emulation speed and helps prevent audio stutter. This however increases audio latency. - Αυτό το μετεπεξεργαστικό εφέ προσαρμόζει την ταχύτητα του ήχου για να ταιριάξει με την ταχύτητα εξομοίωσης και βοηθά στην αποτροπή το «κόμπιασμα» του ήχου. Αυτό ωστόσο αυξάνει την καθυστέρηση του ήχου. + <html><head/><body><p>This post-processing effect adjusts audio speed to match emulation speed and helps prevent audio stutter. This however increases audio latency.</p></body></html> + @@ -332,7 +338,7 @@ This would ban both their forum username and their IP address. - Scales audio playback speed to account for drops in emulation framerate. This means that audio will play at full speed even while the application framerate is low. May cause audio desync issues. + <html><head/><body><p>Scales audio playback speed to account for drops in emulation framerate. This means that audio will play at full speed even while the application framerate is low. May cause audio desync issues.</p></body></html> @@ -348,7 +354,7 @@ This would ban both their forum username and their IP address. Set volume: - Ρύθμιση έντασης ήχου + Ρύθμιση έντασης: @@ -405,12 +411,12 @@ This would ban both their forum username and their IP address. Select the camera to configure - Επέλεξε την κάμερα για διαμόρφωση + Επιλέξτε την κάμερα προς διαμόρφωση Camera to Configure - + Κάμερα προς διαμόρφωση @@ -420,23 +426,23 @@ This would ban both their forum username and their IP address. Rear - Όπισθεν + Πίσω Select the camera mode (single or double) - Επελέξτε τον τύπο κάμερασ (απλό ή διπλό) + Επιλέξτε τη λειτουργία κάμερας (μονή ή διπλή) Camera mode - + Λειτουργία κάμερας Single (2D) - Απλή (2D) + Μονή (2D) @@ -447,12 +453,12 @@ This would ban both their forum username and their IP address. Select the position of camera to configure - Επιλέξτε τη θέση της κάμερας προς ρύθμιση + Επιλέξτε τη θέση της κάμερας προς διαμόρφωση Camera position - + Θέση κάμερας @@ -472,13 +478,13 @@ This would ban both their forum username and their IP address. - Select where the image of the emulated camera comes from. It may be an image or a real camera. - Επιλέξτε την προέλευση της εικόνας της εξομοιωμένης κάμερας. Μπορεί να είναι μια εικόνα ή μια πραγματική κάμερα. + <html><head/><body><p>Select where the image of the emulated camera comes from. It may be an image or a real camera.</p></body></html> + <html><head/><body><p>Επιλέξτε την προέλευση της εικόνας της εξομοιωμένης κάμερας. Μπορεί να είναι μια εικόνα ή μια πραγματική κάμερα.</p></body></html> Camera Image Source - + Πηγή εικόνας κάμερας @@ -498,7 +504,7 @@ This would ban both their forum username and their IP address. File - + Αρχείο @@ -525,7 +531,7 @@ This would ban both their forum username and their IP address. Flip - + Αναστροφή @@ -594,17 +600,17 @@ This would ban both their forum username and their IP address. Cheats - + Cheat Add Cheat - + Προσθήκη cheat Available Cheats: - + Διαθέσιμα cheat: @@ -644,31 +650,31 @@ This would ban both their forum username and their IP address. Would you like to save the current cheat? - Θα θέλατε να αποθηκέυσετε το τρεχούμενο cheat; + Θέλετε να αποθηκεύσετε το τρέχον cheat; Save Cheat - Αποθήκευση Cheat + Αποθήκευση cheat Please enter a cheat name. - Εισάγετε το όνομα του cheat. + Εισαγάγετε ένα όνομα για το cheat. Please enter the cheat code. - Εισάγετε τον κώδικα του cheat. + Εισαγάγετε τον κώδικα του cheat. Cheat code line %1 is not valid. Would you like to ignore the error and continue? - Η γραμμή %1 του cheat είναι λάθος. -Θα θέλατε να αγνοήσετε το σφάλμα και να προχωρήσετε; + Η γραμμή %1 στον κώδικα του cheat δεν είναι έγκυρη. +Θέλετε να αγνοήσετε το σφάλμα και να προχωρήσετε; @@ -787,7 +793,7 @@ Would you like to ignore the error and continue? Miscellaneous - + Διάφορα @@ -801,21 +807,31 @@ Would you like to ignore the error and continue? - Force deterministic async operations + <html><head/><body><p>Toggles the unique data console type (Old 3DS ↔ New 3DS) to be able to download the opposite system firmware type from system settings.</p></body></html> - <html><head/><body><p>Forces all async operations to run on the main thread, making them deterministic. Do not enable if you don't know what you are doing.</p></body></html> + Toggle unique data console type - Enable RPC server + Force deterministic async operations + <html><head/><body><p>Forces all async operations to run on the main thread, making them deterministic. Do not enable if you don't know what you are doing.</p></body></html> + + + + + Enable RPC server + Ενεργοποίηση διακομιστή RPC + + + <html><head/><body><p>Enables the RPC server on port 45987. This allows remotely reading/writing guest memory, do not enable if you don't know what you are doing.</p></body></html> @@ -845,7 +861,7 @@ Would you like to ignore the error and continue? Azahar Configuration - + Διαμόρφωση του Azahar @@ -889,7 +905,7 @@ Would you like to ignore the error and continue? Layout - + Διάταξη @@ -944,7 +960,7 @@ Would you like to ignore the error and continue? Form - Φόρμα + Φόρμα @@ -954,17 +970,17 @@ Would you like to ignore the error and continue? Internal Resolution - + Εσωτερική ανάλυση Auto (Window Size) - + Αυτόματα (Μέγεθος παραθύρου) Native (400x240) - + Εγγενής (400x240) @@ -1013,176 +1029,186 @@ Would you like to ignore the error and continue? + Use Integer Scaling + + + + + <html><head/><body><p>Use Integer Scaling</p><p>Enforces that the larger screen in all layouts is an integer scale of the 240px height of the original 3DS screen.</p></body></html> + + + + Enable Linear Filtering - + Post-Processing Shader - + Texture Filter - + Φίλτρο υφής - + None - + Anime4K - + Anime4K - + Bicubic - + ScaleForce - + xBRZ - + xBRZ - + MMPX - + MMPX - + Stereoscopy - + Stereoscopic 3D Mode - + Off - - - Side by Side - Παραπλεύρως - - - - Side by Side Full Width - - + Side by Side + Δίπλα-δίπλα + + + + Side by Side Full Width + Δίπλα-δίπλα, πλήρες πλάτος + + + Anaglyph - + Interlaced - + Reverse Interlaced - + Depth - + Βάθος - + % % - + Note: Depth values over 100% are not possible on real hardware and may cause graphical issues - + Eye to Render in Monoscopic Mode - + Left Eye (default) Αριστερό Μάτι (προκαθορισμένη) - + Right Eye Δεξί Μάτι - + Disable Right Eye Rendering - + <html><head/><body><p>Disable Right Eye Rendering</p><p>Disables rendering the right eye image when not using stereoscopic mode. Greatly improves performance in some applications, but can cause flickering in others.</p></body></html> - + Swap Eyes - + Utility - + Εργαλείο - + <html><head/><body><p>Replace textures with PNG files.</p><p>Textures are loaded from load/textures/[Title ID]/.</p></body></html> - + Use custom textures - + Χρήση προσαρμοσμένων υφών - + <html><head/><body><p>Dump textures to PNG files.</p><p>Textures are dumped to dump/textures/[Title ID]/.</p></body></html> - + Dump textures - + Αποτύπωση υφών - + <html><head/><body><p>Load all custom textures into memory on boot, instead of loading them when the application requires them.</p></body></html> - + Preload custom textures - + <html><head/><body><p>Load custom textures asynchronously with background threads to reduce loading stutter</p></body></html> - + Async custom texture loading @@ -1197,27 +1223,27 @@ Would you like to ignore the error and continue? Updates - + Ενημερώσεις Check for updates - + Έλεγχος για ενημερώσεις Update Channel - + Κανάλι ενημερώσεων Stable - + Σταθερές εκδόσεις Prerelease - + Πρώιμες εκδόσεις @@ -1237,7 +1263,7 @@ Would you like to ignore the error and continue? Mute audio when in background - + Σίγαση ήχου όταν η εφαρμογή είναι στο παρασκήνιο @@ -1262,12 +1288,12 @@ Would you like to ignore the error and continue? Set emulation speed - + Ορισμός ταχύτητας εξομοίωσης Emulation Speed - + Ταχύτητα εξομοίωσης @@ -1292,12 +1318,12 @@ Would you like to ignore the error and continue? Save Screenshots To - + Τοποθεσία στιγμιότυπων ... - ... + ... @@ -1316,17 +1342,17 @@ Would you like to ignore the error and continue? Select Screenshot Directory - + Επιλογή καταλόγου στιγμιότυπων Azahar - + Azahar Are you sure you want to <b>reset your settings</b> and close Azahar? - + Θέλετε σίγουρα να <b>επαναφέρετε τις ρυθμίσεις σας</b> και να κλείσετε το Azahar; @@ -1339,37 +1365,37 @@ Would you like to ignore the error and continue? Graphics - Γραφικά + Γραφικά API Settings - + Ρυθμίσεις API Graphics API - + API γραφικών Software - + Λογισμικό OpenGL - + OpenGL Vulkan - + Vulkan Physical Device - + Φυσική συσκευή @@ -1414,7 +1440,7 @@ Would you like to ignore the error and continue? Accurate multiplication - + Ακριβής πολλαπλασιασμός @@ -1459,7 +1485,7 @@ Would you like to ignore the error and continue? Texture Sampling - + Δειγματοληψία υφών @@ -1488,8 +1514,8 @@ Would you like to ignore the error and continue? - VSync prevents the screen from tearing, but some graphics cards have lower performance with VSync enabled. Keep it enabled if you don't notice a performance difference. - Το VSync αποτρέπει τα γραφικά από το να χαλάνε, αλλά κάποιες κάρτες γραφικών μπορεί να δίνουν χειρότερη απόδοση αν η ρύθμιση είναι ανοιχτή. Κρατήστε το VSync ανοιχτό μόνο εάν δεν δείτε κάποια αλλαγή στην απόδοση. + <html><head/><body><p>VSync prevents the screen from tearing, but some graphics cards have lower performance with VSync enabled. Keep it enabled if you don't notice a performance difference.</p></body></html> + @@ -1497,22 +1523,32 @@ Would you like to ignore the error and continue? Ενεργοποίηση VSync - + + <html><head/><body><p>When enabled, this setting detects when the refresh rate of the screen is below that of the 3DS, and when it is, disables VSync automatically to avoid emulation speed being forced below 100%.</p></body></html> + + + + + Enable display refresh rate detection + + + + Use global - + Use per-application - + Χρήση ανά εφαρμογή - + Delay Application Render Thread - + <html><head/><body><p>Delays the emulated application render thread the specified amount of milliseconds every time it submits render commands to the GPU.</p><p>Adjust this feature in the (very few) dynamic framerate applications to fix performance issues.</p></body></html> @@ -1532,12 +1568,12 @@ Would you like to ignore the error and continue? Clear All - Απαλοιφή όλων + Απαλοιφή όλων Restore Defaults - Επαναφορά προεπιλογών + Επαναφορά προεπιλογών @@ -1581,7 +1617,7 @@ Would you like to ignore the error and continue? A 3ds button - + Ένα κουμπί 3ds @@ -1758,7 +1794,7 @@ Would you like to ignore the error and continue? Up Left: - + Πάνω αριστερά: @@ -1777,7 +1813,7 @@ Would you like to ignore the error and continue? Up Right: - + Πάνω δεξιά: @@ -1789,13 +1825,13 @@ Would you like to ignore the error and continue? Down Right: - + Κάτω δεξιά: Down Left: - + Κάτω αριστερά: @@ -1947,214 +1983,287 @@ Would you like to ignore the error and continue? Form - Φόρμα + Φόρμα Screens - + Οθόνες Screen Layout - Διάταξη οθόνης + Διάταξη οθονών Default - Προεπιλογή + Προεπιλογή Single Screen - Μονή οθόνη + Μονή οθόνη Large Screen - Μεγάλη οθόνη + Μεγάλη οθόνη Side by Side - Παραπλεύρως + Δίπλα-δίπλα Separate Windows - + Ξεχωριστά παράθυρα Hybrid Screen - + Υβριδική οθόνη - + Custom Layout - + Προσαρμοσμένη διάταξη - - Swap screens - - - - + Rotate screens upright - + + Swap screens + Εναλλαγή οθονών + + + + Customize layout cycling + + + + Screen Gap - + Large Screen Proportion - + Small Screen Position - + Θέση μικρής οθόνης - + Upper Right - + Middle Right - + Bottom Right (default) - + Upper Left - + Middle Left - + Bottom Left - + Above large screen - + Below large screen - + Background Color - + Χρώμα παρασκηνίου - - + + Top Screen - + Πάνω οθόνη - - + + X Position - + Θέση X - - - - - - - - - + + + + + + + + - - + + + px - - + + Y Position - + Θέση Y - - + + Width - - - - - - Height - - - - - - Bottom Screen - + Πλάτος + - <html><head/><body><p>Bottom Screen Opacity %</p></body></html> - + Height + Ύψος - + + + Bottom Screen + Κάτω οθόνη + + + + <html><head/><body><p>Bottom Screen Opacity %</p></body></html> + <html><head/><body><p>Αδιαφάνεια κάτω οθόνης (%)</p></body></html> + + + Single Screen Layout - - + + Stretch - - + + Left/Right Padding - + Γέμισμα αριστερά/δεξιά - - + + Top/Bottom Padding + Γέμισμα πάνω/κάτω + + + + Note: These settings affect the Single Screen and Separate Windows layouts + + + + + ConfigureLayoutCycle + + + Configure Layout Cycling - - Note: These settings affect the Single Screen and Separate Windows layouts + + Screen Layout Cycling Customization + + + + + Select which screen layout options should be cycled with the "Toggle Screen Layout" hotkey + + + + + Use Global Value + Χρήση καθολικής τιμής + + + + Default + Προεπιλογή + + + + Single Screen + Μονή οθόνη + + + + Large Screen + Μεγάλη οθόνη + + + + Side by Side + Δίπλα-δίπλα + + + + Separate Windows + Ξεχωριστά παράθυρα + + + + Hybrid + + + + + Custom + Προσαρμογή + + + + No Layout Selected + + + + + Please select at least one layout option to cycle through. ConfigureMotionTouch - + Configure Motion / Touch Ρύθμιση κίνησης/αφής @@ -2182,8 +2291,10 @@ Would you like to ignore the error and continue? - - + + + + Configure Διαμόρφωση @@ -2213,58 +2324,68 @@ Would you like to ignore the error and continue? Χρήση αντιστοίχισης κουμπιών: - + + Map touchpads on controllers like the DualSense directly to touch + + + + + Use controller touchpad + + + + CemuhookUDP Config Ρύθμιση CemuhookUDP - + You may use any Cemuhook compatible UDP input source to provide motion and touch input. Μπορείτε να χρησιμοποιήσετε οποιαδήποτε πηγή εισόδου UDP, συμβατή με το Cemuhook, ώστε να υπάρχει είσοδος κίνησης και αφής. - + Server: Διακομιστής: - + Port: Θύρα: - + Pad: Χειριστήριο: - + Pad 1 Χειριστήριο 1 - + Pad 2 Χειριστήριο 2 - + Pad 3 Χειριστήριο 3 - + Pad 4 Χειριστήριο 4 - + Learn More Μάθετε περισσότερα - - + + Test Δοκιμή @@ -2292,60 +2413,71 @@ Would you like to ignore the error and continue? <a href='https://web.archive.org/web/20240301211230/https://citra-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">Learn More</span></a> - + <a href='https://web.archive.org/web/20240301211230/https://citra-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">Μάθετε περισσότερα</span></a> - + + Information Πληροφορίες - + After pressing OK, press a button on the controller whose motion you want to track. Αφού επιλέξετε «OK», πατήστε ένα κουμπί στο χειριστήριο για το οποίο θέλετε να παρακολουθήσετε την κίνηση. - + [press button] [πατήστε το κουμπί] - + + After pressing OK, tap the touchpad on the controller you want to track. + + + + + [press touchpad] + + + + 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>Παρακαλώ βεβαιωθείτε ότι ο διακομιστής έχει διαμορφωθεί σωστά και ότι η διεύθυνση και η θύρα είναι σωστές. - + Azahar - + Azahar - + UDP Test or calibration configuration is in progress.<br>Please wait for them to finish. Η δοκιμή UDP ή η διαμόρφωση βαθμονόμησης βρίσκεται σε εξέλιξη.<br>Παρακαλώ περιμένετε να ολοκληρωθούν. @@ -2370,7 +2502,7 @@ Would you like to ignore the error and continue? Format - + Μορφή @@ -2395,7 +2527,7 @@ Would you like to ignore the error and continue? Use global configuration (%1) - + Χρήση καθολικής διαμόρφωσης (%1) @@ -2415,7 +2547,7 @@ Would you like to ignore the error and continue? Layout - + Διάταξη @@ -2435,7 +2567,7 @@ Would you like to ignore the error and continue? Cheats - + Cheat @@ -2445,12 +2577,12 @@ Would you like to ignore the error and continue? Azahar - + Azahar Are you sure you want to <b>reset your settings for this application</b>? - + Θέλετε σίγουρα να <b>επαναφέρετε τις ρυθμίσεις σας για αυτήν την εφαρμογή</b>; @@ -2468,7 +2600,7 @@ Would you like to ignore the error and continue? Use virtual SD card - + Χρήση εικονικής κάρτας SD @@ -2478,7 +2610,7 @@ Would you like to ignore the error and continue? Use custom storage location - + Χρήση προσαρμοσμένης τοποθεσίας αποθήκευσης @@ -2515,7 +2647,7 @@ Would you like to ignore the error and continue? - Compresses the content of CIA files when installed to the emulated SD card. Only affects CIA content which is installed while the setting is enabled. + <html><head/><body><p>Compresses the content of CIA files when installed to the emulated SD card. Only affects CIA content which is installed while the setting is enabled.</p></body></html> @@ -2565,12 +2697,12 @@ online features (if installed) Region - Περιοχή + Περιοχή Auto-select - + Αυτόματη επιλογή @@ -2781,12 +2913,12 @@ installed applications. days - + ημέρες HH:mm:ss - + HH:mm:ss @@ -2816,12 +2948,12 @@ installed applications. <html><head/><body><p>Number of steps per hour reported by the pedometer. Range from 0 to 65,535.</p></body></html> - + <html><head/><body><p>Ο αριθμός βημάτων ανά ώρα που αναφέρεται από το βηματόμετρο. Εύρος από 0 έως 65.535.</p></body></html> Pedometer Steps per Hour - + Βήματα βηματόμετρου ανά ώρα @@ -2842,7 +2974,7 @@ installed applications. MAC: - + MAC: @@ -2867,7 +2999,7 @@ installed applications. Your real console is linked to Azahar. - + Η πραγματική σας κονσόλα είναι συνδεδεμένη με το Azahar. @@ -2877,7 +3009,7 @@ installed applications. OTP - + OTP @@ -2885,22 +3017,22 @@ installed applications. Choose - + Επιλογή SecureInfo_A/B - + SecureInfo_A/B LocalFriendCodeSeed_A/B - + LocalFriendCodeSeed_A/B movable.sed - + movable.sed @@ -3250,7 +3382,7 @@ installed applications. Liechtenstein - Λίχτενσταϊν + Λιχτενστάιν @@ -3575,27 +3707,27 @@ installed applications. Select SecureInfo_A/B - + Επιλογή SecureInfo_A/B SecureInfo_A/B (SecureInfo_A SecureInfo_B);;All Files (*.*) - + SecureInfo_A/B (SecureInfo_A SecureInfo_B);;Όλα τα αρχεία (*.*) Select LocalFriendCodeSeed_A/B - + Επιλογή LocalFriendCodeSeed_A/B LocalFriendCodeSeed_A/B (LocalFriendCodeSeed_A LocalFriendCodeSeed_B);;All Files (*.*) - + LocalFriendCodeSeed_A/B (LocalFriendCodeSeed_A LocalFriendCodeSeed_B);;Όλα τα αρχεία (*.*) Select encrypted OTP file - + Επιλογή κρυπτογραφημένου αρχείου OTP @@ -3605,12 +3737,12 @@ installed applications. Select movable.sed - + Επιλογή movable.sed Sed file (*.sed);;All Files (*.*) - + Αρχείο sed (*.sed);;Όλα τα αρχεία (*.*) @@ -3622,12 +3754,12 @@ installed applications. MAC: %1 - + MAC: %1 This will replace your current virtual 3DS console ID with a new one. Your current virtual 3DS console ID will not be recoverable. This might have unexpected effects in applications. This might fail if you use an outdated config save. Continue? - + Αυτή η ενέργεια θα αντικαταστήσει το τρέχον αναγνωριστικό της εικονικής κονσόλας 3DS σας με ένα νέο. Δεν θα είναι δυνατή η ανάκτηση του τρέχοντος αναγνωριστικού της εικονικής κονσόλας 3DS σας. Οι εφαρμογές ενδέχεται να επηρεαστούν με απρόσμενο τρόπο. Η διαδικασία μπορεί να αποτύχει αν χρησιμοποιείτε παρωχημένη διαμόρφωση αποθηκευμένων δεδομένων. Θέλετε να συνεχίσετε; @@ -3644,7 +3776,7 @@ installed applications. This action will unlink your real console from Azahar, with the following consequences:<br><ul><li>Your OTP, SecureInfo and LocalFriendCodeSeed will be removed from Azahar.</li><li>Your friend list will reset and you will be logged out of your NNID/PNID account.</li><li>System files and eshop titles obtained through Azahar will become inaccessible until the same console is linked again (save data will not be lost).</li></ul><br>Continue? - + Αυτή η ενέργεια θα αποσυνδέσει την πραγματική σας κονσόλα από το Azahar, επιφέροντας τις εξής συνέπειες:<br><ul><li>Τα δεδομένα OTP, SecureInfo και LocalFriendCodeSeed σας θα καταργηθούν από το Azahar.</li><li>Θα γίνει επαναφορά της λίστας φίλων σας και θα αποσυνδεθείτε από τον λογαριασμό NNID/PNID σας.</li><li>Τα αρχεία συστήματος, καθώς και οι τίτλοι του eshop που αποκτήθηκαν μέσω του Azahar, θα καταστούν μη προσβάσιμα μέχρι να συνδεθεί ξανά η ίδια κονσόλα (τα αποθηκευμένα δεδομένα δεν θα χαθούν).</li></ul><br>Θέλετε να συνεχίσετε; @@ -3654,7 +3786,7 @@ installed applications. Invalid country for console unique data - + Μη έγκυρη χώρα για τα μοναδικά δεδομένα κονσόλας @@ -3684,7 +3816,7 @@ installed applications. Status: IO Error - + Κατάσταση: Σφάλμα IO @@ -3719,7 +3851,7 @@ installed applications. 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. Κάντε κλικ στην κάτω περιοχή για να προσθέσετε ένα σημείο και πατήστε ένα κουμπί για ανάθεση. -Σύρετε σημεία για να αλλάξετε τη θέση ή κάντε διπλό κλικ στα κελιά πίνακα για να επεξεργαστείτε τις τιμές. +Σύρετε τα σημεία για να αλλάξετε τη θέση ή κάντε διπλό κλικ στα κελιά του πίνακα για να επεξεργαστείτε τις τιμές. @@ -3735,13 +3867,13 @@ Drag points to change position, or double-click table cells to edit values. X X axis - + X Y Y axis - + Y @@ -3794,27 +3926,27 @@ Drag points to change position, or double-click table cells to edit values. Note: Changing language will apply your configuration. - Σημείωση: Η αλλαγή της γλώσσας θα αλλάξει τις ρυθμίσεις παραμέτρων σας. + Σημείωση: Η αλλαγή της γλώσσας θα αλλάξει τη διαμόρφωσή σας. Interface Language - + Γλώσσα περιβάλλοντος Theme - + Θέμα Application List - + Λίστα εφαρμογών Icon Size - + Μέγεθος εικονιδίων @@ -3835,7 +3967,7 @@ Drag points to change position, or double-click table cells to edit values. Row 1 Text - + Κείμενο σειράς 1 @@ -3859,7 +3991,7 @@ Drag points to change position, or double-click table cells to edit values. Title ID - ID τίτλου + Αναγνωριστικό τίτλου @@ -3870,12 +4002,12 @@ Drag points to change position, or double-click table cells to edit values. Row 2 Text - + Κείμενο σειράς 2 Hide titles without icon - + Απόκρυψη τίτλων χωρίς εικονίδιο @@ -3885,7 +4017,7 @@ Drag points to change position, or double-click table cells to edit values. Status Bar - + Γραμμή κατάστασης @@ -3918,7 +4050,7 @@ Drag points to change position, or double-click table cells to edit values. Show current application in your Discord status - + Εμφάνιση τρέχουσας εφαρμογής στην κατάστασή σας στο Discord @@ -3931,7 +4063,7 @@ Drag points to change position, or double-click table cells to edit values. Server Address - + Διεύθυνση διακομιστή @@ -3987,24 +4119,24 @@ Drag points to change position, or double-click table cells to edit values. Dump Video - Αποτύπωση βίντεο + Αποτύπωση βίντεο Output - Απόδοση + Έξοδος Format: - Μορφή: + Μορφή: Options: - + Επιλογές: @@ -4012,23 +4144,23 @@ Drag points to change position, or double-click table cells to edit values. ... - ... + ... Path: - + Διαδρομή: Video - + Βίντεο Encoder: - + Κωδικοποιητής: @@ -4045,33 +4177,33 @@ Drag points to change position, or double-click table cells to edit values. Audio - Ήχος + Ήχος Azahar - + Azahar Please specify the output path. - + Καθορίστε τη διαδρομή εξόδου. output formats - + μορφές εξόδου video encoders - + κωδικοποιητές βίντεο audio encoders - + κωδικοποιητές ήχου @@ -4085,7 +4217,7 @@ Please check your FFmpeg installation used for compilation. %1 (%2) - + %1 (%2) @@ -4096,864 +4228,883 @@ Please check your FFmpeg installation used for compilation. GMainWindow - + + Warning + Προειδοποίηση + + + + The `azahar` executable is being run directly rather than via the Azahar.app bundle. + +When run this way, the app may be missing certain functionality such as camera emulation. + +It is recommended to instead run Azahar using the `open` command, e.g.: +`open ./Azahar.app` + + + + No Suitable Vulkan Devices Detected - + Vulkan initialization failed during boot.<br/>Your GPU may not support Vulkan 1.1, or you do not have the latest graphics driver. - + Current Artic traffic speed. Higher values indicate bigger transfer loads. - - + + Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a 3DS. - Η ταχύτητα της προσομοίωσης. Ταχύτητες μεγαλύτερες ή μικρότερες από 100% δείχνουν ότι η προσομοίωση λειτουργεί γρηγορότερα ή πιο αργά από ένα 3DS αντίστοιχα. + Η τρέχουσα ταχύτητα εξομοίωσης. Οι τιμές που είναι μεγαλύτερες ή μικρότερες από 100% υποδεικνύουν ότι η εξομοίωση λειτουργεί πιο γρήγορα ή πιο αργά από ένα 3DS, αντίστοιχα. - - + + How many frames per second the app is currently displaying. This will vary from app to app and scene to scene. - - + + Time taken to emulate a 3DS frame, not counting framelimiting or v-sync. For full-speed emulation this should be at most 16.67 ms. - Ο χρόνος που χρειάζεται για την εξομοίωση ενός καρέ 3DS, χωρίς να υπολογίζεται ο περιορισμός καρέ ή το v-sync. Για εξομοίωση σε πλήρη ταχύτητα, αυτό θα πρέπει να είναι το πολύ 16.67 ms. + Ο χρόνος που χρειάζεται για την εξομοίωση ενός καρέ 3DS, χωρίς να υπολογίζεται ο περιορισμός καρέ ή το v-sync. Για εξομοίωση σε πλήρη ταχύτητα, αυτό θα πρέπει να είναι το πολύ 16,67 ms. - + MicroProfile (unavailable) - + MicroProfile (μη διαθέσιμο) - + Clear Recent Files Απαλοιφή πρόσφατων αρχείων - + &Continue - + &Συνέχεια - + &Pause - + &Παύση - + Azahar is running an application TRANSLATORS: This string is shown to the user to explain why Citra needs to prevent the computer from sleeping - + Το Azahar εκτελεί μια εφαρμογή - - + + Invalid App Format - + Μη έγκυρη μορφή εφαρμογής - - + + Your app format is not supported.<br/>Please follow the guides to redump your <a href='https://web.archive.org/web/20240304210021/https://citra-emu.org/wiki/dumping-game-cartridges/'>game cartridges</a> or <a href='https://web.archive.org/web/20240304210011/https://citra-emu.org/wiki/dumping-installed-titles/'>installed titles</a>. - + App Corrupted - + Your app is corrupted. <br/>Please follow the guides to redump your <a href='https://web.archive.org/web/20240304210021/https://citra-emu.org/wiki/dumping-game-cartridges/'>game cartridges</a> or <a href='https://web.archive.org/web/20240304210011/https://citra-emu.org/wiki/dumping-installed-titles/'>installed titles</a>. - + App Encrypted - + Your app is encrypted. <br/><a href='https://azahar-emu.org/blog/game-loading-changes/'>Please check our blog for more info.</a> - + Η εφαρμογή σας είναι κρυπτογραφημένη. <br/><a href='https://azahar-emu.org/blog/game-loading-changes/'>Ελέγξτε το ιστολόγιό μας για περισσότερες πληροφορίες.</a> - + Unsupported App - + Μη υποστηριζόμενη εφαρμογή - + GBA Virtual Console is not supported by Azahar. - - + + Artic Server - + Διακομιστής Artic - + Invalid system mode - + Μη έγκυρη λειτουργία συστήματος - + New 3DS exclusive applications cannot be loaded without enabling the New 3DS mode. - + Error while loading App! - + Σφάλμα κατά τη φόρτωση της εφαρμογής! - + An unknown error occurred. Please see the log for more details. - Προέκυψε άγνωστο σφάλμα. Παρακαλώ δείτε το αρχείο καταγραφής για περισσότερες λεπτομέρειες. + Προέκυψε άγνωστο σφάλμα. Δείτε το αρχείο καταγραφής για περισσότερες λεπτομέρειες. - + CIA must be installed before usage Το CIA πρέπει να εγκατασταθεί πριν από τη χρήση - + Before using this CIA, you must install it. Do you want to install it now? Πριν από τη χρήση αυτού του CIA, πρέπει να το εγκαταστήσετε. Θέλετε να το εγκαταστήσετε τώρα; - + Quick Load - + Γρήγορη φόρτωση - + Quick Save - Γρήγορη Αποθήκευση + Γρήγορη αποθήκευση - - + + Slot %1 Θέση %1 - + %2 %3 - + %2 %3 - + Quick Save - %1 - + Γρήγορη αποθήκευση - %1 - + Quick Load - %1 - + Γρήγορη φόρτωση - %1 - + Slot %1 - %2 %3 - + Θέση %1 - %2 %3 - + Error Opening %1 Folder Σφάλμα ανοίγματος %1 φακέλου - - + + Folder does not exist! Ο φάκελος δεν υπάρχει! - + Remove Play Time Data - + Reset play time? - + Επαναφορά χρόνου παιχνιδιού; - - - - + + + + Create Shortcut - + Δημιουργία συντόμευσης - + Do you want to launch the application in fullscreen? - + Successfully created a shortcut to %1 - + This will create a shortcut to the current AppImage. This may not work well if you update. Continue? - + Failed to create a shortcut to %1 - + Create Icon - Δημηουργία Εικονιδίου + Δημηουργία εικονιδίου - + Cannot create icon file. Path "%1" does not exist and cannot be created. - + Dumping... Αποτύπωση... - - + + Cancel Ακύρωση - - - - - - - - - + + + + + + + + + Azahar - + Azahar - + Could not dump base RomFS. Refer to the log for details. Δεν ήταν δυνατή η αποτύπωση του βασικού RomFS. Ανατρέξτε στο αρχείο καταγραφής για λεπτομέρειες. - + Error Opening %1 Σφάλμα ανοίγματος του «%1» - + Select Directory Επιλογή καταλόγου - + Properties Ιδιότητες - + The application properties could not be loaded. - + 3DS Executable (%1);;All Files (*.*) %1 is an identifier for the 3DS executable file extensions. Εκτελέσιμο 3DS (%1);;Όλα τα αρχεία (*.*) - + Load File Φόρτωση αρχείου - - + + Set Up System Files - + Ρύθμιση αρχείων συστήματος - + <p>Azahar needs console unique data and firmware files from a real console to be able to use some of its features.<br>Such files and data can be set up with the <a href=https://github.com/azahar-emu/ArticSetupTool>Azahar Artic Setup Tool</a><br>Notes:<ul><li><b>This operation will install console unique data to Azahar, do not share your user or nand folders<br>after performing the setup process!</b></li><li>While doing the setup process, Azahar will link to the console running the setup tool. You can unlink the<br>console later from the System tab in the emulator configuration menu.</li><li>Do not go online with both Azahar and your 3DS console at the same time after setting up system files,<br>as it could cause issues.</li><li>Old 3DS setup is needed for the New 3DS setup to work (doing both setup modes is recommended).</li><li>Both setup modes will work regardless of the model of the console running the setup tool.</li></ul><hr></p> - + <p>Για να χρησιμοποιήσετε ορισμένες από τις λειτουργίες του Azahar, απαιτούνται μοναδικά δεδομένα κονσόλας και αρχεία υλικολογισμικού από μια πραγματική κονσόλα.<br>Μπορείτε να ρυθμίσετε αυτά τα αρχεία και τα δεδομένα με το <a href=https://github.com/azahar-emu/ArticSetupTool>Εργαλείο ρύθμισης Azahar Artic</a><br>Σημειώσεις:<ul><li><b>Αυτή η ενέργεια θα εγκαταστήσει τα μοναδικά δεδομένα της κονσόλας στο Azahar. Μην κοινοποιήσετε τους φακέλους χρήστη ή nand<br>μετά την εκτέλεση της διαδικασίας ρύθμισης!</b></li><li>Κατά τη διαδικασία ρύθμισης, το Azahar θα συνδεθεί στην κονσόλα που εκτελεί το εργαλείο ρύθμισης. Μπορείτε να αποσυνδέσετε την<br>κονσόλα αργότερα, από την καρτέλα «Σύστημα» στο μενού διαμόρφωσης του εξομοιωτή.</li><li>Αφού ρυθμίσετε τα αρχεία συστήματος, φροντίστε να μην συνδέεστε στο διαδίκτυο με το Azahar και την κονσόλα 3DS σας ταυτόχρονα,<br>καθώς αυτό μπορεί να προκαλέσει προβλήματα.</li><li>Για να λειτουργήσει η ρύθμιση για συστήματα New 3DS, απαιτείται η ρύθμιση για Old 3DS (προτείνεται η εκτέλεση και των δύο τρόπων ρύθμισης).</li><li>Και οι δύο τρόποι ρύθμισης θα λειτουργήσουν ανεξάρτητα από το μοντέλο της κονσόλας που εκτελεί το εργαλείο ρύθμισης.</li></ul><hr></p> - + Enter Azahar Artic Setup Tool address: - + <br>Choose setup mode: - + <br>Επιλέξτε τρόπο ρύθμισης: - + (ℹ️) Old 3DS setup - + (ℹ️) Ρύθμιση για Old 3DS - - + + Setup is possible. - + (⚠) New 3DS setup - + (⚠) Ρύθμιση για New 3DS - + Old 3DS setup is required first. - + Απαιτείται πρώτα ρύθμιση για Old 3DS. - + (✅) Old 3DS setup - + (✅) Ρύθμιση για Old 3DS - - + + Setup completed. - + Η ρύθμιση ολοκληρώθηκε. - + (ℹ️) New 3DS setup - + (ℹ️) Ρύθμιση για New 3DS - + (✅) New 3DS setup - + (✅) Ρύθμιση για New 3DS - + The system files for the selected mode are already set up. Reinstall the files anyway? - + Load Files Φόρτωση αρχείων - + 3DS Installation File (*.cia *.zcia) - + Αρχείο εγκατάστασης 3DS (*.cia *.zcia) - - - + + + All Files (*.*) Όλα τα αρχεία (*.*) - + Connect to Artic Base - + Σύνδεση στο Artic Base - + Enter Artic Base server address: - + Εισαγάγετε διεύθυνση διακομιστή Artic Base: - + %1 has been installed successfully. Το «%1» εγκαταστάθηκε επιτυχώς. - + Unable to open File Δεν είναι δυνατό το άνοιγμα του αρχείου - + Could not open %1 Δεν ήταν δυνατό το άνοιγμα του «%1» - + Installation aborted Η εγκατάσταση ακυρώθηκε - + The installation of %1 was aborted. Please see the log for more details - Η εγκατάσταση του «%1» ακυρώθηκε. Παρακαλώ δείτε το αρχείο καταγραφής για περισσότερες λεπτομέρειες + Η εγκατάσταση του «%1» ακυρώθηκε. Δείτε το αρχείο καταγραφής για περισσότερες λεπτομέρειες - + Invalid File Μη έγκυρο αρχείο - + %1 is not a valid CIA Το «%1» δεν είναι έγκυρο CIA - + CIA Encrypted - + Your CIA file is encrypted.<br/><a href='https://azahar-emu.org/blog/game-loading-changes/'>Please check our blog for more info.</a> - + Unable to find File - + Could not find %1 - - - - + + + + Z3DS Compression - + Συμπίεση Z3DS - + Failed to compress some files, check log for details. - + Failed to decompress some files, check log for details. - + All files have been compressed successfully. - + All files have been decompressed successfully. - + Uninstalling '%1'... - + Failed to uninstall '%1'. - + Successfully uninstalled '%1'. - + File not found Το αρχείο δεν βρέθηκε - + File "%1" not found Το αρχείο «%1» δεν βρέθηκε - + Savestates - + Warning: Savestates are NOT a replacement for in-application saves, and are not meant to be reliable. Use at your own risk! - - - + + + Error opening amiibo data file - + A tag is already in use. - + Application is not looking for amiibos. - + Amiibo File (%1);; All Files (*.*) Αρχείο Amiibo (%1);; Όλα τα αρχεία (*.*) - + Load Amiibo Φόρτωση Amiibo - + Unable to open amiibo file "%1" for reading. - + Record Movie Εγγραφή βίντεο - + Movie recording cancelled. Η εγγραφή βίντεο ακυρώθηκε. - - + + Movie Saved Το βίντεο αποθηκεύτηκε - - + + The movie is successfully saved. Το βίντεο αποθηκεύτηκε επιτυχώς. - + Application will unpause - + The application will be unpaused, and the next frame will be captured. Is this okay? - + Invalid Screenshot Directory - + Cannot create specified screenshot directory. Screenshot path is set back to its default value. - + Could not load video dumper - + FFmpeg could not be loaded. Make sure you have a compatible version installed. To install FFmpeg to Azahar, press Open and select your FFmpeg directory. To view a guide on how to install FFmpeg, press Help. - + Δεν ήταν δυνατή η φόρτωση του FFmpeg. Βεβαιωθείτε ότι έχετε εγκαταστήσει μια συμβατή έκδοση. + +Για να εγκαταστήσετε το FFmpeg στο Azahar, κάντε κλικ στο «Άνοιγμα» και επιλέξτε τον κατάλογο του FFmpeg. + +Για να δείτε έναν οδηγό εγκατάστασης του FFmpeg, επιλέξτε «Βοήθεια». - + Load 3DS ROM Files - + 3DS ROM Files (*.cia *.cci *.3dsx *.cxi *.3ds) - + 3DS Compressed ROM File (*.%1) - + Save 3DS Compressed ROM File - + Select Output 3DS Compressed ROM Folder - + Load 3DS Compressed ROM Files - + 3DS Compressed ROM Files (*.zcia *zcci *z3dsx *zcxi) - + 3DS ROM File (*.%1) - + Αρχείο ROM 3DS (*.%1) - + Save 3DS ROM File - + Αποθήκευση αρχείου ROM 3DS - + Select Output 3DS ROM Folder - + Επιλογή φακέλου εξόδου ROM 3DS - + Select FFmpeg Directory - + The provided FFmpeg directory is missing %1. Please make sure the correct directory was selected. - + FFmpeg has been sucessfully installed. - + Installation of FFmpeg failed. Check the log file for details. - + Could not start video dumping.<br>Please ensure that the video encoder is configured correctly.<br>Refer to the log for details. - + Recording %1 Εγγραφή %1 - + Playing %1 / %2 Αναπαραγωγή %1 / %2 - + Movie Finished Το βίντεο τελείωσε - + (Accessing SharedExtData) - + (Πρόσβαση στα SharedExtData) - + (Accessing SystemSaveData) - + (Accessing BossExtData) - + (Πρόσβαση στα BossExtData) - + (Accessing ExtData) - + (Πρόσβαση στα ExtData) - + (Accessing SaveData) - + (Πρόσβαση στα SaveData) - + MB/s - + MB/δ - + KB/s - + KB/δ - + Artic Traffic: %1 %2%3 - + Κίνηση Artic: %1 %2%3 - + Speed: %1% Ταχύτητα: %1% - + Speed: %1% / %2% Ταχύτητα: %1% / %2% - + App: %1 FPS - + Εφαρμογή: %1 FPS - + Frame: %1 ms (GPU: [CMD: %2 ms, SWP: %3 ms], IPC: %4 ms, SVC: %5 ms, Rem: %6 ms) - + Frame: %1 ms Καρέ: %1 ms - + VOLUME: MUTE - + ΕΝΤΑΣΗ: ΣΙΓΑΣΗ - + VOLUME: %1% Volume percentage (e.g. 50%) - + ΕΝΤΑΣΗ: %1% - + %1 is missing. Please <a href='https://web.archive.org/web/20240304201103/https://citra-emu.org/wiki/dumping-system-archives-and-the-shared-fonts-from-a-3ds-console/'>dump your system archives</a>.<br/>Continuing emulation may result in crashes and bugs. - + A system archive Ένα αρχείο συστήματος - + System Archive Not Found Δεν βρέθηκε αρχείο συστήματος - + System Archive Missing Απουσία αρχείου συστήματος - + Save/load Error Σφάλμα αποθήκευσης/φόρτωσης - + Fatal Error Κρίσιμο σφάλμα - + A fatal error occurred. <a href='https://web.archive.org/web/20240228001712/https://community.citra-emu.org/t/how-to-upload-the-log-file/296'>Check the log</a> for details.<br/>Continuing emulation may result in crashes and bugs. - + Fatal Error encountered Προέκυψε κρίσιμο σφάλμα - + Continue Συνέχεια - + Quit Application - + Έξοδος από την εφαρμογή - + OK - OK + OK - + Would you like to exit now? Θέλετε να κλείσετε το πρόγραμμα τώρα; - + The application is still running. Would you like to stop emulation? - + Playback Completed Η αναπαραγωγή ολοκληρώθηκε - + Movie playback completed. Η αναπαραγωγή βίντεο ολοκληρώθηκε. - + Update Available - + Διαθέσιμη ενημέρωση - + Update %1 for Azahar is available. Would you like to download it? - + Primary Window - + Κύριο παράθυρο - + Secondary Window - + Δευτερεύον παράθυρο @@ -5014,42 +5165,42 @@ Would you like to download it? GRenderWindow - + OpenGL not available! - + Το OpenGL δεν είναι διαθέσιμο! - + OpenGL shared contexts are not supported. - + Error while initializing OpenGL! - + Your GPU may not support OpenGL, or you do not have the latest graphics driver. - + Error while initializing OpenGL 4.3! - + Σφάλμα κατά την αρχικοποίηση του OpenGL 4.3! - + Your GPU may not support OpenGL 4.3, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1 - + Error while initializing OpenGL ES 3.2! - + Your GPU may not support OpenGL ES 3.2, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1 @@ -5057,244 +5208,251 @@ Would you like to download it? GameList - - + + Compatibility Συμβατότητα - - + + Region Περιοχή - - + + File type Τύπος αρχείου - - + + Size Μέγεθος - - + + Play time - + Favorite - + Eject Cartridge - + Εξαγωγή κασέτας - + Insert Cartridge - + Εισαγωγή κασέτας - + Open - Άνοιγμα + Άνοιγμα - + Application Location - + Τοποθεσία εφαρμογής - + Save Data Location - + Τοποθεσία αποθηκευμένων δεδομένων - + Extra Data Location - + Τοποθεσία επιπλέον δεδομένων - + Update Data Location - + Τοποθεσία δεδομένων ενημέρωσης - + DLC Data Location - + Τοποθεσία δεδομένων DLC - + Texture Dump Location - + Custom Texture Location - + Mods Location - + Dump RomFS Αποτύπωση RomFS - + Disk Shader Cache - + Open Shader Cache Location - + Delete OpenGL Shader Cache - + + Delete Vulkan Shader Cache + + + + Uninstall - + Everything - + Application - + Εφαρμογή - + Update - + Ενημέρωση - + DLC - + DLC - + Remove Play Time Data - + Create Shortcut - + Δημιουργία συντόμευσης - + Add to Desktop - + Add to Applications Menu - + Προσθήκη στο μενού εφαρμογών - + Stress Test: App Launch - + Properties - Ιδιότητες + Ιδιότητες - - - - + + + + Azahar - + Azahar - + Are you sure you want to completely uninstall '%1'? This will delete the application if installed, as well as any installed updates or DLC. - + Θέλετε σίγουρα να καταργήσετε την εγκατάσταση του «%1»; + +Αυτή η ενέργεια θα διαγράψει την εφαρμογή αν έχει εγκατασταθεί, καθώς και τυχόν εγκατεστημένες ενημερώσεις ή DLC. - - + + %1 (Update) - + %1 (Ενημέρωση) - - + + %1 (DLC) - + %1 (DLC) - + Are you sure you want to uninstall '%1'? - + Are you sure you want to uninstall the update for '%1'? - + Are you sure you want to uninstall all DLC for '%1'? - + Scan Subfolders Σάρωση υποφακέλων - + Remove Application Directory - + Move Up - + Move Down - + Open Directory Location Άνοιγμα τοποθεσίας καταλόγου - + Clear Απαλοιφή - + Name Όνομα @@ -5380,35 +5538,35 @@ Screen. GameListPlaceholder - + Double-click to add a new folder to the application list - + Κάντε διπλό κλικ για να προσθέστε έναν νέο φάκελο στη λίστα εφαρμογών GameListSearchField - + of από - + result αποτέλεσμα - + results αποτελέσματα - + Filter: Φίλτρο: - + Enter pattern to filter Εισαγάγετε μοτίβο για φιλτράρισμα @@ -5836,7 +5994,7 @@ Screen. Preferred Application - + Προτιμώμενη εφαρμογή @@ -6032,7 +6190,7 @@ Debug Message: Preloading Textures %1 / %2 - + Προφόρτωση υφών %1 / %2 @@ -6040,24 +6198,24 @@ Debug Message: Προετοιμασία shader %1 / %2 - - Loading Shaders %1 / %2 - Φόρτωση shader %1 / %2 + + Loading %3 %1 / %2 + Φόρτωση %3 %1 / %2 - + Launching... Εκκίνηση... - + Now Loading %1 Γίνεται φόρτωση %1 - + Estimated Time %1 Εκτιμώμενος χρόνος: %1 @@ -6088,12 +6246,12 @@ Debug Message: Applications I Own - + Οι εφαρμογές μου Hide Empty Rooms - + Απόκρυψη κενών δωματίων @@ -6123,7 +6281,7 @@ Debug Message: Preferred Application - + Προτιμώμενη εφαρμογή @@ -6151,17 +6309,17 @@ Debug Message: Azahar - + Azahar File - + Αρχείο Boot Home Menu - + Εκκίνηση αρχικού μενού @@ -6176,7 +6334,7 @@ Debug Message: Emulation - Εξομοίωση + Εξομοίωση @@ -6191,7 +6349,7 @@ Debug Message: View - + Προβολή @@ -6206,7 +6364,7 @@ Debug Message: Small Screen Position - + Θέση μικρής οθόνης @@ -6226,7 +6384,7 @@ Debug Message: Help - + Βοήθεια @@ -6241,62 +6399,62 @@ Debug Message: Connect to Artic Base... - + Σύνδεση στο Artic Base... Set Up System Files... - + Ρύθμιση αρχείων συστήματος... JPN - + JPN USA - + USA EUR - + EUR AUS - + AUS CHN - + CHN KOR - + KOR TWN - + TWN Exit - + Έξοδος Pause - + Παύση Stop - + Διακοπή @@ -6311,12 +6469,12 @@ Debug Message: FAQ - + Συχνές ερωτήσεις About Azahar - Σχετικά με το Azahar + Σχετικά με το Azahar @@ -6331,17 +6489,17 @@ Debug Message: Quick Save - Γρήγορη Αποθήκευση + Γρήγορη αποθήκευση Load from Newest Slot - Φόρτωση από την νεότερη θέση + Φόρτωση από τη νεότερη θέση Quick Load - + Γρήγορη φόρτωση @@ -6411,12 +6569,12 @@ Debug Message: Compress ROM File... - + Συμπίεση αρχείου ROM... Decompress ROM File... - + Αποσυμπίεση αρχείου ROM... @@ -6476,22 +6634,22 @@ Debug Message: Side by Side - Παραπλεύρως + Δίπλα-δίπλα Separate Windows - + Ξεχωριστά παράθυρα Hybrid Screen - + Υβριδική οθόνη Custom Layout - + Προσαρμοσμένη διάταξη @@ -6566,12 +6724,12 @@ Debug Message: Open Azahar Folder - + Άνοιγμα φακέλου Azahar Configure Current Application... - + Διαμόρφωση τρέχουσας εφαρμογής... @@ -6657,7 +6815,7 @@ Debug Message: Application: - + Εφαρμογή: @@ -6687,7 +6845,7 @@ Debug Message: Citra TAS Movie (*.ctm) - + Βίντεο TAS Citra (*.ctm) @@ -6764,7 +6922,7 @@ Debug Message: Citra TAS Movie (*.ctm) - + Βίντεο TAS Citra (*.ctm) @@ -6855,17 +7013,17 @@ Debug Message: IP is not a valid IPv4 address. - + Η διεύθυνση IP δεν είναι έγκυρη διεύθυνση IPv4. Port must be a number between 0 to 65535. - + Η θύρα πρέπει να είναι αριθμός μεταξύ 0 και 65535. You must choose a Preferred Application to host a room. If you do not have any applications in your Applications list yet, add an applications folder by clicking on the plus icon in the Applications list. - + Πρέπει να επιλέξετε μια προτιμώμενη εφαρμογή για τη φιλοξενία ενός δωματίου. Εάν δεν διαθέτετε ακόμα καμία εφαρμογή στη λίστα εφαρμογών σας, προσθέστε έναν φάκελο εφαρμογών κάνοντας κλικ στο εικονίδιο «συν» στη λίστα εφαρμογών. @@ -6900,7 +7058,7 @@ Debug Message: Incorrect password. - + Εσφαλμένος κωδικός πρόσβασης. @@ -6951,7 +7109,7 @@ They may have left the room. Options - + Επιλογές @@ -6966,12 +7124,12 @@ They may have left the room. %1 &lt;%2> %3 - + %1 &lt;%2> %3 Range: %1 - %2 - + Εύρος: %1 - %2 @@ -6981,7 +7139,7 @@ They may have left the room. %1 (0x%2) %3 - + %1 (0x%2) %3 @@ -6989,12 +7147,12 @@ They may have left the room. Options - + Επιλογές Double click to see the description and change the values of the options. - + Κάντε διπλό κλικ για να δείτε την περιγραφή και να αλλάξετε τις τιμές των επιλογών. @@ -7009,12 +7167,12 @@ They may have left the room. Name - Όνομα + Όνομα Value - Τιμή + Τιμή @@ -7030,17 +7188,17 @@ They may have left the room. Άνοιγμα αρχείου - + Error Σφάλμα - + Couldn't load the camera Δεν ήταν δυνατή η φόρτωση της κάμερας - + Couldn't load %1 Δεν ήταν δυνατή η φόρτωση του «%1» @@ -7137,12 +7295,12 @@ They may have left the room. %1 (0x%2) - + %1 (0x%2) Unsupported encrypted application - + Μη υποστηριζόμενη κρυπτογραφημένη εφαρμογή @@ -7162,27 +7320,27 @@ They may have left the room. Add New Application Directory - + Προσθήκη νέου καταλόγου εφαρμογής Favorites - + Αγαπημένα Not running an application - + Δεν εκτελεί κάποια εφαρμογή %1 is not running an application - + Ο/Η %1 δεν εκτελεί κάποια εφαρμογή %1 is running %2 - + Ο/Η %1 εκτελεί το «%2» @@ -7398,31 +7556,37 @@ They may have left the room. Azahar has detected user data for Citra and Lime3DS. - + Το Azahar εντόπισε δεδομένα χρήστη για το Citra και το Lime3DS. + + Migrate from Lime3DS - + Μεταφορά από Lime3DS Migrate from Citra - + Μεταφορά από Citra Azahar has detected user data for Citra. - + Το Azahar εντόπισε δεδομένα χρήστη για το Citra. + + Azahar has detected user data for Lime3DS. - + Το Azahar εντόπισε δεδομένα χρήστη για το Lime3DS. + + @@ -7574,7 +7738,7 @@ If you wish to clean up the files which were left in the old data location, you object id = %1 - id αντικειμένου = %1 + αναγνωριστικό αντικειμένου = %1 @@ -7584,7 +7748,7 @@ If you wish to clean up the files which were left in the old data location, you thread id = %1 - id νήματος = %1 + αναγνωριστικό νήματος = %1 diff --git a/dist/languages/es_ES.ts b/dist/languages/es_ES.ts index 297a6e4f2..4d4817877 100644 --- a/dist/languages/es_ES.ts +++ b/dist/languages/es_ES.ts @@ -328,8 +328,8 @@ This would ban both their forum username and their IP address. - This post-processing effect adjusts audio speed to match emulation speed and helps prevent audio stutter. This however increases audio latency. - Este efecto de post-procesado ajusta la velocidad del audio para igualarla a la del emulador y ayuda a prevenir parones de audio, pero aumenta la latencia de éste. + <html><head/><body><p>This post-processing effect adjusts audio speed to match emulation speed and helps prevent audio stutter. This however increases audio latency.</p></body></html> + <html><head/><body><p>Este efecto de post-procesado ajusta la velocidad del audio para igualarla a la del emulador y ayuda a prevenir parones de audio, pero aumenta la latencia de éste.</p></body></html> @@ -338,8 +338,8 @@ This would ban both their forum username and their IP address. - Scales audio playback speed to account for drops in emulation framerate. This means that audio will play at full speed even while the application framerate is low. May cause audio desync issues. - Ajusta la velocidad de reproducción de audio para tener en cuenta las caidas de fotogramas. El audio se reproducirá a velocidad completa pese a que los fotogramas de la aplicación sean bajos. Puede causar problemas de desincronización. + <html><head/><body><p>Scales audio playback speed to account for drops in emulation framerate. This means that audio will play at full speed even while the application framerate is low. May cause audio desync issues.</p></body></html> + <html><head/><body><p>Ajusta la velocidad de reproducción de audio para tener en cuenta las caidas de fotogramas. El audio se reproducirá a velocidad completa pese a que los fotogramas de la aplicación sean bajos. Puede causar problemas de desincronización.</p></body></html> @@ -478,8 +478,8 @@ This would ban both their forum username and their IP address. - Select where the image of the emulated camera comes from. It may be an image or a real camera. - Selecciona el lugar de donde proviene la imagen de la cámara emulada. Puede ser una imagen o una cámara real. + <html><head/><body><p>Select where the image of the emulated camera comes from. It may be an image or a real camera.</p></body></html> + <html><head/><body><p>Selecciona el lugar de donde proviene la imagen de la cámara emulada. Puede ser una imagen o una cámara real.</p></body></html> @@ -807,21 +807,31 @@ Would you like to ignore the error and continue? + <html><head/><body><p>Toggles the unique data console type (Old 3DS ↔ New 3DS) to be able to download the opposite system firmware type from system settings.</p></body></html> + <html><head/><body><p>Permite alternar el tipo de consola (Old 3DS &#8596; New 3DS) para poder descargar el firmware del sistema opuesto desde la configuración del sistema.</p></body></html> + + + + Toggle unique data console type + Cambiar tipo de consola en los datos únicos de consola + + + Force deterministic async operations Forzar operaciones asíncronas deterministas - + <html><head/><body><p>Forces all async operations to run on the main thread, making them deterministic. Do not enable if you don't know what you are doing.</p></body></html> <html><head/><body><p>Obliga a que todas las operaciones asíncronas se ejecuten en el hilo principal, lo que las hace deterministas. No la habilites si no sabes lo que estás haciendo.</p></body></html> - + Enable RPC server Activar servidor RPC - + <html><head/><body><p>Enables the RPC server on port 45987. This allows remotely reading/writing guest memory, do not enable if you don't know what you are doing.</p></body></html> <html><head/><body><p>Activa el servidor RPC en el puerto 45987. Esto permite leer/escribir de manera remota la memoria emulada, no lo actives si no sabes lo que estás haciendo.</p></body></html> @@ -1019,176 +1029,186 @@ Would you like to ignore the error and continue? + Use Integer Scaling + Restringir el escalado a múltiplos enteros + + + + <html><head/><body><p>Use Integer Scaling</p><p>Enforces that the larger screen in all layouts is an integer scale of the 240px height of the original 3DS screen.</p></body></html> + <html><head/><body><p>Restringir el escalado a múltiplos enteros</p><p>Limita que la pantalla más grande en todos los diseños tenga un escalado múltiplo de la altura de 240 px de la pantalla 3DS original.</p></body></html> + + + Enable Linear Filtering Activar Filtro Linear - + Post-Processing Shader Sombreado de post-procesado - + Texture Filter Filtro de texturas - + None Ninguno - + Anime4K Anime4K - + Bicubic Bicúbico - + ScaleForce ScaleForce - + xBRZ xBRZ - + MMPX MMPX - + Stereoscopy Estereoscopia - + Stereoscopic 3D Mode Modo 3D Estereoscópico - + Off Apagado - + Side by Side De lado a lado - + Side by Side Full Width De lado a lado ancho completo - + Anaglyph Anáglifo - + Interlaced Entrelazado - + Reverse Interlaced Entrelazado inverso - + Depth Profundidad - + % % - + Note: Depth values over 100% are not possible on real hardware and may cause graphical issues Nota: Los valores de profundidad superiores al 100 % no son posibles en hardware real y pueden causar problemas gráficos. - + Eye to Render in Monoscopic Mode Ojo para renderizar en modo monoscópico - + Left Eye (default) Ojo izquierdo (predeterminado) - + Right Eye Ojo derecho - + Disable Right Eye Rendering Desactivar Renderizado de Ojo Derecho - + <html><head/><body><p>Disable Right Eye Rendering</p><p>Disables rendering the right eye image when not using stereoscopic mode. Greatly improves performance in some applications, but can cause flickering in others.</p></body></html> <html><head/><body><p>Desactivar Dibujado de Ojo Derecho</p><p>Desactiva el dibujado de la imagen del ojo derecho cuando no se utiliza el modo estereoscópico. Mejora significativamente el rendimiento en algunos juegos, pero puede causar parpadeo en otros.</p></body></html> - + Swap Eyes Intercambiar Ojos - + Utility Utilidad - + <html><head/><body><p>Replace textures with PNG files.</p><p>Textures are loaded from load/textures/[Title ID]/.</p></body></html> <html><head/><body><p>Cambia las texturas por archivos PNG.</p><p>Las texturas son cargadas desde load/textures/[Title ID]/.</p></body></html> - + Use custom textures Usar texturas personalizadas - + <html><head/><body><p>Dump textures to PNG files.</p><p>Textures are dumped to dump/textures/[Title ID]/.</p></body></html> <html><head/><body><p>Vuelca las texturas a archivos PNG.</p><p>Las texturas son volcadas a dump/textures/[Title ID]/.</p></body></html> - + Dump textures Volcar texturas - + <html><head/><body><p>Load all custom textures into memory on boot, instead of loading them when the application requires them.</p></body></html> <html><head/><body><p>Carga todas las texturas personalizadas en memoria al iniciar, en vez de cargarlas cuando la aplicación las necesite.</p></body></html> - + Preload custom textures Precargar texturas personalizadas - + <html><head/><body><p>Load custom textures asynchronously with background threads to reduce loading stutter</p></body></html> <html><head/><body><p>Carga las texturas personalizadas de manera asíncrona con los hilos de fondo para reducir los parones de carga</p></body></html> - + Async custom texture loading Carga de Texturas Personalizadas Asíncrona @@ -1203,7 +1223,7 @@ Would you like to ignore the error and continue? Updates - + Actualizaciones @@ -1213,17 +1233,17 @@ Would you like to ignore the error and continue? Update Channel - + Canal de actualización Stable - + Estable Prerelease - + Prelanzamiento @@ -1390,7 +1410,7 @@ Would you like to ignore the error and continue? Disable GLSL -> SPIR-V optimizer - Desactivar GLSL -> SPIR-V optimizador + Desactivar optimizador GLSL -> SPIR-V @@ -1445,7 +1465,7 @@ Would you like to ignore the error and continue? <html><head/><body><p>Perform presentation on separate threads. Improves performance when using Vulkan in most applications. Adds ~1 frame of input lag.</p></body></html> - + <html><head/><body><p>Presentar en hilos diferentes. Mejora el rendimiento cuando se usa Vulkan en muchos juegos. Agrega ~1 fotograma de retraso de lag.</p></body></html> @@ -1490,12 +1510,12 @@ Would you like to ignore the error and continue? Use disk shader cache - Usar Caché Almacenada de Sombreadores + Usar caché de sombreadores en disco - VSync prevents the screen from tearing, but some graphics cards have lower performance with VSync enabled. Keep it enabled if you don't notice a performance difference. - La Sincronización Vertical impide el tearing de la imagen, pero algunas tarjetas gráficas tienen peor rendimiento cuando éste está activado. Manténlo activado si no notas ninguna diferencia en el rendimiento. + <html><head/><body><p>VSync prevents the screen from tearing, but some graphics cards have lower performance with VSync enabled. Keep it enabled if you don't notice a performance difference.</p></body></html> + <html><head/><body><p>La Sincronización Vertical impide el tearing de la imagen, pero algunas tarjetas gráficas tienen peor rendimiento cuando éste está activado. Manténlo activado si no notas ninguna diferencia en el rendimiento.</p></body></html> @@ -1503,22 +1523,32 @@ Would you like to ignore the error and continue? Activar Sincronización Vertical - + + <html><head/><body><p>When enabled, this setting detects when the refresh rate of the screen is below that of the 3DS, and when it is, disables VSync automatically to avoid emulation speed being forced below 100%.</p></body></html> + <html><head/><body><p>Cuando está habilitada, esta configuración detecta cuando la frecuencia de actualización de la pantalla es menor que la del 3DS y, cuando lo es, deshabilita automáticamente VSync para evitar que la velocidad de emulación se vea forzada a ser inferior al 100%.</p></body></html> + + + + Enable display refresh rate detection + Habilitar detección de frecuencia de actualización de pantalla + + + Use global Usar global - + Use per-application Usar configuración de la aplicación - + Delay Application Render Thread Demorar el hilo de ejecución de renderizado: - + <html><head/><body><p>Delays the emulated application render thread the specified amount of milliseconds every time it submits render commands to the GPU.</p><p>Adjust this feature in the (very few) dynamic framerate applications to fix performance issues.</p></body></html> <html><head/><body><p>Demora el hilo emulado de renderizado del juego una determinada cantidad de milisegundos cada vez que envíe comandos de renderizado a la GPU.</p><p>Ajusta esta característica en los (pocos) juegos con FPS dinámicos para arreglar problemas de rendimiento.</p></body></html> @@ -1997,170 +2027,243 @@ Would you like to ignore the error and continue? - + Custom Layout Estilo personalizado - - Swap screens - Intercambiar pantallas - - - + Rotate screens upright Rotar pantallas en vertical - + + Swap screens + Intercambiar pantallas + + + + Customize layout cycling + Personalizar ciclo de estilo + + + Screen Gap Separación de Pantalla - + Large Screen Proportion Proporción de pantalla grande - + Small Screen Position Posición Pantalla Pequeña - + Upper Right Arriba a la derecha - + Middle Right Derecha en el medio - + Bottom Right (default) Abajo a la derecha (predeterminado) - + Upper Left Arriba a la izquierda - + Middle Left Izquierda en el medio - + Bottom Left Abajo a la izquierda - + Above large screen Encima de la pantalla grande - + Below large screen Debajo de la pantalla grande - + Background Color Color de fondo - - + + Top Screen Pantalla superior - - + + X Position Posición X - - - - - - - - - + + + + + + + + - - + + + px px - - + + Y Position Posición Y - - + + Width Ancho - - + + Height Altura - - + + Bottom Screen Pantalla inferior - + <html><head/><body><p>Bottom Screen Opacity %</p></body></html> <html><head/><body><p>Porcentaje de Opacidad de la Pantalla Inferior %</p></body></html> - + Single Screen Layout Estilo de pantalla única - - + + Stretch Alargar - - + + Left/Right Padding Padding horizontal - - + + Top/Bottom Padding Padding vertical - + Note: These settings affect the Single Screen and Separate Windows layouts Nota: Esta configuración afecta a los estilos de pantalla única y ventanas separadas + + ConfigureLayoutCycle + + + Configure Layout Cycling + Configurar Ciclo de Estilo + + + + Screen Layout Cycling Customization + Personalización de Ciclo de Estilo de Pantalla + + + + Select which screen layout options should be cycled with the "Toggle Screen Layout" hotkey + Seleccione qué opciones de diseño de pantalla se deben alternar con la tecla de acceso rápido "Alternar estilo de pantalla" + + + + Use Global Value + Usar valor global + + + + Default + Por defecto + + + + Single Screen + Pantalla única + + + + Large Screen + Pantalla amplia + + + + Side by Side + Conjunta + + + + Separate Windows + Ventanas separadas + + + + Hybrid + Híbrido + + + + Custom + Personalizada + + + + No Layout Selected + No se ha seleccionado ningún estilo + + + + Please select at least one layout option to cycle through. + Por favor selecciona al menos una opción de estilo. + + ConfigureMotionTouch - + Configure Motion / Touch Configurar Movimiento / Táctil @@ -2188,8 +2291,10 @@ Would you like to ignore the error and continue? - - + + + + Configure Configuración @@ -2219,58 +2324,68 @@ Would you like to ignore the error and continue? Usar asignación de botones: - + + Map touchpads on controllers like the DualSense directly to touch + Asignar paneles táctiles de mandos como el DualSense directamente como control táctil + + + + Use controller touchpad + Usar el panel táctil del mando + + + CemuhookUDP Config Configuración de CemuhookUDP - + You may use any Cemuhook compatible UDP input source to provide motion and touch input. Puedes usar cualquier controlador UDP compatible con Cemuhook para controlar el movimiento y las funciones táctiles. - + Server: Servidor: - + Port: Puerto: - + Pad: Controlador: - + Pad 1 Controlador 1 - + Pad 2 Controlador 2 - + Pad 3 Controlador 3 - + Pad 4 Controlador 4 - + Learn More Más información - - + + Test Probar @@ -2301,57 +2416,68 @@ Would you like to ignore the error and continue? <a href='https://web.archive.org/web/20240301211230/https://citra-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">Más Información</span></a> - + + Information Información - + After pressing OK, press a button on the controller whose motion you want to track. Después de pulsar "Aceptar", pulsa un botón en el controlador cuyo movimiento quieres que siga. - + [press button] [pulsa un botón] - + + After pressing OK, tap the touchpad on the controller you want to track. + Después de pulsar "Aceptar", toque el panel táctil del mando que desea usar. + + + + [press touchpad] + [presione el panel táctil] + + + Testing Probando - + Configuring Configurando - + Test Successful Prueba Exitosa - + Successfully received data from the server. Datos recibidos del servidor con éxito. - + 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>Asegúrese de qué el servidor esté configurado correctamente y que la dirección y el puerto son correctos. - + Azahar Azahar - + UDP Test or calibration configuration is in progress.<br>Please wait for them to finish. La prueba de UDP o la configuración de calibración está en marcha.<br>Por favor, espera a que éstas terminen. @@ -2521,8 +2647,8 @@ Would you like to ignore the error and continue? - Compresses the content of CIA files when installed to the emulated SD card. Only affects CIA content which is installed while the setting is enabled. - Comprime el contenido de archivos CIA cuando son instalados a la SD emulada. Solo afecta contenido CIA instalado con esta opción activada. + <html><head/><body><p>Compresses the content of CIA files when installed to the emulated SD card. Only affects CIA content which is installed while the setting is enabled.</p></body></html> + <html><head/><body><p>Comprime el contenido de archivos CIA cuando son instalados a la SD emulada. Solo afecta contenido CIA instalado con esta opción activada.</p></body></html> @@ -2583,12 +2709,13 @@ las funciones en línea (si están instalados) Apply region free patch to installed applications. - + Aplicar parche de región libre +a las aplicaciones instaladas. Patches the region of installed applications to be region free, so that they always appear on the home menu. - + Parchea la región de las aplicaciones instaladas para que sean de región libre, de manera que siempre aparezcan en el menú Home. @@ -4104,511 +4231,530 @@ Por favor, compruebe la instalación de FFmpeg usada para la compilación. GMainWindow - + + Warning + Advertencia + + + + The `azahar` executable is being run directly rather than via the Azahar.app bundle. + +When run this way, the app may be missing certain functionality such as camera emulation. + +It is recommended to instead run Azahar using the `open` command, e.g.: +`open ./Azahar.app` + El ejecutable `azahar` se ha ejecutado directamente en lugar de a través del paquete Azahar.app. + +Al ejecutarse de esta forma, es posible que la aplicación carezca de ciertas funciones, como la emulación de cámara. + +Se recomienda ejecutar Azahar con el comando `open`, por ejemplo: `open ./Azahar.app` + + + No Suitable Vulkan Devices Detected Dispositivos compatibles con Vulkan no encontrados. - + Vulkan initialization failed during boot.<br/>Your GPU may not support Vulkan 1.1, or you do not have the latest graphics driver. El inicio de Vulkan falló durante el inicio.<br/>Tu GPU, o no soporta Vulkan 1.1, o no tiene los últimos drivers gráficos. - + Current Artic traffic speed. Higher values indicate bigger transfer loads. La velocidad de tráfico actual de Artic. Los valores altos indican una carga mayor de transferencia. - - + + Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a 3DS. La velocidad de emulación actual. Valores mayores o menores de 100% indican que la velocidad de emulación funciona más rápida o lentamente que en una 3DS. - - + + How many frames per second the app is currently displaying. This will vary from app to app and scene to scene. Los fotogramas por segundo que está mostrando el juego. Variarán de aplicación en aplicación y de escena a escena. - - + + Time taken to emulate a 3DS frame, not counting framelimiting or v-sync. For full-speed emulation this should be at most 16.67 ms. El tiempo que lleva emular un fotograma de 3DS, sin tener en cuenta el limitador de fotogramas, ni la sincronización vertical. Para una emulación óptima, este valor no debe superar los 16.67 ms. - + MicroProfile (unavailable) MicroProfile (no disponible) - + Clear Recent Files Limpiar Archivos Recientes - + &Continue &Continuar - + &Pause &Pausar - + Azahar is running an application TRANSLATORS: This string is shown to the user to explain why Citra needs to prevent the computer from sleeping Azahar está ejecutando una aplicación - - + + Invalid App Format Formato de aplicación inválido - - + + Your app format is not supported.<br/>Please follow the guides to redump your <a href='https://web.archive.org/web/20240304210021/https://citra-emu.org/wiki/dumping-game-cartridges/'>game cartridges</a> or <a href='https://web.archive.org/web/20240304210011/https://citra-emu.org/wiki/dumping-installed-titles/'>installed titles</a>. Tu formato de aplicación no es válido.<br/>Por favor, sigue las instrucciones para volver a volcar tus <a href='https://web.archive.org/web/20240304210021/https://citra-emu.org/wiki/dumping-game-cartridges/'>cartucho de juego</a> y/o <a href='https://web.archive.org/web/20240304210011/https://citra-emu.org/wiki/dumping-installed-titles/'>títulos instalados</a>. - + App Corrupted Aplicación corrupta - + Your app is corrupted. <br/>Please follow the guides to redump your <a href='https://web.archive.org/web/20240304210021/https://citra-emu.org/wiki/dumping-game-cartridges/'>game cartridges</a> or <a href='https://web.archive.org/web/20240304210011/https://citra-emu.org/wiki/dumping-installed-titles/'>installed titles</a>. Tu aplicación está corrupta. <br/>Por favor, sigue las instrucciones para volver a volcar tus <a href='https://web.archive.org/web/20240304210021/https://citra-emu.org/wiki/dumping-game-cartridges/'>cartuchos de juego</a> y/o <a href='https://web.archive.org/web/20240304210011/https://citra-emu.org/wiki/dumping-installed-titles/'>títulos instalados</a>. - + App Encrypted Aplicación encriptada - + Your app is encrypted. <br/><a href='https://azahar-emu.org/blog/game-loading-changes/'>Please check our blog for more info.</a> Tu aplicación está encriptada. <br/><a href='https://azahar-emu.org/blog/game-loading-changes/'>Por favor visita nuestro blog para más información.</a> - + Unsupported App Aplicación no soportada - + GBA Virtual Console is not supported by Azahar. Consola Virtual de GBA no está soportada por Azahar. - - + + Artic Server Servidor Artic - + Invalid system mode Modo de sistema no válido - + New 3DS exclusive applications cannot be loaded without enabling the New 3DS mode. - + Las aplicaciones exclusivas de New 3DS no se pueden cargar sin activar el modo New 3DS. - + Error while loading App! ¡Error al cargar la aplicación! - + An unknown error occurred. Please see the log for more details. Un error desconocido ha ocurrido. Por favor, mira el log para más detalles. - + CIA must be installed before usage El CIA debe estar instalado antes de usarse - + Before using this CIA, you must install it. Do you want to install it now? Antes de usar este CIA, debes instalarlo. ¿Quieres instalarlo ahora? - + Quick Load Carga Rápida - + Quick Save Guardado Rápido - - + + Slot %1 Ranura %1 - + %2 %3 %2 %3 - + Quick Save - %1 Guardado Rápido - %1 - + Quick Load - %1 Carga Rápida - %1 - + Slot %1 - %2 %3 Ranura %1 - %2 %3 - + Error Opening %1 Folder Error al abrir la carpeta %1 - - + + Folder does not exist! ¡La carpeta no existe! - + Remove Play Time Data Quitar Datos de Tiempo de Juego - + Reset play time? ¿Reiniciar tiempo de juego? - - - - + + + + Create Shortcut Crear atajo - + Do you want to launch the application in fullscreen? ¿Desea lanzar esta aplicación en pantalla completa? - + Successfully created a shortcut to %1 Atajo a %1 creado con éxito - + This will create a shortcut to the current AppImage. This may not work well if you update. Continue? Ésto creará un atajo a la AppImage actual. Puede no funcionar bien si actualizas. ¿Continuar? - + Failed to create a shortcut to %1 Fallo al crear un atajo a %1 - + Create Icon Crear icono - + Cannot create icon file. Path "%1" does not exist and cannot be created. No se pudo crear un archivo de icono. La ruta "%1" no existe y no puede ser creada. - + Dumping... Volcando... - - + + Cancel Cancelar - - - - - - - - - + + + + + + + + + Azahar Azahar - + Could not dump base RomFS. Refer to the log for details. No se pudo volcar el RomFS base. Compruebe el registro para más detalles. - + Error Opening %1 Error al abrir %1 - + Select Directory Seleccionar directorio - + Properties Propiedades - + The application properties could not be loaded. No se pudieron cargar las propiedades de la aplicación. - + 3DS Executable (%1);;All Files (*.*) %1 is an identifier for the 3DS executable file extensions. Ejecutable 3DS(%1);;Todos los archivos(*.*) - + Load File Cargar Archivo - - + + Set Up System Files Configurar Archivos de Sistema - + <p>Azahar needs console unique data and firmware files from a real console to be able to use some of its features.<br>Such files and data can be set up with the <a href=https://github.com/azahar-emu/ArticSetupTool>Azahar Artic Setup Tool</a><br>Notes:<ul><li><b>This operation will install console unique data to Azahar, do not share your user or nand folders<br>after performing the setup process!</b></li><li>While doing the setup process, Azahar will link to the console running the setup tool. You can unlink the<br>console later from the System tab in the emulator configuration menu.</li><li>Do not go online with both Azahar and your 3DS console at the same time after setting up system files,<br>as it could cause issues.</li><li>Old 3DS setup is needed for the New 3DS setup to work (doing both setup modes is recommended).</li><li>Both setup modes will work regardless of the model of the console running the setup tool.</li></ul><hr></p> <p>Azahar necesita archivos de una consola real para poder utilizar algunas de sus funciones.<br>Puedes obtener los archivos con la <a href=https://github.com/azahar-emu/ArticSetupTool>herramienta de configuración Artic</a><br>Notas:<ul><li><b>Esta operación instalará archivos únicos de la consola en Azahar, ¡no compartas las carpetas de usuario ni nand<br>después de realizar el proceso de configuración!</b></li><li>Tras la configuración, Azahar se enlazará a la consola que ha ejecutado la herramienta de configuración. Puedes desvincular la<br>consola más tarde desde la pestaña "Archivos de sistema" del menú de opciones del emulador.</li><li>No te conectes en línea con Azahar y la consola 3DS al mismo tiempo después de configurar los archivos del sistema,<br>ya que esto podría causar problemas.</li><li>Se necesita la configuración de Old 3DS para que funcione la configuración de New 3DS (configurar ambos modos es recomendado).</li><li>Ambos modos de configuración funcionarán independientemente del modelo de la consola que ejecute la herramienta de configuración.</li></ul><hr></p> - + Enter Azahar Artic Setup Tool address: Introduce la dirección de la herramienta de configuración Artic - + <br>Choose setup mode: <br>Elige el modo de configuración: - + (ℹ️) Old 3DS setup (ℹ️) Configuración Old 3DS - - + + Setup is possible. La configuración es posible. - + (⚠) New 3DS setup (⚠) Configuración New 3DS - + Old 3DS setup is required first. La configuración Old 3DS es necesaria primero. - + (✅) Old 3DS setup (✅) Configuración Old 3DS - - + + Setup completed. Configuración completa. - + (ℹ️) New 3DS setup (ℹ️) Configuración New 3DS - + (✅) New 3DS setup (✅) Configuración New 3DS - + The system files for the selected mode are already set up. Reinstall the files anyway? Los archivos de sistema para el modo seleccionado ya están configurados. ¿Desea reinstalar los archivos de todas formas? - + Load Files Cargar archivos - + 3DS Installation File (*.cia *.zcia) Archivo de Instalación de 3DS (*.cia *.zcia) - - - + + + All Files (*.*) Todos los archivos (*.*) - + Connect to Artic Base Conectar a Artic Base - + Enter Artic Base server address: Introduce la dirección del servidor Artic Base - + %1 has been installed successfully. %1 ha sido instalado con éxito. - + Unable to open File No se pudo abrir el Archivo - + Could not open %1 No se pudo abrir %1 - + Installation aborted Instalación interrumpida - + The installation of %1 was aborted. Please see the log for more details La instalación de %1 ha sido cancelada. Por favor, consulte los registros para más información. - + Invalid File Archivo no válido - + %1 is not a valid CIA %1 no es un archivo CIA válido - + CIA Encrypted CIA encriptado - + Your CIA file is encrypted.<br/><a href='https://azahar-emu.org/blog/game-loading-changes/'>Please check our blog for more info.</a> Tu archivo CIA está encriptado. <br/><a href='https://azahar-emu.org/blog/game-loading-changes/'>Por favor visita nuestro blog para más información.</a> - + Unable to find File No puede encontrar el archivo - + Could not find %1 No se pudo encontrar %1 - - - - + + + + Z3DS Compression Compresión Z3DS - + Failed to compress some files, check log for details. No se pudieron comprimir algunos archivos, mira el registro para más detalles. - + Failed to decompress some files, check log for details. No se pudieron descomprimir algunos archivos, mira el registro para más detalles. - + All files have been compressed successfully. - Todos los archivos ya comprimido con éxtio. + Todos los archivos se han comprimido con éxito. - + All files have been decompressed successfully. - Todos los archivos ya descompresión con éxtio. + Todos los archivos se han descomprimido con éxito. - + Uninstalling '%1'... Desinstalando '%1'... - + Failed to uninstall '%1'. Falló la desinstalación de '%1'. - + Successfully uninstalled '%1'. '%1' desinstalado con éxito. - + File not found Archivo no encontrado - + File "%1" not found Archivo "%1" no encontrado - + Savestates Estados - + Warning: Savestates are NOT a replacement for in-application saves, and are not meant to be reliable. Use at your own risk! @@ -4617,86 +4763,86 @@ Use at your own risk! ¡Úsalos bajo tu propio riesgo! - - - + + + Error opening amiibo data file Error al abrir los archivos de datos del Amiibo - + A tag is already in use. Ya está en uso una etiqueta. - + Application is not looking for amiibos. La aplicación no está buscando amiibos. - + Amiibo File (%1);; All Files (*.*) Archivo de Amiibo(%1);; Todos los archivos (*.*) - + Load Amiibo Cargar Amiibo - + Unable to open amiibo file "%1" for reading. No se pudo abrir el archivo del amiibo "%1" para su lectura. - + Record Movie Grabar Película - + Movie recording cancelled. Grabación de película cancelada. - - + + Movie Saved Película Guardada - - + + The movie is successfully saved. Película guardada con éxito. - + Application will unpause La aplicación se despausará - + The application will be unpaused, and the next frame will be captured. Is this okay? La aplicación se despausará, y el siguiente fotograma será capturado. ¿Estás de acuerdo? - + Invalid Screenshot Directory Directorio de capturas de pantalla no válido - + Cannot create specified screenshot directory. Screenshot path is set back to its default value. No se puede crear el directorio de capturas de pantalla. La ruta de capturas de pantalla vuelve a su valor por defecto. - + Could not load video dumper No se pudo cargar el volcador de vídeo - + FFmpeg could not be loaded. Make sure you have a compatible version installed. To install FFmpeg to Azahar, press Open and select your FFmpeg directory. @@ -4709,265 +4855,265 @@ Para instalar FFmpeg en Azahar, pulsa Abrir y elige el directorio de FFmpeg. Para ver una guía sobre cómo instalar FFmpeg, pulsa Ayuda. - + Load 3DS ROM Files Cargar ROM de 3DS - + 3DS ROM Files (*.cia *.cci *.3dsx *.cxi *.3ds) - + Archivos ROM 3DS (*.cia *.cci *.3dsx *.cxi *.3ds) - + 3DS Compressed ROM File (*.%1) Archivo ROM 3DS comprimido (*.%1) - + Save 3DS Compressed ROM File Guardar archivo 3DS comprimido - + Select Output 3DS Compressed ROM Folder Seleccione la carpeta de salida comprimida del ROM 3DS - + Load 3DS Compressed ROM Files Cargar archivo 3DS comprimido - + 3DS Compressed ROM Files (*.zcia *zcci *z3dsx *zcxi) Archivo ROM 3DS comprimido (*.zcia *zcci *z3dsx *zcxi) - + 3DS ROM File (*.%1) Archivo ROM 3DS (*.%1) - + Save 3DS ROM File Guardar archivo ROM 3DS - + Select Output 3DS ROM Folder Seleccione la carpeta de salida del ROM 3DS - + Select FFmpeg Directory Seleccionar Directorio FFmpeg - + The provided FFmpeg directory is missing %1. Please make sure the correct directory was selected. Al directorio de FFmpeg indicado le falta %1. Por favor, asegúrese de haber seleccionado el directorio correcto. - + FFmpeg has been sucessfully installed. FFmpeg ha sido instalado con éxito. - + Installation of FFmpeg failed. Check the log file for details. La instalación de FFmpeg ha fallado. Compruebe el archivo del registro para más detalles. - + Could not start video dumping.<br>Please ensure that the video encoder is configured correctly.<br>Refer to the log for details. No se pudo empezar a grabar vídeo.<br>Asegúrese de que el encodeador de vídeo está configurado correctamente.<br>Para más detalles, observe el registro. - + Recording %1 Grabando %1 - + Playing %1 / %2 Reproduciendo %1 / %2 - + Movie Finished Película terminada - + (Accessing SharedExtData) (Accediendo al SharedExtData) - + (Accessing SystemSaveData) (Accediendo al SystemSaveData) - + (Accessing BossExtData) (Accediendo al BossExtData) - + (Accessing ExtData) (Accediendo al ExtData) - + (Accessing SaveData) (Accediendo al SaveData) - + MB/s MB/s - + KB/s KB/s - + Artic Traffic: %1 %2%3 Tráfico Artic: %1 %2%3 - + Speed: %1% Velocidad: %1% - + Speed: %1% / %2% Velocidad: %1% / %2% - + App: %1 FPS App: %1 FPS - + Frame: %1 ms (GPU: [CMD: %2 ms, SWP: %3 ms], IPC: %4 ms, SVC: %5 ms, Rem: %6 ms) Frame: %1 ms (GPU: [CMD: %2 ms, SWP: %3 ms], IPC: %4 ms, SVC: %5 ms, Rem: %6 ms) - + Frame: %1 ms Frame: %1 ms - + VOLUME: MUTE VOLUMEN: SILENCIO - + VOLUME: %1% Volume percentage (e.g. 50%) VOLUMEN: %1% - + %1 is missing. Please <a href='https://web.archive.org/web/20240304201103/https://citra-emu.org/wiki/dumping-system-archives-and-the-shared-fonts-from-a-3ds-console/'>dump your system archives</a>.<br/>Continuing emulation may result in crashes and bugs. Falta %1. Por favor,<a href='https://web.archive.org/web/20240304201103/https://citra-emu.org/wiki/dumping-system-archives-and-the-shared-fonts-from-a-3ds-console/'>vuelca tus archivos de sistema</a>.<br/>Continuar la emulación puede resultar en cuelgues y errores. - + A system archive Un archivo de sistema - + System Archive Not Found Archivo de Sistema no encontrado - + System Archive Missing Falta un Archivo de Sistema - + Save/load Error Error de guardado/carga - + Fatal Error Error Fatal - + A fatal error occurred. <a href='https://web.archive.org/web/20240228001712/https://community.citra-emu.org/t/how-to-upload-the-log-file/296'>Check the log</a> for details.<br/>Continuing emulation may result in crashes and bugs. Ha ocurrido un error fatal.<a href='https://web.archive.org/web/20240228001712/https://community.citra-emu.org/t/how-to-upload-the-log-file/296'>Mira el log</a>para más detalles.<br/>Continuar la emulación puede resultar en cuelgues y errores. - + Fatal Error encountered Error Fatal encontrado - + Continue Continuar - + Quit Application Cerrar aplicación - + OK Aceptar - + Would you like to exit now? ¿Quiere salir ahora? - + The application is still running. Would you like to stop emulation? La aplicación sigue en ejecución. ¿Quiere parar la emulación? - + Playback Completed Reproducción Completada - + Movie playback completed. Reproducción de película completada. - + Update Available Actualización disponible - + Update %1 for Azahar is available. Would you like to download it? La actualización %1 de Azahar está disponible. ¿Quieres descargarla? - + Primary Window Ventana Primaria - + Secondary Window Ventana Secundaria @@ -5030,42 +5176,42 @@ Would you like to download it? GRenderWindow - + OpenGL not available! ¡OpenGL no disponible! - + OpenGL shared contexts are not supported. Los contextos compartidos de OpenGL no están soportados. - + Error while initializing OpenGL! ¡Error al iniciar OpenGL! - + Your GPU may not support OpenGL, or you do not have the latest graphics driver. Tu GPU, o no soporta OpenGL, o no tienes los últimos drivers de la tarjeta gráfica. - + Error while initializing OpenGL 4.3! ¡Error al iniciar OpenGL 4.3! - + Your GPU may not support OpenGL 4.3, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1 Tu GPU, o no soporta OpenGL 4.3, o no tienes los últimos drivers de la tarjeta gráfica.<br><br>Renderizador GL:<br>%1 - + Error while initializing OpenGL ES 3.2! ¡Error al iniciar OpenGL ES 3.2! - + Your GPU may not support OpenGL ES 3.2, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1 Tu GPU, o no soporta OpenGL ES 3.2, o no tienes los últimos drivers de la tarjeta gráfica.<br><br>Renderizador GL:<br>%1 @@ -5073,180 +5219,185 @@ Would you like to download it? GameList - - + + Compatibility Compatibilidad - - + + Region Región - - + + File type Tipo de Archivo - - + + Size Tamaño - - + + Play time Tiempo de juego - + Favorite Favorito - + Eject Cartridge Expulsar Cartucho - + Insert Cartridge Insertar Cartucho - + Open Abrir - + Application Location Localización de aplicaciones - + Save Data Location Localización de datos de guardado - + Extra Data Location Localización de Datos Extra - + Update Data Location Localización de datos de actualización - + DLC Data Location Localización de datos de DLC - + Texture Dump Location Localización del volcado de texturas - + Custom Texture Location Localización de las texturas personalizadas - + Mods Location Localización de los mods - + Dump RomFS Volcar RomFS - + Disk Shader Cache Caché de sombreador de disco - + Open Shader Cache Location Abrir ubicación de caché de sombreador - + Delete OpenGL Shader Cache Eliminar caché de sombreado de OpenGL - + + Delete Vulkan Shader Cache + Eliminar caché de sombreado de Vulkan + + + Uninstall Desinstalar - + Everything Todo - + Application Aplicación - + Update Actualización - + DLC DLC - + Remove Play Time Data Quitar Datos de Tiempo de Juego - + Create Shortcut Crear atajo - + Add to Desktop Añadir al Escritorio - + Add to Applications Menu Añadir al Menú Aplicación - + Stress Test: App Launch Prueba de estrés: lanzamiento de la aplicación - + Properties Propiedades - - - - + + + + Azahar Azahar - + Are you sure you want to completely uninstall '%1'? This will delete the application if installed, as well as any installed updates or DLC. @@ -5255,64 +5406,64 @@ This will delete the application if installed, as well as any installed updates Ésto eliminará la aplicación si está instalada, así como también las actualizaciones y DLC instaladas. - - + + %1 (Update) %1 (Actualización) - - + + %1 (DLC) %1 (DLC) - + Are you sure you want to uninstall '%1'? ¿Estás seguro de querer desinstalar '%1'? - + Are you sure you want to uninstall the update for '%1'? ¿Estás seguro de querer desinstalar la actualización de '%1'? - + Are you sure you want to uninstall all DLC for '%1'? ¿Estás seguro de querer desinstalar todo el DLC de '%1'? - + Scan Subfolders Escanear subdirectorios - + Remove Application Directory Quitar carpeta de aplicaciones - + Move Up Mover arriba - + Move Down Mover abajo - + Open Directory Location Abrir ubicación del directorio - + Clear Reiniciar - + Name Nombre @@ -5398,7 +5549,7 @@ Screen. GameListPlaceholder - + Double-click to add a new folder to the application list Haz doble click para añadir una nueva carpeta a la lista de aplicaciones @@ -5406,27 +5557,27 @@ Screen. GameListSearchField - + of de - + result resultado - + results resultados - + Filter: Filtro: - + Enter pattern to filter Introduzca un patrón para filtrar @@ -6059,24 +6210,24 @@ Mensaje de depuración: Preparando Sombreadores %1 / %2 - - Loading Shaders %1 / %2 - Cargando Sombreadores %1 / %2 + + Loading %3 %1 / %2 + Cargando %3 %1 / %2 - + Launching... Iniciando... - + Now Loading %1 Cargando %1 - + Estimated Time %1 Tiempo Estimado %1 @@ -7052,17 +7203,17 @@ Puede que haya dejado la sala. Abrir Archivo - + Error Error - + Couldn't load the camera La cámara no se pudo cargar - + Couldn't load %1 No se pudo cargar %1 diff --git a/dist/languages/fi.ts b/dist/languages/fi.ts index dc002099d..73d32dee4 100644 --- a/dist/languages/fi.ts +++ b/dist/languages/fi.ts @@ -322,8 +322,8 @@ Tämä antaa porttikiellon heidän käyttäjänimelleen ja IP-osoitteelleen. - This post-processing effect adjusts audio speed to match emulation speed and helps prevent audio stutter. This however increases audio latency. - Tämä prosessointiefekti säätää äänen nopeuden samaan nopeuteen emulaation kanssa, joka auttaa ääniongelmissa. Tämä kuitenkin lisää äänen viivettä. + <html><head/><body><p>This post-processing effect adjusts audio speed to match emulation speed and helps prevent audio stutter. This however increases audio latency.</p></body></html> + @@ -332,7 +332,7 @@ Tämä antaa porttikiellon heidän käyttäjänimelleen ja IP-osoitteelleen. - Scales audio playback speed to account for drops in emulation framerate. This means that audio will play at full speed even while the application framerate is low. May cause audio desync issues. + <html><head/><body><p>Scales audio playback speed to account for drops in emulation framerate. This means that audio will play at full speed even while the application framerate is low. May cause audio desync issues.</p></body></html> @@ -472,8 +472,8 @@ Tämä antaa porttikiellon heidän käyttäjänimelleen ja IP-osoitteelleen. - Select where the image of the emulated camera comes from. It may be an image or a real camera. - Valitse, mistä emuloitu kamera tulee. Se voi olla kuva tai oikea kamera. + <html><head/><body><p>Select where the image of the emulated camera comes from. It may be an image or a real camera.</p></body></html> + @@ -800,21 +800,31 @@ Would you like to ignore the error and continue? - Force deterministic async operations + <html><head/><body><p>Toggles the unique data console type (Old 3DS ↔ New 3DS) to be able to download the opposite system firmware type from system settings.</p></body></html> - <html><head/><body><p>Forces all async operations to run on the main thread, making them deterministic. Do not enable if you don't know what you are doing.</p></body></html> + Toggle unique data console type - Enable RPC server + Force deterministic async operations + <html><head/><body><p>Forces all async operations to run on the main thread, making them deterministic. Do not enable if you don't know what you are doing.</p></body></html> + + + + + Enable RPC server + + + + <html><head/><body><p>Enables the RPC server on port 45987. This allows remotely reading/writing guest memory, do not enable if you don't know what you are doing.</p></body></html> @@ -1012,176 +1022,186 @@ Would you like to ignore the error and continue? + Use Integer Scaling + + + + + <html><head/><body><p>Use Integer Scaling</p><p>Enforces that the larger screen in all layouts is an integer scale of the 240px height of the original 3DS screen.</p></body></html> + + + + Enable Linear Filtering - + Post-Processing Shader - + Texture Filter - + None Ei mitään - + Anime4K - + Bicubic - + ScaleForce - + xBRZ - + MMPX - + Stereoscopy - + Stereoscopic 3D Mode - + Off - + Side by Side Vierekkäin - + Side by Side Full Width - + Anaglyph - + Interlaced - + Reverse Interlaced - + Depth - + % - + Note: Depth values over 100% are not possible on real hardware and may cause graphical issues - + Eye to Render in Monoscopic Mode - + Left Eye (default) - + Right Eye - + Disable Right Eye Rendering - + <html><head/><body><p>Disable Right Eye Rendering</p><p>Disables rendering the right eye image when not using stereoscopic mode. Greatly improves performance in some applications, but can cause flickering in others.</p></body></html> - + Swap Eyes - + Utility - + <html><head/><body><p>Replace textures with PNG files.</p><p>Textures are loaded from load/textures/[Title ID]/.</p></body></html> - + Use custom textures - + <html><head/><body><p>Dump textures to PNG files.</p><p>Textures are dumped to dump/textures/[Title ID]/.</p></body></html> - + Dump textures - + <html><head/><body><p>Load all custom textures into memory on boot, instead of loading them when the application requires them.</p></body></html> - + Preload custom textures - + <html><head/><body><p>Load custom textures asynchronously with background threads to reduce loading stutter</p></body></html> - + Async custom texture loading @@ -1487,7 +1507,7 @@ Would you like to ignore the error and continue? - VSync prevents the screen from tearing, but some graphics cards have lower performance with VSync enabled. Keep it enabled if you don't notice a performance difference. + <html><head/><body><p>VSync prevents the screen from tearing, but some graphics cards have lower performance with VSync enabled. Keep it enabled if you don't notice a performance difference.</p></body></html> @@ -1496,22 +1516,32 @@ Would you like to ignore the error and continue? Aktivoi V-Sync - + + <html><head/><body><p>When enabled, this setting detects when the refresh rate of the screen is below that of the 3DS, and when it is, disables VSync automatically to avoid emulation speed being forced below 100%.</p></body></html> + + + + + Enable display refresh rate detection + + + + Use global - + Use per-application - + Delay Application Render Thread - + <html><head/><body><p>Delays the emulated application render thread the specified amount of milliseconds every time it submits render commands to the GPU.</p><p>Adjust this feature in the (very few) dynamic framerate applications to fix performance issues.</p></body></html> @@ -1990,170 +2020,243 @@ Would you like to ignore the error and continue? - + Custom Layout - - Swap screens - - - - + Rotate screens upright - + + Swap screens + + + + + Customize layout cycling + + + + Screen Gap - + Large Screen Proportion - + Small Screen Position - + Upper Right - + Middle Right - + Bottom Right (default) - + Upper Left - + Middle Left - + Bottom Left - + Above large screen - + Below large screen - + Background Color - - + + Top Screen - - + + X Position - - - - - - - - - + + + + + + + + - - + + + px - - + + Y Position - - + + Width - - + + Height - - + + Bottom Screen - + <html><head/><body><p>Bottom Screen Opacity %</p></body></html> - + Single Screen Layout - - + + Stretch - - + + Left/Right Padding - - + + Top/Bottom Padding - + Note: These settings affect the Single Screen and Separate Windows layouts + + ConfigureLayoutCycle + + + Configure Layout Cycling + + + + + Screen Layout Cycling Customization + + + + + Select which screen layout options should be cycled with the "Toggle Screen Layout" hotkey + + + + + Use Global Value + + + + + Default + Oletus + + + + Single Screen + Yksittäinen näyttö + + + + Large Screen + Suuri näyttö + + + + Side by Side + Vierekkäin + + + + Separate Windows + + + + + Hybrid + + + + + Custom + + + + + No Layout Selected + + + + + Please select at least one layout option to cycle through. + + + ConfigureMotionTouch - + Configure Motion / Touch Konfiguroi Liike / Kosketus @@ -2181,8 +2284,10 @@ Would you like to ignore the error and continue? - - + + + + Configure Konfiguroi @@ -2212,58 +2317,68 @@ Would you like to ignore the error and continue? - + + Map touchpads on controllers like the DualSense directly to touch + + + + + Use controller touchpad + + + + CemuhookUDP Config CemuhookUDP:n Konfiguraatio - + You may use any Cemuhook compatible UDP input source to provide motion and touch input. Voit käyttää mitä vain Cemuhook-yhteensopivaa UDP-sisääntuloa antaaksesi kosketus- ja liikesisääntulon. - + Server: Palvelin: - + Port: Portti: - + Pad: - + Pad 1 - + Pad 2 - + Pad 3 - + Pad 4 - + Learn More Lisätietoa - - + + Test Testi @@ -2294,57 +2409,68 @@ Would you like to ignore the error and continue? - + + Information Informaatio - + After pressing OK, press a button on the controller whose motion you want to track. - + [press button] - + + After pressing OK, tap the touchpad on the controller you want to track. + + + + + [press touchpad] + + + + Testing Testaus - + Configuring Konfigurointi - + Test Successful Testi Onnistui - + Successfully received data from the server. Tieto saatu palvelimelta onnistuneesti. - + Test Failed Testi Epäonnistui - + 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. Sopivaa tietoa ei voitu vastaanottaa palvelimelta.<br>Varmista, että palvelin on asetettu oikein, ja että osoite ja portti ovat oikeat. - + Azahar - + UDP Test or calibration configuration is in progress.<br>Please wait for them to finish. @@ -2514,7 +2640,7 @@ Would you like to ignore the error and continue? - Compresses the content of CIA files when installed to the emulated SD card. Only affects CIA content which is installed while the setting is enabled. + <html><head/><body><p>Compresses the content of CIA files when installed to the emulated SD card. Only affects CIA content which is installed while the setting is enabled.</p></body></html> @@ -4094,595 +4220,610 @@ Please check your FFmpeg installation used for compilation. GMainWindow - + + Warning + Varoitus + + + + The `azahar` executable is being run directly rather than via the Azahar.app bundle. + +When run this way, the app may be missing certain functionality such as camera emulation. + +It is recommended to instead run Azahar using the `open` command, e.g.: +`open ./Azahar.app` + + + + No Suitable Vulkan Devices Detected - + Vulkan initialization failed during boot.<br/>Your GPU may not support Vulkan 1.1, or you do not have the latest graphics driver. - + Current Artic traffic speed. Higher values indicate bigger transfer loads. - - + + Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a 3DS. Nykyinen emulaationopeus. Arvot yli tai ali 100% osoittavat, että emulaatio on nopeampi tai hitaampi kuin 3DS:än nopeus. - - + + How many frames per second the app is currently displaying. This will vary from app to app and scene to scene. - - + + Time taken to emulate a 3DS frame, not counting framelimiting or v-sync. For full-speed emulation this should be at most 16.67 ms. - + MicroProfile (unavailable) - + Clear Recent Files - + &Continue - + &Pause - + Azahar is running an application TRANSLATORS: This string is shown to the user to explain why Citra needs to prevent the computer from sleeping - - + + Invalid App Format - - + + Your app format is not supported.<br/>Please follow the guides to redump your <a href='https://web.archive.org/web/20240304210021/https://citra-emu.org/wiki/dumping-game-cartridges/'>game cartridges</a> or <a href='https://web.archive.org/web/20240304210011/https://citra-emu.org/wiki/dumping-installed-titles/'>installed titles</a>. - + App Corrupted - + Your app is corrupted. <br/>Please follow the guides to redump your <a href='https://web.archive.org/web/20240304210021/https://citra-emu.org/wiki/dumping-game-cartridges/'>game cartridges</a> or <a href='https://web.archive.org/web/20240304210011/https://citra-emu.org/wiki/dumping-installed-titles/'>installed titles</a>. - + App Encrypted - + Your app is encrypted. <br/><a href='https://azahar-emu.org/blog/game-loading-changes/'>Please check our blog for more info.</a> - + Unsupported App - + GBA Virtual Console is not supported by Azahar. - - + + Artic Server - + Invalid system mode - + New 3DS exclusive applications cannot be loaded without enabling the New 3DS mode. - + Error while loading App! - + An unknown error occurred. Please see the log for more details. - + CIA must be installed before usage CIA pitää asenaa ennen käyttöä - + Before using this CIA, you must install it. Do you want to install it now? Ennen, kun voit käyttää tätä CIA:aa, sinun täytyy asentaa se. Haluatko asentaa sen nyt? - + Quick Load - + Quick Save - - + + Slot %1 - + %2 %3 - + Quick Save - %1 - + Quick Load - %1 - + Slot %1 - %2 %3 - + Error Opening %1 Folder Virhe Avatessa %1 Kansio - - + + Folder does not exist! Kansio ei ole olemassa! - + Remove Play Time Data - + Reset play time? - - - - + + + + Create Shortcut - + Do you want to launch the application in fullscreen? - + Successfully created a shortcut to %1 - + This will create a shortcut to the current AppImage. This may not work well if you update. Continue? - + Failed to create a shortcut to %1 - + Create Icon - + Cannot create icon file. Path "%1" does not exist and cannot be created. - + Dumping... - - + + Cancel Peruuta - - - - - - - - - + + + + + + + + + Azahar - + Could not dump base RomFS. Refer to the log for details. - + Error Opening %1 Virhe avatessa %1 - + Select Directory Valitse hakemisto - + Properties - + The application properties could not be loaded. - + 3DS Executable (%1);;All Files (*.*) %1 is an identifier for the 3DS executable file extensions. - + Load File Lataa tiedosto - - + + Set Up System Files - + <p>Azahar needs console unique data and firmware files from a real console to be able to use some of its features.<br>Such files and data can be set up with the <a href=https://github.com/azahar-emu/ArticSetupTool>Azahar Artic Setup Tool</a><br>Notes:<ul><li><b>This operation will install console unique data to Azahar, do not share your user or nand folders<br>after performing the setup process!</b></li><li>While doing the setup process, Azahar will link to the console running the setup tool. You can unlink the<br>console later from the System tab in the emulator configuration menu.</li><li>Do not go online with both Azahar and your 3DS console at the same time after setting up system files,<br>as it could cause issues.</li><li>Old 3DS setup is needed for the New 3DS setup to work (doing both setup modes is recommended).</li><li>Both setup modes will work regardless of the model of the console running the setup tool.</li></ul><hr></p> - + Enter Azahar Artic Setup Tool address: - + <br>Choose setup mode: - + (ℹ️) Old 3DS setup - - + + Setup is possible. - + (⚠) New 3DS setup - + Old 3DS setup is required first. - + (✅) Old 3DS setup - - + + Setup completed. - + (ℹ️) New 3DS setup - + (✅) New 3DS setup - + The system files for the selected mode are already set up. Reinstall the files anyway? - + Load Files Lataa tiedostoja - + 3DS Installation File (*.cia *.zcia) - - - + + + All Files (*.*) Kaikki tiedostot (*.*) - + Connect to Artic Base - + Enter Artic Base server address: - + %1 has been installed successfully. %1 asennettiin onnistuneesti. - + Unable to open File Tiedostoa ei voitu avata - + Could not open %1 Ei voitu avata %1 - + Installation aborted Asennus keskeytetty - + The installation of %1 was aborted. Please see the log for more details - + Invalid File Sopimaton Tiedosto - + %1 is not a valid CIA %1 ei ole sopiva CIA-tiedosto - + CIA Encrypted - + Your CIA file is encrypted.<br/><a href='https://azahar-emu.org/blog/game-loading-changes/'>Please check our blog for more info.</a> - + Unable to find File - + Could not find %1 - - - - + + + + Z3DS Compression - + Failed to compress some files, check log for details. - + Failed to decompress some files, check log for details. - + All files have been compressed successfully. - + All files have been decompressed successfully. - + Uninstalling '%1'... - + Failed to uninstall '%1'. - + Successfully uninstalled '%1'. - + File not found Tiedostoa ei löytynyt - + File "%1" not found Tiedosto "%1" ei löytynyt. - + Savestates - + Warning: Savestates are NOT a replacement for in-application saves, and are not meant to be reliable. Use at your own risk! - - - + + + Error opening amiibo data file - + A tag is already in use. - + Application is not looking for amiibos. - + Amiibo File (%1);; All Files (*.*) Amiibo tiedosto (%1);; Kaikki tiedostot (*.*) - + Load Amiibo Lataa Amiibo - + Unable to open amiibo file "%1" for reading. - + Record Movie Tallenna Video - + Movie recording cancelled. - - + + Movie Saved - - + + The movie is successfully saved. - + Application will unpause - + The application will be unpaused, and the next frame will be captured. Is this okay? - + Invalid Screenshot Directory - + Cannot create specified screenshot directory. Screenshot path is set back to its default value. - + Could not load video dumper - + FFmpeg could not be loaded. Make sure you have a compatible version installed. To install FFmpeg to Azahar, press Open and select your FFmpeg directory. @@ -4691,264 +4832,264 @@ To view a guide on how to install FFmpeg, press Help. - + Load 3DS ROM Files - + 3DS ROM Files (*.cia *.cci *.3dsx *.cxi *.3ds) - + 3DS Compressed ROM File (*.%1) - + Save 3DS Compressed ROM File - + Select Output 3DS Compressed ROM Folder - + Load 3DS Compressed ROM Files - + 3DS Compressed ROM Files (*.zcia *zcci *z3dsx *zcxi) - + 3DS ROM File (*.%1) - + Save 3DS ROM File - + Select Output 3DS ROM Folder - + Select FFmpeg Directory - + The provided FFmpeg directory is missing %1. Please make sure the correct directory was selected. - + FFmpeg has been sucessfully installed. - + Installation of FFmpeg failed. Check the log file for details. - + Could not start video dumping.<br>Please ensure that the video encoder is configured correctly.<br>Refer to the log for details. - + Recording %1 - + Playing %1 / %2 - + Movie Finished - + (Accessing SharedExtData) - + (Accessing SystemSaveData) - + (Accessing BossExtData) - + (Accessing ExtData) - + (Accessing SaveData) - + MB/s - + KB/s - + Artic Traffic: %1 %2%3 - + Speed: %1% Nopeus: %1% - + Speed: %1% / %2% Nopeus %1% / %2% - + App: %1 FPS - + Frame: %1 ms (GPU: [CMD: %2 ms, SWP: %3 ms], IPC: %4 ms, SVC: %5 ms, Rem: %6 ms) - + Frame: %1 ms Kuvaruutu: %1 ms - + VOLUME: MUTE - + VOLUME: %1% Volume percentage (e.g. 50%) - + %1 is missing. Please <a href='https://web.archive.org/web/20240304201103/https://citra-emu.org/wiki/dumping-system-archives-and-the-shared-fonts-from-a-3ds-console/'>dump your system archives</a>.<br/>Continuing emulation may result in crashes and bugs. - + A system archive - + System Archive Not Found - + System Archive Missing - + Save/load Error - + Fatal Error - + A fatal error occurred. <a href='https://web.archive.org/web/20240228001712/https://community.citra-emu.org/t/how-to-upload-the-log-file/296'>Check the log</a> for details.<br/>Continuing emulation may result in crashes and bugs. - + Fatal Error encountered - + Continue Jatka - + Quit Application - + OK OK - + Would you like to exit now? Haluatko poistua nyt? - + The application is still running. Would you like to stop emulation? - + Playback Completed - + Movie playback completed. - + Update Available - + Update %1 for Azahar is available. Would you like to download it? - + Primary Window - + Secondary Window @@ -5011,42 +5152,42 @@ Would you like to download it? GRenderWindow - + OpenGL not available! - + OpenGL shared contexts are not supported. - + Error while initializing OpenGL! - + Your GPU may not support OpenGL, or you do not have the latest graphics driver. - + Error while initializing OpenGL 4.3! - + Your GPU may not support OpenGL 4.3, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1 - + Error while initializing OpenGL ES 3.2! - + Your GPU may not support OpenGL ES 3.2, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1 @@ -5054,244 +5195,249 @@ Would you like to download it? GameList - - + + Compatibility Yhteensopivuus - - + + Region Alue - - + + File type Tiedoston tyyppi - - + + Size Koko - - + + Play time - + Favorite - + Eject Cartridge - + Insert Cartridge - + Open - + Application Location - + Save Data Location - + Extra Data Location - + Update Data Location - + DLC Data Location - + Texture Dump Location - + Custom Texture Location - + Mods Location - + Dump RomFS - + Disk Shader Cache - + Open Shader Cache Location - + Delete OpenGL Shader Cache - + + Delete Vulkan Shader Cache + + + + Uninstall - + Everything - + Application - + Update - + DLC - + Remove Play Time Data - + Create Shortcut - + Add to Desktop - + Add to Applications Menu - + Stress Test: App Launch - + Properties - - - - + + + + Azahar - + Are you sure you want to completely uninstall '%1'? This will delete the application if installed, as well as any installed updates or DLC. - - + + %1 (Update) - - + + %1 (DLC) - + Are you sure you want to uninstall '%1'? - + Are you sure you want to uninstall the update for '%1'? - + Are you sure you want to uninstall all DLC for '%1'? - + Scan Subfolders - + Remove Application Directory - + Move Up - + Move Down - + Open Directory Location Avaa hakemiston sijainti - + Clear Tyhjennä - + Name Nimi @@ -5377,7 +5523,7 @@ Screen. GameListPlaceholder - + Double-click to add a new folder to the application list @@ -5385,27 +5531,27 @@ Screen. GameListSearchField - + of - + result - + results - + Filter: Suodatin: - + Enter pattern to filter @@ -6027,23 +6173,23 @@ Debug Message: - - Loading Shaders %1 / %2 + + Loading %3 %1 / %2 - + Launching... - + Now Loading %1 - + Estimated Time %1 @@ -7015,17 +7161,17 @@ They may have left the room. Avaa Tiedosto - + Error Virhe - + Couldn't load the camera Kameraa ei voitu ladata - + Couldn't load %1 %1 ei voitu ladata diff --git a/dist/languages/fr.ts b/dist/languages/fr.ts index 292708f03..ce182207b 100644 --- a/dist/languages/fr.ts +++ b/dist/languages/fr.ts @@ -328,8 +328,8 @@ Cela bannira à la fois son nom du forum et son adresse IP. - This post-processing effect adjusts audio speed to match emulation speed and helps prevent audio stutter. This however increases audio latency. - Cet effet de post-traitement ajuste la vitesse audio pour correspondre à la vitesse d'émulation et aide à prévenir les distorsions. Cela augmente cependant la latence du son. + <html><head/><body><p>This post-processing effect adjusts audio speed to match emulation speed and helps prevent audio stutter. This however increases audio latency.</p></body></html> + <html><head/><body><p>Cet effet de post-traitement ajuste la vitesse audio pour correspondre à la vitesse d'émulation et aide à prévenir les distorsions. Cela augmente cependant la latence du son.</p></body></html> @@ -338,8 +338,8 @@ Cela bannira à la fois son nom du forum et son adresse IP. - Scales audio playback speed to account for drops in emulation framerate. This means that audio will play at full speed even while the application framerate is low. May cause audio desync issues. - Adapte la vitesse de lecture de l'audio pour tenir compte des baisses de fréquence d'images de l'émulation. Cela signifie que l'audio sera lu à pleine vitesse même si la fréquence d'images de l'application est faible. Peut entraîner des problèmes de désynchronisation de l'audio. + <html><head/><body><p>Scales audio playback speed to account for drops in emulation framerate. This means that audio will play at full speed even while the application framerate is low. May cause audio desync issues.</p></body></html> + <html><head/><body><p>Adapte la vitesse de lecture de l'audio pour tenir compte des baisses de fréquence d'images de l'émulation. Cela signifie que l'audio sera lu à pleine vitesse même si la fréquence d'images de l'application est faible. Peut entraîner des problèmes de désynchronisation de l'audio.</p></body></html> @@ -478,8 +478,8 @@ Cela bannira à la fois son nom du forum et son adresse IP. - Select where the image of the emulated camera comes from. It may be an image or a real camera. - Choisissez la provenance de l'image de la caméra émulée. Elle peut être une image ou une vraie caméra. + <html><head/><body><p>Select where the image of the emulated camera comes from. It may be an image or a real camera.</p></body></html> + <html><head/><body><p>Choisissez la provenance de l'image de la caméra émulée. Elle peut être une image ou une vraie caméra.</p></body></html> @@ -807,21 +807,31 @@ Souhaitez vous ignorer l'erreur et poursuivre ? + <html><head/><body><p>Toggles the unique data console type (Old 3DS ↔ New 3DS) to be able to download the opposite system firmware type from system settings.</p></body></html> + <html><head/><body><p>Change le type de console des données uniques (Old 3DS ↔ New 3DS) afin de pouvoir télécharger le firmware système opposé depuis les paramètres de la console.</p></body></html> + + + + Toggle unique data console type + Basculer le type de console des données uniques + + + Force deterministic async operations Forcer les opérations déterministes asynchrones - + <html><head/><body><p>Forces all async operations to run on the main thread, making them deterministic. Do not enable if you don't know what you are doing.</p></body></html> <html><head/><body><p>Force toutes les opérations asynchrones à s'exécuter sur le thread principal, ce qui les rend déterministes. Ne l'activez pas si vous ne savez pas ce que vous faites.</p></body></html> - + Enable RPC server Activer le serveur RPC - + <html><head/><body><p>Enables the RPC server on port 45987. This allows remotely reading/writing guest memory, do not enable if you don't know what you are doing.</p></body></html> <html><head/><body><p>Active le serveur RPC sur le port 45987. Cela permet de lire/écrire à distance la mémoire invitée. Ne l'activez pas si vous ne savez pas ce que vous faites.</p></body></html> @@ -1019,176 +1029,186 @@ Souhaitez vous ignorer l'erreur et poursuivre ? + Use Integer Scaling + Utiliser le redimensionnement par nombre entier + + + + <html><head/><body><p>Use Integer Scaling</p><p>Enforces that the larger screen in all layouts is an integer scale of the 240px height of the original 3DS screen.</p></body></html> + <html><head/><body><p>Utiliser le redimensionnement par nombre entier</p><p>Force l'écran le plus large à être redimensionné, dans toutes les dispositions, par un multiple entier des 240px de hauteur de l'écran original de la 3DS.</p></body></html> + + + Enable Linear Filtering Activer le filtrage linéaire - + Post-Processing Shader Nuanceur de post traitement - + Texture Filter Filtrage des textures - + None Aucun - + Anime4K Anime4K - + Bicubic Bicubique - + ScaleForce ScaleForce - + xBRZ xBRZ - + MMPX MMPX - + Stereoscopy Stéréoscopie - + Stereoscopic 3D Mode Mode stéréoscopique 3D - + Off Désactivé - + Side by Side Côte à côte - + Side by Side Full Width Côte à côte largeur maximale - + Anaglyph Anaglyphe - + Interlaced Entrelacé - + Reverse Interlaced Entrelacement inversé - + Depth Profondeur - + % % - + Note: Depth values over 100% are not possible on real hardware and may cause graphical issues Note : Les valeurs de profondeur supérieures à 100 % ne sont pas possibles sur du matériel réel et peuvent entraîner des problèmes graphiques. - + Eye to Render in Monoscopic Mode Œil pour le rendu en mode monoscopique - + Left Eye (default) Œil gauche (par défaut) - + Right Eye Œil droit - + Disable Right Eye Rendering Désactiver le rendu de l'œil droit - + <html><head/><body><p>Disable Right Eye Rendering</p><p>Disables rendering the right eye image when not using stereoscopic mode. Greatly improves performance in some applications, but can cause flickering in others.</p></body></html> <html><head/><body><p>Désactiver le rendu de l'œil droit</p><p>Désactive le rendu de l'œil droit lorsque le mode stéréoscopique n'est pas utilisé. Améliore considérablement les performances dans certaines applications, mais peut provoquer un scintillement dans d'autres.</p></body></html> - + Swap Eyes Intervertir les yeux - + Utility Utilitaires - + <html><head/><body><p>Replace textures with PNG files.</p><p>Textures are loaded from load/textures/[Title ID]/.</p></body></html> <html><head/><body><p>Remplace les textures par des fichiers PNG.</p><p>Les textures sont chargées depuis load/textures/[Title ID]/.</p></body></html> - + Use custom textures Utiliser des textures personnalisées - + <html><head/><body><p>Dump textures to PNG files.</p><p>Textures are dumped to dump/textures/[Title ID]/.</p></body></html> <html><head/><body><p>Extrait les textures en fichiers PNG.</p><p>Les textures sont extraites vers dump/textures/[Title ID]/.</p></body></html> - + Dump textures Exporter les textures - + <html><head/><body><p>Load all custom textures into memory on boot, instead of loading them when the application requires them.</p></body></html> <html><head/><body><p>Charge toutes les textures personnalisées en mémoire au démarrage, au lieu de les charger lorsque l'application en a besoin.</p></body></html> - + Preload custom textures Précharger des textures personnalisées - + <html><head/><body><p>Load custom textures asynchronously with background threads to reduce loading stutter</p></body></html> <html><head><body><p>Chargez les textures personnalisées de manière asynchrone avec des threads d’arrière-plan pour réduire le retard de chargement </p></body></head></html> - + Async custom texture loading Chargement asynchrone des textures personnalisées @@ -1268,7 +1288,7 @@ Souhaitez vous ignorer l'erreur et poursuivre ? Set emulation speed - Définir vitesse d'émulation + Définir la vitesse d'émulation @@ -1445,7 +1465,7 @@ Souhaitez vous ignorer l'erreur et poursuivre ? <html><head/><body><p>Perform presentation on separate threads. Improves performance when using Vulkan in most applications. Adds ~1 frame of input lag.</p></body></html> - <html><head/><body><p>Effectue la présentation sur des threads séparés. Améliore les performances lors de l'utilisation de Vulkan dans la plupart des applications. Rajoute environ 1 image de latence d'entrée.</p></body></html> + <html><head/><body><p>Effectuer la présentation sur des threads séparés. Améliore les performances lors de l’utilisation de Vulkan dans la plupart des applications. Ajoute ~1 image de latence d’entrée.</p></body></html> @@ -1494,8 +1514,8 @@ Souhaitez vous ignorer l'erreur et poursuivre ? - VSync prevents the screen from tearing, but some graphics cards have lower performance with VSync enabled. Keep it enabled if you don't notice a performance difference. - VSync empêche les effets de déchirement de l'image, mais elle réduira la performance de certaines cartes graphiques. Laissez-la activée si vous ne constatez pas de différence. + <html><head/><body><p>VSync prevents the screen from tearing, but some graphics cards have lower performance with VSync enabled. Keep it enabled if you don't notice a performance difference.</p></body></html> + <html><head/><body><p>VSync empêche le déchirement d’image, mais peut réduire les performances sur certaines cartes graphiques. Laissez-la activée si vous ne constatez pas de différence de performances.</p></body></html> @@ -1503,22 +1523,32 @@ Souhaitez vous ignorer l'erreur et poursuivre ? Activer VSync - + + <html><head/><body><p>When enabled, this setting detects when the refresh rate of the screen is below that of the 3DS, and when it is, disables VSync automatically to avoid emulation speed being forced below 100%.</p></body></html> + <html><head/><body><p>Si activée, cette option détecte lorsque le taux de rafraichissement de l'écran est inférieur à celui de la 3DS, et si c'est le cas, elle désactive automatiquement la VSync pour éviter que la vitesse d'émulation soit contrainte d'être en dessous de 100%.</p></body></html> + + + + Enable display refresh rate detection + Activer la détection du taux de rafraichissement de l'écran + + + Use global Utiliser la globale - + Use per-application Utilisation par application - + Delay Application Render Thread Retarder le thread de rendu de l'application : - + <html><head/><body><p>Delays the emulated application render thread the specified amount of milliseconds every time it submits render commands to the GPU.</p><p>Adjust this feature in the (very few) dynamic framerate applications to fix performance issues.</p></body></html> <html><head/><body><p>Délaie le thread de rendu de l'application émulée du nombre de millisecondes spécifié chaque fois qu'il soumet des commandes de rendu au GPU.</p><p> Ajustez cette fonction dans les (très rares) applications à fréquence d'images dynamique pour résoudre les problèmes de performance.</p></body></html> @@ -1997,170 +2027,243 @@ Souhaitez vous ignorer l'erreur et poursuivre ? - + Custom Layout Disposition personnalisée - + + Rotate screens upright + Afficher les écrans à la verticale + + + Swap screens Permuter les écrans - - Rotate screens upright - Rotation des écrans vers le haut + + Customize layout cycling + Personnaliser l'alternance des dispositions - + Screen Gap Écart d'écran - + Large Screen Proportion Proportion du grand écran - + Small Screen Position Proportion du petit écran - + Upper Right En haut à droite - + Middle Right Au milieu à droite - + Bottom Right (default) En bas à droite (défaut) - + Upper Left En haut à gauche - + Middle Left Au milieu à gauche - + Bottom Left En bas à gauche - + Above large screen Au dessus du grand écran - + Below large screen En dessous du grand écran - + Background Color Couleur de fond - - + + Top Screen Écran supérieur - - + + X Position Position X - - - - - - - - - + + + + + + + + - - + + + px px - - + + Y Position Position Y - - + + Width Largeur - - + + Height Hauteur - - + + Bottom Screen Écran inférieur - + <html><head/><body><p>Bottom Screen Opacity %</p></body></html> <html><head/><body><p>Opacité de l'écran inférieur %</p></body></html> - + Single Screen Layout Disposition avec un seul écran - - + + Stretch Étiré - - + + Left/Right Padding Marge Gauche/Droite - - + + Top/Bottom Padding Marge Haut/Bas - + Note: These settings affect the Single Screen and Separate Windows layouts Note : Ces paramètres affectent les dispositions Un seul écran et Fenêtres séparées + + ConfigureLayoutCycle + + + Configure Layout Cycling + Configurer l'alternance des dispositions + + + + Screen Layout Cycling Customization + Personnalisation de l'alternance des dispositions d'écran + + + + Select which screen layout options should be cycled with the "Toggle Screen Layout" hotkey + Sélectionnez les dispositions d’écran qui seront parcourues avec le raccourci « Toggle Screen Layout ». + + + + Use Global Value + Utiliser la valeur globale + + + + Default + Défaut + + + + Single Screen + Un seul écran + + + + Large Screen + Écran large + + + + Side by Side + Côte à côte + + + + Separate Windows + Fenêtres séparées + + + + Hybrid + Écran hybride + + + + Custom + Disposition personnalisée + + + + No Layout Selected + Pas de disposition sélectionnée + + + + Please select at least one layout option to cycle through. + Veuillez sélectionner au moins une option de disposition à alterner. + + ConfigureMotionTouch - + Configure Motion / Touch Configuration Mouvement / Tactile @@ -2188,8 +2291,10 @@ Souhaitez vous ignorer l'erreur et poursuivre ? - - + + + + Configure Configurer @@ -2219,58 +2324,68 @@ Souhaitez vous ignorer l'erreur et poursuivre ? Utiliser l'affectation des boutons : - + + Map touchpads on controllers like the DualSense directly to touch + Affecter les pavés tactiles de manettes comme la DualSense directement vers l'écran tactile + + + + Use controller touchpad + Utiliser le pavé tactile de la manette + + + CemuhookUDP Config Configuration de CemuhookUDP - + You may use any Cemuhook compatible UDP input source to provide motion and touch input. Vous pouvez utiliser n'importe quelle source d'entrée UDP compatible avec Cemuhook pour gérer le signal du mouvement et du tactile. - + Server: Serveur : - + Port: Port : - + Pad: Manette : - + Pad 1 Manette 1 - + Pad 2 Manette 2 - + Pad 3 Manette 3 - + Pad 4 Manette 4 - + Learn More En savoir plus - - + + Test Test @@ -2301,57 +2416,68 @@ Souhaitez vous ignorer l'erreur et poursuivre ? <a href='https://web.archive.org/web/20240301211230/https://citra-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">En savoir plus</span></a> - + + Information Information - + After pressing OK, press a button on the controller whose motion you want to track. Après avoir appuyé sur OK, appuyez sur le bouton de la manette dont vous souhaitez suivre le mouvement. - + [press button] [appuyez sur le bouton] - + + After pressing OK, tap the touchpad on the controller you want to track. + Après avoir appuyé sur OK, appuyez sur le pavé tactile de la manette que vous souhaitez traquer. + + + + [press touchpad] + [appuyez sur le pavé tactile] + + + Testing Test en cours - + Configuring Configuration - + Test Successful Test réussi - + Successfully received data from the server. Données reçues depuis le serveur avec succès. - + Test Failed Échec du test - + 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 depuis le serveur.<br>Vérifiez que le serveur est correctement configuré et que l'adresse et le port sont corrects. - + Azahar Azahar - + UDP Test or calibration configuration is in progress.<br>Please wait for them to finish. Test UDP ou configuration de la calibration en cours.<br>Veuillez attendre qu'ils se terminent. @@ -2521,8 +2647,8 @@ Souhaitez vous ignorer l'erreur et poursuivre ? - Compresses the content of CIA files when installed to the emulated SD card. Only affects CIA content which is installed while the setting is enabled. - Compresse le contenu des fichiers CIA lorsqu'ils sont installés sur la carte SD émulée. N'affecte que le contenu CIA installé lorsque le paramètre est activé. + <html><head/><body><p>Compresses the content of CIA files when installed to the emulated SD card. Only affects CIA content which is installed while the setting is enabled.</p></body></html> + <html><head/><body><p>Compresse le contenu des fichiers CIA lorsqu'ils sont installés sur la carte SD émulée. N'affecte que le contenu CIA installé lorsque le paramètre est activé.</p></body></html> @@ -2555,7 +2681,7 @@ Souhaitez vous ignorer l'erreur et poursuivre ? Use LLE applets (if installed) - Utilisez les applets LLE (si installées) + Utiliser les applets LLE (si installés) @@ -2583,8 +2709,8 @@ les fonctionnalités en ligne (si installés) Apply region free patch to installed applications. - Appliquer des correctifs pour -désactiver les restrictions régionales des applications installées. + Appliquer un correctif pour supprimer les restrictions régionales des + applications installées. @@ -4105,511 +4231,531 @@ Veuillez vérifier votre installation FFmpeg utilisée pour la compilation. GMainWindow - + + Warning + Attention ! + + + + The `azahar` executable is being run directly rather than via the Azahar.app bundle. + +When run this way, the app may be missing certain functionality such as camera emulation. + +It is recommended to instead run Azahar using the `open` command, e.g.: +`open ./Azahar.app` + L’exécutable `azahar` a été démarré directement plutôt qu'à travers le bundle Azahar.app. + +L'application peut manquer de certaines fonctionnalités lorsque démarré de cette façon, comme l'émulation des caméras. + +Il est recommandé de démarrer Azahar en utilisant la commande `open`, par exemple : +`open ./Azahar.app` + + + No Suitable Vulkan Devices Detected Aucun périphérique Vulkan adapté détecté - + Vulkan initialization failed during boot.<br/>Your GPU may not support Vulkan 1.1, or you do not have the latest graphics driver. L'initialisation de Vulkan a échoué au démarrage.<br/>Votre GPU pourrait ne pas prendre en charge Vulkan 1.1, ou vous pourriez ne pas avoir le pilote graphique le plus récent. - + Current Artic traffic speed. Higher values indicate bigger transfer loads. Vitesse actuelle du trafic Artic. Des valeurs plus élevées indiquent des charges de transfert plus importantes. - - + + Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a 3DS. Vitesse actuelle d'émulation. Les valeurs supérieures ou inférieures à 100% indiquent que l'émulation est plus rapide ou plus lente qu'une 3DS. - - + + How many frames per second the app is currently displaying. This will vary from app to app and scene to scene. Nombre d'images par seconde affichées par l'application. Cela varie d'une application à l'autre et d'une scène à l'autre. - - + + Time taken to emulate a 3DS frame, not counting framelimiting or v-sync. For full-speed emulation this should be at most 16.67 ms. Temps nécessaire pour émuler une trame 3DS, sans compter la limitation de trame ou la synchronisation verticale V-Sync. Pour une émulation à pleine vitesse, cela ne devrait pas dépasser 16,67 ms. - + MicroProfile (unavailable) MicroProfile (indisponible) - + Clear Recent Files Effacer les fichiers récents - + &Continue &Continuer - + &Pause &Pause - + Azahar is running an application TRANSLATORS: This string is shown to the user to explain why Citra needs to prevent the computer from sleeping Azahar exécute une application - - + + Invalid App Format Format d'application invalide - - + + Your app format is not supported.<br/>Please follow the guides to redump your <a href='https://web.archive.org/web/20240304210021/https://citra-emu.org/wiki/dumping-game-cartridges/'>game cartridges</a> or <a href='https://web.archive.org/web/20240304210011/https://citra-emu.org/wiki/dumping-installed-titles/'>installed titles</a>. Le format de votre application n'est pas pris en charge.<br/> Veuillez suivre les guides pour extraire à nouveau vos <a href='https://web.archive.org/web/20240304210021/https://citra-emu.org/wiki/dumping-game-cartridges/'>cartouches de jeu</a> ou les <a href='https://web.archive.org/web/20240304210011/https://citra-emu.org/wiki/dumping-installed-titles/'>titres installés</a>. - + App Corrupted Application corrompue - + Your app is corrupted. <br/>Please follow the guides to redump your <a href='https://web.archive.org/web/20240304210021/https://citra-emu.org/wiki/dumping-game-cartridges/'>game cartridges</a> or <a href='https://web.archive.org/web/20240304210011/https://citra-emu.org/wiki/dumping-installed-titles/'>installed titles</a>. Votre application est corrompue. <br/>Veuillez suivre les guides pour récupérer vos <a href='https://web.archive.org/web/20240304210021/https://citra-emu.org/wiki/dumping-game-cartridges/'>cartouches de jeux</a> ou les <a href='https://web.archive.org/web/20240304210011/https://citra-emu.org/wiki/dumping-installed-titles/'>titres installés</a>. - + App Encrypted Application encryptée - + Your app is encrypted. <br/><a href='https://azahar-emu.org/blog/game-loading-changes/'>Please check our blog for more info.</a> Votre application est encryptée. <br/><a href='https://azahar-emu.org/blog/game-loading-changes/'>Consultez notre blog pour plus d'informations.</a> - + Unsupported App Application non supportée - + GBA Virtual Console is not supported by Azahar. La console virtuelle de la GBA n'est pas prise en charge par Azahar. - - + + Artic Server Serveur Artic - + Invalid system mode Mode système invalide. - + New 3DS exclusive applications cannot be loaded without enabling the New 3DS mode. Les applications exclusives New 3DS ne peuvent pas être chargées sans activer le mode New 3DS. - + Error while loading App! Erreur lors du chargement de l'application ! - + An unknown error occurred. Please see the log for more details. Une erreur inconnue s'est produite. Veuillez consulter le journal pour plus de détails. - + CIA must be installed before usage CIA doit être installé avant utilisation - + Before using this CIA, you must install it. Do you want to install it now? Avant d'utiliser ce CIA, vous devez l'installer. Voulez-vous l'installer maintenant ? - + Quick Load Chargement rapide - + Quick Save Sauvegarde rapide - - + + Slot %1 Emplacement %1 - + %2 %3 %2 %3 - + Quick Save - %1 Sauvegarde rapide - %1 - + Quick Load - %1 Chargement rapide - %1 - + Slot %1 - %2 %3 Emplacement %1 - %2 %3 - + Error Opening %1 Folder Erreur lors de l'ouverture du dossier %1 - - + + Folder does not exist! Le répertoire n'existe pas ! - + Remove Play Time Data Retirer les données de temps de jeu ? - + Reset play time? Réinitialiser le temps de jeu ? - - - - + + + + Create Shortcut Créer un raccourci - + Do you want to launch the application in fullscreen? Voulez-vous lancer l'application en plein écran ? - + Successfully created a shortcut to %1 Création réussie d'un raccourci vers %1 - + This will create a shortcut to the current AppImage. This may not work well if you update. Continue? Cela créera un raccourci vers l'AppImage actuelle. Il se peut que cela ne fonctionne pas bien si vous effectuez une mise à jour. Poursuivre ? - + Failed to create a shortcut to %1 Échec de la création d'un raccourci vers %1 - + Create Icon Créer 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 pas être créé. - + Dumping... Extraction... - - + + Cancel Annuler - - - - - - - - - + + + + + + + + + Azahar Azahar - + Could not dump base RomFS. Refer to the log for details. Impossible d'extraire les RomFS de base. Référez-vous aux logs pour plus de détails. - + Error Opening %1 Erreur lors de l'ouverture de %1 - + Select Directory Sélectionner un répertoire - + Properties Propriétés - + The application properties could not be loaded. Les propriétés de l'application n'ont pas pu être chargées. - + 3DS Executable (%1);;All Files (*.*) %1 is an identifier for the 3DS executable file extensions. Exécutable 3DS (%1);;Tous les fichiers (*.*) - + Load File Charger un fichier - - + + Set Up System Files Configurer les fichiers système - + <p>Azahar needs console unique data and firmware files from a real console to be able to use some of its features.<br>Such files and data can be set up with the <a href=https://github.com/azahar-emu/ArticSetupTool>Azahar Artic Setup Tool</a><br>Notes:<ul><li><b>This operation will install console unique data to Azahar, do not share your user or nand folders<br>after performing the setup process!</b></li><li>While doing the setup process, Azahar will link to the console running the setup tool. You can unlink the<br>console later from the System tab in the emulator configuration menu.</li><li>Do not go online with both Azahar and your 3DS console at the same time after setting up system files,<br>as it could cause issues.</li><li>Old 3DS setup is needed for the New 3DS setup to work (doing both setup modes is recommended).</li><li>Both setup modes will work regardless of the model of the console running the setup tool.</li></ul><hr></p> <p>Azahar a besoin des données et des fichiers de firmware propres à une console réelle pour pouvoir utiliser certaines de ses fonctionnalités.<br>Ces fichiers et données peuvent être configurés à l'aide de l'outil <a href=https://github.com/azahar-emu/ArticSetupTool>Azahar Artic Setup Tool.</a><br>Notes :<ul><li><b>Cette opération installera des données uniques à la console Azahar. Ne partagez pas vos dossiers utilisateur ou nand <br>après avoir effectué le processus d'installation !</b></li><li>Pendant le processus d'installation, Azahar se connectera à la console exécutant l'outil d'installation. Vous pourrez ensuite déconnecter la <br>console à partir de l'onglet Système dans le menu de configuration de l'émulateur.</li><li>Ne vous connectez pas à Internet avec Azahar et votre console 3DS en même temps après avoir configuré les fichiers système,<br> car cela pourrait causer des problèmes.</li><li>La configuration de l'ancienne 3DS est nécessaire pour que la configuration de la nouvelle 3DS fonctionne (il est recommandé d'effectuer les deux modes de configuration).</li><li>Les deux modes de configuration fonctionnent quel que soit le modèle de console sur lequel l'outil de configuration est exécuté.</li></ul><hr></p> - + Enter Azahar Artic Setup Tool address: Entrer l'adresse de l'outil de configuration Artic d'Azahar : - + <br>Choose setup mode: <br>Choisissez le mode de configuration : - + (ℹ️) Old 3DS setup (ℹ️) Configuration Old 3DS - - + + Setup is possible. La configuration est possible. - + (⚠) New 3DS setup (⚠) Configuration New 3DS - + Old 3DS setup is required first. La configuration Old 3DS est requise d'abord. - + (✅) Old 3DS setup (✅) Configuration Old 3DS - - + + Setup completed. Configuration terminée. - + (ℹ️) New 3DS setup (ℹ️) Configuration New 3DS - + (✅) New 3DS setup (✅) Configuration New 3DS - + The system files for the selected mode are already set up. Reinstall the files anyway? Les fichiers système pour le mode sélectionné sont déjà configurés. Voulez-vous les réinstaller quand même ? - + Load Files Charger des fichiers - + 3DS Installation File (*.cia *.zcia) Fichier d'installation 3DS (*.cia *.zcia) - - - + + + All Files (*.*) Tous les fichiers (*.*) - + Connect to Artic Base Se connecter à Artic Base - + Enter Artic Base server address: Entrez l'adresse du serveur Artic Base : - + %1 has been installed successfully. %1 a été installé avec succès. - + Unable to open File Impossible d'ouvrir le fichier - + Could not open %1 Impossible d'ouvrir %1 - + Installation aborted Installation annulée - + The installation of %1 was aborted. Please see the log for more details L'installation de %1 a été interrompue. Veuillez consulter les logs pour plus de détails. - + Invalid File Fichier invalide - + %1 is not a valid CIA %1 n'est pas un CIA valide - + CIA Encrypted CIA chiffré - + Your CIA file is encrypted.<br/><a href='https://azahar-emu.org/blog/game-loading-changes/'>Please check our blog for more info.</a> Votre fichier CIA est chiffré.<br/><a href='https://azahar-emu.org/blog/game-loading-changes/'>Consultez notre blog pour plus d'informations.</a> - + Unable to find File Impossible de trouver le fichier - + Could not find %1 Impossible de trouver %1 - - - - + + + + Z3DS Compression Compression Z3DS - + Failed to compress some files, check log for details. Échec de la compression de certains fichiers, vérifiez le log pour plus de détails. - + Failed to decompress some files, check log for details. Échec de la décompression de certains fichiers, vérifiez le log pour plus de détails. - + All files have been compressed successfully. Tous les fichiers ont été compréssé avec succès. - + All files have been decompressed successfully. Tous les fichiers ont été décompréssé avec succès. - + Uninstalling '%1'... Désinstallation de '%1'... - + Failed to uninstall '%1'. Échec de la désinstallation de '%1'. - + Successfully uninstalled '%1'. Désinstallation de '%1' réussie. - + File not found Fichier non trouvé - + File "%1" not found Le fichier "%1" n'a pas été trouvé - + Savestates Points de récupération - + Warning: Savestates are NOT a replacement for in-application saves, and are not meant to be reliable. Use at your own risk! @@ -4618,86 +4764,86 @@ Use at your own risk! À utiliser à vos risques et périls ! - - - + + + Error opening amiibo data file Erreur d'ouverture du fichier de données amiibo - + A tag is already in use. Un tag est déjà en cours d'utilisation. - + Application is not looking for amiibos. L'application ne recherche pas d'amiibos. - + Amiibo File (%1);; All Files (*.*) Fichier Amiibo (%1);; Tous les fichiers (*.*) - + Load Amiibo Charger un Amiibo - + Unable to open amiibo file "%1" for reading. Impossible d'ouvrir le fichier amiibo "%1" pour le lire. - + Record Movie Enregistrer une vidéo - + Movie recording cancelled. Enregistrement de la vidéo annulé. - - + + Movie Saved Vidéo enregistrée - - + + The movie is successfully saved. La vidéo a été enregistrée avec succès. - + Application will unpause L'application sera rétablie. - + The application will be unpaused, and the next frame will be captured. Is this okay? L'application sera rétablie et l'image suivante sera capturée. Cela vous convient-il ? - + Invalid Screenshot Directory Répertoire des captures d'écran invalide - + Cannot create specified screenshot directory. Screenshot path is set back to its default value. Création du répertoire des captures d'écran spécifié impossible. Le chemin d'accès vers les captures d'écran est réinitialisé à sa valeur par défaut. - + Could not load video dumper Impossible de charger le module de capture vidéo. - + FFmpeg could not be loaded. Make sure you have a compatible version installed. To install FFmpeg to Azahar, press Open and select your FFmpeg directory. @@ -4710,265 +4856,265 @@ Pour installer FFmpeg sur Azahar, appuyez sur Ouvrir et sélectionnez votre rép Pour afficher un guide sur l'installation de FFmpeg, appuyez sur Aide. - + Load 3DS ROM Files Charger les fichiers ROM 3DS - + 3DS ROM Files (*.cia *.cci *.3dsx *.cxi *.3ds) - + Fichiers ROM 3DS (*.cia *.cci *.3dsx *.cci *.3ds) - + 3DS Compressed ROM File (*.%1) Fichier ROM compressé 3DS (*.%1) - + Save 3DS Compressed ROM File Enregistrer le fichier ROM compressé 3DS - + Select Output 3DS Compressed ROM Folder Sélectionner le dossier de sortie des fichiers ROM 3DS compressés - + Load 3DS Compressed ROM Files Charger des fichiers ROM 3DS compréssés - + 3DS Compressed ROM Files (*.zcia *zcci *z3dsx *zcxi) Fichiers ROM compressés 3DS (*.zcia *zcci *z3dsx *zcxi) - + 3DS ROM File (*.%1) Fichier ROM 3DS (*.%1) - + Save 3DS ROM File Enregistrer le fichier ROM 3DS - + Select Output 3DS ROM Folder Sélectionner le dossier de sortie des fichiers ROM 3DS - + Select FFmpeg Directory Sélectionnez le répertoire FFmpeg. - + The provided FFmpeg directory is missing %1. Please make sure the correct directory was selected. Le répertoire FFmpeg fourni manque %1. Assurez-vous d'avoir sélectionné le répertoire correct. - + FFmpeg has been sucessfully installed. FFmpeg a été installé avec succès. - + Installation of FFmpeg failed. Check the log file for details. L'installation de FFmpeg a échoué. Consultez le fichier journal pour plus de détails. - + Could not start video dumping.<br>Please ensure that the video encoder is configured correctly.<br>Refer to the log for details. Impossible de lancer le dump vidéo.<br>Veuillez vous assurer que l'encodeur vidéo est configuré correctement.<br>Reportez-vous au logs pour plus de détails. - + Recording %1 Enregistrement %1 - + Playing %1 / %2 Lecture de %1 / %2 - + Movie Finished Vidéo terminée - + (Accessing SharedExtData) (Accès à SharedExtData) - + (Accessing SystemSaveData) (Accès à SystemSaveData) - + (Accessing BossExtData) (Accès à BossExtData) - + (Accessing ExtData) (Accès à ExtData) - + (Accessing SaveData) (Accès à SaveData) - + MB/s Mo/s - + KB/s Ko/s - + Artic Traffic: %1 %2%3 Trafic Artic : %1 %2%3 - + Speed: %1% Vitesse : %1% - + Speed: %1% / %2% Vitesse : %1% / %2% - + App: %1 FPS App: %1 FPS - + Frame: %1 ms (GPU: [CMD: %2 ms, SWP: %3 ms], IPC: %4 ms, SVC: %5 ms, Rem: %6 ms) Frame: %1 ms (CPU: [CMD: %2 ms, SWP: %3 ms], IPC: %4 ms, SVC: %5 ms, Rem: %6 ms) - + Frame: %1 ms Trame : %1 ms - + VOLUME: MUTE VOLUME : MUET - + VOLUME: %1% Volume percentage (e.g. 50%) VOLUME : %1% - + %1 is missing. Please <a href='https://web.archive.org/web/20240304201103/https://citra-emu.org/wiki/dumping-system-archives-and-the-shared-fonts-from-a-3ds-console/'>dump your system archives</a>.<br/>Continuing emulation may result in crashes and bugs. %1 est manquant. Veuillez <a href='https://web.archive.org/web/20240304201103/https://citra-emu.org/wiki/dumping-system-archives-and-the-shared-fonts-from-a-3ds-console/'>vider les archives de votre système</a>. <br/>La poursuite de l'émulation peut entraîner des plantages et des bogues. - + A system archive Une archive système - + System Archive Not Found Archive système non trouvée - + System Archive Missing Archive système absente - + Save/load Error Erreur de sauvegarde/chargement - + Fatal Error Erreur fatale - + A fatal error occurred. <a href='https://web.archive.org/web/20240228001712/https://community.citra-emu.org/t/how-to-upload-the-log-file/296'>Check the log</a> for details.<br/>Continuing emulation may result in crashes and bugs. Une erreur fatale s'est produite. <a href='https://web.archive.org/web/20240228001712/https://community.citra-emu.org/t/how-to-upload-the-log-file/296'>Consultez le journal</a> pour plus de détails.<br/> La poursuite de l'émulation peut entraîner des plantages et des bogues. - + Fatal Error encountered Une erreur fatale s'est produite - + Continue Continuer - + Quit Application Quitter l'application - + OK OK - + Would you like to exit now? Voulez-vous quitter maintenant ? - + The application is still running. Would you like to stop emulation? L'application est toujours en cours d'exécution. Voulez-vous arrêter l'émulation ? - + Playback Completed Lecture terminée - + Movie playback completed. Lecture de la vidéo terminée. - + Update Available Mise à jour disponible - + Update %1 for Azahar is available. Would you like to download it? La mise à jour %1 pour Azahar est disponible. Souhaitez-vous la télécharger ? - + Primary Window Fenêtre principale - + Secondary Window Fenêtre secondaire @@ -5031,42 +5177,42 @@ Souhaitez-vous la télécharger ? GRenderWindow - + OpenGL not available! OpenGL non disponible ! - + OpenGL shared contexts are not supported. Les contextes partagés OpenGL ne sont pas pris en charge. - + 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 ne disposez pas des derniers pilotes graphiques. - + Error while initializing OpenGL 4.3! Erreur lors de l'initialisation d'OpenGL 4.3 ! - + Your GPU may not support OpenGL 4.3, 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.3 ou vous ne disposez pas des derniers pilotes graphiques.<br><br>Moteur de rendu GL :<br>%1 - + Error while initializing OpenGL ES 3.2! Erreur lors de l'initialisation d'OpenGL ES 3.2 ! - + Your GPU may not support OpenGL ES 3.2, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1 Votre GPU pourrait ne pas prendre en charge OpenGL ES 3.2, ou vous pourriez ne pas avoir le pilote graphique le plus récent.<br><br>Moteur de rendu GL :<br>%1 @@ -5074,180 +5220,185 @@ Souhaitez-vous la télécharger ? GameList - - + + Compatibility Compatibilité - - + + Region Région - - + + File type Type de fichier - - + + Size Taille - - + + Play time Temps de jeu - + Favorite Favori - + Eject Cartridge Éjecter Cartouche - + Insert Cartridge Insérer Cartouche - + Open Ouvrir - + Application Location Chemin de l'application - + Save Data Location Chemin des données de sauvegarde - + Extra Data Location Chemin des données additionnelles - + Update Data Location Chemin des données de mise à jour - + DLC Data Location Chemin des données de DLC - + Texture Dump Location Chemin d'extraction de textures - + Custom Texture Location Chemin des textures personnalisées - + Mods Location Emplacement des Mods - + Dump RomFS Extraire RomFS - + Disk Shader Cache Cache de shader de disque - + Open Shader Cache Location Ouvrir l'emplacement du cache de shader - + Delete OpenGL Shader Cache Supprimer le cache de shader OpenGL - + + Delete Vulkan Shader Cache + Supprimer le cache de shader Vulkan + + + Uninstall Désinstaller - + Everything Tout - + Application Application - + Update Mise à jour - + DLC DLC - + Remove Play Time Data Retirer les données de temps de jeu - + Create Shortcut Créer un raccourci - + Add to Desktop Ajouter au bureau - + Add to Applications Menu Ajouter au menu d'applications - + Stress Test: App Launch Stress Test : Lancement d'application - + Properties Propriétés - - - - + + + + Azahar Azahar - + Are you sure you want to completely uninstall '%1'? This will delete the application if installed, as well as any installed updates or DLC. @@ -5256,64 +5407,64 @@ This will delete the application if installed, as well as any installed updates Cela supprimera l'application si elle est installée, ainsi que toutes ses mises à jour et DLCs. - - + + %1 (Update) %1 (Mise à jour) - - + + %1 (DLC) %1 (DLC) - + Are you sure you want to uninstall '%1'? Êtes-vous sûr de vouloir désinstaller '%1' ? - + Are you sure you want to uninstall the update for '%1'? Êtes-vous sûr de vouloir désinstaller la mise à jour de '%1' ? - + Are you sure you want to uninstall all DLC for '%1'? Êtes-vous sûr de vouloir désinstaller le DLC de '%1' ? - + Scan Subfolders Scanner les sous-dossiers - + Remove Application Directory Supprimer le répertoire d'applications - + Move Up Déplacer en haut - + Move Down Déplacer en bas - + Open Directory Location Ouvrir l'emplacement de ce répertoire - + Clear Effacer - + Name Nom @@ -5404,7 +5555,7 @@ de démarrage. GameListPlaceholder - + Double-click to add a new folder to the application list Double-cliquez pour ajouter un nouveau dossier à la liste des applications. @@ -5412,27 +5563,27 @@ de démarrage. GameListSearchField - + of sur - + result résultat - + results résultats - + Filter: Filtre : - + Enter pattern to filter Entrer le motif de filtrage @@ -6065,24 +6216,24 @@ Message de débogage : Préparation des shaders %1 / %2 - - Loading Shaders %1 / %2 - Chargement des shaders %1 / %2 + + Loading %3 %1 / %2 + Chargement %3 %1 / %2 - + Launching... Démarrage... - + Now Loading %1 Chargement en cours %1 - + Estimated Time %1 Durée estimée %1 @@ -7058,17 +7209,17 @@ Il a peut-être quitté la salon. Ouvrir le fichier - + Error Erreur - + Couldn't load the camera Impossible de charger la caméra - + Couldn't load %1 Impossible de charger %1 diff --git a/dist/languages/hu_HU.ts b/dist/languages/hu_HU.ts index 1a522d17f..aaaf6a96a 100644 --- a/dist/languages/hu_HU.ts +++ b/dist/languages/hu_HU.ts @@ -320,8 +320,8 @@ This would ban both their forum username and their IP address. - This post-processing effect adjusts audio speed to match emulation speed and helps prevent audio stutter. This however increases audio latency. - Ez az utófeldolgozási hatás beállítja a hang sebességét, hogy az emuláció sebességével megegyezzen, és segít a hang-akadozás megakadályozásában. Azonban ez megnöveli a hang késleltetését. + <html><head/><body><p>This post-processing effect adjusts audio speed to match emulation speed and helps prevent audio stutter. This however increases audio latency.</p></body></html> + @@ -330,7 +330,7 @@ This would ban both their forum username and their IP address. - Scales audio playback speed to account for drops in emulation framerate. This means that audio will play at full speed even while the application framerate is low. May cause audio desync issues. + <html><head/><body><p>Scales audio playback speed to account for drops in emulation framerate. This means that audio will play at full speed even while the application framerate is low. May cause audio desync issues.</p></body></html> @@ -470,8 +470,8 @@ This would ban both their forum username and their IP address. - Select where the image of the emulated camera comes from. It may be an image or a real camera. - Válaszd ki hogy honnan jön az emulált kamera képe. Lehet egy kép, vagy egy igazi kamera is. + <html><head/><body><p>Select where the image of the emulated camera comes from. It may be an image or a real camera.</p></body></html> + @@ -799,21 +799,31 @@ Szeretnéd figyelmen kívül hagyni a hibát, és folytatod? - Force deterministic async operations + <html><head/><body><p>Toggles the unique data console type (Old 3DS ↔ New 3DS) to be able to download the opposite system firmware type from system settings.</p></body></html> - <html><head/><body><p>Forces all async operations to run on the main thread, making them deterministic. Do not enable if you don't know what you are doing.</p></body></html> + Toggle unique data console type - Enable RPC server + Force deterministic async operations + <html><head/><body><p>Forces all async operations to run on the main thread, making them deterministic. Do not enable if you don't know what you are doing.</p></body></html> + + + + + Enable RPC server + + + + <html><head/><body><p>Enables the RPC server on port 45987. This allows remotely reading/writing guest memory, do not enable if you don't know what you are doing.</p></body></html> @@ -1011,176 +1021,186 @@ Szeretnéd figyelmen kívül hagyni a hibát, és folytatod? + Use Integer Scaling + + + + + <html><head/><body><p>Use Integer Scaling</p><p>Enforces that the larger screen in all layouts is an integer scale of the 240px height of the original 3DS screen.</p></body></html> + + + + Enable Linear Filtering - + Post-Processing Shader - + Texture Filter Textúraszűrés - + None Nincs - + Anime4K Anime4K - + Bicubic Bikubikus - + ScaleForce ScaleForce - + xBRZ xBRZ - + MMPX - + Stereoscopy Sztereoszkópia - + Stereoscopic 3D Mode Sztereoszkópikus 3D mód - + Off Ki - + Side by Side Egymás mellett - + Side by Side Full Width - + Anaglyph Anaglif - + Interlaced - + Reverse Interlaced - + Depth Mélység - + % % - + Note: Depth values over 100% are not possible on real hardware and may cause graphical issues - + Eye to Render in Monoscopic Mode - + Left Eye (default) Bal szem (alapértelmezett) - + Right Eye Jobb szem - + Disable Right Eye Rendering - + <html><head/><body><p>Disable Right Eye Rendering</p><p>Disables rendering the right eye image when not using stereoscopic mode. Greatly improves performance in some applications, but can cause flickering in others.</p></body></html> - + Swap Eyes - + Utility Segédprogramok - + <html><head/><body><p>Replace textures with PNG files.</p><p>Textures are loaded from load/textures/[Title ID]/.</p></body></html> - + Use custom textures - + <html><head/><body><p>Dump textures to PNG files.</p><p>Textures are dumped to dump/textures/[Title ID]/.</p></body></html> - + Dump textures - + <html><head/><body><p>Load all custom textures into memory on boot, instead of loading them when the application requires them.</p></body></html> - + Preload custom textures - + <html><head/><body><p>Load custom textures asynchronously with background threads to reduce loading stutter</p></body></html> - + Async custom texture loading @@ -1486,7 +1506,7 @@ Szeretnéd figyelmen kívül hagyni a hibát, és folytatod? - VSync prevents the screen from tearing, but some graphics cards have lower performance with VSync enabled. Keep it enabled if you don't notice a performance difference. + <html><head/><body><p>VSync prevents the screen from tearing, but some graphics cards have lower performance with VSync enabled. Keep it enabled if you don't notice a performance difference.</p></body></html> @@ -1495,22 +1515,32 @@ Szeretnéd figyelmen kívül hagyni a hibát, és folytatod? VSync engedélyezése - + + <html><head/><body><p>When enabled, this setting detects when the refresh rate of the screen is below that of the 3DS, and when it is, disables VSync automatically to avoid emulation speed being forced below 100%.</p></body></html> + + + + + Enable display refresh rate detection + + + + Use global - + Use per-application - + Delay Application Render Thread - + <html><head/><body><p>Delays the emulated application render thread the specified amount of milliseconds every time it submits render commands to the GPU.</p><p>Adjust this feature in the (very few) dynamic framerate applications to fix performance issues.</p></body></html> @@ -1989,170 +2019,243 @@ Szeretnéd figyelmen kívül hagyni a hibát, és folytatod? - + Custom Layout - - Swap screens - - - - + Rotate screens upright - + + Swap screens + + + + + Customize layout cycling + + + + Screen Gap - + Large Screen Proportion - + Small Screen Position - + Upper Right - + Middle Right - + Bottom Right (default) - + Upper Left - + Middle Left - + Bottom Left - + Above large screen - + Below large screen - + Background Color - - + + Top Screen - - + + X Position - - - - - - - - - + + + + + + + + - - + + + px - - + + Y Position - - + + Width - - + + Height - - + + Bottom Screen - + <html><head/><body><p>Bottom Screen Opacity %</p></body></html> - + Single Screen Layout - - + + Stretch - - + + Left/Right Padding - - + + Top/Bottom Padding - + Note: These settings affect the Single Screen and Separate Windows layouts + + ConfigureLayoutCycle + + + Configure Layout Cycling + + + + + Screen Layout Cycling Customization + + + + + Select which screen layout options should be cycled with the "Toggle Screen Layout" hotkey + + + + + Use Global Value + + + + + Default + Alapértelmezett + + + + Single Screen + Egy Képernyő + + + + Large Screen + Nagy Képernyő + + + + Side by Side + + + + + Separate Windows + Külön ablakok + + + + Hybrid + + + + + Custom + Egyéni + + + + No Layout Selected + + + + + Please select at least one layout option to cycle through. + + + ConfigureMotionTouch - + Configure Motion / Touch @@ -2180,8 +2283,10 @@ Szeretnéd figyelmen kívül hagyni a hibát, és folytatod? - - + + + + Configure Konfigurálás @@ -2211,58 +2316,68 @@ Szeretnéd figyelmen kívül hagyni a hibát, és folytatod? - - CemuhookUDP Config + + Map touchpads on controllers like the DualSense directly to touch - - You may use any Cemuhook compatible UDP input source to provide motion and touch input. + + Use controller touchpad - Server: + CemuhookUDP Config + + + + + You may use any Cemuhook compatible UDP input source to provide motion and touch input. + Server: + + + + Port: Port: - + Pad: - + Pad 1 - + Pad 2 - + Pad 3 - + Pad 4 - + Learn More Tudj meg többet - - + + Test Teszt @@ -2293,57 +2408,68 @@ Szeretnéd figyelmen kívül hagyni a hibát, és folytatod? - + + Information Információ - + After pressing OK, press a button on the controller whose motion you want to track. - + [press button] [nyomj egy gombot] - + + After pressing OK, tap the touchpad on the controller you want to track. + + + + + [press touchpad] + + + + Testing Tesztelés - + Configuring Konfigurálás - + Test Successful Teszt sikeres - + Successfully received data from the server. Az adatok sikeresen beérkeztek a kiszolgálótól. - + Test Failed Teszt sikertelen - + 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. - + Azahar - + UDP Test or calibration configuration is in progress.<br>Please wait for them to finish. @@ -2513,7 +2639,7 @@ Szeretnéd figyelmen kívül hagyni a hibát, és folytatod? - Compresses the content of CIA files when installed to the emulated SD card. Only affects CIA content which is installed while the setting is enabled. + <html><head/><body><p>Compresses the content of CIA files when installed to the emulated SD card. Only affects CIA content which is installed while the setting is enabled.</p></body></html> @@ -4093,595 +4219,610 @@ Please check your FFmpeg installation used for compilation. GMainWindow - + + Warning + + + + + The `azahar` executable is being run directly rather than via the Azahar.app bundle. + +When run this way, the app may be missing certain functionality such as camera emulation. + +It is recommended to instead run Azahar using the `open` command, e.g.: +`open ./Azahar.app` + + + + No Suitable Vulkan Devices Detected - + Vulkan initialization failed during boot.<br/>Your GPU may not support Vulkan 1.1, or you do not have the latest graphics driver. - + Current Artic traffic speed. Higher values indicate bigger transfer loads. - - + + Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a 3DS. Jelenlegi emulációs sebesség. A 100%-nál nagyobb vagy kisebb értékek azt mutatják, hogy az emuláció egy 3DS-nél gyorsabban vagy lassabban fut. - - + + How many frames per second the app is currently displaying. This will vary from app to app and scene to scene. - - + + Time taken to emulate a 3DS frame, not counting framelimiting or v-sync. For full-speed emulation this should be at most 16.67 ms. Mennyi idő szükséges egy 3DS képkocka emulálásához, képkocka-limit vagy V-Syncet leszámítva. Teljes sebességű emulációnál ez maximum 16.67 ms-nek kéne lennie. - + MicroProfile (unavailable) - + Clear Recent Files Legutóbbi fájlok törlése - + &Continue &Folytatás - + &Pause &Szünet - + Azahar is running an application TRANSLATORS: This string is shown to the user to explain why Citra needs to prevent the computer from sleeping - - + + Invalid App Format - - + + Your app format is not supported.<br/>Please follow the guides to redump your <a href='https://web.archive.org/web/20240304210021/https://citra-emu.org/wiki/dumping-game-cartridges/'>game cartridges</a> or <a href='https://web.archive.org/web/20240304210011/https://citra-emu.org/wiki/dumping-installed-titles/'>installed titles</a>. - + App Corrupted - + Your app is corrupted. <br/>Please follow the guides to redump your <a href='https://web.archive.org/web/20240304210021/https://citra-emu.org/wiki/dumping-game-cartridges/'>game cartridges</a> or <a href='https://web.archive.org/web/20240304210011/https://citra-emu.org/wiki/dumping-installed-titles/'>installed titles</a>. - + App Encrypted - + Your app is encrypted. <br/><a href='https://azahar-emu.org/blog/game-loading-changes/'>Please check our blog for more info.</a> - + Unsupported App - + GBA Virtual Console is not supported by Azahar. - - + + Artic Server - + Invalid system mode - + New 3DS exclusive applications cannot be loaded without enabling the New 3DS mode. - + Error while loading App! - + An unknown error occurred. Please see the log for more details. - + CIA must be installed before usage - + Before using this CIA, you must install it. Do you want to install it now? - + Quick Load - + Quick Save - - + + Slot %1 Foglalat %1 - + %2 %3 - + Quick Save - %1 - + Quick Load - %1 - + Slot %1 - %2 %3 Foglalat %1 - %2 %3 - + Error Opening %1 Folder Hiba %1 Mappa Megnyitásában - - + + Folder does not exist! A mappa nem létezik! - + Remove Play Time Data - + Reset play time? - - - - + + + + Create Shortcut - + Do you want to launch the application in fullscreen? - + Successfully created a shortcut to %1 - + This will create a shortcut to the current AppImage. This may not work well if you update. Continue? - + Failed to create a shortcut to %1 - + Create Icon - + Cannot create icon file. Path "%1" does not exist and cannot be created. - + Dumping... Kimentés... - - + + Cancel Mégse - - - - - - - - - + + + + + + + + + Azahar - + Could not dump base RomFS. Refer to the log for details. - + Error Opening %1 Hiba Indulás %1 - + Select Directory Könyvtár Kiválasztása - + Properties Tulajdonságok - + The application properties could not be loaded. - + 3DS Executable (%1);;All Files (*.*) %1 is an identifier for the 3DS executable file extensions. 3DS állományok (%1);;Minden fájl (*.*) - + Load File Fájl Betöltése - - + + Set Up System Files - + <p>Azahar needs console unique data and firmware files from a real console to be able to use some of its features.<br>Such files and data can be set up with the <a href=https://github.com/azahar-emu/ArticSetupTool>Azahar Artic Setup Tool</a><br>Notes:<ul><li><b>This operation will install console unique data to Azahar, do not share your user or nand folders<br>after performing the setup process!</b></li><li>While doing the setup process, Azahar will link to the console running the setup tool. You can unlink the<br>console later from the System tab in the emulator configuration menu.</li><li>Do not go online with both Azahar and your 3DS console at the same time after setting up system files,<br>as it could cause issues.</li><li>Old 3DS setup is needed for the New 3DS setup to work (doing both setup modes is recommended).</li><li>Both setup modes will work regardless of the model of the console running the setup tool.</li></ul><hr></p> - + Enter Azahar Artic Setup Tool address: - + <br>Choose setup mode: - + (ℹ️) Old 3DS setup - - + + Setup is possible. - + (⚠) New 3DS setup - + Old 3DS setup is required first. - + (✅) Old 3DS setup - - + + Setup completed. - + (ℹ️) New 3DS setup - + (✅) New 3DS setup - + The system files for the selected mode are already set up. Reinstall the files anyway? - + Load Files Fájlok Betöltése - + 3DS Installation File (*.cia *.zcia) - - - + + + All Files (*.*) Minden fájl (*.*) - + Connect to Artic Base - + Enter Artic Base server address: - + %1 has been installed successfully. %1 sikeresen fel lett telepítve. - + Unable to open File A fájl megnyitása sikertelen - + Could not open %1 Nem lehet megnyitni: %1 - + Installation aborted Telepítés megszakítva - + The installation of %1 was aborted. Please see the log for more details %1 telepítése meg lett szakítva. Kérjük olvasd el a naplót több részletért. - + Invalid File Ismeretlen Fájl - + %1 is not a valid CIA %1 nem érvényes CIA - + CIA Encrypted - + Your CIA file is encrypted.<br/><a href='https://azahar-emu.org/blog/game-loading-changes/'>Please check our blog for more info.</a> - + Unable to find File A fájl nem található - + Could not find %1 %1 nem található - - - - + + + + Z3DS Compression - + Failed to compress some files, check log for details. - + Failed to decompress some files, check log for details. - + All files have been compressed successfully. - + All files have been decompressed successfully. - + Uninstalling '%1'... '%1' eltávolítása... - + Failed to uninstall '%1'. '%1' eltávolítása sikertelen. - + Successfully uninstalled '%1'. '%1' sikeresen eltávolítva. - + File not found A fájl nem található - + File "%1" not found Fájl "%1" nem található - + Savestates - + Warning: Savestates are NOT a replacement for in-application saves, and are not meant to be reliable. Use at your own risk! - - - + + + Error opening amiibo data file - + A tag is already in use. - + Application is not looking for amiibos. - + Amiibo File (%1);; All Files (*.*) Amiibo fájl (%1);; Minden fájl (*.*) - + Load Amiibo Amiibo betöltése - + Unable to open amiibo file "%1" for reading. - + Record Movie Film felvétele - + Movie recording cancelled. Filmfelvétel megszakítva. - - + + Movie Saved Film mentve - - + + The movie is successfully saved. A film sikeresen mentve. - + Application will unpause - + The application will be unpaused, and the next frame will be captured. Is this okay? - + Invalid Screenshot Directory - + Cannot create specified screenshot directory. Screenshot path is set back to its default value. - + Could not load video dumper - + FFmpeg could not be loaded. Make sure you have a compatible version installed. To install FFmpeg to Azahar, press Open and select your FFmpeg directory. @@ -4690,264 +4831,264 @@ To view a guide on how to install FFmpeg, press Help. - + Load 3DS ROM Files - + 3DS ROM Files (*.cia *.cci *.3dsx *.cxi *.3ds) - + 3DS Compressed ROM File (*.%1) - + Save 3DS Compressed ROM File - + Select Output 3DS Compressed ROM Folder - + Load 3DS Compressed ROM Files - + 3DS Compressed ROM Files (*.zcia *zcci *z3dsx *zcxi) - + 3DS ROM File (*.%1) - + Save 3DS ROM File - + Select Output 3DS ROM Folder - + Select FFmpeg Directory FFmpeg könyvtár kiválasztása - + The provided FFmpeg directory is missing %1. Please make sure the correct directory was selected. - + FFmpeg has been sucessfully installed. FFmpeg sikeresen telepítve. - + Installation of FFmpeg failed. Check the log file for details. - + Could not start video dumping.<br>Please ensure that the video encoder is configured correctly.<br>Refer to the log for details. - + Recording %1 Felvétel %1 - + Playing %1 / %2 Lejátszás %1 / %2 - + Movie Finished Film befejezve - + (Accessing SharedExtData) - + (Accessing SystemSaveData) - + (Accessing BossExtData) - + (Accessing ExtData) - + (Accessing SaveData) - + MB/s - + KB/s - + Artic Traffic: %1 %2%3 - + Speed: %1% Sebesség: %1% - + Speed: %1% / %2% Sebesség: %1% / %2% - + App: %1 FPS - + Frame: %1 ms (GPU: [CMD: %2 ms, SWP: %3 ms], IPC: %4 ms, SVC: %5 ms, Rem: %6 ms) - + Frame: %1 ms Képkocka: %1 ms - + VOLUME: MUTE HANGERŐ: NÉMÍTVA - + VOLUME: %1% Volume percentage (e.g. 50%) HANGERŐ: %1% - + %1 is missing. Please <a href='https://web.archive.org/web/20240304201103/https://citra-emu.org/wiki/dumping-system-archives-and-the-shared-fonts-from-a-3ds-console/'>dump your system archives</a>.<br/>Continuing emulation may result in crashes and bugs. - + A system archive Egy rendszerarchívum - + System Archive Not Found Rendszerarchívum Nem Található - + System Archive Missing - + Save/load Error Mentési/betöltési hiba - + Fatal Error Kritikus Hiba - + A fatal error occurred. <a href='https://web.archive.org/web/20240228001712/https://community.citra-emu.org/t/how-to-upload-the-log-file/296'>Check the log</a> for details.<br/>Continuing emulation may result in crashes and bugs. - + Fatal Error encountered Végzetes hiba lépett fel - + Continue Folytatás - + Quit Application - + OK OK - + Would you like to exit now? Szeretnél most kilépni? - + The application is still running. Would you like to stop emulation? - + Playback Completed - + Movie playback completed. - + Update Available - + Update %1 for Azahar is available. Would you like to download it? - + Primary Window Elsődleges ablak - + Secondary Window Másodlagos ablak @@ -5010,42 +5151,42 @@ Would you like to download it? GRenderWindow - + OpenGL not available! OpenGL nem elérhető! - + OpenGL shared contexts are not supported. - + Error while initializing OpenGL! Hiba történt az OpenGL inicializálásakor! - + Your GPU may not support OpenGL, or you do not have the latest graphics driver. - + Error while initializing OpenGL 4.3! Hiba történt az OpenGL 4.3 inicializálásakor! - + Your GPU may not support OpenGL 4.3, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1 - + Error while initializing OpenGL ES 3.2! Hiba történt az OpenGL ES 3.2 inicializálásakor! - + Your GPU may not support OpenGL ES 3.2, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1 @@ -5053,244 +5194,249 @@ Would you like to download it? GameList - - + + Compatibility Kompatibilitás - - + + Region Régió - - + + File type Fájltípus - - + + Size Méret - - + + Play time - + Favorite - + Eject Cartridge - + Insert Cartridge - + Open Megnyitás - + Application Location - + Save Data Location - + Extra Data Location - + Update Data Location - + DLC Data Location - + Texture Dump Location - + Custom Texture Location - + Mods Location - + Dump RomFS RomFS kimentése - + Disk Shader Cache Lemez árnyékoló-gyorsítótár - + Open Shader Cache Location - + Delete OpenGL Shader Cache OpenGL árnyékoló gyorsítótár törlése - + + Delete Vulkan Shader Cache + + + + Uninstall Eltávolítás - + Everything Minden - + Application - + Update Frissítés - + DLC DLC - + Remove Play Time Data - + Create Shortcut - + Add to Desktop - + Add to Applications Menu - + Stress Test: App Launch - + Properties Tulajdonságok - - - - + + + + Azahar - + Are you sure you want to completely uninstall '%1'? This will delete the application if installed, as well as any installed updates or DLC. - - + + %1 (Update) %1 (frissítés) - - + + %1 (DLC) %1 (DLC) - + Are you sure you want to uninstall '%1'? Biztosan törölni szeretnéd: '%1'? - + Are you sure you want to uninstall the update for '%1'? Biztosan törölni szeretnéd a(z) '%1' frissítését? - + Are you sure you want to uninstall all DLC for '%1'? Biztosan törölni szeretnéd a(z) '%1' összes DLC-jét? - + Scan Subfolders Almappák szkennelése - + Remove Application Directory - + Move Up Feljebb mozgatás - + Move Down Lejjebb mozgatás - + Open Directory Location - + Clear Törlés - + Name Név @@ -5376,7 +5522,7 @@ Screen. GameListPlaceholder - + Double-click to add a new folder to the application list @@ -5384,27 +5530,27 @@ Screen. GameListSearchField - + of - + result eredmény - + results eredmény - + Filter: Szürő: - + Enter pattern to filter Adj meg egy mintát a szűréshez @@ -6036,24 +6182,24 @@ Debug Message: Árnyékolók előkészítése %1 / %2 - - Loading Shaders %1 / %2 - Árnyékolók betöltése %1 / %2 + + Loading %3 %1 / %2 + - + Launching... Indítás... - + Now Loading %1 Betöltés %1 - + Estimated Time %1 Hátralévő idő %1 @@ -7025,17 +7171,17 @@ They may have left the room. Fájl Megnyitása - + Error Hiba - + Couldn't load the camera Nem lehet a kamerát betölteni - + Couldn't load %1 Nem lehet betölteni: %1 diff --git a/dist/languages/id.ts b/dist/languages/id.ts index 5db5ff73e..ba4a8392b 100644 --- a/dist/languages/id.ts +++ b/dist/languages/id.ts @@ -322,8 +322,8 @@ Ini akan mem-banned nama pengguna dan alamat IP mereka - This post-processing effect adjusts audio speed to match emulation speed and helps prevent audio stutter. This however increases audio latency. - Efek pasca-pemrosesan ini dilakukan untuk menyesuaikan kecepatan audio agar sesuai dengan kecepatan emulasi dan mencegah terjadinya audio stutter. Namun proses ini meningkatkan latensi audio. + <html><head/><body><p>This post-processing effect adjusts audio speed to match emulation speed and helps prevent audio stutter. This however increases audio latency.</p></body></html> + @@ -332,7 +332,7 @@ Ini akan mem-banned nama pengguna dan alamat IP mereka - Scales audio playback speed to account for drops in emulation framerate. This means that audio will play at full speed even while the application framerate is low. May cause audio desync issues. + <html><head/><body><p>Scales audio playback speed to account for drops in emulation framerate. This means that audio will play at full speed even while the application framerate is low. May cause audio desync issues.</p></body></html> @@ -472,8 +472,8 @@ Ini akan mem-banned nama pengguna dan alamat IP mereka - Select where the image of the emulated camera comes from. It may be an image or a real camera. - Pilih di mana gambar dari kamera yang di emulasi datang berasal. Bisa dari gambar atau kamera asli. + <html><head/><body><p>Select where the image of the emulated camera comes from. It may be an image or a real camera.</p></body></html> + @@ -801,21 +801,31 @@ Apakah Anda ingin mengabaikan kesalahan dan melanjutkan? - Force deterministic async operations + <html><head/><body><p>Toggles the unique data console type (Old 3DS ↔ New 3DS) to be able to download the opposite system firmware type from system settings.</p></body></html> - <html><head/><body><p>Forces all async operations to run on the main thread, making them deterministic. Do not enable if you don't know what you are doing.</p></body></html> + Toggle unique data console type - Enable RPC server + Force deterministic async operations + <html><head/><body><p>Forces all async operations to run on the main thread, making them deterministic. Do not enable if you don't know what you are doing.</p></body></html> + + + + + Enable RPC server + + + + <html><head/><body><p>Enables the RPC server on port 45987. This allows remotely reading/writing guest memory, do not enable if you don't know what you are doing.</p></body></html> @@ -1013,176 +1023,186 @@ Apakah Anda ingin mengabaikan kesalahan dan melanjutkan? + Use Integer Scaling + + + + + <html><head/><body><p>Use Integer Scaling</p><p>Enforces that the larger screen in all layouts is an integer scale of the 240px height of the original 3DS screen.</p></body></html> + + + + Enable Linear Filtering - + Post-Processing Shader - + Texture Filter - + None - + Anime4K - + Bicubic - + ScaleForce - + xBRZ - + MMPX - + Stereoscopy - + Stereoscopic 3D Mode - + Off - + Side by Side Bersebelahan - + Side by Side Full Width - + Anaglyph - + Interlaced - + Reverse Interlaced - + Depth - + % - + Note: Depth values over 100% are not possible on real hardware and may cause graphical issues - + Eye to Render in Monoscopic Mode - + Left Eye (default) - + Right Eye - + Disable Right Eye Rendering - + <html><head/><body><p>Disable Right Eye Rendering</p><p>Disables rendering the right eye image when not using stereoscopic mode. Greatly improves performance in some applications, but can cause flickering in others.</p></body></html> - + Swap Eyes - + Utility - + <html><head/><body><p>Replace textures with PNG files.</p><p>Textures are loaded from load/textures/[Title ID]/.</p></body></html> - + Use custom textures - + <html><head/><body><p>Dump textures to PNG files.</p><p>Textures are dumped to dump/textures/[Title ID]/.</p></body></html> - + Dump textures - + <html><head/><body><p>Load all custom textures into memory on boot, instead of loading them when the application requires them.</p></body></html> - + Preload custom textures - + <html><head/><body><p>Load custom textures asynchronously with background threads to reduce loading stutter</p></body></html> - + Async custom texture loading @@ -1488,8 +1508,8 @@ Apakah Anda ingin mengabaikan kesalahan dan melanjutkan? - VSync prevents the screen from tearing, but some graphics cards have lower performance with VSync enabled. Keep it enabled if you don't notice a performance difference. - VSync mencegah layar dari "robekan", tetapi beberapa kartu grafis mempunyai performa yang lebih rendah ketika VSync dinyalakan. Biarkan VSync menyala jika kamu tidak merasa adanya perbedaan pada performa. + <html><head/><body><p>VSync prevents the screen from tearing, but some graphics cards have lower performance with VSync enabled. Keep it enabled if you don't notice a performance difference.</p></body></html> + @@ -1497,22 +1517,32 @@ Apakah Anda ingin mengabaikan kesalahan dan melanjutkan? Aktifkan VSync - + + <html><head/><body><p>When enabled, this setting detects when the refresh rate of the screen is below that of the 3DS, and when it is, disables VSync automatically to avoid emulation speed being forced below 100%.</p></body></html> + + + + + Enable display refresh rate detection + + + + Use global - + Use per-application - + Delay Application Render Thread - + <html><head/><body><p>Delays the emulated application render thread the specified amount of milliseconds every time it submits render commands to the GPU.</p><p>Adjust this feature in the (very few) dynamic framerate applications to fix performance issues.</p></body></html> @@ -1991,170 +2021,243 @@ Apakah Anda ingin mengabaikan kesalahan dan melanjutkan? - + Custom Layout - - Swap screens - - - - + Rotate screens upright - + + Swap screens + + + + + Customize layout cycling + + + + Screen Gap - + Large Screen Proportion - + Small Screen Position - + Upper Right - + Middle Right - + Bottom Right (default) - + Upper Left - + Middle Left - + Bottom Left - + Above large screen - + Below large screen - + Background Color - - + + Top Screen - - + + X Position - - - - - - - - - + + + + + + + + - - + + + px - - + + Y Position - - + + Width - - + + Height - - + + Bottom Screen - + <html><head/><body><p>Bottom Screen Opacity %</p></body></html> - + Single Screen Layout - - + + Stretch - - + + Left/Right Padding - - + + Top/Bottom Padding - + Note: These settings affect the Single Screen and Separate Windows layouts + + ConfigureLayoutCycle + + + Configure Layout Cycling + + + + + Screen Layout Cycling Customization + + + + + Select which screen layout options should be cycled with the "Toggle Screen Layout" hotkey + + + + + Use Global Value + + + + + Default + Default + + + + Single Screen + Layar Tunggal + + + + Large Screen + Layar Besar + + + + Side by Side + Bersebelahan + + + + Separate Windows + + + + + Hybrid + + + + + Custom + Custom + + + + No Layout Selected + + + + + Please select at least one layout option to cycle through. + + + ConfigureMotionTouch - + Configure Motion / Touch Atur Motion/Touch @@ -2182,8 +2285,10 @@ Apakah Anda ingin mengabaikan kesalahan dan melanjutkan? - - + + + + Configure Pengaturan @@ -2213,58 +2318,68 @@ Apakah Anda ingin mengabaikan kesalahan dan melanjutkan? - + + Map touchpads on controllers like the DualSense directly to touch + + + + + Use controller touchpad + + + + CemuhookUDP Config Pengaturan CemuhookUDP - + You may use any Cemuhook compatible UDP input source to provide motion and touch input. Kamu dapat menggunakan Cemuhook apa saja yang cocok dengan sumber input UDP untuk menyediakan input motion dan touch. - + Server: Server - + Port: Port: - + Pad: Pad: - + Pad 1 Pad 1 - + Pad 2 Pad 2 - + Pad 3 Pad 3 - + Pad 4 Pad 4 - + Learn More Pelajari Lebih Banyak - - + + Test Tes @@ -2295,57 +2410,68 @@ Apakah Anda ingin mengabaikan kesalahan dan melanjutkan? - + + Information Informasi - + After pressing OK, press a button on the controller whose motion you want to track. - + [press button] - + + After pressing OK, tap the touchpad on the controller you want to track. + + + + + [press touchpad] + + + + Testing Pengujian - + Configuring Mengatur - + Test Successful Pengujian Berhasil - + Successfully received data from the server. Berhasil Menerima Data Dari Server. - + Test Failed Pengujian 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 bisa menerima data valid dari server <br>Tolong pastikan bahwa server telah di atur dengan benar dan alamat serta port-nya sudah benar. - + Azahar - + UDP Test or calibration configuration is in progress.<br>Please wait for them to finish. Pengaturan pengujian atau penyesuaian UDP sedang dalam proses.<br>Tolong tunggu sampai selesai. @@ -2515,7 +2641,7 @@ Apakah Anda ingin mengabaikan kesalahan dan melanjutkan? - Compresses the content of CIA files when installed to the emulated SD card. Only affects CIA content which is installed while the setting is enabled. + <html><head/><body><p>Compresses the content of CIA files when installed to the emulated SD card. Only affects CIA content which is installed while the setting is enabled.</p></body></html> @@ -4095,595 +4221,610 @@ Please check your FFmpeg installation used for compilation. GMainWindow - + + Warning + Peringatan + + + + The `azahar` executable is being run directly rather than via the Azahar.app bundle. + +When run this way, the app may be missing certain functionality such as camera emulation. + +It is recommended to instead run Azahar using the `open` command, e.g.: +`open ./Azahar.app` + + + + No Suitable Vulkan Devices Detected - + Vulkan initialization failed during boot.<br/>Your GPU may not support Vulkan 1.1, or you do not have the latest graphics driver. - + Current Artic traffic speed. Higher values indicate bigger transfer loads. - - + + Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a 3DS. Kecepatan emulasi saat ini. Nilai yang lebih tinggi atau lebih rendah dari 100% menunjukan emulasi berjalan lebih cepat atau lebih lambat dari 3DS. - - + + How many frames per second the app is currently displaying. This will vary from app to app and scene to scene. - - + + Time taken to emulate a 3DS frame, not counting framelimiting or v-sync. For full-speed emulation this should be at most 16.67 ms. Waktu yang dibutuhkan untuk mengemulasi frame 3DS, tidak menghitung pembatasan frame atau v-sync. setidaknya emulasi yang tergolong kecepatan penuh harus berada setidaknya pada 16.67 ms. - + MicroProfile (unavailable) - + Clear Recent Files Bersihkan Berkas File Terbaru - + &Continue - + &Pause - + Azahar is running an application TRANSLATORS: This string is shown to the user to explain why Citra needs to prevent the computer from sleeping - - + + Invalid App Format - - + + Your app format is not supported.<br/>Please follow the guides to redump your <a href='https://web.archive.org/web/20240304210021/https://citra-emu.org/wiki/dumping-game-cartridges/'>game cartridges</a> or <a href='https://web.archive.org/web/20240304210011/https://citra-emu.org/wiki/dumping-installed-titles/'>installed titles</a>. - + App Corrupted - + Your app is corrupted. <br/>Please follow the guides to redump your <a href='https://web.archive.org/web/20240304210021/https://citra-emu.org/wiki/dumping-game-cartridges/'>game cartridges</a> or <a href='https://web.archive.org/web/20240304210011/https://citra-emu.org/wiki/dumping-installed-titles/'>installed titles</a>. - + App Encrypted - + Your app is encrypted. <br/><a href='https://azahar-emu.org/blog/game-loading-changes/'>Please check our blog for more info.</a> - + Unsupported App - + GBA Virtual Console is not supported by Azahar. - - + + Artic Server - + Invalid system mode - + New 3DS exclusive applications cannot be loaded without enabling the New 3DS mode. - + Error while loading App! - + An unknown error occurred. Please see the log for more details. - + CIA must be installed before usage CIA harus di install terlebih dahulu sebelum bisa di gunakan - + Before using this CIA, you must install it. Do you want to install it now? Sebelum memakai CIA ini kau harus memasangnya terlebih dahulu. Apa anda ingin menginstallnya sekarang? - + Quick Load - + Quick Save - - + + Slot %1 - + %2 %3 - + Quick Save - %1 - + Quick Load - %1 - + Slot %1 - %2 %3 - + Error Opening %1 Folder Kesalahan Dalam Membuka Folder %1 - - + + Folder does not exist! Folder tidak ada! - + Remove Play Time Data - + Reset play time? - - - - + + + + Create Shortcut - + Do you want to launch the application in fullscreen? - + Successfully created a shortcut to %1 - + This will create a shortcut to the current AppImage. This may not work well if you update. Continue? - + Failed to create a shortcut to %1 - + Create Icon - + Cannot create icon file. Path "%1" does not exist and cannot be created. - + Dumping... - - + + Cancel Batal - - - - - - - - - + + + + + + + + + Azahar - + Could not dump base RomFS. Refer to the log for details. - + Error Opening %1 Kesalahan Dalam Membuka %1 - + Select Directory Pilih Direktori - + Properties Properti - + The application properties could not be loaded. - + 3DS Executable (%1);;All Files (*.*) %1 is an identifier for the 3DS executable file extensions. - + Load File Muat File - - + + Set Up System Files - + <p>Azahar needs console unique data and firmware files from a real console to be able to use some of its features.<br>Such files and data can be set up with the <a href=https://github.com/azahar-emu/ArticSetupTool>Azahar Artic Setup Tool</a><br>Notes:<ul><li><b>This operation will install console unique data to Azahar, do not share your user or nand folders<br>after performing the setup process!</b></li><li>While doing the setup process, Azahar will link to the console running the setup tool. You can unlink the<br>console later from the System tab in the emulator configuration menu.</li><li>Do not go online with both Azahar and your 3DS console at the same time after setting up system files,<br>as it could cause issues.</li><li>Old 3DS setup is needed for the New 3DS setup to work (doing both setup modes is recommended).</li><li>Both setup modes will work regardless of the model of the console running the setup tool.</li></ul><hr></p> - + Enter Azahar Artic Setup Tool address: - + <br>Choose setup mode: - + (ℹ️) Old 3DS setup - - + + Setup is possible. - + (⚠) New 3DS setup - + Old 3DS setup is required first. - + (✅) Old 3DS setup - - + + Setup completed. - + (ℹ️) New 3DS setup - + (✅) New 3DS setup - + The system files for the selected mode are already set up. Reinstall the files anyway? - + Load Files Muat berkas - + 3DS Installation File (*.cia *.zcia) - - - + + + All Files (*.*) Semua File (*.*) - + Connect to Artic Base - + Enter Artic Base server address: - + %1 has been installed successfully. %1 telah terinstall. - + Unable to open File Tidak dapat membuka File - + Could not open %1 Tidak dapat membuka %1 - + Installation aborted Instalasi dibatalkan - + The installation of %1 was aborted. Please see the log for more details Instalasi %1 dibatalkan. Silahkan lihat file log untuk info lebih lanjut. - + Invalid File File yang tidak valid - + %1 is not a valid CIA %1 bukan CIA yang valid - + CIA Encrypted - + Your CIA file is encrypted.<br/><a href='https://azahar-emu.org/blog/game-loading-changes/'>Please check our blog for more info.</a> - + Unable to find File - + Could not find %1 - - - - + + + + Z3DS Compression - + Failed to compress some files, check log for details. - + Failed to decompress some files, check log for details. - + All files have been compressed successfully. - + All files have been decompressed successfully. - + Uninstalling '%1'... Mencopot Pemasangan '%1'... - + Failed to uninstall '%1'. Gagal untuk mencopot pemasangan '%1%. - + Successfully uninstalled '%1'. - + File not found File tidak ditemukan - + File "%1" not found File "%1" tidak ditemukan - + Savestates - + Warning: Savestates are NOT a replacement for in-application saves, and are not meant to be reliable. Use at your own risk! - - - + + + Error opening amiibo data file - + A tag is already in use. - + Application is not looking for amiibos. - + Amiibo File (%1);; All Files (*.*) - + Load Amiibo Muat Amiibo - + Unable to open amiibo file "%1" for reading. - + Record Movie Rekam Video - + Movie recording cancelled. Perekaman Video Di Batalkan. - - + + Movie Saved Video Di Simpan - - + + The movie is successfully saved. Video telah berhasil di simpan. - + Application will unpause - + The application will be unpaused, and the next frame will be captured. Is this okay? - + Invalid Screenshot Directory - + Cannot create specified screenshot directory. Screenshot path is set back to its default value. - + Could not load video dumper - + FFmpeg could not be loaded. Make sure you have a compatible version installed. To install FFmpeg to Azahar, press Open and select your FFmpeg directory. @@ -4692,264 +4833,264 @@ To view a guide on how to install FFmpeg, press Help. - + Load 3DS ROM Files - + 3DS ROM Files (*.cia *.cci *.3dsx *.cxi *.3ds) - + 3DS Compressed ROM File (*.%1) - + Save 3DS Compressed ROM File - + Select Output 3DS Compressed ROM Folder - + Load 3DS Compressed ROM Files - + 3DS Compressed ROM Files (*.zcia *zcci *z3dsx *zcxi) - + 3DS ROM File (*.%1) - + Save 3DS ROM File - + Select Output 3DS ROM Folder - + Select FFmpeg Directory - + The provided FFmpeg directory is missing %1. Please make sure the correct directory was selected. - + FFmpeg has been sucessfully installed. - + Installation of FFmpeg failed. Check the log file for details. - + Could not start video dumping.<br>Please ensure that the video encoder is configured correctly.<br>Refer to the log for details. - + Recording %1 - + Playing %1 / %2 - + Movie Finished - + (Accessing SharedExtData) - + (Accessing SystemSaveData) - + (Accessing BossExtData) - + (Accessing ExtData) - + (Accessing SaveData) - + MB/s - + KB/s - + Artic Traffic: %1 %2%3 - + Speed: %1% Kecepatan: %1% - + Speed: %1% / %2% Kelajuan: %1% / %2% - + App: %1 FPS - + Frame: %1 ms (GPU: [CMD: %2 ms, SWP: %3 ms], IPC: %4 ms, SVC: %5 ms, Rem: %6 ms) - + Frame: %1 ms Frame: %1 ms - + VOLUME: MUTE - + VOLUME: %1% Volume percentage (e.g. 50%) - + %1 is missing. Please <a href='https://web.archive.org/web/20240304201103/https://citra-emu.org/wiki/dumping-system-archives-and-the-shared-fonts-from-a-3ds-console/'>dump your system archives</a>.<br/>Continuing emulation may result in crashes and bugs. - + A system archive Sebuah arsip sistem - + System Archive Not Found Arsip Sistem Tidak Ditemukan - + System Archive Missing Arsip sistem tidak ada - + Save/load Error - + Fatal Error Fatal Error - + A fatal error occurred. <a href='https://web.archive.org/web/20240228001712/https://community.citra-emu.org/t/how-to-upload-the-log-file/296'>Check the log</a> for details.<br/>Continuing emulation may result in crashes and bugs. - + Fatal Error encountered Galat fatal terjadi - + Continue Lanjut - + Quit Application - + OK OK - + Would you like to exit now? Apakah anda ingin keluar sekarang? - + The application is still running. Would you like to stop emulation? - + Playback Completed Pemutaran Kembali Telah Selesai - + Movie playback completed. Pemutaran kembali video telah selesai. - + Update Available - + Update %1 for Azahar is available. Would you like to download it? - + Primary Window - + Secondary Window @@ -5012,42 +5153,42 @@ Would you like to download it? GRenderWindow - + OpenGL not available! - + OpenGL shared contexts are not supported. - + Error while initializing OpenGL! - + Your GPU may not support OpenGL, or you do not have the latest graphics driver. - + Error while initializing OpenGL 4.3! - + Your GPU may not support OpenGL 4.3, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1 - + Error while initializing OpenGL ES 3.2! - + Your GPU may not support OpenGL ES 3.2, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1 @@ -5055,244 +5196,249 @@ Would you like to download it? GameList - - + + Compatibility - - + + Region - - + + File type - - + + Size - - + + Play time - + Favorite - + Eject Cartridge - + Insert Cartridge - + Open Buka - + Application Location - + Save Data Location - + Extra Data Location - + Update Data Location - + DLC Data Location - + Texture Dump Location - + Custom Texture Location - + Mods Location - + Dump RomFS - + Disk Shader Cache - + Open Shader Cache Location - + Delete OpenGL Shader Cache - + + Delete Vulkan Shader Cache + + + + Uninstall - + Everything - + Application - + Update - + DLC - + Remove Play Time Data - + Create Shortcut - + Add to Desktop - + Add to Applications Menu - + Stress Test: App Launch - + Properties Properti - - - - + + + + Azahar - + Are you sure you want to completely uninstall '%1'? This will delete the application if installed, as well as any installed updates or DLC. - - + + %1 (Update) - - + + %1 (DLC) - + Are you sure you want to uninstall '%1'? - + Are you sure you want to uninstall the update for '%1'? - + Are you sure you want to uninstall all DLC for '%1'? - + Scan Subfolders Pindai Subfolder - + Remove Application Directory - + Move Up - + Move Down - + Open Directory Location Buka Lokasi Penyimpanan - + Clear Bersihkan - + Name Nama @@ -5378,7 +5524,7 @@ Screen. GameListPlaceholder - + Double-click to add a new folder to the application list @@ -5386,27 +5532,27 @@ Screen. GameListSearchField - + of dari - + result hasil - + results hasil - + Filter: Saringan: - + Enter pattern to filter Masukkan pola untuk menyaring @@ -6038,23 +6184,23 @@ Debug Message: - - Loading Shaders %1 / %2 + + Loading %3 %1 / %2 - + Launching... - + Now Loading %1 - + Estimated Time %1 @@ -7026,17 +7172,17 @@ They may have left the room. Buka Berkas - + Error Error - + Couldn't load the camera Tidak dapat memuat kamera - + Couldn't load %1 Tidak dapat memuat %1 diff --git a/dist/languages/it.ts b/dist/languages/it.ts index 39af2d1e5..49f43a353 100644 --- a/dist/languages/it.ts +++ b/dist/languages/it.ts @@ -137,7 +137,7 @@ p, li { white-space: pre-wrap; } Now touch the bottom right corner <br>of your touchpad. - Ora tocca l'angolo in basso a destra<br> del tuo touchpad. + Ora tocca l'angolo in basso a destra <br> del tuo touchpad. @@ -328,8 +328,8 @@ Questo bannerà sia il suo nome utente del forum che il suo indirizzo IP. - This post-processing effect adjusts audio speed to match emulation speed and helps prevent audio stutter. This however increases audio latency. - Questo effetto di post-processing permette di far combaciare la velocità dell'emulazione con quella dell'audio per prevenire scatti. Tuttavia, ciò aumenta la latenza dell'audio. + <html><head/><body><p>This post-processing effect adjusts audio speed to match emulation speed and helps prevent audio stutter. This however increases audio latency.</p></body></html> + <html><head/><body><p>Questo effetto di post-processing regola la velocità dell’audio per adattarla alla velocità dell’emulazione e aiuta a prevenire le interruzioni dell’audio. Tuttavia aumenta la latenza audio.</p></body></html> @@ -338,8 +338,8 @@ Questo bannerà sia il suo nome utente del forum che il suo indirizzo IP. - Scales audio playback speed to account for drops in emulation framerate. This means that audio will play at full speed even while the application framerate is low. May cause audio desync issues. - Regola la velocità della riproduzione dell'audio per compensare i cali nel framerate dell'emulazione. Questo significa che l'audio verrà riprodotto a velocità normale anche mentre il framerate dell'applicazione è basso. Può causare problemi di desincronizzazione dell'audio. + <html><head/><body><p>Scales audio playback speed to account for drops in emulation framerate. This means that audio will play at full speed even while the application framerate is low. May cause audio desync issues.</p></body></html> + <html><head/><body><p>Adatta la velocità di riproduzione dell’audio per compensare i cali del framerate dell’emulazione. Questo significa che l’audio verrà riprodotto a velocità normale anche quando il framerate dell’applicazione è basso. Potrebbe causare problemi di desincronizzazione audio.</p></body></html> @@ -478,8 +478,8 @@ Questo bannerà sia il suo nome utente del forum che il suo indirizzo IP. - Select where the image of the emulated camera comes from. It may be an image or a real camera. - Seleziona la fonte dell'immagine della fotocamera emulata. Può essere un'immagine o una vera fotocamera. + <html><head/><body><p>Select where the image of the emulated camera comes from. It may be an image or a real camera.</p></body></html> + <html><head/><body><p>Seleziona la sorgente dell’immagine della fotocamera emulata. Può essere un’immagine oppure di una fotocamera reale.</p></body></html> @@ -807,21 +807,31 @@ Desideri ignorare l'errore e continuare? + <html><head/><body><p>Toggles the unique data console type (Old 3DS ↔ New 3DS) to be able to download the opposite system firmware type from system settings.</p></body></html> + <html><head/><body><p>Alterna il tipo di console (Old 3DS ↔ New 3DS) per scaricare il firmware del sistema opposto dalle impostazioni.</p></body></html> + + + + Toggle unique data console type + Alterna tipo dati univoci console + + + Force deterministic async operations Forza operazioni asincrone deterministiche - + <html><head/><body><p>Forces all async operations to run on the main thread, making them deterministic. Do not enable if you don't know what you are doing.</p></body></html> <html><head/><body><p>Forza l'esecuzione di tutte le operazioni asincrone nel thread principale, rendendole deterministiche. Non abilitare questa opzione se non sei consapevole di quello che stai facendo.</p></body></html> - + Enable RPC server Abilita il server RPC - + <html><head/><body><p>Enables the RPC server on port 45987. This allows remotely reading/writing guest memory, do not enable if you don't know what you are doing.</p></body></html> <html><head/><body><p>Abilita il server RPC sulla porta 45987. Ciò consente di leggere/scrivere da remoto la memoria dell'ospite, non attivarlo se non sai cosa stai facendo.</p></body></html> @@ -877,7 +887,7 @@ Desideri ignorare l'errore e continuare? Hotkeys - Scorciatoie + Tasti rapidi @@ -975,220 +985,230 @@ Desideri ignorare l'errore e continuare? 2x Native (800x480) - Nativa 2x (800x480) + 2x Nativa (800x480) 3x Native (1200x720) - Nativa 3x (1200x720) + 3x Nativa (1200x720) 4x Native (1600x960) - Nativa 4x (1600x960) + 4x Nativa (1600x960) 5x Native (2000x1200) - Nativa 5x (2000x1200) + 5x Nativa (2000x1200) 6x Native (2400x1440) - Nativa 6x (2400x1440) + 6x Nativa (2400x1440) 7x Native (2800x1680) - Nativa 7x (2800x1680) + 7x Nativa (2800x1680) 8x Native (3200x1920) - Nativa 8x (3200x1920) + 8x Nativa (3200x1920) 9x Native (3600x2160) - Nativa 9x (3600x2160) + 9x Nativa (3600x2160) 10x Native (4000x2400) - Nativa 10x (4000x2400) + 10x Nativa (4000x2400) + Use Integer Scaling + Usa scalabilità intera + + + + <html><head/><body><p>Use Integer Scaling</p><p>Enforces that the larger screen in all layouts is an integer scale of the 240px height of the original 3DS screen.</p></body></html> + <html><head/><body><p>Usa scalabilità intera</p><p>Forza lo schermo principale in ogni layout a essere un multiplo intero dell'altezza originale di 240px del 3DS.</p></body></html> + + + Enable Linear Filtering Abilita filtraggio lineare - + Post-Processing Shader Shader di post-processing - + Texture Filter Filtro texture - + None Nessuno - + Anime4K Anime4K - + Bicubic Bicubico - + ScaleForce ScaleForce - + xBRZ xBRZ - + MMPX MMPX - + Stereoscopy Stereoscopia - + Stereoscopic 3D Mode Modalità 3D stereoscopico - + Off Disabilitato - + Side by Side Affiancato - + Side by Side Full Width Affiancato a larghezza intera - + Anaglyph Anaglifo - + Interlaced Interlacciato - + Reverse Interlaced Interlacciato inverso - + Depth Profondità - + % % - + Note: Depth values over 100% are not possible on real hardware and may cause graphical issues Nota: Valori di profondità superiori al 100% non sono possibili su un dispositivo reale e possono causare problemi grafici - + Eye to Render in Monoscopic Mode Occhio da renderizzare in modalità monoscopica - + Left Eye (default) Occhio sinistro (predefinito) - + Right Eye Occhio destro - + Disable Right Eye Rendering - Disabilita il rendering dell'occhio destro + Disattiva rendering occhio destro - + <html><head/><body><p>Disable Right Eye Rendering</p><p>Disables rendering the right eye image when not using stereoscopic mode. Greatly improves performance in some applications, but can cause flickering in others.</p></body></html> <html><head/><body><p>Disabilita il rendering dell'occhio destro</p><p>Disabilita il rendering dell'immagine dell'occhio destro quando la modalità steroscopica non è attiva. Migliora enormemente le prestazioni in alcune applicazioni, ma può causare flickering in altre.</p></body></html> - + Swap Eyes Inverti occhi - + Utility Utilità - + <html><head/><body><p>Replace textures with PNG files.</p><p>Textures are loaded from load/textures/[Title ID]/.</p></body></html> <html><head/><body><p>Sostituisci le texture con file PNG.</p><p>Le texture verranno caricate dalla cartella load/textures/[ID titolo]/.</p></body></html> - + Use custom textures Usa texture personalizzate - + <html><head/><body><p>Dump textures to PNG files.</p><p>Textures are dumped to dump/textures/[Title ID]/.</p></body></html> <html><head/><body><p>Estrai le texture su file PNG.</p><p>Le texture verranno estratte nella cartella dump/textures/[ID titolo]/.</p></body></html> - + Dump textures Estrai texture - + <html><head/><body><p>Load all custom textures into memory on boot, instead of loading them when the application requires them.</p></body></html> <html><head/><body><p>Carica tutte le texture personalizzate in memoria all'avvio, invece di caricarle quando l'applicazione ne ha bisogno.</p></body></html> - + Preload custom textures Precarica texture personalizzate - + <html><head/><body><p>Load custom textures asynchronously with background threads to reduce loading stutter</p></body></html> <html><head/><body><p>Carica le texture personalizzate in maniera asincrona usando dei thread in background per ridurre gli scatti causati dal loro caricamento.</p></body></html> - + Async custom texture loading Caricamento asincrono delle texture personalizzate @@ -1494,8 +1514,8 @@ Desideri ignorare l'errore e continuare? - VSync prevents the screen from tearing, but some graphics cards have lower performance with VSync enabled. Keep it enabled if you don't notice a performance difference. - Il VSync evita il tearing dello schermo, ma alcune schede video hanno prestazioni peggiori quando il VSync è abilitato. Lascialo abilitato se non noti una differenza nelle prestazioni. + <html><head/><body><p>VSync prevents the screen from tearing, but some graphics cards have lower performance with VSync enabled. Keep it enabled if you don't notice a performance difference.</p></body></html> + <html><head/><body><p>Il VSync impedisce il tearing dello schermo, ma alcune schede video hanno prestazioni inferiori con il VSync attivato. Mantienilo attivo se non noti differenze di prestazioni.</p></body></html> @@ -1503,22 +1523,32 @@ Desideri ignorare l'errore e continuare? Abilita VSync - + + <html><head/><body><p>When enabled, this setting detects when the refresh rate of the screen is below that of the 3DS, and when it is, disables VSync automatically to avoid emulation speed being forced below 100%.</p></body></html> + <html><head/><body><p>Se abilitata, questa impostazione rileva quando la frequenza di aggiornamento dello schermo è inferiore a quella del 3DS e, quando lo è, disabilita automaticamente VSync per evitare che la velocità di emulazione venga forzata al di sotto del 100%.</p></body></html> + + + + Enable display refresh rate detection + Abilita il rilevamento della frequenza di aggiornamento del display + + + Use global Usa la configurazione globale - + Use per-application Usa la configurazione dell'applicazione - + Delay Application Render Thread Ritarda il thread di render dell'applicazione - + <html><head/><body><p>Delays the emulated application render thread the specified amount of milliseconds every time it submits render commands to the GPU.</p><p>Adjust this feature in the (very few) dynamic framerate applications to fix performance issues.</p></body></html> <html><head/><body><p>Ritarda il thread dell'applicazione emulata per il quantitativo specificato di millisecondi ogni volta che invia dei comandi di render alla GPU.</p><p>Configura questa feature nelle (poche) applicazioni con framerate variabile per risolvere problemi di prestazioni.</p></body></html> @@ -1528,7 +1558,7 @@ Desideri ignorare l'errore e continuare? Hotkey Settings - Impostazioni scorciatoie + Impostazioni tasti rapidi @@ -1553,7 +1583,7 @@ Desideri ignorare l'errore e continuare? Hotkey - Scorciatoia + Tasto rapido @@ -1577,7 +1607,7 @@ Desideri ignorare l'errore e continuare? The per-application speed and turbo speed hotkeys cannot be bound at the same time. - Le scorciatoie della velocità dell'applicazione e della velocità Turbo non possono essere contemporaneamente associate. + I tasti rapidi per la velocità specifica dell'applicazione e della velocità turbo non possono essere associati contemporaneamente. @@ -1738,7 +1768,7 @@ Desideri ignorare l'errore e continuare? Power: - Stato: + Power: @@ -1997,170 +2027,243 @@ Desideri ignorare l'errore e continuare? - + Custom Layout Disposizione personalizzata - - Swap screens - Inverti schermi - - - + Rotate screens upright Ruota schermi in verticale - + + Swap screens + Inverti schermi + + + + Customize layout cycling + Personalizza rotazione layout + + + Screen Gap Spazio tra gli schermi - + Large Screen Proportion Proporzioni schermo grande - + Small Screen Position Posizione dello schermo piccolo - + Upper Right In alto a destra - + Middle Right In centro a destra - + Bottom Right (default) In basso a destra (predefinita) - + Upper Left In alto a sinistra - + Middle Left In centro a sinistra - + Bottom Left In basso a sinistra - + Above large screen Sopra lo schermo grande - + Below large screen Sotto lo schermo grande - + Background Color Colore di sfondo - - + + Top Screen Schermo superiore - - + + X Position Posizione X - - - - - - - - - + + + + + + + + - - + + + px px - - + + Y Position Posizione Y - - + + Width Larghezza - - + + Height Altezza - - + + Bottom Screen Schermo inferiore - + <html><head/><body><p>Bottom Screen Opacity %</p></body></html> <html><head/><body><p>Opacità dello schermo inferiore %</p></body></html> - + Single Screen Layout Disposizione a schermo singolo - - + + Stretch Allunga - - + + Left/Right Padding Bordo Destra/Sinistra - - + + Top/Bottom Padding Bordo Alto/Basso - + Note: These settings affect the Single Screen and Separate Windows layouts Nota: Queste impostazioni riguardano le disposizioni "Schermo singolo" e "Finestre separate" + + ConfigureLayoutCycle + + + Configure Layout Cycling + Configura rotazione layout + + + + Screen Layout Cycling Customization + Personalizzazione rotazione layout schermi + + + + Select which screen layout options should be cycled with the "Toggle Screen Layout" hotkey + Seleziona quali layout includere nella rotazione tramite il tasto rapido "Cambia layout schermo" + + + + Use Global Value + Usa valore globale + + + + Default + Predefinito + + + + Single Screen + Schermo singolo + + + + Large Screen + Schermo grande + + + + Side by Side + Affiancato + + + + Separate Windows + Finestre separate + + + + Hybrid + Ibrido + + + + Custom + Personalizzato + + + + No Layout Selected + Nessun layout selezionato + + + + Please select at least one layout option to cycle through. + Seleziona almeno un layout da includere nel ciclo. + + ConfigureMotionTouch - + Configure Motion / Touch Configura movimento / tocco @@ -2188,8 +2291,10 @@ Desideri ignorare l'errore e continuare? - - + + + + Configure Configura @@ -2219,58 +2324,68 @@ Desideri ignorare l'errore e continuare? Utilizza la mappatura dei pulsanti: - + + Map touchpads on controllers like the DualSense directly to touch + Mappa il touchpad di controller come il DualSense direttamente al touch + + + + Use controller touchpad + Usa il touchpad del controller + + + CemuhookUDP Config Configurazione CemuhookUDP - + You may use any Cemuhook compatible UDP input source to provide motion and touch input. Puoi utilizzare qualsiasi input UDP compatibile con Cemuhook per fornire input di movimento e di tocco. - + Server: Server: - + Port: Porta: - + Pad: Pad: - + Pad 1 Pad 1 - + Pad 2 Pad 2 - + Pad 3 Pad 3 - + Pad 4 Pad 4 - + Learn More Per saperne di più - - + + Test Test @@ -2301,57 +2416,68 @@ Desideri ignorare l'errore e continuare? <a href='https://web.archive.org/web/20240301211230/https://citra-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">Ulteriori informazioni</span></a> - + + Information Informazioni - + After pressing OK, press a button on the controller whose motion you want to track. Dopo aver premuto OK, premi un pulsante sul controller di cui vuoi tracciare il movimento. - + [press button] [premi pulsante] - + + After pressing OK, tap the touchpad on the controller you want to track. + Dopo aver premuto OK, tocca il touchpad sul controller che desideri tracciare. + + + + [press touchpad] + [premi il touchpad] + + + Testing Prova - + Configuring Configurazione - + Test Successful Test riuscito - + Successfully received data from the server. Dati ricevuti con successo 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 informazioni valide dal server.<br>Verifica che il server sia configurato correttamente e che l'indirizzo e la porta siano corretti. - + Azahar Azahar - + UDP Test or calibration configuration is in progress.<br>Please wait for them to finish. Test UDP o configurazione della calibrazione in corso.<br>Si prega di attendere fino al loro termine. @@ -2521,8 +2647,8 @@ Desideri ignorare l'errore e continuare? - Compresses the content of CIA files when installed to the emulated SD card. Only affects CIA content which is installed while the setting is enabled. - Comprime il contenuto dei file CIA quando installati sulla scheda SD emulata. Riguarda solo i contenuti CIA installati mentre l'impostazione è abilitata. + <html><head/><body><p>Compresses the content of CIA files when installed to the emulated SD card. Only affects CIA content which is installed while the setting is enabled.</p></body></html> + <html><head/><body><p>Comprime il contenuto dei file CIA durante l’installazione sulla scheda SD emulata. L’impostazione influisce solo sui contenuti CIA installati mentre è attiva.</p></body></html> @@ -2667,7 +2793,7 @@ installed applications. Note: this can be overridden when region setting is auto-select - Nota: questa impostazione può essere sovrascritta quando le impostazioni regionali sono su Selezione automatica + NOTA: Questa opzione viene ignorata se l'impostazione della regione è su "Selezione automatica" @@ -3919,7 +4045,7 @@ Trascina i punti per cambiarne la posizione, o fai doppio clic sulla tabella per Discord Presence - Discord Presence + Presenza Discord @@ -4103,511 +4229,526 @@ Verifica l'installazione di FFmpeg usata per la compilazione. GMainWindow - + + Warning + Attenzione + + + + The `azahar` executable is being run directly rather than via the Azahar.app bundle. + +When run this way, the app may be missing certain functionality such as camera emulation. + +It is recommended to instead run Azahar using the `open` command, e.g.: +`open ./Azahar.app` + + + + No Suitable Vulkan Devices Detected Impossibile trovare un dispositivo compatibile con Vulkan. - + Vulkan initialization failed during boot.<br/>Your GPU may not support Vulkan 1.1, or you do not have the latest graphics driver. - L'inizializzazione di Vulkan ha fallito durante il boot. <br/>La tua GPU potrebbe non supportare Vulkan 1.1, oppure non hai i driver più recenti. + L'inizializzazione di Vulkan ha fallito durante il boot.<br/>La tua GPU potrebbe non supportare Vulkan 1.1, oppure non hai i driver più recenti. - + Current Artic traffic speed. Higher values indicate bigger transfer loads. Attuale velocità del traffico di Artic. Valori alti indicano carichi di trasferimento più grandi. - - + + Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a 3DS. Velocità di emulazione corrente. Valori più alti o più bassi di 100% indicano che l'emulazione sta funzionando più velocemente o lentamente di un 3DS. - - + + How many frames per second the app is currently displaying. This will vary from app to app and scene to scene. Quanti frame al secondo l'app sta attualmente mostrando. Varierà da app ad app e da scena a scena. - - + + Time taken to emulate a 3DS 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 del 3DS, 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. - + MicroProfile (unavailable) MicroProfile (Non disponibile) - + Clear Recent Files Elimina file recenti - + &Continue &Continua - + &Pause &Pausa - + Azahar is running an application TRANSLATORS: This string is shown to the user to explain why Citra needs to prevent the computer from sleeping Azahar sta eseguendo un'applicazione - - + + Invalid App Format Formato App non valido - - + + Your app format is not supported.<br/>Please follow the guides to redump your <a href='https://web.archive.org/web/20240304210021/https://citra-emu.org/wiki/dumping-game-cartridges/'>game cartridges</a> or <a href='https://web.archive.org/web/20240304210011/https://citra-emu.org/wiki/dumping-installed-titles/'>installed titles</a>. - Il formato dell'applicazione non è supportato. <br/>Segui la guida per effettuare il dump delle tue <a href='https://web.archive.org/web/20240304210021/https://citra-emu.org/wiki/dumping-game-cartridges/'>schedine di gioco</a> o dei <a href='https://web.archive.org/web/20240304210011/https://citra-emu.org/wiki/dumping-installed-titles/'>titoli installati</a>. + Il formato dell'applicazione non è supportato.<br/>Segui la guida per effettuare il dump delle tue <a href='https://web.archive.org/web/20240304210021/https://citra-emu.org/wiki/dumping-game-cartridges/'>schedine di gioco</a> o dei <a href='https://web.archive.org/web/20240304210011/https://citra-emu.org/wiki/dumping-installed-titles/'>titoli installati</a>. - + App Corrupted App corrotta - + Your app is corrupted. <br/>Please follow the guides to redump your <a href='https://web.archive.org/web/20240304210021/https://citra-emu.org/wiki/dumping-game-cartridges/'>game cartridges</a> or <a href='https://web.archive.org/web/20240304210011/https://citra-emu.org/wiki/dumping-installed-titles/'>installed titles</a>. L'applicazione è corrotta. <br/>Segui la guida per effettuare il dump delle tue <a href='https://web.archive.org/web/20240304210021/https://citra-emu.org/wiki/dumping-game-cartridges/'>schedine di gioco</a> o dei <a href='https://web.archive.org/web/20240304210011/https://citra-emu.org/wiki/dumping-installed-titles/'>titoli installati</a>. - + App Encrypted App criptata - + Your app is encrypted. <br/><a href='https://azahar-emu.org/blog/game-loading-changes/'>Please check our blog for more info.</a> L'applicazione è criptata. <br/><a href='https://azahar-emu.org/blog/game-loading-changes/'>Consulta il nostro blog per maggiori informazioni.</a> - + Unsupported App App non supportata - + GBA Virtual Console is not supported by Azahar. - La GBA Virtual Console non è supportata da Azahar. + La Virtual Console GBA non è supportata da Azahar. - - + + Artic Server Artic Server - + Invalid system mode Modalità di sistema non valida - + New 3DS exclusive applications cannot be loaded without enabling the New 3DS mode. - Le applicazioni esclusive del New 3DS non possono essere caricate senza abilitare la modalità New 3DS. + Le applicazioni esclusive per New 3DS non possono essere avviate senza prima abilitare la modalità New 3DS. - + Error while loading App! Errore nel caricamento dell'app! - + An unknown error occurred. Please see the log for more details. Si è verificato un errore sconosciuto. Consulta il log per maggiori dettagli. - + CIA must be installed before usage Il CIA deve essere installato prima dell'uso - + Before using this CIA, you must install it. Do you want to install it now? Devi installare questo CIA prima di poterlo usare. Desideri farlo ora? - + Quick Load Carica salvataggio rapido - + Quick Save Salvataggio rapido - - + + Slot %1 Slot %1 - + %2 %3 %2 %3 - + Quick Save - %1 - Salvataggio rapido (%1) + Salvataggio rapido - %1 - + Quick Load - %1 - Carica salvataggio rapido (%1) + Carica salvataggio rapido - %1 - + Slot %1 - %2 %3 Slot %1 - %2 %3 - + Error Opening %1 Folder Errore nell'apertura della cartella %1 - - + + Folder does not exist! La cartella non esiste! - + Remove Play Time Data Rimuovi dati sul tempo di gioco - + Reset play time? Reimpostare il tempo di gioco? - - - - + + + + Create Shortcut Crea scorciatoia - + Do you want to launch the application in fullscreen? Vuoi avviare l'applicazione a schermo intero? - + Successfully created a shortcut to %1 Scorciatoia creata con successo in %1 - + This will create a shortcut to the current AppImage. This may not work well if you update. Continue? Verrà creata una scorciatoia all'attuale AppImage, che potrebbe non funzionare correttamente in caso di aggiornamento. Vuoi continuare? - + Failed to create a shortcut to %1 Impossibile creare scorciatoia in %1 - + Create Icon Crea icona - + Cannot create icon file. Path "%1" does not exist and cannot be created. Impossibile creare file icona. La cartella "%1" non esiste e non può essere creato. - + Dumping... Estrazione in corso... - - + + Cancel Annulla - - - - - - - - - + + + + + + + + + Azahar Azahar - + Could not dump base RomFS. Refer to the log for details. Impossibile estrarre la RomFS base. Consulta il log per i dettagli. - + Error Opening %1 Errore nell'apertura di %1 - + Select Directory Seleziona cartella - + Properties Proprietà - + The application properties could not be loaded. Impossibile caricare le proprietà dell'applicazione. - + 3DS Executable (%1);;All Files (*.*) %1 is an identifier for the 3DS executable file extensions. Eseguibile 3DS (%1);;Tutti i file (*.*) - + Load File Carica file - - + + Set Up System Files Configura i file di sistema - + <p>Azahar needs console unique data and firmware files from a real console to be able to use some of its features.<br>Such files and data can be set up with the <a href=https://github.com/azahar-emu/ArticSetupTool>Azahar Artic Setup Tool</a><br>Notes:<ul><li><b>This operation will install console unique data to Azahar, do not share your user or nand folders<br>after performing the setup process!</b></li><li>While doing the setup process, Azahar will link to the console running the setup tool. You can unlink the<br>console later from the System tab in the emulator configuration menu.</li><li>Do not go online with both Azahar and your 3DS console at the same time after setting up system files,<br>as it could cause issues.</li><li>Old 3DS setup is needed for the New 3DS setup to work (doing both setup modes is recommended).</li><li>Both setup modes will work regardless of the model of the console running the setup tool.</li></ul><hr></p> <p>Azahar necessita di dati univoci della console e di file firmware da una console reale per poter utilizzare alcune delle sue funzionalità.<br>Tali file e dati possono essere configurati con <a href=https://github.com/azahar-emu/ArticSetupTool>Azahar Artic Setup Tool</a><br>Note:<ul><li><b>questa operazione installerà dati univoci della console su Azahar, non condividere le cartelle utente o nand<br>dopo aver eseguito il processo di configurazione!</b></li><li>Durante il processo di configurazione, Azahar si collegherà alla console che esegue lo strumento di configurazione. È possibile scollegare la console in un secondo momento dalla scheda Sistema nel menu di configurazione dell'emulatore.</li><li>Non andare online con Azahar e con la console 3DS contemporaneamente dopo aver configurato i file di sistema,<br>poiché potrebbe causare problemi.</li><li>La vecchia configurazione 3DS è necessaria affinché la nuova configurazione 3DS funzioni (si consiglia di eseguire entrambe le modalità di configurazione).</li><li>Entrambe le modalità di configurazione funzioneranno indipendentemente dal modello della console che esegue lo strumento di configurazione.</li></ul><hr></p> - + Enter Azahar Artic Setup Tool address: Inserisci l'indirizzo di Artic Setup Tool: - + <br>Choose setup mode: <br>Scegli la modalità di configurazione: - + (ℹ️) Old 3DS setup (ℹ️) Configurazione Old 3DS - - + + Setup is possible. La configurazione è possibile. - + (⚠) New 3DS setup (⚠) Configurazione New 3DS - + Old 3DS setup is required first. È necessario eseguire prima la configurazione Old 3DS. - + (✅) Old 3DS setup (✅) Configurazione Old 3DS - - + + Setup completed. Configurazione completata. - + (ℹ️) New 3DS setup (ℹ️) Configurazione New 3DS - + (✅) New 3DS setup (✅) Configurazione New 3DS - + The system files for the selected mode are already set up. Reinstall the files anyway? I file di sistema per la modalità selezionata sono già stati configurati. Vuoi comunque reinstallarli? - + Load Files Carica file - + 3DS Installation File (*.cia *.zcia) File di installazione 3DS (*.cia *.zcia) - - - + + + All Files (*.*) Tutti i file (*.*) - + Connect to Artic Base Connettiti ad Artic Base - + Enter Artic Base server address: Inserisci l'indirizzo del server Artic Base: - + %1 has been installed successfully. %1 è stato installato con successo. - + Unable to open File Impossibile aprire il file - + Could not open %1 Impossibile aprire %1 - + Installation aborted Installazione annullata - + The installation of %1 was aborted. Please see the log for more details L'installazione di %1 è stata annullata. Visualizza il log per maggiori dettagli. - + Invalid File File non valido - + %1 is not a valid CIA %1 non è un CIA valido - + CIA Encrypted File CIA criptato - + Your CIA file is encrypted.<br/><a href='https://azahar-emu.org/blog/game-loading-changes/'>Please check our blog for more info.</a> Il file CIA è criptato. <br/><a href='https://azahar-emu.org/blog/game-loading-changes/'>Consulta il nostro blog per maggiori informazioni.</a> - + Unable to find File Impossibile trovare il file - + Could not find %1 Impossibile trovare %1 - - - - + + + + Z3DS Compression Compressione Z3DS - + Failed to compress some files, check log for details. Impossibile comprimere alcuni file, controllare il log per i dettagli. - + Failed to decompress some files, check log for details. Impossibile decomprimere alcuni file, controllare il log per i dettagli. - + All files have been compressed successfully. Tutti i file sono stati compressi con successo. - + All files have been decompressed successfully. Tutti i file sono stati decompressi con successo. - + Uninstalling '%1'... Disinstallazione di "%1" in corso... - + Failed to uninstall '%1'. Errore nella disinstallazione di "%1". - + Successfully uninstalled '%1'. "%1" è stato disinstallato con successo. - + File not found File non trovato - + File "%1" not found File "%1" non trovato - + Savestates Stati salvati - + Warning: Savestates are NOT a replacement for in-application saves, and are not meant to be reliable. Use at your own risk! @@ -4616,86 +4757,86 @@ Use at your own risk! Usali a tuo rischio e pericolo. - - - + + + Error opening amiibo data file Errore durante l'apertura dell'amiibo. - + A tag is already in use. Un tag è già in uso. - + Application is not looking for amiibos. L'applicazione non sta cercando alcun amiibo. - + Amiibo File (%1);; All Files (*.*) File Amiibo (%1);; Tutti i file (*.*) - + Load Amiibo Carica Amiibo - + Unable to open amiibo file "%1" for reading. Impossibile leggere il file amiibo "%1". - + Record Movie Registra filmato - + Movie recording cancelled. Registrazione del filmato annullata. - - + + Movie Saved Filmato salvato - - + + The movie is successfully saved. - Il filmato è stato salvato con successo. + Filmato salvato correttamente. - + Application will unpause L'applicazione riprenderà - + The application will be unpaused, and the next frame will be captured. Is this okay? L'applicazione riprenderà, e il prossimo frame verrà catturato. Va bene? - + Invalid Screenshot Directory Cartella degli screenshot non valida - + Cannot create specified screenshot directory. Screenshot path is set back to its default value. - Non è stato possibile creare la cartella degli screenshot specificata. Il percorso a tale cartella è stato ripristinato al suo valore predefinito. + Impossibile creare la cartella screenshot specificata. Il percorso è stato ripristinato a quello predefinito. - + Could not load video dumper Impossibile caricare l'estrattore del video - + FFmpeg could not be loaded. Make sure you have a compatible version installed. To install FFmpeg to Azahar, press Open and select your FFmpeg directory. @@ -4708,265 +4849,265 @@ Per installare FFmpeg su Azahar, clicca su Apri e seleziona la cartella di FFmpe Per istruzioni su come installare FFmpeg, clicca su Aiuto. - + Load 3DS ROM Files Carica file ROM 3DS - + 3DS ROM Files (*.cia *.cci *.3dsx *.cxi *.3ds) - + File ROM 3DS (*.cia *.cci *.3dsx *.cxi *.3ds) - + 3DS Compressed ROM File (*.%1) File ROM 3DS compresso (*.%1) - + Save 3DS Compressed ROM File Salva file ROM 3DS compresso - + Select Output 3DS Compressed ROM Folder Seleziona la cartella di destinazione delle ROM 3DS compresse - + Load 3DS Compressed ROM Files Carica file ROM 3DS compressi - + 3DS Compressed ROM Files (*.zcia *zcci *z3dsx *zcxi) File ROM 3DS compresso (*.zcia *zcci *z3dsx *zcxi) - + 3DS ROM File (*.%1) File ROM 3DS (*.%1) - + Save 3DS ROM File Salva file ROM 3DS - + Select Output 3DS ROM Folder Seleziona la cartella di destinazione delle ROM 3DS - + Select FFmpeg Directory Seleziona la cartella di installazione di FFmpeg. - + The provided FFmpeg directory is missing %1. Please make sure the correct directory was selected. La cartella di FFmpeg selezionata non contiene %1. Assicurati di aver selezionato la cartella corretta. - + FFmpeg has been sucessfully installed. FFmpeg è stato installato con successo. - + Installation of FFmpeg failed. Check the log file for details. Installazione di FFmpeg fallita. Consulta i file di log per maggiori dettagli. - + Could not start video dumping.<br>Please ensure that the video encoder is configured correctly.<br>Refer to the log for details. Impossibile iniziare il dumping video.<br> Assicurati che l'encoder video sia configurato correttamente. <br>Controlla il log per ulteriori dettagli. - + Recording %1 Registrazione in corso (%1) - + Playing %1 / %2 Riproduzione in corso (%1 / %2) - + Movie Finished Filmato terminato - + (Accessing SharedExtData) (Accessing SharedExtData) - + (Accessing SystemSaveData) (Accessing SystemSaveData) - + (Accessing BossExtData) (Accessing BossExtData) - + (Accessing ExtData) (Accessing ExtData) - + (Accessing SaveData) (Accessing SaveData) - + MB/s MB/s - + KB/s KB/s - + Artic Traffic: %1 %2%3 Traffico Artic: %1 %2%3 - + Speed: %1% Velocità: %1% - + Speed: %1% / %2% Velocità: %1% / %2% - + App: %1 FPS App: %1 FPS - + Frame: %1 ms (GPU: [CMD: %2 ms, SWP: %3 ms], IPC: %4 ms, SVC: %5 ms, Rem: %6 ms) Frame: %1 ms (GPU: [CMD: %2 ms, SWP: %3 ms], IPC: %4 ms, SVC: %5 ms, Rem: %6 ms) - + Frame: %1 ms Frame: %1 ms - + VOLUME: MUTE VOLUME: MUTO - + VOLUME: %1% Volume percentage (e.g. 50%) VOLUME: %1% - + %1 is missing. Please <a href='https://web.archive.org/web/20240304201103/https://citra-emu.org/wiki/dumping-system-archives-and-the-shared-fonts-from-a-3ds-console/'>dump your system archives</a>.<br/>Continuing emulation may result in crashes and bugs. %1 non trovato. <a href='https://web.archive.org/web/20240304201103/https://citra-emu.org/wiki/dumping-system-archives-and-the-shared-fonts-from-a-3ds-console/'>Estrai i tuoi archivi di sistema</a>.<br/>Proseguendo l'emulazione si potrebbero verificare arresti anomali e bug. - + A system archive Un archivio di sistema - + System Archive Not Found Archivio di sistema non trovato - + System Archive Missing Archivio di sistema mancante - + Save/load Error Errore di salvataggio/caricamento - + Fatal Error Errore irreversibile - + A fatal error occurred. <a href='https://web.archive.org/web/20240228001712/https://community.citra-emu.org/t/how-to-upload-the-log-file/296'>Check the log</a> for details.<br/>Continuing emulation may result in crashes and bugs. Si è verificato un errore fatale. <a href='https://web.archive.org/web/20240228001712/https://community.citra-emu.org/t/how-to-upload-the-log-file/296'>Controlla il log</a> per i dettagli.<br/>Continuare l'emulazione potrebbe causare arresti anomali e bug. - + Fatal Error encountered Errore irreversibile riscontrato - + Continue Continua - + Quit Application Chiudi applicazione - + OK OK - + Would you like to exit now? Desideri uscire ora? - + The application is still running. Would you like to stop emulation? L'applicazione è ancora in esecuzione. Vuoi arrestare l'emulazione? - + Playback Completed Riproduzione completata - + Movie playback completed. Riproduzione del filmato completata. - + Update Available Aggiornamento disponibile - + Update %1 for Azahar is available. Would you like to download it? L'aggiornamento %1 di Azahar è disponibile. Vuoi installarlo? - + Primary Window Finestra principale - + Secondary Window Finestra secondaria @@ -5029,42 +5170,42 @@ Vuoi installarlo? GRenderWindow - + OpenGL not available! OpenGL non disponibile! - + OpenGL shared contexts are not supported. Gli shared context di OpenGL non sono supportati. - + 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.3! Errore durante l'inizializzazione di OpenGL 4.3! - + Your GPU may not support OpenGL 4.3, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1 La tua GPU potrebbe non supportare OpenGL 4.3, o non hai installato l'ultima versione dei driver video.<br><br>Renderer GL:<br>%1 - + Error while initializing OpenGL ES 3.2! Errore durante l'inizializzazione di OpenGL ES 3.2! - + Your GPU may not support OpenGL ES 3.2, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1 La tua GPU potrebbe non supportare OpenGL ES 3.2, oppure non hai i driver grafici più recenti. <br><br>GL Renderer: <br>%1 @@ -5072,180 +5213,185 @@ Vuoi installarlo? GameList - - + + Compatibility Compatibilità - - + + Region Regione - - + + File type Tipo di file - - + + Size Dimensione - - + + Play time Tempo di gioco - + Favorite Preferito - + Eject Cartridge Rimuovi schedina - + Insert Cartridge Inserisci schedina - + Open Apri - + Application Location Cartella dell'applicazione - + Save Data Location Cartella dei dati di salvataggio - + Extra Data Location Cartella dei dati aggiuntivi - + Update Data Location Cartella dei dati di aggiornamento - + DLC Data Location Cartella dei dati dei DLC - + Texture Dump Location Cartella di estrazione delle texture - + Custom Texture Location Cartella delle texture personalizzate - + Mods Location Cartella delle mod - + Dump RomFS Estrai la RomFS - + Disk Shader Cache Cache degli shader su disco - + Open Shader Cache Location Apri la cartella della cache degli shader - + Delete OpenGL Shader Cache Elimina la cache degli shader OpenGL - + + Delete Vulkan Shader Cache + Elimina la cache degli shader Vulkan + + + Uninstall Disinstalla - + Everything Tutto - + Application Applicazione - + Update Aggiornamento - + DLC DLC - + Remove Play Time Data Rimuovi dati sul tempo di gioco - + Create Shortcut Crea scorciatoia - + Add to Desktop Aggiungi al desktop - + Add to Applications Menu Aggiungi al menù delle applicazioni - + Stress Test: App Launch Stress Test: Avvio dell'app - + Properties Proprietà - - - - + + + + Azahar Azahar - + Are you sure you want to completely uninstall '%1'? This will delete the application if installed, as well as any installed updates or DLC. @@ -5254,64 +5400,64 @@ This will delete the application if installed, as well as any installed updates Se installata, l'applicazione verrà rimossa assieme ad eventuali aggiornamenti e DLC installati. - - + + %1 (Update) %1 (Aggiornamento) - - + + %1 (DLC) %1 (DLC) - + Are you sure you want to uninstall '%1'? Sei sicuro di voler disinstallare '%1'? - + Are you sure you want to uninstall the update for '%1'? Sei sicuro di voler disinstallare l'aggiornamento di '%1'? - + Are you sure you want to uninstall all DLC for '%1'? Sei sicuro di voler disinstallare tutti i DLC di '%1'? - + Scan Subfolders Scansiona le sottocartelle - + Remove Application Directory Rimuovi cartella delle applicazioni - + Move Up Sposta in alto - + Move Down Sposta in basso - + Open Directory Location Apri cartella - + Clear Ripristina - + Name Nome @@ -5402,7 +5548,7 @@ Screen. GameListPlaceholder - + Double-click to add a new folder to the application list Fai doppio clic per aggiungere una nuova cartella alla lista delle applicazioni @@ -5410,29 +5556,29 @@ Screen. GameListSearchField - + of di - + result risultato - + results risultati - + Filter: Filtro: - + Enter pattern to filter - Inserisci pattern per filtrare + Inserisci filtro @@ -6063,24 +6209,24 @@ Messaggio di debug: Preparazione shader %1 / %2 - - Loading Shaders %1 / %2 - Caricamento shader %1 / %2 + + Loading %3 %1 / %2 + Caricamento %3 %1 / %2 - + Launching... Avvio in corso... - + Now Loading %1 Caricamento %1 - + Estimated Time %1 Tempo stimato %1 @@ -7056,17 +7202,17 @@ Potrebbe aver lasciato la stanza. Apri file - + Error Errore - + Couldn't load the camera Impossibile caricare la fotocamera - + Couldn't load %1 Impossibile caricare %1 @@ -7158,7 +7304,7 @@ Potrebbe aver lasciato la stanza. none - Nessun + Nessuno @@ -7399,7 +7545,7 @@ Potrebbe aver lasciato la stanza. Enter a hotkey - Inserisci una scorciatoia + Inserisci un tasto rapido diff --git a/dist/languages/ja_JP.ts b/dist/languages/ja_JP.ts index a85fe6a11..19522b7d8 100644 --- a/dist/languages/ja_JP.ts +++ b/dist/languages/ja_JP.ts @@ -328,8 +328,8 @@ This would ban both their forum username and their IP address. - This post-processing effect adjusts audio speed to match emulation speed and helps prevent audio stutter. This however increases audio latency. - この後処理エフェクトを有効にすると、エミュレーション速度に合わせて音声を伸長し、音声のカクつきを低減させます。ただし、レイテンシが増加します。 + <html><head/><body><p>This post-processing effect adjusts audio speed to match emulation speed and helps prevent audio stutter. This however increases audio latency.</p></body></html> + @@ -338,8 +338,8 @@ This would ban both their forum username and their IP address. - Scales audio playback speed to account for drops in emulation framerate. This means that audio will play at full speed even while the application framerate is low. May cause audio desync issues. - アプリケーションのフレームレートの低下を考慮して、オーディオの再生速度を調整します。これにより、ゲームのフレームレートが低くてもオーディオは通常の速度で再生されますが、オーディオのズレが発生する可能性があります。 + <html><head/><body><p>Scales audio playback speed to account for drops in emulation framerate. This means that audio will play at full speed even while the application framerate is low. May cause audio desync issues.</p></body></html> + @@ -478,8 +478,8 @@ This would ban both their forum username and their IP address. - Select where the image of the emulated camera comes from. It may be an image or a real camera. - カメラに表示する画像もしくは実際に接続されているカメラを選択 + <html><head/><body><p>Select where the image of the emulated camera comes from. It may be an image or a real camera.</p></body></html> + @@ -806,21 +806,31 @@ Would you like to ignore the error and continue? - Force deterministic async operations + <html><head/><body><p>Toggles the unique data console type (Old 3DS ↔ New 3DS) to be able to download the opposite system firmware type from system settings.</p></body></html> - <html><head/><body><p>Forces all async operations to run on the main thread, making them deterministic. Do not enable if you don't know what you are doing.</p></body></html> - <html><head/><body><p>非同期処理を強制的にメインスレッドで実行することで、結果を決定的にします。これが何かわからない場合、有効にしないでください。</p></body></html> + Toggle unique data console type + - Enable RPC server + Force deterministic async operations + <html><head/><body><p>Forces all async operations to run on the main thread, making them deterministic. Do not enable if you don't know what you are doing.</p></body></html> + <html><head/><body><p>非同期処理を強制的にメインスレッドで実行することで、結果を決定的にします。これが何かわからない場合、有効にしないでください。</p></body></html> + + + + Enable RPC server + + + + <html><head/><body><p>Enables the RPC server on port 45987. This allows remotely reading/writing guest memory, do not enable if you don't know what you are doing.</p></body></html> @@ -1018,176 +1028,186 @@ Would you like to ignore the error and continue? + Use Integer Scaling + + + + + <html><head/><body><p>Use Integer Scaling</p><p>Enforces that the larger screen in all layouts is an integer scale of the 240px height of the original 3DS screen.</p></body></html> + + + + Enable Linear Filtering - + Post-Processing Shader 後処理シェーダー - + Texture Filter テクスチャフィルタ - + None なし - + Anime4K Anime4K - + Bicubic Bicubic - + ScaleForce - + xBRZ xBRZ - + MMPX - + Stereoscopy 立体視 - + Stereoscopic 3D Mode - + Off OFF - + Side by Side Side by Side - + Side by Side Full Width - + Anaglyph アナグリフ - + Interlaced インターレース - + Reverse Interlaced 逆インターレース - + Depth 深度 - + % % - + Note: Depth values over 100% are not possible on real hardware and may cause graphical issues - + Eye to Render in Monoscopic Mode 立体視モードで描写する目 - + Left Eye (default) 左目(既定) - + Right Eye 右目 - + Disable Right Eye Rendering - + <html><head/><body><p>Disable Right Eye Rendering</p><p>Disables rendering the right eye image when not using stereoscopic mode. Greatly improves performance in some applications, but can cause flickering in others.</p></body></html> <html><head/><body><p>右目側の描写を無効にする</p><p>立体視モードでないとき、右目側の画像を描写するのを無効にします。いくつかのアプリケーションで大きくパフォーマンスが向上しますが、ちらつきが起こる可能性があります。</p></body></html> - + Swap Eyes - + Utility ユーティリティ - + <html><head/><body><p>Replace textures with PNG files.</p><p>Textures are loaded from load/textures/[Title ID]/.</p></body></html> <html><head/><body><p>テクスチャをPNGファイルで置き換えます。</p><p>テクスチャは/load/textures/[Title ID]/から読み込まれます。</p></body></html> - + Use custom textures - + <html><head/><body><p>Dump textures to PNG files.</p><p>Textures are dumped to dump/textures/[Title ID]/.</p></body></html> <html><head/><body><p>PNGファイルにテクスチャを出力</p><p>テクスチャは dump/textures/[Title ID]/に出力されます。 - + Dump textures - + <html><head/><body><p>Load all custom textures into memory on boot, instead of loading them when the application requires them.</p></body></html> <html><head/><body><p>カスタムテクスチャーをアプリケーションが使用するときでなく、起動時にメモリーにすべて読み込みます。</p></body></html> - + Preload custom textures - + <html><head/><body><p>Load custom textures asynchronously with background threads to reduce loading stutter</p></body></html> <html><head/><body><p>バックグラウンドスレッドと同期してカスタムテクスチャを読み込み、ロード時のカクつきを軽減します。</p></body></html> - + Async custom texture loading @@ -1493,8 +1513,8 @@ Would you like to ignore the error and continue? - VSync prevents the screen from tearing, but some graphics cards have lower performance with VSync enabled. Keep it enabled if you don't notice a performance difference. - VSyncはティアリングを防止しますが、グラフィックカードによってはパフォーマンスが低下します。パフォーマンスに影響がないようなら有効にしてください。 + <html><head/><body><p>VSync prevents the screen from tearing, but some graphics cards have lower performance with VSync enabled. Keep it enabled if you don't notice a performance difference.</p></body></html> + @@ -1502,22 +1522,32 @@ Would you like to ignore the error and continue? Vsync有効化 - + + <html><head/><body><p>When enabled, this setting detects when the refresh rate of the screen is below that of the 3DS, and when it is, disables VSync automatically to avoid emulation speed being forced below 100%.</p></body></html> + + + + + Enable display refresh rate detection + + + + Use global グローバルを使用します - + Use per-application - + Delay Application Render Thread - + <html><head/><body><p>Delays the emulated application render thread the specified amount of milliseconds every time it submits render commands to the GPU.</p><p>Adjust this feature in the (very few) dynamic framerate applications to fix performance issues.</p></body></html> @@ -1996,170 +2026,243 @@ Would you like to ignore the error and continue? - + Custom Layout - - Swap screens - - - - + Rotate screens upright - + + Swap screens + + + + + Customize layout cycling + + + + Screen Gap - + Large Screen Proportion 大画面比率 - + Small Screen Position 小画面の位置 - + Upper Right 右上 - + Middle Right - + Bottom Right (default) 右下(デフォルト) - + Upper Left 左上 - + Middle Left - + Bottom Left 左下 - + Above large screen 大画面の上 - + Below large screen 大画面の下 - + Background Color - - + + Top Screen 上画面 - - + + X Position - - - - - - - - - + + + + + + + + - - + + + px - - + + Y Position - - + + Width - - + + Height - - + + Bottom Screen 下画面 - + <html><head/><body><p>Bottom Screen Opacity %</p></body></html> - + Single Screen Layout 単一画面構成 - - + + Stretch - - + + Left/Right Padding - - + + Top/Bottom Padding - + Note: These settings affect the Single Screen and Separate Windows layouts + + ConfigureLayoutCycle + + + Configure Layout Cycling + + + + + Screen Layout Cycling Customization + + + + + Select which screen layout options should be cycled with the "Toggle Screen Layout" hotkey + + + + + Use Global Value + + + + + Default + デフォルト + + + + Single Screen + + + + + Large Screen + 大画面 + + + + Side by Side + Side by Side + + + + Separate Windows + ウインドウを分ける + + + + Hybrid + + + + + Custom + Custom + + + + No Layout Selected + + + + + Please select at least one layout option to cycle through. + + + ConfigureMotionTouch - + Configure Motion / Touch モーション/タッチ設定 @@ -2187,8 +2290,10 @@ Would you like to ignore the error and continue? - - + + + + Configure 設定 @@ -2218,58 +2323,68 @@ Would you like to ignore the error and continue? ボタンマッピングを使用: - + + Map touchpads on controllers like the DualSense directly to touch + + + + + Use controller touchpad + + + + CemuhookUDP Config CemuhookUDPの設定 - + You may use any Cemuhook compatible UDP input source to provide motion and touch input. モーション操作やタッチ操作のためにCemuhook互換のUDP入力ソースを使用できます - + Server: サーバ - + Port: ポート - + Pad: パッド - + Pad 1 パッド1 - + Pad 2 パッド2 - + Pad 3 パッド3 - + Pad 4 パッド4 - + Learn More もっと詳しく - - + + Test テスト @@ -2300,57 +2415,68 @@ Would you like to ignore the error and continue? - + + Information 情報 - + After pressing OK, press a button on the controller whose motion you want to track. OKを押してから、トラッキングをしたいコントローラーのボタンを押してください。 - + [press button] [ボタン入力] - + + After pressing OK, tap the touchpad on the controller you want to track. + + + + + [press touchpad] + + + + 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>サーバーが正しく設定されていることを確認した後、アドレスとポートが正しいことを確認してください - + Azahar Azahar - + UDP Test or calibration configuration is in progress.<br>Please wait for them to finish. UDPテスト中またはキャリブレーション設定中です。完了までお待ちください @@ -2520,7 +2646,7 @@ Would you like to ignore the error and continue? - Compresses the content of CIA files when installed to the emulated SD card. Only affects CIA content which is installed while the setting is enabled. + <html><head/><body><p>Compresses the content of CIA files when installed to the emulated SD card. Only affects CIA content which is installed while the setting is enabled.</p></body></html> @@ -4101,596 +4227,611 @@ Please check your FFmpeg installation used for compilation. GMainWindow - + + Warning + 警告 + + + + The `azahar` executable is being run directly rather than via the Azahar.app bundle. + +When run this way, the app may be missing certain functionality such as camera emulation. + +It is recommended to instead run Azahar using the `open` command, e.g.: +`open ./Azahar.app` + + + + No Suitable Vulkan Devices Detected - + Vulkan initialization failed during boot.<br/>Your GPU may not support Vulkan 1.1, or you do not have the latest graphics driver. - + Current Artic traffic speed. Higher values indicate bigger transfer loads. - - + + Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a 3DS. 現在のエミュレーション速度です。100%以外の値は、エミュレーションが3DS実機より高速または低速で行われていることを表します。 - - + + How many frames per second the app is currently displaying. This will vary from app to app and scene to scene. - - + + Time taken to emulate a 3DS frame, not counting framelimiting or v-sync. For full-speed emulation this should be at most 16.67 ms. 3DSフレームをエミュレートするのにかかった時間です。フレームリミットや垂直同期の有効時にはカウントしません。フルスピードで動作させるには16.67ms以下に保つ必要があります。 - + MicroProfile (unavailable) - + Clear Recent Files 最近のファイルを消去 - + &Continue - + &Pause - + Azahar is running an application TRANSLATORS: This string is shown to the user to explain why Citra needs to prevent the computer from sleeping - - + + Invalid App Format - - + + Your app format is not supported.<br/>Please follow the guides to redump your <a href='https://web.archive.org/web/20240304210021/https://citra-emu.org/wiki/dumping-game-cartridges/'>game cartridges</a> or <a href='https://web.archive.org/web/20240304210011/https://citra-emu.org/wiki/dumping-installed-titles/'>installed titles</a>. - + App Corrupted - + Your app is corrupted. <br/>Please follow the guides to redump your <a href='https://web.archive.org/web/20240304210021/https://citra-emu.org/wiki/dumping-game-cartridges/'>game cartridges</a> or <a href='https://web.archive.org/web/20240304210011/https://citra-emu.org/wiki/dumping-installed-titles/'>installed titles</a>. - + App Encrypted - + Your app is encrypted. <br/><a href='https://azahar-emu.org/blog/game-loading-changes/'>Please check our blog for more info.</a> このアプリは暗号化されています。<br/><a href='https://azahar-emu.org/blog/game-loading-changes/'>ブログで詳細な情報を確認してください。</a> - + Unsupported App - + GBA Virtual Console is not supported by Azahar. GBAバーチャルコンソールはAzaharではサポートされていません。 - - + + Artic Server Artic Base - + Invalid system mode - + New 3DS exclusive applications cannot be loaded without enabling the New 3DS mode. - + Error while loading App! - + An unknown error occurred. Please see the log for more details. 不明なエラーが発生しました. 詳細はログを参照してください. - + CIA must be installed before usage CIAを使用前にインストールする必要有 - + Before using this CIA, you must install it. Do you want to install it now? CIAを使用するには先にインストールを行う必要があります。今すぐインストールしますか? - + Quick Load - + Quick Save - - + + Slot %1 スロット %1 - + %2 %3 - + Quick Save - %1 - + Quick Load - %1 - + Slot %1 - %2 %3 - + Error Opening %1 Folder フォルダ %1 を開く際のエラー - - + + Folder does not exist! フォルダが見つかりません! - + Remove Play Time Data プレイ時間のデータを削除 - + Reset play time? プレイ時間をリセットしますか? - - - - + + + + Create Shortcut ショートカットを作成する - + Do you want to launch the application in fullscreen? - + Successfully created a shortcut to %1 %1にショートカットを作成しました。 - + This will create a shortcut to the current AppImage. This may not work well if you update. Continue? - + Failed to create a shortcut to %1 - + Create Icon - + Cannot create icon file. Path "%1" does not exist and cannot be created. - + Dumping... ダンプ中... - - + + Cancel キャンセル - - - - - - - - - + + + + + + + + + Azahar Azahar - + Could not dump base RomFS. Refer to the log for details. ベースRomFSをダンプできませんでした。 詳細はログを参照してください。 - + Error Opening %1 %1 を開く際のエラー - + Select Directory 3DSのROMがあるフォルダを選択 - + Properties プロパティ - + The application properties could not be loaded. - + 3DS Executable (%1);;All Files (*.*) %1 is an identifier for the 3DS executable file extensions. 3DS実行ファイル (%1);;すべてのファイル (*.*) - + Load File ゲームファイルの読み込み - - + + Set Up System Files - + <p>Azahar needs console unique data and firmware files from a real console to be able to use some of its features.<br>Such files and data can be set up with the <a href=https://github.com/azahar-emu/ArticSetupTool>Azahar Artic Setup Tool</a><br>Notes:<ul><li><b>This operation will install console unique data to Azahar, do not share your user or nand folders<br>after performing the setup process!</b></li><li>While doing the setup process, Azahar will link to the console running the setup tool. You can unlink the<br>console later from the System tab in the emulator configuration menu.</li><li>Do not go online with both Azahar and your 3DS console at the same time after setting up system files,<br>as it could cause issues.</li><li>Old 3DS setup is needed for the New 3DS setup to work (doing both setup modes is recommended).</li><li>Both setup modes will work regardless of the model of the console running the setup tool.</li></ul><hr></p> - + Enter Azahar Artic Setup Tool address: - + <br>Choose setup mode: - + (ℹ️) Old 3DS setup - - + + Setup is possible. - + (⚠) New 3DS setup - + Old 3DS setup is required first. - + (✅) Old 3DS setup - - + + Setup completed. - + (ℹ️) New 3DS setup - + (✅) New 3DS setup - + The system files for the selected mode are already set up. Reinstall the files anyway? - + Load Files ファイルの読み込み - + 3DS Installation File (*.cia *.zcia) - - - + + + All Files (*.*) すべてのファイル (*.*) - + Connect to Artic Base Arctic Baseに接続 - + Enter Artic Base server address: - + %1 has been installed successfully. %1が正常にインストールされました - + Unable to open File ファイルを開けません - + Could not open %1 %1を開くことができませんでした - + Installation aborted インストール中止 - + The installation of %1 was aborted. Please see the log for more details %1のインストールは中断されました。詳細はログを参照してください - + Invalid File 無効なファイル - + %1 is not a valid CIA %1は有効なCIAではありません - + CIA Encrypted - + Your CIA file is encrypted.<br/><a href='https://azahar-emu.org/blog/game-loading-changes/'>Please check our blog for more info.</a> - + Unable to find File ファイルが見つかりません - + Could not find %1 %1を見つけられませんでした - - - - + + + + Z3DS Compression - + Failed to compress some files, check log for details. - + Failed to decompress some files, check log for details. - + All files have been compressed successfully. - + All files have been decompressed successfully. - + Uninstalling '%1'... '%1'をアンインストールしています - + Failed to uninstall '%1'. '%1' をアンインストールできませんでした - + Successfully uninstalled '%1'. - + File not found ファイルなし - + File "%1" not found ファイル%1が見つかりませんでした - + Savestates ステートセーブ - + Warning: Savestates are NOT a replacement for in-application saves, and are not meant to be reliable. Use at your own risk! - - - + + + Error opening amiibo data file - + A tag is already in use. - + Application is not looking for amiibos. - + Amiibo File (%1);; All Files (*.*) Amiiboファイル (%1);; すべてのファイル (*.*) - + Load Amiibo Amiiboを読込 - + Unable to open amiibo file "%1" for reading. - + Record Movie 操作を記録 - + Movie recording cancelled. 操作の記録がキャンセルされました - - + + Movie Saved 保存成功 - - + + The movie is successfully saved. 操作記録を保存しました - + Application will unpause - + The application will be unpaused, and the next frame will be captured. Is this okay? - + Invalid Screenshot Directory - + Cannot create specified screenshot directory. Screenshot path is set back to its default value. - + Could not load video dumper - + FFmpeg could not be loaded. Make sure you have a compatible version installed. To install FFmpeg to Azahar, press Open and select your FFmpeg directory. @@ -4699,264 +4840,264 @@ To view a guide on how to install FFmpeg, press Help. - + Load 3DS ROM Files - + 3DS ROM Files (*.cia *.cci *.3dsx *.cxi *.3ds) - + 3DS Compressed ROM File (*.%1) - + Save 3DS Compressed ROM File - + Select Output 3DS Compressed ROM Folder - + Load 3DS Compressed ROM Files - + 3DS Compressed ROM Files (*.zcia *zcci *z3dsx *zcxi) - + 3DS ROM File (*.%1) - + Save 3DS ROM File - + Select Output 3DS ROM Folder - + Select FFmpeg Directory - + The provided FFmpeg directory is missing %1. Please make sure the correct directory was selected. - + FFmpeg has been sucessfully installed. - + Installation of FFmpeg failed. Check the log file for details. - + Could not start video dumping.<br>Please ensure that the video encoder is configured correctly.<br>Refer to the log for details. - + Recording %1 - + Playing %1 / %2 - + Movie Finished - + (Accessing SharedExtData) - + (Accessing SystemSaveData) - + (Accessing BossExtData) - + (Accessing ExtData) - + (Accessing SaveData) - + MB/s - + KB/s - + Artic Traffic: %1 %2%3 - + Speed: %1% スピード:%1% - + Speed: %1% / %2% スピード:%1% / %2% - + App: %1 FPS - + Frame: %1 ms (GPU: [CMD: %2 ms, SWP: %3 ms], IPC: %4 ms, SVC: %5 ms, Rem: %6 ms) - + Frame: %1 ms フレーム:%1 ms - + VOLUME: MUTE 音量: ミュート - + VOLUME: %1% Volume percentage (e.g. 50%) 音量: %1% - + %1 is missing. Please <a href='https://web.archive.org/web/20240304201103/https://citra-emu.org/wiki/dumping-system-archives-and-the-shared-fonts-from-a-3ds-console/'>dump your system archives</a>.<br/>Continuing emulation may result in crashes and bugs. - + A system archive システムアーカイブ - + System Archive Not Found システムアーカイブなし - + System Archive Missing システムアーカイブが見つかりません - + Save/load Error セーブ/ロード エラー - + Fatal Error 致命的なエラー - + A fatal error occurred. <a href='https://web.archive.org/web/20240228001712/https://community.citra-emu.org/t/how-to-upload-the-log-file/296'>Check the log</a> for details.<br/>Continuing emulation may result in crashes and bugs. - + Fatal Error encountered 致命的なエラーが発生しました - + Continue 続行 - + Quit Application - + OK OK - + Would you like to exit now? 今すぐ終了しますか? - + The application is still running. Would you like to stop emulation? - + Playback Completed 再生完了 - + Movie playback completed. 操作記録の再生が完了しました - + Update Available - + Update %1 for Azahar is available. Would you like to download it? - + Primary Window - + Secondary Window @@ -5019,42 +5160,42 @@ Would you like to download it? GRenderWindow - + OpenGL not available! - + OpenGL shared contexts are not supported. - + Error while initializing OpenGL! OpenGLを初期化中にエラーが発生しました! - + Your GPU may not support OpenGL, or you do not have the latest graphics driver. あなたのGPUはOpenGLをサポートしていないか、あなたのGPUドライバーが古い可能性があります。 - + Error while initializing OpenGL 4.3! OpenGL 4.3を初期化中にエラーが発生しました! - + Your GPU may not support OpenGL 4.3, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1 あなたのGPUはOpenGL 4.3をサポートしていないか、あなたのGPUドライバーが古い可能性があります。<br><br>GLレンダラー:<br>%1 - + Error while initializing OpenGL ES 3.2! OpenGL ES 3.2を初期化中にエラーが発生しました! - + Your GPU may not support OpenGL ES 3.2, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1 あなたのGPUはOpenGL ES 3.2をサポートしていないか、あなたのGPUドライバーが古い可能性があります。<br><br>GLレンダラー:<br>%1 @@ -5062,244 +5203,249 @@ Would you like to download it? GameList - - + + Compatibility 動作状況 - - + + Region 地域 - - + + File type ファイルの種類 - - + + Size サイズ - - + + Play time プレイ時間 - + Favorite お気に入り - + Eject Cartridge - + Insert Cartridge - + Open 開く - + Application Location アプリケーションの場所 - + Save Data Location セーブデータの場所 - + Extra Data Location 追加データの場所 - + Update Data Location アップデートデータの場所 - + DLC Data Location DLCデータの場所 - + Texture Dump Location テクスチャのダンプ場所 - + Custom Texture Location カスタムテクスチャの場所 - + Mods Location モッドの場所 - + Dump RomFS RomFSをダンプ - + Disk Shader Cache ディスクシェーダーキャッシュ - + Open Shader Cache Location シェーダーキャッシュの場所を開く - + Delete OpenGL Shader Cache OpenGLシェーダーキャッシュを削除 - + + Delete Vulkan Shader Cache + + + + Uninstall アンインストール - + Everything すべて - + Application - + Update アップデート - + DLC DLC - + Remove Play Time Data プレイ時間のデータを削除 - + Create Shortcut ショートカットを作成する - + Add to Desktop デスクトップ - + Add to Applications Menu スタートメニューに追加 - + Stress Test: App Launch - + Properties プロパティ - - - - + + + + Azahar Azahar - + Are you sure you want to completely uninstall '%1'? This will delete the application if installed, as well as any installed updates or DLC. - - + + %1 (Update) - - + + %1 (DLC) - + Are you sure you want to uninstall '%1'? '%1'をアンインストールしますか? - + Are you sure you want to uninstall the update for '%1'? '%1'のアップデートをアンインストールしますか? - + Are you sure you want to uninstall all DLC for '%1'? '%1'のすべてのDLCを削除しますか? - + Scan Subfolders サブフォルダも検索 - + Remove Application Directory - + Move Up - + Move Down - + Open Directory Location フォルダの場所を開く - + Clear クリア - + Name タイトル @@ -5385,7 +5531,7 @@ Screen. GameListPlaceholder - + Double-click to add a new folder to the application list @@ -5393,27 +5539,27 @@ Screen. GameListSearchField - + of 件ヒットしました - + result 件中 - + results 件中 - + Filter: タイトル名でフィルタ - + Enter pattern to filter ゲームタイトルを入力 @@ -6045,24 +6191,24 @@ Debug Message: シェーダーを準備中 %1 / %2 - - Loading Shaders %1 / %2 - シェーダーをロード中 %1 / %2 + + Loading %3 %1 / %2 + - + Launching... 起動中... - + Now Loading %1 ロード中 %1 - + Estimated Time %1 予想時間 %1 @@ -7037,17 +7183,17 @@ They may have left the room. ファイルを開く - + Error エラー - + Couldn't load the camera カメラをロードできませんでした - + Couldn't load %1 %1 をロードできませんでした diff --git a/dist/languages/ko_KR.ts b/dist/languages/ko_KR.ts index a8997bdf9..706764ff9 100644 --- a/dist/languages/ko_KR.ts +++ b/dist/languages/ko_KR.ts @@ -322,8 +322,8 @@ This would ban both their forum username and their IP address. - This post-processing effect adjusts audio speed to match emulation speed and helps prevent audio stutter. This however increases audio latency. - 이 후처리 효과는 오디오 속도를 에뮬레이션 속도와 일치시키고 오디오 떨림을 방지하는 데 도움이 됩니다. 하지만 이렇게 되면 오디오 지연 시간이 늘어납니다. + <html><head/><body><p>This post-processing effect adjusts audio speed to match emulation speed and helps prevent audio stutter. This however increases audio latency.</p></body></html> + @@ -332,7 +332,7 @@ This would ban both their forum username and their IP address. - Scales audio playback speed to account for drops in emulation framerate. This means that audio will play at full speed even while the application framerate is low. May cause audio desync issues. + <html><head/><body><p>Scales audio playback speed to account for drops in emulation framerate. This means that audio will play at full speed even while the application framerate is low. May cause audio desync issues.</p></body></html> @@ -472,8 +472,8 @@ This would ban both their forum username and their IP address. - Select where the image of the emulated camera comes from. It may be an image or a real camera. - 에뮬레이션되는 카메라의 이미지를 가져올 위치를 선택하십시오. 이미지 또는 실제 카메라일 수 있습니다. + <html><head/><body><p>Select where the image of the emulated camera comes from. It may be an image or a real camera.</p></body></html> + @@ -801,21 +801,31 @@ Would you like to ignore the error and continue? - Force deterministic async operations + <html><head/><body><p>Toggles the unique data console type (Old 3DS ↔ New 3DS) to be able to download the opposite system firmware type from system settings.</p></body></html> - <html><head/><body><p>Forces all async operations to run on the main thread, making them deterministic. Do not enable if you don't know what you are doing.</p></body></html> + Toggle unique data console type - Enable RPC server + Force deterministic async operations + <html><head/><body><p>Forces all async operations to run on the main thread, making them deterministic. Do not enable if you don't know what you are doing.</p></body></html> + + + + + Enable RPC server + + + + <html><head/><body><p>Enables the RPC server on port 45987. This allows remotely reading/writing guest memory, do not enable if you don't know what you are doing.</p></body></html> @@ -1013,176 +1023,186 @@ Would you like to ignore the error and continue? + Use Integer Scaling + + + + + <html><head/><body><p>Use Integer Scaling</p><p>Enforces that the larger screen in all layouts is an integer scale of the 240px height of the original 3DS screen.</p></body></html> + + + + Enable Linear Filtering - + Post-Processing Shader 후처리 셰이더 - + Texture Filter 텍스처 필터 - + None 없음 - + Anime4K Anime4K - + Bicubic Bicubic - + ScaleForce ScaleForce - + xBRZ xBRZ - + MMPX - + Stereoscopy 입체 영상 - + Stereoscopic 3D Mode 스테레오스코픽 3D 모드 - + Off 끄기 - + Side by Side 좌우 보기 - + Side by Side Full Width - + Anaglyph 애너글리프 - + Interlaced 인터레이스 - + Reverse Interlaced 역방향 인터레이스 - + Depth 깊이 - + % % - + Note: Depth values over 100% are not possible on real hardware and may cause graphical issues - + Eye to Render in Monoscopic Mode 모노스코픽 모드에서 렌더링할 눈 - + Left Eye (default) 왼쪽 눈 (기본값) - + Right Eye 오른쪽 눈 - + Disable Right Eye Rendering - + <html><head/><body><p>Disable Right Eye Rendering</p><p>Disables rendering the right eye image when not using stereoscopic mode. Greatly improves performance in some applications, but can cause flickering in others.</p></body></html> - + Swap Eyes - + Utility 도구 - + <html><head/><body><p>Replace textures with PNG files.</p><p>Textures are loaded from load/textures/[Title ID]/.</p></body></html> <html><head/><body><p>텍스처를 PNG 파일로 교체합니다.</p><p>텍스처는 load/textures/[Title ID]/에서 로드됩니다.</p></body></html> - + Use custom textures - + <html><head/><body><p>Dump textures to PNG files.</p><p>Textures are dumped to dump/textures/[Title ID]/.</p></body></html> <html><head/><body><p>텍스처를 PNG 파일로 덤프합니다.</p><p>텍스처를 dump/textures/[Title ID]/에 덤프합니다.</p></body></html> - + Dump textures - + <html><head/><body><p>Load all custom textures into memory on boot, instead of loading them when the application requires them.</p></body></html> - + Preload custom textures - + <html><head/><body><p>Load custom textures asynchronously with background threads to reduce loading stutter</p></body></html> <html><head/><body><p>로딩 끊김을 줄이기 위해 배경 스레드와 비동기식으로 사용자 지정 텍스처를 로드합니다.</p></body></html> - + Async custom texture loading @@ -1488,8 +1508,8 @@ Would you like to ignore the error and continue? - VSync prevents the screen from tearing, but some graphics cards have lower performance with VSync enabled. Keep it enabled if you don't notice a performance difference. - VSync는 티어링을 방지하지만 일부 그래픽 카드는 VSync를 활성화하면 성능이 저하됩니다. 성능 차이가 눈에 띄지 않으면 활성화하십시오. + <html><head/><body><p>VSync prevents the screen from tearing, but some graphics cards have lower performance with VSync enabled. Keep it enabled if you don't notice a performance difference.</p></body></html> + @@ -1497,22 +1517,32 @@ Would you like to ignore the error and continue? VSync 활성화 - + + <html><head/><body><p>When enabled, this setting detects when the refresh rate of the screen is below that of the 3DS, and when it is, disables VSync automatically to avoid emulation speed being forced below 100%.</p></body></html> + + + + + Enable display refresh rate detection + + + + Use global - + Use per-application - + Delay Application Render Thread - + <html><head/><body><p>Delays the emulated application render thread the specified amount of milliseconds every time it submits render commands to the GPU.</p><p>Adjust this feature in the (very few) dynamic framerate applications to fix performance issues.</p></body></html> @@ -1991,170 +2021,243 @@ Would you like to ignore the error and continue? - + Custom Layout - - Swap screens - - - - + Rotate screens upright - + + Swap screens + + + + + Customize layout cycling + + + + Screen Gap - + Large Screen Proportion - + Small Screen Position - + Upper Right - + Middle Right - + Bottom Right (default) - + Upper Left - + Middle Left - + Bottom Left - + Above large screen - + Below large screen - + Background Color - - + + Top Screen - - + + X Position - - - - - - - - - + + + + + + + + - - + + + px - - + + Y Position - - + + Width - - + + Height - - + + Bottom Screen - + <html><head/><body><p>Bottom Screen Opacity %</p></body></html> - + Single Screen Layout - - + + Stretch - - + + Left/Right Padding - - + + Top/Bottom Padding - + Note: These settings affect the Single Screen and Separate Windows layouts + + ConfigureLayoutCycle + + + Configure Layout Cycling + + + + + Screen Layout Cycling Customization + + + + + Select which screen layout options should be cycled with the "Toggle Screen Layout" hotkey + + + + + Use Global Value + + + + + Default + 기본값 + + + + Single Screen + 단일 화면 + + + + Large Screen + 큰 화면 + + + + Side by Side + 좌우 보기 + + + + Separate Windows + 독립된 창 + + + + Hybrid + + + + + Custom + 커스텀 + + + + No Layout Selected + + + + + Please select at least one layout option to cycle through. + + + ConfigureMotionTouch - + Configure Motion / Touch 모션 / 터치 설정 @@ -2182,8 +2285,10 @@ Would you like to ignore the error and continue? - - + + + + Configure 설정 @@ -2213,58 +2318,68 @@ Would you like to ignore the error and continue? 버튼 매핑 사용 : - + + Map touchpads on controllers like the DualSense directly to touch + + + + + Use controller touchpad + + + + CemuhookUDP Config CemuhookUDP 설정 - + You may use any Cemuhook compatible UDP input source to provide motion and touch input. Cemuhook 호환 UDP 입력 소스를 사용하여 동작 및 터치 입력을 제공 할 수 있습니다. - + Server: 서버: - + Port: 포트: - + Pad: 패드: - + Pad 1 패드 1 - + Pad 2 패드 2 - + Pad 3 패드 3 - + Pad 4 패드 4 - + Learn More 자세히 알아보기 - - + + Test 테스트 @@ -2295,57 +2410,68 @@ Would you like to ignore the error and continue? - + + Information 정보 - + After pressing OK, press a button on the controller whose motion you want to track. 확인을 누른 후 움직임을 추적하려는 컨트롤러의 버튼을 누릅니다. - + [press button] [버튼 누르기] - + + After pressing OK, tap the touchpad on the controller you want to track. + + + + + [press touchpad] + + + + 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>서버가 올바르게 설정됐는지 주소와 포트가 정확한지 확인하세요. - + Azahar - + UDP Test or calibration configuration is in progress.<br>Please wait for them to finish. UDP Test 또는 캘리브레이션 설정이 진행중입니다.<br>설정이 끝날때까지 기다려주세요. @@ -2515,7 +2641,7 @@ Would you like to ignore the error and continue? - Compresses the content of CIA files when installed to the emulated SD card. Only affects CIA content which is installed while the setting is enabled. + <html><head/><body><p>Compresses the content of CIA files when installed to the emulated SD card. Only affects CIA content which is installed while the setting is enabled.</p></body></html> @@ -4097,596 +4223,611 @@ Please check your FFmpeg installation used for compilation. GMainWindow - + + Warning + 경고 + + + + The `azahar` executable is being run directly rather than via the Azahar.app bundle. + +When run this way, the app may be missing certain functionality such as camera emulation. + +It is recommended to instead run Azahar using the `open` command, e.g.: +`open ./Azahar.app` + + + + No Suitable Vulkan Devices Detected - + Vulkan initialization failed during boot.<br/>Your GPU may not support Vulkan 1.1, or you do not have the latest graphics driver. - + Current Artic traffic speed. Higher values indicate bigger transfer loads. - - + + Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a 3DS. 현재 에뮬레이션 속도. 100%보다 높거나 낮은 값은 에뮬레이션이 3DS보다 빠르거나 느린 것을 나타냅니다. - - + + How many frames per second the app is currently displaying. This will vary from app to app and scene to scene. - - + + Time taken to emulate a 3DS frame, not counting framelimiting or v-sync. For full-speed emulation this should be at most 16.67 ms. 3DS 프레임을 에뮬레이션 하는 데 걸린 시간, 프레임제한 또는 v-동기화를 카운트하지 않음. 최대 속도 에뮬레이션의 경우, 이는 최대 16.67 ms여야 합니다. - + MicroProfile (unavailable) - + Clear Recent Files 최근 파일 삭제 - + &Continue 계속(&C) - + &Pause 일시중지(&P) - + Azahar is running an application TRANSLATORS: This string is shown to the user to explain why Citra needs to prevent the computer from sleeping - - + + Invalid App Format - - + + Your app format is not supported.<br/>Please follow the guides to redump your <a href='https://web.archive.org/web/20240304210021/https://citra-emu.org/wiki/dumping-game-cartridges/'>game cartridges</a> or <a href='https://web.archive.org/web/20240304210011/https://citra-emu.org/wiki/dumping-installed-titles/'>installed titles</a>. - + App Corrupted - + Your app is corrupted. <br/>Please follow the guides to redump your <a href='https://web.archive.org/web/20240304210021/https://citra-emu.org/wiki/dumping-game-cartridges/'>game cartridges</a> or <a href='https://web.archive.org/web/20240304210011/https://citra-emu.org/wiki/dumping-installed-titles/'>installed titles</a>. - + App Encrypted - + Your app is encrypted. <br/><a href='https://azahar-emu.org/blog/game-loading-changes/'>Please check our blog for more info.</a> - + Unsupported App - + GBA Virtual Console is not supported by Azahar. - - + + Artic Server - + Invalid system mode - + New 3DS exclusive applications cannot be loaded without enabling the New 3DS mode. - + Error while loading App! - + An unknown error occurred. Please see the log for more details. 알 수 없는 오류가 발생했습니다. 자세한 내용은 로그를 참조하십시오. - + CIA must be installed before usage CIA를 사용하기 전에 설치되어야 합니다 - + Before using this CIA, you must install it. Do you want to install it now? 이 CIA를 사용하기 전에 설치해야합니다. 지금 설치 하시겠습니까? - + Quick Load - + Quick Save - - + + Slot %1 슬롯 %1 - + %2 %3 - + Quick Save - %1 - + Quick Load - %1 - + Slot %1 - %2 %3 슬롯 %1 - %2 %3 - + Error Opening %1 Folder %1 폴더 열기 오류 - - + + Folder does not exist! 폴더가 존재하지 않습니다! - + Remove Play Time Data - + Reset play time? - - - - + + + + Create Shortcut - + Do you want to launch the application in fullscreen? - + Successfully created a shortcut to %1 - + This will create a shortcut to the current AppImage. This may not work well if you update. Continue? - + Failed to create a shortcut to %1 - + Create Icon - + Cannot create icon file. Path "%1" does not exist and cannot be created. - + Dumping... 덤프중... - - + + Cancel 취소 - - - - - - - - - + + + + + + + + + Azahar - + Could not dump base RomFS. Refer to the log for details. 베이스 RomFS를 덤프 할 수 없습니다. 자세한 내용은 로그를 참조하십시오. - + Error Opening %1 %1 열기 오류 - + Select Directory 디렉터리 선택하기 - + Properties 속성 - + The application properties could not be loaded. - + 3DS Executable (%1);;All Files (*.*) %1 is an identifier for the 3DS executable file extensions. 3DS 실행파일 (%1);;모든파일 (*.*) - + Load File 파일 불러오기 - - + + Set Up System Files - + <p>Azahar needs console unique data and firmware files from a real console to be able to use some of its features.<br>Such files and data can be set up with the <a href=https://github.com/azahar-emu/ArticSetupTool>Azahar Artic Setup Tool</a><br>Notes:<ul><li><b>This operation will install console unique data to Azahar, do not share your user or nand folders<br>after performing the setup process!</b></li><li>While doing the setup process, Azahar will link to the console running the setup tool. You can unlink the<br>console later from the System tab in the emulator configuration menu.</li><li>Do not go online with both Azahar and your 3DS console at the same time after setting up system files,<br>as it could cause issues.</li><li>Old 3DS setup is needed for the New 3DS setup to work (doing both setup modes is recommended).</li><li>Both setup modes will work regardless of the model of the console running the setup tool.</li></ul><hr></p> - + Enter Azahar Artic Setup Tool address: - + <br>Choose setup mode: - + (ℹ️) Old 3DS setup - - + + Setup is possible. - + (⚠) New 3DS setup - + Old 3DS setup is required first. - + (✅) Old 3DS setup - - + + Setup completed. - + (ℹ️) New 3DS setup - + (✅) New 3DS setup - + The system files for the selected mode are already set up. Reinstall the files anyway? - + Load Files 파일 불러오기 - + 3DS Installation File (*.cia *.zcia) - - - + + + All Files (*.*) 모든파일 (*.*) - + Connect to Artic Base - + Enter Artic Base server address: - + %1 has been installed successfully. %1가 성공적으로 설치되었습니다. - + Unable to open File 파일을 열 수 없음 - + Could not open %1 %1을(를) 열 수 없음 - + Installation aborted 설치 중단됨 - + The installation of %1 was aborted. Please see the log for more details %1의 설치가 중단되었습니다. 자세한 내용은 로그를 참조하십시오. - + Invalid File 올바르지 않은 파일 - + %1 is not a valid CIA %1은 올바른 CIA가 아닙니다 - + CIA Encrypted - + Your CIA file is encrypted.<br/><a href='https://azahar-emu.org/blog/game-loading-changes/'>Please check our blog for more info.</a> - + Unable to find File 파일을 찾을 수 없음 - + Could not find %1 1을(를) 찾을 수 없습니다 - - - - + + + + Z3DS Compression - + Failed to compress some files, check log for details. - + Failed to decompress some files, check log for details. - + All files have been compressed successfully. - + All files have been decompressed successfully. - + Uninstalling '%1'... - + Failed to uninstall '%1'. - + Successfully uninstalled '%1'. - + File not found 파일을 찾을 수 없음 - + File "%1" not found "%1" 파일을 찾을 수 없음 - + Savestates 상태저장(Savestates) - + Warning: Savestates are NOT a replacement for in-application saves, and are not meant to be reliable. Use at your own risk! - - - + + + Error opening amiibo data file Amiibo 데이터 파일 열기 오류 - + A tag is already in use. 태그가 이미 사용중입니다. - + Application is not looking for amiibos. - + Amiibo File (%1);; All Files (*.*) Amiibo 파일 (%1);; 모든파일 (*.*) - + Load Amiibo Amiibo 불러오기 - + Unable to open amiibo file "%1" for reading. Amiibo 파일 "%1"을 읽을 수 없습니다. - + Record Movie 무비 녹화 - + Movie recording cancelled. 무비 레코딩이 취소되었습니다. - - + + Movie Saved 무비 저장됨 - - + + The movie is successfully saved. 무비가 성공적으로 저장되었습니다 - + Application will unpause - + The application will be unpaused, and the next frame will be captured. Is this okay? - + Invalid Screenshot Directory 올바르지 않은 스크린숏 디렉터리 - + Cannot create specified screenshot directory. Screenshot path is set back to its default value. 지정된 스크린숏 디렉터리를 생성할 수 없습니다. 스크린숏 경로가 기본값으로 다시 설정됩니다. - + Could not load video dumper 비디오 덤퍼를 불러올 수 없습니다 - + FFmpeg could not be loaded. Make sure you have a compatible version installed. To install FFmpeg to Azahar, press Open and select your FFmpeg directory. @@ -4695,264 +4836,264 @@ To view a guide on how to install FFmpeg, press Help. - + Load 3DS ROM Files - + 3DS ROM Files (*.cia *.cci *.3dsx *.cxi *.3ds) - + 3DS Compressed ROM File (*.%1) - + Save 3DS Compressed ROM File - + Select Output 3DS Compressed ROM Folder - + Load 3DS Compressed ROM Files - + 3DS Compressed ROM Files (*.zcia *zcci *z3dsx *zcxi) - + 3DS ROM File (*.%1) - + Save 3DS ROM File - + Select Output 3DS ROM Folder - + Select FFmpeg Directory FFmpeg 디렉토리 선택 - + The provided FFmpeg directory is missing %1. Please make sure the correct directory was selected. 제공된 FFmpeg 디렉토리에 %1이 없습니다. 올바른 디렉토리가 선택되었는지 확인하십시오. - + FFmpeg has been sucessfully installed. FFmpeg가 성공적으로 설치되었습니다. - + Installation of FFmpeg failed. Check the log file for details. FFmpeg 설치에 실패했습니다. 자세한 내용은 로그 파일을 확인하십시오. - + Could not start video dumping.<br>Please ensure that the video encoder is configured correctly.<br>Refer to the log for details. - + Recording %1 %1 녹화 중 - + Playing %1 / %2 %1 / %2 재생 중 - + Movie Finished 무비 완료됨 - + (Accessing SharedExtData) - + (Accessing SystemSaveData) - + (Accessing BossExtData) - + (Accessing ExtData) - + (Accessing SaveData) - + MB/s - + KB/s - + Artic Traffic: %1 %2%3 - + Speed: %1% 속도: %1% - + Speed: %1% / %2% 속도: %1% / %2% - + App: %1 FPS - + Frame: %1 ms (GPU: [CMD: %2 ms, SWP: %3 ms], IPC: %4 ms, SVC: %5 ms, Rem: %6 ms) - + Frame: %1 ms 프레임: %1 ms - + VOLUME: MUTE - + VOLUME: %1% Volume percentage (e.g. 50%) - + %1 is missing. Please <a href='https://web.archive.org/web/20240304201103/https://citra-emu.org/wiki/dumping-system-archives-and-the-shared-fonts-from-a-3ds-console/'>dump your system archives</a>.<br/>Continuing emulation may result in crashes and bugs. - + A system archive 시스템 아카이브 - + System Archive Not Found 시스템 아카이브를 찾을수 없습니다 - + System Archive Missing 시스템 아카이브가 없습니다 - + Save/load Error 저장하기/불러오기 오류 - + Fatal Error 치명적인 오류 - + A fatal error occurred. <a href='https://web.archive.org/web/20240228001712/https://community.citra-emu.org/t/how-to-upload-the-log-file/296'>Check the log</a> for details.<br/>Continuing emulation may result in crashes and bugs. - + Fatal Error encountered 치명적인 오류가 발생했습니다 - + Continue 계속 - + Quit Application - + OK 확인 - + Would you like to exit now? 지금 종료하시겠습니까? - + The application is still running. Would you like to stop emulation? - + Playback Completed 재생 완료 - + Movie playback completed. 무비 재생 완료 - + Update Available - + Update %1 for Azahar is available. Would you like to download it? - + Primary Window 첫번째 윈도우 - + Secondary Window 두번째 윈도우 @@ -5015,42 +5156,42 @@ Would you like to download it? GRenderWindow - + OpenGL not available! OpenGL을 사용할 수 없습니다! - + OpenGL shared contexts are not supported. 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.3! OpenGL 4.3을 초기화하는 동안 오류가 발생했습니다! - + Your GPU may not support OpenGL 4.3, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1 GPU가 OpenGL 4.3을 지원하지 않거나 최신 그래픽 드라이버를 가지고 있지 않을 수 있습니다.<br><br>GL 렌더러:<br>%1 - + Error while initializing OpenGL ES 3.2! - + Your GPU may not support OpenGL ES 3.2, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1 @@ -5058,244 +5199,249 @@ Would you like to download it? GameList - - + + Compatibility 호환성 - - + + Region 지역 - - + + File type 파일 타입 - - + + Size 크기 - - + + Play time - + Favorite - + Eject Cartridge - + Insert Cartridge - + Open 열기 - + Application Location - + Save Data Location - + Extra Data Location - + Update Data Location - + DLC Data Location - + Texture Dump Location - + Custom Texture Location - + Mods Location - + Dump RomFS RomFS 덤프 - + Disk Shader Cache 디스크 셰이더 캐시 - + Open Shader Cache Location 셰이더 캐시 위치 열기 - + Delete OpenGL Shader Cache OpenGL 셰이더 캐시 삭제하기 - + + Delete Vulkan Shader Cache + + + + Uninstall - + Everything - + Application - + Update - + DLC - + Remove Play Time Data - + Create Shortcut - + Add to Desktop - + Add to Applications Menu - + Stress Test: App Launch - + Properties 속성 - - - - + + + + Azahar - + Are you sure you want to completely uninstall '%1'? This will delete the application if installed, as well as any installed updates or DLC. - - + + %1 (Update) - - + + %1 (DLC) - + Are you sure you want to uninstall '%1'? - + Are you sure you want to uninstall the update for '%1'? - + Are you sure you want to uninstall all DLC for '%1'? - + Scan Subfolders 서브 디렉토리 스캔 - + Remove Application Directory - + Move Up 위로 - + Move Down 아래로 - + Open Directory Location 디렉터리 위치 열기 - + Clear 지우기 - + Name 이름 @@ -5381,7 +5527,7 @@ Screen. GameListPlaceholder - + Double-click to add a new folder to the application list @@ -5389,27 +5535,27 @@ Screen. GameListSearchField - + of 중의 - + result 결과 - + results 결과 - + Filter: 필터: - + Enter pattern to filter 검색 필터 입력 @@ -6040,24 +6186,24 @@ Debug Message: 셰이더 준비중 %1 / %2 - - Loading Shaders %1 / %2 - %1 / %2 셰이더 불러오는 중 + + Loading %3 %1 / %2 + - + Launching... 실행중... - + Now Loading %1 지금 불러오는 중 %1 - + Estimated Time %1 추정 시간 %1 @@ -7030,17 +7176,17 @@ They may have left the room. 파일 열기 - + Error 오류 - + Couldn't load the camera 카메라를 불러올 수 없습니다 - + Couldn't load %1 %1을(를) 불러올 수 없습니다 diff --git a/dist/languages/lt_LT.ts b/dist/languages/lt_LT.ts index 5c8254113..193e7f029 100644 --- a/dist/languages/lt_LT.ts +++ b/dist/languages/lt_LT.ts @@ -320,8 +320,8 @@ This would ban both their forum username and their IP address. - This post-processing effect adjusts audio speed to match emulation speed and helps prevent audio stutter. This however increases audio latency. - Šis efektas suderina garso greitį su emuliacijos greičiu ir padeda išvengti garso trūkinėjimų. Bet tai kartu pailgina garso latenciją. + <html><head/><body><p>This post-processing effect adjusts audio speed to match emulation speed and helps prevent audio stutter. This however increases audio latency.</p></body></html> + @@ -330,7 +330,7 @@ This would ban both their forum username and their IP address. - Scales audio playback speed to account for drops in emulation framerate. This means that audio will play at full speed even while the application framerate is low. May cause audio desync issues. + <html><head/><body><p>Scales audio playback speed to account for drops in emulation framerate. This means that audio will play at full speed even while the application framerate is low. May cause audio desync issues.</p></body></html> @@ -470,8 +470,8 @@ This would ban both their forum username and their IP address. - Select where the image of the emulated camera comes from. It may be an image or a real camera. - Pasirinkite kameros įvestį. Tai gali būti paveikslėlis arba tikra kamera. + <html><head/><body><p>Select where the image of the emulated camera comes from. It may be an image or a real camera.</p></body></html> + @@ -798,21 +798,31 @@ Would you like to ignore the error and continue? - Force deterministic async operations + <html><head/><body><p>Toggles the unique data console type (Old 3DS ↔ New 3DS) to be able to download the opposite system firmware type from system settings.</p></body></html> - <html><head/><body><p>Forces all async operations to run on the main thread, making them deterministic. Do not enable if you don't know what you are doing.</p></body></html> + Toggle unique data console type - Enable RPC server + Force deterministic async operations + <html><head/><body><p>Forces all async operations to run on the main thread, making them deterministic. Do not enable if you don't know what you are doing.</p></body></html> + + + + + Enable RPC server + + + + <html><head/><body><p>Enables the RPC server on port 45987. This allows remotely reading/writing guest memory, do not enable if you don't know what you are doing.</p></body></html> @@ -1010,176 +1020,186 @@ Would you like to ignore the error and continue? + Use Integer Scaling + + + + + <html><head/><body><p>Use Integer Scaling</p><p>Enforces that the larger screen in all layouts is an integer scale of the 240px height of the original 3DS screen.</p></body></html> + + + + Enable Linear Filtering - + Post-Processing Shader - + Texture Filter - + None Nėra - + Anime4K - + Bicubic - + ScaleForce - + xBRZ - + MMPX - + Stereoscopy - + Stereoscopic 3D Mode - + Off - + Side by Side Vienas prie kito šonu - + Side by Side Full Width - + Anaglyph - + Interlaced - + Reverse Interlaced - + Depth - + % - + Note: Depth values over 100% are not possible on real hardware and may cause graphical issues - + Eye to Render in Monoscopic Mode - + Left Eye (default) - + Right Eye - + Disable Right Eye Rendering - + <html><head/><body><p>Disable Right Eye Rendering</p><p>Disables rendering the right eye image when not using stereoscopic mode. Greatly improves performance in some applications, but can cause flickering in others.</p></body></html> - + Swap Eyes - + Utility - + <html><head/><body><p>Replace textures with PNG files.</p><p>Textures are loaded from load/textures/[Title ID]/.</p></body></html> - + Use custom textures - + <html><head/><body><p>Dump textures to PNG files.</p><p>Textures are dumped to dump/textures/[Title ID]/.</p></body></html> - + Dump textures - + <html><head/><body><p>Load all custom textures into memory on boot, instead of loading them when the application requires them.</p></body></html> - + Preload custom textures - + <html><head/><body><p>Load custom textures asynchronously with background threads to reduce loading stutter</p></body></html> - + Async custom texture loading @@ -1485,7 +1505,7 @@ Would you like to ignore the error and continue? - VSync prevents the screen from tearing, but some graphics cards have lower performance with VSync enabled. Keep it enabled if you don't notice a performance difference. + <html><head/><body><p>VSync prevents the screen from tearing, but some graphics cards have lower performance with VSync enabled. Keep it enabled if you don't notice a performance difference.</p></body></html> @@ -1494,22 +1514,32 @@ Would you like to ignore the error and continue? - + + <html><head/><body><p>When enabled, this setting detects when the refresh rate of the screen is below that of the 3DS, and when it is, disables VSync automatically to avoid emulation speed being forced below 100%.</p></body></html> + + + + + Enable display refresh rate detection + + + + Use global - + Use per-application - + Delay Application Render Thread - + <html><head/><body><p>Delays the emulated application render thread the specified amount of milliseconds every time it submits render commands to the GPU.</p><p>Adjust this feature in the (very few) dynamic framerate applications to fix performance issues.</p></body></html> @@ -1988,170 +2018,243 @@ Would you like to ignore the error and continue? - + Custom Layout - - Swap screens - - - - + Rotate screens upright - + + Swap screens + + + + + Customize layout cycling + + + + Screen Gap - + Large Screen Proportion - + Small Screen Position - + Upper Right - + Middle Right - + Bottom Right (default) - + Upper Left - + Middle Left - + Bottom Left - + Above large screen - + Below large screen - + Background Color - - + + Top Screen - - + + X Position - - - - - - - - - + + + + + + + + - - + + + px - - + + Y Position - - + + Width - - + + Height - - + + Bottom Screen - + <html><head/><body><p>Bottom Screen Opacity %</p></body></html> - + Single Screen Layout - - + + Stretch - - + + Left/Right Padding - - + + Top/Bottom Padding - + Note: These settings affect the Single Screen and Separate Windows layouts + + ConfigureLayoutCycle + + + Configure Layout Cycling + + + + + Screen Layout Cycling Customization + + + + + Select which screen layout options should be cycled with the "Toggle Screen Layout" hotkey + + + + + Use Global Value + + + + + Default + Numatytasis + + + + Single Screen + Vienas ekranas + + + + Large Screen + Didelis ekranas + + + + Side by Side + Vienas prie kito šonu + + + + Separate Windows + + + + + Hybrid + + + + + Custom + Pasirinktinis + + + + No Layout Selected + + + + + Please select at least one layout option to cycle through. + + + ConfigureMotionTouch - + Configure Motion / Touch Konfigūruoti judesius / lietimą @@ -2179,8 +2282,10 @@ Would you like to ignore the error and continue? - - + + + + Configure Konfigūruoti @@ -2210,58 +2315,68 @@ Would you like to ignore the error and continue? - + + Map touchpads on controllers like the DualSense directly to touch + + + + + Use controller touchpad + + + + CemuhookUDP Config CemuhookUDP konfigūracija - + You may use any Cemuhook compatible UDP input source to provide motion and touch input. Jūs galite naudoti bet kokį suderinamą CemuhookUDP įvesties šaltinį perduodant judesius ir lietimą. - + Server: Serveris: - + Port: Įvadas: - + Pad: Įvestis: - + Pad 1 Įvestis 1 - + Pad 2 Įvestis 2 - + Pad 3 Įvestis 3 - + Pad 4 Įvestis 4 - + Learn More Sužinokite daugiau - - + + Test Testuoti @@ -2292,57 +2407,68 @@ Would you like to ignore the error and continue? - + + Information Informacija - + After pressing OK, press a button on the controller whose motion you want to track. - + [press button] - + + After pressing OK, tap the touchpad on the controller you want to track. + + + + + [press touchpad] + + + + Testing Testuojama - + Configuring Konfigūruojama - + Test Successful Testavimas pavyko - + Successfully received data from the server. Sėkmingai gauti duomenys iš serverio. - + Test Failed Testavimas nepavyko - + 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. Nepavyko gauti duomenų iš serverio. <br> Prašome patikrinti, ar serveris yra teisingai sukonfigūruotas ir adresas / įvadas yra teisingi. - + Azahar - + UDP Test or calibration configuration is in progress.<br>Please wait for them to finish. Vyksta UDP testavimas ar kalibracija. <br> Prašome palaukti kol procesai bus užbaigti. @@ -2512,7 +2638,7 @@ Would you like to ignore the error and continue? - Compresses the content of CIA files when installed to the emulated SD card. Only affects CIA content which is installed while the setting is enabled. + <html><head/><body><p>Compresses the content of CIA files when installed to the emulated SD card. Only affects CIA content which is installed while the setting is enabled.</p></body></html> @@ -4092,595 +4218,610 @@ Please check your FFmpeg installation used for compilation. GMainWindow - + + Warning + Įspėjimas + + + + The `azahar` executable is being run directly rather than via the Azahar.app bundle. + +When run this way, the app may be missing certain functionality such as camera emulation. + +It is recommended to instead run Azahar using the `open` command, e.g.: +`open ./Azahar.app` + + + + No Suitable Vulkan Devices Detected - + Vulkan initialization failed during boot.<br/>Your GPU may not support Vulkan 1.1, or you do not have the latest graphics driver. - + Current Artic traffic speed. Higher values indicate bigger transfer loads. - - + + Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a 3DS. Dabartinės emuliacijos greitis. Reikšmės žemiau ar aukščiau 100% parodo, kad emuliacija veikia greičiau ar lėčiau negu 3DS. - - + + How many frames per second the app is currently displaying. This will vary from app to app and scene to scene. - - + + Time taken to emulate a 3DS frame, not counting framelimiting or v-sync. For full-speed emulation this should be at most 16.67 ms. Laikas, kuris buvo sunaudotas atvaizduoti 1 3DS kadrą, neskaičiuojant FPS ribojimo ar V-Sync. Pilno greičio emuliacijai reikalinga daugiausia 16.67 ms reikšmė. - + MicroProfile (unavailable) - + Clear Recent Files Pravalyti neseniai įkrautus failus - + &Continue - + &Pause - + Azahar is running an application TRANSLATORS: This string is shown to the user to explain why Citra needs to prevent the computer from sleeping - - + + Invalid App Format - - + + Your app format is not supported.<br/>Please follow the guides to redump your <a href='https://web.archive.org/web/20240304210021/https://citra-emu.org/wiki/dumping-game-cartridges/'>game cartridges</a> or <a href='https://web.archive.org/web/20240304210011/https://citra-emu.org/wiki/dumping-installed-titles/'>installed titles</a>. - + App Corrupted - + Your app is corrupted. <br/>Please follow the guides to redump your <a href='https://web.archive.org/web/20240304210021/https://citra-emu.org/wiki/dumping-game-cartridges/'>game cartridges</a> or <a href='https://web.archive.org/web/20240304210011/https://citra-emu.org/wiki/dumping-installed-titles/'>installed titles</a>. - + App Encrypted - + Your app is encrypted. <br/><a href='https://azahar-emu.org/blog/game-loading-changes/'>Please check our blog for more info.</a> - + Unsupported App - + GBA Virtual Console is not supported by Azahar. - - + + Artic Server - + Invalid system mode - + New 3DS exclusive applications cannot be loaded without enabling the New 3DS mode. - + Error while loading App! - + An unknown error occurred. Please see the log for more details. - + CIA must be installed before usage - + Before using this CIA, you must install it. Do you want to install it now? - + Quick Load - + Quick Save - - + + Slot %1 - + %2 %3 - + Quick Save - %1 - + Quick Load - %1 - + Slot %1 - %2 %3 - + Error Opening %1 Folder Klaida atidarant %1 aplanką - - + + Folder does not exist! Aplankas neegzistuoja! - + Remove Play Time Data - + Reset play time? - - - - + + + + Create Shortcut - + Do you want to launch the application in fullscreen? - + Successfully created a shortcut to %1 - + This will create a shortcut to the current AppImage. This may not work well if you update. Continue? - + Failed to create a shortcut to %1 - + Create Icon - + Cannot create icon file. Path "%1" does not exist and cannot be created. - + Dumping... - - + + Cancel Atšaukti - - - - - - - - - + + + + + + + + + Azahar - + Could not dump base RomFS. Refer to the log for details. - + Error Opening %1 Klaida atidarant %1 - + Select Directory Pasirinkti katalogą - + Properties - + The application properties could not be loaded. - + 3DS Executable (%1);;All Files (*.*) %1 is an identifier for the 3DS executable file extensions. 3DS programa (%1);;Visi failai (*.*) - + Load File Įkrauti failą - - + + Set Up System Files - + <p>Azahar needs console unique data and firmware files from a real console to be able to use some of its features.<br>Such files and data can be set up with the <a href=https://github.com/azahar-emu/ArticSetupTool>Azahar Artic Setup Tool</a><br>Notes:<ul><li><b>This operation will install console unique data to Azahar, do not share your user or nand folders<br>after performing the setup process!</b></li><li>While doing the setup process, Azahar will link to the console running the setup tool. You can unlink the<br>console later from the System tab in the emulator configuration menu.</li><li>Do not go online with both Azahar and your 3DS console at the same time after setting up system files,<br>as it could cause issues.</li><li>Old 3DS setup is needed for the New 3DS setup to work (doing both setup modes is recommended).</li><li>Both setup modes will work regardless of the model of the console running the setup tool.</li></ul><hr></p> - + Enter Azahar Artic Setup Tool address: - + <br>Choose setup mode: - + (ℹ️) Old 3DS setup - - + + Setup is possible. - + (⚠) New 3DS setup - + Old 3DS setup is required first. - + (✅) Old 3DS setup - - + + Setup completed. - + (ℹ️) New 3DS setup - + (✅) New 3DS setup - + The system files for the selected mode are already set up. Reinstall the files anyway? - + Load Files Įkrauti failus - + 3DS Installation File (*.cia *.zcia) - - - + + + All Files (*.*) Visi failai (*.*) - + Connect to Artic Base - + Enter Artic Base server address: - + %1 has been installed successfully. %1 buvo įdiegtas sėkmingai. - + Unable to open File Negalima atverti failo - + Could not open %1 Nepavyko atverti %1 - + Installation aborted Instaliacija nutraukta - + The installation of %1 was aborted. Please see the log for more details Failo %1 instaliacija buvo nutraukta. Pasižiūrėkite į žurnalą dėl daugiau informacijos - + Invalid File Klaidingas failas - + %1 is not a valid CIA %1 nėra tinkamas CIA - + CIA Encrypted - + Your CIA file is encrypted.<br/><a href='https://azahar-emu.org/blog/game-loading-changes/'>Please check our blog for more info.</a> - + Unable to find File - + Could not find %1 - - - - + + + + Z3DS Compression - + Failed to compress some files, check log for details. - + Failed to decompress some files, check log for details. - + All files have been compressed successfully. - + All files have been decompressed successfully. - + Uninstalling '%1'... - + Failed to uninstall '%1'. - + Successfully uninstalled '%1'. - + File not found Failas nerastas - + File "%1" not found Failas "%1" nerastas - + Savestates - + Warning: Savestates are NOT a replacement for in-application saves, and are not meant to be reliable. Use at your own risk! - - - + + + Error opening amiibo data file - + A tag is already in use. - + Application is not looking for amiibos. - + Amiibo File (%1);; All Files (*.*) „Amiibo“ failas (%1);; Visi failai (*.*) - + Load Amiibo Įkrauti „Amiibo“ - + Unable to open amiibo file "%1" for reading. - + Record Movie Įrašyti įvesčių vaizdo įrašą - + Movie recording cancelled. Įrašo įrašymas nutrauktas. - - + + Movie Saved Įrašas išsaugotas - - + + The movie is successfully saved. Filmas sėkmingai išsaugotas. - + Application will unpause - + The application will be unpaused, and the next frame will be captured. Is this okay? - + Invalid Screenshot Directory - + Cannot create specified screenshot directory. Screenshot path is set back to its default value. - + Could not load video dumper - + FFmpeg could not be loaded. Make sure you have a compatible version installed. To install FFmpeg to Azahar, press Open and select your FFmpeg directory. @@ -4689,264 +4830,264 @@ To view a guide on how to install FFmpeg, press Help. - + Load 3DS ROM Files - + 3DS ROM Files (*.cia *.cci *.3dsx *.cxi *.3ds) - + 3DS Compressed ROM File (*.%1) - + Save 3DS Compressed ROM File - + Select Output 3DS Compressed ROM Folder - + Load 3DS Compressed ROM Files - + 3DS Compressed ROM Files (*.zcia *zcci *z3dsx *zcxi) - + 3DS ROM File (*.%1) - + Save 3DS ROM File - + Select Output 3DS ROM Folder - + Select FFmpeg Directory - + The provided FFmpeg directory is missing %1. Please make sure the correct directory was selected. - + FFmpeg has been sucessfully installed. - + Installation of FFmpeg failed. Check the log file for details. - + Could not start video dumping.<br>Please ensure that the video encoder is configured correctly.<br>Refer to the log for details. - + Recording %1 - + Playing %1 / %2 - + Movie Finished - + (Accessing SharedExtData) - + (Accessing SystemSaveData) - + (Accessing BossExtData) - + (Accessing ExtData) - + (Accessing SaveData) - + MB/s - + KB/s - + Artic Traffic: %1 %2%3 - + Speed: %1% Greitis: %1% - + Speed: %1% / %2% Greitis: %1% / %2% - + App: %1 FPS - + Frame: %1 ms (GPU: [CMD: %2 ms, SWP: %3 ms], IPC: %4 ms, SVC: %5 ms, Rem: %6 ms) - + Frame: %1 ms Kadras: %1 ms - + VOLUME: MUTE - + VOLUME: %1% Volume percentage (e.g. 50%) - + %1 is missing. Please <a href='https://web.archive.org/web/20240304201103/https://citra-emu.org/wiki/dumping-system-archives-and-the-shared-fonts-from-a-3ds-console/'>dump your system archives</a>.<br/>Continuing emulation may result in crashes and bugs. - + A system archive - + System Archive Not Found Sisteminis archyvas nerastas - + System Archive Missing - + Save/load Error - + Fatal Error Nepataisoma klaida - + A fatal error occurred. <a href='https://web.archive.org/web/20240228001712/https://community.citra-emu.org/t/how-to-upload-the-log-file/296'>Check the log</a> for details.<br/>Continuing emulation may result in crashes and bugs. - + Fatal Error encountered - + Continue Tęsti - + Quit Application - + OK Gerai - + Would you like to exit now? Ar norite išeiti? - + The application is still running. Would you like to stop emulation? - + Playback Completed Atkūrimas užbaigtas - + Movie playback completed. Įrašo atkūrimas užbaigtas. - + Update Available - + Update %1 for Azahar is available. Would you like to download it? - + Primary Window - + Secondary Window @@ -5009,42 +5150,42 @@ Would you like to download it? GRenderWindow - + OpenGL not available! - + OpenGL shared contexts are not supported. - + Error while initializing OpenGL! - + Your GPU may not support OpenGL, or you do not have the latest graphics driver. - + Error while initializing OpenGL 4.3! - + Your GPU may not support OpenGL 4.3, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1 - + Error while initializing OpenGL ES 3.2! - + Your GPU may not support OpenGL ES 3.2, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1 @@ -5052,244 +5193,249 @@ Would you like to download it? GameList - - + + Compatibility Suderinamumas - - + + Region Regionas - - + + File type Failo tipas - - + + Size Dydis - - + + Play time - + Favorite - + Eject Cartridge - + Insert Cartridge - + Open - + Application Location - + Save Data Location - + Extra Data Location - + Update Data Location - + DLC Data Location - + Texture Dump Location - + Custom Texture Location - + Mods Location - + Dump RomFS - + Disk Shader Cache - + Open Shader Cache Location - + Delete OpenGL Shader Cache - + + Delete Vulkan Shader Cache + + + + Uninstall - + Everything - + Application - + Update - + DLC - + Remove Play Time Data - + Create Shortcut - + Add to Desktop - + Add to Applications Menu - + Stress Test: App Launch - + Properties - - - - + + + + Azahar - + Are you sure you want to completely uninstall '%1'? This will delete the application if installed, as well as any installed updates or DLC. - - + + %1 (Update) - - + + %1 (DLC) - + Are you sure you want to uninstall '%1'? - + Are you sure you want to uninstall the update for '%1'? - + Are you sure you want to uninstall all DLC for '%1'? - + Scan Subfolders Ieškoti poaplankius - + Remove Application Directory - + Move Up - + Move Down - + Open Directory Location Atidaryti katalogo vietą - + Clear Išvalyti - + Name Pavadinimas @@ -5375,7 +5521,7 @@ Screen. GameListPlaceholder - + Double-click to add a new folder to the application list @@ -5383,27 +5529,27 @@ Screen. GameListSearchField - + of - + result rezultatų - + results rezultatai - + Filter: Filtras: - + Enter pattern to filter Įveskite raktinius žodžius filtravimui @@ -6035,23 +6181,23 @@ Debug Message: - - Loading Shaders %1 / %2 + + Loading %3 %1 / %2 - + Launching... - + Now Loading %1 - + Estimated Time %1 @@ -7023,17 +7169,17 @@ They may have left the room. Atidaryti failą - + Error Klaida - + Couldn't load the camera Nepavyko įkrauti kameros - + Couldn't load %1 Nepavyko įkrauti %1 diff --git a/dist/languages/nb.ts b/dist/languages/nb.ts index adacee4d3..25e9cebd7 100644 --- a/dist/languages/nb.ts +++ b/dist/languages/nb.ts @@ -322,8 +322,8 @@ Dette ville forby både deres brukernavn og IP-adressen. - This post-processing effect adjusts audio speed to match emulation speed and helps prevent audio stutter. This however increases audio latency. - Denne etterbehandlingeffekten justerer lydhastigheten for å samsvare med emuleringshastigheten og bidrar til å forhindre lyd-hakking. Dette øker imidlertid lyd forsinkelsen. + <html><head/><body><p>This post-processing effect adjusts audio speed to match emulation speed and helps prevent audio stutter. This however increases audio latency.</p></body></html> + @@ -332,7 +332,7 @@ Dette ville forby både deres brukernavn og IP-adressen. - Scales audio playback speed to account for drops in emulation framerate. This means that audio will play at full speed even while the application framerate is low. May cause audio desync issues. + <html><head/><body><p>Scales audio playback speed to account for drops in emulation framerate. This means that audio will play at full speed even while the application framerate is low. May cause audio desync issues.</p></body></html> @@ -472,8 +472,8 @@ Dette ville forby både deres brukernavn og IP-adressen. - Select where the image of the emulated camera comes from. It may be an image or a real camera. - Velg hvor bildet fra det emulerte kameraet kommer fra. Det kan være et bilde eller et ekte kamera. + <html><head/><body><p>Select where the image of the emulated camera comes from. It may be an image or a real camera.</p></body></html> + @@ -800,21 +800,31 @@ Would you like to ignore the error and continue? - Force deterministic async operations + <html><head/><body><p>Toggles the unique data console type (Old 3DS ↔ New 3DS) to be able to download the opposite system firmware type from system settings.</p></body></html> - <html><head/><body><p>Forces all async operations to run on the main thread, making them deterministic. Do not enable if you don't know what you are doing.</p></body></html> + Toggle unique data console type - Enable RPC server + Force deterministic async operations + <html><head/><body><p>Forces all async operations to run on the main thread, making them deterministic. Do not enable if you don't know what you are doing.</p></body></html> + + + + + Enable RPC server + + + + <html><head/><body><p>Enables the RPC server on port 45987. This allows remotely reading/writing guest memory, do not enable if you don't know what you are doing.</p></body></html> @@ -1012,176 +1022,186 @@ Would you like to ignore the error and continue? + Use Integer Scaling + + + + + <html><head/><body><p>Use Integer Scaling</p><p>Enforces that the larger screen in all layouts is an integer scale of the 240px height of the original 3DS screen.</p></body></html> + + + + Enable Linear Filtering - + Post-Processing Shader - + Texture Filter - + None Ingen - + Anime4K - + Bicubic - + ScaleForce - + xBRZ - + MMPX - + Stereoscopy - + Stereoscopic 3D Mode - + Off - + Side by Side Side ved Side - + Side by Side Full Width - + Anaglyph - + Interlaced - + Reverse Interlaced - + Depth - + % - + Note: Depth values over 100% are not possible on real hardware and may cause graphical issues - + Eye to Render in Monoscopic Mode - + Left Eye (default) - + Right Eye - + Disable Right Eye Rendering - + <html><head/><body><p>Disable Right Eye Rendering</p><p>Disables rendering the right eye image when not using stereoscopic mode. Greatly improves performance in some applications, but can cause flickering in others.</p></body></html> - + Swap Eyes - + Utility - + <html><head/><body><p>Replace textures with PNG files.</p><p>Textures are loaded from load/textures/[Title ID]/.</p></body></html> - + Use custom textures - + <html><head/><body><p>Dump textures to PNG files.</p><p>Textures are dumped to dump/textures/[Title ID]/.</p></body></html> - + Dump textures - + <html><head/><body><p>Load all custom textures into memory on boot, instead of loading them when the application requires them.</p></body></html> - + Preload custom textures - + <html><head/><body><p>Load custom textures asynchronously with background threads to reduce loading stutter</p></body></html> - + Async custom texture loading @@ -1487,8 +1507,8 @@ Would you like to ignore the error and continue? - VSync prevents the screen from tearing, but some graphics cards have lower performance with VSync enabled. Keep it enabled if you don't notice a performance difference. - VSync forhindrer screen tearing, men noen grafikkort har lavere ytelse når VSync er aktivert. Hold den aktivert hvis du ikke merker en ytelsesforskjell. + <html><head/><body><p>VSync prevents the screen from tearing, but some graphics cards have lower performance with VSync enabled. Keep it enabled if you don't notice a performance difference.</p></body></html> + @@ -1496,22 +1516,32 @@ Would you like to ignore the error and continue? Aktiver VSync - + + <html><head/><body><p>When enabled, this setting detects when the refresh rate of the screen is below that of the 3DS, and when it is, disables VSync automatically to avoid emulation speed being forced below 100%.</p></body></html> + + + + + Enable display refresh rate detection + + + + Use global - + Use per-application - + Delay Application Render Thread - + <html><head/><body><p>Delays the emulated application render thread the specified amount of milliseconds every time it submits render commands to the GPU.</p><p>Adjust this feature in the (very few) dynamic framerate applications to fix performance issues.</p></body></html> @@ -1990,170 +2020,243 @@ Would you like to ignore the error and continue? - + Custom Layout - - Swap screens - - - - + Rotate screens upright - + + Swap screens + + + + + Customize layout cycling + + + + Screen Gap - + Large Screen Proportion - + Small Screen Position - + Upper Right - + Middle Right - + Bottom Right (default) - + Upper Left - + Middle Left - + Bottom Left - + Above large screen - + Below large screen - + Background Color - - + + Top Screen - - + + X Position - - - - - - - - - + + + + + + + + - - + + + px - - + + Y Position - - + + Width - - + + Height - - + + Bottom Screen - + <html><head/><body><p>Bottom Screen Opacity %</p></body></html> - + Single Screen Layout - - + + Stretch - - + + Left/Right Padding - - + + Top/Bottom Padding - + Note: These settings affect the Single Screen and Separate Windows layouts + + ConfigureLayoutCycle + + + Configure Layout Cycling + + + + + Screen Layout Cycling Customization + + + + + Select which screen layout options should be cycled with the "Toggle Screen Layout" hotkey + + + + + Use Global Value + + + + + Default + Standard + + + + Single Screen + Enkel Skjerm + + + + Large Screen + Stor Skjerm + + + + Side by Side + Side ved Side + + + + Separate Windows + + + + + Hybrid + + + + + Custom + Tilpasset + + + + No Layout Selected + + + + + Please select at least one layout option to cycle through. + + + ConfigureMotionTouch - + Configure Motion / Touch Konfigurer Bevegelse / Berøring @@ -2181,8 +2284,10 @@ Would you like to ignore the error and continue? - - + + + + Configure Konfigurer @@ -2212,58 +2317,68 @@ Would you like to ignore the error and continue? Bruk tastetilordning - + + Map touchpads on controllers like the DualSense directly to touch + + + + + Use controller touchpad + + + + CemuhookUDP Config CemuhookUDP Konfigurasjon - + You may use any Cemuhook compatible UDP input source to provide motion and touch input. Du kan bruke en hvilken som helst Cemuhook kompatibel UDP inngangskilde for å gi bevegelse og berørings inngang. - + Server: Server: - + Port: Port: - + Pad: Pad: - + Pad 1 Pad 1 - + Pad 2 Pad 2 - + Pad 3 Pad 3 - + Pad 4 Pad 4 - + Learn More Lær Mer - - + + Test Test @@ -2294,57 +2409,68 @@ Would you like to ignore the error and continue? - + + Information Informasjon - + After pressing OK, press a button on the controller whose motion you want to track. - + [press button] - + + After pressing OK, tap the touchpad on the controller you want to track. + + + + + [press touchpad] + + + + Testing Testing - + Configuring Konfigurerer - + Test Successful Test Vellykket - + Successfully received data from the server. Mottatt data fra serveren vellykket. - + Test Failed Test 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 gyldige data fra serveren.<br>Kontroller at serveren er riktig konfigurert, og adressen og porten er riktige. - + Azahar - + UDP Test or calibration configuration is in progress.<br>Please wait for them to finish. UDP Test eller kalibreringskonfigurasjon pågår.<br>Vennligst vent på at de skal fullføre. @@ -2514,7 +2640,7 @@ Would you like to ignore the error and continue? - Compresses the content of CIA files when installed to the emulated SD card. Only affects CIA content which is installed while the setting is enabled. + <html><head/><body><p>Compresses the content of CIA files when installed to the emulated SD card. Only affects CIA content which is installed while the setting is enabled.</p></body></html> @@ -4095,596 +4221,611 @@ Please check your FFmpeg installation used for compilation. GMainWindow - + + Warning + Advarsel + + + + The `azahar` executable is being run directly rather than via the Azahar.app bundle. + +When run this way, the app may be missing certain functionality such as camera emulation. + +It is recommended to instead run Azahar using the `open` command, e.g.: +`open ./Azahar.app` + + + + No Suitable Vulkan Devices Detected - + Vulkan initialization failed during boot.<br/>Your GPU may not support Vulkan 1.1, or you do not have the latest graphics driver. - + Current Artic traffic speed. Higher values indicate bigger transfer loads. - - + + Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a 3DS. Nåværende emuleringhastighet. Verdier høyere eller lavere enn 100% indikerer at emuleringen kjører raskere eller langsommere enn en 3DS. - - + + How many frames per second the app is currently displaying. This will vary from app to app and scene to scene. - - + + Time taken to emulate a 3DS frame, not counting framelimiting or v-sync. For full-speed emulation this should be at most 16.67 ms. Tid tatt for å emulere et 3DS bilde, gjelder ikke bildebegrensning eller V-Sync. For raskest emulering bør dette være høyst 16,67 ms. - + MicroProfile (unavailable) - + Clear Recent Files Tøm nylige filer - + &Continue - + &Pause - + Azahar is running an application TRANSLATORS: This string is shown to the user to explain why Citra needs to prevent the computer from sleeping - - + + Invalid App Format - - + + Your app format is not supported.<br/>Please follow the guides to redump your <a href='https://web.archive.org/web/20240304210021/https://citra-emu.org/wiki/dumping-game-cartridges/'>game cartridges</a> or <a href='https://web.archive.org/web/20240304210011/https://citra-emu.org/wiki/dumping-installed-titles/'>installed titles</a>. - + App Corrupted - + Your app is corrupted. <br/>Please follow the guides to redump your <a href='https://web.archive.org/web/20240304210021/https://citra-emu.org/wiki/dumping-game-cartridges/'>game cartridges</a> or <a href='https://web.archive.org/web/20240304210011/https://citra-emu.org/wiki/dumping-installed-titles/'>installed titles</a>. - + App Encrypted - + Your app is encrypted. <br/><a href='https://azahar-emu.org/blog/game-loading-changes/'>Please check our blog for more info.</a> - + Unsupported App - + GBA Virtual Console is not supported by Azahar. - - + + Artic Server - + Invalid system mode - + New 3DS exclusive applications cannot be loaded without enabling the New 3DS mode. - + Error while loading App! - + An unknown error occurred. Please see the log for more details. - + CIA must be installed before usage CIA må installeres før bruk - + Before using this CIA, you must install it. Do you want to install it now? Før du bruker denne CIA, må du installere den. Vil du installere det nå? - + Quick Load - + Quick Save - - + + Slot %1 Spor %1 - + %2 %3 - + Quick Save - %1 - + Quick Load - %1 - + Slot %1 - %2 %3 - + Error Opening %1 Folder Feil ved Åpning av %1 Mappe - - + + Folder does not exist! Mappen eksistere ikke! - + Remove Play Time Data - + Reset play time? - - - - + + + + Create Shortcut - + Do you want to launch the application in fullscreen? - + Successfully created a shortcut to %1 - + This will create a shortcut to the current AppImage. This may not work well if you update. Continue? - + Failed to create a shortcut to %1 - + Create Icon - + Cannot create icon file. Path "%1" does not exist and cannot be created. - + Dumping... Dumper... - - + + Cancel Kanseller - - - - - - - - - + + + + + + + + + Azahar - + Could not dump base RomFS. Refer to the log for details. Kunne ikke dumpe basen RomFS. Se loggen for detaljer. - + Error Opening %1 Feil ved åpning av %1 - + Select Directory Velg Mappe - + Properties - + The application properties could not be loaded. - + 3DS Executable (%1);;All Files (*.*) %1 is an identifier for the 3DS executable file extensions. 3DS Executable (%1);;All Files (*.*) - + Load File Last Fil - - + + Set Up System Files - + <p>Azahar needs console unique data and firmware files from a real console to be able to use some of its features.<br>Such files and data can be set up with the <a href=https://github.com/azahar-emu/ArticSetupTool>Azahar Artic Setup Tool</a><br>Notes:<ul><li><b>This operation will install console unique data to Azahar, do not share your user or nand folders<br>after performing the setup process!</b></li><li>While doing the setup process, Azahar will link to the console running the setup tool. You can unlink the<br>console later from the System tab in the emulator configuration menu.</li><li>Do not go online with both Azahar and your 3DS console at the same time after setting up system files,<br>as it could cause issues.</li><li>Old 3DS setup is needed for the New 3DS setup to work (doing both setup modes is recommended).</li><li>Both setup modes will work regardless of the model of the console running the setup tool.</li></ul><hr></p> - + Enter Azahar Artic Setup Tool address: - + <br>Choose setup mode: - + (ℹ️) Old 3DS setup - - + + Setup is possible. - + (⚠) New 3DS setup - + Old 3DS setup is required first. - + (✅) Old 3DS setup - - + + Setup completed. - + (ℹ️) New 3DS setup - + (✅) New 3DS setup - + The system files for the selected mode are already set up. Reinstall the files anyway? - + Load Files Last Filer - + 3DS Installation File (*.cia *.zcia) - - - + + + All Files (*.*) Alle Filer (*.*) - + Connect to Artic Base - + Enter Artic Base server address: - + %1 has been installed successfully. %1 Ble installert vellykket. - + Unable to open File Kan ikke åpne Fil - + Could not open %1 Kunne ikke åpne %1 - + Installation aborted Installasjon avbrutt - + The installation of %1 was aborted. Please see the log for more details Installeringen av %1 ble avbrutt. Vennligst se logg for detaljer - + Invalid File Ugyldig Fil - + %1 is not a valid CIA %1 er ikke en gyldig CIA - + CIA Encrypted - + Your CIA file is encrypted.<br/><a href='https://azahar-emu.org/blog/game-loading-changes/'>Please check our blog for more info.</a> - + Unable to find File - + Could not find %1 - - - - + + + + Z3DS Compression - + Failed to compress some files, check log for details. - + Failed to decompress some files, check log for details. - + All files have been compressed successfully. - + All files have been decompressed successfully. - + Uninstalling '%1'... - + Failed to uninstall '%1'. - + Successfully uninstalled '%1'. - + File not found Fil ikke funnet - + File "%1" not found Fil "%1" ble ikke funnet - + Savestates - + Warning: Savestates are NOT a replacement for in-application saves, and are not meant to be reliable. Use at your own risk! - - - + + + Error opening amiibo data file - + A tag is already in use. - + Application is not looking for amiibos. - + Amiibo File (%1);; All Files (*.*) Amiibo File (%1);; All Files (*.*) - + Load Amiibo Last inn Amiibo - + Unable to open amiibo file "%1" for reading. - + Record Movie Ta Opp Video - + Movie recording cancelled. Filmopptak avbrutt. - - + + Movie Saved Film Lagret - - + + The movie is successfully saved. Filmen ble lagret vellykket. - + Application will unpause - + The application will be unpaused, and the next frame will be captured. Is this okay? - + Invalid Screenshot Directory - + Cannot create specified screenshot directory. Screenshot path is set back to its default value. - + Could not load video dumper - + FFmpeg could not be loaded. Make sure you have a compatible version installed. To install FFmpeg to Azahar, press Open and select your FFmpeg directory. @@ -4693,264 +4834,264 @@ To view a guide on how to install FFmpeg, press Help. - + Load 3DS ROM Files - + 3DS ROM Files (*.cia *.cci *.3dsx *.cxi *.3ds) - + 3DS Compressed ROM File (*.%1) - + Save 3DS Compressed ROM File - + Select Output 3DS Compressed ROM Folder - + Load 3DS Compressed ROM Files - + 3DS Compressed ROM Files (*.zcia *zcci *z3dsx *zcxi) - + 3DS ROM File (*.%1) - + Save 3DS ROM File - + Select Output 3DS ROM Folder - + Select FFmpeg Directory - + The provided FFmpeg directory is missing %1. Please make sure the correct directory was selected. - + FFmpeg has been sucessfully installed. - + Installation of FFmpeg failed. Check the log file for details. - + Could not start video dumping.<br>Please ensure that the video encoder is configured correctly.<br>Refer to the log for details. - + Recording %1 - + Playing %1 / %2 - + Movie Finished - + (Accessing SharedExtData) - + (Accessing SystemSaveData) - + (Accessing BossExtData) - + (Accessing ExtData) - + (Accessing SaveData) - + MB/s - + KB/s - + Artic Traffic: %1 %2%3 - + Speed: %1% Fart: %1% - + Speed: %1% / %2% Fart: %1% / %2% - + App: %1 FPS - + Frame: %1 ms (GPU: [CMD: %2 ms, SWP: %3 ms], IPC: %4 ms, SVC: %5 ms, Rem: %6 ms) - + Frame: %1 ms Bilde: %1 ms - + VOLUME: MUTE - + VOLUME: %1% Volume percentage (e.g. 50%) - + %1 is missing. Please <a href='https://web.archive.org/web/20240304201103/https://citra-emu.org/wiki/dumping-system-archives-and-the-shared-fonts-from-a-3ds-console/'>dump your system archives</a>.<br/>Continuing emulation may result in crashes and bugs. - + A system archive Et System Arkiv - + System Archive Not Found System Arkiv ikke funnet - + System Archive Missing System Arkiv Mangler - + Save/load Error Lagre/laste inn Feil - + Fatal Error Fatal Feil - + A fatal error occurred. <a href='https://web.archive.org/web/20240228001712/https://community.citra-emu.org/t/how-to-upload-the-log-file/296'>Check the log</a> for details.<br/>Continuing emulation may result in crashes and bugs. - + Fatal Error encountered Fatal Feil Oppstått - + Continue Fortsett - + Quit Application - + OK OK - + Would you like to exit now? Vil du avslutte nå? - + The application is still running. Would you like to stop emulation? - + Playback Completed Avspilling Fullført - + Movie playback completed. Filmavspilling fullført. - + Update Available - + Update %1 for Azahar is available. Would you like to download it? - + Primary Window - + Secondary Window @@ -5013,42 +5154,42 @@ Would you like to download it? GRenderWindow - + OpenGL not available! - + OpenGL shared contexts are not supported. - + Error while initializing OpenGL! - + Your GPU may not support OpenGL, or you do not have the latest graphics driver. - + Error while initializing OpenGL 4.3! - + Your GPU may not support OpenGL 4.3, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1 - + Error while initializing OpenGL ES 3.2! - + Your GPU may not support OpenGL ES 3.2, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1 @@ -5056,244 +5197,249 @@ Would you like to download it? GameList - - + + Compatibility Kompatibilitet - - + + Region Region - - + + File type Filtype - - + + Size Størrelse - - + + Play time - + Favorite - + Eject Cartridge - + Insert Cartridge - + Open - + Application Location - + Save Data Location - + Extra Data Location - + Update Data Location - + DLC Data Location - + Texture Dump Location - + Custom Texture Location - + Mods Location - + Dump RomFS Dump RomFS - + Disk Shader Cache - + Open Shader Cache Location - + Delete OpenGL Shader Cache - + + Delete Vulkan Shader Cache + + + + Uninstall - + Everything - + Application - + Update - + DLC - + Remove Play Time Data - + Create Shortcut - + Add to Desktop - + Add to Applications Menu - + Stress Test: App Launch - + Properties - - - - + + + + Azahar - + Are you sure you want to completely uninstall '%1'? This will delete the application if installed, as well as any installed updates or DLC. - - + + %1 (Update) - - + + %1 (DLC) - + Are you sure you want to uninstall '%1'? - + Are you sure you want to uninstall the update for '%1'? - + Are you sure you want to uninstall all DLC for '%1'? - + Scan Subfolders Skann Undermapper - + Remove Application Directory - + Move Up - + Move Down - + Open Directory Location Fjern Mappe Plassering - + Clear - + Name Navn @@ -5379,7 +5525,7 @@ Screen. GameListPlaceholder - + Double-click to add a new folder to the application list @@ -5387,27 +5533,27 @@ Screen. GameListSearchField - + of av - + result Resultat - + results Resultater - + Filter: Filter: - + Enter pattern to filter Skriv inn mønster for å filtrere @@ -6039,24 +6185,24 @@ Debug Message: Forbereder Shaders %1 / %2 - - Loading Shaders %1 / %2 - Laster Shaders %1 / %2 + + Loading %3 %1 / %2 + - + Launching... Starter... - + Now Loading %1 Laster %1 - + Estimated Time %1 Estimert Tid %1 @@ -7029,17 +7175,17 @@ They may have left the room. Åpne Fil - + Error Feil - + Couldn't load the camera Kunne ikke starte kamera - + Couldn't load %1 Kunne ikke starte %1 diff --git a/dist/languages/nl.ts b/dist/languages/nl.ts index 72adb8c5f..ab5b41965 100644 --- a/dist/languages/nl.ts +++ b/dist/languages/nl.ts @@ -322,8 +322,8 @@ Dit zal hun Forum gebruikersnaam en IP adres verbannen. - This post-processing effect adjusts audio speed to match emulation speed and helps prevent audio stutter. This however increases audio latency. - Dit post-processing effect past de geluidssnelheid aan om gelijk te zijn aan de emulatiesnelheid en helpt audiostotter te voorkomen. Dit zorgt wel voor meer audiovertraging. + <html><head/><body><p>This post-processing effect adjusts audio speed to match emulation speed and helps prevent audio stutter. This however increases audio latency.</p></body></html> + @@ -332,7 +332,7 @@ Dit zal hun Forum gebruikersnaam en IP adres verbannen. - Scales audio playback speed to account for drops in emulation framerate. This means that audio will play at full speed even while the application framerate is low. May cause audio desync issues. + <html><head/><body><p>Scales audio playback speed to account for drops in emulation framerate. This means that audio will play at full speed even while the application framerate is low. May cause audio desync issues.</p></body></html> @@ -472,8 +472,8 @@ Dit zal hun Forum gebruikersnaam en IP adres verbannen. - Select where the image of the emulated camera comes from. It may be an image or a real camera. - Selecteer waar de afbeelding van de ge-emuleerde camera vandaan komt. Het mag een afbeelding zijn of een echte camera. + <html><head/><body><p>Select where the image of the emulated camera comes from. It may be an image or a real camera.</p></body></html> + @@ -801,21 +801,31 @@ Wilt u de fout negeren en doorgaan? - Force deterministic async operations + <html><head/><body><p>Toggles the unique data console type (Old 3DS ↔ New 3DS) to be able to download the opposite system firmware type from system settings.</p></body></html> - <html><head/><body><p>Forces all async operations to run on the main thread, making them deterministic. Do not enable if you don't know what you are doing.</p></body></html> + Toggle unique data console type - Enable RPC server + Force deterministic async operations + <html><head/><body><p>Forces all async operations to run on the main thread, making them deterministic. Do not enable if you don't know what you are doing.</p></body></html> + + + + + Enable RPC server + + + + <html><head/><body><p>Enables the RPC server on port 45987. This allows remotely reading/writing guest memory, do not enable if you don't know what you are doing.</p></body></html> @@ -1013,176 +1023,186 @@ Wilt u de fout negeren en doorgaan? + Use Integer Scaling + + + + + <html><head/><body><p>Use Integer Scaling</p><p>Enforces that the larger screen in all layouts is an integer scale of the 240px height of the original 3DS screen.</p></body></html> + + + + Enable Linear Filtering - + Post-Processing Shader Post-Processing Shader - + Texture Filter Textuur Filter - + None Geen - + Anime4K Anime4k - + Bicubic Bicubic - + ScaleForce ScaleForce - + xBRZ xBRZ - + MMPX - + Stereoscopy Stereoscopie - + Stereoscopic 3D Mode Stereoscopische 3D-modus - + Off Uit - + Side by Side Zij aan zij - + Side by Side Full Width - + Anaglyph Anaglyph - + Interlaced Interlaced - + Reverse Interlaced Omgekeerd Interlaced - + Depth Diepte - + % % - + Note: Depth values over 100% are not possible on real hardware and may cause graphical issues - + Eye to Render in Monoscopic Mode Oog om te renderen in monoscopische modus - + Left Eye (default) Linker Oog (standaard) - + Right Eye Rechter Oog - + Disable Right Eye Rendering - + <html><head/><body><p>Disable Right Eye Rendering</p><p>Disables rendering the right eye image when not using stereoscopic mode. Greatly improves performance in some applications, but can cause flickering in others.</p></body></html> - + Swap Eyes - + Utility Utility - + <html><head/><body><p>Replace textures with PNG files.</p><p>Textures are loaded from load/textures/[Title ID]/.</p></body></html> <html><head/><body><p>Vervang texturen met PNG-bestanden.</p><p>Texturen worden geladen vanuit load/textures/[Title ID]/.</p></body></html> - + Use custom textures - + <html><head/><body><p>Dump textures to PNG files.</p><p>Textures are dumped to dump/textures/[Title ID]/.</p></body></html> <html><head/><body><p>Dump texturen naar PNG-bestanden.</p><p>Texturen worden gedumpt naar dump/textures/[Title ID]/. - + Dump textures - + <html><head/><body><p>Load all custom textures into memory on boot, instead of loading them when the application requires them.</p></body></html> - + Preload custom textures - + <html><head/><body><p>Load custom textures asynchronously with background threads to reduce loading stutter</p></body></html> <html><head/><body><p>Aangepaste texturen asynchroon laden met achtergrondthreads om stotteren bij het laden te verminderen</p></body></html> - + Async custom texture loading @@ -1488,8 +1508,8 @@ Wilt u de fout negeren en doorgaan? - VSync prevents the screen from tearing, but some graphics cards have lower performance with VSync enabled. Keep it enabled if you don't notice a performance difference. - VSync voorkomt dat het scherm scheurt, maar sommige grafische kaarten presteren minder goed als VSync is ingeschakeld. Laat het ingeschakeld als u geen prestatieverschil merkt. + <html><head/><body><p>VSync prevents the screen from tearing, but some graphics cards have lower performance with VSync enabled. Keep it enabled if you don't notice a performance difference.</p></body></html> + @@ -1497,22 +1517,32 @@ Wilt u de fout negeren en doorgaan? Activeer VSync - + + <html><head/><body><p>When enabled, this setting detects when the refresh rate of the screen is below that of the 3DS, and when it is, disables VSync automatically to avoid emulation speed being forced below 100%.</p></body></html> + + + + + Enable display refresh rate detection + + + + Use global - + Use per-application - + Delay Application Render Thread - + <html><head/><body><p>Delays the emulated application render thread the specified amount of milliseconds every time it submits render commands to the GPU.</p><p>Adjust this feature in the (very few) dynamic framerate applications to fix performance issues.</p></body></html> @@ -1991,170 +2021,243 @@ Wilt u de fout negeren en doorgaan? - + Custom Layout Aangepaste Indeling - - Swap screens - - - - + Rotate screens upright - + + Swap screens + + + + + Customize layout cycling + + + + Screen Gap - + Large Screen Proportion Groot Scherm Indeling - + Small Screen Position - + Upper Right - + Middle Right - + Bottom Right (default) - + Upper Left - + Middle Left - + Bottom Left - + Above large screen - + Below large screen - + Background Color Achtergrondskleur - - + + Top Screen Bovenste Scherm - - + + X Position X Positie - - - - - - - - - + + + + + + + + - - + + + px px - - + + Y Position Y Positie - - + + Width Breedte - - + + Height Hoogte - - + + Bottom Screen Onderste Scherm - + <html><head/><body><p>Bottom Screen Opacity %</p></body></html> - + Single Screen Layout Enkel Scherm Indeling - - + + Stretch Uitrekken - - + + Left/Right Padding Linker/Rechter Opvulling - - + + Top/Bottom Padding Boven/Onder Opvulling - + Note: These settings affect the Single Screen and Separate Windows layouts Let op: Deze instelling beïnvloeden de Enkel Scherm en Aparte Vensters indelingen + + ConfigureLayoutCycle + + + Configure Layout Cycling + + + + + Screen Layout Cycling Customization + + + + + Select which screen layout options should be cycled with the "Toggle Screen Layout" hotkey + + + + + Use Global Value + + + + + Default + Standaard + + + + Single Screen + Enkel Scherm + + + + Large Screen + Groot Scherm + + + + Side by Side + + + + + Separate Windows + + + + + Hybrid + + + + + Custom + Aangepast + + + + No Layout Selected + + + + + Please select at least one layout option to cycle through. + + + ConfigureMotionTouch - + Configure Motion / Touch Configureer Beweging / Touch @@ -2182,8 +2285,10 @@ Wilt u de fout negeren en doorgaan? - - + + + + Configure Configureren @@ -2213,58 +2318,68 @@ Wilt u de fout negeren en doorgaan? Gebruik knop toewijzing: - + + Map touchpads on controllers like the DualSense directly to touch + + + + + Use controller touchpad + + + + CemuhookUDP Config CemuhookUDP Configuratie - + You may use any Cemuhook compatible UDP input source to provide motion and touch input. U kunt elke UDP-invoerbron gebruiken die compatibel is met Cemuhook om bewegings- en touch-invoer te leveren. - + Server: Server: - + Port: Poort: - + Pad: Pad: - + Pad 1 Pad 1 - + Pad 2 Pad 2 - + Pad 3 Pad 3 - + Pad 4 Pad 4 - + Learn More Meer Informatie - - + + Test Test @@ -2295,57 +2410,68 @@ Wilt u de fout negeren en doorgaan? - + + Information Informatie - + After pressing OK, press a button on the controller whose motion you want to track. Nadat u op OK hebt gedrukt, druk op een knop van de controller waarvan u de beweging wilt volgen. - + [press button] [druk op een knop]. - + + After pressing OK, tap the touchpad on the controller you want to track. + + + + + [press touchpad] + + + + Testing Testen - + Configuring Configureren - + Test Successful Test Geslaagd - + Successfully received data from the server. Gegevens met succes ontvangen van de server. - + Test Failed Test Mislukt - + 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 geen valide data ontvangen van de server. <br> Verifieer dat de server correct opgezet is en dat het adres en de port correct zijn. - + Azahar - + UDP Test or calibration configuration is in progress.<br>Please wait for them to finish. UDP Test of calibratie is bezig.<br> Wacht tot deze klaar zijn. @@ -2515,7 +2641,7 @@ Wilt u de fout negeren en doorgaan? - Compresses the content of CIA files when installed to the emulated SD card. Only affects CIA content which is installed while the setting is enabled. + <html><head/><body><p>Compresses the content of CIA files when installed to the emulated SD card. Only affects CIA content which is installed while the setting is enabled.</p></body></html> @@ -4097,596 +4223,611 @@ Controleer de FFmpeg-installatie die wordt gebruikt voor de compilatie. GMainWindow - + + Warning + Waarschuwing + + + + The `azahar` executable is being run directly rather than via the Azahar.app bundle. + +When run this way, the app may be missing certain functionality such as camera emulation. + +It is recommended to instead run Azahar using the `open` command, e.g.: +`open ./Azahar.app` + + + + No Suitable Vulkan Devices Detected Geen geschikte Vulkan-apparaten gedetecteerd - + Vulkan initialization failed during boot.<br/>Your GPU may not support Vulkan 1.1, or you do not have the latest graphics driver. Vulkan-initialisatie mislukt tijdens het opstarten.<br/>Uw GPU ondersteunt Vulkan 1.1 mogelijk niet of u hebt niet het nieuwste grafische stuurprogramma. - + Current Artic traffic speed. Higher values indicate bigger transfer loads. - - + + Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a 3DS. Huidige emulatiesnelheid. Waardes hoger of lager dan 100% geven aan dat de emulatie sneller of langzamer gaat dan een 3DS. - - + + How many frames per second the app is currently displaying. This will vary from app to app and scene to scene. - - + + Time taken to emulate a 3DS frame, not counting framelimiting or v-sync. For full-speed emulation this should be at most 16.67 ms. Tijd verstrekt om één 3DS frame te emuleren, zonder framelimitatie of V-Sync te tellen. Voor volledige snelheid emulatie zal dit maximaal 16.67 ms moeten zijn. - + MicroProfile (unavailable) - + Clear Recent Files Wis recente bestanden - + &Continue &Continue - + &Pause &Pause - + Azahar is running an application TRANSLATORS: This string is shown to the user to explain why Citra needs to prevent the computer from sleeping - - + + Invalid App Format - - + + Your app format is not supported.<br/>Please follow the guides to redump your <a href='https://web.archive.org/web/20240304210021/https://citra-emu.org/wiki/dumping-game-cartridges/'>game cartridges</a> or <a href='https://web.archive.org/web/20240304210011/https://citra-emu.org/wiki/dumping-installed-titles/'>installed titles</a>. - + App Corrupted - + Your app is corrupted. <br/>Please follow the guides to redump your <a href='https://web.archive.org/web/20240304210021/https://citra-emu.org/wiki/dumping-game-cartridges/'>game cartridges</a> or <a href='https://web.archive.org/web/20240304210011/https://citra-emu.org/wiki/dumping-installed-titles/'>installed titles</a>. - + App Encrypted - + Your app is encrypted. <br/><a href='https://azahar-emu.org/blog/game-loading-changes/'>Please check our blog for more info.</a> - + Unsupported App - + GBA Virtual Console is not supported by Azahar. - - + + Artic Server - + Invalid system mode - + New 3DS exclusive applications cannot be loaded without enabling the New 3DS mode. - + Error while loading App! - + An unknown error occurred. Please see the log for more details. Er heeft zich een onbekende fout voorgedaan. Raadpleeg het log voor meer informatie. - + CIA must be installed before usage CIA moet worden geïnstalleerd voor gebruik - + Before using this CIA, you must install it. Do you want to install it now? Voordat u deze CIA kunt gebruiken, moet u hem installeren. Wilt u het nu installeren? - + Quick Load - + Quick Save - - + + Slot %1 Slot %1 - + %2 %3 - + Quick Save - %1 - + Quick Load - %1 - + Slot %1 - %2 %3 Slot %1 - %2 %3 - + Error Opening %1 Folder Fout bij het openen van de map %1 - - + + Folder does not exist! Map bestaat niet! - + Remove Play Time Data Verwijder speeltijd gegevens - + Reset play time? Stel speeltijd opnieuw in? - - - - + + + + Create Shortcut Snelkoppeling maken - + Do you want to launch the application in fullscreen? - + Successfully created a shortcut to %1 Het maken van een snelkoppeling naar %1 was succesvol - + This will create a shortcut to the current AppImage. This may not work well if you update. Continue? Dit zal een snelkoppeling naar het huidige AppImage aanmaken. Dit zal mogelijk niet meer werken als u deze software bijwerkt. Wilt u doorgaan? - + Failed to create a shortcut to %1 Kon geen snelkoppeling naar %1 aanmaken - + Create Icon - + Cannot create icon file. Path "%1" does not exist and cannot be created. - + Dumping... Dumping... - - + + Cancel Annuleren - - - - - - - - - + + + + + + + + + Azahar - + Could not dump base RomFS. Refer to the log for details. Kon basis RomFS niet dumpen. Raadpleeg het log voor meer informatie. - + Error Opening %1 Fout bij het openen van %1 - + Select Directory Selecteer Folder - + Properties Eigenschappen - + The application properties could not be loaded. - + 3DS Executable (%1);;All Files (*.*) %1 is an identifier for the 3DS executable file extensions. 3DS Executable (%1);;Alle bestanden (*.*) - + Load File Laad bestand - - + + Set Up System Files - + <p>Azahar needs console unique data and firmware files from a real console to be able to use some of its features.<br>Such files and data can be set up with the <a href=https://github.com/azahar-emu/ArticSetupTool>Azahar Artic Setup Tool</a><br>Notes:<ul><li><b>This operation will install console unique data to Azahar, do not share your user or nand folders<br>after performing the setup process!</b></li><li>While doing the setup process, Azahar will link to the console running the setup tool. You can unlink the<br>console later from the System tab in the emulator configuration menu.</li><li>Do not go online with both Azahar and your 3DS console at the same time after setting up system files,<br>as it could cause issues.</li><li>Old 3DS setup is needed for the New 3DS setup to work (doing both setup modes is recommended).</li><li>Both setup modes will work regardless of the model of the console running the setup tool.</li></ul><hr></p> - + Enter Azahar Artic Setup Tool address: - + <br>Choose setup mode: - + (ℹ️) Old 3DS setup - - + + Setup is possible. - + (⚠) New 3DS setup - + Old 3DS setup is required first. - + (✅) Old 3DS setup - - + + Setup completed. - + (ℹ️) New 3DS setup - + (✅) New 3DS setup - + The system files for the selected mode are already set up. Reinstall the files anyway? - + Load Files Laad Bestanden - + 3DS Installation File (*.cia *.zcia) - - - + + + All Files (*.*) Alle bestanden (*.*) - + Connect to Artic Base Verbind met Artic Base - + Enter Artic Base server address: Voer Artic Base server adres in: - + %1 has been installed successfully. %1 is succesvol geïnstalleerd. - + Unable to open File Kan bestand niet openen - + Could not open %1 Kan %1 niet openen - + Installation aborted Installatie onderbroken - + The installation of %1 was aborted. Please see the log for more details De installatie van %1 is afgebroken. Zie het logboek voor meer details - + Invalid File Ongeldig bestand - + %1 is not a valid CIA %1 is geen geldige CIA - + CIA Encrypted - + Your CIA file is encrypted.<br/><a href='https://azahar-emu.org/blog/game-loading-changes/'>Please check our blog for more info.</a> - + Unable to find File Bestand niet gevonden - + Could not find %1 Kon %1 niet vinden - - - - + + + + Z3DS Compression - + Failed to compress some files, check log for details. - + Failed to decompress some files, check log for details. - + All files have been compressed successfully. - + All files have been decompressed successfully. - + Uninstalling '%1'... '%1' aan het verwijderen... - + Failed to uninstall '%1'. Kon niet '%1' verwijderen. - + Successfully uninstalled '%1'. '%1' succesvol verwijderd. - + File not found Bestand niet gevonden - + File "%1" not found Bestand "%1" niet gevonden - + Savestates Savestates - + Warning: Savestates are NOT a replacement for in-application saves, and are not meant to be reliable. Use at your own risk! - - - + + + Error opening amiibo data file Fout bij het openen van het amiibo databestand - + A tag is already in use. Er is al een tag in gebruik. - + Application is not looking for amiibos. - + Amiibo File (%1);; All Files (*.*) Amiibo Bestand (%1);; Alle Bestanden (*.*) - + Load Amiibo Laad Amiibo - + Unable to open amiibo file "%1" for reading. Kan amiibo-bestand "%1" niet openen om te worden gelezen. - + Record Movie Film opnemen - + Movie recording cancelled. Filmopname geannuleerd. - - + + Movie Saved Film Opgeslagen - - + + The movie is successfully saved. De film is met succes opgeslagen. - + Application will unpause - + The application will be unpaused, and the next frame will be captured. Is this okay? - + Invalid Screenshot Directory Ongeldige schermafbeeldmap - + Cannot create specified screenshot directory. Screenshot path is set back to its default value. Kan de opgegeven map voor schermafbeeldingen niet maken. Het pad voor schermafbeeldingen wordt teruggezet naar de standaardwaarde. - + Could not load video dumper Kan videodumper niet laden - + FFmpeg could not be loaded. Make sure you have a compatible version installed. To install FFmpeg to Azahar, press Open and select your FFmpeg directory. @@ -4695,264 +4836,264 @@ To view a guide on how to install FFmpeg, press Help. - + Load 3DS ROM Files - + 3DS ROM Files (*.cia *.cci *.3dsx *.cxi *.3ds) - + 3DS Compressed ROM File (*.%1) - + Save 3DS Compressed ROM File - + Select Output 3DS Compressed ROM Folder - + Load 3DS Compressed ROM Files - + 3DS Compressed ROM Files (*.zcia *zcci *z3dsx *zcxi) - + 3DS ROM File (*.%1) - + Save 3DS ROM File - + Select Output 3DS ROM Folder - + Select FFmpeg Directory Selecteer FFmpeg map - + The provided FFmpeg directory is missing %1. Please make sure the correct directory was selected. De opgegeven FFmpeg directory ontbreekt %1. Controleer of de juiste map is geselecteerd. - + FFmpeg has been sucessfully installed. FFmpeg is met succes geïnstalleerd. - + Installation of FFmpeg failed. Check the log file for details. Installatie van FFmpeg is mislukt. Controleer het logbestand voor meer informatie. - + Could not start video dumping.<br>Please ensure that the video encoder is configured correctly.<br>Refer to the log for details. - + Recording %1 Opname %1 - + Playing %1 / %2 Afspelen %1 / %2 - + Movie Finished Film Voltooid - + (Accessing SharedExtData) - + (Accessing SystemSaveData) - + (Accessing BossExtData) - + (Accessing ExtData) - + (Accessing SaveData) - + MB/s MB/s - + KB/s KB/s - + Artic Traffic: %1 %2%3 - + Speed: %1% Snelheid: %1% - + Speed: %1% / %2% Snelheid: %1% / %2% - + App: %1 FPS - + Frame: %1 ms (GPU: [CMD: %2 ms, SWP: %3 ms], IPC: %4 ms, SVC: %5 ms, Rem: %6 ms) - + Frame: %1 ms Frame: %1 ms - + VOLUME: MUTE VOLUME: STIL - + VOLUME: %1% Volume percentage (e.g. 50%) VOLUME: %1% - + %1 is missing. Please <a href='https://web.archive.org/web/20240304201103/https://citra-emu.org/wiki/dumping-system-archives-and-the-shared-fonts-from-a-3ds-console/'>dump your system archives</a>.<br/>Continuing emulation may result in crashes and bugs. - + A system archive Een systeemarchief - + System Archive Not Found Systeem archief niet gevonden - + System Archive Missing Systeemarchief ontbreekt - + Save/load Error Opslaan/Laad fout - + Fatal Error Fatale Fout - + A fatal error occurred. <a href='https://web.archive.org/web/20240228001712/https://community.citra-emu.org/t/how-to-upload-the-log-file/296'>Check the log</a> for details.<br/>Continuing emulation may result in crashes and bugs. - + Fatal Error encountered Fatale fout opgetreden - + Continue Doorgaan - + Quit Application - + OK OK - + Would you like to exit now? Wilt u nu afsluiten? - + The application is still running. Would you like to stop emulation? - + Playback Completed Afspelen voltooid - + Movie playback completed. Film afspelen voltooid. - + Update Available - + Update %1 for Azahar is available. Would you like to download it? - + Primary Window Primaire venster - + Secondary Window Secundair venster @@ -5015,42 +5156,42 @@ Would you like to download it? GRenderWindow - + OpenGL not available! OpenGL niet beschikbaar! - + OpenGL shared contexts are not supported. OpenGL gedeelde contexten zijn niet ondersteund. - + Error while initializing OpenGL! Fout bij het initialiseren van OpenGL! - + Your GPU may not support OpenGL, or you do not have the latest graphics driver. Het kan zijn dat uw GPU OpenGL niet ondersteunt of dat u niet de nieuwste grafische stuurprogramma geïnstalleert hebt. - + Error while initializing OpenGL 4.3! Fout tijdens het initialiseren van OpenGL 4.3! - + Your GPU may not support OpenGL 4.3, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1 Uw GPU ondersteunt mogelijk OpenGL 4.3 niet of u hebt niet het meest recente grafische stuurprogramma.<br><br>GL Renderer:<br>%1 - + Error while initializing OpenGL ES 3.2! Fout tijdens het initialiseren van OpenGL ES 3.2! - + Your GPU may not support OpenGL ES 3.2, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1 Uw GPU ondersteunt mogelijk OpenGL ES 3.2 niet of u hebt niet het meest recente grafische stuurprogramma.<br><br>GL Renderer:<br>%1 @@ -5058,244 +5199,249 @@ Would you like to download it? GameList - - + + Compatibility Compatibiliteit - - + + Region Regio - - + + File type Bestandstype - - + + Size Grootte - - + + Play time Gespeelde tijd - + Favorite Favoriet - + Eject Cartridge - + Insert Cartridge - + Open Open - + Application Location Applicatie Locatie - + Save Data Location Opgeslagen Gegevens Locatie - + Extra Data Location Extra Gegevens Locatie - + Update Data Location Updategegevens Locatie - + DLC Data Location DLC Gegevens Locatie - + Texture Dump Location Textures Dump Locatie - + Custom Texture Location Aangepaste Textures Locatie - + Mods Location Mods Locatie - + Dump RomFS Dump RomFS - + Disk Shader Cache Schijf Shader-cache - + Open Shader Cache Location Shader-cache locatie openen - + Delete OpenGL Shader Cache OpenGL Shader-cache verwijderen - + + Delete Vulkan Shader Cache + + + + Uninstall Verwijder - + Everything Alles - + Application - + Update Update - + DLC DLC - + Remove Play Time Data Verwijder Speeltijd Gegevens - + Create Shortcut Maak snelkoppeling - + Add to Desktop Voeg toe aan Bureaublad - + Add to Applications Menu Voeg to aan Applicatie Menu - + Stress Test: App Launch - + Properties Eigenschappen - - - - + + + + Azahar - + Are you sure you want to completely uninstall '%1'? This will delete the application if installed, as well as any installed updates or DLC. - - + + %1 (Update) %1 (Update) - - + + %1 (DLC) %1 (DLC) - + Are you sure you want to uninstall '%1'? Weet u zeker dat u '%1' wilt verwijderen? - + Are you sure you want to uninstall the update for '%1'? Weet u zeker dat u de update voor '%1' wilt verwijderen? - + Are you sure you want to uninstall all DLC for '%1'? Weet u zeker dat u alle DLC voor '%1' wilt verwijderen? - + Scan Subfolders Scan Submappen - + Remove Application Directory - + Move Up Omhoog - + Move Down Omlaag - + Open Directory Location Open map Locatie - + Clear Wissen - + Name Naam @@ -5381,7 +5527,7 @@ Screen. GameListPlaceholder - + Double-click to add a new folder to the application list @@ -5389,27 +5535,27 @@ Screen. GameListSearchField - + of van de - + result resultaat - + results resultaten - + Filter: Filter: - + Enter pattern to filter Patroon invoeren om te filteren @@ -6041,24 +6187,24 @@ Debug Message: Shaders voorbereiden %1 / %2 - - Loading Shaders %1 / %2 - Shaders laden %1 / %2 + + Loading %3 %1 / %2 + - + Launching... Starten... - + Now Loading %1 Nu aan het laden %1 - + Estimated Time %1 Geschatte tijd %1 @@ -7034,17 +7180,17 @@ Misschien hebben ze de kamer verlaten. Bestand Openen - + Error Fout - + Couldn't load the camera Kan de camera niet laden - + Couldn't load %1 Kan %1 niet laden diff --git a/dist/languages/pl_PL.ts b/dist/languages/pl_PL.ts index be208b3ff..826fdfb11 100644 --- a/dist/languages/pl_PL.ts +++ b/dist/languages/pl_PL.ts @@ -328,8 +328,8 @@ Spowodowałoby to zablokowanie zarówno nazwy użytkownika forum, jak i adresu I - This post-processing effect adjusts audio speed to match emulation speed and helps prevent audio stutter. This however increases audio latency. - Efekt ten dostosowuje prędkość dźwięku do prędkości emulacji w celu zapobiegnięcia tzw. "stutteringu" dźwięku. Opcja ta zwiększa opóźnienie dźwięku. + <html><head/><body><p>This post-processing effect adjusts audio speed to match emulation speed and helps prevent audio stutter. This however increases audio latency.</p></body></html> + <html><head/><body><p>Efekt ten dostosowuje prędkość dźwięku do prędkości emulacji w celu zapobiegnięcia tzw. "stutteringu" dźwięku. Opcja ta zwiększa opóźnienie dźwięku.</p></body></html> @@ -338,8 +338,8 @@ Spowodowałoby to zablokowanie zarówno nazwy użytkownika forum, jak i adresu I - Scales audio playback speed to account for drops in emulation framerate. This means that audio will play at full speed even while the application framerate is low. May cause audio desync issues. - Skaluje prędkość odtwarzania dźwięku, aby uwzględnić spadki liczby klatek na sekundę emulacji. Oznacza to, że dźwięk będzie odtwarzany z pełną prędkością nawet przy niskim framerate aplikacji. Może powodować problemy z desynchronizacją dźwięku. + <html><head/><body><p>Scales audio playback speed to account for drops in emulation framerate. This means that audio will play at full speed even while the application framerate is low. May cause audio desync issues.</p></body></html> + <html><head/><body><p>Skaluje prędkość odtwarzania dźwięku, aby uwzględnić spadki liczby klatek na sekundę emulacji. Oznacza to, że dźwięk będzie odtwarzany z pełną prędkością nawet przy niskim framerate aplikacji. Może powodować problemy z desynchronizacją dźwięku.</p></body></html> @@ -478,8 +478,8 @@ Spowodowałoby to zablokowanie zarówno nazwy użytkownika forum, jak i adresu I - Select where the image of the emulated camera comes from. It may be an image or a real camera. - Wybierz obraz, z którego ma być emulowana kamera. Może to być plik lub prawdziwa kamera. + <html><head/><body><p>Select where the image of the emulated camera comes from. It may be an image or a real camera.</p></body></html> + <html><head/><body><p>Wybierz obraz, z którego ma być emulowana kamera. Może to być plik lub prawdziwa kamera.</p></body></html> @@ -807,21 +807,31 @@ Czy chcesz zignorować błąd i kontynuować? + <html><head/><body><p>Toggles the unique data console type (Old 3DS ↔ New 3DS) to be able to download the opposite system firmware type from system settings.</p></body></html> + + + + + Toggle unique data console type + + + + Force deterministic async operations Wymuś wykonywanie deterministycznych operacji asynchronicznych - + <html><head/><body><p>Forces all async operations to run on the main thread, making them deterministic. Do not enable if you don't know what you are doing.</p></body></html> <html><head/><body><p>Wymusza wykonywanie wszystkich operacji asynchronicznych w głównym wątku, czyniąc je deterministycznymi. Nie włączaj, jeśli nie wiesz, co robisz.</p></body></html> - + Enable RPC server Włącz serwer RPC - + <html><head/><body><p>Enables the RPC server on port 45987. This allows remotely reading/writing guest memory, do not enable if you don't know what you are doing.</p></body></html> <html><head/><body><p>Włącza serwer RPC na porcie 45987. Pozwala to na zdalny odczyt/zapis pamięci gościa. Nie włączaj tej opcji, jeśli nie wiesz, co robisz.</p></body></html> @@ -1019,176 +1029,186 @@ Czy chcesz zignorować błąd i kontynuować? + Use Integer Scaling + Użyj skalowania całkowitoliczbowego + + + + <html><head/><body><p>Use Integer Scaling</p><p>Enforces that the larger screen in all layouts is an integer scale of the 240px height of the original 3DS screen.</p></body></html> + <html><head/><body><p>Użyj skalowania całkowitoliczbowego</p><p>Wymusza, by większy ekran we wszystkich układach był skalą całkowitą wysokości 240 pikseli oryginalnego ekranu 3DS.</p></body></html> + + + Enable Linear Filtering Włącz Filtrowanie Liniowe - + Post-Processing Shader Przetwarzanie obrazu shaderów - + Texture Filter Filtr tekstur - + None Brak - + Anime4K Anime4K - + Bicubic Bicubic - + ScaleForce ScaleForce - + xBRZ xBRZ - + MMPX MMPX - + Stereoscopy Sterowanie stereoskopowe - + Stereoscopic 3D Mode Tryb stereoskopowy 3D - + Off Wyłączony - + Side by Side Obok Siebie - + Side by Side Full Width Obok Siebie na Pełną Szerokość - + Anaglyph Analogiczny - + Interlaced Naprzemienny - + Reverse Interlaced Odwrócony Obraz - + Depth Zasięg - + % % - + Note: Depth values over 100% are not possible on real hardware and may cause graphical issues Uwaga: Wartość przekraczająca 100% nie jest możliwa na rzeczywistym sprzęcie i może powodować problemy graficzne. - + Eye to Render in Monoscopic Mode Renderowanie oka w trybie monoskopowym - + Left Eye (default) Lewe Oko (domyślnie) - + Right Eye Prawe Oko - + Disable Right Eye Rendering Wyłącz Renderowanie Prawego Oka - + <html><head/><body><p>Disable Right Eye Rendering</p><p>Disables rendering the right eye image when not using stereoscopic mode. Greatly improves performance in some applications, but can cause flickering in others.</p></body></html> <html><head/><body><p>Wyłącza renderowanie prawego oka</p><p>Wyłącza renderowanie obrazu dla prawego oka, gdy nie jest używany tryb stereoskopowy. Znacznie poprawia wydajność w niektórych grach, ale w innych grach może powodować migotanie obrazu.</p></body></html> - + Swap Eyes Zamiana Oczu - + Utility Narzędzia - + <html><head/><body><p>Replace textures with PNG files.</p><p>Textures are loaded from load/textures/[Title ID]/.</p></body></html> <html><head/><body><p>Zastępuje tekstury przez pliki PNG.</p><p>Tekstury są ładowane z pliku load/textures/[Title ID]/.</p></body></html> - + Use custom textures Użyj niestandardowych tekstur - + <html><head/><body><p>Dump textures to PNG files.</p><p>Textures are dumped to dump/textures/[Title ID]/.</p></body></html> <html><head/><body><p>Zrzuca tekstury do plików PNG.</p><p>Tekstury są zrzucane do pliku dump/textures/[Title ID]/.</p></body></html> - + Dump textures Zrzuć Tekstury - + <html><head/><body><p>Load all custom textures into memory on boot, instead of loading them when the application requires them.</p></body></html> <html><head/><body><p>Ładowanie wszystkich niestandardowych tekstur do pamięci podczas uruchamiania, zamiast ładowania ich, gdy wymaga tego aplikacja.</p></body></html> - + Preload custom textures Wczytaj Customowe Tekstury - + <html><head/><body><p>Load custom textures asynchronously with background threads to reduce loading stutter</p></body></html> <html><head/><body><p>Załaduj niestandardowe tekstury asynchronicznie za pomocą wątków w tle, aby zmniejszyć opóźnienia w ładowaniu.</p></body></html> - + Async custom texture loading Asynchroniczne ładowanie customowych tekstur @@ -1494,8 +1514,8 @@ Czy chcesz zignorować błąd i kontynuować? - VSync prevents the screen from tearing, but some graphics cards have lower performance with VSync enabled. Keep it enabled if you don't notice a performance difference. - VSync zapobiega efektowi rozdarcia ekranu, ale niektóre karty graficzne mają niższą wydajność z włączoną funkcją VSync. Pozostaw ją włączoną, jeśli nie zauważysz różnicy w wydajności. + <html><head/><body><p>VSync prevents the screen from tearing, but some graphics cards have lower performance with VSync enabled. Keep it enabled if you don't notice a performance difference.</p></body></html> + <html><head/><body><p>VSync zapobiega efektowi rozdarcia ekranu, ale niektóre karty graficzne mają niższą wydajność z włączoną funkcją VSync. Pozostaw ją włączoną, jeśli nie zauważysz różnicy w wydajności.</p></body></html> @@ -1503,22 +1523,32 @@ Czy chcesz zignorować błąd i kontynuować? Włącz V-Sync - + + <html><head/><body><p>When enabled, this setting detects when the refresh rate of the screen is below that of the 3DS, and when it is, disables VSync automatically to avoid emulation speed being forced below 100%.</p></body></html> + <html><head/><body><p>Po włączeniu tej opcji, wykrywa ona, kiedy częstotliwość odświeżania ekranu jest niższa niż w 3DS, i w takim przypadku, automatycznie wyłącza VSync, żeby uniknąć zmniejszenia prędkości emulacji poniżej 100%.</p></body></html> + + + + Enable display refresh rate detection + Włącz wykrywanie częstotliwości odświeżania wyświetlacza + + + Use global Użyj ustawień ogólnych - + Use per-application Użyj dla każdej aplikacji - + Delay Application Render Thread Opóźnij renderowanie wątku aplikacji: - + <html><head/><body><p>Delays the emulated application render thread the specified amount of milliseconds every time it submits render commands to the GPU.</p><p>Adjust this feature in the (very few) dynamic framerate applications to fix performance issues.</p></body></html> <html><head/><body><p>Opóźnia emulowany wątek renderowania aplikacji o określoną liczbę milisekund za każdym razem, gdy wysyła polecenia renderowania do GPU.</p><p>Dostosuj tę funkcję w (bardzo niewielu) aplikacjach z dynamiczną liczbą klatek na sekundę, aby naprawić problemy z wydajnością.</p></body></html> @@ -1997,170 +2027,243 @@ Czy chcesz zignorować błąd i kontynuować? - + Custom Layout Niestandardowy Układ - - Swap screens - Zamień Ekrany - - - + Rotate screens upright Obróć ekrany w pozycji pionowej - + + Swap screens + Zamień Ekrany + + + + Customize layout cycling + + + + Screen Gap Odstęp ekranu - + Large Screen Proportion Proporcje na dużym ekranie - + Small Screen Position Pozycja małego ekranu - + Upper Right Prawy górny róg - + Middle Right Środkowy prawy - + Bottom Right (default) Prawy dolny róg (domyślne) - + Upper Left Lewy górny róg - + Middle Left Środkowy lewy - + Bottom Left Lewy dolny róg - + Above large screen Duży ekran powyżej - + Below large screen Duży ekran poniżej - + Background Color Kolor tła - - + + Top Screen Górny ekran - - + + X Position Pozycja X - - - - - - - - - + + + + + + + + - - + + + px px - - + + Y Position Pozycja Y - - + + Width Szerokość - - + + Height Wysokość - - + + Bottom Screen Dolny ekran - + <html><head/><body><p>Bottom Screen Opacity %</p></body></html> <html><head/><body><p>krycia dolnego ekranu %</p></body></html> - + Single Screen Layout Pojedynczy układ ekranu - - + + Stretch Rozciągliwość - - + + Left/Right Padding Wypełnienie z lewej/prawej strony - - + + Top/Bottom Padding Wypełnienie górne/dolne - + Note: These settings affect the Single Screen and Separate Windows layouts Uwaga: Ustawienia te mają wpływ na układy Pojedynczego ekranu i Oddzielnych okien + + ConfigureLayoutCycle + + + Configure Layout Cycling + + + + + Screen Layout Cycling Customization + + + + + Select which screen layout options should be cycled with the "Toggle Screen Layout" hotkey + + + + + Use Global Value + + + + + Default + Domyślny + + + + Single Screen + + + + + Large Screen + Duży Ekran + + + + Side by Side + Obok Siebie + + + + Separate Windows + + + + + Hybrid + + + + + Custom + Własny + + + + No Layout Selected + + + + + Please select at least one layout option to cycle through. + + + ConfigureMotionTouch - + Configure Motion / Touch Konfiguruj Ruch / Dotyk... @@ -2188,8 +2291,10 @@ Czy chcesz zignorować błąd i kontynuować? - - + + + + Configure Skonfiguruj... @@ -2219,58 +2324,68 @@ Czy chcesz zignorować błąd i kontynuować? Użyj mapowania przycisków: - + + Map touchpads on controllers like the DualSense directly to touch + + + + + Use controller touchpad + + + + CemuhookUDP Config Konfiguracja CemuhookUDP - + You may use any Cemuhook compatible UDP input source to provide motion and touch input. Możesz skorzystać z dowolnego zgodnego z CemuhookUDP aby obsłużyć dotyk i ruch. - + Server: Serwer: - + Port: Port: - + Pad: Kontroler: - + Pad 1 Kontroler 1 - + Pad 2 Kontroler 2 - + Pad 3 Kontroler 3 - + Pad 4 Kontroler 4 - + Learn More Dowiedz się więcej - - + + Test Przetestuj @@ -2301,57 +2416,68 @@ Czy chcesz zignorować błąd i kontynuować? <a href='https://web.archive.org/web/20240301211230/https://citra-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">Dowiedz się więcej</span></a> - + + Information Informacje - + After pressing OK, press a button on the controller whose motion you want to track. Po naciśnięciu przycisku OK naciśnij przycisk na kontrolerze, którego ruch chcesz śledzić. - + [press button] [naciśnij przycisk] - + + After pressing OK, tap the touchpad on the controller you want to track. + + + + + [press touchpad] + + + + Testing Testowanie - + Configuring Konfiguracja - + Test Successful Test Udany - + Successfully received data from the server. Poprawnie 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 udało się otrzymać danych z serwera.<br>Sprawdź czy twój serwer jest prawidłowo ustawiony oraz czy podałeś prawidłowy adres i port. - + Azahar Azahar - + UDP Test or calibration configuration is in progress.<br>Please wait for them to finish. Test UDP lub kalibracja jest właśnie wykonywana. <br>Poczekaj, aż zostaną zakończone. @@ -2521,8 +2647,8 @@ Czy chcesz zignorować błąd i kontynuować? - Compresses the content of CIA files when installed to the emulated SD card. Only affects CIA content which is installed while the setting is enabled. - Kompresuje zawartość plików CIA zainstalowanych na emulowanej karcie SD. Ma wpływ tylko na zawartość CIA, która jest instalowana, gdy ustawienie jest włączone. + <html><head/><body><p>Compresses the content of CIA files when installed to the emulated SD card. Only affects CIA content which is installed while the setting is enabled.</p></body></html> + <html><head/><body><p>Kompresuje zawartość plików CIA zainstalowanych na emulowanej karcie SD. Ma wpływ tylko na zawartość CIA, która jest instalowana, gdy ustawienie jest włączone.</p></body></html> @@ -4105,511 +4231,526 @@ Sprawdź instalację FFmpeg używaną do kompilacji. GMainWindow - + + Warning + Ostrzeżenie + + + + The `azahar` executable is being run directly rather than via the Azahar.app bundle. + +When run this way, the app may be missing certain functionality such as camera emulation. + +It is recommended to instead run Azahar using the `open` command, e.g.: +`open ./Azahar.app` + + + + No Suitable Vulkan Devices Detected Nie wykryto odpowiednich urządzeń Vulkan - + Vulkan initialization failed during boot.<br/>Your GPU may not support Vulkan 1.1, or you do not have the latest graphics driver. Podczas uruchamiania systemu uruchamianie Vulkan nie powiodło się.<br/>Twój procesor graficzny może nie obsługiwać Vulkan 1.1 lub nie masz najnowszego sterownika graficznego. - + Current Artic traffic speed. Higher values indicate bigger transfer loads. Bieżąca prędkość ruchu Artic Base. Wyższe wartości oznaczają większe obciążenia transferowe. - - + + Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a 3DS. Obecna szybkość emulacji. Wartości większe lub mniejsze niż 100 % oznaczają, że emulacja jest szybsza lub wolniejsza niż 3DS - - + + How many frames per second the app is currently displaying. This will vary from app to app and scene to scene. Jak wiele klatek na sekundę aplikacja wyświetla w tej chwili. Ta wartość będzie się różniła między aplikacji, jak również między scenami w aplikacji. - - + + Time taken to emulate a 3DS frame, not counting framelimiting or v-sync. For full-speed emulation this should be at most 16.67 ms. Czas potrzebny do emulacji klatki 3DS, nie zawiera limitowania klatek oraz v-sync. Dla pełnej prędkości emulacji, wartość nie powinna przekraczać 16.67 ms. - + MicroProfile (unavailable) MicroProfile (niedostępne) - + Clear Recent Files Wyczyść Ostatnio Używane - + &Continue &Kontynuuj - + &Pause &Wstrzymaj - + Azahar is running an application TRANSLATORS: This string is shown to the user to explain why Citra needs to prevent the computer from sleeping Azahar jest w trakcie uruchamiania aplikację - - + + Invalid App Format Nieprawidłowy format aplikacji - - + + Your app format is not supported.<br/>Please follow the guides to redump your <a href='https://web.archive.org/web/20240304210021/https://citra-emu.org/wiki/dumping-game-cartridges/'>game cartridges</a> or <a href='https://web.archive.org/web/20240304210011/https://citra-emu.org/wiki/dumping-installed-titles/'>installed titles</a>. Twój format aplikacji nie jest obsługiwany.<br/>Postępuj zgodnie z instrukcjami, aby ponownie zrzucić <a href='https://web.archive.org/web/20240304210021/https://citra-emu.org/wiki/dumping-game-cartridges/'>kartridże z grami</a> lub <a href='https://web.archive.org/web/20240304210011/https://citra-emu.org/wiki/dumping-installed-titles/'>zainstalowane tytuły</a>. - + App Corrupted Aplikacja jest uszkodzona - + Your app is corrupted. <br/>Please follow the guides to redump your <a href='https://web.archive.org/web/20240304210021/https://citra-emu.org/wiki/dumping-game-cartridges/'>game cartridges</a> or <a href='https://web.archive.org/web/20240304210011/https://citra-emu.org/wiki/dumping-installed-titles/'>installed titles</a>. Twoja aplikacja jest uszkodzona. <br/>Postępuj zgodnie z instrukcjami, aby ponownie zrzucić <a href='https://web.archive.org/web/20240304210021/https://citra-emu.org/wiki/dumping-game-cartridges/'>kartridże z grami</a> lub <a href='https://web.archive.org/web/20240304210011/https://citra-emu.org/wiki/dumping-installed-titles/'>zainstalowane tytuły</a>. - + App Encrypted Aplikacja jest zaszyfrowana - + Your app is encrypted. <br/><a href='https://azahar-emu.org/blog/game-loading-changes/'>Please check our blog for more info.</a> Twoja aplikacja jest zaszyfrowana. <br/><a href='https://azahar-emu.org/blog/game-loading-changes/'>Więcej informacji można znaleźć na naszym blogu.</a> - + Unsupported App Nieobsługiwana aplikacja - + GBA Virtual Console is not supported by Azahar. Wirtualnej konsola GBA nie są obsługiwana przez Azahar. - - + + Artic Server Serwer Artic - + Invalid system mode Nieprawidłowy moduł systemu - + New 3DS exclusive applications cannot be loaded without enabling the New 3DS mode. Aplikacje dostępne wyłącznie na konsoli New 3DS nie mogą być uruchamiane bez włączenia trybu New 3DS. - + Error while loading App! Błąd podczas ładowania aplikacji! - + An unknown error occurred. Please see the log for more details. Wystąpił nieznany błąd. Więcej informacji można znaleźć w logu. - + CIA must be installed before usage CIA musi być zainstalowana przed użyciem - + Before using this CIA, you must install it. Do you want to install it now? Przed użyciem CIA należy ją zainstalować. Czy chcesz zainstalować ją teraz? - + Quick Load Szybkie wczytywanie - + Quick Save Szybkie zapisywanie - - + + Slot %1 Slot %1 - + %2 %3 %2 %3 - + Quick Save - %1 Szybkie zapisywanie - %1 - + Quick Load - %1 Szybkie wczytywanie - %1 - + Slot %1 - %2 %3 Slot %1 - %2 %3 - + Error Opening %1 Folder Błąd podczas otwierania folderu %1 - - + + Folder does not exist! Folder nie istnieje! - + Remove Play Time Data Usuń dane czasu odtwarzania - + Reset play time? Zresetować czas gry? - - - - + + + + Create Shortcut Utwórz skrót - + Do you want to launch the application in fullscreen? Czy chcesz uruchomić aplikacje na pełnym ekranie? - + Successfully created a shortcut to %1 Pomyślnie utworzono skrót do %1 - + This will create a shortcut to the current AppImage. This may not work well if you update. Continue? Spowoduje to utworzenie skrótu do bieżącego obrazu aplikacji. Może to nie działać dobrze po aktualizacji. Kontynuować? - + Failed to create a shortcut to %1 Nie udało się utworzyć skrótu do %1 - + Create Icon Stwó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ć. - + Dumping... Zrzucanie... - - + + Cancel Anuluj - - - - - - - - - + + + + + + + + + Azahar Azahar - + Could not dump base RomFS. Refer to the log for details. Nie można zrzucić podstawowego RomFS. Szczegółowe informacje można znaleźć w logu. - + Error Opening %1 Błąd podczas otwierania %1 - + Select Directory Wybierz Folder - + Properties Właściwości - + The application properties could not be loaded. Nie można wczytać właściwości aplikacji. - + 3DS Executable (%1);;All Files (*.*) %1 is an identifier for the 3DS executable file extensions. Pliki wykonywalne 3DS (%1);;Wszystkie pliki (*.*) - + Load File Załaduj Plik - - + + Set Up System Files Konfiguracja plików systemowych - + <p>Azahar needs console unique data and firmware files from a real console to be able to use some of its features.<br>Such files and data can be set up with the <a href=https://github.com/azahar-emu/ArticSetupTool>Azahar Artic Setup Tool</a><br>Notes:<ul><li><b>This operation will install console unique data to Azahar, do not share your user or nand folders<br>after performing the setup process!</b></li><li>While doing the setup process, Azahar will link to the console running the setup tool. You can unlink the<br>console later from the System tab in the emulator configuration menu.</li><li>Do not go online with both Azahar and your 3DS console at the same time after setting up system files,<br>as it could cause issues.</li><li>Old 3DS setup is needed for the New 3DS setup to work (doing both setup modes is recommended).</li><li>Both setup modes will work regardless of the model of the console running the setup tool.</li></ul><hr></p> <p>Azahar potrzebuje plików z rzeczywistej konsoli, aby móc korzystać z niektórych jej funkcji.<br>Możesz uzyskać te pliki za pomocą <a href=https://github.com/azahar-emu/ArticSetupTool>Azahar Artic Setup Tool</a><br>Uwagi:<ul><li><b>Ta operacja zainstaluje unikalne pliki konsoli do Azahar, nie udostępniaj swoich folderów użytkownika lub nand<br>po wykonaniu procesu konfiguracji!</b></li><li>Podczas procesu konfiguracji Azahar połączy się z konsolą, na której uruchomione jest narzędzie instalacyjne.<br>Konsolę można później odłączyć w zakładce System w menu konfiguracji emulatora.</li><li>Nie korzystaj jednocześnie z Azahar i konsoli 3DS po skonfigurowaniu plików systemowych,<br>bo może to spowodować błędy. </li><li>Old 3DS jest wymagany do działania konfiguracji New 3DS (zalecane jest wykonanie obu tych konfiguracji).</li><li>Oba tryby konfiguracji będą działać niezależnie od modelu konsoli, na której uruchomiono narzędzie konfiguracyjne.</li></ul><hr></p> - + Enter Azahar Artic Setup Tool address: Wprowadź adres narzędzia konfiguracyjnego Azahar Artic: - + <br>Choose setup mode: <br>Wybierz tryb konfiguracji: - + (ℹ️) Old 3DS setup (ℹ️) Konfiguracja Old 3DS - - + + Setup is possible. Konfiguracja jest możliwa. - + (⚠) New 3DS setup (⚠) Konfiguracja New 3DS - + Old 3DS setup is required first. Najpierw wymagana jest konfiguracja Old 3DS. - + (✅) Old 3DS setup (✅) Konfiguracja Old 3DS - - + + Setup completed. Konfiguracja została zakończona. - + (ℹ️) New 3DS setup (ℹ️) Konfiguracja New 3DS - + (✅) New 3DS setup (✅) Konfiguracja New 3DS - + The system files for the selected mode are already set up. Reinstall the files anyway? Pliki systemowe dla wybranego trybu są już skonfigurowane. Czy mimo to chcesz ponownie zainstalować pliki? - + Load Files Załaduj Pliki - + 3DS Installation File (*.cia *.zcia) Plik Instalacyjny 3DS (*.cia *.zcia) - - - + + + All Files (*.*) Wszystkie Pliki (*.*) - + Connect to Artic Base Połącz z Artic Base - + Enter Artic Base server address: Wprowadź adres serwera Artic Base: - + %1 has been installed successfully. %1 został poprawnie zainstalowany. - + Unable to open File Nie można otworzyć Pliku - + Could not open %1 Nie można otworzyć %1 - + Installation aborted Instalacja przerwana - + The installation of %1 was aborted. Please see the log for more details Instalacja %1 została przerwana. Sprawdź logi, aby uzyskać więcej informacji. - + Invalid File Niepoprawny Plik - + %1 is not a valid CIA %1 nie jest prawidłowym plikiem CIA - + CIA Encrypted Plik CIA jest zaszyfrowany - + Your CIA file is encrypted.<br/><a href='https://azahar-emu.org/blog/game-loading-changes/'>Please check our blog for more info.</a> Twój plik CIA jest zaszyfrowany.<br/><a href='https://azahar-emu.org/blog/game-loading-changes/'>Więcej informacji można znaleźć na naszym blogu.</a> - + Unable to find File Nie można odnaleźć pliku - + Could not find %1 Nie można odnaleźć %1 - - - - + + + + Z3DS Compression Kompresuj pliki Z3DS - + Failed to compress some files, check log for details. Nie udało się skompresować niektórych plików, sprawdź log, aby uzyskać szczegółowe informacje. - + Failed to decompress some files, check log for details. Nie udało się rozpakować niektórych plików. Szczegółowe informacje można znaleźć w logu. - + All files have been compressed successfully. Wszystkie pliki zostały pomyślnie skompresowane. - + All files have been decompressed successfully. Wszystkie pliki zostały pomyślnie zdekompresowane. - + Uninstalling '%1'... Odinstalowywanie '%1'... - + Failed to uninstall '%1'. Nie udało się odinstalować '%1'. - + Successfully uninstalled '%1'. Pomyślnie odinstalowano '%1'. - + File not found Nie znaleziono pliku - + File "%1" not found Nie znaleziono pliku "%1" - + Savestates Savestate.y - + Warning: Savestates are NOT a replacement for in-application saves, and are not meant to be reliable. Use at your own risk! @@ -4618,86 +4759,86 @@ Use at your own risk! Używaj na własne ryzyko! - - - + + + Error opening amiibo data file Błąd podczas otwierania pliku danych amiibo - + A tag is already in use. Tag jest już używany. - + Application is not looking for amiibos. Aplikacja nie szuka amiibo. - + Amiibo File (%1);; All Files (*.*) Plik Amiibo (%1);; Wszystkie pliki (*.*) - + Load Amiibo Załaduj Amiibo - + Unable to open amiibo file "%1" for reading. Nie można otworzyć pliku amiibo "%1" do odczytu. - + Record Movie Nagraj Film - + Movie recording cancelled. Nagrywanie zostało przerwane. - - + + Movie Saved Zapisano Film - - + + The movie is successfully saved. Film został poprawnie zapisany. - + Application will unpause Aplikacja zostanie wstrzymana - + The application will be unpaused, and the next frame will be captured. Is this okay? Aplikacja zostanie zatrzymana, a następna klatka zostanie przechwycona. Czy jest to w porządku? - + Invalid Screenshot Directory Nieprawidłowy katalog zrzutów ekranu - + Cannot create specified screenshot directory. Screenshot path is set back to its default value. Nie można utworzyć określonego katalogu zrzutów ekranu. Ścieżka zrzutu ekranu zostanie przywrócona do wartości domyślnej. - + Could not load video dumper Nie można załadować zrzutu filmu - + FFmpeg could not be loaded. Make sure you have a compatible version installed. To install FFmpeg to Azahar, press Open and select your FFmpeg directory. @@ -4710,265 +4851,265 @@ Aby zainstalować FFmpeg do Azahar, naciśnij Otwórz i wybierz katalog FFmpeg. Aby wyświetlić poradnik dotyczący instalacji FFmpeg, naciśnij Pomoc. - + Load 3DS ROM Files Załaduj pliki ROMów 3DS - + 3DS ROM Files (*.cia *.cci *.3dsx *.cxi *.3ds) - + Pliki ROMów 3DS (*.cia *.cci *.3dsx *.cxi *.3ds) - + 3DS Compressed ROM File (*.%1) Skompresowany plik ROMu 3DS (*.%1) - + Save 3DS Compressed ROM File Zapisz skompresowany plik ROMu 3DS - + Select Output 3DS Compressed ROM Folder Wybierz folder wyjściowy skompresowanych plików ROMów 3DS - + Load 3DS Compressed ROM Files Wczytaj skompresowane pliki ROMów 3DS - + 3DS Compressed ROM Files (*.zcia *zcci *z3dsx *zcxi) Skompresowane pliki ROMów 3DS (*.zcia *zcci *z3dsx *zcxi) - + 3DS ROM File (*.%1) Plik ROMu 3DS (*.%1) - + Save 3DS ROM File Zapisz plik ROMu 3DS - + Select Output 3DS ROM Folder Wybierz folder wyjściowy ROMów 3DS - + Select FFmpeg Directory Wybierz katalog FFmpeg - + The provided FFmpeg directory is missing %1. Please make sure the correct directory was selected. W podanym katalogu FFmpeg brakuje %1. Upewnij się, że wybrany został poprawny katalog. - + FFmpeg has been sucessfully installed. FFmpeg został pomyślnie zainstalowany. - + Installation of FFmpeg failed. Check the log file for details. Instalacja FFmpeg nie powiodła się. Sprawdź plik dziennika, aby uzyskać szczegółowe informacje. - + Could not start video dumping.<br>Please ensure that the video encoder is configured correctly.<br>Refer to the log for details. Nie można uruchomić zrzutu filmu.<br>Upewnij się, że koder filmu jest poprawnie skonfigurowany.<br>Szczegółowe informacje można znaleźć w logu. - + Recording %1 Nagrywanie %1 - + Playing %1 / %2 Odtwarzanie %1 / %2 - + Movie Finished Film ukończony - + (Accessing SharedExtData) (Uzyskiwanie dostępu do SharedExtData) - + (Accessing SystemSaveData) (Uzyskiwanie dostępu do SystemSaveData) - + (Accessing BossExtData) (Uzyskiwanie dostępu do BossExtData) - + (Accessing ExtData) (Uzyskiwanie dostępu do ExtData) - + (Accessing SaveData) (Uzyskiwanie dostępu do SaveData) - + MB/s MB/s - + KB/s KB/s - + Artic Traffic: %1 %2%3 Ruch Artic: %1 %2%3 - + Speed: %1% Prędkość: %1% - + Speed: %1% / %2% Prędkość: %1% / %2% - + App: %1 FPS Aplikacja: %1 FPS - + Frame: %1 ms (GPU: [CMD: %2 ms, SWP: %3 ms], IPC: %4 ms, SVC: %5 ms, Rem: %6 ms) Klatka: %1 ms (GPU: [CMD: %2 ms, SWP: %3 ms], IPC: %4 ms, SVC: %5 ms, Rem: %6 ms) - + Frame: %1 ms Klatka: %1 ms - + VOLUME: MUTE GŁOŚNOŚĆ: WYCISZONA - + VOLUME: %1% Volume percentage (e.g. 50%) GŁOŚNOŚĆ: %1% - + %1 is missing. Please <a href='https://web.archive.org/web/20240304201103/https://citra-emu.org/wiki/dumping-system-archives-and-the-shared-fonts-from-a-3ds-console/'>dump your system archives</a>.<br/>Continuing emulation may result in crashes and bugs. Brakuje %1. Prosimy o <a href='https://web.archive.org/web/20240304201103/https://citra-emu.org/wiki/dumping-system-archives-and-the-shared-fonts-from-a-3ds-console/'>zrzucenie archiwów systemowych</a>.<br/>Dalsze korzystanie z emulacji może spowodować awarie i błędy. - + A system archive Archiwum systemu - + System Archive Not Found Archiwum Systemowe nie zostało odnalezione - + System Archive Missing Brak archiwum systemu - + Save/load Error Błąd zapisywania/wczytywania - + Fatal Error Krytyczny Błąd - + A fatal error occurred. <a href='https://web.archive.org/web/20240228001712/https://community.citra-emu.org/t/how-to-upload-the-log-file/296'>Check the log</a> for details.<br/>Continuing emulation may result in crashes and bugs. Wystąpił krytyczny błąd. <a href='https://web.archive.org/web/20240228001712/https://community.citra-emu.org/t/how-to-upload-the-log-file/296'>Sprawdź szczegóły w logu</a>.<br/>Dalsze korzystanie z emulacji może spowodować awarie i błędy. - + Fatal Error encountered Wystąpił błąd krytyczny - + Continue Kontynuuj - + Quit Application Wyjdź z aplikacji - + OK OK - + Would you like to exit now? Czy chcesz teraz wyjść? - + The application is still running. Would you like to stop emulation? Aplikacja jest nadal uruchomiona. Czy chcesz przerwać emulację? - + Playback Completed Odtwarzanie Zakończone - + Movie playback completed. Odtwarzanie filmu zostało zakończone. - + Update Available Dostępna jest aktualizacja - + Update %1 for Azahar is available. Would you like to download it? Aktualizacja %1 dla Azahar jest dostępna. Czy chcesz ją pobrać? - + Primary Window Główne okno - + Secondary Window Dodatkowe okno @@ -5031,42 +5172,42 @@ Czy chcesz ją pobrać? GRenderWindow - + OpenGL not available! OpenGL jest niedostępny! - + OpenGL shared contexts are not supported. Współdzielone konteksty OpenGL nie są obsługiwane. - + Error while initializing OpenGL! Błąd podczas uruchamiania OpenGL! - + Your GPU may not support OpenGL, or you do not have the latest graphics driver. Twój procesor graficzny może nie obsługiwać OpenGL lub nie masz najnowszego sterownika graficznego. - + Error while initializing OpenGL 4.3! Błąd podczas uruchamiania OpenGL 4.3! - + Your GPU may not support OpenGL 4.3, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1 Twój procesor graficzny może nie obsługiwać OpenGL 4.3 lub nie masz najnowszego sterownika graficznego.<br><br>Render GL:<br>%1 - + Error while initializing OpenGL ES 3.2! Błąd podczas uruchamiania OpenGL ES 3.2! - + Your GPU may not support OpenGL ES 3.2, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1 Twój procesor graficzny może nie obsługiwać OpenGL ES 3.2 lub nie masz najnowszego sterownika graficznego.<br><br>Render GL:<br>%1 @@ -5074,180 +5215,185 @@ Czy chcesz ją pobrać? GameList - - + + Compatibility Kompatybilność - - + + Region Region - - + + File type Typ pliku - - + + Size Rozmiar - - + + Play time Czas gry - + Favorite Ulubione - + Eject Cartridge Wyjmij Kartridż - + Insert Cartridge Włóż Kartridż - + Open Otwórz - + Application Location Lokalizacja aplikacji - + Save Data Location Lokalizacja zapisywanych danych - + Extra Data Location Lokalizacja dodatkowych danych - + Update Data Location Zaktualizuj lokalizację danych - + DLC Data Location Lokalizacja danych DLC - + Texture Dump Location Lokalizacja zrzutu tekstur - + Custom Texture Location Lokalizacja niestandardowych tekstur - + Mods Location Lokalizacja modów - + Dump RomFS Zrzuć RomFS - + Disk Shader Cache Pamięć podręczna shaderów na dysku - + Open Shader Cache Location Otwórz lokalizację pamięci podręcznej shaderów - + Delete OpenGL Shader Cache Usuń pamięć podręczną shaderów OpenGL - + + Delete Vulkan Shader Cache + Usuń pamięć podręczną shaderów Vulkan + + + Uninstall Odinstaluj - + Everything Wszystko - + Application Aplikacja - + Update Aktualizacje - + DLC DLC - + Remove Play Time Data Usuń dane czasu gry - + Create Shortcut Utwórz skrót - + Add to Desktop Dodaj do pulpitu - + Add to Applications Menu Dodaj do menu aplikacji - + Stress Test: App Launch Analiza wydajnościowa: uruchomienie aplikacji - + Properties Właściwości - - - - + + + + Azahar Azahar - + Are you sure you want to completely uninstall '%1'? This will delete the application if installed, as well as any installed updates or DLC. @@ -5256,64 +5402,64 @@ This will delete the application if installed, as well as any installed updates Spowoduje to usunięcie aplikacji, jeśli jest zainstalowana, a także wszelkich zainstalowanych aktualizacji lub DLC. - - + + %1 (Update) %1 (Aktualizacja) - - + + %1 (DLC) %1 (DLC) - + Are you sure you want to uninstall '%1'? Czy na pewno chcesz odinstalować '%1'? - + Are you sure you want to uninstall the update for '%1'? Czy na pewno chcesz odinstalować aktualizacje '%1'? - + Are you sure you want to uninstall all DLC for '%1'? Czy na pewno chcesz odinstalować DLC '%1'? - + Scan Subfolders Przeszukaj Podkatalogi - + Remove Application Directory Usuń Katalog Aplikacji - + Move Up Przesuń w górę - + Move Down Przesuń w dół - + Open Directory Location Otwórz lokalizację katalogu - + Clear Wyczyść - + Name Nazwa @@ -5404,7 +5550,7 @@ Działa jedynie ekran startowy. GameListPlaceholder - + Double-click to add a new folder to the application list Kliknij dwukrotnie, aby dodać nowy folder do listy aplikacji. @@ -5412,27 +5558,27 @@ Działa jedynie ekran startowy. GameListSearchField - + of z - + result wynik - + results wyniki - + Filter: Filtr: - + Enter pattern to filter Wprowadź wzór filtra @@ -6065,24 +6211,24 @@ Komunikat debugowania: Przygotowanie shaderów %1 / %2 - - Loading Shaders %1 / %2 - Ładowanie shaderów %1 / %2 + + Loading %3 %1 / %2 + Ładowanie %3 %1 / %2 - + Launching... Uruchamianie... - + Now Loading %1 Aktualnie Ładowanie %1 - + Estimated Time %1 Oszacowany Czas %1 @@ -7058,17 +7204,17 @@ Możliwe, że opuścił pokój. Otwórz Plik - + Error Błąd - + Couldn't load the camera Nie udało się załadować kamery - + Couldn't load %1 Nie można załadować %1 diff --git a/dist/languages/pt_BR.ts b/dist/languages/pt_BR.ts index c81f215a6..bc7e6ac9c 100644 --- a/dist/languages/pt_BR.ts +++ b/dist/languages/pt_BR.ts @@ -328,8 +328,8 @@ Esta ação banirá tanto o seu nome de usuário do fórum como o seu endereço - This post-processing effect adjusts audio speed to match emulation speed and helps prevent audio stutter. This however increases audio latency. - Este efeito de pós-processamento ajusta a velocidade do áudio para acompanhar a velocidade de emulação e ajuda a evitar cortes no áudio. No entanto, isto aumenta a latência do áudio. + <html><head/><body><p>This post-processing effect adjusts audio speed to match emulation speed and helps prevent audio stutter. This however increases audio latency.</p></body></html> + <html><head/><body><p>Este efeito de pós-processamento ajusta a velocidade do áudio para corresponder à velocidade de emulação e ajuda a evitar engasgos no áudio. Isso, no entanto, aumenta a latência de áudio.</p></body></html> @@ -338,8 +338,8 @@ Esta ação banirá tanto o seu nome de usuário do fórum como o seu endereço - Scales audio playback speed to account for drops in emulation framerate. This means that audio will play at full speed even while the application framerate is low. May cause audio desync issues. - Dimensiona a velocidade de reprodução de áudio para compensar quedas na taxa de quadros da emulação. Isso significa que o áudio será reproduzido em velocidade máxima mesmo quando a taxa de quadros do aplicativo estiver baixa. Pode causar problemas de dessincronização de áudio. + <html><head/><body><p>Scales audio playback speed to account for drops in emulation framerate. This means that audio will play at full speed even while the application framerate is low. May cause audio desync issues.</p></body></html> + <html><head/><body><p>Escala a velocidade de reprodução do áudio para compensar quedas na taxa de quadros da emulação. Isso significa que o áudio será reproduzido em velocidade total mesmo quando a taxa de quadros do aplicativo estiver baixa. Pode causar problemas de dessincronização de áudio.</p></body></html> @@ -478,8 +478,8 @@ Esta ação banirá tanto o seu nome de usuário do fórum como o seu endereço - Select where the image of the emulated camera comes from. It may be an image or a real camera. - Selecione de onde vem a imagem da câmera emulada. Pode ser um arquivo de imagem ou uma câmera real. + <html><head/><body><p>Select where the image of the emulated camera comes from. It may be an image or a real camera.</p></body></html> + <html><head/><body><p>Selecione de onde vem a imagem da câmera emulada. Pode ser uma imagem ou uma câmera real.</p></body></html> @@ -807,21 +807,31 @@ Gostaria de ignorar o erro e continuar? + <html><head/><body><p>Toggles the unique data console type (Old 3DS ↔ New 3DS) to be able to download the opposite system firmware type from system settings.</p></body></html> + <html><head/><body><p>Alterna o tipo de console de dados únicos (Old 3DS ↔ New 3DS) para permitir o download do firmware do sistema oposto nas configurações do sistema.</p></body></html> + + + + Toggle unique data console type + Alternar tipo de console de dados únicos + + + Force deterministic async operations Forçar operações assíncronas determinísticas - + <html><head/><body><p>Forces all async operations to run on the main thread, making them deterministic. Do not enable if you don't know what you are doing.</p></body></html> <html><head/><body><p>Força todas as operações assíncronas a serem executadas na thread principal, tornando-as determinísticas. Não ative esta opção se não souber o que está fazendo.</p></body></html> - + Enable RPC server Ativar servidor RPC - + <html><head/><body><p>Enables the RPC server on port 45987. This allows remotely reading/writing guest memory, do not enable if you don't know what you are doing.</p></body></html> <html><head/><body><p>Ativa o servidor RPC na porta 45987. Isso permite a leitura/escrita remota na memória emulada, não ative se não souber o que está fazendo.</p></body></html> @@ -1019,176 +1029,186 @@ Gostaria de ignorar o erro e continuar? + Use Integer Scaling + Usar Escala Inteira + + + + <html><head/><body><p>Use Integer Scaling</p><p>Enforces that the larger screen in all layouts is an integer scale of the 240px height of the original 3DS screen.</p></body></html> + <html><head/><body><p>Usar Escala Inteira</p><p>Garante que a tela maior em todos os layouts tenha uma escala inteira de 240px de altura, correspondente à tela original do 3DS. </p></body></html> + + + Enable Linear Filtering Ativar Filtragem Linear - + Post-Processing Shader Shader de pós-processamento - + Texture Filter Filtro de texturas - + None Nenhum - + Anime4K Anime4K - + Bicubic Bicúbico - + ScaleForce ScaleForce - + xBRZ xBRZ - + MMPX MMPX - + Stereoscopy Estereoscopia - + Stereoscopic 3D Mode Modo 3D estereoscópico - + Off Não - + Side by Side Lado a lado - + Side by Side Full Width Lado a Lado (Largura Total) - + Anaglyph Anáglifo - + Interlaced Entrelaçado - + Reverse Interlaced Entrelaçado reverso - + Depth Profundidade - + % % - + Note: Depth values over 100% are not possible on real hardware and may cause graphical issues Nota: Valores de profundidade acima de 100% não são possíveis no hardware real e podem causar problemas gráficos - + Eye to Render in Monoscopic Mode Olho para Renderizar no Modo Monoscópico - + Left Eye (default) Olho esquerdo (padrão) - + Right Eye Olho direito - + Disable Right Eye Rendering Desativar Renderização do Olho Direito - + <html><head/><body><p>Disable Right Eye Rendering</p><p>Disables rendering the right eye image when not using stereoscopic mode. Greatly improves performance in some applications, but can cause flickering in others.</p></body></html> <html><head/><body><p>Desativar a Renderização do Olho Direito</p><p>Desativa a renderização da imagem do olho direito quanto não estiver usando o modo. Melhora muito o desempenho em alguns aplicativos, mas pode causar piscadas em outros.</p></body></html> - + Swap Eyes Inverter Olhos - + Utility Utilidade - + <html><head/><body><p>Replace textures with PNG files.</p><p>Textures are loaded from load/textures/[Title ID]/.</p></body></html> <html><head/><body><p>Substitui as texturas por arquivos PNG.</p><p>As texturas são carregadas a partir de load/textures/[ID do título]/.</p></body></html> - + Use custom textures Usar texturas personalizadas - + <html><head/><body><p>Dump textures to PNG files.</p><p>Textures are dumped to dump/textures/[Title ID]/.</p></body></html> <html><head/><body><p>Extrai as texturas em arquivos PNG.</p><p>As texturas são extraídas para dump/textures/[ID do título]/.</p></body></html> - + Dump textures Extrair texturas - + <html><head/><body><p>Load all custom textures into memory on boot, instead of loading them when the application requires them.</p></body></html> <html><head/><body><p>Carregar todas as texturas personalizadas na memória ao iniciar, em vez de carregá-las apenas quando o aplicativo exigir.</p></body></html> - + Preload custom textures Pré-carregar texturas personalizadas - + <html><head/><body><p>Load custom textures asynchronously with background threads to reduce loading stutter</p></body></html> <html><head/><body><p>Carregue texturas personalizadas de maneira assíncrona com threads em segundo plano para reduzir o stutter do carregamento</p></body></html> - + Async custom texture loading Carregamento assíncrono de texturas personalizadas @@ -1494,8 +1514,8 @@ Gostaria de ignorar o erro e continuar? - VSync prevents the screen from tearing, but some graphics cards have lower performance with VSync enabled. Keep it enabled if you don't notice a performance difference. - A sincronização vertical evita que as imagens do jogo pareçam cortadas, porém algumas placas gráficas apresentam redução de desempenho quando esta está ativada. Deixe-a ativada se você não reparar alguma diferença de desempenho. + <html><head/><body><p>VSync prevents the screen from tearing, but some graphics cards have lower performance with VSync enabled. Keep it enabled if you don't notice a performance difference.</p></body></html> + <html><head/><body><p>O VSync evita que a tela sofra rasgos (tearing), mas algumas placas de vídeo têm menor desempenho com o VSync ativado. Mantenha-o ativado se não notar diferença de desempenho.</p></body></html> @@ -1503,22 +1523,32 @@ Gostaria de ignorar o erro e continuar? Ativar sincronização vertical - + + <html><head/><body><p>When enabled, this setting detects when the refresh rate of the screen is below that of the 3DS, and when it is, disables VSync automatically to avoid emulation speed being forced below 100%.</p></body></html> + <html><head/><body><p>Quando ativada, esta configuração detecta quando a taxa de atualização da tela está abaixo da do 3DS e, quando isso ocorre, desativa o VSync automaticamente para evitar que a velocidade de emulação seja forçada abaixo de 100%.</p></body></html> + + + + Enable display refresh rate detection + Ativar detecção da taxa de atualização da tela + + + Use global Usar global - + Use per-application Usar por aplicativo - + Delay Application Render Thread Atrasar Thread de Renderização da Aplicação - + <html><head/><body><p>Delays the emulated application render thread the specified amount of milliseconds every time it submits render commands to the GPU.</p><p>Adjust this feature in the (very few) dynamic framerate applications to fix performance issues.</p></body></html> <html><head/><body><p>Atrasa a thread de renderização emulada por uma quantidade específica de milissegundos toda vez que forem enviados comandos para a GPU.</p><p>Ajuste esta funcionalidade em (bem poucos) aplicativos com taxa de quadros dinâmica para corrigir problemas de desempenho.</p></body></html> @@ -1997,170 +2027,243 @@ Gostaria de ignorar o erro e continuar? - + Custom Layout Disposição Personalizada - - Swap screens - Trocar telas - - - + Rotate screens upright Rotacionar telas para a posição vertical - + + Swap screens + Trocar telas + + + + Customize layout cycling + Personalizar alternância de layout + + + Screen Gap Espaço Entre Telas - + Large Screen Proportion Proporção de Tela Grande - + Small Screen Position Posição da Tela Pequena - + Upper Right Superior Direita - + Middle Right Centro à Direita - + Bottom Right (default) Inferior Direita (padrão) - + Upper Left Superior Esquerda - + Middle Left Centro à Esquerda - + Bottom Left Inferior Esquerda - + Above large screen Acima da tela grande - + Below large screen Abaixo da tela grande - + Background Color Cor de Fundo - - + + Top Screen Tela Superior - - + + X Position Posição X - - - - - - - - - + + + + + + + + - - + + + px px - - + + Y Position Posição Y - - + + Width Largura - - + + Height Altura - - + + Bottom Screen Tela Inferior - + <html><head/><body><p>Bottom Screen Opacity %</p></body></html> <html><head/><body><p>Opacidade da tela inferior %</p></body></html> - + Single Screen Layout Disposição em Tela Única - - + + Stretch Estender - - + + Left/Right Padding Padding Esquerdo/Direito - - + + Top/Bottom Padding Padding Superior/Inferior - + Note: These settings affect the Single Screen and Separate Windows layouts Nota: Estas configurações afetam as disposições em Tela Única e Janelas Separadas + + ConfigureLayoutCycle + + + Configure Layout Cycling + Configurar Alternância de Layout + + + + Screen Layout Cycling Customization + Personalização da Alternância de Layout de Tela + + + + Select which screen layout options should be cycled with the "Toggle Screen Layout" hotkey + Selecione quais opções de layout de tela devem ser alternadas com a tecla de atalho "Alternar Layout de Tela" + + + + Use Global Value + Usar Valor Global + + + + Default + Padrão + + + + Single Screen + Tela Única + + + + Large Screen + Tela Grande + + + + Side by Side + Lado a Lado + + + + Separate Windows + Janelas Separadas + + + + Hybrid + Híbrido + + + + Custom + Personalizado + + + + No Layout Selected + Nenhum Layout Selecionado + + + + Please select at least one layout option to cycle through. + Por favor, selecione pelo menos uma opção de layout para alternar. + + ConfigureMotionTouch - + Configure Motion / Touch Configurar movimento/toque @@ -2188,8 +2291,10 @@ Gostaria de ignorar o erro e continuar? - - + + + + Configure Configurar @@ -2219,58 +2324,68 @@ Gostaria de ignorar o erro e continuar? Usar mapeamento de botão: - + + Map touchpads on controllers like the DualSense directly to touch + Mapear touchpads em controles como o DualSense diretamente para o toque + + + + Use controller touchpad + Usar o touchpad do controle + + + CemuhookUDP Config Configurações do CemuhookUDP - + You may use any Cemuhook compatible UDP input source to provide motion and touch input. Você pode usar qualquer servidor de entrada UDP compatível com o Cemuhook para fornecer controles de toque e de movimento. - + Server: Servidor: - + Port: Porta: - + Pad: Pad: - + Pad 1 Pad 1 - + Pad 2 Pad 2 - + Pad 3 Pad 3 - + Pad 4 Pad 4 - + Learn More Saiba mais - - + + Test Testar @@ -2301,57 +2416,68 @@ Gostaria de ignorar o erro e continuar? <a href='https://web.archive.org/web/20240301211230/https://citra-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">Saiba Mais</span></a> - + + Information Informação - + After pressing OK, press a button on the controller whose motion you want to track. Após pressionar OK, pressione um botão no controle cujo movimento você quer rastrear. - + [press button] [pressione o botão] - + + After pressing OK, tap the touchpad on the controller you want to track. + Após pressionar OK, toque no touchpad do controle que você deseja rastrear. + + + + [press touchpad] + [pressione o touchpad] + + + Testing Testando - + Configuring Configurando - + Test Successful Teste concluído com êxito - + Successfully received data from the server. Dados recebidos do servidor com êxito. - + Test Failed Falha no teste - + Could not receive valid data from the server.<br>Please verify that the server is set up correctly and the address and port are correct. Não foi possível receber dados válidos do servidor.<br>Verifique se o servidor foi configurado corretamente e o endereço e porta estão corretos. - + Azahar Azahar - + UDP Test or calibration configuration is in progress.<br>Please wait for them to finish. O teste UDP ou a configuração de calibração está em curso.<br>Aguarde até a conclusão deles. @@ -2521,8 +2647,8 @@ Gostaria de ignorar o erro e continuar? - Compresses the content of CIA files when installed to the emulated SD card. Only affects CIA content which is installed while the setting is enabled. - Comprime o conteúdo dos arquivos CIA ao serem instalados no cartão SD emulado. Afeta apenas o conteúdo CIA instalado enquanto a opção estiver ativada. + <html><head/><body><p>Compresses the content of CIA files when installed to the emulated SD card. Only affects CIA content which is installed while the setting is enabled.</p></body></html> + <html><head/><body><p>Compacta o conteúdo de arquivos CIA quando instalados no cartão SD emulado. Afeta apenas o conteúdo CIA instalado enquanto a configuração estiver ativada.</p></body></html> @@ -4104,511 +4230,526 @@ Por favor, verifique a instalação do FFmpeg usada para compilação. GMainWindow - + + Warning + + + + + The `azahar` executable is being run directly rather than via the Azahar.app bundle. + +When run this way, the app may be missing certain functionality such as camera emulation. + +It is recommended to instead run Azahar using the `open` command, e.g.: +`open ./Azahar.app` + + + + No Suitable Vulkan Devices Detected Nenhum Dispositivo Vulkan Adequado Detectado - + Vulkan initialization failed during boot.<br/>Your GPU may not support Vulkan 1.1, or you do not have the latest graphics driver. O Vulkan falhou durante sua inicialização.<br/>Sua GPU pode não suportar o Vulkan 1.1 ou você não possui o driver gráfico mais recente. - + Current Artic traffic speed. Higher values indicate bigger transfer loads. Velocidade atual do tráfego do Artic. Valores mais altos indicam cargas de transferência maiores. - - + + Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a 3DS. Velocidade atual de emulação. Valores maiores ou menores que 100% indicam que a emulação está funcionando mais rápida ou lentamente que num 3DS. - - + + How many frames per second the app is currently displaying. This will vary from app to app and scene to scene. Quantos quadros por segundo que o app está mostrando atualmente. Pode variar de app para app e cena para cena. - - + + Time taken to emulate a 3DS frame, not counting framelimiting or v-sync. For full-speed emulation this should be at most 16.67 ms. Tempo levado para emular um quadro do 3DS, sem considerar o limitador de taxa de quadros ou a sincronização vertical. Valores menores ou iguais a 16,67 ms indicam que a emulação está em velocidade plena. - + MicroProfile (unavailable) Micro-perfil (indisponível) - + Clear Recent Files Limpar Arquivos Recentes - + &Continue &Continuar - + &Pause &Pausar - + Azahar is running an application TRANSLATORS: This string is shown to the user to explain why Citra needs to prevent the computer from sleeping Azahar está executando um aplicativo - - + + Invalid App Format Formato de App inválido - - + + Your app format is not supported.<br/>Please follow the guides to redump your <a href='https://web.archive.org/web/20240304210021/https://citra-emu.org/wiki/dumping-game-cartridges/'>game cartridges</a> or <a href='https://web.archive.org/web/20240304210011/https://citra-emu.org/wiki/dumping-installed-titles/'>installed titles</a>. O formato do seu app não é suportado.<br/>Siga os guias para reextrair seus <a href='https://web.archive.org/web/20240304210021/https://citra-emu.org/wiki/dumping-game-cartridges/'>cartuchos de jogos</a> ou <a href='https://web.archive.org/web/20240304210011/https://citra-emu.org/wiki/dumping-installed-titles/'>títulos instalados</a>. - + App Corrupted App corrompido - + Your app is corrupted. <br/>Please follow the guides to redump your <a href='https://web.archive.org/web/20240304210021/https://citra-emu.org/wiki/dumping-game-cartridges/'>game cartridges</a> or <a href='https://web.archive.org/web/20240304210011/https://citra-emu.org/wiki/dumping-installed-titles/'>installed titles</a>. Seu app está corrompido. <br/>Siga os guias para reextrair seus <a href='https://web.archive.org/web/20240304210021/https://citra-emu.org/wiki/dumping-game-cartridges/'>cartuchos de jogos</a> ou <a href='https://web.archive.org/web/20240304210011/https://citra-emu.org/wiki/dumping-installed-titles/'>títulos instalados</a>. - + App Encrypted App criptografado - + Your app is encrypted. <br/><a href='https://azahar-emu.org/blog/game-loading-changes/'>Please check our blog for more info.</a> Seu app está criptografado. <br/><a href='https://azahar-emu.org/blog/game-loading-changes/'>Confira nosso blog para mais informações.</a> - + Unsupported App App não suportado - + GBA Virtual Console is not supported by Azahar. O Console Virtual de GBA não é suportado pelo Azahar. - - + + Artic Server Servidor Artic - + Invalid system mode Modo de sistema inválido - + New 3DS exclusive applications cannot be loaded without enabling the New 3DS mode. Aplicativos exclusivos do New 3DS não podem ser carregados sem ativar o modo New 3DS. - + Error while loading App! Erro ao carregar o App! - + An unknown error occurred. Please see the log for more details. Ocorreu um erro desconhecido. Verifique o registro para mais detalhes. - + CIA must be installed before usage É necessário instalar o CIA antes de usar - + Before using this CIA, you must install it. Do you want to install it now? É necessário instalar este CIA antes de poder usá-lo. Deseja instalá-lo agora? - + Quick Load Carregamento rápido - + Quick Save Salvamento rápido - - + + Slot %1 Espaço %1 - + %2 %3 %2 %3 - + Quick Save - %1 Salvamento rápido - %1 - + Quick Load - %1 Carregamento rápido - %1 - + Slot %1 - %2 %3 Espaço %1 - %2 %3 - + Error Opening %1 Folder Erro ao abrir a pasta %1 - - + + Folder does not exist! A pasta não existe! - + Remove Play Time Data Remover Dados de Tempo de Jogo - + Reset play time? Redefinir tempo de jogo? - - - - + + + + Create Shortcut Criar Atalho - + Do you want to launch the application in fullscreen? Você gostaria de iniciar o aplicativo em tela cheia? - + Successfully created a shortcut to %1 Atalho para %1 criado com sucesso - + This will create a shortcut to the current AppImage. This may not work well if you update. Continue? Isso criará um atalho para o AppImage atual. Isso pode não funcionar bem se você atualizar. Deseja continuar? - + Failed to create a shortcut to %1 Não foi possível criar um atalho para %1 - + Create Icon Criar Ícone - + Cannot create icon file. Path "%1" does not exist and cannot be created. Não foi possível criar o arquivo de ícone. O caminho "%1" não existe e não pode ser criado. - + Dumping... Extraindo... - - + + Cancel Cancelar - - - - - - - - - + + + + + + + + + Azahar Azahar - + Could not dump base RomFS. Refer to the log for details. Não foi possível extrair o RomFS base. Consulte o registro para ver os detalhes. - + Error Opening %1 Erro ao abrir %1 - + Select Directory Selecionar pasta - + Properties Propriedades - + The application properties could not be loaded. Não foi possível carregar as propriedades do aplicativo. - + 3DS Executable (%1);;All Files (*.*) %1 is an identifier for the 3DS executable file extensions. Executável do 3DS (%1);;Todos os arquivos (*.*) - + Load File Carregar arquivo - - + + Set Up System Files Configurar arquivos do sistema - + <p>Azahar needs console unique data and firmware files from a real console to be able to use some of its features.<br>Such files and data can be set up with the <a href=https://github.com/azahar-emu/ArticSetupTool>Azahar Artic Setup Tool</a><br>Notes:<ul><li><b>This operation will install console unique data to Azahar, do not share your user or nand folders<br>after performing the setup process!</b></li><li>While doing the setup process, Azahar will link to the console running the setup tool. You can unlink the<br>console later from the System tab in the emulator configuration menu.</li><li>Do not go online with both Azahar and your 3DS console at the same time after setting up system files,<br>as it could cause issues.</li><li>Old 3DS setup is needed for the New 3DS setup to work (doing both setup modes is recommended).</li><li>Both setup modes will work regardless of the model of the console running the setup tool.</li></ul><hr></p> <p>O Azahar precisa dos dados exclusivos do console e arquivos de firmware de um console real para que seja possível usar alguns de seus recursos.<br>Tais arquivos e dados podem ser configurados através da <a href=https://github.com/azahar-emu/ArticSetupTool>Ferramenta de Configuração Artic do Azahar</a><br>Notas:<ul><li><b>Esta operação instalará os dados exclusivos do console para o Azahar, não compartilhe sua pasta de usuário ou nand<br>depois de realizar este processo!</b></li><li>Enquanto estiver realizando o processo de configuração, o Azahar irá vincular-se ao console executando a ferramenta de configuração. Você poderá desvincular<br>o console mais tarde na aba Sistema no menu de configuração do emulador.</li><li>Não entre no online com ambos Azahar e seu console 3DS ao mesmo tempo depois de configurar os arquivos de sistema,<br>já que isso poderá causar problemas.</li><li>A configuração do Antigo 3DS é necessária para a configuração do Novo 3DS funcionar (realizar ambas as configurações é recomendado).</li><li>Ambos os modos de configuração irão funcionar independente do modelo do console executando a ferramenta de configuração.</li></ul><hr></p> - + Enter Azahar Artic Setup Tool address: Digite o endereço da Ferramenta de Configuração Artic do Azahar: - + <br>Choose setup mode: <br>Escolha o modo de configuração: - + (ℹ️) Old 3DS setup (ℹ️) Configuração do Antigo 3DS - - + + Setup is possible. É possível configurar. - + (⚠) New 3DS setup (⚠) Configuração do Novo 3DS - + Old 3DS setup is required first. A configuração do Antigo 3DS é requisitada primeiro. - + (✅) Old 3DS setup (✅) Configuração do Antigo 3DS - - + + Setup completed. Configuração concluída. - + (ℹ️) New 3DS setup (ℹ️) Configuração do Novo 3DS - + (✅) New 3DS setup (✅) Configuração do Novo 3DS - + The system files for the selected mode are already set up. Reinstall the files anyway? Os arquivos do sistema para o modo selecionado já foram configurados. Reinstalar os arquivos mesmo assim? - + Load Files Carregar arquivos - + 3DS Installation File (*.cia *.zcia) Arquivo de Instalação 3DS (.cia .zcia) - - - + + + All Files (*.*) Todos os arquivos (*.*) - + Connect to Artic Base Conectar-se ao Artic Base - + Enter Artic Base server address: Digite o endereço do servidor Artic Base: - + %1 has been installed successfully. %1 foi instalado. - + Unable to open File Não foi possível abrir o arquivo - + Could not open %1 Não foi possível abrir %1 - + Installation aborted Instalação cancelada - + The installation of %1 was aborted. Please see the log for more details A instalação de %1 foi interrompida. Consulte o registro para mais detalhes - + Invalid File Arquivo inválido - + %1 is not a valid CIA %1 não é um CIA válido - + CIA Encrypted CIA criptografado - + Your CIA file is encrypted.<br/><a href='https://azahar-emu.org/blog/game-loading-changes/'>Please check our blog for more info.</a> Seu arquivo CIA está criptografado.<br/><a href='https://azahar-emu.org/blog/game-loading-changes/'>Confira nosso blog para mais informações.</a> - + Unable to find File Não foi possível localizar o arquivo - + Could not find %1 Não foi possível localizar %1 - - - - + + + + Z3DS Compression Compressão Z3DS - + Failed to compress some files, check log for details. Falha ao comprimir alguns arquivos. Verifique o log para mais detalhes. - + Failed to decompress some files, check log for details. Falha ao descomprimir alguns arquivos. Verifique o log para mais detalhes. - + All files have been compressed successfully. Todos os arquivos foram comprimidos com sucesso. - + All files have been decompressed successfully. Todos os arquivos foram descomprimidos com sucesso. - + Uninstalling '%1'... Desinstalando '%1'... - + Failed to uninstall '%1'. Erro ao desinstalar '%1'. - + Successfully uninstalled '%1'. '%1' desinstalado com sucesso. - + File not found Arquivo não encontrado - + File "%1" not found Arquivo "%1" não encontrado - + Savestates Estados salvos - + Warning: Savestates are NOT a replacement for in-application saves, and are not meant to be reliable. Use at your own risk! @@ -4617,86 +4758,86 @@ Use at your own risk! Use por sua conta e risco! - - - + + + Error opening amiibo data file Erro ao abrir arquivo de dados do amiibo - + A tag is already in use. Uma tag já está em uso. - + Application is not looking for amiibos. O aplicativo não está procurando por amiibos. - + Amiibo File (%1);; All Files (*.*) Arquivo do Amiibo (%1);; Todos os arquivos (*.*) - + Load Amiibo Carregar Amiibo - + Unable to open amiibo file "%1" for reading. Não foi possível abrir o arquivo amiibo "%1" para realizar a leitura. - + Record Movie Gravar passos - + Movie recording cancelled. Gravação cancelada. - - + + Movie Saved Gravação salva - - + + The movie is successfully saved. A gravação foi salva. - + Application will unpause O aplicativo será retomado - + The application will be unpaused, and the next frame will be captured. Is this okay? O aplicativo será retomado, e o próximo quadro será capturado. Tudo bem? - + Invalid Screenshot Directory Pasta inválida - + Cannot create specified screenshot directory. Screenshot path is set back to its default value. Não é possível criar a pasta especificada. O caminho original foi restabelecido. - + Could not load video dumper Não foi possível carregar o gravador de vídeo - + FFmpeg could not be loaded. Make sure you have a compatible version installed. To install FFmpeg to Azahar, press Open and select your FFmpeg directory. @@ -4709,265 +4850,265 @@ Para instalar o FFmpeg no Azahar, pressione Abrir e selecione seu diretório FFm Para ver um guia sobre como instalar o FFmpeg, pressione Ajuda. - + Load 3DS ROM Files Carregar arquivos de ROM do 3DS - + 3DS ROM Files (*.cia *.cci *.3dsx *.cxi *.3ds) - + **Arquivos de ROM do 3DS (.cia *.cci *.3dsx .cxi .3ds) - + 3DS Compressed ROM File (*.%1) Arquivo de ROM 3DS Comprimido (*.%1) - + Save 3DS Compressed ROM File Salvar Arquivo de ROM 3DS Comprimido - + Select Output 3DS Compressed ROM Folder Selecionar Pasta de Saída das ROMs 3DS Comprimidas - + Load 3DS Compressed ROM Files Carregar Arquivos de ROM 3DS Comprimidos - + 3DS Compressed ROM Files (*.zcia *zcci *z3dsx *zcxi) Arquivos de ROM 3DS Comprimidos (*.zcia *.zcci .z3dsx .zcxi) - + 3DS ROM File (*.%1) Arquivo de ROM 3DS (*.%1) - + Save 3DS ROM File Salvar Arquivo de ROM 3DS - + Select Output 3DS ROM Folder Selecionar Pasta de Saída das ROMs 3DS - + Select FFmpeg Directory Selecione o Diretório FFmpeg - + The provided FFmpeg directory is missing %1. Please make sure the correct directory was selected. O diretório FFmpeg fornecido não foi encontrado %1. Por favor, certifique-se de que o diretório correto foi selecionado. - + FFmpeg has been sucessfully installed. O FFmpeg foi instalado com sucesso. - + Installation of FFmpeg failed. Check the log file for details. A instalação do FFmpeg falhou. Verifique o arquivo de log para obter detalhes. - + Could not start video dumping.<br>Please ensure that the video encoder is configured correctly.<br>Refer to the log for details. Não foi possível começar a gravação do vídeo.<br>Assegure-se que o codificador de vídeo está configurado corretamente.<br>Refira-se ao log para mais detalhes. - + Recording %1 Gravando %1 - + Playing %1 / %2 Reproduzindo %1 / %2 - + Movie Finished Reprodução concluída - + (Accessing SharedExtData) (Acessando SharedExtData) - + (Accessing SystemSaveData) (Acessando SystemSaveData) - + (Accessing BossExtData) (Accessando BossExtData) - + (Accessing ExtData) (Acessando ExtData) - + (Accessing SaveData) (Acessando SaveData) - + MB/s MB/s - + KB/s KB/s - + Artic Traffic: %1 %2%3 Tráfego do Artic: %1 %2%3 - + Speed: %1% Velocidade: %1% - + Speed: %1% / %2% Velocidade: %1% / %2% - + App: %1 FPS App: %1 FPS - + Frame: %1 ms (GPU: [CMD: %2 ms, SWP: %3 ms], IPC: %4 ms, SVC: %5 ms, Rem: %6 ms) Quadro: %1 ms (GPU: [CMD: %2 ms, SWP: %3 ms], IPC: %4 ms, SVC: %5 ms, Rest: %6 ms) - + Frame: %1 ms Quadro: %1 ms - + VOLUME: MUTE VOLUME: SILENCIADO - + VOLUME: %1% Volume percentage (e.g. 50%) VOLUME: %1% - + %1 is missing. Please <a href='https://web.archive.org/web/20240304201103/https://citra-emu.org/wiki/dumping-system-archives-and-the-shared-fonts-from-a-3ds-console/'>dump your system archives</a>.<br/>Continuing emulation may result in crashes and bugs. %1 está ausente. Por favor,<a href='https://web.archive.org/web/20240304201103/https://citra-emu.org/wiki/dumping-system-archives-and-the-shared-fonts-from-a-3ds-console/'>faça a extração dos arquivos do sistema</a>. <br/>Continuar a emulação pode causar falhas e bugs. - + A system archive Um arquivo do sistema - + System Archive Not Found Arquivo de sistema não encontrado - + System Archive Missing Arquivo de sistema em falta - + Save/load Error Erro ao salvar/carregar - + Fatal Error Erro fatal - + A fatal error occurred. <a href='https://web.archive.org/web/20240228001712/https://community.citra-emu.org/t/how-to-upload-the-log-file/296'>Check the log</a> for details.<br/>Continuing emulation may result in crashes and bugs. Ocorreu um erro fatal. <a href='https://web.archive.org/web/20240228001712/https://community.citra-emu.org/t/how-to-upload-the-log-file/296'>Verifique o log</a> para mais detalhes.<br/>Continuar a emulação pode causar falhas e bugs. - + Fatal Error encountered Erro fatal encontrado - + Continue Continuar - + Quit Application Sair do Aplicativo - + OK OK - + Would you like to exit now? Deseja sair agora? - + The application is still running. Would you like to stop emulation? O aplicativo ainda está em execução. Deseja parar a emulação? - + Playback Completed Reprodução concluída - + Movie playback completed. Reprodução dos passos concluída. - + Update Available Atualização disponível - + Update %1 for Azahar is available. Would you like to download it? A atualização %1 para o Azahar está disponível. Você gostaria de baixá-la? - + Primary Window Janela Principal - + Secondary Window Janela Secundária @@ -5030,42 +5171,42 @@ Você gostaria de baixá-la? GRenderWindow - + OpenGL not available! OpenGL indisponível! - + OpenGL shared contexts are not supported. Shared contexts do OpenGL não são suportados. - + Error while initializing OpenGL! Erro ao inicializar o OpenGL! - + Your GPU may not support OpenGL, or you do not have the latest graphics driver. Sua GPU pode não suportar OpenGL, ou você não possui o driver gráfico mais recente. - + Error while initializing OpenGL 4.3! Erro ao inicializar OpenGL 4.3! - + Your GPU may not support OpenGL 4.3, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1 Sua GPU pode não ser compatível com o OpenGL 4.3 ou você não possui o driver mais recente.<br><br>GL Renderer:<br>%1 - + Error while initializing OpenGL ES 3.2! Erro ao inicializar o OpenGL ES 3.2! - + Your GPU may not support OpenGL ES 3.2, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1 Sua GPU pode não suportar o OpenGL ES 3.2 ou você não possui o driver gráfico mais recente.<br><br>Renderizador GL:<br>%1 @@ -5073,180 +5214,185 @@ Você gostaria de baixá-la? GameList - - + + Compatibility Compatibilidade - - + + Region Região - - + + File type Tipo de arquivo - - + + Size Tamanho - - + + Play time Tempo de jogo - + Favorite Favorito - + Eject Cartridge Ejetar Cartucho - + Insert Cartridge Inserir Cartucho - + Open Abrir - + Application Location Local do Aplicativo - + Save Data Location Local de Dados Salvos - + Extra Data Location Local de Dados Extras - + Update Data Location Atualizar Local dos Dados - + DLC Data Location Local de Dados de DLC  - + Texture Dump Location Local de Dump de Texturas - + Custom Texture Location Local de Texturas Personalizadas - + Mods Location Diretório de Mods - + Dump RomFS Extrair RomFS - + Disk Shader Cache Cache de shaders em disco - + Open Shader Cache Location Abrir local do cache dos shaders - + Delete OpenGL Shader Cache Apagar cache de shaders do OpenGL - + + Delete Vulkan Shader Cache + Excluir Cache de Shaders Vulkan + + + Uninstall Desinstalar - + Everything Tudo - + Application Aplicativo - + Update Atualização - + DLC DLC - + Remove Play Time Data Remover Dados de Tempo de Jogo - + Create Shortcut Criar Atalho - + Add to Desktop Adicionar à Área de Trabalho - + Add to Applications Menu Adicionar ao Menu Iniciar - + Stress Test: App Launch Teste de Estresse: Inicialização de Aplicativos - + Properties Propriedades - - - - + + + + Azahar Azahar - + Are you sure you want to completely uninstall '%1'? This will delete the application if installed, as well as any installed updates or DLC. @@ -5255,64 +5401,64 @@ This will delete the application if installed, as well as any installed updates Isso irá deletar o aplicativo caso ele esteja instalado, assim como qualquer atualização ou DLC instalada. - - + + %1 (Update) %1 (Atualização) - - + + %1 (DLC) %1 (DLC) - + Are you sure you want to uninstall '%1'? Tem certeza que quer desinstalar '%1'? - + Are you sure you want to uninstall the update for '%1'? Tem certeza que deseja desinstalar a atualização para '%1'? - + Are you sure you want to uninstall all DLC for '%1'? Tem certeza de que deseja desinstalar todas as DLCs de '%1'? - + Scan Subfolders Examinar Subpastas - + Remove Application Directory Remover Diretório de Aplicativos - + Move Up Mover para cima - + Move Down Mover para baixo - + Open Directory Location Abrir local da pasta - + Clear Limpar - + Name Nome @@ -5403,7 +5549,7 @@ Tela Inicial. GameListPlaceholder - + Double-click to add a new folder to the application list Clique duas vezes para adicionar uma pasta à lista de aplicativos @@ -5411,27 +5557,27 @@ Tela Inicial. GameListSearchField - + of de - + result resultado - + results resultados - + Filter: Filtro: - + Enter pattern to filter Insira o padrão para filtrar @@ -6064,24 +6210,24 @@ Mensagem de depuração: Preparando shaders %1 / %2 - - Loading Shaders %1 / %2 - Carregando shaders %1 / %2 + + Loading %3 %1 / %2 + Carregando %3 %1 / %2 - + Launching... Iniciando... - + Now Loading %1 Carregando %1 - + Estimated Time %1 Tempo estimado %1 @@ -7057,17 +7203,17 @@ Ele pode ter saído da sala. Abrir arquivo - + Error Erro - + Couldn't load the camera Não foi possível carregar a câmera - + Couldn't load %1 Não foi possível carregar %1 diff --git a/dist/languages/ro_RO.ts b/dist/languages/ro_RO.ts index 21c83a65e..55f7db548 100644 --- a/dist/languages/ro_RO.ts +++ b/dist/languages/ro_RO.ts @@ -322,8 +322,8 @@ Astfel vor fi banați din forum numele lor de utilizator și adresa IP. - This post-processing effect adjusts audio speed to match emulation speed and helps prevent audio stutter. This however increases audio latency. - Acest efect de post-procesare ajustează viteza audio pentru a se potrivi la viteza emulatorului și ajută la împiedicarea bâlbâielilor audio. Acest lucru, totuși, mărește latența audio. + <html><head/><body><p>This post-processing effect adjusts audio speed to match emulation speed and helps prevent audio stutter. This however increases audio latency.</p></body></html> + @@ -332,7 +332,7 @@ Astfel vor fi banați din forum numele lor de utilizator și adresa IP. - Scales audio playback speed to account for drops in emulation framerate. This means that audio will play at full speed even while the application framerate is low. May cause audio desync issues. + <html><head/><body><p>Scales audio playback speed to account for drops in emulation framerate. This means that audio will play at full speed even while the application framerate is low. May cause audio desync issues.</p></body></html> @@ -472,8 +472,8 @@ Astfel vor fi banați din forum numele lor de utilizator și adresa IP. - Select where the image of the emulated camera comes from. It may be an image or a real camera. - Selectați de unde provine imaginea camerei emulate. Poate fi o imagine sau o cameră reală. + <html><head/><body><p>Select where the image of the emulated camera comes from. It may be an image or a real camera.</p></body></html> + @@ -801,21 +801,31 @@ Doriți să ignorați eroarea și să continuați? - Force deterministic async operations + <html><head/><body><p>Toggles the unique data console type (Old 3DS ↔ New 3DS) to be able to download the opposite system firmware type from system settings.</p></body></html> - <html><head/><body><p>Forces all async operations to run on the main thread, making them deterministic. Do not enable if you don't know what you are doing.</p></body></html> + Toggle unique data console type - Enable RPC server + Force deterministic async operations + <html><head/><body><p>Forces all async operations to run on the main thread, making them deterministic. Do not enable if you don't know what you are doing.</p></body></html> + + + + + Enable RPC server + + + + <html><head/><body><p>Enables the RPC server on port 45987. This allows remotely reading/writing guest memory, do not enable if you don't know what you are doing.</p></body></html> @@ -1013,176 +1023,186 @@ Doriți să ignorați eroarea și să continuați? + Use Integer Scaling + + + + + <html><head/><body><p>Use Integer Scaling</p><p>Enforces that the larger screen in all layouts is an integer scale of the 240px height of the original 3DS screen.</p></body></html> + + + + Enable Linear Filtering - + Post-Processing Shader Post-Processing Shader - + Texture Filter Filtrul Texturilor - + None Nimic - + Anime4K Anime4K - + Bicubic Bicubic - + ScaleForce ScaleForce - + xBRZ xBRZ - + MMPX MMPX - + Stereoscopy Stereoscopie - + Stereoscopic 3D Mode Modul Stereoscopic 3D - + Off Închis - + Side by Side Side by Side - + Side by Side Full Width - + Anaglyph Anaglyph - + Interlaced Interlaced - + Reverse Interlaced Învers Interlaced - + Depth Adâncime - + % % - + Note: Depth values over 100% are not possible on real hardware and may cause graphical issues - + Eye to Render in Monoscopic Mode Eye to Render in Monoscopic Mode - + Left Eye (default) Ochiul Stâng (implicit) - + Right Eye Ochiul Drept - + Disable Right Eye Rendering - + <html><head/><body><p>Disable Right Eye Rendering</p><p>Disables rendering the right eye image when not using stereoscopic mode. Greatly improves performance in some applications, but can cause flickering in others.</p></body></html> - + Swap Eyes - + Utility Utilizare - + <html><head/><body><p>Replace textures with PNG files.</p><p>Textures are loaded from load/textures/[Title ID]/.</p></body></html> <html><head/><body><p>Înlocuiește texture cu fișierele PNG.</p><p>Texturele sunt încărcați din load/textures/[Title ID]/.</p></body></html> - + Use custom textures - + <html><head/><body><p>Dump textures to PNG files.</p><p>Textures are dumped to dump/textures/[Title ID]/.</p></body></html> <html><head/><body><p>Dump-eaza texturele în fișiere PNG.</p><p>Texturele erau dump-ate în dump/textures/[Title ID]/.</p></body></html> - + Dump textures - + <html><head/><body><p>Load all custom textures into memory on boot, instead of loading them when the application requires them.</p></body></html> - + Preload custom textures - + <html><head/><body><p>Load custom textures asynchronously with background threads to reduce loading stutter</p></body></html> <html><head/><body><p>Încarcă texturele asincron cu background threads pentru a reduce încărcarea lentă</p></body></html> - + Async custom texture loading @@ -1488,8 +1508,8 @@ Doriți să ignorați eroarea și să continuați? - VSync prevents the screen from tearing, but some graphics cards have lower performance with VSync enabled. Keep it enabled if you don't notice a performance difference. - VSync previne screen tearing, dar unele plăci grafice au performanțe mai scăzute cu VSync activat. Păstrați-l activat dacă nu observați o diferență de performanță. + <html><head/><body><p>VSync prevents the screen from tearing, but some graphics cards have lower performance with VSync enabled. Keep it enabled if you don't notice a performance difference.</p></body></html> + @@ -1497,22 +1517,32 @@ Doriți să ignorați eroarea și să continuați? Permite VSync - + + <html><head/><body><p>When enabled, this setting detects when the refresh rate of the screen is below that of the 3DS, and when it is, disables VSync automatically to avoid emulation speed being forced below 100%.</p></body></html> + + + + + Enable display refresh rate detection + + + + Use global Folosește global - + Use per-application - + Delay Application Render Thread - + <html><head/><body><p>Delays the emulated application render thread the specified amount of milliseconds every time it submits render commands to the GPU.</p><p>Adjust this feature in the (very few) dynamic framerate applications to fix performance issues.</p></body></html> @@ -1991,170 +2021,243 @@ Doriți să ignorați eroarea și să continuați? - + Custom Layout Aspectul Personalizat - - Swap screens - - - - + Rotate screens upright - + + Swap screens + + + + + Customize layout cycling + + + + Screen Gap - + Large Screen Proportion Proporția Ecranului Mare - + Small Screen Position - + Upper Right - + Middle Right - + Bottom Right (default) - + Upper Left - + Middle Left - + Bottom Left - + Above large screen - + Below large screen - + Background Color Culoare de fundal - - + + Top Screen Ecranul de Sus - - + + X Position Poziția X - - - - - - - - - + + + + + + + + - - + + + px px - - + + Y Position Poziția Y - - + + Width Lățime - - + + Height Înălțime - - + + Bottom Screen Ecranul de Jos - + <html><head/><body><p>Bottom Screen Opacity %</p></body></html> - + Single Screen Layout Aspectul Ecranului Unic - - + + Stretch Întinde - - + + Left/Right Padding Padding Stâng/Drept - - + + Top/Bottom Padding Padding de Sus/Jos - + Note: These settings affect the Single Screen and Separate Windows layouts Notă: Aceste setări afectează aspectele Ecranului Unic și Ecranurilor Separate + + ConfigureLayoutCycle + + + Configure Layout Cycling + + + + + Screen Layout Cycling Customization + + + + + Select which screen layout options should be cycled with the "Toggle Screen Layout" hotkey + + + + + Use Global Value + + + + + Default + Implicit + + + + Single Screen + + + + + Large Screen + + + + + Side by Side + Side by Side + + + + Separate Windows + Ferestre Separate + + + + Hybrid + + + + + Custom + Personalizat + + + + No Layout Selected + + + + + Please select at least one layout option to cycle through. + + + ConfigureMotionTouch - + Configure Motion / Touch Configurare Mișcare / Tactil @@ -2182,8 +2285,10 @@ Doriți să ignorați eroarea și să continuați? - - + + + + Configure Configurare @@ -2213,58 +2318,68 @@ Doriți să ignorați eroarea și să continuați? Folosește button mapping: - + + Map touchpads on controllers like the DualSense directly to touch + + + + + Use controller touchpad + + + + CemuhookUDP Config Configurare de CemuhookUDP - + You may use any Cemuhook compatible UDP input source to provide motion and touch input. Puteți folosi orice controller UDP compatibil cu Cemuhook pentru a controla mișcarea și funcțiile tactile. - + Server: Server: - + Port: Port: - + Pad: Controller: - + Pad 1 Controller 1 - + Pad 2 Controller 2 - + Pad 3 Controller 3 - + Pad 4 Controller 4 - + Learn More Mai Multe Informații - - + + Test Test @@ -2295,57 +2410,68 @@ Doriți să ignorați eroarea și să continuați? - + + Information Informații - + After pressing OK, press a button on the controller whose motion you want to track. După ce ați apăsat butonul OK, apăsați un buton de pe controler a cărui mișcare doriți să urmăriți. - + [press button] [apăsați butonul] - + + After pressing OK, tap the touchpad on the controller you want to track. + + + + + [press touchpad] + + + + Testing Testând - + Configuring Configurând - + Test Successful Testare Reușită - + Successfully received data from the server. Date primite de la server cu succes. - + Test Failed Testare Eșuată - + 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. Nu s-au putut primi date valide la server.<br>Verificați dacă serverul este configurat în mod corect și dacă adresa și portul sunt corecte. - + Azahar Azahar - + UDP Test or calibration configuration is in progress.<br>Please wait for them to finish. Proba UDP sau configurarea de calibrare este în curs.<br>Așteptați terminarea acestora. @@ -2515,7 +2641,7 @@ Doriți să ignorați eroarea și să continuați? - Compresses the content of CIA files when installed to the emulated SD card. Only affects CIA content which is installed while the setting is enabled. + <html><head/><body><p>Compresses the content of CIA files when installed to the emulated SD card. Only affects CIA content which is installed while the setting is enabled.</p></body></html> @@ -4097,596 +4223,611 @@ Vă rugăm să verificați instalarea FFmpeg utilizată pentru compilare. GMainWindow - + + Warning + + + + + The `azahar` executable is being run directly rather than via the Azahar.app bundle. + +When run this way, the app may be missing certain functionality such as camera emulation. + +It is recommended to instead run Azahar using the `open` command, e.g.: +`open ./Azahar.app` + + + + No Suitable Vulkan Devices Detected Nu au fost detectate dispozitive Vulkan adecvate Detected - + Vulkan initialization failed during boot.<br/>Your GPU may not support Vulkan 1.1, or you do not have the latest graphics driver. Inițializarea Vulkan a eșuat în timpul pornirii.<br/>Este posibil ca GPU-ul dvs. să nu accepte Vulkan 1.1 sau să nu aveți cel mai recent driver grafic. - + Current Artic traffic speed. Higher values indicate bigger transfer loads. - - + + Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a 3DS. Viteza actuală de emulare. Valori mai mari sau mai mici de 100% indică cum emularea rulează mai repede sau mai încet decât un 3DS. - - + + How many frames per second the app is currently displaying. This will vary from app to app and scene to scene. - - + + Time taken to emulate a 3DS frame, not counting framelimiting or v-sync. For full-speed emulation this should be at most 16.67 ms. Timp luat pentru a emula un cadru 3DS, fără a pune în calcul limitarea de cadre sau v-sync. Pentru emulare la viteza maximă, această valoare ar trebui să fie maxim 16.67 ms. - + MicroProfile (unavailable) - + Clear Recent Files Curăță Fișiere Recente - + &Continue &Continue - + &Pause &Pause - + Azahar is running an application TRANSLATORS: This string is shown to the user to explain why Citra needs to prevent the computer from sleeping - - + + Invalid App Format - - + + Your app format is not supported.<br/>Please follow the guides to redump your <a href='https://web.archive.org/web/20240304210021/https://citra-emu.org/wiki/dumping-game-cartridges/'>game cartridges</a> or <a href='https://web.archive.org/web/20240304210011/https://citra-emu.org/wiki/dumping-installed-titles/'>installed titles</a>. - + App Corrupted - + Your app is corrupted. <br/>Please follow the guides to redump your <a href='https://web.archive.org/web/20240304210021/https://citra-emu.org/wiki/dumping-game-cartridges/'>game cartridges</a> or <a href='https://web.archive.org/web/20240304210011/https://citra-emu.org/wiki/dumping-installed-titles/'>installed titles</a>. - + App Encrypted - + Your app is encrypted. <br/><a href='https://azahar-emu.org/blog/game-loading-changes/'>Please check our blog for more info.</a> - + Unsupported App - + GBA Virtual Console is not supported by Azahar. - - + + Artic Server - + Invalid system mode - + New 3DS exclusive applications cannot be loaded without enabling the New 3DS mode. - + Error while loading App! - + An unknown error occurred. Please see the log for more details. A apărut o eroare necunoscută. Vă rugăm să consultați jurnalul pentru mai multe detalii. - + CIA must be installed before usage CIA-ul trebuie instalat înainte de uz - + Before using this CIA, you must install it. Do you want to install it now? Înainte de a folosi acest CIA, trebuie să-l instalati. Doriți s-o faceți acum? - + Quick Load - + Quick Save - - + + Slot %1 Slot %1 - + %2 %3 - + Quick Save - %1 - + Quick Load - %1 - + Slot %1 - %2 %3 Slot %1 - %2 %3 - + Error Opening %1 Folder Eroare Deschizând Folderul %1 - - + + Folder does not exist! Folderul nu există! - + Remove Play Time Data Eliminați datele privind timpul petrecut - + Reset play time? Resetați play time? - - - - + + + + Create Shortcut Creează un Shortcut - + Do you want to launch the application in fullscreen? - + Successfully created a shortcut to %1 Shortcut-ul către %1 a fost creat cu succes - + This will create a shortcut to the current AppImage. This may not work well if you update. Continue? Asta va crea un shortcut la AppImage-ul curent. Este posibilitate că nu va lucra normal dacă veți actualiza. Continuă? - + Failed to create a shortcut to %1 Nu s-a putut crea o comandă rapidă către %1 - + Create Icon Creează un Icon - + Cannot create icon file. Path "%1" does not exist and cannot be created. Nu se poate crea fișierul de icon. Calea "%1" nu există și nu poate fi creat. - + Dumping... Dumping... - - + + Cancel Anulare - - - - - - - - - + + + + + + + + + Azahar Azahar - + Could not dump base RomFS. Refer to the log for details. Nu s-a putut să facă dump-ul bazei RomFS. Consultați log-urile pentru detalii. - + Error Opening %1 Eroare Deschizând %1 - + Select Directory Selectează Directorul - + Properties Proprietăți - + The application properties could not be loaded. - + 3DS Executable (%1);;All Files (*.*) %1 is an identifier for the 3DS executable file extensions. Executabilă 3DS (%1);;Toate Fișierele (*.*) - + Load File Încarcă Fișier - - + + Set Up System Files - + <p>Azahar needs console unique data and firmware files from a real console to be able to use some of its features.<br>Such files and data can be set up with the <a href=https://github.com/azahar-emu/ArticSetupTool>Azahar Artic Setup Tool</a><br>Notes:<ul><li><b>This operation will install console unique data to Azahar, do not share your user or nand folders<br>after performing the setup process!</b></li><li>While doing the setup process, Azahar will link to the console running the setup tool. You can unlink the<br>console later from the System tab in the emulator configuration menu.</li><li>Do not go online with both Azahar and your 3DS console at the same time after setting up system files,<br>as it could cause issues.</li><li>Old 3DS setup is needed for the New 3DS setup to work (doing both setup modes is recommended).</li><li>Both setup modes will work regardless of the model of the console running the setup tool.</li></ul><hr></p> - + Enter Azahar Artic Setup Tool address: - + <br>Choose setup mode: - + (ℹ️) Old 3DS setup - - + + Setup is possible. - + (⚠) New 3DS setup - + Old 3DS setup is required first. - + (✅) Old 3DS setup - - + + Setup completed. - + (ℹ️) New 3DS setup - + (✅) New 3DS setup - + The system files for the selected mode are already set up. Reinstall the files anyway? - + Load Files Încarcă Fișiere - + 3DS Installation File (*.cia *.zcia) - - - + + + All Files (*.*) Toate Fișierele (*.*) - + Connect to Artic Base Conectează Arctic Base - + Enter Artic Base server address: Introduceți adresa serverului Arctic Base: - + %1 has been installed successfully. %1 a fost instalat cu succes. - + Unable to open File Nu s-a putut deschide Fișierul - + Could not open %1 Nu s-a putut deschide %1 - + Installation aborted Instalare anulată - + The installation of %1 was aborted. Please see the log for more details Instalarea lui %1 a fost anulată. Vă rugăm să vedeți log-ul pentru mai multe detalii. - + Invalid File Fișier Invalid - + %1 is not a valid CIA %1 nu este un CIA valid - + CIA Encrypted - + Your CIA file is encrypted.<br/><a href='https://azahar-emu.org/blog/game-loading-changes/'>Please check our blog for more info.</a> - + Unable to find File Nu se poate găsi Fișierul - + Could not find %1 %1 n-a fost găsit - - - - + + + + Z3DS Compression - + Failed to compress some files, check log for details. - + Failed to decompress some files, check log for details. - + All files have been compressed successfully. - + All files have been decompressed successfully. - + Uninstalling '%1'... Dezinstalarea '%1'... - + Failed to uninstall '%1'. Dezinstalarea '%1' a eșuat. - + Successfully uninstalled '%1'. '%1' era dezinstalat cu succes. - + File not found Fișier negăsit - + File "%1" not found Fișierul "%1" nu a fost găsit - + Savestates Savestates - + Warning: Savestates are NOT a replacement for in-application saves, and are not meant to be reliable. Use at your own risk! - - - + + + Error opening amiibo data file Eroare la deschiderea fișierului de date amiibo - + A tag is already in use. Un tag deja este in folosire. - + Application is not looking for amiibos. - + Amiibo File (%1);; All Files (*.*) Fișier Amiibo (%1);; Toate Fișierele (*.*) - + Load Amiibo Încarcă Amiibo - + Unable to open amiibo file "%1" for reading. Nu se poate deschide fișierul amiibo "%1" pentru citire. - + Record Movie Înregistrează Film - + Movie recording cancelled. Înregistrarea filmului a fost anulată. - - + + Movie Saved Film Salvat - - + + The movie is successfully saved. Filmul a fost salvat cu succes. - + Application will unpause - + The application will be unpaused, and the next frame will be captured. Is this okay? - + Invalid Screenshot Directory Directoria Capturii de Ecran este Invalidă - + Cannot create specified screenshot directory. Screenshot path is set back to its default value. Nu se poate crea directoria specificată a capturii de ecran. Calea capturii de ecran a fost setat implicit - + Could not load video dumper Dumperul video nu a putut fi încărcat - + FFmpeg could not be loaded. Make sure you have a compatible version installed. To install FFmpeg to Azahar, press Open and select your FFmpeg directory. @@ -4695,264 +4836,264 @@ To view a guide on how to install FFmpeg, press Help. - + Load 3DS ROM Files - + 3DS ROM Files (*.cia *.cci *.3dsx *.cxi *.3ds) - + 3DS Compressed ROM File (*.%1) - + Save 3DS Compressed ROM File - + Select Output 3DS Compressed ROM Folder - + Load 3DS Compressed ROM Files - + 3DS Compressed ROM Files (*.zcia *zcci *z3dsx *zcxi) - + 3DS ROM File (*.%1) - + Save 3DS ROM File - + Select Output 3DS ROM Folder - + Select FFmpeg Directory Selectați Directoria FFmpeg - + The provided FFmpeg directory is missing %1. Please make sure the correct directory was selected. Directoria FFmpeg furnizată nu este prezentă %1. Vă rugăm să vă asigurați că ați selectat directoria corectă. - + FFmpeg has been sucessfully installed. FFmpeg era instalat cu succes. - + Installation of FFmpeg failed. Check the log file for details. Instalația FFmpeg a eșuat. Verificați log-urile pentru detalii. - + Could not start video dumping.<br>Please ensure that the video encoder is configured correctly.<br>Refer to the log for details. - + Recording %1 Înregistrarea %1 - + Playing %1 / %2 Playing %1 / %2 - + Movie Finished Filmul finisat - + (Accessing SharedExtData) (Se accesează SharedExtData) - + (Accessing SystemSaveData) (Se accesează SystemSaveData) - + (Accessing BossExtData) (Se accesează BossExtData) - + (Accessing ExtData) (Se accesează ExtData) - + (Accessing SaveData) (Se accesează SaveData) - + MB/s MB/s - + KB/s KB/s - + Artic Traffic: %1 %2%3 - + Speed: %1% Viteză: %1% - + Speed: %1% / %2% Viteză: %1% / %2% - + App: %1 FPS - + Frame: %1 ms (GPU: [CMD: %2 ms, SWP: %3 ms], IPC: %4 ms, SVC: %5 ms, Rem: %6 ms) - + Frame: %1 ms Cadru: %1 ms - + VOLUME: MUTE VOLUME: MUTE - + VOLUME: %1% Volume percentage (e.g. 50%) VOLUME: %1% - + %1 is missing. Please <a href='https://web.archive.org/web/20240304201103/https://citra-emu.org/wiki/dumping-system-archives-and-the-shared-fonts-from-a-3ds-console/'>dump your system archives</a>.<br/>Continuing emulation may result in crashes and bugs. - + A system archive Arhivul sistemului - + System Archive Not Found Fișier de Sistem Negăsit - + System Archive Missing Arhivul Sistemului nu este Prezent - + Save/load Error Eroare la salvare/încărcare - + Fatal Error Eroare Fatală - + A fatal error occurred. <a href='https://web.archive.org/web/20240228001712/https://community.citra-emu.org/t/how-to-upload-the-log-file/296'>Check the log</a> for details.<br/>Continuing emulation may result in crashes and bugs. - + Fatal Error encountered S-a Produs o Eroare Fatală - + Continue Continuă - + Quit Application - + OK OK - + Would you like to exit now? Doriți să ieșiți acum? - + The application is still running. Would you like to stop emulation? - + Playback Completed Redare Finalizată - + Movie playback completed. Redarea filmului a fost finalizată. - + Update Available - + Update %1 for Azahar is available. Would you like to download it? - + Primary Window Fereastră Primară - + Secondary Window Fereastră Secundară @@ -5015,42 +5156,42 @@ Would you like to download it? GRenderWindow - + OpenGL not available! OpenGL nu este disponibil! - + OpenGL shared contexts are not supported. OpenGL shared contexts nu sunt suportate. - + Error while initializing OpenGL! S-a produs o eroare inițializând OpenGL! - + Your GPU may not support OpenGL, or you do not have the latest graphics driver. Este posibil ca GPU-ul dvs. să nu accepte OpenGL, este posibil să nu aveți cel mai recent driver grafic - + Error while initializing OpenGL 4.3! Eroare la inițializarea OpenGL 4.3! - + Your GPU may not support OpenGL 4.3, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1 Este posibil ca GPU-ul dvs. să nu accepte OpenGL 4.3, sau dvs. nu aveți cel mai recent driver grafic. <br><br>GL Renderer:<br>%1 - + Error while initializing OpenGL ES 3.2! Eroare la inițializare OpenGL ES 3.2! - + Your GPU may not support OpenGL ES 3.2, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1 Este posibil ca GPU-ul dvs. să nu accepte OpenGL ES 3.2, sau dvs. nu aveți cel mai recent driver grafic. <br><br>GL Renderer:<br>%1 @@ -5058,244 +5199,249 @@ Would you like to download it? GameList - - + + Compatibility Compatibilitate - - + + Region Regiune - - + + File type Tip de Fișier - - + + Size Mărime - - + + Play time Timp de joacă - + Favorite Favorit - + Eject Cartridge - + Insert Cartridge - + Open Deschide - + Application Location Locația Aplicației - + Save Data Location Locația Datelor Salvării - + Extra Data Location Locația Datelor Extra - + Update Data Location Locația Datelor de Actualizare - + DLC Data Location Locația Datelor DLC - + Texture Dump Location Locația Dump-ului de Texturi - + Custom Texture Location Locația Custom a Texturilor - + Mods Location Locația Modurilor - + Dump RomFS Dump RomFS - + Disk Shader Cache Disk Shader Cache - + Open Shader Cache Location Locația Cache-ului de Open Shader - + Delete OpenGL Shader Cache Șterge OpenGL Shader Cache - + + Delete Vulkan Shader Cache + + + + Uninstall Dezinstalează - + Everything Totul - + Application - + Update Actualizare - + DLC DLC - + Remove Play Time Data Șterge Datele Timpului de Joacă - + Create Shortcut Creează un Shortcut - + Add to Desktop Adaugă pe desktop - + Add to Applications Menu Adaugă în Meniul de Aplicații - + Stress Test: App Launch - + Properties Proprietăți - - - - + + + + Azahar Azahar - + Are you sure you want to completely uninstall '%1'? This will delete the application if installed, as well as any installed updates or DLC. - - + + %1 (Update) %1 (Actualizare) - - + + %1 (DLC) %1 (DLC) - + Are you sure you want to uninstall '%1'? Sunteți siguri că doriți să dezinstalați '%1'? - + Are you sure you want to uninstall the update for '%1'? Sunteți siguri că doriți să dezinstalați actualizarea pentru '%1'? - + Are you sure you want to uninstall all DLC for '%1'? Sunteți siguri că doriți să dezinstalați toate DLC-urile pentru '%1'? - + Scan Subfolders Scanează Subfolderele - + Remove Application Directory - + Move Up Mută în Sus - + Move Down Mută în Jos - + Open Directory Location Deschide Locația Directorului - + Clear Șterge - + Name Nume @@ -5381,7 +5527,7 @@ Screen. GameListPlaceholder - + Double-click to add a new folder to the application list @@ -5389,27 +5535,27 @@ Screen. GameListSearchField - + of de - + result rezultat - + results rezultate - + Filter: Filtru: - + Enter pattern to filter Introduceți un tipar de filtrare @@ -6041,24 +6187,24 @@ Debug Message: Se Pregătesc Texturele %1 / %2 - - Loading Shaders %1 / %2 - Se încarc Texturele %1 / %2 + + Loading %3 %1 / %2 + - + Launching... Se Lansează... - + Now Loading %1 Se Încarcă %1 - + Estimated Time %1 Timpul Estimat %1 @@ -7031,17 +7177,17 @@ They may have left the room. Deschidere Fișier - + Error Eroare - + Couldn't load the camera Camera nu s-a putut încărca - + Couldn't load %1 %1 nu s-a putut încărca diff --git a/dist/languages/ru_RU.ts b/dist/languages/ru_RU.ts index c92bbf62d..28ec15fa5 100644 --- a/dist/languages/ru_RU.ts +++ b/dist/languages/ru_RU.ts @@ -328,8 +328,8 @@ This would ban both their forum username and their IP address. - This post-processing effect adjusts audio speed to match emulation speed and helps prevent audio stutter. This however increases audio latency. - Этот эффект постобработки предотвращает появление прерывистости звука и корректирует скорость воспроизведения так, чтобы она совпадала со скоростью эмуляции. Однако всё это увеличивает звуковую задержку. + <html><head/><body><p>This post-processing effect adjusts audio speed to match emulation speed and helps prevent audio stutter. This however increases audio latency.</p></body></html> + @@ -338,8 +338,8 @@ This would ban both their forum username and their IP address. - Scales audio playback speed to account for drops in emulation framerate. This means that audio will play at full speed even while the application framerate is low. May cause audio desync issues. - Выравнивает скорость воспроизведения звука с учётом пропуска кадров в эмуляции. Это означает, что звук будет воспроизводиться с полной скоростью даже при низкой частосте кадров в приложении. Может вызывать рассинхронизацию звука. + <html><head/><body><p>Scales audio playback speed to account for drops in emulation framerate. This means that audio will play at full speed even while the application framerate is low. May cause audio desync issues.</p></body></html> + @@ -478,8 +478,8 @@ This would ban both their forum username and their IP address. - Select where the image of the emulated camera comes from. It may be an image or a real camera. - Выберите источник отображения для эмулируемой камеры. Это может быть как картинка, так и настоящая камера. + <html><head/><body><p>Select where the image of the emulated camera comes from. It may be an image or a real camera.</p></body></html> + @@ -807,21 +807,31 @@ Would you like to ignore the error and continue? + <html><head/><body><p>Toggles the unique data console type (Old 3DS ↔ New 3DS) to be able to download the opposite system firmware type from system settings.</p></body></html> + + + + + Toggle unique data console type + + + + Force deterministic async operations Форсировать детерминистические асинхронные операции - + <html><head/><body><p>Forces all async operations to run on the main thread, making them deterministic. Do not enable if you don't know what you are doing.</p></body></html> <html><head/><body><p>Принуждает все асинхронные операции выполняться в главном потоке, что делает их детерминистическими. Не включайте, если не знаете, что делаете.</p></body></html> - + Enable RPC server - + <html><head/><body><p>Enables the RPC server on port 45987. This allows remotely reading/writing guest memory, do not enable if you don't know what you are doing.</p></body></html> @@ -1019,176 +1029,186 @@ Would you like to ignore the error and continue? + Use Integer Scaling + + + + + <html><head/><body><p>Use Integer Scaling</p><p>Enforces that the larger screen in all layouts is an integer scale of the 240px height of the original 3DS screen.</p></body></html> + + + + Enable Linear Filtering - + Post-Processing Shader Шейдер пост-обработки - + Texture Filter Фильтр текстур - + None Нет - + Anime4K Anime4K - + Bicubic Бикубический - + ScaleForce ScaleForce - + xBRZ xBRZ - + MMPX MMPX - + Stereoscopy Стереоскопия - + Stereoscopic 3D Mode Стереоскопический режим 3D - + Off Выключено - + Side by Side Рядом - + Side by Side Full Width - + Anaglyph Анаглиф - + Interlaced Чересстрочный - + Reverse Interlaced Обратный чересстрочный - + Depth Глубина - + % % - + Note: Depth values over 100% are not possible on real hardware and may cause graphical issues Заметка: Значения глубины более 100% невозможны на настоящей консоли и могут вызывать графические проблемы - + Eye to Render in Monoscopic Mode Глаз для отрисовки в моноскопическом режиме - + Left Eye (default) Левый глаз (по умолчанию) - + Right Eye Правый глаз - + Disable Right Eye Rendering - + <html><head/><body><p>Disable Right Eye Rendering</p><p>Disables rendering the right eye image when not using stereoscopic mode. Greatly improves performance in some applications, but can cause flickering in others.</p></body></html> <html><head/><body><p>Выключить отрисовку правого глаза</p><p>Отключает отрисовку изображения для правого глаза, когда не используется стереоскопический режим. В некоторых приложениях сильно повышает производительность, но в других может вызвать мелькание.</p></body></html> - + Swap Eyes - + Utility Инструменты - + <html><head/><body><p>Replace textures with PNG files.</p><p>Textures are loaded from load/textures/[Title ID]/.</p></body></html> <html><head/><body><p>Заменить текстуры файлами PNG.</p><p>Текстуры загружаются из папки load/textures/[Title ID]/.</p></body></html> - + Use custom textures - + <html><head/><body><p>Dump textures to PNG files.</p><p>Textures are dumped to dump/textures/[Title ID]/.</p></body></html> <html><head/><body><p>Создать дамп текстур в виде файлов PNG.</p><p>Дамп текстур создаётся в папке dump/textures/[Title ID]/.</p></body></html> - + Dump textures - + <html><head/><body><p>Load all custom textures into memory on boot, instead of loading them when the application requires them.</p></body></html> <html><head/><body><p>Загружать сразу все внешние текстуры в память при запуске вместо их подгрузки по мере востребованности приложением.</p></body></html> - + Preload custom textures - + <html><head/><body><p>Load custom textures asynchronously with background threads to reduce loading stutter</p></body></html> <html><head/><body><p>Загружать внешние текстуры асинхронно в фоновых потоках для снижения подвисаний при загрузке</p></body></html> - + Async custom texture loading @@ -1494,8 +1514,8 @@ Would you like to ignore the error and continue? - VSync prevents the screen from tearing, but some graphics cards have lower performance with VSync enabled. Keep it enabled if you don't notice a performance difference. - VSync предотвращает появление разрывов экрана, но у некоторых графических карт включение опции VSync ухудшает производительность. Если не будет заметного ухудшения производительности, можно оставить её включённой. + <html><head/><body><p>VSync prevents the screen from tearing, but some graphics cards have lower performance with VSync enabled. Keep it enabled if you don't notice a performance difference.</p></body></html> + @@ -1503,22 +1523,32 @@ Would you like to ignore the error and continue? Включить VSync - + + <html><head/><body><p>When enabled, this setting detects when the refresh rate of the screen is below that of the 3DS, and when it is, disables VSync automatically to avoid emulation speed being forced below 100%.</p></body></html> + + + + + Enable display refresh rate detection + + + + Use global Использовать глобально - + Use per-application - + Delay Application Render Thread - + <html><head/><body><p>Delays the emulated application render thread the specified amount of milliseconds every time it submits render commands to the GPU.</p><p>Adjust this feature in the (very few) dynamic framerate applications to fix performance issues.</p></body></html> <html><head/><body><p>Задерживает поток отрисовки эмулирумого приложения на указанное количество миллисекунд при каждой отправке им команд отрисовки на графический процессор.</p><p>Регулируйте эту настройку в (очень немногих) приложениях с динамической частотой кадров, чтобы исправить проблемы с производительностью.</p></body></html> @@ -1997,170 +2027,243 @@ Would you like to ignore the error and continue? - + Custom Layout Своя компоновка - - Swap screens - - - - + Rotate screens upright - + + Swap screens + + + + + Customize layout cycling + + + + Screen Gap - + Large Screen Proportion Пропорции большого экрана - + Small Screen Position Положение малого экрана - + Upper Right Сверху справа - + Middle Right Посередине справа - + Bottom Right (default) Внизу справа (по умолчанию) - + Upper Left Сверху слева - + Middle Left Посередине слева - + Bottom Left Снизу слева - + Above large screen Над большим экраном - + Below large screen Под большим экраном - + Background Color Цвет фона - - + + Top Screen Верхний экран - - + + X Position X-позиция - - - - - - - - - + + + + + + + + - - + + + px пикселей - - + + Y Position Y-позиция - - + + Width Ширина - - + + Height Высота - - + + Bottom Screen Нижний экран - + <html><head/><body><p>Bottom Screen Opacity %</p></body></html> - + Single Screen Layout Компоновка с одним экраном - - + + Stretch Растягивание - - + + Left/Right Padding Отступ слева/справа - - + + Top/Bottom Padding Отступ сверху/снизу - + Note: These settings affect the Single Screen and Separate Windows layouts Заметка: эти настройки влияют на компоновку с одним экраном и компоновку с раздельными окнами + + ConfigureLayoutCycle + + + Configure Layout Cycling + + + + + Screen Layout Cycling Customization + + + + + Select which screen layout options should be cycled with the "Toggle Screen Layout" hotkey + + + + + Use Global Value + + + + + Default + По умолчанию + + + + Single Screen + Один экран + + + + Large Screen + Большой экран + + + + Side by Side + Рядом + + + + Separate Windows + Отдельные окна + + + + Hybrid + + + + + Custom + Другое + + + + No Layout Selected + + + + + Please select at least one layout option to cycle through. + + + ConfigureMotionTouch - + Configure Motion / Touch Настройка движения / прикосновения @@ -2188,8 +2291,10 @@ Would you like to ignore the error and continue? - - + + + + Configure Настройка @@ -2219,58 +2324,68 @@ Would you like to ignore the error and continue? Использовать схему назначений: - + + Map touchpads on controllers like the DualSense directly to touch + + + + + Use controller touchpad + + + + CemuhookUDP Config Настройка CemuhookUDP - + You may use any Cemuhook compatible UDP input source to provide motion and touch input. Можно использовать любой совместимый с Cemuhook источник UDP для движений и прикосновений. - + Server: Сервер: - + Port: Порт: - + Pad: Геймпад: - + Pad 1 Геймпад 1 - + Pad 2 Геймпад 2 - + Pad 3 Геймпад 3 - + Pad 4 Геймпад 4 - + Learn More Дополнительные сведения - - + + Test Проверить @@ -2301,57 +2416,68 @@ Would you like to ignore the error and continue? - + + Information Информация - + After pressing OK, press a button on the controller whose motion you want to track. После нажатия кнопки ОК, нажмите ту кнопку контроллера, которая будет отслеживаться. - + [press button] [нажмите кнопку] - + + After pressing OK, tap the touchpad on the controller you want to track. + + + + + [press touchpad] + + + + 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>Убедитесь в правильной настройке сервера, в правильности адреса и порта. - + Azahar Azahar - + UDP Test or calibration configuration is in progress.<br>Please wait for them to finish. Выполняется проверка UDP или настройка калибровки.<br>Дождитесь окончания. @@ -2521,7 +2647,7 @@ Would you like to ignore the error and continue? - Compresses the content of CIA files when installed to the emulated SD card. Only affects CIA content which is installed while the setting is enabled. + <html><head/><body><p>Compresses the content of CIA files when installed to the emulated SD card. Only affects CIA content which is installed while the setting is enabled.</p></body></html> @@ -4104,596 +4230,611 @@ Please check your FFmpeg installation used for compilation. GMainWindow - + + Warning + Предупреждение + + + + The `azahar` executable is being run directly rather than via the Azahar.app bundle. + +When run this way, the app may be missing certain functionality such as camera emulation. + +It is recommended to instead run Azahar using the `open` command, e.g.: +`open ./Azahar.app` + + + + No Suitable Vulkan Devices Detected - + Vulkan initialization failed during boot.<br/>Your GPU may not support Vulkan 1.1, or you do not have the latest graphics driver. - + Current Artic traffic speed. Higher values indicate bigger transfer loads. - - + + Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a 3DS. Текущая скорость эмуляции. Значения выше или ниже 100% указывают на то, что эмуляция работает быстрее или медленнее, чем в 3DS. - - + + How many frames per second the app is currently displaying. This will vary from app to app and scene to scene. - - + + Time taken to emulate a 3DS frame, not counting framelimiting or v-sync. For full-speed emulation this should be at most 16.67 ms. Время, затрачиваемое на эмуляцию кадра 3DS, без учёта ограничения кадров или вертикальной синхронизации. Для полноскоростной эмуляции это значение должно быть не более 16,67 мс. - + MicroProfile (unavailable) - + Clear Recent Files Очистить последние файлы - + &Continue &Продолжить - + &Pause - + Azahar is running an application TRANSLATORS: This string is shown to the user to explain why Citra needs to prevent the computer from sleeping - - + + Invalid App Format - - + + Your app format is not supported.<br/>Please follow the guides to redump your <a href='https://web.archive.org/web/20240304210021/https://citra-emu.org/wiki/dumping-game-cartridges/'>game cartridges</a> or <a href='https://web.archive.org/web/20240304210011/https://citra-emu.org/wiki/dumping-installed-titles/'>installed titles</a>. - + App Corrupted - + Your app is corrupted. <br/>Please follow the guides to redump your <a href='https://web.archive.org/web/20240304210021/https://citra-emu.org/wiki/dumping-game-cartridges/'>game cartridges</a> or <a href='https://web.archive.org/web/20240304210011/https://citra-emu.org/wiki/dumping-installed-titles/'>installed titles</a>. - + App Encrypted - + Your app is encrypted. <br/><a href='https://azahar-emu.org/blog/game-loading-changes/'>Please check our blog for more info.</a> - + Unsupported App - + GBA Virtual Console is not supported by Azahar. Azahar не поддерживает GBA Virtual Console. - - + + Artic Server - + Invalid system mode - + New 3DS exclusive applications cannot be loaded without enabling the New 3DS mode. - + Error while loading App! - + An unknown error occurred. Please see the log for more details. Произошла неизвестная ошибка. Подробную информацию см. в журнале. - + CIA must be installed before usage Перед использованием необходимо установить CIA-файл - + Before using this CIA, you must install it. Do you want to install it now? Перед использованием этого CIA-файла, необходимо его установить. Установить сейчас? - + Quick Load Быстрая загрузка - + Quick Save Быстрое сохранение - - + + Slot %1 Ячейка %1 - + %2 %3 - + Quick Save - %1 - + Quick Load - %1 - + Slot %1 - %2 %3 - + Error Opening %1 Folder Ошибка открытия папки %1 - - + + Folder does not exist! Папка не существует! - + Remove Play Time Data - + Reset play time? Сбросить игровое время? - - - - + + + + Create Shortcut Создать ярлык - + Do you want to launch the application in fullscreen? Запускать приложение в полном экране? - + Successfully created a shortcut to %1 Успешно создан ярлык для %1 - + This will create a shortcut to the current AppImage. This may not work well if you update. Continue? - + Failed to create a shortcut to %1 Не удалось создать ярлык для %1 - + Create Icon Создать иконку - + Cannot create icon file. Path "%1" does not exist and cannot be created. - + Dumping... Создание дампа... - - + + Cancel Отмена - - - - - - - - - + + + + + + + + + Azahar Azahar - + Could not dump base RomFS. Refer to the log for details. Не удалось создать дамп base RomFS. Подробную информацию см. в журнале. - + Error Opening %1 Ошибка при открытии %1 - + Select Directory Выбрать каталог - + Properties Свойства - + The application properties could not be loaded. - + 3DS Executable (%1);;All Files (*.*) %1 is an identifier for the 3DS executable file extensions. Исполняемый файл 3DS (%1);;Все файлы (*.*) - + Load File Загрузка файла - - + + Set Up System Files - + <p>Azahar needs console unique data and firmware files from a real console to be able to use some of its features.<br>Such files and data can be set up with the <a href=https://github.com/azahar-emu/ArticSetupTool>Azahar Artic Setup Tool</a><br>Notes:<ul><li><b>This operation will install console unique data to Azahar, do not share your user or nand folders<br>after performing the setup process!</b></li><li>While doing the setup process, Azahar will link to the console running the setup tool. You can unlink the<br>console later from the System tab in the emulator configuration menu.</li><li>Do not go online with both Azahar and your 3DS console at the same time after setting up system files,<br>as it could cause issues.</li><li>Old 3DS setup is needed for the New 3DS setup to work (doing both setup modes is recommended).</li><li>Both setup modes will work regardless of the model of the console running the setup tool.</li></ul><hr></p> - + Enter Azahar Artic Setup Tool address: - + <br>Choose setup mode: Выберите режим установки: - + (ℹ️) Old 3DS setup (ℹ️) Обычная 3DS - - + + Setup is possible. - + (⚠) New 3DS setup (⚠) New 3DS - + Old 3DS setup is required first. Сначала требуется установка обычной 3DS. - + (✅) Old 3DS setup - - + + Setup completed. - + (ℹ️) New 3DS setup - + (✅) New 3DS setup - + The system files for the selected mode are already set up. Reinstall the files anyway? - + Load Files Загрузка файлов - + 3DS Installation File (*.cia *.zcia) - - - + + + All Files (*.*) Все файлы (*.*) - + Connect to Artic Base Подключиться к Artic Base - + Enter Artic Base server address: - + %1 has been installed successfully. %1 был успешно установлен. - + Unable to open File Не удалось открыть файл - + Could not open %1 Не удалось открыть %1 - + Installation aborted Установка прервана - + The installation of %1 was aborted. Please see the log for more details Установка %1 была прервана. Более подробную информацию см. в журнале. - + Invalid File Недопустимый файл - + %1 is not a valid CIA %1 — недопустимый CIA-файл - + CIA Encrypted CIA файл зашифрован - + Your CIA file is encrypted.<br/><a href='https://azahar-emu.org/blog/game-loading-changes/'>Please check our blog for more info.</a> - + Unable to find File Не удалось найти файл - + Could not find %1 - - - - + + + + Z3DS Compression - + Failed to compress some files, check log for details. - + Failed to decompress some files, check log for details. - + All files have been compressed successfully. - + All files have been decompressed successfully. - + Uninstalling '%1'... Удаление '%1'... - + Failed to uninstall '%1'. - + Successfully uninstalled '%1'. Успешно удалён '%1'. - + File not found Файл не найден - + File "%1" not found Файл «%1» не найден - + Savestates - + Warning: Savestates are NOT a replacement for in-application saves, and are not meant to be reliable. Use at your own risk! - - - + + + Error opening amiibo data file - + A tag is already in use. - + Application is not looking for amiibos. - + Amiibo File (%1);; All Files (*.*) Файл Amiibo (%1);; Все файлы (*.*) - + Load Amiibo Загрузка Amiibo - + Unable to open amiibo file "%1" for reading. - + Record Movie Запись видеоролика - + Movie recording cancelled. Запись видеоролика отменена. - - + + Movie Saved Сохранение видеоролика - - + + The movie is successfully saved. Видеоролик сохранён успешно. - + Application will unpause - + The application will be unpaused, and the next frame will be captured. Is this okay? - + Invalid Screenshot Directory - + Cannot create specified screenshot directory. Screenshot path is set back to its default value. - + Could not load video dumper - + FFmpeg could not be loaded. Make sure you have a compatible version installed. To install FFmpeg to Azahar, press Open and select your FFmpeg directory. @@ -4702,264 +4843,264 @@ To view a guide on how to install FFmpeg, press Help. - + Load 3DS ROM Files - + 3DS ROM Files (*.cia *.cci *.3dsx *.cxi *.3ds) - + 3DS Compressed ROM File (*.%1) - + Save 3DS Compressed ROM File - + Select Output 3DS Compressed ROM Folder - + Load 3DS Compressed ROM Files - + 3DS Compressed ROM Files (*.zcia *zcci *z3dsx *zcxi) - + 3DS ROM File (*.%1) - + Save 3DS ROM File - + Select Output 3DS ROM Folder - + Select FFmpeg Directory Выберите каталог FFmpeg - + The provided FFmpeg directory is missing %1. Please make sure the correct directory was selected. - + FFmpeg has been sucessfully installed. - + Installation of FFmpeg failed. Check the log file for details. - + Could not start video dumping.<br>Please ensure that the video encoder is configured correctly.<br>Refer to the log for details. - + Recording %1 - + Playing %1 / %2 - + Movie Finished - + (Accessing SharedExtData) - + (Accessing SystemSaveData) - + (Accessing BossExtData) - + (Accessing ExtData) - + (Accessing SaveData) - + MB/s - + KB/s - + Artic Traffic: %1 %2%3 - + Speed: %1% Скорость: %1% - + Speed: %1% / %2% Скорость: %1% / %2% - + App: %1 FPS - + Frame: %1 ms (GPU: [CMD: %2 ms, SWP: %3 ms], IPC: %4 ms, SVC: %5 ms, Rem: %6 ms) - + Frame: %1 ms Кадр: %1 мс - + VOLUME: MUTE ГРОМКОСТЬ: ЗАГЛУШЕНО - + VOLUME: %1% Volume percentage (e.g. 50%) ГРОМКОСТЬ: %1% - + %1 is missing. Please <a href='https://web.archive.org/web/20240304201103/https://citra-emu.org/wiki/dumping-system-archives-and-the-shared-fonts-from-a-3ds-console/'>dump your system archives</a>.<br/>Continuing emulation may result in crashes and bugs. - + A system archive Системный архив - + System Archive Not Found Системный архив не найден - + System Archive Missing Не удалось найти системный архив - + Save/load Error Ошибка сохранения/загрузки - + Fatal Error Неустранимая ошибка - + A fatal error occurred. <a href='https://web.archive.org/web/20240228001712/https://community.citra-emu.org/t/how-to-upload-the-log-file/296'>Check the log</a> for details.<br/>Continuing emulation may result in crashes and bugs. - + Fatal Error encountered Произошла неустранимая ошибка - + Continue Продолжить - + Quit Application Закрыть Приложение - + OK OK - + Would you like to exit now? Выйти сейчас? - + The application is still running. Would you like to stop emulation? - + Playback Completed Воспроизведение завершено - + Movie playback completed. Воспроизведение видеоролика завершено. - + Update Available Доступно обновление - + Update %1 for Azahar is available. Would you like to download it? - + Primary Window Основной Экран - + Secondary Window Дополнительный Экран @@ -5022,42 +5163,42 @@ Would you like to download it? GRenderWindow - + OpenGL not available! OpenGL недоступен! - + OpenGL shared contexts are not supported. - + 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.3! Ошибка при инициализации OpenGL 4.3! - + Your GPU may not support OpenGL 4.3, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1 - + Error while initializing OpenGL ES 3.2! - + Your GPU may not support OpenGL ES 3.2, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1 @@ -5065,244 +5206,249 @@ Would you like to download it? GameList - - + + Compatibility Совместимость - - + + Region Регион - - + + File type Тип файла - - + + Size Размер - - + + Play time Игровое время - + Favorite Избранное - + Eject Cartridge - + Insert Cartridge - + Open Открыть - + Application Location Путь к приложению - + Save Data Location Путь к файлам сохранений - + Extra Data Location - + Update Data Location Путь к файлам обновлений - + DLC Data Location Путь к файлам DLC - + Texture Dump Location Путь к файлам дампа текстур - + Custom Texture Location Путь к пользовательским текстурам - + Mods Location Путь к модификациям - + Dump RomFS Создать дамп RomFS - + Disk Shader Cache - + Open Shader Cache Location - + Delete OpenGL Shader Cache - + + Delete Vulkan Shader Cache + + + + Uninstall Удалить - + Everything Всё - + Application Приложение - + Update Обновления - + DLC - + Remove Play Time Data - + Create Shortcut Создать ярлык - + Add to Desktop Добавить на рабочий стол - + Add to Applications Menu - + Stress Test: App Launch - + Properties Свойства - - - - + + + + Azahar Azahar - + Are you sure you want to completely uninstall '%1'? This will delete the application if installed, as well as any installed updates or DLC. - - + + %1 (Update) - - + + %1 (DLC) - + Are you sure you want to uninstall '%1'? - + Are you sure you want to uninstall the update for '%1'? - + Are you sure you want to uninstall all DLC for '%1'? - + Scan Subfolders Сканировать подпапки - + Remove Application Directory - + Move Up - + Move Down - + Open Directory Location Открыть расположение каталога - + Clear Очистить - + Name Имя @@ -5388,7 +5534,7 @@ Screen. GameListPlaceholder - + Double-click to add a new folder to the application list @@ -5396,27 +5542,27 @@ Screen. GameListSearchField - + of из - + result результат - + results результатов - + Filter: Фильтр: - + Enter pattern to filter Введите шаблон для фильтрации @@ -6048,24 +6194,24 @@ Debug Message: Подготовка шейдеров %1 / %2 - - Loading Shaders %1 / %2 - Загрузка шейдеров %1 / %2 + + Loading %3 %1 / %2 + - + Launching... Запуск... - + Now Loading %1 Выполняется загрузка %1 - + Estimated Time %1 Оставшееся время %1 @@ -7038,17 +7184,17 @@ They may have left the room. Открыть файл - + Error Ошибка - + Couldn't load the camera Не удалось загрузить камеру - + Couldn't load %1 Не удалось загрузить %1 diff --git a/dist/languages/sv.ts b/dist/languages/sv.ts index 17dd7f579..eb772402a 100644 --- a/dist/languages/sv.ts +++ b/dist/languages/sv.ts @@ -328,8 +328,8 @@ Detta skulle bannlysa både deras forumanvändarnamn och deras IP-adress. - This post-processing effect adjusts audio speed to match emulation speed and helps prevent audio stutter. This however increases audio latency. - Denna efterbehandlingseffekt justerar ljudhastigheten för att matcha emuleringshastigheten och hjälper till att förhindra ljudstörningar. Detta kan dock öka ljudlatensen. + <html><head/><body><p>This post-processing effect adjusts audio speed to match emulation speed and helps prevent audio stutter. This however increases audio latency.</p></body></html> + <html><head/><body><p>Denna efterbearbetningseffekt justerar ljudhastigheten så att den matchar emuleringshastigheten och hjälper till att förhindra ljudhack. Detta ökar dock ljudfördröjningen.</p></body></html> @@ -338,8 +338,8 @@ Detta skulle bannlysa både deras forumanvändarnamn och deras IP-adress. - Scales audio playback speed to account for drops in emulation framerate. This means that audio will play at full speed even while the application framerate is low. May cause audio desync issues. - Skalar uppspelningshastigheten för ljud för att kompensera för minskad bildfrekvens i emuleringen. Detta innebär att ljudet spelas upp med full hastighet även om programmets bildfrekvens är låg. Kan orsaka problem med felsynkronisering av ljud. + <html><head/><body><p>Scales audio playback speed to account for drops in emulation framerate. This means that audio will play at full speed even while the application framerate is low. May cause audio desync issues.</p></body></html> + <html><head/><body><p>Anpassar ljuduppspelningshastigheten för att kompensera för minskad bildfrekvens i emuleringen. Detta innebär att ljudet spelas upp i full hastighet även när applikationens bildfrekvens är låg. Kan orsaka problem med ljudsynkronisering.</p></body></html> @@ -478,8 +478,8 @@ Detta skulle bannlysa både deras forumanvändarnamn och deras IP-adress. - Select where the image of the emulated camera comes from. It may be an image or a real camera. - Välj varifrån bilden av den emulerade kameran kommer. Det kan vara en bild eller en riktig kamera. + <html><head/><body><p>Select where the image of the emulated camera comes from. It may be an image or a real camera.</p></body></html> + <html><head/><body><p>Välj var bilden från den emulerade kameran kommer ifrån. Det kan vara en bild eller en riktig kamera.</p></body></html> @@ -807,21 +807,31 @@ Vill du ignorera felet och fortsätta? + <html><head/><body><p>Toggles the unique data console type (Old 3DS ↔ New 3DS) to be able to download the opposite system firmware type from system settings.</p></body></html> + <html><head/><body><p>Växlar mellan den unika datakonsoltypen (Gammal 3DS ↔ Ny 3DS) för att kunna ladda ner motsatt systemfirmwaretyp från systeminställningarna.</p></body></html> + + + + Toggle unique data console type + Växla mellan unika datakonsoltyper + + + Force deterministic async operations Tvinga deterministiska asynkrona operationer - + <html><head/><body><p>Forces all async operations to run on the main thread, making them deterministic. Do not enable if you don't know what you are doing.</p></body></html> <html><head/><body><p>Tvingar alla asynkrona operationer att köras på huvudtråden, vilket gör dem deterministiska. Aktivera inte om du inte vet vad du gör.</p></body></html> - + Enable RPC server Aktivera RPC-server - + <html><head/><body><p>Enables the RPC server on port 45987. This allows remotely reading/writing guest memory, do not enable if you don't know what you are doing.</p></body></html> <html><head/><body><p>Aktiverar RPC-servern på port 45987. Detta möjliggör fjärrläsning/skrivning av gästminne. Aktivera inte om du inte vet vad du gör.</p></body></html> @@ -1019,176 +1029,186 @@ Vill du ignorera felet och fortsätta? + Use Integer Scaling + Använd heltalsskalning + + + + <html><head/><body><p>Use Integer Scaling</p><p>Enforces that the larger screen in all layouts is an integer scale of the 240px height of the original 3DS screen.</p></body></html> + <html><head/><body><p>Använd heltalsskalning</p><p>Tvingar att den större skärmen i alla layouter är en heltalsskalning av den ursprungliga 3DS-skärmens höjd på 240 px.</p></body></html> + + + Enable Linear Filtering Aktivera linjär filtrering - + Post-Processing Shader Shader för efterbehandling - + Texture Filter Texturfilter - + None Ingen - + Anime4K Anime4K - + Bicubic Bikubisk - + ScaleForce ScaleForce - + xBRZ xBRZ - + MMPX MMPX - + Stereoscopy Stereoskopi - + Stereoscopic 3D Mode Stereoskopiskt 3D-läge - + Off Av - + Side by Side Sida vid sida - + Side by Side Full Width Sida vid sida full bredd - + Anaglyph Anaglyfisk - + Interlaced Interlaced - + Reverse Interlaced Omvänd interlaced - + Depth Djup - + % % - + Note: Depth values over 100% are not possible on real hardware and may cause graphical issues Observera: Djupvärden över 100% är inte möjliga på riktig hårdvara och kan orsaka grafiska problem - + Eye to Render in Monoscopic Mode Ögon för rendering i monoskopiskt läge - + Left Eye (default) Vänster öga (standard) - + Right Eye Höger öga - + Disable Right Eye Rendering Inaktivera rendering för höger öga - + <html><head/><body><p>Disable Right Eye Rendering</p><p>Disables rendering the right eye image when not using stereoscopic mode. Greatly improves performance in some applications, but can cause flickering in others.</p></body></html> <html><head/><body><p>Inaktivera rendering av höger öga</p><p>Inaktiverar rendering av högerögats bild när stereoskopiskt läge inte används. Förbättrar prestandan avsevärt i vissa applikationer, men kan orsaka flimmer i andra.</p></body></html> - + Swap Eyes Byt ögon - + Utility Verktyg - + <html><head/><body><p>Replace textures with PNG files.</p><p>Textures are loaded from load/textures/[Title ID]/.</p></body></html> <html><head/><body><p>Ersätt texturer med PNG- filer.</p><p>Texturer läses in från load/textures/[Title ID]/.</p></body></html> - + Use custom textures Använd anpassade texturer - + <html><head/><body><p>Dump textures to PNG files.</p><p>Textures are dumped to dump/textures/[Title ID]/.</p></body></html> <html><head/><body><p>Dumpa texturer till PNG-filer.</p><p>Texturer dumpas till dump/textures/[Title ID]/.</p></body></html> - + Dump textures Dumpa texturer - + <html><head/><body><p>Load all custom textures into memory on boot, instead of loading them when the application requires them.</p></body></html> <html><head/><body><p>Läs in alla anpassade texturer i minnet vid uppstart, istället för att läsa in dem när programmet kräver dem.</p></body></html> - + Preload custom textures Förladda anpassade texturer - + <html><head/><body><p>Load custom textures asynchronously with background threads to reduce loading stutter</p></body></html> <html><head/><body><p>Läs in anpassade texturer asynkront med bakgrundstrådar för att minska inläsningsskakning</p></body></html> - + Async custom texture loading Asynkron inläsning av anpassade texturer @@ -1494,8 +1514,8 @@ Vill du ignorera felet och fortsätta? - VSync prevents the screen from tearing, but some graphics cards have lower performance with VSync enabled. Keep it enabled if you don't notice a performance difference. - VSync förhindrar grafikproblem, men vissa grafikkort har lägre prestanda med VSync aktiverat. Låt det vara aktiverat om du inte märker någon prestandaskillnad. + <html><head/><body><p>VSync prevents the screen from tearing, but some graphics cards have lower performance with VSync enabled. Keep it enabled if you don't notice a performance difference.</p></body></html> + <html><head/><body><p>VSync förhindrar att skärmen flimrar, men vissa grafikkort har sämre prestanda när VSync är aktiverat. Låt det vara aktiverat om du inte märker någon skillnad i prestanda.</p></body></html> @@ -1503,22 +1523,32 @@ Vill du ignorera felet och fortsätta? Aktivera VSync - + + <html><head/><body><p>When enabled, this setting detects when the refresh rate of the screen is below that of the 3DS, and when it is, disables VSync automatically to avoid emulation speed being forced below 100%.</p></body></html> + <html><head/><body><p>När denna inställning är aktiverad upptäcker den när skärmens uppdateringsfrekvens är lägre än för 3DS, och när så är fallet inaktiveras VSync automatiskt för att undvika att emuleringshastigheten tvingas ned under 100%.</p></body></html> + + + + Enable display refresh rate detection + Aktivera detektering av skärmens uppdateringsfrekvens + + + Use global Använd globalt - + Use per-application Använd per-applikation - + Delay Application Render Thread Fördröj applikationsrenderingstråd - + <html><head/><body><p>Delays the emulated application render thread the specified amount of milliseconds every time it submits render commands to the GPU.</p><p>Adjust this feature in the (very few) dynamic framerate applications to fix performance issues.</p></body></html> <html><head/><body><p>Fördröjer det emulerade programmets renderingstråd med det angivna antalet millisekunder varje gång den skickar renderingskommandon till GPU:n.</p><p>Justera den här funktionen i de (mycket få) dynamiska bildfrekvensapplikationerna för att åtgärda prestandaproblem.</p></body></html> @@ -1997,170 +2027,243 @@ Vill du ignorera felet och fortsätta? - + Custom Layout Anpassad layout - - Swap screens - Växla skärmar - - - + Rotate screens upright Rotera skärmar upprätt - + + Swap screens + Växla skärmar + + + + Customize layout cycling + Anpassa layoutväxling + + + Screen Gap Skärmmellanrum - + Large Screen Proportion Proportion på stor skärm - + Small Screen Position Position för liten skärm - + Upper Right Övre höger - + Middle Right Mellan höger - + Bottom Right (default) Längst ner till höger (standard) - + Upper Left Övre vänster - + Middle Left Mellan vänster - + Bottom Left Nederst till vänster - + Above large screen Ovanför stor skärm - + Below large screen Nedanför stor skärm - + Background Color Bakgrundsfärg - - + + Top Screen Översta skärmen - - + + X Position X-position - - - - - - - - - + + + + + + + + - - + + + px px - - + + Y Position Y-position - - + + Width Bredd - - + + Height Höjd - - + + Bottom Screen Nedre skärmen - + <html><head/><body><p>Bottom Screen Opacity %</p></body></html> <html><head/><body><p>Opacitet för nedre skärm %</p></body></html> - + Single Screen Layout Layout för En skärm - - + + Stretch Sträck ut - - + + Left/Right Padding Vänster/höger utfyllnad - - + + Top/Bottom Padding Överst/nederst utfyllnad - + Note: These settings affect the Single Screen and Separate Windows layouts Obs: Dessa inställningar påverkar layouterna En skärm och Separata fönster + + ConfigureLayoutCycle + + + Configure Layout Cycling + Konfigurera layoutväxling + + + + Screen Layout Cycling Customization + Anpassning av skärmlayoutväxling + + + + Select which screen layout options should be cycled with the "Toggle Screen Layout" hotkey + Välj vilka skärmlayoutalternativ som ska växlas med snabbtangenten ”Växla skärmlayout”. + + + + Use Global Value + Använd globalt värde + + + + Default + Standard + + + + Single Screen + En skärm + + + + Large Screen + Stor skärm + + + + Side by Side + Sida vid sida + + + + Separate Windows + Separata fönster + + + + Hybrid + Hybrid + + + + Custom + Anpassad + + + + No Layout Selected + Ingen layout vald + + + + Please select at least one layout option to cycle through. + Välj minst ett layoutalternativ för att bläddra igenom dem. + + ConfigureMotionTouch - + Configure Motion / Touch Konfigurera rörelse/tryck @@ -2188,8 +2291,10 @@ Vill du ignorera felet och fortsätta? - - + + + + Configure Konfigurera @@ -2219,58 +2324,68 @@ Vill du ignorera felet och fortsätta? Använd mappning av knappar: - + + Map touchpads on controllers like the DualSense directly to touch + Mappa pekplattor på kontroller som DualSense direkt till pekskärmen + + + + Use controller touchpad + Använd kontrollens pekplatta + + + CemuhookUDP Config CemuhookUDP-konfiguration - + You may use any Cemuhook compatible UDP input source to provide motion and touch input. Du kan använda vilken UDP-ingångskälla som helst som är kompatibel med Cemuhook för att tillhandahålla rörelse- och pekinmatning. - + Server: Server: - + Port: Port: - + Pad: Pad: - + Pad 1 Pad 1 - + Pad 2 Pad 2 - + Pad 3 Pad 3 - + Pad 4 Pad 4 - + Learn More Läs mer - - + + Test Testa @@ -2301,57 +2416,68 @@ Vill du ignorera felet och fortsätta? <a href='https://web.archive.org/web/20240301211230/https://citra-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">Läs mer</span></a> - + + Information Information - + After pressing OK, press a button on the controller whose motion you want to track. När du har tryckt på OK trycker du på en knapp på kontrollern vars rörelse du vill följa. - + [press button] [tryck på knappen] - + + After pressing OK, tap the touchpad on the controller you want to track. + När du har tryckt på OK trycker du på pekplattan på den kontroller som du vill spåra. + + + + [press touchpad] + [tryck på pekplatta] + + + Testing Testar - + Configuring Konfigurering - + Test Successful Testet lyckades - + Successfully received data from the server. Har tagit 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. - + Azahar Azahar - + 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. @@ -2521,8 +2647,8 @@ Vill du ignorera felet och fortsätta? - Compresses the content of CIA files when installed to the emulated SD card. Only affects CIA content which is installed while the setting is enabled. - Komprimerar innehållet för CIA-filer vid installation till det emulerade SD-kortet. Påverkar endast CIA-innehåll som installeras när inställningen är aktiverad. + <html><head/><body><p>Compresses the content of CIA files when installed to the emulated SD card. Only affects CIA content which is installed while the setting is enabled.</p></body></html> + <html><head/><body><p>Komprimerar innehållet i CIA-filer när det installeras på det emulerade SD-kortet. Påverkar endast CIA-innehåll som installeras medan inställningen är aktiverad.</p></body></html> @@ -4105,511 +4231,526 @@ Kontrollera din FFmpeg-installation som användes för kompilering. GMainWindow - + + Warning + Varning + + + + The `azahar` executable is being run directly rather than via the Azahar.app bundle. + +When run this way, the app may be missing certain functionality such as camera emulation. + +It is recommended to instead run Azahar using the `open` command, e.g.: +`open ./Azahar.app` + + + + No Suitable Vulkan Devices Detected Inga lämpliga Vulkan-enheter upptäcktes - + Vulkan initialization failed during boot.<br/>Your GPU may not support Vulkan 1.1, or you do not have the latest graphics driver. Vulkan-initialiseringen misslyckades under uppstarten.<br/>Din GPU kanske inte stöder Vulkan 1.1, eller så har du inte den senaste grafikdrivrutinen. - + Current Artic traffic speed. Higher values indicate bigger transfer loads. Aktuell hastighet för Artic-trafiken. Högre värden indikerar större överföringslaster. - - + + Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a 3DS. Aktuell emuleringshastighet. Värden som är högre eller lägre än 100% indikerar att emuleringen körs snabbare eller långsammare än 3DS. - - + + How many frames per second the app is currently displaying. This will vary from app to app and scene to scene. Hur många bilder per sekund som appen visar för närvarande. Detta varierar från app till app och från scen till scen. - - + + Time taken to emulate a 3DS frame, not counting framelimiting or v-sync. For full-speed emulation this should be at most 16.67 ms. Tidsåtgång för att emulera en 3DS-bildruta, utan att räkna med framelimiting eller v-sync. För emulering med full hastighet bör detta vara högst 16,67 ms. - + MicroProfile (unavailable) MicroProfile (inte tillgänglig) - + Clear Recent Files Töm senaste filer - + &Continue &Fortsätt - + &Pause &Paus - + Azahar is running an application TRANSLATORS: This string is shown to the user to explain why Citra needs to prevent the computer from sleeping Azahar kör en applikation - - + + Invalid App Format Ogiltigt appformat - - + + Your app format is not supported.<br/>Please follow the guides to redump your <a href='https://web.archive.org/web/20240304210021/https://citra-emu.org/wiki/dumping-game-cartridges/'>game cartridges</a> or <a href='https://web.archive.org/web/20240304210011/https://citra-emu.org/wiki/dumping-installed-titles/'>installed titles</a>. Ditt appformat stöds inte.<br/>Följ anvisningarna för att återdumpa dina <a href='https://web.archive.org/web/20240304210021/https://citra-emu.org/wiki/dumping-game-cartridges/'>spelkassetter</a> eller <a href='https://web.archive.org/web/20240304210011/https://citra-emu.org/wiki/dumping-installed-titles/'>installerade titlar</a>. - + App Corrupted Appen skadad - + Your app is corrupted. <br/>Please follow the guides to redump your <a href='https://web.archive.org/web/20240304210021/https://citra-emu.org/wiki/dumping-game-cartridges/'>game cartridges</a> or <a href='https://web.archive.org/web/20240304210011/https://citra-emu.org/wiki/dumping-installed-titles/'>installed titles</a>. Din app är skadad. <br/>Följ guiderna för att återdumpa dina <a href='https://web.archive.org/web/20240304210021/https://citra-emu.org/wiki/dumping-game-cartridges/'>spelkassetter</a> eller <a href='https://web.archive.org/web/20240304210011/https://citra-emu.org/wiki/dumping-installed-titles/'>installerade titlar</a>. - + App Encrypted App krypterad - + Your app is encrypted. <br/><a href='https://azahar-emu.org/blog/game-loading-changes/'>Please check our blog for more info.</a> Din app är krypterad. <br/><a href='https://azahar-emu.org/blog/game-loading-changes/'>Mer information finns på vår blogg.</a> - + Unsupported App App som inte stöds - + GBA Virtual Console is not supported by Azahar. GBA Virtual Console stöds inte av Azahar. - - + + Artic Server Artic-server - + Invalid system mode Ogiltigt systemläge - + New 3DS exclusive applications cannot be loaded without enabling the New 3DS mode. Nya 3DS-exklusiva applikationer kan inte läsas in utan att aktivera Ny 3DS-läget. - + Error while loading App! Fel vid inläsning av app! - + An unknown error occurred. Please see the log for more details. Ett okänt fel har inträffat. Se loggen för mer information. - + CIA must be installed before usage CIA måste installeras före användning - + Before using this CIA, you must install it. Do you want to install it now? Innan du använder denna CIA måste du installera den. Vill du installera den nu? - + Quick Load Snabbinläsning - + Quick Save Snabbsparning - - + + Slot %1 Plats %1 - + %2 %3 %2 %3 - + Quick Save - %1 Snabbsparning - %1 - + Quick Load - %1 Snabbinläsning - %1 - + Slot %1 - %2 %3 Plats %1 - %2 %3 - + Error Opening %1 Folder Fel vid öppning av mappen %1 - - + + Folder does not exist! Mappen finns inte! - + Remove Play Time Data Ta bort data om speltid - + Reset play time? Återställ speltid? - - - - + + + + Create Shortcut Skapa genväg - + Do you want to launch the application in fullscreen? Vill du starta applikationen i helskärm? - + Successfully created a shortcut to %1 Skapade framgångsrikt en genväg till %1 - + This will create a shortcut to the current AppImage. This may not work well if you update. Continue? Detta kommer att skapa en genväg till den aktuella AppImage. Detta kanske inte fungerar så bra om du uppdaterar. Fortsätta? - + 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 en ikonfil. Sökvägen "%1" finns inte och kan inte skapas. - + Dumping... Dumpar... - - + + Cancel Avbryt - - - - - - - - - + + + + + + + + + Azahar Azahar - + Could not dump base RomFS. Refer to the log for details. Kunde inte dumpa RomFS-basen. Se loggen för mer information. - + Error Opening %1 Fel vid öppning av %1 - + Select Directory Välj katalog - + Properties Egenskaper - + The application properties could not be loaded. Applikationsegenskaperna kunde inte läsas in. - + 3DS Executable (%1);;All Files (*.*) %1 is an identifier for the 3DS executable file extensions. Körbar 3DS-fil (%1);;Alla filer (*.*) - + Load File Läs in fil - - + + Set Up System Files Konfigurera systemfiler - + <p>Azahar needs console unique data and firmware files from a real console to be able to use some of its features.<br>Such files and data can be set up with the <a href=https://github.com/azahar-emu/ArticSetupTool>Azahar Artic Setup Tool</a><br>Notes:<ul><li><b>This operation will install console unique data to Azahar, do not share your user or nand folders<br>after performing the setup process!</b></li><li>While doing the setup process, Azahar will link to the console running the setup tool. You can unlink the<br>console later from the System tab in the emulator configuration menu.</li><li>Do not go online with both Azahar and your 3DS console at the same time after setting up system files,<br>as it could cause issues.</li><li>Old 3DS setup is needed for the New 3DS setup to work (doing both setup modes is recommended).</li><li>Both setup modes will work regardless of the model of the console running the setup tool.</li></ul><hr></p> <p>Azahar behöver konsolunika data och firmware-filer från en riktig konsol för att kunna använda vissa av dess funktioner. <br>Sådana filer och data kan konfigureras med <a href=https://github.com/azahar-emu/ArticSetupTool>Azahar Artic Setup Tool </a><br>Observera:<ul><li><b> Den här åtgärden installerar konsolunika data till Azahar, dela inte dina användar- eller nand-mappar<br> efter att du har utfört installationsprocessen!</b></li><li> Under installationsprocessen kommer Azahar att länkas till den konsol som kör installationsverktyget. Du kan koppla bort <br>konsolen senare från fliken System i emulatorns konfigurationsmeny. </li><li>Gå inte online med både Azahar och din 3DS-konsol samtidigt efter att du har konfigurerat systemfiler, <br>eftersom det kan orsaka problem.</li><li> En installation av den gamla 3DS:en behövs för att installationen av den nya 3DS:en ska fungera (vi rekommenderar att du gör båda installationslägena).</li><li> Båda installationslägena fungerar oavsett vilken konsolmodell som kör installationsverktyget.</li></ul><hr></p> - + Enter Azahar Artic Setup Tool address: Ange adressen till Azahar Artic Setup Tool: - + <br>Choose setup mode: <br>Välj konfigurationsläge: - + (ℹ️) Old 3DS setup (ℹ️) Gammal 3DS-konfiguration - - + + Setup is possible. Konfiguration är möjlig. - + (⚠) New 3DS setup (⚠) Ny 3DS-konfiguration - + Old 3DS setup is required first. Gammal 3DS-konfiguration krävs först. - + (✅) Old 3DS setup (✅) Gammal 3DS-konfiguration - - + + Setup completed. Konfigurationen är färdig. - + (ℹ️) New 3DS setup (ℹ️) Ny 3DS-konfiguration - + (✅) New 3DS setup (✅) Ny 3DS-konfiguration - + The system files for the selected mode are already set up. Reinstall the files anyway? Systemfilerna för det valda läget är redan konfigurerade. Installera om filerna i alla fall? - + Load Files Läs in filer - + 3DS Installation File (*.cia *.zcia) 3DS-installationsfil (*.cia *.zcia) - - - + + + All Files (*.*) Alla filer (*.*) - + Connect to Artic Base Anslut till Artic Base - + Enter Artic Base server address: Ange Artic Base-serveradress: - + %1 has been installed successfully. %1 har installerats. - + Unable to open File Kunde inte öppna filen - + Could not open %1 Kunde inte öppna %1 - + Installation aborted Installationen avbröts - + The installation of %1 was aborted. Please see the log for more details Installationen av %1 avbröts. Se loggen för mer information - + Invalid File Ogiltig fil - + %1 is not a valid CIA %1 är inte en giltig CIA - + CIA Encrypted CIA-krypterad - + Your CIA file is encrypted.<br/><a href='https://azahar-emu.org/blog/game-loading-changes/'>Please check our blog for more info.</a> Din CIA-fil är krypterad.<br/><a href='https://azahar-emu.org/blog/game-loading-changes/'>Kolla vår blogg för mer info</a> - + Unable to find File Det går inte att hitta filen - + Could not find %1 Kunde inte hitta %1 - - - - + + + + Z3DS Compression Z3DS-komprimering - + Failed to compress some files, check log for details. Misslyckades med att komprimera några filer. Kontrollera loggen. - + Failed to decompress some files, check log for details. Misslyckades med att packa upp några filer. Kontrollera loggen. - + All files have been compressed successfully. Alla filer har komprimerats utan problem. - + All files have been decompressed successfully. Alla filer har packats upp utan problem. - + Uninstalling '%1'... Avinstallation av "%1"... - + Failed to uninstall '%1'. Misslyckades med att avinstallera "%1". - + Successfully uninstalled '%1'. Avinstallationen av "%1" har lyckats. - + File not found Filen hittades inte - + File "%1" not found Filen "%1" hittades inte - + Savestates Sparade tillstånd - + Warning: Savestates are NOT a replacement for in-application saves, and are not meant to be reliable. Use at your own risk! @@ -4618,86 +4759,86 @@ Use at your own risk! Använd på egen risk! - - - + + + Error opening amiibo data file Fel vid öppning av amiibo datafil - + A tag is already in use. En tagg är redan i bruk. - + Application is not looking for amiibos. Applikationen letar inte efter amiibos. - + Amiibo File (%1);; All Files (*.*) Amiibo-fil (%1);; Alla filer (*.*) - + Load Amiibo Läs in Amiibo - + Unable to open amiibo file "%1" for reading. Det gick inte att öppna amiibo-filen "%1" för läsning. - + Record Movie Spela in film - + Movie recording cancelled. Filminspelning avbruten. - - + + Movie Saved Filmen sparades - - + + The movie is successfully saved. Filmen sparades. - + Application will unpause Applikationen kommer att återupptas - + The application will be unpaused, and the next frame will be captured. Is this okay? Applikationen kommer att återupptas och nästa bildruta kommer att fångas. Är det här okej? - + Invalid Screenshot Directory Ogiltig katalog för skärmbilder - + Cannot create specified screenshot directory. Screenshot path is set back to its default value. Det går inte att skapa angiven skärmbildskatalog. Sökvägen för skärmbilder återställs till sitt standardvärde. - + Could not load video dumper Kunde inte läsa in videodumpern - + FFmpeg could not be loaded. Make sure you have a compatible version installed. To install FFmpeg to Azahar, press Open and select your FFmpeg directory. @@ -4710,265 +4851,265 @@ För att installera FFmpeg till Azahar, tryck på Öppna och välj din FFmpeg-ka Om du vill visa en guide om hur du installerar FFmpeg trycker du på Hjälp. - + Load 3DS ROM Files Läs in 3DS ROM-filer - + 3DS ROM Files (*.cia *.cci *.3dsx *.cxi *.3ds) - + 3DS ROM-filer (*.cia *.cci *.3dsx *.cxi *.3ds) - + 3DS Compressed ROM File (*.%1) Komprimerad 3DS ROM-fil (*.%1) - + Save 3DS Compressed ROM File Spara komprimerad 3DS ROM-fil - + Select Output 3DS Compressed ROM Folder Välj utdatamapp för 3DS-komprimerad ROM - + Load 3DS Compressed ROM Files Läs in 3DS-komprimerade ROM-filer - + 3DS Compressed ROM Files (*.zcia *zcci *z3dsx *zcxi) Komprimerade 3DS ROM-filer (*.zcia *zcci *z3dsx *zcxi) - + 3DS ROM File (*.%1) 3DS ROM-fil (*.%1) - + Save 3DS ROM File Spara 3DS ROM-fil - + Select Output 3DS ROM Folder Välj utdatamapp för 3DS ROM - + Select FFmpeg Directory Välj FFmpeg-katalog - + The provided FFmpeg directory is missing %1. Please make sure the correct directory was selected. Den angivna FFmpeg-katalogen saknar %1. Kontrollera att rätt katalog har valts. - + FFmpeg has been sucessfully installed. FFmpeg har installerats. - + Installation of FFmpeg failed. Check the log file for details. Installationen av FFmpeg misslyckades. Kontrollera loggfilen för mer information. - + Could not start video dumping.<br>Please ensure that the video encoder is configured correctly.<br>Refer to the log for details. Det gick inte att starta videodumpningen.<br>Kontrollera att videokodaren är korrekt konfigurerad.<br>Se loggen för mer information. - + Recording %1 Spelar in %1 - + Playing %1 / %2 Spelar %1 / %2 - + Movie Finished Filmen är färdig - + (Accessing SharedExtData) (Åtkomst till SharedExtData) - + (Accessing SystemSaveData) (Åtkomst till SystemSaveData) - + (Accessing BossExtData) (Åtkomst till BossExtData) - + (Accessing ExtData) (Åtkomst till ExtData) - + (Accessing SaveData) (Åtkomst till SaveData) - + MB/s MB/s - + KB/s KB/s - + Artic Traffic: %1 %2%3 Artic-trafik: %1 %2%3 - + Speed: %1% Hastighet: %1% - + Speed: %1% / %2% Hastighet: %1% / %2% - + App: %1 FPS App: %1 bilder/s - + Frame: %1 ms (GPU: [CMD: %2 ms, SWP: %3 ms], IPC: %4 ms, SVC: %5 ms, Rem: %6 ms) Bildruta: %1 ms (GPU: [CMD: %2 ms, SWP: %3 ms], IPC: %4 ms, SVC: %5 ms, Rem: %6 ms) - + Frame: %1 ms Bildruta: %1 ms - + VOLUME: MUTE VOLYM: TYST - + VOLUME: %1% Volume percentage (e.g. 50%) VOLYM: %1% - + %1 is missing. Please <a href='https://web.archive.org/web/20240304201103/https://citra-emu.org/wiki/dumping-system-archives-and-the-shared-fonts-from-a-3ds-console/'>dump your system archives</a>.<br/>Continuing emulation may result in crashes and bugs. %1 saknas. <a href='https://web.archive.org/web/20240304201103/https://citra-emu.org/wiki/dumping-system-archives-and-the-shared-fonts-from-a-3ds-console/'>Dumpa dina systemarkiv</a>.<br/>Fortsatt emulering kan resultera i krascher och buggar. - + A system archive Ett systemarkiv - + System Archive Not Found Systemarkiv hittades inte - + System Archive Missing Systemarkiv saknas - + Save/load Error Fel vid spara/läs in - + Fatal Error Ödesdigert fel - + A fatal error occurred. <a href='https://web.archive.org/web/20240228001712/https://community.citra-emu.org/t/how-to-upload-the-log-file/296'>Check the log</a> for details.<br/>Continuing emulation may result in crashes and bugs. Ett ödesdigert fel inträffade. <a href='https://web.archive.org/web/20240228001712/https://community.citra-emu.org/t/how-to-upload-the-log-file/296'>Kontrollera loggen</a> för detaljer.<br/>Fortsatt emulering kan resultera i krascher och buggar. - + Fatal Error encountered Allvarligt fel uppstod - + Continue Fortsätt - + Quit Application Avsluta applikation - + OK Ok - + Would you like to exit now? Vill du avsluta nu? - + The application is still running. Would you like to stop emulation? Applikationen körs fortfarande. Vill du stoppa emuleringen? - + Playback Completed Uppspelningen är färdig - + Movie playback completed. Uppspelning av film slutförd. - + Update Available Uppdatering tillgänglig - + Update %1 for Azahar is available. Would you like to download it? Uppdatering %1 för Azahar finns tillgänglig. Vill du hämta ner den? - + Primary Window Primärt fönster - + Secondary Window Sekundärt fönster @@ -5031,42 +5172,42 @@ Vill du hämta ner den? GRenderWindow - + OpenGL not available! OpenGL är inte tillgängligt! - + OpenGL shared contexts are not supported. Delade OpenGL-kontexter stöds inte. - + 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.3! Fel vid initiering av OpenGL 4.3! - + Your GPU may not support OpenGL 4.3, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1 Din GPU kanske inte stöder OpenGL 4.3, eller så har du inte den senaste grafikdrivrutinen.<br><br>GL Renderer:<br>%1 - + Error while initializing OpenGL ES 3.2! Fel vid initiering av OpenGL ES 3.2! - + Your GPU may not support OpenGL ES 3.2, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1 Din GPU kanske inte stöder OpenGL ES 3.2, eller så har du inte den senaste grafikdrivrutinen.<br><br>GL Renderer:<br>%1 @@ -5074,180 +5215,185 @@ Vill du hämta ner den? GameList - - + + Compatibility Kompatibilitet - - + + Region Region - - + + File type Filtyp - - + + Size Storlek - - + + Play time Speltid - + Favorite Favorit - + Eject Cartridge Mata ut cartridge - + Insert Cartridge Mata in cartridge - + Open Öppna - + Application Location Programplats - + Save Data Location Plats för sparat data - + Extra Data Location Plats för extradata - + Update Data Location Plats för uppdateringsdata - + DLC Data Location Plats för DLC-data - + Texture Dump Location Plats för texturdumpar - + Custom Texture Location Plats för anpassade texturer - + Mods Location Plats för mods - + Dump RomFS Dumpa RomFS - + Disk Shader Cache Disk shadercache - + Open Shader Cache Location Öppna plats för shadercache - + Delete OpenGL Shader Cache Ta bort OpenGL-shadercache - + + Delete Vulkan Shader Cache + Ta bort Vulkan Shader-cache + + + Uninstall Avinstallera - + Everything Allting - + Application Applikation - + Update Uppdatering - + DLC DLC - + Remove Play Time Data Ta bort data för speltid - + Create Shortcut Skapa genväg - + Add to Desktop Lägg till på skrivbordet - + Add to Applications Menu Lägg till i programmenyn - + Stress Test: App Launch Stresstest: Appstart - + Properties Egenskaper - - - - + + + + Azahar Azahar - + Are you sure you want to completely uninstall '%1'? This will delete the application if installed, as well as any installed updates or DLC. @@ -5256,64 +5402,64 @@ This will delete the application if installed, as well as any installed updates Detta kommer att radera programmet om det är installerat, samt alla installerade uppdateringar eller DLC. - - + + %1 (Update) %1 (Uppdatering) - - + + %1 (DLC) %1 (DLC) - + Are you sure you want to uninstall '%1'? Är du säker att du vill avinstallera "%1"? - + Are you sure you want to uninstall the update for '%1'? Är du säker på att du vill avinstallera uppdateringen för "%1"? - + Are you sure you want to uninstall all DLC for '%1'? Är du säker på att du vill avinstallera alla DLC för "%1"? - + Scan Subfolders Sök igenom undermappar - + Remove Application Directory Ta bort applikationskatalog - + Move Up Flytta upp - + Move Down Flytta ner - + Open Directory Location Öppna katalogplats - + Clear Töm - + Name Namn @@ -5404,7 +5550,7 @@ startskärmen. GameListPlaceholder - + Double-click to add a new folder to the application list Dubbelklicka för att lägga till en ny mapp i applikationslistan @@ -5412,27 +5558,27 @@ startskärmen. GameListSearchField - + of av - + result resultat - + results resultat - + Filter: Filtrera: - + Enter pattern to filter Ange mönster att filtrera @@ -6065,24 +6211,24 @@ Felsökningsmeddelande: Förbereder shaders %1 / %2 - - Loading Shaders %1 / %2 - Läser in shaders %1 / %2 + + Loading %3 %1 / %2 + Läser in %3 %1 / %2 - + Launching... Startar... - + Now Loading %1 Läser nu in %1 - + Estimated Time %1 Beräknad tid %1 @@ -7058,17 +7204,17 @@ De kan ha lämnat rummet. Öppna fil - + Error Fel - + Couldn't load the camera Kunde inte läsa in kameran - + Couldn't load %1 Kunde inte läsa in %1 diff --git a/dist/languages/tr_TR.ts b/dist/languages/tr_TR.ts index cd88e3c7b..f2cc8eda9 100644 --- a/dist/languages/tr_TR.ts +++ b/dist/languages/tr_TR.ts @@ -328,8 +328,8 @@ Bu onun hem forum kullanıcı adını hemde IP adresini yasaklar. - This post-processing effect adjusts audio speed to match emulation speed and helps prevent audio stutter. This however increases audio latency. - Bu post-processing efekti ses hızını emülasyon hızına eşleşmesi için ayarlar ve ses takılmasını önlemeye yardımcı olur. Ancak bu ses gecikmesini arttırır. + <html><head/><body><p>This post-processing effect adjusts audio speed to match emulation speed and helps prevent audio stutter. This however increases audio latency.</p></body></html> + @@ -338,8 +338,8 @@ Bu onun hem forum kullanıcı adını hemde IP adresini yasaklar. - Scales audio playback speed to account for drops in emulation framerate. This means that audio will play at full speed even while the application framerate is low. May cause audio desync issues. - Emülasyon kare hızındaki düşüşleri hesaba katmak için ses çalma hızını ölçeklendirir. Bu, uygulama kare hızı düşük olsa bile sesin tam hızda çalınacağı anlamına gelir. Ses senkronizasyon sorunlarına neden olabilir. + <html><head/><body><p>Scales audio playback speed to account for drops in emulation framerate. This means that audio will play at full speed even while the application framerate is low. May cause audio desync issues.</p></body></html> + @@ -478,8 +478,8 @@ Bu onun hem forum kullanıcı adını hemde IP adresini yasaklar. - Select where the image of the emulated camera comes from. It may be an image or a real camera. - Emülasyon yapılmış kameranın görüntüsünün nereden geldiğini seçin. Bir resim veya gerçek bir kamera olabilir. + <html><head/><body><p>Select where the image of the emulated camera comes from. It may be an image or a real camera.</p></body></html> + @@ -807,21 +807,31 @@ Hataya aldırmayıp devam etmek ister misiniz? + <html><head/><body><p>Toggles the unique data console type (Old 3DS ↔ New 3DS) to be able to download the opposite system firmware type from system settings.</p></body></html> + + + + + Toggle unique data console type + + + + Force deterministic async operations Deterministik asenkron işlemleri zorla - + <html><head/><body><p>Forces all async operations to run on the main thread, making them deterministic. Do not enable if you don't know what you are doing.</p></body></html> <html><head/><body><p>Tüm asenkron işlemleri ana iş parçacığı üzerinde çalışmaya zorlayarak deterministik hale getirir. Ne yaptığınızı bilmiyorsanız etkinleştirmeyin.</p></body></html> - + Enable RPC server - + <html><head/><body><p>Enables the RPC server on port 45987. This allows remotely reading/writing guest memory, do not enable if you don't know what you are doing.</p></body></html> @@ -1019,176 +1029,186 @@ Hataya aldırmayıp devam etmek ister misiniz? + Use Integer Scaling + + + + + <html><head/><body><p>Use Integer Scaling</p><p>Enforces that the larger screen in all layouts is an integer scale of the 240px height of the original 3DS screen.</p></body></html> + + + + Enable Linear Filtering - + Post-Processing Shader - + Texture Filter Doku Filtresi - + None Yok - + Anime4K Anime4K - + Bicubic Bikübik - + ScaleForce ScaleForce - + xBRZ xBRZ - + MMPX MMPX - + Stereoscopy Stereoskopi - + Stereoscopic 3D Mode Stereoskopik 3D Modu - + Off Kapalı - + Side by Side Yan Yana - + Side by Side Full Width - + Anaglyph Anaglif - + Interlaced Geçmeli - + Reverse Interlaced Ters Geçmeli - + Depth Derinlik - + % % - + Note: Depth values over 100% are not possible on real hardware and may cause graphical issues Not: %100'ün üzerindeki derinlik değerleri gerçek donanımda mümkün değildir ve grafik sorunlarına neden olabilir - + Eye to Render in Monoscopic Mode - + Left Eye (default) Sol Göz (varsayılan) - + Right Eye Sağ Göz - + Disable Right Eye Rendering - + <html><head/><body><p>Disable Right Eye Rendering</p><p>Disables rendering the right eye image when not using stereoscopic mode. Greatly improves performance in some applications, but can cause flickering in others.</p></body></html> - + Swap Eyes - + Utility - + <html><head/><body><p>Replace textures with PNG files.</p><p>Textures are loaded from load/textures/[Title ID]/.</p></body></html> - + Use custom textures Özel dokular kullan - + <html><head/><body><p>Dump textures to PNG files.</p><p>Textures are dumped to dump/textures/[Title ID]/.</p></body></html> - + Dump textures - + <html><head/><body><p>Load all custom textures into memory on boot, instead of loading them when the application requires them.</p></body></html> - + Preload custom textures - + <html><head/><body><p>Load custom textures asynchronously with background threads to reduce loading stutter</p></body></html> - + Async custom texture loading @@ -1494,8 +1514,8 @@ Hataya aldırmayıp devam etmek ister misiniz? - VSync prevents the screen from tearing, but some graphics cards have lower performance with VSync enabled. Keep it enabled if you don't notice a performance difference. - VSync ekran yırtılmasını engeller, fakat bazı görüntü kartları VSync etkinken daha az performans sergileyebilir. Eğer performans değişikliği hissetmiyorsanız açık bırakın. + <html><head/><body><p>VSync prevents the screen from tearing, but some graphics cards have lower performance with VSync enabled. Keep it enabled if you don't notice a performance difference.</p></body></html> + @@ -1503,22 +1523,32 @@ Hataya aldırmayıp devam etmek ister misiniz? VSync Etkin - + + <html><head/><body><p>When enabled, this setting detects when the refresh rate of the screen is below that of the 3DS, and when it is, disables VSync automatically to avoid emulation speed being forced below 100%.</p></body></html> + + + + + Enable display refresh rate detection + + + + Use global - + Use per-application - + Delay Application Render Thread - + <html><head/><body><p>Delays the emulated application render thread the specified amount of milliseconds every time it submits render commands to the GPU.</p><p>Adjust this feature in the (very few) dynamic framerate applications to fix performance issues.</p></body></html> @@ -1997,170 +2027,243 @@ Hataya aldırmayıp devam etmek ister misiniz? - + Custom Layout Özel Düzen - - Swap screens - Ekranları değiştir - - - + Rotate screens upright - + + Swap screens + Ekranları değiştir + + + + Customize layout cycling + + + + Screen Gap Ekran boşluğu - + Large Screen Proportion Büyük Ekran Oranı - + Small Screen Position Küçük Ekran Konumu - + Upper Right Sağ Üst - + Middle Right Orta Üst - + Bottom Right (default) Sağ Alt (varsayılan) - + Upper Left Sol Üst - + Middle Left Orta Sol - + Bottom Left Sol Alt - + Above large screen Büyük ekranın üzerinde - + Below large screen Büyük ekranın altında - + Background Color Arkaplan Rengi - - + + Top Screen Üst Ekran - - + + X Position X Konumu - - - - - - - - - + + + + + + + + - - + + + px pk - - + + Y Position Y Konumu - - + + Width Genişlik - - + + Height Yükseklik - - + + Bottom Screen Alt Ekran - + <html><head/><body><p>Bottom Screen Opacity %</p></body></html> - + Single Screen Layout Tek Ekran Düzeni - - + + Stretch Gerdir - - + + Left/Right Padding - - + + Top/Bottom Padding - + Note: These settings affect the Single Screen and Separate Windows layouts + + ConfigureLayoutCycle + + + Configure Layout Cycling + + + + + Screen Layout Cycling Customization + + + + + Select which screen layout options should be cycled with the "Toggle Screen Layout" hotkey + + + + + Use Global Value + + + + + Default + Varsayılan + + + + Single Screen + Tek Ekran + + + + Large Screen + Büyük Ekran + + + + Side by Side + Yan Yana + + + + Separate Windows + Ayrı Pencereler + + + + Hybrid + + + + + Custom + Custom + + + + No Layout Selected + + + + + Please select at least one layout option to cycle through. + + + ConfigureMotionTouch - + Configure Motion / Touch Hareket / Dokunma Ayarları @@ -2188,8 +2291,10 @@ Hataya aldırmayıp devam etmek ister misiniz? - - + + + + Configure Yapılandır @@ -2219,58 +2324,68 @@ Hataya aldırmayıp devam etmek ister misiniz? - + + Map touchpads on controllers like the DualSense directly to touch + + + + + Use controller touchpad + + + + CemuhookUDP Config CemuhookUDP Ayarları - + You may use any Cemuhook compatible UDP input source to provide motion and touch input. Hareket ve dokunma girişi sağlamak için herhangi bir Cemuhook uyumlu UDP giriş kaynağı kullanabilirsiniz. - + Server: Sunucu: - + Port: Port: - + Pad: Pad: - + Pad 1 Kumanda 1 - + Pad 2 Kumanda 2 - + Pad 3 Kumanda 3 - + Pad 4 Kumanda 4 - + Learn More Daha fazla bilgi edinin - - + + Test Test @@ -2301,57 +2416,68 @@ Hataya aldırmayıp devam etmek ister misiniz? - + + Information Bilgi - + After pressing OK, press a button on the controller whose motion you want to track. - + [press button] [butona basın] - + + After pressing OK, tap the touchpad on the controller you want to track. + + + + + [press touchpad] + + + + Testing Test Ediliyor - + Configuring Ayarlanıyor - + Test Successful Test Başarılı - + Successfully received data from the server. Veri sunucudan başarıyla alındı. - + 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. Sunucudan geçerli veri alınamıyor.<br>Lütfen sunucunun düzgün kurulduğundan, adres ve portun doğru girildiğinden emin olun. - + Azahar Azahar - + UDP Test or calibration configuration is in progress.<br>Please wait for them to finish. UDP Testi ya da kalibrasyonu hala devam ediyor.<br> Lütfen bitmesini bekleyin. @@ -2521,7 +2647,7 @@ Hataya aldırmayıp devam etmek ister misiniz? - Compresses the content of CIA files when installed to the emulated SD card. Only affects CIA content which is installed while the setting is enabled. + <html><head/><body><p>Compresses the content of CIA files when installed to the emulated SD card. Only affects CIA content which is installed while the setting is enabled.</p></body></html> @@ -4101,509 +4227,524 @@ Please check your FFmpeg installation used for compilation. GMainWindow - + + Warning + Uyarı + + + + The `azahar` executable is being run directly rather than via the Azahar.app bundle. + +When run this way, the app may be missing certain functionality such as camera emulation. + +It is recommended to instead run Azahar using the `open` command, e.g.: +`open ./Azahar.app` + + + + No Suitable Vulkan Devices Detected - + Vulkan initialization failed during boot.<br/>Your GPU may not support Vulkan 1.1, or you do not have the latest graphics driver. - + Current Artic traffic speed. Higher values indicate bigger transfer loads. - - + + Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a 3DS. Geçerli emülasyon hızı. 100%'den az veya çok olan değerler emülasyonun bir 3DS'den daha yavaş veya daha hızlı çalıştığını gösterir. - - + + How many frames per second the app is currently displaying. This will vary from app to app and scene to scene. - - + + Time taken to emulate a 3DS frame, not counting framelimiting or v-sync. For full-speed emulation this should be at most 16.67 ms. Bir 3DS karesini emüle etmekte geçen zaman, karelimitleme ve v-sync hariç. Tam hız emülasyon için bu en çok 16,67 ms. olmalı. - + MicroProfile (unavailable) MikroProfil (kullanılamaz) - + Clear Recent Files Son Dosyaları Temizle - + &Continue &Devam et - + &Pause &Duraklat - + Azahar is running an application TRANSLATORS: This string is shown to the user to explain why Citra needs to prevent the computer from sleeping Azahar bir uygulama çalıştırıyor - - + + Invalid App Format Geçersiz Uygulama Biçimi - - + + Your app format is not supported.<br/>Please follow the guides to redump your <a href='https://web.archive.org/web/20240304210021/https://citra-emu.org/wiki/dumping-game-cartridges/'>game cartridges</a> or <a href='https://web.archive.org/web/20240304210011/https://citra-emu.org/wiki/dumping-installed-titles/'>installed titles</a>. - + App Corrupted - + Your app is corrupted. <br/>Please follow the guides to redump your <a href='https://web.archive.org/web/20240304210021/https://citra-emu.org/wiki/dumping-game-cartridges/'>game cartridges</a> or <a href='https://web.archive.org/web/20240304210011/https://citra-emu.org/wiki/dumping-installed-titles/'>installed titles</a>. - + App Encrypted Uygulama Şifreli - + Your app is encrypted. <br/><a href='https://azahar-emu.org/blog/game-loading-changes/'>Please check our blog for more info.</a> - + Unsupported App Desteklenmeyen Uygulama - + GBA Virtual Console is not supported by Azahar. GBA Sanal Konsolu Azahar tarafından desteklenmiyor. - - + + Artic Server Artic Sunucusu - + Invalid system mode - + New 3DS exclusive applications cannot be loaded without enabling the New 3DS mode. - + Error while loading App! Uygulama yüklenirken hata oluştu! - + An unknown error occurred. Please see the log for more details. - + CIA must be installed before usage CIA dosyası kullanılmadan önce yüklenmelidir - + Before using this CIA, you must install it. Do you want to install it now? Bu CIA dosyasını kullanmadan önce yüklemeniz gerekir. Şimdi yüklemek ister misiniz? - + Quick Load Hızlı Yükle - + Quick Save Hızlı Kaydet - - + + Slot %1 Slot %1 - + %2 %3 %2 %3 - + Quick Save - %1 Hızlı Kayıt - %1 - + Quick Load - %1 Hızlı Yükleme - %1 - + Slot %1 - %2 %3 - + Error Opening %1 Folder %1 Klasörü Açılırken Hata Oluştu - - + + Folder does not exist! Klasör mevcut değil! - + Remove Play Time Data - + Reset play time? Oynama süresi sıfırlansın mı? - - - - + + + + Create Shortcut Kısayol Oluştur - + Do you want to launch the application in fullscreen? - + Successfully created a shortcut to %1 - + This will create a shortcut to the current AppImage. This may not work well if you update. Continue? - + Failed to create a shortcut to %1 - + Create Icon Simge Oluştur - + Cannot create icon file. Path "%1" does not exist and cannot be created. - + Dumping... Dump ediliyor... - - + + Cancel İptal et - - - - - - - - - + + + + + + + + + Azahar Azahar - + Could not dump base RomFS. Refer to the log for details. Temel RomFS dump edilemedi. Detaylar için kütük dosyasına bakınız. - + Error Opening %1 %1 Açılırken Hata Oluştu - + Select Directory Dizin Seç - + Properties Özellikler - + The application properties could not be loaded. - + 3DS Executable (%1);;All Files (*.*) %1 is an identifier for the 3DS executable file extensions. 3DS Çalıştırılabiliri (%1);; Bütün Dosyalar (*.*) - + Load File Dosya Yükle - - + + Set Up System Files - + <p>Azahar needs console unique data and firmware files from a real console to be able to use some of its features.<br>Such files and data can be set up with the <a href=https://github.com/azahar-emu/ArticSetupTool>Azahar Artic Setup Tool</a><br>Notes:<ul><li><b>This operation will install console unique data to Azahar, do not share your user or nand folders<br>after performing the setup process!</b></li><li>While doing the setup process, Azahar will link to the console running the setup tool. You can unlink the<br>console later from the System tab in the emulator configuration menu.</li><li>Do not go online with both Azahar and your 3DS console at the same time after setting up system files,<br>as it could cause issues.</li><li>Old 3DS setup is needed for the New 3DS setup to work (doing both setup modes is recommended).</li><li>Both setup modes will work regardless of the model of the console running the setup tool.</li></ul><hr></p> - + Enter Azahar Artic Setup Tool address: - + <br>Choose setup mode: - + (ℹ️) Old 3DS setup - - + + Setup is possible. - + (⚠) New 3DS setup - + Old 3DS setup is required first. - + (✅) Old 3DS setup - - + + Setup completed. Kurulum tamamlandı. - + (ℹ️) New 3DS setup (ℹ️) Yeni 3DS kurulumu - + (✅) New 3DS setup (✅) Yeni 3DS kurulumu - + The system files for the selected mode are already set up. Reinstall the files anyway? - + Load Files Dosyaları Yükle - + 3DS Installation File (*.cia *.zcia) - - - + + + All Files (*.*) Tüm Dosyalar (*.*) - + Connect to Artic Base Artic Base'e Bağla - + Enter Artic Base server address: - + %1 has been installed successfully. %1 başarıyla yüklendi. - + Unable to open File Dosya açılamıyor - + Could not open %1 %1 açılamıyor - + Installation aborted Yükleme iptal edildi - + The installation of %1 was aborted. Please see the log for more details %1'in yüklemesi iptal edildi. Daha fazla detay için lütfen kütüğe bakınız. - + Invalid File Geçersiz Dosya - + %1 is not a valid CIA %1 geçerli bir CIA dosyası değil - + CIA Encrypted CİA Şifreli - + Your CIA file is encrypted.<br/><a href='https://azahar-emu.org/blog/game-loading-changes/'>Please check our blog for more info.</a> - + Unable to find File Dosya bulunamadı - + Could not find %1 %1 bulunamadı - - - - + + + + Z3DS Compression - + Failed to compress some files, check log for details. - + Failed to decompress some files, check log for details. - + All files have been compressed successfully. - + All files have been decompressed successfully. - + Uninstalling '%1'... '%1' siliniyor... - + Failed to uninstall '%1'. '%1' silinemedi. - + Successfully uninstalled '%1'. '%1' başarıyla silindi. - + File not found Dosya bulunamadı - + File "%1" not found "%1" Dosyası bulunamadı - + Savestates Kayıt Durumları - + Warning: Savestates are NOT a replacement for in-application saves, and are not meant to be reliable. Use at your own risk! @@ -4612,86 +4753,86 @@ Use at your own risk! Kullanım riski size aittir! - - - + + + Error opening amiibo data file Amiibo veri dosyasını açarken bir hata oldu - + A tag is already in use. Bir etiket zaten kullanılıyor. - + Application is not looking for amiibos. Uygulama amiibo aramıyor. - + Amiibo File (%1);; All Files (*.*) Amiibo Dosyası (%1);; Tüm Dosyalar (*.*) - + Load Amiibo Amiibo Yükle - + Unable to open amiibo file "%1" for reading. - + Record Movie Klip Kaydet - + Movie recording cancelled. Klip kaydı iptal edildi. - - + + Movie Saved Klip Kaydedildi - - + + The movie is successfully saved. Klip başarıyla kayıt edildi. - + Application will unpause - + The application will be unpaused, and the next frame will be captured. Is this okay? - + Invalid Screenshot Directory Geçersiz Ekran Görüntüsü Dizini - + Cannot create specified screenshot directory. Screenshot path is set back to its default value. - + Could not load video dumper - + FFmpeg could not be loaded. Make sure you have a compatible version installed. To install FFmpeg to Azahar, press Open and select your FFmpeg directory. @@ -4700,264 +4841,264 @@ To view a guide on how to install FFmpeg, press Help. - + Load 3DS ROM Files - + 3DS ROM Files (*.cia *.cci *.3dsx *.cxi *.3ds) - + 3DS Compressed ROM File (*.%1) - + Save 3DS Compressed ROM File - + Select Output 3DS Compressed ROM Folder - + Load 3DS Compressed ROM Files - + 3DS Compressed ROM Files (*.zcia *zcci *z3dsx *zcxi) - + 3DS ROM File (*.%1) - + Save 3DS ROM File - + Select Output 3DS ROM Folder - + Select FFmpeg Directory FFmpeg Dizini Seç - + The provided FFmpeg directory is missing %1. Please make sure the correct directory was selected. - + FFmpeg has been sucessfully installed. FFmpeg başarıyla yüklendi. - + Installation of FFmpeg failed. Check the log file for details. FFmpeg yüklemesi başarısız oldu. Detaylar için log dosyasına bakınız. - + Could not start video dumping.<br>Please ensure that the video encoder is configured correctly.<br>Refer to the log for details. - + Recording %1 Ekran Kaydediliyor %1 - + Playing %1 / %2 Oynatılıyor %1 / %2 - + Movie Finished Film Bitti - + (Accessing SharedExtData) (SharedExtData'ya Erişiliyor) - + (Accessing SystemSaveData) (SystemSaveData'ya Erişiliyor) - + (Accessing BossExtData) (BossExtData'ya Erişiliyor) - + (Accessing ExtData) (ExtData'ya Erişiliyor) - + (Accessing SaveData) (SaveData'ya Erişiliyor) - + MB/s MB/sn - + KB/s KB/sn - + Artic Traffic: %1 %2%3 - + Speed: %1% Hız: %1% - + Speed: %1% / %2% Hız: %1% / %2% - + App: %1 FPS Uygulama: %1 FPS - + Frame: %1 ms (GPU: [CMD: %2 ms, SWP: %3 ms], IPC: %4 ms, SVC: %5 ms, Rem: %6 ms) - + Frame: %1 ms Kare: %1 ms - + VOLUME: MUTE - + VOLUME: %1% Volume percentage (e.g. 50%) - + %1 is missing. Please <a href='https://web.archive.org/web/20240304201103/https://citra-emu.org/wiki/dumping-system-archives-and-the-shared-fonts-from-a-3ds-console/'>dump your system archives</a>.<br/>Continuing emulation may result in crashes and bugs. - + A system archive Bir sistem arşivi - + System Archive Not Found Sistem Arşivi Bulunamadı - + System Archive Missing Sistem Arşivi Eksik - + Save/load Error Kaydetme/yükleme Hatası - + Fatal Error Önemli Hata - + A fatal error occurred. <a href='https://web.archive.org/web/20240228001712/https://community.citra-emu.org/t/how-to-upload-the-log-file/296'>Check the log</a> for details.<br/>Continuing emulation may result in crashes and bugs. - + Fatal Error encountered Kritik hatayla karşılaşıldı - + Continue Devam - + Quit Application Uygulamadan Çık - + OK Tamam - + Would you like to exit now? Çıkmak istediğinize emin misiniz? - + The application is still running. Would you like to stop emulation? Uygulama hala çalışıyor. Emülasyonu durdurmak ister misiniz? - + Playback Completed Oynatma Tamamlandı - + Movie playback completed. Klip oynatması tamamlandı. - + Update Available Güncelleme Mevcut - + Update %1 for Azahar is available. Would you like to download it? - + Primary Window Birincil Pencere - + Secondary Window İkincil Pencere @@ -5020,42 +5161,42 @@ Would you like to download it? GRenderWindow - + OpenGL not available! - + OpenGL shared contexts are not supported. - + 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'i desteklemiyor veya grafik sürücünüz eski olabilir. - + Error while initializing OpenGL 4.3! - + Your GPU may not support OpenGL 4.3, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1 - + Error while initializing OpenGL ES 3.2! - + Your GPU may not support OpenGL ES 3.2, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1 @@ -5063,244 +5204,249 @@ Would you like to download it? GameList - - + + Compatibility Uyumluluk - - + + Region Bölge - - + + File type Dosya türü - - + + Size Boyut - - + + Play time Oyun süresi - + Favorite Favori - + Eject Cartridge - + Insert Cartridge - + Open - + Application Location Uygulama Konumu - + Save Data Location Kayıt Verileri Konumu - + Extra Data Location Ekstra Veri Konumu - + Update Data Location - + DLC Data Location DLC Veri Konumu - + Texture Dump Location - + Custom Texture Location - + Mods Location - + Dump RomFS RomFS Dump - + Disk Shader Cache - + Open Shader Cache Location - + Delete OpenGL Shader Cache - + + Delete Vulkan Shader Cache + + + + Uninstall Sil - + Everything Her şey - + Application Uygulama - + Update Güncelle - + DLC DLC - + Remove Play Time Data - + Create Shortcut Kısayol Oluştur - + Add to Desktop Masaüstüne Ekle - + Add to Applications Menu Uygulamalar Menüsüne Ekle - + Stress Test: App Launch - + Properties Özellikler - - - - + + + + Azahar Azahar - + Are you sure you want to completely uninstall '%1'? This will delete the application if installed, as well as any installed updates or DLC. - - + + %1 (Update) %1 (Güncelleme) - - + + %1 (DLC) %1 (DLC) - + Are you sure you want to uninstall '%1'? '%1'i silmek istediğinizden emin misiniz? - + Are you sure you want to uninstall the update for '%1'? - + Are you sure you want to uninstall all DLC for '%1'? - + Scan Subfolders Alt Dizinleri Tara - + Remove Application Directory Uygulama Dizinini Kaldır - + Move Up Yukarı Taşı - + Move Down Aşağı Taşı - + Open Directory Location Dizinin Bulunduğu Yeri Aç - + Clear Temizle - + Name İsim @@ -5386,7 +5532,7 @@ Screen. GameListPlaceholder - + Double-click to add a new folder to the application list Uygulama listesine yeni bir klasör eklemek için çift tıklayın @@ -5394,27 +5540,27 @@ Screen. GameListSearchField - + of 'nun - + result sonuç - + results sonuçlar - + Filter: Filtre: - + Enter pattern to filter Filtrelenecek düzeni girin @@ -6046,23 +6192,23 @@ Debug Message: Shader'lar Hazırlanıyor %1 / %2 - - Loading Shaders %1 / %2 - Shader'lar Yükleniyor %1 / %2 + + Loading %3 %1 / %2 + - + Launching... Başlatılıyor... - + Now Loading %1 Şimdi Yükleniyor %1 - + Estimated Time %1 Tahmini Süre %1 @@ -7036,17 +7182,17 @@ Odayı terk etmiş olabilirler. Dosya Aç - + Error Hata - + Couldn't load the camera Kamera yüklenemedi - + Couldn't load %1 %1 yüklenemedi diff --git a/dist/languages/vi_VN.ts b/dist/languages/vi_VN.ts index 6471271f9..28443940b 100644 --- a/dist/languages/vi_VN.ts +++ b/dist/languages/vi_VN.ts @@ -322,8 +322,8 @@ This would ban both their forum username and their IP address. - This post-processing effect adjusts audio speed to match emulation speed and helps prevent audio stutter. This however increases audio latency. - Hiệu ứng hậu xử lý giúp tăng tốc âm giúp phù hợp với tốc độ giả lập và cải thiện âm thanh, giúp hạn chế âm rè. Song điều này có thể tăng độ trễ âm. + <html><head/><body><p>This post-processing effect adjusts audio speed to match emulation speed and helps prevent audio stutter. This however increases audio latency.</p></body></html> + @@ -332,7 +332,7 @@ This would ban both their forum username and their IP address. - Scales audio playback speed to account for drops in emulation framerate. This means that audio will play at full speed even while the application framerate is low. May cause audio desync issues. + <html><head/><body><p>Scales audio playback speed to account for drops in emulation framerate. This means that audio will play at full speed even while the application framerate is low. May cause audio desync issues.</p></body></html> @@ -472,8 +472,8 @@ This would ban both their forum username and their IP address. - Select where the image of the emulated camera comes from. It may be an image or a real camera. - Chọn nguồn ảnh mà giả lập sẽ nhận từ máy ảnh. Nó có thể là tệp tin hoặc một đầu ra Camera. + <html><head/><body><p>Select where the image of the emulated camera comes from. It may be an image or a real camera.</p></body></html> + @@ -800,21 +800,31 @@ Would you like to ignore the error and continue? - Force deterministic async operations + <html><head/><body><p>Toggles the unique data console type (Old 3DS ↔ New 3DS) to be able to download the opposite system firmware type from system settings.</p></body></html> - <html><head/><body><p>Forces all async operations to run on the main thread, making them deterministic. Do not enable if you don't know what you are doing.</p></body></html> + Toggle unique data console type - Enable RPC server + Force deterministic async operations + <html><head/><body><p>Forces all async operations to run on the main thread, making them deterministic. Do not enable if you don't know what you are doing.</p></body></html> + + + + + Enable RPC server + + + + <html><head/><body><p>Enables the RPC server on port 45987. This allows remotely reading/writing guest memory, do not enable if you don't know what you are doing.</p></body></html> @@ -1012,176 +1022,186 @@ Would you like to ignore the error and continue? + Use Integer Scaling + + + + + <html><head/><body><p>Use Integer Scaling</p><p>Enforces that the larger screen in all layouts is an integer scale of the 240px height of the original 3DS screen.</p></body></html> + + + + Enable Linear Filtering - + Post-Processing Shader - + Texture Filter - + None - + Anime4K - + Bicubic - + ScaleForce - + xBRZ - + MMPX - + Stereoscopy - + Stereoscopic 3D Mode - + Off - + Side by Side Nằm kề nhau - + Side by Side Full Width - + Anaglyph - + Interlaced - + Reverse Interlaced - + Depth - + % - + Note: Depth values over 100% are not possible on real hardware and may cause graphical issues - + Eye to Render in Monoscopic Mode - + Left Eye (default) - + Right Eye - + Disable Right Eye Rendering - + <html><head/><body><p>Disable Right Eye Rendering</p><p>Disables rendering the right eye image when not using stereoscopic mode. Greatly improves performance in some applications, but can cause flickering in others.</p></body></html> - + Swap Eyes - + Utility - + <html><head/><body><p>Replace textures with PNG files.</p><p>Textures are loaded from load/textures/[Title ID]/.</p></body></html> - + Use custom textures - + <html><head/><body><p>Dump textures to PNG files.</p><p>Textures are dumped to dump/textures/[Title ID]/.</p></body></html> - + Dump textures - + <html><head/><body><p>Load all custom textures into memory on boot, instead of loading them when the application requires them.</p></body></html> - + Preload custom textures - + <html><head/><body><p>Load custom textures asynchronously with background threads to reduce loading stutter</p></body></html> - + Async custom texture loading @@ -1487,8 +1507,8 @@ Would you like to ignore the error and continue? - VSync prevents the screen from tearing, but some graphics cards have lower performance with VSync enabled. Keep it enabled if you don't notice a performance difference. - VSync giúp giảm thiểu hiện tượng tải chia cắt hình ảnh hiển thị trên màn hình, một số các phần cứng độ họa sẽ chạy hiệu suất thấp khi bật VSync. Bật VSync nếu bạn không thấy ảnh hưởng gì. + <html><head/><body><p>VSync prevents the screen from tearing, but some graphics cards have lower performance with VSync enabled. Keep it enabled if you don't notice a performance difference.</p></body></html> + @@ -1496,22 +1516,32 @@ Would you like to ignore the error and continue? Bật VSync - + + <html><head/><body><p>When enabled, this setting detects when the refresh rate of the screen is below that of the 3DS, and when it is, disables VSync automatically to avoid emulation speed being forced below 100%.</p></body></html> + + + + + Enable display refresh rate detection + + + + Use global - + Use per-application - + Delay Application Render Thread - + <html><head/><body><p>Delays the emulated application render thread the specified amount of milliseconds every time it submits render commands to the GPU.</p><p>Adjust this feature in the (very few) dynamic framerate applications to fix performance issues.</p></body></html> @@ -1990,170 +2020,243 @@ Would you like to ignore the error and continue? - + Custom Layout - - Swap screens - - - - + Rotate screens upright - + + Swap screens + + + + + Customize layout cycling + + + + Screen Gap - + Large Screen Proportion - + Small Screen Position - + Upper Right - + Middle Right - + Bottom Right (default) - + Upper Left - + Middle Left - + Bottom Left - + Above large screen - + Below large screen - + Background Color - - + + Top Screen - - + + X Position - - - - - - - - - + + + + + + + + - - + + + px - - + + Y Position - - + + Width - - + + Height - - + + Bottom Screen - + <html><head/><body><p>Bottom Screen Opacity %</p></body></html> - + Single Screen Layout - - + + Stretch - - + + Left/Right Padding - - + + Top/Bottom Padding - + Note: These settings affect the Single Screen and Separate Windows layouts + + ConfigureLayoutCycle + + + Configure Layout Cycling + + + + + Screen Layout Cycling Customization + + + + + Select which screen layout options should be cycled with the "Toggle Screen Layout" hotkey + + + + + Use Global Value + + + + + Default + Mặc định + + + + Single Screen + Đơn màn hình + + + + Large Screen + Màn hình lớn + + + + Side by Side + Nằm kề nhau + + + + Separate Windows + + + + + Hybrid + + + + + Custom + Tự chọn + + + + No Layout Selected + + + + + Please select at least one layout option to cycle through. + + + ConfigureMotionTouch - + Configure Motion / Touch Cấu hình Chuyển động / Chạm @@ -2181,8 +2284,10 @@ Would you like to ignore the error and continue? - - + + + + Configure Cấu hình @@ -2212,58 +2317,68 @@ Would you like to ignore the error and continue? - + + Map touchpads on controllers like the DualSense directly to touch + + + + + Use controller touchpad + + + + CemuhookUDP Config Thiết lập Cemuhook UDP - + You may use any Cemuhook compatible UDP input source to provide motion and touch input. Bạn có thể dùng bất cứ bản Cemuhook nào tương thích với đầu vào UDP để cung cấp đầu vào chuyển động và cảm ứng. - + Server: Máy chủ: - + Port: Cổng: - + Pad: Tay cầm: - + Pad 1 Tay cầm 1 - + Pad 2 Tay cầm 2 - + Pad 3 Tay cầm 3 - + Pad 4 Tay cầm 4 - + Learn More Tìm hiểu thêm - - + + Test Kiểm tra @@ -2294,57 +2409,68 @@ Would you like to ignore the error and continue? - + + Information Thông tin - + After pressing OK, press a button on the controller whose motion you want to track. Sau khi nhấn OK, hãy nhấn một nút trên tay cầm mà bạn muốn theo dõi chuyển động của nó. - + [press button] - + + After pressing OK, tap the touchpad on the controller you want to track. + + + + + [press touchpad] + + + + Testing Đang kiểm tra - + Configuring Thiết lập - + Test Successful Kiểm tra thành công - + Successfully received data from the server. Đã nhận dữ liệu từ máy chủ thành công. - + Test Failed Kiểm thử 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 dữ liệu nào từ máy chủ.<br>Vui lòng kiểm tra máy chủ đã được thiết đặt đúng, kiểm tra địa chỉ và cổng kết nối là chính xác. - + Azahar - + UDP Test or calibration configuration is in progress.<br>Please wait for them to finish. Kiểm tra UDP hoặc quá trình đang hiệu chuẩn.<br>Vui lòng đợi quá trình này hoàn tất. @@ -2514,7 +2640,7 @@ Would you like to ignore the error and continue? - Compresses the content of CIA files when installed to the emulated SD card. Only affects CIA content which is installed while the setting is enabled. + <html><head/><body><p>Compresses the content of CIA files when installed to the emulated SD card. Only affects CIA content which is installed while the setting is enabled.</p></body></html> @@ -4094,596 +4220,611 @@ Please check your FFmpeg installation used for compilation. GMainWindow - + + Warning + Cảnh báo + + + + The `azahar` executable is being run directly rather than via the Azahar.app bundle. + +When run this way, the app may be missing certain functionality such as camera emulation. + +It is recommended to instead run Azahar using the `open` command, e.g.: +`open ./Azahar.app` + + + + No Suitable Vulkan Devices Detected - + Vulkan initialization failed during boot.<br/>Your GPU may not support Vulkan 1.1, or you do not have the latest graphics driver. - + Current Artic traffic speed. Higher values indicate bigger transfer loads. - - + + Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a 3DS. Tốc độ giả lập hiện tại. Giá trị cao hoặc thấp hơn 100% thể hiện giả lập đang chạy nhanh hay chậm hơn một chiếc máy 3DS thực sự. - - + + How many frames per second the app is currently displaying. This will vary from app to app and scene to scene. - - + + Time taken to emulate a 3DS frame, not counting framelimiting or v-sync. For full-speed emulation this should be at most 16.67 ms. Thời gian để giả lập một khung hình của máy 3DS, không gồm giới hạn khung hay v-sync Một giả lập tốt nhất sẽ tiệm cận 16.67 ms. - + MicroProfile (unavailable) - + Clear Recent Files Xóa danh sách tệp gần đây - + &Continue - + &Pause - + Azahar is running an application TRANSLATORS: This string is shown to the user to explain why Citra needs to prevent the computer from sleeping - - + + Invalid App Format - - + + Your app format is not supported.<br/>Please follow the guides to redump your <a href='https://web.archive.org/web/20240304210021/https://citra-emu.org/wiki/dumping-game-cartridges/'>game cartridges</a> or <a href='https://web.archive.org/web/20240304210011/https://citra-emu.org/wiki/dumping-installed-titles/'>installed titles</a>. - + App Corrupted - + Your app is corrupted. <br/>Please follow the guides to redump your <a href='https://web.archive.org/web/20240304210021/https://citra-emu.org/wiki/dumping-game-cartridges/'>game cartridges</a> or <a href='https://web.archive.org/web/20240304210011/https://citra-emu.org/wiki/dumping-installed-titles/'>installed titles</a>. - + App Encrypted - + Your app is encrypted. <br/><a href='https://azahar-emu.org/blog/game-loading-changes/'>Please check our blog for more info.</a> - + Unsupported App - + GBA Virtual Console is not supported by Azahar. - - + + Artic Server - + Invalid system mode - + New 3DS exclusive applications cannot be loaded without enabling the New 3DS mode. - + Error while loading App! - + An unknown error occurred. Please see the log for more details. - + CIA must be installed before usage CIA cần được cài đặt trước khi dùng - + Before using this CIA, you must install it. Do you want to install it now? Trước khi sử dụng CIA, bạn cần cài đặt nó. Bạn có muốn cài đặt nó ngay không? - + Quick Load - + Quick Save - - + + Slot %1 - + %2 %3 - + Quick Save - %1 - + Quick Load - %1 - + Slot %1 - %2 %3 - + Error Opening %1 Folder Lỗi khi mở thư mục %1 - - + + Folder does not exist! Thư mục này không tồn tại! - + Remove Play Time Data - + Reset play time? - - - - + + + + Create Shortcut - + Do you want to launch the application in fullscreen? - + Successfully created a shortcut to %1 - + This will create a shortcut to the current AppImage. This may not work well if you update. Continue? - + Failed to create a shortcut to %1 - + Create Icon - + Cannot create icon file. Path "%1" does not exist and cannot be created. - + Dumping... Đang trích xuất... - - + + Cancel Hủy bỏ - - - - - - - - - + + + + + + + + + Azahar - + Could not dump base RomFS. Refer to the log for details. Không thể trích xuất base RomFS. Kiểm tra log để biết thêm chi tiết. - + Error Opening %1 Lỗi khi mở %1 - + Select Directory Chọn thư mục - + Properties - + The application properties could not be loaded. - + 3DS Executable (%1);;All Files (*.*) %1 is an identifier for the 3DS executable file extensions. - + Load File Mở tệp tin - - + + Set Up System Files - + <p>Azahar needs console unique data and firmware files from a real console to be able to use some of its features.<br>Such files and data can be set up with the <a href=https://github.com/azahar-emu/ArticSetupTool>Azahar Artic Setup Tool</a><br>Notes:<ul><li><b>This operation will install console unique data to Azahar, do not share your user or nand folders<br>after performing the setup process!</b></li><li>While doing the setup process, Azahar will link to the console running the setup tool. You can unlink the<br>console later from the System tab in the emulator configuration menu.</li><li>Do not go online with both Azahar and your 3DS console at the same time after setting up system files,<br>as it could cause issues.</li><li>Old 3DS setup is needed for the New 3DS setup to work (doing both setup modes is recommended).</li><li>Both setup modes will work regardless of the model of the console running the setup tool.</li></ul><hr></p> - + Enter Azahar Artic Setup Tool address: - + <br>Choose setup mode: - + (ℹ️) Old 3DS setup - - + + Setup is possible. - + (⚠) New 3DS setup - + Old 3DS setup is required first. - + (✅) Old 3DS setup - - + + Setup completed. - + (ℹ️) New 3DS setup - + (✅) New 3DS setup - + The system files for the selected mode are already set up. Reinstall the files anyway? - + Load Files Mở các tệp tin - + 3DS Installation File (*.cia *.zcia) - - - + + + All Files (*.*) Tất cả tệp tin (*.*) - + Connect to Artic Base - + Enter Artic Base server address: - + %1 has been installed successfully. %1 đã được cài đặt thành công. - + Unable to open File Không thể mở tệp tin - + Could not open %1 Không thể mở %1 - + Installation aborted Việc cài đặt đã bị hoãn - + The installation of %1 was aborted. Please see the log for more details Việc cài đặt %1 đã bị hoãn. Vui lòng xem bản ghi nhật ký để biết thêm chi tiết. - + Invalid File Tệp tin không hợp lệ - + %1 is not a valid CIA %1 không phải là một tệp CIA hợp lệ - + CIA Encrypted - + Your CIA file is encrypted.<br/><a href='https://azahar-emu.org/blog/game-loading-changes/'>Please check our blog for more info.</a> - + Unable to find File - + Could not find %1 - - - - + + + + Z3DS Compression - + Failed to compress some files, check log for details. - + Failed to decompress some files, check log for details. - + All files have been compressed successfully. - + All files have been decompressed successfully. - + Uninstalling '%1'... - + Failed to uninstall '%1'. - + Successfully uninstalled '%1'. - + File not found Không tìm thấy tệp - + File "%1" not found Không tìm thấy tệp tin "%1" - + Savestates - + Warning: Savestates are NOT a replacement for in-application saves, and are not meant to be reliable. Use at your own risk! - - - + + + Error opening amiibo data file - + A tag is already in use. - + Application is not looking for amiibos. - + Amiibo File (%1);; All Files (*.*) Tệp Amiibo (%1);; Tất cả tệp (*.*) - + Load Amiibo Tải Amiibo - + Unable to open amiibo file "%1" for reading. - + Record Movie Quay phim - + Movie recording cancelled. Ghi hình đã bị hủy. - - + + Movie Saved Đã lưu phim. - - + + The movie is successfully saved. Phim đã được lưu lại thành công. - + Application will unpause - + The application will be unpaused, and the next frame will be captured. Is this okay? - + Invalid Screenshot Directory - + Cannot create specified screenshot directory. Screenshot path is set back to its default value. - + Could not load video dumper - + FFmpeg could not be loaded. Make sure you have a compatible version installed. To install FFmpeg to Azahar, press Open and select your FFmpeg directory. @@ -4692,264 +4833,264 @@ To view a guide on how to install FFmpeg, press Help. - + Load 3DS ROM Files - + 3DS ROM Files (*.cia *.cci *.3dsx *.cxi *.3ds) - + 3DS Compressed ROM File (*.%1) - + Save 3DS Compressed ROM File - + Select Output 3DS Compressed ROM Folder - + Load 3DS Compressed ROM Files - + 3DS Compressed ROM Files (*.zcia *zcci *z3dsx *zcxi) - + 3DS ROM File (*.%1) - + Save 3DS ROM File - + Select Output 3DS ROM Folder - + Select FFmpeg Directory - + The provided FFmpeg directory is missing %1. Please make sure the correct directory was selected. - + FFmpeg has been sucessfully installed. - + Installation of FFmpeg failed. Check the log file for details. - + Could not start video dumping.<br>Please ensure that the video encoder is configured correctly.<br>Refer to the log for details. - + Recording %1 - + Playing %1 / %2 - + Movie Finished - + (Accessing SharedExtData) - + (Accessing SystemSaveData) - + (Accessing BossExtData) - + (Accessing ExtData) - + (Accessing SaveData) - + MB/s - + KB/s - + Artic Traffic: %1 %2%3 - + Speed: %1% Tốc độ: %1% - + Speed: %1% / %2% Tốc độ: %1% / %2% - + App: %1 FPS - + Frame: %1 ms (GPU: [CMD: %2 ms, SWP: %3 ms], IPC: %4 ms, SVC: %5 ms, Rem: %6 ms) - + Frame: %1 ms Khung: %1 ms - + VOLUME: MUTE - + VOLUME: %1% Volume percentage (e.g. 50%) - + %1 is missing. Please <a href='https://web.archive.org/web/20240304201103/https://citra-emu.org/wiki/dumping-system-archives-and-the-shared-fonts-from-a-3ds-console/'>dump your system archives</a>.<br/>Continuing emulation may result in crashes and bugs. - + A system archive Một tập tin hệ thống - + System Archive Not Found Không tìm thấy tập tin hệ thống - + System Archive Missing Thiếu tập tin hệ thống - + Save/load Error - + Fatal Error Lỗi nghiêm trọng - + A fatal error occurred. <a href='https://web.archive.org/web/20240228001712/https://community.citra-emu.org/t/how-to-upload-the-log-file/296'>Check the log</a> for details.<br/>Continuing emulation may result in crashes and bugs. - + Fatal Error encountered - + Continue Tiếp tục - + Quit Application - + OK OK - + Would you like to exit now? Bạn có muốn thoát ngay bây giờ không? - + The application is still running. Would you like to stop emulation? - + Playback Completed Phát lại hoàn tất - + Movie playback completed. Phát lại phim hoàn tất. - + Update Available - + Update %1 for Azahar is available. Would you like to download it? - + Primary Window - + Secondary Window @@ -5012,42 +5153,42 @@ Would you like to download it? GRenderWindow - + OpenGL not available! - + OpenGL shared contexts are not supported. - + Error while initializing OpenGL! - + Your GPU may not support OpenGL, or you do not have the latest graphics driver. - + Error while initializing OpenGL 4.3! - + Your GPU may not support OpenGL 4.3, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1 - + Error while initializing OpenGL ES 3.2! - + Your GPU may not support OpenGL ES 3.2, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1 @@ -5055,244 +5196,249 @@ Would you like to download it? GameList - - + + Compatibility Tính tương thích - - + + Region Khu vực - - + + File type Loại tệp tin - - + + Size Kích thước - - + + Play time - + Favorite - + Eject Cartridge - + Insert Cartridge - + Open - + Application Location - + Save Data Location - + Extra Data Location - + Update Data Location - + DLC Data Location - + Texture Dump Location - + Custom Texture Location - + Mods Location - + Dump RomFS Trích xuất RomFS - + Disk Shader Cache - + Open Shader Cache Location - + Delete OpenGL Shader Cache - + + Delete Vulkan Shader Cache + + + + Uninstall - + Everything - + Application - + Update - + DLC - + Remove Play Time Data - + Create Shortcut - + Add to Desktop - + Add to Applications Menu - + Stress Test: App Launch - + Properties - - - - + + + + Azahar - + Are you sure you want to completely uninstall '%1'? This will delete the application if installed, as well as any installed updates or DLC. - - + + %1 (Update) - - + + %1 (DLC) - + Are you sure you want to uninstall '%1'? - + Are you sure you want to uninstall the update for '%1'? - + Are you sure you want to uninstall all DLC for '%1'? - + Scan Subfolders Quét thư mục con - + Remove Application Directory - + Move Up - + Move Down - + Open Directory Location Mở thư mục - + Clear - + Name Tên @@ -5378,7 +5524,7 @@ Screen. GameListPlaceholder - + Double-click to add a new folder to the application list @@ -5386,27 +5532,27 @@ Screen. GameListSearchField - + of của - + result kết quả - + results kết quả - + Filter: Bộ lọc: - + Enter pattern to filter Nhập mẫu ký tự để lọc @@ -6038,23 +6184,23 @@ Debug Message: - - Loading Shaders %1 / %2 + + Loading %3 %1 / %2 - + Launching... - + Now Loading %1 - + Estimated Time %1 @@ -7027,17 +7173,17 @@ They may have left the room. Mở tệp tin - + Error Lỗi - + Couldn't load the camera Không thể tải máy ảnh - + Couldn't load %1 Không thể mở %1 diff --git a/dist/languages/zh_CN.ts b/dist/languages/zh_CN.ts index 4464e4089..897a76a20 100644 --- a/dist/languages/zh_CN.ts +++ b/dist/languages/zh_CN.ts @@ -328,8 +328,8 @@ This would ban both their forum username and their IP address. - This post-processing effect adjusts audio speed to match emulation speed and helps prevent audio stutter. This however increases audio latency. - 这种后处理效果可以调整音频速度以匹配模拟速度,并有助于防止音频断断续续。 但是会增加音频延迟。 + <html><head/><body><p>This post-processing effect adjusts audio speed to match emulation speed and helps prevent audio stutter. This however increases audio latency.</p></body></html> + @@ -338,8 +338,8 @@ This would ban both their forum username and their IP address. - Scales audio playback speed to account for drops in emulation framerate. This means that audio will play at full speed even while the application framerate is low. May cause audio desync issues. - 调整音频播放速度以适应模拟帧率的下降。这意味着即使应用帧率较低,音频也会全速播放。可能会导致音频不同步问题。 + <html><head/><body><p>Scales audio playback speed to account for drops in emulation framerate. This means that audio will play at full speed even while the application framerate is low. May cause audio desync issues.</p></body></html> + @@ -478,8 +478,8 @@ This would ban both their forum username and their IP address. - Select where the image of the emulated camera comes from. It may be an image or a real camera. - 选择虚拟摄像头图像的来源。这可以是一张图片或一个真实的摄像头。 + <html><head/><body><p>Select where the image of the emulated camera comes from. It may be an image or a real camera.</p></body></html> + @@ -807,21 +807,31 @@ Would you like to ignore the error and continue? + <html><head/><body><p>Toggles the unique data console type (Old 3DS ↔ New 3DS) to be able to download the opposite system firmware type from system settings.</p></body></html> + + + + + Toggle unique data console type + + + + Force deterministic async operations 强制确定性异步操作 - + <html><head/><body><p>Forces all async operations to run on the main thread, making them deterministic. Do not enable if you don't know what you are doing.</p></body></html> <html><head/><body><p>强制所有异步操作在主线程上运行,使其具有确定性。如果您不知道自己要做什么,请不要启用。</p></body></html> - + Enable RPC server 启用 RPC 服务器 - + <html><head/><body><p>Enables the RPC server on port 45987. This allows remotely reading/writing guest memory, do not enable if you don't know what you are doing.</p></body></html> <html><head/><body><p>在端口 45987 上启用 RPC 服务器。这允许远程读/写客户机内存,如果您不知道自己在做什么,请不要启用。</p></body></html> @@ -1019,176 +1029,186 @@ Would you like to ignore the error and continue? + Use Integer Scaling + + + + + <html><head/><body><p>Use Integer Scaling</p><p>Enforces that the larger screen in all layouts is an integer scale of the 240px height of the original 3DS screen.</p></body></html> + + + + Enable Linear Filtering - + Post-Processing Shader 后期处理着色器 - + Texture Filter 纹理滤镜 - + None - + Anime4K Anime4K - + Bicubic 双三线过滤 - + ScaleForce 强制缩放 - + xBRZ xBRZ - + MMPX MMPX - + Stereoscopy 画面立体 - + Stereoscopic 3D Mode 立体 3D 模式 - + Off 关闭 - + Side by Side 并排屏幕 - + Side by Side Full Width - + Anaglyph 立体图形 - + Interlaced 交错 - + Reverse Interlaced 逆向交错 - + Depth 画面深度 - + % % - + Note: Depth values over 100% are not possible on real hardware and may cause graphical issues 注意:实机硬件上不可能出现超过 100% 的深度值,并且可能会导致图形问题 - + Eye to Render in Monoscopic Mode 单眼成像模式的渲染视野 - + Left Eye (default) 左视野(默认) - + Right Eye 右视野 - + Disable Right Eye Rendering - + <html><head/><body><p>Disable Right Eye Rendering</p><p>Disables rendering the right eye image when not using stereoscopic mode. Greatly improves performance in some applications, but can cause flickering in others.</p></body></html> <html><head/><body><p>禁用右眼渲染</p><p>不使用立体模式时禁用右眼图像渲染。在某些应用中可大大提高性能,但在其他应用中可能会导致闪烁。</p></body></html> - + Swap Eyes - + Utility 工具 - + <html><head/><body><p>Replace textures with PNG files.</p><p>Textures are loaded from load/textures/[Title ID]/.</p></body></html> <html><head/><body><p>使用 PNG 文件进行纹理的替换。</p><p>将加载 load/textures/[Title ID]/ 目录的纹理文件。</p></body></html> - + Use custom textures 使用自定义纹理 - + <html><head/><body><p>Dump textures to PNG files.</p><p>Textures are dumped to dump/textures/[Title ID]/.</p></body></html> <html><head/><body><p>将纹理转储为 PNG 文件。</p><p>转储的文件保存于 dump/textures/[Title ID]/ 目录下。</p></body></html> - + Dump textures 转储纹理 - + <html><head/><body><p>Load all custom textures into memory on boot, instead of loading them when the application requires them.</p></body></html> <html><head/><body><p>启动时将所有的自定义纹理加载到内存中,而不是在应用需要时才进行加载。</p></body></html> - + Preload custom textures 预加载自定义纹理 - + <html><head/><body><p>Load custom textures asynchronously with background threads to reduce loading stutter</p></body></html> <html><head/><body><p>在后台线程中异步加载自定义纹理,以减少加载带来的卡顿</p></body></html> - + Async custom texture loading 异步加载自定义纹理 @@ -1494,8 +1514,8 @@ Would you like to ignore the error and continue? - VSync prevents the screen from tearing, but some graphics cards have lower performance with VSync enabled. Keep it enabled if you don't notice a performance difference. - 垂直同步可防止画面产生撕裂感。但启用垂直同步后,某些设备性能可能会有所降低。如果您没有感到性能差异,请保持启用状态。 + <html><head/><body><p>VSync prevents the screen from tearing, but some graphics cards have lower performance with VSync enabled. Keep it enabled if you don't notice a performance difference.</p></body></html> + @@ -1503,22 +1523,32 @@ Would you like to ignore the error and continue? 启用垂直同步 - + + <html><head/><body><p>When enabled, this setting detects when the refresh rate of the screen is below that of the 3DS, and when it is, disables VSync automatically to avoid emulation speed being forced below 100%.</p></body></html> + + + + + Enable display refresh rate detection + + + + Use global 使用全局 - + Use per-application 用于每个应用程序 - + Delay Application Render Thread 延迟应用渲染线程 - + <html><head/><body><p>Delays the emulated application render thread the specified amount of milliseconds every time it submits render commands to the GPU.</p><p>Adjust this feature in the (very few) dynamic framerate applications to fix performance issues.</p></body></html> <html><head/><body><p>每次向 GPU 提交渲染命令时,将模拟的应用渲染线程延迟指定的毫秒数。</p><p>在(极少数)动态帧率应用中调整此功能以解决性能问题。</p></body></html> @@ -1997,170 +2027,243 @@ Would you like to ignore the error and continue? - + Custom Layout 自定义布局 - - Swap screens - 交换屏幕 - - - + Rotate screens upright 旋转屏幕为垂直 - + + Swap screens + 交换屏幕 + + + + Customize layout cycling + + + + Screen Gap 屏幕间隔 - + Large Screen Proportion 大屏幕比例 - + Small Screen Position 小屏幕位置 - + Upper Right 右上 - + Middle Right 右中 - + Bottom Right (default) 右下(默认) - + Upper Left 左上 - + Middle Left 左中 - + Bottom Left 左下 - + Above large screen 大屏幕上方 - + Below large screen 大屏幕下方 - + Background Color 背景颜色 - - + + Top Screen 上屏幕 - - + + X Position X 位置 - - - - - - - - - + + + + + + + + - - + + + px px - - + + Y Position Y 位置 - - + + Width 宽度 - - + + Height 高度 - - + + Bottom Screen 下屏幕 - + <html><head/><body><p>Bottom Screen Opacity %</p></body></html> <html><head/><body><p>下屏不透明度 %</p></body></html> - + Single Screen Layout 单屏幕布局 - - + + Stretch 伸展 - - + + Left/Right Padding 左右填充 - - + + Top/Bottom Padding 上下填充 - + Note: These settings affect the Single Screen and Separate Windows layouts 注意:这些设置会影响单屏和单独窗口布局 + + ConfigureLayoutCycle + + + Configure Layout Cycling + + + + + Screen Layout Cycling Customization + + + + + Select which screen layout options should be cycled with the "Toggle Screen Layout" hotkey + + + + + Use Global Value + + + + + Default + 默认 + + + + Single Screen + 单屏 + + + + Large Screen + 大屏 + + + + Side by Side + 并排屏幕 + + + + Separate Windows + 分离窗口 + + + + Hybrid + + + + + Custom + 自定义 + + + + No Layout Selected + + + + + Please select at least one layout option to cycle through. + + + ConfigureMotionTouch - + Configure Motion / Touch 体感 / 触摸设置 @@ -2188,8 +2291,10 @@ Would you like to ignore the error and continue? - - + + + + Configure 设置 @@ -2219,58 +2324,68 @@ Would you like to ignore the error and continue? 按键映射: - + + Map touchpads on controllers like the DualSense directly to touch + + + + + Use controller touchpad + + + + CemuhookUDP Config CemuhookUDP 设置 - + You may use any Cemuhook compatible UDP input source to provide motion and touch input. 您可以使用任何与 Cemuhook 兼容的 UDP 输入源来提供体感和触摸输入。 - + Server: 服务器: - + Port: 端口: - + Pad: Pad: - + Pad 1 Pad 1 - + Pad 2 Pad 2 - + Pad 3 Pad 3 - + Pad 4 Pad 4 - + Learn More 了解更多 - - + + Test 测试 @@ -2301,57 +2416,68 @@ Would you like to ignore the error and continue? <a href='https://web.archive.org/web/20240301211230/https://citra-emu.org/wiki/using-a-controller-or-android-phone-for-motion-or-touch-input'><span style="text-decoration: underline; color:#039be5;">了解更多</span></a> - + + Information 信息 - + After pressing OK, press a button on the controller whose motion you want to track. 按下确定后,在您想要使用体感的控制器上按下一个键。 - + [press button] [请按一个键] - + + After pressing OK, tap the touchpad on the controller you want to track. + + + + + [press touchpad] + + + + 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>请验证服务器是否正在运行,以及地址和端口是否配置正确。 - + Azahar Azahar - + UDP Test or calibration configuration is in progress.<br>Please wait for them to finish. UDP 测试或触摸校准正在进行中。<br>请等待它们完成。 @@ -2521,8 +2647,8 @@ Would you like to ignore the error and continue? - Compresses the content of CIA files when installed to the emulated SD card. Only affects CIA content which is installed while the setting is enabled. - 安装到模拟 SD 卡时,压缩 CIA 文件的内容。仅影响启用此设置时安装的 CIA 内容。 + <html><head/><body><p>Compresses the content of CIA files when installed to the emulated SD card. Only affects CIA content which is installed while the setting is enabled.</p></body></html> + @@ -4104,511 +4230,526 @@ Please check your FFmpeg installation used for compilation. GMainWindow - + + Warning + 警告 + + + + The `azahar` executable is being run directly rather than via the Azahar.app bundle. + +When run this way, the app may be missing certain functionality such as camera emulation. + +It is recommended to instead run Azahar using the `open` command, e.g.: +`open ./Azahar.app` + + + + No Suitable Vulkan Devices Detected 未检测到可用的 Vulkan 设备 - + Vulkan initialization failed during boot.<br/>Your GPU may not support Vulkan 1.1, or you do not have the latest graphics driver. Vulkan 初始化失败。<br/>您的 GPU 可能不支持 Vulkan 1.1,或者您没有安装最新的图形驱动程序。 - + Current Artic traffic speed. Higher values indicate bigger transfer loads. 当前 Artic 连接速度。数值越高,表示传递载荷越大。 - - + + Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a 3DS. 当前模拟速度。高于或低于 100% 的值表示模拟正在运行得比实际 3DS 更快或更慢。 - - + + How many frames per second the app is currently displaying. This will vary from app to app and scene to scene. 应用当前显示的每秒帧数。这会因应用和场景而异。 - - + + Time taken to emulate a 3DS frame, not counting framelimiting or v-sync. For full-speed emulation this should be at most 16.67 ms. 在不计算速度限制和垂直同步的情况下,模拟一个 3DS 帧的实际时间。若要进行全速模拟,这个数值不应超过 16.67 毫秒。 - + MicroProfile (unavailable) 微档案文件(不可用) - + Clear Recent Files 清除最近文件 - + &Continue 继续(&C) - + &Pause 暂停(&P) - + Azahar is running an application TRANSLATORS: This string is shown to the user to explain why Citra needs to prevent the computer from sleeping Azahar 正在运行应用 - - + + Invalid App Format 无效的应用格式 - - + + Your app format is not supported.<br/>Please follow the guides to redump your <a href='https://web.archive.org/web/20240304210021/https://citra-emu.org/wiki/dumping-game-cartridges/'>game cartridges</a> or <a href='https://web.archive.org/web/20240304210011/https://citra-emu.org/wiki/dumping-installed-titles/'>installed titles</a>. 您的应用格式不受支持。<br/>请遵循以下指引重新转储您的<a href='https://web.archive.org/web/20240304210021/https://citra-emu.org/wiki/dumping-game-cartridges/'>游戏卡带</a>或<a href='https://web.archive.org/web/20240304210011/https://citra-emu.org/wiki/dumping-installed-titles/'>已安装的应用</a>。 - + App Corrupted 应用已损坏 - + Your app is corrupted. <br/>Please follow the guides to redump your <a href='https://web.archive.org/web/20240304210021/https://citra-emu.org/wiki/dumping-game-cartridges/'>game cartridges</a> or <a href='https://web.archive.org/web/20240304210011/https://citra-emu.org/wiki/dumping-installed-titles/'>installed titles</a>. 您的应用已损坏。<br/>请遵循以下指引重新转储您的<a href='https://web.archive.org/web/20240304210021/https://citra-emu.org/wiki/dumping-game-cartridges/'>游戏卡带</a>或<a href='https://web.archive.org/web/20240304210011/https://citra-emu.org/wiki/dumping-installed-titles/'>已安装的应用</a>。 - + App Encrypted 应用已加密 - + Your app is encrypted. <br/><a href='https://azahar-emu.org/blog/game-loading-changes/'>Please check our blog for more info.</a> 您的应用已加密。 <br/><a href='https://azahar-emu.org/blog/game-loading-changes/'>请查看我们的博客以了解更多信息。</a> - + Unsupported App 不支持的应用 - + GBA Virtual Console is not supported by Azahar. GBA 虚拟主机不受 Azahar 支持。 - - + + Artic Server Artic 服务器 - + Invalid system mode - + New 3DS exclusive applications cannot be loaded without enabling the New 3DS mode. - + Error while loading App! 加载应用时出错! - + An unknown error occurred. Please see the log for more details. 发生了一个未知错误。详情请参阅日志。 - + CIA must be installed before usage CIA 文件必须安装后才能使用 - + Before using this CIA, you must install it. Do you want to install it now? 在使用这个 CIA 文件前,您必须先进行安装。您希望现在就安装它吗? - + Quick Load 快速载入 - + Quick Save 快速保存 - - + + Slot %1 插槽 %1 - + %2 %3 %2 %3 - + Quick Save - %1 快速保存 - %1 - + Quick Load - %1 快速载入 - %1 - + Slot %1 - %2 %3 插槽 %1 - %2 %3 - + Error Opening %1 Folder 无法打开 %1 文件夹 - - + + Folder does not exist! 文件夹不存在! - + Remove Play Time Data 删除游戏时间数据 - + Reset play time? 重置游戏时间? - - - - + + + + Create Shortcut 创建快捷方式 - + Do you want to launch the application in fullscreen? 您想以全屏幕运行应用吗? - + Successfully created a shortcut to %1 已经在 %1 上创建了快捷方式。 - + This will create a shortcut to the current AppImage. This may not work well if you update. Continue? 这将会为当前的 AppImage 创建一个快捷方式。如果您更新,此快捷方式可能会无效。继续吗? - + Failed to create a shortcut to %1 在 %1 上创建快捷方式失败。 - + Create Icon 创建图标 - + Cannot create icon file. Path "%1" does not exist and cannot be created. 无法创建图标文件。路径“%1”不存在,且无法创建。 - + Dumping... 转储中... - - + + Cancel 取消 - - - - - - - - - + + + + + + + + + Azahar Azahar - + Could not dump base RomFS. Refer to the log for details. 无法转储 RomFS 。 有关详细信息,请参考日志文件。 - + Error Opening %1 无法打开 %1 - + Select Directory 选择目录 - + Properties 属性 - + The application properties could not be loaded. 无法加载应用属性。 - + 3DS Executable (%1);;All Files (*.*) %1 is an identifier for the 3DS executable file extensions. 3DS 可执行文件 (%1);;所有文件 (*.*) - + Load File 加载文件 - - + + Set Up System Files 设置系统文件 - + <p>Azahar needs console unique data and firmware files from a real console to be able to use some of its features.<br>Such files and data can be set up with the <a href=https://github.com/azahar-emu/ArticSetupTool>Azahar Artic Setup Tool</a><br>Notes:<ul><li><b>This operation will install console unique data to Azahar, do not share your user or nand folders<br>after performing the setup process!</b></li><li>While doing the setup process, Azahar will link to the console running the setup tool. You can unlink the<br>console later from the System tab in the emulator configuration menu.</li><li>Do not go online with both Azahar and your 3DS console at the same time after setting up system files,<br>as it could cause issues.</li><li>Old 3DS setup is needed for the New 3DS setup to work (doing both setup modes is recommended).</li><li>Both setup modes will work regardless of the model of the console running the setup tool.</li></ul><hr></p> <p>Azahar 需要来自真实掌机的独有数据和固件文件才能使用其部分功能。<br>此类文件和数据可通过 <a href=https://github.com/azahar-emu/ArticSetupTool>Azahar Artic 设置工具</a>进行设置<br>注意:<ul><li><b>此操作会将掌机独有数据安装到 Azahar,<br>执行设置过程后请勿共享您的用户或 nand 文件夹!</b></li><li>在执行设置过程时,Azahar 将关联到运行设置工具的掌机。<br>您可以随时从模拟器配置菜单的“系统”选项卡中取消关联掌机。</li><li>设置系统文件后,请勿同时使用 Azahar 和 3DS 掌机联网,<br>因为这可能会导致问题。</li><li>新 3DS 设置需要先进行老 3DS 设置才能运作(建议两种设置模式都执行)。</li><li>无论运行设置工具的掌机型号如何,两种设置模式均可运作。</li></ul><hr></p> - + Enter Azahar Artic Setup Tool address: 输入 Azahar Artic 设置工具地址: - + <br>Choose setup mode: <br>选择设置模式: - + (ℹ️) Old 3DS setup (ℹ️) 老 3DS 设置 - - + + Setup is possible. 可以进行设置。 - + (⚠) New 3DS setup (⚠) 新 3DS 设置 - + Old 3DS setup is required first. 首先需要设置老 3DS。 - + (✅) Old 3DS setup (✅) 老 3DS 设置 - - + + Setup completed. 设置完成。 - + (ℹ️) New 3DS setup (ℹ️) 新 3DS 设置 - + (✅) New 3DS setup (✅) 新 3DS 设置 - + The system files for the selected mode are already set up. Reinstall the files anyway? 所选模式的系统文件已设置。 是否要重新安装文件? - + Load Files 加载多个文件 - + 3DS Installation File (*.cia *.zcia) 3DS 安装文件 (*.cia *.zcia) - - - + + + All Files (*.*) 所有文件 (*.*) - + Connect to Artic Base 连接到 Artic Base - + Enter Artic Base server address: 输入 Artic Base 服务器地址: - + %1 has been installed successfully. %1 已成功安装。 - + Unable to open File 无法打开文件 - + Could not open %1 无法打开 %1 - + Installation aborted 安装失败 - + The installation of %1 was aborted. Please see the log for more details %1 的安装过程失败。请参阅日志以了解细节。 - + Invalid File 文件无效 - + %1 is not a valid CIA %1 不是有效的 CIA 文件 - + CIA Encrypted CIA 已加密 - + Your CIA file is encrypted.<br/><a href='https://azahar-emu.org/blog/game-loading-changes/'>Please check our blog for more info.</a> 您的 CIA 文件已加密。 <br/><a href='https://azahar-emu.org/blog/game-loading-changes/'>请查看我们的博客以了解更多信息。</a> - + Unable to find File 无法找到文件 - + Could not find %1 找不到 %1 - - - - + + + + Z3DS Compression Z3DS 压缩 - + Failed to compress some files, check log for details. 部分文件压缩失败,请查看日志了解详情。 - + Failed to decompress some files, check log for details. 部分文件解压缩失败,请查看日志了解详情。 - + All files have been compressed successfully. 所有文件已成功压缩。 - + All files have been decompressed successfully. 所有文件已成功解压缩。 - + Uninstalling '%1'... 正在卸载“%1”... - + Failed to uninstall '%1'. 卸载“%1”失败。 - + Successfully uninstalled '%1'. “%1”卸载成功。 - + File not found 找不到文件 - + File "%1" not found 找不到文件“%1” - + Savestates 保存状态 - + Warning: Savestates are NOT a replacement for in-application saves, and are not meant to be reliable. Use at your own risk! @@ -4617,86 +4758,86 @@ Use at your own risk! 您必须自行承担使用风险! - - - + + + Error opening amiibo data file 打开 Amiibo 数据文件时出错 - + A tag is already in use. 当前已有 Amiibo 标签在使用中。 - + Application is not looking for amiibos. 应用未在寻找 Amiibo。 - + Amiibo File (%1);; All Files (*.*) Amiibo 文件 (%1);;所有文件 (*.*) - + Load Amiibo 加载 Amiibo - + Unable to open amiibo file "%1" for reading. 无法打开 Amiibo 文件 %1 。 - + Record Movie 录制影像 - + Movie recording cancelled. 影像录制已取消。 - - + + Movie Saved 影像已保存 - - + + The movie is successfully saved. 影像已成功保存。 - + Application will unpause 应用将取消暂停 - + The application will be unpaused, and the next frame will be captured. Is this okay? 将取消暂停应用,并捕获下一帧。这样可以吗? - + Invalid Screenshot Directory 无效的截图保存目录 - + Cannot create specified screenshot directory. Screenshot path is set back to its default value. 无法创建指定的截图保存目录。截图保存路径将重设为默认值。 - + Could not load video dumper 无法加载视频转储器 - + FFmpeg could not be loaded. Make sure you have a compatible version installed. To install FFmpeg to Azahar, press Open and select your FFmpeg directory. @@ -4709,265 +4850,265 @@ To view a guide on how to install FFmpeg, press Help. 要查看如何安装 FFmpeg 的指南,请按“帮助”。 - + Load 3DS ROM Files 加载 3DS ROM 文件 - + 3DS ROM Files (*.cia *.cci *.3dsx *.cxi *.3ds) - + 3DS Compressed ROM File (*.%1) 3DS 压缩 ROM 文件 (*.%1) - + Save 3DS Compressed ROM File 保存 3DS 压缩 ROM 文件 - + Select Output 3DS Compressed ROM Folder 选择输出 3DS 压缩 ROM 的文件夹 - + Load 3DS Compressed ROM Files 加载 3DS 压缩 ROM 文件 - + 3DS Compressed ROM Files (*.zcia *zcci *z3dsx *zcxi) 3DS 压缩 ROM 文件 (*.zcia *zcci *z3dsx *zcxi) - + 3DS ROM File (*.%1) 3DS ROM 文件 (*.%1) - + Save 3DS ROM File 保存 3DS ROM 文件 - + Select Output 3DS ROM Folder 选择输出 3DS ROM 的文件夹 - + Select FFmpeg Directory 选择 FFmpeg 目录 - + The provided FFmpeg directory is missing %1. Please make sure the correct directory was selected. 选择的 FFmpeg 目录中缺少 %1 。请确保选择了正确的目录。 - + FFmpeg has been sucessfully installed. FFmpeg 已成功安装。 - + Installation of FFmpeg failed. Check the log file for details. 安装 FFmpeg 失败。详情请参阅日志文件。 - + Could not start video dumping.<br>Please ensure that the video encoder is configured correctly.<br>Refer to the log for details. 无法开始视频转储。<br>请确保视频编码器配置正确。<br>有关详细信息,请参阅日志。 - + Recording %1 录制中 %1 - + Playing %1 / %2 播放中 %1 / %2 - + Movie Finished 录像播放完毕 - + (Accessing SharedExtData) (正在获取 SharedExtData) - + (Accessing SystemSaveData) (正在获取 SystemSaveData) - + (Accessing BossExtData) (正在获取 BossExtData) - + (Accessing ExtData) (正在获取 ExtData) - + (Accessing SaveData) 正在获取(SaveData) - + MB/s MB/s - + KB/s KB/s - + Artic Traffic: %1 %2%3 Artic 流量:%1 %2%3 - + Speed: %1% 速度:%1% - + Speed: %1% / %2% 速度:%1% / %2% - + App: %1 FPS 应用: %1 帧 - + Frame: %1 ms (GPU: [CMD: %2 ms, SWP: %3 ms], IPC: %4 ms, SVC: %5 ms, Rem: %6 ms) 帧: %1 毫秒 (GPU: [CMD: %2 毫秒, SWP: %3 毫秒], IPC: %4 毫秒, SVC: %5 毫秒, Rem: %6 毫秒) - + Frame: %1 ms 帧延迟:%1 毫秒 - + VOLUME: MUTE 音量:静音 - + VOLUME: %1% Volume percentage (e.g. 50%) 音量:%1% - + %1 is missing. Please <a href='https://web.archive.org/web/20240304201103/https://citra-emu.org/wiki/dumping-system-archives-and-the-shared-fonts-from-a-3ds-console/'>dump your system archives</a>.<br/>Continuing emulation may result in crashes and bugs. %1 缺失。请 <a href='https://web.archive.org/web/20240304201103/https://citra-emu.org/wiki/dumping-system-archives-and-the-shared-fonts-from-a-3ds-console/'>转储您的系统档案</a>。<br/>继续进行模拟可能会导致崩溃和错误。 - + A system archive 系统档案 - + System Archive Not Found 未找到系统档案 - + System Archive Missing 系统档案丢失 - + Save/load Error 保存/读取出现错误 - + Fatal Error 致命错误 - + A fatal error occurred. <a href='https://web.archive.org/web/20240228001712/https://community.citra-emu.org/t/how-to-upload-the-log-file/296'>Check the log</a> for details.<br/>Continuing emulation may result in crashes and bugs. 发生了致命错误。请<a href='https://web.archive.org/web/20240228001712/https://community.citra-emu.org/t/how-to-upload-the-log-file/296'>参阅日志</a>了解详细信息。<br/>继续进行模拟可能会导致崩溃和错误。 - + Fatal Error encountered 发生致命错误 - + Continue 继续 - + Quit Application 退出应用 - + OK 确定 - + Would you like to exit now? 您现在要退出么? - + The application is still running. Would you like to stop emulation? 应用仍在运行。您想停止模拟吗? - + Playback Completed 播放完成 - + Movie playback completed. 影像播放完成。 - + Update Available 有可用更新 - + Update %1 for Azahar is available. Would you like to download it? Azahar 的更新 %1 已发布。 您要下载吗? - + Primary Window 主窗口 - + Secondary Window 次级窗口 @@ -5030,42 +5171,42 @@ Would you like to download it? GRenderWindow - + OpenGL not available! OpenGL 不可用! - + OpenGL shared contexts are not supported. 不支持 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.3! 初始化 OpenGL 4.3 时出错! - + Your GPU may not support OpenGL 4.3, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1 您的 GPU 可能不支持 OpenGL 4.3,或没有安装最新的显卡驱动程序。<br><br>GL 渲染器:<br>%1 - + Error while initializing OpenGL ES 3.2! 初始化 OpenGL ES 3.2 时出错! - + Your GPU may not support OpenGL ES 3.2, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1 您的 GPU 可能不支持 OpenGL ES 3.2,或没有安装最新的 GPU 驱动程序。<br><br>GL 渲染器:<br>%1 @@ -5073,180 +5214,185 @@ Would you like to download it? GameList - - + + Compatibility 兼容性 - - + + Region 地区 - - + + File type 文件类型 - - + + Size 大小 - - + + Play time 游戏时间 - + Favorite 收藏 - + Eject Cartridge - + Insert Cartridge - + Open 打开 - + Application Location 应用路径 - + Save Data Location 存档数据路径 - + Extra Data Location 额外数据路径 - + Update Data Location 更新数据路径 - + DLC Data Location DLC 数据路径 - + Texture Dump Location 纹理转储路径 - + Custom Texture Location 自定义纹理路径 - + Mods Location Mods 路径 - + Dump RomFS 转储 RomFS - + Disk Shader Cache 磁盘着色器缓存 - + Open Shader Cache Location 打开着色器缓存位置 - + Delete OpenGL Shader Cache 删除 OpenGL 着色器缓存 - + + Delete Vulkan Shader Cache + + + + Uninstall 卸载 - + Everything 所有内容 - + Application 应用 - + Update 更新补丁 - + DLC DLC - + Remove Play Time Data 删除游玩时间 - + Create Shortcut 创建快捷方式 - + Add to Desktop 添加到桌面 - + Add to Applications Menu 添加到应用菜单 - + Stress Test: App Launch 压力测试:应用启动 - + Properties 属性 - - - - + + + + Azahar Azahar - + Are you sure you want to completely uninstall '%1'? This will delete the application if installed, as well as any installed updates or DLC. @@ -5255,64 +5401,64 @@ This will delete the application if installed, as well as any installed updates 这将删除应用、已安装的更新补丁或 DLC。 - - + + %1 (Update) %1(更新补丁) - - + + %1 (DLC) %1(DLC) - + Are you sure you want to uninstall '%1'? 您确定要卸载“%1”吗? - + Are you sure you want to uninstall the update for '%1'? 您确定要卸载“%1”的更新补丁吗? - + Are you sure you want to uninstall all DLC for '%1'? 您确定要卸载“%1”的所有 DLC 吗? - + Scan Subfolders 扫描子文件夹 - + Remove Application Directory 移除应用目录 - + Move Up 向上移动 - + Move Down 向下移动 - + Open Directory Location 打开目录位置 - + Clear 清除 - + Name 名称 @@ -5403,7 +5549,7 @@ Screen. GameListPlaceholder - + Double-click to add a new folder to the application list 双击将新文件夹添加到应用列表 @@ -5411,27 +5557,27 @@ Screen. GameListSearchField - + of / - + result 结果 - + results 结果 - + Filter: 搜索: - + Enter pattern to filter 搜索游戏 @@ -6064,24 +6210,24 @@ Debug Message: 正在准备着色器... %1 / %2 - - Loading Shaders %1 / %2 - 正在加载着色器... %1 / %2 + + Loading %3 %1 / %2 + - + Launching... 载入中... - + Now Loading %1 正在加载 %1 - + Estimated Time %1 所需时间:%1 @@ -7057,17 +7203,17 @@ They may have left the room. 打开文件 - + Error 错误 - + Couldn't load the camera 摄像头加载失败 - + Couldn't load %1 %1 加载失败 diff --git a/dist/languages/zh_TW.ts b/dist/languages/zh_TW.ts index fa4f44cad..c98038426 100644 --- a/dist/languages/zh_TW.ts +++ b/dist/languages/zh_TW.ts @@ -322,8 +322,8 @@ This would ban both their forum username and their IP address. - This post-processing effect adjusts audio speed to match emulation speed and helps prevent audio stutter. This however increases audio latency. - 讓音訊速度與遊戲的模擬速度透過後處理效果同步,這有助於防止音訊斷斷續續,但是也增加了音訊延遲。 + <html><head/><body><p>This post-processing effect adjusts audio speed to match emulation speed and helps prevent audio stutter. This however increases audio latency.</p></body></html> + @@ -332,7 +332,7 @@ This would ban both their forum username and their IP address. - Scales audio playback speed to account for drops in emulation framerate. This means that audio will play at full speed even while the application framerate is low. May cause audio desync issues. + <html><head/><body><p>Scales audio playback speed to account for drops in emulation framerate. This means that audio will play at full speed even while the application framerate is low. May cause audio desync issues.</p></body></html> @@ -472,8 +472,8 @@ This would ban both their forum username and their IP address. - Select where the image of the emulated camera comes from. It may be an image or a real camera. - 選擇相機畫面的來源,可以使用圖片或電腦相機。 + <html><head/><body><p>Select where the image of the emulated camera comes from. It may be an image or a real camera.</p></body></html> + @@ -801,21 +801,31 @@ Would you like to ignore the error and continue? - Force deterministic async operations + <html><head/><body><p>Toggles the unique data console type (Old 3DS ↔ New 3DS) to be able to download the opposite system firmware type from system settings.</p></body></html> - <html><head/><body><p>Forces all async operations to run on the main thread, making them deterministic. Do not enable if you don't know what you are doing.</p></body></html> + Toggle unique data console type - Enable RPC server + Force deterministic async operations + <html><head/><body><p>Forces all async operations to run on the main thread, making them deterministic. Do not enable if you don't know what you are doing.</p></body></html> + + + + + Enable RPC server + + + + <html><head/><body><p>Enables the RPC server on port 45987. This allows remotely reading/writing guest memory, do not enable if you don't know what you are doing.</p></body></html> @@ -1013,176 +1023,186 @@ Would you like to ignore the error and continue? + Use Integer Scaling + + + + + <html><head/><body><p>Use Integer Scaling</p><p>Enforces that the larger screen in all layouts is an integer scale of the 240px height of the original 3DS screen.</p></body></html> + + + + Enable Linear Filtering - + Post-Processing Shader 後期處理著色器 - + Texture Filter 紋理濾鏡 - + None - + Anime4K Anime4K - + Bicubic 雙三線過濾 - + ScaleForce 強制縮放 - + xBRZ xBRZ - + MMPX - + Stereoscopy 畫面立體 - + Stereoscopic 3D Mode 立體 3D 模式 - + Off 關閉 - + Side by Side 並排屏幕 - + Side by Side Full Width - + Anaglyph 立體圖形 - + Interlaced 交錯 - + Reverse Interlaced 逆向交錯 - + Depth 畫面深度 - + % % - + Note: Depth values over 100% are not possible on real hardware and may cause graphical issues - + Eye to Render in Monoscopic Mode 單眼成像模式的渲染視野 - + Left Eye (default) 左視野 (默認) - + Right Eye 右視野 - + Disable Right Eye Rendering - + <html><head/><body><p>Disable Right Eye Rendering</p><p>Disables rendering the right eye image when not using stereoscopic mode. Greatly improves performance in some applications, but can cause flickering in others.</p></body></html> - + Swap Eyes - + Utility 工具 - + <html><head/><body><p>Replace textures with PNG files.</p><p>Textures are loaded from load/textures/[Title ID]/.</p></body></html> <html><head/><body><p>使用 PNG 文件進行紋理的替換。 </p><p>將於 load/textures/[Title ID]/ 目錄下加載紋理文件。 </p></body></html> - + Use custom textures - + <html><head/><body><p>Dump textures to PNG files.</p><p>Textures are dumped to dump/textures/[Title ID]/.</p></body></html> <html><head/><body><p>使用 PNG 文件進行紋理的替換。 </p><p>將於 load/textures/[Title ID]/ 目錄下加載紋理文件。 </p></body></html> - + Dump textures - + <html><head/><body><p>Load all custom textures into memory on boot, instead of loading them when the application requires them.</p></body></html> - + Preload custom textures - + <html><head/><body><p>Load custom textures asynchronously with background threads to reduce loading stutter</p></body></html> <html><head/><body><p>在後台線程中異步加載自定義紋理,以減少加載帶來的卡頓</p></body></html> - + Async custom texture loading @@ -1488,8 +1508,8 @@ Would you like to ignore the error and continue? - VSync prevents the screen from tearing, but some graphics cards have lower performance with VSync enabled. Keep it enabled if you don't notice a performance difference. - 垂直同步可防止畫面產生撕裂感。但啟用垂直同步後,某些設備性能可能會有所降低。如果您沒有感到性能差異,請保持啟用狀態。 + <html><head/><body><p>VSync prevents the screen from tearing, but some graphics cards have lower performance with VSync enabled. Keep it enabled if you don't notice a performance difference.</p></body></html> + @@ -1497,22 +1517,32 @@ Would you like to ignore the error and continue? - + + <html><head/><body><p>When enabled, this setting detects when the refresh rate of the screen is below that of the 3DS, and when it is, disables VSync automatically to avoid emulation speed being forced below 100%.</p></body></html> + + + + + Enable display refresh rate detection + + + + Use global - + Use per-application - + Delay Application Render Thread - + <html><head/><body><p>Delays the emulated application render thread the specified amount of milliseconds every time it submits render commands to the GPU.</p><p>Adjust this feature in the (very few) dynamic framerate applications to fix performance issues.</p></body></html> @@ -1991,170 +2021,243 @@ Would you like to ignore the error and continue? - + Custom Layout - - Swap screens - - - - + Rotate screens upright - + + Swap screens + + + + + Customize layout cycling + + + + Screen Gap - + Large Screen Proportion - + Small Screen Position - + Upper Right - + Middle Right - + Bottom Right (default) - + Upper Left - + Middle Left - + Bottom Left - + Above large screen - + Below large screen - + Background Color - - + + Top Screen - - + + X Position - - - - - - - - - + + + + + + + + - - + + + px - - + + Y Position - - + + Width - - + + Height - - + + Bottom Screen - + <html><head/><body><p>Bottom Screen Opacity %</p></body></html> - + Single Screen Layout - - + + Stretch - - + + Left/Right Padding - - + + Top/Bottom Padding - + Note: These settings affect the Single Screen and Separate Windows layouts + + ConfigureLayoutCycle + + + Configure Layout Cycling + + + + + Screen Layout Cycling Customization + + + + + Select which screen layout options should be cycled with the "Toggle Screen Layout" hotkey + + + + + Use Global Value + + + + + Default + 預設 + + + + Single Screen + 單一畫面 + + + + Large Screen + 大畫面 + + + + Side by Side + + + + + Separate Windows + + + + + Hybrid + + + + + Custom + 自訂 + + + + No Layout Selected + + + + + Please select at least one layout option to cycle through. + + + ConfigureMotionTouch - + Configure Motion / Touch 體感和觸控設定 @@ -2182,8 +2285,10 @@ Would you like to ignore the error and continue? - - + + + + Configure 設定 @@ -2213,58 +2318,68 @@ Would you like to ignore the error and continue? - + + Map touchpads on controllers like the DualSense directly to touch + + + + + Use controller touchpad + + + + CemuhookUDP Config CemuhookUDP 設定 - + You may use any Cemuhook compatible UDP input source to provide motion and touch input. 您可以使用任何 Cemuhook 相容的 UDP 輸入來源以提供體感和觸控輸入。 - + Server: 伺服器: - + Port: 連接埠: - + Pad: 手把: - + Pad 1 手把 1 - + Pad 2 手把 2 - + Pad 3 手把 3 - + Pad 4 手把 4 - + Learn More 了解更多 - - + + Test 測試 @@ -2295,57 +2410,68 @@ Would you like to ignore the error and continue? - + + Information 說明 - + After pressing OK, press a button on the controller whose motion you want to track. - + [press button] - + + After pressing OK, tap the touchpad on the controller you want to track. + + + + + [press touchpad] + + + + 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>請檢查伺服器,並確認地址和連接埠輸入正確。 - + Azahar - + UDP Test or calibration configuration is in progress.<br>Please wait for them to finish. 正在進行 UDP 測試或校正。<br>請等候其完成。 @@ -2515,7 +2641,7 @@ Would you like to ignore the error and continue? - Compresses the content of CIA files when installed to the emulated SD card. Only affects CIA content which is installed while the setting is enabled. + <html><head/><body><p>Compresses the content of CIA files when installed to the emulated SD card. Only affects CIA content which is installed while the setting is enabled.</p></body></html> @@ -4095,597 +4221,612 @@ Please check your FFmpeg installation used for compilation. GMainWindow - + + Warning + 警告 + + + + The `azahar` executable is being run directly rather than via the Azahar.app bundle. + +When run this way, the app may be missing certain functionality such as camera emulation. + +It is recommended to instead run Azahar using the `open` command, e.g.: +`open ./Azahar.app` + + + + No Suitable Vulkan Devices Detected - + Vulkan initialization failed during boot.<br/>Your GPU may not support Vulkan 1.1, or you do not have the latest graphics driver. - + Current Artic traffic speed. Higher values indicate bigger transfer loads. - - + + Current emulation speed. Values higher or lower than 100% indicate emulation is running faster or slower than a 3DS. 目前模擬速度, 「高於/低於」100% 代表模擬速度比 3DS 實機「更快/更慢」。 - - + + How many frames per second the app is currently displaying. This will vary from app to app and scene to scene. - - + + Time taken to emulate a 3DS frame, not counting framelimiting or v-sync. For full-speed emulation this should be at most 16.67 ms. 不計算影格限制或垂直同步時, 模擬一個 3DS 影格所花的時間。全速模擬時,這個數值最多應為 16.67 毫秒。 - + MicroProfile (unavailable) - + Clear Recent Files 清除檔案使用紀錄 - + &Continue - + &Pause - + Azahar is running an application TRANSLATORS: This string is shown to the user to explain why Citra needs to prevent the computer from sleeping - - + + Invalid App Format - - + + Your app format is not supported.<br/>Please follow the guides to redump your <a href='https://web.archive.org/web/20240304210021/https://citra-emu.org/wiki/dumping-game-cartridges/'>game cartridges</a> or <a href='https://web.archive.org/web/20240304210011/https://citra-emu.org/wiki/dumping-installed-titles/'>installed titles</a>. - + App Corrupted - + Your app is corrupted. <br/>Please follow the guides to redump your <a href='https://web.archive.org/web/20240304210021/https://citra-emu.org/wiki/dumping-game-cartridges/'>game cartridges</a> or <a href='https://web.archive.org/web/20240304210011/https://citra-emu.org/wiki/dumping-installed-titles/'>installed titles</a>. - + App Encrypted - + Your app is encrypted. <br/><a href='https://azahar-emu.org/blog/game-loading-changes/'>Please check our blog for more info.</a> - + Unsupported App - + GBA Virtual Console is not supported by Azahar. - - + + Artic Server - + Invalid system mode - + New 3DS exclusive applications cannot be loaded without enabling the New 3DS mode. - + Error while loading App! - + An unknown error occurred. Please see the log for more details. - + CIA must be installed before usage CIA 檔案必須先安裝 - + Before using this CIA, you must install it. Do you want to install it now? CIA 檔案必須先安裝才能夠執行。您現在要安裝這個檔案嗎? - + Quick Load - + Quick Save - - + + Slot %1 - + %2 %3 - + Quick Save - %1 - + Quick Load - %1 - + Slot %1 - %2 %3 - + Error Opening %1 Folder 開啟 %1 資料夾時錯誤 - - + + Folder does not exist! 資料夾不存在! - + Remove Play Time Data - + Reset play time? - - - - + + + + Create Shortcut - + Do you want to launch the application in fullscreen? - + Successfully created a shortcut to %1 - + This will create a shortcut to the current AppImage. This may not work well if you update. Continue? - + Failed to create a shortcut to %1 - + Create Icon - + Cannot create icon file. Path "%1" does not exist and cannot be created. - + Dumping... - - + + Cancel 取消 - - - - - - - - - + + + + + + + + + Azahar - + Could not dump base RomFS. Refer to the log for details. - + Error Opening %1 開啟 %1 時錯誤 - + Select Directory 選擇目錄 - + Properties - + The application properties could not be loaded. - + 3DS Executable (%1);;All Files (*.*) %1 is an identifier for the 3DS executable file extensions. 3DS 可執行檔案 (%1);;所有檔案 (*.*) - + Load File 讀取檔案 - - + + Set Up System Files - + <p>Azahar needs console unique data and firmware files from a real console to be able to use some of its features.<br>Such files and data can be set up with the <a href=https://github.com/azahar-emu/ArticSetupTool>Azahar Artic Setup Tool</a><br>Notes:<ul><li><b>This operation will install console unique data to Azahar, do not share your user or nand folders<br>after performing the setup process!</b></li><li>While doing the setup process, Azahar will link to the console running the setup tool. You can unlink the<br>console later from the System tab in the emulator configuration menu.</li><li>Do not go online with both Azahar and your 3DS console at the same time after setting up system files,<br>as it could cause issues.</li><li>Old 3DS setup is needed for the New 3DS setup to work (doing both setup modes is recommended).</li><li>Both setup modes will work regardless of the model of the console running the setup tool.</li></ul><hr></p> - + Enter Azahar Artic Setup Tool address: - + <br>Choose setup mode: - + (ℹ️) Old 3DS setup - - + + Setup is possible. - + (⚠) New 3DS setup - + Old 3DS setup is required first. - + (✅) Old 3DS setup - - + + Setup completed. - + (ℹ️) New 3DS setup - + (✅) New 3DS setup - + The system files for the selected mode are already set up. Reinstall the files anyway? - + Load Files 讀取多個檔案 - + 3DS Installation File (*.cia *.zcia) - - - + + + All Files (*.*) 所有檔案 (*.*) - + Connect to Artic Base - + Enter Artic Base server address: - + %1 has been installed successfully. 已成功安裝 %1。 - + Unable to open File 無法開啟檔案 - + Could not open %1 無法開啟 %1 - + Installation aborted 安裝中斷 - + The installation of %1 was aborted. Please see the log for more details 安裝 %1 時中斷,請參閱日誌了解細節。 - + Invalid File 無效的檔案 - + %1 is not a valid CIA %1 不是有效的 CIA 檔案 - + CIA Encrypted - + Your CIA file is encrypted.<br/><a href='https://azahar-emu.org/blog/game-loading-changes/'>Please check our blog for more info.</a> - + Unable to find File - + Could not find %1 - - - - + + + + Z3DS Compression - + Failed to compress some files, check log for details. - + Failed to decompress some files, check log for details. - + All files have been compressed successfully. - + All files have been decompressed successfully. - + Uninstalling '%1'... - + Failed to uninstall '%1'. - + Successfully uninstalled '%1'. - + File not found 找不到檔案 - + File "%1" not found 找不到「%1」 - + Savestates - + Warning: Savestates are NOT a replacement for in-application saves, and are not meant to be reliable. Use at your own risk! - - - + + + Error opening amiibo data file - + A tag is already in use. - + Application is not looking for amiibos. - + Amiibo File (%1);; All Files (*.*) Amiibo 檔案 (%1);;所有檔案 (*.*) - + Load Amiibo 讀取 Amiibo - + Unable to open amiibo file "%1" for reading. - + Record Movie 錄影 - + Movie recording cancelled. 錄影已取消。 - - + + Movie Saved 已儲存影片 - - + + The movie is successfully saved. 影片儲存成功。 - + Application will unpause - + The application will be unpaused, and the next frame will be captured. Is this okay? - + Invalid Screenshot Directory - + Cannot create specified screenshot directory. Screenshot path is set back to its default value. - + Could not load video dumper - + FFmpeg could not be loaded. Make sure you have a compatible version installed. To install FFmpeg to Azahar, press Open and select your FFmpeg directory. @@ -4694,264 +4835,264 @@ To view a guide on how to install FFmpeg, press Help. - + Load 3DS ROM Files - + 3DS ROM Files (*.cia *.cci *.3dsx *.cxi *.3ds) - + 3DS Compressed ROM File (*.%1) - + Save 3DS Compressed ROM File - + Select Output 3DS Compressed ROM Folder - + Load 3DS Compressed ROM Files - + 3DS Compressed ROM Files (*.zcia *zcci *z3dsx *zcxi) - + 3DS ROM File (*.%1) - + Save 3DS ROM File - + Select Output 3DS ROM Folder - + Select FFmpeg Directory - + The provided FFmpeg directory is missing %1. Please make sure the correct directory was selected. - + FFmpeg has been sucessfully installed. - + Installation of FFmpeg failed. Check the log file for details. - + Could not start video dumping.<br>Please ensure that the video encoder is configured correctly.<br>Refer to the log for details. - + Recording %1 - + Playing %1 / %2 - + Movie Finished - + (Accessing SharedExtData) - + (Accessing SystemSaveData) - + (Accessing BossExtData) - + (Accessing ExtData) - + (Accessing SaveData) - + MB/s - + KB/s - + Artic Traffic: %1 %2%3 - + Speed: %1% 速度:%1% - + Speed: %1% / %2% 速度:%1% / %2% - + App: %1 FPS - + Frame: %1 ms (GPU: [CMD: %2 ms, SWP: %3 ms], IPC: %4 ms, SVC: %5 ms, Rem: %6 ms) - + Frame: %1 ms 影格:%1 ms - + VOLUME: MUTE - + VOLUME: %1% Volume percentage (e.g. 50%) - + %1 is missing. Please <a href='https://web.archive.org/web/20240304201103/https://citra-emu.org/wiki/dumping-system-archives-and-the-shared-fonts-from-a-3ds-console/'>dump your system archives</a>.<br/>Continuing emulation may result in crashes and bugs. - + A system archive - + System Archive Not Found 找不到系統檔案 - + System Archive Missing - + Save/load Error - + Fatal Error 嚴重錯誤 - + A fatal error occurred. <a href='https://web.archive.org/web/20240228001712/https://community.citra-emu.org/t/how-to-upload-the-log-file/296'>Check the log</a> for details.<br/>Continuing emulation may result in crashes and bugs. - + Fatal Error encountered - + Continue 繼續 - + Quit Application - + OK 確定 - + Would you like to exit now? 您確定要離開嗎? - + The application is still running. Would you like to stop emulation? - + Playback Completed 播放完成 - + Movie playback completed. 影片已結束播放。 - + Update Available - + Update %1 for Azahar is available. Would you like to download it? - + Primary Window - + Secondary Window @@ -5014,42 +5155,42 @@ Would you like to download it? GRenderWindow - + OpenGL not available! - + OpenGL shared contexts are not supported. - + Error while initializing OpenGL! - + Your GPU may not support OpenGL, or you do not have the latest graphics driver. - + Error while initializing OpenGL 4.3! - + Your GPU may not support OpenGL 4.3, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1 - + Error while initializing OpenGL ES 3.2! - + Your GPU may not support OpenGL ES 3.2, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1 @@ -5057,244 +5198,249 @@ Would you like to download it? GameList - - + + Compatibility 相容性 - - + + Region 地區 - - + + File type 檔案類型 - - + + Size 大小 - - + + Play time - + Favorite - + Eject Cartridge - + Insert Cartridge - + Open - + Application Location - + Save Data Location - + Extra Data Location - + Update Data Location - + DLC Data Location - + Texture Dump Location - + Custom Texture Location - + Mods Location - + Dump RomFS - + Disk Shader Cache - + Open Shader Cache Location - + Delete OpenGL Shader Cache - + + Delete Vulkan Shader Cache + + + + Uninstall - + Everything - + Application - + Update - + DLC - + Remove Play Time Data - + Create Shortcut - + Add to Desktop - + Add to Applications Menu - + Stress Test: App Launch - + Properties - - - - + + + + Azahar - + Are you sure you want to completely uninstall '%1'? This will delete the application if installed, as well as any installed updates or DLC. - - + + %1 (Update) - - + + %1 (DLC) - + Are you sure you want to uninstall '%1'? - + Are you sure you want to uninstall the update for '%1'? - + Are you sure you want to uninstall all DLC for '%1'? - + Scan Subfolders 掃描子資料夾 - + Remove Application Directory - + Move Up - + Move Down - + Open Directory Location 開啟資料夾位置 - + Clear 清除 - + Name 名稱 @@ -5380,7 +5526,7 @@ Screen. GameListPlaceholder - + Double-click to add a new folder to the application list @@ -5388,27 +5534,27 @@ Screen. GameListSearchField - + of / - + result 項符合 - + results 項符合 - + Filter: 項目篩選 - + Enter pattern to filter 輸入項目關鍵字 @@ -6040,23 +6186,23 @@ Debug Message: - - Loading Shaders %1 / %2 + + Loading %3 %1 / %2 - + Launching... - + Now Loading %1 - + Estimated Time %1 @@ -7029,17 +7175,17 @@ They may have left the room. 開啟檔案 - + Error 錯誤 - + Couldn't load the camera 無法讀取相機 - + Couldn't load %1 無法讀取 %1 diff --git a/externals/CMakeLists.txt b/externals/CMakeLists.txt index 01e76a095..db8de43a7 100644 --- a/externals/CMakeLists.txt +++ b/externals/CMakeLists.txt @@ -50,15 +50,17 @@ else() endif() # Catch2 -add_library(catch2 INTERFACE) -if(USE_SYSTEM_CATCH2) - find_package(Catch2 3.0.0 REQUIRED) -else() - set(CATCH_INSTALL_DOCS OFF CACHE BOOL "") - set(CATCH_INSTALL_EXTRAS OFF CACHE BOOL "") - add_subdirectory(catch2) +if (ENABLE_TESTS) + add_library(catch2 INTERFACE) + if(USE_SYSTEM_CATCH2) + find_package(Catch2 3.0.0 REQUIRED) + else() + set(CATCH_INSTALL_DOCS OFF CACHE BOOL "") + set(CATCH_INSTALL_EXTRAS OFF CACHE BOOL "") + add_subdirectory(catch2) + endif() + target_link_libraries(catch2 INTERFACE Catch2::Catch2WithMain) endif() -target_link_libraries(catch2 INTERFACE Catch2::Catch2WithMain) # Crypto++ if(USE_SYSTEM_CRYPTOPP) @@ -292,6 +294,15 @@ if (USE_DISCORD_PRESENCE) target_include_directories(discord-rpc INTERFACE ./discord-rpc/include) endif() +# LibRetro +if (ENABLE_LIBRETRO) + add_library(libretro INTERFACE) + target_include_directories(libretro INTERFACE ./libretro-common/libretro-common/include) + if (ANDROID) + add_subdirectory(libretro-common EXCLUDE_FROM_ALL) + endif() +endif() + # JSON add_library(json-headers INTERFACE) if (USE_SYSTEM_JSON) diff --git a/externals/boost b/externals/boost index 2c82bd787..f9b15f673 160000 --- a/externals/boost +++ b/externals/boost @@ -1 +1 @@ -Subproject commit 2c82bd787302398bcae990e3c9ab2b451284f4ca +Subproject commit f9b15f673a688982f78a5f63a49a27275b318e5f diff --git a/externals/libretro-common/CMakeLists.txt b/externals/libretro-common/CMakeLists.txt new file mode 100644 index 000000000..0bb4e6b5e --- /dev/null +++ b/externals/libretro-common/CMakeLists.txt @@ -0,0 +1,16 @@ +add_library(libretro_common STATIC + libretro-common/compat/compat_posix_string.c + libretro-common/compat/fopen_utf8.c + libretro-common/encodings/encoding_utf.c + libretro-common/compat/compat_strl.c + libretro-common/file/file_path.c + libretro-common/streams/file_stream.c + libretro-common/streams/file_stream_transforms.c + libretro-common/string/stdstring.c + libretro-common/time/rtime.c + libretro-common/vfs/vfs_implementation.c +) +target_include_directories(libretro_common PUBLIC + ${CMAKE_CURRENT_SOURCE_DIR}/libretro-common + ${CMAKE_CURRENT_SOURCE_DIR}/libretro-common/include +) diff --git a/externals/libretro-common/libretro-common b/externals/libretro-common/libretro-common new file mode 160000 index 000000000..7fc7feedd --- /dev/null +++ b/externals/libretro-common/libretro-common @@ -0,0 +1 @@ +Subproject commit 7fc7feeddca391be65c94e6541381467684b814d diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 69d17bac2..f0da8bbe3 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,6 +1,8 @@ # Enable modules to include each other's files include_directories(.) +include(GenerateSettingKeys) + # CMake seems to only define _DEBUG on Windows set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS $<$:_DEBUG> $<$>:NDEBUG>) @@ -110,10 +112,14 @@ else() # In case a flag isn't supported on e.g. a certain architecture, don't error. -Wno-unused-command-line-argument # Build fortification options - -Wp,-D_GLIBCXX_ASSERTIONS -fstack-protector-strong - -fstack-clash-protection ) + if (NOT ENABLE_LIBRETRO) + add_compile_options( + -Wp,-D_GLIBCXX_ASSERTIONS + -fstack-clash-protection + ) + endif() # If we define _FORTIFY_SOURCE when it is already defined, compilation will fail string(FIND "-D_FORTIFY_SOURCE" "${CMAKE_CXX_FLAGS} " FORTIFY_SOURCE_DEFINED) @@ -189,18 +195,18 @@ if (ENABLE_TESTS) add_subdirectory(tests) endif() -if (ENABLE_SDL2_FRONTEND) - add_subdirectory(citra_sdl) -endif() - if (ENABLE_QT) add_subdirectory(citra_qt) endif() -if (ENABLE_QT OR ENABLE_SDL2_FRONTEND) +if (ENABLE_QT) # Or any other hypothetical future frontends add_subdirectory(citra_meta) endif() +if (ENABLE_LIBRETRO) + add_subdirectory(citra_libretro) +endif() + if (ENABLE_ROOM) add_subdirectory(citra_room) endif() @@ -209,7 +215,7 @@ if (ENABLE_ROOM_STANDALONE) add_subdirectory(citra_room_standalone) endif() -if (ANDROID) +if (ANDROID AND NOT ENABLE_LIBRETRO) add_subdirectory(android/app/src/main/jni) target_include_directories(citra-android PRIVATE android/app/src/main) endif() diff --git a/src/android/app/build.gradle.kts b/src/android/app/build.gradle.kts index 0973a34c7..5e2dc1960 100644 --- a/src/android/app/build.gradle.kts +++ b/src/android/app/build.gradle.kts @@ -63,7 +63,7 @@ android { defaultConfig { // The application ID refers to Lime3DS to allow for // the Play Store listing, which was originally set up for Lime3DS, to still be used. - applicationId = "io.github.lime3ds.android" + applicationId = "org.azahar_emu.azahar" minSdk = 29 targetSdk = 35 versionCode = autoVersion @@ -173,6 +173,7 @@ android { register("googlePlay") { dimension = "version" versionNameSuffix = "-googleplay" + applicationId = "io.github.lime3ds.android" } } diff --git a/src/android/app/src/main/java/org/citra/citra_emu/NativeLibrary.kt b/src/android/app/src/main/java/org/citra/citra_emu/NativeLibrary.kt index 20c3c0868..cf1659361 100644 --- a/src/android/app/src/main/java/org/citra/citra_emu/NativeLibrary.kt +++ b/src/android/app/src/main/java/org/citra/citra_emu/NativeLibrary.kt @@ -25,6 +25,7 @@ import androidx.fragment.app.DialogFragment import androidx.preference.PreferenceManager import com.google.android.material.dialog.MaterialAlertDialogBuilder import org.citra.citra_emu.activities.EmulationActivity +import org.citra.citra_emu.model.Game import org.citra.citra_emu.utils.BuildUtil import org.citra.citra_emu.utils.FileUtil import org.citra.citra_emu.utils.Log @@ -132,7 +133,27 @@ object NativeLibrary { * If not set, it auto-detects a location */ external fun setUserDirectory(directory: String) - external fun getInstalledGamePaths(): Array + + data class InstalledGame( + val path: String, + val mediaType: Game.MediaType + ) + fun getInstalledGamePaths(): Array { + val games = getInstalledGamePathsImpl() + + return games.mapNotNull { entry -> + entry?.let { + val sep = it.lastIndexOf('|') + if (sep == -1) return@mapNotNull null + + val path = it.substring(0, sep) + val mediaType = Game.MediaType.fromInt(it.substring(sep + 1).toInt()) + + InstalledGame(path, mediaType!!) + } + }.toTypedArray() + } + private external fun getInstalledGamePathsImpl(): Array // Create the config.ini file. external fun createConfigFile() @@ -230,6 +251,13 @@ object NativeLibrary { external fun playTimeManagerGetPlayTime(titleId: Long): Long external fun playTimeManagerGetCurrentTitleId(): Long + private external fun uninstallTitle(titleId: Long, mediaType: Int): Boolean + fun uninstallTitle(titleId: Long, mediaType: Game.MediaType): Boolean { + return uninstallTitle(titleId, mediaType.value) + } + + external fun nativeFileExists(path: String): Boolean + private var coreErrorAlertResult = false private val coreErrorAlertLock = Object() @@ -691,34 +719,43 @@ object NativeLibrary { @Keep @JvmStatic - fun getUserDirectory(uriOverride: Uri? = null): String { + fun getNativePath(uri: Uri): String { BuildUtil.assertNotGooglePlay() - val preferences: SharedPreferences = - PreferenceManager.getDefaultSharedPreferences(CitraApplication.appContext) - val dirSep = "/" - val udUri = uriOverride ?: - preferences.getString("CITRA_DIRECTORY", "")!!.toUri() - val udPathSegment = udUri.lastPathSegment!! - val udVirtualPath = udPathSegment.substringAfter(":") - if (udPathSegment.startsWith("primary:")) { // User directory is located in primary storage + val uriString = uri.toString() + if (!uriString.contains(":")) { // These raw URIs happen when generating the game list. Why? + return uriString + } + + val pathSegment = uri.lastPathSegment ?: return "" + val virtualPath = pathSegment.substringAfter(":") + + if (pathSegment.startsWith("primary:")) { // User directory is located in primary storage val primaryStoragePath = Environment.getExternalStorageDirectory().absolutePath - return primaryStoragePath + dirSep + udVirtualPath + dirSep + return primaryStoragePath + dirSep + virtualPath } else { // User directory probably located on a removable storage device - val storageIdString = udPathSegment.substringBefore(":") - val udRemovablePath = RemovableStorageHelper.getRemovableStoragePath(storageIdString) + val storageIdString = pathSegment.substringBefore(":") + val removablePath = RemovableStorageHelper.getRemovableStoragePath(CitraApplication.appContext, storageIdString) - if (udRemovablePath == null) { + if (removablePath == null) { android.util.Log.e("NativeLibrary", - "Unknown mount location for storage device '$storageIdString' (URI: $udUri)" + "Unknown mount location for storage device '$storageIdString' (URI: $uri)" ) return "" } - return udRemovablePath + dirSep + udVirtualPath + dirSep + return removablePath + dirSep + virtualPath } + } + @Keep + @JvmStatic + fun getUserDirectory(): String { + val preferences: SharedPreferences = + PreferenceManager.getDefaultSharedPreferences(CitraApplication.appContext) + val userDirectoryUri = preferences.getString("CITRA_DIRECTORY", "")!!.toUri() + return getNativePath(userDirectoryUri) } @Keep diff --git a/src/android/app/src/main/java/org/citra/citra_emu/activities/EmulationActivity.kt b/src/android/app/src/main/java/org/citra/citra_emu/activities/EmulationActivity.kt index ca92b308d..1e372720e 100644 --- a/src/android/app/src/main/java/org/citra/citra_emu/activities/EmulationActivity.kt +++ b/src/android/app/src/main/java/org/citra/citra_emu/activities/EmulationActivity.kt @@ -267,36 +267,28 @@ class EmulationActivity : AppCompatActivity() { return super.dispatchKeyEvent(event) } - val button = - preferences.getInt(InputBindingSetting.getInputButtonKey(event.keyCode), event.keyCode) - val action: Int = when (event.action) { + when (event.action) { KeyEvent.ACTION_DOWN -> { - hotkeyUtility.handleHotkey(button) - // On some devices, the back gesture / button press is not intercepted by androidx // and fails to open the emulation menu. So we're stuck running deprecated code to // cover for either a fault on androidx's side or in OEM skins (MIUI at least) + if (event.keyCode == KeyEvent.KEYCODE_BACK) { // If the hotkey is pressed, we don't want to open the drawer - if (!hotkeyUtility.HotkeyIsPressed) { + if (!hotkeyUtility.hotkeyIsPressed) { onBackPressed() + return true } } - - // Normal key events. - NativeLibrary.ButtonState.PRESSED + return hotkeyUtility.handleKeyPress(event) } - KeyEvent.ACTION_UP -> { - hotkeyUtility.HotkeyIsPressed = false - NativeLibrary.ButtonState.RELEASED + return hotkeyUtility.handleKeyRelease(event) + } + else -> { + return false; } - else -> return false } - val input = event.device - ?: // Controller was disconnected - return false - return NativeLibrary.onGamePadEvent(input.descriptor, button, action) } private fun onAmiiboSelected(selectedFile: String) { diff --git a/src/android/app/src/main/java/org/citra/citra_emu/adapters/GameAdapter.kt b/src/android/app/src/main/java/org/citra/citra_emu/adapters/GameAdapter.kt index dae538d73..d43ea5a60 100644 --- a/src/android/app/src/main/java/org/citra/citra_emu/adapters/GameAdapter.kt +++ b/src/android/app/src/main/java/org/citra/citra_emu/adapters/GameAdapter.kt @@ -54,8 +54,10 @@ import org.citra.citra_emu.databinding.DialogShortcutBinding import org.citra.citra_emu.features.cheats.ui.CheatsFragmentDirections import org.citra.citra_emu.fragments.IndeterminateProgressDialogFragment import org.citra.citra_emu.model.Game +import org.citra.citra_emu.utils.BuildUtil import org.citra.citra_emu.utils.FileUtil import org.citra.citra_emu.utils.GameIconUtils +import org.citra.citra_emu.utils.Log import org.citra.citra_emu.viewmodel.GamesViewModel class GameAdapter( @@ -136,7 +138,7 @@ class GameAdapter( val holder = view.tag as GameViewHolder gameExists(holder) - if (holder.game.titleId == 0L) { + if (!holder.game.valid) { MaterialAlertDialogBuilder(context) .setTitle(R.string.properties) .setMessage(R.string.properties_not_loaded) @@ -153,12 +155,21 @@ class GameAdapter( if (holder.game.isInstalled) { return true } - - val gameExists = DocumentFile.fromSingleUri( - CitraApplication.appContext, - Uri.parse(holder.game.path) - )?.exists() == true + val path = holder.game.path + val pathUri = path.toUri() + var gameExists: Boolean + if (BuildUtil.isGooglePlayBuild || FileUtil.isNativePath(path)) { + gameExists = + DocumentFile.fromSingleUri( + CitraApplication.appContext, + pathUri + )?.exists() == true + } else { + val nativePath = NativeLibrary.getNativePath(pathUri) + gameExists = NativeLibrary.nativeFileExists(nativePath) + } return if (!gameExists) { + Log.error("[GameAdapter] ROM file does not exist: $path") Toast.makeText( CitraApplication.appContext, R.string.loader_error_file_not_found, @@ -323,14 +334,16 @@ class GameAdapter( } } + val titleId = game.titleId + val dlcTitleId = titleId or 0x8C00000000L + val updateTitleId = titleId or 0xE00000000L + popup.setOnMenuItemClickListener { menuItem -> val uninstallAction: () -> Unit = { when (menuItem.itemId) { - R.id.game_context_uninstall -> CitraApplication.documentsTree.deleteDocument(dirs.gameDir) - R.id.game_context_uninstall_dlc -> FileUtil.deleteDocument(CitraApplication.documentsTree.folderUriHelper(dirs.dlcDir) - .toString()) - R.id.game_context_uninstall_updates -> FileUtil.deleteDocument(CitraApplication.documentsTree.folderUriHelper(dirs.updatesDir) - .toString()) + R.id.game_context_uninstall -> NativeLibrary.uninstallTitle(titleId, game.mediaType) + R.id.game_context_uninstall_dlc -> NativeLibrary.uninstallTitle(dlcTitleId, Game.MediaType.SDMC) + R.id.game_context_uninstall_updates -> NativeLibrary.uninstallTitle(updateTitleId, Game.MediaType.SDMC) } ViewModelProvider(activity)[GamesViewModel::class.java].reloadGames(true) bottomSheetDialog.dismiss() @@ -556,7 +569,9 @@ class GameAdapter( private class DiffCallback : DiffUtil.ItemCallback() { override fun areItemsTheSame(oldItem: Game, newItem: Game): Boolean { - return oldItem.titleId == newItem.titleId + // The title is taken into account to support 3DSX, which all have the titleID 0. + // This only works now because we always return the English title, adjust if that changes. + return oldItem.titleId == newItem.titleId && oldItem.title == newItem.title } override fun areContentsTheSame(oldItem: Game, newItem: Game): Boolean { diff --git a/src/android/app/src/main/java/org/citra/citra_emu/display/ScreenAdjustmentUtil.kt b/src/android/app/src/main/java/org/citra/citra_emu/display/ScreenAdjustmentUtil.kt index 105f49ab8..e63960fa8 100644 --- a/src/android/app/src/main/java/org/citra/citra_emu/display/ScreenAdjustmentUtil.kt +++ b/src/android/app/src/main/java/org/citra/citra_emu/display/ScreenAdjustmentUtil.kt @@ -12,6 +12,7 @@ import org.citra.citra_emu.NativeLibrary import org.citra.citra_emu.R import org.citra.citra_emu.features.settings.model.BooleanSetting import org.citra.citra_emu.features.settings.model.IntSetting +import org.citra.citra_emu.features.settings.model.IntListSetting import org.citra.citra_emu.features.settings.model.Settings import org.citra.citra_emu.features.settings.utils.SettingsFile import org.citra.citra_emu.utils.EmulationMenuSettings @@ -31,8 +32,16 @@ class ScreenAdjustmentUtil( BooleanSetting.SWAP_SCREEN.boolean = isEnabled settings.saveSetting(BooleanSetting.SWAP_SCREEN, SettingsFile.FILE_NAME_CONFIG) } + fun cycleLayouts() { - val landscapeValues = context.resources.getIntArray(R.array.landscapeValues) + + val landscapeLayoutsToCycle = IntListSetting.LAYOUTS_TO_CYCLE.list; + val landscapeValues = + if (landscapeLayoutsToCycle.isNotEmpty()) + landscapeLayoutsToCycle.toIntArray() + else context.resources.getIntArray( + R.array.landscapeValues + ) val portraitValues = context.resources.getIntArray(R.array.portraitValues) if (NativeLibrary.isPortraitMode) { diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/hotkeys/Hotkey.kt b/src/android/app/src/main/java/org/citra/citra_emu/features/hotkeys/Hotkey.kt index 4b22164bb..e2319a7e4 100644 --- a/src/android/app/src/main/java/org/citra/citra_emu/features/hotkeys/Hotkey.kt +++ b/src/android/app/src/main/java/org/citra/citra_emu/features/hotkeys/Hotkey.kt @@ -11,5 +11,6 @@ enum class Hotkey(val button: Int) { PAUSE_OR_RESUME(10004), QUICKSAVE(10005), QUICKLOAD(10006), - TURBO_LIMIT(10007); + TURBO_LIMIT(10007), + ENABLE(10008); } diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/hotkeys/HotkeyUtility.kt b/src/android/app/src/main/java/org/citra/citra_emu/features/hotkeys/HotkeyUtility.kt index 0a4a1ffa3..d01d5f769 100644 --- a/src/android/app/src/main/java/org/citra/citra_emu/features/hotkeys/HotkeyUtility.kt +++ b/src/android/app/src/main/java/org/citra/citra_emu/features/hotkeys/HotkeyUtility.kt @@ -5,50 +5,140 @@ package org.citra.citra_emu.features.hotkeys import android.content.Context +import android.view.KeyEvent import android.widget.Toast +import androidx.preference.PreferenceManager +import org.citra.citra_emu.CitraApplication import org.citra.citra_emu.NativeLibrary import org.citra.citra_emu.R import org.citra.citra_emu.utils.EmulationLifecycleUtil import org.citra.citra_emu.utils.TurboHelper import org.citra.citra_emu.display.ScreenAdjustmentUtil +import org.citra.citra_emu.features.settings.model.view.InputBindingSetting +import org.citra.citra_emu.features.settings.model.Settings class HotkeyUtility( private val screenAdjustmentUtil: ScreenAdjustmentUtil, - private val context: Context) { + private val context: Context +) { private val hotkeyButtons = Hotkey.entries.map { it.button } - var HotkeyIsPressed = false + private var hotkeyIsEnabled = false + var hotkeyIsPressed = false + private val currentlyPressedButtons = mutableSetOf() + + fun handleKeyPress(keyEvent: KeyEvent): Boolean { + var handled = false + val buttonSet = InputBindingSetting.getButtonSet(keyEvent) + val enableButton = + PreferenceManager.getDefaultSharedPreferences(CitraApplication.appContext) + .getString(Settings.HOTKEY_ENABLE, "") + val thisKeyIsEnableButton = buttonSet.contains(Hotkey.ENABLE.button) + val thisKeyIsHotkey = + !thisKeyIsEnableButton && Hotkey.entries.any { buttonSet.contains(it.button) } + hotkeyIsEnabled = hotkeyIsEnabled || enableButton == "" || thisKeyIsEnableButton + + // Now process all internal buttons associated with this keypress + for (button in buttonSet) { + currentlyPressedButtons.add(button) + //option 1 - this is the enable command, which was already handled + if (button == Hotkey.ENABLE.button) { + handled = true + } + // option 2 - this is a different hotkey command + else if (hotkeyButtons.contains(button)) { + if (hotkeyIsEnabled) { + handled = handleHotkey(button) || handled + } + } + // option 3 - this is a normal key + else { + // if this key press is ALSO associated with a hotkey that will process, skip + // the normal key event. + if (!thisKeyIsHotkey || !hotkeyIsEnabled) { + handled = NativeLibrary.onGamePadEvent( + keyEvent.device.descriptor, + button, + NativeLibrary.ButtonState.PRESSED + ) || handled + } + } + } + return handled + } + + fun handleKeyRelease(keyEvent: KeyEvent): Boolean { + var handled = false + val buttonSet = InputBindingSetting.getButtonSet(keyEvent) + val thisKeyIsEnableButton = buttonSet.contains(Hotkey.ENABLE.button) + val thisKeyIsHotkey = + !thisKeyIsEnableButton && Hotkey.entries.any { buttonSet.contains(it.button) } + if (thisKeyIsEnableButton) { + handled = true; hotkeyIsEnabled = false + } + + for (button in buttonSet) { + // this is a hotkey button + if (hotkeyButtons.contains(button)) { + currentlyPressedButtons.remove(button) + if (!currentlyPressedButtons.any { hotkeyButtons.contains(it) }) { + // all hotkeys are no longer pressed + hotkeyIsPressed = false + } + } else { + // if this key ALSO sends a hotkey command that we already/will handle, + // or if we did not register the press of this button, e.g. if this key + // was also a hotkey pressed after enable, but released after enable button release, then + // skip the normal key event + if ((!thisKeyIsHotkey || !hotkeyIsEnabled) && currentlyPressedButtons.contains( + button + ) + ) { + handled = NativeLibrary.onGamePadEvent( + keyEvent.device.descriptor, + button, + NativeLibrary.ButtonState.RELEASED + ) || handled + currentlyPressedButtons.remove(button) + } + } + } + return handled + } fun handleHotkey(bindedButton: Int): Boolean { - if(hotkeyButtons.contains(bindedButton)) { - when (bindedButton) { - Hotkey.SWAP_SCREEN.button -> screenAdjustmentUtil.swapScreen() - Hotkey.CYCLE_LAYOUT.button -> screenAdjustmentUtil.cycleLayouts() - Hotkey.CLOSE_GAME.button -> EmulationLifecycleUtil.closeGame() - Hotkey.PAUSE_OR_RESUME.button -> EmulationLifecycleUtil.pauseOrResume() - Hotkey.TURBO_LIMIT.button -> TurboHelper.toggleTurbo(true) - Hotkey.QUICKSAVE.button -> { - NativeLibrary.saveState(NativeLibrary.QUICKSAVE_SLOT) - Toast.makeText(context, - context.getString(R.string.saving), - Toast.LENGTH_SHORT).show() - } - Hotkey.QUICKLOAD.button -> { - val wasLoaded = NativeLibrary.loadStateIfAvailable(NativeLibrary.QUICKSAVE_SLOT) - val stringRes = if(wasLoaded) { - R.string.loading - } else { - R.string.quickload_not_found - } - Toast.makeText(context, - context.getString(stringRes), - Toast.LENGTH_SHORT).show() - } - else -> {} + when (bindedButton) { + Hotkey.SWAP_SCREEN.button -> screenAdjustmentUtil.swapScreen() + Hotkey.CYCLE_LAYOUT.button -> screenAdjustmentUtil.cycleLayouts() + Hotkey.CLOSE_GAME.button -> EmulationLifecycleUtil.closeGame() + Hotkey.PAUSE_OR_RESUME.button -> EmulationLifecycleUtil.pauseOrResume() + Hotkey.TURBO_LIMIT.button -> TurboHelper.toggleTurbo(true) + Hotkey.QUICKSAVE.button -> { + NativeLibrary.saveState(NativeLibrary.QUICKSAVE_SLOT) + Toast.makeText( + context, + context.getString(R.string.saving), + Toast.LENGTH_SHORT + ).show() } - HotkeyIsPressed = true - return true + + Hotkey.QUICKLOAD.button -> { + val wasLoaded = NativeLibrary.loadStateIfAvailable(NativeLibrary.QUICKSAVE_SLOT) + val stringRes = if (wasLoaded) { + R.string.loading + } else { + R.string.quickload_not_found + } + Toast.makeText( + context, + context.getString(stringRes), + Toast.LENGTH_SHORT + ).show() + } + + else -> {} } - return false + hotkeyIsPressed = true + return true } } diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/SettingKeys.kt b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/SettingKeys.kt new file mode 100644 index 000000000..1d6e0dcee --- /dev/null +++ b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/SettingKeys.kt @@ -0,0 +1,141 @@ +// Copyright Citra Emulator Project / Azahar Emulator Project +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +package org.citra.citra_emu.features.settings + +// This list should mirror the list in GenerateSettingKeys.cmake, +// specifically the Shared and Android setting keys. +@Suppress("KotlinJniMissingFunction", "FunctionName") +object SettingKeys { + // Shared + external fun use_artic_base_controller(): String + external fun use_cpu_jit(): String + external fun cpu_clock_percentage(): String + external fun is_new_3ds(): String + external fun lle_applets(): String + external fun deterministic_async_operations(): String + external fun enable_required_online_lle_modules(): String + external fun use_virtual_sd(): String + external fun compress_cia_installs(): String + external fun region_value(): String + external fun init_clock(): String + external fun init_time(): String + external fun init_ticks_type(): String + external fun init_ticks_override(): String + external fun plugin_loader(): String + external fun allow_plugin_loader(): String + external fun steps_per_hour(): String + external fun apply_region_free_patch(): String + external fun graphics_api(): String + external fun use_gles(): String + external fun renderer_debug(): String + external fun spirv_shader_gen(): String + external fun disable_spirv_optimizer(): String + external fun async_shader_compilation(): String + external fun async_presentation(): String + external fun use_hw_shader(): String + external fun use_disk_shader_cache(): String + external fun shaders_accurate_mul(): String + external fun use_vsync(): String + external fun use_shader_jit(): String + external fun resolution_factor(): String + external fun frame_limit(): String + external fun turbo_limit(): String + external fun texture_filter(): String + external fun texture_sampling(): String + external fun delay_game_render_thread_us(): String + external fun layout_option(): String + external fun swap_screen(): String + external fun upright_screen(): String + external fun secondary_display_layout(): String + external fun large_screen_proportion(): String + external fun screen_gap(): String + external fun small_screen_position(): String + external fun custom_top_x(): String + external fun custom_top_y(): String + external fun custom_top_width(): String + external fun custom_top_height(): String + external fun custom_bottom_x(): String + external fun custom_bottom_y(): String + external fun custom_bottom_width(): String + external fun custom_bottom_height(): String + external fun custom_second_layer_opacity(): String + external fun aspect_ratio(): String + external fun portrait_layout_option(): String + external fun custom_portrait_top_x(): String + external fun custom_portrait_top_y(): String + external fun custom_portrait_top_width(): String + external fun custom_portrait_top_height(): String + external fun custom_portrait_bottom_x(): String + external fun custom_portrait_bottom_y(): String + external fun custom_portrait_bottom_width(): String + external fun custom_portrait_bottom_height(): String + external fun bg_red(): String + external fun bg_green(): String + external fun bg_blue(): String + external fun render_3d(): String + external fun factor_3d(): String + external fun swap_eyes_3d(): String + external fun render_3d_which_display(): String + external fun cardboard_screen_size(): String + external fun cardboard_x_shift(): String + external fun cardboard_y_shift(): String + external fun filter_mode(): String + external fun pp_shader_name(): String + external fun anaglyph_shader_name(): String + external fun dump_textures(): String + external fun custom_textures(): String + external fun preload_textures(): String + external fun async_custom_loading(): String + external fun disable_right_eye_render(): String + external fun audio_emulation(): String + external fun enable_audio_stretching(): String + external fun enable_realtime_audio(): String + external fun volume(): String + external fun output_type(): String + external fun output_device(): String + external fun input_type(): String + external fun input_device(): String + external fun delay_start_for_lle_modules(): String + external fun use_gdbstub(): String + external fun gdbstub_port(): String + external fun instant_debug_log(): String + external fun enable_rpc_server(): String + external fun toggle_unique_data_console_type(): String + external fun log_filter(): String + external fun log_regex_filter(): String + external fun use_integer_scaling(): String + external fun layouts_to_cycle(): String + external fun camera_inner_flip(): String + external fun camera_outer_left_flip(): String + external fun camera_outer_right_flip(): String + external fun camera_inner_name(): String + external fun camera_inner_config(): String + external fun camera_outer_left_name(): String + external fun camera_outer_left_config(): String + external fun camera_outer_right_name(): String + external fun camera_outer_right_config(): String + external fun last_artic_base_addr(): String + external fun motion_device(): String + external fun touch_device(): String + external fun udp_input_address(): String + external fun udp_input_port(): String + external fun udp_pad_index(): String + external fun record_frame_times(): String + + // Android + external fun expand_to_cutout_area(): String + external fun performance_overlay_enable(): String + external fun performance_overlay_show_fps(): String + external fun performance_overlay_show_frame_time(): String + external fun performance_overlay_show_speed(): String + external fun performance_overlay_show_app_ram_usage(): String + external fun performance_overlay_show_available_ram(): String + external fun performance_overlay_show_battery_temp(): String + external fun performance_overlay_background(): String + external fun use_frame_limit(): String + external fun android_hide_images(): String + external fun screen_orientation(): String + external fun performance_overlay_position(): String +} \ No newline at end of file diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/AbstractListSetting.kt b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/AbstractListSetting.kt new file mode 100644 index 000000000..d89db48af --- /dev/null +++ b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/AbstractListSetting.kt @@ -0,0 +1,9 @@ +// Copyright Citra Emulator Project / Azahar Emulator Project +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +package org.citra.citra_emu.features.settings.model + +interface AbstractListSetting : AbstractSetting { + var list: List +} diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/BooleanSetting.kt b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/BooleanSetting.kt index f06324251..e12d87544 100644 --- a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/BooleanSetting.kt +++ b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/BooleanSetting.kt @@ -4,56 +4,59 @@ package org.citra.citra_emu.features.settings.model +import org.citra.citra_emu.features.settings.SettingKeys + enum class BooleanSetting( override val key: String, override val section: String, override val defaultValue: Boolean ) : AbstractBooleanSetting { - EXPAND_TO_CUTOUT_AREA("expand_to_cutout_area", Settings.SECTION_LAYOUT, false), - SPIRV_SHADER_GEN("spirv_shader_gen", Settings.SECTION_RENDERER, true), - ASYNC_SHADERS("async_shader_compilation", Settings.SECTION_RENDERER, false), - DISABLE_SPIRV_OPTIMIZER("disable_spirv_optimizer", Settings.SECTION_RENDERER, true), - PLUGIN_LOADER("plugin_loader", Settings.SECTION_SYSTEM, false), - ALLOW_PLUGIN_LOADER("allow_plugin_loader", Settings.SECTION_SYSTEM, true), - SWAP_SCREEN("swap_screen", Settings.SECTION_LAYOUT, false), - INSTANT_DEBUG_LOG("instant_debug_log", Settings.SECTION_DEBUG, false), - ENABLE_RPC_SERVER("enable_rpc_server", Settings.SECTION_DEBUG, false), - CUSTOM_LAYOUT("custom_layout",Settings.SECTION_LAYOUT,false), - SWAP_EYES_3D("swap_eyes_3d",Settings.SECTION_RENDERER,false), - PERF_OVERLAY_ENABLE("performance_overlay_enable", Settings.SECTION_LAYOUT, false), - PERF_OVERLAY_SHOW_FPS("performance_overlay_show_fps", Settings.SECTION_LAYOUT, true), - PERF_OVERLAY_SHOW_FRAMETIME("performance_overlay_show_frame_time", Settings.SECTION_LAYOUT, false), - PERF_OVERLAY_SHOW_SPEED("performance_overlay_show_speed", Settings.SECTION_LAYOUT, false), - PERF_OVERLAY_SHOW_APP_RAM_USAGE("performance_overlay_show_app_ram_usage", Settings.SECTION_LAYOUT, false), - PERF_OVERLAY_SHOW_AVAILABLE_RAM("performance_overlay_show_available_ram", Settings.SECTION_LAYOUT, false), - PERF_OVERLAY_SHOW_BATTERY_TEMP("performance_overlay_show_battery_temp", Settings.SECTION_LAYOUT, false), - PERF_OVERLAY_BACKGROUND("performance_overlay_background", Settings.SECTION_LAYOUT, false), - DELAY_START_LLE_MODULES("delay_start_for_lle_modules", Settings.SECTION_DEBUG, true), - DETERMINISTIC_ASYNC_OPERATIONS("deterministic_async_operations", Settings.SECTION_DEBUG, false), - REQUIRED_ONLINE_LLE_MODULES("enable_required_online_lle_modules", Settings.SECTION_SYSTEM, false), - LLE_APPLETS("lle_applets", Settings.SECTION_SYSTEM, false), - NEW_3DS("is_new_3ds", Settings.SECTION_SYSTEM, true), - LINEAR_FILTERING("filter_mode", Settings.SECTION_RENDERER, true), - SHADERS_ACCURATE_MUL("shaders_accurate_mul", Settings.SECTION_RENDERER, false), - DISK_SHADER_CACHE("use_disk_shader_cache", Settings.SECTION_RENDERER, true), - DUMP_TEXTURES("dump_textures", Settings.SECTION_UTILITY, false), - CUSTOM_TEXTURES("custom_textures", Settings.SECTION_UTILITY, false), - ASYNC_CUSTOM_LOADING("async_custom_loading", Settings.SECTION_UTILITY, true), - PRELOAD_TEXTURES("preload_textures", Settings.SECTION_UTILITY, false), - ENABLE_AUDIO_STRETCHING("enable_audio_stretching", Settings.SECTION_AUDIO, true), - ENABLE_REALTIME_AUDIO("enable_realtime_audio", Settings.SECTION_AUDIO, false), - CPU_JIT("use_cpu_jit", Settings.SECTION_CORE, true), - HW_SHADER("use_hw_shader", Settings.SECTION_RENDERER, true), - SHADER_JIT("use_shader_jit", Settings.SECTION_RENDERER, true), - VSYNC("use_vsync", Settings.SECTION_RENDERER, false), - USE_FRAME_LIMIT("use_frame_limit", Settings.SECTION_RENDERER, true), - DEBUG_RENDERER("renderer_debug", Settings.SECTION_DEBUG, false), - DISABLE_RIGHT_EYE_RENDER("disable_right_eye_render", Settings.SECTION_RENDERER, false), - USE_ARTIC_BASE_CONTROLLER("use_artic_base_controller", Settings.SECTION_CONTROLS, false), - UPRIGHT_SCREEN("upright_screen", Settings.SECTION_LAYOUT, false), - COMPRESS_INSTALLED_CIA_CONTENT("compress_cia_installs", Settings.SECTION_STORAGE, false), - ANDROID_HIDE_IMAGES("android_hide_images", Settings.SECTION_CORE, false), - APPLY_REGION_FREE_PATCH("apply_region_free_patch", Settings.SECTION_SYSTEM, true); + EXPAND_TO_CUTOUT_AREA(SettingKeys.expand_to_cutout_area(), Settings.SECTION_LAYOUT, false), + SPIRV_SHADER_GEN(SettingKeys.spirv_shader_gen(), Settings.SECTION_RENDERER, true), + ASYNC_SHADERS(SettingKeys.async_shader_compilation(), Settings.SECTION_RENDERER, false), + DISABLE_SPIRV_OPTIMIZER(SettingKeys.disable_spirv_optimizer(), Settings.SECTION_RENDERER, true), + PLUGIN_LOADER(SettingKeys.plugin_loader(), Settings.SECTION_SYSTEM, false), + ALLOW_PLUGIN_LOADER(SettingKeys.allow_plugin_loader(), Settings.SECTION_SYSTEM, true), + SWAP_SCREEN(SettingKeys.swap_screen(), Settings.SECTION_LAYOUT, false), + INSTANT_DEBUG_LOG(SettingKeys.instant_debug_log(), Settings.SECTION_DEBUG, false), + ENABLE_RPC_SERVER(SettingKeys.enable_rpc_server(), Settings.SECTION_DEBUG, false), + TOGGLE_UNIQUE_DATA_CONSOLE_TYPE(SettingKeys.toggle_unique_data_console_type(), Settings.SECTION_DEBUG, false), + SWAP_EYES_3D(SettingKeys.swap_eyes_3d(),Settings.SECTION_RENDERER, false), + PERF_OVERLAY_ENABLE(SettingKeys.performance_overlay_enable(), Settings.SECTION_LAYOUT, false), + PERF_OVERLAY_SHOW_FPS(SettingKeys.performance_overlay_show_fps(), Settings.SECTION_LAYOUT, true), + PERF_OVERLAY_SHOW_FRAMETIME(SettingKeys.performance_overlay_show_frame_time(), Settings.SECTION_LAYOUT, false), + PERF_OVERLAY_SHOW_SPEED(SettingKeys.performance_overlay_show_speed(), Settings.SECTION_LAYOUT, false), + PERF_OVERLAY_SHOW_APP_RAM_USAGE(SettingKeys.performance_overlay_show_app_ram_usage(), Settings.SECTION_LAYOUT, false), + PERF_OVERLAY_SHOW_AVAILABLE_RAM(SettingKeys.performance_overlay_show_available_ram(), Settings.SECTION_LAYOUT, false), + PERF_OVERLAY_SHOW_BATTERY_TEMP(SettingKeys.performance_overlay_show_battery_temp(), Settings.SECTION_LAYOUT, false), + PERF_OVERLAY_BACKGROUND(SettingKeys.performance_overlay_background(), Settings.SECTION_LAYOUT, false), + DELAY_START_LLE_MODULES(SettingKeys.delay_start_for_lle_modules(), Settings.SECTION_DEBUG, true), + DETERMINISTIC_ASYNC_OPERATIONS(SettingKeys.deterministic_async_operations(), Settings.SECTION_DEBUG, false), + REQUIRED_ONLINE_LLE_MODULES(SettingKeys.enable_required_online_lle_modules(), Settings.SECTION_SYSTEM, false), + LLE_APPLETS(SettingKeys.lle_applets(), Settings.SECTION_SYSTEM, false), + NEW_3DS(SettingKeys.is_new_3ds(), Settings.SECTION_SYSTEM, true), + LINEAR_FILTERING(SettingKeys.filter_mode(), Settings.SECTION_RENDERER, true), + SHADERS_ACCURATE_MUL(SettingKeys.shaders_accurate_mul(), Settings.SECTION_RENDERER, false), + DISK_SHADER_CACHE(SettingKeys.use_disk_shader_cache(), Settings.SECTION_RENDERER, true), + DUMP_TEXTURES(SettingKeys.dump_textures(), Settings.SECTION_UTILITY, false), + CUSTOM_TEXTURES(SettingKeys.custom_textures(), Settings.SECTION_UTILITY, false), + ASYNC_CUSTOM_LOADING(SettingKeys.async_custom_loading(), Settings.SECTION_UTILITY, true), + PRELOAD_TEXTURES(SettingKeys.preload_textures(), Settings.SECTION_UTILITY, false), + ENABLE_AUDIO_STRETCHING(SettingKeys.enable_audio_stretching(), Settings.SECTION_AUDIO, true), + ENABLE_REALTIME_AUDIO(SettingKeys.enable_realtime_audio(), Settings.SECTION_AUDIO, false), + CPU_JIT(SettingKeys.use_cpu_jit(), Settings.SECTION_CORE, true), + HW_SHADER(SettingKeys.use_hw_shader(), Settings.SECTION_RENDERER, true), + SHADER_JIT(SettingKeys.use_shader_jit(), Settings.SECTION_RENDERER, true), + VSYNC(SettingKeys.use_vsync(), Settings.SECTION_RENDERER, false), + USE_FRAME_LIMIT(SettingKeys.use_frame_limit(), Settings.SECTION_RENDERER, true), + DEBUG_RENDERER(SettingKeys.renderer_debug(), Settings.SECTION_DEBUG, false), + DISABLE_RIGHT_EYE_RENDER(SettingKeys.disable_right_eye_render(), Settings.SECTION_RENDERER, false), + USE_ARTIC_BASE_CONTROLLER(SettingKeys.use_artic_base_controller(), Settings.SECTION_CONTROLS, false), + UPRIGHT_SCREEN(SettingKeys.upright_screen(), Settings.SECTION_LAYOUT, false), + COMPRESS_INSTALLED_CIA_CONTENT(SettingKeys.compress_cia_installs(), Settings.SECTION_STORAGE, false), + ANDROID_HIDE_IMAGES(SettingKeys.android_hide_images(), Settings.SECTION_MISC, false), + APPLY_REGION_FREE_PATCH(SettingKeys.apply_region_free_patch(), Settings.SECTION_SYSTEM, true), + USE_INTEGER_SCALING(SettingKeys.use_integer_scaling(), Settings.SECTION_RENDERER, false); override var boolean: Boolean = defaultValue @@ -80,6 +83,7 @@ enum class BooleanSetting( REQUIRED_ONLINE_LLE_MODULES, NEW_3DS, LLE_APPLETS, + TOGGLE_UNIQUE_DATA_CONSOLE_TYPE, VSYNC, DEBUG_RENDERER, CPU_JIT, diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/FloatSetting.kt b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/FloatSetting.kt index 69bc16ca7..c192677bd 100644 --- a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/FloatSetting.kt +++ b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/FloatSetting.kt @@ -4,17 +4,18 @@ package org.citra.citra_emu.features.settings.model +import org.citra.citra_emu.features.settings.SettingKeys + enum class FloatSetting( override val key: String, override val section: String, override val defaultValue: Float ) : AbstractFloatSetting { - LARGE_SCREEN_PROPORTION("large_screen_proportion",Settings.SECTION_LAYOUT,2.25f), - SECOND_SCREEN_OPACITY("custom_second_layer_opacity", Settings.SECTION_RENDERER, 100f), - BACKGROUND_RED("bg_red", Settings.SECTION_RENDERER, 0f), - BACKGROUND_BLUE("bg_blue", Settings.SECTION_RENDERER, 0f), - BACKGROUND_GREEN("bg_green", Settings.SECTION_RENDERER, 0f), - EMPTY_SETTING("", "", 0.0f); + LARGE_SCREEN_PROPORTION(SettingKeys.large_screen_proportion(),Settings.SECTION_LAYOUT,2.25f), + SECOND_SCREEN_OPACITY(SettingKeys.custom_second_layer_opacity(), Settings.SECTION_RENDERER, 100f), + BACKGROUND_RED(SettingKeys.bg_red(), Settings.SECTION_RENDERER, 0f), + BACKGROUND_BLUE(SettingKeys.bg_blue(), Settings.SECTION_RENDERER, 0f), + BACKGROUND_GREEN(SettingKeys.bg_green(), Settings.SECTION_RENDERER, 0f); override var float: Float = defaultValue diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/IntListSetting.kt b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/IntListSetting.kt new file mode 100644 index 000000000..0de51acce --- /dev/null +++ b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/IntListSetting.kt @@ -0,0 +1,52 @@ +// Copyright Citra Emulator Project / Azahar Emulator Project +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +package org.citra.citra_emu.features.settings.model + +enum class IntListSetting( + override val key: String, + override val section: String, + override val defaultValue: List, + val canBeEmpty: Boolean = true +) : AbstractListSetting { + + LAYOUTS_TO_CYCLE("layouts_to_cycle", Settings.SECTION_LAYOUT, listOf(0, 1, 2, 3, 4, 5), canBeEmpty = false); + + private var backingList: List = defaultValue + private var lastValidList : List = defaultValue + + override var list: List + get() = backingList + set(value) { + if (!canBeEmpty && value.isEmpty()) { + backingList = lastValidList + } else { + backingList = value + lastValidList = value + } + } + + override val valueAsString: String + get() = list.joinToString() + + + override val isRuntimeEditable: Boolean + get() { + for (setting in NOT_RUNTIME_EDITABLE) { + if (setting == this) { + return false + } + } + return true + } + + companion object { + private val NOT_RUNTIME_EDITABLE: List = emptyList() + + fun from(key: String): IntListSetting? = + values().firstOrNull { it.key == key } + + fun clear() = values().forEach { it.list = it.defaultValue } + } +} diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/IntSetting.kt b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/IntSetting.kt index e26bcd6c6..2c8cbf2a1 100644 --- a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/IntSetting.kt +++ b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/IntSetting.kt @@ -4,57 +4,59 @@ package org.citra.citra_emu.features.settings.model +import org.citra.citra_emu.features.settings.SettingKeys + enum class IntSetting( override val key: String, override val section: String, override val defaultValue: Int ) : AbstractIntSetting { - FRAME_LIMIT("frame_limit", Settings.SECTION_RENDERER, 100), - EMULATED_REGION("region_value", Settings.SECTION_SYSTEM, -1), - INIT_CLOCK("init_clock", Settings.SECTION_SYSTEM, 0), - CAMERA_INNER_FLIP("camera_inner_flip", Settings.SECTION_CAMERA, 0), - CAMERA_OUTER_LEFT_FLIP("camera_outer_left_flip", Settings.SECTION_CAMERA, 0), - CAMERA_OUTER_RIGHT_FLIP("camera_outer_right_flip", Settings.SECTION_CAMERA, 0), - GRAPHICS_API("graphics_api", Settings.SECTION_RENDERER, 1), - RESOLUTION_FACTOR("resolution_factor", Settings.SECTION_RENDERER, 1), - STEREOSCOPIC_3D_MODE("render_3d", Settings.SECTION_RENDERER, 2), - STEREOSCOPIC_3D_DEPTH("factor_3d", Settings.SECTION_RENDERER, 0), - STEPS_PER_HOUR("steps_per_hour", Settings.SECTION_SYSTEM, 0), - CARDBOARD_SCREEN_SIZE("cardboard_screen_size", Settings.SECTION_LAYOUT, 85), - CARDBOARD_X_SHIFT("cardboard_x_shift", Settings.SECTION_LAYOUT, 0), - CARDBOARD_Y_SHIFT("cardboard_y_shift", Settings.SECTION_LAYOUT, 0), - SCREEN_LAYOUT("layout_option", Settings.SECTION_LAYOUT, 0), - SMALL_SCREEN_POSITION("small_screen_position",Settings.SECTION_LAYOUT,0), - LANDSCAPE_TOP_X("custom_top_x",Settings.SECTION_LAYOUT,0), - LANDSCAPE_TOP_Y("custom_top_y",Settings.SECTION_LAYOUT,0), - LANDSCAPE_TOP_WIDTH("custom_top_width",Settings.SECTION_LAYOUT,800), - LANDSCAPE_TOP_HEIGHT("custom_top_height",Settings.SECTION_LAYOUT,480), - LANDSCAPE_BOTTOM_X("custom_bottom_x",Settings.SECTION_LAYOUT,80), - LANDSCAPE_BOTTOM_Y("custom_bottom_y",Settings.SECTION_LAYOUT,480), - LANDSCAPE_BOTTOM_WIDTH("custom_bottom_width",Settings.SECTION_LAYOUT,640), - LANDSCAPE_BOTTOM_HEIGHT("custom_bottom_height",Settings.SECTION_LAYOUT,480), - SCREEN_GAP("screen_gap",Settings.SECTION_LAYOUT,0), - PORTRAIT_SCREEN_LAYOUT("portrait_layout_option",Settings.SECTION_LAYOUT,0), - SECONDARY_DISPLAY_LAYOUT("secondary_display_layout",Settings.SECTION_LAYOUT,0), - PORTRAIT_TOP_X("custom_portrait_top_x",Settings.SECTION_LAYOUT,0), - PORTRAIT_TOP_Y("custom_portrait_top_y",Settings.SECTION_LAYOUT,0), - PORTRAIT_TOP_WIDTH("custom_portrait_top_width",Settings.SECTION_LAYOUT,800), - PORTRAIT_TOP_HEIGHT("custom_portrait_top_height",Settings.SECTION_LAYOUT,480), - PORTRAIT_BOTTOM_X("custom_portrait_bottom_x",Settings.SECTION_LAYOUT,80), - PORTRAIT_BOTTOM_Y("custom_portrait_bottom_y",Settings.SECTION_LAYOUT,480), - PORTRAIT_BOTTOM_WIDTH("custom_portrait_bottom_width",Settings.SECTION_LAYOUT,640), - PORTRAIT_BOTTOM_HEIGHT("custom_portrait_bottom_height",Settings.SECTION_LAYOUT,480), - AUDIO_INPUT_TYPE("input_type", Settings.SECTION_AUDIO, 0), - CPU_CLOCK_SPEED("cpu_clock_percentage", Settings.SECTION_CORE, 100), - TEXTURE_FILTER("texture_filter", Settings.SECTION_RENDERER, 0), - TEXTURE_SAMPLING("texture_sampling", Settings.SECTION_RENDERER, 0), - USE_FRAME_LIMIT("use_frame_limit", Settings.SECTION_RENDERER, 1), - DELAY_RENDER_THREAD_US("delay_game_render_thread_us", Settings.SECTION_RENDERER, 0), - ORIENTATION_OPTION("screen_orientation", Settings.SECTION_LAYOUT, 2), - TURBO_LIMIT("turbo_limit", Settings.SECTION_CORE, 200), - PERFORMANCE_OVERLAY_POSITION("performance_overlay_position", Settings.SECTION_LAYOUT, 0), - RENDER_3D_WHICH_DISPLAY("render_3d_which_display",Settings.SECTION_RENDERER,0), - ASPECT_RATIO("aspect_ratio", Settings.SECTION_LAYOUT, 0); + FRAME_LIMIT(SettingKeys.frame_limit(), Settings.SECTION_RENDERER, 100), + EMULATED_REGION(SettingKeys.region_value(), Settings.SECTION_SYSTEM, -1), + INIT_CLOCK(SettingKeys.init_clock(), Settings.SECTION_SYSTEM, 0), + CAMERA_INNER_FLIP(SettingKeys.camera_inner_flip(), Settings.SECTION_CAMERA, 0), + CAMERA_OUTER_LEFT_FLIP(SettingKeys.camera_outer_left_flip(), Settings.SECTION_CAMERA, 0), + CAMERA_OUTER_RIGHT_FLIP(SettingKeys.camera_outer_right_flip(), Settings.SECTION_CAMERA, 0), + GRAPHICS_API(SettingKeys.graphics_api(), Settings.SECTION_RENDERER, 1), + RESOLUTION_FACTOR(SettingKeys.resolution_factor(), Settings.SECTION_RENDERER, 1), + STEREOSCOPIC_3D_MODE(SettingKeys.render_3d(), Settings.SECTION_RENDERER, 2), + STEREOSCOPIC_3D_DEPTH(SettingKeys.factor_3d(), Settings.SECTION_RENDERER, 0), + STEPS_PER_HOUR(SettingKeys.steps_per_hour(), Settings.SECTION_SYSTEM, 0), + CARDBOARD_SCREEN_SIZE(SettingKeys.cardboard_screen_size(), Settings.SECTION_LAYOUT, 85), + CARDBOARD_X_SHIFT(SettingKeys.cardboard_x_shift(), Settings.SECTION_LAYOUT, 0), + CARDBOARD_Y_SHIFT(SettingKeys.cardboard_y_shift(), Settings.SECTION_LAYOUT, 0), + SCREEN_LAYOUT(SettingKeys.layout_option(), Settings.SECTION_LAYOUT, 0), + SMALL_SCREEN_POSITION(SettingKeys.small_screen_position(),Settings.SECTION_LAYOUT,0), + LANDSCAPE_TOP_X(SettingKeys.custom_top_x(),Settings.SECTION_LAYOUT,0), + LANDSCAPE_TOP_Y(SettingKeys.custom_top_y(),Settings.SECTION_LAYOUT,0), + LANDSCAPE_TOP_WIDTH(SettingKeys.custom_top_width(),Settings.SECTION_LAYOUT,800), + LANDSCAPE_TOP_HEIGHT(SettingKeys.custom_top_height(),Settings.SECTION_LAYOUT,480), + LANDSCAPE_BOTTOM_X(SettingKeys.custom_bottom_x(),Settings.SECTION_LAYOUT,80), + LANDSCAPE_BOTTOM_Y(SettingKeys.custom_bottom_y(),Settings.SECTION_LAYOUT,480), + LANDSCAPE_BOTTOM_WIDTH(SettingKeys.custom_bottom_width(),Settings.SECTION_LAYOUT,640), + LANDSCAPE_BOTTOM_HEIGHT(SettingKeys.custom_bottom_height(),Settings.SECTION_LAYOUT,480), + SCREEN_GAP(SettingKeys.screen_gap(),Settings.SECTION_LAYOUT,0), + PORTRAIT_SCREEN_LAYOUT(SettingKeys.portrait_layout_option(),Settings.SECTION_LAYOUT,0), + SECONDARY_DISPLAY_LAYOUT(SettingKeys.secondary_display_layout(),Settings.SECTION_LAYOUT,0), + PORTRAIT_TOP_X(SettingKeys.custom_portrait_top_x(),Settings.SECTION_LAYOUT,0), + PORTRAIT_TOP_Y(SettingKeys.custom_portrait_top_y(),Settings.SECTION_LAYOUT,0), + PORTRAIT_TOP_WIDTH(SettingKeys.custom_portrait_top_width(),Settings.SECTION_LAYOUT,800), + PORTRAIT_TOP_HEIGHT(SettingKeys.custom_portrait_top_height(),Settings.SECTION_LAYOUT,480), + PORTRAIT_BOTTOM_X(SettingKeys.custom_portrait_bottom_x(),Settings.SECTION_LAYOUT,80), + PORTRAIT_BOTTOM_Y(SettingKeys.custom_portrait_bottom_y(),Settings.SECTION_LAYOUT,480), + PORTRAIT_BOTTOM_WIDTH(SettingKeys.custom_portrait_bottom_width(),Settings.SECTION_LAYOUT,640), + PORTRAIT_BOTTOM_HEIGHT(SettingKeys.custom_portrait_bottom_height(),Settings.SECTION_LAYOUT,480), + AUDIO_INPUT_TYPE(SettingKeys.input_type(), Settings.SECTION_AUDIO, 0), + CPU_CLOCK_SPEED(SettingKeys.cpu_clock_percentage(), Settings.SECTION_CORE, 100), + TEXTURE_FILTER(SettingKeys.texture_filter(), Settings.SECTION_RENDERER, 0), + TEXTURE_SAMPLING(SettingKeys.texture_sampling(), Settings.SECTION_RENDERER, 0), + USE_FRAME_LIMIT(SettingKeys.use_frame_limit(), Settings.SECTION_RENDERER, 1), + DELAY_RENDER_THREAD_US(SettingKeys.delay_game_render_thread_us(), Settings.SECTION_RENDERER, 0), + ORIENTATION_OPTION(SettingKeys.screen_orientation(), Settings.SECTION_LAYOUT, 2), + TURBO_LIMIT(SettingKeys.turbo_limit(), Settings.SECTION_CORE, 200), + PERFORMANCE_OVERLAY_POSITION(SettingKeys.performance_overlay_position(), Settings.SECTION_LAYOUT, 0), + RENDER_3D_WHICH_DISPLAY(SettingKeys.render_3d_which_display(),Settings.SECTION_RENDERER,0), + ASPECT_RATIO(SettingKeys.aspect_ratio(), Settings.SECTION_LAYOUT, 0); override var int: Int = defaultValue diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/ScaledFloatSetting.kt b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/ScaledFloatSetting.kt index 21629f7b0..a37452f58 100644 --- a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/ScaledFloatSetting.kt +++ b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/ScaledFloatSetting.kt @@ -1,16 +1,18 @@ -// Copyright 2023 Citra Emulator Project +// Copyright Citra Emulator Project / Azahar Emulator Project // Licensed under GPLv2 or any later version // Refer to the license.txt file included. package org.citra.citra_emu.features.settings.model +import org.citra.citra_emu.features.settings.SettingKeys + enum class ScaledFloatSetting( override val key: String, override val section: String, override val defaultValue: Float, val scale: Int ) : AbstractFloatSetting { - AUDIO_VOLUME("volume", Settings.SECTION_AUDIO, 1.0f, 100); + AUDIO_VOLUME(SettingKeys.volume(), Settings.SECTION_AUDIO, 1.0f, 100); override var float: Float = defaultValue get() = field * scale diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/Settings.kt b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/Settings.kt index 02d10cfe9..547a53594 100644 --- a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/Settings.kt +++ b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/Settings.kt @@ -113,6 +113,7 @@ class Settings { const val SECTION_CUSTOM_PORTRAIT = "Custom Portrait Layout" const val SECTION_PERFORMANCE_OVERLAY = "Performance Overlay" const val SECTION_STORAGE = "Storage" + const val SECTION_MISC = "Miscellaneous" const val KEY_BUTTON_A = "button_a" const val KEY_BUTTON_B = "button_b" @@ -135,6 +136,7 @@ class Settings { const val KEY_CSTICK_AXIS_HORIZONTAL = "cstick_axis_horizontal" const val KEY_DPAD_AXIS_VERTICAL = "dpad_axis_vertical" const val KEY_DPAD_AXIS_HORIZONTAL = "dpad_axis_horizontal" + const val HOTKEY_ENABLE = "hotkey_enable" const val HOTKEY_SCREEN_SWAP = "hotkey_screen_swap" const val HOTKEY_CYCLE_LAYOUT = "hotkey_toggle_layout" const val HOTKEY_CLOSE_GAME = "hotkey_close_game" @@ -202,6 +204,7 @@ class Settings { R.string.button_zr ) val hotKeys = listOf( + HOTKEY_ENABLE, HOTKEY_SCREEN_SWAP, HOTKEY_CYCLE_LAYOUT, HOTKEY_CLOSE_GAME, @@ -211,6 +214,7 @@ class Settings { HOTKEY_TURBO_LIMIT ) val hotkeyTitles = listOf( + R.string.controller_hotkey_enable_button, R.string.emulation_swap_screens, R.string.emulation_cycle_landscape_layouts, R.string.emulation_close_game, @@ -220,6 +224,7 @@ class Settings { R.string.turbo_limit_hotkey ) + // TODO: Move these in with the other setting keys in GenerateSettingKeys.cmake const val PREF_FIRST_APP_LAUNCH = "FirstApplicationLaunch" const val PREF_MATERIAL_YOU = "MaterialYouTheme" const val PREF_THEME_MODE = "ThemeMode" diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/StringSetting.kt b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/StringSetting.kt index 87b425f5b..fe476a1fa 100644 --- a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/StringSetting.kt +++ b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/StringSetting.kt @@ -1,21 +1,23 @@ -// Copyright 2023 Citra Emulator Project +// Copyright Citra Emulator Project / Azahar Emulator Project // Licensed under GPLv2 or any later version // Refer to the license.txt file included. package org.citra.citra_emu.features.settings.model +import org.citra.citra_emu.features.settings.SettingKeys + enum class StringSetting( override val key: String, override val section: String, override val defaultValue: String ) : AbstractStringSetting { - INIT_TIME("init_time", Settings.SECTION_SYSTEM, "946731601"), - CAMERA_INNER_NAME("camera_inner_name", Settings.SECTION_CAMERA, "ndk"), - CAMERA_INNER_CONFIG("camera_inner_config", Settings.SECTION_CAMERA, "_front"), - CAMERA_OUTER_LEFT_NAME("camera_outer_left_name", Settings.SECTION_CAMERA, "ndk"), - CAMERA_OUTER_LEFT_CONFIG("camera_outer_left_config", Settings.SECTION_CAMERA, "_back"), - CAMERA_OUTER_RIGHT_NAME("camera_outer_right_name", Settings.SECTION_CAMERA, "ndk"), - CAMERA_OUTER_RIGHT_CONFIG("camera_outer_right_config", Settings.SECTION_CAMERA, "_back"); + INIT_TIME(SettingKeys.init_time(), Settings.SECTION_SYSTEM, "946731601"), + CAMERA_INNER_NAME(SettingKeys.camera_inner_name(), Settings.SECTION_CAMERA, "ndk"), + CAMERA_INNER_CONFIG(SettingKeys.camera_inner_config(), Settings.SECTION_CAMERA, "_front"), + CAMERA_OUTER_LEFT_NAME(SettingKeys.camera_outer_left_name(), Settings.SECTION_CAMERA, "ndk"), + CAMERA_OUTER_LEFT_CONFIG(SettingKeys.camera_outer_left_config(), Settings.SECTION_CAMERA, "_back"), + CAMERA_OUTER_RIGHT_NAME(SettingKeys.camera_outer_right_name(), Settings.SECTION_CAMERA, "ndk"), + CAMERA_OUTER_RIGHT_CONFIG(SettingKeys.camera_outer_right_config(), Settings.SECTION_CAMERA, "_back"); override var string: String = defaultValue diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/InputBindingSetting.kt b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/InputBindingSetting.kt index 482bc0b08..6ec851db1 100644 --- a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/InputBindingSetting.kt +++ b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/InputBindingSetting.kt @@ -9,6 +9,7 @@ import android.content.SharedPreferences import android.view.InputDevice import android.view.InputDevice.MotionRange import android.view.KeyEvent +import android.view.MotionEvent import android.widget.Toast import androidx.preference.PreferenceManager import org.citra.citra_emu.CitraApplication @@ -128,6 +129,7 @@ class InputBindingSetting( Settings.KEY_BUTTON_DOWN -> NativeLibrary.ButtonType.DPAD_DOWN Settings.KEY_BUTTON_LEFT -> NativeLibrary.ButtonType.DPAD_LEFT Settings.KEY_BUTTON_RIGHT -> NativeLibrary.ButtonType.DPAD_RIGHT + Settings.HOTKEY_ENABLE -> Hotkey.ENABLE.button Settings.HOTKEY_SCREEN_SWAP -> Hotkey.SWAP_SCREEN.button Settings.HOTKEY_CYCLE_LAYOUT -> Hotkey.CYCLE_LAYOUT.button Settings.HOTKEY_CLOSE_GAME -> Hotkey.CLOSE_GAME.button @@ -162,36 +164,40 @@ class InputBindingSetting( fun removeOldMapping() { // Try remove all possible keys we wrote for this setting val oldKey = preferences.getString(reverseKey, "") - (setting as AbstractStringSetting).string = "" if (oldKey != "") { + (setting as AbstractStringSetting).string = "" preferences.edit() .remove(abstractSetting.key) // Used for ui text - .remove(oldKey) // Used for button mapping .remove(oldKey + "_GuestOrientation") // Used for axis orientation .remove(oldKey + "_GuestButton") // Used for axis button .remove(oldKey + "_Inverted") // used for axis inversion - .apply() + .remove(reverseKey) + val buttonCodes = try { + preferences.getStringSet(oldKey, mutableSetOf())!!.toMutableSet() + } catch (e: ClassCastException) { + // if this is an int pref, either old button or an axis, so just remove it + preferences.edit().remove(oldKey).apply() + return; + } + buttonCodes.remove(buttonCode.toString()); + preferences.edit().putStringSet(oldKey,buttonCodes).apply() } } /** * Helper function to write a gamepad button mapping for the setting. */ - private fun writeButtonMapping(key: String) { + private fun writeButtonMapping(keyEvent: KeyEvent) { val editor = preferences.edit() - - // Remove mapping for another setting using this input - val oldButtonCode = preferences.getInt(key, -1) - if (oldButtonCode != -1) { - val oldKey = getButtonKey(oldButtonCode) - editor.remove(oldKey) // Only need to remove UI text setting, others will be overwritten - } - + val key = getInputButtonKey(keyEvent) + // Pull in all codes associated with this key + // Migrate from the old int preference if need be + val buttonCodes = InputBindingSetting.getButtonSet(keyEvent) + buttonCodes.add(buttonCode) // Cleanup old mapping for this setting removeOldMapping() - // Write new mapping - editor.putInt(key, buttonCode) + editor.putStringSet(key, buttonCodes.mapTo(mutableSetOf()) {it.toString()}) // Write next reverse mapping for future cleanup editor.putString(reverseKey, key) @@ -229,9 +235,8 @@ class InputBindingSetting( } val code = translateEventToKeyId(keyEvent) - writeButtonMapping(getInputButtonKey(code)) - val uiString = "${keyEvent.device.name}: Button $code" - value = uiString + writeButtonMapping(keyEvent) + value = "${keyEvent.device.name}: ${getButtonName(code)}" } /** @@ -258,8 +263,7 @@ class InputBindingSetting( // use UP (-) to map vertical, but use RIGHT (+) to map horizontal val inverted = if (isHorizontalOrientation()) axisDir == '-' else axisDir == '+' writeAxisMapping(motionRange.axis, button, inverted) - val uiString = "${device.name}: Axis ${motionRange.axis}" + axisDir - value = uiString + value = "Axis ${motionRange.axis}$axisDir" } override val type = TYPE_INPUT_BINDING @@ -267,6 +271,241 @@ class InputBindingSetting( companion object { private const val INPUT_MAPPING_PREFIX = "InputMapping" + private fun toTitleCase(raw: String): String = + raw.replace("_", " ").lowercase() + .split(" ").joinToString(" ") { it.replaceFirstChar { c -> c.uppercase() } } + + private const val BUTTON_NAME_L3 = "Button L3" + private const val BUTTON_NAME_R3 = "Button R3" + + private val buttonNameOverrides = mapOf( + KeyEvent.KEYCODE_BUTTON_THUMBL to BUTTON_NAME_L3, + KeyEvent.KEYCODE_BUTTON_THUMBR to BUTTON_NAME_R3, + LINUX_BTN_DPAD_UP to "Dpad Up", + LINUX_BTN_DPAD_DOWN to "Dpad Down", + LINUX_BTN_DPAD_LEFT to "Dpad Left", + LINUX_BTN_DPAD_RIGHT to "Dpad Right" + ) + + fun getButtonName(keyCode: Int): String = + buttonNameOverrides[keyCode] + ?: toTitleCase(KeyEvent.keyCodeToString(keyCode).removePrefix("KEYCODE_")) + + private data class DefaultButtonMapping( + val settingKey: String, + val hostKeyCode: Int, + val guestButtonCode: Int + ) + // Auto-map always sets inverted = false. Users needing inverted axes should remap manually. + private data class DefaultAxisMapping( + val settingKey: String, + val hostAxis: Int, + val guestButton: Int, + val orientation: Int, + val inverted: Boolean + ) + + private val xboxFaceButtonMappings = listOf( + DefaultButtonMapping(Settings.KEY_BUTTON_A, KeyEvent.KEYCODE_BUTTON_B, NativeLibrary.ButtonType.BUTTON_A), + DefaultButtonMapping(Settings.KEY_BUTTON_B, KeyEvent.KEYCODE_BUTTON_A, NativeLibrary.ButtonType.BUTTON_B), + DefaultButtonMapping(Settings.KEY_BUTTON_X, KeyEvent.KEYCODE_BUTTON_Y, NativeLibrary.ButtonType.BUTTON_X), + DefaultButtonMapping(Settings.KEY_BUTTON_Y, KeyEvent.KEYCODE_BUTTON_X, NativeLibrary.ButtonType.BUTTON_Y) + ) + + private val nintendoFaceButtonMappings = listOf( + DefaultButtonMapping(Settings.KEY_BUTTON_A, KeyEvent.KEYCODE_BUTTON_A, NativeLibrary.ButtonType.BUTTON_A), + DefaultButtonMapping(Settings.KEY_BUTTON_B, KeyEvent.KEYCODE_BUTTON_B, NativeLibrary.ButtonType.BUTTON_B), + DefaultButtonMapping(Settings.KEY_BUTTON_X, KeyEvent.KEYCODE_BUTTON_X, NativeLibrary.ButtonType.BUTTON_X), + DefaultButtonMapping(Settings.KEY_BUTTON_Y, KeyEvent.KEYCODE_BUTTON_Y, NativeLibrary.ButtonType.BUTTON_Y) + ) + + private val commonButtonMappings = listOf( + DefaultButtonMapping(Settings.KEY_BUTTON_L, KeyEvent.KEYCODE_BUTTON_L1, NativeLibrary.ButtonType.TRIGGER_L), + DefaultButtonMapping(Settings.KEY_BUTTON_R, KeyEvent.KEYCODE_BUTTON_R1, NativeLibrary.ButtonType.TRIGGER_R), + DefaultButtonMapping(Settings.KEY_BUTTON_ZL, KeyEvent.KEYCODE_BUTTON_L2, NativeLibrary.ButtonType.BUTTON_ZL), + DefaultButtonMapping(Settings.KEY_BUTTON_ZR, KeyEvent.KEYCODE_BUTTON_R2, NativeLibrary.ButtonType.BUTTON_ZR), + DefaultButtonMapping(Settings.KEY_BUTTON_SELECT, KeyEvent.KEYCODE_BUTTON_SELECT, NativeLibrary.ButtonType.BUTTON_SELECT), + DefaultButtonMapping(Settings.KEY_BUTTON_START, KeyEvent.KEYCODE_BUTTON_START, NativeLibrary.ButtonType.BUTTON_START) + ) + + private val dpadButtonMappings = listOf( + DefaultButtonMapping(Settings.KEY_BUTTON_UP, KeyEvent.KEYCODE_DPAD_UP, NativeLibrary.ButtonType.DPAD_UP), + DefaultButtonMapping(Settings.KEY_BUTTON_DOWN, KeyEvent.KEYCODE_DPAD_DOWN, NativeLibrary.ButtonType.DPAD_DOWN), + DefaultButtonMapping(Settings.KEY_BUTTON_LEFT, KeyEvent.KEYCODE_DPAD_LEFT, NativeLibrary.ButtonType.DPAD_LEFT), + DefaultButtonMapping(Settings.KEY_BUTTON_RIGHT, KeyEvent.KEYCODE_DPAD_RIGHT, NativeLibrary.ButtonType.DPAD_RIGHT) + ) + + private val stickAxisMappings = listOf( + DefaultAxisMapping(Settings.KEY_CIRCLEPAD_AXIS_HORIZONTAL, MotionEvent.AXIS_X, NativeLibrary.ButtonType.STICK_LEFT, 0, false), + DefaultAxisMapping(Settings.KEY_CIRCLEPAD_AXIS_VERTICAL, MotionEvent.AXIS_Y, NativeLibrary.ButtonType.STICK_LEFT, 1, false), + DefaultAxisMapping(Settings.KEY_CSTICK_AXIS_HORIZONTAL, MotionEvent.AXIS_Z, NativeLibrary.ButtonType.STICK_C, 0, false), + DefaultAxisMapping(Settings.KEY_CSTICK_AXIS_VERTICAL, MotionEvent.AXIS_RZ, NativeLibrary.ButtonType.STICK_C, 1, false) + ) + + private val dpadAxisMappings = listOf( + DefaultAxisMapping(Settings.KEY_DPAD_AXIS_HORIZONTAL, MotionEvent.AXIS_HAT_X, NativeLibrary.ButtonType.DPAD, 0, false), + DefaultAxisMapping(Settings.KEY_DPAD_AXIS_VERTICAL, MotionEvent.AXIS_HAT_Y, NativeLibrary.ButtonType.DPAD, 1, false) + ) + + // Nintendo Switch Joy-Con specific mappings. + // Joy-Cons connected via Bluetooth on Android have several quirks: + // - They register as two separate InputDevices (left and right) + // - Android's evdev translation swaps A<->B (BTN_EAST->BUTTON_B, BTN_SOUTH->BUTTON_A) + // but does NOT swap X<->Y (BTN_NORTH->BUTTON_X, BTN_WEST->BUTTON_Y) + // - D-pad buttons arrive as KEYCODE_UNKNOWN (0) with Linux BTN_DPAD_* scan codes + // - Right stick uses AXIS_RX/AXIS_RY instead of AXIS_Z/AXIS_RZ + private const val NINTENDO_VENDOR_ID = 0x057e + + // Linux BTN_DPAD_* values (0x220-0x223). Joy-Con D-pad buttons arrive as + // KEYCODE_UNKNOWN with these scan codes because Android's input layer doesn't + // translate them to KEYCODE_DPAD_*. translateEventToKeyId() falls back to + // the scan code in that case. + private const val LINUX_BTN_DPAD_UP = 0x220 // 544 + private const val LINUX_BTN_DPAD_DOWN = 0x221 // 545 + private const val LINUX_BTN_DPAD_LEFT = 0x222 // 546 + private const val LINUX_BTN_DPAD_RIGHT = 0x223 // 547 + + // Joy-Con face buttons: A/B are swapped by Android's evdev layer, but X/Y are not. + // This is different from both the standard Xbox table (full swap) and the + // Nintendo table (no swap). + private val joyconFaceButtonMappings = listOf( + DefaultButtonMapping(Settings.KEY_BUTTON_A, KeyEvent.KEYCODE_BUTTON_B, NativeLibrary.ButtonType.BUTTON_A), + DefaultButtonMapping(Settings.KEY_BUTTON_B, KeyEvent.KEYCODE_BUTTON_A, NativeLibrary.ButtonType.BUTTON_B), + DefaultButtonMapping(Settings.KEY_BUTTON_X, KeyEvent.KEYCODE_BUTTON_X, NativeLibrary.ButtonType.BUTTON_X), + DefaultButtonMapping(Settings.KEY_BUTTON_Y, KeyEvent.KEYCODE_BUTTON_Y, NativeLibrary.ButtonType.BUTTON_Y) + ) + + // Joy-Con D-pad: uses Linux scan codes because Android reports BTN_DPAD_* as KEYCODE_UNKNOWN + private val joyconDpadButtonMappings = listOf( + DefaultButtonMapping(Settings.KEY_BUTTON_UP, LINUX_BTN_DPAD_UP, NativeLibrary.ButtonType.DPAD_UP), + DefaultButtonMapping(Settings.KEY_BUTTON_DOWN, LINUX_BTN_DPAD_DOWN, NativeLibrary.ButtonType.DPAD_DOWN), + DefaultButtonMapping(Settings.KEY_BUTTON_LEFT, LINUX_BTN_DPAD_LEFT, NativeLibrary.ButtonType.DPAD_LEFT), + DefaultButtonMapping(Settings.KEY_BUTTON_RIGHT, LINUX_BTN_DPAD_RIGHT, NativeLibrary.ButtonType.DPAD_RIGHT) + ) + + // Joy-Con sticks: left stick is AXIS_X/Y (standard), right stick is AXIS_RX/RY + // (not Z/RZ like most controllers). The horizontal axis is inverted relative to + // the standard orientation - verified empirically on paired Joy-Cons via Bluetooth. + private val joyconStickAxisMappings = listOf( + DefaultAxisMapping(Settings.KEY_CIRCLEPAD_AXIS_HORIZONTAL, MotionEvent.AXIS_X, NativeLibrary.ButtonType.STICK_LEFT, 0, false), + DefaultAxisMapping(Settings.KEY_CIRCLEPAD_AXIS_VERTICAL, MotionEvent.AXIS_Y, NativeLibrary.ButtonType.STICK_LEFT, 1, false), + DefaultAxisMapping(Settings.KEY_CSTICK_AXIS_HORIZONTAL, MotionEvent.AXIS_RX, NativeLibrary.ButtonType.STICK_C, 0, true), + DefaultAxisMapping(Settings.KEY_CSTICK_AXIS_VERTICAL, MotionEvent.AXIS_RY, NativeLibrary.ButtonType.STICK_C, 1, false) + ) + + /** + * Detects whether a device is a Nintendo Switch Joy-Con (as opposed to a + * Pro Controller or other Nintendo device) by checking vendor ID + device + * capabilities. Joy-Cons lack AXIS_HAT_X/Y and use AXIS_RX/RY for the + * right stick, while the Pro Controller has standard HAT axes and Z/RZ. + */ + fun isJoyCon(device: InputDevice?): Boolean { + if (device == null) return false + if (device.vendorId != NINTENDO_VENDOR_ID) return false + + // Pro Controllers have HAT_X/HAT_Y (D-pad) and Z/RZ (right stick). + // Joy-Cons lack both: no HAT axes, right stick on RX/RY instead of Z/RZ. + var hasHatAxes = false + var hasStandardRightStick = false + for (range in device.motionRanges) { + when (range.axis) { + MotionEvent.AXIS_HAT_X, MotionEvent.AXIS_HAT_Y -> hasHatAxes = true + MotionEvent.AXIS_Z, MotionEvent.AXIS_RZ -> hasStandardRightStick = true + } + } + return !hasHatAxes && !hasStandardRightStick + } + + private val allBindingKeys: Set by lazy { + (Settings.buttonKeys + Settings.triggerKeys + + Settings.circlePadKeys + Settings.cStickKeys + Settings.dPadAxisKeys + + Settings.dPadButtonKeys).toSet() + } + + fun clearAllBindings() { + val prefs = PreferenceManager.getDefaultSharedPreferences(CitraApplication.appContext) + val editor = prefs.edit() + val allKeys = prefs.all.keys.toList() + for (key in allKeys) { + if (key.startsWith(INPUT_MAPPING_PREFIX) || key in allBindingKeys) { + editor.remove(key) + } + } + editor.apply() + } + + private fun applyBindings( + buttonMappings: List, + axisMappings: List + ) { + val prefs = PreferenceManager.getDefaultSharedPreferences(CitraApplication.appContext) + val editor = prefs.edit() + buttonMappings.forEach { applyDefaultButtonMapping(editor, it) } + axisMappings.forEach { applyDefaultAxisMapping(editor, it) } + editor.apply() + } + + /** + * Applies Joy-Con specific bindings: scan code D-pad, partial face button + * swap, and AXIS_RX/RY right stick. + */ + fun applyJoyConBindings() { + applyBindings( + joyconFaceButtonMappings + commonButtonMappings + joyconDpadButtonMappings, + joyconStickAxisMappings + ) + } + + /** + * Applies auto-mapped bindings based on detected controller layout and d-pad type. + * + * @param isNintendoLayout true if the controller uses Nintendo face button layout + * (A=east, B=south), false for Xbox layout (A=south, B=east) + * @param useAxisDpad true if the d-pad should be mapped as axis (HAT_X/HAT_Y), + * false if it should be mapped as individual button keycodes (DPAD_UP/DOWN/LEFT/RIGHT) + */ + fun applyAutoMapBindings(isNintendoLayout: Boolean, useAxisDpad: Boolean) { + val faceButtons = if (isNintendoLayout) nintendoFaceButtonMappings else xboxFaceButtonMappings + val buttonMappings = if (useAxisDpad) { + faceButtons + commonButtonMappings + } else { + faceButtons + commonButtonMappings + dpadButtonMappings + } + val axisMappings = if (useAxisDpad) { + stickAxisMappings + dpadAxisMappings + } else { + stickAxisMappings + } + applyBindings(buttonMappings, axisMappings) + } + + private fun applyDefaultButtonMapping( + editor: SharedPreferences.Editor, + mapping: DefaultButtonMapping + ) { + val prefKey = getInputButtonKey(mapping.hostKeyCode) + editor.putInt(prefKey, mapping.guestButtonCode) + editor.putString(mapping.settingKey, getButtonName(mapping.hostKeyCode)) + editor.putString( + "${INPUT_MAPPING_PREFIX}_ReverseMapping_${mapping.settingKey}", + prefKey + ) + } + + private fun applyDefaultAxisMapping( + editor: SharedPreferences.Editor, + mapping: DefaultAxisMapping + ) { + val axisKey = getInputAxisKey(mapping.hostAxis) + editor.putInt(getInputAxisOrientationKey(mapping.hostAxis), mapping.orientation) + editor.putInt(getInputAxisButtonKey(mapping.hostAxis), mapping.guestButton) + editor.putBoolean(getInputAxisInvertedKey(mapping.hostAxis), mapping.inverted) + val dir = if (mapping.orientation == 0) '+' else '-' + editor.putString(mapping.settingKey, "Axis ${mapping.hostAxis}$dir") + val reverseKey = "${INPUT_MAPPING_PREFIX}_ReverseMapping_${mapping.settingKey}_${mapping.orientation}" + editor.putString(reverseKey, axisKey) + } + /** * Returns the settings key for the specified Citra button code. */ @@ -289,19 +528,31 @@ class InputBindingSetting( NativeLibrary.ButtonType.DPAD_RIGHT -> Settings.KEY_BUTTON_RIGHT else -> "" } - /** - * Helper function to get the settings key for an gamepad button. - * + * Get the mutable set of int button values this key should map to given an event */ - @Deprecated("Use the new getInputButtonKey(keyEvent) method to handle unknown keys") - fun getInputButtonKey(keyCode: Int): String = "${INPUT_MAPPING_PREFIX}_HostAxis_${keyCode}" + fun getButtonSet(keyCode: KeyEvent):MutableSet { + val key = getInputButtonKey(keyCode) + val preferences = PreferenceManager.getDefaultSharedPreferences(CitraApplication.appContext) + var buttonCodes = try { + preferences.getStringSet(key, mutableSetOf()) + } catch (e: ClassCastException) { + val prefInt = preferences.getInt(key, -1); + val migratedSet = if (prefInt != -1) { + mutableSetOf(prefInt.toString()) + } else { + mutableSetOf() + } + migratedSet + } + if (buttonCodes == null) buttonCodes = mutableSetOf() + return buttonCodes.mapNotNull { it.toIntOrNull() }.toMutableSet() + } - /** - * Helper function to get the settings key for an gamepad button. - * - */ - fun getInputButtonKey(event: KeyEvent): String = "${INPUT_MAPPING_PREFIX}_HostAxis_${translateEventToKeyId(event)}" + private fun getInputButtonKey(keyId: Int): String = "${INPUT_MAPPING_PREFIX}_HostAxis_${keyId}" + + /** Falls back to the scan code when keyCode is KEYCODE_UNKNOWN. */ + fun getInputButtonKey(event: KeyEvent): String = getInputButtonKey(translateEventToKeyId(event)) /** * Helper function to get the settings key for an gamepad axis. diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/MultiChoiceSetting.kt b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/MultiChoiceSetting.kt new file mode 100644 index 000000000..d097696e0 --- /dev/null +++ b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/MultiChoiceSetting.kt @@ -0,0 +1,46 @@ +// Copyright Citra Emulator Project / Azahar Emulator Project +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +package org.citra.citra_emu.features.settings.model.view +import org.citra.citra_emu.features.settings.model.AbstractSetting +import org.citra.citra_emu.features.settings.model.IntListSetting +class MultiChoiceSetting( + setting: AbstractSetting?, + titleId: Int, + descriptionId: Int, + val choicesId: Int, + val valuesId: Int, + val key: String? = null, + val defaultValue: List? = null, + override var isEnabled: Boolean = true +) : SettingsItem(setting, titleId, descriptionId) { + override val type = TYPE_MULTI_CHOICE + + val selectedValues: List + get() { + if (setting == null) { + return defaultValue!! + } + try { + val setting = setting as IntListSetting + return setting.list + }catch (_: ClassCastException) { + } + return defaultValue!! + } + + /** + * Write a value to the backing list. If that int was previously null, + * initializes a new one and returns it, so it can be added to the Hashmap. + * + * @param selection New value of the int. + * @return the existing setting with the new value applied. + */ + fun setSelectedValue(selection: List): IntListSetting { + val intSetting = setting as IntListSetting + intSetting.list = selection + return intSetting + } + +} diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/RunnableSetting.kt b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/RunnableSetting.kt index 99039556b..54e8fd09b 100644 --- a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/RunnableSetting.kt +++ b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/RunnableSetting.kt @@ -1,10 +1,11 @@ -// Copyright 2023 Citra Emulator Project +// Copyright Citra Emulator Project / Azahar Emulator Project // Licensed under GPLv2 or any later version // Refer to the license.txt file included. package org.citra.citra_emu.features.settings.model.view import androidx.annotation.DrawableRes +import org.citra.citra_emu.activities.EmulationActivity class RunnableSetting( titleId: Int, @@ -12,7 +13,11 @@ class RunnableSetting( val isRuntimeRunnable: Boolean, @DrawableRes val iconId: Int = 0, val runnable: () -> Unit, - val value: (() -> String)? = null + val value: (() -> String)? = null, + val onLongClick: (() -> Boolean)? = null ) : SettingsItem(null, titleId, descriptionId) { override val type = TYPE_RUNNABLE + + override val isEditable: Boolean + get() = if (EmulationActivity.isRunning()) isRuntimeRunnable else true } diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/SettingsItem.kt b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/SettingsItem.kt index c3f11def5..066912dd9 100644 --- a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/SettingsItem.kt +++ b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/SettingsItem.kt @@ -22,7 +22,7 @@ abstract class SettingsItem( ) { abstract val type: Int - val isEditable: Boolean + open val isEditable: Boolean get() { if (!EmulationActivity.isRunning()) return true return setting?.isRuntimeEditable ?: false @@ -47,5 +47,6 @@ abstract class SettingsItem( const val TYPE_INPUT_BINDING = 8 const val TYPE_STRING_INPUT = 9 const val TYPE_FLOAT_INPUT = 10 + const val TYPE_MULTI_CHOICE = 11 } } diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/SettingsAdapter.kt b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/SettingsAdapter.kt index 4bd5d3b5f..43a1dcbbd 100644 --- a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/SettingsAdapter.kt +++ b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/SettingsAdapter.kt @@ -41,12 +41,14 @@ import org.citra.citra_emu.features.settings.model.AbstractIntSetting import org.citra.citra_emu.features.settings.model.AbstractSetting import org.citra.citra_emu.features.settings.model.AbstractStringSetting import org.citra.citra_emu.features.settings.model.FloatSetting +import org.citra.citra_emu.features.settings.model.IntListSetting import org.citra.citra_emu.features.settings.model.ScaledFloatSetting import org.citra.citra_emu.features.settings.model.AbstractShortSetting import org.citra.citra_emu.features.settings.model.view.DateTimeSetting import org.citra.citra_emu.features.settings.model.view.InputBindingSetting import org.citra.citra_emu.features.settings.model.view.SettingsItem import org.citra.citra_emu.features.settings.model.view.SingleChoiceSetting +import org.citra.citra_emu.features.settings.model.view.MultiChoiceSetting import org.citra.citra_emu.features.settings.model.view.SliderSetting import org.citra.citra_emu.features.settings.model.view.StringInputSetting import org.citra.citra_emu.features.settings.model.view.StringSingleChoiceSetting @@ -55,6 +57,7 @@ import org.citra.citra_emu.features.settings.model.view.SwitchSetting import org.citra.citra_emu.features.settings.ui.viewholder.DateTimeViewHolder import org.citra.citra_emu.features.settings.ui.viewholder.HeaderViewHolder import org.citra.citra_emu.features.settings.ui.viewholder.InputBindingSettingViewHolder +import org.citra.citra_emu.features.settings.ui.viewholder.MultiChoiceViewHolder import org.citra.citra_emu.features.settings.ui.viewholder.RunnableViewHolder import org.citra.citra_emu.features.settings.ui.viewholder.SettingViewHolder import org.citra.citra_emu.features.settings.ui.viewholder.SingleChoiceViewHolder @@ -62,6 +65,7 @@ import org.citra.citra_emu.features.settings.ui.viewholder.SliderViewHolder import org.citra.citra_emu.features.settings.ui.viewholder.StringInputViewHolder import org.citra.citra_emu.features.settings.ui.viewholder.SubmenuViewHolder import org.citra.citra_emu.features.settings.ui.viewholder.SwitchSettingViewHolder +import org.citra.citra_emu.fragments.AutoMapDialogFragment import org.citra.citra_emu.fragments.MessageDialogFragment import org.citra.citra_emu.fragments.MotionBottomSheetDialogFragment import org.citra.citra_emu.utils.SystemSaveGame @@ -72,7 +76,8 @@ import kotlin.math.roundToInt class SettingsAdapter( private val fragmentView: SettingsFragmentView, public val context: Context -) : RecyclerView.Adapter(), DialogInterface.OnClickListener { +) : RecyclerView.Adapter(), DialogInterface.OnClickListener, + DialogInterface.OnMultiChoiceClickListener { private var settings: ArrayList? = null private var clickedItem: SettingsItem? = null private var clickedPosition: Int @@ -104,6 +109,10 @@ class SettingsAdapter( SingleChoiceViewHolder(ListItemSettingBinding.inflate(inflater), this) } + SettingsItem.TYPE_MULTI_CHOICE -> { + MultiChoiceViewHolder(ListItemSettingBinding.inflate(inflater), this) + } + SettingsItem.TYPE_SLIDER -> { SliderViewHolder(ListItemSettingBinding.inflate(inflater), this) } @@ -181,21 +190,30 @@ class SettingsAdapter( SettingsItem.TYPE_SLIDER -> { (oldItem as SliderSetting).isEnabled == (newItem as SliderSetting).isEnabled } + SettingsItem.TYPE_SWITCH -> { (oldItem as SwitchSetting).isEnabled == (newItem as SwitchSetting).isEnabled } + SettingsItem.TYPE_SINGLE_CHOICE -> { (oldItem as SingleChoiceSetting).isEnabled == (newItem as SingleChoiceSetting).isEnabled } + SettingsItem.TYPE_MULTI_CHOICE -> { + (oldItem as MultiChoiceSetting).isEnabled == (newItem as MultiChoiceSetting).isEnabled + } + SettingsItem.TYPE_DATETIME_SETTING -> { (oldItem as DateTimeSetting).isEnabled == (newItem as DateTimeSetting).isEnabled } + SettingsItem.TYPE_STRING_SINGLE_CHOICE -> { (oldItem as StringSingleChoiceSetting).isEnabled == (newItem as StringSingleChoiceSetting).isEnabled } + SettingsItem.TYPE_STRING_INPUT -> { (oldItem as StringInputSetting).isEnabled == (newItem as StringInputSetting).isEnabled } + else -> { oldItem == newItem } @@ -214,7 +232,7 @@ class SettingsAdapter( // If statement is required otherwise the app will crash on activity recreate ex. theme settings if (fragmentView.activityView != null) - // Reload the settings list to update the UI + // Reload the settings list to update the UI fragmentView.loadSettingsList() } @@ -232,6 +250,27 @@ class SettingsAdapter( onSingleChoiceClick(item) } + private fun onMultiChoiceClick(item: MultiChoiceSetting) { + clickedItem = item + + val value: BooleanArray = getSelectionForMultiChoiceValue(item); + dialog = MaterialAlertDialogBuilder(context) + .setTitle(item.nameId) + .setMultiChoiceItems(item.choicesId, value, this) + .setOnDismissListener { + if (clickedPosition != -1) { + notifyItemChanged(clickedPosition) + clickedPosition = -1 + } + } + .show() + } + + fun onMultiChoiceClick(item: MultiChoiceSetting, position: Int) { + clickedPosition = position + onMultiChoiceClick(item) + } + private fun onStringSingleChoiceClick(item: StringSingleChoiceSetting) { clickedItem = item dialog = context?.let { @@ -360,14 +399,14 @@ class SettingsAdapter( sliderString = sliderProgress.roundToInt().toString() if (textSliderValue?.text.toString() != sliderString) { textSliderValue?.setText(sliderString) - textSliderValue?.setSelection(textSliderValue?.length() ?: 0 ) + textSliderValue?.setSelection(textSliderValue?.length() ?: 0) } } else { val currentText = textSliderValue?.text.toString() val currentTextValue = currentText.toFloat() if (currentTextValue != sliderProgress) { textSliderValue?.setText(sliderString) - textSliderValue?.setSelection(textSliderValue?.length() ?: 0 ) + textSliderValue?.setSelection(textSliderValue?.length() ?: 0) } } } @@ -447,6 +486,7 @@ class SettingsAdapter( } it.setSelectedValue(value) } + is AbstractShortSetting -> { val value = getValueForSingleChoiceSelection(it, which).toShort() if (it.selectedValue.toShort() != value) { @@ -454,6 +494,7 @@ class SettingsAdapter( } it.setSelectedValue(value) } + else -> throw IllegalStateException("Unrecognized type used for SingleChoiceSetting!") } fragmentView?.putSetting(setting) @@ -499,11 +540,12 @@ class SettingsAdapter( val setting = it.setSelectedValue(value) fragmentView?.putSetting(setting) } + else -> { val setting = it.setSelectedValue(sliderProgress) fragmentView?.putSetting(setting) } - } + } fragmentView.loadSettingsList() closeDialog() } @@ -519,7 +561,7 @@ class SettingsAdapter( fragmentView?.putSetting(setting) fragmentView.loadSettingsList() closeDialog() - } + } } } clickedItem = null @@ -527,6 +569,21 @@ class SettingsAdapter( textInputValue = "" } + //onclick for multichoice + override fun onClick(dialog: DialogInterface?, which: Int, isChecked: Boolean) { + val mcsetting = clickedItem as? MultiChoiceSetting + mcsetting?.let { + val value = getValueForMultiChoiceSelection(it, which) + if (it.selectedValues.contains(value) != isChecked) { + val setting = it.setSelectedValue((if (isChecked) it.selectedValues + value else it.selectedValues - value).sorted()) + fragmentView?.putSetting(setting) + fragmentView?.onSettingChanged() + } + fragmentView.loadSettingsList() + } + } + + fun onLongClick(setting: AbstractSetting, position: Int): Boolean { MaterialAlertDialogBuilder(context) .setMessage(R.string.reset_setting_confirmation) @@ -586,26 +643,42 @@ class SettingsAdapter( ).show((fragmentView as SettingsFragment).childFragmentManager, MessageDialogFragment.TAG) } + fun onClickAutoMap() { + val activity = fragmentView.activityView as FragmentActivity + AutoMapDialogFragment.newInstance { + fragmentView.loadSettingsList() + fragmentView.onSettingChanged() + }.show(activity.supportFragmentManager, AutoMapDialogFragment.TAG) + } + + fun onLongClickAutoMap(): Boolean { + showConfirmationDialog(R.string.controller_clear_all, R.string.controller_clear_all_confirm) { + InputBindingSetting.clearAllBindings() + fragmentView.loadSettingsList() + fragmentView.onSettingChanged() + } + return true + } + fun onClickRegenerateConsoleId() { - MaterialAlertDialogBuilder(context) - .setTitle(R.string.regenerate_console_id) - .setMessage(R.string.regenerate_console_id_description) - .setPositiveButton(android.R.string.ok) { _: DialogInterface, _: Int -> - SystemSaveGame.regenerateConsoleId() - notifyDataSetChanged() - } - .setNegativeButton(android.R.string.cancel, null) - .show() + showConfirmationDialog(R.string.regenerate_console_id, R.string.regenerate_console_id_description) { + SystemSaveGame.regenerateConsoleId() + notifyDataSetChanged() + } } fun onClickRegenerateMAC() { + showConfirmationDialog(R.string.regenerate_mac_address, R.string.regenerate_mac_address_description) { + SystemSaveGame.regenerateMac() + notifyDataSetChanged() + } + } + + private fun showConfirmationDialog(titleId: Int, messageId: Int, onConfirm: () -> Unit) { MaterialAlertDialogBuilder(context) - .setTitle(R.string.regenerate_mac_address) - .setMessage(R.string.regenerate_mac_address_description) - .setPositiveButton(android.R.string.ok) { _: DialogInterface, _: Int -> - SystemSaveGame.regenerateMac() - notifyDataSetChanged() - } + .setTitle(titleId) + .setMessage(messageId) + .setPositiveButton(android.R.string.ok) { _: DialogInterface, _: Int -> onConfirm() } .setNegativeButton(android.R.string.cancel, null) .show() } @@ -631,6 +704,16 @@ class SettingsAdapter( } } + private fun getValueForMultiChoiceSelection(item: MultiChoiceSetting, which: Int): Int { + val valuesId = item.valuesId + return if (valuesId > 0) { + val valuesArray = context.resources.getIntArray(valuesId) + valuesArray[which] + } else { + which + } + } + private fun getSelectionForSingleChoiceValue(item: SingleChoiceSetting): Int { val value = item.selectedValue val valuesId = item.valuesId @@ -647,4 +730,20 @@ class SettingsAdapter( } return -1 } + + private fun getSelectionForMultiChoiceValue(item: MultiChoiceSetting): BooleanArray { + val value = item.selectedValues; + val valuesId = item.valuesId; + if (valuesId > 0) { + val valuesArray = context.resources.getIntArray(valuesId); + val res = BooleanArray(valuesArray.size){false} + for (index in valuesArray.indices) { + if (value.contains(valuesArray[index])) { + res[index] = true; + } + } + return res; + } + return BooleanArray(1){false}; + } } diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/SettingsFragmentPresenter.kt b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/SettingsFragmentPresenter.kt index 1326401d5..0143ac804 100644 --- a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/SettingsFragmentPresenter.kt +++ b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/SettingsFragmentPresenter.kt @@ -14,6 +14,7 @@ import android.os.Build import android.text.TextUtils import androidx.preference.PreferenceManager import com.google.android.material.dialog.MaterialAlertDialogBuilder +import kotlinx.serialization.builtins.IntArraySerializer import org.citra.citra_emu.CitraApplication import org.citra.citra_emu.R import org.citra.citra_emu.display.ScreenLayout @@ -27,12 +28,14 @@ import org.citra.citra_emu.features.settings.model.AbstractStringSetting import org.citra.citra_emu.features.settings.model.BooleanSetting import org.citra.citra_emu.features.settings.model.FloatSetting import org.citra.citra_emu.features.settings.model.IntSetting +import org.citra.citra_emu.features.settings.model.IntListSetting import org.citra.citra_emu.features.settings.model.ScaledFloatSetting import org.citra.citra_emu.features.settings.model.Settings import org.citra.citra_emu.features.settings.model.StringSetting import org.citra.citra_emu.features.settings.model.view.DateTimeSetting import org.citra.citra_emu.features.settings.model.view.HeaderSetting import org.citra.citra_emu.features.settings.model.view.InputBindingSetting +import org.citra.citra_emu.features.settings.model.view.MultiChoiceSetting import org.citra.citra_emu.features.settings.model.view.RunnableSetting import org.citra.citra_emu.features.settings.model.view.SettingsItem import org.citra.citra_emu.features.settings.model.view.SingleChoiceSetting @@ -776,6 +779,16 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView) private fun addControlsSettings(sl: ArrayList) { settingsActivity.setToolbarTitle(settingsActivity.getString(R.string.preferences_controls)) sl.apply { + add( + RunnableSetting( + R.string.controller_auto_map, + R.string.controller_auto_map_description, + true, + R.drawable.ic_controller, + { settingsAdapter.onClickAutoMap() }, + onLongClick = { settingsAdapter.onLongClickAutoMap() } + ) + ) add(HeaderSetting(R.string.generic_buttons)) Settings.buttonKeys.forEachIndexed { i: Int, key: String -> val button = getInputObject(key) @@ -811,7 +824,7 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView) add(InputBindingSetting(button, Settings.triggerTitles[i])) } - add(HeaderSetting(R.string.controller_hotkeys)) + add(HeaderSetting(R.string.controller_hotkeys,R.string.controller_hotkeys_description)) Settings.hotKeys.forEachIndexed { i: Int, key: String -> val button = getInputObject(key) add(InputBindingSetting(button, Settings.hotkeyTitles[i])) @@ -898,6 +911,15 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView) IntSetting.RESOLUTION_FACTOR.key, IntSetting.RESOLUTION_FACTOR.defaultValue ) + ) + add( + SwitchSetting( + BooleanSetting.USE_INTEGER_SCALING, + R.string.use_integer_scaling, + R.string.use_integer_scaling_description, + BooleanSetting.USE_INTEGER_SCALING.key, + BooleanSetting.USE_INTEGER_SCALING.defaultValue + ) ) add( SwitchSetting( @@ -1148,6 +1170,17 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView) BooleanSetting.UPRIGHT_SCREEN.defaultValue ) ) + add( + MultiChoiceSetting( + IntListSetting.LAYOUTS_TO_CYCLE, + R.string.layouts_to_cycle, + R.string.layouts_to_cycle_description, + R.array.landscapeLayouts, + R.array.landscapeLayoutValues, + IntListSetting.LAYOUTS_TO_CYCLE.key, + IntListSetting.LAYOUTS_TO_CYCLE.defaultValue + ) + ) add( SingleChoiceSetting( IntSetting.PORTRAIT_SCREEN_LAYOUT, @@ -1784,6 +1817,15 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView) BooleanSetting.ENABLE_RPC_SERVER.defaultValue ) ) + add( + SwitchSetting( + BooleanSetting.TOGGLE_UNIQUE_DATA_CONSOLE_TYPE, + R.string.toggle_unique_data_console_type, + R.string.toggle_unique_data_console_type_desc, + BooleanSetting.TOGGLE_UNIQUE_DATA_CONSOLE_TYPE.key, + BooleanSetting.TOGGLE_UNIQUE_DATA_CONSOLE_TYPE.defaultValue + ) + ) add( SwitchSetting( BooleanSetting.DELAY_START_LLE_MODULES, diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/viewholder/MultiChoiceViewHolder.kt b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/viewholder/MultiChoiceViewHolder.kt new file mode 100644 index 000000000..8493115a4 --- /dev/null +++ b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/viewholder/MultiChoiceViewHolder.kt @@ -0,0 +1,80 @@ +// Copyright Citra Emulator Project / Azahar Emulator Project +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +package org.citra.citra_emu.features.settings.ui.viewholder + +import android.view.View +import org.citra.citra_emu.databinding.ListItemSettingBinding +import org.citra.citra_emu.features.settings.model.view.SettingsItem +import org.citra.citra_emu.features.settings.model.view.MultiChoiceSetting +import org.citra.citra_emu.features.settings.ui.SettingsAdapter + +class MultiChoiceViewHolder(val binding: ListItemSettingBinding, adapter: SettingsAdapter) : + SettingViewHolder(binding.root, adapter) { + private lateinit var setting: SettingsItem + + override fun bind(item: SettingsItem) { + setting = item + binding.textSettingName.setText(item.nameId) + if (item.descriptionId != 0) { + binding.textSettingDescription.visibility = View.VISIBLE + binding.textSettingDescription.setText(item.descriptionId) + } else { + binding.textSettingDescription.visibility = View.GONE + } + binding.textSettingValue.visibility = View.VISIBLE + binding.textSettingValue.text = getTextSetting() + + if (setting.isActive) { + binding.textSettingName.alpha = 1f + binding.textSettingDescription.alpha = 1f + binding.textSettingValue.alpha = 1f + } else { + binding.textSettingName.alpha = 0.5f + binding.textSettingDescription.alpha = 0.5f + binding.textSettingValue.alpha = 0.5f + } + } + + private fun getTextSetting(): String { + when (val item = setting) { + is MultiChoiceSetting -> { + val resMgr = binding.textSettingDescription.context.resources + val values = resMgr.getIntArray(item.valuesId) + var resList:List = emptyList(); + values.forEachIndexed { i: Int, value: Int -> + if ((setting as MultiChoiceSetting).selectedValues.contains(value)) { + resList = resList + resMgr.getStringArray(item.choicesId)[i]; + } + } + return resList.joinToString(); + } + + else -> return "" + } + } + + override fun onClick(clicked: View) { + if (!setting.isEditable || !setting.isEnabled) { + adapter.onClickDisabledSetting(!setting.isEditable) + return + } + + if (setting is MultiChoiceSetting) { + adapter.onMultiChoiceClick( + (setting as MultiChoiceSetting), + bindingAdapterPosition + ) + } + } + + override fun onLongClick(clicked: View): Boolean { + if (setting.isActive) { + return adapter.onLongClick(setting.setting!!, bindingAdapterPosition) + } else { + adapter.onClickDisabledSetting(!setting.isEditable) + } + return false + } +} diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/viewholder/RunnableViewHolder.kt b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/viewholder/RunnableViewHolder.kt index e3119e60d..d75368598 100644 --- a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/viewholder/RunnableViewHolder.kt +++ b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/viewholder/RunnableViewHolder.kt @@ -67,7 +67,10 @@ class RunnableViewHolder(val binding: ListItemSettingBinding, adapter: SettingsA } override fun onLongClick(clicked: View): Boolean { - // no-op - return true + if (!setting.isEditable) { + adapter.onClickDisabledSetting(true) + return true + } + return setting.onLongClick?.invoke() ?: true } } diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/utils/SettingsFile.kt b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/utils/SettingsFile.kt index dec3e4e0a..a9e1d4743 100644 --- a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/utils/SettingsFile.kt +++ b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/utils/SettingsFile.kt @@ -1,4 +1,4 @@ -// Copyright 2023 Citra Emulator Project +// Copyright Citra Emulator Project / Azahar Emulator Project // Licensed under GPLv2 or any later version // Refer to the license.txt file included. @@ -12,6 +12,7 @@ import org.citra.citra_emu.R import org.citra.citra_emu.features.settings.model.AbstractSetting import org.citra.citra_emu.features.settings.model.BooleanSetting import org.citra.citra_emu.features.settings.model.FloatSetting +import org.citra.citra_emu.features.settings.model.IntListSetting import org.citra.citra_emu.features.settings.model.IntSetting import org.citra.citra_emu.features.settings.model.ScaledFloatSetting import org.citra.citra_emu.features.settings.model.SettingSection @@ -255,6 +256,11 @@ object SettingsFile { return stringSetting } + val intListSetting = IntListSetting.from(key) + if (intListSetting != null) { + intListSetting.list = value.split(", ").map { it.toInt() } + } + return null } diff --git a/src/android/app/src/main/java/org/citra/citra_emu/fragments/AutoMapDialogFragment.kt b/src/android/app/src/main/java/org/citra/citra_emu/fragments/AutoMapDialogFragment.kt new file mode 100644 index 000000000..569a0caca --- /dev/null +++ b/src/android/app/src/main/java/org/citra/citra_emu/fragments/AutoMapDialogFragment.kt @@ -0,0 +1,152 @@ +// Copyright Citra Emulator Project / Azahar Emulator Project +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +package org.citra.citra_emu.fragments + +import android.os.Bundle +import android.view.InputDevice +import android.view.KeyEvent +import android.view.LayoutInflater +import android.view.MotionEvent +import android.view.View +import android.view.ViewGroup +import com.google.android.material.bottomsheet.BottomSheetBehavior +import com.google.android.material.bottomsheet.BottomSheetDialogFragment +import org.citra.citra_emu.R +import org.citra.citra_emu.databinding.DialogAutoMapBinding +import org.citra.citra_emu.features.settings.model.view.InputBindingSetting +import org.citra.citra_emu.utils.Log + +/** + * Captures a single button press to detect controller layout (Xbox vs Nintendo) + * and d-pad type (axis vs button), then applies the appropriate bindings. + */ +class AutoMapDialogFragment : BottomSheetDialogFragment() { + private var _binding: DialogAutoMapBinding? = null + private val binding get() = _binding!! + + private var onComplete: (() -> Unit)? = null + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View { + _binding = DialogAutoMapBinding.inflate(inflater) + return binding.root + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + BottomSheetBehavior.from(view.parent as View).state = + BottomSheetBehavior.STATE_EXPANDED + + isCancelable = false + view.requestFocus() + view.setOnFocusChangeListener { v, hasFocus -> if (!hasFocus) v.requestFocus() } + + binding.textTitle.setText(R.string.controller_auto_map) + binding.textMessage.setText(R.string.auto_map_prompt) + + binding.imageFaceButtons.setImageResource(R.drawable.automap_face_buttons) + + dialog?.setOnKeyListener { _, _, event -> onKeyEvent(event) } + + binding.buttonCancel.setOnClickListener { + dismiss() + } + } + + override fun onDestroyView() { + super.onDestroyView() + _binding = null + } + + private fun onKeyEvent(event: KeyEvent): Boolean { + if (event.action != KeyEvent.ACTION_UP) return false + + val keyCode = event.keyCode + val device = event.device + + // Check if this is a Nintendo Switch Joy-Con (not Pro Controller). + // Joy-Cons have unique quirks: split devices, non-standard D-pad scan codes, + // partial A/B swap but no X/Y swap from Android's evdev layer. + val isJoyCon = InputBindingSetting.isJoyCon(device) + + if (isJoyCon) { + Log.info("[AutoMap] Detected Joy-Con - using Joy-Con mappings") + InputBindingSetting.clearAllBindings() + InputBindingSetting.applyJoyConBindings() + onComplete?.invoke() + dismiss() + return true + } + + // For non-Joy-Con controllers, determine layout from which keycode arrives + // for the east/right position. + // The user is pressing the button in the "A" (east/right) position on the 3DS diamond. + // Xbox layout: east position sends KEYCODE_BUTTON_B (97) + // Nintendo layout: east position sends KEYCODE_BUTTON_A (96) + val isNintendoLayout = when (keyCode) { + KeyEvent.KEYCODE_BUTTON_A -> true + KeyEvent.KEYCODE_BUTTON_B -> false + else -> { + // Unrecognized button - ignore and wait for a valid press + Log.warning("[AutoMap] Ignoring unrecognized keycode $keyCode, waiting for A or B") + return true + } + } + + val layoutName = if (isNintendoLayout) "Nintendo" else "Xbox" + Log.info("[AutoMap] Detected $layoutName layout (keyCode=$keyCode)") + + val useAxisDpad = detectDpadType(device) + + val dpadName = if (useAxisDpad) "axis" else "button" + Log.info("[AutoMap] Detected $dpadName d-pad (device=${device?.name})") + + InputBindingSetting.clearAllBindings() + InputBindingSetting.applyAutoMapBindings(isNintendoLayout, useAxisDpad) + + onComplete?.invoke() + dismiss() + return true + } + + companion object { + const val TAG = "AutoMapDialogFragment" + + fun newInstance( + onComplete: () -> Unit + ): AutoMapDialogFragment { + val dialog = AutoMapDialogFragment() + dialog.onComplete = onComplete + return dialog + } + + /** + * Returns true for axis d-pad (HAT_X/HAT_Y), false for button d-pad (DPAD_UP/DOWN/LEFT/RIGHT). + * Prefers axis when both are present. Defaults to axis if detection fails. + */ + private fun detectDpadType(device: InputDevice?): Boolean { + if (device == null) return true + + val hasAxisDpad = device.motionRanges.any { + it.axis == MotionEvent.AXIS_HAT_X || it.axis == MotionEvent.AXIS_HAT_Y + } + + if (hasAxisDpad) return true + + val dpadKeyCodes = intArrayOf( + KeyEvent.KEYCODE_DPAD_UP, + KeyEvent.KEYCODE_DPAD_DOWN, + KeyEvent.KEYCODE_DPAD_LEFT, + KeyEvent.KEYCODE_DPAD_RIGHT + ) + val hasButtonDpad = device.hasKeys(*dpadKeyCodes).any { it } + + return !hasButtonDpad + } + } +} diff --git a/src/android/app/src/main/java/org/citra/citra_emu/fragments/EmulationFragment.kt b/src/android/app/src/main/java/org/citra/citra_emu/fragments/EmulationFragment.kt index 30b22cc64..d4ce96a55 100644 --- a/src/android/app/src/main/java/org/citra/citra_emu/fragments/EmulationFragment.kt +++ b/src/android/app/src/main/java/org/citra/citra_emu/fragments/EmulationFragment.kt @@ -11,6 +11,7 @@ import android.content.DialogInterface import android.content.Intent import android.content.IntentFilter import android.content.SharedPreferences +import android.content.res.Configuration import android.net.Uri import android.os.BatteryManager import android.os.Build @@ -132,14 +133,16 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback, Choreographer.Fram var intentGame: Game? = null if (intentUri != null) { intentGame = if (Game.extensions.contains(FileUtil.getExtension(intentUri))) { - GameHelper.getGame(intentUri, isInstalled = false, addedToLibrary = false) + // isInstalled, addedToLibrary and mediaType do not matter here + GameHelper.getGame(intentUri, isInstalled = false, addedToLibrary = false, mediaType = Game.MediaType.GAME_CARD) } else { null } } else if (oldIntentInfo.first != null) { val gameUri = Uri.parse(oldIntentInfo.first) intentGame = if (Game.extensions.contains(FileUtil.getExtension(gameUri))) { - GameHelper.getGame(gameUri, isInstalled = false, addedToLibrary = false) + // isInstalled, addedToLibrary and mediaType do not matter here + GameHelper.getGame(gameUri, isInstalled = false, addedToLibrary = false, mediaType = Game.MediaType.GAME_CARD) } else { null } @@ -175,6 +178,12 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback, Choreographer.Fram savedInstanceState: Bundle? ): View { _binding = FragmentEmulationBinding.inflate(inflater) + binding.inGameMenu.menu.findItem(R.id.menu_landscape_screen_layout).isVisible = + CitraApplication.appContext.resources.configuration.orientation != + Configuration.ORIENTATION_PORTRAIT + binding.inGameMenu.menu.findItem(R.id.menu_portrait_screen_layout).isVisible = + CitraApplication.appContext.resources.configuration.orientation == + Configuration.ORIENTATION_PORTRAIT return binding.root } diff --git a/src/android/app/src/main/java/org/citra/citra_emu/fragments/HomeSettingsFragment.kt b/src/android/app/src/main/java/org/citra/citra_emu/fragments/HomeSettingsFragment.kt index 63c435531..ceecc7572 100644 --- a/src/android/app/src/main/java/org/citra/citra_emu/fragments/HomeSettingsFragment.kt +++ b/src/android/app/src/main/java/org/citra/citra_emu/fragments/HomeSettingsFragment.kt @@ -33,7 +33,7 @@ import org.citra.citra_emu.adapters.HomeSettingAdapter import org.citra.citra_emu.databinding.DialogSoftwareKeyboardBinding import org.citra.citra_emu.databinding.FragmentHomeSettingsBinding import org.citra.citra_emu.features.settings.model.Settings -import org.citra.citra_emu.features.settings.model.StringSetting +import org.citra.citra_emu.features.settings.SettingKeys import org.citra.citra_emu.features.settings.ui.SettingsActivity import org.citra.citra_emu.features.settings.utils.SettingsFile import org.citra.citra_emu.model.Game @@ -89,7 +89,7 @@ class HomeSettingsFragment : Fragment() { { val inflater = LayoutInflater.from(context) val inputBinding = DialogSoftwareKeyboardBinding.inflate(inflater) - var textInputValue: String = preferences.getString("last_artic_base_addr", "")!! + var textInputValue: String = preferences.getString(SettingKeys.last_artic_base_addr(), "")!! inputBinding.editTextInput.setText(textInputValue) inputBinding.editTextInput.doOnTextChanged { text, _, _, _ -> @@ -103,7 +103,7 @@ class HomeSettingsFragment : Fragment() { .setPositiveButton(android.R.string.ok) { _, _ -> if (textInputValue.isNotEmpty()) { preferences.edit() - .putString("last_artic_base_addr", textInputValue) + .putString(SettingKeys.last_artic_base_addr(), textInputValue) .apply() val menu = Game( title = getString(R.string.artic_base), diff --git a/src/android/app/src/main/java/org/citra/citra_emu/fragments/SetupFragment.kt b/src/android/app/src/main/java/org/citra/citra_emu/fragments/SetupFragment.kt index 0a25044ea..f4cefc94f 100644 --- a/src/android/app/src/main/java/org/citra/citra_emu/fragments/SetupFragment.kt +++ b/src/android/app/src/main/java/org/citra/citra_emu/fragments/SetupFragment.kt @@ -567,7 +567,7 @@ class SetupFragment : Fragment() { } if (!BuildUtil.isGooglePlayBuild) { - if (NativeLibrary.getUserDirectory(result) == "") { + if (NativeLibrary.getNativePath(result) == "") { SelectUserDirectoryDialogFragment.newInstance( mainActivity, R.string.invalid_selection, diff --git a/src/android/app/src/main/java/org/citra/citra_emu/fragments/SystemFilesFragment.kt b/src/android/app/src/main/java/org/citra/citra_emu/fragments/SystemFilesFragment.kt index 7b76149d3..fdf644687 100644 --- a/src/android/app/src/main/java/org/citra/citra_emu/fragments/SystemFilesFragment.kt +++ b/src/android/app/src/main/java/org/citra/citra_emu/fragments/SystemFilesFragment.kt @@ -39,6 +39,7 @@ import org.citra.citra_emu.R import org.citra.citra_emu.databinding.DialogSoftwareKeyboardBinding import org.citra.citra_emu.databinding.FragmentSystemFilesBinding import org.citra.citra_emu.features.settings.model.Settings +import org.citra.citra_emu.features.settings.SettingKeys import org.citra.citra_emu.model.Game import org.citra.citra_emu.utils.SystemSaveGame import org.citra.citra_emu.viewmodel.GamesViewModel @@ -177,7 +178,7 @@ class SystemFilesFragment : Fragment() { binding.buttonSetUpSystemFiles.setOnClickListener { val inflater = LayoutInflater.from(context) val inputBinding = DialogSoftwareKeyboardBinding.inflate(inflater) - var textInputValue: String = preferences.getString("last_artic_base_addr", "")!! + var textInputValue: String = preferences.getString(SettingKeys.last_artic_base_addr(), "")!! val progressDialog = showProgressDialog( getText(R.string.setup_system_files), @@ -274,7 +275,7 @@ class SystemFilesFragment : Fragment() { .setPositiveButton(android.R.string.ok) { diag, _ -> if (textInputValue.isNotEmpty() && !(!buttonO3ds.isChecked && !buttonN3ds.isChecked)) { preferences.edit() - .putString("last_artic_base_addr", textInputValue) + .putString(SettingKeys.last_artic_base_addr(), textInputValue) .apply() val menu = Game( title = getString(R.string.artic_base), diff --git a/src/android/app/src/main/java/org/citra/citra_emu/model/Game.kt b/src/android/app/src/main/java/org/citra/citra_emu/model/Game.kt index 7a204e3fd..16fbd3490 100644 --- a/src/android/app/src/main/java/org/citra/citra_emu/model/Game.kt +++ b/src/android/app/src/main/java/org/citra/citra_emu/model/Game.kt @@ -16,10 +16,12 @@ import org.citra.citra_emu.activities.EmulationActivity @Parcelize @Serializable class Game( + val valid: Boolean = false, val title: String = "", val description: String = "", val path: String = "", val titleId: Long = 0L, + val mediaType: MediaType = MediaType.GAME_CARD, val company: String = "", val regions: String = "", val isInstalled: Boolean = false, @@ -58,10 +60,23 @@ class Game( result = 31 * result + regions.hashCode() result = 31 * result + path.hashCode() result = 31 * result + titleId.hashCode() + result = 31 * result + mediaType.hashCode() result = 31 * result + company.hashCode() return result } + enum class MediaType(val value: Int) { + NAND(0), + SDMC(1), + GAME_CARD(2); + + companion object { + fun fromInt(value: Int): MediaType? { + return MediaType.entries.find { it.value == value } + } + } + } + companion object { val allExtensions: Set get() = extensions + badExtensions diff --git a/src/android/app/src/main/java/org/citra/citra_emu/ui/main/MainActivity.kt b/src/android/app/src/main/java/org/citra/citra_emu/ui/main/MainActivity.kt index e1416bd37..80b26685d 100644 --- a/src/android/app/src/main/java/org/citra/citra_emu/ui/main/MainActivity.kt +++ b/src/android/app/src/main/java/org/citra/citra_emu/ui/main/MainActivity.kt @@ -367,7 +367,7 @@ class MainActivity : AppCompatActivity(), ThemeProvider { } if (!BuildUtil.isGooglePlayBuild) { - if (NativeLibrary.getUserDirectory(result) == "") { + if (NativeLibrary.getNativePath(result) == "") { SelectUserDirectoryDialogFragment.newInstance( this, R.string.invalid_selection, diff --git a/src/android/app/src/main/java/org/citra/citra_emu/utils/CiaInstallWorker.kt b/src/android/app/src/main/java/org/citra/citra_emu/utils/CiaInstallWorker.kt index dfb10d310..5dd7821f8 100644 --- a/src/android/app/src/main/java/org/citra/citra_emu/utils/CiaInstallWorker.kt +++ b/src/android/app/src/main/java/org/citra/citra_emu/utils/CiaInstallWorker.kt @@ -1,4 +1,4 @@ -// Copyright 2023 Citra Emulator Project +// Copyright Citra Emulator Project / Azahar Emulator Project // Licensed under GPLv2 or any later version // Refer to the license.txt file included. @@ -12,9 +12,11 @@ import androidx.core.app.NotificationCompat import androidx.work.ForegroundInfo import androidx.work.Worker import androidx.work.WorkerParameters +import org.citra.citra_emu.NativeLibrary import org.citra.citra_emu.NativeLibrary.InstallStatus import org.citra.citra_emu.R import org.citra.citra_emu.utils.FileUtil.getFilename +import androidx.core.net.toUri class CiaInstallWorker( val context: Context, @@ -131,7 +133,7 @@ class CiaInstallWorker( installProgressBuilder.setOngoing(true) setProgressCallback(100, 0) selectedFiles.forEachIndexed { i, file -> - val filename = getFilename(Uri.parse(file)) + val filename = getFilename(file.toUri()) installProgressBuilder.setContentText( context.getString( R.string.cia_install_notification_installing, @@ -140,7 +142,13 @@ class CiaInstallWorker( selectedFiles.size ) ) - val res = installCIA(file) + var fileFinal: String + if (BuildUtil.isGooglePlayBuild) { + fileFinal = file + } else { + fileFinal = "!" + NativeLibrary.getNativePath(file.toUri()) + } + val res = installCIA(fileFinal) notifyInstallStatus(filename, res) } notificationManager.cancel(PROGRESS_NOTIFICATION_ID) diff --git a/src/android/app/src/main/java/org/citra/citra_emu/utils/DiskShaderCacheProgress.kt b/src/android/app/src/main/java/org/citra/citra_emu/utils/DiskShaderCacheProgress.kt index a34924a9a..15ea56d3c 100644 --- a/src/android/app/src/main/java/org/citra/citra_emu/utils/DiskShaderCacheProgress.kt +++ b/src/android/app/src/main/java/org/citra/citra_emu/utils/DiskShaderCacheProgress.kt @@ -1,4 +1,4 @@ -// Copyright 2023 Citra Emulator Project +// Copyright Citra Emulator Project / Azahar Emulator Project // Licensed under GPLv2 or any later version // Refer to the license.txt file included. @@ -23,7 +23,7 @@ object DiskShaderCacheProgress { } @JvmStatic - fun loadProgress(stage: LoadCallbackStage, progress: Int, max: Int) { + fun loadProgress(stage: LoadCallbackStage, progress: Int, max: Int, obj: String) { val emulationActivity = NativeLibrary.sEmulationActivity.get() if (emulationActivity == null) { Log.error("[DiskShaderCacheProgress] EmulationActivity not present") @@ -40,7 +40,7 @@ object DiskShaderCacheProgress { ) LoadCallbackStage.Build -> emulationViewModel.updateProgress( - emulationActivity.getString(R.string.building_shaders), + emulationActivity.getString(R.string.building_shaders, obj ), progress, max ) diff --git a/src/android/app/src/main/java/org/citra/citra_emu/utils/DocumentsTree.kt b/src/android/app/src/main/java/org/citra/citra_emu/utils/DocumentsTree.kt index d5c4f791d..de5881db7 100644 --- a/src/android/app/src/main/java/org/citra/citra_emu/utils/DocumentsTree.kt +++ b/src/android/app/src/main/java/org/citra/citra_emu/utils/DocumentsTree.kt @@ -10,6 +10,8 @@ import androidx.core.net.toUri import androidx.documentfile.provider.DocumentFile import org.citra.citra_emu.CitraApplication import org.citra.citra_emu.model.CheapDocument +import org.citra.citra_emu.utils.BuildUtil +import java.io.IOException import java.net.URLDecoder import java.nio.file.Paths import java.util.StringTokenizer @@ -77,8 +79,9 @@ class DocumentsTree { @Synchronized fun getFilename(filepath: String): String { - val node = resolvePath(filepath) ?: return "" - return node.name + val components = filepath.split(DELIMITER).filter { it.isNotEmpty() } + val filename = components.last() + return filename } @Synchronized @@ -260,6 +263,17 @@ class DocumentsTree { @Synchronized private fun resolvePath(filepath: String): DocumentsNode? { + if (!BuildUtil.isGooglePlayBuild) { + var isLegalPath = false + kotlinDirectoryAccessWhitelist.forEach { + if (filepath.startsWith(it)) { + isLegalPath = true + } + } + if (!isLegalPath) { + throw IOException("Attempted to resolve forbidden path: " + filepath) + } + } root ?: return null val tokens = StringTokenizer(filepath, DELIMITER, false) var iterator = root @@ -351,5 +365,10 @@ class DocumentsTree { companion object { const val DELIMITER = "/" + val kotlinDirectoryAccessWhitelist = arrayOf( + "/config/", + "/log/", + "/gpu_drivers/", + ) } } diff --git a/src/android/app/src/main/java/org/citra/citra_emu/utils/GameHelper.kt b/src/android/app/src/main/java/org/citra/citra_emu/utils/GameHelper.kt index 90b011114..e3d871aa2 100644 --- a/src/android/app/src/main/java/org/citra/citra_emu/utils/GameHelper.kt +++ b/src/android/app/src/main/java/org/citra/citra_emu/utils/GameHelper.kt @@ -32,7 +32,7 @@ object GameHelper { addGamesRecursive(games, FileUtil.listFiles(gamesUri), 3) NativeLibrary.getInstalledGamePaths().forEach { - games.add(getGame(Uri.parse(it), isInstalled = true, addedToLibrary = true)) + games.add(getGame(Uri.parse(it.path), isInstalled = true, addedToLibrary = true, it.mediaType)) } // Cache list of games found on disk @@ -62,27 +62,41 @@ object GameHelper { addGamesRecursive(games, FileUtil.listFiles(it.uri), depth - 1) } else { if (Game.allExtensions.contains(FileUtil.getExtension(it.uri))) { - games.add(getGame(it.uri, isInstalled = false, addedToLibrary = true)) + games.add(getGame(it.uri, isInstalled = false, addedToLibrary = true, Game.MediaType.GAME_CARD)) } } } } - fun getGame(uri: Uri, isInstalled: Boolean, addedToLibrary: Boolean): Game { + fun getGame(uri: Uri, isInstalled: Boolean, addedToLibrary: Boolean, mediaType: Game.MediaType): Game { val filePath = uri.toString() - var gameInfo: GameInfo? = GameInfo(filePath) + var nativePath: String? = null + var gameInfo: GameInfo? + if (BuildUtil.isGooglePlayBuild || FileUtil.isNativePath(filePath)) { + gameInfo = GameInfo(filePath) + } else { + nativePath = "!" + NativeLibrary.getNativePath(uri); + gameInfo = GameInfo(nativePath) + } - if (gameInfo?.isValid() == false) { + val valid = gameInfo.isValid() + if (!valid) { gameInfo = null } val isEncrypted = gameInfo?.isEncrypted() == true val newGame = Game( + valid, (gameInfo?.getTitle() ?: FileUtil.getFilename(uri)).replace("[\\t\\n\\r]+".toRegex(), " "), filePath.replace("\n", " "), - filePath, + if (BuildUtil.isGooglePlayBuild || FileUtil.isNativePath(filePath)) { + filePath + } else { + nativePath!! + }, gameInfo?.getTitleID() ?: 0, + mediaType, gameInfo?.getCompany() ?: "", if (isEncrypted) { CitraApplication.appContext.getString(R.string.unsupported_encrypted) } else { gameInfo?.getRegions() ?: "" }, isInstalled, diff --git a/src/android/app/src/main/java/org/citra/citra_emu/utils/RemovableStorageHelper.kt b/src/android/app/src/main/java/org/citra/citra_emu/utils/RemovableStorageHelper.kt index 82c4b9ffd..1d4958fed 100644 --- a/src/android/app/src/main/java/org/citra/citra_emu/utils/RemovableStorageHelper.kt +++ b/src/android/app/src/main/java/org/citra/citra_emu/utils/RemovableStorageHelper.kt @@ -4,28 +4,43 @@ package org.citra.citra_emu.utils -import org.citra.citra_emu.utils.BuildUtil -import java.io.File +import android.content.Context +import android.os.storage.StorageManager object RemovableStorageHelper { - // This really shouldn't be necessary, but the Android API seemingly - // doesn't have a way of doing this? - fun getRemovableStoragePath(idString: String): String? { - BuildUtil.assertNotGooglePlay() - // On certain Android flavours the external storage mount location can - // vary, so add extra cases here if we discover them. - val possibleMountPaths = listOf("/mnt/media_rw/$idString", "/storage/$idString") + private val pathCache = mutableMapOf() + private var scanned = false - for (mountPath in possibleMountPaths) { - val pathFile = File(mountPath); - if (pathFile.exists()) { - // TODO: Cache which mount location is being used for the remainder of the - // session, as it should never change. -OS - return pathFile.absolutePath - } + private fun scanVolumes(context: Context) { + if (scanned) { + return } - return null + val storageManager = context.getSystemService(Context.STORAGE_SERVICE) as StorageManager + + for (volume in storageManager.storageVolumes) { + if (!volume.isRemovable) { + continue + } + + val uuid = volume.uuid ?: continue + val dir = volume.directory ?: continue + + pathCache[uuid.uppercase()] = dir.absolutePath + } + + scanned = true + } + + fun getRemovableStoragePath(context: Context, idString: String): String? { + BuildUtil.assertNotGooglePlay() + val key = idString.uppercase() + + if (!scanned) { + scanVolumes(context) + } + + return pathCache[key] } } diff --git a/src/android/app/src/main/jni/CMakeLists.txt b/src/android/app/src/main/jni/CMakeLists.txt index f2cad225a..9aa9bf1cc 100644 --- a/src/android/app/src/main/jni/CMakeLists.txt +++ b/src/android/app/src/main/jni/CMakeLists.txt @@ -22,6 +22,7 @@ add_library(citra-android SHARED game_info.cpp id_cache.cpp id_cache.h + jni_setting_keys.cpp native.cpp ndk_motion.cpp ndk_motion.h diff --git a/src/android/app/src/main/jni/config.cpp b/src/android/app/src/main/jni/config.cpp index 6d310fea6..e0fa260c5 100644 --- a/src/android/app/src/main/jni/config.cpp +++ b/src/android/app/src/main/jni/config.cpp @@ -4,13 +4,16 @@ #include #include +#include #include #include #include +#include #include "common/file_util.h" #include "common/logging/backend.h" #include "common/logging/log.h" #include "common/param_package.h" +#include "common/setting_keys.h" #include "common/settings.h" #include "core/core.h" #include "core/hle/service/cfg/cfg.h" @@ -25,11 +28,11 @@ Config::Config() { // TODO: Don't hardcode the path; let the frontend decide where to put the config files. - sdl2_config_loc = FileUtil::GetUserPath(FileUtil::UserPath::ConfigDir) + "config.ini"; + android_config_loc = FileUtil::GetUserPath(FileUtil::UserPath::ConfigDir) + "config.ini"; std::string ini_buffer; - FileUtil::ReadFileToString(true, sdl2_config_loc, ini_buffer); + FileUtil::ReadFileToString(true, android_config_loc, ini_buffer); if (!ini_buffer.empty()) { - sdl2_config = std::make_unique(ini_buffer.c_str(), ini_buffer.size()); + android_config = std::make_unique(ini_buffer.c_str(), ini_buffer.size()); } Reload(); @@ -38,15 +41,15 @@ Config::Config() { Config::~Config() = default; bool Config::LoadINI(const std::string& default_contents, bool retry) { - const std::string& location = this->sdl2_config_loc; - if (sdl2_config == nullptr || sdl2_config->ParseError() < 0) { + const std::string& location = this->android_config_loc; + if (android_config == nullptr || android_config->ParseError() < 0) { if (retry) { LOG_WARNING(Config, "Failed to load {}. Creating file from defaults...", location); FileUtil::CreateFullPath(location); FileUtil::WriteStringToFile(true, location, default_contents); std::string ini_buffer; FileUtil::ReadFileToString(true, location, ini_buffer); - sdl2_config = + android_config = std::make_unique(ini_buffer.c_str(), ini_buffer.size()); // Reopen file return LoadINI(default_contents, false); @@ -77,7 +80,8 @@ static const std::array default_analogs template <> void Config::ReadSetting(const std::string& group, Settings::Setting& setting) { - std::string setting_value = sdl2_config->Get(group, setting.GetLabel(), setting.GetDefault()); + std::string setting_value = + android_config->Get(group, setting.GetLabel(), setting.GetDefault()); if (setting_value.empty()) { setting_value = setting.GetDefault(); } @@ -86,15 +90,15 @@ void Config::ReadSetting(const std::string& group, Settings::Setting void Config::ReadSetting(const std::string& group, Settings::Setting& setting) { - setting = sdl2_config->GetBoolean(group, setting.GetLabel(), setting.GetDefault()); + setting = android_config->GetBoolean(group, setting.GetLabel(), setting.GetDefault()); } template void Config::ReadSetting(const std::string& group, Settings::Setting& setting) { if constexpr (std::is_floating_point_v) { - setting = sdl2_config->GetReal(group, setting.GetLabel(), setting.GetDefault()); + setting = android_config->GetReal(group, setting.GetLabel(), setting.GetDefault()); } else { - setting = static_cast(sdl2_config->GetInteger( + setting = static_cast(android_config->GetInteger( group, setting.GetLabel(), static_cast(setting.GetDefault()))); } } @@ -103,30 +107,30 @@ void Config::ReadValues() { // Controls for (int i = 0; i < Settings::NativeButton::NumButtons; ++i) { std::string default_param = InputManager::GenerateButtonParamPackage(default_buttons[i]); - Settings::values.current_input_profile.buttons[i] = - sdl2_config->GetString("Controls", Settings::NativeButton::mapping[i], default_param); + Settings::values.current_input_profile.buttons[i] = android_config->GetString( + "Controls", Settings::NativeButton::mapping[i], default_param); if (Settings::values.current_input_profile.buttons[i].empty()) Settings::values.current_input_profile.buttons[i] = default_param; } for (int i = 0; i < Settings::NativeAnalog::NumAnalogs; ++i) { std::string default_param = InputManager::GenerateAnalogParamPackage(default_analogs[i]); - Settings::values.current_input_profile.analogs[i] = - sdl2_config->GetString("Controls", Settings::NativeAnalog::mapping[i], default_param); + Settings::values.current_input_profile.analogs[i] = android_config->GetString( + "Controls", Settings::NativeAnalog::mapping[i], default_param); if (Settings::values.current_input_profile.analogs[i].empty()) Settings::values.current_input_profile.analogs[i] = default_param; } - Settings::values.current_input_profile.motion_device = sdl2_config->GetString( + Settings::values.current_input_profile.motion_device = android_config->GetString( "Controls", "motion_device", "engine:motion_emu,update_period:100,sensitivity:0.01,tilt_clamp:90.0"); Settings::values.current_input_profile.touch_device = - sdl2_config->GetString("Controls", "touch_device", "engine:emu_window"); - Settings::values.current_input_profile.udp_input_address = sdl2_config->GetString( + android_config->GetString("Controls", "touch_device", "engine:emu_window"); + Settings::values.current_input_profile.udp_input_address = android_config->GetString( "Controls", "udp_input_address", InputCommon::CemuhookUDP::DEFAULT_ADDR); Settings::values.current_input_profile.udp_input_port = - static_cast(sdl2_config->GetInteger("Controls", "udp_input_port", - InputCommon::CemuhookUDP::DEFAULT_PORT)); + static_cast(android_config->GetInteger("Controls", "udp_input_port", + InputCommon::CemuhookUDP::DEFAULT_PORT)); ReadSetting("Controls", Settings::values.use_artic_base_controller); @@ -135,9 +139,9 @@ void Config::ReadValues() { ReadSetting("Core", Settings::values.cpu_clock_percentage); // Renderer - Settings::values.use_gles = sdl2_config->GetBoolean("Renderer", "use_gles", true); + Settings::values.use_gles = android_config->GetBoolean("Renderer", "use_gles", true); Settings::values.shaders_accurate_mul = - sdl2_config->GetBoolean("Renderer", "shaders_accurate_mul", false); + android_config->GetBoolean("Renderer", "shaders_accurate_mul", false); ReadSetting("Renderer", Settings::values.graphics_api); ReadSetting("Renderer", Settings::values.async_presentation); ReadSetting("Renderer", Settings::values.async_shader_compilation); @@ -152,7 +156,7 @@ void Config::ReadValues() { ReadSetting("Renderer", Settings::values.texture_sampling); ReadSetting("Renderer", Settings::values.turbo_limit); // Workaround to map Android setting for enabling the frame limiter to the format Citra expects - if (sdl2_config->GetBoolean("Renderer", "use_frame_limit", true)) { + if (android_config->GetBoolean("Renderer", "use_frame_limit", true)) { ReadSetting("Renderer", Settings::values.frame_limit); } else { Settings::values.frame_limit = 0; @@ -166,8 +170,9 @@ void Config::ReadValues() { else if (Settings::values.render_3d.GetValue() == Settings::StereoRenderOption::Interlaced) default_shader = "Horizontal (builtin)"; Settings::values.pp_shader_name = - sdl2_config->GetString("Renderer", "pp_shader_name", default_shader); + android_config->GetString("Renderer", "pp_shader_name", default_shader); ReadSetting("Renderer", Settings::values.filter_mode); + ReadSetting("Renderer", Settings::values.use_integer_scaling); ReadSetting("Renderer", Settings::values.bg_red); ReadSetting("Renderer", Settings::values.bg_green); @@ -180,18 +185,19 @@ void Config::ReadValues() { // Layout // Somewhat inelegant solution to ensure layout value is between 0 and 5 on read // since older config files may have other values - int layoutInt = (int)sdl2_config->GetInteger( + int layoutInt = (int)android_config->GetInteger( "Layout", "layout_option", static_cast(Settings::LayoutOption::LargeScreen)); if (layoutInt < 0 || layoutInt > 5) { layoutInt = static_cast(Settings::LayoutOption::LargeScreen); } Settings::values.layout_option = static_cast(layoutInt); - Settings::values.screen_gap = static_cast(sdl2_config->GetReal("Layout", "screen_gap", 0)); + Settings::values.screen_gap = + static_cast(android_config->GetReal("Layout", "screen_gap", 0)); Settings::values.large_screen_proportion = - static_cast(sdl2_config->GetReal("Layout", "large_screen_proportion", 2.25)); + static_cast(android_config->GetReal("Layout", "large_screen_proportion", 2.25)); Settings::values.small_screen_position = static_cast( - sdl2_config->GetInteger("Layout", "small_screen_position", - static_cast(Settings::SmallScreenPosition::TopRight))); + android_config->GetInteger("Layout", "small_screen_position", + static_cast(Settings::SmallScreenPosition::TopRight))); ReadSetting("Layout", Settings::values.screen_gap); ReadSetting("Layout", Settings::values.custom_top_x); ReadSetting("Layout", Settings::values.custom_top_y); @@ -208,12 +214,12 @@ void Config::ReadValues() { ReadSetting("Layout", Settings::values.upright_screen); Settings::values.portrait_layout_option = - static_cast(sdl2_config->GetInteger( + static_cast(android_config->GetInteger( "Layout", "portrait_layout_option", static_cast(Settings::PortraitLayoutOption::PortraitTopFullWidth))); Settings::values.secondary_display_layout = static_cast( - sdl2_config->GetInteger("Layout", "secondary_display_layout", - static_cast(Settings::SecondaryDisplayLayout::None))); + android_config->GetInteger("Layout", Settings::HKeys::secondary_display_layout.c_str(), + static_cast(Settings::SecondaryDisplayLayout::None))); ReadSetting("Layout", Settings::values.custom_portrait_top_x); ReadSetting("Layout", Settings::values.custom_portrait_top_y); ReadSetting("Layout", Settings::values.custom_portrait_top_width); @@ -252,7 +258,8 @@ void Config::ReadValues() { ReadSetting("System", Settings::values.region_value); ReadSetting("System", Settings::values.init_clock); { - std::string time = sdl2_config->GetString("System", "init_time", "946681277"); + std::string time = + android_config->GetString("System", Settings::HKeys::init_time.c_str(), "946681277"); try { Settings::values.init_time = std::stoll(time); } catch (...) { @@ -267,24 +274,27 @@ void Config::ReadValues() { // Camera using namespace Service::CAM; - Settings::values.camera_name[OuterRightCamera] = - sdl2_config->GetString("Camera", "camera_outer_right_name", "ndk"); - Settings::values.camera_config[OuterRightCamera] = sdl2_config->GetString( - "Camera", "camera_outer_right_config", std::string{Camera::NDK::BackCameraPlaceholder}); + Settings::values.camera_name[OuterRightCamera] = android_config->GetString( + "Camera", Settings::HKeys::camera_outer_right_name.c_str(), "ndk"); + Settings::values.camera_config[OuterRightCamera] = + android_config->GetString("Camera", Settings::HKeys::camera_outer_right_config.c_str(), + std::string{Camera::NDK::BackCameraPlaceholder}); Settings::values.camera_flip[OuterRightCamera] = - sdl2_config->GetInteger("Camera", "camera_outer_right_flip", 0); + android_config->GetInteger("Camera", Settings::HKeys::camera_outer_right_flip.c_str(), 0); Settings::values.camera_name[InnerCamera] = - sdl2_config->GetString("Camera", "camera_inner_name", "ndk"); - Settings::values.camera_config[InnerCamera] = sdl2_config->GetString( - "Camera", "camera_inner_config", std::string{Camera::NDK::FrontCameraPlaceholder}); + android_config->GetString("Camera", Settings::HKeys::camera_inner_name.c_str(), "ndk"); + Settings::values.camera_config[InnerCamera] = + android_config->GetString("Camera", Settings::HKeys::camera_inner_config.c_str(), + std::string{Camera::NDK::FrontCameraPlaceholder}); Settings::values.camera_flip[InnerCamera] = - sdl2_config->GetInteger("Camera", "camera_inner_flip", 0); + android_config->GetInteger("Camera", Settings::HKeys::camera_inner_flip.c_str(), 0); Settings::values.camera_name[OuterLeftCamera] = - sdl2_config->GetString("Camera", "camera_outer_left_name", "ndk"); - Settings::values.camera_config[OuterLeftCamera] = sdl2_config->GetString( - "Camera", "camera_outer_left_config", std::string{Camera::NDK::BackCameraPlaceholder}); + android_config->GetString("Camera", Settings::HKeys::camera_outer_left_name.c_str(), "ndk"); + Settings::values.camera_config[OuterLeftCamera] = + android_config->GetString("Camera", Settings::HKeys::camera_outer_left_config.c_str(), + std::string{Camera::NDK::BackCameraPlaceholder}); Settings::values.camera_flip[OuterLeftCamera] = - sdl2_config->GetInteger("Camera", "camera_outer_left_flip", 0); + android_config->GetInteger("Camera", Settings::HKeys::camera_outer_left_flip.c_str(), 0); // Miscellaneous ReadSetting("Miscellaneous", Settings::values.log_filter); @@ -299,26 +309,43 @@ void Config::ReadValues() { // Debugging Settings::values.record_frame_times = - sdl2_config->GetBoolean("Debugging", "record_frame_times", false); + android_config->GetBoolean("Debugging", Settings::HKeys::record_frame_times.c_str(), false); ReadSetting("Debugging", Settings::values.renderer_debug); ReadSetting("Debugging", Settings::values.use_gdbstub); ReadSetting("Debugging", Settings::values.gdbstub_port); ReadSetting("Debugging", Settings::values.instant_debug_log); ReadSetting("Debugging", Settings::values.enable_rpc_server); + ReadSetting("Debugging", Settings::values.toggle_unique_data_console_type); for (const auto& service_module : Service::service_module_map) { - bool use_lle = sdl2_config->GetBoolean("Debugging", "LLE\\" + service_module.name, false); + bool use_lle = + android_config->GetBoolean("Debugging", "LLE\\" + service_module.name, false); Settings::values.lle_modules.emplace(service_module.name, use_lle); } // Web Service NetSettings::values.web_api_url = - sdl2_config->GetString("WebService", "web_api_url", "https://api.citra-emu.org"); - NetSettings::values.citra_username = sdl2_config->GetString("WebService", "citra_username", ""); - NetSettings::values.citra_token = sdl2_config->GetString("WebService", "citra_token", ""); + android_config->GetString("WebService", "web_api_url", "https://api.citra-emu.org"); + NetSettings::values.citra_username = + android_config->GetString("WebService", "citra_username", ""); + NetSettings::values.citra_token = android_config->GetString("WebService", "citra_token", ""); } void Config::Reload() { - LoadINI(DefaultINI::sdl2_config_file); + for (auto key = Settings::Keys::keys_array.begin(); key != Settings::Keys::keys_array.end(); + ++key) { + const auto key_declaration_string = std::string(*key) + " ="; + // FIXME: This code looks so ass when formatted by clang-format -OS + if (std::ranges::find(DefaultINI::android_config_omitted_keys, *key) == + std::end(DefaultINI::android_config_omitted_keys) && + std::string(DefaultINI::android_config_default_file_content) + .find(key_declaration_string) == std::string::npos) { + ASSERT_MSG(false, + "Validation of default content config failed: Missing or malformed key " + "declaration {}", + *key); + } + } + LoadINI(DefaultINI::android_config_default_file_content); ReadValues(); } diff --git a/src/android/app/src/main/jni/config.h b/src/android/app/src/main/jni/config.h index c2b0abcea..9d40295c4 100644 --- a/src/android/app/src/main/jni/config.h +++ b/src/android/app/src/main/jni/config.h @@ -1,4 +1,4 @@ -// Copyright 2014 Citra Emulator Project +// Copyright Citra Emulator Project / Azahar Emulator Project // Licensed under GPLv2 or any later version // Refer to the license.txt file included. @@ -12,8 +12,8 @@ class INIReader; class Config { private: - std::unique_ptr sdl2_config; - std::string sdl2_config_loc; + std::unique_ptr android_config; + std::string android_config_loc; bool LoadINI(const std::string& default_contents = "", bool retry = true); void ReadValues(); @@ -26,7 +26,7 @@ public: private: /** - * Applies a value read from the sdl2_config to a Setting. + * Applies a value read from the android_config to a Setting. * * @param group The name of the INI group * @param setting The yuzu setting to modify diff --git a/src/android/app/src/main/jni/default_ini.h b/src/android/app/src/main/jni/default_ini.h index 08eaf3283..5e2eab1d1 100644 --- a/src/android/app/src/main/jni/default_ini.h +++ b/src/android/app/src/main/jni/default_ini.h @@ -4,73 +4,61 @@ #pragma once +#include +#include "common/setting_keys.h" + +namespace Keys = Settings::Keys; + namespace DefaultINI { -const char* sdl2_config_file = R"( +// All of these setting keys are either not currently used by Android or are too niche to bother +// documenting (people can contribute documentation if they care), or some other explained reason +constexpr std::array android_config_omitted_keys = { + Keys::enable_gamemode, + Keys::use_custom_storage, + Keys::init_time_offset, + Keys::physical_device, + Keys::use_gles, // Niche + Keys::dump_command_buffers, + Keys::use_display_refresh_rate_detection, + Keys::screen_top_stretch, + Keys::screen_top_leftright_padding, + Keys::screen_top_topbottom_padding, + Keys::screen_bottom_stretch, + Keys::screen_bottom_leftright_padding, + Keys::screen_bottom_topbottom_padding, + Keys::mono_render_option, + Keys::log_regex_filter, // Niche + Keys::video_encoder, + Keys::video_encoder_options, + Keys::video_bitrate, + Keys::audio_encoder, + Keys::audio_encoder_options, + Keys::audio_bitrate, + Keys::last_artic_base_addr, // On Android, this value is stored as a "preference" +}; + +// clang-format off + +// Is this macro nasty? Yes. +// Does it make the code way more readable? Also yes. +#define DECLARE_KEY(KEY) +Settings::HKeys::KEY+BOOST_HANA_STRING(" =")+ + +static const char* android_config_default_file_content = (BOOST_HANA_STRING(R"( [Controls] -# The input devices and parameters for each 3DS native input -# It should be in the format of "engine:[engine_name],[param1]:[value1],[param2]:[value2]..." -# Escape characters $0 (for ':'), $1 (for ',') and $2 (for '$') can be used in values - -# for button input, the following devices are available: -# - "keyboard" (default) for keyboard input. Required parameters: -# - "code": the code of the key to bind -# - "sdl" for joystick input using SDL. Required parameters: -# - "joystick": the index of the joystick to bind -# - "button"(optional): the index of the button to bind -# - "hat"(optional): the index of the hat to bind as direction buttons -# - "axis"(optional): the index of the axis to bind -# - "direction"(only used for hat): the direction name of the hat to bind. Can be "up", "down", "left" or "right" -# - "threshold"(only used for axis): a float value in (-1.0, 1.0) which the button is -# triggered if the axis value crosses -# - "direction"(only used for axis): "+" means the button is triggered when the axis value -# is greater than the threshold; "-" means the button is triggered when the axis value -# is smaller than the threshold -button_a= -button_b= -button_x= -button_y= -button_up= -button_down= -button_left= -button_right= -button_l= -button_r= -button_start= -button_select= -button_debug= -button_gpio14= -button_zl= -button_zr= -button_home= - -# for analog input, the following devices are available: -# - "analog_from_button" (default) for emulating analog input from direction buttons. Required parameters: -# - "up", "down", "left", "right": sub-devices for each direction. -# Should be in the format as a button input devices using escape characters, for example, "engine$0keyboard$1code$00" -# - "modifier": sub-devices as a modifier. -# - "modifier_scale": a float number representing the applied modifier scale to the analog input. -# Must be in range of 0.0-1.0. Defaults to 0.5 -# - "sdl" for joystick input using SDL. Required parameters: -# - "joystick": the index of the joystick to bind -# - "axis_x": the index of the axis to bind as x-axis (default to 0) -# - "axis_y": the index of the axis to bind as y-axis (default to 1) -circle_pad= -c_stick= - # for motion input, the following devices are available: # - "motion_emu" (default) for emulating motion input from mouse input. Required parameters: # - "update_period": update period in milliseconds (default to 100) # - "sensitivity": the coefficient converting mouse movement to tilting angle (default to 0.01) # - "tilt_clamp": the max value of the tilt angle in degrees (default to 90) # - "cemuhookudp" reads motion input from a udp server that uses cemuhook's udp protocol -motion_device= +)") DECLARE_KEY(motion_device) BOOST_HANA_STRING(R"( # for touch input, the following devices are available: # - "emu_window" (default) for emulating touch input from mouse input to the emulation window. No parameters required # - "cemuhookudp" reads touch input from a udp server that uses cemuhook's udp protocol # - "min_x", "min_y", "max_x", "max_y": defines the udp device's touch screen coordinate system -touch_device= engine:emu_window +)") DECLARE_KEY(touch_device) BOOST_HANA_STRING(R"( # Most desktop operating systems do not expose a way to poll the motion state of the controllers # so as a way around it, cemuhook created a udp client/server protocol to broadcast the data directly @@ -78,136 +66,155 @@ touch_device= engine:emu_window # from any cemuhook compatible motion program. # IPv4 address of the udp input server (Default "127.0.0.1") -udp_input_address= +)") DECLARE_KEY(udp_input_address) BOOST_HANA_STRING(R"( # Port of the udp input server. (Default 26760) -udp_input_port= +)") DECLARE_KEY(udp_input_port) BOOST_HANA_STRING(R"( # The pad to request data on. Should be between 0 (Pad 1) and 3 (Pad 4). (Default 0) -udp_pad_index= +)") DECLARE_KEY(udp_pad_index) BOOST_HANA_STRING(R"( # Use Artic Controller when connected to Artic Base Server. (Default 0) -use_artic_base_controller= +)") DECLARE_KEY(use_artic_base_controller) BOOST_HANA_STRING(R"( [Core] # Whether to use the Just-In-Time (JIT) compiler for CPU emulation # 0: Interpreter (slow), 1 (default): JIT (fast) -use_cpu_jit = +)") DECLARE_KEY(use_cpu_jit) BOOST_HANA_STRING(R"( # Change the Clock Frequency of the emulated 3DS CPU. # Underclocking can increase the performance of the game at the risk of freezing. # Overclocking may fix lag that happens on console, but also comes with the risk of freezing. # Range is any positive integer (but we suspect 25 - 400 is a good idea) Default is 100 -cpu_clock_percentage = +)") DECLARE_KEY(cpu_clock_percentage) BOOST_HANA_STRING(R"( [Renderer] # Whether to render using OpenGL # 1: OpenGL ES (default), 2: Vulkan -graphics_api = +)") DECLARE_KEY(graphics_api) BOOST_HANA_STRING(R"( # Whether to compile shaders on multiple worker threads (Vulkan only) # 0: Off, 1: On (default) -async_shader_compilation = +)") DECLARE_KEY(async_shader_compilation) BOOST_HANA_STRING(R"( # Whether to emit PICA fragment shader using SPIRV or GLSL (Vulkan only) # 0: GLSL, 1: SPIR-V (default) -spirv_shader_gen = +)") DECLARE_KEY(spirv_shader_gen) BOOST_HANA_STRING(R"( # Whether to disable the SPIRV optimizer. Disabling it reduces stutter, but may slightly worsen performance # 0: Enabled, 1: Disabled (default) -disable_spirv_optimizer = +)") DECLARE_KEY(disable_spirv_optimizer) BOOST_HANA_STRING(R"( # Whether to use hardware shaders to emulate 3DS shaders # 0: Software, 1 (default): Hardware -use_hw_shader = +)") DECLARE_KEY(use_hw_shader) BOOST_HANA_STRING(R"( # Whether to use accurate multiplication in hardware shaders # 0: Off (Default. Faster, but causes issues in some games) 1: On (Slower, but correct) -shaders_accurate_mul = +)") DECLARE_KEY(shaders_accurate_mul) BOOST_HANA_STRING(R"( # Whether to use the Just-In-Time (JIT) compiler for shader emulation # 0: Interpreter (slow), 1 (default): JIT (fast) -use_shader_jit = +)") DECLARE_KEY(use_shader_jit) BOOST_HANA_STRING(R"( # Overrides the sampling filter used by games. This can be useful in certain # cases with poorly behaved games when upscaling. # 0 (default): Game Controlled, 1: Nearest Neighbor, 2: Linear -texture_sampling = +)") DECLARE_KEY(texture_sampling) BOOST_HANA_STRING(R"( # Forces VSync on the display thread. Can cause input delay, so only turn this on # if you have screen tearing, which is unusual on Android # 0 (default): Off, 1: On -use_vsync = +)") DECLARE_KEY(use_vsync) BOOST_HANA_STRING(R"( # Reduce stuttering by storing and loading generated shaders to disk # 0: Off, 1 (default. On) -use_disk_shader_cache = +)") DECLARE_KEY(use_disk_shader_cache) BOOST_HANA_STRING(R"( # Resolution scale factor # 0: Auto (scales resolution to window size), 1: Native 3DS screen resolution, Otherwise a scale # factor for the 3DS resolution -resolution_factor = +)") DECLARE_KEY(resolution_factor) BOOST_HANA_STRING(R"( + +# Use Integer Scaling when the layout allows +# 0: Off (default), 1: On +)") DECLARE_KEY(use_integer_scaling) BOOST_HANA_STRING(R"( # Turns on the frame limiter, which will limit frames output to the target game speed # 0: Off, 1: On (default) -use_frame_limit = +)") DECLARE_KEY(use_frame_limit) BOOST_HANA_STRING(R"( # Limits the speed of the game to run no faster than this value as a percentage of target speed # 1 - 9999: Speed limit as a percentage of target game speed. 100 (default) -frame_limit = +)") DECLARE_KEY(frame_limit) BOOST_HANA_STRING(R"( # Alternative frame limit which can be triggered by the user # 1 - 9999: Speed limit as a percentage of target game speed. 100 (default) -turbo_limit = +)") DECLARE_KEY(turbo_limit) BOOST_HANA_STRING(R"( # The clear color for the renderer. What shows up on the sides of the bottom screen. # Must be in range of 0.0-1.0. Defaults to 0.0 for all. -bg_red = -bg_blue = -bg_green = +)") DECLARE_KEY(bg_red) BOOST_HANA_STRING(R"( +)") DECLARE_KEY(bg_blue) BOOST_HANA_STRING(R"( +)") DECLARE_KEY(bg_green) BOOST_HANA_STRING(R"( # Opacity of second layer when using custom layout option (bottom screen unless swapped). Useful if positioning on top of the first layer. -custom_second_layer_opacity = +)") DECLARE_KEY(custom_second_layer_opacity) BOOST_HANA_STRING(R"( # Whether and how Stereoscopic 3D should be rendered # 0: Off, 1: Half Width Side by Side, 2 (default): Full Width Side by Side, 3: Anaglyph, 4: Interlaced, 5: Reverse Interlaced, 6: Cardboard VR # 0 is no longer supported in the interface, as using render_3d_which_display = 0 has the same effect, but supported here for backwards compatibility -render_3d = +)") DECLARE_KEY(render_3d) BOOST_HANA_STRING(R"( # Change 3D Intensity # 0 - 255: Intensity. 0 (default) -factor_3d = +)") DECLARE_KEY(factor_3d) BOOST_HANA_STRING(R"( # Swap Eyes in 3d # true: Swap eyes, false (default): Do not swap eyes -swap_eyes_3d = +)") DECLARE_KEY(swap_eyes_3d) BOOST_HANA_STRING(R"( # Which Display to render 3d mode to # 0 (default) - None. Equivalent to render_3d=0 # 1: Both, 2: Primary Only, 3: Secondary Only -render_3d_which_display = +)") DECLARE_KEY(render_3d_which_display) BOOST_HANA_STRING(R"( # The name of the post processing shader to apply. # Loaded from shaders if render_3d is off or side by side. -pp_shader_name = +)") DECLARE_KEY(pp_shader_name) BOOST_HANA_STRING(R"( # The name of the shader to apply when render_3d is anaglyph. # Loaded from shaders/anaglyph -anaglyph_shader_name = +)") DECLARE_KEY(anaglyph_shader_name) BOOST_HANA_STRING(R"( # Whether to enable linear filtering or not # This is required for some shaders to work correctly # 0: Nearest, 1 (default): Linear -filter_mode = +)") DECLARE_KEY(filter_mode) BOOST_HANA_STRING(R"( # Delays the game render thread by the specified amount of microseconds # Set to 0 for no delay, only useful in dynamic-fps games to simulate GPU delay. -delay_game_render_thread_us = +)") DECLARE_KEY(delay_game_render_thread_us) BOOST_HANA_STRING(R"( -# Disables rendering the right eye image. +# Disables rendering the right eye image # Greatly improves performance in some games, but can cause flickering in others. -# 0 (default): Enable right eye rendering, 1: Disable right eye rendering -disable_right_eye_render = +# 0 : Enable right eye rendering, 1: Disable right eye rendering +)") DECLARE_KEY(disable_right_eye_render) BOOST_HANA_STRING(R"( + +# Perform presentation on separate threads +# Improves performance when using Vulkan in most applications. +# Adds ~1 frame of input lag. +# 0: Enable async presentation, 1 (default): Disable async presentation +)") DECLARE_KEY(async_presentation) BOOST_HANA_STRING(R"( + +# Which texture filter should be used +# 0 (default): NoFilter +# 1: Anime4K +# 2: Bicubic +# 3: ScaleForce +# 4: xBRZ +# 5: MMPX +)") DECLARE_KEY(texture_filter) BOOST_HANA_STRING(R"( [Layout] # Layout for the screen inside the render window, landscape mode @@ -217,12 +224,52 @@ disable_right_eye_render = # 3: Side by Side # 4: Hybrid # 5: Custom Layout -layout_option = +)") DECLARE_KEY(layout_option) BOOST_HANA_STRING(R"( + +# Whether or not the screens should be rotated upright +# 0 (default): Not rotated, 1: Rotated upright +)") DECLARE_KEY(upright_screen) BOOST_HANA_STRING(R"( + +# Which aspect ratio should be used by the emulated 3DS screens +# 0: (default): Default +# 1: 16:9 +# 2: 4:3 +# 3: 21:9 +# 4: 16:10 +# 5: Stretch +)") DECLARE_KEY(aspect_ratio) BOOST_HANA_STRING(R"( + +# Whether or not the performance overlay should be displayed +# 0 (default): Hidden, 1: Shown +)") DECLARE_KEY(performance_overlay_enable) BOOST_HANA_STRING(R"( + +# Whether or not the emulation framerate should be displayed in the performance overlay +# 0: Hidden, 1 (default): Shown +)") DECLARE_KEY(performance_overlay_show_fps) BOOST_HANA_STRING(R"( + +# Whether or not the emulation frame time should be displayed in the performance overlay +# 0 (default): Hidden, 1: Shown +)") DECLARE_KEY(performance_overlay_show_frame_time) BOOST_HANA_STRING(R"( + +# Whether or not the emulation speed should be displayed as a percentage in the performance overlay +)") DECLARE_KEY(performance_overlay_show_speed) BOOST_HANA_STRING(R"( + +# Whether or not Azahar's RAM usage should be displayed in the performance overlay +)") DECLARE_KEY(performance_overlay_show_app_ram_usage) BOOST_HANA_STRING(R"( + +# Whether or not the amount of available RAM should be displayed in the performance overlay +)") DECLARE_KEY(performance_overlay_show_available_ram) BOOST_HANA_STRING(R"( + +# Whether or not the battery's current temperature should be displayed in the performance overlay +)") DECLARE_KEY(performance_overlay_show_battery_temp) BOOST_HANA_STRING(R"( + +# Whether or not the performance overlay should have a transparent background to aid visibility +)") DECLARE_KEY(performance_overlay_background) BOOST_HANA_STRING(R"( [Storage] # Whether to compress the installed CIA contents # 0 (default): Do not compress, 1: Compress -compress_cia_installs = +)") DECLARE_KEY(compress_cia_installs) BOOST_HANA_STRING(R"( # Position of the performance overlay # 0: Top Left @@ -231,38 +278,37 @@ compress_cia_installs = # 3: Bottom Left # 4: Center Bottom # 5: Bottom Right -performance_overlay_position = +)") DECLARE_KEY(performance_overlay_position) BOOST_HANA_STRING(R"( # Screen Gap - adds a gap between screens in all two-screen modes # Measured in pixels relative to the 240px default height of the screens # Scales with the larger screen (so 24 is 10% of the larger screen height) # Default value is 0.0 -screen_gap = +)") DECLARE_KEY(screen_gap) BOOST_HANA_STRING(R"( # Large Screen Proportion - Relative size of large:small in large screen mode # Default value is 2.25 -large_screen_proportion = +)") DECLARE_KEY(large_screen_proportion) BOOST_HANA_STRING(R"( # Small Screen Position - where is the small screen relative to the large # Default value is 0 # 0: Top Right 1: Middle Right 2: Bottom Right # 3: Top Left 4: Middle left 5: Bottom Left # 6: Above the large screen 7: Below the large screen -small_screen_position = - +)") DECLARE_KEY(small_screen_position) BOOST_HANA_STRING(R"( # Screen placement when using Custom layout option # 0x, 0y is the top left corner of the render window. # suggested aspect ratio for top screen is 5:3 # suggested aspect ratio for bottom screen is 4:3 -custom_top_x = -custom_top_y = -custom_top_width = -custom_top_height = -custom_bottom_x = -custom_bottom_y = -custom_bottom_width = -custom_bottom_height = +)") DECLARE_KEY(custom_top_x) BOOST_HANA_STRING(R"( +)") DECLARE_KEY(custom_top_y) BOOST_HANA_STRING(R"( +)") DECLARE_KEY(custom_top_width) BOOST_HANA_STRING(R"( +)") DECLARE_KEY(custom_top_height) BOOST_HANA_STRING(R"( +)") DECLARE_KEY(custom_bottom_x) BOOST_HANA_STRING(R"( +)") DECLARE_KEY(custom_bottom_y) BOOST_HANA_STRING(R"( +)") DECLARE_KEY(custom_bottom_width) BOOST_HANA_STRING(R"( +)") DECLARE_KEY(custom_bottom_height) BOOST_HANA_STRING(R"( # Orientation option for the emulator # 2 (default): Automatic @@ -270,32 +316,32 @@ custom_bottom_height = # 8: Landscape (Flipped) # 1: Portrait # 9: Portrait (Flipped) -screen_orientation = +)") DECLARE_KEY(screen_orientation) BOOST_HANA_STRING(R"( # Layout for the portrait mode # 0 (default): Top and bottom screens at top, full width # 1: Custom Layout -portrait_layout_option = +)") DECLARE_KEY(portrait_layout_option) BOOST_HANA_STRING(R"( # Screen placement when using Portrait Custom layout option # 0x, 0y is the top left corner of the render window. -custom_portrait_top_x = -custom_portrait_top_y = -custom_portrait_top_width = -custom_portrait_top_height = -custom_portrait_bottom_x = -custom_portrait_bottom_y = -custom_portrait_bottom_width = -custom_portrait_bottom_height = +)") DECLARE_KEY(custom_portrait_top_x) BOOST_HANA_STRING(R"( +)") DECLARE_KEY(custom_portrait_top_y) BOOST_HANA_STRING(R"( +)") DECLARE_KEY(custom_portrait_top_width) BOOST_HANA_STRING(R"( +)") DECLARE_KEY(custom_portrait_top_height) BOOST_HANA_STRING(R"( +)") DECLARE_KEY(custom_portrait_bottom_x) BOOST_HANA_STRING(R"( +)") DECLARE_KEY(custom_portrait_bottom_y) BOOST_HANA_STRING(R"( +)") DECLARE_KEY(custom_portrait_bottom_width) BOOST_HANA_STRING(R"( +)") DECLARE_KEY(custom_portrait_bottom_height) BOOST_HANA_STRING(R"( # Swaps the prominent screen with the other screen. # For example, if Single Screen is chosen, setting this to 1 will display the bottom screen instead of the top screen. # 0 (default): Top Screen is prominent, 1: Bottom Screen is prominent -swap_screen = +)") DECLARE_KEY(swap_screen) BOOST_HANA_STRING(R"( # Expands the display area to include the cutout (or notch) area # 0 (default): Off, 1: On -expand_to_cutout_area = +)") DECLARE_KEY(expand_to_cutout_area) BOOST_HANA_STRING(R"( # Secondary Display Layout # What the game should do if a secondary display is connected physically or using @@ -304,129 +350,137 @@ expand_to_cutout_area = # 1 - Show Top Screen Only # 2 - Show Bottom Screen Only # 3 - Show both screens side by side -secondary_display_layout = +)") DECLARE_KEY(secondary_display_layout) BOOST_HANA_STRING(R"( # Screen placement settings when using Cardboard VR (render3d = 4) # 30 - 100: Screen size as a percentage of the viewport. 85 (default) -cardboard_screen_size = +)") DECLARE_KEY(cardboard_screen_size) BOOST_HANA_STRING(R"( # -100 - 100: Screen X-Coordinate shift as a percentage of empty space. 0 (default) -cardboard_x_shift = +)") DECLARE_KEY(cardboard_x_shift) BOOST_HANA_STRING(R"( # -100 - 100: Screen Y-Coordinate shift as a percentage of empty space. 0 (default) -cardboard_y_shift = +)") DECLARE_KEY(cardboard_y_shift) BOOST_HANA_STRING(R"( + +# Which of the available layouts should be cycled by Cycle Layouts +# A list of any values from 0 to 5 inclusive (e.g. 0, 1, 2, 5) +# Default: 0, 1, 2, 3, 4, 5 +# 0: Default, +# 1: Single Screen, +# 2: Large Screen, +# 3: Side by Side, +# 4: Hybrid Screens, +# 5: Custom Layout, +)") DECLARE_KEY(layouts_to_cycle) BOOST_HANA_STRING(R"( [Utility] # Dumps textures as PNG to dump/textures/[Title ID]/. # 0 (default): Off, 1: On -dump_textures = +)") DECLARE_KEY(dump_textures) BOOST_HANA_STRING(R"( # Reads PNG files from load/textures/[Title ID]/ and replaces textures. # 0 (default): Off, 1: On -custom_textures = +)") DECLARE_KEY(custom_textures) BOOST_HANA_STRING(R"( # Loads all custom textures into memory before booting. # 0 (default): Off, 1: On -preload_textures = +)") DECLARE_KEY(preload_textures) BOOST_HANA_STRING(R"( # Loads custom textures asynchronously with background threads. # 0: Off, 1 (default): On -async_custom_loading = +)") DECLARE_KEY(async_custom_loading) BOOST_HANA_STRING(R"( [Audio] -# Whether or not to enable DSP LLE -# 0 (default): No, 1: Yes -enable_dsp_lle = -# Whether or not to run DSP LLE on a different thread -# 0 (default): No, 1: Yes -enable_dsp_lle_thread = +# Whether or not audio emulation should be enabled +# 0: Disabled, 1 (default): Enabled +)") DECLARE_KEY(audio_emulation) BOOST_HANA_STRING(R"( -# Whether or not to enable the audio-stretching post-processing effect. +# Whether or not to enable the audio-stretching post-processing effect # This effect adjusts audio speed to match emulation speed and helps prevent audio stutter, # at the cost of increasing audio latency. # 0: No, 1 (default): Yes -enable_audio_stretching = +)") DECLARE_KEY(enable_audio_stretching) BOOST_HANA_STRING(R"( # Scales audio playback speed to account for drops in emulation framerate # 0 (default): No, 1: Yes -enable_realtime_audio = +)") DECLARE_KEY(enable_realtime_audio) BOOST_HANA_STRING(R"( # Output volume. # 1.0 (default): 100%, 0.0; mute -volume = +)") DECLARE_KEY(volume) BOOST_HANA_STRING(R"( # Which audio output type to use. # 0 (default): Auto-select, 1: No audio output, 2: Cubeb (if available), 3: OpenAL (if available), 4: SDL2 (if available) -output_type = +)") DECLARE_KEY(output_type) BOOST_HANA_STRING(R"( # Which audio output device to use. # auto (default): Auto-select -output_device = +)") DECLARE_KEY(output_device) BOOST_HANA_STRING(R"( # Which audio input type to use. # 0 (default): Auto-select, 1: No audio input, 2: Static noise, 3: Cubeb (if available), 4: OpenAL (if available) -input_type = +)") DECLARE_KEY(input_type) BOOST_HANA_STRING(R"( # Which audio input device to use. # auto (default): Auto-select -input_device = +)") DECLARE_KEY(input_device) BOOST_HANA_STRING(R"( [Data Storage] # Whether to create a virtual SD card. # 1 (default): Yes, 0: No -use_virtual_sd = +)") DECLARE_KEY(use_virtual_sd) BOOST_HANA_STRING(R"( [System] # The system model that Citra will try to emulate # 0: Old 3DS (default), 1: New 3DS -is_new_3ds = +)") DECLARE_KEY(is_new_3ds) BOOST_HANA_STRING(R"( # Whether to use LLE system applets, if installed # 0: No, 1 (default): Yes -lle_applets = +)") DECLARE_KEY(lle_applets) BOOST_HANA_STRING(R"( # Whether to enable LLE modules for online play # 0 (default): No, 1: Yes -enable_required_online_lle_modules = +)") DECLARE_KEY(enable_required_online_lle_modules) BOOST_HANA_STRING(R"( # The system region that Citra will use during emulation # -1: Auto-select (default), 0: Japan, 1: USA, 2: Europe, 3: Australia, 4: China, 5: Korea, 6: Taiwan -region_value = +)") DECLARE_KEY(region_value) BOOST_HANA_STRING(R"( # The system language that Citra will use during emulation # 0: Japanese, 1: English (default), 2: French, 3: German, 4: Italian, 5: Spanish, # 6: Simplified Chinese, 7: Korean, 8: Dutch, 9: Portuguese, 10: Russian, 11: Traditional Chinese -language = +)") DECLARE_KEY(language) BOOST_HANA_STRING(R"( # The clock to use when citra starts # 0: System clock (default), 1: fixed time -init_clock = +)") DECLARE_KEY(init_clock) BOOST_HANA_STRING(R"( # Time used when init_clock is set to fixed_time in the format %Y-%m-%d %H:%M:%S # set to fixed time. Default 2000-01-01 00:00:01 # Note: 3DS can only handle times later then Jan 1 2000 -init_time = +)") DECLARE_KEY(init_time) BOOST_HANA_STRING(R"( # The system ticks count to use when citra starts # 0: Random (default), 1: Fixed -init_ticks_type = +)") DECLARE_KEY(init_ticks_type) BOOST_HANA_STRING(R"( # Tick count to use when init_ticks_type is set to Fixed. # Defaults to 0. -init_ticks_override = +)") DECLARE_KEY(init_ticks_override) BOOST_HANA_STRING(R"( # Number of steps per hour reported by the pedometer. Range from 0 to 65,535. # Defaults to 0. -steps_per_hour = +)") DECLARE_KEY(steps_per_hour) BOOST_HANA_STRING(R"( # Plugin loader state, if enabled plugins will be loaded from the SD card. # You can also set if homebrew apps are allowed to enable the plugin loader -plugin_loader = -allow_plugin_loader = +)") DECLARE_KEY(plugin_loader) BOOST_HANA_STRING(R"( +)") DECLARE_KEY(allow_plugin_loader) BOOST_HANA_STRING(R"( # Apply region free patch to installed applications # Patches the region of installed applications to be region free, so that they always appear on the home menu. # 0: Disabled, 1 (default): Enabled -apply_region_free_patch = +)") DECLARE_KEY(apply_region_free_patch) BOOST_HANA_STRING(R"( [Camera] # Which camera engine to use for the right outer camera @@ -437,66 +491,76 @@ apply_region_free_patch = # If you don't specify an ID, the default setting will be used. For outer cameras, # the back-facing camera will be used. For the inner camera, the front-facing # camera will be used. Please note that 'Legacy' cameras are not supported. -camera_outer_right_name = +)") DECLARE_KEY(camera_outer_right_name) BOOST_HANA_STRING(R"( # A config string for the right outer camera. Its meaning is defined by the camera engine -camera_outer_right_config = +)") DECLARE_KEY(camera_outer_right_config) BOOST_HANA_STRING(R"( # The image flip to apply # 0: None (default), 1: Horizontal, 2: Vertical, 3: Reverse -camera_outer_right_flip = +)") DECLARE_KEY(camera_outer_right_flip) BOOST_HANA_STRING(R"( # ... for the left outer camera -camera_outer_left_name = -camera_outer_left_config = -camera_outer_left_flip = +)") DECLARE_KEY(camera_outer_left_name) BOOST_HANA_STRING(R"( +)") DECLARE_KEY(camera_outer_left_config) BOOST_HANA_STRING(R"( +)") DECLARE_KEY(camera_outer_left_flip) BOOST_HANA_STRING(R"( # ... for the inner camera -camera_inner_name = -camera_inner_config = -camera_inner_flip = +)") DECLARE_KEY(camera_inner_name) BOOST_HANA_STRING(R"( +)") DECLARE_KEY(camera_inner_config) BOOST_HANA_STRING(R"( +)") DECLARE_KEY(camera_inner_flip) BOOST_HANA_STRING(R"( [Miscellaneous] # A filter which removes logs below a certain logging level. # Examples: *:Debug Kernel.SVC:Trace Service.*:Critical -log_filter = *:Info +)") DECLARE_KEY(log_filter) BOOST_HANA_STRING(R"( + +# Whether or not Azahar-related images should be hidden from the Android gallery +# 0 (default): No, 1: Yes +)") DECLARE_KEY(android_hide_images) BOOST_HANA_STRING(R"( [Debugging] # Record frame time data, can be found in the log directory. Boolean value -record_frame_times = +)") DECLARE_KEY(record_frame_times) BOOST_HANA_STRING(R"( # Whether to enable additional debugging information during emulation # 0 (default): Off, 1: On -renderer_debug = +)") DECLARE_KEY(renderer_debug) BOOST_HANA_STRING(R"( # Port for listening to GDB connections. -use_gdbstub=false -gdbstub_port=24689 +)") DECLARE_KEY(use_gdbstub) BOOST_HANA_STRING(R"( +)") DECLARE_KEY(gdbstub_port) BOOST_HANA_STRING(R"( # Flush log output on every message # Immediately commits the debug log to file. Use this if Azahar crashes and the log output is being cut. -instant_debug_log = +)") DECLARE_KEY(instant_debug_log) BOOST_HANA_STRING(R"( # Enable RPC server for scripting purposes. Allows accessing guest memory remotely. # 0 (default): Off, 1: On -enable_rpc_server = +)") DECLARE_KEY(enable_rpc_server) BOOST_HANA_STRING(R"( + +# Enables toggling the unique data console type (Old 3DS <-> New 3DS) to be able to download the opposite system firmware type from system settings. +# 0 (default): Off, 1: On +)") DECLARE_KEY(toggle_unique_data_console_type) BOOST_HANA_STRING(R"( # Delay the start of apps when LLE modules are enabled # 0: Off, 1 (default): On -delay_start_for_lle_modules = +)") DECLARE_KEY(delay_start_for_lle_modules) BOOST_HANA_STRING(R"( # Force deterministic async operations # Only needed for debugging, makes performance worse if enabled # 0: Off (default), 1: On -deterministic_async_operations = +)") DECLARE_KEY(deterministic_async_operations) BOOST_HANA_STRING(R"( # To LLE a service module add "LLE\=true" [WebService] # URL for Web API -web_api_url = +)") DECLARE_KEY(web_api_url) BOOST_HANA_STRING(R"( # Username and token for Citra Web Service -citra_username = -citra_token = -)"; -} +)") DECLARE_KEY(citra_username) BOOST_HANA_STRING(R"( +)") DECLARE_KEY(citra_token) BOOST_HANA_STRING("\n")).c_str(); + +// clang-format on + +} // namespace DefaultINI diff --git a/src/android/app/src/main/jni/id_cache.cpp b/src/android/app/src/main/jni/id_cache.cpp index d7d4a109a..197e81aaa 100644 --- a/src/android/app/src/main/jni/id_cache.cpp +++ b/src/android/app/src/main/jni/id_cache.cpp @@ -207,9 +207,10 @@ jint JNI_OnLoad(JavaVM* vm, void* reserved) { env->NewGlobalRef(env->FindClass("org/citra/citra_emu/utils/DiskShaderCacheProgress"))); jclass load_callback_stage_class = env->FindClass("org/citra/citra_emu/utils/DiskShaderCacheProgress$LoadCallbackStage"); - s_disk_cache_load_progress = env->GetStaticMethodID( - s_disk_cache_progress_class, "loadProgress", - "(Lorg/citra/citra_emu/utils/DiskShaderCacheProgress$LoadCallbackStage;II)V"); + s_disk_cache_load_progress = + env->GetStaticMethodID(s_disk_cache_progress_class, "loadProgress", + "(Lorg/citra/citra_emu/utils/" + "DiskShaderCacheProgress$LoadCallbackStage;IILjava/lang/String;)V"); s_compress_progress_method = env->GetStaticMethodID(s_native_library_class, "onCompressProgress", "(JJ)V"); // Initialize LoadCallbackStage map diff --git a/src/android/app/src/main/jni/jni_setting_keys.cpp.in b/src/android/app/src/main/jni/jni_setting_keys.cpp.in new file mode 100644 index 000000000..b701996e4 --- /dev/null +++ b/src/android/app/src/main/jni/jni_setting_keys.cpp.in @@ -0,0 +1,19 @@ +// Copyright Citra Emulator Project / Azahar Emulator Project +// Licensed under GPLv2 or any later version +// Refer to the license.txt file included. + +#include + +#define JNI_DEFINE_KEY(KEY, KEY_JNI_ESCAPED) \ + JNIEXPORT jstring JNICALL \ + Java_org_citra_citra_1emu_features_settings_SettingKeys_##KEY_JNI_ESCAPED( \ + JNIEnv* env, jobject obj \ + ) { \ + return env->NewStringUTF(#KEY); \ + } + +extern "C" { + + @JNI_SETTING_KEY_DEFINITIONS@ + +} diff --git a/src/android/app/src/main/jni/native.cpp b/src/android/app/src/main/jni/native.cpp index 508ad6de3..f4a30610c 100644 --- a/src/android/app/src/main/jni/native.cpp +++ b/src/android/app/src/main/jni/native.cpp @@ -130,12 +130,13 @@ static bool HandleCoreError(Core::System::ResultStatus result, const std::string env->NewStringUTF(details.c_str())) != JNI_FALSE; } -static void LoadDiskCacheProgress(VideoCore::LoadCallbackStage stage, int progress, int max) { +static void LoadDiskCacheProgress(VideoCore::LoadCallbackStage stage, int progress, int max, + const std::string& object) { JNIEnv* env = IDCache::GetEnvForThread(); env->CallStaticVoidMethod(IDCache::GetDiskCacheProgressClass(), IDCache::GetDiskCacheLoadProgress(), IDCache::GetJavaLoadCallbackStage(stage), static_cast(progress), - static_cast(max)); + static_cast(max), env->NewStringUTF(object.c_str())); } static Camera::NDK::Factory* g_ndk_factory{}; @@ -217,7 +218,7 @@ static Core::System::ResultStatus RunCitra(const std::string& filepath) { true, shared_context); #elif ENABLE_VULKAN - window = std::make_unique(s_surface, vulkan_library); + window = std::make_unique(s_surface, vulkan_library, false); secondary_window = std::make_unique(s_secondary_surface, vulkan_library, true); #else @@ -267,7 +268,7 @@ static Core::System::ResultStatus RunCitra(const std::string& filepath) { stop_run = false; pause_emulation = false; - LoadDiskCacheProgress(VideoCore::LoadCallbackStage::Prepare, 0, 0); + LoadDiskCacheProgress(VideoCore::LoadCallbackStage::Prepare, 0, 0, ""); system.GPU().ApplyPerProgramSettings(program_id); @@ -275,7 +276,7 @@ static Core::System::ResultStatus RunCitra(const std::string& filepath) { system.GPU().Renderer().Rasterizer()->LoadDefaultDiskResources(stop_run, &LoadDiskCacheProgress); - LoadDiskCacheProgress(VideoCore::LoadCallbackStage::Complete, 0, 0); + LoadDiskCacheProgress(VideoCore::LoadCallbackStage::Complete, 0, 0, ""); SCOPE_EXIT({ TryShutdown(); }); @@ -651,34 +652,38 @@ void Java_org_citra_citra_1emu_NativeLibrary_setUserDirectory(JNIEnv* env, FileUtil::SetCurrentDir(GetJString(env, j_directory)); } -jobjectArray Java_org_citra_citra_1emu_NativeLibrary_getInstalledGamePaths( +jobjectArray Java_org_citra_citra_1emu_NativeLibrary_getInstalledGamePathsImpl( JNIEnv* env, [[maybe_unused]] jclass clazz) { std::vector games; - const FileUtil::DirectoryEntryCallable ScanDir = - [&games, &ScanDir](u64*, const std::string& directory, const std::string& virtual_name) { - std::string path = directory + virtual_name; - if (FileUtil::IsDirectory(path)) { - path += '/'; - FileUtil::ForeachDirectoryEntry(nullptr, path, ScanDir); - } else { - if (!FileUtil::Exists(path)) - return false; - auto loader = Loader::GetLoader(path); - if (loader) { - bool executable{}; - const Loader::ResultStatus result = loader->IsExecutable(executable); - if (Loader::ResultStatus::Success == result && executable) { - games.emplace_back(path); - } + Service::FS::MediaType media_type; + const FileUtil::DirectoryEntryCallable ScanDir = [&games, &ScanDir, &media_type]( + u64*, const std::string& directory, + const std::string& virtual_name) { + std::string path = directory + virtual_name; + if (FileUtil::IsDirectory(path)) { + path += '/'; + FileUtil::ForeachDirectoryEntry(nullptr, path, ScanDir); + } else { + if (!FileUtil::Exists(path)) + return false; + auto loader = Loader::GetLoader(path); + if (loader) { + bool executable{}; + const Loader::ResultStatus result = loader->IsExecutable(executable); + if (Loader::ResultStatus::Success == result && executable) { + games.emplace_back(path + "|" + std::to_string(static_cast(media_type))); } } - return true; - }; + } + return true; + }; + media_type = Service::FS::MediaType::SDMC; ScanDir(nullptr, "", FileUtil::GetUserPath(FileUtil::UserPath::SDMCDir) + "Nintendo " "3DS/00000000000000000000000000000000/" "00000000000000000000000000000000/title/00040000"); + media_type = Service::FS::MediaType::NAND; ScanDir(nullptr, "", FileUtil::GetUserPath(FileUtil::UserPath::NANDDir) + "00000000000000000000000000000000/title/00040010"); @@ -1106,4 +1111,23 @@ void Java_org_citra_citra_1emu_NativeLibrary_setInsertedCartridge(JNIEnv* env, j inserted_cartridge = GetJString(env, path); } +jboolean Java_org_citra_citra_1emu_NativeLibrary_uninstallTitle(JNIEnv* env, jobject obj, + jlong j_titleid, jint j_mediatype) { + const auto titleid = static_cast(j_titleid); + const auto result = + Service::AM::UninstallProgram(static_cast(j_mediatype), titleid); + if (result.IsError()) { + LOG_ERROR(Frontend, "Failed to uninstall '{}': 0x{:08X}", std::to_string(titleid), + result.raw); + return false; + } + return true; +} + +jboolean Java_org_citra_citra_1emu_NativeLibrary_nativeFileExists(JNIEnv* env, jobject obj, + jstring j_path) { + const auto path = GetJString(env, j_path); + return FileUtil::Exists(path); +} + } // extern "C" diff --git a/src/android/app/src/main/res/drawable-xxxhdpi/automap_face_buttons.png b/src/android/app/src/main/res/drawable-xxxhdpi/automap_face_buttons.png new file mode 100644 index 000000000..60f7c2bad Binary files /dev/null and b/src/android/app/src/main/res/drawable-xxxhdpi/automap_face_buttons.png differ diff --git a/src/android/app/src/main/res/layout/dialog_auto_map.xml b/src/android/app/src/main/res/layout/dialog_auto_map.xml new file mode 100644 index 000000000..95cb8d138 --- /dev/null +++ b/src/android/app/src/main/res/layout/dialog_auto_map.xml @@ -0,0 +1,55 @@ + + + + + + + + + + + +