mirror of
https://git.eden-emu.dev/eden-emu/eden.git
synced 2026-08-15 21:19:47 +00:00
Compare commits
12 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 96b254a174 | |||
| 8881d9c1f4 | |||
| d20cdb1b47 | |||
| 01964003bc | |||
| 15f5d1f1bf | |||
| 05584f5972 | |||
| e5472ad065 | |||
| 57e388d441 | |||
| a9bb27a78d | |||
| 8ba13d68eb | |||
| 8a7afc1925 | |||
| 49e410d0d7 |
@@ -1,9 +1,9 @@
|
||||
name: tx-pull
|
||||
|
||||
on:
|
||||
# monday at 4pm
|
||||
# tuesday, saturday at 2pm
|
||||
schedule:
|
||||
- cron: '0 16 * * 1'
|
||||
- cron: '0 14 * * 2,6'
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
|
||||
@@ -3,7 +3,7 @@ description: File a bug report
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: Tech support does not belong here. You should only file an issue here if you think you have experienced an actual bug with Eden.
|
||||
value: Tech support does not belong here. You should only file an issue here if you think you have experienced an actual bug with yuzu.
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
label: Is there an existing issue for this?
|
||||
@@ -43,7 +43,7 @@ body:
|
||||
id: log
|
||||
attributes:
|
||||
label: Log File
|
||||
description: A log file will help our developers to better diagnose and fix the issue. Instructions can be found [here](https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/user/HowToAccessLogs.md).
|
||||
description: A log file will help our developers to better diagnose and fix the issue. Instructions can be found [here](https://yuzu-emu.org/help/reference/log-files).
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
|
||||
@@ -4,7 +4,7 @@ labels: "request"
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: Tech support does not belong here. You should only file an issue here if you are requesting a feature you believe would make Eden better.
|
||||
value: Tech support does not belong here. You should only file an issue here if you are requesting a feature you believe would make yuzu better.
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
label: Is there an existing issue for this?
|
||||
@@ -23,6 +23,6 @@ body:
|
||||
id: why-feature
|
||||
attributes:
|
||||
label: Why would this feature be useful?
|
||||
description: A brief description of why this feature would make Eden better.
|
||||
description: A brief description of why this feature would make yuzu better.
|
||||
validations:
|
||||
required: true
|
||||
|
||||
+20
-50
@@ -28,23 +28,23 @@ if (NOT DEFINED ARCHITECTURE)
|
||||
endif()
|
||||
|
||||
# Needed for FFmpeg w/ VAAPI and DRM
|
||||
if (OPENBSD)
|
||||
if (PLATFORM_OPENBSD)
|
||||
# OpenBSD 7.8 broke libcxx when upgrading, so we must define the PSTL backend manually
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -I${CMAKE_SYSROOT}/usr/X11R6/include -D_LIBCPP_PSTL_BACKEND_SERIAL=1")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -I${CMAKE_SYSROOT}/usr/X11R6/include -D_LIBCPP_PSTL_BACKEND_SERIAL=1")
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -L${CMAKE_SYSROOT}/usr/X11R6/lib")
|
||||
elseif (NETBSD)
|
||||
elseif (PLATFORM_NETBSD)
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -I${CMAKE_SYSROOT}/usr/X11R7/include -I${CMAKE_SYSROOT}/usr/pkg/include/c++/v1")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -I${CMAKE_SYSROOT}/usr/X11R7/include -I${CMAKE_SYSROOT}/usr/pkg/include/c++/v1")
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -L${CMAKE_SYSROOT}/usr/X11R7/lib")
|
||||
endif()
|
||||
|
||||
# NetBSD: Fun for the whole family!
|
||||
if (NETBSD)
|
||||
if (PLATFORM_NETBSD)
|
||||
set(ENV{PKG_CONFIG_PATH} "${PKG_CONFIG_PATH}:${CMAKE_SYSROOT}/usr/pkg/lib/ffmpeg7/pkgconfig")
|
||||
endif()
|
||||
|
||||
cmake_dependent_option(YUZU_STATIC_ROOM "Build a static room executable only (CI only)" OFF "LINUX" OFF)
|
||||
cmake_dependent_option(YUZU_STATIC_ROOM "Build a static room executable only (CI only)" OFF "PLATFORM_LINUX" OFF)
|
||||
if (YUZU_STATIC_ROOM)
|
||||
set(YUZU_ROOM ON)
|
||||
set(YUZU_ROOM_STANDALONE ON)
|
||||
@@ -79,10 +79,6 @@ set(YUZU_QT_MIRROR "" CACHE STRING "What mirror to use for downloading the bundl
|
||||
cmake_dependent_option(YUZU_USE_BUNDLED_QT "Download bundled Qt binaries" "${MSVC}" "ENABLE_QT" OFF)
|
||||
|
||||
option(ENABLE_DEBUG_TOOLS "Enable debugging tools (maxwell disassembler, SPIRV translator, etc)" OFF)
|
||||
option(ENABLE_WERROR "Enable -Werror diagnostics" ON)
|
||||
|
||||
# Lossless Scaling frame generation. Only Android.
|
||||
cmake_dependent_option(ENABLE_LSFG "Enable Lossless Scaling frame generation" ON "ANDROID" OFF)
|
||||
|
||||
# non-linux bundled qt are static
|
||||
if (YUZU_USE_BUNDLED_QT AND (APPLE OR NOT UNIX))
|
||||
@@ -161,19 +157,6 @@ if (CXX_CLANG_CL)
|
||||
$<$<COMPILE_LANGUAGE:C,CXX>:-Wno-reserved-identifier>
|
||||
$<$<COMPILE_LANGUAGE:C,CXX>:-Wno-deprecated-declarations>
|
||||
$<$<COMPILE_LANGUAGE:C,CXX>:-Wno-cast-function-type-mismatch>
|
||||
$<$<COMPILE_LANGUAGE:C,CXX>:-Wno-c99-extensions>
|
||||
$<$<COMPILE_LANGUAGE:C,CXX>:-Wno-c++17-compat>
|
||||
$<$<COMPILE_LANGUAGE:C,CXX>:-Wno-c++11-compat-reserved-user-defined-literal>
|
||||
$<$<COMPILE_LANGUAGE:C,CXX>:-Wno-c++11-compat-deprecated-writable-strings>
|
||||
$<$<COMPILE_LANGUAGE:C,CXX>:-Wno-c++11-compat-pedantic>
|
||||
$<$<COMPILE_LANGUAGE:C,CXX>:-Wno-c++11-compat>
|
||||
$<$<COMPILE_LANGUAGE:C,CXX>:-Wno-c++0x-compat>
|
||||
$<$<COMPILE_LANGUAGE:C,CXX>:-Wno-c++98-c++11-compat-binary-literal>
|
||||
$<$<COMPILE_LANGUAGE:C,CXX>:-Wno-c++98-compat-pedantic>
|
||||
$<$<COMPILE_LANGUAGE:C,CXX>:-Wno-c++98-compat>
|
||||
$<$<COMPILE_LANGUAGE:C,CXX>:-Wno-c99-compat>
|
||||
$<$<COMPILE_LANGUAGE:C,CXX>:-Wno-c98-compat>
|
||||
$<$<COMPILE_LANGUAGE:C,CXX>:-Wno-c99-extensions>
|
||||
$<$<COMPILE_LANGUAGE:C,CXX>:/EHsc>)
|
||||
# REQUIRED CPU features IN Windows-amd64
|
||||
if (ARCHITECTURE_x86_64)
|
||||
@@ -227,7 +210,7 @@ endif()
|
||||
|
||||
# ffmpeg
|
||||
option(YUZU_USE_BUNDLED_FFMPEG "Download bundled FFmpeg" ${EXT_DEFAULT})
|
||||
cmake_dependent_option(YUZU_USE_EXTERNAL_FFMPEG "Build FFmpeg from external source" "${SOLARIS}" "NOT WIN32 AND NOT ANDROID" OFF)
|
||||
cmake_dependent_option(YUZU_USE_EXTERNAL_FFMPEG "Build FFmpeg from external source" "${PLATFORM_SUN}" "NOT WIN32 AND NOT ANDROID" OFF)
|
||||
|
||||
# sirit
|
||||
set(BUNDLED_SIRIT_DEFAULT OFF)
|
||||
@@ -238,7 +221,7 @@ endif()
|
||||
option(YUZU_USE_BUNDLED_SIRIT "Download bundled sirit" ${BUNDLED_SIRIT_DEFAULT})
|
||||
|
||||
# FreeBSD 15+ has libusb, versions below should disable it
|
||||
cmake_dependent_option(ENABLE_LIBUSB "Enable the use of LibUSB" ON "WIN32 OR LINUX OR FREEBSD OR APPLE" OFF)
|
||||
cmake_dependent_option(ENABLE_LIBUSB "Enable the use of LibUSB" ON "WIN32 OR PLATFORM_LINUX OR PLATFORM_FREEBSD OR APPLE" OFF)
|
||||
|
||||
cmake_dependent_option(ENABLE_OPENGL "Enable OpenGL" ON "NOT (WIN32 AND ARCHITECTURE_arm64) AND NOT APPLE" OFF)
|
||||
mark_as_advanced(FORCE ENABLE_OPENGL)
|
||||
@@ -252,7 +235,7 @@ option(YUZU_TESTS "Compile tests" "${BUILD_TESTING}")
|
||||
|
||||
# Install udev rules on Linux (mainly for gyros)
|
||||
# Only acts on joysticks and nothing else.
|
||||
cmake_dependent_option(YUZU_INSTALL_UDEV_RULES "Install udev rules for gyro access" OFF "LINUX" OFF)
|
||||
cmake_dependent_option(YUZU_INSTALL_UDEV_RULES "Install udev rules for gyro access" OFF "PLATFORM_LINUX" OFF)
|
||||
|
||||
option(YUZU_DOWNLOAD_ANDROID_VVL "Download validation layer binary for android" ON)
|
||||
|
||||
@@ -265,7 +248,7 @@ cmake_dependent_option(YUZU_ROOM_STANDALONE "Enable standalone room executable"
|
||||
|
||||
cmake_dependent_option(YUZU_CMD "Compile the eden-cli executable" ON "NOT ANDROID" OFF)
|
||||
|
||||
cmake_dependent_option(YUZU_CRASH_DUMPS "Compile crash dump (Minidump) support" OFF "WIN32 OR LINUX" OFF)
|
||||
cmake_dependent_option(YUZU_CRASH_DUMPS "Compile crash dump (Minidump) support" OFF "WIN32 OR PLATFORM_LINUX" OFF)
|
||||
|
||||
option(YUZU_DOWNLOAD_TIME_ZONE_DATA "Always download time zone binaries" ON)
|
||||
set(YUZU_TZDB_PATH "" CACHE STRING "Path to a pre-downloaded timezone database")
|
||||
@@ -275,7 +258,7 @@ cmake_dependent_option(YUZU_USE_BUNDLED_MOLTENVK "Download bundled MoltenVK lib"
|
||||
option(YUZU_DISABLE_LLVM "Disable LLVM (useful for CI)" OFF)
|
||||
|
||||
set(DEFAULT_YUZU_USE_BUNDLED_OPENSSL OFF)
|
||||
if (EXT_DEFAULT OR SOLARIS OR OPENBSD)
|
||||
if (EXT_DEFAULT OR PLATFORM_SUN OR PLATFORM_OPENBSD)
|
||||
set(DEFAULT_YUZU_USE_BUNDLED_OPENSSL ON)
|
||||
endif()
|
||||
|
||||
@@ -298,7 +281,7 @@ if(EXISTS ${PROJECT_SOURCE_DIR}/hooks/pre-commit AND NOT EXISTS ${PROJECT_SOURCE
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if (ARCHITECTURE_arm64 AND (ANDROID OR LINUX))
|
||||
if (ARCHITECTURE_arm64 AND (ANDROID OR PLATFORM_LINUX))
|
||||
set(HAS_NCE 1)
|
||||
add_compile_definitions(HAS_NCE=1)
|
||||
endif()
|
||||
@@ -307,7 +290,7 @@ if (YUZU_ROOM)
|
||||
add_compile_definitions(YUZU_ROOM)
|
||||
endif()
|
||||
|
||||
if (UNIX AND NOT (LINUX OR WIN32))
|
||||
if (UNIX AND NOT (PLATFORM_LINUX OR WIN32))
|
||||
if(CXX_APPLE OR CXX_CLANG)
|
||||
# libc++ has stop_token and jthread as experimental
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fexperimental-library")
|
||||
@@ -342,26 +325,13 @@ if (CXX_GCC OR CXX_CLANG)
|
||||
endif()
|
||||
elseif(ARCHITECTURE_arm64)
|
||||
# See https://gcc.gnu.org/onlinedocs/gcc/AArch64-Options.html
|
||||
set(YUZU_BUILD_PRESET "custom" CACHE STRING "Build preset to use. One of: custom, generic, armv9, native")
|
||||
set(mtune generic)
|
||||
set(armv8_2_target armv8.2-a+fp16+dotprod)
|
||||
|
||||
if (ANDROID)
|
||||
set(YUZU_BUILD_PRESET "custom" CACHE STRING "Build preset to use. One of: custom, armv8.2, armv9, native")
|
||||
set(march ${armv8_2_target})
|
||||
|
||||
if (${YUZU_BUILD_PRESET} STREQUAL "armv9")
|
||||
set(march armv9-a)
|
||||
endif()
|
||||
else()
|
||||
set(YUZU_BUILD_PRESET "custom" CACHE STRING "Build preset to use. One of: custom, generic, armv8.2, armv9, native")
|
||||
|
||||
if (${YUZU_BUILD_PRESET} STREQUAL "generic")
|
||||
set(march armv8-a)
|
||||
elseif (${YUZU_BUILD_PRESET} STREQUAL "armv8.2")
|
||||
set(march ${armv8_2_target})
|
||||
elseif (${YUZU_BUILD_PRESET} STREQUAL "armv9")
|
||||
set(march armv9-a)
|
||||
endif()
|
||||
if (${YUZU_BUILD_PRESET} STREQUAL "generic")
|
||||
set(march armv8-a)
|
||||
elseif (${YUZU_BUILD_PRESET} STREQUAL "armv9")
|
||||
set(march armv9-a)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
@@ -434,7 +404,7 @@ if (Boost_ADDED)
|
||||
|
||||
if (NOT MSVC OR CXX_CLANG)
|
||||
# boost sucks
|
||||
if (SOLARIS)
|
||||
if (PLATFORM_SUN)
|
||||
add_compile_options($<$<COMPILE_LANGUAGE:C,CXX>:-pthreads>)
|
||||
endif()
|
||||
|
||||
@@ -538,9 +508,9 @@ elseif (WIN32)
|
||||
# PSAPI is the Process Status API
|
||||
set(PLATFORM_LIBRARIES ${PLATFORM_LIBRARIES} psapi imm32 version crypt32 rpcrt4 gdi32 wldap32 mswsock)
|
||||
endif()
|
||||
elseif (MANAGARM)
|
||||
elseif (PLATFORM_MANAGARM)
|
||||
set(PLATFORM_LIBRARIES iconv intl)
|
||||
elseif (HAIKUOS)
|
||||
elseif (PLATFORM_HAIKU)
|
||||
# Haiku is so special :)
|
||||
set(PLATFORM_LIBRARIES bsd /boot/system/lib/libnetwork.so)
|
||||
elseif (CMAKE_SYSTEM_NAME MATCHES "^(Linux|kFreeBSD|GNU|SunOS)$")
|
||||
@@ -634,7 +604,7 @@ if (ENABLE_QT)
|
||||
|
||||
# Best practice is to ask for all components at once, so they are from the same version
|
||||
set(YUZU_QT_COMPONENTS Core Widgets Charts Concurrent Gui)
|
||||
if (LINUX OR FREEBSD)
|
||||
if (PLATFORM_LINUX OR PLATFORM_FREEBSD)
|
||||
list(APPEND YUZU_QT_COMPONENTS DBus)
|
||||
# yes Qt, we get it
|
||||
set(QT_NO_PRIVATE_MODULE_WARNING ON)
|
||||
|
||||
@@ -13,7 +13,7 @@ find_package_handle_standard_args(Opus
|
||||
VERSION_VAR OPUS_VERSION
|
||||
)
|
||||
|
||||
if (MSYS2)
|
||||
if (PLATFORM_MSYS)
|
||||
FixMsysPath(PkgConfig::OPUS)
|
||||
endif()
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ find_package_handle_standard_args(enet
|
||||
VERSION_VAR ENET_VERSION
|
||||
)
|
||||
|
||||
if (MSYS2)
|
||||
if (PLATFORM_MSYS)
|
||||
FixMsysPath(PkgConfig::ENET)
|
||||
endif()
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ find_package_handle_standard_args(libusb
|
||||
VERSION_VAR LIBUSB_VERSION
|
||||
)
|
||||
|
||||
if (MSYS2)
|
||||
if (PLATFORM_MSYS)
|
||||
FixMsysPath(PkgConfig::LIBUSB)
|
||||
endif()
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ else()
|
||||
find_package(PkgConfig QUIET)
|
||||
pkg_search_module(LZ4 QUIET IMPORTED_TARGET liblz4)
|
||||
|
||||
if (MSYS2)
|
||||
if (PLATFORM_MSYS)
|
||||
FixMsysPath(PkgConfig::LZ4)
|
||||
endif()
|
||||
|
||||
|
||||
+2
-6
@@ -21,14 +21,10 @@ Eden is free, open-source, copyleft software, licensed under the terms of the [G
|
||||
### Policies
|
||||
|
||||
- No LLM or AI usage, *period*, for patches, pull requests, issues, comments, debugging, brainstorming, etc.
|
||||
- For details on why, see the [detailed AI policy](docs/policies/AI.md).
|
||||
- Usage of any form of profanity or otherwise unsavory language is generally discouraged.
|
||||
- This is primarily because it rarely helps to actually understand what's going on.
|
||||
- Remember that your comments should be focused and actually address what's happening. With very few exceptions, expletives are actively detrimental at best.
|
||||
- For details on why, see the [detailed AI policy](docs/AI.md).
|
||||
- New code must follow the same general style as the surrounding codebase. Exceptions may be granted in certain cases.
|
||||
- Maintainers reserve the right to change your patches and pull requests at will. We will try to avoid this.
|
||||
- You should generally respect all decisions made by the [code owners](docs/CODEOWNERS) in your particular subsystem.
|
||||
- However, if you feel they are overstepping or are incorrect, don't be afraid to stand your ground! Maintainers are not always correct.
|
||||
- You should respect all decisions made by the [code owners](docs/CODEOWNERS) in your particular subsystem. If you feel they are overstepping or are incorrect, don't be afraid to stand your ground!
|
||||
- While we do *not* adhere to the terms of a formal code of conduct, you will generally be expected to respect other developers, contributors, and community members.
|
||||
- You **must** have basic knowledge of [Git](https://git-scm.com/learn). Knowing how to manage your branches and follow proper fork policies is a necessity.
|
||||
|
||||
|
||||
Vendored
+45
-45
@@ -4332,58 +4332,58 @@ To invert the axes, first move your joystick vertically, and then horizontally.<
|
||||
<translation>[انتظار]</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1578"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1576"/>
|
||||
<source>New Profile</source>
|
||||
<translation>ملف تعريف جديد</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1578"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1576"/>
|
||||
<source>Enter a profile name:</source>
|
||||
<translation>أدخل اسم ملف التعريف:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1586"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1594"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1584"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1592"/>
|
||||
<source>Create Input Profile</source>
|
||||
<translation>إنشاء ملف تعريف الإدخال</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1587"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1585"/>
|
||||
<source>The given profile name is not valid!</source>
|
||||
<translation>اسم ملف التعريف المحدد غير صالح!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1595"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1593"/>
|
||||
<source>Failed to create the input profile "%1"</source>
|
||||
<translation>"%1" فشل في إنشاء ملف تعريف الإدخال</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1615"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1613"/>
|
||||
<source>Delete Input Profile</source>
|
||||
<translation>حذف ملف تعريف الإدخال</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1616"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1614"/>
|
||||
<source>Failed to delete the input profile "%1"</source>
|
||||
<translation>"%1" فشل في مسح ملف تعريف الإدخال</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1638"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1636"/>
|
||||
<source>Load Input Profile</source>
|
||||
<translation>تحميل ملف تعريف الإدخال</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1639"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1637"/>
|
||||
<source>Failed to load the input profile "%1"</source>
|
||||
<translation>"%1" فشل في تحميل ملف تعريف الإدخال</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1664"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1662"/>
|
||||
<source>Save Input Profile</source>
|
||||
<translation>حفظ ملف تعريف الإدخال</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1665"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1663"/>
|
||||
<source>Failed to save the input profile "%1"</source>
|
||||
<translation>"%1" فشل في حفظ ملف تعريف الإدخال</translation>
|
||||
</message>
|
||||
@@ -5997,50 +5997,50 @@ Please go to Configure -> System -> Network and make a selection.</source>
|
||||
<context>
|
||||
<name>GRenderWindow</name>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="850"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="867"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="845"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="862"/>
|
||||
<source>OpenGL not available!</source>
|
||||
<translation>OpenGL غير متوفر!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="851"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="846"/>
|
||||
<source>OpenGL shared contexts are not supported.</source>
|
||||
<translation>OpenGL لا يتم دعم السياقات المشتركة</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="868"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="863"/>
|
||||
<source>Eden has not been compiled with OpenGL support.</source>
|
||||
<translation>OpenGL لم يتم تجميع إيدن بدعم</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="892"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="910"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="920"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="887"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="905"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="915"/>
|
||||
<source>Error while initializing OpenGL!</source>
|
||||
<translation>OpenGL حدث خطأ أثناء تهيئة</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="893"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="888"/>
|
||||
<source>Your GPU may not support OpenGL, or you do not have the latest graphics driver.</source>
|
||||
<translation>أو قد لا يكون لديك أحدث برنامج تشغيل للرسومات OpenGL قد لا تدعم بطاقة الرسومات الخاصة بك</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="902"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="897"/>
|
||||
<source>Error while initializing OpenGL 4.6!</source>
|
||||
<translation>OpenGL 4.6 حدث خطأ أثناء تهيئة</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="903"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="898"/>
|
||||
<source>Your GPU may not support OpenGL 4.6, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1</source>
|
||||
<translation>أو قد لا يكون لديك أحدث برنامج تشغيل للرسومات OpenGL 4.6 قد لا تدعم بطاقة الرسومات الخاصة بك.<br><br>GL Renderer:<br>%1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="911"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="906"/>
|
||||
<source>Your GPU may not support one or more required OpenGL extensions. Please ensure you have the latest graphics driver.<br><br>GL Renderer:<br>%1<br><br>Unsupported extensions:<br>%2</source>
|
||||
<translation>قد لا تدعم وحدة معالجة الرسومات لديك ملحقًا واحدًا أو أكثر من ملحقات OpenGL المطلوبة. يُرجى التأكد من تثبيت أحدث برنامج تشغيل للرسومات.<br><br>GL Renderer:<br>1%<br><br>إضافات غير مدعومة: <br>2%</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="921"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="916"/>
|
||||
<source>This build doesn't have OpenGL support.</source>
|
||||
<translation>هذا الإصدار لا يدعم OpenGL.</translation>
|
||||
</message>
|
||||
@@ -8683,8 +8683,8 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="35"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="396"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="462"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="395"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="461"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="183"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="251"/>
|
||||
<source>[not set]</source>
|
||||
@@ -8697,10 +8697,10 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="54"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="485"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="489"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="493"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="497"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="484"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="488"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="492"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="496"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="274"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="278"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="282"/>
|
||||
@@ -8715,9 +8715,9 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="66"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="456"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="470"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="500"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="455"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="469"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="499"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="245"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="259"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="289"/>
|
||||
@@ -8879,50 +8879,50 @@ p, li { white-space: pre-wrap; }
|
||||
<translation>[غير معرف]</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="406"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="405"/>
|
||||
<source>%1%2</source>
|
||||
<translation>%1%2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="410"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="409"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="199"/>
|
||||
<source>[invalid]</source>
|
||||
<translation>[غير صالح]</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="420"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="444"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="419"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="443"/>
|
||||
<source>%1%2Hat %3</source>
|
||||
<translation>%1%2Hat %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="424"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="447"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="450"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="423"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="446"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="449"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="239"/>
|
||||
<source>%1%2Axis %3</source>
|
||||
<translation>%1%2محور %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="430"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="429"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="219"/>
|
||||
<source>%1%2Axis %3,%4,%5</source>
|
||||
<translation>%1%2محور %3,%4,%5</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="434"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="433"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="223"/>
|
||||
<source>%1%2Motion %3</source>
|
||||
<translation>%1%2حركة %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="438"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="453"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="437"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="452"/>
|
||||
<source>%1%2Button %3</source>
|
||||
<translation>%1%2زر %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="480"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="479"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="269"/>
|
||||
<source>[unused]</source>
|
||||
<translation>[غير مستخدم]</translation>
|
||||
|
||||
Vendored
+45
-45
@@ -4266,58 +4266,58 @@ Per invertir els eixos, primer moveu el joystick verticalment i després horitzo
|
||||
<translation>[esperant]</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1578"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1576"/>
|
||||
<source>New Profile</source>
|
||||
<translation>Nou perfil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1578"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1576"/>
|
||||
<source>Enter a profile name:</source>
|
||||
<translation>Introdueixi un nom de perfil:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1586"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1594"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1584"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1592"/>
|
||||
<source>Create Input Profile</source>
|
||||
<translation>Crear perfil d'entrada</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1587"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1585"/>
|
||||
<source>The given profile name is not valid!</source>
|
||||
<translation>El nom de perfil introduït no és vàlid!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1595"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1593"/>
|
||||
<source>Failed to create the input profile "%1"</source>
|
||||
<translation>Error al crear el perfil d'entrada "%1"</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1615"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1613"/>
|
||||
<source>Delete Input Profile</source>
|
||||
<translation>Eliminar perfil d'entrada</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1616"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1614"/>
|
||||
<source>Failed to delete the input profile "%1"</source>
|
||||
<translation>Error al eliminar el perfil d'entrada "%1"</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1638"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1636"/>
|
||||
<source>Load Input Profile</source>
|
||||
<translation>Carregar perfil d'entrada</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1639"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1637"/>
|
||||
<source>Failed to load the input profile "%1"</source>
|
||||
<translation>Error al carregar el perfil d'entrada "%1"</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1664"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1662"/>
|
||||
<source>Save Input Profile</source>
|
||||
<translation>Guardar perfil d'entrada</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1665"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1663"/>
|
||||
<source>Failed to save the input profile "%1"</source>
|
||||
<translation>Error al guardar el perfil d'entrada "%1"</translation>
|
||||
</message>
|
||||
@@ -5923,50 +5923,50 @@ Please go to Configure -> System -> Network and make a selection.</source>
|
||||
<context>
|
||||
<name>GRenderWindow</name>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="850"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="867"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="845"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="862"/>
|
||||
<source>OpenGL not available!</source>
|
||||
<translation>OpenGL no disponible!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="851"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="846"/>
|
||||
<source>OpenGL shared contexts are not supported.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="868"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="863"/>
|
||||
<source>Eden has not been compiled with OpenGL support.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="892"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="910"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="920"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="887"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="905"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="915"/>
|
||||
<source>Error while initializing OpenGL!</source>
|
||||
<translation>Error al inicialitzar OpenGL!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="893"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="888"/>
|
||||
<source>Your GPU may not support OpenGL, or you do not have the latest graphics driver.</source>
|
||||
<translation>La seva GPU no suporta OpenGL, o no té instal·lat els últims controladors gràfics.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="902"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="897"/>
|
||||
<source>Error while initializing OpenGL 4.6!</source>
|
||||
<translation>Error inicialitzant OpenGL 4.6!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="903"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="898"/>
|
||||
<source>Your GPU may not support OpenGL 4.6, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1</source>
|
||||
<translation>La seva GPU no suporta OpenGL 4.6, o no té instal·lats els últims controladors gràfics.<br><br>GL Renderer:<br>%1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="911"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="906"/>
|
||||
<source>Your GPU may not support one or more required OpenGL extensions. Please ensure you have the latest graphics driver.<br><br>GL Renderer:<br>%1<br><br>Unsupported extensions:<br>%2</source>
|
||||
<translation>És possible que la seva GPU no suporti una o més extensions necessàries d'OpenGL. Si us plau, asseguris de tenir els últims controladors de la tarjeta gràfica.<br><br>GL Renderer:<br>%1<br><br>Extensions no suportades:<br>%2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="921"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="916"/>
|
||||
<source>This build doesn't have OpenGL support.</source>
|
||||
<translation>Aquesta compilació no té suport per a OpenGL.</translation>
|
||||
</message>
|
||||
@@ -8569,8 +8569,8 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="35"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="396"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="462"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="395"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="461"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="183"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="251"/>
|
||||
<source>[not set]</source>
|
||||
@@ -8583,10 +8583,10 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="54"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="485"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="489"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="493"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="497"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="484"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="488"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="492"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="496"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="274"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="278"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="282"/>
|
||||
@@ -8601,9 +8601,9 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="66"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="456"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="470"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="500"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="455"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="469"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="499"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="245"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="259"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="289"/>
|
||||
@@ -8765,50 +8765,50 @@ p, li { white-space: pre-wrap; }
|
||||
<translation>[indefinit]</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="406"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="405"/>
|
||||
<source>%1%2</source>
|
||||
<translation>%1%2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="410"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="409"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="199"/>
|
||||
<source>[invalid]</source>
|
||||
<translation>[invàlid]</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="420"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="444"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="419"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="443"/>
|
||||
<source>%1%2Hat %3</source>
|
||||
<translation>%1%2Rotació %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="424"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="447"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="450"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="423"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="446"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="449"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="239"/>
|
||||
<source>%1%2Axis %3</source>
|
||||
<translation>%1%2Eix %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="430"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="429"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="219"/>
|
||||
<source>%1%2Axis %3,%4,%5</source>
|
||||
<translation>%1%2Eixos %3,%4,%5</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="434"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="433"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="223"/>
|
||||
<source>%1%2Motion %3</source>
|
||||
<translation>%1%2Moviment %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="438"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="453"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="437"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="452"/>
|
||||
<source>%1%2Button %3</source>
|
||||
<translation>%1%2Botó %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="480"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="479"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="269"/>
|
||||
<source>[unused]</source>
|
||||
<translation>[sense ús]</translation>
|
||||
|
||||
Vendored
+45
-45
@@ -4258,58 +4258,58 @@ Pro převrácení os nejprve posuňte joystick vertikálně, poté horizontáln
|
||||
<translation>[čekání]</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1578"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1576"/>
|
||||
<source>New Profile</source>
|
||||
<translation>Nový profil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1578"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1576"/>
|
||||
<source>Enter a profile name:</source>
|
||||
<translation>Zadejte název profilu:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1586"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1594"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1584"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1592"/>
|
||||
<source>Create Input Profile</source>
|
||||
<translation>Vytvořit profil vstupu</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1587"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1585"/>
|
||||
<source>The given profile name is not valid!</source>
|
||||
<translation>Zadaný název profilu není platný!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1595"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1593"/>
|
||||
<source>Failed to create the input profile "%1"</source>
|
||||
<translation>Nepodařilo se vytvořit profil vstupu "%1"</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1615"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1613"/>
|
||||
<source>Delete Input Profile</source>
|
||||
<translation>Odstranit profil vstupu</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1616"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1614"/>
|
||||
<source>Failed to delete the input profile "%1"</source>
|
||||
<translation>Nepodařilo se odstranit profil vstupu "%1"</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1638"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1636"/>
|
||||
<source>Load Input Profile</source>
|
||||
<translation>Načíst profil vstupu</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1639"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1637"/>
|
||||
<source>Failed to load the input profile "%1"</source>
|
||||
<translation>Nepodařilo se načíst profil vstupu "%1"</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1664"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1662"/>
|
||||
<source>Save Input Profile</source>
|
||||
<translation>Uložit profil vstupu</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1665"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1663"/>
|
||||
<source>Failed to save the input profile "%1"</source>
|
||||
<translation>Nepodařilo se uložit profil vstupu "%1"</translation>
|
||||
</message>
|
||||
@@ -5914,50 +5914,50 @@ Please go to Configure -> System -> Network and make a selection.</source>
|
||||
<context>
|
||||
<name>GRenderWindow</name>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="850"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="867"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="845"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="862"/>
|
||||
<source>OpenGL not available!</source>
|
||||
<translation>OpenGL není k dispozici!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="851"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="846"/>
|
||||
<source>OpenGL shared contexts are not supported.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="868"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="863"/>
|
||||
<source>Eden has not been compiled with OpenGL support.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="892"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="910"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="920"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="887"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="905"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="915"/>
|
||||
<source>Error while initializing OpenGL!</source>
|
||||
<translation>Chyba při inicializaci OpenGL!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="893"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="888"/>
|
||||
<source>Your GPU may not support OpenGL, or you do not have the latest graphics driver.</source>
|
||||
<translation>Vaše grafická karta pravděpodobně nepodporuje OpenGL nebo nejsou nainstalovány nejnovější ovladače.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="902"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="897"/>
|
||||
<source>Error while initializing OpenGL 4.6!</source>
|
||||
<translation>Chyba při inicializaci OpenGL 4.6!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="903"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="898"/>
|
||||
<source>Your GPU may not support OpenGL 4.6, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1</source>
|
||||
<translation>Vaše grafická karta pravděpodobně nepodporuje OpenGL 4.6 nebo nejsou nainstalovány nejnovější ovladače.<br><br>GL Renderer:<br>%1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="911"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="906"/>
|
||||
<source>Your GPU may not support one or more required OpenGL extensions. Please ensure you have the latest graphics driver.<br><br>GL Renderer:<br>%1<br><br>Unsupported extensions:<br>%2</source>
|
||||
<translation>Vaše grafická karta pravděpodobně nepodporuje jedno nebo více rozšíření OpenGL. Ujistěte se prosím, že jsou nainstalovány nejnovější ovladače.<br><br>GL Renderer:<br>%1<br><br>Nepodporované rozšíření:<br>%2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="921"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="916"/>
|
||||
<source>This build doesn't have OpenGL support.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
@@ -8557,8 +8557,8 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="35"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="396"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="462"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="395"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="461"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="183"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="251"/>
|
||||
<source>[not set]</source>
|
||||
@@ -8571,10 +8571,10 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="54"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="485"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="489"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="493"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="497"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="484"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="488"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="492"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="496"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="274"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="278"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="282"/>
|
||||
@@ -8589,9 +8589,9 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="66"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="456"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="470"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="500"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="455"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="469"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="499"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="245"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="259"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="289"/>
|
||||
@@ -8753,50 +8753,50 @@ p, li { white-space: pre-wrap; }
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="406"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="405"/>
|
||||
<source>%1%2</source>
|
||||
<translation>%1%2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="410"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="409"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="199"/>
|
||||
<source>[invalid]</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="420"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="444"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="419"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="443"/>
|
||||
<source>%1%2Hat %3</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="424"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="447"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="450"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="423"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="446"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="449"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="239"/>
|
||||
<source>%1%2Axis %3</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="430"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="429"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="219"/>
|
||||
<source>%1%2Axis %3,%4,%5</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="434"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="433"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="223"/>
|
||||
<source>%1%2Motion %3</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="438"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="453"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="437"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="452"/>
|
||||
<source>%1%2Button %3</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="480"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="479"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="269"/>
|
||||
<source>[unused]</source>
|
||||
<translation>[nepoužito]</translation>
|
||||
|
||||
Vendored
+45
-45
@@ -4266,58 +4266,58 @@ Bevæg, for at omvende akserne, først din styrepind lodret og så vandret.</tra
|
||||
<translation>[venter]</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1578"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1576"/>
|
||||
<source>New Profile</source>
|
||||
<translation>Ny Profil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1578"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1576"/>
|
||||
<source>Enter a profile name:</source>
|
||||
<translation>Indtast et profilnavn:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1586"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1594"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1584"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1592"/>
|
||||
<source>Create Input Profile</source>
|
||||
<translation>Opret Input-Profil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1587"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1585"/>
|
||||
<source>The given profile name is not valid!</source>
|
||||
<translation>Det angivne profilnavn er ikke gyldigt!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1595"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1593"/>
|
||||
<source>Failed to create the input profile "%1"</source>
|
||||
<translation>Oprettelse af input-profil "%1" mislykkedes</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1615"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1613"/>
|
||||
<source>Delete Input Profile</source>
|
||||
<translation>Slet Input-Profil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1616"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1614"/>
|
||||
<source>Failed to delete the input profile "%1"</source>
|
||||
<translation>Sletning af input-profil "%1" mislykkedes</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1638"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1636"/>
|
||||
<source>Load Input Profile</source>
|
||||
<translation>Indlæs Input-Profil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1639"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1637"/>
|
||||
<source>Failed to load the input profile "%1"</source>
|
||||
<translation>Indlæsning af input-profil "%1" mislykkedes</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1664"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1662"/>
|
||||
<source>Save Input Profile</source>
|
||||
<translation>Gem Input-Profil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1665"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1663"/>
|
||||
<source>Failed to save the input profile "%1"</source>
|
||||
<translation>Lagring af input-profil "%1" mislykkedes</translation>
|
||||
</message>
|
||||
@@ -5922,50 +5922,50 @@ Please go to Configure -> System -> Network and make a selection.</source>
|
||||
<context>
|
||||
<name>GRenderWindow</name>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="850"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="867"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="845"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="862"/>
|
||||
<source>OpenGL not available!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="851"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="846"/>
|
||||
<source>OpenGL shared contexts are not supported.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="868"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="863"/>
|
||||
<source>Eden has not been compiled with OpenGL support.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="892"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="910"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="920"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="887"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="905"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="915"/>
|
||||
<source>Error while initializing OpenGL!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="893"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="888"/>
|
||||
<source>Your GPU may not support OpenGL, or you do not have the latest graphics driver.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="902"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="897"/>
|
||||
<source>Error while initializing OpenGL 4.6!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="903"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="898"/>
|
||||
<source>Your GPU may not support OpenGL 4.6, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="911"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="906"/>
|
||||
<source>Your GPU may not support one or more required OpenGL extensions. Please ensure you have the latest graphics driver.<br><br>GL Renderer:<br>%1<br><br>Unsupported extensions:<br>%2</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="921"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="916"/>
|
||||
<source>This build doesn't have OpenGL support.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
@@ -8561,8 +8561,8 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="35"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="396"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="462"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="395"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="461"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="183"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="251"/>
|
||||
<source>[not set]</source>
|
||||
@@ -8575,10 +8575,10 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="54"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="485"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="489"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="493"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="497"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="484"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="488"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="492"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="496"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="274"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="278"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="282"/>
|
||||
@@ -8593,9 +8593,9 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="66"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="456"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="470"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="500"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="455"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="469"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="499"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="245"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="259"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="289"/>
|
||||
@@ -8757,50 +8757,50 @@ p, li { white-space: pre-wrap; }
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="406"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="405"/>
|
||||
<source>%1%2</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="410"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="409"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="199"/>
|
||||
<source>[invalid]</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="420"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="444"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="419"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="443"/>
|
||||
<source>%1%2Hat %3</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="424"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="447"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="450"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="423"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="446"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="449"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="239"/>
|
||||
<source>%1%2Axis %3</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="430"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="429"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="219"/>
|
||||
<source>%1%2Axis %3,%4,%5</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="434"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="433"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="223"/>
|
||||
<source>%1%2Motion %3</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="438"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="453"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="437"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="452"/>
|
||||
<source>%1%2Button %3</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="480"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="479"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="269"/>
|
||||
<source>[unused]</source>
|
||||
<translation>[ubrugt]</translation>
|
||||
|
||||
Vendored
+45
-45
@@ -4342,58 +4342,58 @@ Um die Achsen umzukehren, bewege den Joystick zuerst vertikal und dann horizonta
|
||||
<translation>[wartet]</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1578"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1576"/>
|
||||
<source>New Profile</source>
|
||||
<translation>Neues Profil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1578"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1576"/>
|
||||
<source>Enter a profile name:</source>
|
||||
<translation>Profilnamen eingeben:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1586"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1594"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1584"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1592"/>
|
||||
<source>Create Input Profile</source>
|
||||
<translation>Eingabeprofil erstellen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1587"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1585"/>
|
||||
<source>The given profile name is not valid!</source>
|
||||
<translation>Angegebener Profilname ist nicht gültig!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1595"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1593"/>
|
||||
<source>Failed to create the input profile "%1"</source>
|
||||
<translation>Erstellen des Eingabeprofils "%1" ist fehlgeschlagen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1615"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1613"/>
|
||||
<source>Delete Input Profile</source>
|
||||
<translation>Eingabeprofil löschen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1616"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1614"/>
|
||||
<source>Failed to delete the input profile "%1"</source>
|
||||
<translation>Löschen des Eingabeprofils "%1" ist fehlgeschlagen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1638"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1636"/>
|
||||
<source>Load Input Profile</source>
|
||||
<translation>Eingabeprofil laden</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1639"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1637"/>
|
||||
<source>Failed to load the input profile "%1"</source>
|
||||
<translation>Laden des Eingabeprofils "%1" ist fehlgeschlagen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1664"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1662"/>
|
||||
<source>Save Input Profile</source>
|
||||
<translation>Eingabeprofil speichern</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1665"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1663"/>
|
||||
<source>Failed to save the input profile "%1"</source>
|
||||
<translation>Speichern des Eingabeprofils "%1" ist fehlgeschlagen</translation>
|
||||
</message>
|
||||
@@ -6007,50 +6007,50 @@ Bitte gehe zu „Konfigurieren“ -> „System“ -> „Netzwerk“ und tr
|
||||
<context>
|
||||
<name>GRenderWindow</name>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="850"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="867"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="845"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="862"/>
|
||||
<source>OpenGL not available!</source>
|
||||
<translation>OpenGL nicht verfügbar!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="851"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="846"/>
|
||||
<source>OpenGL shared contexts are not supported.</source>
|
||||
<translation>Gemeinsame OpenGL-Kontexte werden nicht unterstützt.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="868"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="863"/>
|
||||
<source>Eden has not been compiled with OpenGL support.</source>
|
||||
<translation>Eden wurde nicht mit OpenGL-Unterstützung kompiliert.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="892"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="910"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="920"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="887"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="905"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="915"/>
|
||||
<source>Error while initializing OpenGL!</source>
|
||||
<translation>Fehler beim Initialisieren von OpenGL!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="893"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="888"/>
|
||||
<source>Your GPU may not support OpenGL, or you do not have the latest graphics driver.</source>
|
||||
<translation>Deine Grafikkarte unterstützt kein OpenGL oder du hast nicht den neusten Treiber installiert.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="902"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="897"/>
|
||||
<source>Error while initializing OpenGL 4.6!</source>
|
||||
<translation>Fehler beim Initialisieren von OpenGL 4.6!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="903"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="898"/>
|
||||
<source>Your GPU may not support OpenGL 4.6, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1</source>
|
||||
<translation>Deine Grafikkarte unterstützt OpenGL 4.6 nicht, oder du benutzt nicht die neuste Treiberversion.<br><br>GL Renderer:<br>%1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="911"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="906"/>
|
||||
<source>Your GPU may not support one or more required OpenGL extensions. Please ensure you have the latest graphics driver.<br><br>GL Renderer:<br>%1<br><br>Unsupported extensions:<br>%2</source>
|
||||
<translation>Deine Grafikkarte unterstützt anscheinend nicht eine oder mehrere von yuzu benötigten OpenGL-Erweiterungen. Bitte stelle sicher, dass du den neusten Grafiktreiber installiert hast.<br><br>GL Renderer:<br>%1<br><br>Nicht unterstützte Erweiterungen:<br>%2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="921"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="916"/>
|
||||
<source>This build doesn't have OpenGL support.</source>
|
||||
<translation>Diese Version bietet keine OpenGL-Unterstützung.</translation>
|
||||
</message>
|
||||
@@ -8679,8 +8679,8 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="35"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="396"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="462"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="395"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="461"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="183"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="251"/>
|
||||
<source>[not set]</source>
|
||||
@@ -8693,10 +8693,10 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="54"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="485"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="489"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="493"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="497"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="484"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="488"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="492"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="496"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="274"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="278"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="282"/>
|
||||
@@ -8711,9 +8711,9 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="66"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="456"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="470"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="500"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="455"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="469"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="499"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="245"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="259"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="289"/>
|
||||
@@ -8875,50 +8875,50 @@ p, li { white-space: pre-wrap; }
|
||||
<translation>[undefiniert]</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="406"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="405"/>
|
||||
<source>%1%2</source>
|
||||
<translation>%1%2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="410"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="409"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="199"/>
|
||||
<source>[invalid]</source>
|
||||
<translation>[ungültig]</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="420"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="444"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="419"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="443"/>
|
||||
<source>%1%2Hat %3</source>
|
||||
<translation>%1%2Hat %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="424"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="447"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="450"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="423"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="446"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="449"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="239"/>
|
||||
<source>%1%2Axis %3</source>
|
||||
<translation>%1%2Achse %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="430"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="429"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="219"/>
|
||||
<source>%1%2Axis %3,%4,%5</source>
|
||||
<translation>%1%2Achse %3,%4,%5</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="434"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="433"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="223"/>
|
||||
<source>%1%2Motion %3</source>
|
||||
<translation>%1%2Bewegung %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="438"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="453"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="437"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="452"/>
|
||||
<source>%1%2Button %3</source>
|
||||
<translation>%1%2Knopf %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="480"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="479"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="269"/>
|
||||
<source>[unused]</source>
|
||||
<translation>[unbenutzt]</translation>
|
||||
|
||||
Vendored
+45
-45
@@ -4258,58 +4258,58 @@ To invert the axes, first move your joystick vertically, and then horizontally.<
|
||||
<translation>[αναμονή]</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1578"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1576"/>
|
||||
<source>New Profile</source>
|
||||
<translation>Νέο Προφίλ</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1578"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1576"/>
|
||||
<source>Enter a profile name:</source>
|
||||
<translation>Εισαγάγετε ένα όνομα προφίλ:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1586"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1594"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1584"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1592"/>
|
||||
<source>Create Input Profile</source>
|
||||
<translation>Δημιουργία Προφίλ Χειρισμού</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1587"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1585"/>
|
||||
<source>The given profile name is not valid!</source>
|
||||
<translation>Το όνομα του προφίλ δεν είναι έγκυρο!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1595"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1593"/>
|
||||
<source>Failed to create the input profile "%1"</source>
|
||||
<translation>Η δημιουργία του προφίλ χειρισμού "%1" απέτυχε</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1615"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1613"/>
|
||||
<source>Delete Input Profile</source>
|
||||
<translation>Διαγραφή Προφίλ Χειρισμού</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1616"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1614"/>
|
||||
<source>Failed to delete the input profile "%1"</source>
|
||||
<translation>Η διαγραφή του προφίλ χειρισμού "%1" απέτυχε</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1638"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1636"/>
|
||||
<source>Load Input Profile</source>
|
||||
<translation>Φόρτωση Προφίλ Χειρισμού</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1639"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1637"/>
|
||||
<source>Failed to load the input profile "%1"</source>
|
||||
<translation>Η φόρτωση του προφίλ χειρισμού "%1" απέτυχε</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1664"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1662"/>
|
||||
<source>Save Input Profile</source>
|
||||
<translation>Αποθήκευση Προφίλ Χειρισμού</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1665"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1663"/>
|
||||
<source>Failed to save the input profile "%1"</source>
|
||||
<translation>Η αποθήκευση του προφίλ χειρισμού "%1" απέτυχε</translation>
|
||||
</message>
|
||||
@@ -5913,50 +5913,50 @@ Please go to Configure -> System -> Network and make a selection.</source>
|
||||
<context>
|
||||
<name>GRenderWindow</name>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="850"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="867"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="845"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="862"/>
|
||||
<source>OpenGL not available!</source>
|
||||
<translation>Το OpenGL δεν είναι διαθέσιμο!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="851"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="846"/>
|
||||
<source>OpenGL shared contexts are not supported.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="868"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="863"/>
|
||||
<source>Eden has not been compiled with OpenGL support.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="892"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="910"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="920"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="887"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="905"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="915"/>
|
||||
<source>Error while initializing OpenGL!</source>
|
||||
<translation>Σφάλμα κατα την αρχικοποίηση του OpenGL!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="893"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="888"/>
|
||||
<source>Your GPU may not support OpenGL, or you do not have the latest graphics driver.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="902"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="897"/>
|
||||
<source>Error while initializing OpenGL 4.6!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="903"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="898"/>
|
||||
<source>Your GPU may not support OpenGL 4.6, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="911"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="906"/>
|
||||
<source>Your GPU may not support one or more required OpenGL extensions. Please ensure you have the latest graphics driver.<br><br>GL Renderer:<br>%1<br><br>Unsupported extensions:<br>%2</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="921"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="916"/>
|
||||
<source>This build doesn't have OpenGL support.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
@@ -8553,8 +8553,8 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="35"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="396"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="462"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="395"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="461"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="183"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="251"/>
|
||||
<source>[not set]</source>
|
||||
@@ -8567,10 +8567,10 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="54"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="485"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="489"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="493"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="497"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="484"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="488"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="492"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="496"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="274"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="278"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="282"/>
|
||||
@@ -8585,9 +8585,9 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="66"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="456"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="470"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="500"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="455"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="469"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="499"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="245"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="259"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="289"/>
|
||||
@@ -8749,50 +8749,50 @@ p, li { white-space: pre-wrap; }
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="406"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="405"/>
|
||||
<source>%1%2</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="410"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="409"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="199"/>
|
||||
<source>[invalid]</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="420"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="444"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="419"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="443"/>
|
||||
<source>%1%2Hat %3</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="424"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="447"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="450"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="423"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="446"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="449"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="239"/>
|
||||
<source>%1%2Axis %3</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="430"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="429"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="219"/>
|
||||
<source>%1%2Axis %3,%4,%5</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="434"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="433"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="223"/>
|
||||
<source>%1%2Motion %3</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="438"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="453"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="437"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="452"/>
|
||||
<source>%1%2Button %3</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="480"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="479"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="269"/>
|
||||
<source>[unused]</source>
|
||||
<translation>[άδειο]</translation>
|
||||
|
||||
Vendored
+45
-45
@@ -4340,58 +4340,58 @@ Para invertir los ejes, mueve primero el joystick de manera vertical, y luego ho
|
||||
<translation>[esperando]</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1578"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1576"/>
|
||||
<source>New Profile</source>
|
||||
<translation>Nuevo perfil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1578"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1576"/>
|
||||
<source>Enter a profile name:</source>
|
||||
<translation>Introduce un nombre de perfil:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1586"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1594"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1584"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1592"/>
|
||||
<source>Create Input Profile</source>
|
||||
<translation>Crear perfil de entrada</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1587"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1585"/>
|
||||
<source>The given profile name is not valid!</source>
|
||||
<translation>¡El nombre de perfil introducido no es válido!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1595"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1593"/>
|
||||
<source>Failed to create the input profile "%1"</source>
|
||||
<translation>Error al crear el perfil de entrada "%1"</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1615"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1613"/>
|
||||
<source>Delete Input Profile</source>
|
||||
<translation>Eliminar perfil de entrada</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1616"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1614"/>
|
||||
<source>Failed to delete the input profile "%1"</source>
|
||||
<translation>Error al eliminar el perfil de entrada "%1"</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1638"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1636"/>
|
||||
<source>Load Input Profile</source>
|
||||
<translation>Cargar perfil de entrada</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1639"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1637"/>
|
||||
<source>Failed to load the input profile "%1"</source>
|
||||
<translation>Error al cargar el perfil de entrada "%1"</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1664"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1662"/>
|
||||
<source>Save Input Profile</source>
|
||||
<translation>Guardar perfil de entrada</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1665"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1663"/>
|
||||
<source>Failed to save the input profile "%1"</source>
|
||||
<translation>Error al guardar el perfil de entrada "%1"</translation>
|
||||
</message>
|
||||
@@ -6004,50 +6004,50 @@ Por favor, vaya a Configuración -> Sistema -> Red y selecciona una interf
|
||||
<context>
|
||||
<name>GRenderWindow</name>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="850"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="867"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="845"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="862"/>
|
||||
<source>OpenGL not available!</source>
|
||||
<translation>¡OpenGL no está disponible!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="851"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="846"/>
|
||||
<source>OpenGL shared contexts are not supported.</source>
|
||||
<translation>Los contextos compartidos de OpenGL no son compatibles.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="868"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="863"/>
|
||||
<source>Eden has not been compiled with OpenGL support.</source>
|
||||
<translation>Eden no ha sido compilado con soporte para OpenGL.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="892"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="910"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="920"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="887"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="905"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="915"/>
|
||||
<source>Error while initializing OpenGL!</source>
|
||||
<translation>¡Error al inicializar OpenGL!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="893"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="888"/>
|
||||
<source>Your GPU may not support OpenGL, or you do not have the latest graphics driver.</source>
|
||||
<translation>Tu GPU no soporta OpenGL, o no tienes instalados los últimos controladores gráficos.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="902"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="897"/>
|
||||
<source>Error while initializing OpenGL 4.6!</source>
|
||||
<translation>¡Error al iniciar OpenGL 4.6!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="903"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="898"/>
|
||||
<source>Your GPU may not support OpenGL 4.6, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1</source>
|
||||
<translation>Tu GPU no soporta OpenGL 4.6, o no tienes instalado el último controlador de la tarjeta gráfica.<br><br>GL Renderer:<br>%1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="911"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="906"/>
|
||||
<source>Your GPU may not support one or more required OpenGL extensions. Please ensure you have the latest graphics driver.<br><br>GL Renderer:<br>%1<br><br>Unsupported extensions:<br>%2</source>
|
||||
<translation>Es posible que la GPU no soporte una o más extensiones necesarias de OpenGL . Por favor, asegúrate de tener los últimos controladores de la tarjeta gráfica.<br><br>GL Renderer:<br>%1<br><br>Extensiones no soportadas:<br>%2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="921"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="916"/>
|
||||
<source>This build doesn't have OpenGL support.</source>
|
||||
<translation>Esta compilación no tiene soporte para OpenGL.</translation>
|
||||
</message>
|
||||
@@ -8681,8 +8681,8 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="35"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="396"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="462"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="395"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="461"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="183"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="251"/>
|
||||
<source>[not set]</source>
|
||||
@@ -8695,10 +8695,10 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="54"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="485"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="489"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="493"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="497"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="484"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="488"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="492"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="496"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="274"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="278"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="282"/>
|
||||
@@ -8713,9 +8713,9 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="66"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="456"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="470"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="500"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="455"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="469"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="499"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="245"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="259"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="289"/>
|
||||
@@ -8877,50 +8877,50 @@ p, li { white-space: pre-wrap; }
|
||||
<translation>[sin definir]</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="406"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="405"/>
|
||||
<source>%1%2</source>
|
||||
<translation>%1%2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="410"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="409"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="199"/>
|
||||
<source>[invalid]</source>
|
||||
<translation>[inválido]</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="420"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="444"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="419"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="443"/>
|
||||
<source>%1%2Hat %3</source>
|
||||
<translation>%1%2Rotación %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="424"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="447"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="450"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="423"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="446"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="449"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="239"/>
|
||||
<source>%1%2Axis %3</source>
|
||||
<translation>%1%2Eje %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="430"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="429"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="219"/>
|
||||
<source>%1%2Axis %3,%4,%5</source>
|
||||
<translation>%1%2Eje %3,%4,%5</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="434"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="433"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="223"/>
|
||||
<source>%1%2Motion %3</source>
|
||||
<translation>%1%2Movimiento %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="438"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="453"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="437"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="452"/>
|
||||
<source>%1%2Button %3</source>
|
||||
<translation>%1%2Botón %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="480"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="479"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="269"/>
|
||||
<source>[unused]</source>
|
||||
<translation>[no usado]</translation>
|
||||
|
||||
Vendored
+45
-45
@@ -4236,58 +4236,58 @@ To invert the axes, first move your joystick vertically, and then horizontally.<
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1578"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1576"/>
|
||||
<source>New Profile</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1578"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1576"/>
|
||||
<source>Enter a profile name:</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1586"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1594"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1584"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1592"/>
|
||||
<source>Create Input Profile</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1587"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1585"/>
|
||||
<source>The given profile name is not valid!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1595"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1593"/>
|
||||
<source>Failed to create the input profile "%1"</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1615"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1613"/>
|
||||
<source>Delete Input Profile</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1616"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1614"/>
|
||||
<source>Failed to delete the input profile "%1"</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1638"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1636"/>
|
||||
<source>Load Input Profile</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1639"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1637"/>
|
||||
<source>Failed to load the input profile "%1"</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1664"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1662"/>
|
||||
<source>Save Input Profile</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1665"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1663"/>
|
||||
<source>Failed to save the input profile "%1"</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
@@ -5891,50 +5891,50 @@ Please go to Configure -> System -> Network and make a selection.</source>
|
||||
<context>
|
||||
<name>GRenderWindow</name>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="850"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="867"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="845"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="862"/>
|
||||
<source>OpenGL not available!</source>
|
||||
<translation>openGL ei ole saatavilla!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="851"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="846"/>
|
||||
<source>OpenGL shared contexts are not supported.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="868"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="863"/>
|
||||
<source>Eden has not been compiled with OpenGL support.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="892"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="910"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="920"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="887"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="905"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="915"/>
|
||||
<source>Error while initializing OpenGL!</source>
|
||||
<translation>Virhe käynnistäessä OpenGL ydintä!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="893"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="888"/>
|
||||
<source>Your GPU may not support OpenGL, or you do not have the latest graphics driver.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="902"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="897"/>
|
||||
<source>Error while initializing OpenGL 4.6!</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="903"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="898"/>
|
||||
<source>Your GPU may not support OpenGL 4.6, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="911"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="906"/>
|
||||
<source>Your GPU may not support one or more required OpenGL extensions. Please ensure you have the latest graphics driver.<br><br>GL Renderer:<br>%1<br><br>Unsupported extensions:<br>%2</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="921"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="916"/>
|
||||
<source>This build doesn't have OpenGL support.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
@@ -8530,8 +8530,8 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="35"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="396"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="462"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="395"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="461"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="183"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="251"/>
|
||||
<source>[not set]</source>
|
||||
@@ -8544,10 +8544,10 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="54"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="485"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="489"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="493"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="497"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="484"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="488"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="492"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="496"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="274"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="278"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="282"/>
|
||||
@@ -8562,9 +8562,9 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="66"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="456"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="470"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="500"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="455"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="469"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="499"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="245"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="259"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="289"/>
|
||||
@@ -8726,50 +8726,50 @@ p, li { white-space: pre-wrap; }
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="406"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="405"/>
|
||||
<source>%1%2</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="410"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="409"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="199"/>
|
||||
<source>[invalid]</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="420"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="444"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="419"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="443"/>
|
||||
<source>%1%2Hat %3</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="424"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="447"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="450"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="423"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="446"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="449"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="239"/>
|
||||
<source>%1%2Axis %3</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="430"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="429"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="219"/>
|
||||
<source>%1%2Axis %3,%4,%5</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="434"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="433"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="223"/>
|
||||
<source>%1%2Motion %3</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="438"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="453"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="437"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="452"/>
|
||||
<source>%1%2Button %3</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="480"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="479"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="269"/>
|
||||
<source>[unused]</source>
|
||||
<translation>[ei käytössä]</translation>
|
||||
|
||||
Vendored
+45
-45
@@ -4320,58 +4320,58 @@ Pour inverser les axes, bougez d'abord votre joystick verticalement, puis h
|
||||
<translation>[en attente]</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1578"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1576"/>
|
||||
<source>New Profile</source>
|
||||
<translation>Nouveau Profil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1578"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1576"/>
|
||||
<source>Enter a profile name:</source>
|
||||
<translation>Entrez un nom de profil :</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1586"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1594"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1584"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1592"/>
|
||||
<source>Create Input Profile</source>
|
||||
<translation>Créer un profil d'entrée </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1587"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1585"/>
|
||||
<source>The given profile name is not valid!</source>
|
||||
<translation>Le nom de profil donné est invalide !</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1595"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1593"/>
|
||||
<source>Failed to create the input profile "%1"</source>
|
||||
<translation>Échec de la création du profil d'entrée "%1"</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1615"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1613"/>
|
||||
<source>Delete Input Profile</source>
|
||||
<translation>Supprimer le profil d'entrée</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1616"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1614"/>
|
||||
<source>Failed to delete the input profile "%1"</source>
|
||||
<translation>Échec de la suppression du profil d'entrée "%1"</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1638"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1636"/>
|
||||
<source>Load Input Profile</source>
|
||||
<translation>Charger le profil d'entrée</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1639"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1637"/>
|
||||
<source>Failed to load the input profile "%1"</source>
|
||||
<translation>Échec du chargement du profil d'entrée "%1"</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1664"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1662"/>
|
||||
<source>Save Input Profile</source>
|
||||
<translation>Sauvegarder le profil d'entrée</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1665"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1663"/>
|
||||
<source>Failed to save the input profile "%1"</source>
|
||||
<translation>Échec de la sauvegarde du profil d'entrée "%1"</translation>
|
||||
</message>
|
||||
@@ -5980,50 +5980,50 @@ Veuillez aller dans Configurer -> Système -> Réseau puis en choisir une.
|
||||
<context>
|
||||
<name>GRenderWindow</name>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="850"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="867"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="845"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="862"/>
|
||||
<source>OpenGL not available!</source>
|
||||
<translation>OpenGL n'est pas disponible !</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="851"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="846"/>
|
||||
<source>OpenGL shared contexts are not supported.</source>
|
||||
<translation>Les contextes OpenGL partagés ne sont pas pris en charge.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="868"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="863"/>
|
||||
<source>Eden has not been compiled with OpenGL support.</source>
|
||||
<translation>Eden n'a pas été compilé avec le support OpenGL</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="892"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="910"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="920"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="887"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="905"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="915"/>
|
||||
<source>Error while initializing OpenGL!</source>
|
||||
<translation>Erreur lors de l'initialisation d'OpenGL !</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="893"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="888"/>
|
||||
<source>Your GPU may not support OpenGL, or you do not have the latest graphics driver.</source>
|
||||
<translation>Votre GPU peut ne pas prendre en charge OpenGL, ou vous n'avez pas les derniers pilotes graphiques.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="902"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="897"/>
|
||||
<source>Error while initializing OpenGL 4.6!</source>
|
||||
<translation>Erreur lors de l'initialisation d'OpenGL 4.6 !</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="903"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="898"/>
|
||||
<source>Your GPU may not support OpenGL 4.6, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1</source>
|
||||
<translation>Votre GPU peut ne pas prendre en charge OpenGL 4.6 ou vous ne disposez pas du dernier pilote graphique: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="911"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="906"/>
|
||||
<source>Your GPU may not support one or more required OpenGL extensions. Please ensure you have the latest graphics driver.<br><br>GL Renderer:<br>%1<br><br>Unsupported extensions:<br>%2</source>
|
||||
<translation>Votre GPU peut ne pas prendre en charge une ou plusieurs extensions OpenGL requises. Veuillez vous assurer que vous disposez du dernier pilote graphique.<br><br>GL Renderer :<br>%1<br><br>Extensions non prises en charge :<br>%2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="921"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="916"/>
|
||||
<source>This build doesn't have OpenGL support.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
@@ -8640,8 +8640,8 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="35"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="396"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="462"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="395"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="461"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="183"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="251"/>
|
||||
<source>[not set]</source>
|
||||
@@ -8654,10 +8654,10 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="54"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="485"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="489"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="493"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="497"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="484"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="488"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="492"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="496"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="274"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="278"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="282"/>
|
||||
@@ -8672,9 +8672,9 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="66"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="456"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="470"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="500"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="455"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="469"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="499"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="245"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="259"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="289"/>
|
||||
@@ -8836,50 +8836,50 @@ p, li { white-space: pre-wrap; }
|
||||
<translation>[non défini]</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="406"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="405"/>
|
||||
<source>%1%2</source>
|
||||
<translation>%1%2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="410"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="409"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="199"/>
|
||||
<source>[invalid]</source>
|
||||
<translation>[invalide]</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="420"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="444"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="419"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="443"/>
|
||||
<source>%1%2Hat %3</source>
|
||||
<translation>%1%2Chapeau %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="424"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="447"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="450"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="423"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="446"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="449"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="239"/>
|
||||
<source>%1%2Axis %3</source>
|
||||
<translation>%1%2Axe %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="430"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="429"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="219"/>
|
||||
<source>%1%2Axis %3,%4,%5</source>
|
||||
<translation>%1%2Axe %3,%4,%5</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="434"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="433"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="223"/>
|
||||
<source>%1%2Motion %3</source>
|
||||
<translation>%1%2Mouvement %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="438"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="453"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="437"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="452"/>
|
||||
<source>%1%2Button %3</source>
|
||||
<translation>%1%2Bouton %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="480"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="479"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="269"/>
|
||||
<source>[unused]</source>
|
||||
<translation>[inutilisé]</translation>
|
||||
|
||||
Vendored
+45
-45
@@ -4248,58 +4248,58 @@ A tengely megfordításához mozgasd a kart először függőlegesen, majd vízs
|
||||
<translation>[várakozás]</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1578"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1576"/>
|
||||
<source>New Profile</source>
|
||||
<translation>Új profil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1578"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1576"/>
|
||||
<source>Enter a profile name:</source>
|
||||
<translation>Add meg a profil nevét:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1586"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1594"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1584"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1592"/>
|
||||
<source>Create Input Profile</source>
|
||||
<translation>Beviteli profil létrehozása</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1587"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1585"/>
|
||||
<source>The given profile name is not valid!</source>
|
||||
<translation>A megadott profilnév érvénytelen!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1595"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1593"/>
|
||||
<source>Failed to create the input profile "%1"</source>
|
||||
<translation>A "%1" beviteli profilt nem sikerült létrehozni</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1615"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1613"/>
|
||||
<source>Delete Input Profile</source>
|
||||
<translation>Beviteli profil törlése</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1616"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1614"/>
|
||||
<source>Failed to delete the input profile "%1"</source>
|
||||
<translation>A "%1" beviteli profilt nem sikerült eltávolítani</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1638"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1636"/>
|
||||
<source>Load Input Profile</source>
|
||||
<translation>Beviteli profil betöltése</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1639"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1637"/>
|
||||
<source>Failed to load the input profile "%1"</source>
|
||||
<translation>A "%1" beviteli profilt nem sikerült betölteni</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1664"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1662"/>
|
||||
<source>Save Input Profile</source>
|
||||
<translation>Beviteli profil mentése</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1665"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1663"/>
|
||||
<source>Failed to save the input profile "%1"</source>
|
||||
<translation>A "%1" beviteli profilt nem sikerült elmenteni</translation>
|
||||
</message>
|
||||
@@ -5906,50 +5906,50 @@ Please go to Configure -> System -> Network and make a selection.</source>
|
||||
<context>
|
||||
<name>GRenderWindow</name>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="850"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="867"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="845"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="862"/>
|
||||
<source>OpenGL not available!</source>
|
||||
<translation>OpenGL nem elérhető!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="851"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="846"/>
|
||||
<source>OpenGL shared contexts are not supported.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="868"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="863"/>
|
||||
<source>Eden has not been compiled with OpenGL support.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="892"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="910"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="920"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="887"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="905"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="915"/>
|
||||
<source>Error while initializing OpenGL!</source>
|
||||
<translation>Hiba történt az OpenGL inicializálása során!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="893"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="888"/>
|
||||
<source>Your GPU may not support OpenGL, or you do not have the latest graphics driver.</source>
|
||||
<translation>Lehetséges, hogy a GPU-d nem támogatja az OpenGL-t, vagy nem a legfrissebb grafikus illesztőprogram van telepítve.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="902"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="897"/>
|
||||
<source>Error while initializing OpenGL 4.6!</source>
|
||||
<translation>Hiba történt az OpenGL 4.6 inicializálása során!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="903"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="898"/>
|
||||
<source>Your GPU may not support OpenGL 4.6, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1</source>
|
||||
<translation>Lehetséges, hogy a GPU-d nem támogatja az OpenGL 4.6-ot, vagy nem a legfrissebb grafikus illesztőprogram van telepítve.<br><br>GL Renderer:<br>%1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="911"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="906"/>
|
||||
<source>Your GPU may not support one or more required OpenGL extensions. Please ensure you have the latest graphics driver.<br><br>GL Renderer:<br>%1<br><br>Unsupported extensions:<br>%2</source>
|
||||
<translation>Előfordulhat, hogy a GPU-d nem támogat egy vagy több szükséges OpenGL kiterjesztést. Győződj meg róla, hogy a legújabb videokártya-illesztőprogramot használod.<br><br>GL Renderer:<br>%1<br><br>Nem támogatott kiterjesztések:<br>%2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="921"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="916"/>
|
||||
<source>This build doesn't have OpenGL support.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
@@ -8552,8 +8552,8 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="35"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="396"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="462"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="395"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="461"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="183"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="251"/>
|
||||
<source>[not set]</source>
|
||||
@@ -8566,10 +8566,10 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="54"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="485"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="489"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="493"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="497"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="484"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="488"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="492"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="496"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="274"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="278"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="282"/>
|
||||
@@ -8584,9 +8584,9 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="66"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="456"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="470"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="500"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="455"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="469"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="499"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="245"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="259"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="289"/>
|
||||
@@ -8748,50 +8748,50 @@ p, li { white-space: pre-wrap; }
|
||||
<translation>[nem definiált]</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="406"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="405"/>
|
||||
<source>%1%2</source>
|
||||
<translation>%1%2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="410"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="409"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="199"/>
|
||||
<source>[invalid]</source>
|
||||
<translation>[érvénytelen]</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="420"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="444"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="419"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="443"/>
|
||||
<source>%1%2Hat %3</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="424"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="447"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="450"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="423"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="446"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="449"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="239"/>
|
||||
<source>%1%2Axis %3</source>
|
||||
<translation>%1%2Tengely %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="430"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="429"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="219"/>
|
||||
<source>%1%2Axis %3,%4,%5</source>
|
||||
<translation>%1%2Tengely %3,%4,%5</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="434"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="433"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="223"/>
|
||||
<source>%1%2Motion %3</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="438"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="453"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="437"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="452"/>
|
||||
<source>%1%2Button %3</source>
|
||||
<translation>%1%2Gomb %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="480"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="479"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="269"/>
|
||||
<source>[unused]</source>
|
||||
<translation>[nem használt]</translation>
|
||||
|
||||
Vendored
+45
-45
@@ -4287,58 +4287,58 @@ Untuk membalikkan sumbu, pertama gerakkan joystik secara tegak lurus, lalu menda
|
||||
<translation>[menunggu]</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1578"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1576"/>
|
||||
<source>New Profile</source>
|
||||
<translation>Profil Baru</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1578"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1576"/>
|
||||
<source>Enter a profile name:</source>
|
||||
<translation>Masukkan nama profil:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1586"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1594"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1584"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1592"/>
|
||||
<source>Create Input Profile</source>
|
||||
<translation>Ciptakan Profil Masukan</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1587"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1585"/>
|
||||
<source>The given profile name is not valid!</source>
|
||||
<translation>Nama profil yang diberi tidak sah!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1595"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1593"/>
|
||||
<source>Failed to create the input profile "%1"</source>
|
||||
<translation>Gagal membuat profil masukan "%1"</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1615"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1613"/>
|
||||
<source>Delete Input Profile</source>
|
||||
<translation>Hapus Profil Masukan</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1616"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1614"/>
|
||||
<source>Failed to delete the input profile "%1"</source>
|
||||
<translation>Gagal menghapus profil masukan "%1"</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1638"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1636"/>
|
||||
<source>Load Input Profile</source>
|
||||
<translation>Muat Profil Masukan</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1639"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1637"/>
|
||||
<source>Failed to load the input profile "%1"</source>
|
||||
<translation>Gagal memuat profil masukan "%1"</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1664"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1662"/>
|
||||
<source>Save Input Profile</source>
|
||||
<translation>Simpat Profil Masukan</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1665"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1663"/>
|
||||
<source>Failed to save the input profile "%1"</source>
|
||||
<translation>Gagal menyimpan profil masukan "%1"</translation>
|
||||
</message>
|
||||
@@ -5942,50 +5942,50 @@ Please go to Configure -> System -> Network and make a selection.</source>
|
||||
<context>
|
||||
<name>GRenderWindow</name>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="850"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="867"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="845"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="862"/>
|
||||
<source>OpenGL not available!</source>
|
||||
<translation>OpenGL tidak tersedia!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="851"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="846"/>
|
||||
<source>OpenGL shared contexts are not supported.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="868"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="863"/>
|
||||
<source>Eden has not been compiled with OpenGL support.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="892"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="910"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="920"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="887"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="905"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="915"/>
|
||||
<source>Error while initializing OpenGL!</source>
|
||||
<translation>Terjadi kesalahan menginisialisasi OpenGL!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="893"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="888"/>
|
||||
<source>Your GPU may not support OpenGL, or you do not have the latest graphics driver.</source>
|
||||
<translation>VGA anda mungkin tidak mendukung OpenGL, atau anda tidak memiliki pemacu piranti (driver) grafis terbaharu.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="902"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="897"/>
|
||||
<source>Error while initializing OpenGL 4.6!</source>
|
||||
<translation>Terjadi kesalahan menginisialisasi OpenGL 4.6!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="903"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="898"/>
|
||||
<source>Your GPU may not support OpenGL 4.6, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1</source>
|
||||
<translation>VGA anda mungkin tidak mendukung OpenGL 4.6, atau anda tidak memiliki pemacu piranti (driver) grafis terbaharu.<br><br>Pemuat GL:<br>%1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="911"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="906"/>
|
||||
<source>Your GPU may not support one or more required OpenGL extensions. Please ensure you have the latest graphics driver.<br><br>GL Renderer:<br>%1<br><br>Unsupported extensions:<br>%2</source>
|
||||
<translation>VGA anda mungkin tidak mendukung satu atau lebih ekstensi OpenGL. Mohon pastikan bahwa anda memiliki pemacu piranti (driver) grafis terbaharu.<br><br>Pemuat GL:<br>%1<br><br>Ekstensi yang tidak didukung:<br>%2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="921"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="916"/>
|
||||
<source>This build doesn't have OpenGL support.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
@@ -8581,8 +8581,8 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="35"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="396"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="462"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="395"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="461"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="183"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="251"/>
|
||||
<source>[not set]</source>
|
||||
@@ -8595,10 +8595,10 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="54"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="485"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="489"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="493"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="497"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="484"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="488"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="492"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="496"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="274"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="278"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="282"/>
|
||||
@@ -8613,9 +8613,9 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="66"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="456"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="470"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="500"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="455"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="469"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="499"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="245"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="259"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="289"/>
|
||||
@@ -8777,50 +8777,50 @@ p, li { white-space: pre-wrap; }
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="406"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="405"/>
|
||||
<source>%1%2</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="410"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="409"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="199"/>
|
||||
<source>[invalid]</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="420"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="444"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="419"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="443"/>
|
||||
<source>%1%2Hat %3</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="424"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="447"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="450"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="423"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="446"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="449"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="239"/>
|
||||
<source>%1%2Axis %3</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="430"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="429"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="219"/>
|
||||
<source>%1%2Axis %3,%4,%5</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="434"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="433"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="223"/>
|
||||
<source>%1%2Motion %3</source>
|
||||
<translation>%1%2Gerakan %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="438"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="453"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="437"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="452"/>
|
||||
<source>%1%2Button %3</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="480"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="479"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="269"/>
|
||||
<source>[unused]</source>
|
||||
<translation type="unfinished"/>
|
||||
|
||||
Vendored
+45
-45
@@ -4332,58 +4332,58 @@ Per invertire gli assi, prima muovi la levetta verticalmente, e poi orizzontalme
|
||||
<translation>[in attesa]</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1578"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1576"/>
|
||||
<source>New Profile</source>
|
||||
<translation>Nuovo profilo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1578"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1576"/>
|
||||
<source>Enter a profile name:</source>
|
||||
<translation>Inserisci un nome profilo:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1586"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1594"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1584"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1592"/>
|
||||
<source>Create Input Profile</source>
|
||||
<translation>Crea un profilo di input</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1587"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1585"/>
|
||||
<source>The given profile name is not valid!</source>
|
||||
<translation>Il nome profilo inserito non è valido!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1595"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1593"/>
|
||||
<source>Failed to create the input profile "%1"</source>
|
||||
<translation>Impossibile creare il profilo di input "%1"</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1615"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1613"/>
|
||||
<source>Delete Input Profile</source>
|
||||
<translation>Elimina un profilo di input</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1616"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1614"/>
|
||||
<source>Failed to delete the input profile "%1"</source>
|
||||
<translation>Impossibile eliminare il profilo di input "%1"</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1638"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1636"/>
|
||||
<source>Load Input Profile</source>
|
||||
<translation>Carica un profilo di input</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1639"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1637"/>
|
||||
<source>Failed to load the input profile "%1"</source>
|
||||
<translation>Impossibile caricare il profilo di input "%1"</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1664"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1662"/>
|
||||
<source>Save Input Profile</source>
|
||||
<translation>Salva un profilo di Input</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1665"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1663"/>
|
||||
<source>Failed to save the input profile "%1"</source>
|
||||
<translation>Impossibile creare il profilo di input "%1"</translation>
|
||||
</message>
|
||||
@@ -6001,50 +6001,50 @@ Vai su Configura -> Sistema -> Rete e selezionane una.</translation>
|
||||
<context>
|
||||
<name>GRenderWindow</name>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="850"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="867"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="845"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="862"/>
|
||||
<source>OpenGL not available!</source>
|
||||
<translation>OpenGL non disponibile!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="851"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="846"/>
|
||||
<source>OpenGL shared contexts are not supported.</source>
|
||||
<translation>Gli shared context di OpenGL non sono supportati.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="868"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="863"/>
|
||||
<source>Eden has not been compiled with OpenGL support.</source>
|
||||
<translation>Eden non è stato compilato con il supporto a OpenGL.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="892"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="910"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="920"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="887"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="905"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="915"/>
|
||||
<source>Error while initializing OpenGL!</source>
|
||||
<translation>Errore durante l'inizializzazione di OpenGL!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="893"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="888"/>
|
||||
<source>Your GPU may not support OpenGL, or you do not have the latest graphics driver.</source>
|
||||
<translation>La tua GPU potrebbe non supportare OpenGL, o non hai installato l'ultima versione dei driver video.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="902"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="897"/>
|
||||
<source>Error while initializing OpenGL 4.6!</source>
|
||||
<translation>Errore durante l'inizializzazione di OpenGL 4.6!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="903"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="898"/>
|
||||
<source>Your GPU may not support OpenGL 4.6, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1</source>
|
||||
<translation>La tua GPU potrebbe non supportare OpenGL 4.6, o non hai installato l'ultima versione dei driver video.<br><br>Renderer GL:<br>%1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="911"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="906"/>
|
||||
<source>Your GPU may not support one or more required OpenGL extensions. Please ensure you have the latest graphics driver.<br><br>GL Renderer:<br>%1<br><br>Unsupported extensions:<br>%2</source>
|
||||
<translation>La tua GPU potrebbe non supportare una o più estensioni OpenGL richieste. Assicurati di aver installato i driver video più recenti.<br><br>Renderer GL:<br>%1<br><br>Estensioni non supportate:<br>%2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="921"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="916"/>
|
||||
<source>This build doesn't have OpenGL support.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
@@ -8666,8 +8666,8 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="35"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="396"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="462"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="395"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="461"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="183"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="251"/>
|
||||
<source>[not set]</source>
|
||||
@@ -8680,10 +8680,10 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="54"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="485"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="489"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="493"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="497"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="484"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="488"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="492"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="496"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="274"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="278"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="282"/>
|
||||
@@ -8698,9 +8698,9 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="66"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="456"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="470"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="500"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="455"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="469"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="499"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="245"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="259"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="289"/>
|
||||
@@ -8862,50 +8862,50 @@ p, li { white-space: pre-wrap; }
|
||||
<translation>[indefinito]</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="406"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="405"/>
|
||||
<source>%1%2</source>
|
||||
<translation>%1%2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="410"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="409"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="199"/>
|
||||
<source>[invalid]</source>
|
||||
<translation>[non valido]</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="420"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="444"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="419"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="443"/>
|
||||
<source>%1%2Hat %3</source>
|
||||
<translation>%1%2Freccia %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="424"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="447"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="450"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="423"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="446"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="449"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="239"/>
|
||||
<source>%1%2Axis %3</source>
|
||||
<translation>%1%2Asse %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="430"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="429"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="219"/>
|
||||
<source>%1%2Axis %3,%4,%5</source>
|
||||
<translation>%1%2Asse %3,%4,%5</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="434"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="433"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="223"/>
|
||||
<source>%1%2Motion %3</source>
|
||||
<translation>%1%2Movimento %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="438"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="453"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="437"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="452"/>
|
||||
<source>%1%2Button %3</source>
|
||||
<translation>%1%2Pulsante %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="480"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="479"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="269"/>
|
||||
<source>[unused]</source>
|
||||
<translation>[inutilizzato]</translation>
|
||||
|
||||
Vendored
+45
-45
@@ -4272,58 +4272,58 @@ To invert the axes, first move your joystick vertically, and then horizontally.<
|
||||
<translation>[待機中]</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1578"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1576"/>
|
||||
<source>New Profile</source>
|
||||
<translation>新規プロファイル</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1578"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1576"/>
|
||||
<source>Enter a profile name:</source>
|
||||
<translation>プロファイル名を入力:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1586"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1594"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1584"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1592"/>
|
||||
<source>Create Input Profile</source>
|
||||
<translation>入力プロファイルを作成</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1587"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1585"/>
|
||||
<source>The given profile name is not valid!</source>
|
||||
<translation>プロファイル名が無効です!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1595"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1593"/>
|
||||
<source>Failed to create the input profile "%1"</source>
|
||||
<translation>入力プロファイル "%1" の作成に失敗しました</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1615"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1613"/>
|
||||
<source>Delete Input Profile</source>
|
||||
<translation>入力プロファイルを削除</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1616"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1614"/>
|
||||
<source>Failed to delete the input profile "%1"</source>
|
||||
<translation>入力プロファイル "%1" の削除に失敗しました</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1638"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1636"/>
|
||||
<source>Load Input Profile</source>
|
||||
<translation>入力プロファイルをロード</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1639"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1637"/>
|
||||
<source>Failed to load the input profile "%1"</source>
|
||||
<translation>入力プロファイル "%1" のロードに失敗しました</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1664"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1662"/>
|
||||
<source>Save Input Profile</source>
|
||||
<translation>入力プロファイルをセーブ</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1665"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1663"/>
|
||||
<source>Failed to save the input profile "%1"</source>
|
||||
<translation>入力プロファイル "%1" のセーブに失敗しました</translation>
|
||||
</message>
|
||||
@@ -5929,50 +5929,50 @@ Please go to Configure -> System -> Network and make a selection.</source>
|
||||
<context>
|
||||
<name>GRenderWindow</name>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="850"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="867"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="845"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="862"/>
|
||||
<source>OpenGL not available!</source>
|
||||
<translation>OpenGLは使用できません!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="851"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="846"/>
|
||||
<source>OpenGL shared contexts are not supported.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="868"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="863"/>
|
||||
<source>Eden has not been compiled with OpenGL support.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="892"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="910"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="920"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="887"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="905"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="915"/>
|
||||
<source>Error while initializing OpenGL!</source>
|
||||
<translation>OpenGL初期化エラー</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="893"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="888"/>
|
||||
<source>Your GPU may not support OpenGL, or you do not have the latest graphics driver.</source>
|
||||
<translation>GPUがOpenGLをサポートしていないか、グラフィックスドライバーが最新ではありません。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="902"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="897"/>
|
||||
<source>Error while initializing OpenGL 4.6!</source>
|
||||
<translation>OpenGL4.6初期化エラー!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="903"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="898"/>
|
||||
<source>Your GPU may not support OpenGL 4.6, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1</source>
|
||||
<translation>GPUがOpenGL4.6をサポートしていないか、グラフィックスドライバーが最新ではありません。<br><br>GL レンダラ:<br>%1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="911"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="906"/>
|
||||
<source>Your GPU may not support one or more required OpenGL extensions. Please ensure you have the latest graphics driver.<br><br>GL Renderer:<br>%1<br><br>Unsupported extensions:<br>%2</source>
|
||||
<translation>GPUが1つ以上の必要なOpenGL拡張機能をサポートしていない可能性があります。最新のグラフィックドライバを使用していることを確認してください。<br><br>GL レンダラ:<br>%1<br><br>サポートされていない拡張機能:<br>%2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="921"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="916"/>
|
||||
<source>This build doesn't have OpenGL support.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
@@ -8575,8 +8575,8 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="35"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="396"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="462"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="395"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="461"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="183"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="251"/>
|
||||
<source>[not set]</source>
|
||||
@@ -8589,10 +8589,10 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="54"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="485"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="489"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="493"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="497"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="484"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="488"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="492"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="496"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="274"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="278"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="282"/>
|
||||
@@ -8607,9 +8607,9 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="66"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="456"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="470"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="500"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="455"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="469"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="499"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="245"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="259"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="289"/>
|
||||
@@ -8771,50 +8771,50 @@ p, li { white-space: pre-wrap; }
|
||||
<translation>[未定義]</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="406"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="405"/>
|
||||
<source>%1%2</source>
|
||||
<translation>%1%2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="410"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="409"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="199"/>
|
||||
<source>[invalid]</source>
|
||||
<translation>[無効]</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="420"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="444"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="419"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="443"/>
|
||||
<source>%1%2Hat %3</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="424"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="447"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="450"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="423"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="446"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="449"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="239"/>
|
||||
<source>%1%2Axis %3</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="430"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="429"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="219"/>
|
||||
<source>%1%2Axis %3,%4,%5</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="434"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="433"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="223"/>
|
||||
<source>%1%2Motion %3</source>
|
||||
<translation>%1%2モーション %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="438"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="453"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="437"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="452"/>
|
||||
<source>%1%2Button %3</source>
|
||||
<translation>%1%2ボタン %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="480"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="479"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="269"/>
|
||||
<source>[unused]</source>
|
||||
<translation>[未使用]</translation>
|
||||
|
||||
Vendored
+45
-45
@@ -4353,58 +4353,58 @@ To invert the axes, first move your joystick vertically, and then horizontally.<
|
||||
<translation>[대기중]</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1578"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1576"/>
|
||||
<source>New Profile</source>
|
||||
<translation>새 프로필</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1578"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1576"/>
|
||||
<source>Enter a profile name:</source>
|
||||
<translation>프로필 이름을 입력하세요:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1586"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1594"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1584"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1592"/>
|
||||
<source>Create Input Profile</source>
|
||||
<translation>입력 프로필 생성</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1587"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1585"/>
|
||||
<source>The given profile name is not valid!</source>
|
||||
<translation>해당 프로필 이름은 사용할 수 없습니다!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1595"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1593"/>
|
||||
<source>Failed to create the input profile "%1"</source>
|
||||
<translation>"%1" 입력 프로필 생성 실패</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1615"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1613"/>
|
||||
<source>Delete Input Profile</source>
|
||||
<translation>입력 프로필 삭제</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1616"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1614"/>
|
||||
<source>Failed to delete the input profile "%1"</source>
|
||||
<translation>"%1" 입력 프로필 삭제 실패</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1638"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1636"/>
|
||||
<source>Load Input Profile</source>
|
||||
<translation>입력 프로필 불러오기</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1639"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1637"/>
|
||||
<source>Failed to load the input profile "%1"</source>
|
||||
<translation>"%1" 입력 프로필 불러오기 실패</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1664"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1662"/>
|
||||
<source>Save Input Profile</source>
|
||||
<translation>입력 프로필 저장</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1665"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1663"/>
|
||||
<source>Failed to save the input profile "%1"</source>
|
||||
<translation>"%1" 입력 프로필 저장 실패</translation>
|
||||
</message>
|
||||
@@ -6017,50 +6017,50 @@ Please go to Configure -> System -> Network and make a selection.</source>
|
||||
<context>
|
||||
<name>GRenderWindow</name>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="850"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="867"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="845"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="862"/>
|
||||
<source>OpenGL not available!</source>
|
||||
<translation>OpenGL을 사용할 수 없습니다!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="851"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="846"/>
|
||||
<source>OpenGL shared contexts are not supported.</source>
|
||||
<translation>OpenGL 공유 컨텍스트는 지원되지 않습니다.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="868"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="863"/>
|
||||
<source>Eden has not been compiled with OpenGL support.</source>
|
||||
<translation>Eden은 OpenGL 지원 기능을 포함하여 컴파일되지 않았습니다.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="892"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="910"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="920"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="887"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="905"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="915"/>
|
||||
<source>Error while initializing OpenGL!</source>
|
||||
<translation>OpenGL을 초기화하는 동안 오류가 발생했습니다!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="893"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="888"/>
|
||||
<source>Your GPU may not support OpenGL, or you do not have the latest graphics driver.</source>
|
||||
<translation>사용하시는 GPU가 OpenGL을 지원하지 않거나, 최신 그래픽 드라이버가 설치되어 있지 않습니다.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="902"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="897"/>
|
||||
<source>Error while initializing OpenGL 4.6!</source>
|
||||
<translation>OpenGL 4.6 초기화 중 오류 발생!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="903"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="898"/>
|
||||
<source>Your GPU may not support OpenGL 4.6, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1</source>
|
||||
<translation>사용 중인 GPU가 OpenGL 4.6을 지원하지 않거나 최신 그래픽 드라이버가 설치되어 있지 않습니다.<br><br>GL 렌더러:<br>%1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="911"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="906"/>
|
||||
<source>Your GPU may not support one or more required OpenGL extensions. Please ensure you have the latest graphics driver.<br><br>GL Renderer:<br>%1<br><br>Unsupported extensions:<br>%2</source>
|
||||
<translation>사용 중인 GPU가 하나 이상의 필수 OpenGL 확장 기능을 지원하지 않을 수 있습니다. 최신 그래픽 드라이버가 설치되어 있는지 확인해 주세요.<br><br>GL 렌더러:<br>%1<br><br>지원되지 않는 확장 기능:<br>%2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="921"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="916"/>
|
||||
<source>This build doesn't have OpenGL support.</source>
|
||||
<translation>이 빌드는 OpenGL을 지원하지 않습니다.</translation>
|
||||
</message>
|
||||
@@ -8688,8 +8688,8 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="35"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="396"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="462"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="395"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="461"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="183"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="251"/>
|
||||
<source>[not set]</source>
|
||||
@@ -8702,10 +8702,10 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="54"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="485"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="489"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="493"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="497"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="484"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="488"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="492"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="496"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="274"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="278"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="282"/>
|
||||
@@ -8720,9 +8720,9 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="66"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="456"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="470"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="500"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="455"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="469"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="499"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="245"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="259"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="289"/>
|
||||
@@ -8884,50 +8884,50 @@ p, li { white-space: pre-wrap; }
|
||||
<translation>[설정안됨]</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="406"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="405"/>
|
||||
<source>%1%2</source>
|
||||
<translation>%1%2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="410"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="409"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="199"/>
|
||||
<source>[invalid]</source>
|
||||
<translation>[유효하지않음]</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="420"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="444"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="419"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="443"/>
|
||||
<source>%1%2Hat %3</source>
|
||||
<translation>%1%2방향키 %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="424"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="447"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="450"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="423"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="446"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="449"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="239"/>
|
||||
<source>%1%2Axis %3</source>
|
||||
<translation>%1%2축 %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="430"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="429"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="219"/>
|
||||
<source>%1%2Axis %3,%4,%5</source>
|
||||
<translation>%1%2축 %3,%4,%5</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="434"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="433"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="223"/>
|
||||
<source>%1%2Motion %3</source>
|
||||
<translation>%1%2모션 %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="438"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="453"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="437"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="452"/>
|
||||
<source>%1%2Button %3</source>
|
||||
<translation>%1%2버튼 %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="480"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="479"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="269"/>
|
||||
<source>[unused]</source>
|
||||
<translation>[미사용]</translation>
|
||||
|
||||
Vendored
+45
-45
@@ -4269,58 +4269,58 @@ For å invertere aksene, flytt først stikken vertikalt, og så horistonalt.</tr
|
||||
<translation>[venter]</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1578"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1576"/>
|
||||
<source>New Profile</source>
|
||||
<translation>Ny profil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1578"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1576"/>
|
||||
<source>Enter a profile name:</source>
|
||||
<translation>Skriv inn et profilnavn:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1586"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1594"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1584"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1592"/>
|
||||
<source>Create Input Profile</source>
|
||||
<translation>Opprett inndataprofil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1587"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1585"/>
|
||||
<source>The given profile name is not valid!</source>
|
||||
<translation>Det oppgitte profilenavnet er ugyldig!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1595"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1593"/>
|
||||
<source>Failed to create the input profile "%1"</source>
|
||||
<translation>Klarte ikke lage inndataprofil "%1"</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1615"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1613"/>
|
||||
<source>Delete Input Profile</source>
|
||||
<translation>Slett inndataprofil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1616"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1614"/>
|
||||
<source>Failed to delete the input profile "%1"</source>
|
||||
<translation>Klarte ikke slette inndataprofil "%1"</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1638"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1636"/>
|
||||
<source>Load Input Profile</source>
|
||||
<translation>Last inn inndataprofil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1639"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1637"/>
|
||||
<source>Failed to load the input profile "%1"</source>
|
||||
<translation>Klarte ikke laste inn inndataprofil "%1"</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1664"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1662"/>
|
||||
<source>Save Input Profile</source>
|
||||
<translation>Lagre inndataprofil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1665"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1663"/>
|
||||
<source>Failed to save the input profile "%1"</source>
|
||||
<translation>Klarte ikke lagre inndataprofil "%1"</translation>
|
||||
</message>
|
||||
@@ -5926,50 +5926,50 @@ Please go to Configure -> System -> Network and make a selection.</source>
|
||||
<context>
|
||||
<name>GRenderWindow</name>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="850"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="867"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="845"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="862"/>
|
||||
<source>OpenGL not available!</source>
|
||||
<translation>OpenGL ikke tilgjengelig!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="851"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="846"/>
|
||||
<source>OpenGL shared contexts are not supported.</source>
|
||||
<translation>Delte OpenGL-kontekster støttes ikke.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="868"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="863"/>
|
||||
<source>Eden has not been compiled with OpenGL support.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="892"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="910"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="920"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="887"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="905"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="915"/>
|
||||
<source>Error while initializing OpenGL!</source>
|
||||
<translation>Feil under initialisering av OpenGL!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="893"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="888"/>
|
||||
<source>Your GPU may not support OpenGL, or you do not have the latest graphics driver.</source>
|
||||
<translation>Det kan hende at GPU-en din ikke støtter OpenGL, eller at du ikke har den nyeste grafikkdriveren.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="902"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="897"/>
|
||||
<source>Error while initializing OpenGL 4.6!</source>
|
||||
<translation>Feil under initialisering av OpenGL 4.6!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="903"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="898"/>
|
||||
<source>Your GPU may not support OpenGL 4.6, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1</source>
|
||||
<translation>Det kan hende at GPU-en din ikke støtter OpenGL 4.6, eller at du ikke har den nyeste grafikkdriveren.<br><br>GL-renderer:<br>%1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="911"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="906"/>
|
||||
<source>Your GPU may not support one or more required OpenGL extensions. Please ensure you have the latest graphics driver.<br><br>GL Renderer:<br>%1<br><br>Unsupported extensions:<br>%2</source>
|
||||
<translation>Det kan hende at GPU-en din ikke støtter én eller flere nødvendige OpenGL-utvidelser. Vennligst sørg for at du har den nyeste grafikkdriveren.<br><br>GL-renderer: <br>%1<br><br>Ikke-støttede utvidelser:<br>%2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="921"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="916"/>
|
||||
<source>This build doesn't have OpenGL support.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
@@ -8574,8 +8574,8 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="35"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="396"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="462"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="395"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="461"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="183"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="251"/>
|
||||
<source>[not set]</source>
|
||||
@@ -8588,10 +8588,10 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="54"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="485"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="489"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="493"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="497"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="484"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="488"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="492"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="496"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="274"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="278"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="282"/>
|
||||
@@ -8606,9 +8606,9 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="66"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="456"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="470"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="500"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="455"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="469"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="499"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="245"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="259"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="289"/>
|
||||
@@ -8770,50 +8770,50 @@ p, li { white-space: pre-wrap; }
|
||||
<translation>[udefinert]</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="406"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="405"/>
|
||||
<source>%1%2</source>
|
||||
<translation>%1%2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="410"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="409"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="199"/>
|
||||
<source>[invalid]</source>
|
||||
<translation>[ugyldig]</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="420"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="444"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="419"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="443"/>
|
||||
<source>%1%2Hat %3</source>
|
||||
<translation>%1%2Hat %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="424"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="447"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="450"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="423"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="446"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="449"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="239"/>
|
||||
<source>%1%2Axis %3</source>
|
||||
<translation>%1%2Akse %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="430"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="429"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="219"/>
|
||||
<source>%1%2Axis %3,%4,%5</source>
|
||||
<translation>%1%2Akse %3,%4,%5</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="434"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="433"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="223"/>
|
||||
<source>%1%2Motion %3</source>
|
||||
<translation>%1%2Bevegelse %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="438"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="453"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="437"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="452"/>
|
||||
<source>%1%2Button %3</source>
|
||||
<translation>%1%2Knapp %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="480"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="479"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="269"/>
|
||||
<source>[unused]</source>
|
||||
<translation>[ubrukt]</translation>
|
||||
|
||||
Vendored
+45
-45
@@ -4266,58 +4266,58 @@ Om de assen om te keren, beweeg je de joystick eerst verticaal en vervolgens hor
|
||||
<translation>[aan het wachten]</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1578"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1576"/>
|
||||
<source>New Profile</source>
|
||||
<translation>Nieuw Profiel</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1578"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1576"/>
|
||||
<source>Enter a profile name:</source>
|
||||
<translation>Voer een profielnaam in:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1586"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1594"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1584"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1592"/>
|
||||
<source>Create Input Profile</source>
|
||||
<translation>Maak Invoerprofiel</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1587"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1585"/>
|
||||
<source>The given profile name is not valid!</source>
|
||||
<translation>De ingevoerde profielnaam is niet geldig!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1595"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1593"/>
|
||||
<source>Failed to create the input profile "%1"</source>
|
||||
<translation>Kon invoerprofiel "%1" niet maken</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1615"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1613"/>
|
||||
<source>Delete Input Profile</source>
|
||||
<translation>Verwijder Invoerprofiel</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1616"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1614"/>
|
||||
<source>Failed to delete the input profile "%1"</source>
|
||||
<translation>Kon invoerprofiel "%1" niet verwijderen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1638"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1636"/>
|
||||
<source>Load Input Profile</source>
|
||||
<translation>Laad Invoerprofiel</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1639"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1637"/>
|
||||
<source>Failed to load the input profile "%1"</source>
|
||||
<translation>Kon invoerprofiel "%1" niet laden</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1664"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1662"/>
|
||||
<source>Save Input Profile</source>
|
||||
<translation>Sla Invoerprofiel op</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1665"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1663"/>
|
||||
<source>Failed to save the input profile "%1"</source>
|
||||
<translation>Kon invoerprofiel "%1" niet opslaan</translation>
|
||||
</message>
|
||||
@@ -5924,50 +5924,50 @@ Please go to Configure -> System -> Network and make a selection.</source>
|
||||
<context>
|
||||
<name>GRenderWindow</name>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="850"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="867"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="845"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="862"/>
|
||||
<source>OpenGL not available!</source>
|
||||
<translation>OpenGL niet beschikbaar!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="851"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="846"/>
|
||||
<source>OpenGL shared contexts are not supported.</source>
|
||||
<translation>OpenGL gedeelde contexten worden niet ondersteund.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="868"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="863"/>
|
||||
<source>Eden has not been compiled with OpenGL support.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="892"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="910"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="920"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="887"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="905"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="915"/>
|
||||
<source>Error while initializing OpenGL!</source>
|
||||
<translation>Fout tijdens het initialiseren van OpenGL!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="893"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="888"/>
|
||||
<source>Your GPU may not support OpenGL, or you do not have the latest graphics driver.</source>
|
||||
<translation>Je GPU ondersteunt mogelijk geen OpenGL, of je hebt niet de laatste grafische stuurprogramma.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="902"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="897"/>
|
||||
<source>Error while initializing OpenGL 4.6!</source>
|
||||
<translation>Fout tijdens het initialiseren van OpenGL 4.6!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="903"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="898"/>
|
||||
<source>Your GPU may not support OpenGL 4.6, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1</source>
|
||||
<translation>Je GPU ondersteunt mogelijk OpenGL 4.6 niet, of je hebt niet het laatste grafische stuurprogramma.<br><br>GL Renderer:<br>%1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="911"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="906"/>
|
||||
<source>Your GPU may not support one or more required OpenGL extensions. Please ensure you have the latest graphics driver.<br><br>GL Renderer:<br>%1<br><br>Unsupported extensions:<br>%2</source>
|
||||
<translation>Je GPU ondersteunt mogelijk een of meer vereiste OpenGL-extensies niet. Zorg ervoor dat je het laatste grafische stuurprogramma hebt.<br><br>GL Renderer:<br>%1<br><br>Ondersteunde extensies:<br>%2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="921"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="916"/>
|
||||
<source>This build doesn't have OpenGL support.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
@@ -8570,8 +8570,8 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="35"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="396"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="462"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="395"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="461"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="183"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="251"/>
|
||||
<source>[not set]</source>
|
||||
@@ -8584,10 +8584,10 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="54"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="485"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="489"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="493"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="497"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="484"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="488"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="492"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="496"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="274"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="278"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="282"/>
|
||||
@@ -8602,9 +8602,9 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="66"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="456"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="470"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="500"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="455"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="469"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="499"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="245"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="259"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="289"/>
|
||||
@@ -8766,50 +8766,50 @@ p, li { white-space: pre-wrap; }
|
||||
<translation>[ongedefinieerd]</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="406"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="405"/>
|
||||
<source>%1%2</source>
|
||||
<translation>%1%2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="410"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="409"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="199"/>
|
||||
<source>[invalid]</source>
|
||||
<translation>[ongeldig]</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="420"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="444"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="419"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="443"/>
|
||||
<source>%1%2Hat %3</source>
|
||||
<translation>%1%2Hat %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="424"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="447"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="450"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="423"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="446"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="449"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="239"/>
|
||||
<source>%1%2Axis %3</source>
|
||||
<translation>%1%2As %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="430"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="429"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="219"/>
|
||||
<source>%1%2Axis %3,%4,%5</source>
|
||||
<translation>%1%2As %3,%4,%5</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="434"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="433"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="223"/>
|
||||
<source>%1%2Motion %3</source>
|
||||
<translation>%1%2Beweging %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="438"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="453"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="437"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="452"/>
|
||||
<source>%1%2Button %3</source>
|
||||
<translation>%1%2Knop %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="480"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="479"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="269"/>
|
||||
<source>[unused]</source>
|
||||
<translation>[ongebruikt]</translation>
|
||||
|
||||
Vendored
+45
-45
@@ -4330,58 +4330,58 @@ Aby odwrócić osie, najpierw przesuń joystick pionowo, a następnie poziomo.</
|
||||
<translation>[oczekiwanie]</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1578"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1576"/>
|
||||
<source>New Profile</source>
|
||||
<translation>Nowy profil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1578"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1576"/>
|
||||
<source>Enter a profile name:</source>
|
||||
<translation>Wpisz nazwę profilu:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1586"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1594"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1584"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1592"/>
|
||||
<source>Create Input Profile</source>
|
||||
<translation>Utwórz profil wejściowy</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1587"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1585"/>
|
||||
<source>The given profile name is not valid!</source>
|
||||
<translation>Podana nazwa profilu jest nieprawidłowa!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1595"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1593"/>
|
||||
<source>Failed to create the input profile "%1"</source>
|
||||
<translation>Nie udało się utworzyć profilu wejściowego "%1"</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1615"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1613"/>
|
||||
<source>Delete Input Profile</source>
|
||||
<translation>Usuń profil wejściowy</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1616"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1614"/>
|
||||
<source>Failed to delete the input profile "%1"</source>
|
||||
<translation>Nie udało się usunąć profilu wejściowego "%1"</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1638"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1636"/>
|
||||
<source>Load Input Profile</source>
|
||||
<translation>Załaduj profil wejściowy</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1639"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1637"/>
|
||||
<source>Failed to load the input profile "%1"</source>
|
||||
<translation>Nie udało się wczytać profilu wejściowego "%1"</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1664"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1662"/>
|
||||
<source>Save Input Profile</source>
|
||||
<translation>Zapisz profil wejściowy</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1665"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1663"/>
|
||||
<source>Failed to save the input profile "%1"</source>
|
||||
<translation>Nie udało się zapisać profilu wejściowego "%1"</translation>
|
||||
</message>
|
||||
@@ -5990,50 +5990,50 @@ Przejdź do sekcji Konfiguracja -> System -> Sieć i dokonaj wyboru.</tran
|
||||
<context>
|
||||
<name>GRenderWindow</name>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="850"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="867"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="845"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="862"/>
|
||||
<source>OpenGL not available!</source>
|
||||
<translation>OpenGL niedostępny!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="851"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="846"/>
|
||||
<source>OpenGL shared contexts are not supported.</source>
|
||||
<translation>Współdzielone konteksty OpenGL nie są obsługiwane.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="868"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="863"/>
|
||||
<source>Eden has not been compiled with OpenGL support.</source>
|
||||
<translation>Eden nie został skompilowany z obsługą OpenGL.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="892"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="910"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="920"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="887"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="905"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="915"/>
|
||||
<source>Error while initializing OpenGL!</source>
|
||||
<translation>Błąd podczas inicjowania OpenGL!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="893"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="888"/>
|
||||
<source>Your GPU may not support OpenGL, or you do not have the latest graphics driver.</source>
|
||||
<translation>Twoja karta graficzna może nie obsługiwać OpenGL lub nie masz najnowszych sterowników karty graficznej.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="902"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="897"/>
|
||||
<source>Error while initializing OpenGL 4.6!</source>
|
||||
<translation>Błąd podczas inicjowania OpenGL 4.6!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="903"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="898"/>
|
||||
<source>Your GPU may not support OpenGL 4.6, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1</source>
|
||||
<translation>Twoja karta graficzna może nie obsługiwać OpenGL 4.6 lub nie masz najnowszych sterowników karty graficznej.<br><br>GL Renderer:<br>%1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="911"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="906"/>
|
||||
<source>Your GPU may not support one or more required OpenGL extensions. Please ensure you have the latest graphics driver.<br><br>GL Renderer:<br>%1<br><br>Unsupported extensions:<br>%2</source>
|
||||
<translation>Twoja karta graficzna może nie obsługiwać co najmniej jednego wymaganego rozszerzenia OpenGL. Upewnij się, że masz najnowsze sterowniki karty graficznej<br><br>GL Renderer:<br>%1<br><br>Nieobsługiwane rozszerzenia:<br>%2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="921"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="916"/>
|
||||
<source>This build doesn't have OpenGL support.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
@@ -8669,8 +8669,8 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="35"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="396"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="462"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="395"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="461"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="183"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="251"/>
|
||||
<source>[not set]</source>
|
||||
@@ -8683,10 +8683,10 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="54"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="485"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="489"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="493"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="497"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="484"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="488"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="492"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="496"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="274"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="278"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="282"/>
|
||||
@@ -8701,9 +8701,9 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="66"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="456"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="470"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="500"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="455"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="469"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="499"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="245"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="259"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="289"/>
|
||||
@@ -8865,50 +8865,50 @@ p, li { white-space: pre-wrap; }
|
||||
<translation>[niezdefiniowane]</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="406"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="405"/>
|
||||
<source>%1%2</source>
|
||||
<translation>%1%2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="410"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="409"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="199"/>
|
||||
<source>[invalid]</source>
|
||||
<translation>[niepoprawne]</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="420"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="444"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="419"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="443"/>
|
||||
<source>%1%2Hat %3</source>
|
||||
<translation>%1%2Drążek %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="424"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="447"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="450"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="423"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="446"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="449"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="239"/>
|
||||
<source>%1%2Axis %3</source>
|
||||
<translation>%1%2Oś %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="430"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="429"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="219"/>
|
||||
<source>%1%2Axis %3,%4,%5</source>
|
||||
<translation>%1%2Oś %3,%4,%5</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="434"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="433"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="223"/>
|
||||
<source>%1%2Motion %3</source>
|
||||
<translation>%1%2Ruch %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="438"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="453"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="437"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="452"/>
|
||||
<source>%1%2Button %3</source>
|
||||
<translation>%1%2Przycisk %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="480"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="479"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="269"/>
|
||||
<source>[unused]</source>
|
||||
<translation>[nieużywane]</translation>
|
||||
|
||||
Vendored
+45
-45
@@ -4332,58 +4332,58 @@ Para inverter os eixos, mova o seu analógico primeiro verticalmente e depois ho
|
||||
<translation>[em espera]</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1578"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1576"/>
|
||||
<source>New Profile</source>
|
||||
<translation>Novo Perfil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1578"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1576"/>
|
||||
<source>Enter a profile name:</source>
|
||||
<translation>Introduza um novo nome de perfil:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1586"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1594"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1584"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1592"/>
|
||||
<source>Create Input Profile</source>
|
||||
<translation>Criar perfil de controlo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1587"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1585"/>
|
||||
<source>The given profile name is not valid!</source>
|
||||
<translation>O nome de perfil dado não é válido!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1595"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1593"/>
|
||||
<source>Failed to create the input profile "%1"</source>
|
||||
<translation>Falha ao criar o perfil de controlo "%1"</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1615"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1613"/>
|
||||
<source>Delete Input Profile</source>
|
||||
<translation>Apagar Perfil de Controlo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1616"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1614"/>
|
||||
<source>Failed to delete the input profile "%1"</source>
|
||||
<translation>Falha ao apagar o perfil de controlo "%1"</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1638"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1636"/>
|
||||
<source>Load Input Profile</source>
|
||||
<translation>Carregar perfil de controlo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1639"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1637"/>
|
||||
<source>Failed to load the input profile "%1"</source>
|
||||
<translation>Falha ao carregar o perfil de controlo "%1"</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1664"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1662"/>
|
||||
<source>Save Input Profile</source>
|
||||
<translation>Salvar perfil de controle</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1665"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1663"/>
|
||||
<source>Failed to save the input profile "%1"</source>
|
||||
<translation>Falha ao salvar o perfil de controle "%1"</translation>
|
||||
</message>
|
||||
@@ -5997,50 +5997,50 @@ Por favor vá para Configuração -> Sistema -> Rede e selecione.</transla
|
||||
<context>
|
||||
<name>GRenderWindow</name>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="850"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="867"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="845"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="862"/>
|
||||
<source>OpenGL not available!</source>
|
||||
<translation>OpenGL não está disponível!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="851"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="846"/>
|
||||
<source>OpenGL shared contexts are not supported.</source>
|
||||
<translation>Shared contexts do OpenGL não são suportados.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="868"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="863"/>
|
||||
<source>Eden has not been compiled with OpenGL support.</source>
|
||||
<translation>Eden não foi compilado com suporte a OpenGL.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="892"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="910"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="920"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="887"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="905"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="915"/>
|
||||
<source>Error while initializing OpenGL!</source>
|
||||
<translation>Erro ao inicializar OpenGL!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="893"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="888"/>
|
||||
<source>Your GPU may not support OpenGL, or you do not have the latest graphics driver.</source>
|
||||
<translation>O seu GPU pode não suportar OpenGL, ou não tem os drivers gráficos mais recentes.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="902"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="897"/>
|
||||
<source>Error while initializing OpenGL 4.6!</source>
|
||||
<translation>Erro ao inicializar o OpenGL 4.6!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="903"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="898"/>
|
||||
<source>Your GPU may not support OpenGL 4.6, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1</source>
|
||||
<translation>A sua GPU não tem suporte a OpenGL 4.6, talvez você não esteja usando os drivers gráficos mais atuais.<br><br>Renderizador GL:<br>%1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="911"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="906"/>
|
||||
<source>Your GPU may not support one or more required OpenGL extensions. Please ensure you have the latest graphics driver.<br><br>GL Renderer:<br>%1<br><br>Unsupported extensions:<br>%2</source>
|
||||
<translation>Sua GPU pode não suportar uma ou mais extensões necessárias do OpenGL. Verifique se você possui a última versão dos drivers gráficos.<br><br>Renderizador GL:<br>%1<br><br>Extensões não suportadas:<br>%2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="921"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="916"/>
|
||||
<source>This build doesn't have OpenGL support.</source>
|
||||
<translation>Essa build não suporte a OpenGL.</translation>
|
||||
</message>
|
||||
@@ -8647,8 +8647,8 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="35"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="396"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="462"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="395"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="461"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="183"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="251"/>
|
||||
<source>[not set]</source>
|
||||
@@ -8661,10 +8661,10 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="54"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="485"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="489"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="493"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="497"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="484"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="488"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="492"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="496"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="274"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="278"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="282"/>
|
||||
@@ -8679,9 +8679,9 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="66"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="456"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="470"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="500"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="455"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="469"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="499"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="245"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="259"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="289"/>
|
||||
@@ -8843,50 +8843,50 @@ p, li { white-space: pre-wrap; }
|
||||
<translation>[indefinido]</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="406"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="405"/>
|
||||
<source>%1%2</source>
|
||||
<translation>%1%2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="410"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="409"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="199"/>
|
||||
<source>[invalid]</source>
|
||||
<translation>[inválido]</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="420"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="444"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="419"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="443"/>
|
||||
<source>%1%2Hat %3</source>
|
||||
<translation>%1%2Direcional %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="424"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="447"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="450"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="423"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="446"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="449"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="239"/>
|
||||
<source>%1%2Axis %3</source>
|
||||
<translation>%1%2Eixo %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="430"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="429"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="219"/>
|
||||
<source>%1%2Axis %3,%4,%5</source>
|
||||
<translation>%1%2Eixo %3,%4,%5</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="434"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="433"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="223"/>
|
||||
<source>%1%2Motion %3</source>
|
||||
<translation>%1%2Movimentação %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="438"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="453"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="437"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="452"/>
|
||||
<source>%1%2Button %3</source>
|
||||
<translation>%1%2Botão %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="480"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="479"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="269"/>
|
||||
<source>[unused]</source>
|
||||
<translation>[sem uso]</translation>
|
||||
|
||||
Vendored
+45
-45
@@ -4269,58 +4269,58 @@ Para inverter os eixos, mova o seu analógico primeiro verticalmente e depois ho
|
||||
<translation>[em espera]</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1578"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1576"/>
|
||||
<source>New Profile</source>
|
||||
<translation>Novo Perfil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1578"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1576"/>
|
||||
<source>Enter a profile name:</source>
|
||||
<translation>Introduza um novo nome de perfil:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1586"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1594"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1584"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1592"/>
|
||||
<source>Create Input Profile</source>
|
||||
<translation>Criar perfil de controlo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1587"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1585"/>
|
||||
<source>The given profile name is not valid!</source>
|
||||
<translation>O nome de perfil dado não é válido!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1595"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1593"/>
|
||||
<source>Failed to create the input profile "%1"</source>
|
||||
<translation>Falha ao criar o perfil de controlo "%1"</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1615"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1613"/>
|
||||
<source>Delete Input Profile</source>
|
||||
<translation>Apagar Perfil de Controlo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1616"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1614"/>
|
||||
<source>Failed to delete the input profile "%1"</source>
|
||||
<translation>Falha ao apagar o perfil de controlo "%1"</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1638"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1636"/>
|
||||
<source>Load Input Profile</source>
|
||||
<translation>Carregar perfil de controlo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1639"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1637"/>
|
||||
<source>Failed to load the input profile "%1"</source>
|
||||
<translation>Falha ao carregar o perfil de controlo "%1"</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1664"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1662"/>
|
||||
<source>Save Input Profile</source>
|
||||
<translation>Guardar perfil de controlo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1665"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1663"/>
|
||||
<source>Failed to save the input profile "%1"</source>
|
||||
<translation>Falha ao guardar o perfil de controlo "%1"</translation>
|
||||
</message>
|
||||
@@ -5927,50 +5927,50 @@ Please go to Configure -> System -> Network and make a selection.</source>
|
||||
<context>
|
||||
<name>GRenderWindow</name>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="850"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="867"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="845"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="862"/>
|
||||
<source>OpenGL not available!</source>
|
||||
<translation>OpenGL não está disponível!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="851"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="846"/>
|
||||
<source>OpenGL shared contexts are not supported.</source>
|
||||
<translation>Shared contexts do OpenGL não são suportados.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="868"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="863"/>
|
||||
<source>Eden has not been compiled with OpenGL support.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="892"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="910"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="920"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="887"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="905"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="915"/>
|
||||
<source>Error while initializing OpenGL!</source>
|
||||
<translation>Erro ao inicializar OpenGL!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="893"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="888"/>
|
||||
<source>Your GPU may not support OpenGL, or you do not have the latest graphics driver.</source>
|
||||
<translation>O seu GPU pode não suportar OpenGL, ou não tem os drivers gráficos mais recentes.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="902"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="897"/>
|
||||
<source>Error while initializing OpenGL 4.6!</source>
|
||||
<translation>Erro ao inicializar o OpenGL 4.6!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="903"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="898"/>
|
||||
<source>Your GPU may not support OpenGL 4.6, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1</source>
|
||||
<translation>O teu GPU pode não suportar OpenGL 4.6, ou não tem os drivers gráficos mais recentes.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="911"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="906"/>
|
||||
<source>Your GPU may not support one or more required OpenGL extensions. Please ensure you have the latest graphics driver.<br><br>GL Renderer:<br>%1<br><br>Unsupported extensions:<br>%2</source>
|
||||
<translation>Sua GPU pode não suportar uma ou mais extensões necessárias do OpenGL. Verifique se você possui a última versão dos drivers gráficos.<br><br>Renderizador GL:<br>%1<br><br>Extensões não suportadas:<br>%2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="921"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="916"/>
|
||||
<source>This build doesn't have OpenGL support.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
@@ -8573,8 +8573,8 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="35"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="396"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="462"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="395"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="461"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="183"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="251"/>
|
||||
<source>[not set]</source>
|
||||
@@ -8587,10 +8587,10 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="54"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="485"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="489"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="493"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="497"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="484"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="488"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="492"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="496"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="274"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="278"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="282"/>
|
||||
@@ -8605,9 +8605,9 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="66"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="456"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="470"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="500"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="455"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="469"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="499"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="245"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="259"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="289"/>
|
||||
@@ -8769,50 +8769,50 @@ p, li { white-space: pre-wrap; }
|
||||
<translation>[indefinido]</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="406"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="405"/>
|
||||
<source>%1%2</source>
|
||||
<translation>%1%2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="410"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="409"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="199"/>
|
||||
<source>[invalid]</source>
|
||||
<translation>[inválido]</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="420"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="444"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="419"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="443"/>
|
||||
<source>%1%2Hat %3</source>
|
||||
<translation>%1%2Direcional %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="424"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="447"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="450"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="423"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="446"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="449"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="239"/>
|
||||
<source>%1%2Axis %3</source>
|
||||
<translation>%1%2Eixo %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="430"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="429"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="219"/>
|
||||
<source>%1%2Axis %3,%4,%5</source>
|
||||
<translation>%1%2Eixo %3,%4,%5</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="434"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="433"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="223"/>
|
||||
<source>%1%2Motion %3</source>
|
||||
<translation>%1%2Movimentação %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="438"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="453"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="437"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="452"/>
|
||||
<source>%1%2Button %3</source>
|
||||
<translation>%1%2Botão %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="480"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="479"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="269"/>
|
||||
<source>[unused]</source>
|
||||
<translation>[sem uso]</translation>
|
||||
|
||||
Vendored
+45
-45
@@ -4339,58 +4339,58 @@ To invert the axes, first move your joystick vertically, and then horizontally.<
|
||||
<translation>[ожидание]</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1578"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1576"/>
|
||||
<source>New Profile</source>
|
||||
<translation>Новый профиль</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1578"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1576"/>
|
||||
<source>Enter a profile name:</source>
|
||||
<translation>Введите имя профиля:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1586"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1594"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1584"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1592"/>
|
||||
<source>Create Input Profile</source>
|
||||
<translation>Создать профиль управления</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1587"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1585"/>
|
||||
<source>The given profile name is not valid!</source>
|
||||
<translation>Заданное имя профиля недействительно!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1595"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1593"/>
|
||||
<source>Failed to create the input profile "%1"</source>
|
||||
<translation>Не удалось создать профиль управления "%1"</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1615"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1613"/>
|
||||
<source>Delete Input Profile</source>
|
||||
<translation>Удалить профиль управления</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1616"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1614"/>
|
||||
<source>Failed to delete the input profile "%1"</source>
|
||||
<translation>Не удалось удалить профиль управления "%1"</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1638"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1636"/>
|
||||
<source>Load Input Profile</source>
|
||||
<translation>Загрузить профиль управления</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1639"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1637"/>
|
||||
<source>Failed to load the input profile "%1"</source>
|
||||
<translation>Не удалось загрузить профиль управления "%1"</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1664"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1662"/>
|
||||
<source>Save Input Profile</source>
|
||||
<translation>Сохранить профиль управления</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1665"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1663"/>
|
||||
<source>Failed to save the input profile "%1"</source>
|
||||
<translation>Не удалось сохранить профиль управления "%1"</translation>
|
||||
</message>
|
||||
@@ -6005,50 +6005,50 @@ Please go to Configure -> System -> Network and make a selection.</source>
|
||||
<context>
|
||||
<name>GRenderWindow</name>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="850"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="867"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="845"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="862"/>
|
||||
<source>OpenGL not available!</source>
|
||||
<translation>OpenGL не доступен!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="851"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="846"/>
|
||||
<source>OpenGL shared contexts are not supported.</source>
|
||||
<translation>Общие контексты OpenGL не поддерживаются.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="868"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="863"/>
|
||||
<source>Eden has not been compiled with OpenGL support.</source>
|
||||
<translation>Eden не был скомпилирован с поддержкой OpenGL.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="892"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="910"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="920"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="887"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="905"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="915"/>
|
||||
<source>Error while initializing OpenGL!</source>
|
||||
<translation>Ошибка при инициализации OpenGL!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="893"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="888"/>
|
||||
<source>Your GPU may not support OpenGL, or you do not have the latest graphics driver.</source>
|
||||
<translation>Ваш ГП может не поддерживать OpenGL, или у вас установлен устаревший графический драйвер.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="902"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="897"/>
|
||||
<source>Error while initializing OpenGL 4.6!</source>
|
||||
<translation>Ошибка при инициализации OpenGL 4.6!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="903"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="898"/>
|
||||
<source>Your GPU may not support OpenGL 4.6, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1</source>
|
||||
<translation>Ваш ГП может не поддерживать OpenGL 4.6, или у вас установлен устаревший графический драйвер.<br><br>Рендерер GL:<br>%1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="911"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="906"/>
|
||||
<source>Your GPU may not support one or more required OpenGL extensions. Please ensure you have the latest graphics driver.<br><br>GL Renderer:<br>%1<br><br>Unsupported extensions:<br>%2</source>
|
||||
<translation>Ваш ГП может не поддерживать одно или несколько требуемых расширений OpenGL. Пожалуйста, убедитесь в том, что у вас установлен последний графический драйвер.<br><br>Рендерер GL:<br>%1<br><br>Неподдерживаемые расширения:<br>%2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="921"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="916"/>
|
||||
<source>This build doesn't have OpenGL support.</source>
|
||||
<translation>В этой сборке отсутствует поддержка OpenGL.</translation>
|
||||
</message>
|
||||
@@ -8685,8 +8685,8 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="35"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="396"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="462"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="395"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="461"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="183"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="251"/>
|
||||
<source>[not set]</source>
|
||||
@@ -8699,10 +8699,10 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="54"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="485"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="489"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="493"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="497"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="484"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="488"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="492"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="496"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="274"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="278"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="282"/>
|
||||
@@ -8717,9 +8717,9 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="66"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="456"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="470"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="500"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="455"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="469"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="499"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="245"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="259"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="289"/>
|
||||
@@ -8881,50 +8881,50 @@ p, li { white-space: pre-wrap; }
|
||||
<translation>[не определено]</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="406"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="405"/>
|
||||
<source>%1%2</source>
|
||||
<translation>%1%2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="410"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="409"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="199"/>
|
||||
<source>[invalid]</source>
|
||||
<translation>[недопустимо]</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="420"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="444"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="419"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="443"/>
|
||||
<source>%1%2Hat %3</source>
|
||||
<translation>%1%2Крест. %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="424"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="447"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="450"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="423"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="446"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="449"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="239"/>
|
||||
<source>%1%2Axis %3</source>
|
||||
<translation>%1%2Ось %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="430"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="429"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="219"/>
|
||||
<source>%1%2Axis %3,%4,%5</source>
|
||||
<translation>%1%2Ось %3,%4,%5</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="434"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="433"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="223"/>
|
||||
<source>%1%2Motion %3</source>
|
||||
<translation>%1%2Движение %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="438"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="453"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="437"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="452"/>
|
||||
<source>%1%2Button %3</source>
|
||||
<translation>%1%2Кнопка %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="480"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="479"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="269"/>
|
||||
<source>[unused]</source>
|
||||
<translation>[не используется]</translation>
|
||||
|
||||
Vendored
+45
-45
@@ -4347,58 +4347,58 @@ Om du vill invertera axlarna för du joysticken först vertikalt och sedan horis
|
||||
<translation>[väntar]</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1578"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1576"/>
|
||||
<source>New Profile</source>
|
||||
<translation>Ny profil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1578"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1576"/>
|
||||
<source>Enter a profile name:</source>
|
||||
<translation>Ange ett profilnamn:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1586"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1594"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1584"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1592"/>
|
||||
<source>Create Input Profile</source>
|
||||
<translation>Skapa inmatningsprofil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1587"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1585"/>
|
||||
<source>The given profile name is not valid!</source>
|
||||
<translation>Det angivna profilnamnet är inte giltigt!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1595"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1593"/>
|
||||
<source>Failed to create the input profile "%1"</source>
|
||||
<translation>Misslyckades med att skapa inmatningsprofilen "%1"</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1615"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1613"/>
|
||||
<source>Delete Input Profile</source>
|
||||
<translation>Radera inmatningsprofil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1616"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1614"/>
|
||||
<source>Failed to delete the input profile "%1"</source>
|
||||
<translation>Misslyckades med att ta bort inmatningsprofilen "%1"</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1638"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1636"/>
|
||||
<source>Load Input Profile</source>
|
||||
<translation>Läs in inmatningsprofil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1639"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1637"/>
|
||||
<source>Failed to load the input profile "%1"</source>
|
||||
<translation>Misslyckades med att läsa in inmatningsprofilen "%1"</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1664"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1662"/>
|
||||
<source>Save Input Profile</source>
|
||||
<translation>Spara inmatningsprofil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1665"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1663"/>
|
||||
<source>Failed to save the input profile "%1"</source>
|
||||
<translation>Misslyckades med att spara inmatningsprofilen "%1"</translation>
|
||||
</message>
|
||||
@@ -6012,50 +6012,50 @@ Gå till Konfigurera -> System -> Nätverk och gör ett val.</translation>
|
||||
<context>
|
||||
<name>GRenderWindow</name>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="850"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="867"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="845"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="862"/>
|
||||
<source>OpenGL not available!</source>
|
||||
<translation>OpenGL är inte tillgängligt!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="851"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="846"/>
|
||||
<source>OpenGL shared contexts are not supported.</source>
|
||||
<translation>Delade OpenGL-kontexter stöds inte.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="868"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="863"/>
|
||||
<source>Eden has not been compiled with OpenGL support.</source>
|
||||
<translation>Eden har inte kompilerats med OpenGL-stöd.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="892"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="910"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="920"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="887"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="905"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="915"/>
|
||||
<source>Error while initializing OpenGL!</source>
|
||||
<translation>Fel vid initiering av OpenGL!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="893"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="888"/>
|
||||
<source>Your GPU may not support OpenGL, or you do not have the latest graphics driver.</source>
|
||||
<translation>Din GPU kanske inte stöder OpenGL, eller så har du inte den senaste grafikdrivrutinen.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="902"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="897"/>
|
||||
<source>Error while initializing OpenGL 4.6!</source>
|
||||
<translation>Fel vid initiering av OpenGL 4.6!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="903"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="898"/>
|
||||
<source>Your GPU may not support OpenGL 4.6, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1</source>
|
||||
<translation>Din GPU kanske inte stöder OpenGL 4.6, eller så har du inte den senaste grafikdrivrutinen.<br><br>GL Renderer:<br>%1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="911"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="906"/>
|
||||
<source>Your GPU may not support one or more required OpenGL extensions. Please ensure you have the latest graphics driver.<br><br>GL Renderer:<br>%1<br><br>Unsupported extensions:<br>%2</source>
|
||||
<translation>Din GPU kanske inte stöder ett eller flera av de nödvändiga OpenGL-tilläggen. Se till att du har den senaste grafikdrivrutinen.<br><br>GL Renderer:<br>%1<br><br>Tillägg som inte stöds:<br>%2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="921"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="916"/>
|
||||
<source>This build doesn't have OpenGL support.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
@@ -8686,8 +8686,8 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="35"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="396"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="462"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="395"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="461"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="183"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="251"/>
|
||||
<source>[not set]</source>
|
||||
@@ -8700,10 +8700,10 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="54"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="485"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="489"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="493"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="497"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="484"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="488"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="492"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="496"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="274"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="278"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="282"/>
|
||||
@@ -8718,9 +8718,9 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="66"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="456"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="470"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="500"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="455"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="469"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="499"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="245"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="259"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="289"/>
|
||||
@@ -8882,50 +8882,50 @@ p, li { white-space: pre-wrap; }
|
||||
<translation>[odefinierad]</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="406"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="405"/>
|
||||
<source>%1%2</source>
|
||||
<translation>%1%2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="410"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="409"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="199"/>
|
||||
<source>[invalid]</source>
|
||||
<translation>[ogiltig]</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="420"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="444"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="419"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="443"/>
|
||||
<source>%1%2Hat %3</source>
|
||||
<translation>%1%2Hatt %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="424"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="447"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="450"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="423"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="446"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="449"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="239"/>
|
||||
<source>%1%2Axis %3</source>
|
||||
<translation>%1%2Axel %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="430"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="429"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="219"/>
|
||||
<source>%1%2Axis %3,%4,%5</source>
|
||||
<translation>%1%2Axel %3,%4,%5</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="434"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="433"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="223"/>
|
||||
<source>%1%2Motion %3</source>
|
||||
<translation>%1%2Motion %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="438"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="453"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="437"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="452"/>
|
||||
<source>%1%2Button %3</source>
|
||||
<translation>%1%2Knapp %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="480"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="479"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="269"/>
|
||||
<source>[unused]</source>
|
||||
<translation>[oanvänd]</translation>
|
||||
|
||||
Vendored
+45
-45
@@ -4297,58 +4297,58 @@ Eksenleri ters çevirmek için, önce joystickinizi dikey sonra yatay olarak har
|
||||
<translation>[bekleniyor]</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1578"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1576"/>
|
||||
<source>New Profile</source>
|
||||
<translation>Yeni Profil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1578"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1576"/>
|
||||
<source>Enter a profile name:</source>
|
||||
<translation>Bir profil ismi girin:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1586"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1594"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1584"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1592"/>
|
||||
<source>Create Input Profile</source>
|
||||
<translation>Kontrol Profili Oluştur</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1587"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1585"/>
|
||||
<source>The given profile name is not valid!</source>
|
||||
<translation>Girilen profil ismi geçerli değil!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1595"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1593"/>
|
||||
<source>Failed to create the input profile "%1"</source>
|
||||
<translation>"%1" kontrol profili oluşturulamadı </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1615"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1613"/>
|
||||
<source>Delete Input Profile</source>
|
||||
<translation>Kontrol Profilini Kaldır</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1616"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1614"/>
|
||||
<source>Failed to delete the input profile "%1"</source>
|
||||
<translation>"%1" kontrol profili kaldırılamadı</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1638"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1636"/>
|
||||
<source>Load Input Profile</source>
|
||||
<translation>Kontrol Profilini Yükle</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1639"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1637"/>
|
||||
<source>Failed to load the input profile "%1"</source>
|
||||
<translation>"%1" kontrol profili yüklenemedi</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1664"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1662"/>
|
||||
<source>Save Input Profile</source>
|
||||
<translation>Kontrol Profilini Kaydet</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1665"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1663"/>
|
||||
<source>Failed to save the input profile "%1"</source>
|
||||
<translation>"%1" kontrol profili kaydedilemedi</translation>
|
||||
</message>
|
||||
@@ -5955,50 +5955,50 @@ Please go to Configure -> System -> Network and make a selection.</source>
|
||||
<context>
|
||||
<name>GRenderWindow</name>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="850"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="867"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="845"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="862"/>
|
||||
<source>OpenGL not available!</source>
|
||||
<translation>OpenGL kullanıma uygun değil!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="851"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="846"/>
|
||||
<source>OpenGL shared contexts are not supported.</source>
|
||||
<translation>OpenGL paylaşılan bağlam desteklenmiyor.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="868"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="863"/>
|
||||
<source>Eden has not been compiled with OpenGL support.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="892"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="910"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="920"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="887"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="905"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="915"/>
|
||||
<source>Error while initializing OpenGL!</source>
|
||||
<translation>OpenGl başlatılırken bir hata oluştu!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="893"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="888"/>
|
||||
<source>Your GPU may not support OpenGL, or you do not have the latest graphics driver.</source>
|
||||
<translation>GPU'nuz OpenGL desteklemiyor veya güncel bir grafik sürücüsüne sahip değilsiniz.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="902"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="897"/>
|
||||
<source>Error while initializing OpenGL 4.6!</source>
|
||||
<translation>OpenGl 4.6 başlatılırken bir hata oluştu!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="903"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="898"/>
|
||||
<source>Your GPU may not support OpenGL 4.6, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1</source>
|
||||
<translation>GPU'nuz OpenGL 4.6'yı desteklemiyor veya güncel bir grafik sürücüsüne sahip değilsiniz.<br><br>GL Renderer:<br>%1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="911"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="906"/>
|
||||
<source>Your GPU may not support one or more required OpenGL extensions. Please ensure you have the latest graphics driver.<br><br>GL Renderer:<br>%1<br><br>Unsupported extensions:<br>%2</source>
|
||||
<translation>GPU'nuz gereken bir yada daha fazla OpenGL eklentisini desteklemiyor Lütfen güncel bir grafik sürücüsüne sahip olduğunuzdan emin olun.<br><br>GL Renderer:<br>%1<br><br> Desteklenmeyen Eklentiler:<br>%2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="921"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="916"/>
|
||||
<source>This build doesn't have OpenGL support.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
@@ -8601,8 +8601,8 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="35"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="396"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="462"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="395"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="461"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="183"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="251"/>
|
||||
<source>[not set]</source>
|
||||
@@ -8615,10 +8615,10 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="54"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="485"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="489"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="493"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="497"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="484"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="488"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="492"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="496"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="274"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="278"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="282"/>
|
||||
@@ -8633,9 +8633,9 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="66"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="456"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="470"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="500"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="455"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="469"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="499"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="245"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="259"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="289"/>
|
||||
@@ -8797,50 +8797,50 @@ p, li { white-space: pre-wrap; }
|
||||
<translation>[belirsiz]</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="406"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="405"/>
|
||||
<source>%1%2</source>
|
||||
<translation>%1%2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="410"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="409"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="199"/>
|
||||
<source>[invalid]</source>
|
||||
<translation>[geçersiz]</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="420"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="444"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="419"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="443"/>
|
||||
<source>%1%2Hat %3</source>
|
||||
<translation>%1%2Hat %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="424"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="447"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="450"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="423"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="446"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="449"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="239"/>
|
||||
<source>%1%2Axis %3</source>
|
||||
<translation>%1%2Eksen %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="430"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="429"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="219"/>
|
||||
<source>%1%2Axis %3,%4,%5</source>
|
||||
<translation>%1%2Eksen %3,%4,%5</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="434"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="433"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="223"/>
|
||||
<source>%1%2Motion %3</source>
|
||||
<translation>%1%2Hareket %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="438"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="453"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="437"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="452"/>
|
||||
<source>%1%2Button %3</source>
|
||||
<translation>%1%2Tuş %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="480"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="479"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="269"/>
|
||||
<source>[unused]</source>
|
||||
<translation>[kullanılmayan]</translation>
|
||||
|
||||
Vendored
+45
-45
@@ -4344,58 +4344,58 @@ To invert the axes, first move your joystick vertically, and then horizontally.<
|
||||
<translation>[очікування]</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1578"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1576"/>
|
||||
<source>New Profile</source>
|
||||
<translation>Новий профіль</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1578"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1576"/>
|
||||
<source>Enter a profile name:</source>
|
||||
<translation>Введіть назву профілю:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1586"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1594"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1584"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1592"/>
|
||||
<source>Create Input Profile</source>
|
||||
<translation>Створити профіль введення</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1587"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1585"/>
|
||||
<source>The given profile name is not valid!</source>
|
||||
<translation>Задана назва профілю неправильна!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1595"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1593"/>
|
||||
<source>Failed to create the input profile "%1"</source>
|
||||
<translation>Не вдалося створити профіль введення «%1»</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1615"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1613"/>
|
||||
<source>Delete Input Profile</source>
|
||||
<translation>Видалити профіль введення</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1616"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1614"/>
|
||||
<source>Failed to delete the input profile "%1"</source>
|
||||
<translation>Не вдалося видалити профіль введення «%1»</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1638"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1636"/>
|
||||
<source>Load Input Profile</source>
|
||||
<translation>Завантажити профіль введення</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1639"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1637"/>
|
||||
<source>Failed to load the input profile "%1"</source>
|
||||
<translation>Не вдалося завантажити профіль введення «%1»</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1664"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1662"/>
|
||||
<source>Save Input Profile</source>
|
||||
<translation>Зберегти профіль введення</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1665"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1663"/>
|
||||
<source>Failed to save the input profile "%1"</source>
|
||||
<translation>Не вдалося зберегти профіль введення «%1»</translation>
|
||||
</message>
|
||||
@@ -6009,50 +6009,50 @@ Please go to Configure -> System -> Network and make a selection.</source>
|
||||
<context>
|
||||
<name>GRenderWindow</name>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="850"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="867"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="845"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="862"/>
|
||||
<source>OpenGL not available!</source>
|
||||
<translation>OpenGL недоступний!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="851"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="846"/>
|
||||
<source>OpenGL shared contexts are not supported.</source>
|
||||
<translation>Спільні контексти OpenGL не підтримуються.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="868"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="863"/>
|
||||
<source>Eden has not been compiled with OpenGL support.</source>
|
||||
<translation>Eden не скомпільовано з підтримкою OpenGL.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="892"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="910"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="920"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="887"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="905"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="915"/>
|
||||
<source>Error while initializing OpenGL!</source>
|
||||
<translation>Помилка під час ініціалізації OpenGL!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="893"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="888"/>
|
||||
<source>Your GPU may not support OpenGL, or you do not have the latest graphics driver.</source>
|
||||
<translation>Ваш ГП може не підтримувати OpenGL або у вас встановлено застарілий графічний драйвер.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="902"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="897"/>
|
||||
<source>Error while initializing OpenGL 4.6!</source>
|
||||
<translation>Помилка під час ініціалізації OpenGL 4.6!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="903"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="898"/>
|
||||
<source>Your GPU may not support OpenGL 4.6, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1</source>
|
||||
<translation>Ваш ГП може не підтримувати OpenGL 4.6 або у вас встановлено застарілий графічний драйвер.<br><br>Візуалізатор GL:<br>%1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="911"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="906"/>
|
||||
<source>Your GPU may not support one or more required OpenGL extensions. Please ensure you have the latest graphics driver.<br><br>GL Renderer:<br>%1<br><br>Unsupported extensions:<br>%2</source>
|
||||
<translation>Ваш ГП може не підтримувати одне або кілька розширень, необхідних для OpenGL. Переконайтеся, що у вас встановлено останній графічний драйвер.<br><br>Візуалізатор GL:<br>%1<br><br>Непідтримувані розширення:<br>%2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="921"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="916"/>
|
||||
<source>This build doesn't have OpenGL support.</source>
|
||||
<translation>Ця збірка не підтримує OpenGL.</translation>
|
||||
</message>
|
||||
@@ -8689,8 +8689,8 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="35"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="396"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="462"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="395"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="461"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="183"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="251"/>
|
||||
<source>[not set]</source>
|
||||
@@ -8703,10 +8703,10 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="54"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="485"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="489"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="493"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="497"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="484"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="488"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="492"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="496"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="274"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="278"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="282"/>
|
||||
@@ -8721,9 +8721,9 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="66"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="456"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="470"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="500"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="455"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="469"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="499"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="245"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="259"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="289"/>
|
||||
@@ -8885,50 +8885,50 @@ p, li { white-space: pre-wrap; }
|
||||
<translation>[невизначено]</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="406"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="405"/>
|
||||
<source>%1%2</source>
|
||||
<translation>%1%2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="410"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="409"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="199"/>
|
||||
<source>[invalid]</source>
|
||||
<translation>[неправильно]</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="420"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="444"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="419"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="443"/>
|
||||
<source>%1%2Hat %3</source>
|
||||
<translation>%1%2Напр. %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="424"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="447"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="450"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="423"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="446"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="449"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="239"/>
|
||||
<source>%1%2Axis %3</source>
|
||||
<translation>%1%2Вісь %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="430"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="429"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="219"/>
|
||||
<source>%1%2Axis %3,%4,%5</source>
|
||||
<translation>%1%2Вісь %3,%4,%5</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="434"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="433"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="223"/>
|
||||
<source>%1%2Motion %3</source>
|
||||
<translation>%1%2Рух %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="438"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="453"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="437"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="452"/>
|
||||
<source>%1%2Button %3</source>
|
||||
<translation>%1%2Кнопка %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="480"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="479"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="269"/>
|
||||
<source>[unused]</source>
|
||||
<translation>[не використано]</translation>
|
||||
|
||||
Vendored
+45
-45
@@ -4269,58 +4269,58 @@ To invert the axes, first move your joystick vertically, and then horizontally.<
|
||||
<translation>[đang chờ]</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1578"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1576"/>
|
||||
<source>New Profile</source>
|
||||
<translation>Hồ sơ mới</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1578"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1576"/>
|
||||
<source>Enter a profile name:</source>
|
||||
<translation>Nhập tên hồ sơ:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1586"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1594"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1584"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1592"/>
|
||||
<source>Create Input Profile</source>
|
||||
<translation>Tạo hồ sơ đầu vào</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1587"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1585"/>
|
||||
<source>The given profile name is not valid!</source>
|
||||
<translation>Tên hồ sơ không hợp lệ!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1595"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1593"/>
|
||||
<source>Failed to create the input profile "%1"</source>
|
||||
<translation>Thất bại khi tạo hồ sơ đầu vào "%1"</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1615"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1613"/>
|
||||
<source>Delete Input Profile</source>
|
||||
<translation>Xoá hồ sơ đầu vào</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1616"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1614"/>
|
||||
<source>Failed to delete the input profile "%1"</source>
|
||||
<translation>Thất bại khi xoá hồ sơ đầu vào "%1"</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1638"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1636"/>
|
||||
<source>Load Input Profile</source>
|
||||
<translation>Nạp hồ sơ đầu vào</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1639"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1637"/>
|
||||
<source>Failed to load the input profile "%1"</source>
|
||||
<translation>Thất bại khi nạp hồ sơ đầu vào "%1"</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1664"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1662"/>
|
||||
<source>Save Input Profile</source>
|
||||
<translation>Lưu hồ sơ đầu vào</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1665"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1663"/>
|
||||
<source>Failed to save the input profile "%1"</source>
|
||||
<translation>Thất bại khi lưu hồ sơ dầu vào "%1"</translation>
|
||||
</message>
|
||||
@@ -5927,50 +5927,50 @@ Please go to Configure -> System -> Network and make a selection.</source>
|
||||
<context>
|
||||
<name>GRenderWindow</name>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="850"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="867"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="845"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="862"/>
|
||||
<source>OpenGL not available!</source>
|
||||
<translation>OpenGL không khả dụng!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="851"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="846"/>
|
||||
<source>OpenGL shared contexts are not supported.</source>
|
||||
<translation>Các ngữ cảnh OpenGL chung không được hỗ trợ.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="868"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="863"/>
|
||||
<source>Eden has not been compiled with OpenGL support.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="892"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="910"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="920"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="887"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="905"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="915"/>
|
||||
<source>Error while initializing OpenGL!</source>
|
||||
<translation>Lỗi khi khởi tạo OpenGL!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="893"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="888"/>
|
||||
<source>Your GPU may not support OpenGL, or you do not have the latest graphics driver.</source>
|
||||
<translation>GPU của bạn có thể không hỗ trợ OpenGL, hoặc bạn không có driver đồ hoạ mới nhất.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="902"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="897"/>
|
||||
<source>Error while initializing OpenGL 4.6!</source>
|
||||
<translation>Lỗi khi khởi tạo OpenGL 4.6!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="903"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="898"/>
|
||||
<source>Your GPU may not support OpenGL 4.6, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1</source>
|
||||
<translation>GPU của bạn có thể không hỗ trợ OpenGL 4.6, hoặc bạn không có driver đồ hoạ mới nhất.<br><br>GL Renderer:<br>%1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="911"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="906"/>
|
||||
<source>Your GPU may not support one or more required OpenGL extensions. Please ensure you have the latest graphics driver.<br><br>GL Renderer:<br>%1<br><br>Unsupported extensions:<br>%2</source>
|
||||
<translation>GPU của bạn có thể không hỗ trợ một hoặc nhiều tiện ích OpenGL cần thiết. Vui lòng đảm bảo bạn có driver đồ hoạ mới nhất.<br><br>GL Renderer:<br>%1<br><br>Tiện ích không hỗ trợ:<br>%2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="921"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="916"/>
|
||||
<source>This build doesn't have OpenGL support.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
@@ -8573,8 +8573,8 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="35"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="396"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="462"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="395"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="461"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="183"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="251"/>
|
||||
<source>[not set]</source>
|
||||
@@ -8587,10 +8587,10 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="54"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="485"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="489"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="493"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="497"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="484"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="488"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="492"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="496"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="274"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="278"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="282"/>
|
||||
@@ -8605,9 +8605,9 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="66"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="456"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="470"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="500"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="455"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="469"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="499"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="245"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="259"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="289"/>
|
||||
@@ -8769,50 +8769,50 @@ p, li { white-space: pre-wrap; }
|
||||
<translation>[không xác định]</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="406"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="405"/>
|
||||
<source>%1%2</source>
|
||||
<translation>%1%2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="410"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="409"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="199"/>
|
||||
<source>[invalid]</source>
|
||||
<translation>[không hợp lệ]</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="420"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="444"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="419"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="443"/>
|
||||
<source>%1%2Hat %3</source>
|
||||
<translation>%1%2Mũ %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="424"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="447"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="450"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="423"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="446"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="449"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="239"/>
|
||||
<source>%1%2Axis %3</source>
|
||||
<translation>%1%2Trục %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="430"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="429"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="219"/>
|
||||
<source>%1%2Axis %3,%4,%5</source>
|
||||
<translation>%1%2Trục %3,%4,%5</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="434"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="433"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="223"/>
|
||||
<source>%1%2Motion %3</source>
|
||||
<translation>%1%2Chuyển động %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="438"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="453"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="437"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="452"/>
|
||||
<source>%1%2Button %3</source>
|
||||
<translation>%1%2Nút %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="480"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="479"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="269"/>
|
||||
<source>[unused]</source>
|
||||
<translation>[không sử dụng]</translation>
|
||||
|
||||
Vendored
+45
-45
@@ -4269,58 +4269,58 @@ Nếu muốn đảo ngược hướng cần điều khiển, di chuyển cần s
|
||||
<translation>[Chờ]</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1578"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1576"/>
|
||||
<source>New Profile</source>
|
||||
<translation>Hồ sơ mới</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1578"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1576"/>
|
||||
<source>Enter a profile name:</source>
|
||||
<translation>Nhập tên hồ sơ:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1586"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1594"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1584"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1592"/>
|
||||
<source>Create Input Profile</source>
|
||||
<translation>Tạo Hồ Sơ Phím</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1587"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1585"/>
|
||||
<source>The given profile name is not valid!</source>
|
||||
<translation>Tên hồ sơ không hợp lệ!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1595"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1593"/>
|
||||
<source>Failed to create the input profile "%1"</source>
|
||||
<translation>Quá trình tạo hồ sơ phím "%1" thất bại</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1615"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1613"/>
|
||||
<source>Delete Input Profile</source>
|
||||
<translation>Xóa Hồ Sơ Phím</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1616"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1614"/>
|
||||
<source>Failed to delete the input profile "%1"</source>
|
||||
<translation>Quá trình xóa hồ sơ phím "%1" thất bại</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1638"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1636"/>
|
||||
<source>Load Input Profile</source>
|
||||
<translation>Nạp Hồ Sơ Phím</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1639"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1637"/>
|
||||
<source>Failed to load the input profile "%1"</source>
|
||||
<translation>Quá trình nạp hồ sơ phím "%1" thất bại</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1664"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1662"/>
|
||||
<source>Save Input Profile</source>
|
||||
<translation>Lưu Hồ Sơ Phím</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1665"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1663"/>
|
||||
<source>Failed to save the input profile "%1"</source>
|
||||
<translation>Quá trình lưu hồ sơ phím "%1" thất bại</translation>
|
||||
</message>
|
||||
@@ -5927,50 +5927,50 @@ Please go to Configure -> System -> Network and make a selection.</source>
|
||||
<context>
|
||||
<name>GRenderWindow</name>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="850"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="867"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="845"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="862"/>
|
||||
<source>OpenGL not available!</source>
|
||||
<translation>Không có sẵn OpenGL!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="851"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="846"/>
|
||||
<source>OpenGL shared contexts are not supported.</source>
|
||||
<translation>Các ngữ cảnh OpenGL chung không được hỗ trợ.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="868"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="863"/>
|
||||
<source>Eden has not been compiled with OpenGL support.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="892"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="910"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="920"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="887"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="905"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="915"/>
|
||||
<source>Error while initializing OpenGL!</source>
|
||||
<translation>Đã xảy ra lỗi khi khởi tạo OpenGL!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="893"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="888"/>
|
||||
<source>Your GPU may not support OpenGL, or you do not have the latest graphics driver.</source>
|
||||
<translation>GPU của bạn có thể không hỗ trợ OpenGL, hoặc bạn không có driver đồ hoạ mới nhất.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="902"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="897"/>
|
||||
<source>Error while initializing OpenGL 4.6!</source>
|
||||
<translation>Lỗi khi khởi tạo OpenGL 4.6!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="903"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="898"/>
|
||||
<source>Your GPU may not support OpenGL 4.6, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1</source>
|
||||
<translation>GPU của bạn có thể không hỗ trợ OpenGL 4.6, hoặc bạn không có driver đồ hoạ mới nhất.<br><br>GL Renderer:<br>%1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="911"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="906"/>
|
||||
<source>Your GPU may not support one or more required OpenGL extensions. Please ensure you have the latest graphics driver.<br><br>GL Renderer:<br>%1<br><br>Unsupported extensions:<br>%2</source>
|
||||
<translation>GPU của bạn có thể không hỗ trợ một hoặc nhiều tiện ích OpenGL cần thiết. Vui lòng đảm bảo bạn có driver đồ hoạ mới nhất.<br><br>GL Renderer:<br>%1<br><br>Tiện ích không hỗ trợ:<br>%2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="921"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="916"/>
|
||||
<source>This build doesn't have OpenGL support.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
@@ -8573,8 +8573,8 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="35"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="396"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="462"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="395"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="461"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="183"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="251"/>
|
||||
<source>[not set]</source>
|
||||
@@ -8587,10 +8587,10 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="54"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="485"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="489"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="493"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="497"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="484"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="488"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="492"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="496"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="274"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="278"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="282"/>
|
||||
@@ -8605,9 +8605,9 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="66"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="456"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="470"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="500"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="455"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="469"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="499"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="245"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="259"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="289"/>
|
||||
@@ -8769,50 +8769,50 @@ p, li { white-space: pre-wrap; }
|
||||
<translation>[không xác định]</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="406"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="405"/>
|
||||
<source>%1%2</source>
|
||||
<translation>%1%2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="410"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="409"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="199"/>
|
||||
<source>[invalid]</source>
|
||||
<translation>[không hợp lệ]</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="420"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="444"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="419"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="443"/>
|
||||
<source>%1%2Hat %3</source>
|
||||
<translation>%1%2Mũ %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="424"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="447"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="450"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="423"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="446"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="449"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="239"/>
|
||||
<source>%1%2Axis %3</source>
|
||||
<translation>%1%2Trục %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="430"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="429"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="219"/>
|
||||
<source>%1%2Axis %3,%4,%5</source>
|
||||
<translation>%1%2Trục %3,%4,%5</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="434"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="433"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="223"/>
|
||||
<source>%1%2Motion %3</source>
|
||||
<translation>%1%2Chuyển động %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="438"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="453"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="437"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="452"/>
|
||||
<source>%1%2Button %3</source>
|
||||
<translation>%1%2Nút %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="480"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="479"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="269"/>
|
||||
<source>[unused]</source>
|
||||
<translation>[không sử dụng]</translation>
|
||||
|
||||
Vendored
+45
-45
@@ -4332,58 +4332,58 @@ To invert the axes, first move your joystick vertically, and then horizontally.<
|
||||
<translation>[等待中]</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1578"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1576"/>
|
||||
<source>New Profile</source>
|
||||
<translation>新建自定义设置</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1578"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1576"/>
|
||||
<source>Enter a profile name:</source>
|
||||
<translation>输入配置文件名称:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1586"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1594"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1584"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1592"/>
|
||||
<source>Create Input Profile</source>
|
||||
<translation>新建输入配置文件</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1587"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1585"/>
|
||||
<source>The given profile name is not valid!</source>
|
||||
<translation>输入的配置文件名称无效!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1595"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1593"/>
|
||||
<source>Failed to create the input profile "%1"</source>
|
||||
<translation>新建输入配置文件 "%1" 失败</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1615"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1613"/>
|
||||
<source>Delete Input Profile</source>
|
||||
<translation>删除输入配置文件</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1616"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1614"/>
|
||||
<source>Failed to delete the input profile "%1"</source>
|
||||
<translation>删除输入配置文件 "%1" 失败</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1638"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1636"/>
|
||||
<source>Load Input Profile</source>
|
||||
<translation>加载输入配置文件</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1639"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1637"/>
|
||||
<source>Failed to load the input profile "%1"</source>
|
||||
<translation>加载输入配置文件 "%1" 失败</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1664"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1662"/>
|
||||
<source>Save Input Profile</source>
|
||||
<translation>保存输入配置文件</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1665"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1663"/>
|
||||
<source>Failed to save the input profile "%1"</source>
|
||||
<translation>保存输入配置文件 "%1" 失败</translation>
|
||||
</message>
|
||||
@@ -5995,50 +5995,50 @@ Please go to Configure -> System -> Network and make a selection.</source>
|
||||
<context>
|
||||
<name>GRenderWindow</name>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="850"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="867"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="845"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="862"/>
|
||||
<source>OpenGL not available!</source>
|
||||
<translation>OpenGL 模式不可用!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="851"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="846"/>
|
||||
<source>OpenGL shared contexts are not supported.</source>
|
||||
<translation>不支持 OpenGL 共享上下文。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="868"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="863"/>
|
||||
<source>Eden has not been compiled with OpenGL support.</source>
|
||||
<translation>Eden 尚未编译为支持 OpenGL。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="892"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="910"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="920"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="887"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="905"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="915"/>
|
||||
<source>Error while initializing OpenGL!</source>
|
||||
<translation>初始化 OpenGL 时出错!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="893"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="888"/>
|
||||
<source>Your GPU may not support OpenGL, or you do not have the latest graphics driver.</source>
|
||||
<translation>您的 GPU 可能不支持 OpenGL ,或者您没有安装最新的显卡驱动。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="902"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="897"/>
|
||||
<source>Error while initializing OpenGL 4.6!</source>
|
||||
<translation>初始化 OpenGL 4.6 时出错!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="903"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="898"/>
|
||||
<source>Your GPU may not support OpenGL 4.6, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1</source>
|
||||
<translation>您的 GPU 可能不支持 OpenGL 4.6 ,或者您没有安装最新的显卡驱动。<br><br>GL 渲染器:<br>%1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="911"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="906"/>
|
||||
<source>Your GPU may not support one or more required OpenGL extensions. Please ensure you have the latest graphics driver.<br><br>GL Renderer:<br>%1<br><br>Unsupported extensions:<br>%2</source>
|
||||
<translation>您的 GPU 可能不支持某些必需的 OpenGL 扩展。请确保您已经安装最新的显卡驱动。<br><br>GL 渲染器:<br>%1<br><br>不支持的扩展:<br>%2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="921"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="916"/>
|
||||
<source>This build doesn't have OpenGL support.</source>
|
||||
<translation>此版本不支持 OpenGL。</translation>
|
||||
</message>
|
||||
@@ -8664,8 +8664,8 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="35"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="396"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="462"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="395"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="461"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="183"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="251"/>
|
||||
<source>[not set]</source>
|
||||
@@ -8678,10 +8678,10 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="54"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="485"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="489"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="493"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="497"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="484"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="488"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="492"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="496"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="274"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="278"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="282"/>
|
||||
@@ -8696,9 +8696,9 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="66"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="456"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="470"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="500"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="455"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="469"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="499"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="245"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="259"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="289"/>
|
||||
@@ -8860,50 +8860,50 @@ p, li { white-space: pre-wrap; }
|
||||
<translation>[未指定]</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="406"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="405"/>
|
||||
<source>%1%2</source>
|
||||
<translation>%1%2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="410"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="409"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="199"/>
|
||||
<source>[invalid]</source>
|
||||
<translation>[无效]</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="420"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="444"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="419"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="443"/>
|
||||
<source>%1%2Hat %3</source>
|
||||
<translation>%1%2方向键 %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="424"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="447"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="450"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="423"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="446"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="449"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="239"/>
|
||||
<source>%1%2Axis %3</source>
|
||||
<translation>%1%2轴 %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="430"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="429"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="219"/>
|
||||
<source>%1%2Axis %3,%4,%5</source>
|
||||
<translation>%1%2轴 %3,%4,%5</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="434"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="433"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="223"/>
|
||||
<source>%1%2Motion %3</source>
|
||||
<translation>%1%2体感 %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="438"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="453"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="437"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="452"/>
|
||||
<source>%1%2Button %3</source>
|
||||
<translation>%1%2按键 %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="480"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="479"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="269"/>
|
||||
<source>[unused]</source>
|
||||
<translation>[未使用]</translation>
|
||||
|
||||
Vendored
+45
-45
@@ -4296,58 +4296,58 @@ To invert the axes, first move your joystick vertically, and then horizontally.<
|
||||
<translation>[等待中]</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1578"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1576"/>
|
||||
<source>New Profile</source>
|
||||
<translation>新增設定檔</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1578"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1576"/>
|
||||
<source>Enter a profile name:</source>
|
||||
<translation>輸入設定檔名稱:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1586"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1594"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1584"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1592"/>
|
||||
<source>Create Input Profile</source>
|
||||
<translation>建立輸入設定檔</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1587"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1585"/>
|
||||
<source>The given profile name is not valid!</source>
|
||||
<translation>輸入的設定檔名稱無效!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1595"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1593"/>
|
||||
<source>Failed to create the input profile "%1"</source>
|
||||
<translation>建立輸入設定檔「%1」失敗</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1615"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1613"/>
|
||||
<source>Delete Input Profile</source>
|
||||
<translation>刪除輸入設定檔</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1616"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1614"/>
|
||||
<source>Failed to delete the input profile "%1"</source>
|
||||
<translation>刪除輸入設定檔「%1」失敗</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1638"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1636"/>
|
||||
<source>Load Input Profile</source>
|
||||
<translation>載入輸入設定檔</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1639"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1637"/>
|
||||
<source>Failed to load the input profile "%1"</source>
|
||||
<translation>載入輸入設定檔「%1」失敗</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1664"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1662"/>
|
||||
<source>Save Input Profile</source>
|
||||
<translation>儲存輸入設定檔</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1665"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="1663"/>
|
||||
<source>Failed to save the input profile "%1"</source>
|
||||
<translation>儲存輸入設定檔「%1」失敗</translation>
|
||||
</message>
|
||||
@@ -5954,50 +5954,50 @@ Please go to Configure -> System -> Network and make a selection.</source>
|
||||
<context>
|
||||
<name>GRenderWindow</name>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="850"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="867"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="845"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="862"/>
|
||||
<source>OpenGL not available!</source>
|
||||
<translation>無法使用 OpenGL 模式!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="851"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="846"/>
|
||||
<source>OpenGL shared contexts are not supported.</source>
|
||||
<translation>不支援 OpenGL 共用的上下文。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="868"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="863"/>
|
||||
<source>Eden has not been compiled with OpenGL support.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="892"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="910"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="920"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="887"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="905"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="915"/>
|
||||
<source>Error while initializing OpenGL!</source>
|
||||
<translation>初始化 OpenGL 時發生錯誤!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="893"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="888"/>
|
||||
<source>Your GPU may not support OpenGL, or you do not have the latest graphics driver.</source>
|
||||
<translation>您的 GPU 可能不支援 OpenGL,或是未安裝最新的圖形驅動程式</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="902"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="897"/>
|
||||
<source>Error while initializing OpenGL 4.6!</source>
|
||||
<translation>初始化 OpenGL 4.6 時發生錯誤!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="903"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="898"/>
|
||||
<source>Your GPU may not support OpenGL 4.6, or you do not have the latest graphics driver.<br><br>GL Renderer:<br>%1</source>
|
||||
<translation>您的 GPU 可能不支援 OpenGL 4.6,或是未安裝最新的圖形驅動程式<br><br>GL 渲染器:<br>%1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="911"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="906"/>
|
||||
<source>Your GPU may not support one or more required OpenGL extensions. Please ensure you have the latest graphics driver.<br><br>GL Renderer:<br>%1<br><br>Unsupported extensions:<br>%2</source>
|
||||
<translation>您的 GPU 可能不支援某些必需的 OpenGL 功能。請確保您已安裝最新的圖形驅動程式。<br><br>GL 渲染器:<br>%1<br><br>不支援的功能:<br>%2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="921"/>
|
||||
<location filename="../../src/yuzu/bootmanager.cpp" line="916"/>
|
||||
<source>This build doesn't have OpenGL support.</source>
|
||||
<translation type="unfinished"/>
|
||||
</message>
|
||||
@@ -8599,8 +8599,8 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="35"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="396"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="462"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="395"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="461"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="183"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="251"/>
|
||||
<source>[not set]</source>
|
||||
@@ -8613,10 +8613,10 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="54"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="485"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="489"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="493"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="497"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="484"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="488"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="492"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="496"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="274"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="278"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="282"/>
|
||||
@@ -8631,9 +8631,9 @@ p, li { white-space: pre-wrap; }
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_touch_from_button.cpp" line="66"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="456"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="470"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="500"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="455"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="469"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="499"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="245"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="259"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="289"/>
|
||||
@@ -8795,50 +8795,50 @@ p, li { white-space: pre-wrap; }
|
||||
<translation>[未指定]</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="406"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="405"/>
|
||||
<source>%1%2</source>
|
||||
<translation>%1%2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="410"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="409"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="199"/>
|
||||
<source>[invalid]</source>
|
||||
<translation>[無效]</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="420"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="444"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="419"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="443"/>
|
||||
<source>%1%2Hat %3</source>
|
||||
<translation>%1%2Hat 控制器 %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="424"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="447"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="450"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="423"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="446"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="449"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="239"/>
|
||||
<source>%1%2Axis %3</source>
|
||||
<translation>%1%2軸 %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="430"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="429"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="219"/>
|
||||
<source>%1%2Axis %3,%4,%5</source>
|
||||
<translation>%1%2軸 %3,%4,%5</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="434"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="433"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="223"/>
|
||||
<source>%1%2Motion %3</source>
|
||||
<translation>%1%2體感 %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="438"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="453"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="437"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="452"/>
|
||||
<source>%1%2Button %3</source>
|
||||
<translation>%1%2按鈕 %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="480"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_ringcon.cpp" line="479"/>
|
||||
<location filename="../../src/yuzu/configuration/configure_input_player.cpp" line="269"/>
|
||||
<source>[unused]</source>
|
||||
<translation>[未使用]</translation>
|
||||
|
||||
@@ -46,8 +46,6 @@ These options control dependencies.
|
||||
- `YUZU_INSTALL_UDEV_RULES` (OFF) Install udev rules to enable hidraw access
|
||||
- Needed for gyroscopes
|
||||
- Only available on Linux
|
||||
- `ENABLE_DEBUG_TOOLS` (OFF) Enables debugging and development tools, see [tools](../tools/README.md).
|
||||
- `ENABLE_WERROR` (ON) Enables warnings as errors (-Werror).
|
||||
|
||||
### Flavors
|
||||
|
||||
|
||||
@@ -34,7 +34,7 @@ Everyone has their own way of viewing good/bad C++ practices, my general outline
|
||||
- The reason is because the project has `-fno-rtti` disabled by default, due to the costs of dynamic polymorphism.
|
||||
- Always copy-on-value for objects with `sizeof(void *) >= sizeof(T) * 2`, i.e objects sized as 2 pointers or less, for bigger objects you can use ref/pointer as usual.
|
||||
- Try using move semantics instead of references, whenever possible.
|
||||
- Function parameters are cheap. Don't be afraid to use as many as needed (API usability permitting).
|
||||
- Remember function parameters are extremelly cheap as fuck, don't be afraid to place upto 8 parameters on a given function.
|
||||
- Don't save a reference in structures of a parent object, i.e:
|
||||
|
||||
```c++
|
||||
|
||||
Vendored
+1
-1
@@ -164,7 +164,7 @@ if (NOT ANDROID)
|
||||
AddJsonPackage(sdl3)
|
||||
else()
|
||||
message(STATUS "Using bundled SDL3")
|
||||
if (FREEBSD)
|
||||
if (PLATFORM_FREEBSD)
|
||||
set(BUILD_SHARED_LIBS ON)
|
||||
endif()
|
||||
AddJsonPackage(sdl3-ci)
|
||||
|
||||
+80
-23
@@ -1,46 +1,45 @@
|
||||
# SPDX-FileCopyrightText: Copyright 2026 crueter
|
||||
# SPDX-FileCopyrightText: Copyright 2025 crueter
|
||||
# SPDX-License-Identifier: LGPL-3.0-or-later
|
||||
|
||||
## DetectPlatform ##
|
||||
|
||||
# This is a small helper that sets platform variables for various
|
||||
# This is a small helper that sets PLATFORM_<platform> variables for various
|
||||
# operating systems and distributions. Note that Apple, Windows, Android, etc.
|
||||
# are not covered, as CMake already does that for us.
|
||||
|
||||
# It also sets CXX_<compiler> for the C++ compiler.
|
||||
|
||||
# Furthermore, some platforms have really silly requirements/quirks, so this
|
||||
# also does a few of those.
|
||||
|
||||
# This module contains contributions from the Eden Emulator Project,
|
||||
# notably from crueter and Lizzie.
|
||||
|
||||
if (${CMAKE_SYSTEM_NAME} STREQUAL "SunOS")
|
||||
set(SOLARIS ON)
|
||||
set(PLATFORM_SUN ON)
|
||||
elseif (${CMAKE_SYSTEM_NAME} STREQUAL "OpenOrbis")
|
||||
set(OPENORBIS ON)
|
||||
set(PLATFORM_PS4 ON)
|
||||
elseif (${CMAKE_SYSTEM_NAME} STREQUAL "managarm")
|
||||
set(MANAGARM ON)
|
||||
set(PLATFORM_MANAGARM ON)
|
||||
elseif (${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD")
|
||||
set(PLATFORM_FREEBSD ON)
|
||||
elseif (${CMAKE_SYSTEM_NAME} STREQUAL "OpenBSD")
|
||||
set(PLATFORM_OPENBSD ON)
|
||||
elseif (${CMAKE_SYSTEM_NAME} STREQUAL "NetBSD")
|
||||
set(PLATFORM_NETBSD ON)
|
||||
elseif (${CMAKE_SYSTEM_NAME} STREQUAL "DragonFly")
|
||||
set(PLATFORM_DRAGONFLYBSD ON)
|
||||
elseif (${CMAKE_SYSTEM_NAME} STREQUAL "Haiku")
|
||||
set(HAIKUOS ON)
|
||||
endif()
|
||||
|
||||
# BSD
|
||||
if (DEFINED BSD)
|
||||
if ("${BSD}" STREQUAL "DragonFlyBSD")
|
||||
set(DRAGONFLYBSD ON)
|
||||
elseif ("${BSD}" STREQUAL "FreeBSD")
|
||||
set(FREEBSD ON)
|
||||
elseif ("${BSD}" STREQUAL "OpenBSD")
|
||||
set(OPENBSD ON)
|
||||
elseif ("${BSD}" STREQUAL "NetBSD")
|
||||
set(NETBSD ON)
|
||||
endif()
|
||||
set(PLATFORM_HAIKU ON)
|
||||
elseif (${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
|
||||
set(PLATFORM_LINUX ON)
|
||||
endif()
|
||||
|
||||
# dumb heuristic to detect msys2
|
||||
if (CMAKE_COMMAND MATCHES "msys64")
|
||||
set(MSYS2 ON)
|
||||
set(PLATFORM_MSYS ON)
|
||||
endif()
|
||||
|
||||
# compiler checks
|
||||
if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
|
||||
set(CXX_CLANG ON)
|
||||
if (MSVC)
|
||||
@@ -48,6 +47,8 @@ if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
|
||||
endif()
|
||||
elseif (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
|
||||
set(CXX_GCC ON)
|
||||
elseif (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
|
||||
set(CXX_CL ON)
|
||||
elseif (CMAKE_CXX_COMPILER_ID STREQUAL "IntelLLVM")
|
||||
set(CXX_ICC ON)
|
||||
elseif (CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
|
||||
@@ -60,13 +61,37 @@ if(MINGW AND CXX_CLANG)
|
||||
set(CMAKE_SYSTEM_VERSION 10.0.0)
|
||||
endif()
|
||||
|
||||
# NB: this does not account for SPARC
|
||||
if (PLATFORM_SUN)
|
||||
# Terrific OpenIndiana pkg shenanigans
|
||||
list(APPEND CMAKE_PREFIX_PATH
|
||||
"${CMAKE_SYSROOT}/usr/lib/qt/6.6/lib/amd64/cmake")
|
||||
list(APPEND CMAKE_MODULE_PATH
|
||||
"${CMAKE_SYSROOT}/usr/lib/qt/6.6/lib/amd64/cmake")
|
||||
|
||||
# Amazing - absolutely incredible
|
||||
list(APPEND CMAKE_PREFIX_PATH "${CMAKE_SYSROOT}/usr/lib/amd64/cmake")
|
||||
list(APPEND CMAKE_MODULE_PATH "${CMAKE_SYSROOT}/usr/lib/amd64/cmake")
|
||||
|
||||
# For some mighty reason, doing a normal release build sometimes
|
||||
# may not trigger the proper -O3 switch to materialize
|
||||
if (CMAKE_BUILD_TYPE MATCHES "Release")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O3")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3")
|
||||
endif()
|
||||
if (CMAKE_BUILD_TYPE MATCHES "RelWithDebInfo")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O2")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O2")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# MSYS2 utilities
|
||||
|
||||
# Sometimes, PkgConfig modules will incorrectly reference / when CMake
|
||||
# wants you to reference it as C:/msys64/. This function corrects that.
|
||||
# Example in a Find module:
|
||||
#[[
|
||||
if (MSYS2)
|
||||
if (PLATFORM_MSYS)
|
||||
FixMsysPath(PkgConfig::OPUS)
|
||||
endif()
|
||||
]]
|
||||
@@ -91,9 +116,41 @@ function(FixMsysPath target)
|
||||
INTERFACE_INCLUDE_DIRECTORIES ${include_dir})
|
||||
endfunction()
|
||||
|
||||
# Saves linking time
|
||||
# MSYSTEM handling + program_path
|
||||
if (PLATFORM_MSYS)
|
||||
# really, really dumb heuristic to detect what environment we are in
|
||||
macro(system var)
|
||||
if (CMAKE_COMMAND MATCHES ${var})
|
||||
set(MSYSTEM ${var})
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
system(mingw64)
|
||||
system(clang64)
|
||||
system(clangarm64)
|
||||
system(ucrt64)
|
||||
|
||||
if (NOT DEFINED MSYSTEM)
|
||||
set(MSYSTEM msys2)
|
||||
endif()
|
||||
|
||||
# We generally want to prioritize environment-specific binaries if possible
|
||||
# some, like autoconf, are not present on environments besides msys2 though
|
||||
set(CMAKE_PROGRAM_PATH C:/msys64/${MSYSTEM}/bin C:/msys64/usr/bin)
|
||||
set(ENV{PKG_CONFIG_PATH} C:/msys64/${MSYSTEM}/lib/pkgconfig)
|
||||
endif()
|
||||
|
||||
# This saves a truly ridiculous amount of time during linking
|
||||
# In my tests, without this, Eden takes 2 mins, with this, it takes 3-5 seconds
|
||||
# or on GitHub Actions, 10 minutes -> 3 seconds
|
||||
if (MINGW)
|
||||
set(MINGW_FLAGS "-Wl,--strip-all -Wl,--gc-sections")
|
||||
set(CMAKE_EXE_LINKER_FLAGS_RELEASE
|
||||
"${CMAKE_EXE_LINKER_FLAGS_RELEASE} ${MINGW_FLAGS}")
|
||||
endif()
|
||||
|
||||
# awesome
|
||||
if (PLATFORM_FREEBSD OR PLATFORM_DRAGONFLYBSD)
|
||||
set(CMAKE_EXE_LINKER_FLAGS
|
||||
"${CMAKE_EXE_LINKER_FLAGS} -L${CMAKE_SYSROOT}/usr/local/lib")
|
||||
endif()
|
||||
|
||||
Vendored
+5
-5
@@ -56,7 +56,7 @@ if (NOT YUZU_USE_BUNDLED_FFMPEG)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if (OPENORBIS OR MANAGARM)
|
||||
if (PLATFORM_PS4 OR PLATFORM_MANAGARM)
|
||||
# Doesn't support VA-API, don't go thru the embarrassment of trying to enable it
|
||||
list(APPEND FFmpeg_HWACCEL_FLAGS --disable-vaapi)
|
||||
elseif (ANDROID)
|
||||
@@ -75,7 +75,7 @@ elseif (UNIX AND NOT DEFINED FFmpeg_IS_CROSS_COMPILING AND NOT ANDROID)
|
||||
if(X11_FOUND)
|
||||
if (NOT APPLE)
|
||||
# In Solaris needs explicit linking for ffmpeg which links to /lib/amd64/libX11.so
|
||||
if(SOLARIS)
|
||||
if(PLATFORM_SUN)
|
||||
list(APPEND FFmpeg_HWACCEL_LIBRARIES
|
||||
X11
|
||||
"${CMAKE_SYSROOT}/usr/lib/xorg/amd64/libdrm.so")
|
||||
@@ -158,7 +158,7 @@ elseif (UNIX AND NOT DEFINED FFmpeg_IS_CROSS_COMPILING AND NOT ANDROID)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if (OPENORBIS)
|
||||
if (PLATFORM_PS4)
|
||||
list(APPEND FFmpeg_CROSS_COMPILE_LIBS
|
||||
-lkernel
|
||||
-lSceUserService
|
||||
@@ -172,7 +172,7 @@ if (OPENORBIS)
|
||||
--extra-cxxflags=${CMAKE_SYSROOT}/usr/include
|
||||
--extra-libs="${FFmpeg_CROSS_COMPILE_LIBS}"
|
||||
)
|
||||
elseif (MANAGARM)
|
||||
elseif (PLATFORM_MANAGARM)
|
||||
# Required for proper stuff
|
||||
list(APPEND FFmpeg_CROSS_COMPILE_FLAGS
|
||||
--disable-pthreads
|
||||
@@ -299,7 +299,7 @@ else()
|
||||
set(FFmpeg_BUILD_LIBRARIES ${FFmpeg_LIBRARIES})
|
||||
|
||||
# BSD make or Solaris make don't support ffmpeg make-j8
|
||||
if (LINUX OR ANDROID OR APPLE OR WIN32 OR FREEBSD)
|
||||
if (PLATFORM_LINUX OR ANDROID OR APPLE OR WIN32 OR PLATFORM_FREEBSD)
|
||||
set(FFmpeg_MAKE_ARGS -j${SYSTEM_THREADS})
|
||||
else()
|
||||
set(FFmpeg_MAKE_ARGS "")
|
||||
|
||||
Vendored
+1
-1
@@ -11,7 +11,7 @@ if (NOT libusb_ADDED)
|
||||
endif()
|
||||
|
||||
# TODO: *BSD fails to compile--may need different configs/symbols
|
||||
if (MINGW OR LINUX OR APPLE)
|
||||
if (MINGW OR PLATFORM_LINUX OR APPLE)
|
||||
set(LIBUSB_FOUND ON CACHE BOOL "libusb is present" FORCE)
|
||||
set(LIBUSB_VERSION "1.0.24" CACHE STRING "libusb version string" FORCE)
|
||||
|
||||
|
||||
Vendored
+2
-2
@@ -1177,7 +1177,7 @@ static void *stbi__load_main(stbi__context *s, int *x, int *y, int *comp, int re
|
||||
#endif
|
||||
|
||||
#ifndef STBI_NO_TGA
|
||||
// test tga last because it's a bad test!
|
||||
// test tga last because it's a crappy test!
|
||||
if (stbi__tga_test(s))
|
||||
return stbi__tga_load(s,x,y,comp,req_comp, ri);
|
||||
#endif
|
||||
@@ -7662,7 +7662,7 @@ static int stbi__info_main(stbi__context *s, int *x, int *y, int *comp)
|
||||
if (stbi__hdr_info(s, x, y, comp)) return 1;
|
||||
#endif
|
||||
|
||||
// test tga last because it's a bad test!
|
||||
// test tga last because it's a crappy test!
|
||||
#ifndef STBI_NO_TGA
|
||||
if (stbi__tga_info(s, x, y, comp))
|
||||
return 1;
|
||||
|
||||
+9
-21
@@ -155,24 +155,12 @@ else()
|
||||
$<$<COMPILE_LANGUAGE:CXX>:-fno-rtti>)
|
||||
endif()
|
||||
|
||||
if (ENABLE_WERROR)
|
||||
add_compile_options(
|
||||
$<$<COMPILE_LANGUAGE:C,CXX>:-Werror=all>
|
||||
$<$<COMPILE_LANGUAGE:C,CXX>:-Werror=extra>
|
||||
$<$<COMPILE_LANGUAGE:C,CXX>:-Werror=missing-declarations>
|
||||
$<$<COMPILE_LANGUAGE:C,CXX>:-Werror=shadow>
|
||||
$<$<COMPILE_LANGUAGE:C,CXX>:-Werror=unused>)
|
||||
else()
|
||||
add_compile_options(
|
||||
$<$<COMPILE_LANGUAGE:C,CXX>:-Wall>
|
||||
$<$<COMPILE_LANGUAGE:C,CXX>:-Wextra>
|
||||
$<$<COMPILE_LANGUAGE:C,CXX>:-Wmissing-declarations>
|
||||
$<$<COMPILE_LANGUAGE:C,CXX>:-Wshadow>
|
||||
$<$<COMPILE_LANGUAGE:C,CXX>:-Wunused>
|
||||
# Some compilers could particularly misbehave :)
|
||||
$<$<COMPILE_LANGUAGE:C,CXX>:-Wno-error-all>)
|
||||
endif()
|
||||
add_compile_options(
|
||||
$<$<COMPILE_LANGUAGE:C,CXX>:-Werror=all>
|
||||
$<$<COMPILE_LANGUAGE:C,CXX>:-Werror=extra>
|
||||
$<$<COMPILE_LANGUAGE:C,CXX>:-Werror=missing-declarations>
|
||||
$<$<COMPILE_LANGUAGE:C,CXX>:-Werror=shadow>
|
||||
$<$<COMPILE_LANGUAGE:C,CXX>:-Werror=unused>
|
||||
$<$<COMPILE_LANGUAGE:C,CXX>:-Wno-attributes>
|
||||
$<$<COMPILE_LANGUAGE:C,CXX>:-Wno-invalid-offsetof>
|
||||
$<$<COMPILE_LANGUAGE:C,CXX>:-Wno-unused-parameter>
|
||||
@@ -181,9 +169,9 @@ else()
|
||||
if (CXX_CLANG OR CXX_ICC OR CXX_APPLE) # Clang, AppleClang, or Intel C++
|
||||
if (NOT MSVC)
|
||||
add_compile_options(
|
||||
$<$<COMPILE_LANGUAGE:C,CXX>:-Wshadow-uncaptured-local>
|
||||
$<$<COMPILE_LANGUAGE:C,CXX>:-Wimplicit-fallthrough>
|
||||
$<$<COMPILE_LANGUAGE:C,CXX>:-Wtype-limits>)
|
||||
$<$<COMPILE_LANGUAGE:C,CXX>:-Werror=shadow-uncaptured-local>
|
||||
$<$<COMPILE_LANGUAGE:C,CXX>:-Werror=implicit-fallthrough>
|
||||
$<$<COMPILE_LANGUAGE:C,CXX>:-Werror=type-limits>)
|
||||
endif()
|
||||
add_compile_options(
|
||||
$<$<COMPILE_LANGUAGE:C,CXX>:-Wno-braced-scalar-init>
|
||||
@@ -193,7 +181,7 @@ else()
|
||||
|
||||
if (ARCHITECTURE_x86_64)
|
||||
add_compile_options($<$<COMPILE_LANGUAGE:C,CXX>:-mcx16>)
|
||||
if (LINUX OR FREEBSD)
|
||||
if (PLATFORM_LINUX OR PLATFORM_FREEBSD)
|
||||
add_compile_options($<$<COMPILE_LANGUAGE:C,CXX>:-mtls-dialect=gnu2>)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
@@ -188,7 +188,6 @@ android {
|
||||
create("mainline") {
|
||||
dimension = "version"
|
||||
isDefault = true
|
||||
minSdk = 33
|
||||
|
||||
manifestPlaceholders += mapOf("appNameBase" to "Eden")
|
||||
resValue("string", "app_name_suffixed", "Eden")
|
||||
@@ -200,7 +199,6 @@ android {
|
||||
|
||||
create("genshinSpoof") {
|
||||
dimension = "version"
|
||||
minSdk = 35
|
||||
manifestPlaceholders += mapOf("appNameBase" to "Eden Optimized")
|
||||
resValue("string", "app_name_suffixed", "Eden Optimized")
|
||||
applicationId = "com.miHoYo.Yuanshen"
|
||||
@@ -218,7 +216,6 @@ android {
|
||||
|
||||
create("legacy") {
|
||||
dimension = "version"
|
||||
minSdk = 29
|
||||
manifestPlaceholders += mapOf("appNameBase" to "Eden Legacy")
|
||||
resValue("string", "app_name_suffixed", "Eden Legacy")
|
||||
applicationId = "dev.legacy.eden_emulator"
|
||||
|
||||
@@ -218,8 +218,6 @@ object NativeLibrary {
|
||||
|
||||
external fun logSettings()
|
||||
|
||||
external fun refreshThreadPolicies()
|
||||
|
||||
external fun getDebugKnobAt(index: Int): Boolean
|
||||
|
||||
/**
|
||||
@@ -539,40 +537,6 @@ object NativeLibrary {
|
||||
*/
|
||||
external fun installKeys(path: String, ext: String): Int
|
||||
|
||||
/**
|
||||
* @return Whether this GPU can run the Lossless Scaling frame generation shaders,
|
||||
* which are built against the Vulkan memory model.
|
||||
*/
|
||||
external fun supportsFrameGeneration(): Boolean
|
||||
|
||||
/**
|
||||
* @return Path the user-supplied Lossless Scaling library is expected at.
|
||||
*/
|
||||
external fun getLosslessDllPath(): String
|
||||
|
||||
/**
|
||||
* Parses the installed Lossless Scaling library and checks that every shader the
|
||||
* frame generation chain needs is present.
|
||||
*
|
||||
* @return The result code, matching the losslessDllResults array.
|
||||
*/
|
||||
external fun validateLosslessDll(): Int
|
||||
|
||||
/**
|
||||
* Translates the frame generation shaders out of the installed Lossless Scaling library
|
||||
* and writes them to the SPIR-V cache. Slow, so call it off the main thread.
|
||||
*
|
||||
* @return The result code, matching the losslessDllResults array.
|
||||
*/
|
||||
external fun prepareLosslessDll(): Int
|
||||
|
||||
/**
|
||||
* Deletes the installed Lossless Scaling library.
|
||||
*
|
||||
* @return Whether the library is gone after the call.
|
||||
*/
|
||||
external fun removeLosslessDll(): Boolean
|
||||
|
||||
/**
|
||||
* Checks the PatchManager for any addons that are available
|
||||
*
|
||||
|
||||
@@ -559,15 +559,6 @@ class EmulationActivity : AppCompatActivity(), SensorEventListener, InputManager
|
||||
private fun enableFullscreenImmersive() {
|
||||
WindowCompat.setDecorFitsSystemWindows(window, false)
|
||||
|
||||
@Suppress("DEPRECATION")
|
||||
window.decorView.systemUiVisibility =
|
||||
View.SYSTEM_UI_FLAG_FULLSCREEN or
|
||||
View.SYSTEM_UI_FLAG_HIDE_NAVIGATION or
|
||||
View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY or
|
||||
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or
|
||||
View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION or
|
||||
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
|
||||
|
||||
WindowInsetsControllerCompat(window, window.decorView).let { controller ->
|
||||
controller.hide(WindowInsetsCompat.Type.systemBars())
|
||||
controller.systemBarsBehavior =
|
||||
|
||||
-4
@@ -37,10 +37,6 @@ enum class BooleanSetting(override val key: String) : AbstractBooleanSetting {
|
||||
RENDERER_PATCH_OLD_QCOM_DRIVERS("patch_old_qcom_drivers"),
|
||||
RENDERER_VERTEX_INPUT_DYNAMIC_STATE("vertex_input_dynamic_state"),
|
||||
RENDERER_SAMPLE_SHADING("sample_shading"),
|
||||
RENDERER_FRAME_GEN("frame_gen"),
|
||||
RENDERER_FRAME_GEN_FP16("frame_gen_fp16"),
|
||||
RENDERER_FRAME_GEN_FLOW_SCALE_AUTO("frame_gen_flow_scale_auto"),
|
||||
RENDERER_FRAME_GEN_DUMP_FLOW("frame_gen_dump_flow"),
|
||||
GPU_UNSWIZZLE_ENABLED("gpu_unswizzle_enabled"),
|
||||
PICTURE_IN_PICTURE("picture_in_picture"),
|
||||
USE_CUSTOM_RTC("custom_rtc_enabled"),
|
||||
|
||||
@@ -19,10 +19,6 @@ enum class IntSetting(override val key: String) : AbstractIntSetting {
|
||||
RENDERER_ASTC_DECODE_METHOD("accelerate_astc"),
|
||||
RENDERER_ACCURACY("gpu_accuracy"),
|
||||
RENDERER_RESOLUTION("resolution_setup"),
|
||||
RENDERER_FRAME_GEN_MULTIPLIER("frame_gen_multiplier"),
|
||||
RENDERER_FRAME_GEN_TARGET_RATE("frame_gen_target_rate"),
|
||||
RENDERER_FRAME_GEN_QUEUE_TARGET("frame_gen_queue_target"),
|
||||
RENDERER_FRAME_GEN_FLOW_SCALE("frame_gen_flow_scale"),
|
||||
RENDERER_VSYNC("use_vsync"),
|
||||
RENDERER_SCALING_FILTER("scaling_filter"),
|
||||
RENDERER_ANTI_ALIASING("anti_aliasing"),
|
||||
|
||||
@@ -11,7 +11,6 @@ object Settings {
|
||||
SECTION_ROOT(R.string.advanced_settings),
|
||||
SECTION_SYSTEM(R.string.preferences_system),
|
||||
SECTION_RENDERER(R.string.preferences_graphics),
|
||||
SECTION_FRAME_GEN(R.string.frame_gen),
|
||||
SECTION_PERFORMANCE_STATS(R.string.stats_overlay_options),
|
||||
SECTION_INPUT_OVERLAY(R.string.input_overlay_options),
|
||||
SECTION_SOC_OVERLAY(R.string.soc_overlay_options),
|
||||
|
||||
+1
-104
@@ -21,7 +21,6 @@ import org.yuzu.yuzu_emu.features.settings.model.LongSetting
|
||||
import org.yuzu.yuzu_emu.features.settings.model.ShortSetting
|
||||
import org.yuzu.yuzu_emu.features.settings.model.StringSetting
|
||||
import org.yuzu.yuzu_emu.network.NetDataValidators
|
||||
import org.yuzu.yuzu_emu.utils.LosslessScalingHelper
|
||||
import org.yuzu.yuzu_emu.utils.NativeConfig
|
||||
|
||||
/**
|
||||
@@ -66,19 +65,6 @@ abstract class SettingsItem(
|
||||
return NativeLibrary.isFirmwareAvailable()
|
||||
}
|
||||
|
||||
if (setting.key in frameGenKeys &&
|
||||
!(LosslessScalingHelper.isInstalled() && LosslessScalingHelper.isSupportedByGpu())
|
||||
) {
|
||||
return false
|
||||
}
|
||||
|
||||
// A frame rate target moves the multiplier on its own
|
||||
if (setting.key == IntSetting.RENDERER_FRAME_GEN_MULTIPLIER.key &&
|
||||
frameGenTargetRate != 0
|
||||
) {
|
||||
return false
|
||||
}
|
||||
|
||||
// Can't edit settings that aren't saveable in per-game config even if they are switchable
|
||||
if (NativeConfig.isPerGameConfigLoaded() && !setting.isSaveable) {
|
||||
return false
|
||||
@@ -102,31 +88,7 @@ abstract class SettingsItem(
|
||||
val clearable: Boolean
|
||||
get() = !setting.global && NativeConfig.isPerGameConfigLoaded()
|
||||
|
||||
private val frameGenTargetRate: Int
|
||||
get() {
|
||||
val key = IntSetting.RENDERER_FRAME_GEN_TARGET_RATE.key
|
||||
val needsGlobal = if (NativeLibrary.isRunning() &&
|
||||
!NativeConfig.isPerGameConfigLoaded()
|
||||
) {
|
||||
!NativeConfig.usingGlobal(key)
|
||||
} else {
|
||||
NativeConfig.usingGlobal(key)
|
||||
}
|
||||
return IntSetting.RENDERER_FRAME_GEN_TARGET_RATE.getInt(needsGlobal)
|
||||
}
|
||||
|
||||
companion object {
|
||||
private val frameGenKeys = setOf(
|
||||
BooleanSetting.RENDERER_FRAME_GEN.key,
|
||||
IntSetting.RENDERER_FRAME_GEN_MULTIPLIER.key,
|
||||
IntSetting.RENDERER_FRAME_GEN_TARGET_RATE.key,
|
||||
IntSetting.RENDERER_FRAME_GEN_QUEUE_TARGET.key,
|
||||
BooleanSetting.RENDERER_FRAME_GEN_FLOW_SCALE_AUTO.key,
|
||||
IntSetting.RENDERER_FRAME_GEN_FLOW_SCALE.key,
|
||||
BooleanSetting.RENDERER_FRAME_GEN_FP16.key,
|
||||
BooleanSetting.RENDERER_FRAME_GEN_DUMP_FLOW.key
|
||||
)
|
||||
|
||||
const val TYPE_HEADER = 0
|
||||
const val TYPE_SWITCH = 1
|
||||
const val TYPE_SINGLE_CHOICE = 2
|
||||
@@ -632,7 +594,7 @@ abstract class SettingsItem(
|
||||
IntSetting.ANDROID_PIPELINE_WORKERS,
|
||||
titleId = R.string.pipeline_worker_cores,
|
||||
descriptionId = R.string.pipeline_worker_cores_description,
|
||||
min = 2,
|
||||
min = 4,
|
||||
max = 8,
|
||||
units = "cores"
|
||||
)
|
||||
@@ -645,71 +607,6 @@ abstract class SettingsItem(
|
||||
valuesId = R.array.rendererAntiAliasingValues
|
||||
)
|
||||
)
|
||||
put(
|
||||
SwitchSetting(
|
||||
BooleanSetting.RENDERER_FRAME_GEN,
|
||||
titleId = R.string.frame_gen,
|
||||
descriptionId = R.string.frame_gen_description
|
||||
)
|
||||
)
|
||||
put(
|
||||
SingleChoiceSetting(
|
||||
IntSetting.RENDERER_FRAME_GEN_MULTIPLIER,
|
||||
titleId = R.string.frame_gen_multiplier,
|
||||
descriptionId = R.string.frame_gen_multiplier_description,
|
||||
choicesId = R.array.frameGenMultiplierNames,
|
||||
valuesId = R.array.frameGenMultiplierValues
|
||||
)
|
||||
)
|
||||
put(
|
||||
SingleChoiceSetting(
|
||||
IntSetting.RENDERER_FRAME_GEN_TARGET_RATE,
|
||||
titleId = R.string.frame_gen_target_rate,
|
||||
descriptionId = R.string.frame_gen_target_rate_description,
|
||||
choicesId = R.array.frameGenTargetRateNames,
|
||||
valuesId = R.array.frameGenTargetRateValues
|
||||
)
|
||||
)
|
||||
put(
|
||||
SingleChoiceSetting(
|
||||
IntSetting.RENDERER_FRAME_GEN_QUEUE_TARGET,
|
||||
titleId = R.string.frame_gen_queue_target,
|
||||
descriptionId = R.string.frame_gen_queue_target_description,
|
||||
choicesId = R.array.frameGenQueueTargetNames,
|
||||
valuesId = R.array.frameGenQueueTargetValues
|
||||
)
|
||||
)
|
||||
put(
|
||||
SwitchSetting(
|
||||
BooleanSetting.RENDERER_FRAME_GEN_FLOW_SCALE_AUTO,
|
||||
titleId = R.string.frame_gen_flow_scale_auto,
|
||||
descriptionId = R.string.frame_gen_flow_scale_auto_description
|
||||
)
|
||||
)
|
||||
put(
|
||||
SliderSetting(
|
||||
IntSetting.RENDERER_FRAME_GEN_FLOW_SCALE,
|
||||
titleId = R.string.frame_gen_flow_scale,
|
||||
descriptionId = R.string.frame_gen_flow_scale_description,
|
||||
min = 25,
|
||||
max = 100,
|
||||
units = "%"
|
||||
)
|
||||
)
|
||||
put(
|
||||
SwitchSetting(
|
||||
BooleanSetting.RENDERER_FRAME_GEN_FP16,
|
||||
titleId = R.string.frame_gen_fp16,
|
||||
descriptionId = R.string.frame_gen_fp16_description
|
||||
)
|
||||
)
|
||||
put(
|
||||
SwitchSetting(
|
||||
BooleanSetting.RENDERER_FRAME_GEN_DUMP_FLOW,
|
||||
titleId = R.string.frame_gen_dump_flow,
|
||||
descriptionId = R.string.frame_gen_dump_flow_description
|
||||
)
|
||||
)
|
||||
put(
|
||||
SingleChoiceSetting(
|
||||
IntSetting.RENDERER_SCREEN_LAYOUT,
|
||||
|
||||
+1
-3
@@ -382,9 +382,7 @@ class SettingsDialogFragment : DialogFragment(), DialogInterface.OnClickListener
|
||||
}
|
||||
scSetting.setSelectedValue(value)
|
||||
|
||||
if (scSetting.setting.key == IntSetting.RENDERER_SCALING_FILTER.key ||
|
||||
scSetting.setting.key == IntSetting.RENDERER_FRAME_GEN_TARGET_RATE.key
|
||||
) {
|
||||
if (scSetting.setting.key == IntSetting.RENDERER_SCALING_FILTER.key) {
|
||||
settingsViewModel.setShouldReloadSettingsList(true)
|
||||
}
|
||||
|
||||
|
||||
+3
-40
@@ -27,7 +27,6 @@ import org.yuzu.yuzu_emu.features.settings.model.ShortSetting
|
||||
import org.yuzu.yuzu_emu.features.settings.model.StringSetting
|
||||
import org.yuzu.yuzu_emu.features.settings.model.view.*
|
||||
import org.yuzu.yuzu_emu.utils.InputHandler
|
||||
import org.yuzu.yuzu_emu.utils.LosslessScalingHelper
|
||||
import org.yuzu.yuzu_emu.utils.NativeConfig
|
||||
import org.yuzu.yuzu_emu.utils.DirectoryInitialization
|
||||
import org.yuzu.yuzu_emu.utils.FullscreenHelper
|
||||
@@ -77,41 +76,6 @@ class SettingsFragmentPresenter(
|
||||
}
|
||||
}
|
||||
|
||||
private fun addFrameGenSettings(sl: ArrayList<SettingsItem>) {
|
||||
sl.apply {
|
||||
if (!LosslessScalingHelper.isSupportedByGpu()) {
|
||||
add(
|
||||
RunnableSetting(
|
||||
titleId = R.string.frame_gen_unsupported,
|
||||
descriptionId = R.string.frame_gen_unsupported_description,
|
||||
isRunnable = false
|
||||
) {}
|
||||
)
|
||||
} else if (!LosslessScalingHelper.isInstalled()) {
|
||||
add(
|
||||
RunnableSetting(
|
||||
titleId = R.string.lossless_scaling_missing,
|
||||
descriptionId = R.string.lossless_scaling_missing_description,
|
||||
isRunnable = false
|
||||
) {}
|
||||
)
|
||||
}
|
||||
|
||||
add(BooleanSetting.RENDERER_FRAME_GEN.key)
|
||||
add(IntSetting.RENDERER_FRAME_GEN_TARGET_RATE.key)
|
||||
add(IntSetting.RENDERER_FRAME_GEN_MULTIPLIER.key)
|
||||
add(IntSetting.RENDERER_FRAME_GEN_QUEUE_TARGET.key)
|
||||
add(BooleanSetting.RENDERER_FRAME_GEN_FLOW_SCALE_AUTO.key)
|
||||
if (!BooleanSetting.RENDERER_FRAME_GEN_FLOW_SCALE_AUTO.getBoolean(
|
||||
getNeedsGlobalForKey(BooleanSetting.RENDERER_FRAME_GEN_FLOW_SCALE_AUTO.key)
|
||||
)
|
||||
) {
|
||||
add(IntSetting.RENDERER_FRAME_GEN_FLOW_SCALE.key)
|
||||
}
|
||||
add(BooleanSetting.RENDERER_FRAME_GEN_FP16.key)
|
||||
}
|
||||
}
|
||||
|
||||
private fun isSharpnessScalingFilterSelected(): Boolean {
|
||||
val needsGlobal = getNeedsGlobalForKey(IntSetting.RENDERER_SCALING_FILTER.key)
|
||||
val selectedFilter = IntSetting.RENDERER_SCALING_FILTER.getInt(needsGlobal)
|
||||
@@ -156,7 +120,6 @@ class SettingsFragmentPresenter(
|
||||
MenuTag.SECTION_ROOT -> addConfigSettings(sl)
|
||||
MenuTag.SECTION_SYSTEM -> addSystemSettings(sl)
|
||||
MenuTag.SECTION_RENDERER -> addGraphicsSettings(sl)
|
||||
MenuTag.SECTION_FRAME_GEN -> addFrameGenSettings(sl)
|
||||
MenuTag.SECTION_PERFORMANCE_STATS -> addPerformanceOverlaySettings(sl)
|
||||
MenuTag.SECTION_SOC_OVERLAY -> addSocOverlaySettings(sl)
|
||||
MenuTag.SECTION_INPUT_OVERLAY -> addInputOverlaySettings(sl)
|
||||
@@ -287,9 +250,8 @@ class SettingsFragmentPresenter(
|
||||
add(BooleanSetting.USE_CUSTOM_RTC.key)
|
||||
add(LongSetting.CUSTOM_RTC.key)
|
||||
|
||||
add(HeaderSetting(R.string.clocks))
|
||||
add(HeaderSetting(R.string.cpu))
|
||||
add(IntSetting.FAST_CPU_TIME.key)
|
||||
add(IntSetting.FAST_GPU_TIME.key)
|
||||
add(BooleanSetting.CORE_SYNC_CORE_SPEED.key)
|
||||
|
||||
add(IntSetting.MEMORY_LAYOUT.key)
|
||||
@@ -336,9 +298,11 @@ class SettingsFragmentPresenter(
|
||||
|
||||
add(HeaderSetting(R.string.hacks))
|
||||
|
||||
add(IntSetting.FAST_GPU_TIME.key)
|
||||
add(BooleanSetting.SKIP_CPU_INNER_INVALIDATION.key)
|
||||
add(BooleanSetting.FIX_BLOOM_EFFECTS.key)
|
||||
add(BooleanSetting.EMULATE_BGR565.key)
|
||||
add(BooleanSetting.RESCALE_HACK.key)
|
||||
add(BooleanSetting.RENDERER_ASYNCHRONOUS_SHADERS.key)
|
||||
add(IntSetting.ANDROID_PIPELINE_WORKERS.key)
|
||||
add(BooleanSetting.RENDERER_ASYNCHRONOUS_GPU_EMULATION.key)
|
||||
@@ -1332,7 +1296,6 @@ class SettingsFragmentPresenter(
|
||||
add(BooleanSetting.DUMP_GUEST_SHADERS.key)
|
||||
add(BooleanSetting.GPU_LOG_SHADER_DUMPS.key)
|
||||
add(BooleanSetting.DUMP_MACROS.key)
|
||||
add(BooleanSetting.RENDERER_FRAME_GEN_DUMP_FLOW.key)
|
||||
add(BooleanSetting.GPU_LOG_MEMORY_TRACKING.key)
|
||||
add(BooleanSetting.GPU_LOG_DRIVER_DEBUG.key)
|
||||
add(IntSetting.GPU_LOG_RING_BUFFER_SIZE.key)
|
||||
|
||||
-2
@@ -29,7 +29,6 @@ enum class SettingsSubscreen {
|
||||
DRIVER_MANAGER,
|
||||
DRIVER_FETCHER,
|
||||
FREEDRENO_SETTINGS,
|
||||
LOSSLESS_MANAGER,
|
||||
APPLET_LAUNCHER,
|
||||
INSTALLABLE,
|
||||
GAME_FOLDERS,
|
||||
@@ -127,7 +126,6 @@ class SettingsSubscreenActivity : AppCompatActivity() {
|
||||
SettingsSubscreen.DRIVER_MANAGER -> R.id.driverManagerFragment
|
||||
SettingsSubscreen.DRIVER_FETCHER -> R.id.driverFetcherFragment
|
||||
SettingsSubscreen.FREEDRENO_SETTINGS -> R.id.freedrenoSettingsFragment
|
||||
SettingsSubscreen.LOSSLESS_MANAGER -> R.id.losslessManagerFragment
|
||||
SettingsSubscreen.APPLET_LAUNCHER -> R.id.appletLauncherFragment
|
||||
SettingsSubscreen.INSTALLABLE -> R.id.installableFragment
|
||||
SettingsSubscreen.GAME_FOLDERS -> R.id.gameFoldersFragment
|
||||
|
||||
@@ -1451,7 +1451,6 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
NativeLibrary.refreshThreadPolicies()
|
||||
val b = _binding ?: return
|
||||
updateStatsPosition(IntSetting.PERF_OVERLAY_POSITION.getInt())
|
||||
updateSocPosition(IntSetting.SOC_OVERLAY_POSITION.getInt())
|
||||
|
||||
@@ -369,21 +369,6 @@ class GamePropertiesFragment : Fragment() {
|
||||
)
|
||||
)
|
||||
}
|
||||
add(
|
||||
SubmenuProperty(
|
||||
R.string.frame_gen,
|
||||
R.string.frame_gen_per_game_description,
|
||||
R.drawable.ic_duck,
|
||||
action = {
|
||||
val action = HomeNavigationDirections.actionGlobalSettingsActivity(
|
||||
args.game,
|
||||
Settings.MenuTag.SECTION_FRAME_GEN
|
||||
)
|
||||
binding.root.findNavController().navigate(action)
|
||||
}
|
||||
)
|
||||
)
|
||||
|
||||
if (GpuDriverHelper.isAdrenoGpu()) {
|
||||
add(
|
||||
SubmenuProperty(
|
||||
|
||||
@@ -44,7 +44,6 @@ import org.yuzu.yuzu_emu.ui.main.MainActivity
|
||||
import org.yuzu.yuzu_emu.utils.FileUtil
|
||||
import org.yuzu.yuzu_emu.utils.GpuDriverHelper
|
||||
import org.yuzu.yuzu_emu.utils.Log
|
||||
import org.yuzu.yuzu_emu.utils.LosslessScalingHelper
|
||||
import org.yuzu.yuzu_emu.utils.ViewUtils.updateMargins
|
||||
|
||||
class HomeSettingsFragment : Fragment() {
|
||||
@@ -171,24 +170,6 @@ class HomeSettingsFragment : Fragment() {
|
||||
)
|
||||
)
|
||||
}
|
||||
add(
|
||||
HomeSetting(
|
||||
R.string.lossless_scaling,
|
||||
R.string.lossless_scaling_description,
|
||||
R.drawable.ic_duck,
|
||||
{
|
||||
val action = HomeNavigationDirections.actionGlobalSettingsSubscreenActivity(
|
||||
SettingsSubscreen.LOSSLESS_MANAGER,
|
||||
null
|
||||
)
|
||||
binding.root.findNavController().navigate(action)
|
||||
},
|
||||
{ true },
|
||||
0,
|
||||
0,
|
||||
LosslessScalingHelper.statusText
|
||||
)
|
||||
)
|
||||
add(
|
||||
HomeSetting(
|
||||
R.string.multiplayer,
|
||||
@@ -356,7 +337,6 @@ class HomeSettingsFragment : Fragment() {
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
driverViewModel.updateDriverNameForGame(null)
|
||||
LosslessScalingHelper.refreshStatus()
|
||||
}
|
||||
|
||||
override fun onDestroyView() {
|
||||
|
||||
@@ -1,174 +0,0 @@
|
||||
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
package org.yuzu.yuzu_emu.fragments
|
||||
|
||||
import android.os.Bundle
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.activity.result.contract.ActivityResultContracts
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.core.view.ViewCompat
|
||||
import androidx.core.view.WindowInsetsCompat
|
||||
import androidx.core.view.updatePadding
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.recyclerview.widget.GridLayoutManager
|
||||
import com.google.android.material.transition.MaterialSharedAxis
|
||||
import org.yuzu.yuzu_emu.NativeLibrary
|
||||
import org.yuzu.yuzu_emu.R
|
||||
import org.yuzu.yuzu_emu.adapters.HomeSettingAdapter
|
||||
import org.yuzu.yuzu_emu.databinding.FragmentLosslessManagerBinding
|
||||
import org.yuzu.yuzu_emu.features.fetcher.SpacingItemDecoration
|
||||
import org.yuzu.yuzu_emu.model.HomeSetting
|
||||
import org.yuzu.yuzu_emu.utils.LosslessScalingHelper
|
||||
import org.yuzu.yuzu_emu.utils.ViewUtils.updateMargins
|
||||
import org.yuzu.yuzu_emu.utils.collect
|
||||
|
||||
class LosslessManagerFragment : Fragment() {
|
||||
private var _binding: FragmentLosslessManagerBinding? = null
|
||||
private val binding get() = _binding!!
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
enterTransition = MaterialSharedAxis(MaterialSharedAxis.X, true)
|
||||
returnTransition = MaterialSharedAxis(MaterialSharedAxis.X, false)
|
||||
reenterTransition = MaterialSharedAxis(MaterialSharedAxis.X, false)
|
||||
exitTransition = MaterialSharedAxis(MaterialSharedAxis.X, true)
|
||||
}
|
||||
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater,
|
||||
container: ViewGroup?,
|
||||
savedInstanceState: Bundle?
|
||||
): View {
|
||||
_binding = FragmentLosslessManagerBinding.inflate(inflater, container, false)
|
||||
return binding.root
|
||||
}
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
|
||||
binding.toolbarLossless.setNavigationOnClickListener {
|
||||
requireActivity().onBackPressedDispatcher.onBackPressed()
|
||||
}
|
||||
|
||||
binding.losslessOptionsList.apply {
|
||||
layoutManager =
|
||||
GridLayoutManager(requireContext(), resources.getInteger(R.integer.grid_columns))
|
||||
addItemDecoration(
|
||||
SpacingItemDecoration(resources.getDimensionPixelSize(R.dimen.spacing_small))
|
||||
)
|
||||
}
|
||||
|
||||
LosslessScalingHelper.statusText.collect(viewLifecycleOwner) { refreshOptions() }
|
||||
|
||||
setInsets()
|
||||
}
|
||||
|
||||
private fun refreshOptions() {
|
||||
binding.losslessOptionsList.adapter = HomeSettingAdapter(
|
||||
requireActivity() as AppCompatActivity,
|
||||
viewLifecycleOwner,
|
||||
buildOptions()
|
||||
)
|
||||
}
|
||||
|
||||
private fun buildOptions(): List<HomeSetting> {
|
||||
val installed = LosslessScalingHelper.isInstalled()
|
||||
return listOf(
|
||||
HomeSetting(
|
||||
if (installed) R.string.lossless_scaling_replace else R.string.lossless_scaling_install,
|
||||
if (installed) {
|
||||
R.string.lossless_scaling_replace_description
|
||||
} else {
|
||||
R.string.lossless_scaling_install_description
|
||||
},
|
||||
R.drawable.ic_install,
|
||||
{ dllPickerLauncher.launch(arrayOf("*/*")) },
|
||||
{ !NativeLibrary.isRunning() },
|
||||
R.string.lossless_scaling_locked,
|
||||
R.string.lossless_scaling_locked_description,
|
||||
LosslessScalingHelper.statusText
|
||||
),
|
||||
HomeSetting(
|
||||
R.string.lossless_scaling_remove,
|
||||
R.string.lossless_scaling_remove_description,
|
||||
R.drawable.ic_delete,
|
||||
{ confirmRemoval() },
|
||||
{ installed && !NativeLibrary.isRunning() },
|
||||
if (installed) {
|
||||
R.string.lossless_scaling_locked
|
||||
} else {
|
||||
R.string.lossless_scaling_remove_unavailable
|
||||
},
|
||||
if (installed) {
|
||||
R.string.lossless_scaling_locked_description
|
||||
} else {
|
||||
R.string.lossless_scaling_remove_unavailable_description
|
||||
}
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
private fun confirmRemoval() {
|
||||
MessageDialogFragment.newInstance(
|
||||
requireActivity(),
|
||||
titleId = R.string.lossless_scaling_remove,
|
||||
descriptionId = R.string.lossless_scaling_remove_confirmation,
|
||||
positiveButtonTitleId = R.string.lossless_scaling_remove,
|
||||
positiveAction = { LosslessScalingHelper.remove() },
|
||||
showNegativeButton = true,
|
||||
negativeAction = {}
|
||||
).show(parentFragmentManager, MessageDialogFragment.TAG)
|
||||
}
|
||||
|
||||
private val dllPickerLauncher =
|
||||
registerForActivityResult(ActivityResultContracts.OpenDocument()) { result ->
|
||||
if (result == null) {
|
||||
return@registerForActivityResult
|
||||
}
|
||||
|
||||
val resultStrings = resources.getStringArray(R.array.losslessDllResults)
|
||||
ProgressDialogFragment.newInstance(
|
||||
requireActivity(),
|
||||
R.string.lossless_scaling_installing,
|
||||
false
|
||||
) { _, _ ->
|
||||
val installResult = LosslessScalingHelper.install(result)
|
||||
if (installResult == LosslessScalingHelper.RESULT_OK) {
|
||||
getString(R.string.lossless_scaling_install_success)
|
||||
} else {
|
||||
MessageDialogFragment.newInstance(
|
||||
titleId = R.string.lossless_scaling_install_failed,
|
||||
descriptionString = resultStrings[installResult]
|
||||
)
|
||||
}
|
||||
}.show(parentFragmentManager, ProgressDialogFragment.TAG)
|
||||
}
|
||||
|
||||
override fun onDestroyView() {
|
||||
super.onDestroyView()
|
||||
_binding = null
|
||||
}
|
||||
|
||||
private fun setInsets() =
|
||||
ViewCompat.setOnApplyWindowInsetsListener(binding.root) { _, windowInsets ->
|
||||
val barInsets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars())
|
||||
val cutoutInsets = windowInsets.getInsets(WindowInsetsCompat.Type.displayCutout())
|
||||
|
||||
binding.appbarLossless.updateMargins(
|
||||
left = barInsets.left + cutoutInsets.left,
|
||||
right = barInsets.right + cutoutInsets.right
|
||||
)
|
||||
|
||||
binding.scrollViewLossless.updatePadding(bottom = barInsets.bottom)
|
||||
|
||||
binding.losslessOptionsList.updatePadding(
|
||||
left = barInsets.left + cutoutInsets.left,
|
||||
right = barInsets.right + cutoutInsets.right
|
||||
)
|
||||
|
||||
windowInsets
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
package org.yuzu.yuzu_emu.fragments
|
||||
@@ -42,7 +42,6 @@ import org.yuzu.yuzu_emu.model.SetupPage
|
||||
import org.yuzu.yuzu_emu.model.PageState
|
||||
import org.yuzu.yuzu_emu.ui.main.MainActivity
|
||||
import org.yuzu.yuzu_emu.utils.DirectoryInitialization
|
||||
import org.yuzu.yuzu_emu.utils.LosslessScalingHelper
|
||||
import org.yuzu.yuzu_emu.utils.NativeConfig
|
||||
import org.yuzu.yuzu_emu.utils.ViewUtils
|
||||
import org.yuzu.yuzu_emu.utils.ViewUtils.setVisible
|
||||
@@ -203,24 +202,6 @@ class SetupFragment : Fragment() {
|
||||
R.string.install_firmware_warning_help,
|
||||
)
|
||||
)
|
||||
add(
|
||||
PageButton(
|
||||
R.drawable.ic_duck,
|
||||
R.string.lossless_scaling,
|
||||
R.string.lossless_scaling_setup_description,
|
||||
{
|
||||
pageButtonCallback = it
|
||||
getLosslessDll.launch(arrayOf("*/*"))
|
||||
},
|
||||
{
|
||||
if (LosslessScalingHelper.isInstalled()) {
|
||||
ButtonState.BUTTON_ACTION_COMPLETE
|
||||
} else {
|
||||
ButtonState.BUTTON_ACTION_INCOMPLETE
|
||||
}
|
||||
}
|
||||
)
|
||||
)
|
||||
add(
|
||||
PageButton(
|
||||
R.drawable.ic_controller,
|
||||
@@ -465,32 +446,6 @@ class SetupFragment : Fragment() {
|
||||
}
|
||||
}
|
||||
|
||||
val getLosslessDll =
|
||||
registerForActivityResult(ActivityResultContracts.OpenDocument()) { result ->
|
||||
if (result == null) {
|
||||
return@registerForActivityResult
|
||||
}
|
||||
|
||||
val resultStrings = resources.getStringArray(R.array.losslessDllResults)
|
||||
ProgressDialogFragment.newInstance(
|
||||
requireActivity(),
|
||||
R.string.lossless_scaling_installing,
|
||||
false
|
||||
) { _, _ ->
|
||||
val installResult = LosslessScalingHelper.install(result)
|
||||
if (installResult == LosslessScalingHelper.RESULT_OK) {
|
||||
getString(R.string.lossless_scaling_install_success)
|
||||
} else {
|
||||
MessageDialogFragment.newInstance(
|
||||
titleId = R.string.lossless_scaling_install_failed,
|
||||
descriptionString = resultStrings[installResult]
|
||||
)
|
||||
}
|
||||
}.apply {
|
||||
onDialogComplete = { checkForButtonState.invoke() }
|
||||
}.show(parentFragmentManager, ProgressDialogFragment.TAG)
|
||||
}
|
||||
|
||||
val getGamesDirectory =
|
||||
registerForActivityResult(ActivityResultContracts.OpenDocumentTree()) { result ->
|
||||
if (result != null) {
|
||||
|
||||
+1
-13
@@ -1,4 +1,4 @@
|
||||
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
package org.yuzu.yuzu_emu.fragments
|
||||
@@ -72,18 +72,6 @@ class SystemInfoDialogFragment : DialogFragment() {
|
||||
|
||||
val vulkanDriver = NativeLibrary.getVulkanDriverVersion()
|
||||
appendLine("${getString(R.string.vulkan_driver_version)}: $vulkanDriver")
|
||||
|
||||
val frameGen = NativeLibrary.supportsFrameGeneration()
|
||||
appendLine(
|
||||
"${getString(R.string.frame_generation_support)}: " +
|
||||
getString(
|
||||
if (frameGen) {
|
||||
R.string.frame_generation_supported
|
||||
} else {
|
||||
R.string.frame_generation_unsupported
|
||||
}
|
||||
)
|
||||
)
|
||||
} catch (e: Exception) {
|
||||
appendLine("${getString(R.string.error_getting_emulator_info)}: ${e.message}")
|
||||
}
|
||||
|
||||
@@ -1,77 +0,0 @@
|
||||
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
package org.yuzu.yuzu_emu.utils
|
||||
|
||||
import android.net.Uri
|
||||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
import kotlinx.coroutines.flow.StateFlow
|
||||
import kotlinx.coroutines.flow.asStateFlow
|
||||
import org.yuzu.yuzu_emu.NativeLibrary
|
||||
import org.yuzu.yuzu_emu.R
|
||||
import org.yuzu.yuzu_emu.YuzuApplication
|
||||
import java.io.File
|
||||
|
||||
object LosslessScalingHelper {
|
||||
const val RESULT_OK = 0
|
||||
const val RESULT_NOT_INSTALLED = 1
|
||||
|
||||
private val _statusText = MutableStateFlow("")
|
||||
val statusText: StateFlow<String> = _statusText.asStateFlow()
|
||||
|
||||
private var installed: Boolean? = null
|
||||
private var gpuSupported: Boolean? = null
|
||||
|
||||
fun isInstalled(): Boolean = installed ?: refreshStatus()
|
||||
|
||||
fun isSupportedByGpu(): Boolean {
|
||||
val cached = gpuSupported
|
||||
if (cached != null) {
|
||||
return cached
|
||||
}
|
||||
val result = NativeLibrary.supportsFrameGeneration()
|
||||
gpuSupported = result
|
||||
return result
|
||||
}
|
||||
|
||||
fun refreshStatus(): Boolean {
|
||||
val result = NativeLibrary.validateLosslessDll() == RESULT_OK
|
||||
installed = result
|
||||
|
||||
val context = YuzuApplication.appContext
|
||||
_statusText.value = if (result) {
|
||||
context.getString(R.string.lossless_scaling_installed)
|
||||
} else {
|
||||
context.getString(R.string.lossless_scaling_not_installed)
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
fun install(source: Uri): Int {
|
||||
val destination = File(NativeLibrary.getLosslessDllPath())
|
||||
destination.parentFile?.mkdirs()
|
||||
|
||||
val copied = FileUtil.copyUriToInternalStorage(
|
||||
source,
|
||||
destination.parent!!,
|
||||
destination.name
|
||||
)
|
||||
if (copied == null) {
|
||||
refreshStatus()
|
||||
return RESULT_NOT_INSTALLED
|
||||
}
|
||||
|
||||
val result = NativeLibrary.prepareLosslessDll()
|
||||
if (result != RESULT_OK) {
|
||||
NativeLibrary.removeLosslessDll()
|
||||
}
|
||||
refreshStatus()
|
||||
return result
|
||||
}
|
||||
|
||||
fun remove(): Boolean {
|
||||
val removed = NativeLibrary.removeLosslessDll()
|
||||
refreshStatus()
|
||||
return removed
|
||||
}
|
||||
}
|
||||
@@ -33,8 +33,8 @@ void AndroidConfig::SaveAllValues() {
|
||||
}
|
||||
|
||||
void AndroidConfig::ReadAndroidValues() {
|
||||
ReadAndroidUIValues();
|
||||
if (global) {
|
||||
ReadAndroidUIValues();
|
||||
ReadUIValues();
|
||||
BeginGroup(Settings::TranslateCategory(Settings::Category::DataStorage));
|
||||
Settings::values.ext_content_from_game_dirs = ReadBooleanSetting(
|
||||
@@ -223,8 +223,8 @@ void AndroidConfig::ReadAndroidControlValues() {
|
||||
}
|
||||
|
||||
void AndroidConfig::SaveAndroidValues() {
|
||||
SaveAndroidUIValues();
|
||||
if (global) {
|
||||
SaveAndroidUIValues();
|
||||
SaveUIValues();
|
||||
SaveOverlayValues();
|
||||
}
|
||||
|
||||
@@ -147,7 +147,7 @@ namespace AndroidSettings {
|
||||
&show_performance_overlay};
|
||||
|
||||
|
||||
Settings::SwitchableSetting<s32> pipeline_worker_count{linkage, 2, "pipeline_worker_count",
|
||||
Settings::Setting<s32> pipeline_worker_count{linkage, 4, "pipeline_worker_count",
|
||||
Settings::Category::Android,
|
||||
Settings::Specialization::Default,
|
||||
true,
|
||||
|
||||
@@ -124,18 +124,9 @@ float EmuWindow_Android::GetFrameTimeVerifiedHint() const {
|
||||
return QuantizeFrameRateHint(verified_rate);
|
||||
}
|
||||
|
||||
float EmuWindow_Android::GetPresentedFrameMultiplier() {
|
||||
if (!Settings::values.frame_gen.GetValue()) {
|
||||
return 1.0f;
|
||||
}
|
||||
return static_cast<float>(std::clamp<u32>(Settings::values.frame_gen_multiplier.GetValue(), 2, 4));
|
||||
}
|
||||
|
||||
float EmuWindow_Android::GetFrameRateHint() const {
|
||||
const float presented_multiplier = GetPresentedFrameMultiplier();
|
||||
const float observed_rate =
|
||||
std::clamp(m_smoothed_present_rate * presented_multiplier, 0.0f, 240.0f);
|
||||
const float frame_time_verified_hint = GetFrameTimeVerifiedHint() * presented_multiplier;
|
||||
const float observed_rate = std::clamp(m_smoothed_present_rate, 0.0f, 240.0f);
|
||||
const float frame_time_verified_hint = GetFrameTimeVerifiedHint();
|
||||
|
||||
if (m_last_frame_rate_hint > 0.0f && observed_rate > 0.0f) {
|
||||
const float tolerance = std::max(m_last_frame_rate_hint * 0.12f, 4.0f);
|
||||
@@ -159,9 +150,9 @@ float EmuWindow_Android::GetFrameRateHint() const {
|
||||
return frame_time_verified_hint;
|
||||
}
|
||||
|
||||
const float nominal_rate = 60.0f * presented_multiplier;
|
||||
constexpr float NominalFrameRate = 60.0f;
|
||||
if (!Settings::values.use_speed_limit.GetValue()) {
|
||||
return QuantizeFrameRateHint(nominal_rate);
|
||||
return NominalFrameRate;
|
||||
}
|
||||
|
||||
const u16 speed_limit = Settings::SpeedLimit();
|
||||
@@ -170,7 +161,7 @@ float EmuWindow_Android::GetFrameRateHint() const {
|
||||
}
|
||||
|
||||
const float speed_limited_rate =
|
||||
nominal_rate * (static_cast<float>(std::min<u16>(speed_limit, 100)) / 100.0f);
|
||||
NominalFrameRate * (static_cast<float>(std::min<u16>(speed_limit, 100)) / 100.0f);
|
||||
return QuantizeFrameRateHint(speed_limited_rate);
|
||||
}
|
||||
|
||||
|
||||
@@ -61,7 +61,6 @@ private:
|
||||
void UpdateObservedFrameRate();
|
||||
[[nodiscard]] float GetFrameRateHint() const;
|
||||
[[nodiscard]] float GetFrameTimeVerifiedHint() const;
|
||||
[[nodiscard]] static float GetPresentedFrameMultiplier();
|
||||
[[nodiscard]] static float QuantizeFrameRateHint(float frame_rate);
|
||||
|
||||
float m_window_width{};
|
||||
|
||||
@@ -20,96 +20,132 @@ struct RomMetadata {
|
||||
std::vector<u8> icon;
|
||||
bool isHomebrew;
|
||||
};
|
||||
static ankerl::unordered_dense::map<std::string, RomMetadata> m_rom_metadata_cache;
|
||||
|
||||
static RomMetadata CacheRomMetadata(const std::string& path) {
|
||||
auto& instance = EmulationSession::GetInstance();
|
||||
const auto file = Core::GetGameFileFromPath(instance.System().GetFilesystem(), path);
|
||||
if (auto loader = Loader::GetLoader(instance.System(), file, 0, 0); loader) {
|
||||
RomMetadata entry;
|
||||
loader->ReadTitle(entry.title);
|
||||
loader->ReadProgramId(entry.programId);
|
||||
loader->ReadIcon(entry.icon);
|
||||
ankerl::unordered_dense::map<std::string, RomMetadata> m_rom_metadata_cache;
|
||||
|
||||
const FileSys::PatchManager pm{
|
||||
entry.programId,
|
||||
instance.System().GetFileSystemController(),
|
||||
instance.System().GetContentProvider()
|
||||
};
|
||||
const auto control = pm.GetControlMetadata();
|
||||
RomMetadata CacheRomMetadata(const std::string& path) {
|
||||
const auto file =
|
||||
Core::GetGameFileFromPath(EmulationSession::GetInstance().System().GetFilesystem(), path);
|
||||
auto loader = Loader::GetLoader(EmulationSession::GetInstance().System(), file, 0, 0);
|
||||
|
||||
if (control.first != nullptr) {
|
||||
entry.developer = control.first->GetDeveloperName();
|
||||
entry.version = control.first->GetVersionString();
|
||||
RomMetadata entry;
|
||||
loader->ReadTitle(entry.title);
|
||||
loader->ReadProgramId(entry.programId);
|
||||
loader->ReadIcon(entry.icon);
|
||||
|
||||
const FileSys::PatchManager pm{
|
||||
entry.programId, EmulationSession::GetInstance().System().GetFileSystemController(),
|
||||
EmulationSession::GetInstance().System().GetContentProvider()};
|
||||
const auto control = pm.GetControlMetadata();
|
||||
|
||||
if (control.first != nullptr) {
|
||||
entry.developer = control.first->GetDeveloperName();
|
||||
entry.version = control.first->GetVersionString();
|
||||
} else {
|
||||
FileSys::NACP nacp;
|
||||
if (loader->ReadControlData(nacp) == Loader::ResultStatus::Success) {
|
||||
entry.developer = nacp.GetDeveloperName();
|
||||
} else {
|
||||
FileSys::NACP nacp{};
|
||||
entry.developer = loader->ReadControlData(nacp) == Loader::ResultStatus::Success
|
||||
? nacp.GetDeveloperName()
|
||||
: "";
|
||||
entry.version = "1.0.0";
|
||||
entry.developer = "";
|
||||
}
|
||||
if (loader->GetFileType() == Loader::FileType::NRO) {
|
||||
auto loader_nro = reinterpret_cast<Loader::AppLoader_NRO*>(loader.get());
|
||||
entry.isHomebrew = loader_nro->IsHomebrew();
|
||||
} else {
|
||||
entry.isHomebrew = false;
|
||||
}
|
||||
m_rom_metadata_cache[path] = entry;
|
||||
return entry;
|
||||
|
||||
entry.version = "1.0.0";
|
||||
}
|
||||
return {};
|
||||
|
||||
if (loader->GetFileType() == Loader::FileType::NRO) {
|
||||
auto loader_nro = reinterpret_cast<Loader::AppLoader_NRO*>(loader.get());
|
||||
entry.isHomebrew = loader_nro->IsHomebrew();
|
||||
} else {
|
||||
entry.isHomebrew = false;
|
||||
}
|
||||
|
||||
m_rom_metadata_cache[path] = entry;
|
||||
|
||||
return entry;
|
||||
}
|
||||
|
||||
static RomMetadata GetRomMetadata(const std::string& path, bool reload = false) {
|
||||
if (reload)
|
||||
RomMetadata GetRomMetadata(const std::string& path, bool reload = false) {
|
||||
if (reload) {
|
||||
return CacheRomMetadata(path);
|
||||
if (auto it = m_rom_metadata_cache.find(path); it != m_rom_metadata_cache.end())
|
||||
return it->second;
|
||||
}
|
||||
|
||||
if (auto search = m_rom_metadata_cache.find(path); search != m_rom_metadata_cache.end()) {
|
||||
return search->second;
|
||||
}
|
||||
|
||||
return CacheRomMetadata(path);
|
||||
}
|
||||
|
||||
extern "C" {
|
||||
|
||||
jboolean Java_org_yuzu_yuzu_1emu_utils_GameMetadata_getIsValid(JNIEnv* env, jobject obj, jstring jpath) {
|
||||
if (auto const file = EmulationSession::GetInstance().System().GetFilesystem()->OpenFile(Common::Android::GetJString(env, jpath), FileSys::OpenMode::Read); file) {
|
||||
if (auto loader = Loader::GetLoader(EmulationSession::GetInstance().System(), file); loader) {
|
||||
auto const file_type = loader->GetFileType();
|
||||
if (file_type == Loader::FileType::Unknown || file_type == Loader::FileType::Error)
|
||||
return false;
|
||||
if ((file_type == Loader::FileType::NSP || file_type == Loader::FileType::XCI) && !Loader::IsBootableGameContainer(file, file_type))
|
||||
return false;
|
||||
u64 program_id = 0;
|
||||
return loader->ReadProgramId(program_id) == Loader::ResultStatus::Success;
|
||||
}
|
||||
jboolean Java_org_yuzu_yuzu_1emu_utils_GameMetadata_getIsValid(JNIEnv* env, jobject obj,
|
||||
jstring jpath) {
|
||||
const auto file = EmulationSession::GetInstance().System().GetFilesystem()->OpenFile(
|
||||
Common::Android::GetJString(env, jpath), FileSys::OpenMode::Read);
|
||||
if (!file) {
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
|
||||
auto loader = Loader::GetLoader(EmulationSession::GetInstance().System(), file);
|
||||
if (!loader) {
|
||||
return false;
|
||||
}
|
||||
|
||||
const auto file_type = loader->GetFileType();
|
||||
if (file_type == Loader::FileType::Unknown || file_type == Loader::FileType::Error) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if ((file_type == Loader::FileType::NSP || file_type == Loader::FileType::XCI) &&
|
||||
!Loader::IsBootableGameContainer(file, file_type)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
u64 program_id = 0;
|
||||
Loader::ResultStatus res = loader->ReadProgramId(program_id);
|
||||
if (res != Loader::ResultStatus::Success) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
jstring Java_org_yuzu_yuzu_1emu_utils_GameMetadata_getTitle(JNIEnv* env, jobject obj, jstring jpath) {
|
||||
return Common::Android::ToJString(env, GetRomMetadata(Common::Android::GetJString(env, jpath)).title);
|
||||
jstring Java_org_yuzu_yuzu_1emu_utils_GameMetadata_getTitle(JNIEnv* env, jobject obj,
|
||||
jstring jpath) {
|
||||
return Common::Android::ToJString(
|
||||
env, GetRomMetadata(Common::Android::GetJString(env, jpath)).title);
|
||||
}
|
||||
|
||||
jstring Java_org_yuzu_yuzu_1emu_utils_GameMetadata_getProgramId(JNIEnv* env, jobject obj, jstring jpath) {
|
||||
return Common::Android::ToJString(env, std::to_string(GetRomMetadata(Common::Android::GetJString(env, jpath)).programId));
|
||||
jstring Java_org_yuzu_yuzu_1emu_utils_GameMetadata_getProgramId(JNIEnv* env, jobject obj,
|
||||
jstring jpath) {
|
||||
return Common::Android::ToJString(
|
||||
env, std::to_string(GetRomMetadata(Common::Android::GetJString(env, jpath)).programId));
|
||||
}
|
||||
|
||||
jstring Java_org_yuzu_yuzu_1emu_utils_GameMetadata_getDeveloper(JNIEnv* env, jobject obj, jstring jpath) {
|
||||
return Common::Android::ToJString(env, GetRomMetadata(Common::Android::GetJString(env, jpath)).developer);
|
||||
jstring Java_org_yuzu_yuzu_1emu_utils_GameMetadata_getDeveloper(JNIEnv* env, jobject obj,
|
||||
jstring jpath) {
|
||||
return Common::Android::ToJString(
|
||||
env, GetRomMetadata(Common::Android::GetJString(env, jpath)).developer);
|
||||
}
|
||||
|
||||
jstring Java_org_yuzu_yuzu_1emu_utils_GameMetadata_getVersion(JNIEnv* env, jobject obj, jstring jpath, jboolean jreload) {
|
||||
return Common::Android::ToJString(env, GetRomMetadata(Common::Android::GetJString(env, jpath), jreload).version);
|
||||
jstring Java_org_yuzu_yuzu_1emu_utils_GameMetadata_getVersion(JNIEnv* env, jobject obj,
|
||||
jstring jpath, jboolean jreload) {
|
||||
return Common::Android::ToJString(
|
||||
env, GetRomMetadata(Common::Android::GetJString(env, jpath), jreload).version);
|
||||
}
|
||||
|
||||
jbyteArray Java_org_yuzu_yuzu_1emu_utils_GameMetadata_getIcon(JNIEnv* env, jobject obj, jstring jpath) {
|
||||
jbyteArray Java_org_yuzu_yuzu_1emu_utils_GameMetadata_getIcon(JNIEnv* env, jobject obj,
|
||||
jstring jpath) {
|
||||
auto icon_data = GetRomMetadata(Common::Android::GetJString(env, jpath)).icon;
|
||||
jbyteArray icon = env->NewByteArray(jsize(icon_data.size()));
|
||||
env->SetByteArrayRegion(icon, 0, env->GetArrayLength(icon), reinterpret_cast<jbyte*>(icon_data.data()));
|
||||
jbyteArray icon = env->NewByteArray(static_cast<jsize>(icon_data.size()));
|
||||
env->SetByteArrayRegion(icon, 0, env->GetArrayLength(icon),
|
||||
reinterpret_cast<jbyte*>(icon_data.data()));
|
||||
return icon;
|
||||
}
|
||||
|
||||
jboolean Java_org_yuzu_yuzu_1emu_utils_GameMetadata_getIsHomebrew(JNIEnv* env, jobject obj, jstring jpath) {
|
||||
return jboolean(GetRomMetadata(Common::Android::GetJString(env, jpath)).isHomebrew);
|
||||
jboolean Java_org_yuzu_yuzu_1emu_utils_GameMetadata_getIsHomebrew(JNIEnv* env, jobject obj,
|
||||
jstring jpath) {
|
||||
return static_cast<jboolean>(
|
||||
GetRomMetadata(Common::Android::GetJString(env, jpath)).isHomebrew);
|
||||
}
|
||||
|
||||
void Java_org_yuzu_yuzu_1emu_utils_GameMetadata_resetMetadata(JNIEnv* env, jobject obj) {
|
||||
|
||||
@@ -44,14 +44,12 @@ extern "C" {
|
||||
#include "common/android/android_common.h"
|
||||
#include "common/android/id_cache.h"
|
||||
#include "common/dynamic_library.h"
|
||||
#include "common/fs/fs_util.h"
|
||||
#include "common/fs/path_util.h"
|
||||
#include "common/logging.h"
|
||||
#include "common/scm_rev.h"
|
||||
#include "common/scope_exit.h"
|
||||
#include "common/settings.h"
|
||||
#include "common/string_util.h"
|
||||
#include "common/thread.h"
|
||||
#include "frontend_common/play_time_manager.h"
|
||||
#include "core/constants.h"
|
||||
#include "core/core.h"
|
||||
@@ -91,7 +89,6 @@ extern "C" {
|
||||
#include "hid_core/hid_types.h"
|
||||
#include "input_common/drivers/virtual_amiibo.h"
|
||||
#include "jni/native.h"
|
||||
#include "video_core/frame_gen/lossless_dll.h"
|
||||
#include "video_core/renderer_base.h"
|
||||
#include "video_core/renderer_vulkan/renderer_vulkan.h"
|
||||
#include "video_core/capture.h"
|
||||
@@ -1092,34 +1089,6 @@ VkPhysicalDeviceProperties GetVulkanDeviceProperties() {
|
||||
const Vulkan::vk::PhysicalDevice physical_device(physical_devices[0], dld);
|
||||
return physical_device.GetProperties();
|
||||
}
|
||||
|
||||
bool GetVulkanMemoryModelSupport() {
|
||||
Common::DynamicLibrary library;
|
||||
if (!library.Open("libvulkan.so")) {
|
||||
return false;
|
||||
}
|
||||
|
||||
Vulkan::vk::InstanceDispatch dld;
|
||||
const auto instance = Vulkan::CreateInstance(library, dld, VK_API_VERSION_1_1);
|
||||
const auto physical_devices = instance.EnumeratePhysicalDevices();
|
||||
if (physical_devices.empty()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
const Vulkan::vk::PhysicalDevice physical_device(physical_devices[0], dld);
|
||||
|
||||
VkPhysicalDeviceVulkanMemoryModelFeatures memory_model{
|
||||
.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES,
|
||||
.pNext = nullptr,
|
||||
};
|
||||
VkPhysicalDeviceFeatures2 features{
|
||||
.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2,
|
||||
.pNext = &memory_model,
|
||||
};
|
||||
physical_device.GetFeatures2(features);
|
||||
|
||||
return memory_model.vulkanMemoryModel == VK_TRUE;
|
||||
}
|
||||
} // namespace
|
||||
|
||||
jstring Java_org_yuzu_yuzu_1emu_NativeLibrary_getVulkanDriverVersion(JNIEnv* env, jobject jobj) {
|
||||
@@ -1195,14 +1164,6 @@ jstring Java_org_yuzu_yuzu_1emu_NativeLibrary_getVulkanApiVersion(JNIEnv* env, j
|
||||
}
|
||||
}
|
||||
|
||||
jboolean Java_org_yuzu_yuzu_1emu_NativeLibrary_supportsFrameGeneration(JNIEnv* env, jobject jobj) {
|
||||
try {
|
||||
return static_cast<jboolean>(GetVulkanMemoryModelSupport());
|
||||
} catch (...) {
|
||||
return static_cast<jboolean>(false);
|
||||
}
|
||||
}
|
||||
|
||||
jstring Java_org_yuzu_yuzu_1emu_NativeLibrary_getGpuModel(JNIEnv* env, jobject jobj) {
|
||||
const auto props = GetVulkanDeviceProperties();
|
||||
if (props.deviceID == 0) {
|
||||
@@ -1221,10 +1182,6 @@ void Java_org_yuzu_yuzu_1emu_NativeLibrary_logSettings(JNIEnv* env, jobject jobj
|
||||
Settings::LogSettings();
|
||||
}
|
||||
|
||||
void Java_org_yuzu_yuzu_1emu_NativeLibrary_refreshThreadPolicies(JNIEnv* env, jobject jobj) {
|
||||
Common::RefreshThreadPolicies();
|
||||
}
|
||||
|
||||
jboolean Java_org_yuzu_yuzu_1emu_NativeLibrary_getDebugKnobAt(JNIEnv* env, jobject jobj, jint index) {
|
||||
return static_cast<jboolean>(Settings::getDebugKnobAt(static_cast<u8>(index)));
|
||||
}
|
||||
@@ -1428,39 +1385,6 @@ jint Java_org_yuzu_yuzu_1emu_NativeLibrary_installKeys(JNIEnv* env, jclass clazz
|
||||
return static_cast<int>(FirmwareManager::InstallKeys(path, ext));
|
||||
}
|
||||
|
||||
jstring Java_org_yuzu_yuzu_1emu_NativeLibrary_getLosslessDllPath(JNIEnv* env, jclass clazz) {
|
||||
#ifdef HAS_LSFG
|
||||
const auto path = VideoCore::FrameGen::GetLosslessDllPath();
|
||||
return Common::Android::ToJString(env, Common::FS::PathToUTF8String(path));
|
||||
#else
|
||||
return Common::Android::ToJString(env, "");
|
||||
#endif
|
||||
}
|
||||
|
||||
jint Java_org_yuzu_yuzu_1emu_NativeLibrary_validateLosslessDll(JNIEnv* env, jclass clazz) {
|
||||
#ifdef HAS_LSFG
|
||||
return static_cast<jint>(VideoCore::FrameGen::GetInstalledLosslessStatus());
|
||||
#else
|
||||
return static_cast<jint>(VideoCore::FrameGen::LosslessStatus::NotInstalled);
|
||||
#endif
|
||||
}
|
||||
|
||||
jint Java_org_yuzu_yuzu_1emu_NativeLibrary_prepareLosslessDll(JNIEnv* env, jclass clazz) {
|
||||
#ifdef HAS_LSFG
|
||||
return static_cast<jint>(VideoCore::FrameGen::BuildShaderCache());
|
||||
#else
|
||||
return static_cast<jint>(VideoCore::FrameGen::LosslessStatus::NotInstalled);
|
||||
#endif
|
||||
}
|
||||
|
||||
jboolean Java_org_yuzu_yuzu_1emu_NativeLibrary_removeLosslessDll(JNIEnv* env, jclass clazz) {
|
||||
#ifdef HAS_LSFG
|
||||
return static_cast<jboolean>(VideoCore::FrameGen::RemoveInstalledLosslessDll());
|
||||
#else
|
||||
return static_cast<jboolean>(false);
|
||||
#endif
|
||||
}
|
||||
|
||||
jobjectArray Java_org_yuzu_yuzu_1emu_NativeLibrary_getPatchesForFile(JNIEnv* env, jobject jobj,
|
||||
jstring jpath,
|
||||
jstring jprogramId) {
|
||||
|
||||
@@ -1,19 +0,0 @@
|
||||
<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="M11,10.6a8,5.2 0 1,0 0,10.4a8,5.2 0 1,0 0,-10.4z" />
|
||||
<path
|
||||
android:fillColor="?attr/colorControlNormal"
|
||||
android:pathData="M4.6,12.6L0.8,10.2L3.2,15.5z" />
|
||||
<path
|
||||
android:fillColor="?attr/colorControlNormal"
|
||||
android:fillType="evenOdd"
|
||||
android:pathData="M15.3,3.5a4,4 0 1,0 0,8a4,4 0 1,0 0,-8zM16.6,4.9a1,1 0 1,0 0,2a1,1 0 1,0 0,-2z" />
|
||||
<path
|
||||
android:fillColor="?attr/colorControlNormal"
|
||||
android:pathData="M18.6,6.5L23.2,7.8L18.6,9.3z" />
|
||||
</vector>
|
||||
@@ -1,63 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="?attr/colorSurface">
|
||||
|
||||
<com.google.android.material.appbar.AppBarLayout
|
||||
android:id="@+id/appbar_lossless"
|
||||
style="@style/Widget.Eden.TransparentTopAppBarLayout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:fitsSystemWindows="true"
|
||||
android:touchscreenBlocksFocus="false"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
|
||||
<com.google.android.material.appbar.MaterialToolbar
|
||||
android:id="@+id/toolbar_lossless"
|
||||
style="@style/Widget.Eden.TransparentTopToolbar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="?attr/actionBarSize"
|
||||
android:touchscreenBlocksFocus="false"
|
||||
app:navigationIcon="@drawable/ic_back"
|
||||
app:title="@string/lossless_scaling" />
|
||||
|
||||
</com.google.android.material.appbar.AppBarLayout>
|
||||
|
||||
<androidx.core.widget.NestedScrollView
|
||||
android:id="@+id/scroll_view_lossless"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
android:background="@android:color/transparent"
|
||||
android:clipToPadding="false"
|
||||
android:defaultFocusHighlightEnabled="false"
|
||||
android:fadeScrollbars="false"
|
||||
android:scrollbars="vertical"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/appbar_lossless">
|
||||
|
||||
<androidx.appcompat.widget.LinearLayoutCompat
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:paddingHorizontal="16dp"
|
||||
android:paddingTop="16dp">
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/lossless_options_list"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:clipToPadding="false"
|
||||
android:nestedScrollingEnabled="false" />
|
||||
|
||||
</androidx.appcompat.widget.LinearLayoutCompat>
|
||||
|
||||
</androidx.core.widget.NestedScrollView>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
@@ -47,12 +47,6 @@
|
||||
android:defaultValue="@null" />
|
||||
</fragment>
|
||||
|
||||
<fragment
|
||||
android:id="@+id/losslessManagerFragment"
|
||||
android:name="org.yuzu.yuzu_emu.fragments.LosslessManagerFragment"
|
||||
android:label="@string/lossless_scaling"
|
||||
tools:layout="@layout/fragment_lossless_manager" />
|
||||
|
||||
<fragment
|
||||
android:id="@+id/appletLauncherFragment"
|
||||
android:name="org.yuzu.yuzu_emu.fragments.AppletLauncherFragment"
|
||||
|
||||
@@ -958,6 +958,7 @@
|
||||
<string name="clock_fast">سريع (2000MHz)</string>
|
||||
|
||||
<!-- GPU overclock factors -->
|
||||
<string name="off">تعطيل</string>
|
||||
<string name="fast_gpu_medium">متوسط (256)</string>
|
||||
<string name="fast_gpu_high">مرتفع (512)</string>
|
||||
|
||||
|
||||
@@ -884,6 +884,7 @@ Wirklich fortfahren?</string>
|
||||
<string name="clock_fast">Schnell (2000MHz)</string>
|
||||
|
||||
<!-- GPU overclock factors -->
|
||||
<string name="off">Aus</string>
|
||||
<string name="fast_gpu_medium">Mittel (256)</string>
|
||||
<string name="fast_gpu_high">Hoch (512)</string>
|
||||
|
||||
|
||||
@@ -950,6 +950,7 @@
|
||||
<string name="clock_fast">Rápido (2000MHz)</string>
|
||||
|
||||
<!-- GPU overclock factors -->
|
||||
<string name="off">Desactivado</string>
|
||||
<string name="fast_gpu_medium">Medio (256)</string>
|
||||
<string name="fast_gpu_high">Alto (512)</string>
|
||||
|
||||
|
||||
@@ -897,6 +897,7 @@
|
||||
<string name="clock_fast">Rapide (2000MHz)</string>
|
||||
|
||||
<!-- GPU overclock factors -->
|
||||
<string name="off">Désactivé</string>
|
||||
<string name="fast_gpu_medium">Moyen (256)</string>
|
||||
<string name="fast_gpu_high">Élevé (512)</string>
|
||||
|
||||
|
||||
@@ -871,6 +871,7 @@
|
||||
<string name="clock_fast">Szybkie (2000MHz)</string>
|
||||
|
||||
<!-- GPU overclock factors -->
|
||||
<string name="off">Wyłączone</string>
|
||||
<string name="fast_gpu_medium">Średnie (256)</string>
|
||||
<string name="fast_gpu_high">Wysokie (512)</string>
|
||||
|
||||
|
||||
@@ -954,6 +954,7 @@
|
||||
<string name="clock_fast">Быстрая (2000MHz)</string>
|
||||
|
||||
<!-- GPU overclock factors -->
|
||||
<string name="off">Выкл.</string>
|
||||
<string name="fast_gpu_medium">Среднее (256)</string>
|
||||
<string name="fast_gpu_high">Высокое (512)</string>
|
||||
|
||||
|
||||
@@ -943,6 +943,7 @@
|
||||
<string name="clock_fast">Швидко (2000 МГц)</string>
|
||||
|
||||
<!-- GPU overclock factors -->
|
||||
<string name="off">Вимкнено</string>
|
||||
<string name="fast_gpu_medium">Середньо (256)</string>
|
||||
<string name="fast_gpu_high">Високо (512)</string>
|
||||
|
||||
|
||||
@@ -948,6 +948,7 @@
|
||||
<string name="clock_fast">快速 (2000MHz)</string>
|
||||
|
||||
<!-- GPU overclock factors -->
|
||||
<string name="off">关闭</string>
|
||||
<string name="fast_gpu_medium">中 (256)</string>
|
||||
<string name="fast_gpu_high">高 (512)</string>
|
||||
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
<string name="stats_overlay_options">疊加層</string>
|
||||
<string name="enable_stats_overlay_">啟用效能統計疊加層</string>
|
||||
<string name="stats_overlay_options_description">設定疊加層中顯示的資訊</string>
|
||||
<string name="show_fps">顯示影格率</string>
|
||||
<string name="show_fps">顯示FPS</string>
|
||||
<string name="show_fps_description">顯示當前影格率</string>
|
||||
<string name="show_frametime">顯示影格時間</string>
|
||||
<string name="show_app_ram_usage">顯示應用程式的記憶體用量</string>
|
||||
@@ -300,9 +300,9 @@
|
||||
<string name="app_settings_description">自訂Eden的主題與介面</string>
|
||||
<string name="no_file_manager">找不到檔案管理員</string>
|
||||
<string name="notification_no_directory_link">無法開啟 Eden 目錄</string>
|
||||
<string name="notification_no_directory_link_description">請使用檔案管理員的側邊面板手動定位到使用者資料夾</string>
|
||||
<string name="notification_no_directory_link_description">請使用檔案管理員的側邊面板手動定位到使用者資料夾。</string>
|
||||
<string name="manage_save_data">管理儲存資料</string>
|
||||
<string name="manage_save_data_description">導入/導出遊戲的儲存資料\n\n壓縮檔中首個子資料夾名稱必須為遊戲 ID</string>
|
||||
<string name="manage_save_data_description">導入/導出遊戲的儲存資料</string>
|
||||
<string name="import_save_warning">導入儲存資料</string>
|
||||
<string name="import_save_warning_description">這將會以提供的檔案覆寫現有的該遊戲儲存資料,您確定要繼續嗎?</string>
|
||||
<string name="save_files_importing">正在導入儲存資料…</string>
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
</integer-array>
|
||||
|
||||
<string-array name="clockNames">
|
||||
<item>@string/clock_normal</item>
|
||||
<item>@string/off</item>
|
||||
<item>@string/clock_boost</item>
|
||||
<item>@string/clock_fast</item>
|
||||
</string-array>
|
||||
@@ -162,48 +162,6 @@
|
||||
<item>@string/resolution_four</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="frameGenMultiplierNames">
|
||||
<item>@string/frame_gen_multiplier_2x</item>
|
||||
<item>@string/frame_gen_multiplier_3x</item>
|
||||
<item>@string/frame_gen_multiplier_4x</item>
|
||||
</string-array>
|
||||
|
||||
<integer-array name="frameGenMultiplierValues">
|
||||
<item>2</item>
|
||||
<item>3</item>
|
||||
<item>4</item>
|
||||
</integer-array>
|
||||
|
||||
<string-array name="frameGenTargetRateNames">
|
||||
<item>@string/frame_gen_target_rate_off</item>
|
||||
<item>@string/frame_gen_target_rate_60</item>
|
||||
<item>@string/frame_gen_target_rate_90</item>
|
||||
<item>@string/frame_gen_target_rate_120</item>
|
||||
<item>@string/frame_gen_target_rate_144</item>
|
||||
<item>@string/frame_gen_target_rate_165</item>
|
||||
</string-array>
|
||||
|
||||
<integer-array name="frameGenTargetRateValues">
|
||||
<item>0</item>
|
||||
<item>60</item>
|
||||
<item>90</item>
|
||||
<item>120</item>
|
||||
<item>144</item>
|
||||
<item>165</item>
|
||||
</integer-array>
|
||||
|
||||
<string-array name="frameGenQueueTargetNames">
|
||||
<item>@string/frame_gen_queue_target_0</item>
|
||||
<item>@string/frame_gen_queue_target_1</item>
|
||||
<item>@string/frame_gen_queue_target_2</item>
|
||||
</string-array>
|
||||
|
||||
<integer-array name="frameGenQueueTargetValues">
|
||||
<item>0</item>
|
||||
<item>1</item>
|
||||
<item>2</item>
|
||||
</integer-array>
|
||||
|
||||
<string-array name="rendererVSyncNames">
|
||||
<item>@string/renderer_vsync_immediate</item>
|
||||
<item>@string/renderer_vsync_mailbox</item>
|
||||
@@ -589,7 +547,7 @@
|
||||
</integer-array>
|
||||
|
||||
<string-array name="gpuEntries">
|
||||
<item>@string/fast_gpu_normal</item>
|
||||
<item>@string/off</item>
|
||||
<item>@string/fast_gpu_medium</item>
|
||||
<item>@string/fast_gpu_high</item>
|
||||
</string-array>
|
||||
@@ -680,16 +638,6 @@
|
||||
<item>@string/error_keys_failed_init</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="losslessDllResults">
|
||||
<item>""</item>
|
||||
<item>@string/error_lossless_copy_failed</item>
|
||||
<item>@string/error_lossless_unreadable</item>
|
||||
<item>@string/error_lossless_not_pe</item>
|
||||
<item>@string/error_lossless_missing_shaders</item>
|
||||
<item>@string/error_lossless_translation_failed</item>
|
||||
<item>@string/error_lossless_cache_failed</item>
|
||||
</string-array>
|
||||
|
||||
<!-- GPU Logging Arrays -->
|
||||
<string-array name="gpuLogLevelEntries">
|
||||
<item>Off</item>
|
||||
|
||||
@@ -298,67 +298,6 @@
|
||||
<string name="gpu_driver_fetcher">GPU driver fetcher</string>
|
||||
<string name="gpu_driver_manager">GPU driver manager</string>
|
||||
<string name="install_gpu_driver_description">Install alternative drivers for potentially better performance or accuracy</string>
|
||||
<string name="frame_gen">Frame generation</string>
|
||||
<string name="frame_gen_per_game_description">Configure frame generation for this game</string>
|
||||
<string name="frame_gen_description">Insert interpolated frames between rendered ones using Lossless Scaling. Forces FIFO presentation while enabled.</string>
|
||||
<string name="frame_gen_multiplier">Frame multiplier</string>
|
||||
<string name="frame_gen_multiplier_description">How many frames to display for each rendered frame. Higher values cost proportionally more GPU time. Asking for more than your display can present will slow emulation down.</string>
|
||||
<string name="frame_gen_multiplier_2x">2x</string>
|
||||
<string name="frame_gen_multiplier_3x">3x</string>
|
||||
<string name="frame_gen_multiplier_4x">4x</string>
|
||||
<string name="frame_gen_target_rate">Target frame rate</string>
|
||||
<string name="frame_gen_target_rate_description">Pick the rate your display can actually show. The multiplier then rises or falls on its own to hold it, and rolls back any step that makes the game itself run slower.</string>
|
||||
<string name="frame_gen_target_rate_off">Use a fixed multiplier</string>
|
||||
<string name="frame_gen_target_rate_60">60 FPS</string>
|
||||
<string name="frame_gen_target_rate_90">90 FPS</string>
|
||||
<string name="frame_gen_target_rate_120">120 FPS</string>
|
||||
<string name="frame_gen_target_rate_144">144 FPS</string>
|
||||
<string name="frame_gen_target_rate_165">165 FPS</string>
|
||||
<string name="frame_gen_queue_target">Frame queue target</string>
|
||||
<string name="frame_gen_queue_target_description">How many finished frames may wait ahead of the display. Larger queues absorb GPU spikes at the cost of input latency.</string>
|
||||
<string name="frame_gen_queue_target_0">Lowest latency (Unbuffered)</string>
|
||||
<string name="frame_gen_queue_target_1">Balanced (1 frame)</string>
|
||||
<string name="frame_gen_queue_target_2">Smoothest (2 frames)</string>
|
||||
<string name="frame_gen_flow_scale_auto">Match motion estimation to the game</string>
|
||||
<string name="frame_gen_flow_scale_auto_description">Estimate motion at the resolution the game actually renders instead of the upscaled output. Costs nothing in accuracy, since upscaling adds no motion detail.</string>
|
||||
<string name="frame_gen_flow_scale">Motion estimation resolution</string>
|
||||
<string name="frame_gen_flow_scale_description">Resolution of the optical flow pass, as a fraction of the output. Lowering it is the cheapest way to reclaim performance.</string>
|
||||
<string name="frame_gen_fp16">Half precision shaders</string>
|
||||
<string name="frame_gen_fp16_description">Use the 16-bit shader variant. Falls back automatically if the driver or the file lacks it.</string>
|
||||
<string name="frame_gen_dump_flow">Dump generated frame</string>
|
||||
<string name="frame_gen_dump_flow_description">Write the optical flow mip levels and the interpolated frame to the lossless/debug folder once, for troubleshooting</string>
|
||||
<string name="frame_gen_unsupported">Frame generation unavailable</string>
|
||||
<string name="frame_gen_unsupported_description">This GPU driver does not support the Vulkan memory model, which the Lossless Scaling shaders require.</string>
|
||||
<string name="lossless_scaling_setup_description">Optional. Provide your own Lossless.dll to enable frame generation later</string>
|
||||
<string name="lossless_scaling_install">Install Lossless.dll</string>
|
||||
<string name="lossless_scaling_install_description">Frame generation needs your own legal copy of Lossless.dll from Lossless Scaling</string>
|
||||
<string name="lossless_scaling_replace_description">Select a different copy of Lossless.dll</string>
|
||||
<string name="frame_generation_support">Frame generation</string>
|
||||
<string name="frame_generation_supported">Supported</string>
|
||||
<string name="frame_generation_unsupported">Unsupported (no Vulkan memory model)</string>
|
||||
<string name="lossless_scaling">Lossless Scaling</string>
|
||||
<string name="lossless_scaling_description">Provide your own copy of Lossless.dll to enable frame generation</string>
|
||||
<string name="lossless_scaling_installed">Installed</string>
|
||||
<string name="lossless_scaling_not_installed">Not installed</string>
|
||||
<string name="lossless_scaling_replace">Replace</string>
|
||||
<string name="lossless_scaling_remove">Remove</string>
|
||||
<string name="lossless_scaling_remove_description">Delete the installed Lossless.dll and its prepared shaders</string>
|
||||
<string name="lossless_scaling_remove_confirmation">Frame generation will stop working until you install Lossless.dll again. Your original file is not affected.</string>
|
||||
<string name="lossless_scaling_missing">Lossless.dll not installed</string>
|
||||
<string name="lossless_scaling_missing_description">Install it from Settings › Lossless Scaling to use frame generation.</string>
|
||||
<string name="lossless_scaling_locked">Close the game first</string>
|
||||
<string name="lossless_scaling_locked_description">Lossless.dll cannot be changed while a game is running.</string>
|
||||
<string name="lossless_scaling_remove_unavailable">Nothing to remove</string>
|
||||
<string name="lossless_scaling_remove_unavailable_description">Lossless.dll is not installed yet.</string>
|
||||
<string name="lossless_scaling_installing">Preparing frame generation shaders…</string>
|
||||
<string name="lossless_scaling_install_success">Lossless.dll installed successfully</string>
|
||||
<string name="lossless_scaling_install_failed">Could not install Lossless.dll</string>
|
||||
<string name="error_lossless_copy_failed">The selected file could not be copied.</string>
|
||||
<string name="error_lossless_unreadable">The selected file could not be read.</string>
|
||||
<string name="error_lossless_not_pe">The selected file is not a Windows library. Select Lossless.dll from your Lossless Scaling installation.</string>
|
||||
<string name="error_lossless_missing_shaders">This copy of Lossless.dll does not contain the frame generation shaders. Update Lossless Scaling and try again.</string>
|
||||
<string name="error_lossless_translation_failed">The frame generation shaders could not be translated. This version of Lossless Scaling is not supported yet.</string>
|
||||
<string name="error_lossless_cache_failed">The translated shaders could not be written to storage. Check that there is free space available.</string>
|
||||
<string name="advanced_settings">Advanced settings</string>
|
||||
<string name="settings_description">Configure emulator settings</string>
|
||||
<string name="search_recently_played">Recently played</string>
|
||||
@@ -511,8 +450,8 @@
|
||||
<string name="set_custom_rtc">Set custom RTC</string>
|
||||
|
||||
<!-- CPU -->
|
||||
<string name="fast_cpu_time">CPU Clocks</string>
|
||||
<string name="fast_cpu_time_description">Raises the clock the emulated CPU reports, which removes some FPS limiters. Weaker CPUs may see reduced performance, and certain games may behave improperly.</string>
|
||||
<string name="fast_cpu_time">CPU Overclock</string>
|
||||
<string name="fast_cpu_time_description">Forces the emulated CPU to run at a higher clock, reducing certain FPS limiters. Use Boost (1700MHz) to run at the Switch\'s highest native clock, or Fast (2000MHz) to run at 2x clock.</string>
|
||||
<string name="custom_cpu_ticks">Custom CPU Ticks</string>
|
||||
<string name="custom_cpu_ticks_description">Set a custom value of CPU ticks. Higher values can increase performance, but may also cause the game to freeze. A range of 77–21000 is recommended.</string>
|
||||
<string name="cpu_ticks">Ticks</string>
|
||||
@@ -573,8 +512,8 @@
|
||||
|
||||
<string name="hacks">Hacks</string>
|
||||
|
||||
<string name="fast_gpu_time">GPU Clocks</string>
|
||||
<string name="fast_gpu_time_description">Makes the game believe GPU work finishes faster than it does, so it stops lowering resolution and render distance to fit the Switch\'s clocks.</string>
|
||||
<string name="fast_gpu_time">Fast GPU Time</string>
|
||||
<string name="fast_gpu_time_description">Forces most games to run at their highest native resolution. Use 256 for maximal performance and 512 for maximal graphics fidelity.</string>
|
||||
<string name="skip_cpu_inner_invalidation">Skip CPU Inner Invalidation</string>
|
||||
<string name="skip_cpu_inner_invalidation_description">Skips certain CPU-side cache invalidations during memory updates, reducing CPU usage and improving it\'s performance. This may cause glitches or crashes on some games.</string>
|
||||
<string name="fix_bloom_effects">Fix Bloom Effects</string>
|
||||
@@ -621,7 +560,6 @@
|
||||
|
||||
<!-- Debug settings strings -->
|
||||
<string name="cpu">CPU</string>
|
||||
<string name="clocks">Clocks</string>
|
||||
<string name="use_auto_stub">Use Auto Stub</string>
|
||||
<string name="use_auto_stub_description">Automatically stub missing services and functions. This may improve compatibility but can cause crashes and stability issues.</string>
|
||||
|
||||
@@ -1030,15 +968,14 @@
|
||||
<string name="memory_6gb">6GB (Unsafe)</string>
|
||||
<string name="memory_8gb">8GB (Unsafe)</string>
|
||||
|
||||
<!-- CPU clock levels -->
|
||||
<string name="clock_normal">Normal</string>
|
||||
<string name="clock_boost">Boost</string>
|
||||
<string name="clock_fast">Overclock</string>
|
||||
<!--CPU clock speeds-->
|
||||
<string name="clock_boost">Boost (1700MHz)</string>
|
||||
<string name="clock_fast">Fast (2000MHz)</string>
|
||||
|
||||
<!-- GPU clock levels -->
|
||||
<string name="fast_gpu_normal">Normal</string>
|
||||
<string name="fast_gpu_medium">Boost</string>
|
||||
<string name="fast_gpu_high">Overclock</string>
|
||||
<!-- GPU overclock factors -->
|
||||
<string name="off">Off</string>
|
||||
<string name="fast_gpu_medium">Medium (256)</string>
|
||||
<string name="fast_gpu_high">High (512)</string>
|
||||
|
||||
<!-- GPU swizzle texture size -->
|
||||
<string name="gpu_texturesizeswizzle_verysmall">Very Small (16 MB)</string>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<game-mode-config
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:supportsBatteryGameMode="false"
|
||||
android:supportsBatteryGameMode="true"
|
||||
android:supportsPerformanceGameMode="true"
|
||||
android:allowGameDownscaling="false"
|
||||
android:allowGameFpsOverride="false"/>
|
||||
@@ -222,7 +222,7 @@ if (MSVC)
|
||||
)
|
||||
else()
|
||||
target_compile_options(audio_core PRIVATE
|
||||
$<$<COMPILE_LANGUAGE:C,CXX>:-Wconversion>
|
||||
$<$<COMPILE_LANGUAGE:C,CXX>:-Werror=conversion>
|
||||
$<$<COMPILE_LANGUAGE:C,CXX>:-Wno-sign-conversion>)
|
||||
endif()
|
||||
|
||||
|
||||
@@ -18,15 +18,20 @@
|
||||
namespace AudioCore::Renderer {
|
||||
|
||||
constexpr u32 TempBufferSize = 0x3F00;
|
||||
constexpr std::array<u8, 3> PitchBySrcQuality = {4, 8, 4};
|
||||
|
||||
/// @brief Decode PCM data. Only s16 or f32 is supported.
|
||||
/// @tparam T - Type to decode. Only s16 and f32 are supported.
|
||||
/// @param memory - Core memory for reading samples.
|
||||
/// @param out_buffer - Output mix buffer to receive the samples.
|
||||
/// @param req - Information for how to decode.
|
||||
/// @return Number of samples decoded.
|
||||
/**
|
||||
* Decode PCM data. Only s16 or f32 is supported.
|
||||
*
|
||||
* @tparam T - Type to decode. Only s16 and f32 are supported.
|
||||
* @param memory - Core memory for reading samples.
|
||||
* @param out_buffer - Output mix buffer to receive the samples.
|
||||
* @param req - Information for how to decode.
|
||||
* @return Number of samples decoded.
|
||||
*/
|
||||
template <typename T>
|
||||
static u32 DecodePcm(Core::Memory::Memory& memory, std::span<s16> out_buffer, const DecodeArg& req) {
|
||||
static u32 DecodePcm(Core::Memory::Memory& memory, std::span<s16> out_buffer,
|
||||
const DecodeArg& req) {
|
||||
constexpr s32 min{(std::numeric_limits<s16>::min)()};
|
||||
constexpr s32 max{(std::numeric_limits<s16>::max)()};
|
||||
|
||||
@@ -89,12 +94,16 @@ static u32 DecodePcm(Core::Memory::Memory& memory, std::span<s16> out_buffer, co
|
||||
return samples_to_decode;
|
||||
}
|
||||
|
||||
/// @brief Decode ADPCM data.
|
||||
/// @param memory - Core memory for reading samples.
|
||||
/// @param out_buffer - Output mix buffer to receive the samples.
|
||||
/// @param req - Information for how to decode.
|
||||
/// @return Number of samples decoded.
|
||||
static u32 DecodeAdpcm(Core::Memory::Memory& memory, std::span<s16> out_buffer, const DecodeArg& req) {
|
||||
/**
|
||||
* Decode ADPCM data.
|
||||
*
|
||||
* @param memory - Core memory for reading samples.
|
||||
* @param out_buffer - Output mix buffer to receive the samples.
|
||||
* @param req - Information for how to decode.
|
||||
* @return Number of samples decoded.
|
||||
*/
|
||||
static u32 DecodeAdpcm(Core::Memory::Memory& memory, std::span<s16> out_buffer,
|
||||
const DecodeArg& req) {
|
||||
constexpr u32 SamplesPerFrame{14};
|
||||
constexpr u32 NibblesPerFrame{16};
|
||||
|
||||
@@ -106,7 +115,8 @@ static u32 DecodeAdpcm(Core::Memory::Memory& memory, std::span<s16> out_buffer,
|
||||
return 0;
|
||||
}
|
||||
|
||||
auto end{(req.end_offset % SamplesPerFrame) + NibblesPerFrame * (req.end_offset / SamplesPerFrame)};
|
||||
auto end{(req.end_offset % SamplesPerFrame) +
|
||||
NibblesPerFrame * (req.end_offset / SamplesPerFrame)};
|
||||
if (req.end_offset % SamplesPerFrame) {
|
||||
end += 3;
|
||||
} else {
|
||||
@@ -123,49 +133,52 @@ static u32 DecodeAdpcm(Core::Memory::Memory& memory, std::span<s16> out_buffer,
|
||||
return 0;
|
||||
}
|
||||
|
||||
auto samples_to_read = samples_to_process;
|
||||
auto samples_remaining_in_frame = start_pos % SamplesPerFrame;
|
||||
auto position_in_frame = (start_pos / SamplesPerFrame) * NibblesPerFrame + samples_remaining_in_frame;
|
||||
auto samples_to_read{samples_to_process};
|
||||
auto samples_remaining_in_frame{start_pos % SamplesPerFrame};
|
||||
auto position_in_frame{(start_pos / SamplesPerFrame) * NibblesPerFrame +
|
||||
samples_remaining_in_frame};
|
||||
|
||||
if (samples_remaining_in_frame) {
|
||||
position_in_frame += 2;
|
||||
}
|
||||
|
||||
const auto size{(std::max)((samples_to_process / 8U) * SamplesPerFrame, 8U)};
|
||||
Core::Memory::CpuGuestMemory<u8, Core::Memory::GuestMemoryFlags::UnsafeRead> wavebuffer(memory, req.buffer + position_in_frame / 2, size);
|
||||
Core::Memory::CpuGuestMemory<u8, Core::Memory::GuestMemoryFlags::UnsafeRead> wavebuffer(
|
||||
memory, req.buffer + position_in_frame / 2, size);
|
||||
|
||||
auto context = req.adpcm_context;
|
||||
auto header = context->header;
|
||||
u8 scale = u8(header & 0xfU);
|
||||
u8 coeff_index = u8((header >> 4U) & 0x7u);
|
||||
s32 coeff0 = req.coefficients[coeff_index * 2 + 0];
|
||||
s32 coeff1 = req.coefficients[coeff_index * 2 + 1];
|
||||
auto context{req.adpcm_context};
|
||||
auto header{context->header};
|
||||
u8 coeff_index{static_cast<u8>((header >> 4U) & 0xFU)};
|
||||
u8 scale{static_cast<u8>(header & 0xFU)};
|
||||
s32 coeff0{req.coefficients[coeff_index * 2 + 0]};
|
||||
s32 coeff1{req.coefficients[coeff_index * 2 + 1]};
|
||||
|
||||
auto yn0 = context->yn0;
|
||||
auto yn1 = context->yn1;
|
||||
auto const get_step = [](u32 index) {
|
||||
// Emulates the following table
|
||||
// 0, 1, 2, 3, 4, 5, 6, 7, -8, -7, -6, -5, -4, -3, -2, -1,
|
||||
constexpr u64 steps_table = 0x1234567876543210ull;
|
||||
constexpr u64 steps_sign = 0b1111111100000000ull;
|
||||
auto const r = s32((steps_table >> (index * 4)) & 0xf);
|
||||
return ((steps_sign >> index) & 1) == 0 ? -r : r;
|
||||
auto yn0{context->yn0};
|
||||
auto yn1{context->yn1};
|
||||
|
||||
static constexpr std::array<s32, 16> Steps{
|
||||
0, 1, 2, 3, 4, 5, 6, 7, -8, -7, -6, -5, -4, -3, -2, -1,
|
||||
};
|
||||
auto const decode_sample = [&](const s32 code) -> s16 {
|
||||
|
||||
const auto decode_sample = [&](const s32 code) -> s16 {
|
||||
const auto xn = code * (1 << scale);
|
||||
const auto prediction = coeff0 * yn0 + coeff1 * yn1;
|
||||
const auto sample = ((xn << 11) + 0x400 + prediction) >> 11;
|
||||
const auto saturated = std::clamp<s32>(sample, -0x8000, 0x7FFF);
|
||||
yn1 = yn0;
|
||||
return yn0 = s16(saturated);
|
||||
yn0 = static_cast<s16>(saturated);
|
||||
return yn0;
|
||||
};
|
||||
|
||||
u32 read_index = 0;
|
||||
for (u32 write_index = 0; samples_to_read > 0 && write_index < out_buffer.size(); ) {
|
||||
u32 read_index{0};
|
||||
u32 write_index{0};
|
||||
|
||||
while (samples_to_read > 0) {
|
||||
// Are we at a new frame?
|
||||
if ((position_in_frame % NibblesPerFrame) == 0) {
|
||||
header = wavebuffer[read_index++];
|
||||
scale = header & 0xFu;
|
||||
coeff_index = (header >> 4) & 0x7u;
|
||||
coeff_index = (header >> 4) & 0xF;
|
||||
scale = header & 0xF;
|
||||
coeff0 = req.coefficients[coeff_index * 2 + 0];
|
||||
coeff1 = req.coefficients[coeff_index * 2 + 1];
|
||||
position_in_frame += 2;
|
||||
@@ -174,12 +187,14 @@ static u32 DecodeAdpcm(Core::Memory::Memory& memory, std::span<s16> out_buffer,
|
||||
if (samples_to_read >= SamplesPerFrame) {
|
||||
// Can grab all samples until the next header
|
||||
for (u32 i = 0; i < SamplesPerFrame / 2; i++) {
|
||||
auto code0 = get_step((wavebuffer[read_index + i] >> 4) & 0xF);
|
||||
auto code1 = get_step(wavebuffer[read_index + i] & 0xF);
|
||||
auto code0{Steps[(wavebuffer[read_index] >> 4) & 0xF]};
|
||||
auto code1{Steps[wavebuffer[read_index] & 0xF]};
|
||||
read_index++;
|
||||
|
||||
out_buffer[write_index++] = decode_sample(code0);
|
||||
out_buffer[write_index++] = decode_sample(code1);
|
||||
}
|
||||
read_index += SamplesPerFrame / 2;
|
||||
|
||||
position_in_frame += SamplesPerFrame;
|
||||
samples_to_read -= SamplesPerFrame;
|
||||
continue;
|
||||
@@ -187,14 +202,15 @@ static u32 DecodeAdpcm(Core::Memory::Memory& memory, std::span<s16> out_buffer,
|
||||
}
|
||||
|
||||
// Decode a single sample
|
||||
auto code = wavebuffer[read_index];
|
||||
auto code{wavebuffer[read_index]};
|
||||
if (position_in_frame & 1) {
|
||||
code &= 0xF;
|
||||
read_index++;
|
||||
} else {
|
||||
code >>= 4;
|
||||
}
|
||||
out_buffer[write_index++] = decode_sample(get_step(code));
|
||||
|
||||
out_buffer[write_index++] = decode_sample(Steps[code]);
|
||||
|
||||
position_in_frame++;
|
||||
samples_to_read--;
|
||||
@@ -203,21 +219,27 @@ static u32 DecodeAdpcm(Core::Memory::Memory& memory, std::span<s16> out_buffer,
|
||||
context->header = header;
|
||||
context->yn0 = yn0;
|
||||
context->yn1 = yn1;
|
||||
|
||||
return samples_to_process;
|
||||
}
|
||||
|
||||
/// @brief Decode implementation.
|
||||
/// Decode wavebuffers according to the given args.
|
||||
///
|
||||
/// @param memory - Core memory to read data from.
|
||||
/// @param args - The wavebuffer data, and information for how to decode it.
|
||||
/**
|
||||
* Decode implementation.
|
||||
* Decode wavebuffers according to the given args.
|
||||
*
|
||||
* @param memory - Core memory to read data from.
|
||||
* @param args - The wavebuffer data, and information for how to decode it.
|
||||
*/
|
||||
void DecodeFromWaveBuffers(Core::Memory::Memory& memory, const DecodeFromWaveBuffersArgs& args) {
|
||||
constexpr auto EndWaveBuffer = [](auto& voice_state, auto& wavebuffer, auto& index, auto& played_samples, auto& consumed) -> void {
|
||||
static constexpr auto EndWaveBuffer = [](auto& voice_state, auto& wavebuffer, auto& index,
|
||||
auto& played_samples, auto& consumed) -> void {
|
||||
voice_state.wave_buffer_valid[index] = false;
|
||||
voice_state.loop_count = 0;
|
||||
|
||||
if (wavebuffer.stream_ended) {
|
||||
played_samples = 0;
|
||||
}
|
||||
|
||||
index = (index + 1) % MaxWaveBuffers;
|
||||
consumed++;
|
||||
};
|
||||
@@ -233,9 +255,8 @@ void DecodeFromWaveBuffers(Core::Memory::Memory& memory, const DecodeFromWaveBuf
|
||||
return;
|
||||
}
|
||||
|
||||
// 0 -> 4, 1 -> 8, 2 -> 4
|
||||
auto pitch = u32((0x040804ul >> (u32(args.src_quality) * 8)) & 0xfful);
|
||||
if (u32(pitch + size_required.to_int_floor()) > TempBufferSize) {
|
||||
auto pitch{PitchBySrcQuality[static_cast<u32>(args.src_quality)]};
|
||||
if (static_cast<u32>(pitch + size_required.to_int_floor()) > TempBufferSize) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -251,7 +272,7 @@ void DecodeFromWaveBuffers(Core::Memory::Memory& memory, const DecodeFromWaveBuf
|
||||
bool is_buffer_starved{false};
|
||||
u32 offset{voice_state.offset};
|
||||
|
||||
auto output_buffer = args.output;
|
||||
auto output_buffer{args.output};
|
||||
std::array<s16, TempBufferSize> temp_buffer{};
|
||||
|
||||
while (remaining_sample_count > 0) {
|
||||
@@ -273,8 +294,8 @@ void DecodeFromWaveBuffers(Core::Memory::Memory& memory, const DecodeFromWaveBuf
|
||||
if (wavebuffer_index >= MaxWaveBuffers) {
|
||||
LOG_ERROR(Service_Audio, "Invalid wavebuffer index! {}", wavebuffer_index);
|
||||
wavebuffer_index = 0;
|
||||
wavebuffers_consumed = MaxWaveBuffers;
|
||||
voice_state.wave_buffer_valid.fill(false);
|
||||
wavebuffers_consumed = MaxWaveBuffers;
|
||||
}
|
||||
|
||||
if (!voice_state.wave_buffer_valid[wavebuffer_index]) {
|
||||
@@ -282,9 +303,12 @@ void DecodeFromWaveBuffers(Core::Memory::Memory& memory, const DecodeFromWaveBuf
|
||||
break;
|
||||
}
|
||||
|
||||
auto& wavebuffer = args.wave_buffers[wavebuffer_index];
|
||||
if (offset == 0 && args.sample_format == SampleFormat::Adpcm && wavebuffer.context != 0) {
|
||||
memory.ReadBlockUnsafe(wavebuffer.context, &voice_state.adpcm_context, wavebuffer.context_size);
|
||||
auto& wavebuffer{args.wave_buffers[wavebuffer_index]};
|
||||
|
||||
if (offset == 0 && args.sample_format == SampleFormat::Adpcm &&
|
||||
wavebuffer.context != 0) {
|
||||
memory.ReadBlockUnsafe(wavebuffer.context, &voice_state.adpcm_context,
|
||||
wavebuffer.context_size);
|
||||
}
|
||||
|
||||
auto start_offset{wavebuffer.start_offset};
|
||||
@@ -327,7 +351,9 @@ void DecodeFromWaveBuffers(Core::Memory::Memory& memory, const DecodeFromWaveBuf
|
||||
case SampleFormat::Adpcm: {
|
||||
decode_arg.adpcm_context = &voice_state.adpcm_context;
|
||||
memory.ReadBlockUnsafe(args.data_address, &decode_arg.coefficients, args.data_size);
|
||||
samples_decoded = DecodeAdpcm( memory, {&temp_buffer[temp_buffer_pos], TempBufferSize - temp_buffer_pos}, decode_arg);
|
||||
samples_decoded = DecodeAdpcm(
|
||||
memory, {&temp_buffer[temp_buffer_pos], TempBufferSize - temp_buffer_pos},
|
||||
decode_arg);
|
||||
} break;
|
||||
|
||||
default:
|
||||
|
||||
@@ -1,6 +1,3 @@
|
||||
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
@@ -8,13 +5,21 @@
|
||||
|
||||
namespace AudioCore::Renderer {
|
||||
|
||||
static void ResampleLowQuality(std::span<s32> output, std::span<const s16> input, const Common::FixedPoint<49, 15>& sample_rate_ratio, Common::FixedPoint<49, 15>& fraction, const u32 samples_to_write) {
|
||||
u32 read_index{0};
|
||||
for (u32 i = 0; i < samples_to_write; i++) {
|
||||
output[i] = input[read_index + (fraction >= 0.5f)];
|
||||
fraction += sample_rate_ratio;
|
||||
read_index += u32(fraction.to_int_floor());
|
||||
fraction.clear_int();
|
||||
static void ResampleLowQuality(std::span<s32> output, std::span<const s16> input,
|
||||
const Common::FixedPoint<49, 15>& sample_rate_ratio,
|
||||
Common::FixedPoint<49, 15>& fraction, const u32 samples_to_write) {
|
||||
if (sample_rate_ratio == 1.0f) {
|
||||
for (u32 i = 0; i < samples_to_write; i++) {
|
||||
output[i] = input[i];
|
||||
}
|
||||
} else {
|
||||
u32 read_index{0};
|
||||
for (u32 i = 0; i < samples_to_write; i++) {
|
||||
output[i] = input[read_index + (fraction >= 0.5f)];
|
||||
fraction += sample_rate_ratio;
|
||||
read_index += static_cast<u32>(fraction.to_int_floor());
|
||||
fraction.clear_int();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -290,7 +295,7 @@ static void ResampleNormalQuality(std::span<s32> output, std::span<const s16> in
|
||||
auto lut{get_lut()};
|
||||
u32 read_index{0};
|
||||
for (u32 i = 0; i < samples_to_write; i++) {
|
||||
const auto lut_index = ((fraction.get_frac() >> 8) << 2) & 511;
|
||||
const auto lut_index{(fraction.get_frac() >> 8) * 4};
|
||||
const Common::FixedPoint<56, 8> sample0{input[read_index + 0] * lut[lut_index + 0]};
|
||||
const Common::FixedPoint<56, 8> sample1{input[read_index + 1] * lut[lut_index + 1]};
|
||||
const Common::FixedPoint<56, 8> sample2{input[read_index + 2] * lut[lut_index + 2]};
|
||||
@@ -840,7 +845,7 @@ static void ResampleHighQuality(std::span<s32> output, std::span<const s16> inpu
|
||||
auto lut{get_lut()};
|
||||
u32 read_index{0};
|
||||
for (u32 i = 0; i < samples_to_write; i++) {
|
||||
const auto lut_index = ((fraction.get_frac() >> 8) << 3) & 1023;
|
||||
const auto lut_index{(fraction.get_frac() >> 8) * 8};
|
||||
const Common::FixedPoint<56, 8> sample0{input[read_index + 0] * lut[lut_index + 0]};
|
||||
const Common::FixedPoint<56, 8> sample1{input[read_index + 1] * lut[lut_index + 1]};
|
||||
const Common::FixedPoint<56, 8> sample2{input[read_index + 2] * lut[lut_index + 2]};
|
||||
|
||||
@@ -121,8 +121,6 @@ add_library(
|
||||
swap.h
|
||||
thread.cpp
|
||||
thread.h
|
||||
adpf.cpp
|
||||
adpf.h
|
||||
thread_queue_list.h
|
||||
thread_worker.h
|
||||
threadsafe_queue.h
|
||||
@@ -220,7 +218,7 @@ endif()
|
||||
if(CXX_CLANG)
|
||||
target_compile_options(common PRIVATE
|
||||
$<$<COMPILE_LANGUAGE:C,CXX>:-fsized-deallocation>
|
||||
$<$<COMPILE_LANGUAGE:C,CXX>:-Wunreachable-code-aggressive>)
|
||||
$<$<COMPILE_LANGUAGE:C,CXX>:-Werror=unreachable-code-aggressive>)
|
||||
target_compile_definitions(
|
||||
common
|
||||
PRIVATE
|
||||
|
||||
@@ -1,317 +0,0 @@
|
||||
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
#include "common/adpf.h"
|
||||
|
||||
#ifdef __ANDROID__
|
||||
|
||||
#include <algorithm>
|
||||
#include <array>
|
||||
#include <atomic>
|
||||
#include <cstdint>
|
||||
#include <mutex>
|
||||
#include <vector>
|
||||
|
||||
#include <dlfcn.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include "common/logging.h"
|
||||
|
||||
namespace Common::ADPF {
|
||||
|
||||
namespace {
|
||||
|
||||
constexpr std::chrono::nanoseconds DEFAULT_TARGET = std::chrono::nanoseconds{16'666'667};
|
||||
|
||||
struct AHintManager;
|
||||
struct AHintSession;
|
||||
|
||||
using PFN_GetManager = AHintManager* (*)();
|
||||
using PFN_CreateSession = AHintSession* (*)(AHintManager*, const s32*, size_t, s64);
|
||||
using PFN_CloseSession = void (*)(AHintSession*);
|
||||
using PFN_UpdateTarget = int (*)(AHintSession*, s64);
|
||||
using PFN_ReportActual = int (*)(AHintSession*, s64);
|
||||
using PFN_SetThreads = int (*)(AHintSession*, const pid_t*, size_t);
|
||||
using PFN_SetPowerEfficiency = int (*)(AHintSession*, bool);
|
||||
|
||||
struct Api {
|
||||
PFN_GetManager get_manager = nullptr;
|
||||
PFN_CreateSession create_session = nullptr;
|
||||
PFN_CloseSession close_session = nullptr;
|
||||
PFN_UpdateTarget update_target = nullptr;
|
||||
PFN_ReportActual report_actual = nullptr;
|
||||
PFN_SetThreads set_threads = nullptr;
|
||||
PFN_SetPowerEfficiency set_power_efficiency = nullptr;
|
||||
AHintManager* manager = nullptr;
|
||||
bool usable = false;
|
||||
};
|
||||
|
||||
const Api& Resolve() {
|
||||
static const Api api = [] {
|
||||
Api resolved;
|
||||
void* library = dlopen("libandroid.so", RTLD_NOW);
|
||||
if (library == nullptr) {
|
||||
LOG_INFO(Common, "libandroid.so unavailable, ADPF is disabled");
|
||||
return resolved;
|
||||
}
|
||||
const auto load = [library](const char* name) { return dlsym(library, name); };
|
||||
|
||||
resolved.get_manager = reinterpret_cast<PFN_GetManager>(load("APerformanceHint_getManager"));
|
||||
resolved.create_session =
|
||||
reinterpret_cast<PFN_CreateSession>(load("APerformanceHint_createSession"));
|
||||
resolved.close_session =
|
||||
reinterpret_cast<PFN_CloseSession>(load("APerformanceHint_closeSession"));
|
||||
resolved.update_target =
|
||||
reinterpret_cast<PFN_UpdateTarget>(load("APerformanceHint_updateTargetWorkDuration"));
|
||||
resolved.report_actual =
|
||||
reinterpret_cast<PFN_ReportActual>(load("APerformanceHint_reportActualWorkDuration"));
|
||||
resolved.set_threads =
|
||||
reinterpret_cast<PFN_SetThreads>(load("APerformanceHint_setThreads"));
|
||||
resolved.set_power_efficiency = reinterpret_cast<PFN_SetPowerEfficiency>(
|
||||
load("APerformanceHint_setPreferPowerEfficiency"));
|
||||
|
||||
if (resolved.get_manager == nullptr || resolved.create_session == nullptr ||
|
||||
resolved.close_session == nullptr || resolved.update_target == nullptr ||
|
||||
resolved.report_actual == nullptr) {
|
||||
LOG_INFO(Common, "Performance hint API not exported, ADPF is disabled");
|
||||
return resolved;
|
||||
}
|
||||
|
||||
resolved.manager = resolved.get_manager();
|
||||
if (resolved.manager == nullptr) {
|
||||
LOG_INFO(Common, "Device does not provide a performance hint manager");
|
||||
return resolved;
|
||||
}
|
||||
|
||||
resolved.usable = true;
|
||||
LOG_INFO(Common, "ADPF available, setThreads {}, power efficiency {}",
|
||||
resolved.set_threads != nullptr ? "yes" : "no",
|
||||
resolved.set_power_efficiency != nullptr ? "yes" : "no");
|
||||
return resolved;
|
||||
}();
|
||||
return api;
|
||||
}
|
||||
|
||||
struct SessionState {
|
||||
AHintSession* handle = nullptr;
|
||||
std::vector<pid_t> threads;
|
||||
bool unsupported = false;
|
||||
};
|
||||
|
||||
std::mutex g_mutex;
|
||||
std::array<SessionState, 2> g_sessions;
|
||||
|
||||
constexpr s64 MAX_REPORTED_TARGETS = 4;
|
||||
|
||||
std::atomic<s64> g_target_ns{DEFAULT_TARGET.count()};
|
||||
thread_local std::chrono::steady_clock::time_point t_last_frame{};
|
||||
|
||||
SessionState& StateOf(Session session) {
|
||||
return g_sessions[static_cast<size_t>(session)];
|
||||
}
|
||||
|
||||
bool IsBackgroundUsable(const Api& api) {
|
||||
return api.set_power_efficiency != nullptr;
|
||||
}
|
||||
|
||||
void CloseLocked(SessionState& state) {
|
||||
if (state.handle != nullptr) {
|
||||
Resolve().close_session(state.handle);
|
||||
state.handle = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
AHintSession* CreateSessionFor(Session session, const std::vector<pid_t>& threads) {
|
||||
const Api& api = Resolve();
|
||||
const s64 target = session == Session::Render ? g_target_ns.load(std::memory_order_relaxed) : 0;
|
||||
|
||||
std::vector<s32> ids;
|
||||
ids.reserve(threads.size());
|
||||
for (const pid_t tid : threads) {
|
||||
ids.push_back(static_cast<s32>(tid));
|
||||
}
|
||||
|
||||
AHintSession* handle = api.create_session(api.manager, ids.data(), ids.size(), target);
|
||||
if (handle == nullptr && target == 0) {
|
||||
handle = api.create_session(api.manager, ids.data(), ids.size(), DEFAULT_TARGET.count());
|
||||
}
|
||||
if (handle == nullptr) {
|
||||
return nullptr;
|
||||
}
|
||||
if (session == Session::Background && api.set_power_efficiency != nullptr) {
|
||||
api.set_power_efficiency(handle, true);
|
||||
}
|
||||
return handle;
|
||||
}
|
||||
|
||||
bool SyncLocked(Session session, SessionState& state) {
|
||||
if (state.threads.empty()) {
|
||||
CloseLocked(state);
|
||||
return false;
|
||||
}
|
||||
|
||||
const Api& api = Resolve();
|
||||
if (state.handle != nullptr && api.set_threads != nullptr) {
|
||||
std::vector<pid_t> ids = state.threads;
|
||||
if (api.set_threads(state.handle, ids.data(), ids.size()) == 0) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
AHintSession* const replacement = CreateSessionFor(session, state.threads);
|
||||
if (replacement == nullptr) {
|
||||
if (state.handle == nullptr) {
|
||||
state.unsupported = true;
|
||||
}
|
||||
LOG_WARNING(Common, "Could not open a performance hint session for {} threads, falling back",
|
||||
state.threads.size());
|
||||
return false;
|
||||
}
|
||||
CloseLocked(state);
|
||||
state.handle = replacement;
|
||||
return true;
|
||||
}
|
||||
|
||||
} // Anonymous namespace
|
||||
|
||||
bool IsSessionSupported(Session session) {
|
||||
const Api& api = Resolve();
|
||||
if (!api.usable) {
|
||||
return false;
|
||||
}
|
||||
if (session == Session::Background && !IsBackgroundUsable(api)) {
|
||||
return false;
|
||||
}
|
||||
std::scoped_lock lock{g_mutex};
|
||||
return !StateOf(session).unsupported;
|
||||
}
|
||||
|
||||
bool AddCurrentThread(Session session) {
|
||||
if (!IsSessionSupported(session)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
const pid_t tid = gettid();
|
||||
std::scoped_lock lock{g_mutex};
|
||||
|
||||
for (size_t i = 0; i < g_sessions.size(); ++i) {
|
||||
SessionState& state = g_sessions[i];
|
||||
if (static_cast<size_t>(session) == i) {
|
||||
continue;
|
||||
}
|
||||
const auto it = std::find(state.threads.begin(), state.threads.end(), tid);
|
||||
if (it != state.threads.end()) {
|
||||
state.threads.erase(it);
|
||||
SyncLocked(static_cast<Session>(i), state);
|
||||
}
|
||||
}
|
||||
|
||||
SessionState& state = StateOf(session);
|
||||
const bool added =
|
||||
std::find(state.threads.begin(), state.threads.end(), tid) == state.threads.end();
|
||||
if (added) {
|
||||
state.threads.push_back(tid);
|
||||
}
|
||||
if (!SyncLocked(session, state)) {
|
||||
if (added) {
|
||||
std::erase(state.threads, tid);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void RemoveCurrentThread() {
|
||||
if (!Resolve().usable) {
|
||||
return;
|
||||
}
|
||||
const pid_t tid = gettid();
|
||||
std::scoped_lock lock{g_mutex};
|
||||
for (size_t i = 0; i < g_sessions.size(); ++i) {
|
||||
SessionState& state = g_sessions[i];
|
||||
if (std::erase(state.threads, tid) != 0) {
|
||||
SyncLocked(static_cast<Session>(i), state);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void SetTargetWorkDuration(std::chrono::nanoseconds target) {
|
||||
const Api& api = Resolve();
|
||||
if (!api.usable || target.count() <= 0) {
|
||||
return;
|
||||
}
|
||||
if (g_target_ns.exchange(target.count(), std::memory_order_relaxed) == target.count()) {
|
||||
return;
|
||||
}
|
||||
std::scoped_lock lock{g_mutex};
|
||||
SessionState& state = StateOf(Session::Render);
|
||||
if (state.handle != nullptr) {
|
||||
api.update_target(state.handle, target.count());
|
||||
}
|
||||
}
|
||||
|
||||
void ReportFrameInterval() {
|
||||
const Api& api = Resolve();
|
||||
if (!api.usable) {
|
||||
return;
|
||||
}
|
||||
|
||||
const auto now = std::chrono::steady_clock::now();
|
||||
const auto previous = t_last_frame;
|
||||
t_last_frame = now;
|
||||
if (previous.time_since_epoch().count() == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
s64 actual = std::chrono::duration_cast<std::chrono::nanoseconds>(now - previous).count();
|
||||
if (actual <= 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
const s64 ceiling = g_target_ns.load(std::memory_order_relaxed) * MAX_REPORTED_TARGETS;
|
||||
actual = (std::min)(actual, ceiling);
|
||||
|
||||
std::scoped_lock lock{g_mutex};
|
||||
SessionState& state = StateOf(Session::Render);
|
||||
if (state.handle != nullptr) {
|
||||
api.report_actual(state.handle, actual);
|
||||
}
|
||||
}
|
||||
|
||||
void Shutdown() {
|
||||
if (!Resolve().usable) {
|
||||
return;
|
||||
}
|
||||
std::scoped_lock lock{g_mutex};
|
||||
for (SessionState& state : g_sessions) {
|
||||
CloseLocked(state);
|
||||
state.threads.clear();
|
||||
state.unsupported = false;
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace Common::ADPF
|
||||
|
||||
#else
|
||||
|
||||
namespace Common::ADPF {
|
||||
|
||||
bool IsSessionSupported(Session) {
|
||||
return false;
|
||||
}
|
||||
|
||||
bool AddCurrentThread(Session) {
|
||||
return false;
|
||||
}
|
||||
|
||||
void RemoveCurrentThread() {}
|
||||
|
||||
void SetTargetWorkDuration(std::chrono::nanoseconds) {}
|
||||
|
||||
void ReportFrameInterval() {}
|
||||
|
||||
void Shutdown() {}
|
||||
|
||||
} // namespace Common::ADPF
|
||||
|
||||
#endif
|
||||
@@ -1,26 +0,0 @@
|
||||
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <chrono>
|
||||
|
||||
namespace Common::ADPF {
|
||||
|
||||
enum class Session {
|
||||
Render,
|
||||
Background,
|
||||
};
|
||||
|
||||
bool IsSessionSupported(Session session);
|
||||
|
||||
bool AddCurrentThread(Session session);
|
||||
void RemoveCurrentThread();
|
||||
|
||||
void SetTargetWorkDuration(std::chrono::nanoseconds target);
|
||||
|
||||
void ReportFrameInterval();
|
||||
|
||||
void Shutdown();
|
||||
|
||||
} // namespace Common::ADPF
|
||||
+280
-158
@@ -7,18 +7,25 @@
|
||||
#include <vector>
|
||||
|
||||
#include "common/assert.h"
|
||||
#include "common/bit_util.h"
|
||||
#include "common/fs/file.h"
|
||||
#include "common/fs/fs.h"
|
||||
#include "common/fs/fs_types.h"
|
||||
#ifdef __ANDROID__
|
||||
#include "common/fs/fs_android.h"
|
||||
#endif
|
||||
#include "common/logging.h"
|
||||
#include "common/literals.h"
|
||||
|
||||
#ifdef _WIN32
|
||||
#include <io.h>
|
||||
#include <share.h>
|
||||
#include <windows.h>
|
||||
#else
|
||||
#include <unistd.h>
|
||||
#include <sys/mman.h>
|
||||
#include <sys/stat.h>
|
||||
#include <fcntl.h>
|
||||
#endif
|
||||
|
||||
#ifdef _MSC_VER
|
||||
@@ -36,13 +43,13 @@ namespace {
|
||||
#ifdef _WIN32
|
||||
|
||||
/**
|
||||
* Converts the file access mode and file type enums to a file access mode wide string.
|
||||
*
|
||||
* @param mode File access mode
|
||||
* @param type File type
|
||||
*
|
||||
* @returns A pointer to a wide string representing the file access mode.
|
||||
*/
|
||||
* Converts the file access mode and file type enums to a file access mode wide string.
|
||||
*
|
||||
* @param mode File access mode
|
||||
* @param type File type
|
||||
*
|
||||
* @returns A pointer to a wide string representing the file access mode.
|
||||
*/
|
||||
[[nodiscard]] constexpr const wchar_t* AccessModeToWStr(FileAccessMode mode, FileType type) {
|
||||
switch (type) {
|
||||
case FileType::BinaryFile:
|
||||
@@ -79,12 +86,12 @@ namespace {
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts the file-share access flag enum to a Windows defined file-share access flag.
|
||||
*
|
||||
* @param flag File-share access flag
|
||||
*
|
||||
* @returns Windows defined file-share access flag.
|
||||
*/
|
||||
* Converts the file-share access flag enum to a Windows defined file-share access flag.
|
||||
*
|
||||
* @param flag File-share access flag
|
||||
*
|
||||
* @returns Windows defined file-share access flag.
|
||||
*/
|
||||
[[nodiscard]] constexpr int ToWindowsFileShareFlag(FileShareFlag flag) {
|
||||
switch (flag) {
|
||||
case FileShareFlag::ShareNone:
|
||||
@@ -102,13 +109,13 @@ namespace {
|
||||
#else
|
||||
|
||||
/**
|
||||
* Converts the file access mode and file type enums to a file access mode string.
|
||||
*
|
||||
* @param mode File access mode
|
||||
* @param type File type
|
||||
*
|
||||
* @returns A pointer to a string representing the file access mode.
|
||||
*/
|
||||
* Converts the file access mode and file type enums to a file access mode string.
|
||||
*
|
||||
* @param mode File access mode
|
||||
* @param type File type
|
||||
*
|
||||
* @returns A pointer to a string representing the file access mode.
|
||||
*/
|
||||
[[nodiscard]] constexpr const char* AccessModeToStr(FileAccessMode mode, FileType type) {
|
||||
switch (type) {
|
||||
case FileType::BinaryFile:
|
||||
@@ -147,12 +154,12 @@ namespace {
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Converts the seek origin enum to a seek origin integer.
|
||||
*
|
||||
* @param origin Seek origin
|
||||
*
|
||||
* @returns Seek origin integer.
|
||||
*/
|
||||
* Converts the seek origin enum to a seek origin integer.
|
||||
*
|
||||
* @param origin Seek origin
|
||||
*
|
||||
* @returns Seek origin integer.
|
||||
*/
|
||||
[[nodiscard]] constexpr int ToSeekOrigin(SeekOrigin origin) {
|
||||
switch (origin) {
|
||||
case SeekOrigin::SetOrigin:
|
||||
@@ -178,7 +185,7 @@ std::string ReadStringFromFile(const std::filesystem::path& path, FileType type)
|
||||
}
|
||||
|
||||
size_t WriteStringToFile(const std::filesystem::path& path, FileType type,
|
||||
std::string_view string) {
|
||||
std::string_view string) {
|
||||
if (Exists(path) && !IsFile(path)) {
|
||||
return 0;
|
||||
}
|
||||
@@ -189,7 +196,7 @@ size_t WriteStringToFile(const std::filesystem::path& path, FileType type,
|
||||
}
|
||||
|
||||
size_t AppendStringToFile(const std::filesystem::path& path, FileType type,
|
||||
std::string_view string) {
|
||||
std::string_view string) {
|
||||
if (Exists(path) && !IsFile(path)) {
|
||||
return 0;
|
||||
}
|
||||
@@ -244,69 +251,189 @@ FileType IOFile::GetType() const {
|
||||
return file_type;
|
||||
}
|
||||
|
||||
#if defined(__unix__)
|
||||
static int PlatformMapReadOnly(IOFile& io, const char* path) {
|
||||
io.mmap_fd = open(path, O_RDONLY);
|
||||
if (io.mmap_fd > 0) {
|
||||
struct stat st;
|
||||
fstat(io.mmap_fd, &st);
|
||||
io.mmap_size = st.st_size;
|
||||
|
||||
int map_flags = MAP_PRIVATE;
|
||||
#ifdef MAP_PREFAULT_READ
|
||||
// Prefaults reads so the final resulting pagetable from this big stupid mmap()
|
||||
// isn't comically lazily loaded, we just coalesce everything in-place for our
|
||||
// lovely mmap flags; if we didn't prefault the reads the page table will be
|
||||
// constructed in-place (i.e on a read-by-read basis) causing lovely soft-faults
|
||||
// which would nuke any performance gains.
|
||||
//
|
||||
// This of course incurs a cost in the initial mmap(2) call, but that is fine.
|
||||
map_flags |= MAP_PREFAULT_READ;
|
||||
#endif
|
||||
#ifdef MAP_NOSYNC
|
||||
// This causes physical media to not be synched to our file/memory
|
||||
// This means that if the read-only file is written to, we won't see changes
|
||||
// or we may see changes which are just funnily scattered, in any case
|
||||
// this presumes the files won't be changed during execution
|
||||
//
|
||||
// Do not ever use this on write files (if we ever support that); this will create
|
||||
// a fun amount of fragmentation on the disk.
|
||||
map_flags |= MAP_NOSYNC;
|
||||
#endif
|
||||
#if defined(NDEBUG) && defined(MAP_NOCORE)
|
||||
map_flags |= MAP_NOCORE;
|
||||
#endif
|
||||
#ifdef MAP_HUGE_2MB
|
||||
map_flags |= MAP_HUGE_2MB; //2mb pages
|
||||
#elif defined(MAP_ALIGNED)
|
||||
// File must be big enough that it's worth to super align. We can't just super-align every
|
||||
// file otherwise we will run out of alignments for actually important files :)
|
||||
// System doesn't guarantee a super alignment, but if it's available it will delete
|
||||
// about 3 layers(?) of the TLB tree for each read/write.
|
||||
// Again the cost of faults may make this negligible gains, but hey, we gotta work
|
||||
// what we gotta work with.
|
||||
map_flags |= MAP_ALIGNED(21); //2^21 = 2mb use 2MB pages
|
||||
#endif
|
||||
io.mmap_base = (u8*)mmap(nullptr, io.mmap_size, PROT_READ, map_flags, io.mmap_fd, 0);
|
||||
if (io.mmap_base == MAP_FAILED) {
|
||||
close(io.mmap_fd);
|
||||
io.mmap_fd = -1;
|
||||
} else {
|
||||
using namespace Common::Literals;
|
||||
// For small files it is acceptable to use a full readahead
|
||||
// See https://github.com/torvalds/linux/blob/e80d033851b3bc94c3d254ac66660ddd0a49d72c/include/linux/pagemap.h#L1392
|
||||
if (u64(st.st_size) >= 256_MiB) {
|
||||
posix_madvise(io.mmap_base, io.mmap_size, POSIX_MADV_RANDOM);
|
||||
} else {
|
||||
posix_madvise(io.mmap_base, io.mmap_size, POSIX_MADV_SEQUENTIAL);
|
||||
}
|
||||
}
|
||||
}
|
||||
return io.mmap_fd;
|
||||
}
|
||||
static void PlatformUnmap(IOFile& io) {
|
||||
if (io.mmap_fd != -1) {
|
||||
munmap(io.mmap_base, io.mmap_size);
|
||||
close(io.mmap_fd);
|
||||
io.mmap_fd = -1;
|
||||
}
|
||||
}
|
||||
#elif defined(__APPLE__)
|
||||
// NO IMPLEMENTATION YET
|
||||
#else
|
||||
static int PlatformMapReadOnly(IOFile& io, const wchar_t* path) {
|
||||
io.file_handle = CreateFileW(path, GENERIC_READ, FILE_SHARE_READ, nullptr, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN, nullptr);
|
||||
if (HANDLE(io.file_handle) != INVALID_HANDLE_VALUE) {
|
||||
io.mapping_handle = CreateFileMappingW(HANDLE(io.file_handle), nullptr, PAGE_READONLY, 0, 0, nullptr);
|
||||
if (io.mapping_handle) {
|
||||
io.mmap_base = (u8*)MapViewOfFile(HANDLE(io.mapping_handle), FILE_MAP_READ, 0, 0, 0);
|
||||
if (io.mmap_base) {
|
||||
_LARGE_INTEGER pvalue;
|
||||
GetFileSizeEx(io.file_handle, &pvalue);
|
||||
io.mmap_size = uint32_t(pvalue.QuadPart);
|
||||
} else {
|
||||
CloseHandle(io.mapping_handle);
|
||||
CloseHandle(io.file_handle);
|
||||
return -1;
|
||||
}
|
||||
} else {
|
||||
CloseHandle(io.file_handle);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
static void PlatformUnmap(IOFile& io) {
|
||||
if(io.mapping_handle) {
|
||||
if(io.mmap_base)
|
||||
UnmapViewOfFile(HANDLE(io.mmap_base));
|
||||
CloseHandle(HANDLE(io.mapping_handle));
|
||||
}
|
||||
if(io.file_handle != INVALID_HANDLE_VALUE)
|
||||
CloseHandle(HANDLE(io.file_handle));
|
||||
}
|
||||
#endif
|
||||
|
||||
void IOFile::Open(const fs::path& path, FileAccessMode mode, FileType type, FileShareFlag flag) {
|
||||
Close();
|
||||
|
||||
file_path = path;
|
||||
file_access_mode = mode;
|
||||
file_type = type;
|
||||
|
||||
errno = 0;
|
||||
|
||||
#ifdef _WIN32
|
||||
if (flag != FileShareFlag::ShareNone) {
|
||||
file = _wfsopen(path.c_str(), AccessModeToWStr(mode, type), ToWindowsFileShareFlag(flag));
|
||||
} else {
|
||||
_wfopen_s(&file, path.c_str(), AccessModeToWStr(mode, type));
|
||||
// TODO: this probably can use better logic but oh well I'm not a windowser
|
||||
file_handle = nullptr;
|
||||
if (type == FileType::BinaryFile && mode == FileAccessMode::Read) {
|
||||
if (PlatformMapReadOnly(*this, path.c_str()) == -1) {
|
||||
LOG_ERROR(Common_Filesystem, "Error mmap'ing file"); //: {}", path.c_str());
|
||||
}
|
||||
}
|
||||
if (file_handle == nullptr) {
|
||||
if (flag != FileShareFlag::ShareNone) {
|
||||
file = _wfsopen(path.c_str(), AccessModeToWStr(mode, type), ToWindowsFileShareFlag(flag));
|
||||
} else {
|
||||
_wfopen_s(&file, path.c_str(), AccessModeToWStr(mode, type));
|
||||
}
|
||||
}
|
||||
#elif __ANDROID__
|
||||
if (Android::IsContentUri(path)) {
|
||||
ASSERT_MSG(mode == FileAccessMode::Read, "Content URI file access is for read-only!");
|
||||
const auto fd = Android::OpenContentUri(path, Android::OpenMode::Read);
|
||||
if (fd != -1) {
|
||||
file = fdopen(fd, "r");
|
||||
const auto error_num = errno;
|
||||
if (error_num != 0 && file == nullptr) {
|
||||
LOG_ERROR(Common_Filesystem, "Error opening file: {}, error: {}", path.c_str(),
|
||||
strerror(error_num));
|
||||
if (PlatformMapReadOnly(*this, path.c_str()) == -1) {
|
||||
LOG_ERROR(Common_Filesystem, "Error mmap'ing file: {}", path.c_str());
|
||||
int const fd = Android::OpenContentUri(path, Android::OpenMode::Read);
|
||||
if (fd != -1) {
|
||||
file = fdopen(fd, "r");
|
||||
if (errno != 0 && file == nullptr)
|
||||
LOG_ERROR(Common_Filesystem, "Error opening file: {}, error: {}", path.c_str(), strerror(errno));
|
||||
} else {
|
||||
LOG_ERROR(Common_Filesystem, "Error opening file: {}", path.c_str());
|
||||
}
|
||||
} else {
|
||||
LOG_ERROR(Common_Filesystem, "Error opening file: {}", path.c_str());
|
||||
}
|
||||
} else {
|
||||
file = std::fopen(path.c_str(), AccessModeToStr(mode, type));
|
||||
}
|
||||
#elif defined(__HAIKU__) || defined(__managarm__) || defined(__OPENORBIS__) || defined(__APPLE__)
|
||||
file = std::fopen(path.c_str(), AccessModeToStr(mode, type));
|
||||
#elif defined(__unix__)
|
||||
if (type == FileType::BinaryFile && mode == FileAccessMode::Read) {
|
||||
if (PlatformMapReadOnly(*this, path.c_str()) == -1) {
|
||||
LOG_ERROR(Common_Filesystem, "Error mmap'ing file: {}", path.c_str());
|
||||
}
|
||||
}
|
||||
if (mmap_fd == -1) {
|
||||
file = std::fopen(path.c_str(), AccessModeToStr(mode, type)); // mmap(2) failed or simply we can't use it
|
||||
}
|
||||
#else
|
||||
// Some other fancy OS (ahem fucking Darwin/Mac OSX)
|
||||
file = std::fopen(path.c_str(), AccessModeToStr(mode, type));
|
||||
#endif
|
||||
|
||||
if (!IsOpen()) {
|
||||
const auto ec = std::error_code{errno, std::generic_category()};
|
||||
LOG_ERROR(Common_Filesystem, "Failed to open the file at path={}, ec_message={}",
|
||||
PathToUTF8String(file_path), ec.message());
|
||||
PathToUTF8String(file_path), ec.message());
|
||||
}
|
||||
}
|
||||
|
||||
void IOFile::Close() {
|
||||
if (!IsOpen()) {
|
||||
return;
|
||||
#if defined(__APPLE__)
|
||||
// NO IMPLEMENTATION YET
|
||||
#else
|
||||
PlatformUnmap(*this);
|
||||
#endif
|
||||
if (file) {
|
||||
errno = 0;
|
||||
const auto close_result = std::fclose(file) == 0;
|
||||
if (!close_result) {
|
||||
const auto ec = std::error_code{errno, std::generic_category()};
|
||||
LOG_ERROR(Common_Filesystem, "Failed to close the file at path={}, ec_message={}",
|
||||
PathToUTF8String(file_path), ec.message());
|
||||
}
|
||||
file = nullptr;
|
||||
}
|
||||
|
||||
errno = 0;
|
||||
|
||||
const auto close_result = std::fclose(file) == 0;
|
||||
|
||||
if (!close_result) {
|
||||
const auto ec = std::error_code{errno, std::generic_category()};
|
||||
LOG_ERROR(Common_Filesystem, "Failed to close the file at path={}, ec_message={}",
|
||||
PathToUTF8String(file_path), ec.message());
|
||||
}
|
||||
|
||||
file = nullptr;
|
||||
}
|
||||
|
||||
bool IOFile::IsOpen() const {
|
||||
return file != nullptr;
|
||||
return file != nullptr || IsMappedFile();
|
||||
}
|
||||
|
||||
std::string IOFile::ReadString(size_t length) const {
|
||||
@@ -323,137 +450,132 @@ size_t IOFile::WriteString(std::span<const char> string) const {
|
||||
}
|
||||
|
||||
bool IOFile::Flush() const {
|
||||
if (!IsOpen()) {
|
||||
return false;
|
||||
ASSERT(!IsMappedFile());
|
||||
if (file) {
|
||||
errno = 0;
|
||||
auto const flush_result = std::fflush(file) == 0;
|
||||
if (!flush_result) {
|
||||
const auto ec = std::error_code{errno, std::generic_category()};
|
||||
LOG_ERROR(Common_Filesystem, "Failed to flush the file at path={}, ec_message={}",
|
||||
PathToUTF8String(file_path), ec.message());
|
||||
}
|
||||
return flush_result;
|
||||
}
|
||||
|
||||
errno = 0;
|
||||
|
||||
#ifdef _WIN32
|
||||
const auto flush_result = std::fflush(file) == 0;
|
||||
#else
|
||||
const auto flush_result = std::fflush(file) == 0;
|
||||
#endif
|
||||
|
||||
if (!flush_result) {
|
||||
const auto ec = std::error_code{errno, std::generic_category()};
|
||||
LOG_ERROR(Common_Filesystem, "Failed to flush the file at path={}, ec_message={}",
|
||||
PathToUTF8String(file_path), ec.message());
|
||||
}
|
||||
|
||||
return flush_result;
|
||||
return false;
|
||||
}
|
||||
|
||||
bool IOFile::Commit() const {
|
||||
if (!IsOpen()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
errno = 0;
|
||||
|
||||
ASSERT(!IsMappedFile());
|
||||
if (file) {
|
||||
errno = 0;
|
||||
#ifdef _WIN32
|
||||
const auto commit_result = std::fflush(file) == 0 && _commit(fileno(file)) == 0;
|
||||
const auto commit_result = std::fflush(file) == 0 && _commit(fileno(file)) == 0;
|
||||
#else
|
||||
const auto commit_result = std::fflush(file) == 0 && fsync(fileno(file)) == 0;
|
||||
const auto commit_result = std::fflush(file) == 0 && fsync(fileno(file)) == 0;
|
||||
#endif
|
||||
|
||||
if (!commit_result) {
|
||||
const auto ec = std::error_code{errno, std::generic_category()};
|
||||
LOG_ERROR(Common_Filesystem, "Failed to commit the file at path={}, ec_message={}",
|
||||
PathToUTF8String(file_path), ec.message());
|
||||
if (!commit_result) {
|
||||
const auto ec = std::error_code{errno, std::generic_category()};
|
||||
LOG_ERROR(Common_Filesystem, "Failed to commit the file at path={}, ec_message={}",
|
||||
PathToUTF8String(file_path), ec.message());
|
||||
}
|
||||
return commit_result;
|
||||
}
|
||||
|
||||
return commit_result;
|
||||
return false;
|
||||
}
|
||||
|
||||
bool IOFile::SetSize(u64 size) const {
|
||||
if (!IsOpen()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
errno = 0;
|
||||
|
||||
ASSERT(!IsMappedFile());
|
||||
if (file) {
|
||||
errno = 0;
|
||||
#ifdef _WIN32
|
||||
const auto set_size_result = _chsize_s(fileno(file), static_cast<s64>(size)) == 0;
|
||||
const auto set_size_result = _chsize_s(fileno(file), s64(size)) == 0;
|
||||
#else
|
||||
const auto set_size_result = ftruncate(fileno(file), static_cast<s64>(size)) == 0;
|
||||
const auto set_size_result = ftruncate(fileno(file), s64(size)) == 0;
|
||||
#endif
|
||||
|
||||
if (!set_size_result) {
|
||||
const auto ec = std::error_code{errno, std::generic_category()};
|
||||
LOG_ERROR(Common_Filesystem, "Failed to resize the file at path={}, size={}, ec_message={}",
|
||||
PathToUTF8String(file_path), size, ec.message());
|
||||
if (!set_size_result) {
|
||||
const auto ec = std::error_code{errno, std::generic_category()};
|
||||
LOG_ERROR(Common_Filesystem, "Failed to resize the file at path={}, size={}, ec_message={}",
|
||||
PathToUTF8String(file_path), size, ec.message());
|
||||
}
|
||||
return set_size_result;
|
||||
}
|
||||
|
||||
return set_size_result;
|
||||
return false;
|
||||
}
|
||||
|
||||
u64 IOFile::GetSize() const {
|
||||
if (!IsOpen()) {
|
||||
return 0;
|
||||
}
|
||||
if (IsMappedFile())
|
||||
return mmap_size;
|
||||
if (file) {
|
||||
// Flush any unwritten buffered data into the file prior to retrieving the file mmap_size.
|
||||
std::fflush(file);
|
||||
#if __ANDROID__
|
||||
u64 file_size = 0;
|
||||
if (Android::IsContentUri(file_path)) {
|
||||
file_size = Android::GetSize(file_path);
|
||||
} else {
|
||||
std::error_code ec;
|
||||
|
||||
// Flush any unwritten buffered data into the file prior to retrieving the file size.
|
||||
std::fflush(file);
|
||||
file_size = fs::file_size(file_path, ec);
|
||||
|
||||
#ifdef __ANDROID__
|
||||
u64 file_size = 0;
|
||||
if (Android::IsContentUri(file_path)) {
|
||||
file_size = Android::GetSize(file_path);
|
||||
} else {
|
||||
if (ec) {
|
||||
LOG_ERROR(Common_Filesystem, "Failed to retrieve the file mmap_size of path={}, ec_message={}",
|
||||
PathToUTF8String(file_path), ec.message());
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
#else
|
||||
std::error_code ec;
|
||||
|
||||
file_size = fs::file_size(file_path, ec);
|
||||
|
||||
auto const file_size = fs::file_size(file_path, ec);
|
||||
if (ec) {
|
||||
LOG_ERROR(Common_Filesystem,
|
||||
"Failed to retrieve the file size of path={}, ec_message={}",
|
||||
PathToUTF8String(file_path), ec.message());
|
||||
LOG_ERROR(Common_Filesystem, "Failed to retrieve the file mmap_size of path={}, ec_message={}",
|
||||
PathToUTF8String(file_path), ec.message());
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
#else
|
||||
std::error_code ec;
|
||||
|
||||
const auto file_size = fs::file_size(file_path, ec);
|
||||
|
||||
if (ec) {
|
||||
LOG_ERROR(Common_Filesystem, "Failed to retrieve the file size of path={}, ec_message={}",
|
||||
PathToUTF8String(file_path), ec.message());
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
return file_size;
|
||||
return file_size;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool IOFile::Seek(s64 offset, SeekOrigin origin) const {
|
||||
if (!IsOpen()) {
|
||||
return false;
|
||||
if (IsMappedFile()) {
|
||||
// fuck you to whoever made this method const
|
||||
switch (origin) {
|
||||
case SeekOrigin::SetOrigin:
|
||||
mmap_offset = s64(offset);
|
||||
break;
|
||||
case SeekOrigin::CurrentPosition:
|
||||
mmap_offset += s64(offset);
|
||||
break;
|
||||
case SeekOrigin::End:
|
||||
mmap_offset = s64(mmap_size) + s64(offset);
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
errno = 0;
|
||||
|
||||
const auto seek_result = fseeko(file, offset, ToSeekOrigin(origin)) == 0;
|
||||
|
||||
if (!seek_result) {
|
||||
const auto ec = std::error_code{errno, std::generic_category()};
|
||||
LOG_ERROR(Common_Filesystem,
|
||||
"Failed to seek the file at path={}, offset={}, origin={}, ec_message={}",
|
||||
PathToUTF8String(file_path), offset, origin, ec.message());
|
||||
if (file) {
|
||||
errno = 0;
|
||||
const auto seek_result = fseeko(file, offset, ToSeekOrigin(origin)) == 0;
|
||||
if (!seek_result) {
|
||||
const auto ec = std::error_code{errno, std::generic_category()};
|
||||
LOG_ERROR(Common_Filesystem, "Failed to seek the file at path={}, offset={}, origin={}, ec_message={}",
|
||||
PathToUTF8String(file_path), offset, origin, ec.message());
|
||||
}
|
||||
return seek_result;
|
||||
}
|
||||
|
||||
return seek_result;
|
||||
return false;
|
||||
}
|
||||
|
||||
s64 IOFile::Tell() const {
|
||||
if (!IsOpen()) {
|
||||
return 0;
|
||||
if (IsMappedFile()) {
|
||||
errno = 0;
|
||||
return s64(mmap_offset);
|
||||
}
|
||||
|
||||
errno = 0;
|
||||
|
||||
return ftello(file);
|
||||
if (file) {
|
||||
errno = 0;
|
||||
return ftello(file);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
} // namespace Common::FS
|
||||
|
||||
+255
-247
@@ -7,6 +7,7 @@
|
||||
#pragma once
|
||||
|
||||
#include <cstdio>
|
||||
#include <cstring>
|
||||
#include <filesystem>
|
||||
#include <span>
|
||||
#include <type_traits>
|
||||
@@ -24,12 +25,12 @@ enum class SeekOrigin {
|
||||
};
|
||||
|
||||
/**
|
||||
* Opens a file stream at path with the specified open mode.
|
||||
*
|
||||
* @param file_stream Reference to file stream
|
||||
* @param path Filesystem path
|
||||
* @param open_mode File stream open mode
|
||||
*/
|
||||
* Opens a file stream at path with the specified open mode.
|
||||
*
|
||||
* @param file_stream Reference to file stream
|
||||
* @param path Filesystem path
|
||||
* @param open_mode File stream open mode
|
||||
*/
|
||||
template <typename FileStream>
|
||||
void OpenFileStream(FileStream& file_stream, const std::filesystem::path& path,
|
||||
std::ios_base::openmode open_mode) {
|
||||
@@ -48,14 +49,14 @@ void OpenFileStream(FileStream& file_stream, const Path& path, std::ios_base::op
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Reads an entire file at path and returns a string of the contents read from the file.
|
||||
* If the filesystem object at path is not a regular file, this function returns an empty string.
|
||||
*
|
||||
* @param path Filesystem path
|
||||
* @param type File type
|
||||
*
|
||||
* @returns A string of the contents read from the file.
|
||||
*/
|
||||
* Reads an entire file at path and returns a string of the contents read from the file.
|
||||
* If the filesystem object at path is not a regular file, this function returns an empty string.
|
||||
*
|
||||
* @param path Filesystem path
|
||||
* @param type File type
|
||||
*
|
||||
* @returns A string of the contents read from the file.
|
||||
*/
|
||||
[[nodiscard]] std::string ReadStringFromFile(const std::filesystem::path& path, FileType type);
|
||||
|
||||
#ifdef _WIN32
|
||||
@@ -70,18 +71,18 @@ template <typename Path>
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Writes a string to a file at path and returns the number of characters successfully written.
|
||||
* If a file already exists at path, its contents will be erased.
|
||||
* If a file does not exist at path, it creates and opens a new empty file for writing.
|
||||
* If the filesystem object at path exists and is not a regular file, this function returns 0.
|
||||
*
|
||||
* @param path Filesystem path
|
||||
* @param type File type
|
||||
*
|
||||
* @returns Number of characters successfully written.
|
||||
*/
|
||||
* Writes a string to a file at path and returns the number of characters successfully written.
|
||||
* If a file already exists at path, its contents will be erased.
|
||||
* If a file does not exist at path, it creates and opens a new empty file for writing.
|
||||
* If the filesystem object at path exists and is not a regular file, this function returns 0.
|
||||
*
|
||||
* @param path Filesystem path
|
||||
* @param type File type
|
||||
*
|
||||
* @returns Number of characters successfully written.
|
||||
*/
|
||||
[[nodiscard]] size_t WriteStringToFile(const std::filesystem::path& path, FileType type,
|
||||
std::string_view string);
|
||||
std::string_view string);
|
||||
|
||||
#ifdef _WIN32
|
||||
template <typename Path>
|
||||
@@ -95,15 +96,15 @@ template <typename Path>
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Appends a string to a file at path and returns the number of characters successfully written.
|
||||
* If a file does not exist at path, it creates and opens a new empty file for appending.
|
||||
* If the filesystem object at path exists and is not a regular file, this function returns 0.
|
||||
*
|
||||
* @param path Filesystem path
|
||||
* @param type File type
|
||||
*
|
||||
* @returns Number of characters successfully written.
|
||||
*/
|
||||
* Appends a string to a file at path and returns the number of characters successfully written.
|
||||
* If a file does not exist at path, it creates and opens a new empty file for appending.
|
||||
* If the filesystem object at path exists and is not a regular file, this function returns 0.
|
||||
*
|
||||
* @param path Filesystem path
|
||||
* @param type File type
|
||||
*
|
||||
* @returns Number of characters successfully written.
|
||||
*/
|
||||
[[nodiscard]] size_t AppendStringToFile(const std::filesystem::path& path, FileType type,
|
||||
std::string_view string);
|
||||
|
||||
@@ -131,14 +132,14 @@ public:
|
||||
FileShareFlag flag = FileShareFlag::ShareReadOnly);
|
||||
|
||||
/**
|
||||
* An IOFile is a lightweight wrapper on C Library file operations.
|
||||
* Automatically closes an open file on the destruction of an IOFile object.
|
||||
*
|
||||
* @param path Filesystem path
|
||||
* @param mode File access mode
|
||||
* @param type File type, default is BinaryFile. Use TextFile to open the file as a text file
|
||||
* @param flag (Windows only) File-share access flag, default is ShareReadOnly
|
||||
*/
|
||||
* An IOFile is a lightweight wrapper on C Library file operations.
|
||||
* Automatically closes an open file on the destruction of an IOFile object.
|
||||
*
|
||||
* @param path Filesystem path
|
||||
* @param mode File access mode
|
||||
* @param type File type, default is BinaryFile. Use TextFile to open the file as a text file
|
||||
* @param flag (Windows only) File-share access flag, default is ShareReadOnly
|
||||
*/
|
||||
explicit IOFile(const std::filesystem::path& path, FileAccessMode mode,
|
||||
FileType type = FileType::BinaryFile,
|
||||
FileShareFlag flag = FileShareFlag::ShareReadOnly);
|
||||
@@ -152,84 +153,70 @@ public:
|
||||
IOFile& operator=(IOFile&& other) noexcept;
|
||||
|
||||
/**
|
||||
* Gets the path of the file.
|
||||
*
|
||||
* @returns The path of the file.
|
||||
*/
|
||||
* Gets the path of the file.
|
||||
*
|
||||
* @returns The path of the file.
|
||||
*/
|
||||
[[nodiscard]] std::filesystem::path GetPath() const;
|
||||
|
||||
/**
|
||||
* Gets the access mode of the file.
|
||||
*
|
||||
* @returns The access mode of the file.
|
||||
*/
|
||||
* Gets the access mode of the file.
|
||||
*
|
||||
* @returns The access mode of the file.
|
||||
*/
|
||||
[[nodiscard]] FileAccessMode GetAccessMode() const;
|
||||
|
||||
/**
|
||||
* Gets the type of the file.
|
||||
*
|
||||
* @returns The type of the file.
|
||||
*/
|
||||
* Gets the type of the file.
|
||||
*
|
||||
* @returns The type of the file.
|
||||
*/
|
||||
[[nodiscard]] FileType GetType() const;
|
||||
|
||||
/**
|
||||
* Opens a file at path with the specified file access mode.
|
||||
* This function behaves differently depending on the FileAccessMode.
|
||||
* These behaviors are documented in each enum value of FileAccessMode.
|
||||
*
|
||||
* @param path Filesystem path
|
||||
* @param mode File access mode
|
||||
* @param type File type, default is BinaryFile. Use TextFile to open the file as a text file
|
||||
* @param flag (Windows only) File-share access flag, default is ShareReadOnly
|
||||
*/
|
||||
* Opens a file at path with the specified file access mode.
|
||||
* This function behaves differently depending on the FileAccessMode.
|
||||
* These behaviors are documented in each enum value of FileAccessMode.
|
||||
*
|
||||
* @param path Filesystem path
|
||||
* @param mode File access mode
|
||||
* @param type File type, default is BinaryFile. Use TextFile to open the file as a text file
|
||||
* @param flag (Windows only) File-share access flag, default is ShareReadOnly
|
||||
*/
|
||||
void Open(const std::filesystem::path& path, FileAccessMode mode,
|
||||
FileType type = FileType::BinaryFile,
|
||||
FileShareFlag flag = FileShareFlag::ShareReadOnly);
|
||||
|
||||
// #ifdef _WIN32
|
||||
// template <typename Path>
|
||||
// void Open(const Path& path, FileAccessMode mode, FileType type = FileType::BinaryFile,
|
||||
// FileShareFlag flag = FileShareFlag::ShareReadOnly) {
|
||||
// using ValueType = typename Path::value_type;
|
||||
// if constexpr (IsChar<ValueType>) {
|
||||
// Open(ToU8String(path), mode, type, flag);
|
||||
// } else {
|
||||
// Open(std::filesystem::path{path}, mode, type, flag);
|
||||
// }
|
||||
// }
|
||||
// #endif
|
||||
FileType type = FileType::BinaryFile,
|
||||
FileShareFlag flag = FileShareFlag::ShareReadOnly);
|
||||
|
||||
/// Closes the file if it is opened.
|
||||
void Close();
|
||||
|
||||
/**
|
||||
* Checks whether the file is open.
|
||||
* Use this to check whether the calls to Open() or Close() succeeded.
|
||||
*
|
||||
* @returns True if the file is open, false otherwise.
|
||||
*/
|
||||
* Checks whether the file is open.
|
||||
* Use this to check whether the calls to Open() or Close() succeeded.
|
||||
*
|
||||
* @returns True if the file is open, false otherwise.
|
||||
*/
|
||||
[[nodiscard]] bool IsOpen() const;
|
||||
|
||||
/**
|
||||
* Helper function which deduces the value type of a contiguous STL container used in ReadSpan.
|
||||
* If T is not a contiguous container as defined by the concept IsContiguousContainer, this
|
||||
* calls ReadObject and T must be a trivially copyable object.
|
||||
*
|
||||
* See ReadSpan for more details if T is a contiguous container.
|
||||
* See ReadObject for more details if T is a trivially copyable object.
|
||||
*
|
||||
* @tparam T Contiguous container or trivially copyable object
|
||||
*
|
||||
* @param data Container of T::value_type data or reference to object
|
||||
*
|
||||
* @returns Count of T::value_type data or objects successfully read.
|
||||
*/
|
||||
* Helper function which deduces the value type of a contiguous STL container used in ReadSpan.
|
||||
* If T is not a contiguous container as defined by the concept IsContiguousContainer, this
|
||||
* calls ReadObject and T must be a trivially copyable object.
|
||||
*
|
||||
* See ReadSpan for more details if T is a contiguous container.
|
||||
* See ReadObject for more details if T is a trivially copyable object.
|
||||
*
|
||||
* @tparam T Contiguous container or trivially copyable object
|
||||
*
|
||||
* @param data Container of T::value_type data or reference to object
|
||||
*
|
||||
* @returns Count of T::value_type data or objects successfully read.
|
||||
*/
|
||||
template <typename T>
|
||||
[[nodiscard]] size_t Read(T& data) const {
|
||||
if constexpr (IsContiguousContainer<T>) {
|
||||
using ContiguousType = typename T::value_type;
|
||||
static_assert(std::is_trivially_copyable_v<ContiguousType>,
|
||||
"Data type must be trivially copyable.");
|
||||
static_assert(std::is_trivially_copyable_v<ContiguousType>, "Data type must be trivially copyable.");
|
||||
return ReadSpan<ContiguousType>(data);
|
||||
} else {
|
||||
return ReadObject(data) ? 1 : 0;
|
||||
@@ -237,25 +224,24 @@ public:
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper function which deduces the value type of a contiguous STL container used in WriteSpan.
|
||||
* If T is not a contiguous STL container as defined by the concept IsContiguousContainer, this
|
||||
* calls WriteObject and T must be a trivially copyable object.
|
||||
*
|
||||
* See WriteSpan for more details if T is a contiguous container.
|
||||
* See WriteObject for more details if T is a trivially copyable object.
|
||||
*
|
||||
* @tparam T Contiguous container or trivially copyable object
|
||||
*
|
||||
* @param data Container of T::value_type data or const reference to object
|
||||
*
|
||||
* @returns Count of T::value_type data or objects successfully written.
|
||||
*/
|
||||
* Helper function which deduces the value type of a contiguous STL container used in WriteSpan.
|
||||
* If T is not a contiguous STL container as defined by the concept IsContiguousContainer, this
|
||||
* calls WriteObject and T must be a trivially copyable object.
|
||||
*
|
||||
* See WriteSpan for more details if T is a contiguous container.
|
||||
* See WriteObject for more details if T is a trivially copyable object.
|
||||
*
|
||||
* @tparam T Contiguous container or trivially copyable object
|
||||
*
|
||||
* @param data Container of T::value_type data or const reference to object
|
||||
*
|
||||
* @returns Count of T::value_type data or objects successfully written.
|
||||
*/
|
||||
template <typename T>
|
||||
[[nodiscard]] size_t Write(const T& data) const {
|
||||
if constexpr (IsContiguousContainer<T>) {
|
||||
using ContiguousType = typename T::value_type;
|
||||
static_assert(std::is_trivially_copyable_v<ContiguousType>,
|
||||
"Data type must be trivially copyable.");
|
||||
static_assert(std::is_trivially_copyable_v<ContiguousType>, "Data type must be trivially copyable.");
|
||||
return WriteSpan<ContiguousType>(data);
|
||||
} else {
|
||||
static_assert(std::is_trivially_copyable_v<T>, "Data type must be trivially copyable.");
|
||||
@@ -264,197 +250,219 @@ public:
|
||||
}
|
||||
|
||||
/**
|
||||
* Reads a span of T data from a file sequentially.
|
||||
* This function reads from the current position of the file pointer and
|
||||
* advances it by the (count of T * sizeof(T)) bytes successfully read.
|
||||
*
|
||||
* Failures occur when:
|
||||
* - The file is not open
|
||||
* - The opened file lacks read permissions
|
||||
* - Attempting to read beyond the end-of-file
|
||||
*
|
||||
* @tparam T Data type
|
||||
*
|
||||
* @param data Span of T data
|
||||
*
|
||||
* @returns Count of T data successfully read.
|
||||
*/
|
||||
* Reads a span of T data from a file sequentially.
|
||||
* This function reads from the current position of the file pointer and
|
||||
* advances it by the (count of T * sizeof(T)) bytes successfully read.
|
||||
*
|
||||
* Failures occur when:
|
||||
* - The file is not open
|
||||
* - The opened file lacks read permissions
|
||||
* - Attempting to read beyond the end-of-file
|
||||
*
|
||||
* @tparam T Data type
|
||||
*
|
||||
* @param data Span of T data
|
||||
*
|
||||
* @returns Count of T data successfully read.
|
||||
*/
|
||||
template <typename T>
|
||||
requires std::is_trivially_copyable_v<T>
|
||||
[[nodiscard]] size_t ReadSpan(std::span<T> data) const {
|
||||
if (!IsOpen()) {
|
||||
return 0;
|
||||
if (IsMappedFile()) {
|
||||
std::memcpy(data.data(), mmap_base + mmap_offset, sizeof(T) * data.size());
|
||||
return data.size();
|
||||
}
|
||||
return std::fread(data.data(), sizeof(T), data.size(), file);
|
||||
return IsOpen() ? std::fread(data.data(), sizeof(T), data.size(), file) : 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Writes a span of T data to a file sequentially.
|
||||
* This function writes from the current position of the file pointer and
|
||||
* advances it by the (count of T * sizeof(T)) bytes successfully written.
|
||||
*
|
||||
* Failures occur when:
|
||||
* - The file is not open
|
||||
* - The opened file lacks write permissions
|
||||
*
|
||||
* @tparam T Data type
|
||||
*
|
||||
* @param data Span of T data
|
||||
*
|
||||
* @returns Count of T data successfully written.
|
||||
*/
|
||||
* Writes a span of T data to a file sequentially.
|
||||
* This function writes from the current position of the file pointer and
|
||||
* advances it by the (count of T * sizeof(T)) bytes successfully written.
|
||||
*
|
||||
* Failures occur when:
|
||||
* - The file is not open
|
||||
* - The opened file lacks write permissions
|
||||
*
|
||||
* @tparam T Data type
|
||||
*
|
||||
* @param data Span of T data
|
||||
*
|
||||
* @returns Count of T data successfully written.
|
||||
*/
|
||||
template <typename T>
|
||||
[[nodiscard]] size_t WriteSpan(std::span<const T> data) const {
|
||||
static_assert(std::is_trivially_copyable_v<T>, "Data type must be trivially copyable.");
|
||||
|
||||
if (!IsOpen()) {
|
||||
return 0;
|
||||
if (IsMappedFile()) {
|
||||
std::memcpy(mmap_base + mmap_offset, data.data(), sizeof(T) * data.size());
|
||||
return data.size();
|
||||
}
|
||||
|
||||
return std::fwrite(data.data(), sizeof(T), data.size(), file);
|
||||
return IsOpen() ? std::fwrite(data.data(), sizeof(T), data.size(), file) : 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Reads a T object from a file sequentially.
|
||||
* This function reads from the current position of the file pointer and
|
||||
* advances it by the sizeof(T) bytes successfully read.
|
||||
*
|
||||
* Failures occur when:
|
||||
* - The file is not open
|
||||
* - The opened file lacks read permissions
|
||||
* - Attempting to read beyond the end-of-file
|
||||
*
|
||||
* @tparam T Data type
|
||||
*
|
||||
* @param object Reference to object
|
||||
*
|
||||
* @returns True if the object is successfully read from the file, false otherwise.
|
||||
*/
|
||||
* Reads a T object from a file sequentially.
|
||||
* This function reads from the current position of the file pointer and
|
||||
* advances it by the sizeof(T) bytes successfully read.
|
||||
*
|
||||
* Failures occur when:
|
||||
* - The file is not open
|
||||
* - The opened file lacks read permissions
|
||||
* - Attempting to read beyond the end-of-file
|
||||
*
|
||||
* @tparam T Data type
|
||||
*
|
||||
* @param object Reference to object
|
||||
*
|
||||
* @returns True if the object is successfully read from the file, false otherwise.
|
||||
*/
|
||||
template <typename T>
|
||||
[[nodiscard]] bool ReadObject(T& object) const {
|
||||
static_assert(std::is_trivially_copyable_v<T>, "Data type must be trivially copyable.");
|
||||
static_assert(!std::is_pointer_v<T>, "T must not be a pointer to an object.");
|
||||
|
||||
if (!IsOpen()) {
|
||||
return false;
|
||||
if (IsMappedFile()) {
|
||||
std::memcpy(&object, mmap_base + mmap_offset, sizeof(T));
|
||||
#ifdef _WIN32
|
||||
return bool(sizeof(T));
|
||||
#else
|
||||
return sizeof(T);
|
||||
#endif
|
||||
}
|
||||
|
||||
return std::fread(&object, sizeof(T), 1, file) == 1;
|
||||
return IsOpen() ? std::fread(&object, sizeof(T), 1, file) == 1 : false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Writes a T object to a file sequentially.
|
||||
* This function writes from the current position of the file pointer and
|
||||
* advances it by the sizeof(T) bytes successfully written.
|
||||
*
|
||||
* Failures occur when:
|
||||
* - The file is not open
|
||||
* - The opened file lacks write permissions
|
||||
*
|
||||
* @tparam T Data type
|
||||
*
|
||||
* @param object Const reference to object
|
||||
*
|
||||
* @returns True if the object is successfully written to the file, false otherwise.
|
||||
*/
|
||||
* Writes a T object to a file sequentially.
|
||||
* This function writes from the current position of the file pointer and
|
||||
* advances it by the sizeof(T) bytes successfully written.
|
||||
*
|
||||
* Failures occur when:
|
||||
* - The file is not open
|
||||
* - The opened file lacks write permissions
|
||||
*
|
||||
* @tparam T Data type
|
||||
*
|
||||
* @param object Const reference to object
|
||||
*
|
||||
* @returns True if the object is successfully written to the file, false otherwise.
|
||||
*/
|
||||
template <typename T>
|
||||
[[nodiscard]] bool WriteObject(const T& object) const {
|
||||
static_assert(std::is_trivially_copyable_v<T>, "Data type must be trivially copyable.");
|
||||
static_assert(!std::is_pointer_v<T>, "T must not be a pointer to an object.");
|
||||
|
||||
if (!IsOpen()) {
|
||||
return false;
|
||||
if (IsMappedFile()) {
|
||||
std::memcpy(mmap_base + mmap_offset, &object, sizeof(T));
|
||||
#ifdef _WIN32
|
||||
return sizeof(T) != 0;
|
||||
#else
|
||||
return sizeof(T);
|
||||
#endif
|
||||
}
|
||||
|
||||
return std::fwrite(&object, sizeof(T), 1, file) == 1;
|
||||
return IsOpen() ? std::fwrite(&object, sizeof(T), 1, file) == 1 : false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Specialized function to read a string of a given length from a file sequentially.
|
||||
* This function writes from the current position of the file pointer and
|
||||
* advances it by the number of characters successfully read.
|
||||
* The size of the returned string may not match length if not all bytes are successfully read.
|
||||
*
|
||||
* @param length Length of the string
|
||||
*
|
||||
* @returns A string read from the file.
|
||||
*/
|
||||
* Specialized function to read a string of a given length from a file sequentially.
|
||||
* This function writes from the current position of the file pointer and
|
||||
* advances it by the number of characters successfully read.
|
||||
* The size of the returned string may not match length if not all bytes are successfully read.
|
||||
*
|
||||
* @param length Length of the string
|
||||
*
|
||||
* @returns A string read from the file.
|
||||
*/
|
||||
[[nodiscard]] std::string ReadString(size_t length) const;
|
||||
|
||||
/**
|
||||
* Specialized function to write a string to a file sequentially.
|
||||
* This function writes from the current position of the file pointer and
|
||||
* advances it by the number of characters successfully written.
|
||||
*
|
||||
* @param string Span of const char backed std::string or std::string_view
|
||||
*
|
||||
* @returns Number of characters successfully written.
|
||||
*/
|
||||
* Specialized function to write a string to a file sequentially.
|
||||
* This function writes from the current position of the file pointer and
|
||||
* advances it by the number of characters successfully written.
|
||||
*
|
||||
* @param string Span of const char backed std::string or std::string_view
|
||||
*
|
||||
* @returns Number of characters successfully written.
|
||||
*/
|
||||
[[nodiscard]] size_t WriteString(std::span<const char> string) const;
|
||||
|
||||
/**
|
||||
* Attempts to flush any unwritten buffered data into the file.
|
||||
*
|
||||
* @returns True if the flush was successful, false otherwise.
|
||||
*/
|
||||
* Attempts to flush any unwritten buffered data into the file.
|
||||
*
|
||||
* @returns True if the flush was successful, false otherwise.
|
||||
*/
|
||||
bool Flush() const;
|
||||
|
||||
/**
|
||||
* Attempts to commit the file into the disk.
|
||||
* Note that this is an expensive operation as this forces the operating system to write
|
||||
* the contents of the file associated with the file descriptor into the disk.
|
||||
*
|
||||
* @returns True if the commit was successful, false otherwise.
|
||||
*/
|
||||
* Attempts to commit the file into the disk.
|
||||
* Note that this is an expensive operation as this forces the operating system to write
|
||||
* the contents of the file associated with the file descriptor into the disk.
|
||||
*
|
||||
* @returns True if the commit was successful, false otherwise.
|
||||
*/
|
||||
bool Commit() const;
|
||||
|
||||
/**
|
||||
* Resizes the file to a given size.
|
||||
* If the file is resized to a smaller size, the remainder of the file is discarded.
|
||||
* If the file is resized to a larger size, the new area appears as if zero-filled.
|
||||
*
|
||||
* Failures occur when:
|
||||
* - The file is not open
|
||||
*
|
||||
* @param size File size in bytes
|
||||
*
|
||||
* @returns True if the file resize succeeded, false otherwise.
|
||||
*/
|
||||
* Resizes the file to a given size.
|
||||
* If the file is resized to a smaller size, the remainder of the file is discarded.
|
||||
* If the file is resized to a larger size, the new area appears as if zero-filled.
|
||||
*
|
||||
* Failures occur when:
|
||||
* - The file is not open
|
||||
*
|
||||
* @param size File size in bytes
|
||||
*
|
||||
* @returns True if the file resize succeeded, false otherwise.
|
||||
*/
|
||||
[[nodiscard]] bool SetSize(u64 size) const;
|
||||
|
||||
/**
|
||||
* Gets the size of the file.
|
||||
*
|
||||
* Failures occur when:
|
||||
* - The file is not open
|
||||
*
|
||||
* @returns The file size in bytes of the file. Returns 0 on failure.
|
||||
*/
|
||||
* Gets the size of the file.
|
||||
*
|
||||
* Failures occur when:
|
||||
* - The file is not open
|
||||
*
|
||||
* @returns The file size in bytes of the file. Returns 0 on failure.
|
||||
*/
|
||||
[[nodiscard]] u64 GetSize() const;
|
||||
|
||||
/**
|
||||
* Moves the current position of the file pointer with the specified offset and seek origin.
|
||||
*
|
||||
* @param offset Offset from seek origin
|
||||
* @param origin Seek origin
|
||||
*
|
||||
* @returns True if the file pointer has moved to the specified offset, false otherwise.
|
||||
*/
|
||||
* Moves the current position of the file pointer with the specified offset and seek origin.
|
||||
*
|
||||
* @param offset Offset from seek origin
|
||||
* @param origin Seek origin
|
||||
*
|
||||
* @returns True if the file pointer has moved to the specified offset, false otherwise.
|
||||
*/
|
||||
[[nodiscard]] bool Seek(s64 offset, SeekOrigin origin = SeekOrigin::SetOrigin) const;
|
||||
|
||||
/**
|
||||
* Gets the current position of the file pointer.
|
||||
*
|
||||
* @returns The current position of the file pointer.
|
||||
*/
|
||||
* Gets the current position of the file pointer.
|
||||
*
|
||||
* @returns The current position of the file pointer.
|
||||
*/
|
||||
[[nodiscard]] s64 Tell() const;
|
||||
|
||||
private:
|
||||
#ifdef _WIN32
|
||||
inline bool IsMappedFile() const noexcept { return mapping_handle != nullptr; }
|
||||
#else // POSIX
|
||||
inline bool IsMappedFile() const noexcept { return mmap_fd != -1; }
|
||||
#endif
|
||||
|
||||
std::filesystem::path file_path;
|
||||
FileAccessMode file_access_mode{};
|
||||
FileType file_type{};
|
||||
|
||||
std::FILE* file = nullptr;
|
||||
// Any decent system should have mmap() for files
|
||||
// Systems with artifical mmap() limitations should simply change the logic within file.cpp
|
||||
// and reduce the threshold for which the mmap() is set to
|
||||
#ifdef _WIN32
|
||||
void *mapping_handle = nullptr;
|
||||
void *file_handle = nullptr;
|
||||
#else // POSIX
|
||||
int mmap_fd = -1;
|
||||
#endif
|
||||
u8* mmap_base = nullptr;
|
||||
size_t mmap_size = 0;
|
||||
mutable s64 mmap_offset = 0; // fuck you
|
||||
};
|
||||
|
||||
} // namespace Common::FS
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project
|
||||
@@ -20,7 +20,6 @@
|
||||
#define KEYS_DIR "keys"
|
||||
#define LOAD_DIR "load"
|
||||
#define LOG_DIR "log"
|
||||
#define LOSSLESS_DIR "lossless"
|
||||
#define NAND_DIR "nand"
|
||||
#define PLAY_TIME_DIR "play_time"
|
||||
#define SCREENSHOTS_DIR "screenshots"
|
||||
@@ -38,5 +37,3 @@
|
||||
|
||||
// yuzu-specific files
|
||||
#define LOG_FILE "eden_log.txt"
|
||||
#define LOSSLESS_DLL_FILE "Lossless.dll"
|
||||
#define LOSSLESS_CACHE_FILE "lsfg_spirv.cache"
|
||||
|
||||
@@ -157,7 +157,6 @@ public:
|
||||
GenerateEdenPath(EdenPath::KeysDir, eden_path / KEYS_DIR);
|
||||
GenerateEdenPath(EdenPath::LoadDir, eden_path / LOAD_DIR);
|
||||
GenerateEdenPath(EdenPath::LogDir, eden_path / LOG_DIR);
|
||||
GenerateEdenPath(EdenPath::LosslessDir, eden_path / LOSSLESS_DIR);
|
||||
GenerateEdenPath(EdenPath::NANDDir, eden_path / NAND_DIR);
|
||||
GenerateEdenPath(EdenPath::PlayTimeDir, eden_path / PLAY_TIME_DIR);
|
||||
GenerateEdenPath(EdenPath::SaveDir, eden_path / NAND_DIR);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project
|
||||
@@ -23,7 +23,6 @@ enum class EdenPath {
|
||||
KeysDir, // Where key files are stored.
|
||||
LoadDir, // Where cheat/mod files are stored.
|
||||
LogDir, // Where log files are stored.
|
||||
LosslessDir, // Where the user-supplied Lossless Scaling library is stored.
|
||||
NANDDir, // Where the emulated NAND is stored.
|
||||
PlayTimeDir, // Where play time data is stored.
|
||||
SaveDir, // Where save data is stored.
|
||||
|
||||
@@ -380,28 +380,6 @@ void UpdateRescalingInfo() {
|
||||
TranslateResolutionInfo(setup, info);
|
||||
}
|
||||
|
||||
u32 FrameGenMultiplier() {
|
||||
return std::clamp(values.frame_gen_multiplier.GetValue(), MIN_FRAME_GEN_MULTIPLIER,
|
||||
MAX_FRAME_GEN_MULTIPLIER);
|
||||
}
|
||||
|
||||
size_t FrameGenGenerations() {
|
||||
if (!values.frame_gen.GetValue()) {
|
||||
return 0;
|
||||
}
|
||||
return FrameGenMultiplier() - 1;
|
||||
}
|
||||
|
||||
size_t FrameGenMaxGenerations() {
|
||||
if (!values.frame_gen.GetValue()) {
|
||||
return 0;
|
||||
}
|
||||
if (values.frame_gen_target_rate.GetValue() != 0) {
|
||||
return MAX_FRAME_GEN_MULTIPLIER - 1;
|
||||
}
|
||||
return FrameGenMultiplier() - 1;
|
||||
}
|
||||
|
||||
void RestoreGlobalState(bool is_powered_on) {
|
||||
// If a game is running, DO NOT restore the global settings state
|
||||
if (is_powered_on) {
|
||||
|
||||
+19
-95
@@ -260,10 +260,10 @@ struct Values {
|
||||
Category::Cpu};
|
||||
SwitchableSetting<CpuAccuracy, true> cpu_accuracy{linkage, CpuAccuracy::Auto,
|
||||
"cpu_accuracy", Category::Cpu};
|
||||
SwitchableSetting<CpuClock> cpu_clock{linkage,
|
||||
CpuClock::Normal,
|
||||
SwitchableSetting<CpuClock> fast_cpu_time{linkage,
|
||||
CpuClock::Off,
|
||||
"fast_cpu_time",
|
||||
Category::System,
|
||||
Category::Cpu,
|
||||
Specialization::Default,
|
||||
true,
|
||||
true};
|
||||
@@ -352,7 +352,7 @@ struct Values {
|
||||
true};
|
||||
|
||||
SwitchableSetting<ScalingFilter> scaling_filter{linkage,
|
||||
ScalingFilter::NearestNeighbor,
|
||||
ScalingFilter::Bilinear,
|
||||
"scaling_filter",
|
||||
Category::Renderer,
|
||||
Specialization::Default,
|
||||
@@ -388,69 +388,6 @@ struct Values {
|
||||
true,
|
||||
true};
|
||||
|
||||
SwitchableSetting<bool> frame_gen{linkage, false, "frame_gen", Category::Renderer,
|
||||
Specialization::Default, true, false};
|
||||
|
||||
SwitchableSetting<u32, true> frame_gen_multiplier{linkage,
|
||||
2,
|
||||
2,
|
||||
4,
|
||||
"frame_gen_multiplier",
|
||||
Category::Renderer,
|
||||
Specialization::Countable,
|
||||
true,
|
||||
false,
|
||||
&frame_gen};
|
||||
|
||||
SwitchableSetting<u32, true> frame_gen_target_rate{linkage,
|
||||
0,
|
||||
0,
|
||||
240,
|
||||
"frame_gen_target_rate",
|
||||
Category::Renderer,
|
||||
Specialization::Countable,
|
||||
true,
|
||||
true,
|
||||
&frame_gen};
|
||||
|
||||
SwitchableSetting<bool> frame_gen_flow_scale_auto{linkage,
|
||||
true,
|
||||
"frame_gen_flow_scale_auto",
|
||||
Category::Renderer,
|
||||
Specialization::Default,
|
||||
true,
|
||||
false,
|
||||
&frame_gen};
|
||||
|
||||
SwitchableSetting<u32, true> frame_gen_flow_scale{linkage,
|
||||
75,
|
||||
25,
|
||||
100,
|
||||
"frame_gen_flow_scale",
|
||||
Category::Renderer,
|
||||
Specialization::Countable |
|
||||
Specialization::Percentage,
|
||||
true,
|
||||
true,
|
||||
&frame_gen};
|
||||
|
||||
SwitchableSetting<u32, true> frame_gen_queue_target{linkage,
|
||||
1,
|
||||
0,
|
||||
2,
|
||||
"frame_gen_queue_target",
|
||||
Category::Renderer,
|
||||
Specialization::Countable,
|
||||
true,
|
||||
false,
|
||||
&frame_gen};
|
||||
|
||||
SwitchableSetting<bool> frame_gen_fp16{linkage, true, "frame_gen_fp16", Category::Renderer,
|
||||
Specialization::Default, true, false, &frame_gen};
|
||||
|
||||
SwitchableSetting<bool> frame_gen_dump_flow{linkage, false, "frame_gen_dump_flow",
|
||||
Category::Renderer};
|
||||
|
||||
SwitchableSetting<bool> use_asynchronous_gpu_emulation{linkage,
|
||||
#ifdef __ANDROID__
|
||||
false,
|
||||
@@ -603,13 +540,13 @@ struct Values {
|
||||
#endif
|
||||
|
||||
// Renderer Hacks //
|
||||
SwitchableSetting<GpuClock> gpu_clock{linkage,
|
||||
GpuClock::Boost,
|
||||
"fast_gpu_time",
|
||||
Category::System,
|
||||
Specialization::Default,
|
||||
true,
|
||||
true};
|
||||
SwitchableSetting<GpuOverclock> fast_gpu_time{linkage,
|
||||
GpuOverclock::Medium,
|
||||
"fast_gpu_time",
|
||||
Category::RendererHacks,
|
||||
Specialization::Default,
|
||||
true,
|
||||
true};
|
||||
|
||||
SwitchableSetting<bool> skip_cpu_inner_invalidation{linkage,
|
||||
false,
|
||||
@@ -632,8 +569,13 @@ struct Values {
|
||||
SwitchableSetting<bool> emulate_bgr565{linkage, false, "emulate_bgr565",
|
||||
Category::RendererHacks};
|
||||
|
||||
SwitchableSetting<bool> rescale_hack{linkage, false, "rescale_hack",
|
||||
Category::RendererHacks};
|
||||
SwitchableSetting<bool> rescale_hack{linkage,
|
||||
#ifdef __ANDROID__
|
||||
true,
|
||||
#else
|
||||
false,
|
||||
#endif
|
||||
"rescale_hack", Category::RendererHacks};
|
||||
SwitchableSetting<bool> enable_gpu_buffer_readback{linkage,
|
||||
false,
|
||||
"enable_gpu_buffer_readback",
|
||||
@@ -760,15 +702,7 @@ struct Values {
|
||||
|
||||
// Controls
|
||||
InputSetting<std::array<PlayerInput, 10>> players;
|
||||
Setting<bool> disable_wgi_xinput{
|
||||
linkage, false, "disable_wgi_xinput", Category::Controls, Specialization::Default,
|
||||
// Only read/write disable_wgi_xinput on Windows platforms
|
||||
#ifdef _WIN32
|
||||
true
|
||||
#else
|
||||
false
|
||||
#endif
|
||||
};
|
||||
|
||||
Setting<bool> enable_raw_input{
|
||||
linkage, false, "enable_raw_input", Category::Controls, Specialization::Default,
|
||||
// Only read/write enable_raw_input on Windows platforms
|
||||
@@ -933,20 +867,10 @@ struct Values {
|
||||
|
||||
// Per-game overrides
|
||||
bool use_squashed_iterated_blend;
|
||||
|
||||
};
|
||||
|
||||
extern Values values;
|
||||
|
||||
constexpr u32 MIN_FRAME_GEN_MULTIPLIER = 2;
|
||||
constexpr u32 MAX_FRAME_GEN_MULTIPLIER = 4;
|
||||
|
||||
[[nodiscard]] u32 FrameGenMultiplier();
|
||||
|
||||
[[nodiscard]] size_t FrameGenGenerations();
|
||||
|
||||
[[nodiscard]] size_t FrameGenMaxGenerations();
|
||||
|
||||
bool getDebugKnobAt(u8 i);
|
||||
|
||||
void UpdateGPUAccuracy();
|
||||
|
||||
@@ -140,7 +140,7 @@ ENUM(DmaAccuracy, Default, Unsafe, Safe);
|
||||
ENUM(GpuFenceBehavior, Default, Immediate, Balanced, Accurate, Strict);
|
||||
ENUM(CpuBackend, Dynarmic, Nce);
|
||||
ENUM(CpuAccuracy, Auto, Accurate, Unsafe, Paranoid, Debugging);
|
||||
ENUM(CpuClock, Normal, Boost, Overclock)
|
||||
ENUM(CpuClock, Off, Boost, Fast)
|
||||
ENUM(MemoryLayout, Memory_4Gb, Memory_6Gb, Memory_8Gb, Memory_10Gb, Memory_12Gb);
|
||||
ENUM(ConfirmStop, Ask_Always, Ask_Based_On_Game, Ask_Never);
|
||||
ENUM(FullscreenMode, Borderless, Exclusive);
|
||||
@@ -152,7 +152,7 @@ ENUM(AspectRatio, R16_9, R4_3, R21_9, R16_10, Stretch);
|
||||
ENUM(ConsoleMode, Handheld, Docked);
|
||||
ENUM(AppletMode, HLE, LLE);
|
||||
ENUM(SpirvOptimizeMode, Never, OnLoad, Always);
|
||||
ENUM(GpuClock, Normal, Boost, Overclock)
|
||||
ENUM(GpuOverclock, Normal, Medium, High)
|
||||
ENUM(GpuUnswizzleSize, VerySmall, Small, Normal, Large, VeryLarge)
|
||||
ENUM(GpuUnswizzle, VeryLow, Low, Normal, Medium, High)
|
||||
ENUM(GpuUnswizzleChunk, VeryLow, Low, Normal, Medium, High)
|
||||
|
||||
+33
-505
@@ -1,6 +1,5 @@
|
||||
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: 2013 Dolphin Emulator Project
|
||||
// SPDX-FileCopyrightText: 2014 Citra Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
@@ -10,7 +9,6 @@
|
||||
#include <string>
|
||||
#include <thread>
|
||||
|
||||
#include "common/adpf.h"
|
||||
#include "common/error.h"
|
||||
#include "common/logging.h"
|
||||
#include "common/assert.h"
|
||||
@@ -41,402 +39,6 @@
|
||||
#include <unistd.h>
|
||||
#endif
|
||||
|
||||
#ifdef __linux__
|
||||
#include <sys/resource.h>
|
||||
#include <algorithm>
|
||||
|
||||
namespace {
|
||||
constexpr int NICE_AUDIO = -16;
|
||||
constexpr int NICE_URGENT_DISPLAY = -8;
|
||||
constexpr int NICE_DISPLAY = -4;
|
||||
constexpr int NICE_DEFAULT = 0;
|
||||
constexpr int NICE_BACKGROUND = 10;
|
||||
|
||||
int LowestAllowedNice() {
|
||||
static const int lowest = [] {
|
||||
rlimit limit{};
|
||||
if (getrlimit(RLIMIT_NICE, &limit) != 0) {
|
||||
return 0;
|
||||
}
|
||||
if (limit.rlim_cur >= 40) {
|
||||
return -20;
|
||||
}
|
||||
return 20 - static_cast<int>(limit.rlim_cur);
|
||||
}();
|
||||
return lowest;
|
||||
}
|
||||
|
||||
int NiceValueForPriority(Common::ThreadPriority priority) {
|
||||
const int wanted = [priority] {
|
||||
switch (priority) {
|
||||
case Common::ThreadPriority::Low: return NICE_BACKGROUND;
|
||||
case Common::ThreadPriority::Normal: return NICE_DEFAULT;
|
||||
case Common::ThreadPriority::High: return NICE_DISPLAY;
|
||||
case Common::ThreadPriority::VeryHigh: return NICE_URGENT_DISPLAY;
|
||||
case Common::ThreadPriority::Critical: return NICE_AUDIO;
|
||||
default: return NICE_DEFAULT;
|
||||
}
|
||||
}();
|
||||
return (std::max)(wanted, (std::min)(NICE_DEFAULT, LowestAllowedNice()));
|
||||
}
|
||||
} // Anonymous namespace
|
||||
#endif
|
||||
|
||||
#ifdef __ANDROID__
|
||||
#include <sys/utsname.h>
|
||||
#include <atomic>
|
||||
#include <cerrno>
|
||||
#include <cstdio>
|
||||
#include <cstdlib>
|
||||
#include <cstring>
|
||||
#include <fstream>
|
||||
#include <mutex>
|
||||
#include <vector>
|
||||
|
||||
namespace {
|
||||
constexpr size_t ANDROID_MINIMUM_PERFORMANCE_CORES = 4;
|
||||
|
||||
// A core counts as a performance core while it is within this much of the fastest one.
|
||||
constexpr s64 ANDROID_PERFORMANCE_CAPACITY_PERCENT = 50;
|
||||
|
||||
constexpr std::chrono::nanoseconds ANDROID_POLICY_POLL_INTERVAL = std::chrono::milliseconds{500};
|
||||
|
||||
enum class CoreGroup {
|
||||
Unrestricted,
|
||||
Performance,
|
||||
Efficiency,
|
||||
};
|
||||
|
||||
struct ThreadPolicy {
|
||||
pid_t tid;
|
||||
CoreGroup group;
|
||||
s32 nice_value;
|
||||
bool has_nice;
|
||||
};
|
||||
|
||||
struct CoreInfo {
|
||||
s64 weight;
|
||||
u64 midr;
|
||||
s32 cpu;
|
||||
};
|
||||
|
||||
struct CpuTopologyState {
|
||||
std::mutex topology_mutex;
|
||||
cpu_set_t allowed{};
|
||||
cpu_set_t performance{};
|
||||
cpu_set_t efficiency{};
|
||||
bool separated = false;
|
||||
bool initialized = false;
|
||||
|
||||
pid_t canary_tid = 0;
|
||||
cpu_set_t canary_mask{};
|
||||
bool canary_valid = false;
|
||||
|
||||
std::atomic<s64> next_poll_ns{0};
|
||||
|
||||
std::mutex policy_mutex;
|
||||
std::vector<ThreadPolicy> policies;
|
||||
};
|
||||
|
||||
CpuTopologyState& State() {
|
||||
static CpuTopologyState* const state = new CpuTopologyState();
|
||||
return *state;
|
||||
}
|
||||
|
||||
struct PolicyRegistration {
|
||||
~PolicyRegistration() {
|
||||
const pid_t tid = gettid();
|
||||
::Common::ADPF::RemoveCurrentThread();
|
||||
CpuTopologyState& state = State();
|
||||
std::scoped_lock lock{state.policy_mutex};
|
||||
std::erase_if(state.policies,
|
||||
[tid](const ThreadPolicy& policy) { return policy.tid == tid; });
|
||||
}
|
||||
};
|
||||
|
||||
thread_local PolicyRegistration t_policy_registration;
|
||||
|
||||
s32 PossibleCpuCount() {
|
||||
std::ifstream file("/sys/devices/system/cpu/possible");
|
||||
std::string list;
|
||||
if (file && std::getline(file, list) && !list.empty()) {
|
||||
s64 highest = -1;
|
||||
const char* cursor = list.c_str();
|
||||
while (*cursor != '\0') {
|
||||
char* end = nullptr;
|
||||
const s64 value = std::strtol(cursor, &end, 10);
|
||||
if (end == cursor) {
|
||||
break;
|
||||
}
|
||||
highest = (std::max)(highest, value);
|
||||
cursor = end;
|
||||
while (*cursor == '-' || *cursor == ',') {
|
||||
++cursor;
|
||||
}
|
||||
}
|
||||
if (highest >= 0) {
|
||||
return static_cast<s32>((std::min<s64>)(highest + 1, CPU_SETSIZE));
|
||||
}
|
||||
}
|
||||
const s64 configured = sysconf(_SC_NPROCESSORS_CONF);
|
||||
if (configured > 0) {
|
||||
return static_cast<s32>((std::min<s64>)(configured, CPU_SETSIZE));
|
||||
}
|
||||
return static_cast<s32>((std::min<s64>)(std::thread::hardware_concurrency(), CPU_SETSIZE));
|
||||
}
|
||||
|
||||
s64 ReadCpuScalar(s32 cpu, const char* node) {
|
||||
s64 value = 0;
|
||||
std::ifstream file("/sys/devices/system/cpu/cpu" + std::to_string(cpu) + "/" + node);
|
||||
if (!file || !(file >> value) || value <= 0) {
|
||||
return 0;
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
u64 ReadCpuMidr(s32 cpu) {
|
||||
u64 midr = 0;
|
||||
std::ifstream file("/sys/devices/system/cpu/cpu" + std::to_string(cpu) +
|
||||
"/regs/identification/midr_el1");
|
||||
if (!file || !(file >> std::hex >> midr)) {
|
||||
return 0;
|
||||
}
|
||||
return midr;
|
||||
}
|
||||
|
||||
std::vector<CoreInfo> CollectCores(const cpu_set_t& allowed, s32 total, const char* node,
|
||||
bool require_all) {
|
||||
std::vector<CoreInfo> cores;
|
||||
for (s32 cpu = 0; cpu < total; ++cpu) {
|
||||
if (!CPU_ISSET(cpu, &allowed)) {
|
||||
continue;
|
||||
}
|
||||
const s64 weight = ReadCpuScalar(cpu, node);
|
||||
if (weight <= 0) {
|
||||
if (require_all) {
|
||||
return {};
|
||||
}
|
||||
LOG_WARNING(Common, "Could not read {} for CPU {}, treating it as an efficiency core",
|
||||
node, cpu);
|
||||
continue;
|
||||
}
|
||||
cores.push_back(CoreInfo{weight, ReadCpuMidr(cpu), cpu});
|
||||
}
|
||||
return cores;
|
||||
}
|
||||
|
||||
bool WeightsAreUniform(const std::vector<CoreInfo>& cores) {
|
||||
return std::all_of(cores.begin(), cores.end(),
|
||||
[&](const CoreInfo& core) { return core.weight == cores.front().weight; });
|
||||
}
|
||||
|
||||
bool MidrsAreDistinct(const std::vector<CoreInfo>& cores) {
|
||||
return std::none_of(cores.begin(), cores.end(),
|
||||
[](const CoreInfo& core) { return core.midr == 0; }) &&
|
||||
std::any_of(cores.begin(), cores.end(),
|
||||
[&](const CoreInfo& core) { return core.midr != cores.front().midr; });
|
||||
}
|
||||
|
||||
void ComputeTopologyLocked(CpuTopologyState& state) {
|
||||
state.initialized = true;
|
||||
state.separated = false;
|
||||
CPU_ZERO(&state.allowed);
|
||||
CPU_ZERO(&state.performance);
|
||||
CPU_ZERO(&state.efficiency);
|
||||
|
||||
if (sched_getaffinity(getpid(), sizeof(state.allowed), &state.allowed) != 0) {
|
||||
LOG_WARNING(Common, "Could not query process CPU affinity: {}",
|
||||
::Common::GetLastErrorMsg());
|
||||
return;
|
||||
}
|
||||
|
||||
const s32 total = PossibleCpuCount();
|
||||
auto cores = CollectCores(state.allowed, total, "cpu_capacity", true);
|
||||
if (cores.empty() || (WeightsAreUniform(cores) && MidrsAreDistinct(cores))) {
|
||||
auto by_frequency = CollectCores(state.allowed, total, "cpufreq/cpuinfo_max_freq", false);
|
||||
if (!by_frequency.empty()) {
|
||||
cores = std::move(by_frequency);
|
||||
}
|
||||
}
|
||||
if (cores.empty()) {
|
||||
LOG_WARNING(Common, "Could not determine CPU topology, thread placement is disabled");
|
||||
return;
|
||||
}
|
||||
|
||||
if (WeightsAreUniform(cores)) {
|
||||
if (MidrsAreDistinct(cores)) {
|
||||
LOG_WARNING(Common, "CPU clusters differ but rank identically, thread placement is "
|
||||
"disabled");
|
||||
} else {
|
||||
LOG_INFO(Common, "CPU cores are symmetric, thread placement is disabled");
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
std::sort(cores.begin(), cores.end(), [](const CoreInfo& lhs, const CoreInfo& rhs) {
|
||||
if (lhs.weight != rhs.weight) {
|
||||
return lhs.weight > rhs.weight;
|
||||
}
|
||||
return lhs.cpu < rhs.cpu;
|
||||
});
|
||||
|
||||
const s64 fastest = cores.front().weight;
|
||||
size_t taken = 0;
|
||||
for (const auto& core : cores) {
|
||||
const bool fast_enough =
|
||||
core.weight * 100 >= fastest * ANDROID_PERFORMANCE_CAPACITY_PERCENT;
|
||||
if (!fast_enough && taken >= ANDROID_MINIMUM_PERFORMANCE_CORES) {
|
||||
break;
|
||||
}
|
||||
CPU_SET(core.cpu, &state.performance);
|
||||
++taken;
|
||||
}
|
||||
if (taken == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
for (s32 cpu = 0; cpu < total; ++cpu) {
|
||||
if (CPU_ISSET(cpu, &state.allowed) && !CPU_ISSET(cpu, &state.performance)) {
|
||||
CPU_SET(cpu, &state.efficiency);
|
||||
}
|
||||
}
|
||||
|
||||
state.separated = CPU_COUNT(&state.efficiency) > 0;
|
||||
LOG_INFO(Common, "CPU topology: {} performance cores, {} efficiency cores, separation {}",
|
||||
CPU_COUNT(&state.performance), CPU_COUNT(&state.efficiency),
|
||||
state.separated ? "enabled" : "unavailable");
|
||||
}
|
||||
|
||||
void EnsureTopologyLocked(CpuTopologyState& state) {
|
||||
if (!state.initialized) {
|
||||
ComputeTopologyLocked(state);
|
||||
}
|
||||
}
|
||||
|
||||
void RefreshTopologyLocked(CpuTopologyState& state) {
|
||||
if (!state.initialized) {
|
||||
ComputeTopologyLocked(state);
|
||||
return;
|
||||
}
|
||||
cpu_set_t current;
|
||||
CPU_ZERO(¤t);
|
||||
if (sched_getaffinity(getpid(), sizeof(current), ¤t) != 0) {
|
||||
return;
|
||||
}
|
||||
if (std::memcmp(¤t, &state.allowed, sizeof(current)) != 0) {
|
||||
ComputeTopologyLocked(state);
|
||||
}
|
||||
}
|
||||
|
||||
bool ApplyCoreGroupLocked(CpuTopologyState& state, pid_t tid, CoreGroup group,
|
||||
bool* gone = nullptr) {
|
||||
const bool restrict_group = group != CoreGroup::Unrestricted && state.separated;
|
||||
const cpu_set_t* mask = &state.allowed;
|
||||
if (restrict_group) {
|
||||
mask = group == CoreGroup::Performance ? &state.performance : &state.efficiency;
|
||||
}
|
||||
if (CPU_COUNT(mask) == 0) {
|
||||
return false;
|
||||
}
|
||||
if (sched_setaffinity(tid, sizeof(*mask), mask) != 0) {
|
||||
if (gone != nullptr && errno == ESRCH) {
|
||||
*gone = true;
|
||||
return false;
|
||||
}
|
||||
LOG_WARNING(Common, "Could not restrict thread {} to its core group: {}", tid,
|
||||
::Common::GetLastErrorMsg());
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool KernelPreservesRequestedAffinity() {
|
||||
utsname info{};
|
||||
if (uname(&info) != 0) {
|
||||
return false;
|
||||
}
|
||||
s32 major = 0;
|
||||
s32 minor = 0;
|
||||
if (std::sscanf(info.release, "%d.%d", &major, &minor) != 2) {
|
||||
return false;
|
||||
}
|
||||
return major > 6 || (major == 6 && minor >= 2);
|
||||
}
|
||||
|
||||
void SnapshotCanaryLocked(CpuTopologyState& state) {
|
||||
state.canary_valid = false;
|
||||
if (!state.separated) {
|
||||
return;
|
||||
}
|
||||
for (const auto& policy : state.policies) {
|
||||
if (policy.group == CoreGroup::Unrestricted) {
|
||||
continue;
|
||||
}
|
||||
cpu_set_t mask;
|
||||
CPU_ZERO(&mask);
|
||||
if (sched_getaffinity(policy.tid, sizeof(mask), &mask) != 0) {
|
||||
continue;
|
||||
}
|
||||
state.canary_tid = policy.tid;
|
||||
state.canary_mask = mask;
|
||||
state.canary_valid = true;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
bool DueForPoll(CpuTopologyState& state) {
|
||||
const auto now = std::chrono::steady_clock::now().time_since_epoch();
|
||||
const s64 now_ns = std::chrono::duration_cast<std::chrono::nanoseconds>(now).count();
|
||||
s64 next = state.next_poll_ns.load(std::memory_order_relaxed);
|
||||
if (now_ns < next) {
|
||||
return false;
|
||||
}
|
||||
return state.next_poll_ns.compare_exchange_strong(
|
||||
next, now_ns + ANDROID_POLICY_POLL_INTERVAL.count(), std::memory_order_relaxed);
|
||||
}
|
||||
|
||||
ThreadPolicy& AcquirePolicyLocked(CpuTopologyState& state, pid_t tid) {
|
||||
for (auto& policy : state.policies) {
|
||||
if (policy.tid == tid) {
|
||||
return policy;
|
||||
}
|
||||
}
|
||||
return state.policies.emplace_back(ThreadPolicy{tid, CoreGroup::Unrestricted, 0, false});
|
||||
}
|
||||
|
||||
void SetCurrentThreadCoreGroup(CoreGroup group) {
|
||||
const pid_t tid = gettid();
|
||||
(void)&t_policy_registration;
|
||||
|
||||
CoreGroup effective = group;
|
||||
if (tid == getpid() && group != CoreGroup::Unrestricted) {
|
||||
LOG_WARNING(Common, "Refusing to place the main thread: the CPU topology is read from it");
|
||||
effective = CoreGroup::Unrestricted;
|
||||
}
|
||||
|
||||
CpuTopologyState& state = State();
|
||||
std::scoped_lock topology_lock{state.topology_mutex};
|
||||
EnsureTopologyLocked(state);
|
||||
ApplyCoreGroupLocked(state, tid, effective);
|
||||
|
||||
std::scoped_lock policy_lock{state.policy_mutex};
|
||||
AcquirePolicyLocked(state, tid).group = effective;
|
||||
if (!state.canary_valid) {
|
||||
SnapshotCanaryLocked(state);
|
||||
}
|
||||
}
|
||||
|
||||
void RememberCurrentThreadNice(pid_t tid, s32 nice_value) {
|
||||
(void)&t_policy_registration;
|
||||
CpuTopologyState& state = State();
|
||||
std::scoped_lock lock{state.policy_mutex};
|
||||
ThreadPolicy& policy = AcquirePolicyLocked(state, tid);
|
||||
policy.nice_value = nice_value;
|
||||
policy.has_nice = true;
|
||||
}
|
||||
} // Anonymous namespace
|
||||
#endif
|
||||
|
||||
#include "common/cpu_features.h"
|
||||
#ifdef ARCHITECTURE_x86_64
|
||||
#ifdef _MSC_VER
|
||||
@@ -446,6 +48,7 @@ void RememberCurrentThreadNice(pid_t tid, s32 nice_value) {
|
||||
#endif
|
||||
#include "common/x64/rdtsc.h"
|
||||
#endif
|
||||
#include "core/core_timing.h"
|
||||
|
||||
namespace Common {
|
||||
|
||||
@@ -475,31 +78,21 @@ void SetCurrentThreadPriority(ThreadPriority new_priority) {
|
||||
}
|
||||
}();
|
||||
set_thread_priority(find_thread(NULL), priority);
|
||||
#elif defined(__ANDROID__)
|
||||
const int nice_value = NiceValueForPriority(new_priority);
|
||||
const pid_t tid = gettid();
|
||||
if (setpriority(PRIO_PROCESS, static_cast<id_t>(tid), nice_value) != 0) {
|
||||
LOG_WARNING(Common, "Could not set thread nice value to {}: {}", nice_value,
|
||||
GetLastErrorMsg());
|
||||
return;
|
||||
}
|
||||
RememberCurrentThreadNice(tid, nice_value);
|
||||
#elif defined(__linux__)
|
||||
const int nice_value = NiceValueForPriority(new_priority);
|
||||
if (setpriority(PRIO_PROCESS, 0, nice_value) != 0) {
|
||||
LOG_DEBUG(Common, "Could not set thread nice value to {}: {}", nice_value,
|
||||
GetLastErrorMsg());
|
||||
}
|
||||
#else
|
||||
const s32 max_prio = sched_get_priority_max(SCHED_OTHER);
|
||||
const s32 min_prio = sched_get_priority_min(SCHED_OTHER);
|
||||
pthread_t this_thread = pthread_self();
|
||||
const auto scheduling_type = SCHED_OTHER;
|
||||
s32 max_prio = sched_get_priority_max(scheduling_type);
|
||||
s32 min_prio = sched_get_priority_min(scheduling_type);
|
||||
u32 level = (std::max)(u32(new_priority) + 1, 4U);
|
||||
|
||||
struct sched_param params;
|
||||
if (max_prio > min_prio) {
|
||||
const u32 level = (std::min)(static_cast<u32>(new_priority), 4U);
|
||||
sched_param params{};
|
||||
params.sched_priority =
|
||||
min_prio + static_cast<s32>(static_cast<u32>(max_prio - min_prio) * level) / 4;
|
||||
pthread_setschedparam(pthread_self(), SCHED_OTHER, ¶ms);
|
||||
params.sched_priority = min_prio + ((max_prio - min_prio) * level) / 4;
|
||||
} else {
|
||||
params.sched_priority = min_prio - ((min_prio - max_prio) * level) / 4;
|
||||
}
|
||||
|
||||
pthread_setschedparam(this_thread, scheduling_type, ¶ms);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -539,94 +132,29 @@ void SetCurrentThreadName(const char* name) {
|
||||
#endif
|
||||
}
|
||||
|
||||
void SetCurrentThreadToPerformanceCores() {
|
||||
void PinCurrentThreadToPerformanceCore(size_t core_id) {
|
||||
ASSERT(core_id < 4);
|
||||
// If we set a flag for a CPU that doesn't exist, the thread may not be allowed to
|
||||
// run in ANY processor!
|
||||
auto const total_cores = std::thread::hardware_concurrency();
|
||||
if (core_id < total_cores) {
|
||||
#if defined(__ANDROID__)
|
||||
if (ADPF::AddCurrentThread(ADPF::Session::Render)) {
|
||||
SetCurrentThreadCoreGroup(CoreGroup::Unrestricted);
|
||||
return;
|
||||
}
|
||||
SetCurrentThreadCoreGroup(CoreGroup::Performance);
|
||||
cpu_set_t set;
|
||||
CPU_ZERO(&set);
|
||||
CPU_SET(core_id, &set);
|
||||
sched_setaffinity(pthread_self(), sizeof(set), &set);
|
||||
#elif defined(__linux__) || defined(__FreeBSD__)
|
||||
cpu_set_t set;
|
||||
CPU_ZERO(&set);
|
||||
CPU_SET(core_id, &set);
|
||||
pthread_setaffinity_np(pthread_self(), sizeof(set), &set);
|
||||
#elif defined(_WIN32)
|
||||
DWORD set = 1UL << core_id;
|
||||
SetThreadAffinityMask(GetCurrentThread(), set);
|
||||
#else
|
||||
// No pin functionality implemented
|
||||
#endif
|
||||
}
|
||||
|
||||
void SetCurrentThreadToEfficiencyCores() {
|
||||
#if defined(__ANDROID__)
|
||||
if (ADPF::AddCurrentThread(ADPF::Session::Background)) {
|
||||
SetCurrentThreadCoreGroup(CoreGroup::Unrestricted);
|
||||
return;
|
||||
}
|
||||
SetCurrentThreadCoreGroup(CoreGroup::Efficiency);
|
||||
#endif
|
||||
}
|
||||
|
||||
void SetCurrentThreadToBackgroundWork() {
|
||||
#if defined(__ANDROID__)
|
||||
ADPF::AddCurrentThread(ADPF::Session::Background);
|
||||
SetCurrentThreadCoreGroup(CoreGroup::Unrestricted);
|
||||
#endif
|
||||
}
|
||||
|
||||
void SetCurrentThreadToAllCores() {
|
||||
#if defined(__ANDROID__)
|
||||
ADPF::RemoveCurrentThread();
|
||||
SetCurrentThreadCoreGroup(CoreGroup::Unrestricted);
|
||||
#endif
|
||||
}
|
||||
|
||||
void RefreshThreadPolicies() {
|
||||
#if defined(__ANDROID__)
|
||||
CpuTopologyState& state = State();
|
||||
std::scoped_lock topology_lock{state.topology_mutex};
|
||||
RefreshTopologyLocked(state);
|
||||
|
||||
std::scoped_lock policy_lock{state.policy_mutex};
|
||||
std::erase_if(state.policies, [&state](const ThreadPolicy& policy) {
|
||||
bool gone = false;
|
||||
if (policy.has_nice &&
|
||||
setpriority(PRIO_PROCESS, static_cast<id_t>(policy.tid), policy.nice_value) != 0 &&
|
||||
errno == ESRCH) {
|
||||
gone = true;
|
||||
}
|
||||
if (!gone) {
|
||||
ApplyCoreGroupLocked(state, policy.tid, policy.group, &gone);
|
||||
}
|
||||
return gone;
|
||||
});
|
||||
SnapshotCanaryLocked(state);
|
||||
#endif
|
||||
}
|
||||
|
||||
void PollThreadPolicies() {
|
||||
#if defined(__ANDROID__)
|
||||
static const bool needed = !KernelPreservesRequestedAffinity();
|
||||
if (!needed) {
|
||||
return;
|
||||
}
|
||||
|
||||
CpuTopologyState& state = State();
|
||||
if (!DueForPoll(state)) {
|
||||
return;
|
||||
}
|
||||
|
||||
pid_t tid;
|
||||
cpu_set_t expected;
|
||||
{
|
||||
std::scoped_lock lock{state.topology_mutex};
|
||||
if (!state.canary_valid) {
|
||||
return;
|
||||
}
|
||||
tid = state.canary_tid;
|
||||
expected = state.canary_mask;
|
||||
}
|
||||
|
||||
cpu_set_t current;
|
||||
CPU_ZERO(¤t);
|
||||
if (sched_getaffinity(tid, sizeof(current), ¤t) == 0 &&
|
||||
std::memcmp(¤t, &expected, sizeof(current)) == 0) {
|
||||
return;
|
||||
}
|
||||
RefreshThreadPolicies();
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef ARCHITECTURE_x86_64
|
||||
|
||||
+1
-13
@@ -99,20 +99,8 @@ enum class ThreadPriority : u32 {
|
||||
Critical = 4,
|
||||
};
|
||||
|
||||
enum class ThreadPlacement : u32 {
|
||||
Default = 0,
|
||||
Background = 1,
|
||||
Efficiency = 2,
|
||||
};
|
||||
|
||||
void SetCurrentThreadPriority(ThreadPriority new_priority);
|
||||
void SetCurrentThreadName(const char* name);
|
||||
void SetCurrentThreadToPerformanceCores();
|
||||
void SetCurrentThreadToEfficiencyCores();
|
||||
void SetCurrentThreadToBackgroundWork();
|
||||
void SetCurrentThreadToAllCores();
|
||||
|
||||
void RefreshThreadPolicies();
|
||||
void PollThreadPolicies();
|
||||
void PinCurrentThreadToPerformanceCore(size_t core_id);
|
||||
|
||||
} // namespace Common
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project
|
||||
@@ -37,25 +37,10 @@ class StatefulThreadWorker {
|
||||
using StateMaker = std::conditional_t<with_state, std::function<StateType()>, DummyCallable>;
|
||||
|
||||
public:
|
||||
explicit StatefulThreadWorker(size_t num_workers, std::string name, StateMaker func = {},
|
||||
ThreadPlacement placement = ThreadPlacement::Default)
|
||||
explicit StatefulThreadWorker(size_t num_workers, std::string name, StateMaker func = {})
|
||||
: workers_queued{num_workers}, thread_name{std::move(name)} {
|
||||
const auto lambda = [this, func, placement](std::stop_token stop_token) {
|
||||
const auto lambda = [this, func](std::stop_token stop_token) {
|
||||
Common::SetCurrentThreadName(thread_name.c_str());
|
||||
if (placement != ThreadPlacement::Default) {
|
||||
Common::SetCurrentThreadPriority(ThreadPriority::Low);
|
||||
}
|
||||
switch (placement) {
|
||||
case ThreadPlacement::Efficiency:
|
||||
Common::SetCurrentThreadToEfficiencyCores();
|
||||
break;
|
||||
case ThreadPlacement::Background:
|
||||
Common::SetCurrentThreadToBackgroundWork();
|
||||
break;
|
||||
default:
|
||||
Common::SetCurrentThreadToAllCores();
|
||||
break;
|
||||
}
|
||||
{
|
||||
[[maybe_unused]] std::conditional_t<with_state, StateType, int> state{func()};
|
||||
while (!stop_token.stop_requested()) {
|
||||
|
||||
@@ -208,12 +208,4 @@ UUID UUID::MakeRandomRFC4122V4() {
|
||||
return uuid;
|
||||
}
|
||||
|
||||
UUID UUID::MakeRFC4122V5(std::span<u8, 20> sha1) {
|
||||
UUID uuid{};
|
||||
std::memcpy(&uuid.uuid, sha1.data(), sizeof(UUID));
|
||||
uuid.uuid[8] = 0x80 | (uuid.uuid[8] & 0x3F);
|
||||
uuid.uuid[6] = 0x50 | (uuid.uuid[6] & 0xF);
|
||||
return uuid;
|
||||
}
|
||||
|
||||
} // namespace Common
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user