Compare commits
47 commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
32bb14f0d2 | ||
![]() |
f7c284c7a9 | ||
![]() |
63ce52d0db | ||
![]() |
553955e251 | ||
![]() |
ce124c3360 | ||
![]() |
0830b98b35 | ||
![]() |
8de2a95b23 | ||
![]() |
b625401e64 | ||
![]() |
6ecee968ea | ||
![]() |
5a4c19e01e | ||
![]() |
96d678a7ee | ||
![]() |
7c88951845 | ||
![]() |
cc7625e87c | ||
![]() |
9ee1801d32 | ||
![]() |
eb95a30176 | ||
![]() |
50e7ffe1a4 | ||
![]() |
da7388a5d7 | ||
![]() |
1df5db9128 | ||
![]() |
c411c1ef96 | ||
![]() |
d2a58ea277 | ||
![]() |
5d1b0bef2e | ||
![]() |
3d989b6d3e | ||
![]() |
9112dbd56d | ||
![]() |
22b9c547fc | ||
![]() |
afa0cdfe9f | ||
![]() |
1a73739fd8 | ||
![]() |
67890f59fd | ||
![]() |
bf3eb08b71 | ||
![]() |
3587303222 | ||
![]() |
9480f269c0 | ||
![]() |
9c87fdf711 | ||
![]() |
b0831cf453 | ||
![]() |
06c00a9319 | ||
![]() |
2fbfb8159c | ||
![]() |
dd0fc33e27 | ||
![]() |
0f8765eb3e | ||
![]() |
0e89ee7367 | ||
![]() |
54b997473d | ||
![]() |
643f53f5f2 | ||
![]() |
411abde5d1 | ||
![]() |
2a33d1f91b | ||
![]() |
d33a2cbf02 | ||
![]() |
8888143931 | ||
![]() |
ae26f8e8d5 | ||
![]() |
dd66e3b4a3 | ||
![]() |
89d74d5763 | ||
![]() |
5e0797b112 |
|
@ -2,10 +2,7 @@
|
|||
|
||||
if [ "$TARGET" = "appimage" ]; then
|
||||
# Compile the AppImage we distribute with Clang.
|
||||
export EXTRA_CMAKE_FLAGS=(-DCMAKE_CXX_COMPILER=clang++
|
||||
-DCMAKE_C_COMPILER=clang
|
||||
-DCMAKE_LINKER=/etc/bin/ld.lld
|
||||
-DENABLE_ROOM_STANDALONE=OFF)
|
||||
export EXTRA_CMAKE_FLAGS=(-DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_COMPILER=clang -DCMAKE_LINKER=/etc/bin/ld.lld)
|
||||
# Bundle required QT wayland libraries
|
||||
export EXTRA_QT_PLUGINS="waylandcompositor"
|
||||
export EXTRA_PLATFORM_PLUGINS="libqwayland-egl.so;libqwayland-generic.so"
|
||||
|
@ -15,7 +12,7 @@ else
|
|||
fi
|
||||
|
||||
if [ "$GITHUB_REF_TYPE" == "tag" ]; then
|
||||
export EXTRA_CMAKE_FLAGS=("${EXTRA_CMAKE_FLAGS[@]}" -DENABLE_QT_UPDATE_CHECKER=ON)
|
||||
export EXTRA_CMAKE_FLAGS=($EXTRA_CMAKE_FLAGS -DENABLE_QT_UPDATE_CHECKER=ON)
|
||||
fi
|
||||
|
||||
mkdir build && cd build
|
||||
|
@ -24,7 +21,6 @@ cmake .. -G Ninja \
|
|||
-DCMAKE_C_COMPILER_LAUNCHER=ccache \
|
||||
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
|
||||
-DENABLE_QT_TRANSLATION=ON \
|
||||
-DENABLE_ROOM_STANDALONE=OFF \
|
||||
-DUSE_DISCORD_PRESENCE=ON \
|
||||
"${EXTRA_CMAKE_FLAGS[@]}"
|
||||
ninja
|
||||
|
|
|
@ -11,7 +11,7 @@ BASE_ARTIFACT_ARCH="${BASE_ARTIFACT##*-}"
|
|||
mv $BASE_ARTIFACT $BUNDLE_DIR
|
||||
|
||||
# Executable binary paths that need to be combined.
|
||||
BIN_PATHS=(Azahar.app/Contents/MacOS/azahar)
|
||||
BIN_PATHS=(azahar-room Azahar.app/Contents/MacOS/azahar)
|
||||
|
||||
# Dylib paths that need to be combined.
|
||||
IFS=$'\n'
|
||||
|
@ -36,11 +36,8 @@ for OTHER_ARTIFACT in "${ARTIFACTS_LIST[@]:1}"; do
|
|||
done
|
||||
done
|
||||
|
||||
# Remove leftover libs so that they aren't distributed
|
||||
rm -rf "${BUNDLE_DIR}/libs"
|
||||
|
||||
# Re-sign executables and bundles after combining.
|
||||
APP_PATHS=(Azahar.app)
|
||||
APP_PATHS=(azahar-room Azahar.app)
|
||||
for APP_PATH in "${APP_PATHS[@]}"; do
|
||||
codesign --deep -fs - $BUNDLE_DIR/$APP_PATH
|
||||
done
|
||||
|
|
|
@ -11,7 +11,6 @@ cmake .. -GNinja \
|
|||
-DCMAKE_C_COMPILER_LAUNCHER=ccache \
|
||||
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
|
||||
-DENABLE_QT_TRANSLATION=ON \
|
||||
-DENABLE_ROOM_STANDALONE=OFF \
|
||||
-DUSE_DISCORD_PRESENCE=ON \
|
||||
"${EXTRA_CMAKE_FLAGS[@]}"
|
||||
ninja
|
||||
|
|
|
@ -14,7 +14,7 @@ else
|
|||
fi
|
||||
|
||||
# Archive and upload the artifacts.
|
||||
mkdir -p artifacts
|
||||
mkdir artifacts
|
||||
|
||||
function pack_artifacts() {
|
||||
ARTIFACTS_PATH="$1"
|
||||
|
@ -50,6 +50,11 @@ function pack_artifacts() {
|
|||
rm -rf "$REV_NAME"
|
||||
}
|
||||
|
||||
if [ "$OS" = "windows" ] && [ "$GITHUB_REF_TYPE" = "tag" ]; then
|
||||
# Move the installer to the artifacts directory
|
||||
mv src/installer/bin/*.exe artifacts/
|
||||
fi
|
||||
|
||||
if [ -n "$UNPACKED" ]; then
|
||||
# Copy the artifacts to be uploaded unpacked.
|
||||
for ARTIFACT in build/bundle/*; do
|
||||
|
|
|
@ -4,10 +4,6 @@ GITDATE="`git show -s --date=short --format='%ad' | sed 's/-//g'`"
|
|||
GITREV="`git show -s --format='%h'`"
|
||||
REV_NAME="azahar-unified-source-${GITDATE}-${GITREV}"
|
||||
|
||||
if [ "$GITHUB_REF_TYPE" = "tag" ]; then
|
||||
REV_NAME="azahar-unified-source-$GITHUB_REF_NAME"
|
||||
fi
|
||||
|
||||
COMPAT_LIST='dist/compatibility_list/compatibility_list.json'
|
||||
|
||||
mkdir artifacts
|
||||
|
|
32
.github/workflows/build.yml
vendored
|
@ -49,14 +49,12 @@ jobs:
|
|||
${{ runner.os }}-${{ matrix.target }}-
|
||||
- name: Build
|
||||
run: ./.ci/linux.sh
|
||||
- name: Move AppImage to artifacts directory
|
||||
- name: Pack
|
||||
run: ./.ci/pack.sh
|
||||
if: ${{ matrix.target == 'appimage' }}
|
||||
run: |
|
||||
mkdir -p artifacts
|
||||
mv build/bundle/*.AppImage artifacts/
|
||||
- name: Upload
|
||||
if: ${{ matrix.target == 'appimage' }}
|
||||
uses: actions/upload-artifact@v4
|
||||
if: ${{ matrix.target == 'appimage' }}
|
||||
with:
|
||||
name: ${{ env.OS }}-${{ env.TARGET }}
|
||||
path: artifacts/
|
||||
|
@ -150,19 +148,19 @@ jobs:
|
|||
restore-keys: |
|
||||
${{ runner.os }}-${{ matrix.target }}-
|
||||
- name: Set up MSVC
|
||||
if: ${{ matrix.target == 'msvc' }}
|
||||
uses: ilammy/msvc-dev-cmd@v1
|
||||
if: ${{ matrix.target == 'msvc' }}
|
||||
- name: Install extra tools (MSVC)
|
||||
run: choco install ccache ninja wget
|
||||
if: ${{ matrix.target == 'msvc' }}
|
||||
run: choco install ccache ninja ptime wget
|
||||
- name: Install vulkan-sdk (MSVC)
|
||||
if: ${{ matrix.target == 'msvc' }}
|
||||
run: |
|
||||
wget https://sdk.lunarg.com/sdk/download/1.3.296.0/windows/VulkanSDK-1.3.296.0-Installer.exe -O D:/a/_temp/vulkan.exe
|
||||
D:/a/_temp/vulkan.exe --accept-licenses --default-answer --confirm-command install
|
||||
if: ${{ matrix.target == 'msvc' }}
|
||||
- name: Set up MSYS2
|
||||
if: ${{ matrix.target == 'msys2' }}
|
||||
uses: msys2/setup-msys2@v2
|
||||
if: ${{ matrix.target == 'msys2' }}
|
||||
with:
|
||||
msystem: clang64
|
||||
update: true
|
||||
|
@ -170,16 +168,10 @@ jobs:
|
|||
pacboy: >-
|
||||
toolchain:p ccache:p cmake:p ninja:p spirv-tools:p
|
||||
qt6-base:p qt6-multimedia:p qt6-multimedia-wmf:p qt6-tools:p qt6-translations:p
|
||||
- name: Install extra tools (MSYS2)
|
||||
if: ${{ matrix.target == 'msys2' }}
|
||||
uses: crazy-max/ghaction-chocolatey@v3
|
||||
with:
|
||||
args: install ptime wget
|
||||
- name: Install NSIS
|
||||
if: ${{ github.ref_type == 'tag' }}
|
||||
run: |
|
||||
wget https://download.sourceforge.net/project/nsis/NSIS%203/3.11/nsis-3.11-setup.exe -O D:/a/_temp/nsis-setup.exe
|
||||
ptime D:/a/_temp/nsis-setup.exe /S
|
||||
Invoke-WebRequest https://deac-riga.dl.sourceforge.net/project/nsis/NSIS%203/3.10/nsis-3.10-setup.exe?viasf=1 -OutFile C:\WINDOWS\Temp\nsis-3.10-setup.exe
|
||||
Invoke-Expression "& C:\WINDOWS\Temp\nsis-3.10-setup.exe \S"
|
||||
shell: pwsh
|
||||
- name: Disable line ending translation
|
||||
run: git config --global core.autocrlf input
|
||||
|
@ -190,8 +182,8 @@ jobs:
|
|||
run: |
|
||||
cd src\installer
|
||||
"C:\Program Files (x86)\NSIS\makensis.exe" /DPRODUCT_VARIANT=${{ matrix.target }} /DPRODUCT_VERSION=${{ github.ref_name }} citra.nsi
|
||||
mkdir ..\..\artifacts 2> NUL
|
||||
move /y *.exe ..\..\artifacts\
|
||||
mkdir bin
|
||||
move /y *.exe bin\
|
||||
shell: cmd
|
||||
- name: Pack
|
||||
run: ./.ci/pack.sh
|
||||
|
@ -249,8 +241,8 @@ jobs:
|
|||
name: ${{ env.OS }}-${{ env.TARGET }}
|
||||
path: src/android/app/artifacts/
|
||||
ios:
|
||||
if: ${{ !startsWith(github.ref, 'refs/tags/') }}
|
||||
runs-on: macos-14
|
||||
if: ${{ !startsWith(github.ref, 'refs/tags/') }}
|
||||
env:
|
||||
CCACHE_DIR: ${{ github.workspace }}/.ccache
|
||||
CCACHE_COMPILERCHECK: content
|
||||
|
|
23
.github/workflows/stale.yml
vendored
|
@ -1,23 +0,0 @@
|
|||
name: azahar-stale
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: "0 0 * * *"
|
||||
|
||||
jobs:
|
||||
stale-issues:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
issues: write
|
||||
steps:
|
||||
- uses: actions/stale@v9.1.0
|
||||
with:
|
||||
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
days-before-issue-stale: 90
|
||||
days-before-issue-close: 10
|
||||
stale-issue-message: "This issue has been marked as stale. If there is no activity within the next 10 days, this issue will be closed."
|
||||
close-issue-message: "This issue has been closed as stale."
|
||||
days-before-pr-stale: -1
|
||||
days-before-pr-close: -1
|
||||
remove-issue-stale-when-updated: true
|
||||
exempt-issue-labels: "priority - low,priority - medium,priority - high,priority - urgent,documentation,enhancement,miscellaneous,task,refactor"
|
2
.gitmodules
vendored
|
@ -6,7 +6,7 @@
|
|||
url = https://github.com/neobrain/nihstro.git
|
||||
[submodule "soundtouch"]
|
||||
path = externals/soundtouch
|
||||
url = https://github.com/azahar-emu/soundtouch.git
|
||||
url = https://codeberg.org/soundtouch/soundtouch.git
|
||||
[submodule "catch2"]
|
||||
path = externals/catch2
|
||||
url = https://github.com/catchorg/Catch2
|
||||
|
|
|
@ -41,8 +41,8 @@ if (APPLE)
|
|||
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE BOTH)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE BOTH)
|
||||
else()
|
||||
# Minimum macOS 13
|
||||
set(CMAKE_OSX_DEPLOYMENT_TARGET "13.4")
|
||||
# Minimum macOS 11
|
||||
set(CMAKE_OSX_DEPLOYMENT_TARGET "11.0")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
|
@ -54,13 +54,6 @@ else()
|
|||
set(IS_RELEASE_BUILD ON)
|
||||
endif()
|
||||
|
||||
if (MSVC)
|
||||
add_compile_options(
|
||||
/wd4711 # Suppresses `function 'xxxxx' selected for automatic inline expansion` messages
|
||||
/wd5045 # Suppresses `Compiler will insert Spectre mitigation for memory load if /Qspectre switch specified` messages
|
||||
)
|
||||
endif()
|
||||
|
||||
# LTO takes too much memory and time using MSVC.
|
||||
if (NOT MSVC AND IS_RELEASE_BUILD)
|
||||
set(DEFAULT_ENABLE_LTO ON)
|
||||
|
@ -86,8 +79,7 @@ option(ENABLE_QT_TRANSLATION "Enable translations for the Qt frontend" OFF)
|
|||
option(ENABLE_QT_UPDATE_CHECKER "Enable built-in update checker for the Qt frontend" OFF)
|
||||
|
||||
CMAKE_DEPENDENT_OPTION(ENABLE_TESTS "Enable generating tests executable" ON "NOT IOS" OFF)
|
||||
CMAKE_DEPENDENT_OPTION(ENABLE_ROOM "Enable dedicated room functionality" ON "NOT ANDROID AND NOT IOS" OFF)
|
||||
CMAKE_DEPENDENT_OPTION(ENABLE_ROOM_STANDALONE "Enable generating a standalone dedicated room executable" ON "ENABLE_ROOM" OFF)
|
||||
CMAKE_DEPENDENT_OPTION(ENABLE_ROOM "Enable generating dedicated room executable" ON "NOT ANDROID AND NOT IOS" OFF)
|
||||
|
||||
option(ENABLE_WEB_SERVICE "Enable web services (telemetry, etc.)" ON)
|
||||
option(ENABLE_SCRIPTING "Enable RPC server for scripting" ON)
|
||||
|
@ -119,9 +111,6 @@ endif()
|
|||
if (ENABLE_QT_TRANSLATION)
|
||||
add_definitions(-DENABLE_QT_TRANSLATION)
|
||||
endif()
|
||||
if (ENABLE_ROOM)
|
||||
add_definitions(-DENABLE_ROOM)
|
||||
endif()
|
||||
if (ENABLE_SDL2_FRONTEND)
|
||||
add_definitions(-DENABLE_SDL2_FRONTEND)
|
||||
endif()
|
||||
|
@ -488,8 +477,9 @@ if (NOT ANDROID AND NOT IOS)
|
|||
elseif (ENABLE_SDL2_FRONTEND)
|
||||
bundle_target(citra_meta)
|
||||
endif()
|
||||
if (ENABLE_ROOM_STANDALONE)
|
||||
bundle_target(citra_room_standalone)
|
||||
|
||||
if (ENABLE_ROOM)
|
||||
bundle_target(citra_room)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
|
|
|
@ -279,12 +279,22 @@ else()
|
|||
add_custom_target(bundle)
|
||||
add_custom_command(
|
||||
TARGET bundle
|
||||
COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_BINARY_DIR}/bundle/"
|
||||
POST_BUILD)
|
||||
COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_BINARY_DIR}/bundle/")
|
||||
add_custom_command(
|
||||
TARGET bundle
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_directory "${CMAKE_SOURCE_DIR}/dist/scripting" "${CMAKE_BINARY_DIR}/bundle/scripting"
|
||||
POST_BUILD)
|
||||
COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_BINARY_DIR}/bundle/dist/")
|
||||
add_custom_command(
|
||||
TARGET bundle
|
||||
COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_SOURCE_DIR}/dist/azahar.png" "${CMAKE_BINARY_DIR}/bundle/dist/azahar.png")
|
||||
add_custom_command(
|
||||
TARGET bundle
|
||||
COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_SOURCE_DIR}/license.txt" "${CMAKE_BINARY_DIR}/bundle/")
|
||||
add_custom_command(
|
||||
TARGET bundle
|
||||
COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_SOURCE_DIR}/README.md" "${CMAKE_BINARY_DIR}/bundle/")
|
||||
add_custom_command(
|
||||
TARGET bundle
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_directory "${CMAKE_SOURCE_DIR}/dist/scripting" "${CMAKE_BINARY_DIR}/bundle/scripting")
|
||||
|
||||
# On Linux, add a command to prepare linuxdeploy and any required plugins before any bundling occurs.
|
||||
if (CMAKE_HOST_SYSTEM_NAME STREQUAL "Linux")
|
||||
|
@ -295,8 +305,7 @@ else()
|
|||
"-DLINUXDEPLOY_PATH=${CMAKE_BINARY_DIR}/externals/linuxdeploy"
|
||||
"-DLINUXDEPLOY_ARCH=${CMAKE_HOST_SYSTEM_PROCESSOR}"
|
||||
-P "${CMAKE_SOURCE_DIR}/CMakeModules/BundleTarget.cmake"
|
||||
WORKING_DIRECTORY "${CMAKE_BINARY_DIR}"
|
||||
POST_BUILD)
|
||||
WORKING_DIRECTORY "${CMAKE_BINARY_DIR}")
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
|
|
26
README.md
|
@ -10,20 +10,20 @@ It was created from the merging of PabloMK7's Citra fork and the Lime3DS project
|
|||
|
||||
The goal of this project is to be the de-facto platform for future development.
|
||||
|
||||
> [!NOTE]
|
||||
> Azahar has not fully released yet. For this reason, there are no compiled binaries available for download.
|
||||
>
|
||||
> It is recommended that only developers and early adopters should use the emulator until our first stable release.
|
||||
>
|
||||
> Here be dragons.
|
||||
|
||||
<!--
|
||||
# Installation
|
||||
|
||||
### Windows
|
||||
### Windows & MacOS
|
||||
|
||||
Download the latest release from [Releases](https://github.com/azahar-emu/azahar/releases).
|
||||
|
||||
If you are unsure of whether you want to use MSYS2 or MSVC, use MSYS2.
|
||||
|
||||
### MacOS
|
||||
|
||||
Download the latest release from [Releases](https://github.com/azahar-emu/azahar/releases).
|
||||
|
||||
The `macos-universal` download will work on both Intel and Apple Silicon Macs.
|
||||
|
||||
---
|
||||
### Android
|
||||
The recommended method of downloading Azahar on Android is via the [Google Play store](https://play.google.com/store/apps/details?id=io.github.lime3ds.android).
|
||||
|
@ -31,7 +31,7 @@ The recommended method of downloading Azahar on Android is via the [Google Play
|
|||
Alternatively, you can install the app using Obtainium:
|
||||
1. Download and install Obtainium from [here](https://github.com/ImranR98/Obtainium/releases) (use the file named `app-release.apk`)
|
||||
2. Open Obtainium and click 'Add App'
|
||||
3. Type `https://github.com/azahar-emu/azahar` into the 'App Source URL' section
|
||||
3. Type `https://github.com/azahar/azahar-emu` into the 'App Source URL' section
|
||||
4. Click 'Add'
|
||||
5. Click 'Install'
|
||||
|
||||
|
@ -44,8 +44,6 @@ Keep in mind that you will not recieve automatic updates when installing via the
|
|||
|
||||
Azahar is available as an AppImage on the [Releases](https://github.com/azahar-emu/azahar/releases) page.
|
||||
|
||||
A Flatpak distribution is currently being worked on.
|
||||
<!--
|
||||
We are also on Flathub:
|
||||
|
||||
<a href=https://flathub.org/apps/org.azahar-emu.azahar><img width='180' alt='Download on Flathub' src='https://dl.flathub.org/assets/badges/flathub-badge-en.png'/></a>
|
||||
|
@ -86,13 +84,13 @@ Below are the minimum requirements to run Azahar:
|
|||
### Desktop
|
||||
```
|
||||
Operating System: Windows 10 (64-bit), MacOS 13 (Ventura), or modern 64-bit Linux
|
||||
CPU: x86-64/ARM64 CPU (Windows for ARM not supported). Single core performance higher than 1,800 on Passmark
|
||||
CPU: x86-64 (64-bit) CPU. Single core performance higher than 1,800 on Passmark
|
||||
GPU: OpenGL 4.3 or Vulkan 1.1 support
|
||||
Memory: 2GB of RAM. 4GB is recommended
|
||||
```
|
||||
### Android
|
||||
```
|
||||
Operating System: Android 9.0+ (64-bit)
|
||||
Operating System: Android 9.0+
|
||||
CPU: Snapdragon 835 SoC or better
|
||||
GPU: OpenGL ES 3.2 or Vulkan 1.1 support
|
||||
Memory: 2GB of RAM. 4GB is recommended
|
||||
|
|
1
dist/azahar.desktop
vendored
|
@ -12,3 +12,4 @@ Exec=azahar %f
|
|||
Categories=Game;Emulator;
|
||||
MimeType=application/x-ctr-3dsx;application/x-ctr-cci;application/x-ctr-cia;application/x-ctr-cxi;
|
||||
Keywords=3DS;Nintendo;
|
||||
PrefersNonDefaultGPU=true
|
||||
|
|
2
dist/compatibility_list
vendored
|
@ -1 +1 @@
|
|||
Subproject commit 31c12299126baf892b965defc6ba7810b9c42ccf
|
||||
Subproject commit 955c560089186a86a90b67f0427f6dfdabc1f177
|
803
dist/languages/ca_ES_valencia.ts
vendored
2523
dist/languages/da_DK.ts
vendored
856
dist/languages/de.ts
vendored
1976
dist/languages/el.ts
vendored
819
dist/languages/es_ES.ts
vendored
2603
dist/languages/fi.ts
vendored
846
dist/languages/fr.ts
vendored
2083
dist/languages/hu_HU.ts
vendored
2305
dist/languages/id.ts
vendored
1138
dist/languages/it.ts
vendored
1696
dist/languages/ja_JP.ts
vendored
1611
dist/languages/ko_KR.ts
vendored
2421
dist/languages/lt_LT.ts
vendored
2141
dist/languages/nb.ts
vendored
1319
dist/languages/nl.ts
vendored
829
dist/languages/pl_PL.ts
vendored
833
dist/languages/pt_BR.ts
vendored
1383
dist/languages/ro_RO.ts
vendored
2102
dist/languages/ru_RU.ts
vendored
827
dist/languages/sv.ts
vendored
1842
dist/languages/tr_TR.ts
vendored
2275
dist/languages/vi_VN.ts
vendored
837
dist/languages/zh_CN.ts
vendored
2171
dist/languages/zh_TW.ts
vendored
61
dist/scripting/citra.py
vendored
|
@ -1,21 +1,15 @@
|
|||
# Copyright Citra Emulator Project / Azahar Emulator Project
|
||||
# Licensed under GPLv2 or any later version
|
||||
# Refer to the license.txt file included.
|
||||
|
||||
import struct
|
||||
import random
|
||||
import enum
|
||||
import socket
|
||||
|
||||
CURRENT_REQUEST_VERSION = 1
|
||||
MAX_REQUEST_DATA_SIZE = 1024
|
||||
MAX_PACKET_SIZE = 1024 + 0x10
|
||||
MAX_REQUEST_DATA_SIZE = 32
|
||||
MAX_PACKET_SIZE = 48
|
||||
|
||||
class RequestType(enum.IntEnum):
|
||||
ReadMemory = 1,
|
||||
WriteMemory = 2,
|
||||
ProcessList = 3,
|
||||
SetGetProcess = 4,
|
||||
WriteMemory = 2
|
||||
|
||||
CITRA_PORT = 45987
|
||||
|
||||
|
@ -40,55 +34,6 @@ class Citra:
|
|||
return raw_reply[4*4:]
|
||||
return None
|
||||
|
||||
def process_list(self):
|
||||
processes = {}
|
||||
read_processes = 0
|
||||
while True:
|
||||
request_data = struct.pack("II", read_processes, 0x7FFFFFFF)
|
||||
request, request_id = self._generate_header(RequestType.ProcessList, len(request_data))
|
||||
request += request_data
|
||||
self.socket.sendto(request, (self.address, CITRA_PORT))
|
||||
|
||||
raw_reply = self.socket.recv(MAX_PACKET_SIZE)
|
||||
reply_data = self._read_and_validate_header(raw_reply, request_id, RequestType.ProcessList)
|
||||
|
||||
if reply_data:
|
||||
read_count = struct.unpack("I", reply_data[0:4])[0]
|
||||
reply_data = reply_data[4:]
|
||||
if read_count == 0:
|
||||
break
|
||||
read_processes += read_count
|
||||
for i in range(read_count):
|
||||
proc_data = reply_data[i * 0x14 : (i + 1) * 0x14]
|
||||
proc_id, title_id, proc_name = struct.unpack("<IQ8s", proc_data)
|
||||
proc_name = proc_name.rstrip(b"\x00").decode("ascii")
|
||||
processes[proc_id] = (title_id, proc_name)
|
||||
else:
|
||||
break
|
||||
return processes
|
||||
|
||||
def get_process(self):
|
||||
request_data = struct.pack("II", 0, 0)
|
||||
request, request_id = self._generate_header(RequestType.SetGetProcess, len(request_data))
|
||||
request += request_data
|
||||
self.socket.sendto(request, (self.address, CITRA_PORT))
|
||||
|
||||
raw_reply = self.socket.recv(MAX_PACKET_SIZE)
|
||||
reply_data = self._read_and_validate_header(raw_reply, request_id, RequestType.SetGetProcess)
|
||||
|
||||
if reply_data:
|
||||
return struct.unpack("I", reply_data)[0]
|
||||
else:
|
||||
return None
|
||||
|
||||
def set_process(self, process_id):
|
||||
request_data = struct.pack("II", 1, process_id)
|
||||
request, request_id = self._generate_header(RequestType.SetGetProcess, len(request_data))
|
||||
request += request_data
|
||||
self.socket.sendto(request, (self.address, CITRA_PORT))
|
||||
|
||||
self.socket.recv(MAX_PACKET_SIZE)
|
||||
|
||||
def read_memory(self, read_address, read_size):
|
||||
"""
|
||||
>>> c.read_memory(0x100000, 4)
|
||||
|
|
2
externals/discord-rpc
vendored
|
@ -1 +1 @@
|
|||
Subproject commit cb50201fc09290cd078c7ab27917504491f7f96a
|
||||
Subproject commit 54eb03c20351f94850bfca3955cb87465a860ef6
|
2
externals/sdl2/SDL
vendored
|
@ -1 +1 @@
|
|||
Subproject commit 2359383fc187386204c3bb22de89655a494cd128
|
||||
Subproject commit 9e079fe9c7931738ed63d257b1d7fb8a07b66824
|
|
@ -199,10 +199,6 @@ if (ENABLE_ROOM)
|
|||
add_subdirectory(citra_room)
|
||||
endif()
|
||||
|
||||
if (ENABLE_ROOM_STANDALONE)
|
||||
add_subdirectory(citra_room_standalone)
|
||||
endif()
|
||||
|
||||
if (ANDROID)
|
||||
add_subdirectory(android/app/src/main/jni)
|
||||
target_include_directories(citra-android PRIVATE android/app/src/main)
|
||||
|
|
|
@ -186,10 +186,6 @@ object NativeLibrary {
|
|||
|
||||
external fun unlinkConsole()
|
||||
|
||||
external fun setTemporaryFrameLimit(speed: Double)
|
||||
|
||||
external fun disableTemporaryFrameLimit()
|
||||
|
||||
private var coreErrorAlertResult = false
|
||||
private val coreErrorAlertLock = Object()
|
||||
|
||||
|
@ -777,7 +773,6 @@ object NativeLibrary {
|
|||
const val BUTTON_DEBUG = 781
|
||||
const val BUTTON_GPIO14 = 782
|
||||
const val BUTTON_SWAP = 800
|
||||
const val BUTTON_TURBO = 801
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// Copyright Citra Emulator Project / Azahar Emulator Project
|
||||
// Copyright Citra Emulator Project / Lime3DS Emulator Project
|
||||
// Licensed under GPLv2 or any later version
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
|
@ -15,7 +15,6 @@ import android.os.Bundle
|
|||
import android.view.InputDevice
|
||||
import android.view.KeyEvent
|
||||
import android.view.MotionEvent
|
||||
import android.view.Window
|
||||
import android.view.WindowManager
|
||||
import android.widget.Toast
|
||||
import androidx.activity.result.contract.ActivityResultContracts
|
||||
|
@ -45,7 +44,6 @@ import org.citra.citra_emu.utils.FileBrowserHelper
|
|||
import org.citra.citra_emu.utils.EmulationLifecycleUtil
|
||||
import org.citra.citra_emu.utils.EmulationMenuSettings
|
||||
import org.citra.citra_emu.utils.ThemeUtil
|
||||
import org.citra.citra_emu.utils.TurboHelper
|
||||
import org.citra.citra_emu.viewmodel.EmulationViewModel
|
||||
|
||||
class EmulationActivity : AppCompatActivity() {
|
||||
|
@ -53,7 +51,7 @@ class EmulationActivity : AppCompatActivity() {
|
|||
get() = PreferenceManager.getDefaultSharedPreferences(CitraApplication.appContext)
|
||||
var isActivityRecreated = false
|
||||
private val emulationViewModel: EmulationViewModel by viewModels()
|
||||
val settingsViewModel: SettingsViewModel by viewModels()
|
||||
private val settingsViewModel: SettingsViewModel by viewModels()
|
||||
|
||||
private lateinit var binding: ActivityEmulationBinding
|
||||
private lateinit var screenAdjustmentUtil: ScreenAdjustmentUtil
|
||||
|
@ -69,8 +67,6 @@ class EmulationActivity : AppCompatActivity() {
|
|||
private var isEmulationRunning: Boolean = false
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
requestWindowFeature(Window.FEATURE_NO_TITLE)
|
||||
|
||||
ThemeUtil.setTheme(this)
|
||||
|
||||
settingsViewModel.settings.loadSettings()
|
||||
|
@ -196,16 +192,9 @@ class EmulationActivity : AppCompatActivity() {
|
|||
}
|
||||
|
||||
private fun enableFullscreenImmersive() {
|
||||
val attributes = window.attributes
|
||||
|
||||
attributes.layoutInDisplayCutoutMode =
|
||||
if (BooleanSetting.EXPAND_TO_CUTOUT_AREA.boolean) {
|
||||
WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES
|
||||
} else {
|
||||
// TODO: Remove this once we properly account for display insets in the input overlay
|
||||
window.attributes.layoutInDisplayCutoutMode =
|
||||
WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER
|
||||
}
|
||||
|
||||
window.attributes = attributes
|
||||
|
||||
WindowCompat.setDecorFitsSystemWindows(window, false)
|
||||
|
||||
|
|
|
@ -1,11 +1,10 @@
|
|||
// Copyright Citra Emulator Project / Azahar Emulator Project
|
||||
// Copyright Citra Emulator Project / Lime3DS Emulator Project
|
||||
// Licensed under GPLv2 or any later version
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
package org.citra.citra_emu.adapters
|
||||
|
||||
import android.graphics.drawable.Icon
|
||||
import android.content.Intent
|
||||
import android.net.Uri
|
||||
import android.os.SystemClock
|
||||
import android.text.TextUtils
|
||||
|
@ -29,7 +28,6 @@ import androidx.recyclerview.widget.AsyncDifferConfig
|
|||
import androidx.recyclerview.widget.DiffUtil
|
||||
import androidx.recyclerview.widget.ListAdapter
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import android.widget.PopupMenu
|
||||
import com.google.android.material.bottomsheet.BottomSheetBehavior
|
||||
import com.google.android.material.bottomsheet.BottomSheetDialog
|
||||
import com.google.android.material.button.MaterialButton
|
||||
|
@ -46,9 +44,7 @@ import org.citra.citra_emu.databinding.CardGameBinding
|
|||
import org.citra.citra_emu.features.cheats.ui.CheatsFragmentDirections
|
||||
import org.citra.citra_emu.features.settings.ui.SettingsActivity
|
||||
import org.citra.citra_emu.features.settings.utils.SettingsFile
|
||||
import org.citra.citra_emu.fragments.IndeterminateProgressDialogFragment
|
||||
import org.citra.citra_emu.model.Game
|
||||
import org.citra.citra_emu.utils.FileUtil
|
||||
import org.citra.citra_emu.utils.GameIconUtils
|
||||
import org.citra.citra_emu.viewmodel.GamesViewModel
|
||||
|
||||
|
@ -207,117 +203,6 @@ class GameAdapter(private val activity: AppCompatActivity, private val inflater:
|
|||
}
|
||||
}
|
||||
|
||||
private data class GameDirectories(
|
||||
val gameDir: String,
|
||||
val saveDir: String,
|
||||
val modsDir: String,
|
||||
val texturesDir: String,
|
||||
val appDir: String,
|
||||
val dlcDir: String,
|
||||
val updatesDir: String,
|
||||
val extraDir: String
|
||||
)
|
||||
private fun getGameDirectories(game: Game): GameDirectories {
|
||||
val basePath = "sdmc/Nintendo 3DS/00000000000000000000000000000000/00000000000000000000000000000000"
|
||||
return GameDirectories(
|
||||
gameDir = game.path.substringBeforeLast("/"),
|
||||
saveDir = basePath + "/title/${String.format("%016x", game.titleId).lowercase().substring(0, 8)}/${String.format("%016x", game.titleId).lowercase().substring(8)}/data/00000001",
|
||||
modsDir = "load/mods/${String.format("%016X", game.titleId)}",
|
||||
texturesDir = "load/textures/${String.format("%016X", game.titleId)}",
|
||||
appDir = game.path.substringBeforeLast("/").split("/").filter { it.isNotEmpty() }.joinToString("/"),
|
||||
dlcDir = basePath + "/title/0004008c/${String.format("%016x", game.titleId).lowercase().substring(8)}/content",
|
||||
updatesDir = basePath + "/title/0004000e/${String.format("%016x", game.titleId).lowercase().substring(8)}/content",
|
||||
extraDir = basePath + "/extdata/00000000/${String.format("%016X", game.titleId).substring(8, 14).padStart(8, '0')}"
|
||||
)
|
||||
}
|
||||
|
||||
private fun showOpenContextMenu(view: View, game: Game) {
|
||||
val dirs = getGameDirectories(game)
|
||||
|
||||
val popup = PopupMenu(view.context, view).apply {
|
||||
menuInflater.inflate(R.menu.game_context_menu_open, menu)
|
||||
listOf(
|
||||
R.id.game_context_open_app to dirs.appDir,
|
||||
R.id.game_context_open_save_dir to dirs.saveDir,
|
||||
R.id.game_context_open_updates to dirs.updatesDir,
|
||||
R.id.game_context_open_dlc to dirs.dlcDir,
|
||||
R.id.game_context_open_extra to dirs.extraDir
|
||||
).forEach { (id, dir) ->
|
||||
menu.findItem(id)?.isEnabled =
|
||||
CitraApplication.documentsTree.folderUriHelper(dir)?.let {
|
||||
DocumentFile.fromTreeUri(view.context, it)?.exists()
|
||||
} ?: false
|
||||
}
|
||||
}
|
||||
|
||||
popup.setOnMenuItemClickListener { menuItem ->
|
||||
val intent = Intent(Intent.ACTION_VIEW)
|
||||
.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
|
||||
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
|
||||
.setType("*/*")
|
||||
|
||||
val uri = when (menuItem.itemId) {
|
||||
R.id.game_context_open_app -> CitraApplication.documentsTree.folderUriHelper(dirs.appDir)
|
||||
R.id.game_context_open_save_dir -> CitraApplication.documentsTree.folderUriHelper(dirs.saveDir)
|
||||
R.id.game_context_open_updates -> CitraApplication.documentsTree.folderUriHelper(dirs.updatesDir)
|
||||
R.id.game_context_open_dlc -> CitraApplication.documentsTree.folderUriHelper(dirs.dlcDir)
|
||||
R.id.game_context_open_extra -> CitraApplication.documentsTree.folderUriHelper(dirs.extraDir)
|
||||
R.id.game_context_open_textures -> CitraApplication.documentsTree.folderUriHelper(dirs.texturesDir, true)
|
||||
R.id.game_context_open_mods -> CitraApplication.documentsTree.folderUriHelper(dirs.modsDir, true)
|
||||
else -> null
|
||||
}
|
||||
|
||||
uri?.let {
|
||||
intent.data = it
|
||||
view.context.startActivity(intent)
|
||||
true
|
||||
} ?: false
|
||||
}
|
||||
|
||||
popup.show()
|
||||
}
|
||||
|
||||
private fun showUninstallContextMenu(view: View, game: Game, bottomSheetDialog: BottomSheetDialog) {
|
||||
val dirs = getGameDirectories(game)
|
||||
val popup = PopupMenu(view.context, view).apply {
|
||||
menuInflater.inflate(R.menu.game_context_menu_uninstall, menu)
|
||||
listOf(
|
||||
R.id.game_context_uninstall to dirs.gameDir,
|
||||
R.id.game_context_uninstall_dlc to dirs.dlcDir,
|
||||
R.id.game_context_uninstall_updates to dirs.updatesDir
|
||||
).forEach { (id, dir) ->
|
||||
menu.findItem(id)?.isEnabled =
|
||||
CitraApplication.documentsTree.folderUriHelper(dir)?.let {
|
||||
DocumentFile.fromTreeUri(view.context, it)?.exists()
|
||||
} ?: false
|
||||
}
|
||||
}
|
||||
|
||||
popup.setOnMenuItemClickListener { menuItem ->
|
||||
val uninstallAction: () -> Unit = {
|
||||
when (menuItem.itemId) {
|
||||
R.id.game_context_uninstall -> CitraApplication.documentsTree.deleteDocument(dirs.gameDir)
|
||||
R.id.game_context_uninstall_dlc -> FileUtil.deleteDocument(CitraApplication.documentsTree.folderUriHelper(dirs.dlcDir)
|
||||
.toString())
|
||||
R.id.game_context_uninstall_updates -> FileUtil.deleteDocument(CitraApplication.documentsTree.folderUriHelper(dirs.updatesDir)
|
||||
.toString())
|
||||
}
|
||||
ViewModelProvider(activity)[GamesViewModel::class.java].reloadGames(true)
|
||||
bottomSheetDialog.dismiss()
|
||||
}
|
||||
|
||||
if (menuItem.itemId in listOf(R.id.game_context_uninstall, R.id.game_context_uninstall_dlc, R.id.game_context_uninstall_updates)) {
|
||||
IndeterminateProgressDialogFragment.newInstance(activity, R.string.uninstalling, false, uninstallAction)
|
||||
.show(activity.supportFragmentManager, IndeterminateProgressDialogFragment.TAG)
|
||||
true
|
||||
} else {
|
||||
false
|
||||
}
|
||||
}
|
||||
|
||||
popup.show()
|
||||
}
|
||||
|
||||
private fun showAboutGameDialog(context: Context, game: Game, holder: GameViewHolder, view: View) {
|
||||
val bottomSheetView = inflater.inflate(R.layout.dialog_about_game, null)
|
||||
|
||||
|
@ -360,14 +245,6 @@ class GameAdapter(private val activity: AppCompatActivity, private val inflater:
|
|||
bottomSheetDialog.dismiss()
|
||||
}
|
||||
|
||||
bottomSheetView.findViewById<MaterialButton>(R.id.menu_button_open).setOnClickListener {
|
||||
showOpenContextMenu(it, game)
|
||||
}
|
||||
|
||||
bottomSheetView.findViewById<MaterialButton>(R.id.menu_button_uninstall).setOnClickListener {
|
||||
showUninstallContextMenu(it, game, bottomSheetDialog)
|
||||
}
|
||||
|
||||
val bottomSheetBehavior = bottomSheetDialog.getBehavior()
|
||||
bottomSheetBehavior.skipCollapsed = true
|
||||
bottomSheetBehavior.state = BottomSheetBehavior.STATE_EXPANDED
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// Copyright Citra Emulator Project / Azahar Emulator Project
|
||||
// Copyright 2023 Citra Emulator Project
|
||||
// Licensed under GPLv2 or any later version
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
|
@ -41,8 +41,7 @@ enum class SmallScreenPosition(val int: Int) {
|
|||
enum class PortraitScreenLayout(val int: Int) {
|
||||
// These must match what is defined in src/common/settings.h
|
||||
TOP_FULL_WIDTH(0),
|
||||
CUSTOM_PORTRAIT_LAYOUT(1),
|
||||
ORIGINAL(2);
|
||||
CUSTOM_PORTRAIT_LAYOUT(1);
|
||||
|
||||
companion object {
|
||||
fun from(int: Int): PortraitScreenLayout {
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// Copyright Citra Emulator Project / Azahar Emulator Project
|
||||
// Copyright 2023 Citra Emulator Project
|
||||
// Licensed under GPLv2 or any later version
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
|
@ -10,6 +10,5 @@ enum class Hotkey(val button: Int) {
|
|||
CLOSE_GAME(10003),
|
||||
PAUSE_OR_RESUME(10004),
|
||||
QUICKSAVE(10005),
|
||||
QUICKLOAD(10006),
|
||||
TURBO_LIMIT(10007);
|
||||
QUICKLOAD(10006);
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// Copyright Citra Emulator Project / Azahar Emulator Project
|
||||
// Copyright 2023 Citra Emulator Project
|
||||
// Licensed under GPLv2 or any later version
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
|
@ -9,14 +9,11 @@ import android.widget.Toast
|
|||
import org.citra.citra_emu.NativeLibrary
|
||||
import org.citra.citra_emu.R
|
||||
import org.citra.citra_emu.utils.EmulationLifecycleUtil
|
||||
import org.citra.citra_emu.utils.TurboHelper
|
||||
import org.citra.citra_emu.display.ScreenAdjustmentUtil
|
||||
|
||||
class HotkeyUtility(
|
||||
private val screenAdjustmentUtil: ScreenAdjustmentUtil,
|
||||
private val context: Context) {
|
||||
class HotkeyUtility(private val screenAdjustmentUtil: ScreenAdjustmentUtil, private val context: Context) {
|
||||
|
||||
private val hotkeyButtons = Hotkey.entries.map { it.button }
|
||||
val hotkeyButtons = Hotkey.entries.map { it.button }
|
||||
|
||||
fun handleHotkey(bindedButton: Int): Boolean {
|
||||
if(hotkeyButtons.contains(bindedButton)) {
|
||||
|
@ -25,17 +22,16 @@ class HotkeyUtility(
|
|||
Hotkey.CYCLE_LAYOUT.button -> screenAdjustmentUtil.cycleLayouts()
|
||||
Hotkey.CLOSE_GAME.button -> EmulationLifecycleUtil.closeGame()
|
||||
Hotkey.PAUSE_OR_RESUME.button -> EmulationLifecycleUtil.pauseOrResume()
|
||||
Hotkey.TURBO_LIMIT.button -> TurboHelper.setTurboEnabled(!TurboHelper.isTurboSpeedEnabled())
|
||||
Hotkey.QUICKSAVE.button -> {
|
||||
NativeLibrary.saveState(NativeLibrary.QUICKSAVE_SLOT)
|
||||
Toast.makeText(context,
|
||||
context.getString(R.string.saving),
|
||||
context.getString(R.string.quicksave_saving),
|
||||
Toast.LENGTH_SHORT).show()
|
||||
}
|
||||
Hotkey.QUICKLOAD.button -> {
|
||||
val wasLoaded = NativeLibrary.loadStateIfAvailable(NativeLibrary.QUICKSAVE_SLOT)
|
||||
val stringRes = if(wasLoaded) {
|
||||
R.string.loading
|
||||
R.string.quickload_loading
|
||||
} else {
|
||||
R.string.quickload_not_found
|
||||
}
|
||||
|
|
|
@ -9,7 +9,6 @@ enum class BooleanSetting(
|
|||
override val section: String,
|
||||
override val defaultValue: Boolean
|
||||
) : AbstractBooleanSetting {
|
||||
EXPAND_TO_CUTOUT_AREA("expand_to_cutout_area", Settings.SECTION_LAYOUT, false),
|
||||
SPIRV_SHADER_GEN("spirv_shader_gen", Settings.SECTION_RENDERER, true),
|
||||
ASYNC_SHADERS("async_shader_compilation", Settings.SECTION_RENDERER, false),
|
||||
PLUGIN_LOADER("plugin_loader", Settings.SECTION_SYSTEM, false),
|
||||
|
|
|
@ -33,7 +33,6 @@ enum class IntSetting(
|
|||
LANDSCAPE_BOTTOM_Y("custom_bottom_y",Settings.SECTION_LAYOUT,480),
|
||||
LANDSCAPE_BOTTOM_WIDTH("custom_bottom_width",Settings.SECTION_LAYOUT,640),
|
||||
LANDSCAPE_BOTTOM_HEIGHT("custom_bottom_height",Settings.SECTION_LAYOUT,480),
|
||||
SCREEN_GAP("screen_gap",Settings.SECTION_LAYOUT,0),
|
||||
PORTRAIT_SCREEN_LAYOUT("portrait_layout_option",Settings.SECTION_LAYOUT,0),
|
||||
PORTRAIT_TOP_X("custom_portrait_top_x",Settings.SECTION_LAYOUT,0),
|
||||
PORTRAIT_TOP_Y("custom_portrait_top_y",Settings.SECTION_LAYOUT,0),
|
||||
|
@ -66,9 +65,7 @@ enum class IntSetting(
|
|||
DELAY_RENDER_THREAD_US("delay_game_render_thread_us", Settings.SECTION_RENDERER, 0),
|
||||
USE_ARTIC_BASE_CONTROLLER("use_artic_base_controller", Settings.SECTION_CONTROLS, 0),
|
||||
ORIENTATION_OPTION("screen_orientation", Settings.SECTION_LAYOUT, 2),
|
||||
DISABLE_RIGHT_EYE_RENDER("disable_right_eye_render", Settings.SECTION_RENDERER, 0),
|
||||
TURBO_LIMIT("turbo_limit", Settings.SECTION_CORE, 200);
|
||||
|
||||
DISABLE_RIGHT_EYE_RENDER("disable_right_eye_render", Settings.SECTION_RENDERER, 0);
|
||||
override var int: Int = defaultValue
|
||||
|
||||
override val valueAsString: String
|
||||
|
@ -97,7 +94,7 @@ enum class IntSetting(
|
|||
ASYNC_CUSTOM_LOADING,
|
||||
AUDIO_INPUT_TYPE,
|
||||
USE_ARTIC_BASE_CONTROLLER,
|
||||
SHADERS_ACCURATE_MUL
|
||||
SHADERS_ACCURATE_MUL,
|
||||
)
|
||||
|
||||
fun from(key: String): IntSetting? = IntSetting.values().firstOrNull { it.key == key }
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// Copyright Citra Emulator Project / Azahar Emulator Project
|
||||
// Copyright 2023 Citra Emulator Project
|
||||
// Licensed under GPLv2 or any later version
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
|
@ -139,7 +139,6 @@ class Settings {
|
|||
const val HOTKEY_PAUSE_OR_RESUME = "hotkey_pause_or_resume_game"
|
||||
const val HOTKEY_QUICKSAVE = "hotkey_quickload"
|
||||
const val HOTKEY_QUICKlOAD = "hotkey_quickpause"
|
||||
const val HOTKEY_TURBO_LIMIT = "hotkey_turbo_limit"
|
||||
|
||||
val buttonKeys = listOf(
|
||||
KEY_BUTTON_A,
|
||||
|
@ -205,8 +204,7 @@ class Settings {
|
|||
HOTKEY_CLOSE_GAME,
|
||||
HOTKEY_PAUSE_OR_RESUME,
|
||||
HOTKEY_QUICKSAVE,
|
||||
HOTKEY_QUICKlOAD,
|
||||
HOTKEY_TURBO_LIMIT
|
||||
HOTKEY_QUICKlOAD
|
||||
)
|
||||
val hotkeyTitles = listOf(
|
||||
R.string.emulation_swap_screens,
|
||||
|
@ -215,7 +213,6 @@ class Settings {
|
|||
R.string.emulation_toggle_pause,
|
||||
R.string.emulation_quicksave,
|
||||
R.string.emulation_quickload,
|
||||
R.string.turbo_limit_hotkey
|
||||
)
|
||||
|
||||
const val PREF_FIRST_APP_LAUNCH = "FirstApplicationLaunch"
|
||||
|
|
|
@ -12,8 +12,7 @@ class DateTimeSetting(
|
|||
titleId: Int,
|
||||
descriptionId: Int,
|
||||
val key: String? = null,
|
||||
private val defaultValue: String? = null,
|
||||
override var isEnabled: Boolean = true
|
||||
private val defaultValue: String? = null
|
||||
) : SettingsItem(setting, titleId, descriptionId) {
|
||||
override val type = TYPE_DATETIME_SETTING
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// Copyright Citra Emulator Project / Azahar Emulator Project
|
||||
// Copyright 2023 Citra Emulator Project
|
||||
// Licensed under GPLv2 or any later version
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
|
@ -133,7 +133,6 @@ class InputBindingSetting(
|
|||
Settings.HOTKEY_PAUSE_OR_RESUME -> Hotkey.PAUSE_OR_RESUME.button
|
||||
Settings.HOTKEY_QUICKSAVE -> Hotkey.QUICKSAVE.button
|
||||
Settings.HOTKEY_QUICKlOAD -> Hotkey.QUICKLOAD.button
|
||||
Settings.HOTKEY_TURBO_LIMIT -> Hotkey.TURBO_LIMIT.button
|
||||
else -> -1
|
||||
}
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// Copyright Citra Emulator Project / Azahar Emulator Project
|
||||
// Copyright Citra Emulator Project / Lime3DS Emulator Project
|
||||
// Licensed under GPLv2 or any later version
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
|
@ -28,13 +28,6 @@ abstract class SettingsItem(
|
|||
return setting?.isRuntimeEditable ?: false
|
||||
}
|
||||
|
||||
open var isEnabled: Boolean = true
|
||||
|
||||
val isActive: Boolean
|
||||
get() {
|
||||
return this.isEditable && this.isEnabled
|
||||
}
|
||||
|
||||
companion object {
|
||||
const val TYPE_HEADER = 0
|
||||
const val TYPE_SWITCH = 1
|
||||
|
|
|
@ -15,8 +15,7 @@ class SingleChoiceSetting(
|
|||
val choicesId: Int,
|
||||
val valuesId: Int,
|
||||
val key: String? = null,
|
||||
val defaultValue: Int? = null,
|
||||
override var isEnabled: Boolean = true
|
||||
val defaultValue: Int? = null
|
||||
) : SettingsItem(setting, titleId, descriptionId) {
|
||||
override val type = TYPE_SINGLE_CHOICE
|
||||
|
||||
|
|
|
@ -20,8 +20,7 @@ class SliderSetting(
|
|||
val max: Int,
|
||||
val units: String,
|
||||
val key: String? = null,
|
||||
val defaultValue: Float? = null,
|
||||
override var isEnabled: Boolean = true
|
||||
val defaultValue: Float? = null
|
||||
) : SettingsItem(setting, titleId, descriptionId) {
|
||||
override val type = TYPE_SLIDER
|
||||
val selectedFloat: Float
|
||||
|
|
|
@ -12,8 +12,7 @@ class StringInputSetting(
|
|||
titleId: Int,
|
||||
descriptionId: Int,
|
||||
val defaultValue: String,
|
||||
val characterLimit: Int = 0,
|
||||
override var isEnabled: Boolean = true
|
||||
val characterLimit: Int = 0
|
||||
) : SettingsItem(setting, titleId, descriptionId) {
|
||||
override val type = TYPE_STRING_INPUT
|
||||
|
||||
|
|
|
@ -15,8 +15,7 @@ class StringSingleChoiceSetting(
|
|||
val choices: Array<String>,
|
||||
val values: Array<String>?,
|
||||
val key: String? = null,
|
||||
private val defaultValue: String? = null,
|
||||
override var isEnabled: Boolean = true
|
||||
private val defaultValue: String? = null
|
||||
) : SettingsItem(setting, titleId, descriptionId) {
|
||||
override val type = TYPE_STRING_SINGLE_CHOICE
|
||||
|
||||
|
|
|
@ -13,8 +13,7 @@ class SwitchSetting(
|
|||
titleId: Int,
|
||||
descriptionId: Int,
|
||||
val key: String? = null,
|
||||
val defaultValue: Any? = null,
|
||||
override var isEnabled: Boolean = true
|
||||
val defaultValue: Any? = null
|
||||
) : SettingsItem(setting, titleId, descriptionId) {
|
||||
override val type = TYPE_SWITCH
|
||||
|
||||
|
|
|
@ -12,7 +12,6 @@ import org.citra.citra_emu.features.settings.model.Settings
|
|||
import org.citra.citra_emu.utils.SystemSaveGame
|
||||
import org.citra.citra_emu.utils.DirectoryInitialization
|
||||
import org.citra.citra_emu.utils.Log
|
||||
import org.citra.citra_emu.utils.TurboHelper
|
||||
|
||||
class SettingsActivityPresenter(private val activityView: SettingsActivityView) {
|
||||
val settings: Settings get() = activityView.settings
|
||||
|
@ -67,7 +66,6 @@ class SettingsActivityPresenter(private val activityView: SettingsActivityView)
|
|||
//added to ensure that layout changes take effect as soon as settings window closes
|
||||
NativeLibrary.reloadSettings()
|
||||
NativeLibrary.updateFramebuffer(NativeLibrary.isPortraitMode)
|
||||
TurboHelper.reloadTurbo() // TODO: Can this go someone else? -OS
|
||||
}
|
||||
NativeLibrary.reloadSettings()
|
||||
}
|
||||
|
|
|
@ -7,6 +7,7 @@ package org.citra.citra_emu.features.settings.ui
|
|||
import android.annotation.SuppressLint
|
||||
import android.content.Context
|
||||
import android.content.DialogInterface
|
||||
import android.graphics.Color
|
||||
import android.icu.util.Calendar
|
||||
import android.icu.util.TimeZone
|
||||
import android.text.Editable
|
||||
|
@ -16,11 +17,11 @@ import android.text.TextWatcher
|
|||
import android.text.format.DateFormat
|
||||
import android.view.LayoutInflater
|
||||
import android.view.ViewGroup
|
||||
import android.widget.EditText
|
||||
import androidx.appcompat.app.AlertDialog
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.core.widget.doOnTextChanged
|
||||
import androidx.fragment.app.FragmentActivity
|
||||
import androidx.recyclerview.widget.DiffUtil
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.google.android.material.datepicker.MaterialDatePicker
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||
|
@ -65,6 +66,7 @@ import org.citra.citra_emu.features.settings.ui.viewholder.SwitchSettingViewHold
|
|||
import org.citra.citra_emu.fragments.MessageDialogFragment
|
||||
import org.citra.citra_emu.fragments.MotionBottomSheetDialogFragment
|
||||
import org.citra.citra_emu.utils.SystemSaveGame
|
||||
import java.lang.IllegalStateException
|
||||
import java.lang.NumberFormatException
|
||||
import java.text.SimpleDateFormat
|
||||
import kotlin.math.roundToInt
|
||||
|
@ -151,71 +153,15 @@ class SettingsAdapter(
|
|||
return getItem(position)?.type ?: -1
|
||||
}
|
||||
|
||||
fun setSettingsList(newSettings: ArrayList<SettingsItem>?) {
|
||||
if (settings == null) {
|
||||
settings = newSettings ?: arrayListOf()
|
||||
fun setSettingsList(settings: ArrayList<SettingsItem>?) {
|
||||
this.settings = settings ?: arrayListOf()
|
||||
notifyDataSetChanged()
|
||||
return
|
||||
}
|
||||
|
||||
val oldSettings = settings
|
||||
val diffResult = DiffUtil.calculateDiff(object : DiffUtil.Callback() {
|
||||
override fun getOldListSize() = oldSettings?.size ?: 0
|
||||
override fun getNewListSize() = newSettings?.size ?: 0
|
||||
|
||||
override fun areItemsTheSame(oldItemPosition: Int, newItemPosition: Int): Boolean {
|
||||
val oldItem = oldSettings?.get(oldItemPosition)?.setting
|
||||
val newItem = newSettings?.get(newItemPosition)?.setting
|
||||
return oldItem?.key == newItem?.key
|
||||
}
|
||||
|
||||
override fun areContentsTheSame(oldItemPosition: Int, newItemPosition: Int): Boolean {
|
||||
val oldItem = oldSettings?.get(oldItemPosition)
|
||||
val newItem = newSettings?.get(newItemPosition)
|
||||
|
||||
if (oldItem == null || newItem == null || oldItem.type != newItem.type) {
|
||||
return false
|
||||
}
|
||||
|
||||
return when (oldItem.type) {
|
||||
SettingsItem.TYPE_SLIDER -> {
|
||||
(oldItem as SliderSetting).isEnabled == (newItem as SliderSetting).isEnabled
|
||||
}
|
||||
SettingsItem.TYPE_SWITCH -> {
|
||||
(oldItem as SwitchSetting).isEnabled == (newItem as SwitchSetting).isEnabled
|
||||
}
|
||||
SettingsItem.TYPE_SINGLE_CHOICE -> {
|
||||
(oldItem as SingleChoiceSetting).isEnabled == (newItem as SingleChoiceSetting).isEnabled
|
||||
}
|
||||
SettingsItem.TYPE_DATETIME_SETTING -> {
|
||||
(oldItem as DateTimeSetting).isEnabled == (newItem as DateTimeSetting).isEnabled
|
||||
}
|
||||
SettingsItem.TYPE_STRING_SINGLE_CHOICE -> {
|
||||
(oldItem as StringSingleChoiceSetting).isEnabled == (newItem as StringSingleChoiceSetting).isEnabled
|
||||
}
|
||||
SettingsItem.TYPE_STRING_INPUT -> {
|
||||
(oldItem as StringInputSetting).isEnabled == (newItem as StringInputSetting).isEnabled
|
||||
}
|
||||
else -> {
|
||||
oldItem == newItem
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
settings = newSettings ?: arrayListOf()
|
||||
diffResult.dispatchUpdatesTo(this)
|
||||
}
|
||||
|
||||
fun onBooleanClick(item: SwitchSetting, position: Int, checked: Boolean) {
|
||||
val setting = item.setChecked(checked)
|
||||
fragmentView.putSetting(setting)
|
||||
fragmentView.onSettingChanged()
|
||||
|
||||
// If statement is required otherwise the app will crash on activity recreate ex. theme settings
|
||||
if (fragmentView.activityView != null)
|
||||
// Reload the settings list to update the UI
|
||||
fragmentView.loadSettingsList()
|
||||
}
|
||||
|
||||
private fun onSingleChoiceClick(item: SingleChoiceSetting) {
|
||||
|
@ -301,7 +247,6 @@ class SettingsAdapter(
|
|||
notifyItemChanged(clickedPosition)
|
||||
val setting = item.setSelectedValue(rtcString)
|
||||
fragmentView.putSetting(setting)
|
||||
fragmentView.loadSettingsList()
|
||||
clickedItem = null
|
||||
}
|
||||
datePicker.show(
|
||||
|
@ -457,7 +402,6 @@ class SettingsAdapter(
|
|||
else -> throw IllegalStateException("Unrecognized type used for SingleChoiceSetting!")
|
||||
}
|
||||
fragmentView?.putSetting(setting)
|
||||
fragmentView.loadSettingsList()
|
||||
closeDialog()
|
||||
}
|
||||
}
|
||||
|
@ -481,7 +425,6 @@ class SettingsAdapter(
|
|||
}
|
||||
|
||||
fragmentView?.putSetting(setting)
|
||||
fragmentView.loadSettingsList()
|
||||
closeDialog()
|
||||
}
|
||||
}
|
||||
|
@ -504,7 +447,6 @@ class SettingsAdapter(
|
|||
fragmentView?.putSetting(setting)
|
||||
}
|
||||
}
|
||||
fragmentView.loadSettingsList()
|
||||
closeDialog()
|
||||
}
|
||||
}
|
||||
|
@ -517,7 +459,6 @@ class SettingsAdapter(
|
|||
}
|
||||
val setting = it.setSelectedValue(textInputValue ?: "")
|
||||
fragmentView?.putSetting(setting)
|
||||
fragmentView.loadSettingsList()
|
||||
closeDialog()
|
||||
}
|
||||
}
|
||||
|
@ -547,7 +488,6 @@ class SettingsAdapter(
|
|||
}
|
||||
notifyItemChanged(position)
|
||||
fragmentView.onSettingChanged()
|
||||
fragmentView.loadSettingsList()
|
||||
}
|
||||
.setNegativeButton(android.R.string.cancel, null)
|
||||
.show()
|
||||
|
@ -555,19 +495,10 @@ class SettingsAdapter(
|
|||
return true
|
||||
}
|
||||
|
||||
fun onClickDisabledSetting(isRuntimeDisabled: Boolean) {
|
||||
val titleId = if (isRuntimeDisabled)
|
||||
R.string.setting_not_editable
|
||||
else
|
||||
R.string.setting_disabled
|
||||
val messageId = if (isRuntimeDisabled)
|
||||
R.string.setting_not_editable_description
|
||||
else
|
||||
R.string.setting_disabled_description
|
||||
|
||||
fun onClickDisabledSetting() {
|
||||
MessageDialogFragment.newInstance(
|
||||
titleId,
|
||||
messageId
|
||||
R.string.setting_not_editable,
|
||||
R.string.setting_not_editable_description
|
||||
).show((fragmentView as SettingsFragment).childFragmentManager, MessageDialogFragment.TAG)
|
||||
}
|
||||
|
||||
|
|
|
@ -237,18 +237,6 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView)
|
|||
IntSetting.FRAME_LIMIT.defaultValue.toFloat()
|
||||
)
|
||||
)
|
||||
add(
|
||||
SliderSetting(
|
||||
IntSetting.TURBO_LIMIT,
|
||||
R.string.turbo_limit,
|
||||
R.string.turbo_limit_description,
|
||||
100,
|
||||
400,
|
||||
"%",
|
||||
IntSetting.TURBO_LIMIT.key,
|
||||
IntSetting.TURBO_LIMIT.defaultValue.toFloat()
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -538,7 +526,7 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView)
|
|||
DateTimeSetting(
|
||||
StringSetting.INIT_TIME,
|
||||
R.string.simulated_clock,
|
||||
R.string.simulated_clock_description,
|
||||
R.string.init_time_description,
|
||||
StringSetting.INIT_TIME.key,
|
||||
StringSetting.INIT_TIME.defaultValue
|
||||
)
|
||||
|
@ -926,7 +914,7 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView)
|
|||
R.string.factor3d,
|
||||
R.string.factor3d_description,
|
||||
0,
|
||||
255,
|
||||
100,
|
||||
"%",
|
||||
IntSetting.STEREOSCOPIC_3D_DEPTH.key,
|
||||
IntSetting.STEREOSCOPIC_3D_DEPTH.defaultValue.toFloat()
|
||||
|
@ -1050,15 +1038,6 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView)
|
|||
IntSetting.ORIENTATION_OPTION.defaultValue
|
||||
)
|
||||
)
|
||||
add(
|
||||
SwitchSetting(
|
||||
BooleanSetting.EXPAND_TO_CUTOUT_AREA,
|
||||
R.string.expand_to_cutout_area,
|
||||
R.string.expand_to_cutout_area_description,
|
||||
BooleanSetting.EXPAND_TO_CUTOUT_AREA.key,
|
||||
BooleanSetting.EXPAND_TO_CUTOUT_AREA.defaultValue
|
||||
)
|
||||
)
|
||||
add(
|
||||
SingleChoiceSetting(
|
||||
IntSetting.SCREEN_LAYOUT,
|
||||
|
@ -1092,18 +1071,6 @@ class SettingsFragmentPresenter(private val fragmentView: SettingsFragmentView)
|
|||
IntSetting.SMALL_SCREEN_POSITION.defaultValue
|
||||
)
|
||||
)
|
||||
add(
|
||||
SliderSetting(
|
||||
IntSetting.SCREEN_GAP,
|
||||
R.string.screen_gap,
|
||||
R.string.screen_gap_description,
|
||||
0,
|
||||
480,
|
||||
"px",
|
||||
IntSetting.SCREEN_GAP.key,
|
||||
IntSetting.SCREEN_GAP.defaultValue.toFloat()
|
||||
)
|
||||
)
|
||||
add(
|
||||
SliderSetting(
|
||||
FloatSetting.LARGE_SCREEN_PROPORTION,
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// Copyright Citra Emulator Project / Azahar Emulator Project
|
||||
// Copyright 2023 Citra Emulator Project
|
||||
// Licensed under GPLv2 or any later version
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
|
@ -47,7 +47,7 @@ class DateTimeViewHolder(val binding: ListItemSettingBinding, adapter: SettingsA
|
|||
val dateFormatter = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM)
|
||||
binding.textSettingValue.text = dateFormatter.format(zonedTime)
|
||||
|
||||
if (setting.isActive) {
|
||||
if (setting.isEditable) {
|
||||
binding.textSettingName.alpha = 1f
|
||||
binding.textSettingDescription.alpha = 1f
|
||||
binding.textSettingValue.alpha = 1f
|
||||
|
@ -59,18 +59,18 @@ class DateTimeViewHolder(val binding: ListItemSettingBinding, adapter: SettingsA
|
|||
}
|
||||
|
||||
override fun onClick(clicked: View) {
|
||||
if (setting.isActive) {
|
||||
if (setting.isEditable) {
|
||||
adapter.onDateTimeClick(setting, bindingAdapterPosition)
|
||||
} else {
|
||||
adapter.onClickDisabledSetting(!setting.isEditable)
|
||||
adapter.onClickDisabledSetting()
|
||||
}
|
||||
}
|
||||
|
||||
override fun onLongClick(clicked: View): Boolean {
|
||||
if (setting.isActive) {
|
||||
if (setting.isEditable) {
|
||||
return adapter.onLongClick(setting.setting!!, bindingAdapterPosition)
|
||||
} else {
|
||||
adapter.onClickDisabledSetting(!setting.isEditable)
|
||||
adapter.onClickDisabledSetting()
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// Copyright Citra Emulator Project / Azahar Emulator Project
|
||||
// Copyright 2023 Citra Emulator Project
|
||||
// Licensed under GPLv2 or any later version
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
|
@ -45,7 +45,7 @@ class InputBindingSettingViewHolder(val binding: ListItemSettingBinding, adapter
|
|||
if (setting.isEditable) {
|
||||
adapter.onInputBindingClick(setting, bindingAdapterPosition)
|
||||
} else {
|
||||
adapter.onClickDisabledSetting(!setting.isEditable)
|
||||
adapter.onClickDisabledSetting()
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -53,7 +53,7 @@ class InputBindingSettingViewHolder(val binding: ListItemSettingBinding, adapter
|
|||
if (setting.isEditable) {
|
||||
adapter.onLongClick(setting.setting!!, bindingAdapterPosition)
|
||||
} else {
|
||||
adapter.onClickDisabledSetting(!setting.isEditable)
|
||||
adapter.onClickDisabledSetting()
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// Copyright Citra Emulator Project / Azahar Emulator Project
|
||||
// Copyright 2023 Citra Emulator Project
|
||||
// Licensed under GPLv2 or any later version
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
|
@ -60,7 +60,7 @@ class RunnableViewHolder(val binding: ListItemSettingBinding, adapter: SettingsA
|
|||
|
||||
override fun onClick(clicked: View) {
|
||||
if (!setting.isRuntimeRunnable && EmulationActivity.isRunning()) {
|
||||
adapter.onClickDisabledSetting(true)
|
||||
adapter.onClickDisabledSetting()
|
||||
} else {
|
||||
setting.runnable.invoke()
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// Copyright Citra Emulator Project / Azahar Emulator Project
|
||||
// Copyright 2023 Citra Emulator Project
|
||||
// Licensed under GPLv2 or any later version
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
|
@ -27,7 +27,7 @@ class SingleChoiceViewHolder(val binding: ListItemSettingBinding, adapter: Setti
|
|||
binding.textSettingValue.visibility = View.VISIBLE
|
||||
binding.textSettingValue.text = getTextSetting()
|
||||
|
||||
if (setting.isActive) {
|
||||
if (setting.isEditable) {
|
||||
binding.textSettingName.alpha = 1f
|
||||
binding.textSettingDescription.alpha = 1f
|
||||
binding.textSettingValue.alpha = 1f
|
||||
|
@ -65,8 +65,8 @@ class SingleChoiceViewHolder(val binding: ListItemSettingBinding, adapter: Setti
|
|||
}
|
||||
|
||||
override fun onClick(clicked: View) {
|
||||
if (!setting.isEditable || !setting.isEnabled) {
|
||||
adapter.onClickDisabledSetting(!setting.isEditable)
|
||||
if (!setting.isEditable) {
|
||||
adapter.onClickDisabledSetting()
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -84,10 +84,10 @@ class SingleChoiceViewHolder(val binding: ListItemSettingBinding, adapter: Setti
|
|||
}
|
||||
|
||||
override fun onLongClick(clicked: View): Boolean {
|
||||
if (setting.isActive) {
|
||||
if (setting.isEditable) {
|
||||
return adapter.onLongClick(setting.setting!!, bindingAdapterPosition)
|
||||
} else {
|
||||
adapter.onClickDisabledSetting(!setting.isEditable)
|
||||
adapter.onClickDisabledSetting()
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// Copyright Citra Emulator Project / Azahar Emulator Project
|
||||
// Copyright 2023 Citra Emulator Project
|
||||
// Licensed under GPLv2 or any later version
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
|
@ -35,7 +35,7 @@ class SliderViewHolder(val binding: ListItemSettingBinding, adapter: SettingsAda
|
|||
else -> "${(setting.setting as AbstractIntSetting).int}${setting.units}"
|
||||
}
|
||||
|
||||
if (setting.isActive) {
|
||||
if (setting.isEditable) {
|
||||
binding.textSettingName.alpha = 1f
|
||||
binding.textSettingDescription.alpha = 1f
|
||||
binding.textSettingValue.alpha = 1f
|
||||
|
@ -47,18 +47,18 @@ class SliderViewHolder(val binding: ListItemSettingBinding, adapter: SettingsAda
|
|||
}
|
||||
|
||||
override fun onClick(clicked: View) {
|
||||
if (setting.isActive) {
|
||||
if (setting.isEditable) {
|
||||
adapter.onSliderClick(setting, bindingAdapterPosition)
|
||||
} else {
|
||||
adapter.onClickDisabledSetting(!setting.isEditable)
|
||||
adapter.onClickDisabledSetting()
|
||||
}
|
||||
}
|
||||
|
||||
override fun onLongClick(clicked: View): Boolean {
|
||||
if (setting.isActive) {
|
||||
if (setting.isEditable) {
|
||||
return adapter.onLongClick(setting.setting!!, bindingAdapterPosition)
|
||||
} else {
|
||||
adapter.onClickDisabledSetting(!setting.isEditable)
|
||||
adapter.onClickDisabledSetting()
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// Copyright Citra Emulator Project / Azahar Emulator Project
|
||||
// Copyright 2023 Citra Emulator Project
|
||||
// Licensed under GPLv2 or any later version
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
|
@ -25,31 +25,21 @@ class StringInputViewHolder(val binding: ListItemSettingBinding, adapter: Settin
|
|||
}
|
||||
binding.textSettingValue.visibility = View.VISIBLE
|
||||
binding.textSettingValue.text = setting.setting?.valueAsString
|
||||
|
||||
if (setting.isActive) {
|
||||
binding.textSettingName.alpha = 1f
|
||||
binding.textSettingDescription.alpha = 1f
|
||||
binding.textSettingValue.alpha = 1f
|
||||
} else {
|
||||
binding.textSettingName.alpha = 0.5f
|
||||
binding.textSettingDescription.alpha = 0.5f
|
||||
binding.textSettingValue.alpha = 0.5f
|
||||
}
|
||||
}
|
||||
|
||||
override fun onClick(clicked: View) {
|
||||
if (!setting.isEditable || !setting.isEnabled) {
|
||||
adapter.onClickDisabledSetting(!setting.isEditable)
|
||||
if (!setting.isEditable) {
|
||||
adapter.onClickDisabledSetting()
|
||||
return
|
||||
}
|
||||
adapter.onStringInputClick((setting as StringInputSetting), bindingAdapterPosition)
|
||||
}
|
||||
|
||||
override fun onLongClick(clicked: View): Boolean {
|
||||
if (setting.isActive) {
|
||||
if (setting.isEditable) {
|
||||
return adapter.onLongClick(setting.setting!!, bindingAdapterPosition)
|
||||
} else {
|
||||
adapter.onClickDisabledSetting(!setting.isEditable)
|
||||
adapter.onClickDisabledSetting()
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// Copyright Citra Emulator Project / Azahar Emulator Project
|
||||
// Copyright 2023 Citra Emulator Project
|
||||
// Licensed under GPLv2 or any later version
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
|
@ -33,26 +33,26 @@ class SwitchSettingViewHolder(val binding: ListItemSettingSwitchBinding, adapter
|
|||
adapter.onBooleanClick(item, bindingAdapterPosition, binding.switchWidget.isChecked)
|
||||
}
|
||||
|
||||
binding.switchWidget.isEnabled = setting.isActive
|
||||
binding.switchWidget.isEnabled = setting.isEditable
|
||||
|
||||
val textAlpha = if (setting.isActive) 1f else 0.5f
|
||||
val textAlpha = if (setting.isEditable) 1f else 0.5f
|
||||
binding.textSettingName.alpha = textAlpha
|
||||
binding.textSettingDescription.alpha = textAlpha
|
||||
}
|
||||
|
||||
override fun onClick(clicked: View) {
|
||||
if (setting.isActive) {
|
||||
if (setting.isEditable) {
|
||||
binding.switchWidget.toggle()
|
||||
} else {
|
||||
adapter.onClickDisabledSetting(!setting.isEditable)
|
||||
adapter.onClickDisabledSetting()
|
||||
}
|
||||
}
|
||||
|
||||
override fun onLongClick(clicked: View): Boolean {
|
||||
if (setting.isActive) {
|
||||
if (setting.isEditable) {
|
||||
return adapter.onLongClick(setting.setting!!, bindingAdapterPosition)
|
||||
} else {
|
||||
adapter.onClickDisabledSetting(!setting.isEditable)
|
||||
adapter.onClickDisabledSetting()
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// Copyright Citra Emulator Project / Azahar Emulator Project
|
||||
// Copyright 2023 Citra Emulator Project
|
||||
// Licensed under GPLv2 or any later version
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
|
@ -22,7 +22,6 @@ import android.view.Surface
|
|||
import android.view.SurfaceHolder
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.ImageView
|
||||
import android.widget.PopupMenu
|
||||
import android.widget.TextView
|
||||
import android.widget.Toast
|
||||
|
@ -233,15 +232,8 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback, Choreographer.Fram
|
|||
)
|
||||
}
|
||||
|
||||
binding.inGameMenu.getHeaderView(0).apply {
|
||||
val titleView = findViewById<TextView>(R.id.text_game_title)
|
||||
val iconView = findViewById<ImageView>(R.id.game_icon)
|
||||
|
||||
titleView.text = game.title
|
||||
|
||||
GameIconUtils.loadGameIcon(requireActivity(), game, iconView)
|
||||
}
|
||||
|
||||
binding.inGameMenu.getHeaderView(0).findViewById<TextView>(R.id.text_game_title).text =
|
||||
game.title
|
||||
binding.inGameMenu.setNavigationItemSelectedListener {
|
||||
when (it.itemId) {
|
||||
R.id.menu_emulation_pause -> {
|
||||
|
@ -455,14 +447,6 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback, Choreographer.Fram
|
|||
Choreographer.getInstance().postFrameCallback(this)
|
||||
if (NativeLibrary.isRunning()) {
|
||||
NativeLibrary.unPauseEmulation()
|
||||
binding.inGameMenu.menu.findItem(R.id.menu_emulation_pause)?.let { menuItem ->
|
||||
menuItem.title = resources.getString(R.string.pause_emulation)
|
||||
menuItem.icon = ResourcesCompat.getDrawable(
|
||||
resources,
|
||||
R.drawable.ic_pause,
|
||||
requireContext().theme
|
||||
)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -549,6 +533,7 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback, Choreographer.Fram
|
|||
val slot = i
|
||||
var enableClick = isSaving
|
||||
val text = if (slot == NativeLibrary.QUICKSAVE_SLOT) {
|
||||
enableClick = false
|
||||
getString(R.string.emulation_quicksave_slot)
|
||||
} else {
|
||||
getString(R.string.emulation_empty_state_slot, slot)
|
||||
|
@ -557,14 +542,11 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback, Choreographer.Fram
|
|||
add(text).setEnabled(enableClick).setOnMenuItemClickListener {
|
||||
if(isSaving) {
|
||||
NativeLibrary.saveState(slot)
|
||||
Toast.makeText(context,
|
||||
getString(R.string.saving),
|
||||
Toast.LENGTH_SHORT).show()
|
||||
} else {
|
||||
NativeLibrary.loadState(slot)
|
||||
binding.drawerLayout.close()
|
||||
Toast.makeText(context,
|
||||
getString(R.string.loading),
|
||||
getString(R.string.quickload_loading),
|
||||
Toast.LENGTH_SHORT).show()
|
||||
}
|
||||
true
|
||||
|
@ -575,6 +557,8 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback, Choreographer.Fram
|
|||
savestates?.forEach {
|
||||
var enableClick = true
|
||||
val text = if(it.slot == NativeLibrary.QUICKSAVE_SLOT) {
|
||||
// do not allow saving in quicksave slot
|
||||
enableClick = !isSaving
|
||||
getString(R.string.emulation_occupied_quicksave_slot, it.time)
|
||||
} else{
|
||||
getString(R.string.emulation_occupied_state_slot, it.slot, it.time)
|
||||
|
@ -902,10 +886,10 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback, Choreographer.Fram
|
|||
val layoutOptionMenuItem = when (IntSetting.PORTRAIT_SCREEN_LAYOUT.int) {
|
||||
PortraitScreenLayout.TOP_FULL_WIDTH.int ->
|
||||
R.id.menu_portrait_layout_top_full
|
||||
PortraitScreenLayout.ORIGINAL.int ->
|
||||
R.id.menu_portrait_layout_original
|
||||
|
||||
PortraitScreenLayout.CUSTOM_PORTRAIT_LAYOUT.int ->
|
||||
R.id.menu_portrait_layout_custom
|
||||
|
||||
else ->
|
||||
R.id.menu_portrait_layout_top_full
|
||||
|
||||
|
@ -920,11 +904,6 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback, Choreographer.Fram
|
|||
true
|
||||
}
|
||||
|
||||
R.id.menu_portrait_layout_original -> {
|
||||
screenAdjustmentUtil.changePortraitOrientation(PortraitScreenLayout.ORIGINAL.int)
|
||||
true
|
||||
}
|
||||
|
||||
R.id.menu_portrait_layout_custom -> {
|
||||
Toast.makeText(
|
||||
requireContext(),
|
||||
|
@ -954,12 +933,12 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback, Choreographer.Fram
|
|||
|
||||
private fun showToggleControlsDialog() {
|
||||
val editor = preferences.edit()
|
||||
val enabledButtons = BooleanArray(16)
|
||||
val enabledButtons = BooleanArray(15)
|
||||
enabledButtons.forEachIndexed { i: Int, _: Boolean ->
|
||||
// Buttons that are disabled by default
|
||||
var defaultValue = true
|
||||
when (i) {
|
||||
6, 7, 12, 13, 14, 15 -> defaultValue = false
|
||||
6, 7, 12, 13, 14 -> defaultValue = false
|
||||
}
|
||||
enabledButtons[i] = preferences.getBoolean("buttonToggle$i", defaultValue)
|
||||
}
|
||||
|
@ -1137,10 +1116,10 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback, Choreographer.Fram
|
|||
.apply()
|
||||
|
||||
val editor = preferences.edit()
|
||||
for (i in 0 until 16) {
|
||||
for (i in 0 until 15) {
|
||||
var defaultValue = true
|
||||
when (i) {
|
||||
6, 7, 12, 13, 14, 15 -> defaultValue = false
|
||||
6, 7, 12, 13, 14 -> defaultValue = false
|
||||
}
|
||||
editor.putBoolean("buttonToggle$i", defaultValue)
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// Copyright Citra Emulator Project / Azahar Emulator Project
|
||||
// Copyright 2023 Citra Emulator Project
|
||||
// Licensed under GPLv2 or any later version
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
|
@ -22,10 +22,9 @@ class SelectUserDirectoryDialogFragment : DialogFragment() {
|
|||
mainActivity = requireActivity() as MainActivity
|
||||
|
||||
isCancelable = false
|
||||
|
||||
return MaterialAlertDialogBuilder(requireContext())
|
||||
.setTitle(R.string.select_citra_user_folder)
|
||||
.setMessage(R.string.selecting_user_directory_without_write_permissions)
|
||||
.setMessage(R.string.cannot_skip_directory_description)
|
||||
.setPositiveButton(android.R.string.ok) { _: DialogInterface, _: Int ->
|
||||
mainActivity?.openCitraDirectory?.launch(null)
|
||||
}
|
||||
|
|
|
@ -1,113 +0,0 @@
|
|||
// Copyright Citra Emulator Project / Azahar Emulator Project
|
||||
// Licensed under GPLv2 or any later version
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
package org.citra.citra_emu.fragments
|
||||
|
||||
import android.app.Dialog
|
||||
import android.content.DialogInterface
|
||||
import android.content.SharedPreferences
|
||||
import android.net.Uri
|
||||
import android.os.Bundle
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.widget.LinearLayout
|
||||
import android.widget.RadioButton
|
||||
import android.widget.RadioGroup
|
||||
import android.widget.TextView
|
||||
import androidx.fragment.app.DialogFragment
|
||||
import androidx.fragment.app.FragmentActivity
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import androidx.preference.PreferenceManager
|
||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||
import org.citra.citra_emu.CitraApplication
|
||||
import org.citra.citra_emu.R
|
||||
import org.citra.citra_emu.ui.main.MainActivity
|
||||
import org.citra.citra_emu.utils.CitraDirectoryUtils
|
||||
import org.citra.citra_emu.utils.DirectoryInitialization
|
||||
import org.citra.citra_emu.utils.PermissionsHandler
|
||||
import org.citra.citra_emu.viewmodel.HomeViewModel
|
||||
|
||||
class UpdateUserDirectoryDialogFragment : DialogFragment() {
|
||||
private lateinit var mainActivity: MainActivity
|
||||
|
||||
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
|
||||
mainActivity = requireActivity() as MainActivity
|
||||
|
||||
isCancelable = false
|
||||
val preferences: SharedPreferences =
|
||||
PreferenceManager.getDefaultSharedPreferences(CitraApplication.appContext)
|
||||
val ld = preferences.getString("LIME3DS_DIRECTORY","")
|
||||
val cd = preferences.getString("CITRA_DIRECTORY","")
|
||||
val dialogView = LayoutInflater.from(requireContext())
|
||||
.inflate(R.layout.dialog_select_which_directory, null)
|
||||
|
||||
val radioGroup = dialogView.findViewById<RadioGroup>(R.id.radioGroup)
|
||||
|
||||
val choices = listOf(
|
||||
getString(R.string.keep_current_azahar_directory) to Uri.parse(cd).path,
|
||||
getString(R.string.use_prior_lime3ds_directory) to Uri.parse(ld).path
|
||||
)
|
||||
var selected = -1 // 0 = current, 1 = prior, -1 = no selection
|
||||
|
||||
choices.forEachIndexed { index, (label, subtext) ->
|
||||
val container = LinearLayout(requireContext()).apply {
|
||||
orientation = LinearLayout.VERTICAL
|
||||
setPadding(0, 16, 0, 16)
|
||||
}
|
||||
|
||||
val radioButton = RadioButton(requireContext()).apply {
|
||||
text = label
|
||||
id = View.generateViewId()
|
||||
}
|
||||
|
||||
val subTextView = TextView(requireContext()).apply {
|
||||
text = subtext
|
||||
setPadding(64, 4, 0, 0) // indent for visual hierarchy
|
||||
setTextAppearance(android.R.style.TextAppearance_Small)
|
||||
}
|
||||
|
||||
container.addView(radioButton)
|
||||
container.addView(subTextView)
|
||||
radioGroup.addView(container)
|
||||
|
||||
// RadioGroup expects RadioButtons directly, so we need to manage selection ourselves
|
||||
radioButton.setOnClickListener {
|
||||
selected = index
|
||||
// Manually uncheck others
|
||||
for (i in 0 until radioGroup.childCount) {
|
||||
val child = radioGroup.getChildAt(i) as LinearLayout
|
||||
val rb = child.getChildAt(0) as RadioButton
|
||||
rb.isChecked = i == index
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return MaterialAlertDialogBuilder(requireContext())
|
||||
.setTitle(R.string.select_citra_user_folder)
|
||||
.setView(dialogView)
|
||||
.setPositiveButton(android.R.string.ok) { _: DialogInterface, _: Int ->
|
||||
if (selected == 1) {
|
||||
PermissionsHandler.setCitraDirectory(ld)
|
||||
}
|
||||
if (selected >= 0) {
|
||||
CitraDirectoryUtils.removeLimeDirectoryPreference()
|
||||
DirectoryInitialization.resetCitraDirectoryState()
|
||||
DirectoryInitialization.start()
|
||||
}
|
||||
|
||||
ViewModelProvider(mainActivity)[HomeViewModel::class.java].setPickingUserDir(false)
|
||||
ViewModelProvider(mainActivity)[HomeViewModel::class.java].setUserDir(this.requireActivity(),PermissionsHandler.citraDirectory.path!!)
|
||||
}
|
||||
.show()
|
||||
}
|
||||
|
||||
companion object {
|
||||
const val TAG = "UpdateUserDirectoryDialogFragment"
|
||||
|
||||
fun newInstance(activity: FragmentActivity): UpdateUserDirectoryDialogFragment {
|
||||
ViewModelProvider(activity)[HomeViewModel::class.java].setPickingUserDir(true)
|
||||
return UpdateUserDirectoryDialogFragment()
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
// Copyright Citra Emulator Project / Azahar Emulator Project
|
||||
// Copyright 2023 Citra Emulator Project
|
||||
// Licensed under GPLv2 or any later version
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
|
@ -25,7 +25,6 @@ import org.citra.citra_emu.CitraApplication
|
|||
import org.citra.citra_emu.NativeLibrary
|
||||
import org.citra.citra_emu.R
|
||||
import org.citra.citra_emu.utils.EmulationMenuSettings
|
||||
import org.citra.citra_emu.utils.TurboHelper
|
||||
import java.lang.NullPointerException
|
||||
import kotlin.math.min
|
||||
|
||||
|
@ -45,7 +44,6 @@ class InputOverlay(context: Context?, attrs: AttributeSet?) : SurfaceView(contex
|
|||
private var buttonBeingConfigured: InputOverlayDrawableButton? = null
|
||||
private var dpadBeingConfigured: InputOverlayDrawableDpad? = null
|
||||
private var joystickBeingConfigured: InputOverlayDrawableJoystick? = null
|
||||
private val settingsViewModel = NativeLibrary.sEmulationActivity.get()!!.settingsViewModel
|
||||
|
||||
// Stores the ID of the pointer that interacted with the 3DS touchscreen.
|
||||
private var touchscreenPointerId = -1
|
||||
|
@ -106,10 +104,6 @@ class InputOverlay(context: Context?, attrs: AttributeSet?) : SurfaceView(contex
|
|||
swapScreen()
|
||||
}
|
||||
|
||||
if (button.id == NativeLibrary.ButtonType.BUTTON_TURBO && button.status == NativeLibrary.ButtonState.PRESSED) {
|
||||
TurboHelper.setTurboEnabled((!TurboHelper.isTurboSpeedEnabled()))
|
||||
}
|
||||
|
||||
NativeLibrary.onGamePadEvent(NativeLibrary.TouchScreenDevice, button.id, button.status)
|
||||
shouldUpdateView = true
|
||||
}
|
||||
|
@ -474,18 +468,6 @@ class InputOverlay(context: Context?, attrs: AttributeSet?) : SurfaceView(contex
|
|||
)
|
||||
)
|
||||
}
|
||||
|
||||
if (preferences.getBoolean("buttonToggle15", false)) {
|
||||
overlayButtons.add(
|
||||
initializeOverlayButton(
|
||||
context,
|
||||
R.drawable.button_turbo,
|
||||
R.drawable.button_turbo_pressed,
|
||||
NativeLibrary.ButtonType.BUTTON_TURBO,
|
||||
orientation
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
fun refreshControls() {
|
||||
|
@ -691,14 +673,6 @@ class InputOverlay(context: Context?, attrs: AttributeSet?) : SurfaceView(contex
|
|||
NativeLibrary.ButtonType.BUTTON_SWAP.toString() + "-Y",
|
||||
resources.getInteger(R.integer.N3DS_BUTTON_SWAP_Y).toFloat() / 1000 * maxY
|
||||
)
|
||||
.putFloat(
|
||||
NativeLibrary.ButtonType.BUTTON_TURBO.toString() + "-X",
|
||||
resources.getInteger(R.integer.N3DS_BUTTON_TURBO_X).toFloat() / 1000 * maxX
|
||||
)
|
||||
.putFloat(
|
||||
NativeLibrary.ButtonType.BUTTON_TURBO.toString() + "-Y",
|
||||
resources.getInteger(R.integer.N3DS_BUTTON_TURBO_Y).toFloat() / 1000 * maxY
|
||||
)
|
||||
.apply()
|
||||
}
|
||||
|
||||
|
@ -842,14 +816,6 @@ class InputOverlay(context: Context?, attrs: AttributeSet?) : SurfaceView(contex
|
|||
NativeLibrary.ButtonType.BUTTON_SWAP.toString() + portrait + "-Y",
|
||||
resources.getInteger(R.integer.N3DS_BUTTON_SWAP_PORTRAIT_Y).toFloat() / 1000 * maxY
|
||||
)
|
||||
.putFloat(
|
||||
NativeLibrary.ButtonType.BUTTON_TURBO.toString() + portrait + "-X",
|
||||
resources.getInteger(R.integer.N3DS_BUTTON_TURBO_PORTRAIT_X).toFloat() / 1000 * maxX
|
||||
)
|
||||
.putFloat(
|
||||
NativeLibrary.ButtonType.BUTTON_TURBO.toString() + portrait + "-Y",
|
||||
resources.getInteger(R.integer.N3DS_BUTTON_TURBO_PORTRAIT_Y).toFloat() / 1000 * maxY
|
||||
)
|
||||
.apply()
|
||||
}
|
||||
|
||||
|
@ -962,7 +928,6 @@ class InputOverlay(context: Context?, attrs: AttributeSet?) : SurfaceView(contex
|
|||
NativeLibrary.ButtonType.BUTTON_START,
|
||||
NativeLibrary.ButtonType.BUTTON_SELECT,
|
||||
NativeLibrary.ButtonType.BUTTON_SWAP -> 0.08f
|
||||
NativeLibrary.ButtonType.BUTTON_TURBO -> 0.10f
|
||||
|
||||
NativeLibrary.ButtonType.TRIGGER_L,
|
||||
NativeLibrary.ButtonType.TRIGGER_R,
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// Copyright Citra Emulator Project / Azahar Emulator Project
|
||||
// Copyright Citra Emulator Project / Lime3DS Emulator Project
|
||||
// Licensed under GPLv2 or any later version
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
|
@ -34,8 +34,10 @@ import androidx.work.OutOfQuotaPolicy
|
|||
import androidx.work.WorkManager
|
||||
import com.google.android.material.color.MaterialColors
|
||||
import com.google.android.material.navigation.NavigationBarView
|
||||
import kotlinx.coroutines.flow.collect
|
||||
import kotlinx.coroutines.launch
|
||||
import org.citra.citra_emu.R
|
||||
import org.citra.citra_emu.activities.EmulationActivity
|
||||
import org.citra.citra_emu.contracts.OpenFileResultContract
|
||||
import org.citra.citra_emu.databinding.ActivityMainBinding
|
||||
import org.citra.citra_emu.features.settings.model.Settings
|
||||
|
@ -43,10 +45,8 @@ import org.citra.citra_emu.features.settings.model.SettingsViewModel
|
|||
import org.citra.citra_emu.features.settings.ui.SettingsActivity
|
||||
import org.citra.citra_emu.features.settings.utils.SettingsFile
|
||||
import org.citra.citra_emu.fragments.SelectUserDirectoryDialogFragment
|
||||
import org.citra.citra_emu.fragments.UpdateUserDirectoryDialogFragment
|
||||
import org.citra.citra_emu.utils.CiaInstallWorker
|
||||
import org.citra.citra_emu.utils.CitraDirectoryHelper
|
||||
import org.citra.citra_emu.utils.CitraDirectoryUtils
|
||||
import org.citra.citra_emu.utils.DirectoryInitialization
|
||||
import org.citra.citra_emu.utils.FileBrowserHelper
|
||||
import org.citra.citra_emu.utils.InsetsHelper
|
||||
|
@ -66,17 +66,13 @@ class MainActivity : AppCompatActivity(), ThemeProvider {
|
|||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
val splashScreen = installSplashScreen()
|
||||
CitraDirectoryUtils.attemptAutomaticUpdateDirectory()
|
||||
splashScreen.setKeepOnScreenCondition {
|
||||
!DirectoryInitialization.areCitraDirectoriesReady() &&
|
||||
PermissionsHandler.hasWriteAccess(this) &&
|
||||
!CitraDirectoryUtils.needToUpdateManually()
|
||||
PermissionsHandler.hasWriteAccess(this)
|
||||
}
|
||||
|
||||
|
||||
if (PermissionsHandler.hasWriteAccess(applicationContext) &&
|
||||
DirectoryInitialization.areCitraDirectoriesReady() &&
|
||||
!CitraDirectoryUtils.needToUpdateManually()) {
|
||||
DirectoryInitialization.areCitraDirectoriesReady()) {
|
||||
settingsViewModel.settings.loadSettings()
|
||||
}
|
||||
|
||||
|
@ -189,9 +185,6 @@ class MainActivity : AppCompatActivity(), ThemeProvider {
|
|||
) {
|
||||
SelectUserDirectoryDialogFragment.newInstance(this)
|
||||
.show(supportFragmentManager, SelectUserDirectoryDialogFragment.TAG)
|
||||
} else if (!firstTimeSetup && !homeViewModel.isPickingUserDir.value && CitraDirectoryUtils.needToUpdateManually()) {
|
||||
UpdateUserDirectoryDialogFragment.newInstance(this)
|
||||
.show(supportFragmentManager,UpdateUserDirectoryDialogFragment.TAG)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,46 +0,0 @@
|
|||
// Copyright Citra Emulator Project / Azahar Emulator Project
|
||||
// Licensed under GPLv2 or any later version
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
package org.citra.citra_emu.utils
|
||||
|
||||
import android.content.SharedPreferences
|
||||
import androidx.preference.PreferenceManager
|
||||
import org.citra.citra_emu.CitraApplication
|
||||
|
||||
object CitraDirectoryUtils {
|
||||
const val CITRA_DIRECTORY = "CITRA_DIRECTORY"
|
||||
const val LIME3DS_DIRECTORY = "LIME3DS_DIRECTORY"
|
||||
val preferences: SharedPreferences =
|
||||
PreferenceManager.getDefaultSharedPreferences(CitraApplication.appContext)
|
||||
|
||||
fun needToUpdateManually(): Boolean {
|
||||
val directoryString = preferences.getString(CITRA_DIRECTORY, "")
|
||||
val limeDirectoryString = preferences.getString(LIME3DS_DIRECTORY,"")
|
||||
return (directoryString != "" && limeDirectoryString != "" && directoryString != limeDirectoryString)
|
||||
}
|
||||
|
||||
fun attemptAutomaticUpdateDirectory() {
|
||||
val directoryString = preferences.getString(CITRA_DIRECTORY, "")
|
||||
val limeDirectoryString = preferences.getString(LIME3DS_DIRECTORY,"")
|
||||
if (needToUpdateManually()) {
|
||||
return;
|
||||
}
|
||||
if (directoryString == "" && limeDirectoryString != "") {
|
||||
// Upgrade from Lime3DS to Azahar
|
||||
PermissionsHandler.setCitraDirectory(limeDirectoryString)
|
||||
removeLimeDirectoryPreference()
|
||||
DirectoryInitialization.resetCitraDirectoryState()
|
||||
DirectoryInitialization.start()
|
||||
|
||||
} else if (directoryString != "" && directoryString == limeDirectoryString) {
|
||||
// Both the Lime3DS and Azahar directories are the same,
|
||||
// so delete the obsolete Lime3DS value.
|
||||
removeLimeDirectoryPreference()
|
||||
}
|
||||
}
|
||||
|
||||
fun removeLimeDirectoryPreference() {
|
||||
preferences.edit().remove(LIME3DS_DIRECTORY).apply()
|
||||
}
|
||||
}
|
|
@ -106,40 +106,6 @@ class DocumentsTree {
|
|||
return node.uri ?: return Uri.EMPTY
|
||||
}
|
||||
|
||||
@Synchronized
|
||||
fun folderUriHelper(path: String, createIfNotExists: Boolean = false): Uri? {
|
||||
root ?: return null
|
||||
val components = path.split(DELIMITER).filter { it.isNotEmpty() }
|
||||
var current = root
|
||||
|
||||
for (component in components) {
|
||||
if (!current!!.loaded) {
|
||||
structTree(current)
|
||||
}
|
||||
|
||||
var child = current.findChild(component)
|
||||
|
||||
// Create directory if it doesn't exist and creation is enabled
|
||||
if (child == null && createIfNotExists) {
|
||||
try {
|
||||
val createdDir = FileUtil.createDir(current.uri.toString(), component) ?: return null
|
||||
child = DocumentsNode(createdDir, true).apply {
|
||||
parent = current
|
||||
}
|
||||
current.addChild(child)
|
||||
} catch (e: Exception) {
|
||||
error("[DocumentsTree]: Cannot create directory, error: " + e.message)
|
||||
return null
|
||||
}
|
||||
} else if (child == null) {
|
||||
return null
|
||||
}
|
||||
|
||||
current = child
|
||||
}
|
||||
return current?.uri
|
||||
}
|
||||
|
||||
@Synchronized
|
||||
fun isDirectory(filepath: String): Boolean {
|
||||
val node = resolvePath(filepath) ?: return false
|
||||
|
|
|
@ -1,39 +0,0 @@
|
|||
// Copyright Citra Emulator Project / Azahar Emulator Project
|
||||
// Licensed under GPLv2 or any later version
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
package org.citra.citra_emu.utils
|
||||
|
||||
import android.widget.Toast
|
||||
import org.citra.citra_emu.CitraApplication
|
||||
import org.citra.citra_emu.NativeLibrary
|
||||
import org.citra.citra_emu.R
|
||||
import org.citra.citra_emu.features.settings.model.IntSetting
|
||||
|
||||
object TurboHelper {
|
||||
private var turboSpeedEnabled = false
|
||||
|
||||
fun isTurboSpeedEnabled(): Boolean {
|
||||
return turboSpeedEnabled
|
||||
}
|
||||
|
||||
fun setTurboEnabled(state: Boolean) {
|
||||
turboSpeedEnabled = state
|
||||
reloadTurbo()
|
||||
}
|
||||
|
||||
fun reloadTurbo() {
|
||||
val context = CitraApplication.appContext
|
||||
val toastMessage: String
|
||||
|
||||
if (turboSpeedEnabled) {
|
||||
NativeLibrary.setTemporaryFrameLimit(IntSetting.TURBO_LIMIT.int.toDouble())
|
||||
toastMessage = context.getString(R.string.turbo_enabled_toast)
|
||||
} else {
|
||||
NativeLibrary.disableTemporaryFrameLimit()
|
||||
toastMessage = context.getString(R.string.turbo_disabled_toast)
|
||||
}
|
||||
|
||||
Toast.makeText(context, toastMessage, Toast.LENGTH_SHORT).show()
|
||||
}
|
||||
}
|
|
@ -149,8 +149,8 @@ void Config::ReadValues() {
|
|||
ReadSetting("Renderer", Settings::values.use_vsync_new);
|
||||
ReadSetting("Renderer", Settings::values.texture_filter);
|
||||
ReadSetting("Renderer", Settings::values.texture_sampling);
|
||||
ReadSetting("Renderer", Settings::values.turbo_limit);
|
||||
// Workaround to map Android setting for enabling the frame limiter to the format Citra expects
|
||||
|
||||
// Work around to map Android setting for enabling the frame limiter to the format Citra expects
|
||||
if (sdl2_config->GetBoolean("Renderer", "use_frame_limit", true)) {
|
||||
ReadSetting("Renderer", Settings::values.frame_limit);
|
||||
} else {
|
||||
|
@ -183,13 +183,11 @@ void Config::ReadValues() {
|
|||
layoutInt = static_cast<int>(Settings::LayoutOption::LargeScreen);
|
||||
}
|
||||
Settings::values.layout_option = static_cast<Settings::LayoutOption>(layoutInt);
|
||||
Settings::values.screen_gap = static_cast<int>(sdl2_config->GetReal("Layout", "screen_gap", 0));
|
||||
Settings::values.large_screen_proportion =
|
||||
static_cast<float>(sdl2_config->GetReal("Layout", "large_screen_proportion", 2.25));
|
||||
Settings::values.small_screen_position = static_cast<Settings::SmallScreenPosition>(
|
||||
sdl2_config->GetInteger("Layout", "small_screen_position",
|
||||
static_cast<int>(Settings::SmallScreenPosition::TopRight)));
|
||||
ReadSetting("Layout", Settings::values.screen_gap);
|
||||
ReadSetting("Layout", Settings::values.custom_top_x);
|
||||
ReadSetting("Layout", Settings::values.custom_top_y);
|
||||
ReadSetting("Layout", Settings::values.custom_top_width);
|
||||
|
|
|
@ -156,10 +156,6 @@ use_frame_limit =
|
|||
# 1 - 9999: Speed limit as a percentage of target game speed. 100 (default)
|
||||
frame_limit =
|
||||
|
||||
# Alternative frame limit which can be triggered by the user
|
||||
# 1 - 9999: Speed limit as a percentage of target game speed. 100 (default)
|
||||
turbo_limit =
|
||||
|
||||
# The clear color for the renderer. What shows up on the sides of the bottom screen.
|
||||
# Must be in range of 0.0-1.0. Defaults to 0.0 for all.
|
||||
bg_red =
|
||||
|
@ -171,7 +167,7 @@ bg_green =
|
|||
render_3d =
|
||||
|
||||
# Change 3D Intensity
|
||||
# 0 - 255: Intensity. 0 (default)
|
||||
# 0 - 100: Intensity. 0 (default)
|
||||
factor_3d =
|
||||
|
||||
# The name of the post processing shader to apply.
|
||||
|
@ -206,12 +202,6 @@ disable_right_eye_render =
|
|||
# 5: Custom Layout
|
||||
layout_option =
|
||||
|
||||
# Screen Gap - adds a gap between screens in all two-screen modes
|
||||
# Measured in pixels relative to the 240px default height of the screens
|
||||
# Scales with the larger screen (so 24 is 10% of the larger screen height)
|
||||
# Default value is 0.0
|
||||
screen_gap =
|
||||
|
||||
# Large Screen Proportion - Relative size of large:small in large screen mode
|
||||
# Default value is 2.25
|
||||
large_screen_proportion =
|
||||
|
@ -266,10 +256,6 @@ custom_portrait_bottom_height =
|
|||
# 0 (default): Top Screen is prominent, 1: Bottom Screen is prominent
|
||||
swap_screen =
|
||||
|
||||
# Expands the display area to include the cutout (or notch) area
|
||||
# 0 (default): Off, 1: On
|
||||
expand_to_cutout_area =
|
||||
|
||||
# Screen placement settings when using Cardboard VR (render3d = 4)
|
||||
# 30 - 100: Screen size as a percentage of the viewport. 85 (default)
|
||||
cardboard_screen_size =
|
||||
|
|
|
@ -215,8 +215,7 @@ static Core::System::ResultStatus RunCitra(const std::string& filepath) {
|
|||
LoadDiskCacheProgress(VideoCore::LoadCallbackStage::Prepare, 0, 0);
|
||||
|
||||
std::unique_ptr<Frontend::GraphicsContext> cpu_context;
|
||||
system.GPU().Renderer().Rasterizer()->LoadDefaultDiskResources(stop_run,
|
||||
&LoadDiskCacheProgress);
|
||||
system.GPU().Renderer().Rasterizer()->LoadDiskResources(stop_run, &LoadDiskCacheProgress);
|
||||
|
||||
LoadDiskCacheProgress(VideoCore::LoadCallbackStage::Complete, 0, 0);
|
||||
|
||||
|
@ -782,14 +781,4 @@ void Java_org_citra_citra_1emu_NativeLibrary_unlinkConsole(JNIEnv* env, jobject
|
|||
HW::UniqueData::UnlinkConsole();
|
||||
}
|
||||
|
||||
void Java_org_citra_citra_1emu_NativeLibrary_setTemporaryFrameLimit(JNIEnv* env, jobject obj,
|
||||
jdouble speed) {
|
||||
Settings::temporary_frame_limit = speed;
|
||||
Settings::is_temporary_frame_limit = true;
|
||||
}
|
||||
|
||||
void Java_org_citra_citra_1emu_NativeLibrary_disableTemporaryFrameLimit(JNIEnv* env, jobject obj) {
|
||||
Settings::is_temporary_frame_limit = false;
|
||||
}
|
||||
|
||||
} // extern "C"
|
||||
|
|
Before Width: | Height: | Size: 3.5 KiB |
Before Width: | Height: | Size: 3.6 KiB |
Before Width: | Height: | Size: 4.4 KiB |
Before Width: | Height: | Size: 4.5 KiB |
Before Width: | Height: | Size: 6.8 KiB |
Before Width: | Height: | Size: 6.9 KiB |
Before Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 9.2 KiB |
|
@ -1,10 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:fillColor="?attr/colorControlNormal"
|
||||
android:pathData="M20,6h-8l-2,-2H4C2.89,4 2,4.89 2,6v12c0,1.1 0.89,2 2,2h16c1.1,0 2,-0.9 2,-2V8C22,6.89 21.1,6 20,6zM19,18H5V8h14v10zM12,9l-4,4h3v3h2v-3h3L12,9z"/>
|
||||
</vector>
|
|
@ -1,10 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:fillColor="?attr/colorControlNormal"
|
||||
android:pathData="M6,19c0,1.1 0.9,2 2,2h8c1.1,0 2,-0.9 2,-2V7H6v12zM19,4h-3.5l-1,-1h-5l-1,1H5v2h14V4z"/>
|
||||
</vector>
|
|
@ -110,24 +110,6 @@
|
|||
android:text="@string/play"
|
||||
app:icon="@drawable/ic_play" />
|
||||
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/menu_button_open"
|
||||
style="@style/Widget.Material3.Button.IconButton.Filled.Tonal"
|
||||
android:layout_width="48dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="8dp"
|
||||
app:icon="@drawable/ic_open"
|
||||
app:iconGravity="textStart" />
|
||||
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/menu_button_uninstall"
|
||||
style="@style/Widget.Material3.Button.IconButton.Filled.Tonal"
|
||||
android:layout_width="48dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="8dp"
|
||||
app:icon="@drawable/ic_uninstall"
|
||||
app:iconGravity="textStart" />
|
||||
|
||||
<com.google.android.material.button.MaterialButton
|
||||
android:id="@+id/game_shortcut"
|
||||
style="@style/Widget.Material3.Button.IconButton.Filled.Tonal"
|
||||
|
@ -138,6 +120,11 @@
|
|||
app:icon="@drawable/ic_shortcut"
|
||||
app:iconGravity="textStart" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
|
@ -161,7 +148,6 @@
|
|||
android:contentDescription="@string/cheats"
|
||||
android:text="@string/cheats" />
|
||||
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
|
|
@ -1,44 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:paddingTop="12dp"
|
||||
android:paddingLeft="24dp"
|
||||
android:paddingRight="24dp"
|
||||
android:paddingBottom="0dp">
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp"
|
||||
android:background="?android:attr/listDivider" />
|
||||
<ScrollView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:layout_weight="1"
|
||||
android:fadeScrollbars="false"
|
||||
android:paddingTop="2dp"
|
||||
android:paddingBottom="6dp"
|
||||
android:overScrollMode="ifContentScrolls">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/messageText"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/select_which_user_directory_to_use"
|
||||
android:textAppearance="?attr/textAppearanceBodyMedium"
|
||||
android:paddingBottom="16dp" />
|
||||
</ScrollView>
|
||||
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp"
|
||||
android:layout_marginBottom="4dp"
|
||||
android:background="?android:attr/listDivider" />
|
||||
|
||||
<RadioGroup
|
||||
android:id="@+id/radioGroup"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation = "vertical" />
|
||||
|
||||
</LinearLayout>
|
|
@ -1,26 +1,14 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
<com.google.android.material.textview.MaterialTextView
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
android:layout_marginTop="24dp"
|
||||
android:layout_marginStart="24dp"
|
||||
android:layout_marginEnd="24dp">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/game_icon"
|
||||
android:layout_width="48dp"
|
||||
android:layout_height="48dp"
|
||||
android:layout_marginEnd="16dp"/>
|
||||
|
||||
<com.google.android.material.textview.MaterialTextView
|
||||
android:id="@+id/text_game_title"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="24dp"
|
||||
android:layout_marginStart="24dp"
|
||||
android:layout_marginEnd="24dp"
|
||||
android:textAppearance="?attr/textAppearanceHeadlineMedium"
|
||||
android:textColor="?attr/colorOnSurface"
|
||||
android:textAlignment="viewStart"
|
||||
tools:text="text_game_title" />
|
||||
|
||||
</LinearLayout>
|
||||
tools:text="Super Mario 3D Land" />
|
||||
|
|
|
@ -1,24 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<menu xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item
|
||||
android:id="@+id/game_context_open_app"
|
||||
android:title="@string/game_context_open_app" />
|
||||
<item
|
||||
android:id="@+id/game_context_open_save_dir"
|
||||
android:title="@string/game_context_open_save_dir" />
|
||||
<item
|
||||
android:id="@+id/game_context_open_updates"
|
||||
android:title="@string/game_context_open_updates" />
|
||||
<item
|
||||
android:id="@+id/game_context_open_dlc"
|
||||
android:title="@string/game_context_open_dlc" />
|
||||
<item
|
||||
android:id="@+id/game_context_open_extra"
|
||||
android:title="@string/game_context_open_extra" />
|
||||
<item
|
||||
android:id="@+id/game_context_open_textures"
|
||||
android:title="@string/game_context_open_textures" />
|
||||
<item
|
||||
android:id="@+id/game_context_open_mods"
|
||||
android:title="@string/game_context_open_mods" />
|
||||
</menu>
|
|
@ -1,12 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<menu xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item
|
||||
android:id="@+id/game_context_uninstall"
|
||||
android:title="@string/uninstall_cia" />
|
||||
<item
|
||||
android:id="@+id/game_context_uninstall_dlc"
|
||||
android:title="@string/game_context_uninstall_dlc" />
|
||||
<item
|
||||
android:id="@+id/game_context_uninstall_updates"
|
||||
android:title="@string/game_context_uninstall_updates" />
|
||||
</menu>
|
|
@ -7,10 +7,6 @@
|
|||
android:id="@+id/menu_portrait_layout_top_full"
|
||||
android:title="@string/emulation_portrait_layout_top_full" />
|
||||
|
||||
<item
|
||||
android:id="@+id/menu_portrait_layout_original"
|
||||
android:title="@string/emulation_screen_layout_original" />
|
||||
|
||||
<item
|
||||
android:id="@+id/menu_portrait_layout_custom"
|
||||
android:title="@string/emulation_screen_layout_custom" />
|
||||
|
|
|
@ -5,6 +5,10 @@
|
|||
<string name="app_notification_channel_description">Notificacions de l\'emulador 3DS Azahar</string>
|
||||
<string name="app_notification_running">Azahar s\'està executant</string>
|
||||
<string name="app_game_install_description">A continuació, haureu de seleccionar una carpeta d\'aplicacions. Azahar mostrarà totes les aplicacions de 3DS dins de la carpeta seleccionada a l\'aplicació.\n\nLes aplicacions, actualitzacions i DLC CIA s\'hauran d\'instal·lar per separat fent clic a la icona de la carpeta i seleccionant Instal·la CIA.</string>
|
||||
<string name="start">Iniciar</string>
|
||||
<string name="cancelling">Cancel·lant</string>
|
||||
<string name="important">Important</string>
|
||||
<string name="dont_show_again">No tornar a mostrar</string>
|
||||
|
||||
<!-- Home Strings -->
|
||||
<string name="grid_menu_core_settings">Configuració</string>
|
||||
|
@ -79,13 +83,9 @@
|
|||
<string name="warning_cancel">Cancel·lar</string>
|
||||
<string name="select_citra_user_folder">Seleccionar carpeta d\'usuari.</string>
|
||||
<string name="select_citra_user_folder_description"><![CDATA[Selecciona el vostre directori de <a href=\"https://web.archive.org/web/20240304193549/https://github.com/citra-emu/citra/wiki/Citra-Android-user-data-and-storage\">dades d\'usuari</a> amb el següent botó.]]></string>
|
||||
<string name="select_which_user_directory_to_use">Sembla que tens directoris d\'usuari configurats tant per a Lime3DS com per a Azahar. Probablement es deu al fet que vas actualitzar a Azahar i, quan se\'t va demanar, vas triar un directori d\'usuari diferent del qual usaves per a Lime3DS.\n\nAixó pot haver-te fet pensar que vas perdre partides guardades o altres configuracions; et demanem disculpes si això va ocórrer.\n\nPreferixes tornar a usar el teu directori d\'usuari original de Lime3DS, restaurant la configuració i les partides guardades de Lime3DS, o conservar el teu directori d\'usuari actual d\'Azahar?\n\nCap dels directoris s\'eliminarà, independentment de la teua elecció, i pots canviar lliurement entre ells usant l\'opció \"Seleccionar carpeta d\'usuari\".</string>
|
||||
<string name="keep_current_azahar_directory">Mantindre el directori Azahar actual</string>
|
||||
<string name="use_prior_lime3ds_directory">Usar el directori de Lime3DS anterior</string>
|
||||
<string name="select">Seleccionar</string>
|
||||
<string name="cannot_skip">No pots saltar aquest pas</string>
|
||||
<string name="cannot_skip_directory_description">Aquest pas és necessari perquè Azahar funcione. Selecciona un directori i després podràs continuar.</string>
|
||||
<string name="selecting_user_directory_without_write_permissions">Has perdut els permisos d\'escriptura en el teu <a href="https://web.archive.org/web/20240304193549/https://github.com/citra-emu/citra/wiki/Citra-Android-user-data-and-storage">directori de dades d\'usuari</a>, on es guarden les partides guardades i altra informació. Això pot ocórrer després d\'algunes actualitzacions d\'aplicacions o d\'Android. Torna a seleccionar el directori per a recuperar els permisos i poder continuar.</string>
|
||||
<string name="set_up_theme_settings">Configuració de tema</string>
|
||||
<string name="setup_theme_settings_description">Configura les teues preferències de temes per a Azahar.</string>
|
||||
<string name="setup_set_theme">Establir tema</string>
|
||||
|
@ -122,12 +122,8 @@
|
|||
<string name="input_binding_description_horizontal_axis">Mou el joystick a esquerra o dreta.</string>
|
||||
<string name="button_home">HOME</string>
|
||||
<string name="button_swap">Intercanviar Pantalles</string>
|
||||
<string name="button_turbo">Turbo</string>
|
||||
<string name="input_message_analog_only">Aquest control s\'ha d\'assignar a un estic analògic del comandament o a un eix del Pad de Control!</string>
|
||||
<string name="input_message_button_only">Aquest control s\'ha d\'assignar a un botó del comandament!</string>
|
||||
<string name="turbo_limit_hotkey">Velocitat Turbo</string>
|
||||
<string name="turbo_enabled_toast">Velocitat Turbo Activada</string>
|
||||
<string name="turbo_disabled_toast">Velocitat Turbo Desactivada</string>
|
||||
|
||||
<!-- System files strings -->
|
||||
<string name="setup_system_files">Fitxers del sistema</string>
|
||||
|
@ -153,20 +149,20 @@
|
|||
<string name="generic_buttons">Botons</string>
|
||||
<string name="button">Botó</string>
|
||||
|
||||
<!-- Core settings strings -->
|
||||
<string name="cpu_jit">CPU JIT</string>
|
||||
<string name="cpu_jit_description">Usa el compilador Just-In-Time (JIT) per a l\'emulació de la CPU. Quan s\'active, el rendiment millorarà notablement.</string>
|
||||
<string name="init_clock">Rellotge</string>
|
||||
<string name="init_clock_description">Configura el rellotge emulat de la 3DS perquè tinga la mateixa data i hora del teu dispositiu o per a configurar una data i hora distinta.</string>
|
||||
<string name="cpu_clock_speed">Velocitat de rellotge de la CPU</string>
|
||||
|
||||
<!-- System settings strings -->
|
||||
<string name="emulation_settings">Configuració d\'emulació</string>
|
||||
<string name="username">Nom d\'usuari/a</string>
|
||||
<string name="new_3ds">Mode New 3DS</string>
|
||||
<string name="lle_applets">Usar Applets LLE (si están instal·lades)</string>
|
||||
<string name="enable_required_online_lle_modules">Habilite els mòduls LLE necessaris per a les funcions en línia (si estan instal·lats)</string>
|
||||
<string name="enable_required_online_lle_modules_desc">Habilita els mòduls LLE necessaris per al mode multijugador en línia, accés a la eShop, etc.</string>
|
||||
<string name="clock">Rellotge</string>
|
||||
<string name="init_clock">Rellotge</string>
|
||||
<string name="init_clock_description">Configura el rellotge emulat de la 3DS perquè tinga la mateixa data i hora del teu dispositiu o per a configurar una data i hora distinta.</string>
|
||||
<string name="device_clock">Rellotge del Sistema</string>
|
||||
<string name="simulated_clock">Rellotge Simulat</string>
|
||||
<string name="simulated_clock_description">Si el rellotge està en \"Rellotge emulat\", es canvia la data i l\'hora d\'inici.</string>
|
||||
<string name="profile_settings">Configuració de perfil</string>
|
||||
<string name="init_time">Temps de compensació</string>
|
||||
<string name="init_time_description">Si el rellotge està en \"Rellotge emulat\", es canvia la data i l\'hora d\'inici.</string>
|
||||
<string name="emulated_region">Regió</string>
|
||||
<string name="emulated_language">Idioma</string>
|
||||
<string name="birthday">Aniversari</string>
|
||||
|
@ -179,9 +175,6 @@
|
|||
<string name="console_id">ID de Consola</string>
|
||||
<string name="regenerate_console_id">Regenerar ID de Consola</string>
|
||||
<string name="regenerate_console_id_description">Substituirà la teua ID de consola 3DS actual per una nova. La teua ID actual no es podrà recuperar. Pot tenir efectes inesperats dins de les aplicacions. Podria fallar si utilitzes un fitxer de configuració obsolet. Continuar?</string>
|
||||
<string name="mac_address">Adreça MAC</string>
|
||||
<string name="regenerate_mac_address">Regenerar adreça MAC</string>
|
||||
<string name="regenerate_mac_address_description">Això reemplaçarà la teua adreça MAC actual per una nova. No es recomana fer-ho si vas obtindre la direcció MAC de la teua consola real amb la ferramenta de configuració. Continuar?</string>
|
||||
<string name="plugin_loader">Carregador de complements 3GX</string>
|
||||
<string name="plugin_loader_description">Carrega els plugins 3GX de la SD emulada si estan disponibles.</string>
|
||||
<string name="allow_plugin_loader">Permetre que les aplicacions canvien l\'estat del carregador de plugins</string>
|
||||
|
@ -211,30 +204,29 @@
|
|||
<string name="async_shaders">Activar compilació de ombrejadors asíncrona</string>
|
||||
<string name="async_shaders_description">Compila els ombrejats en segón pla per a reduir les aturades durant la partida.
|
||||
S\'esperen errors gràfics temporals quan estigue activat.</string>
|
||||
<string name="renderer_debug">Renderitzador de depuració</string>
|
||||
<string name="renderer_debug_description">Arxiva informació addicional gràfica relacionada amb la depuració. Quan està activada, el rendiment dels jocs serà reduït considerablement</string>
|
||||
<string name="vsync">Activar Sincronització Vertical</string>
|
||||
<string name="vsync_description">Sincronitza els quadres per segon del joc amb la taxa de refresc del teu dispositiu.</string>
|
||||
<string name="linear_filtering">Filtre Linear</string>
|
||||
<string name="linear_filtering_description">Activa el filtre linear, que fa que els gràfics del joc es vegen més suaus.</string>
|
||||
<string name="texture_filter_name">Filtre de Textures</string>
|
||||
<string name="texture_filter_description">Millora l\'aspecte visual de les aplicacions aplicant un filtre a les textures. Els filtres compatibles són Anime4K, Ultrafast, Bicubic, ScaleForce, xBRZ Freescale i MMPX.</string>
|
||||
<string name="delay_render_thread">Endarrerir fil de renderitzat del joc</string>
|
||||
<string name="delay_render_thread_description">Retarda el fil de renderitzat del joc en enviar dades a la GPU. Ajuda a solucionar problemes de rendiment en les (poques) aplicacions amb velocitats de fotogrames dinàmiques.</string>
|
||||
<string name="advanced">Avançat</string>
|
||||
<string name="texture_sampling_name">Mostreig de Textures</string>
|
||||
<string name="texture_sampling_description">Sobreescriu el filtre de mostreig usat en jocs. Pot ser útil en uns certs casos de jocs amb baix rendiment en pujar la resolució. Si no estàs segur, possa\'l en Controlat per Joc.</string>
|
||||
<string name="hw_shaders">Activar Ombrejador de Hardware</string>
|
||||
<string name="hw_shaders_description">Usa el hardware per a emular els ombrejadors de 3DS. Quan s\'active, el rendiment millorarà notablement.</string>
|
||||
<string name="shaders_accurate_mul">Multiplicació Precisa</string>
|
||||
<string name="shaders_accurate_mul_description">Usa multiplicacions més precises en els ombrejos de Hardware, que podrien arreglar uns certs problemes gràfics. Quan s\'active, el rendiment es reduirà.</string>
|
||||
<string name="asynchronous_gpu">Activar Emulació Asíncrona de la GPU</string>
|
||||
<string name="asynchronous_gpu_description">Usa un fil separat per a emular la GPU de manera asíncrona. Quan s\'active, el rendiment millorarà.</string>
|
||||
<string name="frame_limit_enable">Límit de velocitat</string>
|
||||
<string name="frame_limit_enable_description">Quan s\'active, la velocitat d\'emulació estarà limitada a un percentatge determinat de la velocitat normal. Quan es desactive, la velocitat d\'emulació no tindrà límit i la tecla d\'accés ràpid de velocitat turbo no funcionarà.</string>
|
||||
<string name="frame_limit_enable_description">Quan s\'active, la velocitat d\'emulació estarà limitada a un percentatge determinat de la velocitat normal.</string>
|
||||
<string name="frame_limit_slider">Limitar percentatge de velocitat</string>
|
||||
<string name="frame_limit_slider_description">Especifica el valor al qual es limita la velocitat d\'emulació. Amb el valor per defecte del 100%, l\'emulació es limitarà a la velocitat normal. Els valors alts o baixos incrementaran o reduiran el límit de velocitat.</string>
|
||||
<string name="turbo_limit">Límit de Velocitat Turbo</string>
|
||||
<string name="turbo_limit_description">Límit de velocitat d\'emulació utilitzat mentres la tecla d\'accés ràpid turbo està activa.</string>
|
||||
<string name="expand_to_cutout_area">Expandir a l\'àrea de retallada</string>
|
||||
<string name="expand_to_cutout_area_description">Amplia l\'àrea de visualització per a incloure l\'àrea de retallada (o osca).</string>
|
||||
<string name="internal_resolution">Resolució interna</string>
|
||||
<string name="internal_resolution_description">Especifica la resolució utilitzada per a renderitzar. Una resolució alta millora considerablement la qualitat visual, però també afecta bastant al rendiment i pot causar problemes en unes certes aplicacions.</string>
|
||||
<string name="internal_resolution_setting_auto">Auto (Grandària Pantalla)</string>
|
||||
<string name="internal_resolution_setting_1x">Nativa (400x240)</string>
|
||||
<string name="internal_resolution_setting_2x">2x Nativa (800x480)</string>
|
||||
<string name="internal_resolution_setting_3x">3x Nativa (1200x720)</string>
|
||||
|
@ -251,8 +243,6 @@ S\'esperen errors gràfics temporals quan estigue activat.</string>
|
|||
<string name="render3d">Mode 3D Estereoscòpic</string>
|
||||
<string name="factor3d">Profunditat</string>
|
||||
<string name="factor3d_description">Especifica el valor del regulador 3D. Hauria d\'estar posat a més enllà del 0% quan el Mode 3D Estereoscòpic està activat.\nNota: Els valors de profunditat superiors al 100% no són possibles en hardware real i poden causar problemes gràfics.</string>
|
||||
<string name="disable_right_eye_render">Desactivar Renderitzat d\'Ull Dret</string>
|
||||
<string name="disable_right_eye_render_description">Millora enormement el rendiment en algunes aplicacions, però pot provocar parpellejos en unes altres.</string>
|
||||
<string name="cardboard_vr">Cardboard VR</string>
|
||||
<string name="cardboard_screen_size">Grandària de la pantalla Cardboard</string>
|
||||
<string name="cardboard_screen_size_description">Escala la pantalla a un percentatge de la seua grandària original.</string>
|
||||
|
@ -282,23 +272,6 @@ S\'esperen errors gràfics temporals quan estigue activat.</string>
|
|||
<string name="audio_input_type">Dispositiu d\'entrada d\'àudio</string>
|
||||
<string name="sound_output_mode">Mode d\'eixida de l\'àudio</string>
|
||||
|
||||
<!-- Debug settings strings -->
|
||||
<string name="cpu_jit">CPU JIT</string>
|
||||
<string name="cpu_jit_description">Usa el compilador Just-In-Time (JIT) per a l\'emulació de la CPU. Quan s\'active, el rendiment millorarà notablement.</string>
|
||||
<string name="hw_shaders">Activar Ombrejador de Hardware</string>
|
||||
<string name="hw_shaders_description">Usa el hardware per a emular els ombrejadors de 3DS. Quan s\'active, el rendiment millorarà notablement.</string>
|
||||
<string name="cpu_clock_speed">Velocitat de rellotge de la CPU</string>
|
||||
<string name="vsync">Activar Sincronització Vertical</string>
|
||||
<string name="vsync_description">Sincronitza els quadres per segon del joc amb la taxa de refresc del teu dispositiu.</string>
|
||||
<string name="renderer_debug">Renderitzador de depuració</string>
|
||||
<string name="renderer_debug_description">Arxiva informació addicional gràfica relacionada amb la depuració. Quan està activada, el rendiment dels jocs serà reduït considerablement</string>
|
||||
<string name="instant_debug_log">Guardar l\'eixida del registre en cada missatge</string>
|
||||
<string name="instant_debug_log_description">Envia immediatament el registre de depuració a un arxiu. Usa-ho si Azahar falla i es talla l\'eixida del registre.</string>
|
||||
<string name="delay_start_lle_modules">Inici diferit amb mòduls LLE</string>
|
||||
<string name="delay_start_lle_modules_description">Retarda l\'inici de l\'aplicació quan els mòduls LLE estan habilitats.</string>
|
||||
<string name="deterministic_async_operations">Operacions asíncrones deterministes</string>
|
||||
<string name="deterministic_async_operations_description">Fa que les operacions asíncrones siguen deterministes per a la depuració. Habilitar esta opció pot causar bloquejos.</string>
|
||||
|
||||
<!-- Layout settings strings -->
|
||||
<string name="layout_screen_orientation">Orientació de pantalla</string>
|
||||
<string name="layout_screen_orientation_auto_sensor">Automàtica</string>
|
||||
|
@ -313,7 +286,6 @@ S\'esperen errors gràfics temporals quan estigue activat.</string>
|
|||
<string name="ini_saved">Configuració guardada</string>
|
||||
<string name="gameid_saved">Configuració guardada per a %1$s</string>
|
||||
<string name="error_saving">Error guardant %1$s.ini: %2$s</string>
|
||||
<string name="saving">Guardant...</string>
|
||||
<string name="loading">Carregant...</string>
|
||||
<string name="next">Següent</string>
|
||||
<string name="back">Arrere</string>
|
||||
|
@ -334,14 +306,8 @@ S\'esperen errors gràfics temporals quan estigue activat.</string>
|
|||
<string name="select_rtc_time">Seleccionar hora RTC</string>
|
||||
<string name="reset_setting_confirmation">Vols reiniciar esta configuració al seu valor per defecte?</string>
|
||||
<string name="setting_not_editable">No pots editar-ho ara</string>
|
||||
<string name="setting_disabled">Configuració deshabilitada</string>
|
||||
<string name="setting_disabled_description">Esta configuració està actualment deshabilitada perquè una altra configuració no té el valor apropiat.</string>
|
||||
<string name="setting_not_editable_description">Esta opció no pot canviar-se mentres s\'està executant un joc.</string>
|
||||
<string name="auto_select">Auto-elegir</string>
|
||||
<string name="start">Iniciar</string>
|
||||
<string name="cancelling">Cancel·lant</string>
|
||||
<string name="important">Important</string>
|
||||
<string name="dont_show_again">No tornar a mostrar</string>
|
||||
|
||||
<!-- Add Directory Screen-->
|
||||
<string name="select_game_folder">Seleccionar Directori de Joc</string>
|
||||
|
@ -409,8 +375,6 @@ S\'esperen errors gràfics temporals quan estigue activat.</string>
|
|||
<string name="small_screen_position_bottom_left">Abaix a l\'esquerra</string>
|
||||
<string name="small_screen_position_above">Damunt</string>
|
||||
<string name="small_screen_position_below">Davall</string>
|
||||
<string name="screen_gap">Separació de Pantalla</string>
|
||||
<string name="screen_gap_description">Espai entre pantalles en tots els modes de dos pantalles. Mesurat en píxels respecte a l\'altura de 240 píxels de la pantalla més gran.</string>
|
||||
<string name="large_screen_proportion">Proporció de Pantalla Gran</string>
|
||||
<string name="large_screen_proportion_description">Quantes vegades més gran és la pantalla gran que la pantalla xicoteta en Proporció de Pantalla Gran?</string>
|
||||
<string name="emulation_adjust_custom_layout">Ajusta l\'estil personalitzat en Configuració</string>
|
||||
|
@ -428,9 +392,6 @@ S\'esperen errors gràfics temporals quan estigue activat.</string>
|
|||
<string name="emulation_show_overlay">Mostrar Estil</string>
|
||||
<string name="emulation_close_game">Tancar Joc</string>
|
||||
<string name="emulation_toggle_pause">Activar pausa</string>
|
||||
<string name="miscellaneous">Miscel·lanis</string>
|
||||
<string name="use_artic_base_controller">Usar Artic Controller en estar connectat al servidor de Artic Base</string>
|
||||
<string name="use_artic_base_controller_description">Utilitza els controls proporcionats per Artic Base Server quan estiga connectat a ell en lloc del dispositiu d\'entrada configurat.</string>
|
||||
<string name="emulation_close_game_message">Estàs segur que vols tancar el joc?</string>
|
||||
<string name="menu_emulation_amiibo">Amiibo</string>
|
||||
<string name="menu_emulation_amiibo_load">Carregar</string>
|
||||
|
@ -502,17 +463,6 @@ S\'esperen errors gràfics temporals quan estigue activat.</string>
|
|||
<!-- About Game Dialog -->
|
||||
<string name="play">Jugar</string>
|
||||
<string name="shortcut">Drecera</string>
|
||||
<string name="uninstall_cia">Desinstal·lar Aplicació</string>
|
||||
<string name="uninstalling">Desinstal·lant...</string>
|
||||
<string name="game_context_open_save_dir">Obrir Carpeta de Guardat</string>
|
||||
<string name="game_context_open_app">Obrir Carpeta d\'Aplicació</string>
|
||||
<string name="game_context_open_mods">Obrir Carpeta de Mods</string>
|
||||
<string name="game_context_open_textures">Obrir Carpeta de Textures</string>
|
||||
<string name="game_context_open_dlc">Obrir Carpeta de DLC</string>
|
||||
<string name="game_context_open_updates">Obrir Carpeta d\'Actualitzacions</string>
|
||||
<string name="game_context_open_extra">Obrir Carpeta Extra</string>
|
||||
<string name="game_context_uninstall_dlc">Desinstal·lar DLC</string>
|
||||
<string name="game_context_uninstall_updates">Desinstal·lar Actualitzacions</string>
|
||||
|
||||
<!-- Cheats -->
|
||||
<string name="cheats">Trucs</string>
|
||||
|
@ -572,6 +522,10 @@ S\'esperen errors gràfics temporals quan estigue activat.</string>
|
|||
<string name="use_black_backgrounds">Fons foscos</string>
|
||||
<string name="use_black_backgrounds_description">Quan uses el tema fosc, s\'aplicaran fons foscos.</string>
|
||||
|
||||
<!-- Clock types -->
|
||||
<string name="device_clock">Rellotge del Sistema</string>
|
||||
<string name="simulated_clock">Rellotge Simulat</string>
|
||||
|
||||
<!-- Region names -->
|
||||
<string name="system_region_jpn">JPN</string>
|
||||
<string name="system_region_usa">USA</string>
|
||||
|
@ -797,12 +751,33 @@ S\'esperen errors gràfics temporals quan estigue activat.</string>
|
|||
<string name="artic_base_connect_description">Connectar amb una consola real que estiga executant un servidor Artic Base</string>
|
||||
<string name="artic_base_connect">Connectar amb Artic Base</string>
|
||||
<string name="artic_base_enter_address">Introduïx la direcció del servidor Artic Base</string>
|
||||
<string name="delay_render_thread">Endarrerir fil de renderitzat del joc</string>
|
||||
<string name="delay_render_thread_description">Retarda el fil de renderitzat del joc en enviar dades a la GPU. Ajuda a solucionar problemes de rendiment en les (poques) aplicacions amb velocitats de fotogrames dinàmiques.</string>
|
||||
|
||||
<!-- Quickload&Save-->
|
||||
<string name="emulation_quicksave_slot">Guardat ràpid</string>
|
||||
<string name="emulation_quicksave">Guardat ràpid</string>
|
||||
<string name="emulation_quickload">Carregament ràpid</string>
|
||||
<string name="emulation_occupied_quicksave_slot">Guardat ràpid - %1$tF %1$tR</string>
|
||||
<string name="quicksave_saving">Guardant...</string>
|
||||
<string name="quickload_loading">Carregant...</string>
|
||||
<string name="quickload_not_found">Guardat ràpid no disponible.</string>
|
||||
|
||||
<string name="miscellaneous">Miscel·lanis</string>
|
||||
<string name="use_artic_base_controller">Usar Artic Controller en estar connectat al servidor de Artic Base</string>
|
||||
<string name="use_artic_base_controller_description">Utilitza els controls proporcionats per Artic Base Server quan estiga connectat a ell en lloc del dispositiu d\'entrada configurat.</string>
|
||||
<string name="instant_debug_log">Guardar l\'eixida del registre en cada missatge</string>
|
||||
<string name="instant_debug_log_description">Envia immediatament el registre de depuració a un arxiu. Usa-ho si Azahar falla i es talla l\'eixida del registre.</string>
|
||||
<string name="disable_right_eye_render">Desactivar Renderitzat d\'Ull Dret</string>
|
||||
<string name="disable_right_eye_render_description">Millora enormement el rendiment en algunes aplicacions, però pot provocar parpellejos en unes altres.</string>
|
||||
<string name="delay_start_lle_modules">Inici diferit amb mòduls LLE</string>
|
||||
<string name="delay_start_lle_modules_description">Retarda l\'inici de l\'aplicació quan els mòduls LLE estan habilitats.</string>
|
||||
<string name="deterministic_async_operations">Operacions asíncrones deterministes</string>
|
||||
<string name="deterministic_async_operations_description">Fa que les operacions asíncrones siguen deterministes per a la depuració. Habilitar esta opció pot causar bloquejos.</string>
|
||||
<string name="enable_required_online_lle_modules">Habilite els mòduls LLE necessaris per a les funcions en línia (si estan instal·lats)</string>
|
||||
<string name="enable_required_online_lle_modules_desc">Habilita els mòduls LLE necessaris per al mode multijugador en línia, accés a la eShop, etc.</string>
|
||||
<string name="emulation_settings">Configuració d\'emulació</string>
|
||||
<string name="profile_settings">Configuració de perfil</string>
|
||||
<string name="mac_address">Adreça MAC</string>
|
||||
<string name="regenerate_mac_address">Regenerar adreça MAC</string>
|
||||
<string name="regenerate_mac_address_description">Això reemplaçarà la teua adreça MAC actual per una nova. No es recomana fer-ho si vas obtindre la direcció MAC de la teua consola real amb la ferramenta de configuració. Continuar?</string>
|
||||
</resources>
|
||||
|
|
|
@ -5,6 +5,10 @@
|
|||
<string name="app_notification_channel_description">Azahar 3DS emulator meddelelser</string>
|
||||
<string name="app_notification_running">Azahar kører</string>
|
||||
<string name="app_game_install_description">Dernæst skal du vælge en applikationsmappe. Azahar vil vise alle 3DS ROM\'erne inde i den valgte mappe i appen.\n\nCIA ROM\'er, opdateringer og DLC skal installeres separat ved at klikke på mappeikonet og vælge installer CIA.</string>
|
||||
<string name="start">Start</string>
|
||||
<string name="cancelling">Annullerer...</string>
|
||||
<string name="important">Vigtig</string>
|
||||
<string name="dont_show_again">Vis ikke igen</string>
|
||||
|
||||
<!-- Home Strings -->
|
||||
<string name="grid_menu_core_settings">Indstillinger</string>
|
||||
|
@ -28,7 +32,7 @@
|
|||
<string name="about">Om</string>
|
||||
<string name="citra_description">En open source 3DS-emulator</string>
|
||||
<string name="about_description">Version, krediteringer og mere</string>
|
||||
<string name="games_dir_selected">Applikationsmappen er valgt</string>
|
||||
<string name="games_dir_selected">Applikationsbiblioteket er valgt</string>
|
||||
<string name="select_citra_user_folder_home_description">Ændrer de filer, som Azahar bruger til at indlæse applikationer</string>
|
||||
<string name="theme_and_color_description">Rediger appens udseende</string>
|
||||
<string name="install_cia_title">Installer CIA</string>
|
||||
|
@ -79,13 +83,9 @@
|
|||
<string name="warning_cancel">Annuller</string>
|
||||
<string name="select_citra_user_folder">Vælg brugermappe</string>
|
||||
<string name="select_citra_user_folder_description"><![CDATA[Vælg din <a href=\"https://web.archive.org/web/20240304193549/https://github.com/citra-emu/citra/wiki/Citra-Android-user-data-and-storage\">brugerdata</a> mappe med knappen nedenfor.]]></string>
|
||||
<string name="select_which_user_directory_to_use">Du ser ud til at have indstillet brugermapper til både Lime3DS og Azahar. Dette skyldes sandsynligvis, at du har opgraderet til Azahar, og da du bliver bedt om det, valgte du en anden brugermappe end den, der blev brugt til Lime3DS.\n\nDette kan have resulteret i, at du troede, at du havde mistet gemte tilstande eller andre indstillinger - vi beklager, hvis det skete.\n\nVil du gå tilbage til at bruge din oprindelige Lime3DS-brugermappe, gendanne indstillinger og gemte Lime3DS-spiltilstande, eller beholde dine nuværende Azahar brugermappe?\n\nIngen af mapperne slettes, uanset dit valg, og du kan frit skifte mellem dem ved at bruge valgmuligheden Vælg brugermappe.</string>
|
||||
<string name="keep_current_azahar_directory">Behold den aktuelle Azahar-mappe</string>
|
||||
<string name="use_prior_lime3ds_directory">Brug tidligere Lime3DS mappe</string>
|
||||
<string name="select">Vælg</string>
|
||||
<string name="cannot_skip">Du kan ikke springe dette trin over</string>
|
||||
<string name="cannot_skip_directory_description">Dette trin er påkrævet for at Azahar kan fungere. Vælg en mappe og så kan du fortsætte.</string>
|
||||
<string name="selecting_user_directory_without_write_permissions">Du har mistet skrivetilladelse i din <a href="https://web.archive.org/web/20240304193549/https://github.com/citra-emu/citra/wiki/Citra-Android-user-data-and-storage">brugerdata</a> mappe, hvor gemte tilstande og anden information er gemt. Dette kan ske efter en app- eller Android-opdatering. Vælg venligst mappen for at give tilladelse igen, så du kan fortsætte.</string>
|
||||
<string name="set_up_theme_settings">Temaindstillinger</string>
|
||||
<string name="setup_theme_settings_description">Konfigurer dine temaindstillinger for Azahar.</string>
|
||||
<string name="setup_set_theme">Indstil tema</string>
|
||||
|
@ -122,17 +122,14 @@
|
|||
<string name="input_binding_description_horizontal_axis">Bevæg joysticket til venstre eller højre</string>
|
||||
<string name="button_home">HOME</string>
|
||||
<string name="button_swap">Byt skærme</string>
|
||||
<string name="button_turbo">Turbo</string>
|
||||
<string name="input_message_analog_only">Denne kontrol skal være bundet til et gamepad analogt greb eller akse D-Pad!</string>
|
||||
<string name="input_message_button_only">Denne kontrol skal være bundet til en gamepad knap!</string>
|
||||
|
||||
<!-- System files strings -->
|
||||
<string name="setup_system_files">Systemfiler</string>
|
||||
<string name="setup_system_files_description">Udfør handlinger som installation af systemfiler eller opstart af startmenu</string>
|
||||
<string name="setup_tool_connect">Opret forbindelse til Artic opsætningsværktøj</string>
|
||||
<string name="setup_system_files_preamble"><![CDATA[Azahar har brug for unikke konsoldata og firmwarefiler fra en rigtig konsol for at kunne bruge nogle af dens funktioner. Disse filer og data kan sættes op med <a href=https://github.com/azahar-emu/ArticSetupTool>Azahar Artic Setup Tool</a>.<br>Bemærk:<ul><li><b>Denne handling vil installere unikke konsoldata til Azahar, del ikke dine bruger- eller nand-mapper efter at have udført opsætningsprocessen!</b></li><li>Mens du udfører opsætningsprocessen, vil Azahar forbinde til konsollen, der kører opsætningsværktøjet. Du kan fjerne forbindelsen til konsollen senere fra fanen Systemfiler i emulatorindstillingsmenuen.</li><li>Gå ikke online med både Azahar og din 3DS-konsol på samme tid efter opsætning af systemfiler, da dette kan medføre problemer.</li><li>Gammel 3DS-opsætning er nødvendig for at den nye 3DS-opsætning kan fungere (det anbefales at opsætte begge dele).</li><li>Begge opsætningstilstande fungerer uanset hvilken model af konsollen, der kører opsætningsværktøjet.</li></ul>]]></string>
|
||||
<string name="setup_system_files_detect">Henter den aktuelle status for systemfiler, vent venligst...</string>
|
||||
<string name="delete_system_files">Fjern linket til de unikke konsoldata</string>
|
||||
<string name="delete_system_files_description"><![CDATA[Denne handling vil fjerne forbindelsen mellem din rigtige konsol og Azahar, med følgende konsekvenser:<br><ul><li>Din OTP, SecureInfo og LocalFriendCodeSeed vil blive fjernet fra Azahar.</li><li>Din venneliste nulstilles, og du bliver logget ud af din NNID/PNID-konto.</li><li>Systemfiler og eshop-titler opnået gennem Azahar bliver utilgængelige, indtil den samme konsol er linket igen ved hjælp af opsætningsværktøjet (gemte data går ikke tabt).</li></ul><br>Fortsætte?]]></string>
|
||||
<string name="setup_system_files_o3ds">Gammel 3DS opsætning</string>
|
||||
<string name="setup_system_files_n3ds">Ny 3DS-opsætning</string>
|
||||
<string name="setup_system_files_possible">Opsætning er mulig.</string>
|
||||
|
@ -141,7 +138,7 @@
|
|||
<string name="setup_system_files_enter_address">Indtast adressen til Artic opsætningsværktøj</string>
|
||||
<string name="setup_system_files_preparing">Forbereder opsætning, vent venligst...</string>
|
||||
<string name="boot_home_menu">Start HOME-menuen</string>
|
||||
<string name="show_home_apps">Vi apps i HOME menu i applikationslisten</string>
|
||||
<string name="show_home_apps">Vi apps i HOME menu i listen over applikationer</string>
|
||||
<string name="run_system_setup">Kør systemopsætning, når HOME-menuen startes.</string>
|
||||
<string name="home_menu">HOME menu</string>
|
||||
|
||||
|
@ -149,20 +146,20 @@
|
|||
<string name="generic_buttons">Knapper</string>
|
||||
<string name="button">Knap</string>
|
||||
|
||||
<!-- Core settings strings -->
|
||||
<string name="cpu_jit">CPU JIT</string>
|
||||
<string name="cpu_jit_description">Bruger JIT-kompileren (Just-in-Time) til CPU-emulering. Når den er aktiveret, vil spillets ydeevne blive væsentligt forbedret.</string>
|
||||
<string name="init_clock">Ur</string>
|
||||
<string name="init_clock_description">Indstil det emulerede 3DS ur til enten at afspejle det på din enhed eller anvende en simuleret dato og klokkeslæt.</string>
|
||||
<string name="cpu_clock_speed">CPU Clock hastighed</string>
|
||||
|
||||
<!-- System settings strings -->
|
||||
<string name="emulation_settings">Emuleringsindstillinger</string>
|
||||
<string name="username">Brugernavn</string>
|
||||
<string name="new_3ds">Ny 3DS tilstand</string>
|
||||
<string name="lle_applets">Brug LLE Applets (hvis installeret)</string>
|
||||
<string name="enable_required_online_lle_modules">Aktiver nødvendige LLE moduler til onlinefunktioner (hvis installeret)</string>
|
||||
<string name="enable_required_online_lle_modules_desc">Aktiverer de LLE moduler, der kræves til online multiplayer, eShop-adgang osv.</string>
|
||||
<string name="clock">Ur</string>
|
||||
<string name="init_clock">Ur</string>
|
||||
<string name="init_clock_description">Indstil det emulerede 3DS ur til enten at afspejle det på din enhed eller anvende en simuleret dato og klokkeslæt.</string>
|
||||
<string name="device_clock">Enhedens ur</string>
|
||||
<string name="simulated_clock">Simuleret ur</string>
|
||||
<string name="simulated_clock_description">Hvis uret er indstillet til \"Simuleret ur\", ændrer dette den faste startdato og klokkeslæt.</string>
|
||||
<string name="profile_settings">Profilindstillinger</string>
|
||||
<string name="init_time">Forskudt tid</string>
|
||||
<string name="init_time_description">Hvis uret er indstillet til \"Simuleret ur\", ændrer dette den faste startdato og klokkeslæt.</string>
|
||||
<string name="emulated_region">Region</string>
|
||||
<string name="emulated_language">Sprog</string>
|
||||
<string name="birthday">Fødselsdag</string>
|
||||
|
@ -175,17 +172,10 @@
|
|||
<string name="console_id">Konsol ID</string>
|
||||
<string name="regenerate_console_id">Udtag nyt konsol ID</string>
|
||||
<string name="regenerate_console_id_description">Dette vil erstatte dit nuværende virtuelle 3DS konsol ID med et nyt. Dit nuværende virtuelle 3DS konsol ID vil ikke kunne gendannes. Dette kan have uventede virkninger inde i applikationer. Dette kan mislykkes, hvis du bruger en forældet gemt konfiguration. Fortsætte?</string>
|
||||
<string name="mac_address">MAC-adresse</string>
|
||||
<string name="regenerate_mac_address">Udtag ny MAC-adresse</string>
|
||||
<string name="regenerate_mac_address_description">Dette vil erstatte din nuværende MAC-adresse med en ny. Det anbefales ikke at gøre dette, hvis du har fået MAC-adressen fra din rigtige konsol ved hjælp af opsætningsværktøjet. Fortsætte?</string>
|
||||
<string name="plugin_loader">Indlæsning af 3GX Plugins</string>
|
||||
<string name="plugin_loader_description">Indlæser 3GX plugins fra det emulerede SD-kort, hvis de er tilgængelige.</string>
|
||||
<string name="allow_plugin_loader">Tillad applikationer at ændre plugin-indlæserens tilstand</string>
|
||||
<string name="allow_plugin_loader_description">Tillader at homebrew applikationer kan aktivere plugin-indlæseren, selv når den er deaktiveret.</string>
|
||||
<string name="region_mismatch">Advarsel om uoverensstemmelse i region</string>
|
||||
<string name="region_mismatch_emulated">Landeindstillingen er ikke gyldig for det valgte emulerede område.</string>
|
||||
<string name="region_mismatch_console">Landeindstillingen er ikke gyldig for den aktuelle forbundne konsol.</string>
|
||||
|
||||
<!-- Camera settings strings -->
|
||||
<string name="inner_camera">Indre kamera</string>
|
||||
<string name="outer_left_camera">Ydre venstre kamera</string>
|
||||
|
@ -193,7 +183,7 @@
|
|||
<string name="image_source">Kameraets billedkilde</string>
|
||||
<string name="image_source_description">Indstiller billedkilden for det virtuelle kamera. Du kan bruge en billedfil eller et enhedskamera, hvis dette understøttes.</string>
|
||||
<string name="camera_device">Kamera</string>
|
||||
<string name="camera_device_description">Hvis indstillingen \"Billedkilde\" er sat til \"Enhedens kamera\", bruges det fysiske kamera.</string>
|
||||
<string name="camera_device_description">Hvis indstillingen \"Billedkilde\" er sat til \"Enhedskamera\", bruges det fysiske kamera.</string>
|
||||
<string name="camera_facing_front">Front</string>
|
||||
<string name="camera_facing_back">Bagside</string>
|
||||
<string name="camera_facing_external">Ekstern</string>
|
||||
|
@ -206,28 +196,26 @@
|
|||
<string name="spirv_shader_gen_description">Udsender den fragment shader, der bruges til at emulere PICA med SPIR-V i stedet for GLSL</string>
|
||||
<string name="async_shaders">Aktiver asynkron shader kompilering</string>
|
||||
<string name="async_shaders_description">Kompilerer shaders i baggrunden for at reducere hakken under spilet. Når det er aktiveret, skal du forvente tilfældige grafiske fejl</string>
|
||||
<string name="renderer_debug">Fejlsøg renderingen</string>
|
||||
<string name="renderer_debug_description">Log yderligere grafikrelaterede fejlfindingsoplysninger. Når det er aktiveret, vil spillets ydeevne blive væsentligt reduceret.</string>
|
||||
<string name="vsync">Aktiver V-Sync</string>
|
||||
<string name="vsync_description">Synkroniserer spillets frame rate med opdateringshastigheden på din enhed.</string>
|
||||
<string name="linear_filtering">Lineær filtrering</string>
|
||||
<string name="linear_filtering_description">Aktiverer lineær filtrering, hvilket får spillets grafik til at se mere jævnt ud.</string>
|
||||
<string name="texture_filter_name">Teksturfilter</string>
|
||||
<string name="texture_filter_description">Forbedrer det visuelle i applikationer ved at anvende et filter på teksturer. De understøttede filtre er Anime4K Ultrafast, Bicubic, ScaleForce, xBRZ freescale og MMPX.</string>
|
||||
<string name="delay_render_thread">Forsinket spillets renderingstråd</string>
|
||||
<string name="delay_render_thread_description">Forsink spillets remderingstråd, når den sender data til GPU\'en. Hjælper med ydeevneproblemer i de (meget få) applikationer med dynamiske framerates.</string>
|
||||
<string name="advanced">Avanceret\"</string>
|
||||
<string name="texture_sampling_name">Tekstur sampling</string>
|
||||
<string name="texture_sampling_description">Tilsidesætter det samplingsfilter, der bruges af spillene. Dette kan i nogle tilfælde være nyttigt for spil, der ikke håndterer opskalering godt. Hvis du er usikker, skal du indstille dette til Styret af spillene.</string>
|
||||
<string name="hw_shaders">Aktiver hardware shader</string>
|
||||
<string name="hw_shaders_description">Bruger hardware til at efterligne 3DS shaders. Når det er aktiveret, vil spillets ydeevne blive væsentligt forbedret.</string>
|
||||
<string name="shaders_accurate_mul">Nøjagtig multiplikation</string>
|
||||
<string name="shaders_accurate_mul_description">Bruger mere nøjagtig multiplikation i hardware shaders, som kan rette nogle grafiske fejl. Når den er aktiveret, reduceres ydeevnen.</string>
|
||||
<string name="asynchronous_gpu">Aktiver asynkron GPU-emulering</string>
|
||||
<string name="asynchronous_gpu_description">Bruger en separat tråd til at emulere GPU\'en asynkront. Når den er aktiveret, vil ydeevnen blive forbedret.</string>
|
||||
<string name="frame_limit_enable">Begræns hastighed</string>
|
||||
<string name="frame_limit_enable_description">Når aktiveret, vil emuleringshastigheden være begrænset til en specificeret procentdel af normal hastighed. Hvis deaktiveret, vil emuleringshastigheden være ubegrænset, og genvejstasten for turbohastighed vil ikke fungere.</string>
|
||||
<string name="frame_limit_enable_description">Når den er aktiveret, vil emuleringshastigheden være begrænset til en specificeret procentdel af normal hastighed.</string>
|
||||
<string name="frame_limit_slider">Begræns hastighedsprocent</string>
|
||||
<string name="frame_limit_slider_description">Angiver procentdelen emuleringshastigheden skal begrænses til. Med standardværdien på 100% vil emulering være begrænset til normal hastighed. Værdier højere eller lavere vil øge eller mindske hastighedsgrænsen.</string>
|
||||
<string name="expand_to_cutout_area">Anvend området ved frontkamera</string>
|
||||
<string name="expand_to_cutout_area_description">Udvider visningsområdet til at omfatte området ved frontkameraet (eller indhakket).</string>
|
||||
<string name="internal_resolution">Intern opløsning</string>
|
||||
<string name="internal_resolution_description">Angiver den opløsning, der bruges til renderingen. En høj opløsning vil forbedre den visuelle kvalitet meget, men kræver også stor ydelse og kan forårsage fejl i visse applikationer.</string>
|
||||
<string name="internal_resolution_setting_auto">Auto (skærmstørrelse)</string>
|
||||
<string name="internal_resolution_setting_1x">Indbygget (400x240)</string>
|
||||
<string name="internal_resolution_setting_2x">2x indbygget (800 x 480)</string>
|
||||
<string name="internal_resolution_setting_3x">3x indbygget (1200 x 720)</string>
|
||||
|
@ -239,13 +227,11 @@
|
|||
<string name="internal_resolution_setting_9x">9x indbygget (3600x2160)</string>
|
||||
<string name="internal_resolution_setting_10x">10x indbygget (4000x2400)</string>
|
||||
<string name="performance_warning">Hvis du slår denne indstilling fra vil emuleringsydelsen reduceres betydeligt! For den bedste oplevelse anbefales det, at du lader denne indstilling være aktiveret.</string>
|
||||
<string name="debug_warning">Advarsel: Ændringer i disse indstillinger vil gøre emuleringen langsommere</string>
|
||||
<string name="debug_warning">Advarsel: Ændringer i disse indstillinger vil gør emuleringen langsommere</string>
|
||||
<string name="stereoscopy">Stereoskopi</string>
|
||||
<string name="render3d">Stereoskopisk 3D-tilstand</string>
|
||||
<string name="factor3d">Dybde</string>
|
||||
<string name="factor3d_description">Angiver værdien af 3D-skyderen. Denne bør sættes højere end 0 %, når stereoskopisk 3D-tilstand er aktiveret.\nBemærk: Dybdeværdier over 100 % er ikke muligt på rigtig hardware og kan forårsage grafiske problemer</string>
|
||||
<string name="disable_right_eye_render">Deaktiver rendering af højre øje</string>
|
||||
<string name="disable_right_eye_render_description">Forbedrer ydeevnen betydeligt i nogle applikationer, men kan forårsage flimren i andre.</string>
|
||||
<string name="cardboard_vr">Cardboard VR</string>
|
||||
<string name="cardboard_screen_size">Cardboard skærmstørrelse</string>
|
||||
<string name="cardboard_screen_size_description">Skalerer skærmen til en procentdel af dens oprindelige størrelse.</string>
|
||||
|
@ -275,23 +261,6 @@
|
|||
<string name="audio_input_type">Lydindgangsenhed</string>
|
||||
<string name="sound_output_mode">Lydudgangstilstand</string>
|
||||
|
||||
<!-- Debug settings strings -->
|
||||
<string name="cpu_jit">CPU JIT</string>
|
||||
<string name="cpu_jit_description">Bruger JIT-kompileren (Just-in-Time) til CPU-emulering. Når den er aktiveret, vil spillets ydeevne blive væsentligt forbedret.</string>
|
||||
<string name="hw_shaders">Aktiver hardware shader</string>
|
||||
<string name="hw_shaders_description">Bruger hardware til at efterligne 3DS shaders. Når det er aktiveret, vil spillets ydeevne blive væsentligt forbedret.</string>
|
||||
<string name="cpu_clock_speed">CPU Clock hastighed</string>
|
||||
<string name="vsync">Aktiver V-Sync</string>
|
||||
<string name="vsync_description">Synkroniserer spillets frame rate med opdateringshastigheden på din enhed.</string>
|
||||
<string name="renderer_debug">Fejlsøg renderingen</string>
|
||||
<string name="renderer_debug_description">Log yderligere grafikrelaterede fejlfindingsoplysninger. Når det er aktiveret, vil spillets ydeevne blive væsentligt reduceret.</string>
|
||||
<string name="instant_debug_log">Tøm loggen for alle beskeder</string>
|
||||
<string name="instant_debug_log_description">Overfør øjeblikkeligt fejlretningsloggen til fil. Brug dette, hvis Azahar går ned, og logoutputtet afbrydes.</string>
|
||||
<string name="delay_start_lle_modules">Forsinket start med LLE moduler</string>
|
||||
<string name="delay_start_lle_modules_description">Forsinker starten af appen, når LLE moduler er aktiveret.</string>
|
||||
<string name="deterministic_async_operations">Deterministiske asynkrone operationer</string>
|
||||
<string name="deterministic_async_operations_description">Gør asynkrone operationer deterministiske for fejlretning. Aktivering af dette kan forårsage at programmet fryser fast.</string>
|
||||
|
||||
<!-- Layout settings strings -->
|
||||
<string name="layout_screen_orientation">Skærmorientering</string>
|
||||
<string name="layout_screen_orientation_auto_sensor">Automatisk</string>
|
||||
|
@ -306,7 +275,6 @@
|
|||
<string name="ini_saved">Gemte indstillinger</string>
|
||||
<string name="gameid_saved">Gemte indstillinger for %1$s</string>
|
||||
<string name="error_saving">Fejl ved lagring af %1$s.ini: %2$s</string>
|
||||
<string name="saving">Gemmer...</string>
|
||||
<string name="loading">Indlæser...</string>
|
||||
<string name="next">Næste</string>
|
||||
<string name="back">Tilbage</string>
|
||||
|
@ -327,14 +295,8 @@
|
|||
<string name="select_rtc_time">Vælg RTC tid</string>
|
||||
<string name="reset_setting_confirmation">Vil du nulstille denne indstilling til standardværdien?</string>
|
||||
<string name="setting_not_editable">Du kan ikke redigere dette nu</string>
|
||||
<string name="setting_disabled">Indstillinger deaktiveret</string>
|
||||
<string name="setting_disabled_description">Indstillingen er i øjeblikket deaktiveret, fordi en anden indstilling ikke har en passende værdi.</string>
|
||||
<string name="setting_not_editable_description">Denne indstilling kan ikke ændres, mens et spil kører.</string>
|
||||
<string name="auto_select">Automatisk valg</string>
|
||||
<string name="start">Start</string>
|
||||
<string name="cancelling">Annullerer...</string>
|
||||
<string name="important">Vigtig</string>
|
||||
<string name="dont_show_again">Vis ikke igen</string>
|
||||
|
||||
<!-- Add Directory Screen-->
|
||||
<string name="select_game_folder">Vælg spilmappe</string>
|
||||
|
@ -402,8 +364,6 @@
|
|||
<string name="small_screen_position_bottom_left">Nederst til venstre</string>
|
||||
<string name="small_screen_position_above">Over</string>
|
||||
<string name="small_screen_position_below">Under</string>
|
||||
<string name="screen_gap">Mellemrum imellem skærme</string>
|
||||
<string name="screen_gap_description">Mellemrum imellem skærme i alle to-skærmstilstande. Målt i px i forhold til 240 px højden på den større skærm.</string>
|
||||
<string name="large_screen_proportion">Forhold for stor skærm</string>
|
||||
<string name="large_screen_proportion_description">Hvor mange gange større er den store skærm end den lille skærm i storskærmslayout?</string>
|
||||
<string name="emulation_adjust_custom_layout">Juster brugerdefineret layout i indstillinger</string>
|
||||
|
@ -421,9 +381,6 @@
|
|||
<string name="emulation_show_overlay">Vis overlejring</string>
|
||||
<string name="emulation_close_game">Luk spil</string>
|
||||
<string name="emulation_toggle_pause">Slå Pause til/fra</string>
|
||||
<string name="miscellaneous">Diverse</string>
|
||||
<string name="use_artic_base_controller">Brug Artic kontroller, når du er tilsluttet Artic base server</string>
|
||||
<string name="use_artic_base_controller_description">Brug kontrollerne fra Artic base server, når forbundet til den i stedet for den konfigurerede inputenhed.</string>
|
||||
<string name="emulation_close_game_message">Er du sikker på, at du vil lukke det aktuelle spil?</string>
|
||||
<string name="menu_emulation_amiibo">Amiibo</string>
|
||||
<string name="menu_emulation_amiibo_load">Indlæs</string>
|
||||
|
@ -495,17 +452,6 @@
|
|||
<!-- About Game Dialog -->
|
||||
<string name="play">Spil</string>
|
||||
<string name="shortcut">Genvej</string>
|
||||
<string name="uninstall_cia">Afinstaller applikation</string>
|
||||
<string name="uninstalling">Afinstallerer...</string>
|
||||
<string name="game_context_open_save_dir">Åbn mappen med gemt data</string>
|
||||
<string name="game_context_open_app">Åbn applikationsmappe</string>
|
||||
<string name="game_context_open_mods">Åbn mappen med Mods</string>
|
||||
<string name="game_context_open_textures">Åbn mappen med teksturer</string>
|
||||
<string name="game_context_open_dlc">Åbn mappen med DLC</string>
|
||||
<string name="game_context_open_updates">Åbn mappen med opdateringer</string>
|
||||
<string name="game_context_open_extra">Åbn mappen med ekstra</string>
|
||||
<string name="game_context_uninstall_dlc">Afinstaller DLC</string>
|
||||
<string name="game_context_uninstall_updates">Afinstaller opdateringer</string>
|
||||
|
||||
<!-- Cheats -->
|
||||
<string name="cheats">Snyd</string>
|
||||
|
@ -565,6 +511,10 @@
|
|||
<string name="use_black_backgrounds">Sorte baggrunde</string>
|
||||
<string name="use_black_backgrounds_description">Når du bruger det mørke tema, skal du anvende sorte baggrunde.</string>
|
||||
|
||||
<!-- Clock types -->
|
||||
<string name="device_clock">Enhedens ur</string>
|
||||
<string name="simulated_clock">Simuleret ur</string>
|
||||
|
||||
<!-- Region names -->
|
||||
<string name="system_region_jpn">JPN</string>
|
||||
<string name="system_region_usa">USA</string>
|
||||
|
@ -625,11 +575,7 @@
|
|||
<string name="xbrz">xBRZ</string>
|
||||
<string name="mmpx">MMPX</string>
|
||||
|
||||
<!-- Texture Sampling names -->
|
||||
<string name="game_controlled">Styret af spillene</string>
|
||||
<string name="nearest_neighbor">Nærmeste nabo</string>
|
||||
<string name="linear">Lineær</string>
|
||||
|
||||
<!-- Sound output modes -->
|
||||
<string name="mono">Mono</string>
|
||||
<string name="stereo">Stereo</string>
|
||||
|
@ -790,12 +736,33 @@
|
|||
<string name="artic_base_connect_description">Opret forbindelse til en rigtig konsol, der kører en Artic base server</string>
|
||||
<string name="artic_base_connect">Opret forbindelse til Artic base</string>
|
||||
<string name="artic_base_enter_address">Indtast Artic base serveradressen</string>
|
||||
<string name="delay_render_thread">Forsinket spillets renderingstråd</string>
|
||||
<string name="delay_render_thread_description">Forsink spillets remderingstråd, når den sender data til GPU\'en. Hjælper med ydeevneproblemer i de (meget få) applikationer med dynamiske framerates.</string>
|
||||
|
||||
<!-- Quickload&Save-->
|
||||
<string name="emulation_quicksave_slot">Hurtig lagring</string>
|
||||
<string name="emulation_quicksave">Hurtig lagring</string>
|
||||
<string name="emulation_quickload">Hurtig indlæsning</string>
|
||||
<string name="emulation_occupied_quicksave_slot">Hurtig lagring - %1$tF %1$tR</string>
|
||||
<string name="quicksave_saving">Gemmer...</string>
|
||||
<string name="quickload_loading">Indlæser...</string>
|
||||
<string name="quickload_not_found">Ingen hurtig lagring tilgængelig.</string>
|
||||
|
||||
<string name="miscellaneous">Diverse</string>
|
||||
<string name="use_artic_base_controller">Brug Artic kontroller, når du er tilsluttet Artic base server</string>
|
||||
<string name="use_artic_base_controller_description">Brug kontrollerne fra Artic base server, når forbundet til den i stedet for den konfigurerede inputenhed.</string>
|
||||
<string name="instant_debug_log">Tøm loggen for alle beskeder</string>
|
||||
<string name="instant_debug_log_description">Overfør øjeblikkeligt fejlretningsloggen til fil. Brug dette, hvis Azahar går ned, og logoutputtet afbrydes.</string>
|
||||
<string name="disable_right_eye_render">Deaktiver rendering af højre øje</string>
|
||||
<string name="disable_right_eye_render_description">Forbedrer ydeevnen betydeligt i nogle applikationer, men kan forårsage flimren i andre.</string>
|
||||
<string name="delay_start_lle_modules">Forsinket start med LLE moduler</string>
|
||||
<string name="delay_start_lle_modules_description">Forsinker starten af appen, når LLE moduler er aktiveret.</string>
|
||||
<string name="deterministic_async_operations">Deterministiske asynkrone operationer</string>
|
||||
<string name="deterministic_async_operations_description">Gør asynkrone operationer deterministiske for fejlretning. Aktivering af dette kan forårsage at programmet fryser fast.</string>
|
||||
<string name="enable_required_online_lle_modules">Aktiver nødvendige LLE moduler til onlinefunktioner (hvis installeret)</string>
|
||||
<string name="enable_required_online_lle_modules_desc">Aktiverer de LLE moduler, der kræves til online multiplayer, eShop-adgang osv.</string>
|
||||
<string name="emulation_settings">Emuleringsindstillinger</string>
|
||||
<string name="profile_settings">Profilindstillinger</string>
|
||||
<string name="mac_address">MAC-adresse</string>
|
||||
<string name="regenerate_mac_address">Udtag ny MAC-adresse</string>
|
||||
<string name="regenerate_mac_address_description">Dette vil erstatte din nuværende MAC-adresse med en ny. Det anbefales ikke at gøre dette, hvis du har fået MAC-adressen fra din rigtige konsol ved hjælp af opsætningsværktøjet. Fortsætte?</string>
|
||||
</resources>
|
||||
|
|
|
@ -5,6 +5,10 @@
|
|||
<string name="app_notification_channel_description">Notificaciones del emulador 3DS Azahar</string>
|
||||
<string name="app_notification_running">Azahar está ejecutándose</string>
|
||||
<string name="app_game_install_description">A continuación, deberá seleccionar una Carpeta de Aplicaciones. Azahar mostrará todas las ROM de 3DS de la carpeta seleccionada en la aplicación.\n\nLas ROM CIA, actualizaciones y los DLC deberán instalarse por separado haciendo clic en el icono de la carpeta y seleccionando Instalar CIA.</string>
|
||||
<string name="start">Iniciar</string>
|
||||
<string name="cancelling">Cancelando...</string>
|
||||
<string name="important">Importante</string>
|
||||
<string name="dont_show_again">No volver a mostrar</string>
|
||||
|
||||
<!-- Home Strings -->
|
||||
<string name="grid_menu_core_settings">Configuración</string>
|
||||
|
@ -79,13 +83,9 @@
|
|||
<string name="warning_cancel">Cancelar</string>
|
||||
<string name="select_citra_user_folder">Seleccionar Carpeta de Usuario</string>
|
||||
<string name="select_citra_user_folder_description"><![CDATA[Selecciona tu directorio de <a href=\"https://web.archive.org/web/20240304193549/https://github.com/citra-emu/citra/wiki/Citra-Android-user-data-and-storage\">datos de usuario</a> con el botón de abajo.]]></string>
|
||||
<string name="select_which_user_directory_to_use">Parece que tienes directorios de usuario configurados tanto para Lime3DS como para Azahar. Probablemente se deba a que actualizaste a Azahar y, cuando se te pidió, elegiste un directorio de usuario diferente al que usabas para Lime3DS.\n\nEsto puede haberte hecho pensar que perdiste partidas guardadas u otras configuraciones; te pedimos disculpas si eso ocurrió.\n\n¿Prefieres volver a usar tu directorio de usuario original de Lime3DS, restaurando la configuración y las partidas guardadas de Lime3DS, o conservar tu directorio de usuario actual de Azahar?\n\nNinguno de los directorios se eliminará, independientemente de tu elección, y puedes cambiar libremente entre ellos usando la opción \"Seleccionar carpeta de usuario\".</string>
|
||||
<string name="keep_current_azahar_directory">Mantener el directorio Azahar actual</string>
|
||||
<string name="use_prior_lime3ds_directory">Usar el directorio de Lime3DS anterior</string>
|
||||
<string name="select">Seleccionar</string>
|
||||
<string name="cannot_skip">No puedes saltarte este paso</string>
|
||||
<string name="cannot_skip_directory_description">Este paso es necesario para permitir que Azahar funcione. Por favor, seleccione un directorio y luego puede continuar.</string>
|
||||
<string name="selecting_user_directory_without_write_permissions">Has perdido los permisos de escritura en tu <a href="https://web.archive.org/web/20240304193549/https://github.com/citra-emu/citra/wiki/Citra-Android-user-data-and-storage">directorio de datos de usuario</a>, donde se guardan las partidas guardadas y otra información. Esto puede ocurrir después de algunas actualizaciones de aplicaciones o de Android. Vuelve a seleccionar el directorio para recuperar los permisos y poder continuar.</string>
|
||||
<string name="set_up_theme_settings">Configuración de tema</string>
|
||||
<string name="setup_theme_settings_description">Configura tus preferencias de tema de Azahar.</string>
|
||||
<string name="setup_set_theme">Establecer tema</string>
|
||||
|
@ -122,12 +122,8 @@
|
|||
<string name="input_binding_description_horizontal_axis">Mueve el joystick a izquierda o derecha.</string>
|
||||
<string name="button_home">HOME</string>
|
||||
<string name="button_swap">Intercambiar Pantallas</string>
|
||||
<string name="button_turbo">Turbo</string>
|
||||
<string name="input_message_analog_only">¡Este control debe asignarse a un stick analógico del mando o a un eje del Pad de Control!</string>
|
||||
<string name="input_message_button_only">¡Este control debe asignarse a un botón del mando!</string>
|
||||
<string name="turbo_limit_hotkey">Velocidad Turbo</string>
|
||||
<string name="turbo_enabled_toast">Velocidad Turbo Activada</string>
|
||||
<string name="turbo_disabled_toast">Velocidad Turbo Desactivada</string>
|
||||
|
||||
<!-- System files strings -->
|
||||
<string name="setup_system_files">Archivos de Sistema</string>
|
||||
|
@ -153,20 +149,20 @@
|
|||
<string name="generic_buttons">Botones</string>
|
||||
<string name="button">Botón</string>
|
||||
|
||||
<!-- Core settings strings -->
|
||||
<string name="cpu_jit">CPU JIT</string>
|
||||
<string name="cpu_jit_description">Usa el compilador Just-In-Time (JIT) para la emulación de la CPU. Cuando se active, el rendimiento mejorará notablemente.</string>
|
||||
<string name="init_clock">Reloj</string>
|
||||
<string name="init_clock_description">Configura el reloj emulado de la 3DS para que tenga la misma fecha y hora de tu dispositivo o para configurar una fecha y hora distinta en éste.</string>
|
||||
<string name="cpu_clock_speed">Velocidad de reloj de la CPU</string>
|
||||
|
||||
<!-- System settings strings -->
|
||||
<string name="emulation_settings">Opciones de Emulación</string>
|
||||
<string name="username">Nombre de usuario/a</string>
|
||||
<string name="new_3ds">Modo New 3DS</string>
|
||||
<string name="lle_applets">Usar Applets LLE (si están instaladas)</string>
|
||||
<string name="enable_required_online_lle_modules">Habilitar los módulos LLE necesarios para las funciones en línea (si están instalados)</string>
|
||||
<string name="enable_required_online_lle_modules_desc">Habilita los módulos LLE necesarios para el modo multijugador en línea, acceso a la eShop, etc.</string>
|
||||
<string name="clock">Reloj</string>
|
||||
<string name="init_clock">Reloj</string>
|
||||
<string name="init_clock_description">Configura el reloj emulado de la 3DS para que tenga la misma fecha y hora de tu dispositivo o para configurar una fecha y hora distinta en éste.</string>
|
||||
<string name="device_clock">Reloj del Sistema</string>
|
||||
<string name="simulated_clock">Reloj Simulado</string>
|
||||
<string name="simulated_clock_description">Si el reloj está en \"Reloj emulado\", ésto cambia la fecha y hora de inicio.</string>
|
||||
<string name="profile_settings">Opciones de Perfil</string>
|
||||
<string name="init_time">Tiempo de compensación</string>
|
||||
<string name="init_time_description">Si el reloj está en \"Reloj emulado\", ésto cambia la fecha y hora de inicio.</string>
|
||||
<string name="emulated_region">Región</string>
|
||||
<string name="emulated_language">Idioma</string>
|
||||
<string name="birthday">Cumpleaños</string>
|
||||
|
@ -179,9 +175,6 @@
|
|||
<string name="console_id">ID de Consola</string>
|
||||
<string name="regenerate_console_id">Regenerar ID de Consola</string>
|
||||
<string name="regenerate_console_id_description">Esto reemplazará tu ID de consola de 3DS virtual por una nueva. Tu ID actual será irrecuperable. Esto puede tener efectos inesperados en determinadas aplicaciones. Si usas un archivo de configuración obsoleto, esto podría fallar. ¿Desea continuar?</string>
|
||||
<string name="mac_address">Dirección MAC</string>
|
||||
<string name="regenerate_mac_address">Regenerar Dirección MAC</string>
|
||||
<string name="regenerate_mac_address_description">Esto reemplazará tu dirección MAC actual por una nueva. No se recomienda hacerlo si obtuviste la dirección MAC de tu consola real con la herramienta de configuración. ¿Continuar?</string>
|
||||
<string name="plugin_loader">Cargador de complementos 3GX</string>
|
||||
<string name="plugin_loader_description">Carga los plugins 3GX de la SD emulada si están disponibles.</string>
|
||||
<string name="allow_plugin_loader">Permitir que las aplicaciones cambien el estado del cargador de plugins.</string>
|
||||
|
@ -211,30 +204,29 @@
|
|||
<string name="async_shaders">Activar compilación de sombreados asíncrona</string>
|
||||
<string name="async_shaders_description">Compila los sombreados en el fondo para reducir los parones durante la partida.
|
||||
Se esperan fallos gráficos temporales cuando ésta esté activado.</string>
|
||||
<string name="renderer_debug">Renderizador de depuración</string>
|
||||
<string name="renderer_debug_description">Archiva información adicional gráfica relacionada con la depuración. Cuando está activada, el rendimiento de los juegos será reducido considerablemente</string>
|
||||
<string name="vsync">Activar Sincronización Vertical</string>
|
||||
<string name="vsync_description">Sincroniza los cuadros por segundo del juego con la tasa de refresco de tu dispositivo.</string>
|
||||
<string name="linear_filtering">Filtro Linear</string>
|
||||
<string name="linear_filtering_description">Activa el filtro linear, que hace que los gráficos del juego se vean más suaves.</string>
|
||||
<string name="texture_filter_name">Filtro de Texturas</string>
|
||||
<string name="texture_filter_description">Mejora los gráficos visuales de las aplicaciones aplicando un filtro a las texturas. Los filtros soportados son Anime4K Ultrafast, Bicubic, ScaleForce, xBRZ freescale, y MMPX.</string>
|
||||
<string name="delay_render_thread">Atrasar hilo de renderizado del juego</string>
|
||||
<string name="delay_render_thread_description">Retrasa el hilo de renderización del juego cuando envía datos a la GPU. Ayuda con los problemas de rendimiento en las (muy pocas) aplicaciones de fps dinámicos.</string>
|
||||
<string name="advanced">Avanzado</string>
|
||||
<string name="texture_sampling_name">Muestreo de Texturas</string>
|
||||
<string name="texture_sampling_description">Sobreescribe el filtro de muestreo usado en juegos. Puede ser útil en ciertos casos con juegos con bajo rendimiento al subir la resolución. Si no estás seguro, pónlo en Controlado por Juego</string>
|
||||
<string name="hw_shaders">Activar Sombreador de Hardware</string>
|
||||
<string name="hw_shaders_description">Usa el hardware para emular los sombreadores de 3DS. Cuando se active, el rendimiento mejorará notablemente.</string>
|
||||
<string name="shaders_accurate_mul">Multiplicación Precisa</string>
|
||||
<string name="shaders_accurate_mul_description">Usa multiplicaciones más precisas en los sombreados de hardware, que podrían arreglar ciertos bugs gráficos. Cuando se active, el rendimiento se reducirá.</string>
|
||||
<string name="asynchronous_gpu">Activar Emulación Asíncrona de la GPU</string>
|
||||
<string name="asynchronous_gpu_description">Usa un hilo separado para emular la GPU de manera asíncrona. Cuando se active, el rendimiento mejorará.</string>
|
||||
<string name="frame_limit_enable">Límite de velocidad</string>
|
||||
<string name="frame_limit_enable_description">Cuando se active, la velocidad de emulación estará limitada a un porcentaje determinado de la velocidad normal. Cuando se desactive, la velocidad de emulación no tendrá límite y la tecla de acceso rápido de velocidad turbo no funcionará.</string>
|
||||
<string name="frame_limit_enable_description">Cuando se active, la velocidad de emulación estará limitada a un porcentaje determinado de la velocidad normal.</string>
|
||||
<string name="frame_limit_slider">Limitar porcentaje de velocidad</string>
|
||||
<string name="frame_limit_slider_description">Especifica el valor al que se limita la velocidad de emulación. Con el valor por defecto del 100%, la emulación se limitará a la velocidad normal. Los valores altos o altos incrementarán o reducirán el límite de velocidad.</string>
|
||||
<string name="turbo_limit">Límite de Velocidad Turbo</string>
|
||||
<string name="turbo_limit_description">Límite de velocidad de emulación utilizado mientras la tecla de acceso rápido turbo está activa.</string>
|
||||
<string name="expand_to_cutout_area">Expandir al área de recorte</string>
|
||||
<string name="expand_to_cutout_area_description">Amplía el área de visualización para incluir el área de recorte (o muesca).</string>
|
||||
<string name="internal_resolution">Resolución interna</string>
|
||||
<string name="internal_resolution_description">Especifica la resolución a la que se quiera renderizar. Una alta resolución mejorará la calidad visual un montón, pero también causará un gran impacto en el rendimiento y puede causar fallos en ciertas aplicaciones.</string>
|
||||
<string name="internal_resolution_setting_auto">Auto (Tamaño Pantalla)</string>
|
||||
<string name="internal_resolution_setting_1x">Nativa (400x240)</string>
|
||||
<string name="internal_resolution_setting_2x">2x Nativa (800x480)</string>
|
||||
<string name="internal_resolution_setting_3x">3x Nativa (1200x720)</string>
|
||||
|
@ -251,8 +243,6 @@ Se esperan fallos gráficos temporales cuando ésta esté activado.</string>
|
|||
<string name="render3d">Modo 3D Estereoscópico</string>
|
||||
<string name="factor3d">Profundidad</string>
|
||||
<string name="factor3d_description">Especifica el valor del regulador 3D. Debería estar puesto a más allá del 0% cuando el Modo 3D Estereoscópico está activado.\nNota: Los valores de profundidad superiores al 100 % no son posibles en hardware real y pueden causar problemas gráficos.</string>
|
||||
<string name="disable_right_eye_render">Desactivar Renderizado de Ojo Derecho</string>
|
||||
<string name="disable_right_eye_render_description">Mejora significativamente el rendimiento en algunas aplicaciones, pero puede causar parpadeo en otros.</string>
|
||||
<string name="cardboard_vr">Cardboard VR</string>
|
||||
<string name="cardboard_screen_size">Tamaño de la pantalla Cardboard</string>
|
||||
<string name="cardboard_screen_size_description">Escala la pantalla a un porcentaje de su tamaño original.</string>
|
||||
|
@ -282,23 +272,6 @@ Se esperan fallos gráficos temporales cuando ésta esté activado.</string>
|
|||
<string name="audio_input_type">Dispositivo de entrada de audio</string>
|
||||
<string name="sound_output_mode">Modo de salida del audio</string>
|
||||
|
||||
<!-- Debug settings strings -->
|
||||
<string name="cpu_jit">CPU JIT</string>
|
||||
<string name="cpu_jit_description">Usa el compilador Just-In-Time (JIT) para la emulación de la CPU. Cuando se active, el rendimiento mejorará notablemente.</string>
|
||||
<string name="hw_shaders">Activar Sombreador de Hardware</string>
|
||||
<string name="hw_shaders_description">Usa el hardware para emular los sombreadores de 3DS. Cuando se active, el rendimiento mejorará notablemente.</string>
|
||||
<string name="cpu_clock_speed">Velocidad de reloj de la CPU</string>
|
||||
<string name="vsync">Activar Sincronización Vertical</string>
|
||||
<string name="vsync_description">Sincroniza los cuadros por segundo del juego con la tasa de refresco de tu dispositivo.</string>
|
||||
<string name="renderer_debug">Renderizador de depuración</string>
|
||||
<string name="renderer_debug_description">Archiva información adicional gráfica relacionada con la depuración. Cuando está activada, el rendimiento de los juegos será reducido considerablemente</string>
|
||||
<string name="instant_debug_log">Limpiar la salida del registro en cada mensaje</string>
|
||||
<string name="instant_debug_log_description">Inmediatamente guarda el registro de depuración en el archivo. Utilice ésto si Azahar se bloquea y la salida del registro se está cortando.</string>
|
||||
<string name="delay_start_lle_modules">Retrasar el comienzo con módulos LLE</string>
|
||||
<string name="delay_start_lle_modules_description">Retrasa el inicio de la aplicación cuando los módulos LLE están habilitados.</string>
|
||||
<string name="deterministic_async_operations">Operaciones asíncronas deterministas</string>
|
||||
<string name="deterministic_async_operations_description">Hace que las operaciones asíncronas sean deterministas para la depuración. Habilitar esta opción puede causar bloqueos.</string>
|
||||
|
||||
<!-- Layout settings strings -->
|
||||
<string name="layout_screen_orientation">Orientación de pantalla</string>
|
||||
<string name="layout_screen_orientation_auto_sensor">Automática</string>
|
||||
|
@ -313,7 +286,6 @@ Se esperan fallos gráficos temporales cuando ésta esté activado.</string>
|
|||
<string name="ini_saved">Configuración guardada</string>
|
||||
<string name="gameid_saved">Configuración guardada para %1$s</string>
|
||||
<string name="error_saving">Error guardando %1$s.ini: %2$s</string>
|
||||
<string name="saving">Guardando...</string>
|
||||
<string name="loading">Cargando...</string>
|
||||
<string name="next">Siguiente</string>
|
||||
<string name="back">Atrás</string>
|
||||
|
@ -334,14 +306,8 @@ Se esperan fallos gráficos temporales cuando ésta esté activado.</string>
|
|||
<string name="select_rtc_time">Seleccionar hora RTC</string>
|
||||
<string name="reset_setting_confirmation">¿Quiere reiniciar esta configuración a su valor por defecto?</string>
|
||||
<string name="setting_not_editable">No puedes editarlo ahora</string>
|
||||
<string name="setting_disabled">Configuración deshabilitada</string>
|
||||
<string name="setting_disabled_description">Esta configuración está actualmente deshabilitada debido a que otra configuración no tiene el valor apropiado.</string>
|
||||
<string name="setting_not_editable_description">Esta opción no puede cambiarse mientras se está ejecutando un juego.</string>
|
||||
<string name="auto_select">Auto-elegir</string>
|
||||
<string name="start">Iniciar</string>
|
||||
<string name="cancelling">Cancelando...</string>
|
||||
<string name="important">Importante</string>
|
||||
<string name="dont_show_again">No volver a mostrar</string>
|
||||
|
||||
<!-- Add Directory Screen-->
|
||||
<string name="select_game_folder">Seleccionar Directorio de Juego</string>
|
||||
|
@ -409,8 +375,6 @@ Se esperan fallos gráficos temporales cuando ésta esté activado.</string>
|
|||
<string name="small_screen_position_bottom_left">Abajo a la Izquierda</string>
|
||||
<string name="small_screen_position_above">Encima</string>
|
||||
<string name="small_screen_position_below">Debajo</string>
|
||||
<string name="screen_gap">Separación de Pantalla</string>
|
||||
<string name="screen_gap_description">Espacio entre pantallas en todos los modos de dos pantallas. Medido en píxeles con respecto a la altura de 240 píxeles de la pantalla más grande.</string>
|
||||
<string name="large_screen_proportion">Proporción de Pantalla Grande</string>
|
||||
<string name="large_screen_proportion_description">¿Cuántas veces más grande es la pantalla grande que la pantalla pequeña en Disposicion de Pantalla Grande?</string>
|
||||
<string name="emulation_adjust_custom_layout">Ajusta el estilo personalizado en Configuración</string>
|
||||
|
@ -428,9 +392,6 @@ Se esperan fallos gráficos temporales cuando ésta esté activado.</string>
|
|||
<string name="emulation_show_overlay">Mostrar Estilo</string>
|
||||
<string name="emulation_close_game">Cerrar Juego</string>
|
||||
<string name="emulation_toggle_pause">Activar pausa</string>
|
||||
<string name="miscellaneous">Misceláneos</string>
|
||||
<string name="use_artic_base_controller">Usar Artic Controller al estar conectado al servidor de Artic Base</string>
|
||||
<string name="use_artic_base_controller_description">Usa los controles dados por el Servidor de Artic Base al estar conectado a éste en vez de los controles del dispositivo configurado.</string>
|
||||
<string name="emulation_close_game_message">¿Estás seguro de querer cerrar el juego?</string>
|
||||
<string name="menu_emulation_amiibo">Amiibo</string>
|
||||
<string name="menu_emulation_amiibo_load">Cargar</string>
|
||||
|
@ -502,17 +463,6 @@ Se esperan fallos gráficos temporales cuando ésta esté activado.</string>
|
|||
<!-- About Game Dialog -->
|
||||
<string name="play">Jugar</string>
|
||||
<string name="shortcut">Atajo</string>
|
||||
<string name="uninstall_cia">Desinstalar Aplicación</string>
|
||||
<string name="uninstalling">Desinstalando...</string>
|
||||
<string name="game_context_open_save_dir">Abrir Carpeta de Guardado</string>
|
||||
<string name="game_context_open_app">Abrir Carpeta de Aplicación</string>
|
||||
<string name="game_context_open_mods">Abrir Carpeta de Mods</string>
|
||||
<string name="game_context_open_textures">Abrir Carpeta de Texturas</string>
|
||||
<string name="game_context_open_dlc">Abrir Carpeta de DLC</string>
|
||||
<string name="game_context_open_updates">Abrir Carpeta de Actualizaciones</string>
|
||||
<string name="game_context_open_extra">Abrir Carpeta Extra</string>
|
||||
<string name="game_context_uninstall_dlc">Desinstalar DLC</string>
|
||||
<string name="game_context_uninstall_updates">Desinstalar Actualizaciones</string>
|
||||
|
||||
<!-- Cheats -->
|
||||
<string name="cheats">Trucos</string>
|
||||
|
@ -573,6 +523,10 @@ Se esperan fallos gráficos temporales cuando ésta esté activado.</string>
|
|||
<string name="use_black_backgrounds">Fondos Oscuros</string>
|
||||
<string name="use_black_backgrounds_description">Cuando uses el tema oscuro, se aplicarán fondos oscuros.</string>
|
||||
|
||||
<!-- Clock types -->
|
||||
<string name="device_clock">Reloj del Sistema</string>
|
||||
<string name="simulated_clock">Reloj Simulado</string>
|
||||
|
||||
<!-- Region names -->
|
||||
<string name="system_region_jpn">JPN</string>
|
||||
<string name="system_region_usa">USA</string>
|
||||
|
@ -798,12 +752,33 @@ Se esperan fallos gráficos temporales cuando ésta esté activado.</string>
|
|||
<string name="artic_base_connect_description">Conectar con una consola real que esté ejecutando un servidor Artic Base</string>
|
||||
<string name="artic_base_connect">Conectar con Artic Base</string>
|
||||
<string name="artic_base_enter_address">Introduce la dirección del servidor Artic Base</string>
|
||||
<string name="delay_render_thread">Atrasar hilo de renderizado del juego</string>
|
||||
<string name="delay_render_thread_description">Retrasa el hilo de renderización del juego cuando envía datos a la GPU. Ayuda con los problemas de rendimiento en las (muy pocas) aplicaciones de fps dinámicos.</string>
|
||||
|
||||
<!-- Quickload&Save-->
|
||||
<string name="emulation_quicksave_slot">Guardado rápido</string>
|
||||
<string name="emulation_quicksave">Guardado rápido</string>
|
||||
<string name="emulation_quickload">Carga rápida</string>
|
||||
<string name="emulation_occupied_quicksave_slot">Guardado rápido - %1$tF %1$tR</string>
|
||||
<string name="quicksave_saving">Guardando...</string>
|
||||
<string name="quickload_loading">Cargando...</string>
|
||||
<string name="quickload_not_found">Guardado rápido no disponible.</string>
|
||||
|
||||
<string name="miscellaneous">Misceláneos</string>
|
||||
<string name="use_artic_base_controller">Usar Artic Controller al estar conectado al servidor de Artic Base</string>
|
||||
<string name="use_artic_base_controller_description">Usa los controles dados por el Servidor de Artic Base al estar conectado a éste en vez de los controles del dispositivo configurado.</string>
|
||||
<string name="instant_debug_log">Limpiar la salida del registro en cada mensaje</string>
|
||||
<string name="instant_debug_log_description">Inmediatamente guarda el registro de depuración en el archivo. Utilice ésto si Azahar se bloquea y la salida del registro se está cortando.</string>
|
||||
<string name="disable_right_eye_render">Desactivar Renderizado de Ojo Derecho</string>
|
||||
<string name="disable_right_eye_render_description">Mejora significativamente el rendimiento en algunas aplicaciones, pero puede causar parpadeo en otros.</string>
|
||||
<string name="delay_start_lle_modules">Retrasar el comienzo con módulos LLE</string>
|
||||
<string name="delay_start_lle_modules_description">Retrasa el inicio de la aplicación cuando los módulos LLE están habilitados.</string>
|
||||
<string name="deterministic_async_operations">Operaciones asíncronas deterministas</string>
|
||||
<string name="deterministic_async_operations_description">Hace que las operaciones asíncronas sean deterministas para la depuración. Habilitar esta opción puede causar bloqueos.</string>
|
||||
<string name="enable_required_online_lle_modules">Habilitar los módulos LLE necesarios para las funciones en línea (si están instalados)</string>
|
||||
<string name="enable_required_online_lle_modules_desc">Habilita los módulos LLE necesarios para el modo multijugador en línea, acceso a la eShop, etc.</string>
|
||||
<string name="emulation_settings">Opciones de Emulación</string>
|
||||
<string name="profile_settings">Opciones de Perfil</string>
|
||||
<string name="mac_address">Dirección MAC</string>
|
||||
<string name="regenerate_mac_address">Regenerar Dirección MAC</string>
|
||||
<string name="regenerate_mac_address_description">Esto reemplazará tu dirección MAC actual por una nueva. No se recomienda hacerlo si obtuviste la dirección MAC de tu consola real con la herramienta de configuración. ¿Continuar?</string>
|
||||
</resources>
|
||||
|
|
|
@ -1,150 +1,4 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
|
||||
<!-- System settings strings -->
|
||||
<string name="emulation_settings">エミュレーション設定</string>
|
||||
<string name="enable_required_online_lle_modules">オンラインに必要なLLEモジュールを有効にする(インストール済みの場合)</string>
|
||||
<string name="enable_required_online_lle_modules_desc">eShopやオンラインマルチプレイヤーなどに必要なLLEモジュールを有効にします。</string>
|
||||
<string name="profile_settings">プロファイル設定</string>
|
||||
<string name="mac_address">MACアドレス</string>
|
||||
<string name="regenerate_mac_address">MACアドレスを再生成</string>
|
||||
<string name="regenerate_mac_address_description">これを行うと、今のMACアドレスを新しいもので置き換えます。セットアップツールで実機からMACアドレスを吸い出した場合、これをするのは推奨しません。続行しますか?</string>
|
||||
<string name="delay_render_thread">描写スレッドを遅延する</string>
|
||||
<string name="delay_render_thread_description">GPUにデータを送信する間、ゲームの描写スレッドを遅延します。動的フレームレートである(ほんの一部の)アプリケーションでのパフォーマンスが向上します。</string>
|
||||
<string name="instant_debug_log_description">デバッグログを即座にファイルに書き込みます。Azaharがクラッシュしてログが途切れるときに有効にしてください。</string>
|
||||
<string name="miscellaneous">その他</string>
|
||||
<!-- Countries -->
|
||||
<string name="japan">日本</string>
|
||||
<string name="anguilla">アンゴラ</string>
|
||||
<string name="antigua_and_barbuda">アンティグア・バーブーダ</string>
|
||||
<string name="argentina">アルゼンチン</string>
|
||||
<string name="aruba">アルバ</string>
|
||||
<string name="bahamas">バハマ</string>
|
||||
<string name="barbados">バルバドス</string>
|
||||
<string name="belize">ベリーズ</string>
|
||||
<string name="bolivia">ボリビア</string>
|
||||
<string name="brazil">ブラジル</string>
|
||||
<string name="british_virgin_islands">英領ヴァージン諸島</string>
|
||||
<string name="canada">カナダ</string>
|
||||
<string name="cayman_islands">ケイマン諸島</string>
|
||||
<string name="chile">チリ</string>
|
||||
<string name="colombia">コロンビア</string>
|
||||
<string name="costa_rica">コスタリカ</string>
|
||||
<string name="dominica">ドミニカ国</string>
|
||||
<string name="dominican_republic">ドミニカ共和国</string>
|
||||
<string name="ecuador">エクアドル</string>
|
||||
<string name="el_salvador">エルサルバドル</string>
|
||||
<string name="french_guiana">仏領ギアナ</string>
|
||||
<string name="grenada">グレナダ</string>
|
||||
<string name="guadeloupe">グアドループ</string>
|
||||
<string name="guatemala">グアテマラ</string>
|
||||
<string name="guyana">ガイアナ</string>
|
||||
<string name="haiti">ハイチ</string>
|
||||
<string name="honduras">ホンジュラス</string>
|
||||
<string name="jamaica">ジャマイカ</string>
|
||||
<string name="matinique">マルティニーク</string>
|
||||
<string name="mexico">メキシコ</string>
|
||||
<string name="monsterrat">モントセラト</string>
|
||||
<string name="netherlands_antilles">オランダ領アンティル</string>
|
||||
<string name="nicaragua">ニカラグア</string>
|
||||
<string name="panama">パナマ</string>
|
||||
<string name="paraguay">パラグアイ</string>
|
||||
<string name="peru">ペルー</string>
|
||||
<string name="saint_kittis_and_nevis">セントクリストファー・ネーヴィス</string>
|
||||
<string name="saint_lucia">セントルシア</string>
|
||||
<string name="saint_vincent_and_the_grenadines">セントビンセント及びグレナディーン諸島</string>
|
||||
<string name="suriname">スリナム</string>
|
||||
<string name="trinidad_and_tobago">トリニダード・トバゴ</string>
|
||||
<string name="turks_and_caicos_islands">タークス・カイコス諸島</string>
|
||||
<string name="united_states">アメリカ合衆国</string>
|
||||
<string name="uruguay">ウルグアイ</string>
|
||||
<string name="us_virgin_islands">米領ヴァージン諸島</string>
|
||||
<string name="venezuela">ベネズエラ</string>
|
||||
<string name="albania">アルバニア</string>
|
||||
<string name="australia">Australia</string>
|
||||
<string name="austria">オーストリア</string>
|
||||
<string name="belgium">ベルギー</string>
|
||||
<string name="bosnia_and_herzegovnia">ボスニア・ヘルツェゴビナ</string>
|
||||
<string name="botswana">ボツワナ</string>
|
||||
<string name="bulgaria">ブルガリア</string>
|
||||
<string name="croatia">クロアチア</string>
|
||||
<string name="cyprus">キプロス</string>
|
||||
<string name="czech_republic">チェコ共和国</string>
|
||||
<string name="denmark">デンマーク</string>
|
||||
<string name="estonia">エストニア</string>
|
||||
<string name="finland">フィンランド</string>
|
||||
<string name="france">フランス</string>
|
||||
<string name="germany">ドイツ</string>
|
||||
<string name="greece">ギリシャ</string>
|
||||
<string name="hungary">ハンガリー</string>
|
||||
<string name="iceland">アイスランド</string>
|
||||
<string name="ireland">アイルランド</string>
|
||||
<string name="italy">イタリア</string>
|
||||
<string name="latvia">ラトビア</string>
|
||||
<string name="lesotho">レソト</string>
|
||||
<string name="liechtenstein">リヒテンシュタイン</string>
|
||||
<string name="lithuania">リトアニア</string>
|
||||
<string name="luxembourg">ルクセンブルク</string>
|
||||
<string name="macedonia">マケドニア</string>
|
||||
<string name="malta">マルタ</string>
|
||||
<string name="montenegro">モンテネグロ</string>
|
||||
<string name="mozambique">モザンビーク</string>
|
||||
<string name="namibia">ナミビア</string>
|
||||
<string name="netherlands">オランダ</string>
|
||||
<string name="new_zealand">ニュージーランド</string>
|
||||
<string name="norway">ノルウェー</string>
|
||||
<string name="poland">ポーランド</string>
|
||||
<string name="portugal">ポルトガル</string>
|
||||
<string name="romania">ルーマニア</string>
|
||||
<string name="russia">ロシア</string>
|
||||
<string name="serbia">セルビア</string>
|
||||
<string name="slovakia">スロバキア</string>
|
||||
<string name="slovenia">スロベニア</string>
|
||||
<string name="south_africa">南アフリカ</string>
|
||||
<string name="spain">スペイン</string>
|
||||
<string name="swaziland">スワジランド</string>
|
||||
<string name="sweden">スウェーデン</string>
|
||||
<string name="switzerland">スイス</string>
|
||||
<string name="turkey">トルコ</string>
|
||||
<string name="united_kingdom">イギリス</string>
|
||||
<string name="zambia">ザンビア</string>
|
||||
<string name="zimbabwe">ジンバブエ</string>
|
||||
<string name="azerbaijan">アゼルバイジャン</string>
|
||||
<string name="mauritania">モーリタニア</string>
|
||||
<string name="mali">マリ</string>
|
||||
<string name="niger">ニジェール</string>
|
||||
<string name="chad">チャド</string>
|
||||
<string name="sudan">スーダン</string>
|
||||
<string name="eritrea">エリトリア</string>
|
||||
<string name="djibouti">ジブチ</string>
|
||||
<string name="somalia">ソマリア</string>
|
||||
<string name="andorra">アンドラ</string>
|
||||
<string name="gibraltar">ジブラルタル</string>
|
||||
<string name="guernsey">ガーンジー</string>
|
||||
<string name="isle_of_man">マン島</string>
|
||||
<string name="jersey">ジャージー</string>
|
||||
<!-- Months -->
|
||||
<string name="january">1月</string>
|
||||
<string name="february">2月</string>
|
||||
<string name="march">3月</string>
|
||||
<string name="april">4月</string>
|
||||
<string name="may">5月</string>
|
||||
<string name="june">6月</string>
|
||||
<string name="july">7月</string>
|
||||
<string name="august">8月</string>
|
||||
<string name="september">9月</string>
|
||||
<string name="october">10月</string>
|
||||
<string name="november">11月</string>
|
||||
<string name="december">12月</string>
|
||||
|
||||
<string name="artic_base">Artic Base</string>
|
||||
<string name="artic_base_connect_description">Artic Baseのサーバーを実行している実機に接続</string>
|
||||
<string name="artic_base_connect">Artic Baseに接続</string>
|
||||
<string name="artic_base_enter_address">Artic Baseのサーバーアドレスを入力してください</string>
|
||||
|
||||
<!-- Quickload&Save-->
|
||||
<string name="emulation_quicksave_slot">クイックセーブ</string>
|
||||
<string name="emulation_quicksave">クイックセーブ</string>
|
||||
<string name="emulation_quickload">クイックロード</string>
|
||||
<string name="emulation_occupied_quicksave_slot">クイックセーブ-%1$tF%1$tR</string>
|
||||
</resources>
|
||||
|
|
|
@ -2,22 +2,18 @@
|
|||
<resources>
|
||||
|
||||
<string name="app_notification_channel_description">Azahar 3DS emulatorius</string>
|
||||
<string name="app_notification_running">Azahar veikia</string>
|
||||
<string name="start">Pradėti</string>
|
||||
<string name="cancelling">Atšaukiama...</string>
|
||||
<string name="dont_show_again">Daugiau niekada nerodyti</string>
|
||||
|
||||
<!-- Home Strings -->
|
||||
<string name="grid_menu_core_settings">Nustatymai</string>
|
||||
<string name="home_options">Pasirinkimai</string>
|
||||
<string name="home_search">Paieška</string>
|
||||
<string name="home_games">Aplikacijos</string>
|
||||
<string name="share_log">Dalintis žurnalu</string>
|
||||
<string name="share_log_not_found">Žurnalas nerastas</string>
|
||||
<string name="about">Apie</string>
|
||||
<string name="citra_description">Atviro kodo 3DS emulatorius</string>
|
||||
<string name="select_gpu_driver_install">Instaliuoti</string>
|
||||
<string name="licenses">Licencijos</string>
|
||||
<!-- Setup strings -->
|
||||
<string name="welcome">Sveiki!</string>
|
||||
<string name="get_started">Pradėti</string>
|
||||
<string name="step_complete">Baigta!</string>
|
||||
<string name="done">Baigta</string>
|
||||
<string name="text_continue">Tęsti</string>
|
||||
<string name="notifications">Pranešimai</string>
|
||||
|
@ -28,57 +24,38 @@
|
|||
<string name="warning_help">Pagalba</string>
|
||||
<string name="warning_skip">Praleisti</string>
|
||||
<string name="warning_cancel">Atšaukti</string>
|
||||
<string name="select_citra_user_folder">Pasirinkti vartotojo aplanką</string>
|
||||
<string name="select">Pasirinkti</string>
|
||||
<string name="cannot_skip">Tu negali praleisti šio žingsnio</string>
|
||||
<string name="search_recently_played">Nesenai žaista</string>
|
||||
<string name="search_recently_added">Nesenai pridėta</string>
|
||||
<string name="button_swap">Apkeisti ekranus</string>
|
||||
<!-- System files strings -->
|
||||
<string name="setup_system_files">Sistemos failai</string>
|
||||
<string name="init_clock">Laikrodis</string>
|
||||
<!-- System settings strings -->
|
||||
<string name="username">Vartotojo vardas</string>
|
||||
<string name="clock">Laikrodis</string>
|
||||
<string name="init_clock">Laikrodis</string>
|
||||
<string name="device_clock">Įrenginio laikas</string>
|
||||
<string name="simulated_clock">Netikras laikas</string>
|
||||
<string name="emulated_region">Regionas</string>
|
||||
<string name="emulated_language">Kalba</string>
|
||||
<string name="birthday">Gimtadienis</string>
|
||||
<string name="birthday_month">Mėnesis</string>
|
||||
<string name="birthday_day">Diena</string>
|
||||
<string name="country">Šalis</string>
|
||||
<string name="console_id">Konsolės ID</string>
|
||||
<string name="camera_device">Kamera</string>
|
||||
<string name="camera_facing_front">Priekio</string>
|
||||
<string name="camera_facing_back">Galo</string>
|
||||
<string name="camera_facing_external">Išorinė</string>
|
||||
<string name="image_flip">Apversti</string>
|
||||
|
||||
<string name="graphics_api">Grafikos API</string>
|
||||
<string name="shaders_accurate_mul">Tikslus atkūrimas</string>
|
||||
<string name="shaders_accurate_mul">Tikslus atkurimas</string>
|
||||
<string name="frame_limit_enable">Riboti greitį</string>
|
||||
<string name="internal_resolution">Vidinė rezoliucija </string>
|
||||
<string name="factor3d">Gylis</string>
|
||||
<!-- Audio settings strings -->
|
||||
<string name="audio_volume">Garsumas</string>
|
||||
<string name="audio_stretch">Garso ištempimas</string>
|
||||
<string name="realtime_audio">Įjungti realaus laiko garsą</string>
|
||||
<string name="layout_screen_orientation_auto_sensor">Automatinis</string>
|
||||
<string name="learn_more">Sužinoti daugiau</string>
|
||||
<string name="close">Uždaryti</string>
|
||||
<string name="reset_all_settings">Atstatyti visus nustatymus?</string>
|
||||
<string name="start">Pradėti</string>
|
||||
<string name="cancelling">Atšaukiama...</string>
|
||||
<string name="important">Svarbu</string>
|
||||
<string name="dont_show_again">Daugiau niekada nerodyti</string>
|
||||
|
||||
<!-- Preferences Screen -->
|
||||
<string name="preferences_settings">Nustatymai</string>
|
||||
<string name="preferences_system">Sistema</string>
|
||||
<string name="preferences_camera">Kamera</string>
|
||||
<string name="preferences_graphics">Grafika</string>
|
||||
<string name="preferences_audio">Garsas</string>
|
||||
<string name="preferences_theme">Tema ir Spalva</string>
|
||||
<string name="preferences_layout">Išdėstymas</string>
|
||||
|
||||
<string name="emulation_show_fps">Rodyti FPS</string>
|
||||
|
@ -86,8 +63,6 @@
|
|||
<string name="emulation_done">Baigta</string>
|
||||
<string name="emulation_close_game">Uždaryti žaidimą</string>
|
||||
<string name="menu_emulation_amiibo_remove">Pašalinti</string>
|
||||
<string name="pause_emulation">Pristabdyti Emuliaciją</string>
|
||||
<string name="resume_emulation">Atstabdyti Emuliaciją</string>
|
||||
<string name="i_forgot">Aš pamiršau</string>
|
||||
<string name="camera">Kamera</string>
|
||||
<!-- Microphone -->
|
||||
|
@ -95,49 +70,12 @@
|
|||
<string name="continue_button">Tęsti</string>
|
||||
<!-- About Game Dialog -->
|
||||
<string name="play">Žaisti</string>
|
||||
<string name="cheats_name">Pavadinimas</string>
|
||||
<string name="cheats_code">Kodas</string>
|
||||
<string name="cheats_edit">Redaguoti</string>
|
||||
<string name="cheats_delete">Ištrinti</string>
|
||||
<!-- Black backgrounds theme -->
|
||||
<string name="use_black_backgrounds">Juodas fonas</string>
|
||||
<string name="language_english">Anglų</string>
|
||||
<!-- Graphics API names -->
|
||||
<string name="opengles">OpenGLES</string>
|
||||
<string name="vulkan">Vulkan</string>
|
||||
|
||||
<!-- Sound output modes -->
|
||||
<string name="mono">Mono</string>
|
||||
<string name="stereo">Stereo</string>
|
||||
<string name="surround">Erdvinis</string>
|
||||
|
||||
<!-- Countries -->
|
||||
<string name="japan">Japonija</string>
|
||||
<string name="anguilla">Angilija</string>
|
||||
<string name="antigua_and_barbuda">Antigva ir Barbuda</string>
|
||||
<string name="argentina">Argentina</string>
|
||||
<string name="aruba">Aruba</string>
|
||||
<string name="bahamas">Bahamos</string>
|
||||
<string name="barbados">Barbadosas</string>
|
||||
<string name="belize">Belizas</string>
|
||||
<string name="bolivia">Bolivija</string>
|
||||
<string name="brazil">Brazilija</string>
|
||||
<string name="canada">Kanada</string>
|
||||
<string name="chile">Čilė</string>
|
||||
<string name="colombia">Kolumbija</string>
|
||||
<string name="costa_rica">Kosta Rika</string>
|
||||
<string name="dominica">Dominika</string>
|
||||
<string name="dominican_republic">Dominikos respublika</string>
|
||||
<string name="ecuador">Ekvadoras</string>
|
||||
<string name="el_salvador">El Salvadoras</string>
|
||||
<string name="french_guiana">Prancūzų Gviana</string>
|
||||
<string name="grenada">Grenada</string>
|
||||
<string name="guadeloupe">Gvadelupa</string>
|
||||
<string name="jamaica">Jamaika</string>
|
||||
<string name="mexico">Meksika</string>
|
||||
<string name="peru">Peru</string>
|
||||
<string name="united_states">Jungtinės Amerikos Valstijos</string>
|
||||
<string name="venezuela">Venesuela</string>
|
||||
<!-- Clock types -->
|
||||
<string name="device_clock">Įrenginio laikas</string>
|
||||
<string name="albania">Albanija</string>
|
||||
<string name="australia">Australija</string>
|
||||
<string name="austria">Austrija</string>
|
||||
|
@ -151,69 +89,5 @@
|
|||
<string name="denmark">Danija</string>
|
||||
<string name="estonia">Estija</string>
|
||||
<string name="finland">Suomija</string>
|
||||
<string name="france">Prancūzija</string>
|
||||
<string name="germany">Vokietija</string>
|
||||
<string name="greece">Graikija</string>
|
||||
<string name="hungary">Vengrija</string>
|
||||
<string name="iceland">Islandija</string>
|
||||
<string name="ireland">Airija</string>
|
||||
<string name="italy">Italija</string>
|
||||
<string name="latvia">Latvija</string>
|
||||
<string name="lesotho">Lesotas</string>
|
||||
<string name="liechtenstein">Lichtenšteinas</string>
|
||||
<string name="lithuania">Lietuva</string>
|
||||
<string name="luxembourg">Liuksemburgas</string>
|
||||
<string name="macedonia">Makedonija</string>
|
||||
<string name="malta">Malta</string>
|
||||
<string name="montenegro">Juodkalnija</string>
|
||||
<string name="mozambique">Mozambikas</string>
|
||||
<string name="namibia">Namibija</string>
|
||||
<string name="netherlands">Nyderlandai</string>
|
||||
<string name="new_zealand">Naujoji Zelandija</string>
|
||||
<string name="norway">Norvegija</string>
|
||||
<string name="poland">Lenkija</string>
|
||||
<string name="portugal">Portugalija</string>
|
||||
<string name="romania">Rumunija</string>
|
||||
<string name="russia">Rusija</string>
|
||||
<string name="serbia">Serbija</string>
|
||||
<string name="slovakia">Slovakija</string>
|
||||
<string name="slovenia">Slovėnija</string>
|
||||
<string name="south_africa">Pietų Afrika</string>
|
||||
<string name="spain">Ispanija</string>
|
||||
<string name="swaziland">Svazilandas</string>
|
||||
<string name="sweden">Švedija</string>
|
||||
<string name="switzerland">Šveicarija</string>
|
||||
<string name="turkey">Turkija</string>
|
||||
<string name="united_kingdom">Jungtinė Karalystė</string>
|
||||
<string name="zambia">Zambija</string>
|
||||
<string name="zimbabwe">Zimbabvė</string>
|
||||
<string name="azerbaijan">Azerbaidžanas</string>
|
||||
<string name="mauritania">Mauritanija</string>
|
||||
<string name="mali">Malis</string>
|
||||
<string name="niger">Nigeris</string>
|
||||
<string name="chad">Čadas</string>
|
||||
<string name="sudan">Sudanas</string>
|
||||
<string name="andorra">Andora</string>
|
||||
<string name="taiwan">Taivanas</string>
|
||||
<string name="south_korea">Pietų Korėja</string>
|
||||
<string name="hong_kong">Hong Kongas</string>
|
||||
<string name="macau">Makao</string>
|
||||
<string name="indonesia">Indonezija</string>
|
||||
<string name="singapore">Singapūras</string>
|
||||
<string name="thailand">Tailandas</string>
|
||||
<string name="philippines">Filipinai</string>
|
||||
<string name="malaysia">Malaizija</string>
|
||||
<string name="china">Kinija</string>
|
||||
<string name="united_arab_emirates">Jungtiniai Arabų Emyratai</string>
|
||||
<string name="india">Indija</string>
|
||||
<string name="egypt">Egiptas</string>
|
||||
<string name="oman">Omanas</string>
|
||||
<string name="san_marino">San Marinas</string>
|
||||
<string name="vatican_city">Vatikanas</string>
|
||||
<!-- Months -->
|
||||
<string name="january">Sausis</string>
|
||||
<string name="february">Vasaris</string>
|
||||
<string name="march">Kovas</string>
|
||||
<string name="april">Balandis</string>
|
||||
<string name="may">Gegužė</string>
|
||||
</resources>
|
||||
|
|