Compare commits
82 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 0d3cef65ad | |||
| c2794985b2 | |||
| 2e1af92852 | |||
| b9655669b3 | |||
| 6b01977005 | |||
| 91d41d1c34 | |||
| 2e4ee8d9a4 | |||
| 92274ff280 | |||
| d1ac5b2e50 | |||
| c160d6b752 | |||
| eb2d9ea574 | |||
| 4f389338bd | |||
| 227a007413 | |||
| 74d6eaf721 | |||
| 9807fa02ed | |||
| 7d239df065 | |||
| b690813196 | |||
| b9f54f4979 | |||
| 7e730a121b | |||
| 680384f7b8 | |||
| a27914f0f4 | |||
| 3f226678dd | |||
| e9d84d098d | |||
| 32db6c1877 | |||
| 8eaa7c28ce | |||
| 3edfcabdea | |||
| 450c483de0 | |||
| 66db2613b5 | |||
| 9a046190c7 | |||
| cfbef5c487 | |||
| f51d61e4a4 | |||
| ba9e03a612 | |||
| 7832afc5dd | |||
| 028765867f | |||
| d89df63a28 | |||
| 87c4f658ce | |||
| b7584cb2c3 | |||
| f32f356c40 | |||
| 7ca657d22f | |||
| 7764cdd57e | |||
| 42863027e2 | |||
| 08f3639c80 | |||
| e13c7ef3f8 | |||
| 89dd133a2f | |||
| 86e9c32800 | |||
| f1cf30bc2a | |||
| 5af5214451 | |||
| 312c1cc0f6 | |||
| 576c4e5f77 | |||
| 84cf3e8c84 | |||
| 45a2008aa6 | |||
| 8f6e0aa2cb | |||
| ca0bc65531 | |||
| a1930d1063 | |||
| 48843306e2 | |||
| 159482a7a9 | |||
| 0510f0bdbc | |||
| 569dbfe8c0 | |||
| 8412e64bb0 | |||
| 1c4dae066b | |||
| 9406438d51 | |||
| 612da00d1b | |||
| 4b34a5c9fa | |||
| 504df4856d | |||
| 6abaee94a6 | |||
| 4bf2e0a7aa | |||
| 82a476d458 | |||
| ac2287f261 | |||
| dd24ef244d | |||
| 5cc218084b | |||
| c0663ccd6b | |||
| 8a7fe32a2c | |||
| 4b0bcfb0f7 | |||
| 82eb5a03f4 | |||
| 0e6ea2d9d6 | |||
| 6a9ad5e1ea | |||
| 903106c9b2 | |||
| c70abc8e43 | |||
| 8ae7974092 | |||
| def4349e7a | |||
| fe6b6fbde5 | |||
| ea6c3c379c |
@@ -4,7 +4,7 @@
|
|||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
# specify full path if dupes may exist
|
# specify full path if dupes may exist
|
||||||
EXCLUDE_FILES="CPM.cmake CPMUtil.cmake GetSCMRev.cmake renderdoc_app.h tools/cpm tools/shellcheck.sh tools/update-cpm.sh externals/stb externals/glad externals/getopt externals/gamemode externals/FidelityFX-FSR externals/demangle externals/bc_decoder"
|
EXCLUDE_FILES="CPM.cmake CPMUtil.cmake GetSCMRev.cmake renderdoc_app.h tools/cpm tools/shellcheck.sh tools/update-cpm.sh tools/windows/vcvarsall.sh externals/stb externals/glad externals/getopt externals/gamemode externals/FidelityFX-FSR externals/demangle externals/bc_decoder"
|
||||||
|
|
||||||
# license header constants, please change when needed :))))
|
# license header constants, please change when needed :))))
|
||||||
YEAR=2025
|
YEAR=2025
|
||||||
|
|||||||
@@ -0,0 +1,19 @@
|
|||||||
|
name: tx-src
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ master ]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
sources:
|
||||||
|
runs-on: source
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: Push New Sources
|
||||||
|
run: |
|
||||||
|
export PATH=/usr/lib/qt6/bin:$PATH
|
||||||
|
./tools/translations/qt-source.sh
|
||||||
|
tx-cli push -s
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
name: Check Strings
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ master ]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
check-strings:
|
||||||
|
runs-on: source
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: Find Unused Strings
|
||||||
|
run: ./tools/find-unused-strings.sh
|
||||||
|
|
||||||
|
- name: Find Stale Translations
|
||||||
|
run: ./tools/stale-translations.sh
|
||||||
|
|
||||||
|
- name: Diff
|
||||||
|
run: git --no-pager diff --exit-code HEAD
|
||||||
@@ -0,0 +1,62 @@
|
|||||||
|
name: tx-pull
|
||||||
|
|
||||||
|
on:
|
||||||
|
# monday, wednesday, saturday at 2pm
|
||||||
|
schedule:
|
||||||
|
cron:
|
||||||
|
- '0 14 * * 1,3,6'
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
tx-update:
|
||||||
|
runs-on: source
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: Get New Translations
|
||||||
|
run: tx-cli pull -t -f
|
||||||
|
|
||||||
|
- name: Push branch
|
||||||
|
run: |
|
||||||
|
git config --local user.name "Eden CI"
|
||||||
|
git config --local user.email "ci@eden-emu.dev"
|
||||||
|
git config --local user.signingkey "D57652791BB25D2A"
|
||||||
|
git config --local push.autoSetupRemote true
|
||||||
|
|
||||||
|
git remote set-url origin ci:eden-emu/eden.git
|
||||||
|
|
||||||
|
TIMESTAMP=$(date +"%s")
|
||||||
|
echo "TIMESTAMP=$TIMESTAMP" >> "$GITHUB_ENV"
|
||||||
|
|
||||||
|
git switch -c update-translations-$TIMESTAMP
|
||||||
|
git add dist src/android/app/src/main/res
|
||||||
|
|
||||||
|
git commit -sS -m "[dist, android] Update translations from Transifex"
|
||||||
|
git push
|
||||||
|
|
||||||
|
- name: Create PR
|
||||||
|
run: |
|
||||||
|
DATE=$(date +"%b %d")
|
||||||
|
TITLE="[dist, android] Update translations from Transifex for $DATE"
|
||||||
|
BODY="Automatic translation update for $DATE"
|
||||||
|
BASE=master
|
||||||
|
HEAD=update-translations-$TIMESTAMP
|
||||||
|
|
||||||
|
cat << EOF > data.json
|
||||||
|
{
|
||||||
|
"base": "$BASE",
|
||||||
|
"body": "$BODY",
|
||||||
|
"head": "$HEAD",
|
||||||
|
"title": "$TITLE"
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
|
||||||
|
curl -X 'POST' \
|
||||||
|
'https://git.eden-emu.dev/api/v1/repos/eden-emu/eden/pulls' \
|
||||||
|
-H 'accept: application/json' \
|
||||||
|
-H 'Authorization: Bearer ${{ secrets.CI_FJ_TOKEN }}' \
|
||||||
|
-H 'Content-Type: application/json' \
|
||||||
|
-d "@data.json" --fail
|
||||||
|
|
||||||
@@ -7,6 +7,7 @@
|
|||||||
# Build directory
|
# Build directory
|
||||||
/[Bb]uild*/
|
/[Bb]uild*/
|
||||||
doc-build/
|
doc-build/
|
||||||
|
out/
|
||||||
AppDir/
|
AppDir/
|
||||||
uruntime
|
uruntime
|
||||||
|
|
||||||
@@ -59,3 +60,4 @@ eden-windows-msvc
|
|||||||
artifacts
|
artifacts
|
||||||
*.AppImage*
|
*.AppImage*
|
||||||
/install*
|
/install*
|
||||||
|
vulkansdk*.exe
|
||||||
|
|||||||
@@ -13,12 +13,19 @@ elseif (${CMAKE_SYSTEM_NAME} STREQUAL "OpenBSD")
|
|||||||
set(PLATFORM_OPENBSD ON)
|
set(PLATFORM_OPENBSD ON)
|
||||||
elseif (${CMAKE_SYSTEM_NAME} STREQUAL "NetBSD")
|
elseif (${CMAKE_SYSTEM_NAME} STREQUAL "NetBSD")
|
||||||
set(PLATFORM_NETBSD ON)
|
set(PLATFORM_NETBSD ON)
|
||||||
|
elseif (${CMAKE_SYSTEM_NAME} STREQUAL "DragonFly")
|
||||||
|
set(PLATFORM_DRAGONFLYBSD ON)
|
||||||
elseif (${CMAKE_SYSTEM_NAME} STREQUAL "Haiku")
|
elseif (${CMAKE_SYSTEM_NAME} STREQUAL "Haiku")
|
||||||
set(PLATFORM_HAIKU ON)
|
set(PLATFORM_HAIKU ON)
|
||||||
elseif (${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
|
elseif (${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
|
||||||
set(PLATFORM_LINUX ON)
|
set(PLATFORM_LINUX ON)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
# dumb heuristic to detect msys2
|
||||||
|
if (CMAKE_COMMAND MATCHES "msys64")
|
||||||
|
set(PLATFORM_MSYS ON)
|
||||||
|
endif()
|
||||||
|
|
||||||
if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
|
if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
|
||||||
set(CXX_CLANG ON)
|
set(CXX_CLANG ON)
|
||||||
if (MSVC)
|
if (MSVC)
|
||||||
@@ -37,17 +44,23 @@ endif()
|
|||||||
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules")
|
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules")
|
||||||
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/externals/cmake-modules")
|
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/externals/cmake-modules")
|
||||||
|
|
||||||
|
# https://gitlab.kitware.com/cmake/cmake/-/merge_requests/11112
|
||||||
|
# This works totally fine on MinGW64, but not CLANG{,ARM}64
|
||||||
|
if(MINGW AND CXX_CLANG)
|
||||||
|
set(CMAKE_SYSTEM_VERSION 10.0.0)
|
||||||
|
endif()
|
||||||
|
|
||||||
# NB: this does not account for SPARC
|
# NB: this does not account for SPARC
|
||||||
# If you get Eden working on SPARC, please shoot crueter@crueter.xyz multiple emails
|
# If you get Eden working on SPARC, please shoot crueter@crueter.xyz multiple emails
|
||||||
# and you will be hailed for eternity
|
# and you will be hailed for eternity
|
||||||
if (PLATFORM_SUN)
|
if (PLATFORM_SUN)
|
||||||
# Terrific Solaris pkg shenanigans
|
# Terrific Solaris pkg shenanigans
|
||||||
list(APPEND CMAKE_PREFIX_PATH "/usr/lib/qt/6.6/lib/amd64/cmake")
|
list(APPEND CMAKE_PREFIX_PATH "${CMAKE_SYSROOT}/usr/lib/qt/6.6/lib/amd64/cmake")
|
||||||
list(APPEND CMAKE_MODULE_PATH "/usr/lib/qt/6.6/lib/amd64/cmake")
|
list(APPEND CMAKE_MODULE_PATH "${CMAKE_SYSROOT}/usr/lib/qt/6.6/lib/amd64/cmake")
|
||||||
|
|
||||||
# Amazing - absolutely incredible
|
# Amazing - absolutely incredible
|
||||||
list(APPEND CMAKE_PREFIX_PATH "/usr/lib/amd64/cmake")
|
list(APPEND CMAKE_PREFIX_PATH "${CMAKE_SYSROOT}/usr/lib/amd64/cmake")
|
||||||
list(APPEND CMAKE_MODULE_PATH "/usr/lib/amd64/cmake")
|
list(APPEND CMAKE_MODULE_PATH "${CMAKE_SYSROOT}/usr/lib/amd64/cmake")
|
||||||
|
|
||||||
# For some mighty reason, doing a normal release build sometimes may not trigger
|
# For some mighty reason, doing a normal release build sometimes may not trigger
|
||||||
# the proper -O3 switch to materialize
|
# the proper -O3 switch to materialize
|
||||||
@@ -63,18 +76,106 @@ endif()
|
|||||||
|
|
||||||
# Needed for FFmpeg w/ VAAPI and DRM
|
# Needed for FFmpeg w/ VAAPI and DRM
|
||||||
if (PLATFORM_OPENBSD)
|
if (PLATFORM_OPENBSD)
|
||||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -I/usr/X11R6/include")
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -I${CMAKE_SYSROOT}/usr/X11R6/include")
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -I/usr/X11R6/include")
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -I${CMAKE_SYSROOT}/usr/X11R6/include")
|
||||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -L/usr/X11R6/lib")
|
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -L${CMAKE_SYSROOT}/usr/X11R6/lib")
|
||||||
elseif (PLATFORM_NETBSD)
|
elseif (PLATFORM_NETBSD)
|
||||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -I/usr/X11R7/include")
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -I${CMAKE_SYSROOT}/usr/X11R7/include")
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -I/usr/X11R7/include")
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -I${CMAKE_SYSROOT}/usr/X11R7/include")
|
||||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -L/usr/X11R7/lib")
|
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -L${CMAKE_SYSROOT}/usr/X11R7/lib")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# NetBSD: Fun for the whole family!
|
# NetBSD: Fun for the whole family!
|
||||||
if (PLATFORM_NETBSD)
|
if (PLATFORM_NETBSD)
|
||||||
set(ENV{PKG_CONFIG_PATH} "${PKG_CONFIG_PATH}:/usr/pkg/lib/ffmpeg7/pkgconfig")
|
set(ENV{PKG_CONFIG_PATH} "${PKG_CONFIG_PATH}:${CMAKE_SYSROOT}/usr/pkg/lib/ffmpeg7/pkgconfig")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# MSYS2 utilities
|
||||||
|
if (PLATFORM_MSYS)
|
||||||
|
include(FixMsysPaths)
|
||||||
|
# really, really dumb heuristic to detect what environment we are in
|
||||||
|
macro(system var)
|
||||||
|
if (CMAKE_COMMAND MATCHES ${var})
|
||||||
|
set(MSYSTEM ${var})
|
||||||
|
endif()
|
||||||
|
endmacro()
|
||||||
|
|
||||||
|
system(mingw64)
|
||||||
|
system(clang64)
|
||||||
|
system(clangarm64)
|
||||||
|
system(ucrt64)
|
||||||
|
|
||||||
|
if (NOT DEFINED MSYSTEM)
|
||||||
|
set(MSYSTEM msys2)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# we (generally) want to prioritize environment-specific binaries if possible
|
||||||
|
# some, like autoconf, are not present on environments besides msys2 though
|
||||||
|
set(CMAKE_PROGRAM_PATH C:/msys64/${MSYSTEM}/bin C:/msys64/usr/bin)
|
||||||
|
set(ENV{PKG_CONFIG_PATH} C:/msys64/${MSYSTEM}/lib/pkgconfig)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# static stuff
|
||||||
|
option(YUZU_STATIC_BUILD "Use static libraries and executables if available" OFF)
|
||||||
|
|
||||||
|
if (YUZU_STATIC_BUILD)
|
||||||
|
include(StaticQtLibs)
|
||||||
|
|
||||||
|
# lol
|
||||||
|
set(Boost_USE_STATIC_LIBS ON)
|
||||||
|
set(BUILD_SHARED_LIBS OFF)
|
||||||
|
|
||||||
|
## find .a libs first (static, usually)
|
||||||
|
set(CMAKE_FIND_LIBRARY_SUFFIXES ".a")
|
||||||
|
|
||||||
|
## some libraries define a Library::Name_static alternative ##
|
||||||
|
set(YUZU_STATIC_SUFFIX _static)
|
||||||
|
|
||||||
|
## some libraries use CMAKE_IMPORT_LIBRARY_SUFFIX e.g. Harfbuzz ##
|
||||||
|
set(CMAKE_IMPORT_LIBRARY_SUFFIX ".a")
|
||||||
|
|
||||||
|
if (MINGW)
|
||||||
|
# simple hook to reject dynamic libs
|
||||||
|
function(find_library var)
|
||||||
|
# also skip previously-found libraries cuz... yaknow
|
||||||
|
# UNLESS they are dll.a :{
|
||||||
|
if (${var} AND NOT ${var} MATCHES "dll\\.a$")
|
||||||
|
return()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
_find_library(${var} ${ARGN})
|
||||||
|
if (${var})
|
||||||
|
get_filename_component(lib_name "${${var}}" NAME)
|
||||||
|
if (lib_name MATCHES "dll\\.a$")
|
||||||
|
unset(${var} CACHE)
|
||||||
|
set(${var} "${var}-NOTFOUND" CACHE INTERNAL "" FORCE)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
# msys2 quazip does not build a static lib
|
||||||
|
set(QuaZip-Qt6_FORCE_BUNDLED ON)
|
||||||
|
|
||||||
|
set(YUZU_USE_BUNDLED_FFMPEG ON)
|
||||||
|
set(YUZU_USE_BUNDLED_SDL2 ON)
|
||||||
|
set(YUZU_USE_BUNDLED_OPENSSL ON)
|
||||||
|
|
||||||
|
set(HTTPLIB_USE_BROTLI_IF_AVAILABLE OFF)
|
||||||
|
elseif(APPLE)
|
||||||
|
# these libs do not properly provide static libs/let you do it with cmake
|
||||||
|
set(YUZU_USE_CPM ON)
|
||||||
|
|
||||||
|
set(YUZU_USE_BUNDLED_FFMPEG ON)
|
||||||
|
set(YUZU_USE_BUNDLED_SDL2 ON)
|
||||||
|
set(YUZU_USE_BUNDLED_OPENSSL ON)
|
||||||
|
|
||||||
|
# IMPORTED_IMPLIB not set for imported target
|
||||||
|
# TODO(crueter): wtf
|
||||||
|
set(fmt_FORCE_BUNDLED ON)
|
||||||
|
set(SPIRV-Tools_FORCE_BUNDLED ON)
|
||||||
|
set(SPIRV-Headers_FORCE_BUNDLED ON)
|
||||||
|
set(zstd_FORCE_BUNDLED ON)
|
||||||
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Detect current compilation architecture and create standard definitions
|
# Detect current compilation architecture and create standard definitions
|
||||||
@@ -92,12 +193,14 @@ function(detect_architecture symbol arch)
|
|||||||
if (ARCHITECTURE_${arch})
|
if (ARCHITECTURE_${arch})
|
||||||
set(ARCHITECTURE "${arch}" PARENT_SCOPE)
|
set(ARCHITECTURE "${arch}" PARENT_SCOPE)
|
||||||
set(ARCHITECTURE_${arch} 1 PARENT_SCOPE)
|
set(ARCHITECTURE_${arch} 1 PARENT_SCOPE)
|
||||||
add_definitions(-DARCHITECTURE_${arch}=1)
|
add_definitions("-DARCHITECTURE_${arch}=1")
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
if (NOT ENABLE_GENERIC)
|
if (NOT ENABLE_GENERIC)
|
||||||
|
# https://sourceforge.net/p/predef/wiki/Architectures/
|
||||||
|
# TODO: THIS IS FUCKING FLAWED ONLY THE FIRST SYMBOL THAT APPEARS WILL BE CONSIDERED :(
|
||||||
if (MSVC)
|
if (MSVC)
|
||||||
detect_architecture("_M_AMD64" x86_64)
|
detect_architecture("_M_AMD64" x86_64)
|
||||||
detect_architecture("_M_IX86" x86)
|
detect_architecture("_M_IX86" x86)
|
||||||
@@ -109,6 +212,48 @@ if (NOT ENABLE_GENERIC)
|
|||||||
detect_architecture("__arm__" arm)
|
detect_architecture("__arm__" arm)
|
||||||
detect_architecture("__aarch64__" arm64)
|
detect_architecture("__aarch64__" arm64)
|
||||||
endif()
|
endif()
|
||||||
|
detect_architecture("__ARM64__" arm64)
|
||||||
|
detect_architecture("__aarch64__" arm64)
|
||||||
|
detect_architecture("_M_ARM64" arm64)
|
||||||
|
|
||||||
|
detect_architecture("__arm__" arm)
|
||||||
|
detect_architecture("__TARGET_ARCH_ARM" arm)
|
||||||
|
detect_architecture("_M_ARM" arm)
|
||||||
|
|
||||||
|
detect_architecture("__x86_64" x86_64)
|
||||||
|
detect_architecture("__x86_64__" x86_64)
|
||||||
|
detect_architecture("__amd64" x86_64)
|
||||||
|
detect_architecture("_M_X64" x86_64)
|
||||||
|
|
||||||
|
detect_architecture("__i386" x86)
|
||||||
|
detect_architecture("__i386__" x86)
|
||||||
|
detect_architecture("_M_IX86" x86)
|
||||||
|
|
||||||
|
detect_architecture("__ia64" ia64)
|
||||||
|
detect_architecture("__ia64__" ia64)
|
||||||
|
detect_architecture("_M_IA64" ia64)
|
||||||
|
|
||||||
|
detect_architecture("__mips" mips)
|
||||||
|
detect_architecture("__mips__" mips)
|
||||||
|
detect_architecture("_M_MRX000" mips)
|
||||||
|
|
||||||
|
detect_architecture("__powerpc64__" ppc64)
|
||||||
|
detect_architecture("__ppc64__" ppc64)
|
||||||
|
detect_architecture("__PPC64__" ppc64)
|
||||||
|
detect_architecture("_ARCH_PPC64" ppc64)
|
||||||
|
|
||||||
|
detect_architecture("__ppc__" ppc)
|
||||||
|
detect_architecture("__ppc" ppc)
|
||||||
|
detect_architecture("__powerpc__" ppc)
|
||||||
|
detect_architecture("_ARCH_COM" ppc)
|
||||||
|
detect_architecture("_ARCH_PWR" ppc)
|
||||||
|
detect_architecture("_ARCH_PPC" ppc)
|
||||||
|
detect_architecture("_M_MPPC" ppc)
|
||||||
|
detect_architecture("_M_PPC" ppc)
|
||||||
|
|
||||||
|
detect_architecture("__riscv" riscv)
|
||||||
|
|
||||||
|
detect_architecture("__EMSCRIPTEN__" wasm)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (NOT DEFINED ARCHITECTURE)
|
if (NOT DEFINED ARCHITECTURE)
|
||||||
@@ -139,9 +284,9 @@ if (CXX_CLANG_CL)
|
|||||||
$<$<COMPILE_LANGUAGE:C,CXX>:/EHsc> # thanks microsoft
|
$<$<COMPILE_LANGUAGE:C,CXX>:/EHsc> # thanks microsoft
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# REQUIRED CPU features IN Windows-amd64
|
||||||
if (ARCHITECTURE_x86_64)
|
if (ARCHITECTURE_x86_64)
|
||||||
add_compile_options(
|
add_compile_options(
|
||||||
# Required CPU features for amd64
|
|
||||||
$<$<COMPILE_LANGUAGE:C,CXX>:-msse4.1>
|
$<$<COMPILE_LANGUAGE:C,CXX>:-msse4.1>
|
||||||
$<$<COMPILE_LANGUAGE:C,CXX>:-mcx16>
|
$<$<COMPILE_LANGUAGE:C,CXX>:-mcx16>
|
||||||
)
|
)
|
||||||
@@ -159,20 +304,17 @@ if (MSVC AND NOT CXX_CLANG)
|
|||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W3 /WX-")
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W3 /WX-")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (PLATFORM_FREEBSD)
|
if (PLATFORM_FREEBSD OR PLATFORM_DRAGONFLYBSD)
|
||||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -L/usr/local/lib")
|
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -L${CMAKE_SYSROOT}/usr/local/lib")
|
||||||
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Set bundled sdl2/qt as dependent options.
|
# Set bundled sdl2/qt as dependent options.
|
||||||
# On Linux system SDL2 is likely to be lacking HIDAPI support which have drawbacks but is needed for SDL motion
|
# On Linux system SDL2 is likely to be lacking HIDAPI support which have drawbacks but is needed for SDL motion
|
||||||
cmake_dependent_option(ENABLE_SDL2 "Enable the SDL2 frontend" ON "NOT ANDROID" OFF)
|
cmake_dependent_option(ENABLE_SDL2 "Enable the SDL2 frontend" ON "NOT ANDROID" OFF)
|
||||||
|
|
||||||
if (ENABLE_SDL2)
|
|
||||||
# TODO(crueter): Cleanup, each dep that has a bundled option should allow to choose between bundled, external, system
|
# TODO(crueter): Cleanup, each dep that has a bundled option should allow to choose between bundled, external, system
|
||||||
cmake_dependent_option(YUZU_USE_EXTERNAL_SDL2 "Compile external SDL2" OFF "NOT MSVC" OFF)
|
cmake_dependent_option(YUZU_USE_EXTERNAL_SDL2 "Build SDL2 from external source" OFF "ENABLE_SDL2;NOT MSVC" OFF)
|
||||||
option(YUZU_USE_BUNDLED_SDL2 "Download bundled SDL2 build" "${MSVC}")
|
cmake_dependent_option(YUZU_USE_BUNDLED_SDL2 "Download bundled SDL2 build" "${MSVC}" "ENABLE_SDL2" OFF)
|
||||||
endif()
|
|
||||||
|
|
||||||
# qt stuff
|
# qt stuff
|
||||||
option(ENABLE_QT "Enable the Qt frontend" ON)
|
option(ENABLE_QT "Enable the Qt frontend" ON)
|
||||||
@@ -183,8 +325,7 @@ option(YUZU_USE_QT_MULTIMEDIA "Use QtMultimedia for Camera" OFF)
|
|||||||
option(YUZU_USE_QT_WEB_ENGINE "Use QtWebEngine for web applet implementation" OFF)
|
option(YUZU_USE_QT_WEB_ENGINE "Use QtWebEngine for web applet implementation" OFF)
|
||||||
set(YUZU_QT_MIRROR "" CACHE STRING "What mirror to use for downloading the bundled Qt libraries")
|
set(YUZU_QT_MIRROR "" CACHE STRING "What mirror to use for downloading the bundled Qt libraries")
|
||||||
|
|
||||||
# FreeBSD doesn't have a cubeb port yet, vendoring it isn't required (it's optional anyways)
|
option(ENABLE_CUBEB "Enables the cubeb audio backend" ON)
|
||||||
cmake_dependent_option(ENABLE_CUBEB "Enables the cubeb audio backend" ON "NOT PLATFORM_FREEBSD" OFF)
|
|
||||||
|
|
||||||
set(EXT_DEFAULT OFF)
|
set(EXT_DEFAULT OFF)
|
||||||
if (MSVC OR ANDROID)
|
if (MSVC OR ANDROID)
|
||||||
@@ -194,10 +335,14 @@ option(YUZU_USE_CPM "Use CPM to fetch system dependencies (fmt, boost, etc) if n
|
|||||||
|
|
||||||
# ffmpeg
|
# ffmpeg
|
||||||
option(YUZU_USE_BUNDLED_FFMPEG "Download bundled FFmpeg" ${EXT_DEFAULT})
|
option(YUZU_USE_BUNDLED_FFMPEG "Download bundled FFmpeg" ${EXT_DEFAULT})
|
||||||
cmake_dependent_option(YUZU_USE_EXTERNAL_FFMPEG "Build FFmpeg from source" "${PLATFORM_SUN}" "NOT WIN32 AND NOT ANDROID" OFF)
|
cmake_dependent_option(YUZU_USE_EXTERNAL_FFMPEG "Build FFmpeg from external source" "${PLATFORM_SUN}" "NOT WIN32 AND NOT ANDROID" OFF)
|
||||||
|
|
||||||
# sirit
|
# sirit
|
||||||
option(YUZU_USE_BUNDLED_SIRIT "Download bundled sirit" ${EXT_DEFAULT})
|
set(BUNDLED_SIRIT_DEFAULT OFF)
|
||||||
|
if ((MSVC AND NOT (CMAKE_BUILD_TYPE MATCHES "Debug|RelWithDebInfo") OR ANDROID))
|
||||||
|
set(BUNDLED_SIRIT_DEFAULT ON)
|
||||||
|
endif()
|
||||||
|
option(YUZU_USE_BUNDLED_SIRIT "Download bundled sirit" ${BUNDLED_SIRIT_DEFAULT})
|
||||||
|
|
||||||
# Re-allow on FreeBSD once its on mainline ports
|
# Re-allow on FreeBSD once its on mainline ports
|
||||||
cmake_dependent_option(ENABLE_LIBUSB "Enable the use of LibUSB" ON "WIN32 OR PLATFORM_LINUX OR APPLE" OFF)
|
cmake_dependent_option(ENABLE_LIBUSB "Enable the use of LibUSB" ON "WIN32 OR PLATFORM_LINUX OR APPLE" OFF)
|
||||||
@@ -222,6 +367,7 @@ if(YUZU_ENABLE_LTO)
|
|||||||
set(CMAKE_POLICY_DEFAULT_CMP0069 NEW)
|
set(CMAKE_POLICY_DEFAULT_CMP0069 NEW)
|
||||||
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION ${COMPILER_SUPPORTS_LTO})
|
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION ${COMPILER_SUPPORTS_LTO})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
option(USE_CCACHE "Use ccache for compilation" OFF)
|
option(USE_CCACHE "Use ccache for compilation" OFF)
|
||||||
set(CCACHE_PATH "ccache" CACHE STRING "Path to ccache binary")
|
set(CCACHE_PATH "ccache" CACHE STRING "Path to ccache binary")
|
||||||
if(USE_CCACHE)
|
if(USE_CCACHE)
|
||||||
@@ -233,6 +379,17 @@ if(USE_CCACHE)
|
|||||||
else()
|
else()
|
||||||
message(FATAL_ERROR "USE_CCACHE enabled, but no executable found at: ${CCACHE_PATH}")
|
message(FATAL_ERROR "USE_CCACHE enabled, but no executable found at: ${CCACHE_PATH}")
|
||||||
endif()
|
endif()
|
||||||
|
# Follow SCCache recommendations:
|
||||||
|
# <https://github.com/mozilla/sccache/blob/main/README.md?plain=1#L144>
|
||||||
|
if(WIN32)
|
||||||
|
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||||
|
string(REPLACE "/Zi" "/Z7" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}")
|
||||||
|
string(REPLACE "/Zi" "/Z7" CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG}")
|
||||||
|
elseif(CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo")
|
||||||
|
string(REPLACE "/Zi" "/Z7" CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}")
|
||||||
|
string(REPLACE "/Zi" "/Z7" CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO}")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# TODO(crueter): CI this?
|
# TODO(crueter): CI this?
|
||||||
@@ -266,9 +423,11 @@ if (ANDROID OR WIN32 OR APPLE OR PLATFORM_SUN)
|
|||||||
# your own copy of it.
|
# your own copy of it.
|
||||||
set(DEFAULT_ENABLE_OPENSSL OFF)
|
set(DEFAULT_ENABLE_OPENSSL OFF)
|
||||||
endif()
|
endif()
|
||||||
if (ENABLE_WEB_SERVICE)
|
|
||||||
|
if (ENABLE_WEB_SERVICE OR USE_DISCORD_PRESENCE)
|
||||||
set(DEFAULT_ENABLE_OPENSSL ON)
|
set(DEFAULT_ENABLE_OPENSSL ON)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
option(ENABLE_OPENSSL "Enable OpenSSL backend for ISslConnection" ${DEFAULT_ENABLE_OPENSSL})
|
option(ENABLE_OPENSSL "Enable OpenSSL backend for ISslConnection" ${DEFAULT_ENABLE_OPENSSL})
|
||||||
if (ENABLE_OPENSSL)
|
if (ENABLE_OPENSSL)
|
||||||
set(DEFAULT_YUZU_USE_BUNDLED_OPENSSL OFF)
|
set(DEFAULT_YUZU_USE_BUNDLED_OPENSSL OFF)
|
||||||
@@ -302,13 +461,6 @@ if (ANDROID)
|
|||||||
set(CMAKE_POLICY_VERSION_MINIMUM 3.5) # Workaround for Oboe
|
set(CMAKE_POLICY_VERSION_MINIMUM 3.5) # Workaround for Oboe
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# We need to downgrade debug info (/Zi -> /Z7) to use an older but more cacheable format
|
|
||||||
# See https://github.com/nanoant/CMakePCHCompiler/issues/21
|
|
||||||
if(WIN32 AND (CMAKE_BUILD_TYPE STREQUAL "Debug" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo"))
|
|
||||||
string(REPLACE "/Zi" "/Z7" CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}")
|
|
||||||
string(REPLACE "/Zi" "/Z7" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Default to a Release build
|
# Default to a Release build
|
||||||
get_property(IS_MULTI_CONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
|
get_property(IS_MULTI_CONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
|
||||||
if (NOT IS_MULTI_CONFIG AND NOT CMAKE_BUILD_TYPE)
|
if (NOT IS_MULTI_CONFIG AND NOT CMAKE_BUILD_TYPE)
|
||||||
@@ -529,11 +681,12 @@ else()
|
|||||||
find_package(stb MODULE)
|
find_package(stb MODULE)
|
||||||
|
|
||||||
find_package(Opus 1.3 MODULE REQUIRED)
|
find_package(Opus 1.3 MODULE REQUIRED)
|
||||||
|
|
||||||
find_package(ZLIB 1.2 REQUIRED)
|
find_package(ZLIB 1.2 REQUIRED)
|
||||||
find_package(zstd 1.5 REQUIRED MODULE)
|
find_package(zstd 1.5 REQUIRED MODULE)
|
||||||
|
|
||||||
# wow
|
# wow
|
||||||
find_package(Boost 1.57.0 CONFIG REQUIRED OPTIONAL_COMPONENTS headers context system fiber)
|
find_package(Boost 1.57.0 CONFIG REQUIRED OPTIONAL_COMPONENTS headers context system fiber filesystem)
|
||||||
|
|
||||||
if (CMAKE_SYSTEM_NAME STREQUAL "Linux" OR ANDROID)
|
if (CMAKE_SYSTEM_NAME STREQUAL "Linux" OR ANDROID)
|
||||||
find_package(gamemode 1.7 MODULE)
|
find_package(gamemode 1.7 MODULE)
|
||||||
@@ -581,15 +734,15 @@ if (APPLE)
|
|||||||
# Umbrella framework for everything GUI-related
|
# Umbrella framework for everything GUI-related
|
||||||
find_library(COCOA_LIBRARY Cocoa)
|
find_library(COCOA_LIBRARY Cocoa)
|
||||||
set(PLATFORM_LIBRARIES ${COCOA_LIBRARY} ${IOKIT_LIBRARY} ${COREVIDEO_LIBRARY})
|
set(PLATFORM_LIBRARIES ${COCOA_LIBRARY} ${IOKIT_LIBRARY} ${COREVIDEO_LIBRARY})
|
||||||
find_library(ICONV_LIBRARY iconv REQUIRED)
|
# find_library(ICONV_LIBRARY iconv REQUIRED)
|
||||||
list(APPEND PLATFORM_LIBRARIES ${ICONV_LIBRARY})
|
# list(APPEND PLATFORM_LIBRARIES ${ICONV_LIBRARY})
|
||||||
elseif (WIN32)
|
elseif (WIN32)
|
||||||
# Target Windows 10
|
# Target Windows 10
|
||||||
add_compile_definitions(_WIN32_WINNT=0x0A00 WINVER=0x0A00)
|
add_compile_definitions(_WIN32_WINNT=0x0A00 WINVER=0x0A00)
|
||||||
set(PLATFORM_LIBRARIES winmm ws2_32 iphlpapi)
|
set(PLATFORM_LIBRARIES ${PLATFORM_LIBRARIES} winmm iphlpapi ws2_32 wlanapi)
|
||||||
if (MINGW)
|
if (MINGW)
|
||||||
# PSAPI is the Process Status API
|
# PSAPI is the Process Status API
|
||||||
set(PLATFORM_LIBRARIES ${PLATFORM_LIBRARIES} psapi imm32 version)
|
set(PLATFORM_LIBRARIES ${PLATFORM_LIBRARIES} psapi imm32 version crypt32 rpcrt4 gdi32 wldap32 mswsock)
|
||||||
endif()
|
endif()
|
||||||
elseif (PLATFORM_HAIKU)
|
elseif (PLATFORM_HAIKU)
|
||||||
# Haiku is so special :)
|
# Haiku is so special :)
|
||||||
@@ -602,6 +755,8 @@ elseif (CMAKE_SYSTEM_NAME MATCHES "^(Linux|kFreeBSD|GNU|SunOS)$")
|
|||||||
set(PLATFORM_LIBRARIES rt)
|
set(PLATFORM_LIBRARIES rt)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
message(STATUS "Platform Libraries: ${PLATFORM_LIBRARIES}")
|
||||||
|
|
||||||
add_subdirectory(externals)
|
add_subdirectory(externals)
|
||||||
|
|
||||||
# pass targets from externals
|
# pass targets from externals
|
||||||
@@ -895,6 +1050,14 @@ if(MSVC)
|
|||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if (MINGW)
|
||||||
|
# This saves a truly ridiculous amount of time during linking
|
||||||
|
# In my tests, without this it takes 2 mins, with it takes 3-5 seconds
|
||||||
|
# or on GitHub Actions, 10 minutes -> 3 seconds
|
||||||
|
set(MINGW_FLAGS "-Wl,--strip-all -Wl,--gc-sections")
|
||||||
|
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} ${MINGW_FLAGS}")
|
||||||
|
endif()
|
||||||
|
|
||||||
add_subdirectory(src)
|
add_subdirectory(src)
|
||||||
|
|
||||||
# Set yuzu project or yuzu-cmd project as default StartUp Project in Visual Studio depending on whether QT is enabled or not
|
# Set yuzu project or yuzu-cmd project as default StartUp Project in Visual Studio depending on whether QT is enabled or not
|
||||||
|
|||||||
@@ -542,10 +542,11 @@ function(AddCIPackage)
|
|||||||
PACKAGE
|
PACKAGE
|
||||||
EXTENSION
|
EXTENSION
|
||||||
MIN_VERSION
|
MIN_VERSION
|
||||||
DISABLED_PLATFORMS
|
|
||||||
)
|
)
|
||||||
|
|
||||||
cmake_parse_arguments(PKG_ARGS "" "${oneValueArgs}" "" ${ARGN})
|
set(multiValueArgs DISABLED_PLATFORMS)
|
||||||
|
|
||||||
|
cmake_parse_arguments(PKG_ARGS "" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
||||||
|
|
||||||
if(NOT DEFINED PKG_ARGS_VERSION)
|
if(NOT DEFINED PKG_ARGS_VERSION)
|
||||||
message(FATAL_ERROR "[CPMUtil] VERSION is required")
|
message(FATAL_ERROR "[CPMUtil] VERSION is required")
|
||||||
@@ -594,6 +595,14 @@ function(AddCIPackage)
|
|||||||
add_ci_package(windows-arm64)
|
add_ci_package(windows-arm64)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if ((MINGW AND ARCHITECTURE_x86_64) AND NOT "mingw-amd64" IN_LIST DISABLED_PLATFORMS)
|
||||||
|
add_ci_package(mingw-amd64)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if ((MINGW AND ARCHITECTURE_arm64) AND NOT "mingw-arm64" IN_LIST DISABLED_PLATFORMS)
|
||||||
|
add_ci_package(mingw-arm64)
|
||||||
|
endif()
|
||||||
|
|
||||||
if (ANDROID AND NOT "android" IN_LIST DISABLED_PLATFORMS)
|
if (ANDROID AND NOT "android" IN_LIST DISABLED_PLATFORMS)
|
||||||
add_ci_package(android)
|
add_ci_package(android)
|
||||||
endif()
|
endif()
|
||||||
|
|||||||
@@ -1,10 +0,0 @@
|
|||||||
# SPDX-FileCopyrightText: 2020 yuzu Emulator Project
|
|
||||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
|
||||||
|
|
||||||
function(copy_yuzu_FFmpeg_deps target_dir)
|
|
||||||
include(WindowsCopyFiles)
|
|
||||||
set(DLL_DEST "$<TARGET_FILE_DIR:${target_dir}>/")
|
|
||||||
file(READ "${FFmpeg_PATH}/requirements.txt" FFmpeg_REQUIRED_DLLS)
|
|
||||||
string(STRIP "${FFmpeg_REQUIRED_DLLS}" FFmpeg_REQUIRED_DLLS)
|
|
||||||
windows_copy_files(${target_dir} ${FFmpeg_LIBRARY_DIR} ${DLL_DEST} ${FFmpeg_REQUIRED_DLLS})
|
|
||||||
endfunction(copy_yuzu_FFmpeg_deps)
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
# SPDX-FileCopyrightText: 2016 Citra Emulator Project
|
|
||||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
|
||||||
|
|
||||||
function(copy_yuzu_SDL_deps target_dir)
|
|
||||||
include(WindowsCopyFiles)
|
|
||||||
set(DLL_DEST "$<TARGET_FILE_DIR:${target_dir}>/")
|
|
||||||
windows_copy_files(${target_dir} ${SDL2_DLL_DIR} ${DLL_DEST} SDL2.dll)
|
|
||||||
endfunction(copy_yuzu_SDL_deps)
|
|
||||||
@@ -1,3 +1,6 @@
|
|||||||
|
# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
# SPDX-FileCopyrightText: 2019 Citra Emulator Project
|
# SPDX-FileCopyrightText: 2019 Citra Emulator Project
|
||||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
@@ -75,16 +78,16 @@ function(find_ffmpeg LIBNAME)
|
|||||||
)
|
)
|
||||||
else()
|
else()
|
||||||
list(APPEND INCLUDE_PATHS
|
list(APPEND INCLUDE_PATHS
|
||||||
/usr/local/include/ffmpeg
|
${CMAKE_SYSROOT}/usr/local/include/ffmpeg
|
||||||
/usr/local/include/lib${LIBNAME}
|
${CMAKE_SYSROOT}/usr/local/include/lib${LIBNAME}
|
||||||
/usr/include/ffmpeg
|
${CMAKE_SYSROOT}/usr/include/ffmpeg
|
||||||
/usr/include/lib${LIBNAME}
|
${CMAKE_SYSROOT}/usr/include/lib${LIBNAME}
|
||||||
/usr/include/ffmpeg/lib${LIBNAME}
|
${CMAKE_SYSROOT}/usr/include/ffmpeg/lib${LIBNAME}
|
||||||
)
|
)
|
||||||
|
|
||||||
list(APPEND LIB_PATHS
|
list(APPEND LIB_PATHS
|
||||||
/usr/local/lib
|
${CMAKE_SYSROOT}/usr/local/lib
|
||||||
/usr/lib
|
${CMAKE_SYSROOT}/usr/lib
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,6 @@
|
|||||||
|
# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
# SPDX-FileCopyrightText: 2022 yuzu Emulator Project
|
# SPDX-FileCopyrightText: 2022 yuzu Emulator Project
|
||||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
@@ -10,6 +13,10 @@ find_package_handle_standard_args(Opus
|
|||||||
VERSION_VAR OPUS_VERSION
|
VERSION_VAR OPUS_VERSION
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if (PLATFORM_MSYS)
|
||||||
|
FixMsysPath(PkgConfig::OPUS)
|
||||||
|
endif()
|
||||||
|
|
||||||
if (Opus_FOUND AND NOT TARGET Opus::opus)
|
if (Opus_FOUND AND NOT TARGET Opus::opus)
|
||||||
add_library(Opus::opus ALIAS PkgConfig::OPUS)
|
add_library(Opus::opus ALIAS PkgConfig::OPUS)
|
||||||
endif()
|
endif()
|
||||||
|
|||||||
@@ -1,3 +1,6 @@
|
|||||||
|
# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
# SPDX-FileCopyrightText: 2022 yuzu Emulator Project
|
# SPDX-FileCopyrightText: 2022 yuzu Emulator Project
|
||||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
@@ -10,6 +13,10 @@ find_package_handle_standard_args(SPIRV-Tools
|
|||||||
VERSION_VAR SPIRV-Tools_VERSION
|
VERSION_VAR SPIRV-Tools_VERSION
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if (PLATFORM_MSYS)
|
||||||
|
FixMsysPath(PkgConfig::SPIRV-Tools)
|
||||||
|
endif()
|
||||||
|
|
||||||
if (SPIRV-Tools_FOUND AND NOT TARGET SPIRV-Tools::SPIRV-Tools)
|
if (SPIRV-Tools_FOUND AND NOT TARGET SPIRV-Tools::SPIRV-Tools)
|
||||||
if (TARGET SPIRV-Tools)
|
if (TARGET SPIRV-Tools)
|
||||||
add_library(SPIRV-Tools::SPIRV-Tools ALIAS SPIRV-Tools)
|
add_library(SPIRV-Tools::SPIRV-Tools ALIAS SPIRV-Tools)
|
||||||
|
|||||||
@@ -1,3 +1,6 @@
|
|||||||
|
# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
# SPDX-FileCopyrightText: 2022 Alexandre Bouvier <contact@amb.tf>
|
# SPDX-FileCopyrightText: 2022 Alexandre Bouvier <contact@amb.tf>
|
||||||
#
|
#
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
@@ -11,6 +14,10 @@ find_package_handle_standard_args(enet
|
|||||||
VERSION_VAR ENET_VERSION
|
VERSION_VAR ENET_VERSION
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if (PLATFORM_MSYS)
|
||||||
|
FixMsysPath(PkgConfig::ENET)
|
||||||
|
endif()
|
||||||
|
|
||||||
if (enet_FOUND AND NOT TARGET enet::enet)
|
if (enet_FOUND AND NOT TARGET enet::enet)
|
||||||
add_library(enet::enet ALIAS PkgConfig::ENET)
|
add_library(enet::enet ALIAS PkgConfig::ENET)
|
||||||
endif()
|
endif()
|
||||||
|
|||||||
@@ -1,3 +1,6 @@
|
|||||||
|
# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
# SPDX-FileCopyrightText: 2022 Alexandre Bouvier <contact@amb.tf>
|
# SPDX-FileCopyrightText: 2022 Alexandre Bouvier <contact@amb.tf>
|
||||||
#
|
#
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
@@ -11,6 +14,10 @@ find_package_handle_standard_args(libusb
|
|||||||
VERSION_VAR LIBUSB_VERSION
|
VERSION_VAR LIBUSB_VERSION
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if (PLATFORM_MSYS)
|
||||||
|
FixMsysPath(PkgConfig::LIBUSB)
|
||||||
|
endif()
|
||||||
|
|
||||||
if (libusb_FOUND AND NOT TARGET libusb::usb)
|
if (libusb_FOUND AND NOT TARGET libusb::usb)
|
||||||
add_library(libusb::usb ALIAS PkgConfig::LIBUSB)
|
add_library(libusb::usb ALIAS PkgConfig::LIBUSB)
|
||||||
endif()
|
endif()
|
||||||
|
|||||||
@@ -1,3 +1,6 @@
|
|||||||
|
# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
# SPDX-FileCopyrightText: 2022 yuzu Emulator Project
|
# SPDX-FileCopyrightText: 2022 yuzu Emulator Project
|
||||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
@@ -9,6 +12,11 @@ if (lz4_CONSIDERED_CONFIGS)
|
|||||||
else()
|
else()
|
||||||
find_package(PkgConfig QUIET)
|
find_package(PkgConfig QUIET)
|
||||||
pkg_search_module(LZ4 QUIET IMPORTED_TARGET liblz4)
|
pkg_search_module(LZ4 QUIET IMPORTED_TARGET liblz4)
|
||||||
|
|
||||||
|
if (PLATFORM_MSYS)
|
||||||
|
FixMsysPath(PkgConfig::LZ4)
|
||||||
|
endif()
|
||||||
|
|
||||||
find_package_handle_standard_args(lz4
|
find_package_handle_standard_args(lz4
|
||||||
REQUIRED_VARS LZ4_LINK_LIBRARIES
|
REQUIRED_VARS LZ4_LINK_LIBRARIES
|
||||||
VERSION_VAR LZ4_VERSION
|
VERSION_VAR LZ4_VERSION
|
||||||
|
|||||||
@@ -6,22 +6,34 @@
|
|||||||
|
|
||||||
include(FindPackageHandleStandardArgs)
|
include(FindPackageHandleStandardArgs)
|
||||||
|
|
||||||
|
find_package(zstd QUIET CONFIG)
|
||||||
|
if (zstd_CONSIDERED_CONFIGS)
|
||||||
|
find_package_handle_standard_args(zstd CONFIG_MODE)
|
||||||
|
else()
|
||||||
find_package(PkgConfig QUIET)
|
find_package(PkgConfig QUIET)
|
||||||
pkg_search_module(ZSTD QUIET IMPORTED_TARGET libzstd)
|
pkg_search_module(ZSTD QUIET IMPORTED_TARGET libzstd)
|
||||||
find_package_handle_standard_args(zstd
|
find_package_handle_standard_args(zstd
|
||||||
REQUIRED_VARS ZSTD_LINK_LIBRARIES
|
REQUIRED_VARS ZSTD_LINK_LIBRARIES
|
||||||
VERSION_VAR ZSTD_VERSION
|
VERSION_VAR ZSTD_VERSION
|
||||||
)
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
if (zstd_FOUND AND NOT TARGET zstd::zstd)
|
if (zstd_FOUND AND NOT TARGET zstd::zstd)
|
||||||
if (TARGET zstd::libzstd_shared)
|
if (TARGET zstd::libzstd_shared AND NOT YUZU_STATIC_BUILD)
|
||||||
add_library(zstd::zstd ALIAS zstd::libzstd_shared)
|
add_library(zstd::zstd ALIAS zstd::libzstd_shared)
|
||||||
add_library(zstd::libzstd ALIAS zstd::libzstd_shared)
|
|
||||||
elseif (TARGET zstd::libzstd_static)
|
elseif (TARGET zstd::libzstd_static)
|
||||||
add_library(zstd::zstd ALIAS zstd::libzstd_static)
|
add_library(zstd::zstd ALIAS zstd::libzstd_static)
|
||||||
add_library(zstd::libzstd ALIAS zstd::libzstd_static)
|
|
||||||
else()
|
else()
|
||||||
add_library(zstd::zstd ALIAS PkgConfig::ZSTD)
|
add_library(zstd::zstd ALIAS PkgConfig::ZSTD)
|
||||||
add_library(zstd::libzstd ALIAS PkgConfig::ZSTD)
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
get_target_property(ZSTD_TARGET zstd::zstd ALIASED_TARGET)
|
||||||
|
|
||||||
|
if (NOT TARGET zstd::libzstd)
|
||||||
|
if (ZSTD_TARGET)
|
||||||
|
add_library(zstd::libzstd ALIAS ${ZSTD_TARGET})
|
||||||
|
else()
|
||||||
|
add_library(zstd::libzstd ALIAS zstd::zstd)
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|||||||
@@ -0,0 +1,21 @@
|
|||||||
|
# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
|
function(FixMsysPath target)
|
||||||
|
get_target_property(include_dir ${target} INTERFACE_INCLUDE_DIRECTORIES)
|
||||||
|
|
||||||
|
if (NOT (include_dir MATCHES "^/"))
|
||||||
|
return()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(root_default $ENV{MSYS2_LOCATION})
|
||||||
|
if (root_default STREQUAL "")
|
||||||
|
set(root_default "C:/msys64")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(MSYS_ROOT_PATH ${root_default} CACHE STRING "Location of the MSYS2 root")
|
||||||
|
|
||||||
|
set(include_dir "C:/msys64${include_dir}")
|
||||||
|
set_target_properties(${target} PROPERTIES
|
||||||
|
INTERFACE_INCLUDE_DIRECTORIES ${include_dir})
|
||||||
|
endfunction()
|
||||||
@@ -1,58 +0,0 @@
|
|||||||
# SPDX-FileCopyrightText: 2022 yuzu Emulator Project
|
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
||||||
|
|
||||||
set(MINGW_PREFIX /usr/x86_64-w64-mingw32/)
|
|
||||||
set(CMAKE_SYSTEM_NAME Windows)
|
|
||||||
set(CMAKE_SYSTEM_PROCESSOR x86_64)
|
|
||||||
|
|
||||||
set(CMAKE_FIND_ROOT_PATH ${MINGW_PREFIX})
|
|
||||||
set(SDL2_PATH ${MINGW_PREFIX})
|
|
||||||
set(MINGW_TOOL_PREFIX ${CMAKE_SYSTEM_PROCESSOR}-w64-mingw32-)
|
|
||||||
|
|
||||||
# Specify the cross compiler
|
|
||||||
set(CMAKE_C_COMPILER ${MINGW_TOOL_PREFIX}clang)
|
|
||||||
set(CMAKE_CXX_COMPILER ${MINGW_TOOL_PREFIX}clang++)
|
|
||||||
set(CMAKE_RC_COMPILER ${MINGW_TOOL_PREFIX}windres)
|
|
||||||
set(CMAKE_C_COMPILER_AR ${MINGW_TOOL_PREFIX}ar)
|
|
||||||
set(CMAKE_CXX_COMPILER_AR ${MINGW_TOOL_PREFIX}ar)
|
|
||||||
set(CMAKE_C_COMPILER_RANLIB ${MINGW_TOOL_PREFIX}ranlib)
|
|
||||||
set(CMAKE_CXX_COMPILER_RANLIB ${MINGW_TOOL_PREFIX}ranlib)
|
|
||||||
|
|
||||||
# Mingw tools
|
|
||||||
set(STRIP ${MINGW_TOOL_PREFIX}strip)
|
|
||||||
set(WINDRES ${MINGW_TOOL_PREFIX}windres)
|
|
||||||
set(ENV{PKG_CONFIG} ${MINGW_TOOL_PREFIX}pkg-config)
|
|
||||||
|
|
||||||
# ccache wrapper
|
|
||||||
option(USE_CCACHE "Use ccache for compilation" OFF)
|
|
||||||
if(USE_CCACHE)
|
|
||||||
find_program(CCACHE ccache)
|
|
||||||
if(CCACHE)
|
|
||||||
message(STATUS "Using ccache found in PATH")
|
|
||||||
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ${CCACHE})
|
|
||||||
set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ${CCACHE})
|
|
||||||
else(CCACHE)
|
|
||||||
message(WARNING "USE_CCACHE enabled, but no ccache found")
|
|
||||||
endif(CCACHE)
|
|
||||||
endif(USE_CCACHE)
|
|
||||||
|
|
||||||
# Search for programs in the build host directories
|
|
||||||
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
|
||||||
|
|
||||||
|
|
||||||
# Echo modified cmake vars to screen for debugging purposes
|
|
||||||
if(NOT DEFINED ENV{MINGW_DEBUG_INFO})
|
|
||||||
message("")
|
|
||||||
message("Custom cmake vars: (blank = system default)")
|
|
||||||
message("-----------------------------------------")
|
|
||||||
message("* CMAKE_C_COMPILER : ${CMAKE_C_COMPILER}")
|
|
||||||
message("* CMAKE_CXX_COMPILER : ${CMAKE_CXX_COMPILER}")
|
|
||||||
message("* CMAKE_RC_COMPILER : ${CMAKE_RC_COMPILER}")
|
|
||||||
message("* WINDRES : ${WINDRES}")
|
|
||||||
message("* ENV{PKG_CONFIG} : $ENV{PKG_CONFIG}")
|
|
||||||
message("* STRIP : ${STRIP}")
|
|
||||||
message("* USE_CCACHE : ${USE_CCACHE}")
|
|
||||||
message("")
|
|
||||||
# So that the debug info only appears once
|
|
||||||
set(ENV{MINGW_DEBUG_INFO} SHOWN)
|
|
||||||
endif()
|
|
||||||
@@ -1,57 +0,0 @@
|
|||||||
# SPDX-FileCopyrightText: 2018 tech4me <guiwanglong@gmail.com>
|
|
||||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
|
||||||
|
|
||||||
set(MINGW_PREFIX /usr/x86_64-w64-mingw32/)
|
|
||||||
set(CMAKE_SYSTEM_NAME Windows)
|
|
||||||
set(CMAKE_SYSTEM_PROCESSOR x86_64)
|
|
||||||
# Actually a hack, w/o this will cause some strange errors
|
|
||||||
set(CMAKE_HOST_WIN32 TRUE)
|
|
||||||
|
|
||||||
|
|
||||||
set(CMAKE_FIND_ROOT_PATH ${MINGW_PREFIX})
|
|
||||||
set(SDL2_PATH ${MINGW_PREFIX})
|
|
||||||
set(MINGW_TOOL_PREFIX ${CMAKE_SYSTEM_PROCESSOR}-w64-mingw32-)
|
|
||||||
|
|
||||||
# Specify the cross compiler
|
|
||||||
set(CMAKE_C_COMPILER ${MINGW_TOOL_PREFIX}gcc)
|
|
||||||
set(CMAKE_CXX_COMPILER ${MINGW_TOOL_PREFIX}g++)
|
|
||||||
set(CMAKE_RC_COMPILER ${MINGW_TOOL_PREFIX}windres)
|
|
||||||
|
|
||||||
# Mingw tools
|
|
||||||
set(STRIP ${MINGW_TOOL_PREFIX}strip)
|
|
||||||
set(WINDRES ${MINGW_TOOL_PREFIX}windres)
|
|
||||||
set(ENV{PKG_CONFIG} ${MINGW_TOOL_PREFIX}pkg-config)
|
|
||||||
|
|
||||||
# ccache wrapper
|
|
||||||
option(USE_CCACHE "Use ccache for compilation" OFF)
|
|
||||||
if(USE_CCACHE)
|
|
||||||
find_program(CCACHE ccache)
|
|
||||||
if(CCACHE)
|
|
||||||
message(STATUS "Using ccache found in PATH")
|
|
||||||
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ${CCACHE})
|
|
||||||
set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ${CCACHE})
|
|
||||||
else(CCACHE)
|
|
||||||
message(WARNING "USE_CCACHE enabled, but no ccache found")
|
|
||||||
endif(CCACHE)
|
|
||||||
endif(USE_CCACHE)
|
|
||||||
|
|
||||||
# Search for programs in the build host directories
|
|
||||||
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
|
||||||
|
|
||||||
|
|
||||||
# Echo modified cmake vars to screen for debugging purposes
|
|
||||||
if(NOT DEFINED ENV{MINGW_DEBUG_INFO})
|
|
||||||
message("")
|
|
||||||
message("Custom cmake vars: (blank = system default)")
|
|
||||||
message("-----------------------------------------")
|
|
||||||
message("* CMAKE_C_COMPILER : ${CMAKE_C_COMPILER}")
|
|
||||||
message("* CMAKE_CXX_COMPILER : ${CMAKE_CXX_COMPILER}")
|
|
||||||
message("* CMAKE_RC_COMPILER : ${CMAKE_RC_COMPILER}")
|
|
||||||
message("* WINDRES : ${WINDRES}")
|
|
||||||
message("* ENV{PKG_CONFIG} : $ENV{PKG_CONFIG}")
|
|
||||||
message("* STRIP : ${STRIP}")
|
|
||||||
message("* USE_CCACHE : ${USE_CCACHE}")
|
|
||||||
message("")
|
|
||||||
# So that the debug info only appears once
|
|
||||||
set(ENV{MINGW_DEBUG_INFO} SHOWN)
|
|
||||||
endif()
|
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||||
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
|
## When linking to a static Qt build on MinGW, certain additional libraries
|
||||||
|
## must be statically linked to as well.
|
||||||
|
|
||||||
|
function(static_qt_link target)
|
||||||
|
macro(extra_libs)
|
||||||
|
foreach(lib ${ARGN})
|
||||||
|
find_library(${lib}_LIBRARY ${lib} REQUIRED)
|
||||||
|
target_link_libraries(${target} PRIVATE ${${lib}_LIBRARY})
|
||||||
|
endforeach()
|
||||||
|
endmacro()
|
||||||
|
|
||||||
|
# I am constantly impressed at how ridiculously stupid the linker is
|
||||||
|
# NB: yes, we have to put them here twice. I have no idea why
|
||||||
|
|
||||||
|
# libtiff.a
|
||||||
|
extra_libs(tiff jbig bz2 lzma deflate jpeg tiff)
|
||||||
|
|
||||||
|
# libfreetype.a
|
||||||
|
extra_libs(freetype bz2 Lerc brotlidec brotlicommon freetype)
|
||||||
|
|
||||||
|
# libharfbuzz.a
|
||||||
|
extra_libs(harfbuzz graphite2)
|
||||||
|
|
||||||
|
# sijfjkfnjkdfjsbjsbsdfhvbdf
|
||||||
|
if (ENABLE_OPENSSL)
|
||||||
|
target_link_libraries(${target} PRIVATE OpenSSL::SSL OpenSSL::Crypto)
|
||||||
|
endif()
|
||||||
|
endfunction()
|
||||||
@@ -4,11 +4,8 @@
|
|||||||
"package": "OpenSSL",
|
"package": "OpenSSL",
|
||||||
"name": "openssl",
|
"name": "openssl",
|
||||||
"repo": "crueter-ci/OpenSSL",
|
"repo": "crueter-ci/OpenSSL",
|
||||||
"version": "3.6.0",
|
"version": "3.6.0-e3608d80df",
|
||||||
"min_version": "1.1.1",
|
"min_version": "1.1.1"
|
||||||
"disabled_platforms": [
|
|
||||||
"macos-universal"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
"boost": {
|
"boost": {
|
||||||
"package": "Boost",
|
"package": "Boost",
|
||||||
@@ -18,7 +15,7 @@
|
|||||||
"hash": "4fb7f6fde92762305aad8754d7643cd918dd1f3f67e104e9ab385b18c73178d72a17321354eb203b790b6702f2cf6d725a5d6e2dfbc63b1e35f9eb59fb42ece9",
|
"hash": "4fb7f6fde92762305aad8754d7643cd918dd1f3f67e104e9ab385b18c73178d72a17321354eb203b790b6702f2cf6d725a5d6e2dfbc63b1e35f9eb59fb42ece9",
|
||||||
"git_version": "1.89.0",
|
"git_version": "1.89.0",
|
||||||
"version": "1.57",
|
"version": "1.57",
|
||||||
"find_args": "CONFIG",
|
"find_args": "CONFIG OPTIONAL_COMPONENTS headers context system fiber filesystem",
|
||||||
"patches": [
|
"patches": [
|
||||||
"0001-clang-cl.patch",
|
"0001-clang-cl.patch",
|
||||||
"0002-use-marmasm.patch",
|
"0002-use-marmasm.patch",
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 9.2 KiB |
|
Before Width: | Height: | Size: 403 KiB After Width: | Height: | Size: 386 KiB |
|
Before Width: | Height: | Size: 39 KiB After Width: | Height: | Size: 37 KiB |
@@ -0,0 +1,9 @@
|
|||||||
|
# Icon variations
|
||||||
|
|
||||||
|
These icons are licensed under GPLv3. Please see the [script for generating icons](../../tools/README.md) and appropriatedly redirect for seasonal icons.
|
||||||
|
|
||||||
|
- `base_named.svg` - Named variant.
|
||||||
|
- `base_small.svg`: Variant used for tiny icons (16x16, 64x64, etc).
|
||||||
|
- `base.svg`: Variant without branding/naming.
|
||||||
|
|
||||||
|
Try to keep the icons simple. And preferably automatically be able to be generated (to reduce maintanaince burden). Additionally keep the files small (use `svgo` and `optipng`) to not clutter the git.
|
||||||
@@ -0,0 +1,80 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<svg
|
||||||
|
width="512"
|
||||||
|
height="512"
|
||||||
|
fill="none"
|
||||||
|
viewBox="0 0 512 512"
|
||||||
|
version="1.1"
|
||||||
|
id="svg7"
|
||||||
|
sodipodi:docname="base_small.svg"
|
||||||
|
inkscape:version="1.4.2 (ebf0e940d0, 2025-05-08)"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg">
|
||||||
|
<defs
|
||||||
|
id="defs7">
|
||||||
|
<linearGradient
|
||||||
|
id="linearGradient10"
|
||||||
|
inkscape:collect="always">
|
||||||
|
<stop
|
||||||
|
style="stop-color:#f977d9;stop-opacity:1;"
|
||||||
|
offset="0"
|
||||||
|
id="stop10" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#a655d5;stop-opacity:1;"
|
||||||
|
offset="0.54051435"
|
||||||
|
id="stop13" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#984fd5;stop-opacity:1;"
|
||||||
|
offset="0.5714342"
|
||||||
|
id="stop12" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#8c4ad4;stop-opacity:1;"
|
||||||
|
offset="0.59666741"
|
||||||
|
id="stop14" />
|
||||||
|
<stop
|
||||||
|
style="stop-color:#3928d2;stop-opacity:1;"
|
||||||
|
offset="1"
|
||||||
|
id="stop11" />
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient
|
||||||
|
inkscape:collect="always"
|
||||||
|
xlink:href="#linearGradient10"
|
||||||
|
id="linearGradient11"
|
||||||
|
x1="264.17508"
|
||||||
|
y1="28.385544"
|
||||||
|
x2="264.17508"
|
||||||
|
y2="488.65109"
|
||||||
|
gradientUnits="userSpaceOnUse"
|
||||||
|
gradientTransform="matrix(0.97815818,0,0,0.97880258,4.570042,5.8799159)" />
|
||||||
|
</defs>
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="namedview7"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#000000"
|
||||||
|
borderopacity="0.25"
|
||||||
|
inkscape:showpageshadow="2"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pagecheckerboard="0"
|
||||||
|
inkscape:deskcolor="#d1d1d1"
|
||||||
|
inkscape:zoom="0.88388348"
|
||||||
|
inkscape:cx="153.30075"
|
||||||
|
inkscape:cy="243.24473"
|
||||||
|
inkscape:window-width="1600"
|
||||||
|
inkscape:window-height="849"
|
||||||
|
inkscape:window-x="0"
|
||||||
|
inkscape:window-y="27"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="svg7"
|
||||||
|
showguides="false" />
|
||||||
|
<path
|
||||||
|
id="path9"
|
||||||
|
style="fill:url(#linearGradient11);fill-opacity:1;stroke:none;stroke-width:13.3314;stroke-opacity:1;paint-order:stroke fill markers"
|
||||||
|
d="M 262.97461 33.6875 A 218.44267 225.23091 0 0 0 138.83789 73.589844 L 141.13867 72.265625 L 161.2207 65.195312 L 181.01953 61.517578 L 204.35352 64.205078 L 228.96094 76.650391 L 265.80078 115 L 283 99.400391 L 304.59961 85.800781 L 331 76.400391 L 360.59961 69.599609 L 379.95508 69.208984 A 218.44267 225.23091 0 0 0 262.97461 33.6875 z M 380.07617 69.291016 L 350.19922 77.800781 L 329.19922 89.199219 L 307.40039 108 L 288.80078 129.80078 L 287.40039 135 L 302.40039 129.59961 L 319 127.80078 L 348.80078 131.80078 L 370.19922 141.40039 L 393 161.40039 L 399.59961 171.59961 L 374.80078 160.80078 L 338.40039 150.80078 L 309.19922 150 L 288.80078 154.40039 L 293.19922 155.19922 L 319.19922 168.80078 L 338 187.19922 L 350.80078 224 L 349.19922 260 L 326 222.80078 L 302.80078 194 L 277.59961 172.40039 L 269.19922 187.59961 L 256.80078 281.59961 L 258 364 L 278.40039 452.80078 L 297.19531 481.36914 A 218.44267 225.23091 0 0 0 481.41797 258.91797 A 218.44267 225.23091 0 0 0 380.07617 69.291016 z M 133.07422 77.839844 A 218.44267 225.23091 0 0 0 44.533203 258.91797 A 218.44267 225.23091 0 0 0 257.04102 484.06641 L 247.3457 458.62891 L 237.87109 418.18359 L 233.0625 380.42383 L 230.375 354.9668 L 229.95117 321.30859 L 232.35547 291.32812 L 237.44727 254.98242 L 254.55859 191.9082 L 261.62891 172.5332 L 255.54883 174.08984 L 240.98242 180.87695 L 229.59961 190.19922 L 210.59961 208.19922 L 197.40039 229.40039 L 186.40039 252.59961 L 173.40039 269 L 171.40039 253.19922 L 173.59961 229.40039 L 183 202.40039 L 199.40039 178 L 221.04102 153.44141 L 209.02148 155.70508 L 177.05859 162.77539 L 148.06836 171.40234 L 119.92578 183 L 120.63281 180.16992 L 129.82422 165.88672 L 151.17969 147.50195 L 172.95898 135.48242 L 190.07031 129.54102 L 209.02148 127.98633 L 227.6875 128.69336 L 247.76953 128.41016 L 246.49805 125.1582 L 226.69922 105.92383 L 219.62695 97.439453 L 221.4668 90.085938 L 206.75781 94.044922 L 195.86914 95.458984 L 179.46289 88.671875 L 156.12891 81.458984 L 133.07422 77.839844 z " />
|
||||||
|
<path
|
||||||
|
style="fill:#1b1b1b;fill-opacity:0.12492698;stroke:none;stroke-width:13.374;stroke-opacity:0.415999;paint-order:stroke fill markers"
|
||||||
|
d="m 259.36665,490.16617 39.03323,-6.96642 -20,-30.4 -20.4,-88.8 -1.2,-82.4 12.4,-94 8.4,-15.2 25.2,21.6 23.2,28.8 23.2,37.2 1.6,-36 -12.8,-36.8 -18.8,-18.4 -26,-13.6 -4.4,-0.8 20.4,-4.4 29.2,0.8 36.4,10 24.8,10.8 -6.6,-10.2 -22.8,-20 -21.4,-9.6 -29.8,-4 -16.6,1.8 -15,5.4 1.4,-5.2 18.6,-21.8 21.8,-18.800003 21,-11.4 30.2,-8.6 -19.8,0.4 -29.6,6.8 -26.4,9.4 -21.6,13.6 -17.2,15.600003 -36.83882,-38.349628 -24.60732,-12.445079 -23.33452,-2.687006 -19.79899,3.676955 -20.08184,7.071068 -9.33381,5.374012 24.32448,3.818376 23.33452,7.212489 16.40488,6.788226 10.88944,-1.414214 14.70782,-3.959798 -1.83847,7.353911 7.07106,8.485288 19.79899,19.2333 1.2728,3.25269 -20.08184,0.28284 -18.66762,-0.7071 -18.95046,1.55563 -17.11198,5.9397 -21.77889,12.02081 -21.35462,18.38478 -9.19239,14.28356 -0.70711,2.82843 28.14285,-11.59656 28.99138,-8.6267 31.96122,-7.07107 12.02082,-2.26274 -21.64158,24.55783 -16.4,24.4 -9.4,27 -2.2,23.8 2,15.8 13,-16.4 11,-23.2 13.2,-21.2 19,-18 11.38199,-9.32209 14.5664,-6.78822 6.08112,-1.55564 -7.07107,19.37473 -17.11198,63.07393 -5.09117,36.34528 -2.40416,29.98133 0.42426,33.65828 2.68701,25.45585 4.80832,37.7595 9.47523,40.44651 z"
|
||||||
|
id="path8-4" />
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 5.5 KiB |
|
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 29 KiB |
@@ -821,31 +821,6 @@ QTabBar QToolButton::left-arrow:disabled {
|
|||||||
image: url(:/qss_icons/rc/left_arrow_disabled.png);
|
image: url(:/qss_icons/rc/left_arrow_disabled.png);
|
||||||
}
|
}
|
||||||
|
|
||||||
QDockWidget {
|
|
||||||
background: #31363b;
|
|
||||||
border: 1px solid #403F3F;
|
|
||||||
titlebar-close-icon: url(:/qss_icons/rc/close.png);
|
|
||||||
titlebar-normal-icon: url(:/qss_icons/rc/undock.png);
|
|
||||||
}
|
|
||||||
|
|
||||||
QDockWidget::close-button,
|
|
||||||
QDockWidget::float-button {
|
|
||||||
border: 1px solid transparent;
|
|
||||||
border-radius: 2px;
|
|
||||||
background: transparent;
|
|
||||||
}
|
|
||||||
|
|
||||||
QDockWidget::close-button:hover,
|
|
||||||
QDockWidget::float-button:hover {
|
|
||||||
background: rgba(255, 255, 255, 10);
|
|
||||||
}
|
|
||||||
|
|
||||||
QDockWidget::close-button:pressed,
|
|
||||||
QDockWidget::float-button:pressed {
|
|
||||||
padding: 1px -1px -1px 1px;
|
|
||||||
background: rgba(255, 255, 255, 10);
|
|
||||||
}
|
|
||||||
|
|
||||||
QTreeView,
|
QTreeView,
|
||||||
QListView {
|
QListView {
|
||||||
border: 1px solid #54575B;
|
border: 1px solid #54575B;
|
||||||
|
|||||||
@@ -1685,54 +1685,6 @@ QTabBar QToolButton::right-arrow:disabled {
|
|||||||
image: url(":/qss_icons/rc/arrow_right_disabled.png");
|
image: url(":/qss_icons/rc/arrow_right_disabled.png");
|
||||||
}
|
}
|
||||||
|
|
||||||
/* QDockWiget -------------------------------------------------------------
|
|
||||||
|
|
||||||
--------------------------------------------------------------------------- */
|
|
||||||
QDockWidget {
|
|
||||||
outline: 1px solid #32414B;
|
|
||||||
background-color: #19232D;
|
|
||||||
border: 1px solid #32414B;
|
|
||||||
border-radius: 4px;
|
|
||||||
titlebar-close-icon: url(":/qss_icons/rc/window_close.png");
|
|
||||||
titlebar-normal-icon: url(":/qss_icons/rc/window_undock.png");
|
|
||||||
}
|
|
||||||
|
|
||||||
QDockWidget::title {
|
|
||||||
/* Better size for title bar */
|
|
||||||
padding: 6px;
|
|
||||||
spacing: 4px;
|
|
||||||
border: none;
|
|
||||||
background-color: #32414B;
|
|
||||||
}
|
|
||||||
|
|
||||||
QDockWidget::close-button {
|
|
||||||
background-color: #32414B;
|
|
||||||
border-radius: 4px;
|
|
||||||
border: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
QDockWidget::close-button:hover {
|
|
||||||
image: url(":/qss_icons/rc/window_close_focus.png");
|
|
||||||
}
|
|
||||||
|
|
||||||
QDockWidget::close-button:pressed {
|
|
||||||
image: url(":/qss_icons/rc/window_close_pressed.png");
|
|
||||||
}
|
|
||||||
|
|
||||||
QDockWidget::float-button {
|
|
||||||
background-color: #32414B;
|
|
||||||
border-radius: 4px;
|
|
||||||
border: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
QDockWidget::float-button:hover {
|
|
||||||
image: url(":/qss_icons/rc/window_undock_focus.png");
|
|
||||||
}
|
|
||||||
|
|
||||||
QDockWidget::float-button:pressed {
|
|
||||||
image: url(":/qss_icons/rc/window_undock_pressed.png");
|
|
||||||
}
|
|
||||||
|
|
||||||
/* QTreeView QListView QTableView -----------------------------------------
|
/* QTreeView QListView QTableView -----------------------------------------
|
||||||
|
|
||||||
https://doc.qt.io/qt-5/stylesheet-examples.html#customizing-qtreeview
|
https://doc.qt.io/qt-5/stylesheet-examples.html#customizing-qtreeview
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 256 KiB After Width: | Height: | Size: 256 KiB |
@@ -26,7 +26,7 @@ Android has a completely different build process than other platforms. See its [
|
|||||||
|
|
||||||
If the configure phase fails, see the `Troubleshooting` section below. Usually, as long as you followed the dependencies guide, the defaults *should* successfully configure and build.
|
If the configure phase fails, see the `Troubleshooting` section below. Usually, as long as you followed the dependencies guide, the defaults *should* successfully configure and build.
|
||||||
|
|
||||||
### Qt Creator
|
### Option A: Qt Creator
|
||||||
|
|
||||||
This is the recommended GUI method for Linux, macOS, and Windows.
|
This is the recommended GUI method for Linux, macOS, and Windows.
|
||||||
|
|
||||||
@@ -46,39 +46,51 @@ Hit "Configure Project", then wait for CMake to finish configuring (may take a w
|
|||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
### Command Line
|
### Option B: Command Line
|
||||||
|
|
||||||
This is recommended for *BSD, Solaris, Linux, and MSYS2. MSVC is possible, but not recommended.
|
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary>Click to Open</summary>
|
<summary>Click to Open</summary>
|
||||||
|
|
||||||
Note that CMake must be in your PATH, and you must be in the cloned Eden directory. On Windows, you must also set up a Visual C++ development environment. This can be done by running `C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat` in the same terminal.
|
> [!WARNING]
|
||||||
|
>For all systems:
|
||||||
Recommended generators:
|
>- *CMake* **MUST** be in your PATH (and also *ninja*, if you are using it as `<GENERATOR>`)
|
||||||
|
>- You *MUST* be in the cloned *Eden* directory
|
||||||
|
>
|
||||||
|
>On Windows:
|
||||||
|
> - It's recommended to install **[Ninja](https://ninja-build.org/)**
|
||||||
|
> - You must load **Visual C++ development environment**, this can be done by running our convenience script:
|
||||||
|
> - `tools/windows/load-msvc-env.ps1` (for PowerShell 5+)
|
||||||
|
> - `tools/windows/load-msvc-env.sh` (for MSYS2, Git Bash, etc)
|
||||||
|
|
||||||
|
Available `<GENERATOR>`:
|
||||||
- MSYS2: `MSYS Makefiles`
|
- MSYS2: `MSYS Makefiles`
|
||||||
- MSVC: Install **[ninja](https://ninja-build.org/)** and use `Ninja`, OR use `Visual Studio 17 2022`
|
- MSVC: `Ninja` (preferred) or `Visual Studio 17 2022`
|
||||||
- macOS: `Ninja` (preferred) or `Xcode`
|
- macOS: `Ninja` (preferred) or `Xcode`
|
||||||
- Others: `Ninja` (preferred) or `UNIX Makefiles`
|
- Others: `Ninja` (preferred) or `UNIX Makefiles`
|
||||||
|
|
||||||
BUILD_TYPE should usually be `Release` or `RelWithDebInfo` (debug symbols--compiled executable will be large). If you are using a debugger and annoyed with stuff getting optimized out, try `Debug`.
|
Available `<BUILD_TYPE>`:
|
||||||
|
- `Release` (default)
|
||||||
|
- `RelWithDebInfo` (debug symbols--compiled executable will be large)
|
||||||
|
- `Debug` (if you are using a debugger and annoyed with stuff getting optimized out)
|
||||||
|
|
||||||
|
Caveat for Debug Builds:
|
||||||
|
- If you're building with CCache, you will need to add the environment variable `CL` with the `/FS` flag ([Reference](https://learn.microsoft.com/pt-br/cpp/build/reference/fs-force-synchronous-pdb-writes?view=msvc-170))
|
||||||
|
|
||||||
Also see the [Options](Options.md) page for additional CMake options.
|
Also see the [Options](Options.md) page for additional CMake options.
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
cmake -S . -B build -G "GENERATOR" -DCMAKE_BUILD_TYPE=<BUILD_TYPE> -DYUZU_TESTS=OFF
|
cmake -S . -B build -G "<GENERATOR>" -DCMAKE_BUILD_TYPE=<BUILD_TYPE> -DYUZU_TESTS=OFF
|
||||||
```
|
```
|
||||||
|
|
||||||
If you are on Windows and prefer to use Clang:
|
If you are on Windows and prefer to use Clang:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
cmake -S . -B build -G "GENERATOR" -DCMAKE_C_COMPILER=clang-cl -DCMAKE_CXX_COMPILER=clang-cl
|
cmake -S . -B build -G "<GENERATOR>" -DCMAKE_C_COMPILER=clang-cl -DCMAKE_CXX_COMPILER=clang-cl
|
||||||
```
|
```
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
### [CLion](https://www.jetbrains.com/clion/)
|
### Option C: [CLion](https://www.jetbrains.com/clion/)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary>Click to Open</summary>
|
<summary>Click to Open</summary>
|
||||||
@@ -133,13 +145,13 @@ Many platforms have quirks, bugs, and other fun stuff that may cause issues when
|
|||||||
|
|
||||||
## Building & Running
|
## Building & Running
|
||||||
|
|
||||||
### Qt Creator
|
### On Qt Creator
|
||||||
|
|
||||||
Simply hit Ctrl+B, or the "hammer" icon in the bottom left. To run, hit the "play" icon, or Ctrl+R.
|
Simply hit Ctrl+B, or the "hammer" icon in the bottom left. To run, hit the "play" icon, or Ctrl+R.
|
||||||
|
|
||||||
### Command Line
|
### On Command Line
|
||||||
|
|
||||||
If you are not on Windows and are using the `UNIX Makefiles` generator, you must also add `-j$(nproc)` to this command.
|
If you are using the `UNIX Makefiles` or `Visual Studio 17 2022` as `<GENERATOR>`, you should also add `--parallel` for faster build times.
|
||||||
|
|
||||||
```
|
```
|
||||||
cmake --build build
|
cmake --build build
|
||||||
|
|||||||
@@ -9,6 +9,8 @@
|
|||||||
- `DISABLED_PLATFORMS`: List of platforms that lack artifacts for this package. Options:
|
- `DISABLED_PLATFORMS`: List of platforms that lack artifacts for this package. Options:
|
||||||
* `windows-amd64`
|
* `windows-amd64`
|
||||||
* `windows-arm64`
|
* `windows-arm64`
|
||||||
|
* `mingw-amd64`
|
||||||
|
* `mingw-arm64`
|
||||||
* `android`
|
* `android`
|
||||||
* `solaris-amd64`
|
* `solaris-amd64`
|
||||||
* `freebsd-amd64`
|
* `freebsd-amd64`
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
# Caveats
|
# Caveats
|
||||||
|
|
||||||
<!-- TOC -->
|
<!-- TOC -->
|
||||||
|
- [Caveats](#caveats)
|
||||||
- [Arch Linux](#arch-linux)
|
- [Arch Linux](#arch-linux)
|
||||||
- [Gentoo Linux](#gentoo-linux)
|
- [Gentoo Linux](#gentoo-linux)
|
||||||
- [macOS](#macos)
|
- [macOS](#macos)
|
||||||
@@ -9,16 +10,19 @@
|
|||||||
- [OpenBSD](#openbsd)
|
- [OpenBSD](#openbsd)
|
||||||
- [FreeBSD](#freebsd)
|
- [FreeBSD](#freebsd)
|
||||||
- [NetBSD](#netbsd)
|
- [NetBSD](#netbsd)
|
||||||
|
- [MSYS2](#msys2)
|
||||||
|
- [Windows 8.1 and below](#windows-81-and-below)
|
||||||
<!-- /TOC -->
|
<!-- /TOC -->
|
||||||
|
|
||||||
## Arch Linux
|
## Arch Linux
|
||||||
|
|
||||||
- httplib AUR package is broken. Set `httplib_FORCE_BUNDLED=ON` if you have it installed.
|
Eden is also available as an [AUR package](https://aur.archlinux.org/packages/eden-git). If you are unable to build, either use that or compare your process to the PKGBUILD.
|
||||||
- Eden is also available as an [AUR package](https://aur.archlinux.org/packages/eden-git). If you are unable to build, either use that or compare your process to the PKGBUILD.
|
|
||||||
|
|
||||||
## Gentoo Linux
|
## Gentoo Linux
|
||||||
|
|
||||||
Do not use the system sirit or xbyak packages.
|
[`games-emulation/eden`](https://gitweb.gentoo.org/repo/proj/guru.git/tree/games-emulation/eden) is available in the GURU. This repository also contains some additional dependencies, such as mcl, sirit, oaknut, etc.
|
||||||
|
|
||||||
|
If you're having issues with building, always consult that ebuild.
|
||||||
|
|
||||||
## macOS
|
## macOS
|
||||||
|
|
||||||
@@ -26,6 +30,13 @@ macOS is largely untested. Expect crashes, significant Vulkan issues, and other
|
|||||||
|
|
||||||
## Solaris
|
## Solaris
|
||||||
|
|
||||||
|
Always consult [the OpenIndiana package list](https://pkg.openindiana.org/hipster/en/index.shtml) to cross-verify availability.
|
||||||
|
|
||||||
|
Run the usual update + install of essential toolings: `sudo pkg update && sudo pkg install git cmake`.
|
||||||
|
|
||||||
|
- **gcc**: `sudo pkg install developer/gcc-14`.
|
||||||
|
- **clang**: Version 20 is broken, use `sudo pkg install developer/clang-19`.
|
||||||
|
|
||||||
Qt Widgets appears to be broken. For now, add `-DENABLE_QT=OFF` to your configure command. In the meantime, a Qt Quick frontend is in the works--check back later!
|
Qt Widgets appears to be broken. For now, add `-DENABLE_QT=OFF` to your configure command. In the meantime, a Qt Quick frontend is in the works--check back later!
|
||||||
|
|
||||||
This is needed for some dependencies that call cc directly (tz):
|
This is needed for some dependencies that call cc directly (tz):
|
||||||
@@ -70,7 +81,7 @@ Still will not run flawlessly until `mesa-24` is available. Modify CMakeCache.tx
|
|||||||
|
|
||||||
After configuration, you may need to modify `externals/ffmpeg/CMakeFiles/ffmpeg-build/build.make` to use `-j$(nproc)` instead of just `-j`.
|
After configuration, you may need to modify `externals/ffmpeg/CMakeFiles/ffmpeg-build/build.make` to use `-j$(nproc)` instead of just `-j`.
|
||||||
|
|
||||||
`-lc++-experimental` doesn't exist in OpenBSD but the LLVM driver still tries to link against it, to solve just symlink `ln -s /usr/lib/libc++.a /usr/lib/libc++experimental.a`.
|
`-lc++-experimental` doesn't exist in OpenBSD but the LLVM driver still tries to link against it, to solve just symlink `ln -s /usr/lib/libc++.a /usr/lib/libc++experimental.a`. Builds are currently not working due to lack of `std::jthread` and such, either compile libc++ manually or wait for ports to catch up.
|
||||||
|
|
||||||
If clang has errors, try using `g++-11`.
|
If clang has errors, try using `g++-11`.
|
||||||
|
|
||||||
@@ -102,3 +113,87 @@ cmake -B build -DCMAKE_BUILD_TYPE=Release
|
|||||||
cmake --build build -- -j`nproc`
|
cmake --build build -- -j`nproc`
|
||||||
cmake --install build
|
cmake --install build
|
||||||
```
|
```
|
||||||
|
|
||||||
|
# DragonFlyBSD
|
||||||
|
|
||||||
|
If `libstdc++.so.6` is not found (`GLIBCXX_3.4.30`) then attempt:
|
||||||
|
```sh
|
||||||
|
rm /usr/local/lib/gcc11/libstdc++.so.6
|
||||||
|
ln -s /usr/local/lib/gcc14/libstdc++.so /usr/local/lib/gcc11/libstdc++.so.6
|
||||||
|
```
|
||||||
|
This may have unforeseen consequences of which we don't need to worry about for now.
|
||||||
|
|
||||||
|
Default `g++` (and the libstdc++) is too outdated - so install `gcc14` and redirect CMake to the new compiler toolchain `-DCMAKE_CXX_COMPILER=gcc14 -DCMAKE_C_COMPILER=g++14`.
|
||||||
|
|
||||||
|
There is also `llvm18` and use `-DCMAKE_CXX_COMPILER=clang++18 -DCMAKE_C_COMPILER=clang18` (note the `18` suffix at the end). NOTE: It doesn't have an updated libcxx so `<span>` will be missing, either build it manually or use gcc.
|
||||||
|
|
||||||
|
If build hangs, use `hammer2 bulkfree`.
|
||||||
|
|
||||||
|
## MSYS2
|
||||||
|
|
||||||
|
`qt6-static` isn't supported yet.
|
||||||
|
|
||||||
|
Only the `MINGW64` environment is tested; however, all of the others should work (in theory) sans `MINGW32`.
|
||||||
|
|
||||||
|
Currently, only FFmpeg can be used as a system dependency; the others will result in linker errors.
|
||||||
|
|
||||||
|
When packaging an MSYS2 build, you will need to copy all dependent DLLs recursively alongside the `windeployqt6`; for example:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# MSYS_TOOLCHAIN is typically just mingw64
|
||||||
|
# since Windows is case-insensitive, you can set this to $MSYSTEM
|
||||||
|
# or, if cross-compiling from Linux, set it to usr/x86_64-w64-mingw32
|
||||||
|
export PATH="/${MSYS_TOOLCHAIN}/bin:$PATH"
|
||||||
|
|
||||||
|
# grab deps of a dll or exe and place them in the current dir
|
||||||
|
deps() {
|
||||||
|
# string parsing is fun
|
||||||
|
objdump -p "$1" | awk '/DLL Name:/ {print $3}' | while read -r dll; do
|
||||||
|
[ -z "$dll" ] && continue
|
||||||
|
|
||||||
|
# bin directory is used for DLLs, so we can do a quick "hack"
|
||||||
|
# and use command to find the path of the DLL
|
||||||
|
dllpath=$(command -v "$dll" 2>/dev/null || true)
|
||||||
|
|
||||||
|
[ -z "$dllpath" ] && continue
|
||||||
|
|
||||||
|
# explicitly exclude system32/syswow64 deps
|
||||||
|
# these aren't needed to be bundled, as all systems already have them
|
||||||
|
case "$dllpath" in
|
||||||
|
*System32* | *SysWOW64*) continue ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# avoid copying deps multiple times
|
||||||
|
if [ ! -f "$dll" ]; then
|
||||||
|
echo "$dllpath"
|
||||||
|
cp "$dllpath" "$dll"
|
||||||
|
|
||||||
|
# also grab the dependencies of the dependent DLL; e.g.
|
||||||
|
# double-conversion is a dep of Qt6Core.dll but NOT eden.exe
|
||||||
|
deps "$dllpath"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
# NB: must be done in a directory containing eden.exe
|
||||||
|
deps eden.exe
|
||||||
|
|
||||||
|
# deploy Qt plugins and such
|
||||||
|
windeployqt6 --no-compiler-runtime --no-opengl-sw --no-system-dxc-compiler \
|
||||||
|
--no-system-d3d-compiler eden.exe
|
||||||
|
|
||||||
|
# grab deps for Qt plugins
|
||||||
|
find ./*/ -name "*.dll" | while read -r dll; do deps "$dll"; done
|
||||||
|
```
|
||||||
|
|
||||||
|
## Windows 8.1 and below
|
||||||
|
|
||||||
|
DirectX 12 is not available - simply copy and paste a random DLL and name it `d3d12.dll`.
|
||||||
|
|
||||||
|
Install [Qt6 compatibility libraries](github.com/ANightly/qt6windows7) specifically Qt 6.9.5.
|
||||||
|
|
||||||
|
## RedoxOS
|
||||||
|
|
||||||
|
The package install may randomly hang at times, in which case it has to be restarted. ALWAYS do a `sudo pkg update` or the chances of it hanging will be close to 90%. If "multiple" installs fail at once, try installing 1 by 1 the packages.
|
||||||
|
|
||||||
|
When CMake invokes certain file syscalls - it may sometimes cause crashes or corruptions on the (kernel?) address space - so reboot the system if there is a "hang" in CMake.
|
||||||
|
|||||||
@@ -8,6 +8,8 @@ But for new developers you may find that following these guidelines will make ev
|
|||||||
|
|
||||||
Simply put, types/classes are named as `PascalCase`, same for methods and functions like `AddElement`. Variables are named `like_this_snake_case` and constants are `IN_SCREAMING_CASE`.
|
Simply put, types/classes are named as `PascalCase`, same for methods and functions like `AddElement`. Variables are named `like_this_snake_case` and constants are `IN_SCREAMING_CASE`.
|
||||||
|
|
||||||
|
Except for Qt MOC where `functionName` is preferred.
|
||||||
|
|
||||||
Template typenames prefer short names like `T`, `I`, `U`, if a longer name is required either `Iterator` or `perform_action` are fine as well.
|
Template typenames prefer short names like `T`, `I`, `U`, if a longer name is required either `Iterator` or `perform_action` are fine as well.
|
||||||
|
|
||||||
Macros must always be in `SCREAMING_CASE`. Do not use short letter macros as systems like Solaris will conflict with them; a good rule of thumb is >5 characters per macro - i.e `THIS_MACRO_IS_GOOD`, `AND_ALSO_THIS_ONE`.
|
Macros must always be in `SCREAMING_CASE`. Do not use short letter macros as systems like Solaris will conflict with them; a good rule of thumb is >5 characters per macro - i.e `THIS_MACRO_IS_GOOD`, `AND_ALSO_THIS_ONE`.
|
||||||
|
|||||||
@@ -3,10 +3,13 @@
|
|||||||
To build Eden, you MUST have a C++ compiler.
|
To build Eden, you MUST have a C++ compiler.
|
||||||
* On Linux, this is usually [GCC](https://gcc.gnu.org/) 11+ or [Clang](https://clang.llvm.org/) v14+
|
* On Linux, this is usually [GCC](https://gcc.gnu.org/) 11+ or [Clang](https://clang.llvm.org/) v14+
|
||||||
- GCC 12 also requires Clang 14+
|
- GCC 12 also requires Clang 14+
|
||||||
* On Windows, this is either:
|
* On Windows, we support:
|
||||||
- **[MSVC](https://visualstudio.microsoft.com/downloads/)** (you should select *Community* option),
|
- **[MSVC](https://visualstudio.microsoft.com/downloads/)** (default)
|
||||||
- clang-cl - can be downloaded from the MSVC installer,
|
- It's STRONGLY RECOMMENDED to use the **Community** option and **Visual Studio 2022**
|
||||||
- or **[MSYS2](https://www.msys2.org)**
|
- You need to install: **[Desktop development with C++](https://learn.microsoft.com/en-us/cpp/build/vscpp-step-0-installation?view=msvc-170)**
|
||||||
|
- **[clang-cl](https://learn.microsoft.com/en-us/cpp/build/clang-support-msbuild?view=msvc-180)**
|
||||||
|
- You need to install: **C++ Clang tools for Windows**
|
||||||
|
- **[MSYS2](https://www.msys2.org)** (experimental)
|
||||||
* On macOS, this is Apple Clang
|
* On macOS, this is Apple Clang
|
||||||
- This can be installed with `xcode-select --install`
|
- This can be installed with `xcode-select --install`
|
||||||
|
|
||||||
@@ -15,20 +18,23 @@ The following additional tools are also required:
|
|||||||
* **[CMake](https://www.cmake.org/)** 3.22+ - already included with the Android SDK
|
* **[CMake](https://www.cmake.org/)** 3.22+ - already included with the Android SDK
|
||||||
* **[Git](https://git-scm.com/)** for version control
|
* **[Git](https://git-scm.com/)** for version control
|
||||||
- **[Windows installer](https://gitforwindows.org)**
|
- **[Windows installer](https://gitforwindows.org)**
|
||||||
|
* **[Python3](https://www.python.org/downloads/)** 3.10+ - necessary to download external repositories
|
||||||
* On Windows, you must install the **[Vulkan SDK](https://vulkan.lunarg.com/sdk/home#windows)** as well
|
* On Windows, you must install the **[Vulkan SDK](https://vulkan.lunarg.com/sdk/home#windows)** as well
|
||||||
- *A convenience script to install the latest SDK is provided in `.ci/windows/install-vulkan-sdk.ps1`*
|
- *A convenience script to install the latest SDK is provided in:*
|
||||||
|
- `tools/windows/install-vulkan-sdk.ps1` (for PowerShell 5+)
|
||||||
|
- `tools/windows/install-vulkan-sdk.sh` (for MSYS2, Git Bash, etc)
|
||||||
|
|
||||||
If you are on desktop and plan to use the Qt frontend, you *must* install Qt 6, and optionally Qt Creator (the recommended IDE for building)
|
If you are on desktop and plan to use the Qt frontend, you *must* install Qt 6, and optionally Qt Creator (the **RECOMMENDED** IDE for building)
|
||||||
* On Linux, *BSD and macOS, this can be done by the package manager
|
* On Linux, *BSD and macOS, this can be done by the package manager
|
||||||
- If you wish to use Qt Creator, append `qtcreator` or `qt-creator` to the commands seen below.
|
- If you wish to use Qt Creator, append `qtcreator` or `qt-creator` to the commands seen below.
|
||||||
* MSVC/clang-cl users on Windows must install through the [official installer](https://www.qt.io/download-qt-installer-oss)
|
* MSVC/clang-cl users on Windows must install through the official [Qt](https://www.qt.io/download-qt-installer-oss) installer
|
||||||
* Linux and macOS users may choose to use the installer as well.
|
* Linux and macOS users may choose to use the installer as well.
|
||||||
* MSYS2 can also install Qt 6 via the package manager
|
* MSYS2 can also install Qt 6 via the package manager
|
||||||
|
|
||||||
If you are on Windows, a convenience script to install MSVC, MSYS2, Qt, all necessary packages for MSYS2, and set up a zsh environment with useful keybinds and aliases can be found [here](https://git.crueter.xyz/scripts/windev).
|
If you are on Windows, a convenience script to install MSVC, MSYS2, Qt, all necessary packages for MSYS2, and set up a zsh environment with useful keybinds and aliases can be found [here](https://git.crueter.xyz/scripts/windev).
|
||||||
- For help setting up Qt Creator, run `./install.sh -h qtcreator`
|
- For help setting up Qt Creator, run `./install.sh -h qtcreator`
|
||||||
|
|
||||||
If you are on Windows and NOT building with MSYS2, you may go [back home](Build.md) and continue.
|
If you are on **Windows** and building with **MSVC** or **clang-cl**, you may go [back home](Build.md) and continue.
|
||||||
|
|
||||||
## Externals
|
## Externals
|
||||||
The following are handled by Eden's externals:
|
The following are handled by Eden's externals:
|
||||||
@@ -87,6 +93,53 @@ Notes for writers: Include build tools as well, assume user has NOTHING installe
|
|||||||
|
|
||||||
Click on the arrows to expand.
|
Click on the arrows to expand.
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Gentoo Linux</summary>
|
||||||
|
|
||||||
|
GURU must be enabled:
|
||||||
|
|
||||||
|
```
|
||||||
|
sudo emerge -a app-eselect/eselect-repository
|
||||||
|
sudo eselect repository enable guru
|
||||||
|
sudo emaint sync -r guru
|
||||||
|
```
|
||||||
|
|
||||||
|
Now, install all deps:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
sudo emerge -a \
|
||||||
|
app-arch/lz4 app-arch/zstd app-arch/unzip \
|
||||||
|
dev-libs/libfmt dev-libs/libusb dev-libs/mcl dev-libs/sirit \
|
||||||
|
dev-libs/unordered_dense dev-libs/boost dev-libs/openssl dev-libs/discord-rpc \
|
||||||
|
dev-util/spirv-tools dev-util/spirv-headers dev-util/vulkan-headers \
|
||||||
|
dev-util/vulkan-utility-libraries dev-util/glslang \
|
||||||
|
media-gfx/renderdoc media-libs/libva media-libs/opus media-video/ffmpeg \
|
||||||
|
media-libs/VulkanMemoryAllocator media-libs/libsdl2 media-libs/cubeb \
|
||||||
|
net-libs/enet net-libs/mbedtls \
|
||||||
|
sys-libs/zlib \
|
||||||
|
dev-cpp/nlohmann_json dev-cpp/simpleini dev-cpp/cpp-httplib dev-cpp/cpp-jwt \
|
||||||
|
games-util/gamemode \
|
||||||
|
net-wireless/wireless-tools \
|
||||||
|
dev-qt/qtbase:6 dev-libs/quazip \
|
||||||
|
virtual/pkgconfig
|
||||||
|
```
|
||||||
|
|
||||||
|
- On `amd64`, also add `dev-libs/xbyak`
|
||||||
|
- On `riscv64`, also add `dev-libs/biscuit` (currently unavailable)
|
||||||
|
- On `aarch64`, also add `dev-libs/oaknut`
|
||||||
|
- If tests are enabled, also add `dev-libs/oaknut` and `dev-cpp/catch`
|
||||||
|
|
||||||
|
Required USE flags:
|
||||||
|
- `dev-qt/qtbase network concurrent dbus gui widgets`
|
||||||
|
- `dev-libs/quazip qt6`
|
||||||
|
- `net-libs/mbedtls cmac`
|
||||||
|
- `media-libs/libsdl2 haptic joystick sound video`
|
||||||
|
- `dev-cpp/cpp-httplib ssl`
|
||||||
|
|
||||||
|
[Caveats](./Caveats.md#gentoo-linux)
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary>Arch Linux</summary>
|
<summary>Arch Linux</summary>
|
||||||
|
|
||||||
@@ -149,6 +202,7 @@ apk add g++ git cmake make mbedtls-dev mbedtls-static mesa-dev qt6-qtbase-dev qt
|
|||||||
`mbedtls-static` has to be specified otherwise `libeverest.a` and `libp256m.a` will fail to be found.
|
`mbedtls-static` has to be specified otherwise `libeverest.a` and `libp256m.a` will fail to be found.
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
<details>
|
||||||
<summary>Void Linux</summary>
|
<summary>Void Linux</summary>
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
@@ -158,6 +212,7 @@ xbps-install -Su git make cmake clang pkg-config patch mbedtls-devel SPIRV-Tools
|
|||||||
Yes, `nlohmann-json` is just named `json-c++`. Why?
|
Yes, `nlohmann-json` is just named `json-c++`. Why?
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary>NixOS</summary>
|
<summary>NixOS</summary>
|
||||||
|
|
||||||
@@ -186,7 +241,7 @@ brew install molten-vk vulkan-loader
|
|||||||
<details>
|
<details>
|
||||||
<summary>FreeBSD</summary>
|
<summary>FreeBSD</summary>
|
||||||
|
|
||||||
As root run: `pkg install devel/cmake devel/sdl20 devel/boost-libs devel/catch2 devel/libfmt devel/nlohmann-json devel/ninja devel/nasm devel/autoconf devel/pkgconf devel/qt6-base devel/simpleini net/enet multimedia/ffnvcodec-headers multimedia/ffmpeg audio/opus archivers/liblz4 lang/gcc12 graphics/glslang graphics/vulkan-utility-libraries graphics/spirv-tools www/cpp-httplib devel/jwt-cpp devel/unordered-dense`
|
As root run: `pkg install devel/cmake devel/sdl20 devel/boost-libs devel/catch2 devel/libfmt devel/nlohmann-json devel/ninja devel/nasm devel/autoconf devel/pkgconf devel/qt6-base devel/simpleini net/enet multimedia/ffnvcodec-headers multimedia/ffmpeg audio/opus archivers/liblz4 lang/gcc12 graphics/glslang graphics/vulkan-utility-libraries graphics/spirv-tools www/cpp-httplib devel/jwt-cpp devel/unordered-dense mbedtls3 vulkan-headers quazip-qt6`
|
||||||
|
|
||||||
If using FreeBSD 12 or prior, use `devel/pkg-config` instead.
|
If using FreeBSD 12 or prior, use `devel/pkg-config` instead.
|
||||||
|
|
||||||
@@ -211,18 +266,23 @@ pkg_add cmake nasm git boost unzip--iconv autoconf-2.72p0 bash ffmpeg glslang gm
|
|||||||
|
|
||||||
[Caveats](./Caveats.md#openbsd).
|
[Caveats](./Caveats.md#openbsd).
|
||||||
|
|
||||||
|
</details>
|
||||||
|
<details>
|
||||||
|
<summary>DragonFlyBSD</summary>
|
||||||
|
|
||||||
|
```sh
|
||||||
|
pkg install gcc14 git cmake unzip nasm autoconf bash pkgconf ffmpeg glslang gmake jq nlohmann-json enet spirv-tools sdl2 vulkan-utility-libraries vulkan-headers catch2 libfmt openssl liblz4 boost-libs cpp-httplib qt6-base quazip-qt6 unordered-dense libva-vdpau-driver libva-utils libva-intel-driver
|
||||||
|
```
|
||||||
|
|
||||||
|
[Caveats](./Caveats.md#dragonflybsd).
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
<details>
|
<details>
|
||||||
<summary>Solaris / OpenIndiana</summary>
|
<summary>Solaris / OpenIndiana</summary>
|
||||||
|
|
||||||
Always consult [the OpenIndiana package list](https://pkg.openindiana.org/hipster/en/index.shtml) to cross-verify availability.
|
```sh
|
||||||
|
sudo pkg install qt6 boost glslang libzip library/lz4 libusb-1 nlohmann-json openssl opus sdl2 zlib compress/zstd unzip pkg-config nasm autoconf mesa library/libdrm header-drm developer/fmt
|
||||||
Run the usual update + install of essential toolings: `sudo pkg update && sudo pkg install git cmake`.
|
```
|
||||||
|
|
||||||
- **gcc**: `sudo pkg install developer/gcc-14`.
|
|
||||||
- **clang**: Version 20 is broken, use `sudo pkg install developer/clang-19`.
|
|
||||||
|
|
||||||
Then install the libraries: `sudo pkg install qt6 boost glslang libzip library/lz4 libusb-1 nlohmann-json openssl opus sdl2 zlib compress/zstd unzip pkg-config nasm autoconf mesa library/libdrm header-drm developer/fmt`.
|
|
||||||
|
|
||||||
[Caveats](./Caveats.md#solaris).
|
[Caveats](./Caveats.md#solaris).
|
||||||
|
|
||||||
@@ -234,24 +294,27 @@ Then install the libraries: `sudo pkg install qt6 boost glslang libzip library/l
|
|||||||
* Download and install all dependencies:
|
* Download and install all dependencies:
|
||||||
```
|
```
|
||||||
BASE="git make autoconf libtool automake-wrapper jq patch"
|
BASE="git make autoconf libtool automake-wrapper jq patch"
|
||||||
MINGW="SDL2 cmake python-pip qt6-base toolchain ffmpeg boost catch fmt lz4 nlohmann-json openssl zlib zstd enet opus mbedtls vulkan-devel libusb vulkan-memory-allocator unordered_dense clang ccache"
|
|
||||||
|
MINGW="qt6-base qt6-tools qt6-translations qt6-svg cmake toolchain clang python-pip openssl vulkan-memory-allocator vulkan-devel glslang boost fmt lz4 nlohmann-json zlib zstd enet opus mbedtls libusb unordered_dense"
|
||||||
|
|
||||||
packages="$BASE"
|
packages="$BASE"
|
||||||
for pkg in $MINGW; do
|
for pkg in $MINGW; do
|
||||||
packages="$packages mingw-w64-x86_64-$pkg"
|
packages="$packages mingw-w64-x86_64-$pkg"
|
||||||
done
|
done
|
||||||
|
|
||||||
pacman -Syu --needed --noconfirm $packages
|
pacman -Syuu --needed --noconfirm $packages
|
||||||
```
|
```
|
||||||
* Notes:
|
* Notes:
|
||||||
- Using `qt6-static` is possible but currently untested.
|
- Using `qt6-static` is possible but currently untested.
|
||||||
- Other environments are entirely untested, but should theoretically work provided you install all the necessary packages.
|
- Other environments are entirely untested, but should theoretically work provided you install all the necessary packages.
|
||||||
- Clang is installed as it generally works better here. You can compile with GCC just fine, however.
|
- GCC is proven to work better with the MinGW environment. If you choose to use Clang, you *may* be better off using the clang64 environment.
|
||||||
- Add `qt-creator` to the `MINGW` variable to install Qt Creator. You can then create a Start Menu shortcut to the MinGW Qt Creator by running `powershell "\$s=(New-Object -COM WScript.Shell).CreateShortcut('C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\Qt Creator.lnk');\$s.TargetPath='C:\\msys64\\mingw64\\bin\\qtcreator.exe';\$s.Save()"` in Git Bash or MSYS2.
|
- Add `qt-creator` to the `MINGW` variable to install Qt Creator. You can then create a Start Menu shortcut to the MinGW Qt Creator by running `powershell "\$s=(New-Object -COM WScript.Shell).CreateShortcut('C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\Qt Creator.lnk');\$s.TargetPath='C:\\msys64\\mingw64\\bin\\qtcreator.exe';\$s.Save()"` in Git Bash or MSYS2.
|
||||||
* Add MinGW binaries to the PATH if they aren't already:
|
* Add MinGW binaries to the PATH if they aren't already:
|
||||||
* `echo 'PATH=/mingw64/bin:$PATH' >> ~/.bashrc`
|
* `echo 'PATH=/mingw64/bin:$PATH' >> ~/.bashrc`
|
||||||
* or `echo 'PATH=/mingw64/bin:$PATH' >> ~/.zshrc`
|
* or `echo 'PATH=/mingw64/bin:$PATH' >> ~/.zshrc`
|
||||||
|
|
||||||
|
[Caveats](./Caveats.md#msys2).
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
<details>
|
<details>
|
||||||
<summary>HaikuOS</summary>
|
<summary>HaikuOS</summary>
|
||||||
@@ -263,14 +326,16 @@ pkgman install git cmake patch libfmt_devel nlohmann_json lz4_devel opus_devel b
|
|||||||
[Caveats](./Caveats.md#haikuos).
|
[Caveats](./Caveats.md#haikuos).
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
<details>
|
||||||
<summary>RedoxOS</summary>
|
<summary>RedoxOS</summary>
|
||||||
|
|
||||||
TODO: Fix syscall crashes (heavy IO stalls and hangup due to net mutexes?)
|
|
||||||
```sh
|
```sh
|
||||||
sudo pkg update && sudo pkg install git cmake
|
sudo pkg update
|
||||||
sudo pkg install ffmpeg6 sdl2 zlib llvm18
|
sudo pkg install git cmake ffmpeg6 sdl2 zlib llvm18
|
||||||
```
|
```
|
||||||
|
|
||||||
|
[Caveats](./Caveats.md#redoxos).
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
## All Done
|
## All Done
|
||||||
|
|||||||
@@ -160,13 +160,6 @@ if (YUZU_USE_BUNDLED_SIRIT)
|
|||||||
AddJsonPackage(sirit-ci)
|
AddJsonPackage(sirit-ci)
|
||||||
else()
|
else()
|
||||||
AddJsonPackage(sirit)
|
AddJsonPackage(sirit)
|
||||||
# Change to old-but-more-cacheable debug info on Windows
|
|
||||||
if (WIN32 AND (CMAKE_BUILD_TYPE STREQUAL "Debug" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo"))
|
|
||||||
get_target_property(sirit_opts sirit COMPILE_OPTIONS)
|
|
||||||
list(FILTER sirit_opts EXCLUDE REGEX "/Zi")
|
|
||||||
list(APPEND sirit_opts "/Z7")
|
|
||||||
set_target_properties(sirit PROPERTIES COMPILE_OPTIONS "${sirit_opts}")
|
|
||||||
endif()
|
|
||||||
if(MSVC AND CXX_CLANG)
|
if(MSVC AND CXX_CLANG)
|
||||||
target_compile_options(siritobj PRIVATE -Wno-error=unused-command-line-argument)
|
target_compile_options(siritobj PRIVATE -Wno-error=unused-command-line-argument)
|
||||||
endif()
|
endif()
|
||||||
|
|||||||
@@ -23,7 +23,11 @@
|
|||||||
"package": "sirit",
|
"package": "sirit",
|
||||||
"name": "sirit",
|
"name": "sirit",
|
||||||
"repo": "eden-emulator/sirit",
|
"repo": "eden-emulator/sirit",
|
||||||
"version": "1.0.2"
|
"version": "1.0.2",
|
||||||
|
"disabled_platforms": [
|
||||||
|
"mingw-amd64",
|
||||||
|
"mingw-arm64"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"httplib": {
|
"httplib": {
|
||||||
"repo": "yhirose/cpp-httplib",
|
"repo": "yhirose/cpp-httplib",
|
||||||
@@ -163,11 +167,8 @@
|
|||||||
"package": "SDL2",
|
"package": "SDL2",
|
||||||
"name": "SDL2",
|
"name": "SDL2",
|
||||||
"repo": "crueter-ci/SDL2",
|
"repo": "crueter-ci/SDL2",
|
||||||
"version": "2.32.10",
|
"version": "2.32.10-38e0094637",
|
||||||
"min_version": "2.26.4",
|
"min_version": "2.26.4"
|
||||||
"disabled_platforms": [
|
|
||||||
"macos-universal"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
"catch2": {
|
"catch2": {
|
||||||
"package": "Catch2",
|
"package": "Catch2",
|
||||||
|
|||||||
@@ -25,19 +25,27 @@ if (UNIX AND NOT ANDROID)
|
|||||||
if (NOT APPLE)
|
if (NOT APPLE)
|
||||||
# In Solaris needs explicit linking for ffmpeg which links to /lib/amd64/libX11.so
|
# In Solaris needs explicit linking for ffmpeg which links to /lib/amd64/libX11.so
|
||||||
if(PLATFORM_SUN)
|
if(PLATFORM_SUN)
|
||||||
|
find_library(LIBDRM_LIB libdrm PATHS /usr/lib/64 /usr/lib/amd64 /usr/lib)
|
||||||
|
if(LIBDRM_LIB)
|
||||||
list(APPEND FFmpeg_HWACCEL_LIBRARIES
|
list(APPEND FFmpeg_HWACCEL_LIBRARIES
|
||||||
X11
|
X11
|
||||||
"/usr/lib/xorg/amd64/libdrm.so")
|
"${LIBDRM_LIB}")
|
||||||
|
message(STATUS "Found libdrm at: ${LIBDRM_LIB}")
|
||||||
|
else()
|
||||||
|
message(WARNING "libdrm not found, disabling libdrm support")
|
||||||
|
list(APPEND FFmpeg_HWACCEL_FLAGS
|
||||||
|
--disable-libdrm)
|
||||||
|
endif()
|
||||||
else()
|
else()
|
||||||
pkg_check_modules(LIBDRM libdrm REQUIRED)
|
pkg_check_modules(LIBDRM libdrm REQUIRED)
|
||||||
list(APPEND FFmpeg_HWACCEL_LIBRARIES
|
list(APPEND FFmpeg_HWACCEL_LIBRARIES
|
||||||
${LIBDRM_LIBRARIES})
|
${LIBDRM_LIBRARIES})
|
||||||
list(APPEND FFmpeg_HWACCEL_INCLUDE_DIRS
|
list(APPEND FFmpeg_HWACCEL_INCLUDE_DIRS
|
||||||
${LIBDRM_INCLUDE_DIRS})
|
${LIBDRM_INCLUDE_DIRS})
|
||||||
endif()
|
|
||||||
list(APPEND FFmpeg_HWACCEL_FLAGS
|
list(APPEND FFmpeg_HWACCEL_FLAGS
|
||||||
--enable-libdrm)
|
--enable-libdrm)
|
||||||
endif()
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
if(LIBVA_FOUND)
|
if(LIBVA_FOUND)
|
||||||
find_package(X11 REQUIRED)
|
find_package(X11 REQUIRED)
|
||||||
@@ -89,7 +97,7 @@ if (UNIX AND NOT ANDROID)
|
|||||||
endif(CUDA_FOUND)
|
endif(CUDA_FOUND)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (VDPAU_FOUND)
|
if (VDPAU_FOUND AND NOT APPLE)
|
||||||
list(APPEND FFmpeg_HWACCEL_FLAGS
|
list(APPEND FFmpeg_HWACCEL_FLAGS
|
||||||
--enable-vdpau
|
--enable-vdpau
|
||||||
--enable-hwaccel=h264_vdpau
|
--enable-hwaccel=h264_vdpau
|
||||||
@@ -107,9 +115,10 @@ endif()
|
|||||||
|
|
||||||
if (YUZU_USE_BUNDLED_FFMPEG)
|
if (YUZU_USE_BUNDLED_FFMPEG)
|
||||||
# MSVC conflicts with ksuser otherwise
|
# MSVC conflicts with ksuser otherwise
|
||||||
|
# MinGW has the funny quirk of requiring avutil after avcodec
|
||||||
# Android needs some deps to be compiled with PIC (TODO)
|
# Android needs some deps to be compiled with PIC (TODO)
|
||||||
# TODO(crueter) fix
|
# TODO(crueter) fix
|
||||||
if (MSVC OR ANDROID)
|
if (ANDROID)
|
||||||
set(BUILD_SHARED_LIBS ON)
|
set(BUILD_SHARED_LIBS ON)
|
||||||
else()
|
else()
|
||||||
set(BUILD_SHARED_LIBS OFF)
|
set(BUILD_SHARED_LIBS OFF)
|
||||||
@@ -246,11 +255,19 @@ else()
|
|||||||
SYSTEM_THREADS)
|
SYSTEM_THREADS)
|
||||||
|
|
||||||
set(FFmpeg_BUILD_LIBRARIES ${FFmpeg_LIBRARIES})
|
set(FFmpeg_BUILD_LIBRARIES ${FFmpeg_LIBRARIES})
|
||||||
|
|
||||||
|
# BSD make or Solaris make don't support ffmpeg make-j8
|
||||||
|
if (PLATFORM_LINUX OR ANDROID OR APPLE OR WIN32 OR PLATFORM_FREEBSD)
|
||||||
|
set(FFmpeg_MAKE_ARGS -j${SYSTEM_THREADS})
|
||||||
|
else()
|
||||||
|
set(FFmpeg_MAKE_ARGS "")
|
||||||
|
endif()
|
||||||
|
|
||||||
add_custom_command(
|
add_custom_command(
|
||||||
OUTPUT
|
OUTPUT
|
||||||
${FFmpeg_BUILD_LIBRARIES}
|
${FFmpeg_BUILD_LIBRARIES}
|
||||||
COMMAND
|
COMMAND
|
||||||
make -j${SYSTEM_THREADS}
|
make ${FFmpeg_MAKE_ARGS}
|
||||||
WORKING_DIRECTORY
|
WORKING_DIRECTORY
|
||||||
${FFmpeg_BUILD_DIR}
|
${FFmpeg_BUILD_DIR}
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -10,12 +10,7 @@
|
|||||||
"package": "FFmpeg",
|
"package": "FFmpeg",
|
||||||
"name": "ffmpeg",
|
"name": "ffmpeg",
|
||||||
"repo": "crueter-ci/FFmpeg",
|
"repo": "crueter-ci/FFmpeg",
|
||||||
"version": "8.0",
|
"version": "8.0-be99d2c0b2",
|
||||||
"min_version": "4.1",
|
"min_version": "4.1"
|
||||||
"disabled_platforms": [
|
|
||||||
"freebsd-amd64",
|
|
||||||
"solaris-amd64",
|
|
||||||
"macos-universal"
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
"git_host": "git.crueter.xyz",
|
"git_host": "git.crueter.xyz",
|
||||||
"artifact": "%VERSION%.tar.gz",
|
"artifact": "%VERSION%.tar.gz",
|
||||||
"tag": "%VERSION%",
|
"tag": "%VERSION%",
|
||||||
"hash": "87abb2aeca716d5d77b05317086dbc2f8acfc2f3f76ce4778345ee3df19973e6cd8ecbf16cfab5ad94c9636a6c44fd3588f9aadd3cba89403cfd56c8bec645c5",
|
"hash": "dc37a189a44ce8b5c988ca550582431a6c7eadfd3c6e709bee6277116ee803e714333e85c9e6cbb5c69346a14d6f2cc7ed96e8aa09cc5fb8a89f945059651db6",
|
||||||
"version": "091025"
|
"version": "121125"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,11 +9,15 @@ pkgs.mkShellNoCC {
|
|||||||
# libraries
|
# libraries
|
||||||
openssl boost fmt nlohmann_json lz4 zlib zstd
|
openssl boost fmt nlohmann_json lz4 zlib zstd
|
||||||
enet libopus vulkan-headers vulkan-utility-libraries
|
enet libopus vulkan-headers vulkan-utility-libraries
|
||||||
spirv-tools spirv-headers simpleini vulkan-memory-allocator
|
spirv-tools spirv-headers vulkan-loader unzip mbedtls
|
||||||
vulkan-loader unzip mbedtls glslang python3 httplib
|
glslang python3 httplib cpp-jwt ffmpeg-headless
|
||||||
cpp-jwt ffmpeg-headless libusb1 cubeb
|
libusb1 cubeb
|
||||||
qt6.full # eden
|
# eden
|
||||||
SDL2 # eden-cli
|
qt6.qtbase qt6.qtmultimedia qt6.qtwayland qt6.qttools
|
||||||
discord-rpc gamemode # optional components
|
qt6.qtwebengine qt6.qt5compat
|
||||||
|
# eden-cli
|
||||||
|
SDL2
|
||||||
|
# optional components
|
||||||
|
discord-rpc gamemode
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
@@ -35,7 +35,6 @@ if (MSVC AND NOT CXX_CLANG)
|
|||||||
|
|
||||||
# /W4 - Level 4 warnings
|
# /W4 - Level 4 warnings
|
||||||
# /MP - Multi-threaded compilation
|
# /MP - Multi-threaded compilation
|
||||||
# /Zi - Output debugging information
|
|
||||||
# /Zm - Specifies the precompiled header memory allocation limit
|
# /Zm - Specifies the precompiled header memory allocation limit
|
||||||
# /Zo - Enhanced debug info for optimized builds
|
# /Zo - Enhanced debug info for optimized builds
|
||||||
# /permissive- - Enables stricter C++ standards conformance checks
|
# /permissive- - Enables stricter C++ standards conformance checks
|
||||||
@@ -98,11 +97,6 @@ if (MSVC AND NOT CXX_CLANG)
|
|||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (WIN32 AND (CMAKE_BUILD_TYPE STREQUAL "Debug" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo"))
|
|
||||||
string(REPLACE "/Zi" "/Z7" CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}")
|
|
||||||
string(REPLACE "/Zi" "/Z7" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (ARCHITECTURE_x86_64)
|
if (ARCHITECTURE_x86_64)
|
||||||
add_compile_options(/QIntel-jcc-erratum)
|
add_compile_options(/QIntel-jcc-erratum)
|
||||||
endif()
|
endif()
|
||||||
@@ -176,13 +170,27 @@ else()
|
|||||||
add_compile_definitions(_FILE_OFFSET_BITS=64)
|
add_compile_definitions(_FILE_OFFSET_BITS=64)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if (YUZU_STATIC_BUILD)
|
||||||
|
add_compile_definitions(QT_STATICPLUGIN)
|
||||||
|
|
||||||
|
# macos doesn't even let you make static executables... wtf?
|
||||||
|
if (NOT APPLE)
|
||||||
|
add_compile_options(-static)
|
||||||
|
if (YUZU_STATIC_BUILD)
|
||||||
|
# yuzu-cmd requires us to explicitly link libpthread, libgcc, and libstdc++ as static
|
||||||
|
# At a guess, it's probably because Qt handles the Qt executable for us, whereas this does not
|
||||||
|
add_link_options(-static -lpthread)
|
||||||
|
add_link_options(-static-libgcc -static-libstdc++)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
if (MINGW)
|
if (MINGW)
|
||||||
add_compile_definitions(MINGW_HAS_SECURE_API)
|
add_compile_definitions(MINGW_HAS_SECURE_API)
|
||||||
add_compile_options("-msse4.1")
|
|
||||||
|
|
||||||
if (MINGW_STATIC_BUILD)
|
# Only windows has this requirement, thanks windows
|
||||||
add_compile_definitions(QT_STATICPLUGIN)
|
if (WIN32 AND ARCHITECTURE_x86_64)
|
||||||
add_compile_options("-static")
|
add_compile_options("-msse4.1")
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|||||||
@@ -200,6 +200,18 @@ object NativeLibrary {
|
|||||||
|
|
||||||
external fun logSettings()
|
external fun logSettings()
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns Vulkan driver version / API version / GPU model
|
||||||
|
*/
|
||||||
|
external fun getVulkanDriverVersion(): String
|
||||||
|
external fun getVulkanApiVersion(): String
|
||||||
|
external fun getGpuModel(): String
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a summary of detailed information about the CPU.
|
||||||
|
*/
|
||||||
|
external fun getCpuSummary(): String
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Checks for available updates.
|
* Checks for available updates.
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -16,11 +16,15 @@ import java.io.FileOutputStream
|
|||||||
import java.security.KeyStore
|
import java.security.KeyStore
|
||||||
import javax.net.ssl.TrustManagerFactory
|
import javax.net.ssl.TrustManagerFactory
|
||||||
import javax.net.ssl.X509TrustManager
|
import javax.net.ssl.X509TrustManager
|
||||||
|
import android.content.res.Configuration
|
||||||
|
import android.os.LocaleList
|
||||||
|
import org.yuzu.yuzu_emu.features.settings.model.IntSetting
|
||||||
import org.yuzu.yuzu_emu.utils.DirectoryInitialization
|
import org.yuzu.yuzu_emu.utils.DirectoryInitialization
|
||||||
import org.yuzu.yuzu_emu.utils.DocumentsTree
|
import org.yuzu.yuzu_emu.utils.DocumentsTree
|
||||||
import org.yuzu.yuzu_emu.utils.GpuDriverHelper
|
import org.yuzu.yuzu_emu.utils.GpuDriverHelper
|
||||||
import org.yuzu.yuzu_emu.utils.Log
|
import org.yuzu.yuzu_emu.utils.Log
|
||||||
import org.yuzu.yuzu_emu.utils.PowerStateUpdater
|
import org.yuzu.yuzu_emu.utils.PowerStateUpdater
|
||||||
|
import java.util.Locale
|
||||||
|
|
||||||
fun Context.getPublicFilesDir(): File = getExternalFilesDir(null) ?: filesDir
|
fun Context.getPublicFilesDir(): File = getExternalFilesDir(null) ?: filesDir
|
||||||
|
|
||||||
@@ -73,5 +77,38 @@ class YuzuApplication : Application() {
|
|||||||
|
|
||||||
val appContext: Context
|
val appContext: Context
|
||||||
get() = application.applicationContext
|
get() = application.applicationContext
|
||||||
|
|
||||||
|
private val LANGUAGE_CODES = arrayOf(
|
||||||
|
"system", "en", "es", "fr", "de", "it", "pt", "pt-BR", "ru", "ja", "ko",
|
||||||
|
"zh-CN", "zh-TW", "pl", "cs", "nb", "hu", "uk", "vi", "id", "ar", "ckb", "fa", "he", "sr"
|
||||||
|
)
|
||||||
|
|
||||||
|
fun applyLanguage(context: Context): Context {
|
||||||
|
val languageIndex = IntSetting.APP_LANGUAGE.getInt()
|
||||||
|
val langCode = if (languageIndex in LANGUAGE_CODES.indices) {
|
||||||
|
LANGUAGE_CODES[languageIndex]
|
||||||
|
} else {
|
||||||
|
"system"
|
||||||
|
}
|
||||||
|
|
||||||
|
if (langCode == "system") {
|
||||||
|
return context
|
||||||
|
}
|
||||||
|
|
||||||
|
val locale = when {
|
||||||
|
langCode.contains("-") -> {
|
||||||
|
val parts = langCode.split("-")
|
||||||
|
Locale.Builder().setLanguage(parts[0]).setRegion(parts[1]).build()
|
||||||
|
}
|
||||||
|
else -> Locale.Builder().setLanguage(langCode).build()
|
||||||
|
}
|
||||||
|
|
||||||
|
Locale.setDefault(locale)
|
||||||
|
|
||||||
|
val config = Configuration(context.resources.configuration)
|
||||||
|
config.setLocales(LocaleList(locale))
|
||||||
|
|
||||||
|
return context.createConfigurationContext(config)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -86,6 +86,10 @@ class EmulationActivity : AppCompatActivity(), SensorEventListener {
|
|||||||
|
|
||||||
private var foregroundService: Intent? = null
|
private var foregroundService: Intent? = null
|
||||||
|
|
||||||
|
override fun attachBaseContext(base: Context) {
|
||||||
|
super.attachBaseContext(YuzuApplication.applyLanguage(base))
|
||||||
|
}
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
Log.gameLaunched = true
|
Log.gameLaunched = true
|
||||||
ThemeHelper.setTheme(this)
|
ThemeHelper.setTheme(this)
|
||||||
|
|||||||
@@ -69,7 +69,9 @@ enum class BooleanSetting(override val key: String) : AbstractBooleanSetting {
|
|||||||
SHOW_SHADERS_BUILDING("show_shaders_building"),
|
SHOW_SHADERS_BUILDING("show_shaders_building"),
|
||||||
|
|
||||||
DEBUG_FLUSH_BY_LINE("flush_line"),
|
DEBUG_FLUSH_BY_LINE("flush_line"),
|
||||||
USE_LRU_CACHE("use_lru_cache");
|
USE_LRU_CACHE("use_lru_cache"),
|
||||||
|
|
||||||
|
DONT_SHOW_DRIVER_SHADER_WARNING("dont_show_driver_shader_warning");
|
||||||
|
|
||||||
|
|
||||||
// external fun isFrameSkippingEnabled(): Boolean
|
// external fun isFrameSkippingEnabled(): Boolean
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ enum class IntSetting(override val key: String) : AbstractIntSetting {
|
|||||||
MAX_ANISOTROPY("max_anisotropy"),
|
MAX_ANISOTROPY("max_anisotropy"),
|
||||||
THEME("theme"),
|
THEME("theme"),
|
||||||
THEME_MODE("theme_mode"),
|
THEME_MODE("theme_mode"),
|
||||||
|
APP_LANGUAGE("app_language"),
|
||||||
OVERLAY_SCALE("control_scale"),
|
OVERLAY_SCALE("control_scale"),
|
||||||
OVERLAY_OPACITY("control_opacity"),
|
OVERLAY_OPACITY("control_opacity"),
|
||||||
LOCK_DRAWER("lock_drawer"),
|
LOCK_DRAWER("lock_drawer"),
|
||||||
|
|||||||
@@ -667,10 +667,11 @@ abstract class SettingsItem(
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
put(
|
put(
|
||||||
SliderSetting(
|
SpinBoxSetting(
|
||||||
IntSetting.CPU_TICKS,
|
IntSetting.CPU_TICKS,
|
||||||
titleId = R.string.cpu_ticks,
|
titleId = R.string.cpu_ticks,
|
||||||
descriptionId = 0,
|
descriptionId = 0,
|
||||||
|
valueHint = R.string.cpu_ticks,
|
||||||
min = 77,
|
min = 77,
|
||||||
max = 65535
|
max = 65535
|
||||||
)
|
)
|
||||||
@@ -756,6 +757,15 @@ abstract class SettingsItem(
|
|||||||
titleId = R.string.enable_update_checks,
|
titleId = R.string.enable_update_checks,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
put(
|
||||||
|
SingleChoiceSetting(
|
||||||
|
IntSetting.APP_LANGUAGE,
|
||||||
|
titleId = R.string.app_language,
|
||||||
|
descriptionId = R.string.app_language_description,
|
||||||
|
choicesId = R.array.appLanguageNames,
|
||||||
|
valuesId = R.array.appLanguageValues
|
||||||
|
)
|
||||||
|
)
|
||||||
put(
|
put(
|
||||||
SwitchSetting(
|
SwitchSetting(
|
||||||
BooleanSetting.RENDERER_DEBUG,
|
BooleanSetting.RENDERER_DEBUG,
|
||||||
|
|||||||
@@ -1,8 +1,13 @@
|
|||||||
|
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||||
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
// SPDX-FileCopyrightText: 2023 yuzu Emulator Project
|
// SPDX-FileCopyrightText: 2023 yuzu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
package org.yuzu.yuzu_emu.features.settings.ui
|
package org.yuzu.yuzu_emu.features.settings.ui
|
||||||
|
|
||||||
|
import android.content.Context
|
||||||
|
import org.yuzu.yuzu_emu.YuzuApplication
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup.MarginLayoutParams
|
import android.view.ViewGroup.MarginLayoutParams
|
||||||
@@ -24,6 +29,7 @@ import org.yuzu.yuzu_emu.features.input.NativeInput
|
|||||||
import org.yuzu.yuzu_emu.features.settings.utils.SettingsFile
|
import org.yuzu.yuzu_emu.features.settings.utils.SettingsFile
|
||||||
import org.yuzu.yuzu_emu.fragments.ResetSettingsDialogFragment
|
import org.yuzu.yuzu_emu.fragments.ResetSettingsDialogFragment
|
||||||
import org.yuzu.yuzu_emu.utils.*
|
import org.yuzu.yuzu_emu.utils.*
|
||||||
|
import org.yuzu.yuzu_emu.utils.collect
|
||||||
|
|
||||||
class SettingsActivity : AppCompatActivity() {
|
class SettingsActivity : AppCompatActivity() {
|
||||||
private lateinit var binding: ActivitySettingsBinding
|
private lateinit var binding: ActivitySettingsBinding
|
||||||
@@ -32,6 +38,10 @@ class SettingsActivity : AppCompatActivity() {
|
|||||||
|
|
||||||
private val settingsViewModel: SettingsViewModel by viewModels()
|
private val settingsViewModel: SettingsViewModel by viewModels()
|
||||||
|
|
||||||
|
override fun attachBaseContext(base: Context) {
|
||||||
|
super.attachBaseContext(YuzuApplication.applyLanguage(base))
|
||||||
|
}
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
ThemeHelper.setTheme(this)
|
ThemeHelper.setTheme(this)
|
||||||
|
|
||||||
@@ -125,6 +135,16 @@ class SettingsActivity : AppCompatActivity() {
|
|||||||
NativeConfig.savePerGameConfig()
|
NativeConfig.savePerGameConfig()
|
||||||
NativeConfig.unloadPerGameConfig()
|
NativeConfig.unloadPerGameConfig()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (settingsViewModel.shouldRecreateForLanguageChange.value) {
|
||||||
|
settingsViewModel.setShouldRecreateForLanguageChange(false)
|
||||||
|
val relaunchIntent = packageManager?.getLaunchIntentForPackage(packageName)
|
||||||
|
if (relaunchIntent != null) {
|
||||||
|
relaunchIntent.addFlags(android.content.Intent.FLAG_ACTIVITY_CLEAR_TASK or android.content.Intent.FLAG_ACTIVITY_NEW_TASK)
|
||||||
|
startActivity(relaunchIntent)
|
||||||
|
android.os.Process.killProcess(android.os.Process.myPid())
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -425,6 +425,14 @@ class SettingsAdapter(
|
|||||||
position
|
position
|
||||||
).show(fragment.childFragmentManager, SettingsDialogFragment.TAG)
|
).show(fragment.childFragmentManager, SettingsDialogFragment.TAG)
|
||||||
|
|
||||||
|
// reset language if detected
|
||||||
|
if (item.setting.key == "app_language") {
|
||||||
|
// recreate page apply language change instantly
|
||||||
|
fragment.requireActivity().recreate()
|
||||||
|
|
||||||
|
settingsViewModel.setShouldRecreateForLanguageChange(true)
|
||||||
|
}
|
||||||
|
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -14,6 +14,9 @@ import android.text.TextWatcher
|
|||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
|
import android.view.MotionEvent
|
||||||
|
import android.os.Handler
|
||||||
|
import android.os.Looper
|
||||||
import androidx.appcompat.app.AlertDialog
|
import androidx.appcompat.app.AlertDialog
|
||||||
import androidx.core.view.isVisible
|
import androidx.core.view.isVisible
|
||||||
import androidx.fragment.app.DialogFragment
|
import androidx.fragment.app.DialogFragment
|
||||||
@@ -197,6 +200,54 @@ class SettingsDialogFragment : DialogFragment(), DialogInterface.OnClickListener
|
|||||||
updateValidity(newValue)
|
updateValidity(newValue)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun attachRepeat(button: View, delta: Int) {
|
||||||
|
val handler = Handler(Looper.getMainLooper())
|
||||||
|
var runnable: Runnable? = null
|
||||||
|
val initialDelay = 400L
|
||||||
|
val minDelay = 40L
|
||||||
|
val accelerationFactor = 0.75f
|
||||||
|
|
||||||
|
button.setOnTouchListener { v, event ->
|
||||||
|
when (event.action) {
|
||||||
|
MotionEvent.ACTION_DOWN -> {
|
||||||
|
val current = spinboxBinding.editValue.text.toString().toIntOrNull() ?: currentValue
|
||||||
|
val newValue = (current + delta)
|
||||||
|
spinboxBinding.editValue.setText(newValue.toString())
|
||||||
|
updateValidity(newValue)
|
||||||
|
|
||||||
|
var delay = initialDelay
|
||||||
|
runnable = object : Runnable {
|
||||||
|
override fun run() {
|
||||||
|
val curr = spinboxBinding.editValue.text.toString().toIntOrNull() ?: currentValue
|
||||||
|
val next = curr + delta
|
||||||
|
spinboxBinding.editValue.setText(next.toString())
|
||||||
|
updateValidity(next)
|
||||||
|
// accelerate
|
||||||
|
delay = (delay * accelerationFactor).toLong().coerceAtLeast(minDelay)
|
||||||
|
handler.postDelayed(this, delay)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
handler.postDelayed(runnable!!, initialDelay)
|
||||||
|
true
|
||||||
|
}
|
||||||
|
|
||||||
|
MotionEvent.ACTION_UP, MotionEvent.ACTION_CANCEL -> {
|
||||||
|
if (runnable != null) {
|
||||||
|
handler.removeCallbacks(runnable!!)
|
||||||
|
runnable = null
|
||||||
|
}
|
||||||
|
v.performClick()
|
||||||
|
true
|
||||||
|
}
|
||||||
|
|
||||||
|
else -> false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
attachRepeat(spinboxBinding.buttonDecrement, -1)
|
||||||
|
attachRepeat(spinboxBinding.buttonIncrement, 1)
|
||||||
|
|
||||||
spinboxBinding.editValue.addTextChangedListener(object : TextWatcher {
|
spinboxBinding.editValue.addTextChangedListener(object : TextWatcher {
|
||||||
override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {}
|
override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {}
|
||||||
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {}
|
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {}
|
||||||
@@ -336,6 +387,12 @@ class SettingsDialogFragment : DialogFragment(), DialogInterface.OnClickListener
|
|||||||
.show()
|
.show()
|
||||||
}
|
}
|
||||||
scSetting.setSelectedValue(value)
|
scSetting.setSelectedValue(value)
|
||||||
|
|
||||||
|
if (scSetting.setting.key == "app_language") {
|
||||||
|
settingsViewModel.setShouldRecreateForLanguageChange(true)
|
||||||
|
// recreate page apply language change instantly
|
||||||
|
requireActivity().recreate()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
is StringSingleChoiceSetting -> {
|
is StringSingleChoiceSetting -> {
|
||||||
|
|||||||
@@ -1030,8 +1030,10 @@ class SettingsFragmentPresenter(
|
|||||||
override fun reset() = IntSetting.THEME.setInt(defaultValue)
|
override fun reset() = IntSetting.THEME.setInt(defaultValue)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (NativeLibrary.isUpdateCheckerEnabled()) {
|
|
||||||
add(HeaderSetting(R.string.app_settings))
|
add(HeaderSetting(R.string.app_settings))
|
||||||
|
add(IntSetting.APP_LANGUAGE.key)
|
||||||
|
|
||||||
|
if (NativeLibrary.isUpdateCheckerEnabled()) {
|
||||||
add(BooleanSetting.ENABLE_UPDATE_CHECKS.key)
|
add(BooleanSetting.ENABLE_UPDATE_CHECKS.key)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,6 @@
|
|||||||
|
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||||
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
// SPDX-FileCopyrightText: 2023 yuzu Emulator Project
|
// SPDX-FileCopyrightText: 2023 yuzu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
@@ -54,6 +57,8 @@ class SettingsViewModel : ViewModel() {
|
|||||||
private val _shouldShowResetInputDialog = MutableStateFlow(false)
|
private val _shouldShowResetInputDialog = MutableStateFlow(false)
|
||||||
val shouldShowResetInputDialog = _shouldShowResetInputDialog.asStateFlow()
|
val shouldShowResetInputDialog = _shouldShowResetInputDialog.asStateFlow()
|
||||||
|
|
||||||
|
private val _shouldRecreateForLanguageChange = MutableStateFlow(false)
|
||||||
|
val shouldRecreateForLanguageChange = _shouldRecreateForLanguageChange.asStateFlow()
|
||||||
fun setShouldRecreate(value: Boolean) {
|
fun setShouldRecreate(value: Boolean) {
|
||||||
_shouldRecreate.value = value
|
_shouldRecreate.value = value
|
||||||
}
|
}
|
||||||
@@ -103,6 +108,10 @@ class SettingsViewModel : ViewModel() {
|
|||||||
_shouldShowResetInputDialog.value = value
|
_shouldShowResetInputDialog.value = value
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun setShouldRecreateForLanguageChange(value: Boolean) {
|
||||||
|
_shouldRecreateForLanguageChange.value = value
|
||||||
|
}
|
||||||
|
|
||||||
fun getCurrentDeviceParams(defaultParams: ParamPackage): ParamPackage =
|
fun getCurrentDeviceParams(defaultParams: ParamPackage): ParamPackage =
|
||||||
try {
|
try {
|
||||||
InputHandler.registeredControllers[currentDevice]
|
InputHandler.registeredControllers[currentDevice]
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// SPDX-FileCopyrightText: 2025 Eden Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
package org.yuzu.yuzu_emu.fragments
|
package org.yuzu.yuzu_emu.fragments
|
||||||
@@ -91,6 +91,12 @@ class DriverManagerFragment : Fragment() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
driverViewModel.shouldShowDriverShaderDialog.collect(viewLifecycleOwner) { shouldShow ->
|
||||||
|
if (shouldShow) {
|
||||||
|
showDriverShaderWipeDialog()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (!driverViewModel.isInteractionAllowed.value) {
|
if (!driverViewModel.isInteractionAllowed.value) {
|
||||||
DriversLoadingDialogFragment().show(
|
DriversLoadingDialogFragment().show(
|
||||||
childFragmentManager,
|
childFragmentManager,
|
||||||
@@ -236,4 +242,18 @@ class DriverManagerFragment : Fragment() {
|
|||||||
).show(requireActivity().supportFragmentManager, MessageDialogFragment.TAG)
|
).show(requireActivity().supportFragmentManager, MessageDialogFragment.TAG)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun showDriverShaderWipeDialog() {
|
||||||
|
com.google.android.material.dialog.MaterialAlertDialogBuilder(requireContext())
|
||||||
|
.setTitle(R.string.driver_shader_wipe_dialog_title)
|
||||||
|
.setMessage(R.string.driver_shader_wipe_dialog_message)
|
||||||
|
.setPositiveButton(android.R.string.ok) { _, _ ->
|
||||||
|
driverViewModel.onDriverShaderDialogDismissed(dontShowAgain = false)
|
||||||
|
}
|
||||||
|
.setNegativeButton(R.string.dont_show_again) { _, _ ->
|
||||||
|
driverViewModel.onDriverShaderDialogDismissed(dontShowAgain = true)
|
||||||
|
}
|
||||||
|
.setCancelable(false)
|
||||||
|
.show()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1511,7 +1511,9 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {
|
|||||||
|
|
||||||
emulationState.newSurface(holder.surface)
|
emulationState.newSurface(holder.surface)
|
||||||
} else {
|
} else {
|
||||||
emulationState.newSurface(holder.surface)
|
// Surface changed due to rotation/config change
|
||||||
|
// Only update surface reference, don't trigger state changes
|
||||||
|
emulationState.updateSurfaceReference(holder.surface)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1842,6 +1844,14 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Synchronized
|
||||||
|
fun updateSurfaceReference(surface: Surface?) {
|
||||||
|
this.surface = surface
|
||||||
|
if (this.surface != null && state == State.RUNNING) {
|
||||||
|
NativeLibrary.surfaceChanged(this.surface)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Synchronized
|
@Synchronized
|
||||||
fun clearSurface() {
|
fun clearSurface() {
|
||||||
if (surface == null) {
|
if (surface == null) {
|
||||||
|
|||||||
@@ -230,6 +230,17 @@ class HomeSettingsFragment : Fragment() {
|
|||||||
{ openFileManager() }
|
{ openFileManager() }
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
add(
|
||||||
|
HomeSetting(
|
||||||
|
R.string.system_information,
|
||||||
|
R.string.system_information_description,
|
||||||
|
R.drawable.ic_system,
|
||||||
|
{
|
||||||
|
SystemInfoDialogFragment.newInstance()
|
||||||
|
.show(parentFragmentManager, SystemInfoDialogFragment.TAG)
|
||||||
|
}
|
||||||
|
)
|
||||||
|
)
|
||||||
add(
|
add(
|
||||||
HomeSetting(
|
HomeSetting(
|
||||||
R.string.about,
|
R.string.about,
|
||||||
|
|||||||
@@ -0,0 +1,108 @@
|
|||||||
|
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||||
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
|
package org.yuzu.yuzu_emu.fragments
|
||||||
|
|
||||||
|
import android.app.ActivityManager
|
||||||
|
import android.app.Dialog
|
||||||
|
import android.content.Context
|
||||||
|
import android.os.Build
|
||||||
|
import android.os.Bundle
|
||||||
|
import androidx.fragment.app.DialogFragment
|
||||||
|
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||||
|
import org.yuzu.yuzu_emu.NativeLibrary
|
||||||
|
import org.yuzu.yuzu_emu.R
|
||||||
|
import org.yuzu.yuzu_emu.databinding.DialogSystemInfoBinding
|
||||||
|
|
||||||
|
class SystemInfoDialogFragment : DialogFragment() {
|
||||||
|
private var _binding: DialogSystemInfoBinding? = null
|
||||||
|
private val binding get() = _binding!!
|
||||||
|
|
||||||
|
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
|
||||||
|
_binding = DialogSystemInfoBinding.inflate(layoutInflater)
|
||||||
|
|
||||||
|
populateSystemInfo()
|
||||||
|
|
||||||
|
val dialog = MaterialAlertDialogBuilder(requireContext())
|
||||||
|
.setTitle(R.string.system_information)
|
||||||
|
.setPositiveButton(android.R.string.ok, null)
|
||||||
|
.create()
|
||||||
|
|
||||||
|
dialog.setView(binding.root)
|
||||||
|
|
||||||
|
return dialog
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun populateSystemInfo() {
|
||||||
|
val systemInfo = buildString {
|
||||||
|
// General Device Info
|
||||||
|
appendLine("=== ${getString(R.string.general_information)} ===")
|
||||||
|
appendLine("${getString(R.string.device_manufacturer)}: ${Build.MANUFACTURER}")
|
||||||
|
appendLine("${getString(R.string.device_model)}: ${Build.MODEL}")
|
||||||
|
appendLine("${getString(R.string.device_name)}: ${Build.DEVICE}")
|
||||||
|
appendLine("${getString(R.string.product)}: ${Build.PRODUCT}")
|
||||||
|
appendLine("${getString(R.string.hardware)}: ${Build.HARDWARE}")
|
||||||
|
appendLine("${getString(R.string.supported_abis)}: ${Build.SUPPORTED_ABIS.joinToString(", ")}")
|
||||||
|
appendLine("${getString(R.string.android_version)}: ${Build.VERSION.RELEASE} (API ${Build.VERSION.SDK_INT})")
|
||||||
|
appendLine("${getString(R.string.android_security_patch)}: ${Build.VERSION.SECURITY_PATCH}")
|
||||||
|
appendLine("${getString(R.string.build_id)}: ${Build.ID}")
|
||||||
|
|
||||||
|
appendLine()
|
||||||
|
appendLine("=== ${getString(R.string.cpu_info)} ===")
|
||||||
|
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S && Build.SOC_MODEL.isNotBlank()) {
|
||||||
|
appendLine("${getString(R.string.soc)} ${Build.SOC_MODEL}")
|
||||||
|
}
|
||||||
|
|
||||||
|
val cpuSummary = NativeLibrary.getCpuSummary()
|
||||||
|
if (cpuSummary.isNotEmpty() && cpuSummary != "Unknown") {
|
||||||
|
appendLine(cpuSummary)
|
||||||
|
}
|
||||||
|
|
||||||
|
appendLine()
|
||||||
|
|
||||||
|
// GPU Info
|
||||||
|
appendLine("=== ${getString(R.string.gpu_information)} ===")
|
||||||
|
try {
|
||||||
|
val gpuModel = NativeLibrary.getGpuModel()
|
||||||
|
appendLine("${getString(R.string.gpu_model)}: $gpuModel")
|
||||||
|
|
||||||
|
val vulkanApi = NativeLibrary.getVulkanApiVersion()
|
||||||
|
appendLine("Vulkan API: $vulkanApi")
|
||||||
|
|
||||||
|
val vulkanDriver = NativeLibrary.getVulkanDriverVersion()
|
||||||
|
appendLine("${getString(R.string.vulkan_driver_version)}: $vulkanDriver")
|
||||||
|
} catch (e: Exception) {
|
||||||
|
appendLine("${getString(R.string.error_getting_emulator_info)}: ${e.message}")
|
||||||
|
}
|
||||||
|
appendLine()
|
||||||
|
|
||||||
|
// Memory Info
|
||||||
|
appendLine("=== ${getString(R.string.memory_info)} ===")
|
||||||
|
|
||||||
|
val activityManager =
|
||||||
|
requireContext().getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager
|
||||||
|
val memInfo = ActivityManager.MemoryInfo()
|
||||||
|
activityManager.getMemoryInfo(memInfo)
|
||||||
|
val totalDeviceRam = memInfo.totalMem / (1024 * 1024)
|
||||||
|
|
||||||
|
appendLine("${getString(R.string.total_memory)}: $totalDeviceRam MB")
|
||||||
|
}
|
||||||
|
|
||||||
|
binding.textSystemInfo.text = systemInfo
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
override fun onDestroyView() {
|
||||||
|
super.onDestroyView()
|
||||||
|
_binding = null
|
||||||
|
}
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
const val TAG = "SystemInfoDialogFragment"
|
||||||
|
|
||||||
|
fun newInstance(): SystemInfoDialogFragment {
|
||||||
|
return SystemInfoDialogFragment()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,3 +1,6 @@
|
|||||||
|
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||||
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
// SPDX-FileCopyrightText: 2023 yuzu Emulator Project
|
// SPDX-FileCopyrightText: 2023 yuzu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
@@ -16,6 +19,7 @@ import kotlinx.coroutines.launch
|
|||||||
import kotlinx.coroutines.withContext
|
import kotlinx.coroutines.withContext
|
||||||
import org.yuzu.yuzu_emu.R
|
import org.yuzu.yuzu_emu.R
|
||||||
import org.yuzu.yuzu_emu.YuzuApplication
|
import org.yuzu.yuzu_emu.YuzuApplication
|
||||||
|
import org.yuzu.yuzu_emu.features.settings.model.BooleanSetting
|
||||||
import org.yuzu.yuzu_emu.features.settings.model.StringSetting
|
import org.yuzu.yuzu_emu.features.settings.model.StringSetting
|
||||||
import org.yuzu.yuzu_emu.features.settings.utils.SettingsFile
|
import org.yuzu.yuzu_emu.features.settings.utils.SettingsFile
|
||||||
import org.yuzu.yuzu_emu.model.Driver.Companion.toDriver
|
import org.yuzu.yuzu_emu.model.Driver.Companion.toDriver
|
||||||
@@ -52,9 +56,15 @@ class DriverViewModel : ViewModel() {
|
|||||||
|
|
||||||
private val driversToDelete = mutableListOf<String>()
|
private val driversToDelete = mutableListOf<String>()
|
||||||
|
|
||||||
|
private var previousDriverPath: String = ""
|
||||||
|
|
||||||
|
private val _shouldShowDriverShaderDialog = MutableStateFlow(false)
|
||||||
|
val shouldShowDriverShaderDialog: StateFlow<Boolean> get() = _shouldShowDriverShaderDialog
|
||||||
|
|
||||||
init {
|
init {
|
||||||
updateDriverList()
|
updateDriverList()
|
||||||
updateDriverNameForGame(null)
|
updateDriverNameForGame(null)
|
||||||
|
previousDriverPath = StringSetting.DRIVER_PATH.getString()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun reloadDriverData() {
|
fun reloadDriverData() {
|
||||||
@@ -79,6 +89,7 @@ class DriverViewModel : ViewModel() {
|
|||||||
newDriverList.add(it.second.toDriver(it.second == selectedDriver))
|
newDriverList.add(it.second.toDriver(it.second == selectedDriver))
|
||||||
}
|
}
|
||||||
_driverList.value = newDriverList
|
_driverList.value = newDriverList
|
||||||
|
previousDriverPath = StringSetting.DRIVER_PATH.getString()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun onOpenDriverManager(game: Game?) {
|
fun onOpenDriverManager(game: Game?) {
|
||||||
@@ -92,12 +103,49 @@ class DriverViewModel : ViewModel() {
|
|||||||
_showClearButton.value = value
|
_showClearButton.value = value
|
||||||
}
|
}
|
||||||
|
|
||||||
fun onDriverSelected(position: Int) {
|
fun onDriverSelected(position: Int, skipShaderWipe: Boolean = false) {
|
||||||
|
val newDriverPath = if (position == 0) {
|
||||||
|
""
|
||||||
|
} else {
|
||||||
|
driverData[position - 1].first
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!skipShaderWipe && newDriverPath != previousDriverPath) {
|
||||||
|
wipeAllShaders()
|
||||||
|
|
||||||
|
if (!BooleanSetting.DONT_SHOW_DRIVER_SHADER_WARNING.getBoolean(needsGlobal = true)) {
|
||||||
|
_shouldShowDriverShaderDialog.value = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (position == 0) {
|
if (position == 0) {
|
||||||
StringSetting.DRIVER_PATH.setString("")
|
StringSetting.DRIVER_PATH.setString("")
|
||||||
} else {
|
} else {
|
||||||
StringSetting.DRIVER_PATH.setString(driverData[position - 1].first)
|
StringSetting.DRIVER_PATH.setString(driverData[position - 1].first)
|
||||||
}
|
}
|
||||||
|
previousDriverPath = newDriverPath
|
||||||
|
}
|
||||||
|
|
||||||
|
fun onDriverShaderDialogDismissed(dontShowAgain: Boolean) {
|
||||||
|
if (dontShowAgain) {
|
||||||
|
BooleanSetting.DONT_SHOW_DRIVER_SHADER_WARNING.setBoolean(true)
|
||||||
|
NativeConfig.saveGlobalConfig()
|
||||||
|
}
|
||||||
|
_shouldShowDriverShaderDialog.value = false
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun wipeAllShaders() {
|
||||||
|
viewModelScope.launch {
|
||||||
|
withContext(Dispatchers.IO) {
|
||||||
|
val shaderDir = File(
|
||||||
|
YuzuApplication.appContext.getExternalFilesDir(null)?.canonicalPath +
|
||||||
|
"/shader/"
|
||||||
|
)
|
||||||
|
if (shaderDir.exists()) {
|
||||||
|
shaderDir.deleteRecursively()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun onDriverRemoved(removedPosition: Int, selectedPosition: Int) {
|
fun onDriverRemoved(removedPosition: Int, selectedPosition: Int) {
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
package org.yuzu.yuzu_emu.ui.main
|
package org.yuzu.yuzu_emu.ui.main
|
||||||
|
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
|
import android.content.Context
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.View
|
import android.view.View
|
||||||
@@ -53,6 +54,7 @@ import org.yuzu.yuzu_emu.activities.EmulationActivity
|
|||||||
import kotlin.text.compareTo
|
import kotlin.text.compareTo
|
||||||
import androidx.core.net.toUri
|
import androidx.core.net.toUri
|
||||||
import org.yuzu.yuzu_emu.features.settings.model.BooleanSetting
|
import org.yuzu.yuzu_emu.features.settings.model.BooleanSetting
|
||||||
|
import org.yuzu.yuzu_emu.YuzuApplication
|
||||||
|
|
||||||
class MainActivity : AppCompatActivity(), ThemeProvider {
|
class MainActivity : AppCompatActivity(), ThemeProvider {
|
||||||
private lateinit var binding: ActivityMainBinding
|
private lateinit var binding: ActivityMainBinding
|
||||||
@@ -68,6 +70,10 @@ class MainActivity : AppCompatActivity(), ThemeProvider {
|
|||||||
private val CHECKED_DECRYPTION = "CheckedDecryption"
|
private val CHECKED_DECRYPTION = "CheckedDecryption"
|
||||||
private var checkedDecryption = false
|
private var checkedDecryption = false
|
||||||
|
|
||||||
|
override fun attachBaseContext(base: Context) {
|
||||||
|
super.attachBaseContext(YuzuApplication.applyLanguage(base))
|
||||||
|
}
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
val splashScreen = installSplashScreen()
|
val splashScreen = installSplashScreen()
|
||||||
splashScreen.setKeepOnScreenCondition { !DirectoryInitialization.areDirectoriesReady }
|
splashScreen.setKeepOnScreenCondition { !DirectoryInitialization.areDirectoriesReady }
|
||||||
|
|||||||
@@ -1,7 +1,11 @@
|
|||||||
|
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||||
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
// SPDX-FileCopyrightText: 2023 yuzu Emulator Project
|
// SPDX-FileCopyrightText: 2023 yuzu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
package org.yuzu.yuzu_emu.utils
|
package org.yuzu.yuzu_emu.utils
|
||||||
|
import org.yuzu.yuzu_emu.NativeLibrary
|
||||||
|
|
||||||
import android.os.Build
|
import android.os.Build
|
||||||
|
|
||||||
@@ -25,6 +29,15 @@ object Log {
|
|||||||
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.R) {
|
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.R) {
|
||||||
info("SoC Manufacturer - ${Build.SOC_MANUFACTURER}")
|
info("SoC Manufacturer - ${Build.SOC_MANUFACTURER}")
|
||||||
info("SoC Model - ${Build.SOC_MODEL}")
|
info("SoC Model - ${Build.SOC_MODEL}")
|
||||||
|
NativeLibrary.getCpuSummary().split('\n').forEach {
|
||||||
|
info("CPU Info - $it")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
NativeLibrary.getVulkanDriverVersion().split('\n').forEach {
|
||||||
|
info("Vulkan Driver: - $it")
|
||||||
|
}
|
||||||
|
NativeLibrary.getVulkanApiVersion().split('\n').forEach {
|
||||||
|
info("Vulkan API Version: - $it")
|
||||||
}
|
}
|
||||||
info("Total System Memory - ${MemoryUtil.getDeviceRAM()}")
|
info("Total System Memory - ${MemoryUtil.getDeviceRAM()}")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -62,6 +62,7 @@ namespace AndroidSettings {
|
|||||||
Settings::Setting<s32> theme_mode{linkage, -1, "theme_mode", Settings::Category::Android};
|
Settings::Setting<s32> theme_mode{linkage, -1, "theme_mode", Settings::Category::Android};
|
||||||
Settings::Setting<bool> black_backgrounds{linkage, false, "black_backgrounds",
|
Settings::Setting<bool> black_backgrounds{linkage, false, "black_backgrounds",
|
||||||
Settings::Category::Android};
|
Settings::Category::Android};
|
||||||
|
Settings::Setting<s32> app_language{linkage, 0, "app_language", Settings::Category::Android};
|
||||||
Settings::Setting<bool> enable_update_checks{linkage, true, "enable_update_checks",
|
Settings::Setting<bool> enable_update_checks{linkage, true, "enable_update_checks",
|
||||||
Settings::Category::Android};
|
Settings::Category::Android};
|
||||||
|
|
||||||
@@ -181,9 +182,9 @@ namespace AndroidSettings {
|
|||||||
Settings::Specialization::Default, true, true,
|
Settings::Specialization::Default, true, true,
|
||||||
&show_soc_overlay};
|
&show_soc_overlay};
|
||||||
|
|
||||||
Settings::Setting<bool> dont_show_eden_veil_warning{linkage, false,
|
Settings::Setting<bool> dont_show_driver_shader_warning{linkage, false,
|
||||||
"dont_show_eden_veil_warning",
|
"dont_show_driver_shader_warning",
|
||||||
Settings::Category::Miscellaneous};
|
Settings::Category::Android, Settings::Specialization::Default, true, true};
|
||||||
};
|
};
|
||||||
|
|
||||||
extern Values values;
|
extern Values values;
|
||||||
|
|||||||
@@ -4,15 +4,25 @@
|
|||||||
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
#define VMA_IMPLEMENTATION
|
||||||
|
#include "video_core/vulkan_common/vma.h"
|
||||||
|
|
||||||
#include <codecvt>
|
#include <codecvt>
|
||||||
|
#include <cstdio>
|
||||||
|
#include <cstring>
|
||||||
#include <locale>
|
#include <locale>
|
||||||
|
#include <map>
|
||||||
|
#include <set>
|
||||||
|
#include <sstream>
|
||||||
#include <span>
|
#include <span>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <string_view>
|
#include <string_view>
|
||||||
|
#include <thread>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <dlfcn.h>
|
#include <dlfcn.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
#ifdef ARCHITECTURE_arm64
|
#ifdef ARCHITECTURE_arm64
|
||||||
#include <adrenotools/driver.h>
|
#include <adrenotools/driver.h>
|
||||||
#endif
|
#endif
|
||||||
@@ -463,6 +473,205 @@ static Core::SystemResultStatus RunEmulation(const std::string& filepath,
|
|||||||
return Core::SystemResultStatus::Success;
|
return Core::SystemResultStatus::Success;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
|
||||||
|
struct CpuPartInfo {
|
||||||
|
u32 vendor;
|
||||||
|
u32 part;
|
||||||
|
const char* name;
|
||||||
|
};
|
||||||
|
|
||||||
|
constexpr CpuPartInfo s_cpu_list[] = {
|
||||||
|
// ARM - 0x41
|
||||||
|
{0x41, 0xd01, "Cortex-A32"},
|
||||||
|
{0x41, 0xd02, "Cortex-A34"},
|
||||||
|
{0x41, 0xd04, "Cortex-A35"},
|
||||||
|
{0x41, 0xd03, "Cortex-A53"},
|
||||||
|
{0x41, 0xd05, "Cortex-A55"},
|
||||||
|
{0x41, 0xd46, "Cortex-A510"},
|
||||||
|
{0x41, 0xd80, "Cortex-A520"},
|
||||||
|
{0x41, 0xd88, "Cortex-A520AE"},
|
||||||
|
{0x41, 0xd07, "Cortex-A57"},
|
||||||
|
{0x41, 0xd06, "Cortex-A65"},
|
||||||
|
{0x41, 0xd43, "Cortex-A65AE"},
|
||||||
|
{0x41, 0xd08, "Cortex-A72"},
|
||||||
|
{0x41, 0xd09, "Cortex-A73"},
|
||||||
|
{0x41, 0xd0a, "Cortex-A75"},
|
||||||
|
{0x41, 0xd0b, "Cortex-A76"},
|
||||||
|
{0x41, 0xd0e, "Cortex-A76AE"},
|
||||||
|
{0x41, 0xd0d, "Cortex-A77"},
|
||||||
|
{0x41, 0xd41, "Cortex-A78"},
|
||||||
|
{0x41, 0xd42, "Cortex-A78AE"},
|
||||||
|
{0x41, 0xd4b, "Cortex-A78C"},
|
||||||
|
{0x41, 0xd47, "Cortex-A710"},
|
||||||
|
{0x41, 0xd4d, "Cortex-A715"},
|
||||||
|
{0x41, 0xd81, "Cortex-A720"},
|
||||||
|
{0x41, 0xd89, "Cortex-A720AE"},
|
||||||
|
{0x41, 0xd87, "Cortex-A725"},
|
||||||
|
{0x41, 0xd44, "Cortex-X1"},
|
||||||
|
{0x41, 0xd4c, "Cortex-X1C"},
|
||||||
|
{0x41, 0xd48, "Cortex-X2"},
|
||||||
|
{0x41, 0xd4e, "Cortex-X3"},
|
||||||
|
{0x41, 0xd82, "Cortex-X4"},
|
||||||
|
{0x41, 0xd85, "Cortex-X925"},
|
||||||
|
{0x41, 0xd4a, "Neoverse E1"},
|
||||||
|
{0x41, 0xd0c, "Neoverse N1"},
|
||||||
|
{0x41, 0xd49, "Neoverse N2"},
|
||||||
|
{0x41, 0xd8e, "Neoverse N3"},
|
||||||
|
{0x41, 0xd40, "Neoverse V1"},
|
||||||
|
{0x41, 0xd4f, "Neoverse V2"},
|
||||||
|
{0x41, 0xd84, "Neoverse V3"},
|
||||||
|
{0x41, 0xd83, "Neoverse V3AE"},
|
||||||
|
// Qualcomm - 0x51
|
||||||
|
{0x51, 0x201, "Kryo"},
|
||||||
|
{0x51, 0x205, "Kryo"},
|
||||||
|
{0x51, 0x211, "Kryo"},
|
||||||
|
{0x51, 0x800, "Kryo 385 Gold"},
|
||||||
|
{0x51, 0x801, "Kryo 385 Silver"},
|
||||||
|
{0x51, 0x802, "Kryo 485 Gold"},
|
||||||
|
{0x51, 0x803, "Kryo 485 Silver"},
|
||||||
|
{0x51, 0x804, "Kryo 680 Prime"},
|
||||||
|
{0x51, 0x805, "Kryo 680 Gold"},
|
||||||
|
{0x51, 0x06f, "Krait"},
|
||||||
|
{0x51, 0xc00, "Falkor"},
|
||||||
|
{0x51, 0xc01, "Saphira"},
|
||||||
|
{0x51, 0x001, "Oryon"},
|
||||||
|
};
|
||||||
|
|
||||||
|
const char* find_cpu_name(u32 vendor, u32 part) {
|
||||||
|
for (const auto& cpu : s_cpu_list) {
|
||||||
|
if (cpu.vendor == vendor && cpu.part == part) {
|
||||||
|
return cpu.name;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
u64 read_midr_sysfs(u32 cpu_id) {
|
||||||
|
char path[128];
|
||||||
|
std::snprintf(path, sizeof(path), "/sys/devices/system/cpu/cpu%u/regs/identification/midr_el1", cpu_id);
|
||||||
|
|
||||||
|
FILE* f = std::fopen(path, "r");
|
||||||
|
if (!f) return 0;
|
||||||
|
|
||||||
|
char value[32];
|
||||||
|
if (!std::fgets(value, sizeof(value), f)) {
|
||||||
|
std::fclose(f);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
std::fclose(f);
|
||||||
|
|
||||||
|
return std::strtoull(value, nullptr, 16);
|
||||||
|
}
|
||||||
|
|
||||||
|
std::pair<u32, std::string> get_pretty_cpus() {
|
||||||
|
std::map<u64, int> core_layout;
|
||||||
|
u32 valid_cpus = 0;
|
||||||
|
for (u32 i = 0; i < std::thread::hardware_concurrency(); ++i) {
|
||||||
|
const auto midr = read_midr_sysfs(i);
|
||||||
|
if (midr == 0) break;
|
||||||
|
|
||||||
|
valid_cpus++;
|
||||||
|
core_layout[midr]++;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string cpus;
|
||||||
|
|
||||||
|
if (!core_layout.empty()) {
|
||||||
|
const CpuPartInfo* lowest_part = nullptr;
|
||||||
|
u32 lowest_part_id = 0xFFFFFFFF;
|
||||||
|
|
||||||
|
for (const auto& [midr, count] : core_layout) {
|
||||||
|
const auto vendor = (midr >> 24) & 0xff;
|
||||||
|
const auto part = (midr >> 4) & 0xfff;
|
||||||
|
|
||||||
|
if (!cpus.empty()) cpus += " + ";
|
||||||
|
cpus += fmt::format("{}x {}", count, find_cpu_name(vendor, part));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return {valid_cpus, cpus};
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string get_arm_cpu_name() {
|
||||||
|
std::map<u64, int> core_layout;
|
||||||
|
for (u32 i = 0; i < std::thread::hardware_concurrency(); ++i) {
|
||||||
|
const auto midr = read_midr_sysfs(i);
|
||||||
|
if (midr == 0) break;
|
||||||
|
|
||||||
|
core_layout[midr]++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!core_layout.empty()) {
|
||||||
|
const CpuPartInfo* lowest_part = nullptr;
|
||||||
|
u32 lowest_part_id = 0xFFFFFFFF;
|
||||||
|
|
||||||
|
for (const auto& [midr, count] : core_layout) {
|
||||||
|
const auto vendor = (midr >> 24) & 0xff;
|
||||||
|
const auto part = (midr >> 4) & 0xfff;
|
||||||
|
|
||||||
|
for (const auto& cpu : s_cpu_list) {
|
||||||
|
if (cpu.vendor == vendor && cpu.part == part) {
|
||||||
|
if (cpu.part < lowest_part_id) {
|
||||||
|
lowest_part_id = cpu.part;
|
||||||
|
lowest_part = &cpu;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (lowest_part) {
|
||||||
|
return lowest_part->name;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
FILE* f = std::fopen("/proc/cpuinfo", "r");
|
||||||
|
if (!f) return "";
|
||||||
|
|
||||||
|
char buf[512];
|
||||||
|
std::string result;
|
||||||
|
|
||||||
|
auto trim = [](std::string& s) {
|
||||||
|
const auto start = s.find_first_not_of(" \t\r\n");
|
||||||
|
const auto end = s.find_last_not_of(" \t\r\n");
|
||||||
|
s = (start == std::string::npos) ? "" : s.substr(start, end - start + 1);
|
||||||
|
};
|
||||||
|
|
||||||
|
while (std::fgets(buf, sizeof(buf), f)) {
|
||||||
|
std::string line(buf);
|
||||||
|
if (line.find("Hardware") == 0) {
|
||||||
|
auto pos = line.find(':');
|
||||||
|
if (pos != std::string::npos) {
|
||||||
|
result = line.substr(pos + 1);
|
||||||
|
trim(result);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
std::fclose(f);
|
||||||
|
|
||||||
|
if (!result.empty()) {
|
||||||
|
std::transform(result.begin(), result.end(), result.begin(), ::tolower);
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
const char* fallback_cpu_detection() {
|
||||||
|
static std::string s_result = []() -> std::string {
|
||||||
|
std::string result = get_arm_cpu_name();
|
||||||
|
if (result.empty()) {
|
||||||
|
return "Cortex-A34";
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}();
|
||||||
|
|
||||||
|
return s_result.c_str();
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace
|
||||||
|
|
||||||
extern "C" {
|
extern "C" {
|
||||||
|
|
||||||
void Java_org_yuzu_yuzu_1emu_NativeLibrary_surfaceChanged(JNIEnv* env, jobject instance,
|
void Java_org_yuzu_yuzu_1emu_NativeLibrary_surfaceChanged(JNIEnv* env, jobject instance,
|
||||||
@@ -555,6 +764,7 @@ jboolean JNICALL Java_org_yuzu_yuzu_1emu_utils_GpuDriverHelper_supportsCustomDri
|
|||||||
|
|
||||||
jobjectArray Java_org_yuzu_yuzu_1emu_utils_GpuDriverHelper_getSystemDriverInfo(
|
jobjectArray Java_org_yuzu_yuzu_1emu_utils_GpuDriverHelper_getSystemDriverInfo(
|
||||||
JNIEnv* env, jobject j_obj, jobject j_surf, jstring j_hook_lib_dir) {
|
JNIEnv* env, jobject j_obj, jobject j_surf, jstring j_hook_lib_dir) {
|
||||||
|
#ifdef ARCHITECTURE_arm64
|
||||||
const char* file_redirect_dir_{};
|
const char* file_redirect_dir_{};
|
||||||
int featureFlags{};
|
int featureFlags{};
|
||||||
std::string hook_lib_dir = Common::Android::GetJString(env, j_hook_lib_dir);
|
std::string hook_lib_dir = Common::Android::GetJString(env, j_hook_lib_dir);
|
||||||
@@ -577,15 +787,19 @@ jobjectArray Java_org_yuzu_yuzu_1emu_utils_GpuDriverHelper_getSystemDriverInfo(
|
|||||||
auto version_string =
|
auto version_string =
|
||||||
fmt::format("{}.{}.{}", VK_API_VERSION_MAJOR(driver_version),
|
fmt::format("{}.{}.{}", VK_API_VERSION_MAJOR(driver_version),
|
||||||
VK_API_VERSION_MINOR(driver_version), VK_API_VERSION_PATCH(driver_version));
|
VK_API_VERSION_MINOR(driver_version), VK_API_VERSION_PATCH(driver_version));
|
||||||
|
auto driver_name = device.GetDriverName();
|
||||||
jobjectArray j_driver_info = env->NewObjectArray(
|
#else
|
||||||
2, Common::Android::GetStringClass(), Common::Android::ToJString(env, version_string));
|
auto driver_version = "1.0.0";
|
||||||
env->SetObjectArrayElement(j_driver_info, 1,
|
auto version_string = "1.1.0"; //Assume lowest Vulkan level
|
||||||
Common::Android::ToJString(env, device.GetDriverName()));
|
auto driver_name = "generic";
|
||||||
|
#endif
|
||||||
|
jobjectArray j_driver_info = env->NewObjectArray(2, Common::Android::GetStringClass(), Common::Android::ToJString(env, version_string));
|
||||||
|
env->SetObjectArrayElement(j_driver_info, 1, Common::Android::ToJString(env, driver_name));
|
||||||
return j_driver_info;
|
return j_driver_info;
|
||||||
}
|
}
|
||||||
|
|
||||||
jstring Java_org_yuzu_yuzu_1emu_utils_GpuDriverHelper_getGpuModel(JNIEnv *env, jobject j_obj, jobject j_surf, jstring j_hook_lib_dir) {
|
jstring Java_org_yuzu_yuzu_1emu_utils_GpuDriverHelper_getGpuModel(JNIEnv *env, jobject j_obj, jobject j_surf, jstring j_hook_lib_dir) {
|
||||||
|
#ifdef ARCHITECTURE_arm64
|
||||||
const char* file_redirect_dir_{};
|
const char* file_redirect_dir_{};
|
||||||
int featureFlags{};
|
int featureFlags{};
|
||||||
std::string hook_lib_dir = Common::Android::GetJString(env, j_hook_lib_dir);
|
std::string hook_lib_dir = Common::Android::GetJString(env, j_hook_lib_dir);
|
||||||
@@ -609,6 +823,9 @@ jstring Java_org_yuzu_yuzu_1emu_utils_GpuDriverHelper_getGpuModel(JNIEnv *env, j
|
|||||||
window.release();
|
window.release();
|
||||||
|
|
||||||
return Common::Android::ToJString(env, model_name);
|
return Common::Android::ToJString(env, model_name);
|
||||||
|
#else
|
||||||
|
return Common::Android::ToJString(env, "no-info");
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
jboolean Java_org_yuzu_yuzu_1emu_NativeLibrary_reloadKeys(JNIEnv* env, jclass clazz) {
|
jboolean Java_org_yuzu_yuzu_1emu_NativeLibrary_reloadKeys(JNIEnv* env, jclass clazz) {
|
||||||
@@ -684,6 +901,209 @@ jstring Java_org_yuzu_yuzu_1emu_NativeLibrary_getGpuDriver(JNIEnv* env, jobject
|
|||||||
env, EmulationSession::GetInstance().System().GPU().Renderer().GetDeviceVendor());
|
env, EmulationSession::GetInstance().System().GPU().Renderer().GetDeviceVendor());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
jstring Java_org_yuzu_yuzu_1emu_NativeLibrary_getCpuSummary(JNIEnv* env, jobject /*jobj*/) {
|
||||||
|
get_arm_cpu_name();
|
||||||
|
constexpr const char* CPUINFO_PATH = "/proc/cpuinfo";
|
||||||
|
|
||||||
|
auto trim = [](std::string& s) {
|
||||||
|
const auto start = s.find_first_not_of(" \t\r\n");
|
||||||
|
const auto end = s.find_last_not_of(" \t\r\n");
|
||||||
|
s = (start == std::string::npos) ? "" : s.substr(start, end - start + 1);
|
||||||
|
};
|
||||||
|
|
||||||
|
auto to_lower = [](std::string s) {
|
||||||
|
for (auto& c : s) c = std::tolower(c);
|
||||||
|
return s;
|
||||||
|
};
|
||||||
|
|
||||||
|
try {
|
||||||
|
std::string result;
|
||||||
|
std::pair<u32, std::string> pretty_cpus = get_pretty_cpus();
|
||||||
|
u32 threads = pretty_cpus.first;
|
||||||
|
std::string cpus = pretty_cpus.second;
|
||||||
|
|
||||||
|
fmt::format_to(std::back_inserter(result), "CPUs: {}\n{} Threads",
|
||||||
|
cpus, threads);
|
||||||
|
|
||||||
|
FILE* f = std::fopen(CPUINFO_PATH, "r");
|
||||||
|
if (!f) return Common::Android::ToJString(env, result);
|
||||||
|
|
||||||
|
char buf[512];
|
||||||
|
|
||||||
|
if (f) {
|
||||||
|
std::set<std::string> feature_set;
|
||||||
|
while (std::fgets(buf, sizeof(buf), f)) {
|
||||||
|
std::string line(buf);
|
||||||
|
if (line.find("Features") == 0 || line.find("features") == 0) {
|
||||||
|
auto pos = line.find(':');
|
||||||
|
if (pos != std::string::npos) {
|
||||||
|
std::string feat_line = line.substr(pos + 1);
|
||||||
|
trim(feat_line);
|
||||||
|
|
||||||
|
std::istringstream iss(feat_line);
|
||||||
|
std::string feature;
|
||||||
|
while (iss >> feature) {
|
||||||
|
feature_set.insert(to_lower(feature));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
std::fclose(f);
|
||||||
|
|
||||||
|
bool has_neon = feature_set.count("neon") || feature_set.count("asimd");
|
||||||
|
bool has_fp = feature_set.count("fp") || feature_set.count("vfp");
|
||||||
|
bool has_sve = feature_set.count("sve");
|
||||||
|
bool has_sve2 = feature_set.count("sve2");
|
||||||
|
bool has_crypto = feature_set.count("aes") || feature_set.count("sha1") ||
|
||||||
|
feature_set.count("sha2") || feature_set.count("pmull");
|
||||||
|
bool has_dotprod = feature_set.count("asimddp") || feature_set.count("dotprod");
|
||||||
|
bool has_i8mm = feature_set.count("i8mm");
|
||||||
|
bool has_bf16 = feature_set.count("bf16");
|
||||||
|
bool has_atomics = feature_set.count("atomics") || feature_set.count("lse");
|
||||||
|
|
||||||
|
std::string features;
|
||||||
|
if (has_neon || has_fp) {
|
||||||
|
features += "NEON";
|
||||||
|
if (has_dotprod) features += "+DP";
|
||||||
|
if (has_i8mm) features += "+I8MM";
|
||||||
|
if (has_bf16) features += "+BF16";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (has_sve) {
|
||||||
|
if (!features.empty()) features += " | ";
|
||||||
|
features += "SVE";
|
||||||
|
if (has_sve2) features += "2";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (has_crypto) {
|
||||||
|
if (!features.empty()) features += " | ";
|
||||||
|
features += "Crypto";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (has_atomics) {
|
||||||
|
if (!features.empty()) features += " | ";
|
||||||
|
features += "LSE";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!features.empty()) {
|
||||||
|
result += "\nFeatures: " + features;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt::format_to(std::back_inserter(result), "\nLLVM CPU: {}", fallback_cpu_detection());
|
||||||
|
|
||||||
|
return Common::Android::ToJString(env, result);
|
||||||
|
} catch (...) {
|
||||||
|
return Common::Android::ToJString(env, "Unknown");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
constexpr u32 VENDOR_QUALCOMM = 0x5143;
|
||||||
|
constexpr u32 VENDOR_ARM = 0x13B5;
|
||||||
|
|
||||||
|
VkPhysicalDeviceProperties GetVulkanDeviceProperties() {
|
||||||
|
Common::DynamicLibrary library;
|
||||||
|
if (!library.Open("libvulkan.so")) {
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
|
||||||
|
Vulkan::vk::InstanceDispatch dld;
|
||||||
|
// TODO: warn the user that Vulkan is unavailable rather than hard crash
|
||||||
|
const auto instance = Vulkan::CreateInstance(library, dld, VK_API_VERSION_1_1);
|
||||||
|
const auto physical_devices = instance.EnumeratePhysicalDevices();
|
||||||
|
if (physical_devices.empty()) {
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
|
||||||
|
const Vulkan::vk::PhysicalDevice physical_device(physical_devices[0], dld);
|
||||||
|
return physical_device.GetProperties();
|
||||||
|
}
|
||||||
|
} // namespace
|
||||||
|
|
||||||
|
jstring Java_org_yuzu_yuzu_1emu_NativeLibrary_getVulkanDriverVersion(JNIEnv* env, jobject jobj) {
|
||||||
|
try {
|
||||||
|
const auto props = GetVulkanDeviceProperties();
|
||||||
|
if (props.deviceID == 0) {
|
||||||
|
return Common::Android::ToJString(env, "N/A");
|
||||||
|
}
|
||||||
|
|
||||||
|
const u32 driver_version = props.driverVersion;
|
||||||
|
const u32 vendor_id = props.vendorID;
|
||||||
|
|
||||||
|
if (driver_version == 0) {
|
||||||
|
return Common::Android::ToJString(env, "N/A");
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string version_str;
|
||||||
|
|
||||||
|
if (vendor_id == VENDOR_QUALCOMM) {
|
||||||
|
const u32 major = (driver_version >> 24) << 2;
|
||||||
|
const u32 minor = (driver_version >> 12) & 0xFFF;
|
||||||
|
const u32 patch = driver_version & 0xFFF;
|
||||||
|
version_str = fmt::format("{}.{}.{}", major, minor, patch);
|
||||||
|
}
|
||||||
|
else if (vendor_id == VENDOR_ARM) {
|
||||||
|
u32 major = VK_API_VERSION_MAJOR(driver_version);
|
||||||
|
u32 minor = VK_API_VERSION_MINOR(driver_version);
|
||||||
|
u32 patch = VK_API_VERSION_PATCH(driver_version);
|
||||||
|
|
||||||
|
// ARM custom encoding for newer drivers
|
||||||
|
if (major > 10) {
|
||||||
|
major = (driver_version >> 22) & 0x3FF;
|
||||||
|
minor = (driver_version >> 12) & 0x3FF;
|
||||||
|
patch = driver_version & 0xFFF;
|
||||||
|
}
|
||||||
|
version_str = fmt::format("{}.{}.{}", major, minor, patch);
|
||||||
|
}
|
||||||
|
// Standard Vulkan version encoding for other vendors
|
||||||
|
else {
|
||||||
|
const u32 major = VK_API_VERSION_MAJOR(driver_version);
|
||||||
|
const u32 minor = VK_API_VERSION_MINOR(driver_version);
|
||||||
|
const u32 patch = VK_API_VERSION_PATCH(driver_version);
|
||||||
|
version_str = fmt::format("{}.{}.{}", major, minor, patch);
|
||||||
|
}
|
||||||
|
|
||||||
|
return Common::Android::ToJString(env, version_str);
|
||||||
|
} catch (...) {
|
||||||
|
return Common::Android::ToJString(env, "N/A");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
jstring Java_org_yuzu_yuzu_1emu_NativeLibrary_getVulkanApiVersion(JNIEnv* env, jobject jobj) {
|
||||||
|
try {
|
||||||
|
const auto props = GetVulkanDeviceProperties();
|
||||||
|
if (props.deviceID == 0) {
|
||||||
|
return Common::Android::ToJString(env, "N/A");
|
||||||
|
}
|
||||||
|
|
||||||
|
const u32 api_version = props.apiVersion;
|
||||||
|
const u32 major = VK_API_VERSION_MAJOR(api_version);
|
||||||
|
const u32 minor = VK_API_VERSION_MINOR(api_version);
|
||||||
|
const u32 patch = VK_API_VERSION_PATCH(api_version);
|
||||||
|
const u32 variant = VK_API_VERSION_VARIANT(api_version);
|
||||||
|
|
||||||
|
// Include variant if non-zero (rare on Android)
|
||||||
|
const std::string version_str = variant > 0
|
||||||
|
? fmt::format("{}.{}.{}.{}", variant, major, minor, patch)
|
||||||
|
: fmt::format("{}.{}.{}", major, minor, patch);
|
||||||
|
|
||||||
|
return Common::Android::ToJString(env, version_str);
|
||||||
|
} catch (...) {
|
||||||
|
return Common::Android::ToJString(env, "N/A");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
jstring Java_org_yuzu_yuzu_1emu_NativeLibrary_getGpuModel(JNIEnv* env, jobject jobj) {
|
||||||
|
const auto props = GetVulkanDeviceProperties();
|
||||||
|
if (props.deviceID == 0) {
|
||||||
|
return Common::Android::ToJString(env, "Unknown");
|
||||||
|
}
|
||||||
|
|
||||||
|
return Common::Android::ToJString(env, props.deviceName);
|
||||||
|
}
|
||||||
|
|
||||||
void Java_org_yuzu_yuzu_1emu_NativeLibrary_applySettings(JNIEnv* env, jobject jobj) {
|
void Java_org_yuzu_yuzu_1emu_NativeLibrary_applySettings(JNIEnv* env, jobject jobj) {
|
||||||
EmulationSession::GetInstance().System().ApplySettings();
|
EmulationSession::GetInstance().System().ApplySettings();
|
||||||
EmulationSession::GetInstance().System().HIDCore().ReloadInputDevices();
|
EmulationSession::GetInstance().System().HIDCore().ReloadInputDevices();
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 74 KiB After Width: | Height: | Size: 65 KiB |
@@ -0,0 +1,35 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:padding="16dp">
|
||||||
|
|
||||||
|
<com.google.android.material.card.MaterialCardView
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginBottom="8dp"
|
||||||
|
app:cardElevation="0dp"
|
||||||
|
app:cardBackgroundColor="?attr/colorSurfaceVariant">
|
||||||
|
|
||||||
|
<ScrollView
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:maxHeight="400dp"
|
||||||
|
android:padding="12dp">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/text_system_info"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:fontFamily="monospace"
|
||||||
|
android:textAppearance="?attr/textAppearanceBodySmall"
|
||||||
|
android:textColor="?attr/colorOnSurfaceVariant"
|
||||||
|
android:textIsSelectable="true" />
|
||||||
|
|
||||||
|
</ScrollView>
|
||||||
|
|
||||||
|
</com.google.android.material.card.MaterialCardView>
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
@@ -1,12 +1,12 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation">
|
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation">
|
||||||
|
|
||||||
<string name="app_disclaimer">سيشغل هذا البرنامج ألعابًا لأجهزة الألعاب نينتندو سويتش. لا يتضمن البرنامج أي ألعاب أو مفاتيح.<br /><br />قبل أن تبدأ، يرجى تحديد موقع <![CDATA[<b> prod.keys </b>]]> ملف على وحدة تخزين جهازك.<br /><br /><![CDATA[<a href=\"https://yuzu-mirror.github.io/help/quickstart\">اعرف المزيد</a>]]></string>
|
<string name="app_disclaimer">سيشغل هذا البرنامج ألعابًا لأجهزة الألعاب Nintendo Switch. لا يتضمن البرنامج أي ألعاب أو مفاتيح.<br /><br />قبل أن تبدأ، يرجى تحديد موقع <![CDATA[<b> prod.keys </b>]]> ملف على وحدة تخزين جهازك.<br /><br /><![CDATA[<a href=\"https://yuzu-mirror.github.io/help/quickstart\">اعرف المزيد</a>]]></string>
|
||||||
<string name="notice_notification_channel_name">الإشعارات والأخطاء</string>
|
<string name="notice_notification_channel_name">الإشعارات والأخطاء</string>
|
||||||
<string name="notice_notification_channel_description">عرض الإشعارات عند حدوث خطأ ما.</string>
|
<string name="notice_notification_channel_description">عرض الإشعارات عند حدوث خطأ ما.</string>
|
||||||
<string name="notification_permission_not_granted">لم يتم منح إذن الإشعار!</string>
|
<string name="notification_permission_not_granted">لم يتم منح إذن الإشعار!</string>
|
||||||
<string name="app_notification_channel_description">إشعارات محاكي عدن سويتش</string>
|
<string name="app_notification_channel_description">إشعارات محاكي Eden Switch</string>
|
||||||
<string name="app_notification_running">عدن قيد التشغيل</string>
|
<string name="app_notification_running">Eden قيد التشغيل</string>
|
||||||
<string name="seconds">ثواني</string>
|
<string name="seconds">ثواني</string>
|
||||||
|
|
||||||
<!-- Spinbox strings -->
|
<!-- Spinbox strings -->
|
||||||
@@ -27,17 +27,17 @@
|
|||||||
|
|
||||||
|
|
||||||
<!-- Stats Overlay settings -->
|
<!-- Stats Overlay settings -->
|
||||||
<string name="enhanced_fps_suffix">(مُحسَّن)</string>
|
<string name="enhanced_fps_suffix">(Enhanced)</string>
|
||||||
<string name="process_ram">Process RAM: %1$d MB</string>
|
<string name="process_ram">Process RAM: %1$d MB</string>
|
||||||
<string name="shaders_prefix">بناء</string>
|
<string name="shaders_prefix">بناء</string>
|
||||||
<string name="shaders_suffix">شادر(شادرات)</string>
|
<string name="shaders_suffix">تظليل(ات)</string>
|
||||||
<string name="charging">(يشحن)</string>
|
<string name="charging">(يشحن)</string>
|
||||||
|
|
||||||
<string name="system_info_label">النظام:</string>
|
<string name="system_info_label">النظام:</string>
|
||||||
<string name="show_stats_overlay">عرض إحصائيات الأداء</string>
|
<string name="show_stats_overlay">عرض تراكب إحصائيات الأداء</string>
|
||||||
<string name="stats_overlay_customization">تخصيص</string>
|
<string name="stats_overlay_customization">التخصيص</string>
|
||||||
<string name="stats_overlay_items">الرؤية</string>
|
<string name="stats_overlay_items">الرؤية</string>
|
||||||
<string name="stats_overlay_options">العرض</string>
|
<string name="stats_overlay_options">تراكب الأداء</string>
|
||||||
<string name="enable_stats_overlay_">تمكين تراكب إحصائيات الأداء</string>
|
<string name="enable_stats_overlay_">تمكين تراكب إحصائيات الأداء</string>
|
||||||
<string name="stats_overlay_options_description">قم بتكوين المعلومات التي يتم عرضها في تراكب إحصائيات الأداء</string>
|
<string name="stats_overlay_options_description">قم بتكوين المعلومات التي يتم عرضها في تراكب إحصائيات الأداء</string>
|
||||||
<string name="show_fps">عرض معدل الإطارات</string>
|
<string name="show_fps">عرض معدل الإطارات</string>
|
||||||
@@ -50,53 +50,53 @@
|
|||||||
<string name="show_system_ram_usage_description">عرض كمية ذاكرة الوصول العشوائي المستخدمة من قبل النظام</string>
|
<string name="show_system_ram_usage_description">عرض كمية ذاكرة الوصول العشوائي المستخدمة من قبل النظام</string>
|
||||||
<string name="show_bat_temperature">عرض درجة حرارة البطارية</string>
|
<string name="show_bat_temperature">عرض درجة حرارة البطارية</string>
|
||||||
<string name="show_bat_temperature_description">عرض درجة حرارة البطارية الحالية</string>
|
<string name="show_bat_temperature_description">عرض درجة حرارة البطارية الحالية</string>
|
||||||
<string name="bat_temperature_unit">وحدات درجة حرارة البطارية</string>
|
<string name="bat_temperature_unit">وحدات قياس درجة حرارة البطارية</string>
|
||||||
<string name="show_power_info">عرض معلومات البطارية</string>
|
<string name="show_power_info">عرض معلومات البطارية</string>
|
||||||
<string name="show_power_info_description">عرض استهلاك الطاقة الحالي والسعة المتبقية في البطارية</string>
|
<string name="show_power_info_description">عرض استهلاك الطاقة الحالي والسعة المتبقية في البطارية</string>
|
||||||
<string name="show_shaders_building">عرض بناء الشادرات</string>
|
<string name="show_shaders_building">عرض بناء التظليل</string>
|
||||||
<string name="show_shaders_building_description">عرض العدد الحالي للشادرات التي يتم بناؤها</string>
|
<string name="show_shaders_building_description">عرض عدد التظليل التي يتم بناؤها</string>
|
||||||
<string name="overlay_position">موضع العرض</string>
|
<string name="overlay_position">موضع التراكب</string>
|
||||||
<string name="overlay_position_description">اختيار مكان عرض الإحصائيات على الشاشة</string>
|
<string name="overlay_position_description">حدد مكان عرض التراكب على الشاشة</string>
|
||||||
<string name="overlay_position_top_left">أعلى اليسار</string>
|
<string name="overlay_position_top_left">أعلى اليمين</string>
|
||||||
<string name="overlay_position_top_right">أعلى اليمين</string>
|
<string name="overlay_position_top_right">أعلى اليسار</string>
|
||||||
<string name="overlay_position_bottom_left">أسفل اليسار</string>
|
<string name="overlay_position_bottom_left">أسفل اليمين</string>
|
||||||
<string name="overlay_position_bottom_right">أسفل اليمين</string>
|
<string name="overlay_position_bottom_right">أسفل اليسار</string>
|
||||||
<string name="overlay_position_center_top">منتصف الأعلى</string>
|
<string name="overlay_position_center_top">منتصف الأعلى</string>
|
||||||
<string name="overlay_position_center_bottom">منتصف الأسفل</string>
|
<string name="overlay_position_center_bottom">منتصف الأسفل</string>
|
||||||
<string name="perf_overlay_background">خلفية العرض</string>
|
<string name="perf_overlay_background">خلفية التراكب</string>
|
||||||
<string name="perf_overlay_background_description">إضافة خلفية لعرض الإحصائيات لسهولة القراءة</string>
|
<string name="perf_overlay_background_description">يضيف خلفية خلف التراكب لتسهيل القراءة</string>
|
||||||
|
|
||||||
<!-- Device Overlay settings -->
|
<!-- Device Overlay settings -->
|
||||||
<string name="show_soc_overlay">عرض تراكب معلومات الجهاز</string>
|
<string name="show_soc_overlay">عرض تراكب معلومات الجهاز</string>
|
||||||
<string name="enable_soc_overlay">تمكين تراكب الجهاز</string>
|
<string name="enable_soc_overlay">تمكين تراكب الجهاز</string>
|
||||||
<string name="soc_overlay_options">تراكب الجهاز</string>
|
<string name="soc_overlay_options">تراكب الجهاز</string>
|
||||||
<string name="soc_overlay_options_description">تكوين المعلومات المعروضة في تراكب الجهاز</string>
|
<string name="soc_overlay_options_description">تكوين المعلومات التي يتم عرضها في تراكب الجهاز</string>
|
||||||
|
|
||||||
<string name="show_device_model">عرض طراز الجهاز</string>
|
<string name="show_device_model">عرض طراز الجهاز</string>
|
||||||
<string name="show_device_model_description">عرض طراز الجهاز المضيف</string>
|
<string name="show_device_model_description">عرض طراز الجهاز المضيف</string>
|
||||||
<string name="show_gpu_model">عرض طراز GPU</string>
|
<string name="show_gpu_model">عرض طراز وحدة معالجة الرسومات</string>
|
||||||
<string name="show_gpu_model_description">عرض طراز GPU المضيف</string>
|
<string name="show_gpu_model_description">عرض طراز وحدة معالجة الرسومات المضيفة</string>
|
||||||
<string name="show_soc_model">عرض طراز SoC</string>
|
<string name="show_soc_model">عرض طراز الرقائق</string>
|
||||||
<string name="show_soc_model_description">عرض طراز SoC المضيف</string>
|
<string name="show_soc_model_description">عرض طراز رقائق المضيف</string>
|
||||||
<string name="show_fw_version">عرض إصدار الفريموير</string>
|
<string name="show_fw_version">عرض إصدار الفيرموير</string>
|
||||||
<string name="show_fw_version_description">عرض إصدار الفريموير</string>
|
<string name="show_fw_version_description">عرض إصدار الفيرموير المثبت</string>
|
||||||
|
|
||||||
<!-- Eden\'s Veil -->
|
<!-- Eden\'s Veil -->
|
||||||
<string name="eden_veil">حجاب عدن</string>
|
<string name="eden_veil">ميزات Eden</string>
|
||||||
<string name="eden_veil_description">إعدادات تجريبية لتحسين الأداء والقدرة. قد تسبب هذه الإعدادات شاشات سوداء أو مشاكل أخرى في اللعبة.</string>
|
<string name="eden_veil_description">إعدادات تجريبية لتحسين الأداء والقدرة. قد تتسبب هذه الإعدادات في ظهور شاشات سوداء أو مشكلات أخرى في اللعبة.</string>
|
||||||
|
|
||||||
<string name="veil_extensions">امتدادات GPU</string>
|
<string name="veil_extensions">ملحقات وحدة معالجة الرسومات</string>
|
||||||
<string name="dyna_state">الحالة الديناميكية الموسعة</string>
|
<string name="dyna_state">الحالة الديناميكية الموسعة</string>
|
||||||
<string name="dyna_state_description">يتحكم في عدد المميزات التي يمكن استخدامها في الحالة الديناميكية الموسعة. الأرقام الأعلى تسمح بميزات أكثر ويمكن أن تعزز الأداء، ولكن قد تسبب مشكلات مع بعض السائقين والبائعين. قد تختلف القيمة الافتراضية بحسب نظامك وقدرات الأجهزة. يمكن تغيير هذه القيمة حتى يتم تحقيق الاستقرار وجودة الصورة الأفضل.</string>
|
<string name="dyna_state_description">يتحكم في عدد المميزات التي يمكن استخدامها في الحالة الديناميكية الموسعة. الأرقام الأعلى تسمح بميزات أكثر ويمكن أن تعزز الأداء، ولكن قد تسبب مشكلات مع بعض السائقين والبائعين. قد تختلف القيمة الافتراضية بحسب نظامك وقدرات الأجهزة. يمكن تغيير هذه القيمة حتى يتم تحقيق الاستقرار وجودة الصورة الأفضل.</string>
|
||||||
<string name="disabled">معطل</string>
|
<string name="disabled">معطل</string>
|
||||||
<string name="provoking_vertex">الرأس المثير</string>
|
<string name="provoking_vertex">الرأس المثير</string>
|
||||||
<string name="provoking_vertex_description">يحسن الإضاءة ومعالجة الرؤوس في بعض الألعاب. مدعوم فقط على وحدات معالجة الرسومات التي تدعم فولكان 1.0+.</string>
|
<string name="provoking_vertex_description">يحسن الإضاءة ومعالجة الرؤوس في بعض الألعاب. مدعوم فقط على وحدات معالجة الرسومات Vulkan 1.0+.</string>
|
||||||
<string name="descriptor_indexing">فهرسة الواصفات</string>
|
<string name="descriptor_indexing">فهرسة الوصف</string>
|
||||||
<string name="descriptor_indexing_description">يحسن معالجة القوام والمخازن المؤقتة، بالإضافة إلى طبقة ترجمة ماكسويل. مدعوم من قبل بعض وحدات معالجة الرسومات التي تدعم فولكان 1.1 وجميع وحدات معالجة الرسومات التي تدعم فولكان 1.2+.</string>
|
<string name="descriptor_indexing_description">يحسن معالجة النسيج والمخزن المؤقت، بالإضافة إلى طبقة الترجمة Maxwell. مدعوم من بعض وحدات معالجة الرسومات Vulkan 1.1 وجميع وحدات معالجة الرسومات Vulkan 1.2+.</string>
|
||||||
<string name="sample_shading">تظليل العينة</string>
|
<string name="sample_shading">تظليل العينة</string>
|
||||||
<string name="sample_shading_description">يسمح لمُظلل الأجزاء بالتنفيذ لكل عينة في جزء متعدد العينات بدلاً من مرة واحدة لكل جزء. يحسن جودة الرسومات على حساب بعض الأداء. تدعم فقط أجهزة Vulkan 1.1+ هذا الامتداد.</string>
|
<string name="sample_shading_description">يُتيح لمُكَوِّن التظليل الجزئي تنفيذ العملية لكل عينة في القسم متعدد العينات بدلاً من تنفيذها مرة واحدة لكل قسم. يُحسّن جودة الرسومات على حساب بعض الأداء. تدعم هذه الإضافة الأجهزة التي تعمل بنظام Vulkan 1.1 وما فوق فقط.</string>
|
||||||
<string name="sample_shading_fraction">كسر التظليل العيني</string>
|
<string name="sample_shading_fraction">نسبة التظليل النموذجية</string>
|
||||||
<string name="sample_shading_fraction_description">شدة تمرير التظليل العيني. القيم الأعلى تحسن الجودة أكثر ولكنها تقلل الأداء بدرجة أكبر.</string>
|
<string name="sample_shading_fraction_description">كثافة تمرير تظليل العينة. تؤدي القيم الأعلى إلى تحسين الجودة بشكل أكبر، ولكنها تقلل أيضًا من الأداء إلى حد كبير.</string>
|
||||||
|
|
||||||
<string name="veil_renderer">العارض</string>
|
<string name="veil_renderer">العارض</string>
|
||||||
<string name="frame_interpolation">تحسين سرعة الإطارات</string>
|
<string name="frame_interpolation">تحسين سرعة الإطارات</string>
|
||||||
@@ -116,22 +116,22 @@
|
|||||||
<string name="use_fast_cpu_time">وقت وحدة المعالجة المركزية السريع</string>
|
<string name="use_fast_cpu_time">وقت وحدة المعالجة المركزية السريع</string>
|
||||||
<string name="use_fast_cpu_time_description">يجبر وحدة المعالجة المركزية المحاكاة على العمل بسرعة أعلى، مما يقلل من بعض محددات معدل الإطارات. هذا الخيار غير مستقر وقد يسبب مشاكل، وقد يرى المستخدمون بأجهزة أضعف انخفاضًا في الأداء.</string>
|
<string name="use_fast_cpu_time_description">يجبر وحدة المعالجة المركزية المحاكاة على العمل بسرعة أعلى، مما يقلل من بعض محددات معدل الإطارات. هذا الخيار غير مستقر وقد يسبب مشاكل، وقد يرى المستخدمون بأجهزة أضعف انخفاضًا في الأداء.</string>
|
||||||
<string name="custom_cpu_ticks">تخصيص دورات المعالج</string>
|
<string name="custom_cpu_ticks">تخصيص دورات المعالج</string>
|
||||||
<string name="custom_cpu_ticks_description">تعيين قيمة مخصصة لدورات المعالج. القيم الأعلى قد تزيد الأداء، ولكن قد تتسبب أيضًا في تجمد اللعبة. يوصى بنطاق 77-21000.</string>
|
<string name="custom_cpu_ticks_description">قم بتعيين قيمة مخصصة لدورات المعالج. القيم الأعلى يمكن أن تزيد من الأداء، ولكنها قد تتسبب أيضًا في تجميد اللعبة. يوصى باستخدام نطاق 77-21000.</string>
|
||||||
<string name="cpu_ticks">دورات</string>
|
<string name="cpu_ticks">دورات</string>
|
||||||
<string name="skip_cpu_inner_invalidation">تخطي إبطال ذاكرة التخزين المؤقت الداخلية للوحدة المركزية</string>
|
<string name="skip_cpu_inner_invalidation">تخطي إبطال ذاكرة التخزين المؤقت الداخلية للوحدة المركزية</string>
|
||||||
<string name="skip_cpu_inner_invalidation_description">يتخطى بعض عمليات إبطال ذاكرة التخزين المؤقت أثناء تحديثات الذاكرة، مما يقلل استخدام المعالج ويحسن أدائه. قد يسبب هذا أعطالاً أو تعطلًا في بعض الألعاب.</string>
|
<string name="skip_cpu_inner_invalidation_description">يتخطى بعض عمليات إبطال ذاكرة التخزين المؤقت أثناء تحديثات الذاكرة، مما يقلل استخدام المعالج ويحسن أدائه. قد يسبب هذا أعطالاً أو تعطلًا في بعض الألعاب.</string>
|
||||||
<string name="cpuopt_unsafe_host_mmu">تمكين محاكاة MMU المضيف</string>
|
<string name="cpuopt_unsafe_host_mmu">تمكين محاكاة MMU المضيف</string>
|
||||||
<string name="cpuopt_unsafe_host_mmu_description">يعمل هذا التحسين على تسريع وصول الذاكرة بواسطة البرنامج الضيف. يؤدي تمكينه إلى إجراء عمليات قراءة/كتابة ذاكرة الضيف مباشرة في الذاكرة والاستفادة من MMU المضيف. يؤدي تعطيل هذا إلى إجبار جميع عمليات الوصول إلى الذاكرة على استخدام محاكاة MMU البرمجية.</string>
|
<string name="cpuopt_unsafe_host_mmu_description">يعمل هذا التحسين على تسريع وصول الذاكرة بواسطة البرنامج الضيف. يؤدي تمكينه إلى إجراء عمليات قراءة/كتابة ذاكرة الضيف مباشرة في الذاكرة والاستفادة من MMU المضيف. يؤدي تعطيل هذا إلى إجبار جميع عمليات الوصول إلى الذاكرة على استخدام محاكاة MMU البرمجية.</string>
|
||||||
<string name="fast_cpu_time">CPU Clock</string>
|
<string name="fast_cpu_time">CPU Clock</string>
|
||||||
<string name="fast_cpu_time_description">استخدم Boost (1700MHz) للتشغيل بأعلى سرعة أصلية لـ Switch، أو Fast (2000MHz) للتشغيل بضعف السرعة.</string>
|
<string name="fast_cpu_time_description">استخدم تعزيز (1700MHz) للتشغيل بأعلى سرعة أصلية لـ Switch، أو سريع (2000MHz) للتشغيل بضعف السرعة.</string>
|
||||||
<string name="memory_layout">تخطيط الذاكرة</string>
|
<string name="memory_layout">تخطيط الذاكرة</string>
|
||||||
<string name="memory_layout_description">(تجريبي) تغيير تخطيط الذاكرة المحاكي. هذا الإعداد لن يزيد من الأداء، ولكن قد يساعد في الألعاب باستخدام قرارات عالية عبر التعديلات. لا تستخدم على الهواتف التي تحتوي على 8GB من ذاكرة الوصول العشوائي أو أقل. يعمل فقط على الواجهة الخلفية الديناميكية (JIT).</string>
|
<string name="memory_layout_description">(تجريبي) تغيير تخطيط الذاكرة المحاكي. هذا الإعداد لن يزيد من الأداء، ولكن قد يساعد في الألعاب باستخدام قرارات عالية عبر التعديلات. لا تستخدم على الهواتف التي تحتوي على 8GB من ذاكرة الوصول العشوائي أو أقل. يعمل فقط على الواجهة الخلفية الديناميكية (JIT).</string>
|
||||||
<string name="dma_accuracy">دقة DMA</string>
|
<string name="dma_accuracy">دقة DMA</string>
|
||||||
<string name="dma_accuracy_description">يتحكم في دقة تحديد DMA. يمكن أن تصلح الدقة الآمنة المشاكل في بعض الألعاب، ولكنها قد تؤثر أيضًا على الأداء في بعض الحالات. إذا كنت غير متأكد، اترك هذا على الوضع الافتراضي.</string>
|
<string name="dma_accuracy_description">يتحكم في دقة تحديد DMA. يمكن أن تصلح الدقة الآمنة المشاكل في بعض الألعاب، ولكنها قد تؤثر أيضًا على الأداء في بعض الحالات. إذا كنت غير متأكد، اترك هذا على الوضع الافتراضي.</string>
|
||||||
|
|
||||||
<!-- Shader Backend -->
|
<!-- Shader Backend -->
|
||||||
<string name="shader_backend">خلفية Shader</string>
|
<string name="shader_backend">واجهة برمجة التظليل</string>
|
||||||
<string name="shader_backend_description">Choose how shaders are compiled and translated for your GPU.</string>
|
<string name="shader_backend_description">حدد كيفية تجميع وترجمة برامج التظليل لوحدة معالجة الرسومات الخاصة بك.</string>
|
||||||
<string name="shader_backend_glsl">GLSL</string>
|
<string name="shader_backend_glsl">GLSL</string>
|
||||||
<string name="shader_backend_glasm">GLASM</string>
|
<string name="shader_backend_glasm">GLASM</string>
|
||||||
<string name="shader_backend_spirv">Spir-V</string>
|
<string name="shader_backend_spirv">Spir-V</string>
|
||||||
@@ -150,7 +150,7 @@
|
|||||||
|
|
||||||
<!-- Multiplayer -->
|
<!-- Multiplayer -->
|
||||||
<string name="multiplayer">متعدد اللاعبين</string>
|
<string name="multiplayer">متعدد اللاعبين</string>
|
||||||
<string name="multiplayer_description">استضف غرفة لعبتك الخاصة أو انضم إلى غرفة موجودة للعب مع الآخرين</string>
|
<string name="multiplayer_description">استضف غرفة ألعاب خاصة بك أو انضم إلى غرفة موجودة بالفعل للعب مع الآخرين</string>
|
||||||
<string name="multiplayer_create_room">إنشاء</string>
|
<string name="multiplayer_create_room">إنشاء</string>
|
||||||
<string name="multiplayer_join_room">الانضمام</string>
|
<string name="multiplayer_join_room">الانضمام</string>
|
||||||
<string name="multiplayer_public_room">تصفح الغرف العامة</string>
|
<string name="multiplayer_public_room">تصفح الغرف العامة</string>
|
||||||
@@ -161,9 +161,9 @@
|
|||||||
<string name="multiplayer_join_room_success">تم الانضمام إلى الغرفة بنجاح</string>
|
<string name="multiplayer_join_room_success">تم الانضمام إلى الغرفة بنجاح</string>
|
||||||
<string name="multiplayer_exit_room">مغادرة الغرفة</string>
|
<string name="multiplayer_exit_room">مغادرة الغرفة</string>
|
||||||
<string name="multiplayer_network_error">خطأ في الشبكة</string>
|
<string name="multiplayer_network_error">خطأ في الشبكة</string>
|
||||||
<string name="multiplayer_lost_connection">فقدان الاتصال</string>
|
<string name="multiplayer_lost_connection">انقطع الاتصال</string>
|
||||||
<string name="multiplayer_name_collision">اسم المستخدم محجوز مسبقاً</string>
|
<string name="multiplayer_name_collision">اسم المستخدم محجوز مسبقاً</string>
|
||||||
<string name="multiplayer_mac_collision">تعارض في عنوان MAC</string>
|
<string name="multiplayer_mac_collision">تعارض عناوين MAC</string>
|
||||||
<string name="multiplayer_console_id_collision">تعارض معرف وحدة التحكم</string>
|
<string name="multiplayer_console_id_collision">تعارض معرف وحدة التحكم</string>
|
||||||
<string name="multiplayer_wrong_version">إصدار خاطئ</string>
|
<string name="multiplayer_wrong_version">إصدار خاطئ</string>
|
||||||
<string name="multiplayer_wrong_password">كلمة مرور خاطئة</string>
|
<string name="multiplayer_wrong_password">كلمة مرور خاطئة</string>
|
||||||
@@ -171,7 +171,7 @@
|
|||||||
<string name="multiplayer_room_is_full">الغرفة ممتلئة</string>
|
<string name="multiplayer_room_is_full">الغرفة ممتلئة</string>
|
||||||
<string name="multiplayer_host_banned">أنت محظور من هذه الغرفة</string>
|
<string name="multiplayer_host_banned">أنت محظور من هذه الغرفة</string>
|
||||||
<string name="multiplayer_permission_denied">تم رفض الإذن</string>
|
<string name="multiplayer_permission_denied">تم رفض الإذن</string>
|
||||||
<string name="multiplayer_no_such_user">لا يوجد مثل هذا المستخدم</string>
|
<string name="multiplayer_no_such_user">لا يوجد مستخدم بهذا الاسم</string>
|
||||||
<string name="multiplayer_already_in_room">موجود بالفعل في الغرفة</string>
|
<string name="multiplayer_already_in_room">موجود بالفعل في الغرفة</string>
|
||||||
<string name="multiplayer_create_room_error">خطأ في إنشاء الغرفة</string>
|
<string name="multiplayer_create_room_error">خطأ في إنشاء الغرفة</string>
|
||||||
<string name="multiplayer_host_kicked">تم طرد المضيف</string>
|
<string name="multiplayer_host_kicked">تم طرد المضيف</string>
|
||||||
@@ -195,6 +195,7 @@
|
|||||||
<string name="multiplayer_chat">الدردشة</string>
|
<string name="multiplayer_chat">الدردشة</string>
|
||||||
<string name="multiplayer_more_options">المزيد من الخيارات</string>
|
<string name="multiplayer_more_options">المزيد من الخيارات</string>
|
||||||
<string name="chat">الدردشة</string>
|
<string name="chat">الدردشة</string>
|
||||||
|
<string name="clear">مسح</string>
|
||||||
<string name="type_message">اكتب رسالة…</string>
|
<string name="type_message">اكتب رسالة…</string>
|
||||||
<string name="send_message">إرسال رسالة</string>
|
<string name="send_message">إرسال رسالة</string>
|
||||||
<string name="multiplayer_moderation">الإشراف</string>
|
<string name="multiplayer_moderation">الإشراف</string>
|
||||||
@@ -214,15 +215,15 @@
|
|||||||
<string name="multiplayer_hide_full_rooms">إخفاء الغرف الممتلئة</string>
|
<string name="multiplayer_hide_full_rooms">إخفاء الغرف الممتلئة</string>
|
||||||
<string name="multiplayer_hide_empty_rooms">إخفاء الغرف الفارغة</string>
|
<string name="multiplayer_hide_empty_rooms">إخفاء الغرف الفارغة</string>
|
||||||
<string name="multiplayer_tap_refresh_to_check_again">اضغط على تحديث للتحقق مرة أخرى</string>
|
<string name="multiplayer_tap_refresh_to_check_again">اضغط على تحديث للتحقق مرة أخرى</string>
|
||||||
<string name="multiplayer_search_public_lobbies">البحث في الغرف…</string>
|
<string name="multiplayer_search_public_lobbies">البحث في القائمة…</string>
|
||||||
<string name="multiplayer_preferred_game_name">اللعبة المفضلة</string>
|
<string name="multiplayer_preferred_game_name">اللعبة المفضلة</string>
|
||||||
<string name="multiplayer_lobby_type">نوع الغرفة</string>
|
<string name="multiplayer_lobby_type">نوع الغرفة</string>
|
||||||
<string name="multiplayer_room_name_error">يجب أن يكون بين 3 و20 حرفًا</string>
|
<string name="multiplayer_room_name_error">يجب أن يتكون من 3 إلى 20 حرفًا</string>
|
||||||
<string name="multiplayer_required">مطلوب</string>
|
<string name="multiplayer_required">مطلوب</string>
|
||||||
<string name="multiplayer_token_required">مطلوب رمز ويب، انتقل إلى الإعدادات المتقدمة -> النظام -> الشبكة</string>
|
<string name="multiplayer_token_required">مطلوب رمز ويب، انتقل إلى الإعدادات المتقدمة -> النظام -> الشبكة</string>
|
||||||
<string name="multiplayer_ip_error">تنسيق IP غير صالح</string>
|
<string name="multiplayer_ip_error">تنسيق IP غير صالح</string>
|
||||||
<string name="multiplayer_username_error">يجب أن يكون بين 4-20 حرفًا ، وأن يحتوي على شخصيات أبجدية رقمية وفترات واندفاعات وتأكيدات ومساحات فقط</string>
|
<string name="multiplayer_username_error">يجب أن يتكون من 4 إلى 20 حرفًا، وأن يحتوي على أحرف أبجدية رقمية ونقاط وشرطات وشرطات سفلية ومسافات فقط</string>
|
||||||
<string name="multiplayer_nickname_invalid">اسم مستخدم غير صالح، تأكد من إعداده بشكل صحيح في النظام → الشبكة</string>
|
<string name="multiplayer_nickname_invalid">اسم مستخدم غير صالح، تأكد من إعداده بشكل صحيح في النظام -> الشبكة </string>
|
||||||
<string name="multiplayer_token_error">يجب أن يتكون من 48 حرفًا، وأحرف صغيرة من a-z فقط</string>
|
<string name="multiplayer_token_error">يجب أن يتكون من 48 حرفًا، وأحرف صغيرة من a-z فقط</string>
|
||||||
<string name="multiplayer_port_error">يجب أن يكون بين 1 و65535</string>
|
<string name="multiplayer_port_error">يجب أن يكون بين 1 و65535</string>
|
||||||
<string name="cancel">إلغاء</string>
|
<string name="cancel">إلغاء</string>
|
||||||
@@ -233,23 +234,24 @@
|
|||||||
<string name="multiplayer_unlisted_visibility">غير مدرج</string>
|
<string name="multiplayer_unlisted_visibility">غير مدرج</string>
|
||||||
|
|
||||||
<!-- Setup strings -->
|
<!-- Setup strings -->
|
||||||
<string name="welcome">مرحبا</string>
|
<string name="welcome">مرحبًا!</string>
|
||||||
<string name="welcome_description">تعلم كيفية إعداد <b>عدن</b> والقفز إلى المحاكاة.</string>
|
<string name="welcome_description">تعلم كيفية إعداد <b>Eden</b> والبدء في المحاكاة.</string>
|
||||||
<string name="get_started">لنبدأ</string>
|
<string name="get_started">ابدأ الآن</string>
|
||||||
<string name="keys">المفاتيح</string>
|
<string name="keys">المفاتيح</string>
|
||||||
<string name="keys_description">اختر ملف <b>prod.keys</b> من الزر ادناه</string>
|
<string name="keys_description">حدد ملف <b>prod.keys</b> الخاص بك باستخدام الزر أدناه.</string>
|
||||||
<string name="select_keys">إختيار المفاتيح</string>
|
<string name="select_keys">حدد المفاتيح</string>
|
||||||
<string name="firmware">الفريموير</string>
|
<string name="firmware">الفيرموير</string>
|
||||||
<string name="select_firmware">حدد الفريموير</string>
|
<string name="firmware_description">حدد ملف <b>firmware.zip</b> الخاص بك باستخدام الزر أدناه.</string>
|
||||||
|
<string name="select_firmware">حدد الفيرموير</string>
|
||||||
<string name="games">الألعاب</string>
|
<string name="games">الألعاب</string>
|
||||||
<string name="games_description">حدد مجلد <b>العابك</b> من الزر ادناه.</string>
|
<string name="games_description">حدد مجلد <b>الألعاب</b> الخاص بك باستخدام الزر أدناه.</string>
|
||||||
<string name="done">إنهاء</string>
|
<string name="done">إنهاء</string>
|
||||||
<string name="done_description">أنت جاهز تمامًا.\nاستمتع بألعابك!</string>
|
<string name="done_description">أنت جاهز تمامًا.\nاستمتع بألعابك!</string>
|
||||||
<string name="text_continue">استمر</string>
|
<string name="text_continue">متابعة</string>
|
||||||
<string name="next">التالي</string>
|
<string name="next">التالي</string>
|
||||||
<string name="back">عودة</string>
|
<string name="back">عودة</string>
|
||||||
<string name="add_games">إضافة الألعاب</string>
|
<string name="add_games">إضافة الألعاب</string>
|
||||||
<string name="step_complete">مكتمل</string>
|
<string name="step_complete">انتهى!</string>
|
||||||
|
|
||||||
<!-- Home strings -->
|
<!-- Home strings -->
|
||||||
|
|
||||||
@@ -257,88 +259,92 @@
|
|||||||
<string name="view_list">قائمة</string>
|
<string name="view_list">قائمة</string>
|
||||||
<string name="view_grid">شبكة</string>
|
<string name="view_grid">شبكة</string>
|
||||||
<string name="view_grid_compact">شبكة مدمجة</string>
|
<string name="view_grid_compact">شبكة مدمجة</string>
|
||||||
<string name="view_carousel">عرض دائري</string>
|
<string name="view_carousel">دائري</string>
|
||||||
<string name="game_image_desc"> لقطة شاشة لـ%1$s</string>
|
<string name="game_image_desc"> لقطة شاشة لـ%1$s</string>
|
||||||
<string name="folder">مجلد</string>
|
<string name="folder">مجلد</string>
|
||||||
<string name="dont_show_again">عدم العرض مجددًا</string>
|
<string name="dont_show_again">لا تعرض مرة أخرى</string>
|
||||||
<string name="add_directory_success">تمت إضافة مجلد اللعبة الجديد بنجاح</string>
|
<string name="add_directory_success">تمت إضافة مجلد اللعبة الجديد بنجاح</string>
|
||||||
|
<string name="enable_update_checks">تحقق من وجود تحديثات عند بدء تشغيل التطبيق.</string>
|
||||||
|
<string name="update_available">تحديث متوفر</string>
|
||||||
|
<string name="update_available_description">يتوفر إصدار جديد: %1$s\n\nهل ترغب في تنزيله؟</string>
|
||||||
<string name="home_search">البحث</string>
|
<string name="home_search">البحث</string>
|
||||||
<string name="home_settings">الإعدادات</string>
|
<string name="home_settings">الإعدادات</string>
|
||||||
<string name="empty_gamelist">لم يتم العثور على ملفات أو لم يتم تحديد مجلد الألعاب حتى الآن.</string>
|
<string name="empty_gamelist">لم يتم العثور على أي ملفات أو لم يتم تحديد أي مجلد ألعاب بعد.</string>
|
||||||
<string name="manage_game_folders">إدارة مجلدات اللعبة</string>
|
<string name="manage_game_folders">إدارة مجلدات اللعبة</string>
|
||||||
<string name="select_games_folder_description">يسمح لـ عدن بملء قائمة الألعاب</string>
|
<string name="select_games_folder_description">يسمح لـ Eden بملء قائمة الألعاب</string>
|
||||||
<string name="add_games_warning">تخطي تحديد مجلد الألعاب؟</string>
|
<string name="add_games_warning">تخطي تحديد مجلد الألعاب؟</string>
|
||||||
<string name="add_games_warning_description">لن يتم عرض الألعاب في قائمة الألعاب إذا لم يتم تحديد مجلد.</string>
|
<string name="add_games_warning_description">لن يتم عرض الألعاب في قائمة الألعاب إذا لم يتم تحديد مجلد.</string>
|
||||||
<string name="add_games_warning_help">https://yuzu-mirror.github.io/help/quickstart/#dumping-games</string>
|
<string name="add_games_warning_help">https://yuzu-mirror.github.io/help/quickstart/#dumping-games</string>
|
||||||
<string name="home_search_games">البحث عن الألعاب</string>
|
<string name="home_search_games">البحث عن ألعاب</string>
|
||||||
<string name="search_settings">إعدادات البحث</string>
|
<string name="search_settings">إعدادات البحث</string>
|
||||||
<string name="install_prod_keys">تثبيت prod.keys</string>
|
<string name="install_prod_keys">تثبيت prod.keys</string>
|
||||||
<string name="install_prod_keys_description">مطلوب لفك تشفير ألعاب البيع بالتجزئة</string>
|
<string name="install_prod_keys_description">مطلوب لفك تشفير ألعاب البيع بالتجزئة</string>
|
||||||
<string name="install_prod_keys_warning">تخطي إضافة المفاتيح؟</string>
|
<string name="install_prod_keys_warning">تخطي إضافة المفاتيح؟</string>
|
||||||
<string name="install_prod_keys_warning_description">يلزم وجود مفاتيح صالحة لمحاكاة ألعاب البيع بالتجزئة. لن تعمل سوى التطبيقات المحلية إذا واصلت.</string>
|
<string name="install_prod_keys_warning_description">يلزم وجود مفاتيح صالحة لمحاكاة ألعاب البيع بالتجزئة. لن تعمل سوى التطبيقات المحلية إذا واصلت.</string>
|
||||||
<string name="install_prod_keys_warning_help">https://yuzu-mirror.github.io/help/quickstart/#guide-introduction</string>
|
<string name="install_prod_keys_warning_help">https://yuzu-mirror.github.io/help/quickstart/#guide-introduction</string>
|
||||||
<string name="install_firmware_warning">تخطي إضافة الفريموير؟</string>
|
<string name="install_firmware_warning">تخطي إضافة الفيرموير؟</string>
|
||||||
<string name="install_firmware_warning_description">العديد من الألعاب تتطلب الوصول إلى الفريموير لتشغيل بشكل صحيح.</string>
|
<string name="install_firmware_warning_description">العديد من الألعاب تتطلب الوصول إلى الفيرموير لتشغيل بشكل صحيح.</string>
|
||||||
<string name="install_firmware_warning_help">https://yuzu-mirror.github.io/help/quickstart/#guide-introduction</string>
|
<string name="install_firmware_warning_help">https://yuzu-mirror.github.io/help/quickstart/#guide-introduction</string>
|
||||||
<string name="notifications">الإشعارات</string>
|
<string name="notifications">الإشعارات</string>
|
||||||
<string name="notifications_description">امنح إذن الإشعار باستخدام الزر أدناه</string>
|
<string name="notifications_description">امنح الإذن بالإشعار باستخدام الزر أدناه.</string>
|
||||||
<string name="give_permission">منح الإذن</string>
|
<string name="give_permission">منح الإذن</string>
|
||||||
<string name="notification_warning">تخطي منح إذن الإشعارات؟</string>
|
<string name="notification_warning">تخطي منح إذن الإشعارات؟</string>
|
||||||
<string name="notification_warning_description">لن تتمكن إيدن من إعلامك بالمعلومات المهمة.</string>
|
<string name="notification_warning_description">لن تتمكن Eden من إشعارك بالمعلومات المهمة.</string>
|
||||||
<string name="permission_denied">تم رفض الإذن</string>
|
<string name="permission_denied">تم رفض الإذن</string>
|
||||||
<string name="permission_denied_description">لقد رفضت هذا الإذن عدة مرات ويتعين عليك الآن منحه يدويًا في إعدادات النظام</string>
|
<string name="permission_denied_description">لقد رفضت هذا الإذن عدة مرات ويتعين عليك الآن منحه يدويًا في إعدادات النظام</string>
|
||||||
<string name="about">حول</string>
|
<string name="about">حول</string>
|
||||||
<string name="about_description">بناء الإصدار، والاعتمادات، وأكثر من ذلك</string>
|
<string name="about_description">إصدار البرنامج، الاعتمادات، والمزيد</string>
|
||||||
<string name="warning_help">مساعدة</string>
|
<string name="warning_help">مساعدة</string>
|
||||||
<string name="warning">تحذير</string>
|
<string name="warning">تحذير</string>
|
||||||
<string name="warning_skip">تخطي</string>
|
<string name="warning_skip">تخطي</string>
|
||||||
<string name="warning_cancel">إلغاء</string>
|
<string name="warning_cancel">إلغاء</string>
|
||||||
<string name="install_amiibo_keys">تثبيت مفاتيح أميبو</string>
|
<string name="install_amiibo_keys">تثبيت مفاتيح أميبو</string>
|
||||||
<string name="install_amiibo_keys_description">مطلوب لاستخدام أميبو في اللعبة</string>
|
<string name="install_amiibo_keys_description">مطلوب لاستخدام أميبو في اللعبة</string>
|
||||||
<string name="gpu_driver_fetcher">جلب برامج تشغيل GPU</string>
|
<string name="gpu_driver_fetcher">أداة جلب برامج تشغيل وحدة المعالجة الرسومية</string>
|
||||||
<string name="gpu_driver_manager">GPU مدير برنامج تشغيل</string>
|
<string name="gpu_driver_manager">مدير برامج تشغيل وحدة معالجة الرسومات</string>
|
||||||
<string name="install_gpu_driver_description">تثبيت برامج تشغيل بديلة لأداء أو دقة أفضل</string>
|
<string name="install_gpu_driver_description">تثبيت برامج تشغيل بديلة لأداء أو دقة أفضل</string>
|
||||||
<string name="advanced_settings">إعدادات متقدمة</string>
|
<string name="advanced_settings">إعدادات متقدمة</string>
|
||||||
<string name="settings_description">تكوين إعدادات المحاكي</string>
|
<string name="settings_description">تكوين إعدادات المحاكي</string>
|
||||||
<string name="search_recently_played">تم تشغيلها مؤخرًا</string>
|
<string name="search_recently_played">تم تشغيلها مؤخرًا</string>
|
||||||
<string name="search_recently_added">أضيفت مؤخراً</string>
|
<string name="search_recently_added">أضيفت مؤخراً</string>
|
||||||
<string name="open_user_folder">فتح مجلد عدن</string>
|
<string name="open_user_folder">فتح مجلد Eden</string>
|
||||||
<string name="open_user_folder_description">إدارة الملفات الداخلية لـ عدن</string>
|
<string name="open_user_folder_description">إدارة الملفات الداخلية لـ Eden</string>
|
||||||
|
<string name="app_settings_description">تعديل سلوك ومظهر التطبيق</string>
|
||||||
<string name="no_file_manager">لم يتم العثور على مدير الملفات</string>
|
<string name="no_file_manager">لم يتم العثور على مدير الملفات</string>
|
||||||
<string name="notification_no_directory_link">لا يمكن فتح مجلد عدن</string>
|
<string name="notification_no_directory_link">تعذر فتح مجلد Eden</string>
|
||||||
<string name="notification_no_directory_link_description">الرجاء تحديد موقع مجلد المستخدم باستخدام اللوحة الجانبية لمدير الملفات يدويًا</string>
|
<string name="notification_no_directory_link_description">يرجى تحديد موقع مجلد المستخدم يدويًا باستخدام اللوحة الجانبية لمدير الملفات.</string>
|
||||||
<string name="manage_save_data">إدارة حفظ البيانات</string>
|
<string name="manage_save_data">إدارة حفظ البيانات</string>
|
||||||
<string name="manage_save_data_description">حفظ البيانات التي تم العثور عليها. يرجى اختيار أحد الخيارات التالية</string>
|
<string name="manage_save_data_description">حفظ البيانات التي تم العثور عليها. يرجى اختيار أحد الخيارات التالية</string>
|
||||||
<string name="import_save_warning">استيراد حفظ البيانات</string>
|
<string name="import_save_warning">استيراد حفظ البيانات</string>
|
||||||
<string name="import_save_warning_description">سيؤدي هذا إلى استبدال جميع بيانات الحفظ الموجودة بالملف المقدم. هل أنت متأكد أنك تريد الاستمرار؟</string>
|
<string name="import_save_warning_description">سيؤدي هذا إلى استبدال جميع البيانات المحفوظة الموجودة بالملف المقدم. هل أنت متأكد من أنك تريد المتابعة؟</string>
|
||||||
<string name="save_files_importing">جارٍ استيراد ملفات الحفظ…</string>
|
<string name="save_files_importing">جارٍ استيراد ملفات الحفظ…</string>
|
||||||
<string name="save_files_exporting">جارٍ تصدير ملفات الحفظ...</string>
|
<string name="save_files_exporting">جارٍ تصدير ملفات الحفظ...</string>
|
||||||
<string name="save_file_imported_success">تم الاستيراد بنجاح</string>
|
<string name="save_file_imported_success">تم الاستيراد بنجاح</string>
|
||||||
<string name="save_file_invalid_zip_structure">بنية مجلد الحفظ غير صالحة</string>
|
<string name="save_file_invalid_zip_structure">بنية مجلد الحفظ غير صالحة</string>
|
||||||
<string name="save_file_invalid_zip_structure_description">يجب أن يكون اسم المجلد الفرعي الأول هو عنوان اللعبة.</string>
|
<string name="save_file_invalid_zip_structure_description">يجب أن يكون اسم المجلد الفرعي الأول هو معرف عنوان اللعبة.</string>
|
||||||
<string name="install_firmware">تثبيت فيرموير</string>
|
<string name="install_firmware">تثبيت الفيرموير</string>
|
||||||
<string name="install_firmware_description">يجب أن يكون فيرموير في أرشيف مضغوط وهو ضروري لتشغيل بعض الألعاب</string>
|
<string name="install_firmware_description">يجب أن يكون فيرموير في أرشيف مضغوط وهو ضروري لتشغيل بعض الألعاب</string>
|
||||||
<string name="firmware_installing">تثبيت فيرموير</string>
|
<string name="firmware_installing">تثبيت الفيرموير</string>
|
||||||
<string name="firmware_installed_failure">فشل تثبيت فيرموير</string>
|
<string name="firmware_installed_failure">فشل تثبيت الفيرموير</string>
|
||||||
<string name="firmware_installed_failure_description">تأكد من أن ملفات الفريموير nca موجودة في جذر ملف zip وحاول مرة أخرى.</string>
|
<string name="firmware_installed_failure_description">تأكد من أن ملفات الفيرموير nca موجودة في جذر ملف مضغوط وحاول مرة أخرى.</string>
|
||||||
<string name="firmware_uninstalled_failure">فشل إلغاء تثبيت الفريموير</string>
|
<string name="firmware_uninstalled_failure">فشل إلغاء تثبيت الفيرموير</string>
|
||||||
<string name="share_log">مشاركة سجلات التصحيح</string>
|
<string name="share_log">مشاركة سجلات التصحيح</string>
|
||||||
<string name="share_log_description">مشاركة ملف سجل عدن لتصحيح المشكلات</string>
|
<string name="share_log_description">مشاركة ملف سجل Eden لتصحيح الأخطاء</string>
|
||||||
<string name="share_log_missing">لم يتم العثور على ملف السجل</string>
|
<string name="share_log_missing">لم يتم العثور على ملف السجل</string>
|
||||||
<string name="install_game_content">تثبيت محتوى اللعبة</string>
|
<string name="install_game_content">تثبيت محتوى اللعبة</string>
|
||||||
<string name="install_game_content_description">قم بتثبيت تحديثات اللعبة أو الإضافات</string>
|
<string name="install_game_content_description">تثبيت تحديثات اللعبة أو المحتوى القابل للتنزيل</string>
|
||||||
<string name="installing_game_content">جارٍ تثبيت المحتوى...</string>
|
<string name="installing_game_content">جارٍ تثبيت المحتوى...</string>
|
||||||
<string name="install_game_content_failure">خطأ في تثبيت الملف(ات) على NAND</string>
|
<string name="install_game_content_failure">خطأ في تثبيت الملف(ات) على الذاكرة الداخلية</string>
|
||||||
<string name="install_game_content_failure_description">يرجى التأكد من صحة المحتوى (المحتويات) وتثبيت ملف prod.keys.</string>
|
<string name="install_game_content_failure_description">يرجى التأكد من صحة المحتوى (المحتويات) وتثبيت ملف prod.keys.</string>
|
||||||
<string name="install_game_content_failure_base">لا يُسمح بتثبيت الألعاب الأساسية لتجنب التعارضات المحتملة.</string>
|
<string name="install_game_content_failure_base">لا يُسمح بتثبيت الألعاب الأساسية لتجنب التعارضات المحتملة.</string>
|
||||||
<string name="install_game_content_failed_count">%1$d حدث خطأ (أخطاء) في التثبيت </string>
|
<string name="install_game_content_failed_count">%1$d خطأ (أخطاء) في التثبيت</string>
|
||||||
<string name="install_game_content_success">تم تثبيت محتوى (محتويات) اللعبة بنجاح</string>
|
<string name="install_game_content_success">تم تثبيت محتوى (محتويات) اللعبة بنجاح</string>
|
||||||
<string name="install_game_content_success_install">%1$d تم التثبيت بنجاح</string>
|
<string name="install_game_content_success_install">%1$d تم التثبيت بنجاح</string>
|
||||||
<string name="install_game_content_success_overwrite">%1$d تمت الكتابة فوقه بنجاح</string>
|
<string name="install_game_content_success_overwrite">%1$d تمت الكتابة فوقه بنجاح</string>
|
||||||
<string name="install_game_content_help_link">https://yuzu-mirror.github.io/help/quickstart/#dumping-installed-updates</string>
|
<string name="install_game_content_help_link">https://yuzu-mirror.github.io/help/quickstart/#dumping-installed-updates</string>
|
||||||
<string name="custom_driver_not_supported">برامج التشغيل المخصصة غير مدعومة</string>
|
<string name="custom_driver_not_supported">برامج التشغيل المخصصة غير مدعومة</string>
|
||||||
<string name="custom_driver_not_supported_description">تحميل برنامج التشغيل المخصص غير مدعوم حاليًا لهذا الجهاز. يُرجى إعادة تفعيل هذا الخيار لاحقًا للتحقق من إضافة الدعم.</string>
|
<string name="custom_driver_not_supported_description">لا يتم دعم تحميل برنامج التشغيل المخصص حاليًا لهذا الجهاز.\nتحقق من هذا الخيار مرة أخرى في المستقبل لمعرفة ما إذا تمت إضافة الدعم!</string>
|
||||||
<string name="manage_yuzu_data">إدارة بيانات عدن</string>
|
<string name="manage_yuzu_data">إدارة بيانات Eden</string>
|
||||||
<string name="manage_yuzu_data_description">استيراد/تصدير فيرموير والمفاتيح وبيانات المستخدم والمزيد</string>
|
<string name="manage_yuzu_data_description">استيراد/تصدير فيرموير والمفاتيح وبيانات المستخدم والمزيد</string>
|
||||||
<string name="game_folders">مجلدات اللعبة</string>
|
<string name="game_folders">مجلدات اللعبة</string>
|
||||||
<string name="deep_scan">فحص عميق</string>
|
<string name="deep_scan">فحص عميق</string>
|
||||||
@@ -363,16 +369,16 @@
|
|||||||
</plurals>
|
</plurals>
|
||||||
<string name="no_save_data_found">لم يتم العثور على بيانات الحفظ</string>
|
<string name="no_save_data_found">لم يتم العثور على بيانات الحفظ</string>
|
||||||
<string name="verify_installed_content">التحقق من المحتوى المثبت</string>
|
<string name="verify_installed_content">التحقق من المحتوى المثبت</string>
|
||||||
<string name="verify_installed_content_description">فحص المحتوى المثبت بحثًا عن تلف</string>
|
<string name="verify_installed_content_description">فحص جميع المحتويات المثبتة للتأكد من عدم تلفها</string>
|
||||||
|
|
||||||
<string name="keys_missing">مفاتيح التشفير مفقودة</string>
|
<string name="keys_missing">مفاتيح التشفير مفقودة</string>
|
||||||
<string name="keys_missing_description">لا يمكن فك تشفير الفريموير والألعاب</string>
|
<string name="keys_missing_description">لا يمكن فك تشفير الفيرموير والألعاب</string>
|
||||||
<string name="keys_missing_help">https://yuzu-mirror.github.io/help/quickstart/#dumping-decryption-keys</string>
|
<string name="keys_missing_help">https://yuzu-mirror.github.io/help/quickstart/#dumping-decryption-keys</string>
|
||||||
|
|
||||||
<string name="uninstall_firmware">إزالة الفريموير</string>
|
<string name="uninstall_firmware">إزالة الفيرموير</string>
|
||||||
<string name="uninstall_firmware_description">سيؤدي إزالة الفريموير إلى حذفه من الجهاز وقد يؤثر على توافق الألعاب.</string>
|
<string name="uninstall_firmware_description">سيؤدي إزالة الفيرموير إلى حذفه من الجهاز وقد يؤثر على توافق الألعاب.</string>
|
||||||
<string name="firmware_uninstalling">إلغاء تثبيت الفريموير</string>
|
<string name="firmware_uninstalling">إلغاء تثبيت الفيرموير</string>
|
||||||
<string name="firmware_uninstalled_success">تم إزالة الفريموير بنجاح</string>
|
<string name="firmware_uninstalled_success">تم إزالة الفيرموير بنجاح</string>
|
||||||
|
|
||||||
|
|
||||||
<string name="keys_failed">فشل تثبيت المفاتيح</string>
|
<string name="keys_failed">فشل تثبيت المفاتيح</string>
|
||||||
@@ -382,18 +388,18 @@
|
|||||||
<string name="error_keys_failed_init">فشل تهيئة المفاتيح. تحقق من أن أدوات النسخ محدثة وأعد نسخ المفاتيح.</string>
|
<string name="error_keys_failed_init">فشل تهيئة المفاتيح. تحقق من أن أدوات النسخ محدثة وأعد نسخ المفاتيح.</string>
|
||||||
|
|
||||||
<!-- Applet launcher strings -->
|
<!-- Applet launcher strings -->
|
||||||
<string name="qlaunch_applet">Qlaunch</string>
|
<string name="qlaunch_applet">القائمة الرئيسية</string>
|
||||||
<string name="qlaunch_description">تشغيل التطبيقات من الشاشة الرئيسية للنظام</string>
|
<string name="qlaunch_description">تشغيل التطبيقات من شاشة النظام الرئيسية</string>
|
||||||
<string name="applets">قائمة التطبيقات المصغرة</string>
|
<string name="applets">مشغل التطبيقات الصغيرة</string>
|
||||||
<string name="applets_description">تطبيقات نظام التشغيل باستخدام الفريموير المثبتة</string>
|
<string name="applets_description">تشغيل تطبيقات الصغيرة للنظام باستخدام الفيرموير المثبت</string>
|
||||||
<string name="applets_error_firmware">الفريموير غير مثبت أو إصدار غير صالح</string>
|
<string name="applets_error_firmware">الفيرموير غير مثبت أو إصدار غير صالح</string>
|
||||||
<string name="applets_error_applet">التطبيق المصغر غير متوفر</string>
|
<string name="applets_error_applet">التطبيق الصغير غير متوفر</string>
|
||||||
<string name="applets_error_description"><![CDATA[يرجى التأكد من أن ملف <a href=\"https://yuzu-mirror.github.io/help/quickstart/#dumping-prodkeys-and-titlekeys\">prod.keys</a> الخاص بك و <a href=\"https://yuzu-mirror.github.io/help/quickstart/#dumping-system-firmware\">الفريموير</a> مثبتة وحاول مرة أخرى.<br>بالإضافة إلى ذلك، تأكد من أن الفريموير الخاص بك هو من الإصدار 19.0.1 أو أقدم.]]></string>
|
<string name="applets_error_description"><![CDATA[يرجى التأكد من أن ملف <a href=\"https://yuzu-mirror.github.io/help/quickstart/#dumping-prodkeys-and-titlekeys\">prod.keys</a> الخاص بك و <a href=\"https://yuzu-mirror.github.io/help/quickstart/#dumping-system-firmware\">الفيرموير</a> مثبتة وحاول مرة أخرى.<br>بالإضافة إلى ذلك، تأكد من أن الفيرموير الخاص بك هو من الإصدار 19.0.1 أو أقدم.]]></string>
|
||||||
<string name="album_applet">الألبوم</string>
|
<string name="album_applet">الألبوم</string>
|
||||||
<string name="album_applet_description">شاهد الصور المخزنة في مجلد لقطات شاشة المستخدم باستخدام عارض صور النظام</string>
|
<string name="album_applet_description">عرض الصور المخزنة في مجلد لقطات شاشة المستخدم باستخدام عارض صور النظام</string>
|
||||||
<string name="mii_edit_applet">تعديل Mii</string>
|
<string name="mii_edit_applet">تعديل Mii</string>
|
||||||
<string name="mii_edit_applet_description">عرض وتحرير Miis باستخدام محرر النظام</string>
|
<string name="mii_edit_applet_description">عرض وتحرير Miis باستخدام محرر النظام</string>
|
||||||
<string name="cabinet_applet">خزانة</string>
|
<string name="cabinet_applet">الخزانة</string>
|
||||||
<string name="cabinet_applet_description">تعديل وحذف البيانات المخزنة على أميبو</string>
|
<string name="cabinet_applet_description">تعديل وحذف البيانات المخزنة على أميبو</string>
|
||||||
<string name="cabinet_launcher">مشغل الخزانة</string>
|
<string name="cabinet_launcher">مشغل الخزانة</string>
|
||||||
<string name="cabinet_nickname_and_owner">إعدادات الاسم المستعار والمالك</string>
|
<string name="cabinet_nickname_and_owner">إعدادات الاسم المستعار والمالك</string>
|
||||||
@@ -404,26 +410,26 @@
|
|||||||
<!-- About screen strings -->
|
<!-- About screen strings -->
|
||||||
<string name="gaia_is_not_real">Gaia غير حقيقي</string>
|
<string name="gaia_is_not_real">Gaia غير حقيقي</string>
|
||||||
<string name="copied_to_clipboard">نسخ إلى الحافظة</string>
|
<string name="copied_to_clipboard">نسخ إلى الحافظة</string>
|
||||||
<string name="about_app_description">محاكي سويتش مفتوح المصدر</string>
|
<string name="about_app_description">محاكي Switch مفتوح المصدر</string>
|
||||||
<string name="contributors">المساهمين</string>
|
<string name="contributors">المساهمين</string>
|
||||||
<string name="contributors_description">المساهمون الذين جعلوا عدن لنظام اندرويد ممكن</string>
|
<string name="contributors_description">المساهمون الذين جعلوا تطبيق Eden لنظام Android ممكناً</string>
|
||||||
<string name="contributors_link">https://git.eden-emu.dev/eden-emu/eden/activity/contributors</string>
|
<string name="contributors_link">https://git.eden-emu.dev/eden-emu/eden/activity/contributors</string>
|
||||||
<string name="licenses_description">المشاريع التي تجعل عدن لأجهزة أندرويد ممكنة</string>
|
<string name="licenses_description">المشاريع التي تجعل Eden لأجهزة Android ممكنة</string>
|
||||||
<string name="build">البناء</string>
|
<string name="build">البناء</string>
|
||||||
<string name="user_data">بيانات المستخدم</string>
|
<string name="user_data">بيانات المستخدم</string>
|
||||||
<string name="user_data_description">استيراد/تصدير جميع بيانات التطبيق.\nعند استيراد بيانات المستخدم، سيتم حذف جميع بيانات المستخدم الموجودة!\nقد يُسبب استيراد البيانات من Citron بعض المشاكل. يُنصح باستيراد جميع البيانات المطلوبة يدويًا.</string>
|
<string name="user_data_description">استيراد/تصدير جميع بيانات التطبيق.\nعند استيراد بيانات المستخدم، سيتم حذف جميع بيانات المستخدم الموجودة!\nقد يُسبب استيراد البيانات من Citron بعض المشاكل. يُنصح باستيراد جميع البيانات المطلوبة يدويًا.</string>
|
||||||
<string name="exporting_user_data">جارٍ تصدير بيانات المستخدم...</string>
|
<string name="exporting_user_data">جارٍ تصدير بيانات المستخدم...</string>
|
||||||
<string name="importing_user_data">جارٍ استيراد بيانات المستخدم...</string>
|
<string name="importing_user_data">جارٍ استيراد بيانات المستخدم...</string>
|
||||||
<string name="invalid_yuzu_backup">نسخة احتياطية عدن غير صالحة</string>
|
<string name="invalid_yuzu_backup">نسخة احتياطية Eden غير صالحة</string>
|
||||||
<string name="user_data_export_success">تم تصدير بيانات المستخدم بنجاح</string>
|
<string name="user_data_export_success">تم تصدير بيانات المستخدم بنجاح</string>
|
||||||
<string name="user_data_import_success">تم استيراد بيانات المستخدم بنجاح</string>
|
<string name="user_data_import_success">تم استيراد بيانات المستخدم بنجاح</string>
|
||||||
<string name="user_data_export_cancelled">تم إلغاء التصدير</string>
|
<string name="user_data_export_cancelled">تم إلغاء التصدير</string>
|
||||||
<string name="user_data_import_failed_description">تأكد من أن مجلدات بيانات المستخدم موجودة في جذر مجلد zip وتحتوي على ملف تكوين في config/config.ini ثم حاول مرة أخرى.</string>
|
<string name="user_data_import_failed_description">تأكد من أن مجلدات بيانات المستخدم موجودة في جذر مجلد مضغوط وتحتوي على ملف تكوين في config/config.ini ثم حاول مرة أخرى.</string>
|
||||||
<!-- General settings strings -->
|
<!-- General settings strings -->
|
||||||
<string name="frame_limit_enable">الحد من السرعة</string>
|
<string name="frame_limit_enable">الحد من السرعة</string>
|
||||||
<string name="frame_limit_enable_description">يحد من سرعة المحاكاة بنسبة محددة من السرعة العادية</string>
|
<string name="frame_limit_enable_description">يحدد سرعة المحاكاة بنسبة مئوية محددة من السرعة العادية.</string>
|
||||||
<string name="frame_limit_slider">الحد من السرعة في المئة</string>
|
<string name="frame_limit_slider">نسبة الحد الأقصى للسرعة</string>
|
||||||
<string name="frame_limit_slider_description">يحدد النسبة المئوية للحد من سرعة المحاكاة. 100% هي السرعة الطبيعية. ستؤدي القيم الأعلى أو الأدنى إلى زيادة أو تقليل حد السرعة.</string>
|
<string name="frame_limit_slider_description">يحدد النسبة المئوية للحد من سرعة المحاكاة. 100٪ هي السرعة العادية. القيم الأعلى أو الأقل ستزيد أو تقلل من الحد الأقصى للسرعة.</string>
|
||||||
<string name="cpu_backend">خلفية وحدة المعالجة المركزية</string>
|
<string name="cpu_backend">خلفية وحدة المعالجة المركزية</string>
|
||||||
<string name="cpu_accuracy">دقة وحدة المعالجة المركزية</string>
|
<string name="cpu_accuracy">دقة وحدة المعالجة المركزية</string>
|
||||||
<string name="value_with_units">%1$s%2$s</string>
|
<string name="value_with_units">%1$s%2$s</string>
|
||||||
@@ -431,7 +437,7 @@
|
|||||||
<!-- System settings strings -->
|
<!-- System settings strings -->
|
||||||
<string name="device_name">اسم الجهاز</string>
|
<string name="device_name">اسم الجهاز</string>
|
||||||
<string name="use_docked_mode">وضع الإرساء</string>
|
<string name="use_docked_mode">وضع الإرساء</string>
|
||||||
<string name="use_docked_mode_description">زيادة الدقة، وانخفاض الأداء. يتم استخدام الوضع المحمول عند تعطيله، مما يؤدي إلى خفض الدقة وزيادة الأداء.</string>
|
<string name="use_docked_mode_description">يزيد الدقة ويقلل الأداء. يتم استخدام الوضع المحمول عند تعطيله، مما يقلل الدقة ويزيد الأداء.</string>
|
||||||
<string name="emulated_region">المنطقة التي تمت محاكاتها</string>
|
<string name="emulated_region">المنطقة التي تمت محاكاتها</string>
|
||||||
<string name="emulated_language">لغة المحاكاة</string>
|
<string name="emulated_language">لغة المحاكاة</string>
|
||||||
<string name="select_rtc_date">حدد التاريخ و الساعة في الوقت الحقيقي</string>
|
<string name="select_rtc_date">حدد التاريخ و الساعة في الوقت الحقيقي</string>
|
||||||
@@ -440,62 +446,62 @@
|
|||||||
<string name="use_custom_rtc_description">يسمح لك بتعيين ساعة مخصصة في الوقت الفعلي منفصلة عن وقت النظام الحالي لديك</string>
|
<string name="use_custom_rtc_description">يسمح لك بتعيين ساعة مخصصة في الوقت الفعلي منفصلة عن وقت النظام الحالي لديك</string>
|
||||||
<string name="set_custom_rtc">تعيين ساعة مخصصة في الوقت الحقيقي</string>
|
<string name="set_custom_rtc">تعيين ساعة مخصصة في الوقت الحقيقي</string>
|
||||||
|
|
||||||
<string name="generate">توليد</string>
|
<string name="generate">إنشاء</string>
|
||||||
|
|
||||||
<!-- Network settings strings -->
|
<!-- Network settings strings -->
|
||||||
<string name="web_token">رمز الويب</string>
|
<string name="web_token">رمز الويب</string>
|
||||||
<string name="web_token_description">رمز الويب المستخدم لإنشاء غرف عامة. وهو سلسلة من 48 حرفًا تحتوي فقط على أحرف صغيرة من a-z.</string>
|
<string name="web_token_description">رمز الويب المستخدم لإنشاء غرف عامة. وهو سلسلة من 48 حرفًا تحتوي فقط على أحرف صغيرة من a-z.</string>
|
||||||
<string name="web_username">اسم مستخدم الويب</string>
|
<string name="web_username">اسم مستخدم الويب</string>
|
||||||
<string name="web_username_description">اسم المستخدم الذي سيظهر في قاعات اللعب الجماعي. يجب أن يتكون من 4 إلى 20 حرفًا، ويحتوي فقط على حروف أبجدية رقمية، وشرطات، ونقاط، وشرطة سفلية، ومسافات.</string>
|
<string name="web_username_description">اسم المستخدم الذي سيظهر في غرف الانتظار متعددة اللاعبين. يجب أن يتكون من 4 إلى 20 حرفًا، ويحتوي فقط على أحرف أبجدية رقمية وشرطات ونقاط وشرطات سفلية ومسافات.</string>
|
||||||
<string name="network">الشبكة</string>
|
<string name="network">الشبكة</string>
|
||||||
|
|
||||||
<!-- Graphics settings strings -->
|
<!-- Graphics settings strings -->
|
||||||
<string name="backend">الخلفية</string>
|
<string name="backend">الخلفية</string>
|
||||||
<string name="display">العرض</string>
|
<string name="display">الشاشة</string>
|
||||||
<string name="processing">المعالجة اللاحقة</string>
|
<string name="processing">تأثيرات بعد المعالجة</string>
|
||||||
|
|
||||||
<string name="frame_skipping">قيد التطوير: تخطي الإطارات</string>
|
<string name="frame_skipping">قيد التطوير: تخطي الإطارات</string>
|
||||||
<string name="frame_skipping_description">تبديل تخطي الإطارات لتحسين الأداء عن طريق تقليل عدد الإطارات المعروضة. هذه الميزة قيد التطوير وسيتم تمكينها في الإصدارات المستقبلية.</string>
|
<string name="frame_skipping_description">تبديل تخطي الإطارات لتحسين الأداء عن طريق تقليل عدد الإطارات المعروضة. هذه الميزة قيد التطوير وسيتم تمكينها في الإصدارات المستقبلية.</string>
|
||||||
<string name="renderer_accuracy">مستوى الدقة</string>
|
<string name="renderer_accuracy">مستوى الدقة</string>
|
||||||
<string name="renderer_resolution">(Handheld/Docked) الدقة</string>
|
<string name="renderer_resolution">الدقة (الإرساء/محمول)</string>
|
||||||
<string name="renderer_vsync">VSync وضع</string>
|
<string name="renderer_vsync">VSync وضع</string>
|
||||||
<string name="renderer_screen_layout">اتجاه العرض</string>
|
<string name="renderer_screen_layout">اتجاه العرض</string>
|
||||||
<string name="renderer_aspect_ratio">تناسب الابعاد</string>
|
<string name="renderer_aspect_ratio">نسبة العرض إلى الارتفاع</string>
|
||||||
<string name="renderer_scaling_filter">تصفية تكييف النافذة</string>
|
<string name="renderer_scaling_filter">مرشح ملائم للنافذة</string>
|
||||||
<string name="fsr_sharpness">حدة FSR</string>
|
<string name="fsr_sharpness">حدة FSR</string>
|
||||||
<string name="fsr_sharpness_description">تحديد مدى حدة الصورة عند استخدام FSR</string>
|
<string name="fsr_sharpness_description">يحدد مدى وضوح الصورة عند استخدام التباين الديناميكي لـ FSR</string>
|
||||||
<string name="renderer_anti_aliasing">طريقة مكافحة التعرج</string>
|
<string name="renderer_anti_aliasing">طريقة مضاد التعرج</string>
|
||||||
<string name="renderer_force_max_clock">إجبار السرعة القصوى (لأجهزة Adreno فقط)</string>
|
<string name="renderer_force_max_clock">إجبار السرعة القصوى (لأجهزة Adreno فقط)</string>
|
||||||
<string name="renderer_force_max_clock_description">يجبر وحدة معالجة الرسومات على العمل في أقصى الساعات الممكنة (سيستمر تطبيق القيود الحرارية).</string>
|
<string name="renderer_force_max_clock_description">يجبر وحدة معالجة الرسومات على العمل بأقصى سرعة ممكنة (سيظل يتم تطبيق القيود الحرارية).</string>
|
||||||
<string name="renderer_optimize_spirv_output">تحسين Spir-V</string>
|
<string name="renderer_optimize_spirv_output">تحسين إخراج Spir-V</string>
|
||||||
<string name="renderer_optimize_spirv_output_description">يحسن الشادر المترجم لزيادة كفاءة GPU.</string>
|
<string name="renderer_optimize_spirv_output_description">يعمل على تحسين أداء برامج التظليل المجمعة لتحسين كفاءة وحدة معالجة الرسومات، ولكنه قد يؤدي إلى زيادة وقت التحميل وإبطاء السرعة في البداية.</string>
|
||||||
<string name="renderer_asynchronous_shaders">استخدم تظليل غير متزامن</string>
|
<string name="renderer_asynchronous_shaders">استخدم تظليل غير متزامن</string>
|
||||||
<string name="renderer_asynchronous_shaders_description">تجميع الظلال بشكل غير متزامن. قد يقلل هذا من التقطع ولكنه قد يتسبب أيضًا في حدوث أخطاء.</string>
|
<string name="renderer_asynchronous_shaders_description">يقوم بتجميع التظليل بشكل غير متزامن. قد يقلل ذلك من التقطعات ولكنه قد يؤدي أيضًا إلى حدوث أخطاء.</string>
|
||||||
<string name="use_fast_gpu_time">استخدام وقت GPU السريع</string>
|
<string name="use_fast_gpu_time">استخدم وقت المعالج الرسومي السريع</string>
|
||||||
<string name="use_fast_gpu_time_description">يجبر معظم الألعاب على العمل بأعلى دقة أصلية. هذا الخيار غير مثبت وقد يسبب مشاكل.</string>
|
<string name="use_fast_gpu_time_description">يجبر معظم الألعاب على التشغيل بأعلى دقة أصلية لها. هذا الخيار غير آمن وقد يتسبب في مشاكل.</string>
|
||||||
<string name="fast_gpu_time">عامل زيادة سرعة GPU</string>
|
<string name="fast_gpu_time">عامل زيادة تردد وحدة معالجة الرسومات</string>
|
||||||
<string name="fast_gpu_time_description">استخدم 128 لأقصى أداء و512 لأقصى دقة رسومية.</string>
|
<string name="fast_gpu_time_description">استخدم 128 لأقصى أداء و512 لأقصى دقة رسومية.</string>
|
||||||
<string name="renderer_reactive_flushing">استخدم التنظيف التفاعلي</string>
|
<string name="renderer_reactive_flushing">استخدم التنظيف التفاعلي</string>
|
||||||
<string name="renderer_reactive_flushing_description">تحسين دقة العرض في بعض الألعاب على حساب الأداء</string>
|
<string name="renderer_reactive_flushing_description">يحسن دقة العرض في بعض الألعاب على حساب الأداء.</string>
|
||||||
<string name="use_disk_shader_cache">ذاكرة التخزين المؤقت للتظليل</string>
|
<string name="use_disk_shader_cache">ذاكرة التخزين المؤقت للتظليل</string>
|
||||||
<string name="use_disk_shader_cache_description">يقلل من التأتأة عن طريق تخزين وتحميل التظليلات التي تم إنشاؤها محليًا.</string>
|
<string name="use_disk_shader_cache_description">يقلل من التأتأة عن طريق تخزين وتحميل التظليلات التي تم إنشاؤها محليًا.</string>
|
||||||
<string name="anisotropic_filtering">تصفية متباينة الخواص</string>
|
<string name="anisotropic_filtering">تصفية متباينة الخواص</string>
|
||||||
<string name="anisotropic_filtering_description">تحسين جودة القوام عند الزوايا المائلة</string>
|
<string name="anisotropic_filtering_description">يحسن جودة الأنسجة عند عرضها بزوايا مائلة</string>
|
||||||
|
|
||||||
<string name="warning_resolution">تغيير دقة العرض إلى 2x أو أعلى قد يسبب مشاكل، وقد يؤدي إلى تباطؤ كبير في جهازك.</string>
|
<string name="warning_resolution">من المعروف أن تغيير الدقة إلى 2x أو أعلى يسبب مشاكل وقد يؤدي إلى إبطاء كبير في أداء جهازك.</string>
|
||||||
|
|
||||||
<!-- Debug settings strings -->
|
<!-- Debug settings strings -->
|
||||||
<string name="cpu">وحدة المعالج المركزية</string>
|
<string name="cpu">وحدة المعالج المركزية</string>
|
||||||
<string name="use_auto_stub">استخدم الملحق التلقائي</string>
|
<string name="use_auto_stub">استخدم الملحق التلقائي</string>
|
||||||
<string name="use_auto_stub_description">يقوم تلقائيًا بإضافة خدمات ووظائف ناقصة. قد يحسن التوافق ولكنه قد يتسبب في تعطل المشغل ومشاكل في الاستقرار.</string>
|
<string name="use_auto_stub_description">استبدال الخدمات والوظائف المفقودة تلقائيًا. قد يؤدي ذلك إلى تحسين التوافق، ولكنه قد يتسبب في حدوث أعطال ومشكلات في الاستقرار.</string>
|
||||||
|
|
||||||
<string name="gpu">وحدة معالجة الرسومات</string>
|
<string name="gpu">وحدة معالجة الرسومات</string>
|
||||||
<string name="renderer_api">واجهة برمجة التطبيقات</string>
|
<string name="renderer_api">واجهة برمجة التطبيقات</string>
|
||||||
<string name="renderer_debug">تصحيح الأخطاء الرسومية</string>
|
<string name="renderer_debug">تصحيح الأخطاء الرسومية</string>
|
||||||
<string name="renderer_debug_description">يضبط واجهة برمجة تطبيقات الرسومات على وضع تصحيح الأخطاء البطيء.</string>
|
<string name="renderer_debug_description">يضبط واجهة برمجة التطبيقات الرسومية على وضع تصحيح الأخطاء البطيء.</string>
|
||||||
<string name="fastmem">Fastmem</string>
|
<string name="fastmem">Fastmem</string>
|
||||||
|
|
||||||
<string name="log">التسجيل</string>
|
<string name="log">تسجيل الدخول</string>
|
||||||
<string name="flush_by_line">تفريغ سجلات التصحيح حسب السطر</string>
|
<string name="flush_by_line">تفريغ سجلات التصحيح حسب السطر</string>
|
||||||
<string name="flush_by_line_description">يفرغ سجلات التصحيح عند كتابة كل سطر، مما يجعل التصحيح أسهل في حالات التوقف أو التجميد.</string>
|
<string name="flush_by_line_description">يفرغ سجلات التصحيح عند كتابة كل سطر، مما يجعل التصحيح أسهل في حالات التوقف أو التجميد.</string>
|
||||||
|
|
||||||
@@ -527,53 +533,53 @@
|
|||||||
<string name="pressed">مضغوط</string>
|
<string name="pressed">مضغوط</string>
|
||||||
<string name="range">النطاق</string>
|
<string name="range">النطاق</string>
|
||||||
<string name="deadzone">المنطقة الميتة</string>
|
<string name="deadzone">المنطقة الميتة</string>
|
||||||
<string name="modifier">المعدل</string>
|
<string name="modifier">تعديل</string>
|
||||||
<string name="modifier_range">نطاق المعدل</string>
|
<string name="modifier_range">تعديل النطاق</string>
|
||||||
<string name="triggers">المحفزات</string>
|
<string name="triggers">المحفزات</string>
|
||||||
<string name="button_l">L</string>
|
<string name="button_l">L</string>
|
||||||
<string name="button_r">R</string>
|
<string name="button_r">R</string>
|
||||||
<string name="button_zl">ZL</string>
|
<string name="button_zl">ZL</string>
|
||||||
<string name="button_zr">ZR</string>
|
<string name="button_zr">ZR</string>
|
||||||
<string name="button_sl_left">Left SL</string>
|
<string name="button_sl_left">SL الأيسر</string>
|
||||||
<string name="button_sr_left">Left SR</string>
|
<string name="button_sr_left">SR الأيسر</string>
|
||||||
<string name="button_sl_right">Right SL</string>
|
<string name="button_sl_right">SL الأيمن</string>
|
||||||
<string name="button_sr_right">Right SR</string>
|
<string name="button_sr_right">SR الأيمن</string>
|
||||||
<string name="button_z">Z</string>
|
<string name="button_z">Z</string>
|
||||||
<string name="invalid">غير صالح</string>
|
<string name="invalid">غير صالح</string>
|
||||||
<string name="not_set">غير محدد</string>
|
<string name="not_set">غير محدد</string>
|
||||||
<string name="unknown">غير معروف</string>
|
<string name="unknown">غير معروف</string>
|
||||||
<string name="qualified_hat">%1$s%2$s%3$sHat %4$s</string>
|
<string name="qualified_hat">%1$s%2$s%3$sHat %4$s</string>
|
||||||
<string name="qualified_button_stick_axis">%1$s%2$s%3$sAxis %4$s</string>
|
<string name="qualified_button_stick_axis">%1$s%2$s%3$sالمحور %4$s</string>
|
||||||
<string name="qualified_button">%1$s%2$s%3$sزر %4$s</string>
|
<string name="qualified_button">%1$s%2$s%3$sزر %4$s</string>
|
||||||
<string name="qualified_axis">Axis %1$s%2$s</string>
|
<string name="qualified_axis">المحور %1$s%2$s</string>
|
||||||
<string name="unused">غير مستخدم</string>
|
<string name="unused">غير مستخدم</string>
|
||||||
<string name="input_mapping_filter">مرشح تعيين الإدخال</string>
|
<string name="input_mapping_filter">مرشح تعيين الإدخال</string>
|
||||||
<string name="input_mapping_filter_description">اختر جهازًا لتصفية مدخلات الخرائط</string>
|
<string name="input_mapping_filter_description">حدد جهازًا لتصفية مدخلات التعيين</string>
|
||||||
<string name="auto_map">تعيين ذراع التحكم تلقائيًا</string>
|
<string name="auto_map">تعيين ذراع التحكم تلقائيًا</string>
|
||||||
<string name="auto_map_description">حدد جهازًا لمحاولة رسم الخرائط التلقائية</string>
|
<string name="auto_map_description">حدد جهازًا لمحاولة التعيين التلقائي</string>
|
||||||
<string name="attempted_auto_map">تم محاولة التعيين التلقائي باستخدام %1$s</string>
|
<string name="attempted_auto_map">محاولة التعيين التلقائي مع %1$s</string>
|
||||||
<string name="controller_type">نوع ذراع التحكم</string>
|
<string name="controller_type">نوع ذراع التحكم</string>
|
||||||
<string name="pro_controller">Pro Controller</string>
|
<string name="pro_controller">Pro Controller</string>
|
||||||
<string name="handheld">محمول</string>
|
<string name="handheld">محمول</string>
|
||||||
<string name="dual_joycons">Dual Joycons</string>
|
<string name="dual_joycons">جوي كون ثنائي</string>
|
||||||
<string name="left_joycon">Left Joycon</string>
|
<string name="left_joycon">جوي كون اليسرى</string>
|
||||||
<string name="right_joycon">Right Joycon</string>
|
<string name="right_joycon">جوي كون اليمنى</string>
|
||||||
<string name="gamecube_controller">GameCube ذراع تحكم</string>
|
<string name="gamecube_controller">ذراع تحكم جيم كيوب</string>
|
||||||
<string name="invert_axis">Invert axis</string>
|
<string name="invert_axis">عكس المحور</string>
|
||||||
<string name="invert_button">Invert button</string>
|
<string name="invert_button">عكس الزر</string>
|
||||||
<string name="toggle_button">Toggle button</string>
|
<string name="toggle_button">زر التبديل</string>
|
||||||
<string name="turbo_button">Turbo button</string>
|
<string name="turbo_button">زر التوربو</string>
|
||||||
<string name="set_threshold">Set threshold</string>
|
<string name="set_threshold">تعيين الحد الفاصل</string>
|
||||||
<string name="toggle_axis">Toggle axis</string>
|
<string name="toggle_axis">تبديل المحور</string>
|
||||||
<string name="connected">متصل</string>
|
<string name="connected">متصل</string>
|
||||||
<string name="use_system_vibrator">استخدام هزاز النظام</string>
|
<string name="use_system_vibrator">استخدم هزاز النظام</string>
|
||||||
<string name="input_overlay">تراكب الإدخال</string>
|
<string name="input_overlay">تراكب الإدخال</string>
|
||||||
<string name="vibration">الاهتزاز</string>
|
<string name="vibration">الاهتزاز</string>
|
||||||
<string name="vibration_strength">قوة الاهتزاز</string>
|
<string name="vibration_strength">قوة الاهتزاز</string>
|
||||||
<string name="profile">الملف الشخصي</string>
|
<string name="profile">ملف التعريف</string>
|
||||||
<string name="create_new_profile">إنشاء ملف تعريف جديد</string>
|
<string name="create_new_profile">إنشاء ملف تعريف جديد</string>
|
||||||
<string name="enter_profile_name">أدخل اسم الملف الشخصي</string>
|
<string name="enter_profile_name">أدخل اسم ملف التعريف</string>
|
||||||
<string name="profile_name_already_exists">اسم الملف الشخصي موجود بالفعل</string>
|
<string name="profile_name_already_exists">اسم ملف التعريف موجود بالفعل</string>
|
||||||
<string name="invalid_profile_name">اسم ملف التعريف غير صالح</string>
|
<string name="invalid_profile_name">اسم ملف التعريف غير صالح</string>
|
||||||
<string name="use_global_input_configuration">استخدام تكوين الإدخال العام</string>
|
<string name="use_global_input_configuration">استخدام تكوين الإدخال العام</string>
|
||||||
<string name="player_num_profile">ملف تعريف%d اللاعب</string>
|
<string name="player_num_profile">ملف تعريف%d اللاعب</string>
|
||||||
@@ -581,8 +587,8 @@
|
|||||||
<string name="delete_input_profile_description">هل أنت متأكد من رغبتك في حذف ملف التعريف هذا؟ هذا غير قابل للاسترداد</string>
|
<string name="delete_input_profile_description">هل أنت متأكد من رغبتك في حذف ملف التعريف هذا؟ هذا غير قابل للاسترداد</string>
|
||||||
<string name="stick_map_description">حرك العصا إلى اليسار ثم للأعلى أو اضغط على زر</string>
|
<string name="stick_map_description">حرك العصا إلى اليسار ثم للأعلى أو اضغط على زر</string>
|
||||||
<string name="button_map_description">اضغط على زر أو حرك الزناد/العصا</string>
|
<string name="button_map_description">اضغط على زر أو حرك الزناد/العصا</string>
|
||||||
<string name="map_dpad_direction">Map to D-Pad %1$s</string>
|
<string name="map_dpad_direction">تعيين الأسهم %1$s</string>
|
||||||
<string name="map_control">Map to %1$s</string>
|
<string name="map_control">تعيين إلى%1$s</string>
|
||||||
<string name="failed_to_load_profile">فشل تحميل ملف التعريف</string>
|
<string name="failed_to_load_profile">فشل تحميل ملف التعريف</string>
|
||||||
<string name="failed_to_save_profile">فشل في حفظ ملف التعريف</string>
|
<string name="failed_to_save_profile">فشل في حفظ ملف التعريف</string>
|
||||||
<string name="reset_mapping">إعادة تعيين التعيينات</string>
|
<string name="reset_mapping">إعادة تعيين التعيينات</string>
|
||||||
@@ -592,7 +598,7 @@
|
|||||||
<string name="slider_default">افتراضي</string>
|
<string name="slider_default">افتراضي</string>
|
||||||
<string name="loading">جارٍ التحميل…</string>
|
<string name="loading">جارٍ التحميل…</string>
|
||||||
<string name="shutting_down">جارٍ إيقاف التشغيل...</string>
|
<string name="shutting_down">جارٍ إيقاف التشغيل...</string>
|
||||||
<string name="reset_setting_confirmation">هل تريد إعادة تعيين هذا الإعداد مرة أخرى إلى قيمته الافتراضية؟</string>
|
<string name="reset_setting_confirmation">هل تريد إعادة ضبط هذا الإعداد إلى قيمته الافتراضية؟</string>
|
||||||
<string name="reset_to_default">إعادة التعيين إلى الوضع الافتراضي</string>
|
<string name="reset_to_default">إعادة التعيين إلى الوضع الافتراضي</string>
|
||||||
<string name="reset_to_default_description">إعادة تعيين جميع الإعدادات المتقدمة</string>
|
<string name="reset_to_default_description">إعادة تعيين جميع الإعدادات المتقدمة</string>
|
||||||
<string name="reset_all_settings">إعادة تعيين جميع الإعدادات؟</string>
|
<string name="reset_all_settings">إعادة تعيين جميع الإعدادات؟</string>
|
||||||
@@ -607,7 +613,7 @@
|
|||||||
<string name="export">تصدير</string>
|
<string name="export">تصدير</string>
|
||||||
<string name="export_failed">فشل التصدير</string>
|
<string name="export_failed">فشل التصدير</string>
|
||||||
<string name="import_failed">فشل الاستيراد</string>
|
<string name="import_failed">فشل الاستيراد</string>
|
||||||
<string name="cancelling">إلغاء</string>
|
<string name="cancelling">الإلغاء</string>
|
||||||
<string name="install">تثبيت</string>
|
<string name="install">تثبيت</string>
|
||||||
<string name="fetch">جلب</string>
|
<string name="fetch">جلب</string>
|
||||||
<string name="delete">حذف</string>
|
<string name="delete">حذف</string>
|
||||||
@@ -615,7 +621,7 @@
|
|||||||
<string name="import_success">تم الاستيراد بنجاح</string>
|
<string name="import_success">تم الاستيراد بنجاح</string>
|
||||||
<string name="export_success">تم التصدير بنجاح</string>
|
<string name="export_success">تم التصدير بنجاح</string>
|
||||||
<string name="start">بدء</string>
|
<string name="start">بدء</string>
|
||||||
<string name="global">عالمي</string>
|
<string name="global">المتغيرات العامة</string>
|
||||||
<string name="custom">مخصص</string>
|
<string name="custom">مخصص</string>
|
||||||
<string name="import_complete">اكتمل الاستيراد</string>
|
<string name="import_complete">اكتمل الاستيراد</string>
|
||||||
<string name="use_global_setting">استخدام الإعداد العام</string>
|
<string name="use_global_setting">استخدام الإعداد العام</string>
|
||||||
@@ -628,16 +634,16 @@
|
|||||||
<string name="select_gpu_driver_default">افتراضي</string>
|
<string name="select_gpu_driver_default">افتراضي</string>
|
||||||
<string name="select_gpu_driver_error">تم تحديد برنامج تشغيل غير صالح</string>
|
<string name="select_gpu_driver_error">تم تحديد برنامج تشغيل غير صالح</string>
|
||||||
<string name="driver_already_installed">برنامج التشغيل مثبت بالفعل</string>
|
<string name="driver_already_installed">برنامج التشغيل مثبت بالفعل</string>
|
||||||
<string name="system_gpu_driver">تعريف معالج الرسومات الخاص بالنظام</string>
|
<string name="system_gpu_driver">برنامج تشغيل وحدة معالجة الرسومات للنظام</string>
|
||||||
<string name="installing_driver">جارٍ تثبيت التعريف...</string>
|
<string name="installing_driver">جارٍ تثبيت برنامج التشغيل…</string>
|
||||||
|
|
||||||
<!-- GPU driver fetcher -->
|
<!-- GPU driver fetcher -->
|
||||||
<string name="show_releases">عرض الإصدارات</string>
|
<string name="show_releases">عرض الإصدارات</string>
|
||||||
<string name="failed_to_fetch">فشل في الجلب</string>
|
<string name="failed_to_fetch">فشل في الجلب</string>
|
||||||
<string name="error_during_fetch">خطأ أثناء الجلب</string>
|
<string name="error_during_fetch">خطأ أثناء الجلب</string>
|
||||||
<string name="show_downloads">عرض التحميلات</string>
|
<string name="show_downloads">عرض التنزيلات</string>
|
||||||
<string name="hide_downloads">إخفاء التحميلات</string>
|
<string name="hide_downloads">إخفاء التنزيلات</string>
|
||||||
<string name="failed_cache_dir">دليل الذاكرة المؤقتة غير متاح</string>
|
<string name="failed_cache_dir">مجلد ذاكرة التخزين المؤقت غير متوفر</string>
|
||||||
<string name="empty_response_body">نص الاستجابة فارغ</string>
|
<string name="empty_response_body">نص الاستجابة فارغ</string>
|
||||||
<string name="successfully_installed">تم تثبيت %1$s بنجاح</string>
|
<string name="successfully_installed">تم تثبيت %1$s بنجاح</string>
|
||||||
<string name="driver_failed_title">فشل تثبيت برنامج التشغيل</string>
|
<string name="driver_failed_title">فشل تثبيت برنامج التشغيل</string>
|
||||||
@@ -647,16 +653,16 @@
|
|||||||
<string name="installing">جارٍ التثبيت...</string>
|
<string name="installing">جارٍ التثبيت...</string>
|
||||||
<string name="latest">الأحدث</string>
|
<string name="latest">الأحدث</string>
|
||||||
<string name="recommended_driver">برنامج التشغيل الموصى به:</string>
|
<string name="recommended_driver">برنامج التشغيل الموصى به:</string>
|
||||||
<string name="gpu_model">طراز GPU:</string>
|
<string name="gpu_model">طراز وحدة معالجة الرسومات:</string>
|
||||||
<string name="unsupported_gpu">GPU غير مدعوم</string>
|
<string name="unsupported_gpu">وحدة معالجة الرسومات غير مدعومة</string>
|
||||||
<string name="unsupported_gpu_warning">GPU الخاص بك لا يدعم حقن برنامج التشغيل. لا يُنصح بمحاولة تعيين برامج تشغيل مخصصة.</string>
|
<string name="unsupported_gpu_warning">لا تدعم وحدة معالجة الرسومات الخاصة بك إدخال برامج التشغيل. لا يُنصح بمحاولة تعيين برامج تشغيل مخصصة.</string>
|
||||||
|
|
||||||
<!-- Preferences Screen -->
|
<!-- Preferences Screen -->
|
||||||
<string name="preferences_settings">إعدادات</string>
|
<string name="preferences_settings">الإعدادات</string>
|
||||||
<string name="preferences_system">النظام</string>
|
<string name="preferences_system">النظام</string>
|
||||||
<string name="preferences_system_description">وضع الإرساء، المنطقة، اللغة</string>
|
<string name="preferences_system_description">وضع الإرساء، المنطقة، اللغة</string>
|
||||||
<string name="preferences_graphics">الرسومات</string>
|
<string name="preferences_graphics">الرسومات</string>
|
||||||
<string name="preferences_graphics_description">مستوى الدقة ،الدقة ،ذاكرة التخزين المؤقت للتظليل</string>
|
<string name="preferences_graphics_description">مستوى الدقة، الدقة، ذاكرة التخزين المؤقتة للتظليل</string>
|
||||||
<string name="preferences_audio">الصوت</string>
|
<string name="preferences_audio">الصوت</string>
|
||||||
<string name="preferences_audio_description">محرك الإخراج، حجم الصوت</string>
|
<string name="preferences_audio_description">محرك الإخراج، حجم الصوت</string>
|
||||||
<string name="preferences_controls">عناصر التحكم</string>
|
<string name="preferences_controls">عناصر التحكم</string>
|
||||||
@@ -667,17 +673,17 @@
|
|||||||
|
|
||||||
<!-- Game properties -->
|
<!-- Game properties -->
|
||||||
<string name="info">معلومات</string>
|
<string name="info">معلومات</string>
|
||||||
<string name="info_description">معرف البرنامج، المطور، الإصدار</string>
|
<string name="info_description">معرف العنوان، المطور، الإصدار</string>
|
||||||
<string name="per_game_settings">إعدادات خاصة للعبة</string>
|
<string name="per_game_settings">إعدادات خاصة للعبة</string>
|
||||||
<string name="per_game_settings_description">تعديل الإعدادات الخاصة بهذه اللعبة</string>
|
<string name="per_game_settings_description">تعديل الإعدادات الخاصة بهذه اللعبة</string>
|
||||||
<string name="launch_options">تشغيل الإعدادات</string>
|
<string name="launch_options">تشغيل التكوين</string>
|
||||||
<string name="path">المسار</string>
|
<string name="path">المسار</string>
|
||||||
<string name="program_id">معرف العنوان</string>
|
<string name="program_id">معرف العنوان</string>
|
||||||
<string name="developer">المطور</string>
|
<string name="developer">المطور</string>
|
||||||
<string name="version">الإصدار</string>
|
<string name="version">الإصدار</string>
|
||||||
<string name="copy_details">نسخ التفاصيل</string>
|
<string name="copy_details">نسخ التفاصيل</string>
|
||||||
<string name="add_ons">الإضافات</string>
|
<string name="add_ons">الإضافات</string>
|
||||||
<string name="add_ons_description">التعديلات والتحديثات والمحتوى القابل للتنزيل</string>
|
<string name="add_ons_description">التعديلات، التحديثات، المحتوى القابل للتنزيل</string>
|
||||||
<string name="playtime">زمن اللعب: </string>
|
<string name="playtime">زمن اللعب: </string>
|
||||||
<string name="reset_playtime">مسح زمن اللعب</string>
|
<string name="reset_playtime">مسح زمن اللعب</string>
|
||||||
<string name="reset_playtime_description">إعادة ضبط زمن اللعب الحالي للعبة إلى 0 ثانية</string>
|
<string name="reset_playtime_description">إعادة ضبط زمن اللعب الحالي للعبة إلى 0 ثانية</string>
|
||||||
@@ -699,46 +705,46 @@
|
|||||||
<string name="save_data_description">إدارة حفظ البيانات الخاصة بهذه اللعبة</string>
|
<string name="save_data_description">إدارة حفظ البيانات الخاصة بهذه اللعبة</string>
|
||||||
<string name="delete_save_data">حذف حفظ البيانات</string>
|
<string name="delete_save_data">حذف حفظ البيانات</string>
|
||||||
<string name="delete_save_data_description">يزيل كافة البيانات المحفوظة الخاصة بهذه اللعبة</string>
|
<string name="delete_save_data_description">يزيل كافة البيانات المحفوظة الخاصة بهذه اللعبة</string>
|
||||||
<string name="delete_save_data_warning_description">يؤدي هذا إلى إزالة كافة البيانات المحفوظة لهذه اللعبة بشكل لا يمكن استرداده. هل أنت متأكد أنك تريد الاستمرار؟</string>
|
<string name="delete_save_data_warning_description">سيؤدي هذا إلى حذف جميع بيانات حفظ اللعبة بشكل نهائي. هل أنت متأكد من أنك تريد المتابعة؟</string>
|
||||||
<string name="save_data_deleted_successfully">تم حذف تخزين اللعبة بنجاح</string>
|
<string name="save_data_deleted_successfully">تم حذف البيانات المحفوظة بنجاح</string>
|
||||||
<string name="select_content_type">نوع المحتوى</string>
|
<string name="select_content_type">نوع المحتوى</string>
|
||||||
<string name="updates_and_dlc">التحديثات والمحتوى القابل للتنزيل</string>
|
<string name="updates_and_dlc">التحديثات والمحتوى القابل للتنزيل</string>
|
||||||
<string name="mods_and_cheats">التعديلات والغش</string>
|
<string name="mods_and_cheats">التعديلات والغش</string>
|
||||||
<string name="addon_notice">إشعار إضافي مهم</string>
|
<string name="addon_notice">إشعار إضافي مهم</string>
|
||||||
<!-- \"cheats/" "romfs/" and \"exefs/ should not be translated -->
|
<!-- \"cheats/" "romfs/" and \"exefs/ should not be translated -->
|
||||||
<string name="addon_notice_description">لتثبيت التعديلات والغش، يجب عليك اختيار مجلد يحتوي على ملفات cheats/ أو romfs/ أو exefs/. لا يمكننا التأكد من توافق هذه الملفات مع لعبتك، لذا كن حذرًا!</string>
|
<string name="addon_notice_description">لتثبيت التعديلات والغش، يجب عليك تحديد مجلد يحتوي على دليل cheats/ أو romfs/ أو exefs/. لا يمكننا التحقق من توافق هذه الملفات مع لعبتك، لذا كن حذراً!</string>
|
||||||
<string name="invalid_directory">مجلد غير صالح</string>
|
<string name="invalid_directory">مجلد غير صالح</string>
|
||||||
<!-- \"cheats/" "romfs/" and \"exefs/ should not be translated -->
|
<!-- \"cheats/" "romfs/" and \"exefs/ should not be translated -->
|
||||||
<string name="invalid_directory_description">يرجى التأكد من أن الدليل الذي حددته يحتوي على مجلد cheats/ أو romfs/ أو exefs/ ثم حاول مرة أخرى.</string>
|
<string name="invalid_directory_description">يرجى التأكد من أن الدليل الذي حددته يحتوي على مجلد cheats/ أو romfs/ أو exefs/ ثم حاول مرة أخرى.</string>
|
||||||
<string name="addon_installed_successfully">تم تثبيت الملحق بنجاح</string>
|
<string name="addon_installed_successfully">تم تثبيت الإضافة بنجاح</string>
|
||||||
<string name="verifying_content">جارٍ التحقق من المحتوى…</string>
|
<string name="verifying_content">جارٍ التحقق من المحتوى…</string>
|
||||||
<string name="content_install_notice">إشعار تثبيت المحتوى</string>
|
<string name="content_install_notice">إشعار تثبيت المحتوى</string>
|
||||||
<string name="content_install_notice_description">المحتوى الذي اخترته لا يتوافق مع هذه اللعبة.\n هل ترغب في التثبيت على أي حال؟</string>
|
<string name="content_install_notice_description">المحتوى الذي اخترته لا يتوافق مع هذه اللعبة.\n هل ترغب في التثبيت على أي حال؟</string>
|
||||||
<string name="confirm_uninstall">تأكيد إلغاء التثبيت</string>
|
<string name="confirm_uninstall">تأكيد إلغاء التثبيت</string>
|
||||||
<string name="confirm_uninstall_description">هل أنت متأكد من أنك تريد إلغاء تثبيت هذا الملحق؟</string>
|
<string name="confirm_uninstall_description">هل أنت متأكد من أنك تريد إلغاء تثبيت هذا الإضافة؟</string>
|
||||||
<string name="verify_integrity">التحقق من السلامة</string>
|
<string name="verify_integrity">التحقق من السلامة</string>
|
||||||
<string name="verifying">جارٍ التحقق...</string>
|
<string name="verifying">جارٍ التحقق...</string>
|
||||||
<string name="verify_success">نجح التحقق من السلامة!</string>
|
<string name="verify_success">تم التحقق من السلامة بنجاح!</string>
|
||||||
<string name="verify_failure">فشل التحقق من السلامة!</string>
|
<string name="verify_failure">فشل التحقق من السلامة!</string>
|
||||||
<string name="verify_failure_description">قد تكون محتويات الملف تالفة</string>
|
<string name="verify_failure_description">قد تكون محتويات الملف تالفة</string>
|
||||||
<string name="verify_no_result">تعذر التحقق من السلامة</string>
|
<string name="verify_no_result">تعذر إجراء التحقق من السلامة</string>
|
||||||
<string name="verify_no_result_description">لم يتم التحقق من صحة محتويات الملف</string>
|
<string name="verify_no_result_description">لم يتم التحقق من صحة محتويات الملف</string>
|
||||||
<string name="verification_failed_for">فشل التحقق من الملفات التالية:\n%1$s</string>
|
<string name="verification_failed_for">فشل التحقق من الملفات التالية:\n%1$s</string>
|
||||||
<string name="share_game_settings">مشاركة الإعدادات</string>
|
<string name="share_game_settings">مشاركة التكوين</string>
|
||||||
<string name="import_config">استيراد الإعدادات</string>
|
<string name="import_config">استيراد التكوين</string>
|
||||||
<string name="export_config">تصدير الإعدادات</string>
|
<string name="export_config">تصدير التكوين</string>
|
||||||
<string name="share_config_failed">فشل مشاركة ملف الإعدادات</string>
|
<string name="share_config_failed">فشل مشاركة ملف التكوين</string>
|
||||||
|
|
||||||
<!-- ROM loading errors -->
|
<!-- ROM loading errors -->
|
||||||
<string name="loader_error_encrypted">الخاص بك ROM تم تشفير</string>
|
<string name="loader_error_encrypted">ROM الخاص بك مشفر</string>
|
||||||
<string name="loader_error_encrypted_roms_description"><![CDATA[يرجى اتباع الأدلة لإعادة نسخ <a href=\"https://yuzu-mirror.github.io/help/quickstart/#dumping-physical-titles-game-cards\">ألعاب البطاقات</a> أو <a href=\"https://yuzu-mirror.github.io/help/quickstart/#dumping-digital-titles-eshop\">العناوين الرقمية</a>.]]></string>
|
<string name="loader_error_encrypted_roms_description"><![CDATA[يرجى اتباع الإرشادات لإعادة نسخ <a href=\"https://yuzu-mirror.github.io/help/quickstart/#dumping-physical-titles-game-cards\">بطاقات الألعاب </a> أو <a href=\"https://yuzu-mirror.github.io/help/quickstart/#dumping-digital-titles-eshop\">الألعاب المثبتة</a>.]]></string>
|
||||||
<string name="loader_error_encrypted_keys_description"><![CDATA[تأكد من تثبيت <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-prodkeys-and-titlekeys\">prod.keys</a>]]></string>
|
<string name="loader_error_encrypted_keys_description"><![CDATA[تأكد من تثبيت <a href=\"https://yuzu-emu.org/help/quickstart/#dumping-prodkeys-and-titlekeys\">prod.keys</a>]]></string>
|
||||||
<string name="loader_error_video_core">حدث خطأ أثناء تهيئة مركز الفيديو</string>
|
<string name="loader_error_video_core">حدث خطأ أثناء تهيئة نواة الفيديو</string>
|
||||||
<string name="loader_error_video_core_description">قد يكون بسبب تعريف GPU غير متوافق</string>
|
<string name="loader_error_video_core_description">عادةً ما يكون هذا ناتجًا عن برنامج تشغيل وحدة معالجة الرسومات غير متوافق. قد يؤدي تثبيت برنامج تشغيل مخصص لوحدة معالجة الرسومات إلى حل هذه المشكلة.</string>
|
||||||
<string name="loader_error_file_not_found">غير موجود ROM ملف</string>
|
<string name="loader_error_file_not_found">ملف ROM غير موجود</string>
|
||||||
|
|
||||||
<string name="loader_requires_firmware">اللعبة تتطلب فريموير</string>
|
<string name="loader_requires_firmware">اللعبة تتطلب الفيرموير</string>
|
||||||
<string name="loader_requires_firmware_description"><![CDATA[اللعبة التي تحاول تشغيلها تتطلب فريموير للتمهيد أو لتجاوز القائمة الافتتاحية. يرجى <a href=\"https://yuzu-mirror.github.io/help/quickstart\">نسخ وتثبيت فريموير</a>، أو اضغط \"موافق\" للمتابعة على أي حال.]]></string>
|
<string name="loader_requires_firmware_description"><![CDATA[اللعبة التي تحاول تشغيلها تتطلب الفيرموير للتمهيد أو لتجاوز القائمة الافتتاحية. يرجى <a href=\"https://yuzu-mirror.github.io/help/quickstart\">نسخ وتثبيت الفيرموير</a>، أو اضغط \"موافق\" للمتابعة على أي حال.]]></string>
|
||||||
|
|
||||||
<!-- Intent Launch strings -->
|
<!-- Intent Launch strings -->
|
||||||
<string name="searching_for_game">جارٍ البحث عن اللعبة...</string>
|
<string name="searching_for_game">جارٍ البحث عن اللعبة...</string>
|
||||||
@@ -747,20 +753,20 @@
|
|||||||
<string name="custom_settings_failed_message">فشل تطبيق الإعدادات المخصصة لـ %1$s: %2$s</string>
|
<string name="custom_settings_failed_message">فشل تطبيق الإعدادات المخصصة لـ %1$s: %2$s</string>
|
||||||
<string name="launch_with_default_settings">التشغيل بالإعدادات الافتراضية</string>
|
<string name="launch_with_default_settings">التشغيل بالإعدادات الافتراضية</string>
|
||||||
<string name="launch_cancelled">تم إلغاء التشغيل</string>
|
<string name="launch_cancelled">تم إلغاء التشغيل</string>
|
||||||
<string name="custom_settings_failure_reasons">تعذر تطبيق الإعدادات المطلوبة. قد يكون ذلك بسبب فقدان برامج تشغيل GPU أو مشكلات في التكوين.</string>
|
<string name="custom_settings_failure_reasons">غير قادر على تطبيق الإعدادات المطلوبة. قد يكون ذلك بسبب نقص برامج تشغيل وحدة معالجة الرسومات أو مشكلات في التكوين.</string>
|
||||||
<string name="custom_settings_applied">تم تطبيق الإعدادات المخصصة</string>
|
<string name="custom_settings_applied">تم تطبيق الإعدادات المخصصة</string>
|
||||||
<string name="launching_game">جارٍ التشغيل %1$s...</string>
|
<string name="launching_game">جارٍ التشغيل %1$s...</string>
|
||||||
<string name="failed_to_initialize_game">فشل تهيئة اللعبة</string>
|
<string name="failed_to_initialize_game">فشل في تهيئة اللعبة</string>
|
||||||
<string name="custom_intent_launch_message_with_settings">هل تريد تشغيل %1$s بالإعدادات المخصصة؟</string>
|
<string name="custom_intent_launch_message_with_settings">هل ترغب في التشغيل %1$s بإعدادات مخصصة؟</string>
|
||||||
<string name="custom_intent_launch_message">هل تريد تشغيل %1$s؟</string>
|
<string name="custom_intent_launch_message">هل ترغب في التشغيل %1$s؟</string>
|
||||||
<string name="custom_intent_launch_title">تشغيل اللعبة</string>
|
<string name="custom_intent_launch_title">تشغيل اللعبة</string>
|
||||||
<string name="launch">تشغيل</string>
|
<string name="launch">تشغيل</string>
|
||||||
|
|
||||||
<!-- Custom Config strings -->
|
<!-- Custom Config strings -->
|
||||||
<string name="config_write_failed">فشل كتابة ملف التهيئة</string>
|
<string name="config_write_failed">فشل كتابة ملف التكوين</string>
|
||||||
<string name="config_apply_failed">فشل تطبيق التهيئة</string>
|
<string name="config_apply_failed">فشل تطبيق التكوين</string>
|
||||||
<string name="config_already_exists_title">التهيئة موجودة بالفعل</string>
|
<string name="config_already_exists_title">التكوين موجود بالفعل</string>
|
||||||
<string name="config_already_exists_message">الإعدادات المخصصة موجودة بالفعل لـ \'%1$s\' .\n\nهل ترغب في استبدال التكوين الحالي؟\n\nلا يمكن التراجع عن هذا الإجراء.</string>
|
<string name="config_already_exists_message">توجد إعدادات مخصصة بالفعل لـ \'%1$s\' .\n\nهل ترغب في استبدال التكوين الحالي؟\n\nلا يمكن التراجع عن هذا الإجراء.</string>
|
||||||
<string name="config_exists_prompt">جارٍ التحقق من التكوين الحالي...</string>
|
<string name="config_exists_prompt">جارٍ التحقق من التكوين الحالي...</string>
|
||||||
<string name="overwrite_cancelled">تم إلغاء الاستبدال</string>
|
<string name="overwrite_cancelled">تم إلغاء الاستبدال</string>
|
||||||
<string name="overwrite">استبدال</string>
|
<string name="overwrite">استبدال</string>
|
||||||
@@ -768,7 +774,7 @@
|
|||||||
<!-- Driver strings -->
|
<!-- Driver strings -->
|
||||||
<string name="driver_not_found">برنامج التشغيل المطلوب غير مثبت: %s</string>
|
<string name="driver_not_found">برنامج التشغيل المطلوب غير مثبت: %s</string>
|
||||||
<string name="invalid_driver_file">ملف برنامج تشغيل غير صالح: %s</string>
|
<string name="invalid_driver_file">ملف برنامج تشغيل غير صالح: %s</string>
|
||||||
<string name="network_unavailable">لا يوجد اتصال بالشبكة. يرجى التحقق من اتصال الإنترنت والمحاولة مرة أخرى.</string>
|
<string name="network_unavailable">لا يوجد اتصال بالشبكة. يرجى التحقق من اتصالك بالإنترنت والمحاولة مرة أخرى.</string>
|
||||||
<string name="driver_missing_title">مطلوب برنامج تشغيل وحدة معالجة الرسومات</string>
|
<string name="driver_missing_title">مطلوب برنامج تشغيل وحدة معالجة الرسومات</string>
|
||||||
<string name="driver_missing_message">يتطلب إعداد اللعبة برنامج تشغيل وحدة معالجة الرسومات \"\'%s\'\" وهو غير مُثبّت على جهازك.\n\nهل ترغب بتنزيله وتثبيته الآن؟</string>
|
<string name="driver_missing_message">يتطلب إعداد اللعبة برنامج تشغيل وحدة معالجة الرسومات \"\'%s\'\" وهو غير مُثبّت على جهازك.\n\nهل ترغب بتنزيله وتثبيته الآن؟</string>
|
||||||
<string name="driver_download_cancelled">تم إلغاء تنزيل برنامج التشغيل. لا يمكن تشغيل اللعبة بدون برنامج التشغيل المطلوب.</string>
|
<string name="driver_download_cancelled">تم إلغاء تنزيل برنامج التشغيل. لا يمكن تشغيل اللعبة بدون برنامج التشغيل المطلوب.</string>
|
||||||
@@ -777,9 +783,9 @@
|
|||||||
<!-- Emulation Menu -->
|
<!-- Emulation Menu -->
|
||||||
<string name="emulation_exit">خروج من المحاكاة</string>
|
<string name="emulation_exit">خروج من المحاكاة</string>
|
||||||
<string name="emulation_done">إنهاء</string>
|
<string name="emulation_done">إنهاء</string>
|
||||||
<string name="emulation_toggle_controls">عناصر التحكم</string>
|
<string name="emulation_toggle_controls">تبديل عناصر التحكم</string>
|
||||||
<string name="emulation_rel_stick_center">مركز العصا النسبي</string>
|
<string name="emulation_rel_stick_center">مركز العصا النسبي</string>
|
||||||
<string name="emulation_dpad_slide">مزلاق الأسهم</string>
|
<string name="emulation_dpad_slide">انزلاق الأسهم</string>
|
||||||
<string name="emulation_haptics">الاهتزازات الديناميكية</string>
|
<string name="emulation_haptics">الاهتزازات الديناميكية</string>
|
||||||
<string name="emulation_show_overlay">عرض ذراع التحكم</string>
|
<string name="emulation_show_overlay">عرض ذراع التحكم</string>
|
||||||
<string name="emulation_hide_overlay">إخفاء ذراع التحكم</string>
|
<string name="emulation_hide_overlay">إخفاء ذراع التحكم</string>
|
||||||
@@ -792,18 +798,28 @@
|
|||||||
<string name="emulation_pause">إيقاف المحاكاة مؤقتًا</string>
|
<string name="emulation_pause">إيقاف المحاكاة مؤقتًا</string>
|
||||||
<string name="emulation_unpause">إلغاء الإيقاف المؤقت للمحاكاة</string>
|
<string name="emulation_unpause">إلغاء الإيقاف المؤقت للمحاكاة</string>
|
||||||
<string name="emulation_input_overlay">خيارات التراكب</string>
|
<string name="emulation_input_overlay">خيارات التراكب</string>
|
||||||
|
<string name="load_amiibo">تحميل أميبو</string>
|
||||||
<string name="touchscreen">شاشة اللمس</string>
|
<string name="touchscreen">شاشة اللمس</string>
|
||||||
<string name="lock_drawer">قفل الدرج</string>
|
<string name="lock_drawer">قفل الدرج</string>
|
||||||
<string name="unlock_drawer">فتح الدرج</string>
|
<string name="unlock_drawer">فتح الدرج</string>
|
||||||
<string name="reset">إعادة الضبط</string>
|
<string name="reset">إعادة الضبط</string>
|
||||||
|
|
||||||
|
<!-- Amiibo -->
|
||||||
|
<string name="amiibo_title">أميبو</string>
|
||||||
|
<string name="amiibo_removed_message">تمت إزالة أميبو الحالي.</string>
|
||||||
|
<string name="amiibo_wrong_state">اللعبة الحالية لا تبحث عن أميبو</string>
|
||||||
|
<string name="amiibo_not_valid">الملف المحدد ليس أميبو صالح</string>
|
||||||
|
<string name="amiibo_in_use">الملف المحدد قيد الاستخدام بالفعل</string>
|
||||||
|
<string name="amiibo_unknown_error">حدث خطأ غير معروف</string>
|
||||||
|
<string name="amiibo_load_success">أميبو محملة</string>
|
||||||
|
|
||||||
|
|
||||||
<!-- Software keyboard -->
|
<!-- Software keyboard -->
|
||||||
<string name="software_keyboard">لوحة المفاتيح البرمجية</string>
|
<string name="software_keyboard">لوحة المفاتيح البرمجية</string>
|
||||||
|
|
||||||
<!-- Errors and warnings -->
|
<!-- Errors and warnings -->
|
||||||
<string name="abort_button">إلغاء</string>
|
<string name="abort_button">إلغاء</string>
|
||||||
<string name="continue_button">استمر</string>
|
<string name="continue_button">متابعة</string>
|
||||||
<string name="system_archive_not_found">لم يتم العثور على أرشيف النظام</string>
|
<string name="system_archive_not_found">لم يتم العثور على أرشيف النظام</string>
|
||||||
<string name="system_archive_not_found_message">%sمفقود. يرجى تفريغ أرشيفات النظام.\nقد يؤدي استمرار المحاكاة إلى حدوث أعطال.</string>
|
<string name="system_archive_not_found_message">%sمفقود. يرجى تفريغ أرشيفات النظام.\nقد يؤدي استمرار المحاكاة إلى حدوث أعطال.</string>
|
||||||
<string name="system_archive_general">أرشيف النظام</string>
|
<string name="system_archive_general">أرشيف النظام</string>
|
||||||
@@ -812,7 +828,7 @@
|
|||||||
<string name="fatal_error_message">حدث خطأ فادح. تحقق من السجل للحصول على التفاصيل.\nقد يؤدي استمرار المحاكاة إلى حدوث أعطال.</string>
|
<string name="fatal_error_message">حدث خطأ فادح. تحقق من السجل للحصول على التفاصيل.\nقد يؤدي استمرار المحاكاة إلى حدوث أعطال.</string>
|
||||||
<string name="device_memory_inadequate">ذاكرة الوصول العشوائي للجهاز: %1$s\nموصى به: %2$s</string>
|
<string name="device_memory_inadequate">ذاكرة الوصول العشوائي للجهاز: %1$s\nموصى به: %2$s</string>
|
||||||
<string name="memory_formatted">%1$s %2$s</string>
|
<string name="memory_formatted">%1$s %2$s</string>
|
||||||
<string name="no_game_present">لا توجد لعبة قابلة للتمهيد</string>
|
<string name="no_game_present">لا توجد لعبة قابلة للتشغيل!</string>
|
||||||
|
|
||||||
<!-- Region Names -->
|
<!-- Region Names -->
|
||||||
<string name="region_japan">اليابان</string>
|
<string name="region_japan">اليابان</string>
|
||||||
@@ -851,13 +867,13 @@
|
|||||||
<string name="memory_exabyte">إكسابايت</string>
|
<string name="memory_exabyte">إكسابايت</string>
|
||||||
|
|
||||||
<!-- Renderer APIs -->
|
<!-- Renderer APIs -->
|
||||||
<string name="renderer_vulkan">فولكان</string>
|
<string name="renderer_vulkan">Vulkan</string>
|
||||||
<string name="renderer_none">لاشيء</string>
|
<string name="renderer_none">لاشيء</string>
|
||||||
|
|
||||||
<!-- Renderer Accuracy -->
|
<!-- Renderer Accuracy -->
|
||||||
<string name="renderer_accuracy_normal">عادي</string>
|
<string name="renderer_accuracy_normal">عادي</string>
|
||||||
<string name="renderer_accuracy_high">عالي</string>
|
<string name="renderer_accuracy_high">عالي</string>
|
||||||
<string name="renderer_accuracy_extreme">أقصى حد</string>
|
<string name="renderer_accuracy_extreme">أقصى</string>
|
||||||
|
|
||||||
<!-- DMA Accuracy -->
|
<!-- DMA Accuracy -->
|
||||||
<string name="dma_accuracy_default">افتراضي</string>
|
<string name="dma_accuracy_default">افتراضي</string>
|
||||||
@@ -866,16 +882,16 @@
|
|||||||
|
|
||||||
<!-- ASTC Decoding Method -->
|
<!-- ASTC Decoding Method -->
|
||||||
<string name="accelerate_astc">طريقة فك ضغط ASTC</string>
|
<string name="accelerate_astc">طريقة فك ضغط ASTC</string>
|
||||||
<string name="accelerate_astc_description">اختر كيفية فك ضغط نسيج ASTC للعرض: CPU (بطيء، آمن)، GPU (سريع، موصى به)، أو CPU Async (بدون توقف، قد يسبب مشاكل)</string>
|
<string name="accelerate_astc_description">حدد كيفية فك ضغط نسيج ASTC للعرض: CPU (بطيء، آمن)، GPU (سريع، موصى به)، أو CPU Async (بدون توقف، قد يسبب مشاكل)</string>
|
||||||
|
|
||||||
<!-- ASTC Decoding Method Choices -->
|
<!-- ASTC Decoding Method Choices -->
|
||||||
<string name="accelerate_astc_cpu">وحدة المعالجة المركزية</string>
|
<string name="accelerate_astc_cpu">وحدة المعالجة المركزية</string>
|
||||||
<string name="accelerate_astc_gpu">وحدة المعالجة الرسومية</string>
|
<string name="accelerate_astc_gpu">وحدة معالجة الرسومات</string>
|
||||||
<string name="accelerate_astc_async">وحدة المعالجة المركزية غير المتزامنة</string>
|
<string name="accelerate_astc_async">وحدة المعالجة المركزية غير المتزامنة</string>
|
||||||
|
|
||||||
<!-- ASTC Recompression Method -->
|
<!-- ASTC Recompression Method -->
|
||||||
<string name="astc_recompression">طريقة إعادة ضغط ASTC</string>
|
<string name="astc_recompression">طريقة إعادة ضغط ASTC</string>
|
||||||
<string name="astc_recompression_description">اختر كيفية إعادة ضغط نسيج ASTC لتحسين التوافق والأداء. تمكين هذا الخيار يوفر VRAM ولكن قد يقلل من جودة النسيج.</string>
|
<string name="astc_recompression_description">حدد كيفية إعادة ضغط نسيج ASTC لتحسين التوافق والأداء. تمكين هذا الخيار يوفر VRAM ولكن قد يقلل من جودة النسيج.</string>
|
||||||
|
|
||||||
<!-- ASTC Recompression Method Choices -->
|
<!-- ASTC Recompression Method Choices -->
|
||||||
<string name="astc_recompression_uncompressed">غير مضغوط</string>
|
<string name="astc_recompression_uncompressed">غير مضغوط</string>
|
||||||
@@ -883,8 +899,8 @@
|
|||||||
<string name="astc_recompression_bc3">BC3 (جودة متوسطة)</string>
|
<string name="astc_recompression_bc3">BC3 (جودة متوسطة)</string>
|
||||||
|
|
||||||
<!-- ASTC Recompression Method Choices -->
|
<!-- ASTC Recompression Method Choices -->
|
||||||
<string name="vram_usage_mode">وضع استخدام VRAM</string>
|
<string name="vram_usage_mode">وضع استخدام ذاكرة VRAM</string>
|
||||||
<string name="vram_usage_mode_description">تحكم في مدى قوة المحاكي في تخصيص وتحرير ذاكرة GPU.</string>
|
<string name="vram_usage_mode_description">تحكم في مدى قوة تخصيص المحاكي لذاكرة وحدة معالجة الرسومات وتحريرها.</string>
|
||||||
<string name="vram_usage_conservative">محافظ</string>
|
<string name="vram_usage_conservative">محافظ</string>
|
||||||
<string name="vram_usage_aggressive">عدواني</string>
|
<string name="vram_usage_aggressive">عدواني</string>
|
||||||
|
|
||||||
@@ -900,7 +916,7 @@
|
|||||||
<string name="resolution_four">4X (2880p/4320p) (بطيء)</string>
|
<string name="resolution_four">4X (2880p/4320p) (بطيء)</string>
|
||||||
|
|
||||||
<!-- Renderer VSync -->
|
<!-- Renderer VSync -->
|
||||||
<string name="renderer_vsync_immediate">Immediate (إيقاف)</string>
|
<string name="renderer_vsync_immediate">Immediate (Off)</string>
|
||||||
<string name="renderer_vsync_mailbox">Mailbox</string>
|
<string name="renderer_vsync_mailbox">Mailbox</string>
|
||||||
<string name="renderer_vsync_fifo">FIFO (On)</string>
|
<string name="renderer_vsync_fifo">FIFO (On)</string>
|
||||||
<string name="renderer_vsync_fifo_relaxed">FIFO Relaxed</string>
|
<string name="renderer_vsync_fifo_relaxed">FIFO Relaxed</string>
|
||||||
@@ -939,7 +955,7 @@
|
|||||||
<string name="ratio_force_four_three">4:3 فرض</string>
|
<string name="ratio_force_four_three">4:3 فرض</string>
|
||||||
<string name="ratio_force_twenty_one_nine">21:9 فرض</string>
|
<string name="ratio_force_twenty_one_nine">21:9 فرض</string>
|
||||||
<string name="ratio_force_sixteen_ten">16:10 فرض</string>
|
<string name="ratio_force_sixteen_ten">16:10 فرض</string>
|
||||||
<string name="ratio_stretch">تمتد إلى النافذة</string>
|
<string name="ratio_stretch">تمديد إلى النافذة</string>
|
||||||
|
|
||||||
<!-- CPU Backend -->
|
<!-- CPU Backend -->
|
||||||
<string name="cpu_backend_dynarmic">Dynarmic (JIT)</string>
|
<string name="cpu_backend_dynarmic">Dynarmic (JIT)</string>
|
||||||
@@ -956,7 +972,7 @@
|
|||||||
<string name="gamepad_left_stick">العصا اليسرى</string>
|
<string name="gamepad_left_stick">العصا اليسرى</string>
|
||||||
<string name="gamepad_right_stick">العصا اليمنى</string>
|
<string name="gamepad_right_stick">العصا اليمنى</string>
|
||||||
<string name="gamepad_home">Home</string>
|
<string name="gamepad_home">Home</string>
|
||||||
<string name="gamepad_screenshot">لقطة شاشة</string>
|
<string name="gamepad_screenshot">Screenshot</string>
|
||||||
|
|
||||||
<!-- Disk shader cache -->
|
<!-- Disk shader cache -->
|
||||||
<string name="building_shaders">بناء التظليل</string>
|
<string name="building_shaders">بناء التظليل</string>
|
||||||
@@ -964,7 +980,10 @@
|
|||||||
<!-- App options -->
|
<!-- App options -->
|
||||||
<string name="change_app_theme">تغيير سمة التطبيق</string>
|
<string name="change_app_theme">تغيير سمة التطبيق</string>
|
||||||
<string name="theme_default">افتراضي</string>
|
<string name="theme_default">افتراضي</string>
|
||||||
<string name="theme_material_you">Material You</string>
|
<string name="theme_material_you">ألوان ديناميكية</string>
|
||||||
|
<string name="app_settings">إعدادات التطبيق</string>
|
||||||
|
<string name="theme_and_color">السمة واللون</string>
|
||||||
|
|
||||||
<!-- Theme Modes -->
|
<!-- Theme Modes -->
|
||||||
<string name="change_theme_mode">تغيير وضع السمة</string>
|
<string name="change_theme_mode">تغيير وضع السمة</string>
|
||||||
<string name="theme_mode_follow_system">اتبع النظام</string>
|
<string name="theme_mode_follow_system">اتبع النظام</string>
|
||||||
@@ -983,11 +1002,40 @@
|
|||||||
|
|
||||||
<!-- Black backgrounds theme -->
|
<!-- Black backgrounds theme -->
|
||||||
<string name="use_black_backgrounds">خلفيات سوداء</string>
|
<string name="use_black_backgrounds">خلفيات سوداء</string>
|
||||||
<string name="use_black_backgrounds_description">عند استخدام المظهر الداكن، قم بتطبيق خلفيات سوداء.</string>
|
<string name="use_black_backgrounds_description">عند استخدام السمة الداكنة، قم بتطبيق خلفيات سوداء.</string>
|
||||||
|
|
||||||
|
<!-- App Language -->
|
||||||
|
<string name="app_language">لغة التطبيق</string>
|
||||||
|
<string name="app_language_description">تغيير لغة واجهة التطبيق</string>
|
||||||
|
<string name="app_language_system">اتبع النظام</string>
|
||||||
|
<string name="app_language_english">الإنجليزية</string>
|
||||||
|
<string name="app_language_spanish">الإسبانية</string>
|
||||||
|
<string name="app_language_french">الفرنسية</string>
|
||||||
|
<string name="app_language_german">الألمانية</string>
|
||||||
|
<string name="app_language_italian">الإيطالية</string>
|
||||||
|
<string name="app_language_portuguese">البرتغالية</string>
|
||||||
|
<string name="app_language_brazilian_portuguese">البرتغالية البرازيلية</string>
|
||||||
|
<string name="app_language_russian">الروسية</string>
|
||||||
|
<string name="app_language_japanese">اليابانية</string>
|
||||||
|
<string name="app_language_korean">الكورية</string>
|
||||||
|
<string name="app_language_simplified_chinese">الصينية المبسطة</string>
|
||||||
|
<string name="app_language_traditional_chinese">الصينية التقليدية</string>
|
||||||
|
<string name="app_language_polish">البولندية</string>
|
||||||
|
<string name="app_language_czech">التشيكية</string>
|
||||||
|
<string name="app_language_norwegian">النرويجية البوكمال</string>
|
||||||
|
<string name="app_language_hungarian">المجرية</string>
|
||||||
|
<string name="app_language_ukrainian">الأوكرانية</string>
|
||||||
|
<string name="app_language_vietnamese">الفيتنامية</string>
|
||||||
|
<string name="app_language_indonesian">الإندونيسية</string>
|
||||||
|
<string name="app_language_arabic">العربية</string>
|
||||||
|
<string name="app_language_central_kurdish">الكردية الوسطى</string>
|
||||||
|
<string name="app_language_persian">فارسی</string>
|
||||||
|
<string name="app_language_hebrew">العبرية</string>
|
||||||
|
<string name="app_language_serbian">الصربية</string>
|
||||||
|
|
||||||
<!-- Static Themes -->
|
<!-- Static Themes -->
|
||||||
<string name="static_theme_color">لون السمة</string>
|
<string name="static_theme_color">لون السمة</string>
|
||||||
<string name="eden_theme">عدن (افتراضي)</string>
|
<string name="eden_theme">Eden (افتراضي)</string>
|
||||||
<string name="violet">بنفسجي</string>
|
<string name="violet">بنفسجي</string>
|
||||||
<string name="blue">أزرق</string>
|
<string name="blue">أزرق</string>
|
||||||
<string name="cyan">سماوي</string>
|
<string name="cyan">سماوي</string>
|
||||||
@@ -1001,7 +1049,7 @@
|
|||||||
<!-- Picture-In-Picture -->
|
<!-- Picture-In-Picture -->
|
||||||
<string name="picture_in_picture">صورة داخل صورة</string>
|
<string name="picture_in_picture">صورة داخل صورة</string>
|
||||||
<string name="picture_in_picture_description">تصغير النافذة عند وضعها في الخلفية</string>
|
<string name="picture_in_picture_description">تصغير النافذة عند وضعها في الخلفية</string>
|
||||||
<string name="pause">توقف</string>
|
<string name="pause">إيقاف مؤقت</string>
|
||||||
<string name="play">تشغيل</string>
|
<string name="play">تشغيل</string>
|
||||||
<string name="mute">كتم الصوت</string>
|
<string name="mute">كتم الصوت</string>
|
||||||
<string name="unmute">إلغاء كتم الصوت</string>
|
<string name="unmute">إلغاء كتم الصوت</string>
|
||||||
@@ -1014,17 +1062,17 @@
|
|||||||
|
|
||||||
<!-- Applet Modes -->
|
<!-- Applet Modes -->
|
||||||
<string name="applets_menu">التطبيقات الصغيرة</string>
|
<string name="applets_menu">التطبيقات الصغيرة</string>
|
||||||
<string name="applets_menu_description">(قيد العمل) تغيير واجهات التطبيقات الصغيرة والإعدادات</string>
|
<string name="applets_menu_description">(قيد التطوير) تغيير واجهات التطبيقات الصغيرة والإعدادات</string>
|
||||||
|
|
||||||
<string name="applet_hle">واجهة مخصصة</string>
|
<string name="applet_hle">واجهة مخصصة</string>
|
||||||
<string name="applet_lle">تطبيق حقيقي</string>
|
<string name="applet_lle">تطبيق صغير حقيقي</string>
|
||||||
|
|
||||||
<string name="swkbd_applet">لوحة المفاتيح البرمجية</string>
|
<string name="swkbd_applet">لوحة المفاتيح البرمجية</string>
|
||||||
|
|
||||||
<string name="airplane_mode">وضع الطيران</string>
|
<string name="airplane_mode">وضع الطيران</string>
|
||||||
<string name="airplane_mode_description">تشغيل وضع الطيران على نظام التشغيل سويتش</string>
|
<string name="airplane_mode_description">ينقل وضع الطيران إلى نظام التشغيل Switch</string>
|
||||||
|
|
||||||
<!-- Licenses screen strings -->
|
<!-- Licenses screen strings -->
|
||||||
<string name="licenses">التراخيص</string>
|
<string name="licenses">التراخيص</string>
|
||||||
<string name="license_fidelityfx_fsr_description">AMD ترقية عالية الجودة من</string>
|
<string name="license_fidelityfx_fsr_description">تحسين الجودة بدرجة عالية من AMD</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
@@ -171,7 +171,7 @@
|
|||||||
<string name="multiplayer_room_is_full">La sala está llena</string>
|
<string name="multiplayer_room_is_full">La sala está llena</string>
|
||||||
<string name="multiplayer_host_banned">Estás baneado de esta sala</string>
|
<string name="multiplayer_host_banned">Estás baneado de esta sala</string>
|
||||||
<string name="multiplayer_permission_denied">Permiso denegado</string>
|
<string name="multiplayer_permission_denied">Permiso denegado</string>
|
||||||
<string name="multiplayer_no_such_user">Usuario no encontrado</string>
|
<string name="multiplayer_no_such_user">No hay tal usuario</string>
|
||||||
<string name="multiplayer_already_in_room">Ya estás en una sala</string>
|
<string name="multiplayer_already_in_room">Ya estás en una sala</string>
|
||||||
<string name="multiplayer_create_room_error">Error al crear sala</string>
|
<string name="multiplayer_create_room_error">Error al crear sala</string>
|
||||||
<string name="multiplayer_host_kicked">Anfitrión expulsado</string>
|
<string name="multiplayer_host_kicked">Anfitrión expulsado</string>
|
||||||
@@ -180,9 +180,9 @@
|
|||||||
<string name="multiplayer_room_idle">Sala inactiva</string>
|
<string name="multiplayer_room_idle">Sala inactiva</string>
|
||||||
<string name="multiplayer_room_joining">Uniéndose a la sala</string>
|
<string name="multiplayer_room_joining">Uniéndose a la sala</string>
|
||||||
<string name="multiplayer_room_joined">Sala unida</string>
|
<string name="multiplayer_room_joined">Sala unida</string>
|
||||||
<string name="multiplayer_room_moderator">Moderador de sala</string>
|
<string name="multiplayer_room_moderator">Moderador de la sala</string>
|
||||||
<string name="multiplayer_member_join">%1$s se ha unido</string>
|
<string name="multiplayer_member_join">%1$s se ha unido</string>
|
||||||
<string name="multiplayer_member_leave">%1$s ha salido</string>
|
<string name="multiplayer_member_leave">%1$s se fue</string>
|
||||||
<string name="multiplayer_member_kicked">%1$s fue expulsado</string>
|
<string name="multiplayer_member_kicked">%1$s fue expulsado</string>
|
||||||
<string name="multiplayer_member_banned">%1$s fue baneado</string>
|
<string name="multiplayer_member_banned">%1$s fue baneado</string>
|
||||||
<string name="multiplayer_address_unbanned">Dirección desbaneada</string>
|
<string name="multiplayer_address_unbanned">Dirección desbaneada</string>
|
||||||
@@ -202,7 +202,7 @@
|
|||||||
<string name="multiplayer_no_bans">No hay usuarios baneados</string>
|
<string name="multiplayer_no_bans">No hay usuarios baneados</string>
|
||||||
<string name="multiplayer_unban_title">Desbanear usuario</string>
|
<string name="multiplayer_unban_title">Desbanear usuario</string>
|
||||||
<string name="multiplayer_unban">Desbanear</string>
|
<string name="multiplayer_unban">Desbanear</string>
|
||||||
<string name="multiplayer_unban_message">¿Seguro que quieres desbanear a %1$s?</string>
|
<string name="multiplayer_unban_message">¿Estás seguro de que quieres desbanear a %1$s\?</string>
|
||||||
<string name="multiplayer_ban">Banear usuario</string>
|
<string name="multiplayer_ban">Banear usuario</string>
|
||||||
<string name="multiplayer_room_browser">Salas públicas</string>
|
<string name="multiplayer_room_browser">Salas públicas</string>
|
||||||
<string name="multiplayer_no_rooms_found">No se encontraron salas públicas</string>
|
<string name="multiplayer_no_rooms_found">No se encontraron salas públicas</string>
|
||||||
@@ -240,6 +240,7 @@
|
|||||||
<string name="keys_description">Selecciona tu archivo <b>prod.keys</b> utilizando el botón de abajo.</string>
|
<string name="keys_description">Selecciona tu archivo <b>prod.keys</b> utilizando el botón de abajo.</string>
|
||||||
<string name="select_keys">Seleccionar las claves</string>
|
<string name="select_keys">Seleccionar las claves</string>
|
||||||
<string name="firmware">Firmware</string>
|
<string name="firmware">Firmware</string>
|
||||||
|
<string name="firmware_description">Seleccione su archivo <b> firmware.zip </b> con el botón de abajo.</string>
|
||||||
<string name="select_firmware">Seleccionar firmware</string>
|
<string name="select_firmware">Seleccionar firmware</string>
|
||||||
<string name="games">Juegos</string>
|
<string name="games">Juegos</string>
|
||||||
<string name="games_description">Selecciona la carpeta <b>Juegos</b> utilizando el botón de abajo</string>
|
<string name="games_description">Selecciona la carpeta <b>Juegos</b> utilizando el botón de abajo</string>
|
||||||
@@ -262,6 +263,9 @@
|
|||||||
<string name="folder">Carpeta</string>
|
<string name="folder">Carpeta</string>
|
||||||
<string name="dont_show_again">No mostrar de nuevo</string>
|
<string name="dont_show_again">No mostrar de nuevo</string>
|
||||||
<string name="add_directory_success">Nuevo directorio de juegos agregado exitosamente</string>
|
<string name="add_directory_success">Nuevo directorio de juegos agregado exitosamente</string>
|
||||||
|
<string name="enable_update_checks">Busque actualizaciones al iniciar la aplicación.</string>
|
||||||
|
<string name="update_available">Actualización disponible</string>
|
||||||
|
<string name="update_available_description">Hay una nueva versión disponible: %1$s \n\n¿Quieres descargarla\?</string>
|
||||||
<string name="home_search">Buscar</string>
|
<string name="home_search">Buscar</string>
|
||||||
<string name="home_settings">Ajustes</string>
|
<string name="home_settings">Ajustes</string>
|
||||||
<string name="empty_gamelist">No se encontraron archivos o aún no se ha seleccionado ningún directorio de juego.</string>
|
<string name="empty_gamelist">No se encontraron archivos o aún no se ha seleccionado ningún directorio de juego.</string>
|
||||||
@@ -304,6 +308,7 @@
|
|||||||
<string name="search_recently_added">Añadido recientemente</string>
|
<string name="search_recently_added">Añadido recientemente</string>
|
||||||
<string name="open_user_folder">Abrir la carpeta de Eden</string>
|
<string name="open_user_folder">Abrir la carpeta de Eden</string>
|
||||||
<string name="open_user_folder_description">Administrar los archivos internos de Eden</string>
|
<string name="open_user_folder_description">Administrar los archivos internos de Eden</string>
|
||||||
|
<string name="app_settings_description">Modificar el comportamiento y la apariencia de la aplicación.</string>
|
||||||
<string name="no_file_manager">Explorador de archivos no encontrado</string>
|
<string name="no_file_manager">Explorador de archivos no encontrado</string>
|
||||||
<string name="notification_no_directory_link">No se pudo abrir la carpeta Eden</string>
|
<string name="notification_no_directory_link">No se pudo abrir la carpeta Eden</string>
|
||||||
<string name="notification_no_directory_link_description">Por favor, busque la carpeta user con el panel lateral del explorador de archivos de forma manual.</string>
|
<string name="notification_no_directory_link_description">Por favor, busque la carpeta user con el panel lateral del explorador de archivos de forma manual.</string>
|
||||||
@@ -672,7 +677,6 @@
|
|||||||
<string name="copy_details">Copiar detalles</string>
|
<string name="copy_details">Copiar detalles</string>
|
||||||
<string name="add_ons">Extras/Add-ons</string>
|
<string name="add_ons">Extras/Add-ons</string>
|
||||||
<string name="add_ons_description">Activa/desactiva mods, actualizaciones y DLC</string>
|
<string name="add_ons_description">Activa/desactiva mods, actualizaciones y DLC</string>
|
||||||
<string name="playtime">Tiempo de juego:</string>
|
|
||||||
<string name="reset_playtime">Borrar tiempo de juego</string>
|
<string name="reset_playtime">Borrar tiempo de juego</string>
|
||||||
<string name="reset_playtime_description">Restablecer el tiempo de juego actual a 0 segundos</string>
|
<string name="reset_playtime_description">Restablecer el tiempo de juego actual a 0 segundos</string>
|
||||||
<string name="reset_playtime_warning_description">Esto borrará los datos de tiempo de juego actual. ¿Estás seguro\?</string>
|
<string name="reset_playtime_warning_description">Esto borrará los datos de tiempo de juego actual. ¿Estás seguro\?</string>
|
||||||
@@ -791,7 +795,6 @@
|
|||||||
<string name="unlock_drawer">Desbloquear menú cajón</string>
|
<string name="unlock_drawer">Desbloquear menú cajón</string>
|
||||||
<string name="reset">Reiniciar</string>
|
<string name="reset">Reiniciar</string>
|
||||||
|
|
||||||
|
|
||||||
<!-- Software keyboard -->
|
<!-- Software keyboard -->
|
||||||
<string name="software_keyboard">Teclado de software</string>
|
<string name="software_keyboard">Teclado de software</string>
|
||||||
|
|
||||||
@@ -959,6 +962,9 @@
|
|||||||
<string name="change_app_theme">Cambiar tema</string>
|
<string name="change_app_theme">Cambiar tema</string>
|
||||||
<string name="theme_default">Predeterminado</string>
|
<string name="theme_default">Predeterminado</string>
|
||||||
<string name="theme_material_you">Material You</string>
|
<string name="theme_material_you">Material You</string>
|
||||||
|
<string name="app_settings">Configuración de la aplicación</string>
|
||||||
|
<string name="theme_and_color">Tema y color</string>
|
||||||
|
|
||||||
<!-- Theme Modes -->
|
<!-- Theme Modes -->
|
||||||
<string name="change_theme_mode">Cambiar modo del tema</string>
|
<string name="change_theme_mode">Cambiar modo del tema</string>
|
||||||
<string name="theme_mode_follow_system">Igual al sistema</string>
|
<string name="theme_mode_follow_system">Igual al sistema</string>
|
||||||
|
|||||||
@@ -89,7 +89,7 @@
|
|||||||
<string name="dyna_state">État dynamique étendu</string>
|
<string name="dyna_state">État dynamique étendu</string>
|
||||||
<string name="dyna_state_description">Contrôle le nombre de fonctionnalités utilisables dans l\'état dynamique étendu. Des valeurs plus élevées permettent plus de fonctionnalités et peuvent augmenter les performances, mais peuvent causer des problèmes avec certains pilotes et fabricants. La valeur par défaut peut varier selon votre système et vos capacités matérielles. Cette valeur peut être modifiée jusqu\'à obtenir une stabilité et une meilleure qualité visuelle.</string>
|
<string name="dyna_state_description">Contrôle le nombre de fonctionnalités utilisables dans l\'état dynamique étendu. Des valeurs plus élevées permettent plus de fonctionnalités et peuvent augmenter les performances, mais peuvent causer des problèmes avec certains pilotes et fabricants. La valeur par défaut peut varier selon votre système et vos capacités matérielles. Cette valeur peut être modifiée jusqu\'à obtenir une stabilité et une meilleure qualité visuelle.</string>
|
||||||
<string name="disabled">Désactivé</string>
|
<string name="disabled">Désactivé</string>
|
||||||
<string name="provoking_vertex">Vertex provoquant</string>
|
<string name="provoking_vertex">Provoque des Vertex</string>
|
||||||
<string name="provoking_vertex_description">Améliore l`éclairage et la gestion des vertex dans certains jeux. Pris en charge uniquement par les GPU Vulkan 1.0+.</string>
|
<string name="provoking_vertex_description">Améliore l`éclairage et la gestion des vertex dans certains jeux. Pris en charge uniquement par les GPU Vulkan 1.0+.</string>
|
||||||
<string name="descriptor_indexing">Indexation des descripteurs</string>
|
<string name="descriptor_indexing">Indexation des descripteurs</string>
|
||||||
<string name="descriptor_indexing_description">Améliore la gestion des textures et des tampons, ainsi que la couche de traduction Maxwell. Pris en charge par certains GPU Vulkan 1.1 et tous les GPU Vulkan 1.2+.</string>
|
<string name="descriptor_indexing_description">Améliore la gestion des textures et des tampons, ainsi que la couche de traduction Maxwell. Pris en charge par certains GPU Vulkan 1.1 et tous les GPU Vulkan 1.2+.</string>
|
||||||
@@ -112,7 +112,7 @@
|
|||||||
<string name="use_sync_core">Synchroniser la vitesse du cœur</string>
|
<string name="use_sync_core">Synchroniser la vitesse du cœur</string>
|
||||||
<string name="use_sync_core_description">Synchronise la vitesse du cœur avec le pourcentage de vitesse maximal pour améliorer les performances sans modifier la vitesse réelle du jeu.</string>
|
<string name="use_sync_core_description">Synchronise la vitesse du cœur avec le pourcentage de vitesse maximal pour améliorer les performances sans modifier la vitesse réelle du jeu.</string>
|
||||||
<string name="use_lru_cache">Activer le cache LRU</string>
|
<string name="use_lru_cache">Activer le cache LRU</string>
|
||||||
<string name="use_lru_cache_description">Active ou désactive le cache LRU pour améliorer les performances en réduisant l\'utilisation du processeur. Certains jeux comme TotK 1.2.1 ont des problèmes - désactivez-le si le jeu ne démarre pas ou plante aléatoirement.</string>
|
<string name="use_lru_cache_description">Active ou désactive le cache LRU (Least Recently Used) pour améliorer les performances en réduisant l’utilisation du processeur. Certains jeux peuvent rencontrer des problèmes avec ce réglage ; désactivez-le si le jeu ne démarre pas ou plante de manière aléatoire.</string>
|
||||||
<string name="use_fast_cpu_time">Temps CPU rapide</string>
|
<string name="use_fast_cpu_time">Temps CPU rapide</string>
|
||||||
<string name="use_fast_cpu_time_description">Force le CPU émulé à fonctionner à une fréquence plus élevée, réduisant certains limiteurs de FPS. Cette option est instable et peut causer des problèmes, et les CPU plus faibles peuvent voir une baisse de performance.</string>
|
<string name="use_fast_cpu_time_description">Force le CPU émulé à fonctionner à une fréquence plus élevée, réduisant certains limiteurs de FPS. Cette option est instable et peut causer des problèmes, et les CPU plus faibles peuvent voir une baisse de performance.</string>
|
||||||
<string name="custom_cpu_ticks">Ticks CPU personnalisés</string>
|
<string name="custom_cpu_ticks">Ticks CPU personnalisés</string>
|
||||||
@@ -125,7 +125,7 @@
|
|||||||
<string name="fast_cpu_time">Fréquence CPU</string>
|
<string name="fast_cpu_time">Fréquence CPU</string>
|
||||||
<string name="fast_cpu_time_description">Utilisez Boost (1700MHz) pour fonctionner à la fréquence native la plus élevée de la Switch, ou Fast (2000MHz) pour fonctionner à double fréquence.</string>
|
<string name="fast_cpu_time_description">Utilisez Boost (1700MHz) pour fonctionner à la fréquence native la plus élevée de la Switch, ou Fast (2000MHz) pour fonctionner à double fréquence.</string>
|
||||||
<string name="memory_layout">Disposition de la mémoire</string>
|
<string name="memory_layout">Disposition de la mémoire</string>
|
||||||
<string name="memory_layout_description">(EXPÉRIMENTAL) Change la disposition de la mémoire émulée. Ce paramètre n\'augmente pas les performances, mais peut aider les jeux utilisant des résolutions élevées via des mods. Ne pas utiliser sur les téléphones avec 8 Go de RAM ou moins.</string>
|
<string name="memory_layout_description">(EXPÉRIMENTAL) Modifie la disposition de la mémoire émulée.\nCe paramètre n’améliore pas les performances, mais peut aider pour les jeux utilisant des résolutions élevées via des mods. Ne pas utiliser sur les téléphones avec 8 Go de RAM ou moins. Fonctionne uniquement avec le backend Dynarmic (JIT).</string>
|
||||||
<string name="dma_accuracy">Précision DMA</string>
|
<string name="dma_accuracy">Précision DMA</string>
|
||||||
<string name="dma_accuracy_description">Contrôle la précision du DMA. Une précision sûre peut résoudre les problèmes dans certains jeux, mais peut aussi affecter les performances dans certains cas. Si vous n\'êtes pas sûr, laissez ce paramètre sur Par défaut.</string>
|
<string name="dma_accuracy_description">Contrôle la précision du DMA. Une précision sûre peut résoudre les problèmes dans certains jeux, mais peut aussi affecter les performances dans certains cas. Si vous n\'êtes pas sûr, laissez ce paramètre sur Par défaut.</string>
|
||||||
|
|
||||||
@@ -138,7 +138,7 @@
|
|||||||
|
|
||||||
<!-- NVDEC Emulation -->
|
<!-- NVDEC Emulation -->
|
||||||
<string name="nvdec_emulation">Émulation NVDEC</string>
|
<string name="nvdec_emulation">Émulation NVDEC</string>
|
||||||
<string name="nvdec_emulation_description">Gestion du décodage vidéo</string>
|
<string name="nvdec_emulation_description">Sélectionnez la manière dont le décodage vidéo (NVDEC) est géré pendant les cinématiques et les intros.</string>
|
||||||
<string name="nvdec_emulation_cpu">CPU</string>
|
<string name="nvdec_emulation_cpu">CPU</string>
|
||||||
<string name="nvdec_emulation_gpu">GPU</string>
|
<string name="nvdec_emulation_gpu">GPU</string>
|
||||||
<string name="nvdec_emulation_none">Aucun</string>
|
<string name="nvdec_emulation_none">Aucun</string>
|
||||||
@@ -195,6 +195,7 @@
|
|||||||
<string name="multiplayer_chat">Chat</string>
|
<string name="multiplayer_chat">Chat</string>
|
||||||
<string name="multiplayer_more_options">Plus d\'options</string>
|
<string name="multiplayer_more_options">Plus d\'options</string>
|
||||||
<string name="chat">Chat</string>
|
<string name="chat">Chat</string>
|
||||||
|
<string name="clear">Effacer</string>
|
||||||
<string name="type_message">Écrire un message…</string>
|
<string name="type_message">Écrire un message…</string>
|
||||||
<string name="send_message">Envoyer un message</string>
|
<string name="send_message">Envoyer un message</string>
|
||||||
<string name="multiplayer_moderation">Modération</string>
|
<string name="multiplayer_moderation">Modération</string>
|
||||||
@@ -240,6 +241,7 @@
|
|||||||
<string name="keys_description">Sélectionnez votre fichier <b>prod.keys</b> avec le bouton ci-dessous.</string>
|
<string name="keys_description">Sélectionnez votre fichier <b>prod.keys</b> avec le bouton ci-dessous.</string>
|
||||||
<string name="select_keys">Sélectionner les clés</string>
|
<string name="select_keys">Sélectionner les clés</string>
|
||||||
<string name="firmware">Firmware</string>
|
<string name="firmware">Firmware</string>
|
||||||
|
<string name="firmware_description">Sélectionnez votre fichier <b>firmware.zip</b> avec le bouton ci‑dessous.</string>
|
||||||
<string name="select_firmware">Sélectionner le firmware</string>
|
<string name="select_firmware">Sélectionner le firmware</string>
|
||||||
<string name="games">Jeux</string>
|
<string name="games">Jeux</string>
|
||||||
<string name="games_description">Sélectionnez votre dossier <b>de Jeux</b> avec le bouton ci-dessous.</string>
|
<string name="games_description">Sélectionnez votre dossier <b>de Jeux</b> avec le bouton ci-dessous.</string>
|
||||||
@@ -262,6 +264,9 @@
|
|||||||
<string name="folder">Dossier</string>
|
<string name="folder">Dossier</string>
|
||||||
<string name="dont_show_again">Ne plus afficher</string>
|
<string name="dont_show_again">Ne plus afficher</string>
|
||||||
<string name="add_directory_success">Nouveau dossier de jeux ajouté</string>
|
<string name="add_directory_success">Nouveau dossier de jeux ajouté</string>
|
||||||
|
<string name="enable_update_checks">Vérifier les mises à jour au démarrage de l’application.</string>
|
||||||
|
<string name="update_available">Mise à jour disponible</string>
|
||||||
|
<string name="update_available_description">Une nouvelle version est disponible : %1$s\n\nVoulez‑vous la télécharger \?</string>
|
||||||
<string name="home_search">Rechercher</string>
|
<string name="home_search">Rechercher</string>
|
||||||
<string name="home_settings">Paramètres</string>
|
<string name="home_settings">Paramètres</string>
|
||||||
<string name="empty_gamelist">Aucun fichier n\'a été trouvé ou aucun répertoire de jeu n\'a encore été sélectionné.</string>
|
<string name="empty_gamelist">Aucun fichier n\'a été trouvé ou aucun répertoire de jeu n\'a encore été sélectionné.</string>
|
||||||
@@ -304,6 +309,7 @@
|
|||||||
<string name="search_recently_added">Ajouté récemment</string>
|
<string name="search_recently_added">Ajouté récemment</string>
|
||||||
<string name="open_user_folder">Ouvrir le dossier de Eden</string>
|
<string name="open_user_folder">Ouvrir le dossier de Eden</string>
|
||||||
<string name="open_user_folder_description">Gérer les fichiers internes de Eden</string>
|
<string name="open_user_folder_description">Gérer les fichiers internes de Eden</string>
|
||||||
|
<string name="app_settings_description">Modifier le comportement et l’apparence de l’application</string>
|
||||||
<string name="no_file_manager">Aucun gestionnaire de fichiers trouvé</string>
|
<string name="no_file_manager">Aucun gestionnaire de fichiers trouvé</string>
|
||||||
<string name="notification_no_directory_link">Impossible d\'ouvrir le répertoire de Eden</string>
|
<string name="notification_no_directory_link">Impossible d\'ouvrir le répertoire de Eden</string>
|
||||||
<string name="notification_no_directory_link_description">Veuillez localiser manuellement le dossier utilisateur avec le panneau latéral du gestionnaire de fichiers.</string>
|
<string name="notification_no_directory_link_description">Veuillez localiser manuellement le dossier utilisateur avec le panneau latéral du gestionnaire de fichiers.</string>
|
||||||
@@ -405,7 +411,7 @@
|
|||||||
<string name="licenses_description">Des projets qui rendent possible Eden pour Android</string>
|
<string name="licenses_description">Des projets qui rendent possible Eden pour Android</string>
|
||||||
<string name="build">Build</string>
|
<string name="build">Build</string>
|
||||||
<string name="user_data">Données utilisateur</string>
|
<string name="user_data">Données utilisateur</string>
|
||||||
<string name="user_data_description">Importer/exporter toutes les données de l\'application\nLors de l\'importation des données utilisateur, toutes les données déjà existantes seront supprimé !\nImporter les données depuis Citron peut poser des problèmes. Il est recommandé de faire l\'importation manuellement de toutes les données nécessaire.</string>
|
<string name="user_data_description">Importer/exporter toutes les données de l\'application\n\nLors de l\'importation des données utilisateur, toutes les données déjà existantes seront supprimé !\n\nImporter les données depuis Citron peut poser des problèmes. Il est recommandé de faire l\'importation manuellement de toutes les données nécessaire.</string>
|
||||||
<string name="exporting_user_data">Exportation des données utilisateur...</string>
|
<string name="exporting_user_data">Exportation des données utilisateur...</string>
|
||||||
<string name="importing_user_data">Importation des données utilisateur...</string>
|
<string name="importing_user_data">Importation des données utilisateur...</string>
|
||||||
<string name="invalid_yuzu_backup">Backup Eden invalide</string>
|
<string name="invalid_yuzu_backup">Backup Eden invalide</string>
|
||||||
@@ -764,7 +770,7 @@
|
|||||||
<string name="invalid_driver_file">Fichier de pilote invalide : %s</string>
|
<string name="invalid_driver_file">Fichier de pilote invalide : %s</string>
|
||||||
<string name="network_unavailable">Aucune connexion réseau disponible. Veuillez vérifier votre connexion Internet et réessayer.</string>
|
<string name="network_unavailable">Aucune connexion réseau disponible. Veuillez vérifier votre connexion Internet et réessayer.</string>
|
||||||
<string name="driver_missing_title">Pilote GPU requis</string>
|
<string name="driver_missing_title">Pilote GPU requis</string>
|
||||||
<string name="driver_missing_message">La configuration du jeu nécessite le pilote GPU \"%s\" qui n\'est pas installé sur votre appareil.\nVoulez-vous le télécharger et l\'installer maintenant \?</string>
|
<string name="driver_missing_message">La configuration du jeu nécessite le pilote GPU \"%s\" qui n\'est pas installé sur votre appareil.\n\nVoulez-vous le télécharger et l\'installer maintenant \?</string>
|
||||||
<string name="driver_download_cancelled">Téléchargement du pilote annulé. Le jeu ne peut pas être lancé sans le pilote requis.</string>
|
<string name="driver_download_cancelled">Téléchargement du pilote annulé. Le jeu ne peut pas être lancé sans le pilote requis.</string>
|
||||||
<string name="download">Télécharger</string>
|
<string name="download">Télécharger</string>
|
||||||
|
|
||||||
@@ -786,11 +792,21 @@
|
|||||||
<string name="emulation_pause">Mettre en pause l\'émulation</string>
|
<string name="emulation_pause">Mettre en pause l\'émulation</string>
|
||||||
<string name="emulation_unpause">Reprendre l\'émulation</string>
|
<string name="emulation_unpause">Reprendre l\'émulation</string>
|
||||||
<string name="emulation_input_overlay">Options de l\'overlay</string>
|
<string name="emulation_input_overlay">Options de l\'overlay</string>
|
||||||
|
<string name="load_amiibo">Charger l’Amiibo</string>
|
||||||
<string name="touchscreen">Écran tactile</string>
|
<string name="touchscreen">Écran tactile</string>
|
||||||
<string name="lock_drawer">Verrouiller le tiroir</string>
|
<string name="lock_drawer">Verrouiller le tiroir</string>
|
||||||
<string name="unlock_drawer">Déverrouiller le tiroir</string>
|
<string name="unlock_drawer">Déverrouiller le tiroir</string>
|
||||||
<string name="reset">Réinitialiser</string>
|
<string name="reset">Réinitialiser</string>
|
||||||
|
|
||||||
|
<!-- Amiibo -->
|
||||||
|
<string name="amiibo_title">Amiibo</string>
|
||||||
|
<string name="amiibo_removed_message">L’Amiibo actuel a été supprimé</string>
|
||||||
|
<string name="amiibo_wrong_state">Le jeu actuel ne recherche pas d’Amiibo</string>
|
||||||
|
<string name="amiibo_not_valid">Le fichier sélectionné n’est pas un Amiibo valide</string>
|
||||||
|
<string name="amiibo_in_use">Le fichier sélectionné est déjà utilisé</string>
|
||||||
|
<string name="amiibo_unknown_error">Une erreur inconnue est survenue</string>
|
||||||
|
<string name="amiibo_load_success">Amiibo chargé</string>
|
||||||
|
|
||||||
|
|
||||||
<!-- Software keyboard -->
|
<!-- Software keyboard -->
|
||||||
<string name="software_keyboard">Clavier virtuel</string>
|
<string name="software_keyboard">Clavier virtuel</string>
|
||||||
@@ -959,6 +975,9 @@
|
|||||||
<string name="change_app_theme">Changer le thème de l\'application</string>
|
<string name="change_app_theme">Changer le thème de l\'application</string>
|
||||||
<string name="theme_default">Par défaut</string>
|
<string name="theme_default">Par défaut</string>
|
||||||
<string name="theme_material_you">Material You</string>
|
<string name="theme_material_you">Material You</string>
|
||||||
|
<string name="app_settings">Paramètres de l’App</string>
|
||||||
|
<string name="theme_and_color">Thème et Couleur</string>
|
||||||
|
|
||||||
<!-- Theme Modes -->
|
<!-- Theme Modes -->
|
||||||
<string name="change_theme_mode">Changer le mode de thème</string>
|
<string name="change_theme_mode">Changer le mode de thème</string>
|
||||||
<string name="theme_mode_follow_system">Automatique</string>
|
<string name="theme_mode_follow_system">Automatique</string>
|
||||||
@@ -979,6 +998,35 @@
|
|||||||
<string name="use_black_backgrounds">Arrière-plan noir</string>
|
<string name="use_black_backgrounds">Arrière-plan noir</string>
|
||||||
<string name="use_black_backgrounds_description">Lorsque vous utilisez le thème sombre, appliquer un arrière-plan noir.</string>
|
<string name="use_black_backgrounds_description">Lorsque vous utilisez le thème sombre, appliquer un arrière-plan noir.</string>
|
||||||
|
|
||||||
|
<!-- App Language -->
|
||||||
|
<string name="app_language">Language de l\'application</string>
|
||||||
|
<string name="app_language_description">Changer la langue de l\'interface</string>
|
||||||
|
<string name="app_language_system">Suivre le système</string>
|
||||||
|
<string name="app_language_english">Anglais</string>
|
||||||
|
<string name="app_language_spanish">Espagnol</string>
|
||||||
|
<string name="app_language_french">Français</string>
|
||||||
|
<string name="app_language_german">Allemand</string>
|
||||||
|
<string name="app_language_italian">Italien</string>
|
||||||
|
<string name="app_language_portuguese">Portugais</string>
|
||||||
|
<string name="app_language_brazilian_portuguese">Portugais Brésilien</string>
|
||||||
|
<string name="app_language_russian">Russe</string>
|
||||||
|
<string name="app_language_japanese">Japonnais</string>
|
||||||
|
<string name="app_language_korean">Coréen</string>
|
||||||
|
<string name="app_language_simplified_chinese">Chinois Simplifié</string>
|
||||||
|
<string name="app_language_traditional_chinese">Chinois Traditionnel</string>
|
||||||
|
<string name="app_language_polish">Polonais</string>
|
||||||
|
<string name="app_language_czech">Tchèque</string>
|
||||||
|
<string name="app_language_norwegian">Norvégien</string>
|
||||||
|
<string name="app_language_hungarian">Hongrois</string>
|
||||||
|
<string name="app_language_ukrainian">Ukrainien</string>
|
||||||
|
<string name="app_language_vietnamese">Vietnamien</string>
|
||||||
|
<string name="app_language_indonesian">Indonésien</string>
|
||||||
|
<string name="app_language_arabic">Arabe</string>
|
||||||
|
<string name="app_language_central_kurdish">Kurde central</string>
|
||||||
|
<string name="app_language_persian">Perse</string>
|
||||||
|
<string name="app_language_hebrew">Hébreu</string>
|
||||||
|
<string name="app_language_serbian">Serbe</string>
|
||||||
|
|
||||||
<!-- Static Themes -->
|
<!-- Static Themes -->
|
||||||
<string name="static_theme_color">Couleur du thème</string>
|
<string name="static_theme_color">Couleur du thème</string>
|
||||||
<string name="eden_theme">Eden (Par défaut)</string>
|
<string name="eden_theme">Eden (Par défaut)</string>
|
||||||
|
|||||||
@@ -769,7 +769,6 @@
|
|||||||
<string name="unlock_drawer">Buka Kunci Laci</string>
|
<string name="unlock_drawer">Buka Kunci Laci</string>
|
||||||
<string name="reset">Reset</string>
|
<string name="reset">Reset</string>
|
||||||
|
|
||||||
|
|
||||||
<!-- Software keyboard -->
|
<!-- Software keyboard -->
|
||||||
<string name="software_keyboard">Papan Ketik Perangkat Lunak</string>
|
<string name="software_keyboard">Papan Ketik Perangkat Lunak</string>
|
||||||
|
|
||||||
|
|||||||
@@ -6,12 +6,12 @@
|
|||||||
<string name="notice_notification_channel_description">Mostra le notifiche quando qualcosa va storto.</string>
|
<string name="notice_notification_channel_description">Mostra le notifiche quando qualcosa va storto.</string>
|
||||||
<string name="notification_permission_not_granted">Autorizzazione di notifica non concessa!</string>
|
<string name="notification_permission_not_granted">Autorizzazione di notifica non concessa!</string>
|
||||||
<string name="app_notification_channel_description">Notifiche dell\'emulatore Eden Switch</string>
|
<string name="app_notification_channel_description">Notifiche dell\'emulatore Eden Switch</string>
|
||||||
<string name="app_notification_running">Eden è in azione</string>
|
<string name="app_notification_running">Eden è in esecuzione</string>
|
||||||
<string name="seconds">secondi</string>
|
<string name="seconds">secondi</string>
|
||||||
|
|
||||||
<!-- Spinbox strings -->
|
<!-- Spinbox strings -->
|
||||||
<string name="increment">Incremento</string>
|
<string name="increment">Aumenta</string>
|
||||||
<string name="decrement">Decremento</string>
|
<string name="decrement">Diminuisci</string>
|
||||||
<string name="value_too_low">Il valore deve essere almeno %1$d</string>
|
<string name="value_too_low">Il valore deve essere almeno %1$d</string>
|
||||||
<string name="value_too_high">Il valore deve essere al massimo %1$d</string>
|
<string name="value_too_high">Il valore deve essere al massimo %1$d</string>
|
||||||
<string name="invalid_value">Valore non valido</string>
|
<string name="invalid_value">Valore non valido</string>
|
||||||
@@ -195,6 +195,7 @@
|
|||||||
<string name="multiplayer_chat">Chat</string>
|
<string name="multiplayer_chat">Chat</string>
|
||||||
<string name="multiplayer_more_options">Altre opzioni</string>
|
<string name="multiplayer_more_options">Altre opzioni</string>
|
||||||
<string name="chat">Chat</string>
|
<string name="chat">Chat</string>
|
||||||
|
<string name="clear">Cancella</string>
|
||||||
<string name="type_message">Scrivi messaggio...</string>
|
<string name="type_message">Scrivi messaggio...</string>
|
||||||
<string name="send_message">Invia messaggio</string>
|
<string name="send_message">Invia messaggio</string>
|
||||||
<string name="multiplayer_moderation">Moderazione</string>
|
<string name="multiplayer_moderation">Moderazione</string>
|
||||||
@@ -240,6 +241,7 @@
|
|||||||
<string name="keys_description">Seleziona il tuo file <b>prod.keys</b> con il pulsante in basso.</string>
|
<string name="keys_description">Seleziona il tuo file <b>prod.keys</b> con il pulsante in basso.</string>
|
||||||
<string name="select_keys">Seleziona le chiavi</string>
|
<string name="select_keys">Seleziona le chiavi</string>
|
||||||
<string name="firmware">Firmware</string>
|
<string name="firmware">Firmware</string>
|
||||||
|
<string name="firmware_description">Seleziona il tuo file <b>firmware.zip</b>con il pulsante in basso.</string>
|
||||||
<string name="select_firmware">Seleziona Firmware</string>
|
<string name="select_firmware">Seleziona Firmware</string>
|
||||||
<string name="games">Giochi</string>
|
<string name="games">Giochi</string>
|
||||||
<string name="games_description">Seleziona la cartella dei <b>giochi</b> con il pulsante in basso.</string>
|
<string name="games_description">Seleziona la cartella dei <b>giochi</b> con il pulsante in basso.</string>
|
||||||
@@ -256,10 +258,15 @@
|
|||||||
<string name="alphabetical">Alfabetico</string>
|
<string name="alphabetical">Alfabetico</string>
|
||||||
<string name="view_list">Lista</string>
|
<string name="view_list">Lista</string>
|
||||||
<string name="view_grid">Griglia</string>
|
<string name="view_grid">Griglia</string>
|
||||||
|
<string name="view_grid_compact">Griglia compatta</string>
|
||||||
<string name="view_carousel">Carosello</string>
|
<string name="view_carousel">Carosello</string>
|
||||||
|
<string name="game_image_desc">Screenshot per %1$s</string>
|
||||||
<string name="folder">Cartella</string>
|
<string name="folder">Cartella</string>
|
||||||
<string name="dont_show_again">Non mostrare più</string>
|
<string name="dont_show_again">Non mostrare più</string>
|
||||||
<string name="add_directory_success">Nuova directory di gioco aggiunta correttamente </string>
|
<string name="add_directory_success">Nuova directory di gioco aggiunta correttamente </string>
|
||||||
|
<string name="enable_update_checks">Controlla la disponibilità di aggiornamenti all\'avvio dell\'app.</string>
|
||||||
|
<string name="update_available">Aggiornamento disponibile</string>
|
||||||
|
<string name="update_available_description">Una nuova versione è disponibile:%1$s\n\nVuoi scaricarla\?</string>
|
||||||
<string name="home_search">Cerca</string>
|
<string name="home_search">Cerca</string>
|
||||||
<string name="home_settings">Impostazioni</string>
|
<string name="home_settings">Impostazioni</string>
|
||||||
<string name="empty_gamelist">Non sono stati trovati file o non è stata ancora selezionata alcuna directory di gioco.</string>
|
<string name="empty_gamelist">Non sono stati trovati file o non è stata ancora selezionata alcuna directory di gioco.</string>
|
||||||
@@ -274,6 +281,7 @@
|
|||||||
<string name="install_prod_keys_description">Necessario per decrittografare i giochi</string>
|
<string name="install_prod_keys_description">Necessario per decrittografare i giochi</string>
|
||||||
<string name="install_prod_keys_warning">Saltare l\'aggiunta delle chiavi?</string>
|
<string name="install_prod_keys_warning">Saltare l\'aggiunta delle chiavi?</string>
|
||||||
<string name="install_prod_keys_warning_description">Sono necessarie delle chiavi valide per emulare i giochi. Se continui, funzioneranno solo le app homebrew.</string>
|
<string name="install_prod_keys_warning_description">Sono necessarie delle chiavi valide per emulare i giochi. Se continui, funzioneranno solo le app homebrew.</string>
|
||||||
|
<string name="install_prod_keys_warning_help">https://yuzu-mirror.github.io/help/quickstart/#guide-introduction</string>
|
||||||
<string name="install_firmware_warning">Saltare l\'aggiunta del firmware?</string>
|
<string name="install_firmware_warning">Saltare l\'aggiunta del firmware?</string>
|
||||||
<string name="install_firmware_warning_description">Molti giochi richiedono l\'accesso al firmware per funzionare correttamente.</string>
|
<string name="install_firmware_warning_description">Molti giochi richiedono l\'accesso al firmware per funzionare correttamente.</string>
|
||||||
<string name="install_firmware_warning_help">https://yuzu-mirror.github.io/help/quickstart/#guide-introduction</string>
|
<string name="install_firmware_warning_help">https://yuzu-mirror.github.io/help/quickstart/#guide-introduction</string>
|
||||||
@@ -301,6 +309,7 @@
|
|||||||
<string name="search_recently_added">Aggiunti recentemente</string>
|
<string name="search_recently_added">Aggiunti recentemente</string>
|
||||||
<string name="open_user_folder">Apri la cartella di Eden</string>
|
<string name="open_user_folder">Apri la cartella di Eden</string>
|
||||||
<string name="open_user_folder_description">Gestisci i file interni di Eden</string>
|
<string name="open_user_folder_description">Gestisci i file interni di Eden</string>
|
||||||
|
<string name="app_settings_description">Modifica il comportamento e l\'aspetto dell\'app</string>
|
||||||
<string name="no_file_manager">Nessun file manager trovato</string>
|
<string name="no_file_manager">Nessun file manager trovato</string>
|
||||||
<string name="notification_no_directory_link">Impossibile aprire la cartella di Eden</string>
|
<string name="notification_no_directory_link">Impossibile aprire la cartella di Eden</string>
|
||||||
<string name="notification_no_directory_link_description">Per favore individua la cartella dell\'utente manualmente con il pannello laterale del file manager.</string>
|
<string name="notification_no_directory_link_description">Per favore individua la cartella dell\'utente manualmente con il pannello laterale del file manager.</string>
|
||||||
@@ -318,6 +327,7 @@
|
|||||||
<string name="firmware_installing">Installando il firmware</string>
|
<string name="firmware_installing">Installando il firmware</string>
|
||||||
<string name="firmware_installed_failure">L\'installazione del firmware è fallita</string>
|
<string name="firmware_installed_failure">L\'installazione del firmware è fallita</string>
|
||||||
<string name="firmware_installed_failure_description">Accertati che i file .nca del firmware siano contenuti direttamente nella radice dello .zip e riprova.</string>
|
<string name="firmware_installed_failure_description">Accertati che i file .nca del firmware siano contenuti direttamente nella radice dello .zip e riprova.</string>
|
||||||
|
<string name="firmware_uninstalled_failure">Disinstallazione del firmware fallita</string>
|
||||||
<string name="share_log">Condividi log di debug</string>
|
<string name="share_log">Condividi log di debug</string>
|
||||||
<string name="share_log_description">Condividi i log di Eden per ricevere supporto</string>
|
<string name="share_log_description">Condividi i log di Eden per ricevere supporto</string>
|
||||||
<string name="share_log_missing">Nessun file di log trovato</string>
|
<string name="share_log_missing">Nessun file di log trovato</string>
|
||||||
@@ -331,7 +341,9 @@
|
|||||||
<string name="install_game_content_success">Contenuto/i di gioco installato/i con successo.</string>
|
<string name="install_game_content_success">Contenuto/i di gioco installato/i con successo.</string>
|
||||||
<string name="install_game_content_success_install">%1$dinstallato con successo.</string>
|
<string name="install_game_content_success_install">%1$dinstallato con successo.</string>
|
||||||
<string name="install_game_content_success_overwrite">%1$dsovrascritto con successo</string>
|
<string name="install_game_content_success_overwrite">%1$dsovrascritto con successo</string>
|
||||||
|
<string name="install_game_content_help_link">https://yuzu-mirror.github.io/help/quickstart/#dumping-installed-updates</string>
|
||||||
<string name="custom_driver_not_supported">I driver personalizzati non sono supportati.</string>
|
<string name="custom_driver_not_supported">I driver personalizzati non sono supportati.</string>
|
||||||
|
<string name="custom_driver_not_supported_description">I driver personalizzati non sono attualmente supportati per questo dispositivo.\nRicontrolla in futuro se il supporto è stato aggiunto.</string>
|
||||||
<string name="manage_yuzu_data">Gestisci i dati di Eden</string>
|
<string name="manage_yuzu_data">Gestisci i dati di Eden</string>
|
||||||
<string name="manage_yuzu_data_description">Importa/Esporta il firmware, le keys, i dati utente, e altro!</string>
|
<string name="manage_yuzu_data_description">Importa/Esporta il firmware, le keys, i dati utente, e altro!</string>
|
||||||
<string name="game_folders">Cartelle di gioco</string>
|
<string name="game_folders">Cartelle di gioco</string>
|
||||||
@@ -355,6 +367,8 @@
|
|||||||
|
|
||||||
<string name="keys_missing">Chiavi di crittografia mancanti</string>
|
<string name="keys_missing">Chiavi di crittografia mancanti</string>
|
||||||
<string name="keys_missing_description">Impossibile decifrare firmware e giochi retail</string>
|
<string name="keys_missing_description">Impossibile decifrare firmware e giochi retail</string>
|
||||||
|
<string name="keys_missing_help">https://yuzu-mirror.github.io/help/quickstart/#dumping-decryption-keys</string>
|
||||||
|
|
||||||
<string name="uninstall_firmware">Disinstalla firmware</string>
|
<string name="uninstall_firmware">Disinstalla firmware</string>
|
||||||
<string name="uninstall_firmware_description">Disinstallare il firmware lo rimuoverà dal dispositivo e potrebbe influire sulla compatibilità dei giochi.</string>
|
<string name="uninstall_firmware_description">Disinstallare il firmware lo rimuoverà dal dispositivo e potrebbe influire sulla compatibilità dei giochi.</string>
|
||||||
<string name="firmware_uninstalling">Disinstallazione firmware...</string>
|
<string name="firmware_uninstalling">Disinstallazione firmware...</string>
|
||||||
@@ -393,9 +407,11 @@
|
|||||||
<string name="about_app_description">Un emulatore della Switch open-source.</string>
|
<string name="about_app_description">Un emulatore della Switch open-source.</string>
|
||||||
<string name="contributors">Collaboratori</string>
|
<string name="contributors">Collaboratori</string>
|
||||||
<string name="contributors_description">Realizzato con \u2764 dal team Eden</string>
|
<string name="contributors_description">Realizzato con \u2764 dal team Eden</string>
|
||||||
|
<string name="contributors_link">https://git.eden-emu.dev/eden-emu/eden/activity/contributors</string>
|
||||||
<string name="licenses_description">Progetti che rendono Eden per Android possibile</string>
|
<string name="licenses_description">Progetti che rendono Eden per Android possibile</string>
|
||||||
<string name="build">Compilazione</string>
|
<string name="build">Compilazione</string>
|
||||||
<string name="user_data">Dati Utente</string>
|
<string name="user_data">Dati Utente</string>
|
||||||
|
<string name="user_data_description">Importa/Esporta tutti i dati dell\'app.\n\nQuando si importano nuovi dati utente, tutti quelli esistenti verranno cancellati!\n\nImportare dati da Citron può causare problemi. È raccomandato importare manualmente tutti i dati utili.</string>
|
||||||
<string name="exporting_user_data">Esportazione dei Dati Utente...</string>
|
<string name="exporting_user_data">Esportazione dei Dati Utente...</string>
|
||||||
<string name="importing_user_data">Importazione dei Dati Utente...</string>
|
<string name="importing_user_data">Importazione dei Dati Utente...</string>
|
||||||
<string name="invalid_yuzu_backup">Backup di Eden Invalido</string>
|
<string name="invalid_yuzu_backup">Backup di Eden Invalido</string>
|
||||||
@@ -446,6 +462,8 @@
|
|||||||
<string name="renderer_screen_layout">Orientamento</string>
|
<string name="renderer_screen_layout">Orientamento</string>
|
||||||
<string name="renderer_aspect_ratio">Rapporto d\'aspetto: </string>
|
<string name="renderer_aspect_ratio">Rapporto d\'aspetto: </string>
|
||||||
<string name="renderer_scaling_filter">Filtro adattivo della finestra </string>
|
<string name="renderer_scaling_filter">Filtro adattivo della finestra </string>
|
||||||
|
<string name="fsr_sharpness">Nitidezza FSR</string>
|
||||||
|
<string name="fsr_sharpness_description">Determina quanto sarà nitida l\'immagine utilizzando il contrasto dinamico di FSR</string>
|
||||||
<string name="renderer_anti_aliasing">Metodo di anti-aliasing</string>
|
<string name="renderer_anti_aliasing">Metodo di anti-aliasing</string>
|
||||||
<string name="renderer_force_max_clock">Forza clock massimi (solo Adreno)</string>
|
<string name="renderer_force_max_clock">Forza clock massimi (solo Adreno)</string>
|
||||||
<string name="renderer_force_max_clock_description">Forza la GPU a girare col massimo clock possibile (i vincoli alla temperatura saranno comunque applicati)</string>
|
<string name="renderer_force_max_clock_description">Forza la GPU a girare col massimo clock possibile (i vincoli alla temperatura saranno comunque applicati)</string>
|
||||||
@@ -486,6 +504,8 @@
|
|||||||
<string name="audio_volume">Volume</string>
|
<string name="audio_volume">Volume</string>
|
||||||
<string name="audio_volume_description">Specifica il volume dell\'audio in uscita.</string>
|
<string name="audio_volume_description">Specifica il volume dell\'audio in uscita.</string>
|
||||||
|
|
||||||
|
<!-- Input strings -->
|
||||||
|
<string name="buttons">Pulsanti</string>
|
||||||
<string name="button_a">A</string>
|
<string name="button_a">A</string>
|
||||||
<string name="button_b">B</string>
|
<string name="button_b">B</string>
|
||||||
<string name="button_x">X</string>
|
<string name="button_x">X</string>
|
||||||
@@ -494,25 +514,45 @@
|
|||||||
<string name="button_minus">Meno</string>
|
<string name="button_minus">Meno</string>
|
||||||
<string name="button_home">Home</string>
|
<string name="button_home">Home</string>
|
||||||
<string name="button_capture">Cattura</string>
|
<string name="button_capture">Cattura</string>
|
||||||
|
<string name="start_pause">Avvia/Pausa</string>
|
||||||
<string name="dpad">D-Pad</string>
|
<string name="dpad">D-Pad</string>
|
||||||
<string name="up">Su</string>
|
<string name="up">Su</string>
|
||||||
<string name="down">Giù</string>
|
<string name="down">Giù</string>
|
||||||
<string name="left">Sinistra</string>
|
<string name="left">Sinistra</string>
|
||||||
<string name="right">Destra</string>
|
<string name="right">Destra</string>
|
||||||
<string name="left_stick">Analogico sinistro</string>
|
<string name="left_stick">Analogico sinistro</string>
|
||||||
|
<string name="control_stick">Levetta di Controllo</string>
|
||||||
<string name="right_stick">Analogico destro</string>
|
<string name="right_stick">Analogico destro</string>
|
||||||
<string name="c_stick">Levetta C</string>
|
<string name="c_stick">Levetta C</string>
|
||||||
<string name="pressed">Premuto</string>
|
<string name="pressed">Premuto</string>
|
||||||
<string name="range">Raggio</string>
|
<string name="range">Raggio</string>
|
||||||
<string name="deadzone">Zona morta</string>
|
<string name="deadzone">Zona morta</string>
|
||||||
<string name="modifier">Modificatore</string>
|
<string name="modifier">Modificatore</string>
|
||||||
|
<string name="modifier_range">Range di modifica</string>
|
||||||
|
<string name="triggers">Grilletti</string>
|
||||||
<string name="button_l">L</string>
|
<string name="button_l">L</string>
|
||||||
<string name="button_r">R</string>
|
<string name="button_r">R</string>
|
||||||
<string name="button_zl">ZL</string>
|
<string name="button_zl">ZL</string>
|
||||||
<string name="button_zr">ZR</string>
|
<string name="button_zr">ZR</string>
|
||||||
|
<string name="button_sl_left">SL Sinistro</string>
|
||||||
|
<string name="button_sr_left">SR Sinistro</string>
|
||||||
|
<string name="button_sl_right">SL Destro</string>
|
||||||
|
<string name="button_sr_right">SR Destro</string>
|
||||||
<string name="button_z">Z</string>
|
<string name="button_z">Z</string>
|
||||||
<string name="invalid">Non valido</string>
|
<string name="invalid">Non valido</string>
|
||||||
|
<string name="not_set">Non impostato</string>
|
||||||
<string name="unknown">Sconosciuto</string>
|
<string name="unknown">Sconosciuto</string>
|
||||||
|
<string name="qualified_hat">%1$s%2$s%3$sFreccia%4$s</string>
|
||||||
|
<string name="qualified_button_stick_axis">%1$s%2$s%3$sAsse%4$s</string>
|
||||||
|
<string name="qualified_button">%1$s%2$s%3$sPulsante%4$s</string>
|
||||||
|
<string name="qualified_axis">Asse%1$s%2$s</string>
|
||||||
|
<string name="unused">Inutilizzato</string>
|
||||||
|
<string name="input_mapping_filter">Filtro input mapping</string>
|
||||||
|
<string name="input_mapping_filter_description">Seleziona un dispositivo che faccia da filtro per l\'input mapping</string>
|
||||||
|
<string name="auto_map">Mappa in automatico un controller</string>
|
||||||
|
<string name="auto_map_description">Seleziona un dispositivo per provare ad auto-mapparlo</string>
|
||||||
|
<string name="attempted_auto_map">Auto-map eseguito con %1$s</string>
|
||||||
|
<string name="controller_type">Tipo controller</string>
|
||||||
<string name="pro_controller">Pro Controller</string>
|
<string name="pro_controller">Pro Controller</string>
|
||||||
<string name="handheld">Portatile</string>
|
<string name="handheld">Portatile</string>
|
||||||
<string name="dual_joycons">Due Joycon</string>
|
<string name="dual_joycons">Due Joycon</string>
|
||||||
@@ -526,9 +566,28 @@
|
|||||||
<string name="set_threshold">Imposta soglia</string>
|
<string name="set_threshold">Imposta soglia</string>
|
||||||
<string name="toggle_axis">Cancella asse</string>
|
<string name="toggle_axis">Cancella asse</string>
|
||||||
<string name="connected">Connesso</string>
|
<string name="connected">Connesso</string>
|
||||||
|
<string name="use_system_vibrator">Use vibrazione di sistema</string>
|
||||||
|
<string name="input_overlay">Input overlay</string>
|
||||||
<string name="vibration">Vibrazione</string>
|
<string name="vibration">Vibrazione</string>
|
||||||
|
<string name="vibration_strength">Potenza vibrazione</string>
|
||||||
<string name="profile">Profilo</string>
|
<string name="profile">Profilo</string>
|
||||||
|
<string name="create_new_profile">Crea nuovo profilo</string>
|
||||||
|
<string name="enter_profile_name">Inserisci nome profilo</string>
|
||||||
|
<string name="profile_name_already_exists">Esiste già un altro profilo con questo nome</string>
|
||||||
|
<string name="invalid_profile_name">Nome profilo non valido</string>
|
||||||
<string name="use_global_input_configuration">Usa la configurazione di input globale</string>
|
<string name="use_global_input_configuration">Usa la configurazione di input globale</string>
|
||||||
|
<string name="player_num_profile">Profilo %d giocatore</string>
|
||||||
|
<string name="delete_input_profile">Elimina profilo di input</string>
|
||||||
|
<string name="delete_input_profile_description">Sei sicuro di voler cancellare questo profilo\? Non potrai più recuperarlo.</string>
|
||||||
|
<string name="stick_map_description">Muovi un analogico a sinistra e poi sopra o premi un pulsante</string>
|
||||||
|
<string name="button_map_description">Premi un pulsante o muovi un grilletto/analogico</string>
|
||||||
|
<string name="map_dpad_direction">Map sulle frecce %1$s</string>
|
||||||
|
<string name="map_control">Mappa su %1$s</string>
|
||||||
|
<string name="failed_to_load_profile">Apertura del profilo fallita</string>
|
||||||
|
<string name="failed_to_save_profile">Salvataggio del profilo fallito</string>
|
||||||
|
<string name="reset_mapping">Resetta pulsanti</string>
|
||||||
|
<string name="reset_mapping_description">Sei sicuro di voler resettare tutti i pulsanti mappati per questo controller\? Questa azione non può essere annullata.</string>
|
||||||
|
|
||||||
<!-- Miscellaneous -->
|
<!-- Miscellaneous -->
|
||||||
<string name="slider_default">Predefinito</string>
|
<string name="slider_default">Predefinito</string>
|
||||||
<string name="loading">Caricamento…</string>
|
<string name="loading">Caricamento…</string>
|
||||||
@@ -553,6 +612,7 @@
|
|||||||
<string name="fetch">Recupera</string>
|
<string name="fetch">Recupera</string>
|
||||||
<string name="delete">Elimina</string>
|
<string name="delete">Elimina</string>
|
||||||
<string name="edit">Modifica</string>
|
<string name="edit">Modifica</string>
|
||||||
|
<string name="import_success">Importato correttamente</string>
|
||||||
<string name="export_success">Esportazione completata</string>
|
<string name="export_success">Esportazione completata</string>
|
||||||
<string name="start">Start</string>
|
<string name="start">Start</string>
|
||||||
<string name="global">Globale</string>
|
<string name="global">Globale</string>
|
||||||
@@ -560,6 +620,8 @@
|
|||||||
<string name="import_complete">Importazione completata</string>
|
<string name="import_complete">Importazione completata</string>
|
||||||
<string name="use_global_setting">Usa l\'impostazione globale</string>
|
<string name="use_global_setting">Usa l\'impostazione globale</string>
|
||||||
<string name="operation_completed_successfully">Operazione completata con successo</string>
|
<string name="operation_completed_successfully">Operazione completata con successo</string>
|
||||||
|
<string name="confirm">Conferma</string>
|
||||||
|
<string name="load">Carica</string>
|
||||||
<string name="save">Salva</string>
|
<string name="save">Salva</string>
|
||||||
|
|
||||||
<!-- GPU driver installation -->
|
<!-- GPU driver installation -->
|
||||||
@@ -598,25 +660,75 @@
|
|||||||
<string name="preferences_audio">Audio</string>
|
<string name="preferences_audio">Audio</string>
|
||||||
<string name="preferences_audio_description">Motore di Output audio e volume</string>
|
<string name="preferences_audio_description">Motore di Output audio e volume</string>
|
||||||
<string name="preferences_controls">Comandi</string>
|
<string name="preferences_controls">Comandi</string>
|
||||||
|
<string name="preferences_controls_description">Mappa un input del controller</string>
|
||||||
|
<string name="preferences_player">Giocatore %d</string>
|
||||||
<string name="preferences_debug">Debug</string>
|
<string name="preferences_debug">Debug</string>
|
||||||
<string name="preferences_debug_description">Debugging CPU/GPU, API grafiche, fastmem</string>
|
<string name="preferences_debug_description">Debugging CPU/GPU, API grafiche, fastmem</string>
|
||||||
|
|
||||||
<!-- Game properties -->
|
<!-- Game properties -->
|
||||||
<string name="info">Info</string>
|
<string name="info">Info</string>
|
||||||
<string name="info_description">ID Programma, Sviluppatore, Versione</string>
|
<string name="info_description">ID Programma, Sviluppatore, Versione</string>
|
||||||
|
<string name="per_game_settings">Impostazioni specifiche per ogni gioco</string>
|
||||||
<string name="per_game_settings_description">Modifica le impostazioni solo per questo gioco</string>
|
<string name="per_game_settings_description">Modifica le impostazioni solo per questo gioco</string>
|
||||||
<string name="launch_options">Avvia configurazione</string>
|
<string name="launch_options">Avvia configurazione</string>
|
||||||
<string name="path">Percorso</string>
|
<string name="path">Percorso</string>
|
||||||
<string name="program_id">Id Programma</string>
|
<string name="program_id">Id Programma</string>
|
||||||
<string name="developer">Sviluppatore</string>
|
<string name="developer">Sviluppatore</string>
|
||||||
<string name="version">Versione</string>
|
<string name="version">Versione</string>
|
||||||
|
<string name="copy_details">Copia dettagli</string>
|
||||||
<string name="add_ons">Add-on</string>
|
<string name="add_ons">Add-on</string>
|
||||||
|
<string name="add_ons_description">Gestisci mod, aggiornamenti e DLC</string>
|
||||||
|
<string name="playtime">Tempo di gioco:</string>
|
||||||
|
<string name="reset_playtime">Resetta tempo di gioco</string>
|
||||||
|
<string name="reset_playtime_description">Resetta il tempo di gioco di quest\'ultimo a 0 secondi</string>
|
||||||
|
<string name="reset_playtime_warning_description">In questo modo resetterai il tempo di gioco di quest\'ultimo. Sei sicuro\?</string>
|
||||||
|
<string name="playtime_reset_successfully">Il tempo di gioco è stato resettato.</string>
|
||||||
|
<string name="edit_playtime">Modifica tempo di gioco</string>
|
||||||
|
<string name="hours">Ore</string>
|
||||||
|
<string name="minutes">Minuti</string>
|
||||||
|
<string name="hours_must_be_between_0_and_9999">Le ore devono essere comprese tra 0 e 9999</string>
|
||||||
|
<string name="minutes_must_be_between_0_and_59">I minuti devono essere compresi tra 0 e 59</string>
|
||||||
|
<string name="seconds_must_be_between_0_and_59">I secondi devono essere compresi tra 0 e 59</string>
|
||||||
|
<string name="playtime_updated_successfully">Tempo di gioco correttamente aggiornato</string>
|
||||||
<string name="clear_shader_cache">Rimuove la cache delle Shader</string>
|
<string name="clear_shader_cache">Rimuove la cache delle Shader</string>
|
||||||
<string name="clear_shader_cache_description">Cancella tutte le shader compilate su questo gioco fino ad ora</string>
|
<string name="clear_shader_cache_description">Cancella tutte le shader compilate su questo gioco fino ad ora</string>
|
||||||
|
<string name="clear_shader_cache_warning_description">Mentre la cache delle shader rigenera potresti imbatterti in stuttering</string>
|
||||||
|
<string name="cleared_shaders_successfully">Shader eliminati correttamente</string>
|
||||||
|
<string name="addons_game">Addons: %1$s</string>
|
||||||
|
<string name="save_data">Dati di salvataggio</string>
|
||||||
<string name="save_data_description">Gestisci i salvataggi di questo gioco</string>
|
<string name="save_data_description">Gestisci i salvataggi di questo gioco</string>
|
||||||
|
<string name="delete_save_data">Elimina salvataggio</string>
|
||||||
|
<string name="delete_save_data_description">Cancella tutti i salvataggi per questo gioco</string>
|
||||||
|
<string name="delete_save_data_warning_description">Questo cancella completamente tutti i dati di salvataggio per questo gioco. Sei sicuro di voler continuare\?</string>
|
||||||
|
<string name="save_data_deleted_successfully">Salvataggi eliminati correttamente</string>
|
||||||
|
<string name="select_content_type">Tipo contenuto</string>
|
||||||
|
<string name="updates_and_dlc">Aggiornamenti e DLC</string>
|
||||||
|
<string name="mods_and_cheats">Mod e trucchi</string>
|
||||||
|
<string name="addon_notice">Avviso per gli addon importante</string>
|
||||||
|
<!-- \"cheats/" "romfs/" and \"exefs/ should not be translated -->
|
||||||
|
<string name="addon_notice_description">Per installare mod e trucchi, devi selezionare una cartella che contenga una cartella chiamata \"cheats/\", \"romfs/\" oppure \"exefs/\". Non possiamo verificare se questi saranno compatibili con il gioco, quindi fai attenzione!</string>
|
||||||
|
<string name="invalid_directory">Cartella non valida</string>
|
||||||
|
<!-- \"cheats/" "romfs/" and \"exefs/ should not be translated -->
|
||||||
|
<string name="invalid_directory_description">Per favore ricontrolla che la cartella che hai selezionato ne contenga una chiamata \"cheats/\", \"romfs/\" o \"exefs/\" e riprova.</string>
|
||||||
|
<string name="addon_installed_successfully">Addon installato correttamente</string>
|
||||||
|
<string name="verifying_content">Verifica del contenuto in corso...</string>
|
||||||
|
<string name="content_install_notice">Avviso installazione contenuto</string>
|
||||||
|
<string name="content_install_notice_description">Il contenuto che hai selezionato non corrisponde a questo gioco. Vuoi installare comunque\?</string>
|
||||||
|
<string name="confirm_uninstall">Conferma disinstallazione</string>
|
||||||
|
<string name="confirm_uninstall_description">Sei sicuro di voler cancellare quest\'addon\?</string>
|
||||||
|
<string name="verify_integrity">Verifica integrità</string>
|
||||||
|
<string name="verifying">Verifica in corso...</string>
|
||||||
<string name="verify_success">Verifica dell\'integrità completata con successo!</string>
|
<string name="verify_success">Verifica dell\'integrità completata con successo!</string>
|
||||||
<string name="verify_failure">Verifica dell\'integrità fallita!</string>
|
<string name="verify_failure">Verifica dell\'integrità fallita!</string>
|
||||||
|
<string name="verify_failure_description">I contenuti dei file potrebbero essere corrotti</string>
|
||||||
|
<string name="verify_no_result">Impossibile effettuare la verifica dell\'integrità</string>
|
||||||
<string name="verify_no_result_description">L\'integrità dei contenuti non è stata validata</string>
|
<string name="verify_no_result_description">L\'integrità dei contenuti non è stata validata</string>
|
||||||
|
<string name="verification_failed_for">La verifica è fallita per i seguenti file: %1$s</string>
|
||||||
|
<string name="share_game_settings">Condividi configurazione</string>
|
||||||
|
<string name="import_config">Importa configurazione</string>
|
||||||
|
<string name="export_config">Esporta configurazione</string>
|
||||||
|
<string name="share_config_failed">Impossibile condividere il file</string>
|
||||||
|
|
||||||
<!-- ROM loading errors -->
|
<!-- ROM loading errors -->
|
||||||
<string name="loader_error_encrypted">La tua ROM è criptata</string>
|
<string name="loader_error_encrypted">La tua ROM è criptata</string>
|
||||||
<string name="loader_error_encrypted_roms_description"><![CDATA[Segui le guide per ridumpare le tue <a href=\"https://yuzu-mirror.github.io/help/quickstart/#dumping-physical-titles-game-cards\">schede di gioco</a> o <a href=\"https://yuzu-mirror.github.io/help/quickstart/#dumping-digital-titles-eshop\">titoli digitali</a>.]]></string>
|
<string name="loader_error_encrypted_roms_description"><![CDATA[Segui le guide per ridumpare le tue <a href=\"https://yuzu-mirror.github.io/help/quickstart/#dumping-physical-titles-game-cards\">schede di gioco</a> o <a href=\"https://yuzu-mirror.github.io/help/quickstart/#dumping-digital-titles-eshop\">titoli digitali</a>.]]></string>
|
||||||
@@ -648,6 +760,7 @@
|
|||||||
<string name="config_write_failed">Impossibile scrivere il file di configurazione</string>
|
<string name="config_write_failed">Impossibile scrivere il file di configurazione</string>
|
||||||
<string name="config_apply_failed">Impossibile applicare la configurazione</string>
|
<string name="config_apply_failed">Impossibile applicare la configurazione</string>
|
||||||
<string name="config_already_exists_title">Configurazione già esistente</string>
|
<string name="config_already_exists_title">Configurazione già esistente</string>
|
||||||
|
<string name="config_already_exists_message">Impostazioni personalizzate già esistenti per %1$s.\n\nVuoi sovrascrivere la configurazione esistente\?\n\nQuesta azione non può essere annullata.</string>
|
||||||
<string name="config_exists_prompt">Verifica della configurazione esistente...</string>
|
<string name="config_exists_prompt">Verifica della configurazione esistente...</string>
|
||||||
<string name="overwrite_cancelled">Sovrascrittura annullata</string>
|
<string name="overwrite_cancelled">Sovrascrittura annullata</string>
|
||||||
<string name="overwrite">Sovrascrivi</string>
|
<string name="overwrite">Sovrascrivi</string>
|
||||||
@@ -657,6 +770,7 @@
|
|||||||
<string name="invalid_driver_file">File driver non valido: %s</string>
|
<string name="invalid_driver_file">File driver non valido: %s</string>
|
||||||
<string name="network_unavailable">Nessuna connessione di rete disponibile. Controlla la connessione Internet e riprova.</string>
|
<string name="network_unavailable">Nessuna connessione di rete disponibile. Controlla la connessione Internet e riprova.</string>
|
||||||
<string name="driver_missing_title">Driver GPU richiesto</string>
|
<string name="driver_missing_title">Driver GPU richiesto</string>
|
||||||
|
<string name="driver_missing_message">La configurazione del gioco richiede il driver GPU \"%s\" che non è installato sul tuo dispositivo.\n\nVuoi scaricarlo e installarlo ora\?</string>
|
||||||
<string name="driver_download_cancelled">Download del driver annullato. Il gioco non può essere avviato senza il driver richiesto.</string>
|
<string name="driver_download_cancelled">Download del driver annullato. Il gioco non può essere avviato senza il driver richiesto.</string>
|
||||||
<string name="download">Scarica</string>
|
<string name="download">Scarica</string>
|
||||||
|
|
||||||
@@ -678,7 +792,22 @@
|
|||||||
<string name="emulation_pause">Sospendi l\'emulazione</string>
|
<string name="emulation_pause">Sospendi l\'emulazione</string>
|
||||||
<string name="emulation_unpause">Riprendi l\'emulazione</string>
|
<string name="emulation_unpause">Riprendi l\'emulazione</string>
|
||||||
<string name="emulation_input_overlay">Opzioni overlay</string>
|
<string name="emulation_input_overlay">Opzioni overlay</string>
|
||||||
|
<string name="load_amiibo">Carica Amiibo</string>
|
||||||
<string name="touchscreen">Touchscreen</string>
|
<string name="touchscreen">Touchscreen</string>
|
||||||
|
<string name="lock_drawer">Blocca drawer</string>
|
||||||
|
<string name="unlock_drawer">Sblocca drawer</string>
|
||||||
|
<string name="reset">Reimposta</string>
|
||||||
|
|
||||||
|
<!-- Amiibo -->
|
||||||
|
<string name="amiibo_title">Amiibo</string>
|
||||||
|
<string name="amiibo_removed_message">L\'Amiibo corrente è stato rimosso</string>
|
||||||
|
<string name="amiibo_wrong_state">Il gioco in uso non è alla ricerca di Amiibo</string>
|
||||||
|
<string name="amiibo_not_valid">Il file selezionato non è un Amiibo valido</string>
|
||||||
|
<string name="amiibo_in_use">Il file selezionato è già in uso</string>
|
||||||
|
<string name="amiibo_unknown_error">Si è verificato un errore sconosciuto</string>
|
||||||
|
<string name="amiibo_load_success">Amiibo caricato</string>
|
||||||
|
|
||||||
|
|
||||||
<!-- Software keyboard -->
|
<!-- Software keyboard -->
|
||||||
<string name="software_keyboard">Tastiera Software</string>
|
<string name="software_keyboard">Tastiera Software</string>
|
||||||
|
|
||||||
@@ -686,9 +815,12 @@
|
|||||||
<string name="abort_button">Interrompi</string>
|
<string name="abort_button">Interrompi</string>
|
||||||
<string name="continue_button">Continua</string>
|
<string name="continue_button">Continua</string>
|
||||||
<string name="system_archive_not_found">Archivio di sistema non trovato</string>
|
<string name="system_archive_not_found">Archivio di sistema non trovato</string>
|
||||||
|
<string name="system_archive_not_found_message">%s è mancante. Per favore esegui il dump degli archivi del tuo sistema.\nContinuare ad emulare potrebbe portare bug o causare crash.</string>
|
||||||
<string name="system_archive_general">Un archivio di sistema</string>
|
<string name="system_archive_general">Un archivio di sistema</string>
|
||||||
<string name="save_load_error">Errore di salvataggio/caricamento</string>
|
<string name="save_load_error">Errore di salvataggio/caricamento</string>
|
||||||
<string name="fatal_error">Errore Fatale</string>
|
<string name="fatal_error">Errore Fatale</string>
|
||||||
|
<string name="fatal_error_message">Errore Fatale. Controlla i log per i dettagli.\nContinuare l\'emulazione potrebbe causare crash.</string>
|
||||||
|
<string name="device_memory_inadequate">RAM Totale:%1$s\nRaccomandati: %2$s</string>
|
||||||
<string name="memory_formatted">%1$s%2$s</string>
|
<string name="memory_formatted">%1$s%2$s</string>
|
||||||
<string name="no_game_present">Non è presente alcun gioco avviabile.</string>
|
<string name="no_game_present">Non è presente alcun gioco avviabile.</string>
|
||||||
|
|
||||||
@@ -735,8 +867,13 @@
|
|||||||
<!-- Renderer Accuracy -->
|
<!-- Renderer Accuracy -->
|
||||||
<string name="renderer_accuracy_normal">Normale</string>
|
<string name="renderer_accuracy_normal">Normale</string>
|
||||||
<string name="renderer_accuracy_high">Alta</string>
|
<string name="renderer_accuracy_high">Alta</string>
|
||||||
|
<string name="renderer_accuracy_extreme">Estrema</string>
|
||||||
|
|
||||||
<!-- DMA Accuracy -->
|
<!-- DMA Accuracy -->
|
||||||
<string name="dma_accuracy_default">Predefinito</string>
|
<string name="dma_accuracy_default">Predefinito</string>
|
||||||
|
<string name="dma_accuracy_unsafe">Non sicura</string>
|
||||||
|
<string name="dma_accuracy_safe">Sicura</string>
|
||||||
|
|
||||||
<!-- ASTC Decoding Method -->
|
<!-- ASTC Decoding Method -->
|
||||||
<string name="accelerate_astc">Metodo decodifica ASTC</string>
|
<string name="accelerate_astc">Metodo decodifica ASTC</string>
|
||||||
<string name="accelerate_astc_description">Scegli come decodificare le texture compresse ASTC per il rendering: CPU (lento, sicuro), GPU (veloce, consigliato) o CPU Async (senza stuttering, può causare problemi)</string>
|
<string name="accelerate_astc_description">Scegli come decodificare le texture compresse ASTC per il rendering: CPU (lento, sicuro), GPU (veloce, consigliato) o CPU Async (senza stuttering, può causare problemi)</string>
|
||||||
@@ -766,6 +903,7 @@
|
|||||||
<string name="resolution_half">0.5X (360p/540p)</string>
|
<string name="resolution_half">0.5X (360p/540p)</string>
|
||||||
<string name="resolution_three_quarter">0.75X (540p/810p)</string>
|
<string name="resolution_three_quarter">0.75X (540p/810p)</string>
|
||||||
<string name="resolution_one">1X (720p/1080p)</string>
|
<string name="resolution_one">1X (720p/1080p)</string>
|
||||||
|
<string name="resolution_five_quarter">1.25X (900p/1350p)</string>
|
||||||
<string name="resolution_three_half">1.5X (1080p/1620p)</string>
|
<string name="resolution_three_half">1.5X (1080p/1620p)</string>
|
||||||
<string name="resolution_two">2X (1440p/2160p) (Slow)</string>
|
<string name="resolution_two">2X (1440p/2160p) (Slow)</string>
|
||||||
<string name="resolution_three">3X (2160p/3240p) (Slow)</string>
|
<string name="resolution_three">3X (2160p/3240p) (Slow)</string>
|
||||||
@@ -781,9 +919,17 @@
|
|||||||
<string name="scaling_filter_nearest_neighbor">Nearest neighbor</string>
|
<string name="scaling_filter_nearest_neighbor">Nearest neighbor</string>
|
||||||
<string name="scaling_filter_bilinear">Bilineare</string>
|
<string name="scaling_filter_bilinear">Bilineare</string>
|
||||||
<string name="scaling_filter_bicubic">Bicubico</string>
|
<string name="scaling_filter_bicubic">Bicubico</string>
|
||||||
|
<string name="scaling_filter_spline1">Spline-1</string>
|
||||||
<string name="scaling_filter_gaussian">Gaussiano</string>
|
<string name="scaling_filter_gaussian">Gaussiano</string>
|
||||||
|
<string name="scaling_filter_lanczos">Lanczos</string>
|
||||||
<string name="scaling_filter_scale_force">ScaleForce</string>
|
<string name="scaling_filter_scale_force">ScaleForce</string>
|
||||||
<string name="scaling_filter_fsr">AMD FidelityFX™️ Super Resolution</string>
|
<string name="scaling_filter_fsr">AMD FidelityFX™️ Super Resolution</string>
|
||||||
|
<string name="scaling_filter_area">Area</string>
|
||||||
|
<string name="scaling_filter_zero_tangent">Zero-Tangent</string>
|
||||||
|
<string name="scaling_filter_bspline">B-Spline</string>
|
||||||
|
<string name="scaling_filter_mitchell">Mitchell</string>
|
||||||
|
<string name="scaling_filter_mmpx">MMPX</string>
|
||||||
|
|
||||||
<!-- Anti-Aliasing -->
|
<!-- Anti-Aliasing -->
|
||||||
<string name="anti_aliasing_none">Nessuna</string>
|
<string name="anti_aliasing_none">Nessuna</string>
|
||||||
<string name="anti_aliasing_fxaa">FXAA</string>
|
<string name="anti_aliasing_fxaa">FXAA</string>
|
||||||
@@ -791,8 +937,13 @@
|
|||||||
|
|
||||||
<!-- Screen Layouts -->
|
<!-- Screen Layouts -->
|
||||||
<string name="screen_layout_auto">Automatico</string>
|
<string name="screen_layout_auto">Automatico</string>
|
||||||
|
<string name="screen_layout_sensor_landscape">Layout orizzontale sensore</string>
|
||||||
<string name="screen_layout_landscape">Layout Orizzontale</string>
|
<string name="screen_layout_landscape">Layout Orizzontale</string>
|
||||||
|
<string name="screen_layout_reverse_landscape">Layout orizzontale inverso sensore</string>
|
||||||
|
<string name="screen_layout_sensor_portrait">Layout verticale sensore</string>
|
||||||
<string name="screen_layout_portrait">Layout Verticale</string>
|
<string name="screen_layout_portrait">Layout Verticale</string>
|
||||||
|
<string name="screen_layout_reverse_portrait">Layout verticale inverso</string>
|
||||||
|
|
||||||
<!-- Aspect Ratios -->
|
<!-- Aspect Ratios -->
|
||||||
<string name="ratio_default">Predefinito (16:9)</string>
|
<string name="ratio_default">Predefinito (16:9)</string>
|
||||||
<string name="ratio_force_four_three">Forza 4:3</string>
|
<string name="ratio_force_four_three">Forza 4:3</string>
|
||||||
@@ -800,10 +951,16 @@
|
|||||||
<string name="ratio_force_sixteen_ten">Forza 16:10</string>
|
<string name="ratio_force_sixteen_ten">Forza 16:10</string>
|
||||||
<string name="ratio_stretch">Adatta alla finestra</string>
|
<string name="ratio_stretch">Adatta alla finestra</string>
|
||||||
|
|
||||||
|
<!-- CPU Backend -->
|
||||||
|
<string name="cpu_backend_dynarmic">Dynarmic (JIT)</string>
|
||||||
|
<string name="cpu_backend_nce">Native code execution (NCE)</string>
|
||||||
|
|
||||||
<!-- CPU Accuracy -->
|
<!-- CPU Accuracy -->
|
||||||
<string name="cpu_accuracy_accurate">Accurata</string>
|
<string name="cpu_accuracy_accurate">Accurata</string>
|
||||||
<string name="cpu_accuracy_unsafe">Non sicura</string>
|
<string name="cpu_accuracy_unsafe">Non sicura</string>
|
||||||
<string name="cpu_accuracy_paranoid">Paranoico (Lento)</string>
|
<string name="cpu_accuracy_paranoid">Paranoico (Lento)</string>
|
||||||
|
<string name="cpu_accuracy_debugging">Debugging</string>
|
||||||
|
|
||||||
<!-- Gamepad Buttons -->
|
<!-- Gamepad Buttons -->
|
||||||
<string name="gamepad_d_pad">D-pad</string>
|
<string name="gamepad_d_pad">D-pad</string>
|
||||||
<string name="gamepad_left_stick">Analogico sinistro</string>
|
<string name="gamepad_left_stick">Analogico sinistro</string>
|
||||||
@@ -818,12 +975,17 @@
|
|||||||
<string name="change_app_theme">Cambia tema dell\'app</string>
|
<string name="change_app_theme">Cambia tema dell\'app</string>
|
||||||
<string name="theme_default">Predefinito</string>
|
<string name="theme_default">Predefinito</string>
|
||||||
<string name="theme_material_you">Material You</string>
|
<string name="theme_material_you">Material You</string>
|
||||||
|
<string name="app_settings">Impostazioni app</string>
|
||||||
|
<string name="theme_and_color">Tema e colore</string>
|
||||||
|
|
||||||
<!-- Theme Modes -->
|
<!-- Theme Modes -->
|
||||||
<string name="change_theme_mode">Cambia la modalità del tema</string>
|
<string name="change_theme_mode">Cambia la modalità del tema</string>
|
||||||
<string name="theme_mode_follow_system">Segue il Sistema</string>
|
<string name="theme_mode_follow_system">Segue il Sistema</string>
|
||||||
<string name="theme_mode_light">Chiaro</string>
|
<string name="theme_mode_light">Chiaro</string>
|
||||||
<string name="theme_mode_dark">Scuro</string>
|
<string name="theme_mode_dark">Scuro</string>
|
||||||
|
|
||||||
|
<!-- Audio output engines -->
|
||||||
|
<string name="oboe">oboe</string>
|
||||||
<string name="cubeb">cubeb</string>
|
<string name="cubeb">cubeb</string>
|
||||||
|
|
||||||
<!-- Anisotropic filtering options -->
|
<!-- Anisotropic filtering options -->
|
||||||
@@ -838,6 +1000,7 @@
|
|||||||
|
|
||||||
<!-- Static Themes -->
|
<!-- Static Themes -->
|
||||||
<string name="static_theme_color">Colore tema</string>
|
<string name="static_theme_color">Colore tema</string>
|
||||||
|
<string name="eden_theme">Eden (Default)</string>
|
||||||
<string name="violet">Viola (Predefinito)</string>
|
<string name="violet">Viola (Predefinito)</string>
|
||||||
<string name="blue">Blu</string>
|
<string name="blue">Blu</string>
|
||||||
<string name="cyan">Ciano</string>
|
<string name="cyan">Ciano</string>
|
||||||
@@ -856,6 +1019,12 @@
|
|||||||
<string name="mute">Silenzia</string>
|
<string name="mute">Silenzia</string>
|
||||||
<string name="unmute">Riattiva</string>
|
<string name="unmute">Riattiva</string>
|
||||||
|
|
||||||
|
<!-- Emulation vertical alignment -->
|
||||||
|
<string name="vertical_alignment">Allineamento verticale</string>
|
||||||
|
<string name="top">In alto</string>
|
||||||
|
<string name="center">Centro</string>
|
||||||
|
<string name="bottom">In basso</string>
|
||||||
|
|
||||||
<!-- Applet Modes -->
|
<!-- Applet Modes -->
|
||||||
<string name="applets_menu">Applet</string>
|
<string name="applets_menu">Applet</string>
|
||||||
<string name="applets_menu_description">(In lavorazione) Cambia frontend e impostazioni degli applet</string>
|
<string name="applets_menu_description">(In lavorazione) Cambia frontend e impostazioni degli applet</string>
|
||||||
|
|||||||