Compare commits
83 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 8c99f0c166 | |||
| 520e07e756 | |||
| 674f552ff1 | |||
| 75d9236520 | |||
| 89926bce0b | |||
| 6c1fc4b4ed | |||
| 311f06047b | |||
| 46df717f7c | |||
| dcf9483b0b | |||
| 2b828a9fee | |||
| 6fe1f86984 | |||
| af073f13cf | |||
| aea945b671 | |||
| c52fda760a | |||
| c168755c65 | |||
| 8a83cf0271 | |||
| 3db41fbce6 | |||
| 5e7fb6eead | |||
| bcc5390943 | |||
| a51d875d91 | |||
| 6134a57367 | |||
| c845b6086f | |||
| 31c168efe1 | |||
| 8bd87204f5 | |||
| e72a206aee | |||
| 6a62fa7ee3 | |||
| 52b630dfdc | |||
| 4860050358 | |||
| 47f0563c1b | |||
| b1208f03ee | |||
| 0fd603c094 | |||
| 1ca19af7fb | |||
| ddd78c3b37 | |||
| 2e68f8795d | |||
| d3595fd2b1 | |||
| 033531509b | |||
| b9954de1ca | |||
| 5f88deeebf | |||
| d25da944ed | |||
| ec274a855e | |||
| 8133d4a8b4 | |||
| 4f3e4bf9cb | |||
| ec9e0f37ea | |||
| b5f7735dba | |||
| 5f501d6ec0 | |||
| e820f304a5 | |||
| 3527a33430 | |||
| ee5565077c | |||
| 9085ff1229 | |||
| 6eff1779a2 | |||
| 3228cffd23 | |||
| 9d9530efe0 | |||
| aaaa7c7601 | |||
| 7f8a507b79 | |||
| c28ae059e8 | |||
| 7f1369f9a8 | |||
| 6b05c164a1 | |||
| a3f9d3b59c | |||
| b066a6ffa0 | |||
| a14cba7f11 | |||
| 2d85b70373 | |||
| aa8cc4da38 | |||
| baddaf0040 | |||
| 35b4e34e09 | |||
| b574e9c334 | |||
| d6b5a3e181 | |||
| a65a35432e | |||
| 6e575364eb | |||
| 71a1442ab6 | |||
| 4a17762ed7 | |||
| 447c4de73d | |||
| cd2c4d8caf | |||
| ee64c945fb | |||
| eec5d48220 | |||
| 75cc43a57a | |||
| 0078094b86 | |||
| 3cd33fce44 | |||
| ccafe0ed91 | |||
| 94af9ff51f | |||
| d229fdca32 | |||
| e636e940ed | |||
| 2798174b00 | |||
| 46f2084114 |
@@ -4,7 +4,7 @@
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
# specify full path if dupes may exist
|
||||
EXCLUDE_FILES="CPM.cmake CPMUtil.cmake GetSCMRev.cmake renderdoc_app.h tools/cpm tools/shellcheck.sh tools/update-cpm.sh tools/windows/vcvarsall.sh externals/stb externals/glad externals/getopt externals/gamemode externals/FidelityFX-FSR externals/demangle externals/bc_decoder"
|
||||
EXCLUDE_FILES="CPM.cmake CPMUtil.cmake GetSCMRev.cmake renderdoc_app.h tools/cpm tools/shellcheck.sh tools/update-cpm.sh externals/stb externals/glad externals/getopt externals/gamemode externals/FidelityFX-FSR externals/demangle externals/bc_decoder"
|
||||
|
||||
# license header constants, please change when needed :))))
|
||||
YEAR=2025
|
||||
|
||||
@@ -1,36 +1,25 @@
|
||||
# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
# SPDX-FileCopyrightText: 2023 yuzu Emulator Project
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
$ErrorActionPreference = "Stop"
|
||||
|
||||
# Check if running as administrator
|
||||
try {
|
||||
net session 1>$null 2>$null
|
||||
} catch {
|
||||
if (-not ([bool](net session 2>$null))) {
|
||||
Write-Host "This script must be run with administrator privileges!"
|
||||
Exit 1
|
||||
}
|
||||
|
||||
$VulkanSDKVer = "1.4.328.1"
|
||||
$VULKAN_SDK = "C:/VulkanSDK/$VulkanSDKVer"
|
||||
$VulkanSDKVer = "1.4.321.1"
|
||||
$ExeFile = "vulkansdk-windows-X64-$VulkanSDKVer.exe"
|
||||
$Uri = "https://sdk.lunarg.com/sdk/download/$VulkanSDKVer/windows/$ExeFile"
|
||||
$Destination = "./$ExeFile"
|
||||
|
||||
# Check if Vulkan SDK is already installed
|
||||
if (Test-Path $VULKAN_SDK) {
|
||||
Write-Host "-- Vulkan SDK already installed at $VULKAN_SDK"
|
||||
return
|
||||
}
|
||||
|
||||
echo "Downloading Vulkan SDK $VulkanSDKVer from $Uri"
|
||||
$WebClient = New-Object System.Net.WebClient
|
||||
$WebClient.DownloadFile($Uri, $Destination)
|
||||
echo "Finished downloading $ExeFile"
|
||||
|
||||
$VULKAN_SDK = "C:/VulkanSDK/$VulkanSDKVer"
|
||||
$Arguments = "--root `"$VULKAN_SDK`" --accept-licenses --default-answer --confirm-command install"
|
||||
|
||||
echo "Installing Vulkan SDK $VulkanSDKVer"
|
||||
@@ -47,4 +36,4 @@ echo "Finished installing Vulkan SDK $VulkanSDKVer"
|
||||
if ("$env:GITHUB_ACTIONS" -eq "true") {
|
||||
echo "VULKAN_SDK=$VULKAN_SDK" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
|
||||
echo "$VULKAN_SDK/Bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,8 @@
|
||||
blank_issues_enabled: false
|
||||
contact_links:
|
||||
- name: Eden Discord
|
||||
url: https://discord.gg/HstXbPch7X
|
||||
- name: yuzu Discord
|
||||
url: https://discord.com/invite/u77vRWY
|
||||
about: If you are experiencing an issue with yuzu, and you need tech support, or if you have a general question, try asking in the official yuzu Discord linked here. Piracy is not allowed.
|
||||
- name: Community forums
|
||||
url: https://community.citra-emu.org
|
||||
about: This is an alternative place for tech support, however helpers there are not as active.
|
||||
|
||||
@@ -1,22 +0,0 @@
|
||||
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
|
||||
@@ -5,7 +5,6 @@ on:
|
||||
schedule:
|
||||
cron:
|
||||
- '0 14 * * 1,3,6'
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
tx-update:
|
||||
|
||||
@@ -7,7 +7,6 @@
|
||||
# Build directory
|
||||
/[Bb]uild*/
|
||||
doc-build/
|
||||
out/
|
||||
AppDir/
|
||||
uruntime
|
||||
|
||||
@@ -60,4 +59,3 @@ eden-windows-msvc
|
||||
artifacts
|
||||
*.AppImage*
|
||||
/install*
|
||||
vulkansdk*.exe
|
||||
|
||||
@@ -119,8 +119,6 @@ endif()
|
||||
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)
|
||||
@@ -138,8 +136,7 @@ if (YUZU_STATIC_BUILD)
|
||||
# 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$")
|
||||
if (${var})
|
||||
return()
|
||||
endif()
|
||||
|
||||
@@ -158,19 +155,17 @@ if (YUZU_STATIC_BUILD)
|
||||
|
||||
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(YUZU_USE_BUNDLED_FFMPEG ON)
|
||||
set(YUZU_USE_EXTERNAL_SDL2 ON)
|
||||
|
||||
set(fmt_FORCE_BUNDLED ON)
|
||||
set(SPIRV-Tools_FORCE_BUNDLED ON)
|
||||
set(SPIRV-Headers_FORCE_BUNDLED ON)
|
||||
@@ -424,7 +419,7 @@ if (ANDROID OR WIN32 OR APPLE OR PLATFORM_SUN)
|
||||
set(DEFAULT_ENABLE_OPENSSL OFF)
|
||||
endif()
|
||||
|
||||
if (ENABLE_WEB_SERVICE OR USE_DISCORD_PRESENCE)
|
||||
if (ENABLE_WEB_SERVICE)
|
||||
set(DEFAULT_ENABLE_OPENSSL ON)
|
||||
endif()
|
||||
|
||||
|
||||
@@ -1,31 +0,0 @@
|
||||
# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
## When linking to a static Qt build on MinGW, certain additional libraries
|
||||
## must be statically linked to as well.
|
||||
|
||||
function(static_qt_link target)
|
||||
macro(extra_libs)
|
||||
foreach(lib ${ARGN})
|
||||
find_library(${lib}_LIBRARY ${lib} REQUIRED)
|
||||
target_link_libraries(${target} PRIVATE ${${lib}_LIBRARY})
|
||||
endforeach()
|
||||
endmacro()
|
||||
|
||||
# I am constantly impressed at how ridiculously stupid the linker is
|
||||
# NB: yes, we have to put them here twice. I have no idea why
|
||||
|
||||
# libtiff.a
|
||||
extra_libs(tiff jbig bz2 lzma deflate jpeg tiff)
|
||||
|
||||
# libfreetype.a
|
||||
extra_libs(freetype bz2 Lerc brotlidec brotlicommon freetype)
|
||||
|
||||
# libharfbuzz.a
|
||||
extra_libs(harfbuzz graphite2)
|
||||
|
||||
# sijfjkfnjkdfjsbjsbsdfhvbdf
|
||||
if (ENABLE_OPENSSL)
|
||||
target_link_libraries(${target} PRIVATE OpenSSL::SSL OpenSSL::Crypto)
|
||||
endif()
|
||||
endfunction()
|
||||
@@ -1,5 +1,6 @@
|
||||
# Contributing
|
||||
<!--
|
||||
SPDX-FileCopyrightText: 2018 yuzu Emulator Project
|
||||
SPDX-License-Identifier: GPL-2.0-or-later
|
||||
-->
|
||||
|
||||
You want to contribute? Please consult [the development guide](./docs/Development.md).
|
||||
|
||||
Don't forget to [get a git account](./docs/SIGNUP.md) - not a requirement per se but it's highly recommended.
|
||||
**The Contributor's Guide has moved to [the yuzu wiki](https://github.com/yuzu-emu/yuzu/wiki/Contributing).**
|
||||
|
||||
@@ -21,7 +21,7 @@ It is written in C++ with portability in mind, and we actively maintain builds f
|
||||
|
||||
<p align="center">
|
||||
</a>
|
||||
<a href="https://discord.gg/HstXbPch7X">
|
||||
<a href="https://discord.gg/kXAmGCXBGD">
|
||||
<img src="https://img.shields.io/discord/1367654015269339267?color=5865F2&label=Eden&logo=discord&logoColor=white"
|
||||
alt="Discord">
|
||||
</a>
|
||||
@@ -52,8 +52,8 @@ Check out our [website](https://eden-emu.dev) for the latest news on exciting fe
|
||||
|
||||
## Development
|
||||
|
||||
Most of the development happens on our Git server. It is also where [our central repository](https://git.eden-emu.dev/eden-emu/eden) is hosted. For development discussions, please join us on [Discord](https://discord.gg/HstXbPch7X) or [Revolt](https://rvlt.gg/qKgFEAbH).
|
||||
You can also follow us on [X (Twitter)](https://nitter.poast.org/edenemuofficial) for updates and announcements.
|
||||
Most of the development happens on our Git server. It is also where [our central repository](https://git.eden-emu.dev/eden-emu/eden) is hosted. For development discussions, please join us on [Discord](https://discord.gg/kXAmGCXBGD) or [Revolt](https://rvlt.gg/qKgFEAbH).
|
||||
You can also follow us on [X (Twitter)](https://x.com/edenemuofficial) for updates and announcements.
|
||||
|
||||
If you would like to contribute, we are open to new developers and pull requests. Please ensure that your work is of a high standard and properly documented. You can also contact any of the developers on Discord or Revolt to learn more about the current state of the emulator.
|
||||
|
||||
@@ -82,7 +82,7 @@ Any donations received will go towards things such as:
|
||||
* Additional hardware (e.g. GPUs as needed to improve rendering support, other peripherals to add support for, etc.)
|
||||
* CI Infrastructure
|
||||
|
||||
If you would prefer to support us in a different way, please join our [Discord](https://discord.gg/HstXbPch7X) and talk to Camille or any of our other developers.
|
||||
If you would prefer to support us in a different way, please join our [Discord](https://discord.gg/edenemu) and talk to Camille or any of our other developers.
|
||||
|
||||
## License
|
||||
|
||||
|
||||
@@ -4,8 +4,13 @@
|
||||
"package": "OpenSSL",
|
||||
"name": "openssl",
|
||||
"repo": "crueter-ci/OpenSSL",
|
||||
"version": "3.6.0-e3608d80df",
|
||||
"min_version": "1.1.1"
|
||||
"version": "3.6.0",
|
||||
"min_version": "1.1.1",
|
||||
"disabled_platforms": [
|
||||
"macos-universal",
|
||||
"mingw-amd64",
|
||||
"mingw-arm64"
|
||||
]
|
||||
},
|
||||
"boost": {
|
||||
"package": "Boost",
|
||||
|
||||
|
Before Width: | Height: | Size: 516 KiB After Width: | Height: | Size: 386 KiB |
|
Before Width: | Height: | Size: 6.9 KiB After Width: | Height: | Size: 9.2 KiB |
|
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 37 KiB |
|
Before Width: | Height: | Size: 5.5 KiB After Width: | Height: | Size: 5.5 KiB |
|
Before Width: | Height: | Size: 9.2 KiB |
|
Before Width: | Height: | Size: 37 KiB |
|
Before Width: | Height: | Size: 47 KiB After Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 62 KiB After Width: | Height: | Size: 29 KiB |
|
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.
|
||||
|
||||
### Option A: Qt Creator
|
||||
### Qt Creator
|
||||
|
||||
This is the recommended GUI method for Linux, macOS, and Windows.
|
||||
|
||||
@@ -46,51 +46,39 @@ Hit "Configure Project", then wait for CMake to finish configuring (may take a w
|
||||
|
||||
</details>
|
||||
|
||||
### Option B: Command Line
|
||||
### Command Line
|
||||
|
||||
This is recommended for *BSD, Solaris, Linux, and MSYS2. MSVC is possible, but not recommended.
|
||||
|
||||
<details>
|
||||
<summary>Click to Open</summary>
|
||||
|
||||
> [!WARNING]
|
||||
>For all systems:
|
||||
>- *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)
|
||||
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.
|
||||
|
||||
Recommended generators:
|
||||
|
||||
Available `<GENERATOR>`:
|
||||
- MSYS2: `MSYS Makefiles`
|
||||
- MSVC: `Ninja` (preferred) or `Visual Studio 17 2022`
|
||||
- MSVC: Install **[ninja](https://ninja-build.org/)** and use `Ninja`, OR use `Visual Studio 17 2022`
|
||||
- macOS: `Ninja` (preferred) or `Xcode`
|
||||
- Others: `Ninja` (preferred) or `UNIX Makefiles`
|
||||
|
||||
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))
|
||||
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`.
|
||||
|
||||
Also see the [Options](Options.md) page for additional CMake options.
|
||||
|
||||
```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:
|
||||
|
||||
```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>
|
||||
|
||||
### Option C: [CLion](https://www.jetbrains.com/clion/)
|
||||
### [CLion](https://www.jetbrains.com/clion/)
|
||||
|
||||
<details>
|
||||
<summary>Click to Open</summary>
|
||||
@@ -145,13 +133,13 @@ Many platforms have quirks, bugs, and other fun stuff that may cause issues when
|
||||
|
||||
## Building & Running
|
||||
|
||||
### On Qt Creator
|
||||
### Qt Creator
|
||||
|
||||
Simply hit Ctrl+B, or the "hammer" icon in the bottom left. To run, hit the "play" icon, or Ctrl+R.
|
||||
|
||||
### On Command Line
|
||||
### Command Line
|
||||
|
||||
If you are using the `UNIX Makefiles` or `Visual Studio 17 2022` as `<GENERATOR>`, you should also add `--parallel` for faster build times.
|
||||
If you are not on Windows and are using the `UNIX Makefiles` generator, you must also add `-j$(nproc)` to this command.
|
||||
|
||||
```
|
||||
cmake --build build
|
||||
@@ -169,4 +157,4 @@ Some platforms have convenience scripts provided for building.
|
||||
- **[Linux](scripts/Linux.md)**
|
||||
- **[Windows](scripts/Windows.md)**
|
||||
|
||||
macOS scripts will come soon.
|
||||
macOS scripts will come soon.
|
||||
@@ -3,13 +3,10 @@
|
||||
To build Eden, you MUST have a C++ compiler.
|
||||
* On Linux, this is usually [GCC](https://gcc.gnu.org/) 11+ or [Clang](https://clang.llvm.org/) v14+
|
||||
- GCC 12 also requires Clang 14+
|
||||
* On Windows, we support:
|
||||
- **[MSVC](https://visualstudio.microsoft.com/downloads/)** (default)
|
||||
- It's STRONGLY RECOMMENDED to use the **Community** option and **Visual Studio 2022**
|
||||
- You need to install: **[Desktop development with C++](https://learn.microsoft.com/en-us/cpp/build/vscpp-step-0-installation?view=msvc-170)**
|
||||
- **[clang-cl](https://learn.microsoft.com/en-us/cpp/build/clang-support-msbuild?view=msvc-180)**
|
||||
- You need to install: **C++ Clang tools for Windows**
|
||||
- **[MSYS2](https://www.msys2.org)** (experimental)
|
||||
* On Windows, this is either:
|
||||
- **[MSVC](https://visualstudio.microsoft.com/downloads/)** (you should select *Community* option),
|
||||
- clang-cl - can be downloaded from the MSVC installer,
|
||||
- or **[MSYS2](https://www.msys2.org)**
|
||||
* On macOS, this is Apple Clang
|
||||
- This can be installed with `xcode-select --install`
|
||||
|
||||
@@ -18,23 +15,20 @@ The following additional tools are also required:
|
||||
* **[CMake](https://www.cmake.org/)** 3.22+ - already included with the Android SDK
|
||||
* **[Git](https://git-scm.com/)** for version control
|
||||
- **[Windows installer](https://gitforwindows.org)**
|
||||
* **[Python3](https://www.python.org/downloads/)** 3.10+ - necessary to download external repositories
|
||||
* On Windows, you must install the **[Vulkan SDK](https://vulkan.lunarg.com/sdk/home#windows)** as well
|
||||
- *A convenience script to install the latest SDK is provided in:*
|
||||
- `tools/windows/install-vulkan-sdk.ps1` (for PowerShell 5+)
|
||||
- `tools/windows/install-vulkan-sdk.sh` (for MSYS2, Git Bash, etc)
|
||||
- *A convenience script to install the latest SDK is provided in `.ci/windows/install-vulkan-sdk.ps1`*
|
||||
|
||||
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
|
||||
- If you wish to use Qt Creator, append `qtcreator` or `qt-creator` to the commands seen below.
|
||||
* MSVC/clang-cl users on Windows must install through the official [Qt](https://www.qt.io/download-qt-installer-oss) installer
|
||||
* MSVC/clang-cl users on Windows must install through the [official installer](https://www.qt.io/download-qt-installer-oss)
|
||||
* Linux and macOS users may choose to use the installer as well.
|
||||
* MSYS2 can also install Qt 6 via the package manager
|
||||
|
||||
If you are on Windows, a convenience script to install MSVC, MSYS2, Qt, all necessary packages for MSYS2, and set up a zsh environment with useful keybinds and aliases can be found [here](https://git.crueter.xyz/scripts/windev).
|
||||
- For help setting up Qt Creator, run `./install.sh -h qtcreator`
|
||||
|
||||
If you are on **Windows** and building with **MSVC** or **clang-cl**, you may go [back home](Build.md) and continue.
|
||||
If you are on Windows and NOT building with MSYS2, you may go [back home](Build.md) and continue.
|
||||
|
||||
## Externals
|
||||
The following are handled by Eden's externals:
|
||||
|
||||
@@ -167,8 +167,11 @@
|
||||
"package": "SDL2",
|
||||
"name": "SDL2",
|
||||
"repo": "crueter-ci/SDL2",
|
||||
"version": "2.32.10-38e0094637",
|
||||
"min_version": "2.26.4"
|
||||
"version": "2.32.10",
|
||||
"min_version": "2.26.4",
|
||||
"disabled_platforms": [
|
||||
"macos-universal"
|
||||
]
|
||||
},
|
||||
"catch2": {
|
||||
"package": "Catch2",
|
||||
|
||||
@@ -10,7 +10,12 @@
|
||||
"package": "FFmpeg",
|
||||
"name": "ffmpeg",
|
||||
"repo": "crueter-ci/FFmpeg",
|
||||
"version": "8.0-be99d2c0b2",
|
||||
"min_version": "4.1"
|
||||
"version": "8.0",
|
||||
"min_version": "4.1",
|
||||
"disabled_platforms": [
|
||||
"freebsd-amd64",
|
||||
"solaris-amd64",
|
||||
"openbsd-amd64"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -121,7 +121,7 @@ else()
|
||||
-Werror=unused
|
||||
|
||||
-Wno-attributes
|
||||
-Wno-invalid-offsetof
|
||||
$<$<COMPILE_LANGUAGE:CXX>:-Wno-invalid-offsetof>
|
||||
-Wno-unused-parameter
|
||||
-Wno-missing-field-initializers
|
||||
)
|
||||
|
||||
@@ -61,6 +61,7 @@ android {
|
||||
minSdk = 24
|
||||
targetSdk = 36
|
||||
versionName = getGitVersion()
|
||||
|
||||
versionCode = autoVersion
|
||||
|
||||
ndk {
|
||||
@@ -68,6 +69,9 @@ android {
|
||||
abiFilters += listOf("arm64-v8a")
|
||||
}
|
||||
|
||||
buildConfigField("String", "GIT_HASH", "\"${getGitHash()}\"")
|
||||
buildConfigField("String", "BRANCH", "\"${getBranch()}\"")
|
||||
|
||||
externalNativeBuild {
|
||||
cmake {
|
||||
val extraCMakeArgs =
|
||||
@@ -88,14 +92,14 @@ android {
|
||||
"-DYUZU_TESTS=OFF",
|
||||
"-DDYNARMIC_TESTS=OFF",
|
||||
*extraCMakeArgs.toTypedArray()
|
||||
)
|
||||
)
|
||||
))
|
||||
|
||||
abiFilters("arm64-v8a")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
val keystoreFile = System.getenv("ANDROID_KEYSTORE_FILE")
|
||||
signingConfigs {
|
||||
if (keystoreFile != null) {
|
||||
@@ -158,39 +162,7 @@ android {
|
||||
}
|
||||
}
|
||||
|
||||
flavorDimensions.add("version")
|
||||
productFlavors {
|
||||
create("mainline") {
|
||||
dimension = "version"
|
||||
resValue("string", "app_name_suffixed", "Eden")
|
||||
}
|
||||
|
||||
create("genshinSpoof") {
|
||||
dimension = "version"
|
||||
resValue("string", "app_name_suffixed", "Eden Optimized")
|
||||
applicationId = "com.miHoYo.Yuanshen"
|
||||
}
|
||||
|
||||
create("legacy") {
|
||||
dimension = "version"
|
||||
resValue("string", "app_name_suffixed", "Eden Legacy")
|
||||
applicationId = "dev.legacy.eden_emulator"
|
||||
|
||||
externalNativeBuild {
|
||||
cmake {
|
||||
arguments.add("-DYUZU_LEGACY=ON")
|
||||
}
|
||||
}
|
||||
|
||||
sourceSets {
|
||||
getByName("legacy") {
|
||||
res.srcDirs("src/main/legacy")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// this is really annoying but idk any other ways to fix this behavior
|
||||
// this is really annoying but idk any other ways to fix this behavior
|
||||
applicationVariants.all {
|
||||
val variant = this
|
||||
when {
|
||||
@@ -215,6 +187,40 @@ android {
|
||||
}
|
||||
}
|
||||
|
||||
android {
|
||||
flavorDimensions.add("version")
|
||||
productFlavors {
|
||||
create("mainline") {
|
||||
dimension = "version"
|
||||
resValue("string", "app_name_suffixed", "Eden")
|
||||
}
|
||||
|
||||
create("genshinSpoof") {
|
||||
dimension = "version"
|
||||
resValue("string", "app_name_suffixed", "Eden Optimized")
|
||||
applicationId = "com.miHoYo.Yuanshen"
|
||||
}
|
||||
|
||||
create("legacy") {
|
||||
dimension = "version"
|
||||
resValue("string", "app_name_suffixed", "Eden Legacy")
|
||||
applicationId = "dev.legacy.eden_emulator"
|
||||
|
||||
externalNativeBuild {
|
||||
cmake {
|
||||
arguments.add("-DYUZU_LEGACY=ON")
|
||||
}
|
||||
}
|
||||
|
||||
sourceSets {
|
||||
getByName("legacy") {
|
||||
res.srcDirs("src/main/legacy")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
externalNativeBuild {
|
||||
cmake {
|
||||
version = "3.22.1"
|
||||
@@ -278,6 +284,7 @@ dependencies {
|
||||
implementation("androidx.core:core-splashscreen:1.0.1")
|
||||
implementation("com.fasterxml.jackson.module:jackson-module-kotlin:2.17.2")
|
||||
implementation("androidx.window:window:1.3.0")
|
||||
implementation("androidx.constraintlayout:constraintlayout:2.2.1")
|
||||
implementation("androidx.swiperefreshlayout:swiperefreshlayout:1.1.0")
|
||||
implementation("org.commonmark:commonmark:0.22.0")
|
||||
implementation("androidx.navigation:navigation-fragment-ktx:2.8.9")
|
||||
@@ -295,9 +302,7 @@ fun runGitCommand(command: List<String>): String {
|
||||
.directory(project.rootDir)
|
||||
.redirectOutput(ProcessBuilder.Redirect.PIPE)
|
||||
.redirectError(ProcessBuilder.Redirect.PIPE)
|
||||
.start()
|
||||
.inputStream.bufferedReader()
|
||||
.use { it.readText() }
|
||||
.start().inputStream.bufferedReader().use { it.readText() }
|
||||
.trim()
|
||||
} catch (e: Exception) {
|
||||
logger.error("Cannot find git")
|
||||
@@ -321,3 +326,9 @@ fun getGitVersion(): String {
|
||||
}
|
||||
return versionName.ifEmpty { "0.0" }
|
||||
}
|
||||
|
||||
fun getGitHash(): String =
|
||||
runGitCommand(listOf("git", "rev-parse", "--short", "HEAD")).ifEmpty { "dummy-hash" }
|
||||
|
||||
fun getBranch(): String =
|
||||
runGitCommand(listOf("git", "rev-parse", "--abbrev-ref", "HEAD")).ifEmpty { "dummy-hash" }
|
||||
|
||||
@@ -29,7 +29,8 @@ SPDX-License-Identifier: GPL-3.0-or-later
|
||||
<uses-permission android:name="android.permission.BLUETOOTH_SCAN" />
|
||||
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
|
||||
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_SPECIAL_USE" />
|
||||
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
|
||||
<uses-permission android:name="android.permission.BLUETOOTH" android:maxSdkVersion="30" />
|
||||
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" android:maxSdkVersion="30" />
|
||||
|
||||
<application
|
||||
android:name="org.yuzu.yuzu_emu.YuzuApplication"
|
||||
@@ -109,15 +110,5 @@ SPDX-License-Identifier: GPL-3.0-or-later
|
||||
</intent-filter>
|
||||
</provider>
|
||||
|
||||
<provider
|
||||
android:name="androidx.core.content.FileProvider"
|
||||
android:authorities="${applicationId}.provider"
|
||||
android:exported="false"
|
||||
android:grantUriPermissions="true">
|
||||
<meta-data
|
||||
android:name="android.support.FILE_PROVIDER_PATHS"
|
||||
android:resource="@xml/file_paths" />
|
||||
</provider>
|
||||
|
||||
</application>
|
||||
</manifest>
|
||||
|
||||
@@ -200,18 +200,6 @@ object NativeLibrary {
|
||||
|
||||
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.
|
||||
*/
|
||||
@@ -222,21 +210,11 @@ object NativeLibrary {
|
||||
*/
|
||||
external fun getUpdateUrl(version: String): String
|
||||
|
||||
/**
|
||||
* Return the URL to download the APK for the given version
|
||||
*/
|
||||
external fun getUpdateApkUrl(version: String, packageId: String): String
|
||||
|
||||
/**
|
||||
* Returns whether the update checker is enabled through CMAKE options.
|
||||
*/
|
||||
external fun isUpdateCheckerEnabled(): Boolean
|
||||
|
||||
/**
|
||||
* Returns the build version generated by CMake (BUILD_VERSION).
|
||||
*/
|
||||
external fun getBuildVersion(): String
|
||||
|
||||
enum class CoreError {
|
||||
ErrorSystemFiles,
|
||||
ErrorSavestate,
|
||||
|
||||
@@ -235,13 +235,10 @@ class EmulationActivity : AppCompatActivity(), SensorEventListener {
|
||||
}
|
||||
|
||||
override fun dispatchKeyEvent(event: KeyEvent): Boolean {
|
||||
val isPhysicalKeyboard = event.source and InputDevice.SOURCE_KEYBOARD == InputDevice.SOURCE_KEYBOARD &&
|
||||
event.device?.isVirtual == false
|
||||
|
||||
if (event.source and InputDevice.SOURCE_JOYSTICK != InputDevice.SOURCE_JOYSTICK &&
|
||||
event.source and InputDevice.SOURCE_GAMEPAD != InputDevice.SOURCE_GAMEPAD &&
|
||||
event.source and InputDevice.SOURCE_MOUSE != InputDevice.SOURCE_MOUSE &&
|
||||
!isPhysicalKeyboard
|
||||
event.source and InputDevice.SOURCE_KEYBOARD != InputDevice.SOURCE_KEYBOARD &&
|
||||
event.source and InputDevice.SOURCE_MOUSE != InputDevice.SOURCE_MOUSE
|
||||
) {
|
||||
return super.dispatchKeyEvent(event)
|
||||
}
|
||||
|
||||
@@ -29,7 +29,6 @@ enum class BooleanSetting(override val key: String) : AbstractBooleanSetting {
|
||||
SYNC_MEMORY_OPERATIONS("sync_memory_operations"),
|
||||
BUFFER_REORDER_DISABLE("disable_buffer_reorder"),
|
||||
RENDERER_DEBUG("debug"),
|
||||
RENDERER_VERTEX_INPUT_DYNAMIC_STATE("vertex_input_dynamic_state"),
|
||||
RENDERER_PROVOKING_VERTEX("provoking_vertex"),
|
||||
RENDERER_DESCRIPTOR_INDEXING("descriptor_indexing"),
|
||||
RENDERER_SAMPLE_SHADING("sample_shading"),
|
||||
@@ -70,9 +69,7 @@ enum class BooleanSetting(override val key: String) : AbstractBooleanSetting {
|
||||
SHOW_SHADERS_BUILDING("show_shaders_building"),
|
||||
|
||||
DEBUG_FLUSH_BY_LINE("flush_line"),
|
||||
USE_LRU_CACHE("use_lru_cache"),
|
||||
|
||||
DONT_SHOW_DRIVER_SHADER_WARNING("dont_show_driver_shader_warning");
|
||||
USE_LRU_CACHE("use_lru_cache");
|
||||
|
||||
|
||||
// external fun isFrameSkippingEnabled(): Boolean
|
||||
|
||||
@@ -146,13 +146,6 @@ abstract class SettingsItem(
|
||||
descriptionId = R.string.provoking_vertex_description
|
||||
)
|
||||
)
|
||||
put(
|
||||
SwitchSetting(
|
||||
BooleanSetting.RENDERER_VERTEX_INPUT_DYNAMIC_STATE,
|
||||
titleId = R.string.vertex_input_dynamic_state,
|
||||
descriptionId = R.string.vertex_input_dynamic_state_description
|
||||
)
|
||||
)
|
||||
put(
|
||||
SwitchSetting(
|
||||
BooleanSetting.RENDERER_DESCRIPTOR_INDEXING,
|
||||
@@ -762,7 +755,6 @@ abstract class SettingsItem(
|
||||
SwitchSetting(
|
||||
BooleanSetting.ENABLE_UPDATE_CHECKS,
|
||||
titleId = R.string.enable_update_checks,
|
||||
descriptionId = R.string.enable_update_checks_description,
|
||||
)
|
||||
)
|
||||
put(
|
||||
|
||||
@@ -453,7 +453,6 @@ class SettingsFragmentPresenter(
|
||||
sl.apply {
|
||||
add(HeaderSetting(R.string.veil_extensions))
|
||||
add(ByteSetting.RENDERER_DYNA_STATE.key)
|
||||
add(BooleanSetting.RENDERER_VERTEX_INPUT_DYNAMIC_STATE.key)
|
||||
add(BooleanSetting.RENDERER_PROVOKING_VERTEX.key)
|
||||
add(BooleanSetting.RENDERER_DESCRIPTOR_INDEXING.key)
|
||||
add(BooleanSetting.RENDERER_SAMPLE_SHADING.key)
|
||||
|
||||
@@ -29,7 +29,6 @@ import org.yuzu.yuzu_emu.R
|
||||
import org.yuzu.yuzu_emu.databinding.FragmentAboutBinding
|
||||
import org.yuzu.yuzu_emu.model.HomeViewModel
|
||||
import org.yuzu.yuzu_emu.utils.ViewUtils.updateMargins
|
||||
import org.yuzu.yuzu_emu.NativeLibrary
|
||||
|
||||
class AboutFragment : Fragment() {
|
||||
private var _binding: FragmentAboutBinding? = null
|
||||
@@ -79,15 +78,11 @@ class AboutFragment : Fragment() {
|
||||
binding.root.findNavController().navigate(R.id.action_aboutFragment_to_licensesFragment)
|
||||
}
|
||||
|
||||
val buildName = getString(R.string.app_name_suffixed)
|
||||
val buildVersion = NativeLibrary.getBuildVersion()
|
||||
val fullVersionText = "$buildName ($buildVersion)"
|
||||
|
||||
binding.textVersionName.text = fullVersionText
|
||||
binding.textVersionName.text = BuildConfig.VERSION_NAME
|
||||
binding.buttonVersionName.setOnClickListener {
|
||||
val clipBoard =
|
||||
requireContext().getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
|
||||
val clip = ClipData.newPlainText(getString(R.string.build), fullVersionText)
|
||||
val clip = ClipData.newPlainText(getString(R.string.build), BuildConfig.GIT_HASH)
|
||||
clipBoard.setPrimaryClip(clip)
|
||||
|
||||
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.TIRAMISU) {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||
// SPDX-FileCopyrightText: 2025 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
package org.yuzu.yuzu_emu.fragments
|
||||
@@ -91,12 +91,6 @@ class DriverManagerFragment : Fragment() {
|
||||
}
|
||||
}
|
||||
|
||||
driverViewModel.shouldShowDriverShaderDialog.collect(viewLifecycleOwner) { shouldShow ->
|
||||
if (shouldShow) {
|
||||
showDriverShaderWipeDialog()
|
||||
}
|
||||
}
|
||||
|
||||
if (!driverViewModel.isInteractionAllowed.value) {
|
||||
DriversLoadingDialogFragment().show(
|
||||
childFragmentManager,
|
||||
@@ -242,18 +236,4 @@ class DriverManagerFragment : Fragment() {
|
||||
).show(requireActivity().supportFragmentManager, MessageDialogFragment.TAG)
|
||||
}
|
||||
}
|
||||
|
||||
private fun showDriverShaderWipeDialog() {
|
||||
com.google.android.material.dialog.MaterialAlertDialogBuilder(requireContext())
|
||||
.setTitle(R.string.driver_shader_wipe_dialog_title)
|
||||
.setMessage(R.string.driver_shader_wipe_dialog_message)
|
||||
.setPositiveButton(android.R.string.ok) { _, _ ->
|
||||
driverViewModel.onDriverShaderDialogDismissed(dontShowAgain = false)
|
||||
}
|
||||
.setNegativeButton(R.string.dont_show_again) { _, _ ->
|
||||
driverViewModel.onDriverShaderDialogDismissed(dontShowAgain = true)
|
||||
}
|
||||
.setCancelable(false)
|
||||
.show()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -145,12 +145,13 @@ class GamePropertiesFragment : Fragment() {
|
||||
val seconds = playTimeSeconds % 60
|
||||
|
||||
val readablePlayTime = when {
|
||||
hours > 0 -> "$hours${getString(R.string.hours_abbr)} $minutes${getString(R.string.minutes_abbr)} $seconds${getString(R.string.seconds_abbr)}"
|
||||
minutes > 0 -> "$minutes${getString(R.string.minutes_abbr)} $seconds${getString(R.string.seconds_abbr)}"
|
||||
else -> "$seconds${getString(R.string.seconds_abbr)}"
|
||||
}
|
||||
hours > 0 -> "${hours}h ${minutes}m ${seconds}s"
|
||||
minutes > 0 -> "${minutes}m ${seconds}s"
|
||||
else -> "${seconds}s"
|
||||
}
|
||||
|
||||
append(getString(R.string.playtime) + " " + readablePlayTime)
|
||||
append(getString(R.string.playtime))
|
||||
append(readablePlayTime)
|
||||
}
|
||||
|
||||
binding.playtime.setOnClickListener {
|
||||
|
||||
@@ -230,17 +230,6 @@ class HomeSettingsFragment : Fragment() {
|
||||
{ openFileManager() }
|
||||
)
|
||||
)
|
||||
add(
|
||||
HomeSetting(
|
||||
R.string.system_information,
|
||||
R.string.system_information_description,
|
||||
R.drawable.ic_system,
|
||||
{
|
||||
SystemInfoDialogFragment.newInstance()
|
||||
.show(parentFragmentManager, SystemInfoDialogFragment.TAG)
|
||||
}
|
||||
)
|
||||
)
|
||||
add(
|
||||
HomeSetting(
|
||||
R.string.about,
|
||||
|
||||
@@ -1,108 +0,0 @@
|
||||
// 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,6 +1,3 @@
|
||||
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: 2023 yuzu Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
@@ -19,7 +16,6 @@ import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.withContext
|
||||
import org.yuzu.yuzu_emu.R
|
||||
import org.yuzu.yuzu_emu.YuzuApplication
|
||||
import org.yuzu.yuzu_emu.features.settings.model.BooleanSetting
|
||||
import org.yuzu.yuzu_emu.features.settings.model.StringSetting
|
||||
import org.yuzu.yuzu_emu.features.settings.utils.SettingsFile
|
||||
import org.yuzu.yuzu_emu.model.Driver.Companion.toDriver
|
||||
@@ -56,15 +52,9 @@ class DriverViewModel : ViewModel() {
|
||||
|
||||
private val driversToDelete = mutableListOf<String>()
|
||||
|
||||
private var previousDriverPath: String = ""
|
||||
|
||||
private val _shouldShowDriverShaderDialog = MutableStateFlow(false)
|
||||
val shouldShowDriverShaderDialog: StateFlow<Boolean> get() = _shouldShowDriverShaderDialog
|
||||
|
||||
init {
|
||||
updateDriverList()
|
||||
updateDriverNameForGame(null)
|
||||
previousDriverPath = StringSetting.DRIVER_PATH.getString()
|
||||
}
|
||||
|
||||
fun reloadDriverData() {
|
||||
@@ -89,7 +79,6 @@ class DriverViewModel : ViewModel() {
|
||||
newDriverList.add(it.second.toDriver(it.second == selectedDriver))
|
||||
}
|
||||
_driverList.value = newDriverList
|
||||
previousDriverPath = StringSetting.DRIVER_PATH.getString()
|
||||
}
|
||||
|
||||
fun onOpenDriverManager(game: Game?) {
|
||||
@@ -103,49 +92,12 @@ class DriverViewModel : ViewModel() {
|
||||
_showClearButton.value = value
|
||||
}
|
||||
|
||||
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
|
||||
}
|
||||
}
|
||||
|
||||
fun onDriverSelected(position: Int) {
|
||||
if (position == 0) {
|
||||
StringSetting.DRIVER_PATH.setString("")
|
||||
} else {
|
||||
StringSetting.DRIVER_PATH.setString(driverData[position - 1].first)
|
||||
}
|
||||
previousDriverPath = newDriverPath
|
||||
}
|
||||
|
||||
fun onDriverShaderDialogDismissed(dontShowAgain: Boolean) {
|
||||
if (dontShowAgain) {
|
||||
BooleanSetting.DONT_SHOW_DRIVER_SHADER_WARNING.setBoolean(true)
|
||||
NativeConfig.saveGlobalConfig()
|
||||
}
|
||||
_shouldShowDriverShaderDialog.value = false
|
||||
}
|
||||
|
||||
private fun 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) {
|
||||
|
||||
@@ -53,7 +53,6 @@ class GamesFragment : Fragment() {
|
||||
private var originalHeaderLeftMargin: Int? = null
|
||||
|
||||
private var lastViewType: Int = GameAdapter.VIEW_TYPE_GRID
|
||||
private var fallbackBottomInset: Int = 0
|
||||
|
||||
companion object {
|
||||
private const val SEARCH_TEXT = "SearchText"
|
||||
@@ -209,12 +208,12 @@ class GamesFragment : Fragment() {
|
||||
else -> throw IllegalArgumentException("Invalid view type: $savedViewType")
|
||||
}
|
||||
if (savedViewType == GameAdapter.VIEW_TYPE_CAROUSEL) {
|
||||
(binding.gridGames as? View)?.let { it -> ViewCompat.requestApplyInsets(it)}
|
||||
doOnNextLayout { //Carousel: important to avoid overlap issues
|
||||
(this as? CarouselRecyclerView)?.notifyLaidOut(fallbackBottomInset)
|
||||
doOnNextLayout {
|
||||
(this as? CarouselRecyclerView)?.setCarouselMode(true, gameAdapter)
|
||||
adapter = gameAdapter
|
||||
}
|
||||
} else {
|
||||
(this as? CarouselRecyclerView)?.setupCarousel(false)
|
||||
(this as? CarouselRecyclerView)?.setCarouselMode(false)
|
||||
}
|
||||
adapter = gameAdapter
|
||||
lastViewType = savedViewType
|
||||
@@ -238,8 +237,9 @@ class GamesFragment : Fragment() {
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
if (getCurrentViewType() == GameAdapter.VIEW_TYPE_CAROUSEL) {
|
||||
(binding.gridGames as? CarouselRecyclerView)?.setupCarousel(true)
|
||||
(binding.gridGames as? CarouselRecyclerView)?.restoreScrollState(gamesViewModel.lastScrollPosition)
|
||||
(binding.gridGames as? CarouselRecyclerView)?.restoreScrollState(
|
||||
gamesViewModel.lastScrollPosition
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -494,11 +494,6 @@ class GamesFragment : Fragment() {
|
||||
mlpFab.rightMargin = rightInset + fabPadding
|
||||
binding.addDirectory.layoutParams = mlpFab
|
||||
|
||||
val navInsets = windowInsets.getInsets(WindowInsetsCompat.Type.navigationBars())
|
||||
val gestureInsets = windowInsets.getInsets(WindowInsetsCompat.Type.systemGestures())
|
||||
val bottomInset = maxOf(navInsets.bottom, gestureInsets.bottom, cutoutInsets.bottom)
|
||||
fallbackBottomInset = bottomInset
|
||||
(binding.gridGames as? CarouselRecyclerView)?.notifyInsetsReady(bottomInset)
|
||||
windowInsets
|
||||
}
|
||||
}
|
||||
|
||||
@@ -53,16 +53,8 @@ import androidx.core.content.edit
|
||||
import org.yuzu.yuzu_emu.activities.EmulationActivity
|
||||
import kotlin.text.compareTo
|
||||
import androidx.core.net.toUri
|
||||
import com.google.android.material.progressindicator.LinearProgressIndicator
|
||||
import com.google.android.material.textview.MaterialTextView
|
||||
import org.yuzu.yuzu_emu.features.settings.model.BooleanSetting
|
||||
import org.yuzu.yuzu_emu.YuzuApplication
|
||||
import org.yuzu.yuzu_emu.updater.APKDownloader
|
||||
import org.yuzu.yuzu_emu.updater.APKInstaller
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.withContext
|
||||
|
||||
class MainActivity : AppCompatActivity(), ThemeProvider {
|
||||
private lateinit var binding: ActivityMainBinding
|
||||
@@ -194,7 +186,9 @@ class MainActivity : AppCompatActivity(), ThemeProvider {
|
||||
.setTitle(R.string.update_available)
|
||||
.setMessage(getString(R.string.update_available_description, version))
|
||||
.setPositiveButton(android.R.string.ok) { _, _ ->
|
||||
downloadAndInstallUpdate(version)
|
||||
val url = NativeLibrary.getUpdateUrl(version)
|
||||
val intent = Intent(Intent.ACTION_VIEW, url.toUri())
|
||||
startActivity(intent)
|
||||
}
|
||||
.setNeutralButton(R.string.cancel) { dialog, _ ->
|
||||
dialog.dismiss()
|
||||
@@ -207,87 +201,6 @@ class MainActivity : AppCompatActivity(), ThemeProvider {
|
||||
.show()
|
||||
}
|
||||
|
||||
private fun downloadAndInstallUpdate(version: String) {
|
||||
CoroutineScope(Dispatchers.IO).launch {
|
||||
val packageId = applicationContext.packageName
|
||||
val apkUrl = NativeLibrary.getUpdateApkUrl(version, packageId)
|
||||
val apkFile = File(cacheDir, "update-$version.apk")
|
||||
|
||||
withContext(Dispatchers.Main) {
|
||||
showDownloadProgressDialog()
|
||||
}
|
||||
|
||||
val downloader = APKDownloader(apkUrl, apkFile)
|
||||
downloader.download(
|
||||
onProgress = { progress ->
|
||||
runOnUiThread {
|
||||
updateDownloadProgress(progress)
|
||||
}
|
||||
},
|
||||
onComplete = { success ->
|
||||
runOnUiThread {
|
||||
dismissDownloadProgressDialog()
|
||||
if (success) {
|
||||
val installer = APKInstaller(this@MainActivity)
|
||||
installer.install(
|
||||
apkFile,
|
||||
onComplete = {
|
||||
Toast.makeText(
|
||||
this@MainActivity,
|
||||
R.string.update_installed_successfully,
|
||||
Toast.LENGTH_LONG
|
||||
).show()
|
||||
},
|
||||
onFailure = { exception ->
|
||||
Toast.makeText(
|
||||
this@MainActivity,
|
||||
getString(R.string.update_install_failed, exception.message),
|
||||
Toast.LENGTH_LONG
|
||||
).show()
|
||||
}
|
||||
)
|
||||
} else {
|
||||
Toast.makeText(
|
||||
this@MainActivity,
|
||||
getString(R.string.update_download_failed) + "\n\nURL: $apkUrl",
|
||||
Toast.LENGTH_LONG
|
||||
).show()
|
||||
}
|
||||
}
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
private var progressDialog: androidx.appcompat.app.AlertDialog? = null
|
||||
private var progressBar: LinearProgressIndicator? = null
|
||||
private var progressMessage: MaterialTextView? = null
|
||||
|
||||
private fun showDownloadProgressDialog() {
|
||||
val progressView = layoutInflater.inflate(R.layout.dialog_download_progress, null)
|
||||
progressBar = progressView.findViewById(R.id.download_progress_bar)
|
||||
progressMessage = progressView.findViewById(R.id.download_progress_message)
|
||||
|
||||
progressDialog = MaterialAlertDialogBuilder(this)
|
||||
.setTitle(R.string.downloading_update)
|
||||
.setView(progressView)
|
||||
.setCancelable(false)
|
||||
.create()
|
||||
progressDialog?.show()
|
||||
}
|
||||
|
||||
private fun updateDownloadProgress(progress: Int) {
|
||||
progressBar?.progress = progress
|
||||
progressMessage?.text = "$progress%"
|
||||
}
|
||||
|
||||
private fun dismissDownloadProgressDialog() {
|
||||
progressDialog?.dismiss()
|
||||
progressDialog = null
|
||||
progressBar = null
|
||||
progressMessage = null
|
||||
}
|
||||
|
||||
|
||||
fun displayMultiplayerDialog() {
|
||||
val dialog = NetPlayDialog(this)
|
||||
|
||||
@@ -1,61 +0,0 @@
|
||||
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
package org.yuzu.yuzu_emu.updater
|
||||
|
||||
import okhttp3.Call
|
||||
import okhttp3.Callback
|
||||
import okhttp3.OkHttpClient
|
||||
import okhttp3.Request
|
||||
import okhttp3.Response
|
||||
import java.io.File
|
||||
import java.io.FileOutputStream
|
||||
import java.io.IOException
|
||||
|
||||
class APKDownloader(private val url: String, private val outputFile: File) {
|
||||
|
||||
fun download(onProgress: (Int) -> Unit, onComplete: (Boolean) -> Unit) {
|
||||
val client = OkHttpClient()
|
||||
val request = Request.Builder().url(url).build()
|
||||
|
||||
client.newCall(request).enqueue(object : Callback {
|
||||
override fun onFailure(call: Call, e: IOException) {
|
||||
e.printStackTrace()
|
||||
onComplete(false)
|
||||
}
|
||||
|
||||
override fun onResponse(call: Call, response: Response) {
|
||||
if (response.isSuccessful) {
|
||||
response.body?.let { body ->
|
||||
val contentLength = body.contentLength()
|
||||
try {
|
||||
val inputStream = body.byteStream()
|
||||
val outputStream = FileOutputStream(outputFile)
|
||||
val buffer = ByteArray(4096)
|
||||
var bytesRead: Int
|
||||
var totalBytesRead: Long = 0
|
||||
|
||||
while (inputStream.read(buffer).also { bytesRead = it } != -1) {
|
||||
outputStream.write(buffer, 0, bytesRead)
|
||||
totalBytesRead += bytesRead
|
||||
val progress = (totalBytesRead * 100 / contentLength).toInt()
|
||||
onProgress(progress)
|
||||
}
|
||||
outputStream.flush()
|
||||
outputStream.close()
|
||||
inputStream.close()
|
||||
onComplete(true)
|
||||
} catch (e: IOException) {
|
||||
e.printStackTrace()
|
||||
onComplete(false)
|
||||
}
|
||||
} ?: run {
|
||||
onComplete(false)
|
||||
}
|
||||
} else {
|
||||
onComplete(false)
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -1,41 +0,0 @@
|
||||
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
package org.yuzu.yuzu_emu.updater
|
||||
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.content.IntentFilter
|
||||
import android.net.Uri
|
||||
import androidx.core.content.FileProvider
|
||||
import kotlinx.coroutines.GlobalScope
|
||||
import kotlinx.coroutines.launch
|
||||
import java.io.File
|
||||
|
||||
class APKInstaller(private val context: Context) {
|
||||
|
||||
fun install(apkFile: File, onComplete: () -> Unit, onFailure: (Exception) -> Unit) {
|
||||
try {
|
||||
val apkUri: Uri = FileProvider.getUriForFile(
|
||||
context,
|
||||
context.applicationContext.packageName + ".provider",
|
||||
apkFile
|
||||
)
|
||||
val intent = Intent(Intent.ACTION_VIEW)
|
||||
intent.setDataAndType(apkUri, "application/vnd.android.package-archive")
|
||||
intent.flags = Intent.FLAG_GRANT_READ_URI_PERMISSION or Intent.FLAG_ACTIVITY_NEW_TASK
|
||||
context.startActivity(intent)
|
||||
|
||||
GlobalScope.launch {
|
||||
val receiver = AppInstallReceiver(onComplete, onFailure)
|
||||
context.registerReceiver(receiver, IntentFilter().apply {
|
||||
addAction(Intent.ACTION_PACKAGE_ADDED)
|
||||
addAction(Intent.ACTION_PACKAGE_REPLACED)
|
||||
addDataScheme("package")
|
||||
})
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
onFailure(e)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,30 +0,0 @@
|
||||
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
package org.yuzu.yuzu_emu.updater
|
||||
|
||||
import android.content.BroadcastReceiver
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.util.Log
|
||||
|
||||
class AppInstallReceiver(
|
||||
private val onComplete: () -> Unit,
|
||||
private val onFailure: (Exception) -> Unit
|
||||
) : BroadcastReceiver() {
|
||||
|
||||
override fun onReceive(context: Context, intent: Intent) {
|
||||
val packageName = intent.data?.schemeSpecificPart
|
||||
when (intent.action) {
|
||||
Intent.ACTION_PACKAGE_ADDED, Intent.ACTION_PACKAGE_REPLACED -> {
|
||||
Log.i("AppInstallReceiver", "Package installed or updated: $packageName")
|
||||
onComplete()
|
||||
context.unregisterReceiver(this)
|
||||
}
|
||||
else -> {
|
||||
onFailure(Exception("Installation failed for package: $packageName"))
|
||||
context.unregisterReceiver(this)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,11 +1,7 @@
|
||||
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: 2023 yuzu Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
package org.yuzu.yuzu_emu.utils
|
||||
import org.yuzu.yuzu_emu.NativeLibrary
|
||||
|
||||
import android.os.Build
|
||||
|
||||
@@ -29,15 +25,6 @@ object Log {
|
||||
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.R) {
|
||||
info("SoC Manufacturer - ${Build.SOC_MANUFACTURER}")
|
||||
info("SoC Model - ${Build.SOC_MODEL}")
|
||||
NativeLibrary.getCpuSummary().split('\n').forEach {
|
||||
info("CPU Info - $it")
|
||||
}
|
||||
}
|
||||
NativeLibrary.getVulkanDriverVersion().split('\n').forEach {
|
||||
info("Vulkan Driver: - $it")
|
||||
}
|
||||
NativeLibrary.getVulkanApiVersion().split('\n').forEach {
|
||||
info("Vulkan API Version: - $it")
|
||||
}
|
||||
info("Total System Memory - ${MemoryUtil.getDeviceRAM()}")
|
||||
}
|
||||
|
||||
@@ -20,8 +20,9 @@ import androidx.core.view.doOnNextLayout
|
||||
import org.yuzu.yuzu_emu.YuzuApplication
|
||||
import androidx.preference.PreferenceManager
|
||||
import androidx.core.view.WindowInsetsCompat
|
||||
|
||||
/**
|
||||
* CarouselRecyclerView encapsulates all carousel content for the games UI.
|
||||
* CarouselRecyclerView encapsulates all carousel logic for the games UI.
|
||||
* It manages overlapping cards, center snapping, custom drawing order,
|
||||
* joypad & fling navigation and mid-screen swipe-to-refresh.
|
||||
*/
|
||||
@@ -33,7 +34,6 @@ class CarouselRecyclerView @JvmOverloads constructor(
|
||||
|
||||
private var overlapFactor: Float = 0f
|
||||
private var overlapPx: Int = 0
|
||||
private var bottomInset: Int = -1
|
||||
private var overlapDecoration: OverlappingDecoration? = null
|
||||
private var pagerSnapHelper: PagerSnapHelper? = null
|
||||
private var scalingScrollListener: OnScrollListener? = null
|
||||
@@ -202,61 +202,46 @@ class CarouselRecyclerView @JvmOverloads constructor(
|
||||
}
|
||||
}
|
||||
|
||||
fun refreshView() {
|
||||
updateChildScalesAndAlpha()
|
||||
focusCenteredCard()
|
||||
}
|
||||
|
||||
fun notifyInsetsReady(newBottomInset: Int) {
|
||||
if (bottomInset != newBottomInset) {
|
||||
bottomInset = newBottomInset
|
||||
}
|
||||
setupCarousel(true)
|
||||
}
|
||||
|
||||
fun notifyLaidOut(fallBackBottomInset: Int) {
|
||||
if (bottomInset < 0) bottomInset = fallBackBottomInset
|
||||
var gameAdapter = adapter as? GameAdapter ?: return
|
||||
var newCardSize = cardSize(bottomInset)
|
||||
if (gameAdapter.cardSize != newCardSize) {
|
||||
gameAdapter.setCardSize(newCardSize)
|
||||
}
|
||||
setupCarousel(true)
|
||||
}
|
||||
|
||||
fun cardSize(bottomInset: Int): Int {
|
||||
val internalFactor = resources.getFraction(R.fraction.carousel_card_size_factor, 1, 1)
|
||||
val userFactor = preferences.getFloat(CAROUSEL_CARD_SIZE_FACTOR, internalFactor).coerceIn(
|
||||
0f,
|
||||
1f
|
||||
)
|
||||
return (userFactor * (height - bottomInset)).toInt()
|
||||
}
|
||||
|
||||
fun setupCarousel(enabled: Boolean) {
|
||||
fun setCarouselMode(enabled: Boolean, gameAdapter: GameAdapter? = null) {
|
||||
if (enabled) {
|
||||
val gameAdapter = adapter as? GameAdapter ?: return
|
||||
if (gameAdapter.cardSize == 0) return
|
||||
if (bottomInset < 0) return
|
||||
|
||||
useCustomDrawingOrder = true
|
||||
val cardSize = gameAdapter.cardSize
|
||||
|
||||
val internalOverlapFactor = resources.getFraction(R.fraction.carousel_overlap_factor,1,1)
|
||||
overlapFactor = preferences.getFloat(CAROUSEL_OVERLAP_FACTOR, internalOverlapFactor).coerceIn(0f,1f)
|
||||
val insets = rootWindowInsets?.let { WindowInsetsCompat.toWindowInsetsCompat(it, this) }
|
||||
val bottomInset = insets?.getInsets(WindowInsetsCompat.Type.systemBars())?.bottom ?: 0
|
||||
val internalFactor = resources.getFraction(R.fraction.carousel_card_size_factor, 1, 1)
|
||||
val userFactor = preferences.getFloat(CAROUSEL_CARD_SIZE_FACTOR, internalFactor).coerceIn(
|
||||
0f,
|
||||
1f
|
||||
)
|
||||
val cardSize = (userFactor * (height - bottomInset)).toInt()
|
||||
gameAdapter?.setCardSize(cardSize)
|
||||
|
||||
val internalOverlapFactor = resources.getFraction(
|
||||
R.fraction.carousel_overlap_factor,
|
||||
1,
|
||||
1
|
||||
)
|
||||
overlapFactor = preferences.getFloat(CAROUSEL_OVERLAP_FACTOR, internalOverlapFactor).coerceIn(
|
||||
0f,
|
||||
1f
|
||||
)
|
||||
overlapPx = (cardSize * overlapFactor).toInt()
|
||||
|
||||
val internalFlingMultiplier = resources.getFraction(R.fraction.carousel_fling_multiplier,1,1)
|
||||
val internalFlingMultiplier = resources.getFraction(
|
||||
R.fraction.carousel_fling_multiplier,
|
||||
1,
|
||||
1
|
||||
)
|
||||
flingMultiplier = preferences.getFloat(
|
||||
CAROUSEL_FLING_MULTIPLIER,
|
||||
internalFlingMultiplier
|
||||
).coerceIn(1f, 5f)
|
||||
|
||||
gameAdapter .registerAdapterDataObserver(object : RecyclerView.AdapterDataObserver() {
|
||||
gameAdapter?.registerAdapterDataObserver(object : RecyclerView.AdapterDataObserver() {
|
||||
override fun onChanged() {
|
||||
if (pendingScrollAfterReload) {
|
||||
doOnNextLayout {
|
||||
refreshView()
|
||||
post {
|
||||
jigglyScroll()
|
||||
pendingScrollAfterReload = false
|
||||
}
|
||||
}
|
||||
@@ -272,7 +257,7 @@ class CarouselRecyclerView @JvmOverloads constructor(
|
||||
addItemDecoration(overlapDecoration!!)
|
||||
}
|
||||
|
||||
// Gradual scaling on scroll
|
||||
// Gradual scalingAdd commentMore actions
|
||||
if (scalingScrollListener == null) {
|
||||
scalingScrollListener = object : OnScrollListener() {
|
||||
override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
|
||||
@@ -330,7 +315,8 @@ class CarouselRecyclerView @JvmOverloads constructor(
|
||||
super.scrollToPosition(position)
|
||||
(layoutManager as? LinearLayoutManager)?.scrollToPositionWithOffset(position, overlapPx)
|
||||
doOnNextLayout {
|
||||
refreshView()
|
||||
updateChildScalesAndAlpha()
|
||||
focusCenteredCard()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -396,6 +382,12 @@ class CarouselRecyclerView @JvmOverloads constructor(
|
||||
return sorted[i].first
|
||||
}
|
||||
|
||||
fun jigglyScroll() {
|
||||
scrollBy(-1, 0)
|
||||
scrollBy(1, 0)
|
||||
focusCenteredCard()
|
||||
}
|
||||
|
||||
inner class OverlappingDecoration(private val overlap: Int) : ItemDecoration() {
|
||||
override fun getItemOffsets(
|
||||
outRect: Rect,
|
||||
|
||||
@@ -182,9 +182,9 @@ namespace AndroidSettings {
|
||||
Settings::Specialization::Default, true, true,
|
||||
&show_soc_overlay};
|
||||
|
||||
Settings::Setting<bool> dont_show_driver_shader_warning{linkage, false,
|
||||
"dont_show_driver_shader_warning",
|
||||
Settings::Category::Android, Settings::Specialization::Default, true, true};
|
||||
Settings::Setting<bool> dont_show_eden_veil_warning{linkage, false,
|
||||
"dont_show_eden_veil_warning",
|
||||
Settings::Category::Miscellaneous};
|
||||
};
|
||||
|
||||
extern Values values;
|
||||
|
||||
@@ -8,21 +8,13 @@
|
||||
#include "video_core/vulkan_common/vma.h"
|
||||
|
||||
#include <codecvt>
|
||||
#include <cstdio>
|
||||
#include <cstring>
|
||||
#include <locale>
|
||||
#include <map>
|
||||
#include <set>
|
||||
#include <sstream>
|
||||
#include <span>
|
||||
#include <string>
|
||||
#include <string_view>
|
||||
#include <thread>
|
||||
#include <vector>
|
||||
#include <dlfcn.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include <iostream>
|
||||
#ifdef ARCHITECTURE_arm64
|
||||
#include <adrenotools/driver.h>
|
||||
#endif
|
||||
@@ -473,205 +465,6 @@ static Core::SystemResultStatus RunEmulation(const std::string& filepath,
|
||||
return Core::SystemResultStatus::Success;
|
||||
}
|
||||
|
||||
namespace {
|
||||
|
||||
struct CpuPartInfo {
|
||||
u32 vendor;
|
||||
u32 part;
|
||||
const char* name;
|
||||
};
|
||||
|
||||
constexpr CpuPartInfo s_cpu_list[] = {
|
||||
// ARM - 0x41
|
||||
{0x41, 0xd01, "Cortex-A32"},
|
||||
{0x41, 0xd02, "Cortex-A34"},
|
||||
{0x41, 0xd04, "Cortex-A35"},
|
||||
{0x41, 0xd03, "Cortex-A53"},
|
||||
{0x41, 0xd05, "Cortex-A55"},
|
||||
{0x41, 0xd46, "Cortex-A510"},
|
||||
{0x41, 0xd80, "Cortex-A520"},
|
||||
{0x41, 0xd88, "Cortex-A520AE"},
|
||||
{0x41, 0xd07, "Cortex-A57"},
|
||||
{0x41, 0xd06, "Cortex-A65"},
|
||||
{0x41, 0xd43, "Cortex-A65AE"},
|
||||
{0x41, 0xd08, "Cortex-A72"},
|
||||
{0x41, 0xd09, "Cortex-A73"},
|
||||
{0x41, 0xd0a, "Cortex-A75"},
|
||||
{0x41, 0xd0b, "Cortex-A76"},
|
||||
{0x41, 0xd0e, "Cortex-A76AE"},
|
||||
{0x41, 0xd0d, "Cortex-A77"},
|
||||
{0x41, 0xd41, "Cortex-A78"},
|
||||
{0x41, 0xd42, "Cortex-A78AE"},
|
||||
{0x41, 0xd4b, "Cortex-A78C"},
|
||||
{0x41, 0xd47, "Cortex-A710"},
|
||||
{0x41, 0xd4d, "Cortex-A715"},
|
||||
{0x41, 0xd81, "Cortex-A720"},
|
||||
{0x41, 0xd89, "Cortex-A720AE"},
|
||||
{0x41, 0xd87, "Cortex-A725"},
|
||||
{0x41, 0xd44, "Cortex-X1"},
|
||||
{0x41, 0xd4c, "Cortex-X1C"},
|
||||
{0x41, 0xd48, "Cortex-X2"},
|
||||
{0x41, 0xd4e, "Cortex-X3"},
|
||||
{0x41, 0xd82, "Cortex-X4"},
|
||||
{0x41, 0xd85, "Cortex-X925"},
|
||||
{0x41, 0xd4a, "Neoverse E1"},
|
||||
{0x41, 0xd0c, "Neoverse N1"},
|
||||
{0x41, 0xd49, "Neoverse N2"},
|
||||
{0x41, 0xd8e, "Neoverse N3"},
|
||||
{0x41, 0xd40, "Neoverse V1"},
|
||||
{0x41, 0xd4f, "Neoverse V2"},
|
||||
{0x41, 0xd84, "Neoverse V3"},
|
||||
{0x41, 0xd83, "Neoverse V3AE"},
|
||||
// Qualcomm - 0x51
|
||||
{0x51, 0x201, "Kryo"},
|
||||
{0x51, 0x205, "Kryo"},
|
||||
{0x51, 0x211, "Kryo"},
|
||||
{0x51, 0x800, "Kryo 385 Gold"},
|
||||
{0x51, 0x801, "Kryo 385 Silver"},
|
||||
{0x51, 0x802, "Kryo 485 Gold"},
|
||||
{0x51, 0x803, "Kryo 485 Silver"},
|
||||
{0x51, 0x804, "Kryo 680 Prime"},
|
||||
{0x51, 0x805, "Kryo 680 Gold"},
|
||||
{0x51, 0x06f, "Krait"},
|
||||
{0x51, 0xc00, "Falkor"},
|
||||
{0x51, 0xc01, "Saphira"},
|
||||
{0x51, 0x001, "Oryon"},
|
||||
};
|
||||
|
||||
const char* find_cpu_name(u32 vendor, u32 part) {
|
||||
for (const auto& cpu : s_cpu_list) {
|
||||
if (cpu.vendor == vendor && cpu.part == part) {
|
||||
return cpu.name;
|
||||
}
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
u64 read_midr_sysfs(u32 cpu_id) {
|
||||
char path[128];
|
||||
std::snprintf(path, sizeof(path), "/sys/devices/system/cpu/cpu%u/regs/identification/midr_el1", cpu_id);
|
||||
|
||||
FILE* f = std::fopen(path, "r");
|
||||
if (!f) return 0;
|
||||
|
||||
char value[32];
|
||||
if (!std::fgets(value, sizeof(value), f)) {
|
||||
std::fclose(f);
|
||||
return 0;
|
||||
}
|
||||
std::fclose(f);
|
||||
|
||||
return std::strtoull(value, nullptr, 16);
|
||||
}
|
||||
|
||||
std::pair<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" {
|
||||
|
||||
void Java_org_yuzu_yuzu_1emu_NativeLibrary_surfaceChanged(JNIEnv* env, jobject instance,
|
||||
@@ -764,7 +557,6 @@ jboolean JNICALL Java_org_yuzu_yuzu_1emu_utils_GpuDriverHelper_supportsCustomDri
|
||||
|
||||
jobjectArray Java_org_yuzu_yuzu_1emu_utils_GpuDriverHelper_getSystemDriverInfo(
|
||||
JNIEnv* env, jobject j_obj, jobject j_surf, jstring j_hook_lib_dir) {
|
||||
#ifdef ARCHITECTURE_arm64
|
||||
const char* file_redirect_dir_{};
|
||||
int featureFlags{};
|
||||
std::string hook_lib_dir = Common::Android::GetJString(env, j_hook_lib_dir);
|
||||
@@ -787,19 +579,15 @@ jobjectArray Java_org_yuzu_yuzu_1emu_utils_GpuDriverHelper_getSystemDriverInfo(
|
||||
auto version_string =
|
||||
fmt::format("{}.{}.{}", VK_API_VERSION_MAJOR(driver_version),
|
||||
VK_API_VERSION_MINOR(driver_version), VK_API_VERSION_PATCH(driver_version));
|
||||
auto driver_name = device.GetDriverName();
|
||||
#else
|
||||
auto driver_version = "1.0.0";
|
||||
auto version_string = "1.1.0"; //Assume lowest Vulkan level
|
||||
auto driver_name = "generic";
|
||||
#endif
|
||||
jobjectArray j_driver_info = env->NewObjectArray(2, Common::Android::GetStringClass(), Common::Android::ToJString(env, version_string));
|
||||
env->SetObjectArrayElement(j_driver_info, 1, Common::Android::ToJString(env, driver_name));
|
||||
|
||||
jobjectArray j_driver_info = env->NewObjectArray(
|
||||
2, Common::Android::GetStringClass(), Common::Android::ToJString(env, version_string));
|
||||
env->SetObjectArrayElement(j_driver_info, 1,
|
||||
Common::Android::ToJString(env, device.GetDriverName()));
|
||||
return j_driver_info;
|
||||
}
|
||||
|
||||
jstring Java_org_yuzu_yuzu_1emu_utils_GpuDriverHelper_getGpuModel(JNIEnv *env, jobject j_obj, jobject j_surf, jstring j_hook_lib_dir) {
|
||||
#ifdef ARCHITECTURE_arm64
|
||||
const char* file_redirect_dir_{};
|
||||
int featureFlags{};
|
||||
std::string hook_lib_dir = Common::Android::GetJString(env, j_hook_lib_dir);
|
||||
@@ -823,9 +611,6 @@ jstring Java_org_yuzu_yuzu_1emu_utils_GpuDriverHelper_getGpuModel(JNIEnv *env, j
|
||||
window.release();
|
||||
|
||||
return Common::Android::ToJString(env, model_name);
|
||||
#else
|
||||
return Common::Android::ToJString(env, "no-info");
|
||||
#endif
|
||||
}
|
||||
|
||||
jboolean Java_org_yuzu_yuzu_1emu_NativeLibrary_reloadKeys(JNIEnv* env, jclass clazz) {
|
||||
@@ -901,209 +686,6 @@ jstring Java_org_yuzu_yuzu_1emu_NativeLibrary_getGpuDriver(JNIEnv* env, jobject
|
||||
env, EmulationSession::GetInstance().System().GPU().Renderer().GetDeviceVendor());
|
||||
}
|
||||
|
||||
jstring Java_org_yuzu_yuzu_1emu_NativeLibrary_getCpuSummary(JNIEnv* env, jobject /*jobj*/) {
|
||||
get_arm_cpu_name();
|
||||
constexpr const char* CPUINFO_PATH = "/proc/cpuinfo";
|
||||
|
||||
auto trim = [](std::string& s) {
|
||||
const auto start = s.find_first_not_of(" \t\r\n");
|
||||
const auto end = s.find_last_not_of(" \t\r\n");
|
||||
s = (start == std::string::npos) ? "" : s.substr(start, end - start + 1);
|
||||
};
|
||||
|
||||
auto to_lower = [](std::string s) {
|
||||
for (auto& c : s) c = std::tolower(c);
|
||||
return s;
|
||||
};
|
||||
|
||||
try {
|
||||
std::string result;
|
||||
std::pair<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) {
|
||||
EmulationSession::GetInstance().System().ApplySettings();
|
||||
EmulationSession::GetInstance().System().HIDCore().ReloadInputDevices();
|
||||
@@ -1613,43 +1195,6 @@ JNIEXPORT jstring JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_getUpdateUrl(
|
||||
env->ReleaseStringUTFChars(version, version_str);
|
||||
return env->NewStringUTF(url.c_str());
|
||||
}
|
||||
|
||||
JNIEXPORT jstring JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_getUpdateApkUrl(
|
||||
JNIEnv* env,
|
||||
jobject obj,
|
||||
jstring version,
|
||||
jstring packageId) {
|
||||
const char* version_str = env->GetStringUTFChars(version, nullptr);
|
||||
const char* package_id_str = env->GetStringUTFChars(packageId, nullptr);
|
||||
|
||||
std::string variant;
|
||||
std::string package_id(package_id_str);
|
||||
|
||||
if (package_id.find("dev.legacy.eden_emulator") != std::string::npos) {
|
||||
variant = "legacy";
|
||||
} else if (package_id.find("com.miHoYo.Yuanshen") != std::string::npos) {
|
||||
variant = "optimized";
|
||||
} else {
|
||||
variant = "standard";
|
||||
}
|
||||
|
||||
const std::string apk_filename = fmt::format("Eden-Android-{}-{}.apk", version_str, variant);
|
||||
const std::string url = fmt::format("{}/{}/releases/download/{}/{}",
|
||||
std::string{Common::g_build_auto_update_website},
|
||||
std::string{Common::g_build_auto_update_repo},
|
||||
version_str,
|
||||
apk_filename);
|
||||
|
||||
env->ReleaseStringUTFChars(version, version_str);
|
||||
env->ReleaseStringUTFChars(packageId, package_id_str);
|
||||
return env->NewStringUTF(url.c_str());
|
||||
}
|
||||
#endif
|
||||
|
||||
JNIEXPORT jstring JNICALL Java_org_yuzu_yuzu_1emu_NativeLibrary_getBuildVersion(
|
||||
JNIEnv* env,
|
||||
[[maybe_unused]] jobject obj) {
|
||||
return env->NewStringUTF(Common::g_build_version);
|
||||
}
|
||||
|
||||
} // extern "C"
|
||||
|
||||
|
Before Width: | Height: | Size: 104 KiB After Width: | Height: | Size: 65 KiB |
@@ -1,31 +0,0 @@
|
||||
<?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="24dp">
|
||||
|
||||
<com.google.android.material.textview.MaterialTextView
|
||||
android:id="@+id/download_progress_message"
|
||||
style="@style/TextAppearance.Material3.BodyMedium"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="16dp"
|
||||
android:text="0%"
|
||||
android:textAlignment="center"
|
||||
android:textSize="18sp"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<com.google.android.material.progressindicator.LinearProgressIndicator
|
||||
android:id="@+id/download_progress_bar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:max="100"
|
||||
android:progress="0"
|
||||
app:indicatorColor="?attr/colorPrimary"
|
||||
app:trackColor="?attr/colorSurfaceVariant"
|
||||
app:trackCornerRadius="4dp"
|
||||
app:trackThickness="8dp" />
|
||||
|
||||
</LinearLayout>
|
||||
@@ -1,35 +0,0 @@
|
||||
<?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,11 +1,11 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation">
|
||||
|
||||
<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="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="notice_notification_channel_name">الإشعارات والأخطاء</string>
|
||||
<string name="notice_notification_channel_description">عرض الإشعارات عند حدوث خطأ ما.</string>
|
||||
<string name="notification_permission_not_granted">لم يتم منح إذن الإشعار!</string>
|
||||
<string name="app_notification_channel_description">إشعارات محاكي Eden Switch</string>
|
||||
<string name="app_notification_channel_description">إشعارات محاكي السويتش Eden</string>
|
||||
<string name="app_notification_running">Eden قيد التشغيل</string>
|
||||
<string name="seconds">ثواني</string>
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
<string name="enhanced_fps_suffix">(Enhanced)</string>
|
||||
<string name="process_ram">Process RAM: %1$d MB</string>
|
||||
<string name="shaders_prefix">بناء</string>
|
||||
<string name="shaders_suffix">تظليل(ات)</string>
|
||||
<string name="shaders_suffix">مظلل (مظللات)</string>
|
||||
<string name="charging">(يشحن)</string>
|
||||
|
||||
<string name="system_info_label">النظام:</string>
|
||||
@@ -53,10 +53,10 @@
|
||||
<string name="bat_temperature_unit">وحدات قياس درجة حرارة البطارية</string>
|
||||
<string name="show_power_info">عرض معلومات البطارية</string>
|
||||
<string name="show_power_info_description">عرض استهلاك الطاقة الحالي والسعة المتبقية في البطارية</string>
|
||||
<string name="show_shaders_building">عرض بناء التظليل</string>
|
||||
<string name="show_shaders_building_description">عرض عدد التظليل التي يتم بناؤها</string>
|
||||
<string name="show_shaders_building">عرض بناء الظلال</string>
|
||||
<string name="show_shaders_building_description">عرض عدد الظلال التي يتم بناؤها</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_right">أعلى اليسار</string>
|
||||
<string name="overlay_position_bottom_left">أسفل اليمين</string>
|
||||
@@ -79,23 +79,23 @@
|
||||
<string name="show_soc_model">عرض طراز الرقائق</string>
|
||||
<string name="show_soc_model_description">عرض طراز رقائق المضيف</string>
|
||||
<string name="show_fw_version">عرض إصدار الفيرموير</string>
|
||||
<string name="show_fw_version_description">عرض إصدار الفيرموير المثبت</string>
|
||||
<string name="show_fw_version_description">عرض إصدار الفيرموير</string>
|
||||
|
||||
<!-- Eden\'s Veil -->
|
||||
<string name="eden_veil">ميزات Eden</string>
|
||||
<string name="eden_veil_description">إعدادات تجريبية لتحسين الأداء والقدرة. قد تتسبب هذه الإعدادات في ظهور شاشات سوداء أو مشكلات أخرى في اللعبة.</string>
|
||||
<string name="eden_veil">حجاب Eden</string>
|
||||
<string name="eden_veil_description">إعدادات تجريبية لتحسين الأداء والقدرة. قد تسبب هذه الإعدادات شاشات سوداء أو مشاكل أخرى في اللعبة.</string>
|
||||
|
||||
<string name="veil_extensions">ملحقات وحدة معالجة الرسومات</string>
|
||||
<string name="veil_extensions">امتدادات وحدة معالجة الرسوميات</string>
|
||||
<string name="dyna_state">الحالة الديناميكية الموسعة</string>
|
||||
<string name="dyna_state_description">يتحكم في عدد المميزات التي يمكن استخدامها في الحالة الديناميكية الموسعة. الأرقام الأعلى تسمح بميزات أكثر ويمكن أن تعزز الأداء، ولكن قد تسبب مشكلات مع بعض السائقين والبائعين. قد تختلف القيمة الافتراضية بحسب نظامك وقدرات الأجهزة. يمكن تغيير هذه القيمة حتى يتم تحقيق الاستقرار وجودة الصورة الأفضل.</string>
|
||||
<string name="disabled">معطل</string>
|
||||
<string name="provoking_vertex">الرأس المثير</string>
|
||||
<string name="provoking_vertex_description">يحسن الإضاءة ومعالجة الرؤوس في بعض الألعاب. مدعوم فقط على وحدات معالجة الرسومات Vulkan 1.0+.</string>
|
||||
<string name="provoking_vertex_description">يحسن الإضاءة ومعالجة الرؤوس في بعض الألعاب. مدعوم فقط على وحدات معالجة الرسومات التي تدعم فولكان 1.0+</string>
|
||||
<string name="descriptor_indexing">فهرسة الوصف</string>
|
||||
<string name="descriptor_indexing_description">يحسن معالجة النسيج والمخزن المؤقت، بالإضافة إلى طبقة الترجمة Maxwell. مدعوم من بعض وحدات معالجة الرسومات Vulkan 1.1 وجميع وحدات معالجة الرسومات Vulkan 1.2+.</string>
|
||||
<string name="sample_shading">تظليل العينة</string>
|
||||
<string name="sample_shading_description">يُتيح لمُكَوِّن التظليل الجزئي تنفيذ العملية لكل عينة في القسم متعدد العينات بدلاً من تنفيذها مرة واحدة لكل قسم. يُحسّن جودة الرسومات على حساب بعض الأداء. تدعم هذه الإضافة الأجهزة التي تعمل بنظام Vulkan 1.1 وما فوق فقط.</string>
|
||||
<string name="sample_shading_fraction">نسبة التظليل النموذجية</string>
|
||||
<string name="sample_shading_description">يسمح لمظلل الأجزاء بتنفيذ كل عينة في جزء متعدد العينات بدلاً من مرة واحدة لكل جزء. يحسن جودة الرسومات على حساب بعض الأداء. لا تدعم هذه الإضافة سوى أجهزة Vulkan 1.1+ فقط.</string>
|
||||
<string name="sample_shading_fraction">كسر التظليل العيني</string>
|
||||
<string name="sample_shading_fraction_description">كثافة تمرير تظليل العينة. تؤدي القيم الأعلى إلى تحسين الجودة بشكل أكبر، ولكنها تقلل أيضًا من الأداء إلى حد كبير.</string>
|
||||
|
||||
<string name="veil_renderer">العارض</string>
|
||||
@@ -111,27 +111,27 @@
|
||||
<string name="veil_misc">وحدة المعالجة المركزية والذاكرة</string>
|
||||
<string name="use_sync_core">مزامنة سرعة النواة</string>
|
||||
<string name="use_sync_core_description">مزامنة سرعة النواة مع النسبة القصوى للسرعة لتحسين الأداء دون تغيير السرعة الفعلية للعبة.</string>
|
||||
<string name="use_lru_cache">تمكين ذاكرة التخزين المؤقتة LRU</string>
|
||||
<string name="use_lru_cache_description">قم بتمكين أو تعطيل ذاكرة التخزين المؤقتة الأقل استخدامًا (LRU)، مما يزيد من الأداء عن طريق توفير استخدام معالج وحدة المعالجة المركزية. قد تواجه بعض الألعاب مشكلات مع هذا الإعداد، لذا قم بتعطيله إذا لم يتم تشغيل اللعبة أو تعطلت بشكل عشوائي.</string>
|
||||
<string name="use_lru_cache">تمكين ذاكرة التخزين المؤقت LRU</string>
|
||||
<string name="use_lru_cache_description">تمكين أو تعطيل ذاكرة التخزين المؤقت الأقل استخداماً مؤخراً (LRU) لتحسين الأداء عن طريق تقليل استخدام وحدة المعالجة المركزية. بعض الألعاب قد تواجه مشاكل معه، خاصةً TotK 1.2.1، لذا قم بتعطيله إذا لم تعمل اللعبة أو انهارت عشوائياً.</string>
|
||||
<string name="use_fast_cpu_time">وقت وحدة المعالجة المركزية السريع</string>
|
||||
<string name="use_fast_cpu_time_description">يجبر وحدة المعالجة المركزية المحاكاة على العمل بسرعة أعلى، مما يقلل من بعض محددات معدل الإطارات. هذا الخيار غير مستقر وقد يسبب مشاكل، وقد يرى المستخدمون بأجهزة أضعف انخفاضًا في الأداء.</string>
|
||||
<string name="custom_cpu_ticks">تخصيص دورات المعالج</string>
|
||||
<string name="custom_cpu_ticks_description">قم بتعيين قيمة مخصصة لدورات المعالج. القيم الأعلى يمكن أن تزيد من الأداء، ولكنها قد تتسبب أيضًا في تجميد اللعبة. يوصى باستخدام نطاق 77-21000.</string>
|
||||
<string name="cpu_ticks">دورات</string>
|
||||
<string name="skip_cpu_inner_invalidation">تخطي إبطال صلاحية وحدة المعالجة المركزية الداخلية</string>
|
||||
<string name="skip_cpu_inner_invalidation_description">يتخطى بعض عمليات إبطال ذاكرة التخزين المؤقتة من جانب وحدة المعالجة المركزية أثناء تحديثات الذاكرة، مما يقلل من استخدام وحدة المعالجة المركزية ويحسن أداءها. قد يتسبب ذلك في حدوث أعطال أو تعطل في بعض الألعاب.</string>
|
||||
<string name="skip_cpu_inner_invalidation">تخطي إبطال ذاكرة التخزين المؤقت الداخلية للوحدة المركزية</string>
|
||||
<string name="skip_cpu_inner_invalidation_description">يتخطى بعض عمليات إبطال ذاكرة التخزين المؤقت أثناء تحديثات الذاكرة، مما يقلل استخدام المعالج ويحسن أدائه. قد يسبب هذا أعطالاً أو تعطلًا في بعض الألعاب.</string>
|
||||
<string name="cpuopt_unsafe_host_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_description">استخدم تعزيز (1700MHz) للتشغيل بأعلى سرعة أصلية لـ Switch، أو سريع (2000MHz) للتشغيل بضعف السرعة.</string>
|
||||
<string name="fast_cpu_time_description">استخدم Boost (1700MHz) للتشغيل بأعلى سرعة أصلية لـ Switch، أو Fast (2000MHz) للتشغيل بضعف السرعة.</string>
|
||||
<string name="memory_layout">تخطيط الذاكرة</string>
|
||||
<string name="memory_layout_description">(تجريبي) تغيير تخطيط الذاكرة المحاكي. هذا الإعداد لن يزيد من الأداء، ولكن قد يساعد في الألعاب باستخدام قرارات عالية عبر التعديلات. لا تستخدم على الهواتف التي تحتوي على 8GB من ذاكرة الوصول العشوائي أو أقل. يعمل فقط على الواجهة الخلفية الديناميكية (JIT).</string>
|
||||
<string name="dma_accuracy">دقة DMA</string>
|
||||
<string name="dma_accuracy_description">يتحكم في دقة تحديد DMA. يمكن أن تصلح الدقة الآمنة المشاكل في بعض الألعاب، ولكنها قد تؤثر أيضًا على الأداء في بعض الحالات. إذا كنت غير متأكد، اترك هذا على الوضع الافتراضي.</string>
|
||||
|
||||
<!-- Shader Backend -->
|
||||
<string name="shader_backend">واجهة برمجة التظليل</string>
|
||||
<string name="shader_backend_description">حدد كيفية تجميع وترجمة برامج التظليل لوحدة معالجة الرسومات الخاصة بك.</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_glsl">GLSL</string>
|
||||
<string name="shader_backend_glasm">GLASM</string>
|
||||
<string name="shader_backend_spirv">Spir-V</string>
|
||||
@@ -161,7 +161,7 @@
|
||||
<string name="multiplayer_join_room_success">تم الانضمام إلى الغرفة بنجاح</string>
|
||||
<string name="multiplayer_exit_room">مغادرة الغرفة</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_mac_collision">تعارض عناوين MAC</string>
|
||||
<string name="multiplayer_console_id_collision">تعارض معرف وحدة التحكم</string>
|
||||
@@ -171,7 +171,7 @@
|
||||
<string name="multiplayer_room_is_full">الغرفة ممتلئة</string>
|
||||
<string name="multiplayer_host_banned">أنت محظور من هذه الغرفة</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_create_room_error">خطأ في إنشاء الغرفة</string>
|
||||
<string name="multiplayer_host_kicked">تم طرد المضيف</string>
|
||||
@@ -195,7 +195,6 @@
|
||||
<string name="multiplayer_chat">الدردشة</string>
|
||||
<string name="multiplayer_more_options">المزيد من الخيارات</string>
|
||||
<string name="chat">الدردشة</string>
|
||||
<string name="clear">مسح</string>
|
||||
<string name="type_message">اكتب رسالة…</string>
|
||||
<string name="send_message">إرسال رسالة</string>
|
||||
<string name="multiplayer_moderation">الإشراف</string>
|
||||
@@ -215,7 +214,7 @@
|
||||
<string name="multiplayer_hide_full_rooms">إخفاء الغرف الممتلئة</string>
|
||||
<string name="multiplayer_hide_empty_rooms">إخفاء الغرف الفارغة</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_lobby_type">نوع الغرفة</string>
|
||||
<string name="multiplayer_room_name_error">يجب أن يتكون من 3 إلى 20 حرفًا</string>
|
||||
@@ -223,7 +222,7 @@
|
||||
<string name="multiplayer_token_required">مطلوب رمز ويب، انتقل إلى الإعدادات المتقدمة -> النظام -> الشبكة</string>
|
||||
<string name="multiplayer_ip_error">تنسيق IP غير صالح</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_port_error">يجب أن يكون بين 1 و65535</string>
|
||||
<string name="cancel">إلغاء</string>
|
||||
@@ -238,16 +237,16 @@
|
||||
<string name="welcome_description">تعلم كيفية إعداد <b>Eden</b> والبدء في المحاكاة.</string>
|
||||
<string name="get_started">ابدأ الآن</string>
|
||||
<string name="keys">المفاتيح</string>
|
||||
<string name="keys_description">حدد ملف <b>prod.keys</b> الخاص بك باستخدام الزر أدناه.</string>
|
||||
<string name="select_keys">حدد المفاتيح</string>
|
||||
<string name="keys_description">اختر ملف <b>prod.keys</b> الخاص بك باستخدام الزر أدناه.</string>
|
||||
<string name="select_keys">اختر المفاتيح</string>
|
||||
<string name="firmware">الفيرموير</string>
|
||||
<string name="firmware_description">حدد ملف <b>firmware.zip</b> الخاص بك باستخدام الزر أدناه.</string>
|
||||
<string name="firmware_description">قم بتحديد ملف <b>firmware.zip</b> الخاص بك باستخدام الزر الموجود أدناه.</string>
|
||||
<string name="select_firmware">حدد الفيرموير</string>
|
||||
<string name="games">الألعاب</string>
|
||||
<string name="games_description">حدد مجلد <b>الألعاب</b> الخاص بك باستخدام الزر أدناه.</string>
|
||||
<string name="done">إنهاء</string>
|
||||
<string name="done_description">أنت جاهز تمامًا.\nاستمتع بألعابك!</string>
|
||||
<string name="text_continue">متابعة</string>
|
||||
<string name="text_continue">استمر</string>
|
||||
<string name="next">التالي</string>
|
||||
<string name="back">عودة</string>
|
||||
<string name="add_games">إضافة الألعاب</string>
|
||||
@@ -265,17 +264,17 @@
|
||||
<string name="dont_show_again">لا تعرض مرة أخرى</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="update_available">تحديث متاح</string>
|
||||
<string name="update_available_description">نسخة جديدة متاحة: %1$s\n\nهل ترغب في تنزيلها؟</string>
|
||||
<string name="home_search">البحث</string>
|
||||
<string name="home_settings">الإعدادات</string>
|
||||
<string name="empty_gamelist">لم يتم العثور على أي ملفات أو لم يتم تحديد أي مجلد ألعاب بعد.</string>
|
||||
<string name="empty_gamelist">لم يتم العثور على ملفات أو لم يتم تحديد مجلد الألعاب حتى الآن.</string>
|
||||
<string name="manage_game_folders">إدارة مجلدات اللعبة</string>
|
||||
<string name="select_games_folder_description">يسمح لـ Eden بملء قائمة الألعاب</string>
|
||||
<string name="add_games_warning">تخطي تحديد مجلد الألعاب؟</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="home_search_games">البحث عن ألعاب</string>
|
||||
<string name="home_search_games">البحث عن الألعاب</string>
|
||||
<string name="search_settings">إعدادات البحث</string>
|
||||
<string name="install_prod_keys">تثبيت prod.keys</string>
|
||||
<string name="install_prod_keys_description">مطلوب لفك تشفير ألعاب البيع بالتجزئة</string>
|
||||
@@ -293,26 +292,7 @@
|
||||
<string name="permission_denied">تم رفض الإذن</string>
|
||||
<string name="permission_denied_description">لقد رفضت هذا الإذن عدة مرات ويتعين عليك الآن منحه يدويًا في إعدادات النظام</string>
|
||||
<string name="about">حول</string>
|
||||
<string name="about_description">إصدار البرنامج، الاعتمادات، والمزيد</string>
|
||||
<string name="system_information">معلومات النظام</string>
|
||||
<string name="system_information_description">عرض معلومات تفصيلية عن الجهاز</string>
|
||||
<string name="device_manufacturer">الشركة المصنعة</string>
|
||||
<string name="device_model">طراز</string>
|
||||
<string name="product">المنتج</string>
|
||||
<string name="android_version">إصدار Android</string>
|
||||
<string name="android_security_patch">تصحيح الأمان</string>
|
||||
<string name="build_id">معرف البناء</string>
|
||||
<string name="general_information">معلومات عامة</string>
|
||||
<string name="hardware">الأجهزة</string>
|
||||
<string name="supported_abis">واجهات برمجة التطبيقات المدعومة</string>
|
||||
<string name="cpu_info">معلومات وحدة المعالجة المركزية</string>
|
||||
<string name="gpu_information">معلومات وحدة معالجة الرسومات</string>
|
||||
<string name="vulkan_driver_version">إصدار برنامج تشغيل Vulkan</string>
|
||||
<string name="error_getting_emulator_info">خطأ في الحصول على معلومات المحاكي</string>
|
||||
<string name="memory_info">معلومات الذاكرة</string>
|
||||
<string name="total_memory">إجمالي الذاكرة</string>
|
||||
<string name="soc">نظام الرقاقة:</string>
|
||||
|
||||
<string name="about_description">بناء الإصدار، والاعتمادات، وأكثر من ذلك</string>
|
||||
<string name="warning_help">مساعدة</string>
|
||||
<string name="warning">تحذير</string>
|
||||
<string name="warning_skip">تخطي</string>
|
||||
@@ -330,12 +310,12 @@
|
||||
<string name="open_user_folder_description">إدارة الملفات الداخلية لـ Eden</string>
|
||||
<string name="app_settings_description">تعديل سلوك ومظهر التطبيق</string>
|
||||
<string name="no_file_manager">لم يتم العثور على مدير الملفات</string>
|
||||
<string name="notification_no_directory_link">تعذر فتح مجلد Eden</string>
|
||||
<string name="notification_no_directory_link">لا يمكن فتح مجلد Eden</string>
|
||||
<string name="notification_no_directory_link_description">يرجى تحديد موقع مجلد المستخدم يدويًا باستخدام اللوحة الجانبية لمدير الملفات.</string>
|
||||
<string name="manage_save_data">إدارة بيانات الحفظ</string>
|
||||
<string name="manage_save_data_description">تم العثور على بيانات محفوظة. يرجى تحديد أحد الخيارات أدناه.</string>
|
||||
<string name="import_save_warning">استيراد بيانات الحفظ</string>
|
||||
<string name="import_save_warning_description">سيؤدي هذا إلى استبدال جميع البيانات المحفوظة الموجودة بالملف المقدم. هل أنت متأكد من أنك تريد المتابعة؟</string>
|
||||
<string name="manage_save_data">إدارة حفظ البيانات</string>
|
||||
<string name="manage_save_data_description">حفظ البيانات التي تم العثور عليها. يرجى اختيار أحد الخيارات التالية</string>
|
||||
<string name="import_save_warning">استيراد حفظ البيانات</string>
|
||||
<string name="import_save_warning_description">سيؤدي هذا إلى استبدال جميع بيانات الحفظ الموجودة بالملف المقدم. هل أنت متأكد أنك تريد الاستمرار؟</string>
|
||||
<string name="save_files_importing">جارٍ استيراد ملفات الحفظ…</string>
|
||||
<string name="save_files_exporting">جارٍ تصدير ملفات الحفظ...</string>
|
||||
<string name="save_file_imported_success">تم الاستيراد بنجاح</string>
|
||||
@@ -356,13 +336,13 @@
|
||||
<string name="install_game_content_failure">خطأ في تثبيت الملف(ات) على الذاكرة الداخلية</string>
|
||||
<string name="install_game_content_failure_description">يرجى التأكد من صحة المحتوى (المحتويات) وتثبيت ملف prod.keys.</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_install">%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="custom_driver_not_supported">برامج التشغيل المخصصة غير مدعومة</string>
|
||||
<string name="custom_driver_not_supported_description">لا يتم دعم تحميل برنامج التشغيل المخصص حاليًا لهذا الجهاز.\nتحقق من هذا الخيار مرة أخرى في المستقبل لمعرفة ما إذا تمت إضافة الدعم!</string>
|
||||
<string name="custom_driver_not_supported_description">تحميل برنامج التشغيل المخصص غير مدعوم حاليًا لهذا الجهاز. يُرجى إعادة تفعيل هذا الخيار لاحقًا للتحقق من إضافة الدعم.</string>
|
||||
<string name="manage_yuzu_data">إدارة بيانات Eden</string>
|
||||
<string name="manage_yuzu_data_description">استيراد/تصدير فيرموير والمفاتيح وبيانات المستخدم والمزيد</string>
|
||||
<string name="game_folders">مجلدات اللعبة</string>
|
||||
@@ -407,19 +387,19 @@
|
||||
<string name="error_keys_failed_init">فشل تهيئة المفاتيح. تحقق من أن أدوات النسخ محدثة وأعد نسخ المفاتيح.</string>
|
||||
|
||||
<!-- Applet launcher strings -->
|
||||
<string name="qlaunch_applet">القائمة الرئيسية</string>
|
||||
<string name="qlaunch_description">تشغيل التطبيقات من شاشة النظام الرئيسية</string>
|
||||
<string name="applets">مشغل التطبيقات الصغيرة</string>
|
||||
<string name="applets_description">تشغيل تطبيقات الصغيرة للنظام باستخدام الفيرموير المثبت</string>
|
||||
<string name="qlaunch_applet">الشاشة الرئيسية</string>
|
||||
<string name="qlaunch_description">تشغيل التطبيقات من الشاشة الرئيسية للنظام</string>
|
||||
<string name="applets">قائمة التطبيقات المصغرة</string>
|
||||
<string name="applets_description">تطبيقات نظام التشغيل باستخدام الفيرموير المثبتة</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="album_applet">الألبوم</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="cabinet_applet">الخزانة</string>
|
||||
<string name="cabinet_applet_description">تحرير وحذف البيانات المخزنة على أميبو</string>
|
||||
<string name="cabinet_applet_description">تعديل وحذف البيانات المخزنة على أميبو</string>
|
||||
<string name="cabinet_launcher">مشغل الخزانة</string>
|
||||
<string name="cabinet_nickname_and_owner">إعدادات الاسم المستعار والمالك</string>
|
||||
<string name="cabinet_game_data_eraser">ممحاة بيانات اللعبة</string>
|
||||
@@ -465,7 +445,7 @@
|
||||
<string name="use_custom_rtc_description">يسمح لك بتعيين ساعة مخصصة في الوقت الفعلي منفصلة عن وقت النظام الحالي لديك</string>
|
||||
<string name="set_custom_rtc">تعيين ساعة مخصصة في الوقت الحقيقي</string>
|
||||
|
||||
<string name="generate">إنشاء</string>
|
||||
<string name="generate">توليد</string>
|
||||
|
||||
<!-- Network settings strings -->
|
||||
<string name="web_token">رمز الويب</string>
|
||||
@@ -477,19 +457,19 @@
|
||||
<!-- Graphics settings strings -->
|
||||
<string name="backend">الخلفية</string>
|
||||
<string name="display">الشاشة</string>
|
||||
<string name="processing">تأثيرات بعد المعالجة</string>
|
||||
<string name="processing">المعالجة اللاحقة</string>
|
||||
|
||||
<string name="frame_skipping">قيد التطوير: تخطي الإطارات</string>
|
||||
<string name="frame_skipping_description">تبديل تخطي الإطارات لتحسين الأداء عن طريق تقليل عدد الإطارات المعروضة. هذه الميزة قيد التطوير وسيتم تمكينها في الإصدارات المستقبلية.</string>
|
||||
<string name="renderer_accuracy">مستوى الدقة</string>
|
||||
<string name="renderer_resolution">الدقة (الإرساء/محمول)</string>
|
||||
<string name="renderer_resolution">الدقة (محمول/الإرساء)</string>
|
||||
<string name="renderer_vsync">VSync وضع</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="fsr_sharpness">حدة 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_description">يجبر وحدة معالجة الرسومات على العمل بأقصى سرعة ممكنة (سيظل يتم تطبيق القيود الحرارية).</string>
|
||||
<string name="renderer_optimize_spirv_output">تحسين إخراج Spir-V</string>
|
||||
@@ -498,11 +478,11 @@
|
||||
<string name="renderer_asynchronous_shaders_description">يقوم بتجميع التظليل بشكل غير متزامن. قد يقلل ذلك من التقطعات ولكنه قد يؤدي أيضًا إلى حدوث أخطاء.</string>
|
||||
<string name="use_fast_gpu_time">استخدم وقت المعالج الرسومي السريع</string>
|
||||
<string name="use_fast_gpu_time_description">يجبر معظم الألعاب على التشغيل بأعلى دقة أصلية لها. هذا الخيار غير آمن وقد يتسبب في مشاكل.</string>
|
||||
<string name="fast_gpu_time">عامل زيادة تردد وحدة معالجة الرسومات</string>
|
||||
<string name="fast_gpu_time">عامل زيادة تردد وحدة معالجة الرسوميات</string>
|
||||
<string name="fast_gpu_time_description">استخدم 128 لأقصى أداء و512 لأقصى دقة رسومية.</string>
|
||||
<string name="renderer_reactive_flushing">استخدم التنظيف التفاعلي</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="anisotropic_filtering">تصفية متباينة الخواص</string>
|
||||
<string name="anisotropic_filtering_description">يحسن جودة الأنسجة عند عرضها بزوايا مائلة</string>
|
||||
@@ -520,7 +500,7 @@
|
||||
<string name="renderer_debug_description">يضبط واجهة برمجة التطبيقات الرسومية على وضع تصحيح الأخطاء البطيء.</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_description">يفرغ سجلات التصحيح عند كتابة كل سطر، مما يجعل التصحيح أسهل في حالات التوقف أو التجميد.</string>
|
||||
|
||||
@@ -552,46 +532,46 @@
|
||||
<string name="pressed">مضغوط</string>
|
||||
<string name="range">النطاق</string>
|
||||
<string name="deadzone">المنطقة الميتة</string>
|
||||
<string name="modifier">تعديل</string>
|
||||
<string name="modifier_range">تعديل النطاق</string>
|
||||
<string name="modifier">المعدل</string>
|
||||
<string name="modifier_range">نطاق المعدل</string>
|
||||
<string name="triggers">المحفزات</string>
|
||||
<string name="button_l">L</string>
|
||||
<string name="button_r">R</string>
|
||||
<string name="button_zl">ZL</string>
|
||||
<string name="button_zr">ZR</string>
|
||||
<string name="button_sl_left">SL الأيسر</string>
|
||||
<string name="button_sr_left">SR الأيسر</string>
|
||||
<string name="button_sl_right">SL الأيمن</string>
|
||||
<string name="button_sr_right">SR الأيمن</string>
|
||||
<string name="button_sl_left">Left SL</string>
|
||||
<string name="button_sr_left">Left SR</string>
|
||||
<string name="button_sl_right">Right SL</string>
|
||||
<string name="button_sr_right">Right SR</string>
|
||||
<string name="button_z">Z</string>
|
||||
<string name="invalid">غير صالح</string>
|
||||
<string name="not_set">غير محدد</string>
|
||||
<string name="unknown">غير معروف</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$sالمحور %4$s</string>
|
||||
<string name="qualified_button_stick_axis">%1$s%2$s%3$sAxis %4$s</string>
|
||||
<string name="qualified_button">%1$s%2$s%3$sزر %4$s</string>
|
||||
<string name="qualified_axis">المحور %1$s%2$s</string>
|
||||
<string name="qualified_axis">Axis %1$s%2$s</string>
|
||||
<string name="unused">غير مستخدم</string>
|
||||
<string name="input_mapping_filter">مرشح تعيين الإدخال</string>
|
||||
<string name="input_mapping_filter_description">حدد جهازًا لتصفية مدخلات التعيين</string>
|
||||
<string name="auto_map">تعيين ذراع التحكم تلقائيًا</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="pro_controller">Pro Controller</string>
|
||||
<string name="handheld">محمول</string>
|
||||
<string name="dual_joycons">جوي كون ثنائي</string>
|
||||
<string name="left_joycon">جوي كون اليسرى</string>
|
||||
<string name="right_joycon">جوي كون اليمنى</string>
|
||||
<string name="gamecube_controller">ذراع تحكم GameCube</string>
|
||||
<string name="gamecube_controller">GameCube ذراع تحكم</string>
|
||||
<string name="invert_axis">عكس المحور</string>
|
||||
<string name="invert_button">عكس الزر</string>
|
||||
<string name="toggle_button">زر التبديل</string>
|
||||
<string name="turbo_button">زر التوربو</string>
|
||||
<string name="set_threshold">تعيين الحد الفاصل</string>
|
||||
<string name="toggle_axis">تبديل المحور</string>
|
||||
<string name="invert_button">Invert button</string>
|
||||
<string name="toggle_button">Toggle button</string>
|
||||
<string name="turbo_button">Turbo button</string>
|
||||
<string name="set_threshold">Set threshold</string>
|
||||
<string name="toggle_axis">Toggle axis</string>
|
||||
<string name="connected">متصل</string>
|
||||
<string name="use_system_vibrator">استخدم هزاز النظام</string>
|
||||
<string name="use_system_vibrator">استخدام هزاز النظام</string>
|
||||
<string name="input_overlay">تراكب الإدخال</string>
|
||||
<string name="vibration">الاهتزاز</string>
|
||||
<string name="vibration_strength">قوة الاهتزاز</string>
|
||||
@@ -607,7 +587,7 @@
|
||||
<string name="stick_map_description">حرك العصا إلى اليسار ثم للأعلى أو اضغط على زر</string>
|
||||
<string name="button_map_description">اضغط على زر أو حرك الزناد/العصا</string>
|
||||
<string name="map_dpad_direction">تعيين الأسهم %1$s</string>
|
||||
<string name="map_control">تعيين إلى %1$s</string>
|
||||
<string name="map_control">تعيين %1$s</string>
|
||||
<string name="failed_to_load_profile">فشل تحميل ملف التعريف</string>
|
||||
<string name="failed_to_save_profile">فشل في حفظ ملف التعريف</string>
|
||||
<string name="reset_mapping">إعادة تعيين التعيينات</string>
|
||||
@@ -636,7 +616,7 @@
|
||||
<string name="install">تثبيت</string>
|
||||
<string name="fetch">جلب</string>
|
||||
<string name="delete">حذف</string>
|
||||
<string name="edit">تحرير</string>
|
||||
<string name="edit">تعديل</string>
|
||||
<string name="import_success">تم الاستيراد بنجاح</string>
|
||||
<string name="export_success">تم التصدير بنجاح</string>
|
||||
<string name="start">بدء</string>
|
||||
@@ -662,7 +642,7 @@
|
||||
<string name="error_during_fetch">خطأ أثناء الجلب</string>
|
||||
<string name="show_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="successfully_installed">تم تثبيت %1$s بنجاح</string>
|
||||
<string name="driver_failed_title">فشل تثبيت برنامج التشغيل</string>
|
||||
@@ -672,18 +652,18 @@
|
||||
<string name="installing">جارٍ التثبيت...</string>
|
||||
<string name="latest">الأحدث</string>
|
||||
<string name="recommended_driver">برنامج التشغيل الموصى به:</string>
|
||||
<string name="gpu_model">طراز وحدة معالجة الرسومات</string>
|
||||
<string name="unsupported_gpu">وحدة معالجة الرسومات غير مدعومة</string>
|
||||
<string name="gpu_model">طراز وحدة معالجة الرسومات:</string>
|
||||
<string name="unsupported_gpu">بطاقة رسومات غير مدعومة</string>
|
||||
<string name="unsupported_gpu_warning">لا تدعم وحدة معالجة الرسومات الخاصة بك إدخال برامج التشغيل. لا يُنصح بمحاولة تعيين برامج تشغيل مخصصة.</string>
|
||||
|
||||
<!-- Preferences Screen -->
|
||||
<string name="preferences_settings">الإعدادات</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_description">مستوى الدقة، الدقة، ذاكرة التخزين المؤقتة للتظليل</string>
|
||||
<string name="preferences_graphics_description">مستوى الدقة ،الدقة ،ذاكرة التخزين المؤقت للتظليل</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_description">مدخلات ذراع تحكم في الخريطة</string>
|
||||
<string name="preferences_player">اللاعب %d</string>
|
||||
@@ -692,9 +672,9 @@
|
||||
|
||||
<!-- Game properties -->
|
||||
<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_description">تحرير الإعدادات الخاصة بهذه اللعبة</string>
|
||||
<string name="per_game_settings_description">تعديل الإعدادات الخاصة بهذه اللعبة</string>
|
||||
<string name="launch_options">تشغيل التكوين</string>
|
||||
<string name="path">المسار</string>
|
||||
<string name="program_id">معرف العنوان</string>
|
||||
@@ -702,31 +682,28 @@
|
||||
<string name="version">الإصدار</string>
|
||||
<string name="copy_details">نسخ التفاصيل</string>
|
||||
<string name="add_ons">الإضافات</string>
|
||||
<string name="add_ons_description">التعديلات، التحديثات، المحتوى القابل للتنزيل</string>
|
||||
<string name="playtime">زمن اللعب: </string>
|
||||
<string name="add_ons_description">التعديلات والتحديثات والمحتوى القابل للتنزيل</string>
|
||||
<string name="reset_playtime">مسح زمن اللعب</string>
|
||||
<string name="reset_playtime_description">إعادة ضبط زمن اللعب الحالي للعبة إلى 0 ثانية</string>
|
||||
<string name="reset_playtime_warning_description">سيؤدي هذا إلى مسح بيانات زمن اللعب الحالية للعبة. هل أنت متأكد؟</string>
|
||||
<string name="playtime_reset_successfully">تمت إعادة ضبط زمن اللعب</string>
|
||||
<string name="edit_playtime">تحرير زمن التشغيل</string>
|
||||
<string name="edit_playtime">تعديل زمن التشغيل</string>
|
||||
<string name="hours">ساعات</string>
|
||||
<string name="minutes">دقائق</string>
|
||||
<string name="hours_must_be_between_0_and_9999">يجب أن تكون الساعات بين 0 و 9999</string>
|
||||
<string name="minutes_must_be_between_0_and_59">يجب أن تكون الدقائق بين 0 و 59</string>
|
||||
<string name="seconds_must_be_between_0_and_59">يجب أن تكون الثواني بين 0 و 59</string>
|
||||
<string name="playtime_updated_successfully">تم تحديث زمن اللعب بنجاح</string>
|
||||
<string name="clear_shader_cache">مسح ذاكرة التخزين المؤقتة للتظليل</string>
|
||||
<string name="clear_shader_cache">مسح ذاكرة التخزين المؤقت للتظليل</string>
|
||||
<string name="clear_shader_cache_description">يزيل جميع التظليلات التي تم إنشاؤها أثناء لعب هذه اللعبة</string>
|
||||
<string name="clear_shader_cache_warning_description">ستواجه المزيد من التقطع مع إعادة إنشاء ذاكرة التخزين المؤقتة للتظلل</string>
|
||||
<string name="clear_shader_cache_warning_description">سوف تواجه المزيد من التأتأة مع تجديد ذاكرة التخزين المؤقت للتظليل</string>
|
||||
<string name="cleared_shaders_successfully">تم مسح التظليل بنجاح</string>
|
||||
<string name="driver_shader_wipe_dialog_title">تم مسح الشادر</string>
|
||||
<string name="driver_shader_wipe_dialog_message">قام Eden تلقائيًا بمسح جميع ذاكرات التخزين المؤقت للتظليل للحفاظ على صحة خط أنابيب Vulkan. هذا ضروري عند تبديل برامج تشغيل وحدة معالجة الرسومات لمنع الأعطال وتلف الرسومات. قد تواجه بعض التلعثم أثناء إعادة بناء وحدات التظليل.</string>
|
||||
<string name="addons_game">إضافات: %1$s</string>
|
||||
<string name="save_data">البيانات المحفوظة</string>
|
||||
<string name="save_data_description">إدارة البيانات المحفوظة الخاصة بهذه اللعبة</string>
|
||||
<string name="delete_save_data">حذف البيانات المحفوظة</string>
|
||||
<string name="save_data">حفظ البيانات</string>
|
||||
<string name="save_data_description">إدارة حفظ البيانات الخاصة بهذه اللعبة</string>
|
||||
<string name="delete_save_data">حذف حفظ البيانات</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="select_content_type">نوع المحتوى</string>
|
||||
<string name="updates_and_dlc">التحديثات والمحتوى القابل للتنزيل</string>
|
||||
@@ -745,16 +722,16 @@
|
||||
<string name="confirm_uninstall_description">هل أنت متأكد من أنك تريد إلغاء تثبيت هذا الإضافة؟</string>
|
||||
<string name="verify_integrity">التحقق من السلامة</string>
|
||||
<string name="verifying">جارٍ التحقق...</string>
|
||||
<string name="verify_success">تم التحقق من السلامة بنجاح!</string>
|
||||
<string name="verify_success">نجح التحقق من السلامة!</string>
|
||||
<string name="verify_failure">فشل التحقق من السلامة!</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="verification_failed_for">فشل التحقق من الملفات التالية:\n%1$s</string>
|
||||
<string name="share_game_settings">مشاركة التكوين</string>
|
||||
<string name="import_config">استيراد التكوين</string>
|
||||
<string name="export_config">تصدير التكوين</string>
|
||||
<string name="share_config_failed">فشل مشاركة ملف التكوين</string>
|
||||
<string name="share_game_settings">مشاركة الإعدادات</string>
|
||||
<string name="import_config">استيراد الإعدادات</string>
|
||||
<string name="export_config">تصدير الإعدادات</string>
|
||||
<string name="share_config_failed">فشل مشاركة ملف الإعدادات</string>
|
||||
|
||||
<!-- ROM loading errors -->
|
||||
<string name="loader_error_encrypted">ROM الخاص بك مشفر</string>
|
||||
@@ -774,7 +751,7 @@
|
||||
<string name="custom_settings_failed_message">فشل تطبيق الإعدادات المخصصة لـ %1$s: %2$s</string>
|
||||
<string name="launch_with_default_settings">التشغيل بالإعدادات الافتراضية</string>
|
||||
<string name="launch_cancelled">تم إلغاء التشغيل</string>
|
||||
<string name="custom_settings_failure_reasons">غير قادر على تطبيق الإعدادات المطلوبة. قد يكون ذلك بسبب نقص برامج تشغيل وحدة معالجة الرسومات أو مشكلات في التكوين.</string>
|
||||
<string name="custom_settings_failure_reasons">غير قادر على تطبيق الإعدادات المطلوبة. قد يكون ذلك بسبب نقص برامج تشغيل وحدة معالجة الرسوميات أو مشكلات في التكوين.</string>
|
||||
<string name="custom_settings_applied">تم تطبيق الإعدادات المخصصة</string>
|
||||
<string name="launching_game">جارٍ التشغيل %1$s...</string>
|
||||
<string name="failed_to_initialize_game">فشل في تهيئة اللعبة</string>
|
||||
@@ -815,32 +792,21 @@
|
||||
<string name="emulation_control_scale">الحجم</string>
|
||||
<string name="emulation_control_opacity">الشفافية</string>
|
||||
<string name="emulation_touch_overlay_reset">إعادة تعيين التراكب</string>
|
||||
<string name="emulation_touch_overlay_edit">تحرير التراكب</string>
|
||||
<string name="emulation_touch_overlay_edit">تعديل التراكب</string>
|
||||
<string name="emulation_pause">إيقاف المحاكاة مؤقتًا</string>
|
||||
<string name="emulation_unpause">إلغاء الإيقاف المؤقت للمحاكاة</string>
|
||||
<string name="emulation_input_overlay">خيارات التراكب</string>
|
||||
<string name="load_amiibo">تحميل أميبو</string>
|
||||
<string name="touchscreen">شاشة اللمس</string>
|
||||
<string name="lock_drawer">قفل الدرج</string>
|
||||
<string name="unlock_drawer">فتح الدرج</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 -->
|
||||
<string name="software_keyboard">لوحة المفاتيح البرمجية</string>
|
||||
|
||||
<!-- Errors and warnings -->
|
||||
<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_message">%sمفقود. يرجى تفريغ أرشيفات النظام.\nقد يؤدي استمرار المحاكاة إلى حدوث أعطال.</string>
|
||||
<string name="system_archive_general">أرشيف النظام</string>
|
||||
@@ -849,7 +815,7 @@
|
||||
<string name="fatal_error_message">حدث خطأ فادح. تحقق من السجل للحصول على التفاصيل.\nقد يؤدي استمرار المحاكاة إلى حدوث أعطال.</string>
|
||||
<string name="device_memory_inadequate">ذاكرة الوصول العشوائي للجهاز: %1$s\nموصى به: %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 -->
|
||||
<string name="region_japan">اليابان</string>
|
||||
@@ -894,7 +860,7 @@
|
||||
<!-- Renderer Accuracy -->
|
||||
<string name="renderer_accuracy_normal">عادي</string>
|
||||
<string name="renderer_accuracy_high">عالي</string>
|
||||
<string name="renderer_accuracy_extreme">أقصى</string>
|
||||
<string name="renderer_accuracy_extreme">أقصى حد</string>
|
||||
|
||||
<!-- DMA Accuracy -->
|
||||
<string name="dma_accuracy_default">افتراضي</string>
|
||||
@@ -903,16 +869,16 @@
|
||||
|
||||
<!-- ASTC Decoding Method -->
|
||||
<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 -->
|
||||
<string name="accelerate_astc_cpu">وحدة المعالجة المركزية</string>
|
||||
<string name="accelerate_astc_gpu">وحدة معالجة الرسومات</string>
|
||||
<string name="accelerate_astc_gpu">وحدة المعالجة الرسومية</string>
|
||||
<string name="accelerate_astc_async">وحدة المعالجة المركزية غير المتزامنة</string>
|
||||
|
||||
<!-- ASTC Recompression Method -->
|
||||
<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 -->
|
||||
<string name="astc_recompression_uncompressed">غير مضغوط</string>
|
||||
@@ -921,7 +887,7 @@
|
||||
|
||||
<!-- ASTC Recompression Method Choices -->
|
||||
<string name="vram_usage_mode">وضع استخدام ذاكرة VRAM</string>
|
||||
<string name="vram_usage_mode_description">تحكم في مدى قوة تخصيص المحاكي لذاكرة وحدة معالجة الرسومات وتحريرها.</string>
|
||||
<string name="vram_usage_mode_description">تحكم في مدى قوة تخصيص المحاكي لذاكرة وحدة معالجة الرسوميات وتحريرها.</string>
|
||||
<string name="vram_usage_conservative">محافظ</string>
|
||||
<string name="vram_usage_aggressive">عدواني</string>
|
||||
|
||||
@@ -937,9 +903,9 @@
|
||||
<string name="resolution_four">4X (2880p/4320p) (بطيء)</string>
|
||||
|
||||
<!-- Renderer VSync -->
|
||||
<string name="renderer_vsync_immediate">Immediate (Off)</string>
|
||||
<string name="renderer_vsync_immediate">Immediate (إيقاف)</string>
|
||||
<string name="renderer_vsync_mailbox">Mailbox</string>
|
||||
<string name="renderer_vsync_fifo">FIFO (On)</string>
|
||||
<string name="renderer_vsync_fifo">FIFO (تشغيل)</string>
|
||||
<string name="renderer_vsync_fifo_relaxed">FIFO Relaxed</string>
|
||||
|
||||
<!-- Scaling Filters -->
|
||||
@@ -976,7 +942,7 @@
|
||||
<string name="ratio_force_four_three">4:3 فرض</string>
|
||||
<string name="ratio_force_twenty_one_nine">21:9 فرض</string>
|
||||
<string name="ratio_force_sixteen_ten">16:10 فرض</string>
|
||||
<string name="ratio_stretch">تمديد إلى النافذة</string>
|
||||
<string name="ratio_stretch">تمتد إلى النافذة</string>
|
||||
|
||||
<!-- CPU Backend -->
|
||||
<string name="cpu_backend_dynarmic">Dynarmic (JIT)</string>
|
||||
@@ -993,7 +959,7 @@
|
||||
<string name="gamepad_left_stick">العصا اليسرى</string>
|
||||
<string name="gamepad_right_stick">العصا اليمنى</string>
|
||||
<string name="gamepad_home">Home</string>
|
||||
<string name="gamepad_screenshot">Screenshot</string>
|
||||
<string name="gamepad_screenshot">لقطة شاشة</string>
|
||||
|
||||
<!-- Disk shader cache -->
|
||||
<string name="building_shaders">بناء التظليل</string>
|
||||
@@ -1025,35 +991,6 @@
|
||||
<string name="use_black_backgrounds">خلفيات سوداء</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 -->
|
||||
<string name="static_theme_color">لون السمة</string>
|
||||
<string name="eden_theme">Eden (افتراضي)</string>
|
||||
@@ -1070,7 +1007,7 @@
|
||||
<!-- Picture-In-Picture -->
|
||||
<string name="picture_in_picture">صورة داخل صورة</string>
|
||||
<string name="picture_in_picture_description">تصغير النافذة عند وضعها في الخلفية</string>
|
||||
<string name="pause">إيقاف مؤقت</string>
|
||||
<string name="pause">توقف</string>
|
||||
<string name="play">تشغيل</string>
|
||||
<string name="mute">كتم الصوت</string>
|
||||
<string name="unmute">إلغاء كتم الصوت</string>
|
||||
@@ -1083,15 +1020,15 @@
|
||||
|
||||
<!-- Applet Modes -->
|
||||
<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_lle">تطبيق صغير حقيقي</string>
|
||||
<string name="applet_lle">تطبيق حقيقي</string>
|
||||
|
||||
<string name="swkbd_applet">لوحة المفاتيح البرمجية</string>
|
||||
|
||||
<string name="airplane_mode">وضع الطيران</string>
|
||||
<string name="airplane_mode_description">ينقل وضع الطيران إلى نظام التشغيل Switch</string>
|
||||
<string name="airplane_mode_description">تشغيل وضع الطيران في نظام التشغيل سويتش</string>
|
||||
|
||||
<!-- Licenses screen strings -->
|
||||
<string name="licenses">التراخيص</string>
|
||||
|
||||
@@ -519,6 +519,7 @@
|
||||
<string name="installing">لە دامەزراندن...</string>
|
||||
<string name="latest">نوێترین</string>
|
||||
<string name="recommended_driver">درایڤەری پێشنیارکراو:</string>
|
||||
<string name="gpu_model">مۆدێلی GPU:</string>
|
||||
<string name="unsupported_gpu">GPU پشتگیری نەکراوە</string>
|
||||
<string name="unsupported_gpu_warning">GPUی تۆ پشتگیری لە درایڤەری تایبەت ناکات. پێشنیار ناکرێت درایڤەری تایبەت دابنێیت.</string>
|
||||
|
||||
|
||||
@@ -469,6 +469,7 @@
|
||||
<string name="installing">Instalace…</string>
|
||||
<string name="latest">Nejnovější</string>
|
||||
<string name="recommended_driver">Doporučený ovladač:</string>
|
||||
<string name="gpu_model">Model GPU:</string>
|
||||
<string name="unsupported_gpu">Nepodporovaná GPU</string>
|
||||
<string name="unsupported_gpu_warning">Vaše GPU nepodporuje vkládání ovladačů. Nastavení vlastních ovladačů se nedoporučuje.</string>
|
||||
|
||||
|
||||
@@ -625,6 +625,7 @@ Wird der Handheld-Modus verwendet, verringert es die Auflösung und erhöht die
|
||||
<string name="installing">Wird installiert…</string>
|
||||
<string name="latest">Neueste</string>
|
||||
<string name="recommended_driver">Empfohlener Treiber:</string>
|
||||
<string name="gpu_model">GPU-Modell:</string>
|
||||
<string name="unsupported_gpu">Nicht unterstützte GPU</string>
|
||||
<string name="unsupported_gpu_warning">Ihre GPU unterstützt keine Treiberinjektion. Das Festlegen benutzerdefinierter Treiber wird nicht empfohlen.</string>
|
||||
|
||||
|
||||
@@ -646,6 +646,7 @@
|
||||
<string name="installing">Instalando…</string>
|
||||
<string name="latest">Última</string>
|
||||
<string name="recommended_driver">Controlador recomendado:</string>
|
||||
<string name="gpu_model">Modelo de GPU:</string>
|
||||
<string name="unsupported_gpu">GPU no soportada</string>
|
||||
<string name="unsupported_gpu_warning">Tu GPU no soporta la inyección de controladores. No se recomienda configurar controladores personalizados.</string>
|
||||
|
||||
|
||||
@@ -89,7 +89,7 @@
|
||||
<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="disabled">Désactivé</string>
|
||||
<string name="provoking_vertex">Provoque des Vertex</string>
|
||||
<string name="provoking_vertex">Vertex provoquant</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_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>
|
||||
@@ -138,7 +138,7 @@
|
||||
|
||||
<!-- NVDEC Emulation -->
|
||||
<string name="nvdec_emulation">Émulation NVDEC</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_description">Gestion du décodage vidéo</string>
|
||||
<string name="nvdec_emulation_cpu">CPU</string>
|
||||
<string name="nvdec_emulation_gpu">GPU</string>
|
||||
<string name="nvdec_emulation_none">Aucun</string>
|
||||
@@ -195,7 +195,6 @@
|
||||
<string name="multiplayer_chat">Chat</string>
|
||||
<string name="multiplayer_more_options">Plus d\'options</string>
|
||||
<string name="chat">Chat</string>
|
||||
<string name="clear">Effacer</string>
|
||||
<string name="type_message">Écrire un message…</string>
|
||||
<string name="send_message">Envoyer un message</string>
|
||||
<string name="multiplayer_moderation">Modération</string>
|
||||
@@ -647,6 +646,7 @@
|
||||
<string name="installing">Installation en cours…</string>
|
||||
<string name="latest">Dernière</string>
|
||||
<string name="recommended_driver">Pilote recommandé :</string>
|
||||
<string name="gpu_model">Modèle GPU :</string>
|
||||
<string name="unsupported_gpu">GPU non pris en charge</string>
|
||||
<string name="unsupported_gpu_warning">Votre GPU ne prend pas en charge l\'injection de pilotes. Il n\'est pas recommandé de définir des pilotes personnalisés.</string>
|
||||
|
||||
@@ -677,7 +677,6 @@
|
||||
<string name="copy_details">Copier les détails</string>
|
||||
<string name="add_ons">Extensions</string>
|
||||
<string name="add_ons_description">Activer les mods, mises à jour et DLC</string>
|
||||
<string name="playtime">Temps de jeu :</string>
|
||||
<string name="reset_playtime">Réinitialiser le Temps de Jeu</string>
|
||||
<string name="reset_playtime_description">Réinitialiser le temps de jeu du jeu actuel à 0 seconde</string>
|
||||
<string name="reset_playtime_warning_description">Cela effacera les données de temps de jeu du jeu actuel. Êtes-vous sûr \?</string>
|
||||
@@ -791,22 +790,11 @@
|
||||
<string name="emulation_pause">Mettre en pause l\'émulation</string>
|
||||
<string name="emulation_unpause">Reprendre l\'émulation</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="lock_drawer">Verrouiller le tiroir</string>
|
||||
<string name="unlock_drawer">Déverrouiller le tiroir</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 -->
|
||||
<string name="software_keyboard">Clavier virtuel</string>
|
||||
|
||||
@@ -997,35 +985,6 @@
|
||||
<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>
|
||||
|
||||
<!-- 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 -->
|
||||
<string name="static_theme_color">Couleur du thème</string>
|
||||
<string name="eden_theme">Eden (Par défaut)</string>
|
||||
|
||||
@@ -541,6 +541,7 @@
|
||||
<string name="installing">מתקין…</string>
|
||||
<string name="latest">האחרון</string>
|
||||
<string name="recommended_driver">מנהל התקן מומלץ:</string>
|
||||
<string name="gpu_model">דגם GPU:</string>
|
||||
<string name="unsupported_gpu">GPU לא נתמך</string>
|
||||
<string name="unsupported_gpu_warning">ה-GPU שלך אינו תומך בהזרקת מנהל התקן. לא מומלץ להגדיר מנהלי התקן מותאמים אישית.</string>
|
||||
|
||||
|
||||
@@ -595,6 +595,7 @@
|
||||
<string name="installing">Telepítés…</string>
|
||||
<string name="latest">Legújabb</string>
|
||||
<string name="recommended_driver">Ajánlott illesztőprogram:</string>
|
||||
<string name="gpu_model">GPU modell:</string>
|
||||
<string name="unsupported_gpu">Nem támogatott GPU</string>
|
||||
<string name="unsupported_gpu_warning">A GPU-d nem támogatja az illesztőprogramok befecskendezését. Nem ajánlott egyéni illesztőprogramok beállítása.</string>
|
||||
|
||||
|
||||
@@ -636,6 +636,7 @@
|
||||
<string name="installing">Menginstal…</string>
|
||||
<string name="latest">Terbaru</string>
|
||||
<string name="recommended_driver">Driver yang Direkomendasikan:</string>
|
||||
<string name="gpu_model">Model GPU:</string>
|
||||
<string name="unsupported_gpu">GPU Tidak Didukung</string>
|
||||
<string name="unsupported_gpu_warning">GPU Anda tidak mendukung injeksi driver. Tidak disarankan untuk mengatur driver kustom.</string>
|
||||
|
||||
|
||||
@@ -6,12 +6,12 @@
|
||||
<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="app_notification_channel_description">Notifiche dell\'emulatore Eden Switch</string>
|
||||
<string name="app_notification_running">Eden è in esecuzione</string>
|
||||
<string name="app_notification_running">Eden è in azione</string>
|
||||
<string name="seconds">secondi</string>
|
||||
|
||||
<!-- Spinbox strings -->
|
||||
<string name="increment">Aumenta</string>
|
||||
<string name="decrement">Diminuisci</string>
|
||||
<string name="increment">Incremento</string>
|
||||
<string name="decrement">Decremento</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="invalid_value">Valore non valido</string>
|
||||
@@ -195,7 +195,6 @@
|
||||
<string name="multiplayer_chat">Chat</string>
|
||||
<string name="multiplayer_more_options">Altre opzioni</string>
|
||||
<string name="chat">Chat</string>
|
||||
<string name="clear">Cancella</string>
|
||||
<string name="type_message">Scrivi messaggio...</string>
|
||||
<string name="send_message">Invia messaggio</string>
|
||||
<string name="multiplayer_moderation">Moderazione</string>
|
||||
@@ -258,14 +257,14 @@
|
||||
<string name="alphabetical">Alfabetico</string>
|
||||
<string name="view_list">Lista</string>
|
||||
<string name="view_grid">Griglia</string>
|
||||
<string name="view_grid_compact">Griglia compatta</string>
|
||||
<string name="view_grid_compact">Griglia Compatta</string>
|
||||
<string name="view_carousel">Carosello</string>
|
||||
<string name="game_image_desc">Screenshot per %1$s</string>
|
||||
<string name="folder">Cartella</string>
|
||||
<string name="dont_show_again">Non mostrare più</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="enable_update_checks">Controlla se è disponibile un aggiornamento quando avvii l\'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_settings">Impostazioni</string>
|
||||
@@ -463,7 +462,7 @@
|
||||
<string name="renderer_aspect_ratio">Rapporto d\'aspetto: </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="fsr_sharpness_description">Determina quanto nitida dovrebbe essere l\'immagine utilizzando il Contrasto Dinamido dell\'FSR</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_description">Forza la GPU a girare col massimo clock possibile (i vincoli alla temperatura saranno comunque applicati)</string>
|
||||
@@ -573,8 +572,8 @@
|
||||
<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="profile_name_already_exists">Un altro profilo con questo nome già esiste</string>
|
||||
<string name="invalid_profile_name">Nome profilo invalido</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>
|
||||
@@ -647,6 +646,7 @@
|
||||
<string name="installing">Installazione in corso…</string>
|
||||
<string name="latest">Ultimo</string>
|
||||
<string name="recommended_driver">Driver consigliato:</string>
|
||||
<string name="gpu_model">Modello GPU:</string>
|
||||
<string name="unsupported_gpu">GPU non supportata</string>
|
||||
<string name="unsupported_gpu_warning">La tua GPU non supporta l\'iniezione di driver. Non è consigliato impostare driver personalizzati.</string>
|
||||
|
||||
@@ -659,7 +659,7 @@
|
||||
<string name="preferences_audio">Audio</string>
|
||||
<string name="preferences_audio_description">Motore di Output audio e volume</string>
|
||||
<string name="preferences_controls">Comandi</string>
|
||||
<string name="preferences_controls_description">Mappa un input del controller</string>
|
||||
<string name="preferences_controls_description">Mappa un imput del controllerq</string>
|
||||
<string name="preferences_player">Giocatore %d</string>
|
||||
<string name="preferences_debug">Debug</string>
|
||||
<string name="preferences_debug_description">Debugging CPU/GPU, API grafiche, fastmem</string>
|
||||
@@ -677,7 +677,6 @@
|
||||
<string name="copy_details">Copia dettagli</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>
|
||||
@@ -692,7 +691,7 @@
|
||||
<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_warning_description">Mentre la cache delle shader rigenera potresti imbatterti in stuttering</string>
|
||||
<string name="cleared_shaders_successfully">Shader eliminati correttamente</string>
|
||||
<string name="cleared_shaders_successfully">Shader azzerate 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>
|
||||
@@ -710,13 +709,13 @@
|
||||
<!-- \"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="verifying_content">Verificando contenuto...</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="verifying">Verificando...</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_description">I contenuti dei file potrebbero essere corrotti</string>
|
||||
@@ -791,21 +790,10 @@
|
||||
<string name="emulation_pause">Sospendi l\'emulazione</string>
|
||||
<string name="emulation_unpause">Riprendi l\'emulazione</string>
|
||||
<string name="emulation_input_overlay">Opzioni overlay</string>
|
||||
<string name="load_amiibo">Carica Amiibo</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>
|
||||
|
||||
<string name="reset">Resetta</string>
|
||||
|
||||
<!-- Software keyboard -->
|
||||
<string name="software_keyboard">Tastiera Software</string>
|
||||
|
||||
@@ -543,6 +543,7 @@
|
||||
<string name="installing">インストール中…</string>
|
||||
<string name="latest">最新</string>
|
||||
<string name="recommended_driver">推奨ドライバー:</string>
|
||||
<string name="gpu_model">GPUモデル:</string>
|
||||
<string name="unsupported_gpu">サポートされていないGPU</string>
|
||||
<string name="unsupported_gpu_warning">あなたのGPUはドライバーインジェクションをサポートしていません。カスタムドライバーの設定は推奨されません。</string>
|
||||
|
||||
|
||||
@@ -554,6 +554,7 @@
|
||||
<string name="installing">설치 중…</string>
|
||||
<string name="latest">최신</string>
|
||||
<string name="recommended_driver">추천 드라이버:</string>
|
||||
<string name="gpu_model">GPU 모델:</string>
|
||||
<string name="unsupported_gpu">지원되지 않는 GPU</string>
|
||||
<string name="unsupported_gpu_warning">GPU가 드라이버 주입을 지원하지 않습니다. 사용자 정의 드라이버 설정은 권장되지 않습니다.</string>
|
||||
|
||||
|
||||
@@ -525,6 +525,7 @@
|
||||
<string name="installing">Installerer…</string>
|
||||
<string name="latest">Siste</string>
|
||||
<string name="recommended_driver">Anbefalt driver:</string>
|
||||
<string name="gpu_model">GPU-modell:</string>
|
||||
<string name="unsupported_gpu">Ustøttet GPU</string>
|
||||
<string name="unsupported_gpu_warning">GPU-en din støtter ikke driverinjeksjon. Det anbefales ikke å sette egendefinerte drivere.</string>
|
||||
|
||||
|
||||
@@ -195,7 +195,6 @@
|
||||
<string name="multiplayer_chat">Czat</string>
|
||||
<string name="multiplayer_more_options">Więcej opcji</string>
|
||||
<string name="chat">Czat</string>
|
||||
<string name="clear">Wyczyść</string>
|
||||
<string name="type_message">Wpisz wiadomość...</string>
|
||||
<string name="send_message">Wyślij wiadomość</string>
|
||||
<string name="multiplayer_moderation">Moderacja</string>
|
||||
@@ -294,25 +293,6 @@
|
||||
<string name="permission_denied_description">Odmówiłeś dostępu do powiadomień zbyt wiele razy, teraz musisz przyznać je w ustawieniach systemowych Androida.</string>
|
||||
<string name="about">O aplikacji</string>
|
||||
<string name="about_description">Wersja, podziękowania i więcej</string>
|
||||
<string name="system_information">Informacje o systemie</string>
|
||||
<string name="system_information_description">Wyświetl szczegółowe informacje o urządzeniu</string>
|
||||
<string name="device_manufacturer">Producent</string>
|
||||
<string name="device_model">Model</string>
|
||||
<string name="product">Produkt</string>
|
||||
<string name="android_version">Wersja Androida</string>
|
||||
<string name="android_security_patch">Poprawki bezpieczeństwa</string>
|
||||
<string name="build_id">Identyfikator kompilacji</string>
|
||||
<string name="general_information">Informacje ogólne</string>
|
||||
<string name="hardware">Sprzęt</string>
|
||||
<string name="supported_abis">Obsługiwane ABI</string>
|
||||
<string name="cpu_info">Informacje o CPU</string>
|
||||
<string name="gpu_information">Informacje o GPU</string>
|
||||
<string name="vulkan_driver_version">Wersja sterownika Vulkan</string>
|
||||
<string name="error_getting_emulator_info">Błąd podczas pobierania informacji o emulatorze</string>
|
||||
<string name="memory_info">Informacje o pamięci</string>
|
||||
<string name="total_memory">Całkowita pamięć</string>
|
||||
<string name="soc">SOC:</string>
|
||||
|
||||
<string name="warning_help">Pomoc</string>
|
||||
<string name="warning">Ostrzeżenie</string>
|
||||
<string name="warning_skip">Pomiń</string>
|
||||
@@ -668,7 +648,7 @@
|
||||
<string name="installing">Instalowanie…</string>
|
||||
<string name="latest">Najnowsza</string>
|
||||
<string name="recommended_driver">Zalecany sterownik:</string>
|
||||
<string name="gpu_model">Model GPU</string>
|
||||
<string name="gpu_model">Model GPU:</string>
|
||||
<string name="unsupported_gpu">Nieobsługiwana GPU</string>
|
||||
<string name="unsupported_gpu_warning">Twoja GPU nie obsługuje wstrzykiwania sterowników. Nie zaleca się ustawiania niestandardowych sterowników.</string>
|
||||
|
||||
@@ -699,7 +679,6 @@
|
||||
<string name="copy_details">Kopiuj szczegóły</string>
|
||||
<string name="add_ons">Dodatki</string>
|
||||
<string name="add_ons_description">Przełącz mody, aktualizacje i DLC</string>
|
||||
<string name="playtime">Czas gry:</string>
|
||||
<string name="reset_playtime">Wyczyść czas gry</string>
|
||||
<string name="reset_playtime_description">Zresetuj czas gry do 0 sekund.</string>
|
||||
<string name="reset_playtime_warning_description">Spowoduje to usunięcie danych dotyczących czasu gry w bieżącej grze. Czy na pewno chcesz to zrobić\?</string>
|
||||
@@ -715,8 +694,6 @@
|
||||
<string name="clear_shader_cache_description">Usuwa wszystkie shadery zbudowane podczas grania w tę grę</string>
|
||||
<string name="clear_shader_cache_warning_description">Możesz doświadczyć większych przycięć, gdy pamięć podręczna shaderów będzie się odbudowywać</string>
|
||||
<string name="cleared_shaders_successfully">Pomyślnie wyczyszczono shadery</string>
|
||||
<string name="driver_shader_wipe_dialog_title">Shadery wyczyszczone</string>
|
||||
<string name="driver_shader_wipe_dialog_message">Eden automatycznie wyczyścił wszystkie pamięci podręczne shaderów, aby zachować poprawność walidacji potoków Vulkan. Jest to wymagane przy zmianie sterowników GPU, aby zapobiec awariom i błędom graficznym. Podczas ponownego budowania shaderów możesz doświadczyć chwilowych przycięć.</string>
|
||||
<string name="addons_game">Dodatki: %1$s</string>
|
||||
<string name="save_data">Dane zapisu</string>
|
||||
<string name="save_data_description">Zarządzaj danymi zapisu specyficznymi dla tej gry</string>
|
||||
@@ -815,22 +792,11 @@
|
||||
<string name="emulation_pause">Wstrzymaj emulację</string>
|
||||
<string name="emulation_unpause">Wznów emulację</string>
|
||||
<string name="emulation_input_overlay">Opcje nakładki</string>
|
||||
<string name="load_amiibo">Załaduj Amiibo</string>
|
||||
<string name="touchscreen">Ekran dotykowy</string>
|
||||
<string name="lock_drawer">Zablokuj panel</string>
|
||||
<string name="unlock_drawer">Odblokuj panel</string>
|
||||
<string name="reset">Resetuj</string>
|
||||
|
||||
<!-- Amiibo -->
|
||||
<string name="amiibo_title">Amiibo</string>
|
||||
<string name="amiibo_removed_message">Amiibo zostało \"zdjęte\"</string>
|
||||
<string name="amiibo_wrong_state">Ta gra nie szuka amiibo</string>
|
||||
<string name="amiibo_not_valid">Wybrany plik nie jest poprawnym amiibo</string>
|
||||
<string name="amiibo_in_use">Wybrany plik jest już w użyciu</string>
|
||||
<string name="amiibo_unknown_error">Wystąpił nieznany błąd</string>
|
||||
<string name="amiibo_load_success">Amiibo załadowane</string>
|
||||
|
||||
|
||||
<!-- Software keyboard -->
|
||||
<string name="software_keyboard">Klawiatura programowa</string>
|
||||
|
||||
@@ -1021,35 +987,6 @@
|
||||
<string name="use_black_backgrounds">Czarne tła</string>
|
||||
<string name="use_black_backgrounds_description">Kiedy używany ciemny motyw, tła zostają zastąpione czernią.</string>
|
||||
|
||||
<!-- App Language -->
|
||||
<string name="app_language">Język aplikacji</string>
|
||||
<string name="app_language_description">Zmień język interfejsu aplikacji</string>
|
||||
<string name="app_language_system">Zgodnie z systemem</string>
|
||||
<string name="app_language_english">English</string>
|
||||
<string name="app_language_spanish">Español</string>
|
||||
<string name="app_language_french">Français</string>
|
||||
<string name="app_language_german">Deutsch</string>
|
||||
<string name="app_language_italian">Italiano</string>
|
||||
<string name="app_language_portuguese">Português</string>
|
||||
<string name="app_language_brazilian_portuguese">Português do Brasil</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">Polski</string>
|
||||
<string name="app_language_czech">Čeština</string>
|
||||
<string name="app_language_norwegian">Norsk bokmål</string>
|
||||
<string name="app_language_hungarian">Magyar</string>
|
||||
<string name="app_language_ukrainian">Українська</string>
|
||||
<string name="app_language_vietnamese">Tiếng Việt</string>
|
||||
<string name="app_language_indonesian">Bahasa Indonesia</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 -->
|
||||
<string name="static_theme_color">Kolor motywu</string>
|
||||
<string name="eden_theme">Eden (Domyślnie)</string>
|
||||
|
||||
@@ -647,6 +647,7 @@ uma tentativa de mapeamento automático</string>
|
||||
<string name="installing">Instalando…</string>
|
||||
<string name="latest">Mais recente</string>
|
||||
<string name="recommended_driver">Driver recomendado:</string>
|
||||
<string name="gpu_model">Modelo GPU:</string>
|
||||
<string name="unsupported_gpu">GPU não suportada</string>
|
||||
<string name="unsupported_gpu_warning">Sua GPU não suporta injeção de driver. Não é recomendado definir drivers personalizados.</string>
|
||||
|
||||
|
||||
@@ -605,6 +605,7 @@ uma tentativa de mapeamento automático</string>
|
||||
<string name="installing">A instalar…</string>
|
||||
<string name="latest">Mais recente</string>
|
||||
<string name="recommended_driver">Driver recomendado:</string>
|
||||
<string name="gpu_model">Modelo GPU:</string>
|
||||
<string name="unsupported_gpu">GPU não suportada</string>
|
||||
<string name="unsupported_gpu_warning">A sua GPU não suporta injeção de driver. Não é recomendado definir drivers personalizados.</string>
|
||||
|
||||
|
||||
@@ -195,7 +195,6 @@
|
||||
<string name="multiplayer_chat">Чат</string>
|
||||
<string name="multiplayer_more_options">Дополнительные настройки</string>
|
||||
<string name="chat">Чат</string>
|
||||
<string name="clear">Очистить</string>
|
||||
<string name="type_message">Введите сообщение…</string>
|
||||
<string name="send_message">Отправить сообщение</string>
|
||||
<string name="multiplayer_moderation">Модерация</string>
|
||||
@@ -241,7 +240,7 @@
|
||||
<string name="keys_description">Выберите ваш файл <b>prod.keys</b> с помощью кнопки ниже.</string>
|
||||
<string name="select_keys">Выбрать ключи</string>
|
||||
<string name="firmware">Прошивка</string>
|
||||
<string name="firmware_description">Выберите файл <b>firmware.zip</b> с помощью кнопки ниже.</string>
|
||||
<string name="firmware_description">Выберете свой <b>firmware.zip</b>файл с кнопкой внизу.</string>
|
||||
<string name="select_firmware">Выбрать прошивку</string>
|
||||
<string name="games">Игры</string>
|
||||
<string name="games_description">Выберите вашу папку с <b>играми</b> с помощью кнопки ниже.</string>
|
||||
@@ -294,23 +293,6 @@
|
||||
<string name="permission_denied_description">Вы слишком часто отклоняли это разрешение, и теперь вам нужно будет вручную предоставить его в настройках системы.</string>
|
||||
<string name="about">О нас</string>
|
||||
<string name="about_description">Версия сборки, титры и другое</string>
|
||||
<string name="system_information">Системная информация</string>
|
||||
<string name="system_information_description">Просмотреть подробную информацию об устройстве</string>
|
||||
<string name="device_manufacturer">Производитель</string>
|
||||
<string name="device_model">Модель</string>
|
||||
<string name="product">Продукт</string>
|
||||
<string name="android_version">Версия Android</string>
|
||||
<string name="android_security_patch">Патч безопасности</string>
|
||||
<string name="build_id">ID сборки</string>
|
||||
<string name="general_information">Общая информация</string>
|
||||
<string name="hardware">Аппаратное обеспечение</string>
|
||||
<string name="supported_abis">Поддерживаемые ABI</string>
|
||||
<string name="cpu_info">Информация о ЦП</string>
|
||||
<string name="gpu_information">Информация о ГПУ</string>
|
||||
<string name="vulkan_driver_version">Версия драйвера Vulkan</string>
|
||||
<string name="error_getting_emulator_info">Ошибка получения информации об эмуляторе</string>
|
||||
<string name="memory_info">Информация о памяти</string>
|
||||
<string name="total_memory">Общий объем памяти</string>
|
||||
<string name="warning_help">Помощь</string>
|
||||
<string name="warning">Предупреждение</string>
|
||||
<string name="warning_skip">Пропустить</string>
|
||||
@@ -666,7 +648,7 @@
|
||||
<string name="installing">Установка…</string>
|
||||
<string name="latest">Последний</string>
|
||||
<string name="recommended_driver">Рекомендуемый драйвер:</string>
|
||||
<string name="gpu_model">Модель ГПУ</string>
|
||||
<string name="gpu_model">Модель ГПУ:</string>
|
||||
<string name="unsupported_gpu">ГПУ не поддерживается</string>
|
||||
<string name="unsupported_gpu_warning">Ваш ГПУ не поддерживает замену драйверов. Установка сторонних драйверов не рекомендуется.</string>
|
||||
|
||||
@@ -697,7 +679,6 @@
|
||||
<string name="copy_details">Копировать детали</string>
|
||||
<string name="add_ons">Дополнения</string>
|
||||
<string name="add_ons_description">Включение модов, обновлений и DLC</string>
|
||||
<string name="playtime">Игровое время: </string>
|
||||
<string name="reset_playtime">Очистить игровое время</string>
|
||||
<string name="reset_playtime_description">Сбрасывает игровое время текущей игры обратно до 0 секунд</string>
|
||||
<string name="reset_playtime_warning_description">Это очистит данные о игровом времени текущей игры. Вы уверены\?</string>
|
||||
@@ -713,8 +694,6 @@
|
||||
<string name="clear_shader_cache_description">Удаляет все шейдеры, созданные во время игры.</string>
|
||||
<string name="clear_shader_cache_warning_description">У вас будет больше лагов во время повторной генерации кэша шейдеров</string>
|
||||
<string name="cleared_shaders_successfully">Успешно очищены шейдеры</string>
|
||||
<string name="driver_shader_wipe_dialog_title">Шейдеры очищены</string>
|
||||
<string name="driver_shader_wipe_dialog_message">Eden автоматически очистил все кэши шейдеров для поддержания валидации Vulkan-конвейера. Это необходимо при переключении драйверов графического процессора для предотвращения сбоев и графических артефактов. Вы можете столкнуться с некоторыми подтормаживаниями во время перекомпиляции шейдеров.</string>
|
||||
<string name="addons_game">Аддоны: %1$s</string>
|
||||
<string name="save_data">Сохранить данные</string>
|
||||
<string name="save_data_description">Управлять сохранениями этой игры.</string>
|
||||
@@ -813,22 +792,11 @@
|
||||
<string name="emulation_pause">Пауза эмуляции</string>
|
||||
<string name="emulation_unpause">Возобновить эмуляцию</string>
|
||||
<string name="emulation_input_overlay">Настройка оверлея</string>
|
||||
<string name="load_amiibo">Загрузить Amiibo</string>
|
||||
<string name="touchscreen">Сенсорный экран</string>
|
||||
<string name="lock_drawer">Заморозить док</string>
|
||||
<string name="unlock_drawer">Разморозить док</string>
|
||||
<string name="reset">Сброс</string>
|
||||
|
||||
<!-- Amiibo -->
|
||||
<string name="amiibo_title">Amiibo</string>
|
||||
<string name="amiibo_removed_message">Текущий amiibo был убран</string>
|
||||
<string name="amiibo_wrong_state">Текущая игра не ищет amiibo</string>
|
||||
<string name="amiibo_not_valid">Выбранный файл не является допустимым amiibo</string>
|
||||
<string name="amiibo_in_use">Выбранный файл уже используется</string>
|
||||
<string name="amiibo_unknown_error">Произошла неизвестная ошибка</string>
|
||||
<string name="amiibo_load_success">Amiibo загружен</string>
|
||||
|
||||
|
||||
<!-- Software keyboard -->
|
||||
<string name="software_keyboard">Виртуальная клавиатура</string>
|
||||
|
||||
@@ -1019,39 +987,10 @@
|
||||
<string name="use_black_backgrounds">Чёрный фон</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 -->
|
||||
<string name="static_theme_color">Цвет темы</string>
|
||||
<string name="eden_theme">Eden (По умолчанию)</string>
|
||||
<string name="violet">Фиолетовый </string>
|
||||
<string name="violet">Фиолетовый (По умолчанию)</string>
|
||||
<string name="blue">Синий</string>
|
||||
<string name="cyan">Циановый</string>
|
||||
<string name="red">Красный</string>
|
||||
|
||||
@@ -603,6 +603,7 @@
|
||||
<string name="installing">Инсталирање ...</string>
|
||||
<string name="latest">Најновији</string>
|
||||
<string name="recommended_driver">Препоручени управљачки програм:</string>
|
||||
<string name="gpu_model">ГПУ модел:</string>
|
||||
<string name="unsupported_gpu">Неподржани ГПУ</string>
|
||||
<string name="unsupported_gpu_warning">Ваш ГПУ не подржава ињекцију управљачких програма. Покушај постављања прилагођених управљачких програма се не препоручује.</string>
|
||||
|
||||
|
||||
@@ -195,7 +195,6 @@
|
||||
<string name="multiplayer_chat">Чат</string>
|
||||
<string name="multiplayer_more_options">Додаткові налаштування</string>
|
||||
<string name="chat">Чат</string>
|
||||
<string name="clear">Очистити</string>
|
||||
<string name="type_message">Введіть повідомлення…</string>
|
||||
<string name="send_message">Надіслати повідомлення</string>
|
||||
<string name="multiplayer_moderation">Модерація</string>
|
||||
@@ -294,25 +293,6 @@
|
||||
<string name="permission_denied_description">Ви занадто часто відхиляли цей дозвіл, тож тепер вам потрібно буде вручну надати його в системних налаштуваннях.</string>
|
||||
<string name="about">Про нас</string>
|
||||
<string name="about_description">Версія збірки, титри та інше</string>
|
||||
<string name="system_information">Системна інформація</string>
|
||||
<string name="system_information_description">Переглянути детальну інформацію щодо пристрою</string>
|
||||
<string name="device_manufacturer">Виробник</string>
|
||||
<string name="device_model">Модель</string>
|
||||
<string name="product">Продукт</string>
|
||||
<string name="android_version">Версія Android</string>
|
||||
<string name="android_security_patch">Оновлення безпеки</string>
|
||||
<string name="build_id">ID збірки</string>
|
||||
<string name="general_information">Загальна інформація</string>
|
||||
<string name="hardware">Обладнання</string>
|
||||
<string name="supported_abis">Підтримувані ABI</string>
|
||||
<string name="cpu_info">Інформація щодо ЦП</string>
|
||||
<string name="gpu_information">Інформація щодо ГП</string>
|
||||
<string name="vulkan_driver_version">Версія драйвера Vulkan</string>
|
||||
<string name="error_getting_emulator_info">Помилка під час отримання інформації щодо емуляції</string>
|
||||
<string name="memory_info">Інформація щодо пам’яті</string>
|
||||
<string name="total_memory">Усього пам’яті</string>
|
||||
<string name="soc">SOC:</string>
|
||||
|
||||
<string name="warning_help">Допомога</string>
|
||||
<string name="warning">Попередження</string>
|
||||
<string name="warning_skip">Пропустити</string>
|
||||
@@ -668,7 +648,7 @@
|
||||
<string name="installing">Встановлення…</string>
|
||||
<string name="latest">Останній</string>
|
||||
<string name="recommended_driver">Рекомендований драйвер:</string>
|
||||
<string name="gpu_model">Модель ГП</string>
|
||||
<string name="gpu_model">Модель GPU:</string>
|
||||
<string name="unsupported_gpu">GPU не підтримується</string>
|
||||
<string name="unsupported_gpu_warning">Ваш GPU не підтримує заміну драйверів. Встановлення сторонніх драйверів не рекомендується.</string>
|
||||
|
||||
@@ -699,7 +679,6 @@
|
||||
<string name="copy_details">Копіювати подробиці</string>
|
||||
<string name="add_ons">Доповнення</string>
|
||||
<string name="add_ons_description">Перемикати моди, оновлення та доповнення</string>
|
||||
<string name="playtime">Награний час: </string>
|
||||
<string name="reset_playtime">Очистити награний час</string>
|
||||
<string name="reset_playtime_description">Скинути награний час поточної гри до 0 секунд</string>
|
||||
<string name="reset_playtime_warning_description">Це очистить дані про награний час поточної гри. Ви впевнені\?</string>
|
||||
@@ -715,8 +694,6 @@
|
||||
<string name="clear_shader_cache_description">Вилучає усі скомпільовані шейдери під час відтворення цієї гри</string>
|
||||
<string name="clear_shader_cache_warning_description">Під час повторної генерації шейдерів можуть виникати затримки</string>
|
||||
<string name="cleared_shaders_successfully">Очищення шейдерів успішне </string>
|
||||
<string name="driver_shader_wipe_dialog_title">Шейдери очищено</string>
|
||||
<string name="driver_shader_wipe_dialog_message">Eden автоматично очистив увесь кеш шейдерів, щоб забезпечити перевірку конвеєра Vulkan. Це необхідно при зміні драйверів ГП, щоб уникнути збоїв і графічних помилок. У вас можуть виникнути мікропідвисання під час повторної компіляції шейдерів.</string>
|
||||
<string name="addons_game">Доповнення: %1$s</string>
|
||||
<string name="save_data">Збереження</string>
|
||||
<string name="save_data_description">Керування збереження цієї гри</string>
|
||||
@@ -815,22 +792,11 @@
|
||||
<string name="emulation_pause">Призупинити емуляцію</string>
|
||||
<string name="emulation_unpause">Продовжити емуляцію</string>
|
||||
<string name="emulation_input_overlay">Опції накладання</string>
|
||||
<string name="load_amiibo">Завантажити amiibo</string>
|
||||
<string name="touchscreen">Сенсорний екран</string>
|
||||
<string name="lock_drawer">Заблокувати панель</string>
|
||||
<string name="unlock_drawer">Розблокувати панель</string>
|
||||
<string name="reset">Скинути</string>
|
||||
|
||||
<!-- Amiibo -->
|
||||
<string name="amiibo_title">Amiibo</string>
|
||||
<string name="amiibo_removed_message">Поточний amiibo вилучено</string>
|
||||
<string name="amiibo_wrong_state">Поточна гра не очікує на amiibo</string>
|
||||
<string name="amiibo_not_valid">Вибраний файл не є дійсним amiibo</string>
|
||||
<string name="amiibo_in_use">Вибраний файл уже використовується</string>
|
||||
<string name="amiibo_unknown_error">Сталася невідома помилка</string>
|
||||
<string name="amiibo_load_success">Amiibo завантажено</string>
|
||||
|
||||
|
||||
<!-- Software keyboard -->
|
||||
<string name="software_keyboard">Програмна клавіатура</string>
|
||||
|
||||
@@ -1021,35 +987,6 @@
|
||||
<string name="use_black_backgrounds">Чорний фон</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">English</string>
|
||||
<string name="app_language_spanish">Español</string>
|
||||
<string name="app_language_french">Français</string>
|
||||
<string name="app_language_german">Deutsch</string>
|
||||
<string name="app_language_italian">Italiano</string>
|
||||
<string name="app_language_portuguese">Português</string>
|
||||
<string name="app_language_brazilian_portuguese">Português do Brasil</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">Polski</string>
|
||||
<string name="app_language_czech">Čeština</string>
|
||||
<string name="app_language_norwegian">Norsk bokmål</string>
|
||||
<string name="app_language_hungarian">Magyar</string>
|
||||
<string name="app_language_ukrainian">Українська</string>
|
||||
<string name="app_language_vietnamese">Tiếng Việt</string>
|
||||
<string name="app_language_indonesian">Bahasa Indonesia</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 -->
|
||||
<string name="static_theme_color">Колір теми</string>
|
||||
<string name="eden_theme">Eden (стандартно)</string>
|
||||
|
||||
@@ -525,6 +525,7 @@
|
||||
<string name="installing">Đang cài đặt…</string>
|
||||
<string name="latest">Mới nhất</string>
|
||||
<string name="recommended_driver">Trình điều khiển đề xuất:</string>
|
||||
<string name="gpu_model">Model GPU:</string>
|
||||
<string name="unsupported_gpu">GPU không được hỗ trợ</string>
|
||||
<string name="unsupported_gpu_warning">GPU của bạn không hỗ trợ tiêm trình điều khiển. Không nên đặt trình điều khiển tùy chỉnh.</string>
|
||||
|
||||
|
||||
@@ -195,7 +195,6 @@
|
||||
<string name="multiplayer_chat">聊天</string>
|
||||
<string name="multiplayer_more_options">更多选项</string>
|
||||
<string name="chat">聊天</string>
|
||||
<string name="clear">清除</string>
|
||||
<string name="type_message">输入消息…</string>
|
||||
<string name="send_message">发送消息</string>
|
||||
<string name="multiplayer_moderation">管理</string>
|
||||
@@ -551,18 +550,18 @@
|
||||
<string name="controller_type">控制器类型</string>
|
||||
<string name="pro_controller">Pro手柄</string>
|
||||
<string name="handheld">掌机模式</string>
|
||||
<string name="dual_joycons">双 Joycon 手柄</string>
|
||||
<string name="dual_joycons">双 Joycons 手柄</string>
|
||||
<string name="left_joycon">左 Joycon 手柄</string>
|
||||
<string name="right_joycon">右 Joycon 手柄</string>
|
||||
<string name="gamecube_controller">GameCube手柄</string>
|
||||
<string name="invert_axis">反转轴向</string>
|
||||
<string name="invert_axis">轴方向倒置</string>
|
||||
<string name="invert_button">反转按键</string>
|
||||
<string name="toggle_button">切换按键</string>
|
||||
<string name="turbo_button">连发键</string>
|
||||
<string name="set_threshold">阈值设定</string>
|
||||
<string name="toggle_axis">切换轴</string>
|
||||
<string name="connected">已连接</string>
|
||||
<string name="use_system_vibrator">使用系统马达</string>
|
||||
<string name="use_system_vibrator">使用系统震动器</string>
|
||||
<string name="input_overlay">虚拟按键输入</string>
|
||||
<string name="vibration">震动</string>
|
||||
<string name="vibration_strength">震动强度</string>
|
||||
@@ -643,7 +642,8 @@
|
||||
<string name="installing">安装中……</string>
|
||||
<string name="latest">最新</string>
|
||||
<string name="recommended_driver">推荐驱动:</string>
|
||||
<string name="unsupported_gpu">GPU不支持</string>
|
||||
<string name="gpu_model">GPU型号:</string>
|
||||
<string name="unsupported_gpu">不支持的GPU</string>
|
||||
<string name="unsupported_gpu_warning">您的GPU不支持驱动注入。不建议设置自定义驱动。</string>
|
||||
|
||||
<!-- Preferences Screen -->
|
||||
@@ -673,7 +673,6 @@
|
||||
<string name="copy_details">复制明细</string>
|
||||
<string name="add_ons">附加项</string>
|
||||
<string name="add_ons_description">管理 mod、游戏更新及 DLC</string>
|
||||
<string name="playtime">游戏时间:</string>
|
||||
<string name="reset_playtime">清除游戏时间</string>
|
||||
<string name="reset_playtime_description">将当前游戏的游戏时间重置为 0 秒</string>
|
||||
<string name="reset_playtime_warning_description">者会讲出当前游戏的游戏时间数据。您确定吗\?</string>
|
||||
@@ -787,22 +786,11 @@
|
||||
<string name="emulation_pause">暂停模拟</string>
|
||||
<string name="emulation_unpause">继续模拟</string>
|
||||
<string name="emulation_input_overlay">虚拟按键选项</string>
|
||||
<string name="load_amiibo">加载 Amiibo</string>
|
||||
<string name="touchscreen">触摸屏</string>
|
||||
<string name="lock_drawer">锁定侧边菜单</string>
|
||||
<string name="unlock_drawer">解锁侧边菜单</string>
|
||||
<string name="reset">重置</string>
|
||||
|
||||
<!-- Amiibo -->
|
||||
<string name="amiibo_title">Amiibo</string>
|
||||
<string name="amiibo_removed_message">当前的 Amiibo 已被移除。</string>
|
||||
<string name="amiibo_wrong_state">当前游戏并没有在寻找 Amiibos</string>
|
||||
<string name="amiibo_not_valid">选择的文件并不是有效的 amiibo</string>
|
||||
<string name="amiibo_in_use">选择的文件已在使用中</string>
|
||||
<string name="amiibo_unknown_error">发生了未知错误</string>
|
||||
<string name="amiibo_load_success">已加载 Amiibo</string>
|
||||
|
||||
|
||||
<!-- Software keyboard -->
|
||||
<string name="software_keyboard">软件键盘</string>
|
||||
|
||||
@@ -993,35 +981,6 @@
|
||||
<string name="use_black_backgrounds">使用黑色背景</string>
|
||||
<string name="use_black_backgrounds_description">使用深色主题时,套用黑色背景。</string>
|
||||
|
||||
<!-- App Language -->
|
||||
<string name="app_language">App 语言</string>
|
||||
<string name="app_language_description">更改 app 界面的语言</string>
|
||||
<string name="app_language_system">跟随系统</string>
|
||||
<string name="app_language_english">English</string>
|
||||
<string name="app_language_spanish">Español</string>
|
||||
<string name="app_language_french">Français</string>
|
||||
<string name="app_language_german">Deutsch</string>
|
||||
<string name="app_language_italian">Italiano</string>
|
||||
<string name="app_language_portuguese">Português</string>
|
||||
<string name="app_language_brazilian_portuguese">Português do Brasil</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">Polski</string>
|
||||
<string name="app_language_czech">Čeština</string>
|
||||
<string name="app_language_norwegian">Norsk bokmål</string>
|
||||
<string name="app_language_hungarian">Magyar</string>
|
||||
<string name="app_language_ukrainian">Українська</string>
|
||||
<string name="app_language_vietnamese">Tiếng Việt</string>
|
||||
<string name="app_language_indonesian">Bahasa Indonesia</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 -->
|
||||
<string name="static_theme_color">主题颜色</string>
|
||||
<string name="eden_theme">Eden (默认)</string>
|
||||
|
||||
@@ -195,7 +195,6 @@
|
||||
<string name="multiplayer_chat">聊天</string>
|
||||
<string name="multiplayer_more_options">更多選項</string>
|
||||
<string name="chat">聊天</string>
|
||||
<string name="clear">清除</string>
|
||||
<string name="type_message">輸入訊息…</string>
|
||||
<string name="send_message">傳送訊息</string>
|
||||
<string name="multiplayer_moderation">管理</string>
|
||||
@@ -241,7 +240,7 @@
|
||||
<string name="keys_description">使用下方的按鈕安裝您的 <b>prod.keys</b> 檔案。</string>
|
||||
<string name="select_keys">選擇金鑰</string>
|
||||
<string name="firmware">韌體</string>
|
||||
<string name="firmware_description">使用下方的按鈕安裝您的<b>firmware.zip</b>檔案</string>
|
||||
<string name="firmware_description">使用下方按鈕安裝您的<b>firmware.zip</b>檔案</string>
|
||||
<string name="select_firmware">選擇韌體</string>
|
||||
<string name="games">遊戲</string>
|
||||
<string name="games_description">使用下方的按鈕選擇您的<b>遊戲</b>資料夾。</string>
|
||||
@@ -315,11 +314,11 @@
|
||||
<string name="notification_no_directory_link_description">請使用檔案管理員的側邊面板手動定位到使用者資料夾。</string>
|
||||
<string name="manage_save_data">管理儲存資料</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="save_files_importing">正在導入儲存資料…</string>
|
||||
<string name="save_files_importing">正在匯入儲存檔案…</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_description">首個子資料夾名稱必須為遊戲標題 ID。</string>
|
||||
<string name="install_firmware">安裝韌體</string>
|
||||
@@ -345,7 +344,7 @@
|
||||
<string name="custom_driver_not_supported">您的裝置不支援此自訂驅動程式</string>
|
||||
<string name="custom_driver_not_supported_description">此裝置不支援注入自訂驅動程式。\n請以後再來查看是否已新增支援!</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="deep_scan">深度掃描</string>
|
||||
<string name="add_game_folder">新增遊戲資料夾</string>
|
||||
@@ -412,7 +411,7 @@
|
||||
<string name="importing_user_data">正在導入使用者資料…</string>
|
||||
<string name="invalid_yuzu_backup">無效的 Eden 備份</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_import_failed_description">請確保使用者資料夾位於 zip 壓縮檔的根目錄,並在 config/config.ini 路徑中包含組態檔案,並再試一次。</string>
|
||||
<!-- General settings strings -->
|
||||
@@ -563,7 +562,7 @@
|
||||
<string name="toggle_axis">視角反轉</string>
|
||||
<string name="connected">已連線</string>
|
||||
<string name="use_system_vibrator">使用系統震動器</string>
|
||||
<string name="input_overlay">虛擬按鍵設定</string>
|
||||
<string name="input_overlay">導入虛擬按鍵設定檔</string>
|
||||
<string name="vibration">震動</string>
|
||||
<string name="vibration_strength">震動強度</string>
|
||||
<string name="profile">設定檔</string>
|
||||
@@ -643,6 +642,7 @@
|
||||
<string name="installing">安裝中…</string>
|
||||
<string name="latest">最新</string>
|
||||
<string name="recommended_driver">推薦驅動程式:</string>
|
||||
<string name="gpu_model">GPU型號:</string>
|
||||
<string name="unsupported_gpu">不支援的GPU</string>
|
||||
<string name="unsupported_gpu_warning">您的GPU不支援驅動程式注入。不建議嘗試設定自訂驅動程式。</string>
|
||||
|
||||
@@ -673,7 +673,6 @@
|
||||
<string name="copy_details">複製詳細資料</string>
|
||||
<string name="add_ons">附加元件</string>
|
||||
<string name="add_ons_description">切換模組、更新及 DLC</string>
|
||||
<string name="playtime">遊玩時間:</string>
|
||||
<string name="reset_playtime">重設遊玩時間</string>
|
||||
<string name="reset_playtime_description">將此遊戲的遊玩時間重設為0</string>
|
||||
<string name="reset_playtime_warning_description">您確定要重設此遊戲的遊玩時間嗎?</string>
|
||||
@@ -787,22 +786,11 @@
|
||||
<string name="emulation_pause">暫停模擬</string>
|
||||
<string name="emulation_unpause">取消暫停模擬</string>
|
||||
<string name="emulation_input_overlay">疊加層/虛擬按鍵設定</string>
|
||||
<string name="load_amiibo">導入Amiibo</string>
|
||||
<string name="touchscreen">觸控螢幕</string>
|
||||
<string name="lock_drawer">鎖定側邊選單</string>
|
||||
<string name="unlock_drawer">解鎖側邊選單</string>
|
||||
<string name="reset">重設</string>
|
||||
|
||||
<!-- Amiibo -->
|
||||
<string name="amiibo_title">Amiibo</string>
|
||||
<string name="amiibo_removed_message">該amiibo已被移除</string>
|
||||
<string name="amiibo_wrong_state">此遊戲目前沒有在尋找amiibo</string>
|
||||
<string name="amiibo_not_valid">您所選擇的並不是正確的amiibo金鑰檔</string>
|
||||
<string name="amiibo_in_use">選擇的檔案已在使用中</string>
|
||||
<string name="amiibo_unknown_error">發生未知的錯誤</string>
|
||||
<string name="amiibo_load_success">已導入Amiibo</string>
|
||||
|
||||
|
||||
<!-- Software keyboard -->
|
||||
<string name="software_keyboard">軟體鍵盤</string>
|
||||
|
||||
|
||||
@@ -94,8 +94,6 @@
|
||||
<string name="dyna_state">Extended Dynamic State</string>
|
||||
<string name="dyna_state_description">Controls the number of features that can be used in Extended Dynamic State. Higher numbers allow for more features and can increase performance, but may cause issues with some drivers and vendors. The default value may vary depending on your system and hardware capabilities. This value can be changed until stability and a better visual quality are achieved.</string>
|
||||
<string name="disabled">Disabled</string>
|
||||
<string name="vertex_input_dynamic_state">Vertex Input Dynamic State</string>
|
||||
<string name="vertex_input_dynamic_state_description">Enables vertex input dynamic state feature for better quality and performance.</string>
|
||||
<string name="provoking_vertex">Provoking Vertex</string>
|
||||
<string name="provoking_vertex_description">Improves lighting and vertex handling in certain games. Only supported on Vulkan 1.0+ GPUs.</string>
|
||||
<string name="descriptor_indexing">Descriptor Indexing</string>
|
||||
@@ -271,14 +269,9 @@
|
||||
<string name="folder">Folder</string>
|
||||
<string name="dont_show_again">Don\'t Show Again</string>
|
||||
<string name="add_directory_success">New game directory added successfully </string>
|
||||
<string name="enable_update_checks">Check for Updates</string>
|
||||
<string name="enable_update_checks_description">Check for updates on launch, and optionally download and install the new update.</string>
|
||||
<string name="enable_update_checks">Check for updates on app startup.</string>
|
||||
<string name="update_available">Update Available</string>
|
||||
<string name="update_available_description">A new version is available: %1$s\n\nWould you like to download it?</string>
|
||||
<string name="downloading_update">Downloading Update</string>
|
||||
<string name="update_download_failed">Failed to download update</string>
|
||||
<string name="update_installed_successfully">Update installed successfully</string>
|
||||
<string name="update_install_failed">Failed to install update: %1$s</string>
|
||||
<string name="home_search">Search</string>
|
||||
<string name="home_settings">Settings</string>
|
||||
<string name="empty_gamelist">No files were found or no game directory has been selected yet.</string>
|
||||
@@ -306,25 +299,6 @@
|
||||
<string name="permission_denied_description">You denied this permission too many times and now you have to manually grant it in system settings.</string>
|
||||
<string name="about">About</string>
|
||||
<string name="about_description">Build version, credits, and more</string>
|
||||
<string name="system_information">System Information</string>
|
||||
<string name="system_information_description">View detailed device information</string>
|
||||
<string name="device_manufacturer">Manufacturer</string>
|
||||
<string name="device_model">Model</string>
|
||||
<string name="product">Product</string>
|
||||
<string name="android_version">Android Version</string>
|
||||
<string name="android_security_patch">Security Patch</string>
|
||||
<string name="build_id">Build ID</string>
|
||||
<string name="general_information">General Information</string>
|
||||
<string name="hardware">Hardware</string>
|
||||
<string name="supported_abis">Supported ABIs</string>
|
||||
<string name="cpu_info">CPU Information</string>
|
||||
<string name="gpu_information">GPU Information</string>
|
||||
<string name="vulkan_driver_version">Vulkan Driver Version</string>
|
||||
<string name="error_getting_emulator_info">Error getting emulator info</string>
|
||||
<string name="memory_info">Memory Information</string>
|
||||
<string name="total_memory">Total Memory</string>
|
||||
<string name="soc">SOC:</string>
|
||||
|
||||
<string name="warning_help">Help</string>
|
||||
<string name="warning">Warning</string>
|
||||
<string name="warning_skip">Skip</string>
|
||||
@@ -448,9 +422,9 @@
|
||||
<string name="user_data_import_success">User data imported successfully</string>
|
||||
<string name="user_data_export_cancelled">Export cancelled</string>
|
||||
<string name="user_data_import_failed_description">Make sure the user data folders are at the root of the zip folder and contain a config file at config/config.ini and try again.</string>
|
||||
<string name="discord_link" translatable="false">https://discord.gg/HstXbPch7X</string>
|
||||
<string name="discord_link" translatable="false">https://discord.gg/kXAmGCXBGD</string>
|
||||
<string name="revolt_link" translatable="false">https://rvlt.gg/qKgFEAbH</string>
|
||||
<string name="x_link" translatable="false">https://nitter.poast.org/edenemuofficial</string>
|
||||
<string name="x_link" translatable="false">https://x.com/edenemuofficial</string>
|
||||
<string name="website_link" translatable="false">https://eden-emu.dev</string>
|
||||
<string name="github_link" translatable="false">https://git.eden-emu.dev/eden-emu</string>
|
||||
|
||||
@@ -682,7 +656,7 @@
|
||||
<string name="installing">Installing…</string>
|
||||
<string name="latest">Latest</string>
|
||||
<string name="recommended_driver">Recommended Driver:</string>
|
||||
<string name="gpu_model">GPU Model</string>
|
||||
<string name="gpu_model">GPU Model:</string>
|
||||
<string name="unsupported_gpu">Unsupported GPU</string>
|
||||
<string name="unsupported_gpu_warning">Your GPU does not support driver injection. Attempting to set custom drivers is not recommended.</string>
|
||||
|
||||
@@ -713,7 +687,7 @@
|
||||
<string name="copy_details">Copy details</string>
|
||||
<string name="add_ons">Add-ons</string>
|
||||
<string name="add_ons_description">Toggle mods, updates and DLC</string>
|
||||
<string name="playtime">Playtime:</string>
|
||||
<string name="playtime">Playtime: </string>
|
||||
<string name="reset_playtime">Clear Playtime</string>
|
||||
<string name="reset_playtime_description">Reset the current game\'s playtime back to 0 seconds</string>
|
||||
<string name="reset_playtime_warning_description">This will clear the current game\'s playtime data. Are you sure?</string>
|
||||
@@ -721,9 +695,6 @@
|
||||
<string name="edit_playtime">Edit Playtime</string>
|
||||
<string name="hours">Hours</string>
|
||||
<string name="minutes">Minutes</string>
|
||||
<string name="hours_abbr">h</string>
|
||||
<string name="minutes_abbr">m</string>
|
||||
<string name="seconds_abbr">s</string>
|
||||
<string name="hours_must_be_between_0_and_9999">Hours must be between 0 and 9999</string>
|
||||
<string name="minutes_must_be_between_0_and_59">Minutes must be between 0 and 59</string>
|
||||
<string name="seconds_must_be_between_0_and_59">Seconds must be between 0 and 59</string>
|
||||
@@ -732,8 +703,6 @@
|
||||
<string name="clear_shader_cache_description">Removes all shaders built while playing this game</string>
|
||||
<string name="clear_shader_cache_warning_description">You will experience more stuttering as the shader cache regenerates</string>
|
||||
<string name="cleared_shaders_successfully">Cleared shaders successfully</string>
|
||||
<string name="driver_shader_wipe_dialog_title">Shaders Cleared</string>
|
||||
<string name="driver_shader_wipe_dialog_message">Eden has automatically cleared all shader caches to maintain Vulkan pipeline validation. This is required when switching GPU drivers to prevent crashes and graphical corruption. You may experience some stuttering as shaders rebuild.</string>
|
||||
<string name="addons_game">Addons: %1$s</string>
|
||||
<string name="save_data">Save data</string>
|
||||
<string name="save_data_description">Manage save data specific to this game</string>
|
||||
|
||||