forked from eden-emu/eden
Compare commits
4 commits
master
...
frame-inte
Author | SHA1 | Date | |
---|---|---|---|
![]() |
9156e7e346 | ||
![]() |
89b982589d | ||
![]() |
fc5e367e65 | ||
![]() |
9786b1aa41 |
77 changed files with 413 additions and 2582 deletions
|
@ -216,14 +216,14 @@ if (YUZU_USE_BUNDLED_VCPKG)
|
||||||
list(APPEND VCPKG_MANIFEST_FEATURES "android")
|
list(APPEND VCPKG_MANIFEST_FEATURES "android")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
include(CPMUtil)
|
include(CPM)
|
||||||
|
set(CPM_USE_LOCAL_PACKAGES OFF)
|
||||||
|
|
||||||
AddPackage(
|
CPMAddPackage(
|
||||||
NAME vcpkg
|
|
||||||
DOWNLOAD_ONLY YES
|
DOWNLOAD_ONLY YES
|
||||||
URL "https://github.com/microsoft/vcpkg.git"
|
GIT_REPOSITORY "https://github.com/microsoft/vcpkg.git"
|
||||||
GIT_TAG "ea2a964f93"
|
GIT_TAG "ea2a964f93"
|
||||||
SHA "ea2a964f93"
|
CUSTOM_CACHE_KEY "ea2a"
|
||||||
)
|
)
|
||||||
|
|
||||||
include(${vcpkg_SOURCE_DIR}/scripts/buildsystems/vcpkg.cmake)
|
include(${vcpkg_SOURCE_DIR}/scripts/buildsystems/vcpkg.cmake)
|
||||||
|
@ -277,30 +277,6 @@ function(check_submodules_present)
|
||||||
message(FATAL_ERROR "Git submodule ${module} not found. "
|
message(FATAL_ERROR "Git submodule ${module} not found. "
|
||||||
"Please run: \ngit submodule update --init --recursive")
|
"Please run: \ngit submodule update --init --recursive")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(SUBMODULE_DIR "${PROJECT_SOURCE_DIR}/${module}")
|
|
||||||
|
|
||||||
execute_process(
|
|
||||||
COMMAND git rev-parse --short=10 HEAD
|
|
||||||
WORKING_DIRECTORY ${SUBMODULE_DIR}
|
|
||||||
OUTPUT_VARIABLE SUBMODULE_SHA
|
|
||||||
)
|
|
||||||
|
|
||||||
# would probably be better to do string parsing, but whatever
|
|
||||||
execute_process(
|
|
||||||
COMMAND git remote get-url origin
|
|
||||||
WORKING_DIRECTORY ${SUBMODULE_DIR}
|
|
||||||
OUTPUT_VARIABLE SUBMODULE_URL
|
|
||||||
)
|
|
||||||
|
|
||||||
string(REGEX REPLACE "\n|\r" "" SUBMODULE_SHA ${SUBMODULE_SHA})
|
|
||||||
string(REGEX REPLACE "\n|\r|\\.git" "" SUBMODULE_URL ${SUBMODULE_URL})
|
|
||||||
|
|
||||||
get_filename_component(SUBMODULE_NAME ${SUBMODULE_DIR} NAME)
|
|
||||||
|
|
||||||
set_property(GLOBAL APPEND PROPERTY CPM_PACKAGE_NAMES ${SUBMODULE_NAME})
|
|
||||||
set_property(GLOBAL APPEND PROPERTY CPM_PACKAGE_SHAS ${SUBMODULE_SHA})
|
|
||||||
set_property(GLOBAL APPEND PROPERTY CPM_PACKAGE_URLS ${SUBMODULE_URL})
|
|
||||||
endforeach()
|
endforeach()
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
|
@ -477,7 +453,7 @@ if (ENABLE_SDL2)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (DEFINED SDL2_VER)
|
if (DEFINED SDL2_VER)
|
||||||
download_bundled_external("sdl2/" ${SDL2_VER} "sdl2-bundled" SDL2_PREFIX 2.32.8)
|
download_bundled_external("sdl2/" ${SDL2_VER} "sdl2-bundled" SDL2_PREFIX)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(SDL2_FOUND YES)
|
set(SDL2_FOUND YES)
|
||||||
|
@ -608,7 +584,7 @@ endif()
|
||||||
|
|
||||||
if (WIN32 AND YUZU_CRASH_DUMPS)
|
if (WIN32 AND YUZU_CRASH_DUMPS)
|
||||||
set(BREAKPAD_VER "breakpad-c89f9dd")
|
set(BREAKPAD_VER "breakpad-c89f9dd")
|
||||||
download_bundled_external("breakpad/" ${BREAKPAD_VER} "breakpad-win" BREAKPAD_PREFIX "c89f9dd")
|
download_bundled_external("breakpad/" ${BREAKPAD_VER} "breakpad-win" BREAKPAD_PREFIX)
|
||||||
|
|
||||||
set(BREAKPAD_CLIENT_INCLUDE_DIR "${BREAKPAD_PREFIX}/include")
|
set(BREAKPAD_CLIENT_INCLUDE_DIR "${BREAKPAD_PREFIX}/include")
|
||||||
set(BREAKPAD_CLIENT_LIBRARY "${BREAKPAD_PREFIX}/lib/libbreakpad_client.lib")
|
set(BREAKPAD_CLIENT_LIBRARY "${BREAKPAD_PREFIX}/lib/libbreakpad_client.lib")
|
||||||
|
@ -746,6 +722,7 @@ else()
|
||||||
set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT yuzu-cmd)
|
set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT yuzu-cmd)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|
||||||
# Installation instructions
|
# Installation instructions
|
||||||
# =========================
|
# =========================
|
||||||
|
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,117 +0,0 @@
|
||||||
# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
||||||
|
|
||||||
# Created-By: crueter
|
|
||||||
# Docs will come at a later date, mostly this is to just reduce boilerplate
|
|
||||||
# and some cmake magic to allow for runtime viewing of dependency versions
|
|
||||||
|
|
||||||
cmake_minimum_required(VERSION 3.22)
|
|
||||||
include(CPM)
|
|
||||||
|
|
||||||
function(AddPackage)
|
|
||||||
cpm_set_policies()
|
|
||||||
|
|
||||||
set(oneValueArgs
|
|
||||||
NAME
|
|
||||||
VERSION
|
|
||||||
REPO
|
|
||||||
SHA
|
|
||||||
HASH
|
|
||||||
KEY
|
|
||||||
URL # Only for custom non-GitHub urls
|
|
||||||
DOWNLOAD_ONLY
|
|
||||||
FIND_PACKAGE_ARGUMENTS
|
|
||||||
SYSTEM_PACKAGE
|
|
||||||
BUNDLED_PACKAGE
|
|
||||||
)
|
|
||||||
|
|
||||||
set(multiValueArgs OPTIONS PATCHES)
|
|
||||||
|
|
||||||
cmake_parse_arguments(PKG_ARGS "" "${oneValueArgs}" "${multiValueArgs}" "${ARGN}")
|
|
||||||
|
|
||||||
if (NOT DEFINED PKG_ARGS_NAME)
|
|
||||||
message(FATAL_ERROR "CPMUtil: No package name defined")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (NOT DEFINED PKG_ARGS_URL)
|
|
||||||
if (DEFINED PKG_ARGS_REPO AND DEFINED PKG_ARGS_SHA)
|
|
||||||
set(PKG_GIT_URL https://github.com/${PKG_ARGS_REPO})
|
|
||||||
set(PKG_URL "${PKG_GIT_URL}/archive/${PKG_ARGS_SHA}.zip")
|
|
||||||
else()
|
|
||||||
message(FATAL_ERROR "CPMUtil: No custom URL and no repository + sha defined")
|
|
||||||
endif()
|
|
||||||
else()
|
|
||||||
set(PKG_URL ${PKG_ARGS_URL})
|
|
||||||
set(PKG_GIT_URL ${PKG_URL})
|
|
||||||
endif()
|
|
||||||
|
|
||||||
message(STATUS "CPMUtil: Downloading package ${PKG_ARGS_NAME} from ${PKG_URL}")
|
|
||||||
|
|
||||||
if (NOT DEFINED PKG_ARGS_KEY)
|
|
||||||
if (DEFINED PKG_ARGS_SHA)
|
|
||||||
string(SUBSTRING ${PKG_ARGS_SHA} 0 4 PKG_KEY)
|
|
||||||
message(STATUS "CPMUtil: No custom key defined, using ${PKG_KEY} from sha")
|
|
||||||
else()
|
|
||||||
message(FATAL_ERROR "CPMUtil: No custom key and no commit sha defined")
|
|
||||||
endif()
|
|
||||||
else()
|
|
||||||
set(PKG_KEY ${PKG_ARGS_KEY})
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (DEFINED PKG_ARGS_HASH)
|
|
||||||
set(PKG_HASH "SHA512=${PKG_ARGS_HASH}")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Default behavior is bundled
|
|
||||||
if (DEFINED PKG_ARGS_SYSTEM_PACKAGE)
|
|
||||||
set(CPM_USE_LOCAL_PACKAGES ${PKG_ARGS_SYSTEM_PACKAGE})
|
|
||||||
elseif (DEFINED PKG_ARGS_BUNDLED_PACKAGE)
|
|
||||||
if (PKG_ARGS_BUNDLED_PACKAGE)
|
|
||||||
set(CPM_USE_LOCAL_PACKAGES OFF)
|
|
||||||
else()
|
|
||||||
set(CPM_USE_LOCAL_PACKAGES ON)
|
|
||||||
endif()
|
|
||||||
else()
|
|
||||||
set(CPM_USE_LOCAL_PACKAGES OFF)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
CPMAddPackage(
|
|
||||||
NAME ${PKG_ARGS_NAME}
|
|
||||||
VERSION ${PKG_ARGS_VERSION}
|
|
||||||
URL ${PKG_URL}
|
|
||||||
URL_HASH ${PKG_HASH}
|
|
||||||
CUSTOM_CACHE_KEY ${PKG_KEY}
|
|
||||||
DOWNLOAD_ONLY ${PKG_ARGS_DOWNLOAD_ONLY}
|
|
||||||
FIND_PACKAGE_ARGUMENTS ${PKG_ARGS_FIND_PACKAGE_ARGUMENTS}
|
|
||||||
|
|
||||||
OPTIONS ${PKG_ARGS_OPTIONS}
|
|
||||||
PATCHES ${PKG_ARGS_PATCHES}
|
|
||||||
|
|
||||||
${PKG_ARGS_UNPARSED_ARGUMENTS}
|
|
||||||
)
|
|
||||||
|
|
||||||
set_property(GLOBAL APPEND PROPERTY CPM_PACKAGE_NAMES ${PKG_ARGS_NAME})
|
|
||||||
set_property(GLOBAL APPEND PROPERTY CPM_PACKAGE_URLS ${PKG_GIT_URL})
|
|
||||||
|
|
||||||
if (${PKG_ARGS_NAME}_ADDED)
|
|
||||||
if (DEFINED PKG_ARGS_SHA)
|
|
||||||
set_property(GLOBAL APPEND PROPERTY CPM_PACKAGE_SHAS ${PKG_ARGS_SHA})
|
|
||||||
elseif(DEFINED PKG_ARGS_VERSION)
|
|
||||||
set_property(GLOBAL APPEND PROPERTY CPM_PACKAGE_SHAS ${PKG_ARGS_VERSION})
|
|
||||||
else()
|
|
||||||
message(WARNING "CPMUtil: Package ${PKG_ARGS_NAME} has no specified sha or version")
|
|
||||||
set_property(GLOBAL APPEND PROPERTY CPM_PACKAGE_SHAS "unknown")
|
|
||||||
endif()
|
|
||||||
else()
|
|
||||||
if (DEFINED CPM_PACKAGE_${PKG_ARGS_NAME}_VERSION)
|
|
||||||
set_property(GLOBAL APPEND PROPERTY CPM_PACKAGE_SHAS "${CPM_PACKAGE_${PKG_ARGS_NAME}_VERSION} (system)")
|
|
||||||
else()
|
|
||||||
set_property(GLOBAL APPEND PROPERTY CPM_PACKAGE_SHAS "unknown (system)")
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# pass stuff to parent scope
|
|
||||||
set(${PKG_ARGS_NAME}_ADDED "${${PKG_ARGS_NAME}_ADDED}" PARENT_SCOPE)
|
|
||||||
set(${PKG_ARGS_NAME}_SOURCE_DIR "${${PKG_ARGS_NAME}_SOURCE_DIR}" PARENT_SCOPE)
|
|
||||||
set(${PKG_ARGS_NAME}_BINARY_DIR "${${PKG_ARGS_NAME}_BINARY_DIR}" PARENT_SCOPE)
|
|
||||||
endfunction()
|
|
|
@ -63,4 +63,6 @@ function(copy_yuzu_Qt6_deps target_dir)
|
||||||
else()
|
else()
|
||||||
# Update for non-MSVC platforms if needed
|
# Update for non-MSVC platforms if needed
|
||||||
endif()
|
endif()
|
||||||
|
# Fixes dark mode being forced automatically even when light theme is set in app settings.
|
||||||
|
file(WRITE "${CMAKE_BINARY_DIR}/bin/${CMAKE_BUILD_TYPE}/qt.conf" "[Platforms]\nWindowsArguments = darkmode=0")
|
||||||
endfunction(copy_yuzu_Qt6_deps)
|
endfunction(copy_yuzu_Qt6_deps)
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
# remote_path: path to the file to download, relative to the remote repository root
|
# remote_path: path to the file to download, relative to the remote repository root
|
||||||
# prefix_var: name of a variable which will be set with the path to the extracted contents
|
# prefix_var: name of a variable which will be set with the path to the extracted contents
|
||||||
set(CURRENT_MODULE_DIR ${CMAKE_CURRENT_LIST_DIR})
|
set(CURRENT_MODULE_DIR ${CMAKE_CURRENT_LIST_DIR})
|
||||||
function(download_bundled_external remote_path lib_name cpm_key prefix_var version)
|
function(download_bundled_external remote_path lib_name cpm_key prefix_var)
|
||||||
set(package_base_url "https://github.com/eden-emulator/")
|
set(package_base_url "https://github.com/eden-emulator/")
|
||||||
set(package_repo "no_platform")
|
set(package_repo "no_platform")
|
||||||
set(package_extension "no_platform")
|
set(package_extension "no_platform")
|
||||||
|
@ -29,13 +29,13 @@ function(download_bundled_external remote_path lib_name cpm_key prefix_var versi
|
||||||
set(package_url "${package_base_url}${package_repo}")
|
set(package_url "${package_base_url}${package_repo}")
|
||||||
set(full_url ${package_url}${remote_path}${lib_name}${package_extension})
|
set(full_url ${package_url}${remote_path}${lib_name}${package_extension})
|
||||||
|
|
||||||
AddPackage(
|
set(CPM_USE_LOCAL_PACKAGES OFF)
|
||||||
|
|
||||||
|
CPMAddPackage(
|
||||||
NAME ${cpm_key}
|
NAME ${cpm_key}
|
||||||
VERSION ${version}
|
|
||||||
URL ${full_url}
|
URL ${full_url}
|
||||||
DOWNLOAD_ONLY YES
|
DOWNLOAD_ONLY YES
|
||||||
KEY ${CACHE_KEY}
|
CUSTOM_CACHE_KEY ${CACHE_KEY}
|
||||||
# TODO(crueter): hash
|
|
||||||
)
|
)
|
||||||
|
|
||||||
set(${prefix_var} "${${cpm_key}_SOURCE_DIR}" PARENT_SCOPE)
|
set(${prefix_var} "${${cpm_key}_SOURCE_DIR}" PARENT_SCOPE)
|
||||||
|
@ -46,11 +46,11 @@ function(download_win_archives)
|
||||||
set(FORCE_WIN_ARCHIVES ON)
|
set(FORCE_WIN_ARCHIVES ON)
|
||||||
set(FFmpeg_EXT_NAME "ffmpeg-7.1.1")
|
set(FFmpeg_EXT_NAME "ffmpeg-7.1.1")
|
||||||
|
|
||||||
download_bundled_external("ffmpeg/" ${FFmpeg_EXT_NAME} "ffmpeg-bundled" "" 7.1.1)
|
download_bundled_external("ffmpeg/" ${FFmpeg_EXT_NAME} "ffmpeg-bundled" "")
|
||||||
|
|
||||||
# TODO(crueter): separate handling for arm64
|
# TODO(crueter): separate handling for arm64
|
||||||
set(SDL2_VER "SDL2-2.32.8")
|
set(SDL2_VER "SDL2-2.32.8")
|
||||||
download_bundled_external("sdl2/" ${SDL2_VER} "sdl2-bundled" "" 2.32.8)
|
download_bundled_external("sdl2/" ${SDL2_VER} "sdl2-bundled" "")
|
||||||
set(FORCE_WIN_ARCHIVES OFF)
|
set(FORCE_WIN_ARCHIVES OFF)
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
|
|
|
@ -1,21 +0,0 @@
|
||||||
# SPDX-FileCopyrightText: 2025 Eden Emulator Project
|
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
||||||
|
|
||||||
get_property(NAMES GLOBAL PROPERTY CPM_PACKAGE_NAMES)
|
|
||||||
get_property(SHAS GLOBAL PROPERTY CPM_PACKAGE_SHAS)
|
|
||||||
get_property(URLS GLOBAL PROPERTY CPM_PACKAGE_URLS)
|
|
||||||
|
|
||||||
list(LENGTH NAMES DEPS_LENGTH)
|
|
||||||
|
|
||||||
list(JOIN NAMES "\",\n\t\"" DEP_NAME_DIRTY)
|
|
||||||
set(DEP_NAMES "\t\"${DEP_NAME_DIRTY}\"")
|
|
||||||
|
|
||||||
list(JOIN SHAS "\",\n\t\"" DEP_SHAS_DIRTY)
|
|
||||||
set(DEP_SHAS "\t\"${DEP_SHAS_DIRTY}\"")
|
|
||||||
|
|
||||||
list(JOIN URLS "\",\n\t\"" DEP_URLS_DIRTY)
|
|
||||||
set(DEP_URLS "\t\"${DEP_URLS_DIRTY}\"")
|
|
||||||
|
|
||||||
configure_file(dep_hashes.h.in dep_hashes.h @ONLY)
|
|
||||||
target_sources(common PUBLIC ${CMAKE_CURRENT_BINARY_DIR}/dep_hashes.h)
|
|
||||||
target_include_directories(common PUBLIC ${CMAKE_CURRENT_BINARY_DIR})
|
|
209
externals/CMakeLists.txt
vendored
209
externals/CMakeLists.txt
vendored
|
@ -5,7 +5,7 @@
|
||||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
# cpm
|
# cpm
|
||||||
include(CPMUtil)
|
include(CPM)
|
||||||
|
|
||||||
# Explicitly declare this option here to propagate to the oaknut CPM call
|
# Explicitly declare this option here to propagate to the oaknut CPM call
|
||||||
option(DYNARMIC_TESTS "Build tests" ${BUILD_TESTING})
|
option(DYNARMIC_TESTS "Build tests" ${BUILD_TESTING})
|
||||||
|
@ -29,6 +29,8 @@ endif()
|
||||||
|
|
||||||
# Xbyak (also used by Dynarmic, so needs to be added first)
|
# Xbyak (also used by Dynarmic, so needs to be added first)
|
||||||
if (ARCHITECTURE_x86 OR ARCHITECTURE_x86_64)
|
if (ARCHITECTURE_x86 OR ARCHITECTURE_x86_64)
|
||||||
|
set(CPM_USE_LOCAL_PACKAGES OFF)
|
||||||
|
|
||||||
if ("${CMAKE_SYSTEM_NAME}" STREQUAL "SunOS")
|
if ("${CMAKE_SYSTEM_NAME}" STREQUAL "SunOS")
|
||||||
# Fix regset.h collisions
|
# Fix regset.h collisions
|
||||||
set(XBYAK_HASH 51f507b0b3)
|
set(XBYAK_HASH 51f507b0b3)
|
||||||
|
@ -38,22 +40,22 @@ if (ARCHITECTURE_x86 OR ARCHITECTURE_x86_64)
|
||||||
set(XBYAK_SHA512SUM 5824e92159e07fa36a774aedd3b3ef3541d0241371d522cffa4ab3e1f215fa5097b1b77865b47b2481376c704fa079875557ea463ca63d0a7fd6a8a20a589e70)
|
set(XBYAK_SHA512SUM 5824e92159e07fa36a774aedd3b3ef3541d0241371d522cffa4ab3e1f215fa5097b1b77865b47b2481376c704fa079875557ea463ca63d0a7fd6a8a20a589e70)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
AddPackage(
|
CPMAddPackage(
|
||||||
NAME xbyak
|
NAME xbyak
|
||||||
REPO "Lizzie841/xbyak"
|
URL "https://github.com/Lizzie841/xbyak/archive/${XBYAK_HASH}.zip"
|
||||||
SHA ${XBYAK_HASH}
|
URL_HASH SHA512=${XBYAK_SHA512SUM}
|
||||||
HASH ${XBYAK_SHA512SUM}
|
CUSTOM_CACHE_KEY ${XBYAK_HASH}
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Oaknut (also used by Dynarmic, so needs to be added first)
|
# Oaknut (also used by Dynarmic, so needs to be added first)
|
||||||
if (ARCHITECTURE_arm64 OR DYNARMIC_TESTS)
|
if (ARCHITECTURE_arm64 OR DYNARMIC_TESTS)
|
||||||
AddPackage(
|
CPMAddPackage(
|
||||||
NAME oaknut
|
NAME oaknut
|
||||||
VERSION 2.0.1
|
VERSION 2.0.1
|
||||||
REPO "merryhime/oaknut"
|
URL "https://github.com/merryhime/oaknut/archive/94c726ce03.zip"
|
||||||
SHA 94c726ce03
|
URL_HASH SHA512=d8d082242fa1881abce3c82f8dafa002c4e561e66a69e7fc038af67faa5eff2630f082d3d19579c88c4c9f9488e54552accc8cb90e7ce743efe043b6230c08ac
|
||||||
HASH d8d082242fa1881abce3c82f8dafa002c4e561e66a69e7fc038af67faa5eff2630f082d3d19579c88c4c9f9488e54552accc8cb90e7ce743efe043b6230c08ac
|
CUSTOM_CACHE_KEY "94c7"
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
@ -67,14 +69,15 @@ add_subdirectory(glad)
|
||||||
|
|
||||||
# mbedtls
|
# mbedtls
|
||||||
# TODO(crueter): test local mbedtls
|
# TODO(crueter): test local mbedtls
|
||||||
AddPackage(
|
set(CPM_USE_LOCAL_PACKAGES ON)
|
||||||
|
|
||||||
|
CPMAddPackage(
|
||||||
NAME mbedtls
|
NAME mbedtls
|
||||||
REPO "Mbed-TLS/mbedtls"
|
URL "https://github.com/Mbed-TLS/mbedtls/archive/8c88150ca1.zip"
|
||||||
SHA "8c88150ca1"
|
URL_HASH SHA512=769ad1e94c570671071e1f2a5c0f1027e0bf6bcdd1a80ea8ac970f2c86bc45ce4e31aa88d6d8110fc1bed1de81c48bc624df1b38a26f8b340a44e109d784a966
|
||||||
HASH 769ad1e94c570671071e1f2a5c0f1027e0bf6bcdd1a80ea8ac970f2c86bc45ce4e31aa88d6d8110fc1bed1de81c48bc624df1b38a26f8b340a44e109d784a966
|
|
||||||
PATCHES
|
PATCHES
|
||||||
${CMAKE_SOURCE_DIR}/.patch/mbedtls/0001-cmake-version.patch
|
${CMAKE_SOURCE_DIR}/.patch/mbedtls/0001-cmake-version.patch
|
||||||
SYSTEM_PACKAGE ON
|
CUSTOM_CACHE_KEY "8c88"
|
||||||
)
|
)
|
||||||
|
|
||||||
if (mbedtls_ADDED)
|
if (mbedtls_ADDED)
|
||||||
|
@ -128,12 +131,11 @@ if (YUZU_USE_EXTERNAL_SDL2)
|
||||||
set(SDL_SHA512SUM d95af47f469a312876f8ab361074a1e7b8083db19935a102d9c6e5887ace6008e64475a8c54b00164b40cad86492bb1b2366084efdd0b2555e5fea6d9c5da80e)
|
set(SDL_SHA512SUM d95af47f469a312876f8ab361074a1e7b8083db19935a102d9c6e5887ace6008e64475a8c54b00164b40cad86492bb1b2366084efdd0b2555e5fea6d9c5da80e)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
AddPackage(
|
CPMAddPackage(
|
||||||
NAME SDL2
|
NAME SDL2
|
||||||
REPO "libsdl-org/SDL"
|
URL "https://github.com/libsdl-org/SDL/archive/${SDL_HASH}.zip"
|
||||||
SHA ${SDL_HASH}
|
URL_HASH SHA512=${SDL_SHA512SUM}
|
||||||
HASH ${SDL_SHA512SUM}
|
CUSTOM_CACHE_KEY "${YUZU_SYSTEM_PROFILE}"
|
||||||
KEY ${YUZU_SYSTEM_PROFILE}
|
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
@ -144,17 +146,18 @@ if (NOT TARGET enet::enet)
|
||||||
add_library(enet::enet ALIAS enet)
|
add_library(enet::enet ALIAS enet)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
AddPackage(
|
# TODO(crueter): Create a common CPMUtil.cmake that does this for me
|
||||||
|
set(CPM_USE_LOCAL_PACKAGES ON)
|
||||||
|
|
||||||
|
CPMAddPackage(
|
||||||
NAME cubeb
|
NAME cubeb
|
||||||
REPO "mozilla/cubeb"
|
URL "https://github.com/mozilla/cubeb/archive/fa02160712.zip"
|
||||||
SHA fa02160712
|
|
||||||
HASH 82d808356752e4064de48c8fecbe7856715ade1e76b53937116bf07129fc1cc5b3de5e4b408de3cd000187ba8dc32ca4109661cb7e0355a52e54bd81b9be1c61
|
|
||||||
FIND_PACKAGE_ARGUMENTS "CONFIG" # not sure this works outside of gentoo
|
FIND_PACKAGE_ARGUMENTS "CONFIG" # not sure this works outside of gentoo
|
||||||
OPTIONS
|
OPTIONS
|
||||||
"USE_SANITIZERS OFF"
|
"USE_SANITIZERS OFF"
|
||||||
"BUILD_TESTS OFF"
|
"BUILD_TESTS OFF"
|
||||||
"BUILD_TOOLS OFF"
|
"BUILD_TOOLS OFF"
|
||||||
SYSTEM_PACKAGE ON
|
CUSTOM_CACHE_KEY "fa02"
|
||||||
)
|
)
|
||||||
|
|
||||||
if (cubeb_ADDED)
|
if (cubeb_ADDED)
|
||||||
|
@ -181,17 +184,19 @@ endif()
|
||||||
|
|
||||||
# DiscordRPC
|
# DiscordRPC
|
||||||
if (USE_DISCORD_PRESENCE)
|
if (USE_DISCORD_PRESENCE)
|
||||||
AddPackage(
|
set(CPM_USE_LOCAL_PACKAGES OFF)
|
||||||
|
|
||||||
|
CPMAddPackage(
|
||||||
NAME discord-rpc
|
NAME discord-rpc
|
||||||
REPO "discord/discord-rpc"
|
URL "https://github.com/discord/discord-rpc/archive/963aa9f3e5.zip"
|
||||||
SHA 963aa9f3e5
|
URL_HASH SHA512=386e1344e9a666d730f2d335ee3aef1fd05b1039febefd51aa751b705009cc764411397f3ca08dffd46205c72f75b235c870c737b2091a4ed0c3b061f5919bde
|
||||||
HASH 386e1344e9a666d730f2d335ee3aef1fd05b1039febefd51aa751b705009cc764411397f3ca08dffd46205c72f75b235c870c737b2091a4ed0c3b061f5919bde
|
|
||||||
OPTIONS
|
OPTIONS
|
||||||
"BUILD_EXAMPLES OFF"
|
"BUILD_EXAMPLES OFF"
|
||||||
PATCHES
|
PATCHES
|
||||||
${CMAKE_SOURCE_DIR}/.patch/discord-rpc/0001-cmake-version.patch
|
${CMAKE_SOURCE_DIR}/.patch/discord-rpc/0001-cmake-version.patch
|
||||||
${CMAKE_SOURCE_DIR}/.patch/discord-rpc/0002-no-clang-format.patch
|
${CMAKE_SOURCE_DIR}/.patch/discord-rpc/0002-no-clang-format.patch
|
||||||
${CMAKE_SOURCE_DIR}/.patch/discord-rpc/0003-fix-cpp17.patch
|
${CMAKE_SOURCE_DIR}/.patch/discord-rpc/0003-fix-cpp17.patch
|
||||||
|
CUSTOM_CACHE_KEY "963a"
|
||||||
)
|
)
|
||||||
|
|
||||||
target_include_directories(discord-rpc INTERFACE ${discord-rpc_SOURCE_DIR}/include)
|
target_include_directories(discord-rpc INTERFACE ${discord-rpc_SOURCE_DIR}/include)
|
||||||
|
@ -200,68 +205,76 @@ endif()
|
||||||
|
|
||||||
# Sirit
|
# Sirit
|
||||||
# TODO(crueter): spirv-tools doesn't work w/ system
|
# TODO(crueter): spirv-tools doesn't work w/ system
|
||||||
AddPackage(
|
set(CPM_USE_LOCAL_PACKAGES OFF)
|
||||||
|
|
||||||
|
CPMAddPackage(
|
||||||
NAME SPIRV-Headers
|
NAME SPIRV-Headers
|
||||||
REPO "KhronosGroup/SPIRV-Headers"
|
URL "https://github.com/KhronosGroup/SPIRV-Headers/archive/4e209d3d7e.zip"
|
||||||
SHA 4e209d3d7e
|
URL_HASH SHA512=f48bbe18341ed55ea0fe280dbbbc0a44bf222278de6e716e143ca1e95ca320b06d4d23d6583fbf8d03e1428f3dac8fa00e5b82ddcd6b425e6236d85af09550a4
|
||||||
HASH f48bbe18341ed55ea0fe280dbbbc0a44bf222278de6e716e143ca1e95ca320b06d4d23d6583fbf8d03e1428f3dac8fa00e5b82ddcd6b425e6236d85af09550a4
|
CUSTOM_CACHE_KEY "4e20"
|
||||||
)
|
)
|
||||||
|
|
||||||
AddPackage(
|
set(CPM_USE_LOCAL_PACKAGES ON)
|
||||||
|
|
||||||
|
CPMAddPackage(
|
||||||
NAME sirit
|
NAME sirit
|
||||||
REPO "eden-emulator/sirit"
|
URL "https://github.com/raphaelthegreat/sirit/archive/51fcf9720f.zip"
|
||||||
SHA db1f1e8ab5
|
URL_HASH SHA512=a8f98ea0c51763b89924d836ad482ebdfe9130251cf4e14733ccaacc885ae8cc4c8b03d1dc43e8861609e5f7929c16f935879c1f6bf61866fd75077954774394
|
||||||
HASH 73eb3a042848c63a10656545797e85f40d142009dfb7827384548a385e1e28e1ac72f42b25924ce530d58275f8638554281e884d72f9c7aaf4ed08690a414b05
|
|
||||||
OPTIONS
|
OPTIONS
|
||||||
"SIRIT_USE_SYSTEM_SPIRV_HEADERS ON"
|
"SIRIT_USE_SYSTEM_SPIRV_HEADERS ON"
|
||||||
SYSTEM_PACKAGE ON
|
CUSTOM_CACHE_KEY "51fc"
|
||||||
)
|
)
|
||||||
|
|
||||||
# httplib
|
# httplib
|
||||||
if ((ENABLE_WEB_SERVICE OR ENABLE_QT_UPDATE_CHECKER))
|
if ((ENABLE_WEB_SERVICE OR ENABLE_QT_UPDATE_CHECKER))
|
||||||
AddPackage(
|
set(CPM_USE_LOCAL_PACKAGES ${YUZU_USE_SYSTEM_HTTPLIB})
|
||||||
|
|
||||||
|
# TODO(crueter): fix local package (gentoo?)
|
||||||
|
CPMAddPackage(
|
||||||
NAME httplib
|
NAME httplib
|
||||||
VERSION 0.12
|
VERSION 0.12
|
||||||
REPO "yhirose/cpp-httplib"
|
URL "https://github.com/yhirose/cpp-httplib/archive/a609330e4c.zip"
|
||||||
SHA a609330e4c
|
URL_HASH SHA512=dd3fd0572f8367d8549e1319fd98368b3e75801a293b0c3ac9b4adb806473a4506a484b3d389dc5bee5acc460cb90af7a20e5df705a1696b56496b30b9ce7ed2
|
||||||
HASH dd3fd0572f8367d8549e1319fd98368b3e75801a293b0c3ac9b4adb806473a4506a484b3d389dc5bee5acc460cb90af7a20e5df705a1696b56496b30b9ce7ed2
|
|
||||||
FIND_PACKAGE_ARGUMENTS "MODULE"
|
FIND_PACKAGE_ARGUMENTS "MODULE"
|
||||||
OPTIONS
|
OPTIONS
|
||||||
"HTTPLIB_REQUIRE_OPENSSL ON"
|
"HTTPLIB_REQUIRE_OPENSSL ON"
|
||||||
SYSTEM_PACKAGE ${YUZU_USE_SYSTEM_HTTPLIB}
|
CUSTOM_CACHE_KEY "a609"
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# cpp-jwt
|
# cpp-jwt
|
||||||
if (ENABLE_WEB_SERVICE)
|
if (ENABLE_WEB_SERVICE)
|
||||||
AddPackage(
|
set(CPM_USE_LOCAL_PACKAGES OFF)
|
||||||
|
|
||||||
|
CPMAddPackage(
|
||||||
NAME cpp-jwt
|
NAME cpp-jwt
|
||||||
VERSION 1.4
|
VERSION 1.4
|
||||||
REPO "arun11299/cpp-jwt"
|
URL "https://github.com/arun11299/cpp-jwt/archive/10ef5735d8.zip"
|
||||||
SHA 10ef5735d8
|
URL_HASH SHA512=ebba3d26b33a3b0aa909f475e099594560edbce10ecd03e76d7fea68549a28713ea606d363808f88a5495b62c54c3cdb7e47aee2d946eceabd36e310479dadb7
|
||||||
HASH ebba3d26b33a3b0aa909f475e099594560edbce10ecd03e76d7fea68549a28713ea606d363808f88a5495b62c54c3cdb7e47aee2d946eceabd36e310479dadb7
|
|
||||||
FIND_PACKAGE_ARGUMENTS "CONFIG"
|
FIND_PACKAGE_ARGUMENTS "CONFIG"
|
||||||
OPTIONS
|
OPTIONS
|
||||||
"CPP_JWT_BUILD_EXAMPLES OFF"
|
"CPP_JWT_BUILD_EXAMPLES OFF"
|
||||||
"CPP_JWT_BUILD_TESTS OFF"
|
"CPP_JWT_BUILD_TESTS OFF"
|
||||||
"CPP_JWT_USE_VENDORED_NLOHMANN_JSON OFF"
|
"CPP_JWT_USE_VENDORED_NLOHMANN_JSON OFF"
|
||||||
|
CUSTOM_CACHE_KEY "10ef"
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Opus
|
# Opus
|
||||||
AddPackage(
|
set(CPM_USE_LOCAL_PACKAGES ${YUZU_USE_SYSTEM_OPUS})
|
||||||
|
|
||||||
|
CPMAddPackage(
|
||||||
NAME Opus
|
NAME Opus
|
||||||
VERSION 1.3
|
VERSION 1.3
|
||||||
REPO "xiph/opus"
|
URL "https://github.com/xiph/opus/archive/5ded705cf4.zip"
|
||||||
SHA 5ded705cf4
|
URL_HASH SHA512=0dc89e58ddda1f3bc6a7037963994770c5806c10e66f5cc55c59286fc76d0544fe4eca7626772b888fd719f434bc8a92f792bdb350c807968b2ac14cfc04b203
|
||||||
HASH 0dc89e58ddda1f3bc6a7037963994770c5806c10e66f5cc55c59286fc76d0544fe4eca7626772b888fd719f434bc8a92f792bdb350c807968b2ac14cfc04b203
|
|
||||||
FIND_PACKAGE_ARGUMENTS "MODULE"
|
FIND_PACKAGE_ARGUMENTS "MODULE"
|
||||||
OPTIONS
|
OPTIONS
|
||||||
"OPUS_BUILD_TESTING OFF"
|
"OPUS_BUILD_TESTING OFF"
|
||||||
"OPUS_BUILD_PROGRAMS OFF"
|
"OPUS_BUILD_PROGRAMS OFF"
|
||||||
"OPUS_INSTALL_PKG_CONFIG_MODULE OFF"
|
"OPUS_INSTALL_PKG_CONFIG_MODULE OFF"
|
||||||
"OPUS_INSTALL_CMAKE_CONFIG_MODULE OFF"
|
"OPUS_INSTALL_CMAKE_CONFIG_MODULE OFF"
|
||||||
SYSTEM_PACKAGE ${YUZU_USE_SYSTEM_OPUS}
|
CUSTOM_CACHE_KEY "5ded"
|
||||||
)
|
)
|
||||||
|
|
||||||
# FFMpeg
|
# FFMpeg
|
||||||
|
@ -277,36 +290,31 @@ endif()
|
||||||
if (YUZU_USE_EXTERNAL_VULKAN_HEADERS)
|
if (YUZU_USE_EXTERNAL_VULKAN_HEADERS)
|
||||||
set(CPM_USE_LOCAL_PACKAGES OFF)
|
set(CPM_USE_LOCAL_PACKAGES OFF)
|
||||||
else()
|
else()
|
||||||
set(CPM_USE_LOCAL_PACKAGES OFF)
|
set(CPM_USE_LOCAL_PACKAGES ON)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# TODO(crueter): Vk1.4 impl
|
# TODO(crueter): System vk-headers are too new for externals vk-util
|
||||||
|
|
||||||
# TODO(crueter): allow sys packages?
|
CPMAddPackage(
|
||||||
AddPackage(
|
|
||||||
NAME VulkanHeaders
|
NAME VulkanHeaders
|
||||||
VERSION 1.3.274
|
VERSION 1.3.274
|
||||||
REPO "KhronosGroup/Vulkan-Headers"
|
URL "https://github.com/KhronosGroup/Vulkan-Headers/archive/89268a6d17.zip"
|
||||||
SHA 89268a6d17
|
URL_HASH SHA512=3ab349f74298ba72cafb8561015690c0674d428a09fb91ccd3cd3daca83650d190d46d33fd97b0a8fd4223fe6df2bcabae89136fbbf7c0bfeb8776f9448304c8
|
||||||
HASH 3ab349f74298ba72cafb8561015690c0674d428a09fb91ccd3cd3daca83650d190d46d33fd97b0a8fd4223fe6df2bcabae89136fbbf7c0bfeb8776f9448304c8
|
CUSTOM_CACHE_KEY "8926"
|
||||||
BUNDLED_PACKAGE ${YUZU_USE_EXTERNAL_VULKAN_HEADERS}
|
|
||||||
)
|
)
|
||||||
|
|
||||||
# CMake's interface generator sucks
|
# Vulkan-Utility-Libraries
|
||||||
if (VulkanHeaders_ADDED)
|
if (YUZU_USE_EXTERNAL_VULKAN_UTILITY_LIBRARIES)
|
||||||
target_include_directories(Vulkan-Headers INTERFACE ${VulkanHeaders_SOURCE_DIR}/include)
|
set(CPM_USE_LOCAL_PACKAGES OFF)
|
||||||
|
else()
|
||||||
|
set(CPM_USE_LOCAL_PACKAGES ON)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(VulkanHeaders_SOURCE_DIR "${VulkanHeaders_SOURCE_DIR}" PARENT_SCOPE)
|
CPMAddPackage(
|
||||||
set(VulkanHeaders_ADDED "${VulkanHeaders_ADDED}" PARENT_SCOPE)
|
|
||||||
|
|
||||||
# Vulkan-Utility-Libraries
|
|
||||||
AddPackage(
|
|
||||||
NAME VulkanUtilityLibraries
|
NAME VulkanUtilityLibraries
|
||||||
REPO "KhronosGroup/Vulkan-Utility-Libraries"
|
URL "https://github.com/KhronosGroup/Vulkan-Utility-Libraries/archive/df2e358152.zip"
|
||||||
SHA df2e358152
|
URL_HASH SHA512=3e468c3d9ff93f6d418d71e5527abe0a12c8c7ab5b0b52278bbbee4d02bb87e99073906729b727e0147242b7e3fd5dedf68b803f1878cb4c0e4f730bc2238d79
|
||||||
HASH 3e468c3d9ff93f6d418d71e5527abe0a12c8c7ab5b0b52278bbbee4d02bb87e99073906729b727e0147242b7e3fd5dedf68b803f1878cb4c0e4f730bc2238d79
|
CUSTOM_CACHE_KEY "df2e"
|
||||||
BUNDLED_PACKAGE ${YUZU_USE_EXTERNAL_VULKAN_UTILITY_LIBRARIES}
|
|
||||||
)
|
)
|
||||||
|
|
||||||
set(VulkanUtilityLibraries_SOURCE_DIR "${VulkanUtilityLibraries_SOURCE_DIR}" PARENT_SCOPE)
|
set(VulkanUtilityLibraries_SOURCE_DIR "${VulkanUtilityLibraries_SOURCE_DIR}" PARENT_SCOPE)
|
||||||
|
@ -314,35 +322,38 @@ set(VulkanUtilityLibraries_ADDED "${VulkanUtilityLibraries_ADDED}" PARENT_SCOPE)
|
||||||
|
|
||||||
# SPIRV-Tools
|
# SPIRV-Tools
|
||||||
if (YUZU_USE_EXTERNAL_VULKAN_SPIRV_TOOLS)
|
if (YUZU_USE_EXTERNAL_VULKAN_SPIRV_TOOLS)
|
||||||
AddPackage(
|
CPMAddPackage(
|
||||||
NAME SPIRV-Tools
|
NAME SPIRV-Tools
|
||||||
REPO "KhronosGroup/SPIRV-Tools"
|
URL "https://github.com/KhronosGroup/SPIRV-Tools/archive/40eb301f32.zip"
|
||||||
SHA 40eb301f32
|
URL_HASH SHA512=58d0fb1047d69373cf24c73e6f78c73a72a6cca3b4df1d9f083b9dcc0962745ef154abf3dbe9b3623b835be20c6ec769431cf11733349f45e7568b3525f707aa
|
||||||
HASH 58d0fb1047d69373cf24c73e6f78c73a72a6cca3b4df1d9f083b9dcc0962745ef154abf3dbe9b3623b835be20c6ec769431cf11733349f45e7568b3525f707aa
|
|
||||||
OPTIONS
|
OPTIONS
|
||||||
"SPIRV_SKIP_EXECUTABLES ON"
|
"SPIRV_SKIP_EXECUTABLES ON"
|
||||||
|
CUSTOM_CACHE_KEY "40eb"
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Boost headers
|
# Boost headers
|
||||||
AddPackage(
|
set(CPM_USE_LOCAL_PACKAGES OFF)
|
||||||
|
|
||||||
|
CPMAddPackage(
|
||||||
NAME boost_headers
|
NAME boost_headers
|
||||||
REPO "boostorg/headers"
|
URL "https://github.com/boostorg/headers/archive/0456900fad.zip"
|
||||||
SHA 0456900fad
|
URL_HASH SHA512=50cd75dcdfc5f082225cdace058f47b4fb114a47585f7aee1d22236a910a80b667186254c214fa2fcebac67ae6d37ba4b6e695e1faea8affd6fd42a03cf996e3
|
||||||
HASH 50cd75dcdfc5f082225cdace058f47b4fb114a47585f7aee1d22236a910a80b667186254c214fa2fcebac67ae6d37ba4b6e695e1faea8affd6fd42a03cf996e3
|
CUSTOM_CACHE_KEY "0456"
|
||||||
)
|
)
|
||||||
|
|
||||||
# TZDB (Time Zone Database)
|
# TZDB (Time Zone Database)
|
||||||
add_subdirectory(nx_tzdb)
|
add_subdirectory(nx_tzdb)
|
||||||
|
|
||||||
# VMA
|
# VMA
|
||||||
AddPackage(
|
set(CPM_USE_LOCAL_PACKAGES ON)
|
||||||
|
|
||||||
|
CPMAddPackage(
|
||||||
NAME VulkanMemoryAllocator
|
NAME VulkanMemoryAllocator
|
||||||
REPO "GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator"
|
URL "https://github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator/archive/1076b348ab.zip"
|
||||||
SHA 1076b348ab
|
URL_HASH SHA512=a46b44e4286d08cffda058e856c47f44c7fed3da55fe9555976eb3907fdcc20ead0b1860b0c38319cda01dbf9b1aa5d4b4038c7f1f8fbd97283d837fa9af9772
|
||||||
HASH a46b44e4286d08cffda058e856c47f44c7fed3da55fe9555976eb3907fdcc20ead0b1860b0c38319cda01dbf9b1aa5d4b4038c7f1f8fbd97283d837fa9af9772
|
|
||||||
FIND_PACKAGE_ARGUMENTS "CONFIG"
|
FIND_PACKAGE_ARGUMENTS "CONFIG"
|
||||||
# SYSTEM_PACKAGE ON
|
CUSTOM_CACHE_KEY "1076"
|
||||||
)
|
)
|
||||||
|
|
||||||
set(VulkanMemoryAllocator_SOURCE_DIR "${VulkanMemoryAllocator_SOURCE_DIR}" PARENT_SCOPE)
|
set(VulkanMemoryAllocator_SOURCE_DIR "${VulkanMemoryAllocator_SOURCE_DIR}" PARENT_SCOPE)
|
||||||
|
@ -378,13 +389,15 @@ endif()
|
||||||
|
|
||||||
if (ANDROID)
|
if (ANDROID)
|
||||||
if (ARCHITECTURE_arm64)
|
if (ARCHITECTURE_arm64)
|
||||||
AddPackage(
|
set(CPM_USE_LOCAL_PACKAGES OFF)
|
||||||
|
|
||||||
|
CPMAddPackage(
|
||||||
NAME libadrenotools
|
NAME libadrenotools
|
||||||
REPO "bylaws/libadrenotools"
|
URL "https://github.com/bylaws/libadrenotools/archive/8fae8ce254.zip"
|
||||||
SHA 8fae8ce254
|
URL_HASH SHA512=c74fa855f0edebbf25c9bce40b00966daa2447bfc5e15f0cf1a95f86cbf70fc6b02590707edbde16328a0a2a4fb9a1fc419d2dfc22a4a4150971be91892d4edb
|
||||||
HASH c74fa855f0edebbf25c9bce40b00966daa2447bfc5e15f0cf1a95f86cbf70fc6b02590707edbde16328a0a2a4fb9a1fc419d2dfc22a4a4150971be91892d4edb
|
|
||||||
PATCHES
|
PATCHES
|
||||||
${CMAKE_SOURCE_DIR}/.patch/libadrenotools/0001-linkerns-cpm.patch
|
${CMAKE_SOURCE_DIR}/.patch/libadrenotools/0001-linkerns-cpm.patch
|
||||||
|
CUSTOM_CACHE_KEY "8fae"
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
@ -409,12 +422,13 @@ if (YUZU_CRASH_DUMPS AND NOT TARGET libbreakpad_client)
|
||||||
_CRT_NONSTDC_NO_DEPRECATE
|
_CRT_NONSTDC_NO_DEPRECATE
|
||||||
)
|
)
|
||||||
|
|
||||||
AddPackage(
|
set(CPM_USE_LOCAL_PACKAGES OFF)
|
||||||
|
CPMAddPackage(
|
||||||
NAME breakpad
|
NAME breakpad
|
||||||
URL "google/breakpad"
|
URL "https://github.com/google/breakpad/archive/f80f288803.zip"
|
||||||
SHA f80f288803
|
URL_HASH SHA512=4a87ee88cea99bd633d52a5b00135a649f1475e3b65db325a6df9c804ab82b054ad7e62419b35f6e22cc5dfbbb569214041d7ad5d10fab10106e700bb5050e1d
|
||||||
HASH 4a87ee88cea99bd633d52a5b00135a649f1475e3b65db325a6df9c804ab82b054ad7e62419b35f6e22cc5dfbbb569214041d7ad5d10fab10106e700bb5050e1d
|
|
||||||
DOWNLOAD_ONLY YES
|
DOWNLOAD_ONLY YES
|
||||||
|
CUSTOM_CACHE_KEY "f80f"
|
||||||
)
|
)
|
||||||
|
|
||||||
# libbreakpad
|
# libbreakpad
|
||||||
|
@ -514,11 +528,14 @@ endif()
|
||||||
|
|
||||||
# oboe
|
# oboe
|
||||||
if (ANDROID)
|
if (ANDROID)
|
||||||
AddPackage(
|
set(CPM_USE_LOCAL_PACKAGES ON)
|
||||||
|
CPMAddPackage(
|
||||||
NAME oboe
|
NAME oboe
|
||||||
REPO "google/oboe"
|
URL "https://github.com/google/oboe/archive/2bc873e53c.zip"
|
||||||
SHA 2bc873e53c
|
URL_HASH SHA512=02329058a7f9cf7d5039afaae5ab170d9f42f60f4c01e21eaf4f46073886922b057a9ae30eeac040b3ac182f51b9c1bfe9fe1050a2c9f6ce567a1a9a0ec2c768
|
||||||
HASH 02329058a7f9cf7d5039afaae5ab170d9f42f60f4c01e21eaf4f46073886922b057a9ae30eeac040b3ac182f51b9c1bfe9fe1050a2c9f6ce567a1a9a0ec2c768
|
OPTIONS
|
||||||
|
"SPIRV_SKIP_EXECUTABLES ON"
|
||||||
|
CUSTOM_CACHE_KEY "2bc8"
|
||||||
)
|
)
|
||||||
|
|
||||||
add_library(oboe::oboe ALIAS oboe)
|
add_library(oboe::oboe ALIAS oboe)
|
||||||
|
|
15
externals/ffmpeg/CMakeLists.txt
vendored
15
externals/ffmpeg/CMakeLists.txt
vendored
|
@ -19,11 +19,14 @@ if (NOT WIN32 AND NOT ANDROID)
|
||||||
message(FATAL_ERROR "Required program `autoconf` not found.")
|
message(FATAL_ERROR "Required program `autoconf` not found.")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
AddPackage(
|
include(CPM)
|
||||||
|
set(CPM_USE_LOCAL_PACKAGES OFF)
|
||||||
|
|
||||||
|
CPMAddPackage(
|
||||||
NAME ffmpeg
|
NAME ffmpeg
|
||||||
REPO "FFmpeg/FFmpeg"
|
URL "https://github.com/FFmpeg/FFmpeg/archive/c2184b65d2.zip"
|
||||||
SHA c2184b65d2
|
URL_HASH SHA512=2a89d664119debbb3c006ab1c48d5d7f26e889f4a65ad2e25c8b0503308295123d5a9c5c78bf683aef5ff09acef8c3fc2837f22d3e8c611528b933bf03bcdd97
|
||||||
HASH 2a89d664119debbb3c006ab1c48d5d7f26e889f4a65ad2e25c8b0503308295123d5a9c5c78bf683aef5ff09acef8c3fc2837f22d3e8c611528b933bf03bcdd97
|
CUSTOM_CACHE_KEY "c218"
|
||||||
)
|
)
|
||||||
|
|
||||||
set(FFmpeg_PREFIX ${ffmpeg_SOURCE_DIR})
|
set(FFmpeg_PREFIX ${ffmpeg_SOURCE_DIR})
|
||||||
|
@ -240,7 +243,7 @@ elseif(ANDROID)
|
||||||
message(FATAL_ERROR "Unsupported architecture for Android FFmpeg")
|
message(FATAL_ERROR "Unsupported architecture for Android FFmpeg")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
download_bundled_external("ffmpeg/" ${FFmpeg_EXT_NAME} "ffmpeg-bundled" FFmpeg_PATH 7.1.1)
|
download_bundled_external("ffmpeg/" ${FFmpeg_EXT_NAME} "ffmpeg-bundled" FFmpeg_PATH)
|
||||||
set(FFmpeg_FOUND YES)
|
set(FFmpeg_FOUND YES)
|
||||||
set(FFmpeg_INCLUDE_DIR "${FFmpeg_PATH}/include" CACHE PATH "Path to FFmpeg headers" FORCE)
|
set(FFmpeg_INCLUDE_DIR "${FFmpeg_PATH}/include" CACHE PATH "Path to FFmpeg headers" FORCE)
|
||||||
set(FFmpeg_LIBRARY_DIR "${FFmpeg_PATH}/lib" CACHE PATH "Path to FFmpeg library directory" FORCE)
|
set(FFmpeg_LIBRARY_DIR "${FFmpeg_PATH}/lib" CACHE PATH "Path to FFmpeg library directory" FORCE)
|
||||||
|
@ -265,7 +268,7 @@ elseif(WIN32)
|
||||||
# Use yuzu FFmpeg binaries
|
# Use yuzu FFmpeg binaries
|
||||||
set(FFmpeg_EXT_NAME "ffmpeg-7.1.1")
|
set(FFmpeg_EXT_NAME "ffmpeg-7.1.1")
|
||||||
|
|
||||||
download_bundled_external("ffmpeg/" ${FFmpeg_EXT_NAME} "ffmpeg-bundled" FFmpeg_PATH 7.1.1)
|
download_bundled_external("ffmpeg/" ${FFmpeg_EXT_NAME} "ffmpeg-bundled" FFmpeg_PATH)
|
||||||
set(FFmpeg_FOUND YES)
|
set(FFmpeg_FOUND YES)
|
||||||
set(FFmpeg_INCLUDE_DIR "${FFmpeg_PATH}/include" CACHE PATH "Path to FFmpeg headers" FORCE)
|
set(FFmpeg_INCLUDE_DIR "${FFmpeg_PATH}/include" CACHE PATH "Path to FFmpeg headers" FORCE)
|
||||||
set(FFmpeg_LIBRARY_DIR "${FFmpeg_PATH}/bin" CACHE PATH "Path to FFmpeg library directory" FORCE)
|
set(FFmpeg_LIBRARY_DIR "${FFmpeg_PATH}/bin" CACHE PATH "Path to FFmpeg library directory" FORCE)
|
||||||
|
|
|
@ -232,5 +232,3 @@ if (ANDROID)
|
||||||
add_subdirectory(android/app/src/main/jni)
|
add_subdirectory(android/app/src/main/jni)
|
||||||
target_include_directories(yuzu-android PRIVATE android/app/src/main)
|
target_include_directories(yuzu-android PRIVATE android/app/src/main)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
include(GenerateDepHashes)
|
|
||||||
|
|
|
@ -51,7 +51,6 @@ enum class BooleanSetting(override val key: String) : AbstractBooleanSetting {
|
||||||
|
|
||||||
ENABLE_RAII("enable_raii"),
|
ENABLE_RAII("enable_raii"),
|
||||||
FRAME_INTERPOLATION("frame_interpolation"),
|
FRAME_INTERPOLATION("frame_interpolation"),
|
||||||
// FRAME_SKIPPING("frame_skipping"),
|
|
||||||
|
|
||||||
PERF_OVERLAY_BACKGROUND("perf_overlay_background"),
|
PERF_OVERLAY_BACKGROUND("perf_overlay_background"),
|
||||||
SHOW_PERFORMANCE_OVERLAY("show_performance_overlay"),
|
SHOW_PERFORMANCE_OVERLAY("show_performance_overlay"),
|
||||||
|
@ -68,8 +67,6 @@ enum class BooleanSetting(override val key: String) : AbstractBooleanSetting {
|
||||||
USE_LRU_CACHE("use_lru_cache");
|
USE_LRU_CACHE("use_lru_cache");
|
||||||
|
|
||||||
external fun isRaiiEnabled(): Boolean
|
external fun isRaiiEnabled(): Boolean
|
||||||
// external fun isFrameSkippingEnabled(): Boolean
|
|
||||||
external fun isFrameInterpolationEnabled(): Boolean
|
|
||||||
|
|
||||||
override fun getBoolean(needsGlobal: Boolean): Boolean =
|
override fun getBoolean(needsGlobal: Boolean): Boolean =
|
||||||
NativeConfig.getBoolean(key, needsGlobal)
|
NativeConfig.getBoolean(key, needsGlobal)
|
||||||
|
|
|
@ -234,15 +234,6 @@ abstract class SettingsItem(
|
||||||
descriptionId = R.string.frame_interpolation_description
|
descriptionId = R.string.frame_interpolation_description
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
// put(
|
|
||||||
// SwitchSetting(
|
|
||||||
// BooleanSetting.FRAME_SKIPPING,
|
|
||||||
// titleId = R.string.frame_skipping,
|
|
||||||
// descriptionId = R.string.frame_skipping_description
|
|
||||||
// )
|
|
||||||
// )
|
|
||||||
|
|
||||||
put(
|
put(
|
||||||
SwitchSetting(
|
SwitchSetting(
|
||||||
dockedModeSetting,
|
dockedModeSetting,
|
||||||
|
|
|
@ -1,6 +1,3 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
|
||||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
||||||
|
|
||||||
// SPDX-FileCopyrightText: 2025 Eden Emulator Project
|
// SPDX-FileCopyrightText: 2025 Eden Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
|
@ -94,8 +91,7 @@ class AboutFragment : Fragment() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
binding.buttonDiscord.setOnClickListener { openLink(getString(R.string.discord_link)) }
|
binding.buttonDiscord.setOnClickListener { openLink(getString(R.string.support_link)) }
|
||||||
binding.buttonRevolt.setOnClickListener { openLink(getString(R.string.revolt_link)) }
|
|
||||||
binding.buttonWebsite.setOnClickListener { openLink(getString(R.string.website_link)) }
|
binding.buttonWebsite.setOnClickListener { openLink(getString(R.string.website_link)) }
|
||||||
binding.buttonGithub.setOnClickListener { openLink(getString(R.string.github_link)) }
|
binding.buttonGithub.setOnClickListener { openLink(getString(R.string.github_link)) }
|
||||||
|
|
||||||
|
|
|
@ -894,7 +894,6 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {
|
||||||
if (BooleanSetting.SHOW_FPS.getBoolean(needsGlobal)) {
|
if (BooleanSetting.SHOW_FPS.getBoolean(needsGlobal)) {
|
||||||
val enableFrameInterpolation =
|
val enableFrameInterpolation =
|
||||||
BooleanSetting.FRAME_INTERPOLATION.getBoolean()
|
BooleanSetting.FRAME_INTERPOLATION.getBoolean()
|
||||||
// val enableFrameSkipping = BooleanSetting.FRAME_SKIPPING.getBoolean()
|
|
||||||
|
|
||||||
var fpsText = String.format("FPS: %.1f", actualFps)
|
var fpsText = String.format("FPS: %.1f", actualFps)
|
||||||
|
|
||||||
|
@ -902,10 +901,6 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {
|
||||||
fpsText += " " + getString(R.string.enhanced_fps_suffix)
|
fpsText += " " + getString(R.string.enhanced_fps_suffix)
|
||||||
}
|
}
|
||||||
|
|
||||||
// if (enableFrameSkipping) {
|
|
||||||
// fpsText += " " + getString(R.string.skipping_fps_suffix)
|
|
||||||
// }
|
|
||||||
|
|
||||||
sb.append(fpsText)
|
sb.append(fpsText)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,6 @@
|
||||||
|
|
||||||
package org.yuzu.yuzu_emu.ui
|
package org.yuzu.yuzu_emu.ui
|
||||||
|
|
||||||
import android.annotation.SuppressLint
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.content.res.Configuration
|
import android.content.res.Configuration
|
||||||
|
@ -95,7 +94,6 @@ class GamesFragment : Fragment() {
|
||||||
return binding.root
|
return binding.root
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressLint("NotifyDataSetChanged")
|
|
||||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
homeViewModel.setStatusBarShadeVisibility(true)
|
homeViewModel.setStatusBarShadeVisibility(true)
|
||||||
|
|
|
@ -1,15 +0,0 @@
|
||||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
android:width="108dp"
|
|
||||||
android:height="108dp"
|
|
||||||
android:viewportWidth="108"
|
|
||||||
android:viewportHeight="108">
|
|
||||||
<!-- Scaling isn't perfect but I spent like 10 minutes trying to calculate this and I'm tired -->
|
|
||||||
<group
|
|
||||||
android:scaleX="2.987"
|
|
||||||
android:scaleY="2.987"
|
|
||||||
android:translateX="-107.15"
|
|
||||||
android:translateY="-109.35">
|
|
||||||
<path
|
|
||||||
android:pathData="M42.7,71.38C42.7,60.74 42.7,53.76 42.7,44.7L35.91,36.62H57.87C60.48,36.62 62.77,37.09 64.72,38.03C66.68,38.97 68.2,40.32 69.29,42.08C70.37,43.85 70.92,45.97 70.92,48.43C70.92,50.92 70.36,53.02 69.24,54.73C68.13,56.44 66.56,57.73 64.55,58.6C62.55,59.47 60.21,59.91 57.53,59.91H48.47V52.57H55.61C56.73,52.57 57.69,52.44 58.47,52.17C59.28,51.88 59.89,51.44 60.31,50.83C60.75,50.21 60.96,49.42 60.96,48.43C60.96,47.44 60.75,46.63 60.31,46C59.89,45.37 59.28,44.91 58.47,44.61C57.69,44.31 56.73,44.15 55.61,44.15H52.24V71.38H42.7ZM63.3,55.43L72.09,71.38H61.72L53.14,55.43H63.3Z"
|
|
||||||
android:fillColor="#FF005C"/>
|
|
||||||
</group></vector>
|
|
|
@ -219,17 +219,6 @@
|
||||||
app:iconSize="24dp"
|
app:iconSize="24dp"
|
||||||
app:iconPadding="0dp" />
|
app:iconPadding="0dp" />
|
||||||
|
|
||||||
<com.google.android.material.button.MaterialButton
|
|
||||||
android:id="@+id/button_revolt"
|
|
||||||
style="@style/EdenButton.Secondary"
|
|
||||||
android:layout_width="56dp"
|
|
||||||
android:layout_height="56dp"
|
|
||||||
android:layout_marginEnd="12dp"
|
|
||||||
app:icon="@drawable/ic_revolt"
|
|
||||||
app:iconGravity="textStart"
|
|
||||||
app:iconSize="24dp"
|
|
||||||
app:iconPadding="0dp" />
|
|
||||||
|
|
||||||
<com.google.android.material.button.MaterialButton
|
<com.google.android.material.button.MaterialButton
|
||||||
android:id="@+id/button_website"
|
android:id="@+id/button_website"
|
||||||
style="@style/EdenButton.Secondary"
|
style="@style/EdenButton.Secondary"
|
||||||
|
|
|
@ -66,7 +66,7 @@
|
||||||
android:orientation="vertical">
|
android:orientation="vertical">
|
||||||
|
|
||||||
<com.google.android.material.textview.MaterialTextView
|
<com.google.android.material.textview.MaterialTextView
|
||||||
style="@style/TextAppearance.Material3.TitleMedium"
|
style="@style/SynthwaveText.Header"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:textAlignment="viewStart"
|
android:textAlignment="viewStart"
|
||||||
|
@ -101,7 +101,7 @@
|
||||||
android:orientation="vertical">
|
android:orientation="vertical">
|
||||||
|
|
||||||
<com.google.android.material.textview.MaterialTextView
|
<com.google.android.material.textview.MaterialTextView
|
||||||
style="@style/TextAppearance.Material3.TitleMedium"
|
style="@style/SynthwaveText.Header"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:textAlignment="viewStart"
|
android:textAlignment="viewStart"
|
||||||
|
@ -213,18 +213,6 @@
|
||||||
app:iconGravity="textStart"
|
app:iconGravity="textStart"
|
||||||
app:iconPadding="0dp" />
|
app:iconPadding="0dp" />
|
||||||
|
|
||||||
<com.google.android.material.button.MaterialButton
|
|
||||||
style="@style/EdenButton.Secondary"
|
|
||||||
android:id="@+id/button_revolt"
|
|
||||||
android:layout_width="0dp"
|
|
||||||
android:layout_height="56dp"
|
|
||||||
android:layout_weight="1"
|
|
||||||
android:layout_marginEnd="8dp"
|
|
||||||
app:icon="@drawable/ic_revolt"
|
|
||||||
app:iconSize="24dp"
|
|
||||||
app:iconGravity="textStart"
|
|
||||||
app:iconPadding="0dp" />
|
|
||||||
|
|
||||||
<com.google.android.material.button.MaterialButton
|
<com.google.android.material.button.MaterialButton
|
||||||
style="@style/EdenButton.Secondary"
|
style="@style/EdenButton.Secondary"
|
||||||
android:id="@+id/button_website"
|
android:id="@+id/button_website"
|
||||||
|
|
|
@ -71,8 +71,6 @@
|
||||||
<string name="eden_veil_description">إعدادات تجريبية لتحسين الأداء والقدرة. قد تسبب هذه الإعدادات شاشات سوداء أو مشاكل أخرى في اللعبة.</string>
|
<string name="eden_veil_description">إعدادات تجريبية لتحسين الأداء والقدرة. قد تسبب هذه الإعدادات شاشات سوداء أو مشاكل أخرى في اللعبة.</string>
|
||||||
<string name="eden_veil_warning_title">إعدادات تجريبية</string>
|
<string name="eden_veil_warning_title">إعدادات تجريبية</string>
|
||||||
<string name="eden_veil_warning_description">الإعدادات الموجودة في حجاب عدن تجريبية جداً وقد تسبب مشاكل. إذا لم تعمل اللعبة، قم بتعطيل جميع الامتدادات.</string>
|
<string name="eden_veil_warning_description">الإعدادات الموجودة في حجاب عدن تجريبية جداً وقد تسبب مشاكل. إذا لم تعمل اللعبة، قم بتعطيل جميع الامتدادات.</string>
|
||||||
<string name="frame_skipping">قيد التطوير: تخطي الإطارات</string>
|
|
||||||
<string name="frame_skipping_description">تبديل تخطي الإطارات لتحسين الأداء عن طريق تقليل عدد الإطارات المعروضة. هذه الميزة قيد التطوير وسيتم تمكينها في الإصدارات المستقبلية.</string>
|
|
||||||
<string name="frame_interpolation">تحسين توقيت الإطارات</string>
|
<string name="frame_interpolation">تحسين توقيت الإطارات</string>
|
||||||
<string name="frame_interpolation_description">يضمن تسليمًا سلسًا ومتناسقًا للإطارات من خلال مزامنة التوقيت بينها، مما يقلل من التقطيع وعدم انتظام الحركة. مثالي للألعاب التي تعاني من عدم استقرار في توقيت الإطارات أو تقطع دقيق أثناء اللعب.</string>
|
<string name="frame_interpolation_description">يضمن تسليمًا سلسًا ومتناسقًا للإطارات من خلال مزامنة التوقيت بينها، مما يقلل من التقطيع وعدم انتظام الحركة. مثالي للألعاب التي تعاني من عدم استقرار في توقيت الإطارات أو تقطع دقيق أثناء اللعب.</string>
|
||||||
<string name="renderer_early_release_fences">إطلاق الأسوار مبكرًا</string>
|
<string name="renderer_early_release_fences">إطلاق الأسوار مبكرًا</string>
|
||||||
|
|
|
@ -72,8 +72,6 @@
|
||||||
<string name="eden_veil_description">ڕێکخستنە تاقیکارییەکان بۆ باشترکردنی کارایی و توانا. ئەم ڕێکخستنانە لەوانەیە ببێتە هۆی شاشە ڕەشەکان یان کێشەیتری یاری.</string>
|
<string name="eden_veil_description">ڕێکخستنە تاقیکارییەکان بۆ باشترکردنی کارایی و توانا. ئەم ڕێکخستنانە لەوانەیە ببێتە هۆی شاشە ڕەشەکان یان کێشەیتری یاری.</string>
|
||||||
<string name="eden_veil_warning_title">ڕێکخستنە تاقیکارییەکان</string>
|
<string name="eden_veil_warning_title">ڕێکخستنە تاقیکارییەکان</string>
|
||||||
<string name="eden_veil_warning_description">ڕێکخستنەکانی ناو پردی عەدن زۆر تاقیکارییە و ڕەنگە کێشە دروست بکات. ئەگەر یارییەکەت کارینەکات، هەموو زیادکراوەکان ناچالاک بکە.</string>
|
<string name="eden_veil_warning_description">ڕێکخستنەکانی ناو پردی عەدن زۆر تاقیکارییە و ڕەنگە کێشە دروست بکات. ئەگەر یارییەکەت کارینەکات، هەموو زیادکراوەکان ناچالاک بکە.</string>
|
||||||
<string name="frame_skipping">قيد التطوير: تخطي الإطارات</string>
|
|
||||||
<string name="frame_skipping_description">تێپەڕاندنی فرەیمەکان بکە بۆ باشترکردنی کارایی بە کەمکردنەوەی ژمارەی فرەیمە ڕێندرکراوەکان. ئەم تایبەتمەندییە هێشتا کاردەکرێت و لە وەشانە داهاتووەکاندا چالاکدەکرێت.</string>
|
|
||||||
<string name="frame_interpolation">تحسين توقيت الإطارات</string>
|
<string name="frame_interpolation">تحسين توقيت الإطارات</string>
|
||||||
<string name="frame_interpolation_description">يضمن تسليمًا سلسًا ومتناسقًا للإطارات من خلال مزامنة التوقيت بينها، مما يقلل من التقطيع وعدم انتظام الحركة. مثالي للألعاب التي تعاني من عدم استقرار في توقيت الإطارات أو تقطع دقيق أثناء اللعب.</string>
|
<string name="frame_interpolation_description">يضمن تسليمًا سلسًا ومتناسقًا للإطارات من خلال مزامنة التوقيت بينها، مما يقلل من التقطيع وعدم انتظام الحركة. مثالي للألعاب التي تعاني من عدم استقرار في توقيت الإطارات أو تقطع دقيق أثناء اللعب.</string>
|
||||||
<string name="renderer_early_release_fences">زێدەکردنی پەرستارەکان زووتر</string>
|
<string name="renderer_early_release_fences">زێدەکردنی پەرستارەکان زووتر</string>
|
||||||
|
|
|
@ -71,8 +71,6 @@
|
||||||
<string name="eden_veil_description">Experimentální nastavení pro zlepšení výkonu a schopností. Tato nastavení mohou způsobit černé obrazovky nebo další herní problémy.</string>
|
<string name="eden_veil_description">Experimentální nastavení pro zlepšení výkonu a schopností. Tato nastavení mohou způsobit černé obrazovky nebo další herní problémy.</string>
|
||||||
<string name="eden_veil_warning_title">Experimentální nastavení</string>
|
<string name="eden_veil_warning_title">Experimentální nastavení</string>
|
||||||
<string name="eden_veil_warning_description">Nastavení obsažená v Edenově závoji jsou vysoce experimentální a mohou způsobit problémy. Pokud se vaše hra nespustí, deaktivujte všechna rozšíření.</string>
|
<string name="eden_veil_warning_description">Nastavení obsažená v Edenově závoji jsou vysoce experimentální a mohou způsobit problémy. Pokud se vaše hra nespustí, deaktivujte všechna rozšíření.</string>
|
||||||
<string name="frame_skipping">WIP: Přeskočení snímků</string>
|
|
||||||
<string name="frame_skipping_description">Přepínání přeskočení snímků pro zlepšení výkonu snížením počtu vykreslených snímků. Tato funkce je stále ve vývoji a bude povolena v budoucích verzích.</string>
|
|
||||||
<string name="frame_interpolation">Vylepšené časování snímků</string>
|
<string name="frame_interpolation">Vylepšené časování snímků</string>
|
||||||
<string name="frame_interpolation_description">Zajišťuje plynulé a konzistentní zobrazování snímků synchronizací jejich časování, čímž snižuje trhání a nerovnoměrné animace. Ideální pro hry, které trpí nestabilitou časování snímků nebo mikrotrháním během hraní.</string>
|
<string name="frame_interpolation_description">Zajišťuje plynulé a konzistentní zobrazování snímků synchronizací jejich časování, čímž snižuje trhání a nerovnoměrné animace. Ideální pro hry, které trpí nestabilitou časování snímků nebo mikrotrháním během hraní.</string>
|
||||||
<string name="renderer_early_release_fences">Uvolnit ploty brzy</string>
|
<string name="renderer_early_release_fences">Uvolnit ploty brzy</string>
|
||||||
|
|
|
@ -72,8 +72,6 @@
|
||||||
<string name="eden_veil_description">Experimentelle Einstellungen zur Verbesserung der Leistung und Funktionalität. Diese Einstellungen können schwarze Bildschirme oder andere Spielprobleme verursachen.</string>
|
<string name="eden_veil_description">Experimentelle Einstellungen zur Verbesserung der Leistung und Funktionalität. Diese Einstellungen können schwarze Bildschirme oder andere Spielprobleme verursachen.</string>
|
||||||
<string name="eden_veil_warning_title">Experimentelle Einstellungen</string>
|
<string name="eden_veil_warning_title">Experimentelle Einstellungen</string>
|
||||||
<string name="eden_veil_warning_description">Die in Edens Schleier enthaltenen Einstellungen sind hoch experimentell und können Probleme verursachen. Wenn Ihr Spiel nicht startet, deaktivieren Sie alle Erweiterungen.</string>
|
<string name="eden_veil_warning_description">Die in Edens Schleier enthaltenen Einstellungen sind hoch experimentell und können Probleme verursachen. Wenn Ihr Spiel nicht startet, deaktivieren Sie alle Erweiterungen.</string>
|
||||||
<string name="frame_skipping">WIP: Frame Skipping</string>
|
|
||||||
<string name="frame_skipping_description">Aktivieren Sie Frame Skipping, um die Leistung durch Reduzierung der gerenderten Frames zu verbessern. Diese Funktion wird noch entwickelt und in zukünftigen Versionen verfügbar sein.</string>
|
|
||||||
<string name="frame_interpolation">Erweiterte Frame-Synchronisation</string>
|
<string name="frame_interpolation">Erweiterte Frame-Synchronisation</string>
|
||||||
<string name="frame_interpolation_description">Sorgt für eine gleichmäßige und konsistente Frame-Wiedergabe durch Synchronisierung der Frame-Zeiten, was Ruckeln und ungleichmäßige Animationen reduziert. Ideal für Spiele, die unter instabilen Frame-Zeiten oder Mikrorucklern leiden.</string>
|
<string name="frame_interpolation_description">Sorgt für eine gleichmäßige und konsistente Frame-Wiedergabe durch Synchronisierung der Frame-Zeiten, was Ruckeln und ungleichmäßige Animationen reduziert. Ideal für Spiele, die unter instabilen Frame-Zeiten oder Mikrorucklern leiden.</string>
|
||||||
<string name="renderer_early_release_fences">Zäune früher freigeben</string>
|
<string name="renderer_early_release_fences">Zäune früher freigeben</string>
|
||||||
|
|
|
@ -72,8 +72,6 @@
|
||||||
<string name="eden_veil_description">Configuraciones experimentales para mejorar el rendimiento y la capacidad. Estas configuraciones pueden causar pantallas negras u otros problemas en el juego.</string>
|
<string name="eden_veil_description">Configuraciones experimentales para mejorar el rendimiento y la capacidad. Estas configuraciones pueden causar pantallas negras u otros problemas en el juego.</string>
|
||||||
<string name="eden_veil_warning_title">Configuraciones experimentales</string>
|
<string name="eden_veil_warning_title">Configuraciones experimentales</string>
|
||||||
<string name="eden_veil_warning_description">Los ajustes contenidos en el Velo de Eden son altamente experimentales y pueden causar problemas. Si tu juego no inicia, desactiva todas las extensiones.</string>
|
<string name="eden_veil_warning_description">Los ajustes contenidos en el Velo de Eden son altamente experimentales y pueden causar problemas. Si tu juego no inicia, desactiva todas las extensiones.</string>
|
||||||
<string name="frame_skipping">WIP: Salto de fotogramas</string>
|
|
||||||
<string name="frame_skipping_description">Activa o desactiva el salto de fotogramas para mejorar el rendimiento reduciendo el número de fotogramas renderizados. Esta función está en desarrollo y se habilitará en futuras versiones.</string>
|
|
||||||
<string name="frame_interpolation">Sincronización de fotogramas mejorada</string>
|
<string name="frame_interpolation">Sincronización de fotogramas mejorada</string>
|
||||||
<string name="frame_interpolation_description">Garantiza una reproducción suave y consistente de fotogramas sincronizando sus tiempos, reduciendo el tartamudeo y animaciones irregulares. Ideal para juegos con problemas de sincronización de fotogramas o microtartamudeos.</string>
|
<string name="frame_interpolation_description">Garantiza una reproducción suave y consistente de fotogramas sincronizando sus tiempos, reduciendo el tartamudeo y animaciones irregulares. Ideal para juegos con problemas de sincronización de fotogramas o microtartamudeos.</string>
|
||||||
<string name="renderer_early_release_fences">Liberar vallas antes</string>
|
<string name="renderer_early_release_fences">Liberar vallas antes</string>
|
||||||
|
|
|
@ -72,8 +72,6 @@
|
||||||
<string name="eden_veil_description">تنظیمات آزمایشی برای بهبود عملکرد و قابلیت. این تنظیمات ممکن است باعث نمایش صفحه سیاه یا سایر مشکلات بازی شود.</string>
|
<string name="eden_veil_description">تنظیمات آزمایشی برای بهبود عملکرد و قابلیت. این تنظیمات ممکن است باعث نمایش صفحه سیاه یا سایر مشکلات بازی شود.</string>
|
||||||
<string name="eden_veil_warning_title">تنظیمات آزمایشی</string>
|
<string name="eden_veil_warning_title">تنظیمات آزمایشی</string>
|
||||||
<string name="eden_veil_warning_description">تنظیمات موجود در پرده عدن بسیار آزمایشی هستند و ممکن است باعث مشکلاتی شوند. اگر بازی شما اجرا نمیشود، همه پسوندها را غیرفعال کنید.</string>
|
<string name="eden_veil_warning_description">تنظیمات موجود در پرده عدن بسیار آزمایشی هستند و ممکن است باعث مشکلاتی شوند. اگر بازی شما اجرا نمیشود، همه پسوندها را غیرفعال کنید.</string>
|
||||||
<string name="frame_skipping">در حال توسعه: رد کردن فریمها</string>
|
|
||||||
<string name="frame_skipping_description">با فعال کردن رد کردن فریمها، عملکرد را با کاهش تعداد فریمهای رندر شده بهبود دهید. این قابلیت در حال توسعه است و در نسخههای آینده فعال خواهد شد.</string>
|
|
||||||
<string name="frame_interpolation">زمانبندی پیشرفته فریمها</string>
|
<string name="frame_interpolation">زمانبندی پیشرفته فریمها</string>
|
||||||
<string name="frame_interpolation_description">ارسال یکنواخت و پایدار فریمها را با همگامسازی زمان بین آنها تضمین میکند، که منجر به کاهش لرزش و انیمیشنهای ناهموار میشود. برای بازیهایی که ناپایداری در زمانبندی فریمها یا میکرو لرزش در حین بازی دارند ایدهآل است</string>
|
<string name="frame_interpolation_description">ارسال یکنواخت و پایدار فریمها را با همگامسازی زمان بین آنها تضمین میکند، که منجر به کاهش لرزش و انیمیشنهای ناهموار میشود. برای بازیهایی که ناپایداری در زمانبندی فریمها یا میکرو لرزش در حین بازی دارند ایدهآل است</string>
|
||||||
<string name="renderer_early_release_fences">رهاسازی حصارها زودتر</string>
|
<string name="renderer_early_release_fences">رهاسازی حصارها زودتر</string>
|
||||||
|
|
|
@ -72,8 +72,6 @@
|
||||||
<string name="eden_veil_description">Paramètres expérimentaux pour améliorer les performances et les capacités. Ces paramètres peuvent causer des écrans noirs ou d\'autres problèmes de jeu.</string>
|
<string name="eden_veil_description">Paramètres expérimentaux pour améliorer les performances et les capacités. Ces paramètres peuvent causer des écrans noirs ou d\'autres problèmes de jeu.</string>
|
||||||
<string name="eden_veil_warning_title">Paramètres expérimentaux</string>
|
<string name="eden_veil_warning_title">Paramètres expérimentaux</string>
|
||||||
<string name="eden_veil_warning_description">Les paramètres du Voile d\'Eden sont très expérimentaux et peuvent causer des problèmes. Si votre jeu ne démarre pas, désactivez toutes les extensions.</string>
|
<string name="eden_veil_warning_description">Les paramètres du Voile d\'Eden sont très expérimentaux et peuvent causer des problèmes. Si votre jeu ne démarre pas, désactivez toutes les extensions.</string>
|
||||||
<string name="frame_skipping">WIP: Saut de frames</string>
|
|
||||||
<string name="frame_skipping_description">Activez ou désactivez le saut d\'images pour améliorer les performances en réduisant le nombre d\'images affichées. Cette fonctionnalité est en cours de développement et sera activée dans les futures versions.</string>
|
|
||||||
<string name="frame_interpolation">Synchronisation avancée des frames</string>
|
<string name="frame_interpolation">Synchronisation avancée des frames</string>
|
||||||
<string name="frame_interpolation_description">Assure une diffusion fluide et régulière des frames en synchronisant leur timing, réduisant ainsi les saccades et les animations irrégulières. Idéal pour les jeux souffrant d`instabilité de timing des frames ou de micro-saccades pendant le jeu.</string>
|
<string name="frame_interpolation_description">Assure une diffusion fluide et régulière des frames en synchronisant leur timing, réduisant ainsi les saccades et les animations irrégulières. Idéal pour les jeux souffrant d`instabilité de timing des frames ou de micro-saccades pendant le jeu.</string>
|
||||||
<string name="renderer_early_release_fences">Libérer les barrières plus tôt</string>
|
<string name="renderer_early_release_fences">Libérer les barrières plus tôt</string>
|
||||||
|
|
|
@ -72,8 +72,6 @@
|
||||||
<string name="eden_veil_description">הגדרות ניסיוניות לשיפור ביצועים ויכולות. הגדרות אלו עלולות לגרום למסכים שחורים או לבעיות אחרות במשחק.</string>
|
<string name="eden_veil_description">הגדרות ניסיוניות לשיפור ביצועים ויכולות. הגדרות אלו עלולות לגרום למסכים שחורים או לבעיות אחרות במשחק.</string>
|
||||||
<string name="eden_veil_warning_title">הגדרות ניסיוניות</string>
|
<string name="eden_veil_warning_title">הגדרות ניסיוניות</string>
|
||||||
<string name="eden_veil_warning_description">הגדרות במסך העדן ניסיוניות מאוד ועלולות לגרום לבעיות. אם המשחק לא עולה, השבת את כל ההרחבות.</string>
|
<string name="eden_veil_warning_description">הגדרות במסך העדן ניסיוניות מאוד ועלולות לגרום לבעיות. אם המשחק לא עולה, השבת את כל ההרחבות.</string>
|
||||||
<string name="frame_skipping">בעבודה: דילוג פריימים</string>
|
|
||||||
<string name="frame_skipping_description">החלף דילוג על פריימים כדי לשפר ביצועים על ידי הפחתת מספר הפריימים המוצגים. תכונה זו עדיין בפיתוח ותופעל בגרסאות עתידיות.</string>
|
|
||||||
<string name="frame_interpolation">סנכרון פריימים מתקדם</string>
|
<string name="frame_interpolation">סנכרון פריימים מתקדם</string>
|
||||||
<string name="frame_interpolation_description">מבטיח אספקה חלקה ועקבית של פריימים על ידי סנכרון התזמון ביניהם, מפחית קפיצות ואנימציה לא אחידה. אידיאלי למשחקים עם בעיות בתזמון פריימים או מיקרו-קפיצות במהלך המשחק.</string>
|
<string name="frame_interpolation_description">מבטיח אספקה חלקה ועקבית של פריימים על ידי סנכרון התזמון ביניהם, מפחית קפיצות ואנימציה לא אחידה. אידיאלי למשחקים עם בעיות בתזמון פריימים או מיקרו-קפיצות במהלך המשחק.</string>
|
||||||
<string name="renderer_early_release_fences">שחרר גדרות מוקדם</string>
|
<string name="renderer_early_release_fences">שחרר גדרות מוקדם</string>
|
||||||
|
|
|
@ -72,8 +72,6 @@
|
||||||
<string name="eden_veil_description">Kísérleti beállítások a teljesítmény és képesség javításához. Ezek a beállítások fekete képernyőket vagy más játékproblémákat okozhatnak.</string>
|
<string name="eden_veil_description">Kísérleti beállítások a teljesítmény és képesség javításához. Ezek a beállítások fekete képernyőket vagy más játékproblémákat okozhatnak.</string>
|
||||||
<string name="eden_veil_warning_title">Kísérleti beállítások</string>
|
<string name="eden_veil_warning_title">Kísérleti beállítások</string>
|
||||||
<string name="eden_veil_warning_description">Az Eden Fátyla beállításai nagyon kísérleti jellegűek, és problémákat okozhatnak. Ha a játék nem indul el, kérjük, tiltsa le az összes kiterjesztést.</string>
|
<string name="eden_veil_warning_description">Az Eden Fátyla beállításai nagyon kísérleti jellegűek, és problémákat okozhatnak. Ha a játék nem indul el, kérjük, tiltsa le az összes kiterjesztést.</string>
|
||||||
<string name="frame_skipping">Folyamatban: Képkihagyás</string>
|
|
||||||
<string name="frame_skipping_description">Kapcsolja be a képkihagyást a teljesítmény javításához a renderelt képkockák számának csökkentésével. Ez a funkció még fejlesztés alatt áll, és a jövőbeli kiadásokban lesz elérhető.</string>
|
|
||||||
<string name="frame_interpolation">Továbbfejlesztett Képkocka-időzítés</string>
|
<string name="frame_interpolation">Továbbfejlesztett Képkocka-időzítés</string>
|
||||||
<string name="frame_interpolation_description">Biztosítja a képkockák sima és egyenletes kézbesítését azok időzítésének szinkronizálásával, csökkentve a megakadásokat és egyenetlen animációkat. Ideális azokhoz a játékokhoz, amelyek képkocka-időzítési instabilitást vagy mikro-reccsenést tapasztalnak játék közben.</string>
|
<string name="frame_interpolation_description">Biztosítja a képkockák sima és egyenletes kézbesítését azok időzítésének szinkronizálásával, csökkentve a megakadásokat és egyenetlen animációkat. Ideális azokhoz a játékokhoz, amelyek képkocka-időzítési instabilitást vagy mikro-reccsenést tapasztalnak játék közben.</string>
|
||||||
<string name="renderer_early_release_fences">Korai kerítés-felszabadítás</string>
|
<string name="renderer_early_release_fences">Korai kerítés-felszabadítás</string>
|
||||||
|
|
|
@ -72,8 +72,6 @@
|
||||||
<string name="eden_veil_description">Pengaturan eksperimental untuk meningkatkan kinerja dan kemampuan. Pengaturan ini dapat menyebabkan layar hitam atau masalah game lainnya.</string>
|
<string name="eden_veil_description">Pengaturan eksperimental untuk meningkatkan kinerja dan kemampuan. Pengaturan ini dapat menyebabkan layar hitam atau masalah game lainnya.</string>
|
||||||
<string name="eden_veil_warning_title">Pengaturan Eksperimental</string>
|
<string name="eden_veil_warning_title">Pengaturan Eksperimental</string>
|
||||||
<string name="eden_veil_warning_description">Pengaturan di Eden\'s Veil sangat eksperimental dan dapat menyebabkan masalah. Jika game tidak mau berjalan, nonaktifkan semua ekstensi.</string>
|
<string name="eden_veil_warning_description">Pengaturan di Eden\'s Veil sangat eksperimental dan dapat menyebabkan masalah. Jika game tidak mau berjalan, nonaktifkan semua ekstensi.</string>
|
||||||
<string name="frame_skipping">WIP: Loncatan Frame</string>
|
|
||||||
<string name="frame_skipping_description">Aktifkan atau nonaktifkan frame skipping untuk meningkatkan performa dengan mengurangi jumlah frame yang dirender. Fitur ini masih dalam pengembangan dan akan diaktifkan di rilis mendatang.</string>
|
|
||||||
<string name="frame_interpolation">Penyelarasan Frame Tingkat Lanjut</string>
|
<string name="frame_interpolation">Penyelarasan Frame Tingkat Lanjut</string>
|
||||||
<string name="frame_interpolation_description">Memastikan pengiriman frame yang halus dan konsisten dengan menyinkronkan waktu antar frame, mengurangi stuttering dan animasi tidak rata. Ideal untuk game yang mengalami ketidakstabilan waktu frame atau micro-stutter selama gameplay.</string>
|
<string name="frame_interpolation_description">Memastikan pengiriman frame yang halus dan konsisten dengan menyinkronkan waktu antar frame, mengurangi stuttering dan animasi tidak rata. Ideal untuk game yang mengalami ketidakstabilan waktu frame atau micro-stutter selama gameplay.</string>
|
||||||
<string name="renderer_early_release_fences">Lepas Pagar Lebih Awal</string>
|
<string name="renderer_early_release_fences">Lepas Pagar Lebih Awal</string>
|
||||||
|
|
|
@ -72,8 +72,6 @@
|
||||||
<string name="eden_veil_description">Impostazioni sperimentali per migliorare prestazioni e capacità. Queste impostazioni possono causare schermate nere o altri problemi di gioco.</string>
|
<string name="eden_veil_description">Impostazioni sperimentali per migliorare prestazioni e capacità. Queste impostazioni possono causare schermate nere o altri problemi di gioco.</string>
|
||||||
<string name="eden_veil_warning_title">Impostazioni sperimentali</string>
|
<string name="eden_veil_warning_title">Impostazioni sperimentali</string>
|
||||||
<string name="eden_veil_warning_description">Le impostazioni nel Velo di Eden sono altamente sperimentali e possono causare problemi. Se il gioco non si avvia, disabilita tutte le estensioni.</string>
|
<string name="eden_veil_warning_description">Le impostazioni nel Velo di Eden sono altamente sperimentali e possono causare problemi. Se il gioco non si avvia, disabilita tutte le estensioni.</string>
|
||||||
<string name="frame_skipping">WIP: Salto fotogrammi</string>
|
|
||||||
<string name="frame_skipping_description">Attiva o disattiva il salto dei fotogrammi per migliorare le prestazioni riducendo il numero di fotogrammi renderizzati. Questa funzionalità è ancora in sviluppo e verrà abilitata nelle versioni future.</string>
|
|
||||||
<string name="frame_interpolation">Sincronizzazione avanzata fotogrammi</string>
|
<string name="frame_interpolation">Sincronizzazione avanzata fotogrammi</string>
|
||||||
<string name="frame_interpolation_description">Garantisce una consegna fluida e costante dei fotogrammi sincronizzandone i tempi, riducendo scatti e animazioni irregolari. Ideale per giochi che presentano instabilità nei tempi dei fotogrammi o micro-scatti durante il gameplay.</string>
|
<string name="frame_interpolation_description">Garantisce una consegna fluida e costante dei fotogrammi sincronizzandone i tempi, riducendo scatti e animazioni irregolari. Ideale per giochi che presentano instabilità nei tempi dei fotogrammi o micro-scatti durante il gameplay.</string>
|
||||||
<string name="renderer_early_release_fences">Rilascia le barriere prima</string>
|
<string name="renderer_early_release_fences">Rilascia le barriere prima</string>
|
||||||
|
|
|
@ -72,8 +72,6 @@
|
||||||
<string name="eden_veil_description">パフォーマンスと機能を向上させる実験的な設定。これらの設定は黒画面やその他のゲームの問題を引き起こす可能性があります。</string>
|
<string name="eden_veil_description">パフォーマンスと機能を向上させる実験的な設定。これらの設定は黒画面やその他のゲームの問題を引き起こす可能性があります。</string>
|
||||||
<string name="eden_veil_warning_title">実験的設定</string>
|
<string name="eden_veil_warning_title">実験的設定</string>
|
||||||
<string name="eden_veil_warning_description">エデンのベールに含まれる設定は非常に実験的であり、問題を引き起こす可能性があります。ゲームが起動しない場合は、拡張機能を無効にしてください。</string>
|
<string name="eden_veil_warning_description">エデンのベールに含まれる設定は非常に実験的であり、問題を引き起こす可能性があります。ゲームが起動しない場合は、拡張機能を無効にしてください。</string>
|
||||||
<string name="frame_skipping">WIP: フレームスキップ</string>
|
|
||||||
<string name="frame_skipping_description">フレームスキップを切り替えて、レンダリングされるフレーム数を減らしパフォーマンスを向上させます。この機能は開発中であり、今後のリリースで有効になります。</string>
|
|
||||||
<string name="frame_interpolation">高度なフレーム同期</string>
|
<string name="frame_interpolation">高度なフレーム同期</string>
|
||||||
<string name="frame_interpolation_description">フレーム間のタイミングを同期させることで、スムーズで一貫したフレーム配信を確保し、カクつきや不均一なアニメーションを軽減します。フレームタイミングの不安定さやマイクロスタッターが発生するゲームに最適です。</string>
|
<string name="frame_interpolation_description">フレーム間のタイミングを同期させることで、スムーズで一貫したフレーム配信を確保し、カクつきや不均一なアニメーションを軽減します。フレームタイミングの不安定さやマイクロスタッターが発生するゲームに最適です。</string>
|
||||||
<string name="renderer_early_release_fences">フェンスを早期に解放</string>
|
<string name="renderer_early_release_fences">フェンスを早期に解放</string>
|
||||||
|
|
|
@ -72,8 +72,6 @@
|
||||||
<string name="eden_veil_description">성능 및 기능을 향상시키기 위한 실험적 설정. 이 설정은 검은 화면 또는 기타 게임 문제를 일으킬 수 있습니다.</string>
|
<string name="eden_veil_description">성능 및 기능을 향상시키기 위한 실험적 설정. 이 설정은 검은 화면 또는 기타 게임 문제를 일으킬 수 있습니다.</string>
|
||||||
<string name="eden_veil_warning_title">실험적 설정</string>
|
<string name="eden_veil_warning_title">실험적 설정</string>
|
||||||
<string name="eden_veil_warning_description">에덴의 베일에 포함된 설정은 매우 실험적이며 문제가 발생할 수 있습니다. 게임이 시작되지 않으면 확장 기능을 비활성화하세요.</string>
|
<string name="eden_veil_warning_description">에덴의 베일에 포함된 설정은 매우 실험적이며 문제가 발생할 수 있습니다. 게임이 시작되지 않으면 확장 기능을 비활성화하세요.</string>
|
||||||
<string name="frame_skipping">작업 중: 프레임 스킵</string>
|
|
||||||
<string name="frame_skipping_description">렌더링되는 프레임 수를 줄여 성능을 향상시키기 위해 프레임 스킵을 전환합니다. 이 기능은 현재 개발 중이며 향후 출시 버전에서 활성화될 예정입니다.</string>
|
|
||||||
<string name="frame_interpolation">향상된 프레임 페이싱</string>
|
<string name="frame_interpolation">향상된 프레임 페이싱</string>
|
||||||
<string name="frame_interpolation_description">프레임 간 타이밍을 동기화하여 부드럽고 일관된 프레임 전달을 보장하며, 끊김과 불균일한 애니메이션을 줄입니다. 프레임 타이밍 불안정이나 게임 플레이 중 미세 끊김이 발생하는 게임에 이상적입니다.</string>
|
<string name="frame_interpolation_description">프레임 간 타이밍을 동기화하여 부드럽고 일관된 프레임 전달을 보장하며, 끊김과 불균일한 애니메이션을 줄입니다. 프레임 타이밍 불안정이나 게임 플레이 중 미세 끊김이 발생하는 게임에 이상적입니다.</string>
|
||||||
<string name="renderer_early_release_fences">펜스 조기 해제</string>
|
<string name="renderer_early_release_fences">펜스 조기 해제</string>
|
||||||
|
|
|
@ -72,8 +72,6 @@
|
||||||
<string name="eden_veil_description">Eksperimentelle innstillinger for å forbedre ytelse og funksjonalitet. Disse innstillingene kan forårsake svarte skjermer eller andre spillproblemer.</string>
|
<string name="eden_veil_description">Eksperimentelle innstillinger for å forbedre ytelse og funksjonalitet. Disse innstillingene kan forårsake svarte skjermer eller andre spillproblemer.</string>
|
||||||
<string name="eden_veil_warning_title">Eksperimentelle innstillinger</string>
|
<string name="eden_veil_warning_title">Eksperimentelle innstillinger</string>
|
||||||
<string name="eden_veil_warning_description">Innstillingene i Edens slør er svært eksperimentelle og kan forårsake problemer. Hvis spillet ikke starter, deaktiver alle utvidelser.</string>
|
<string name="eden_veil_warning_description">Innstillingene i Edens slør er svært eksperimentelle og kan forårsake problemer. Hvis spillet ikke starter, deaktiver alle utvidelser.</string>
|
||||||
<string name="frame_skipping">WIP: Hoppe over bilder</string>
|
|
||||||
<string name="frame_skipping_description">Slå av/på frame skipping for å forbedre ytelsen ved å redusere antall renderte bilder. Denne funksjonen er fortsatt under utvikling og vil bli aktivert i fremtidige versjoner.</string>
|
|
||||||
<string name="frame_interpolation">Avansert bildevindu-synkronisering</string>
|
<string name="frame_interpolation">Avansert bildevindu-synkronisering</string>
|
||||||
<string name="frame_interpolation_description">Sikrer jevn og konsekvent bildelevering ved å synkronisere tiden mellom bilder, noe som reduserer hakking og ujevn animasjon. Ideelt for spill som opplever ustabil bildetid eller mikro-hakk under spilling.</string>
|
<string name="frame_interpolation_description">Sikrer jevn og konsekvent bildelevering ved å synkronisere tiden mellom bilder, noe som reduserer hakking og ujevn animasjon. Ideelt for spill som opplever ustabil bildetid eller mikro-hakk under spilling.</string>
|
||||||
<string name="renderer_early_release_fences">Frigjør gjerder tidlig</string>
|
<string name="renderer_early_release_fences">Frigjør gjerder tidlig</string>
|
||||||
|
|
|
@ -226,64 +226,6 @@
|
||||||
<color name="yuzu_inversePrimary_gray">#B7B7B7</color>
|
<color name="yuzu_inversePrimary_gray">#B7B7B7</color>
|
||||||
<color name="yuzu_surfaceTint_gray">#B7B7B7</color>
|
<color name="yuzu_surfaceTint_gray">#B7B7B7</color>
|
||||||
|
|
||||||
<!-- Eden Theme Colors -->
|
|
||||||
|
|
||||||
<!-- Synthwave/Vaporwave Primary Colors -->
|
|
||||||
<color name="eden_primary">#FF0080</color> <!-- Neon magenta -->
|
|
||||||
<color name="eden_primary_variant">#E6006B</color> <!-- Darker magenta -->
|
|
||||||
<color name="eden_secondary">#00FFFF</color> <!-- Electric cyan -->
|
|
||||||
<color name="eden_secondary_variant">#00E6E6</color> <!-- Darker cyan -->
|
|
||||||
|
|
||||||
<!-- Background Colors - Deep space black -->
|
|
||||||
<color name="eden_background">#000000</color> <!-- Pure black background -->
|
|
||||||
<color name="eden_surface">#0D0D0D</color> <!-- Card surface -->
|
|
||||||
<color name="eden_surface_variant">#1A1A1A</color> <!-- Elevated surface -->
|
|
||||||
|
|
||||||
<!-- Text Colors - High contrast for readability -->
|
|
||||||
<color name="eden_on_background">#FFFFFF</color> <!-- Pure white text -->
|
|
||||||
<color name="eden_on_surface">#FFFFFF</color> <!-- Pure white text -->
|
|
||||||
<color name="eden_on_primary">#FFFFFF</color> <!-- White on neon -->
|
|
||||||
<color name="eden_on_secondary">#000000</color> <!-- Black on cyan -->
|
|
||||||
|
|
||||||
<!-- Synthwave Status Colors -->
|
|
||||||
<color name="eden_error">#FF0040</color> <!-- Neon red -->
|
|
||||||
<color name="eden_success">#00FF80</color> <!-- Neon green -->
|
|
||||||
<color name="eden_warning">#FFFF00</color> <!-- Neon yellow -->
|
|
||||||
<color name="eden_info">#0080FF</color> <!-- Electric blue -->
|
|
||||||
|
|
||||||
<!-- Synthwave Accent Colors -->
|
|
||||||
<color name="eden_accent_purple">#9D00FF</color> <!-- Electric purple -->
|
|
||||||
<color name="eden_accent_blue">#0080FF</color> <!-- Electric blue -->
|
|
||||||
<color name="eden_accent_orange">#FF8000</color> <!-- Neon orange -->
|
|
||||||
|
|
||||||
<!-- Neon Glow Effects -->
|
|
||||||
<color name="eden_glow_pink">#80FF0080</color> <!-- Magenta glow -->
|
|
||||||
<color name="eden_glow_cyan">#8060D1F6</color> <!-- Cyan glow -->
|
|
||||||
<color name="eden_glow_orange">#80FF8000</color> <!-- Orange glow -->
|
|
||||||
|
|
||||||
<!-- Neon Border Colors -->
|
|
||||||
<color name="eden_border">#7c757f</color> <!-- Subtle border -->
|
|
||||||
<color name="eden_border_light">#948b98</color> <!-- Lighter border -->
|
|
||||||
<color name="eden_border_gradient_start">#FF0080</color> <!-- Neon magenta -->
|
|
||||||
<color name="eden_border_gradient_end">#60D1F6</color> <!-- Electric cyan -->
|
|
||||||
|
|
||||||
<!-- Overlay Colors -->
|
|
||||||
<color name="eden_overlay">#CC000000</color>
|
|
||||||
|
|
||||||
<!-- Neon Button Colors -->
|
|
||||||
<color name="eden_button_primary_bg">#FF0080</color> <!-- Neon magenta -->
|
|
||||||
<color name="eden_button_secondary_bg">#00000000</color> <!-- Transparent -->
|
|
||||||
<color name="eden_button_secondary_border">#00FFFF</color> <!-- Electric cyan -->
|
|
||||||
|
|
||||||
<!-- Synthwave Card Colors -->
|
|
||||||
<color name="eden_card_background">#0D0D0D</color> <!-- Almost black -->
|
|
||||||
<color name="eden_card_background_elevated">#1A1A1A</color> <!-- Elevated black -->
|
|
||||||
|
|
||||||
<!-- Transparent versions for gradients -->
|
|
||||||
<color name="eden_transparent">#00000000</color>
|
|
||||||
<color name="eden_primary_transparent">#05FF0080</color>
|
|
||||||
<color name="eden_secondary_transparent">#0500FFFF</color>
|
|
||||||
|
|
||||||
<!-- Common Colors Across All Themes -->
|
<!-- Common Colors Across All Themes -->
|
||||||
<color name="yuzu_transparent_black">#80000000</color>
|
<color name="yuzu_transparent_black">#80000000</color>
|
||||||
<color name="yuzu_outlineVariant">#C6C5D0</color>
|
<color name="yuzu_outlineVariant">#C6C5D0</color>
|
||||||
|
|
|
@ -72,8 +72,6 @@
|
||||||
<string name="eden_veil_description">Eksperymentalne ustawienia poprawiające wydajność i możliwości. Te ustawienia mogą powodować czarne ekrany lub inne problemy z grą.</string>
|
<string name="eden_veil_description">Eksperymentalne ustawienia poprawiające wydajność i możliwości. Te ustawienia mogą powodować czarne ekrany lub inne problemy z grą.</string>
|
||||||
<string name="eden_veil_warning_title">Ustawienia eksperymentalne</string>
|
<string name="eden_veil_warning_title">Ustawienia eksperymentalne</string>
|
||||||
<string name="eden_veil_warning_description">Ustawienia w Zasłona Edenu są wysoce eksperymentalne i mogą powodować problemy. Jeśli gra się nie uruchamia, wyłącz wszystkie rozszerzenia.</string>
|
<string name="eden_veil_warning_description">Ustawienia w Zasłona Edenu są wysoce eksperymentalne i mogą powodować problemy. Jeśli gra się nie uruchamia, wyłącz wszystkie rozszerzenia.</string>
|
||||||
<string name="frame_skipping">WIP: Pomijanie klatek</string>
|
|
||||||
<string name="frame_skipping_description">Włącz lub wyłącz pomijanie klatek, aby poprawić wydajność poprzez zmniejszenie liczby renderowanych klatek. Ta funkcja jest wciąż w fazie rozwoju i zostanie włączona w przyszłych wersjach.</string>
|
|
||||||
<string name="frame_interpolation">Zaawansowana synchronizacja klatek</string>
|
<string name="frame_interpolation">Zaawansowana synchronizacja klatek</string>
|
||||||
<string name="frame_interpolation_description">Zapewnia płynne i spójne wyświetlanie klatek poprzez synchronizację ich czasu, redukując zacinanie i nierówną animację. Idealne dla gier z niestabilnym czasem klatek lub mikro-zacinaniem podczas rozgrywki.</string>
|
<string name="frame_interpolation_description">Zapewnia płynne i spójne wyświetlanie klatek poprzez synchronizację ich czasu, redukując zacinanie i nierówną animację. Idealne dla gier z niestabilnym czasem klatek lub mikro-zacinaniem podczas rozgrywki.</string>
|
||||||
<string name="renderer_early_release_fences">Wcześniejsze zwalnianie zabezpieczeń</string>
|
<string name="renderer_early_release_fences">Wcześniejsze zwalnianie zabezpieczeń</string>
|
||||||
|
|
|
@ -72,8 +72,6 @@
|
||||||
<string name="eden_veil_description">Configurações experimentais para melhorar desempenho e capacidade. Essas configurações podem causar telas pretas ou outros problemas no jogo.</string>
|
<string name="eden_veil_description">Configurações experimentais para melhorar desempenho e capacidade. Essas configurações podem causar telas pretas ou outros problemas no jogo.</string>
|
||||||
<string name="eden_veil_warning_title">Configurações experimentais</string>
|
<string name="eden_veil_warning_title">Configurações experimentais</string>
|
||||||
<string name="eden_veil_warning_description">As configurações no Véu do Éden são altamente experimentais e podem causar problemas. Se seu jogo não iniciar, desative todas as extensões.</string>
|
<string name="eden_veil_warning_description">As configurações no Véu do Éden são altamente experimentais e podem causar problemas. Se seu jogo não iniciar, desative todas as extensões.</string>
|
||||||
<string name="frame_skipping">WIP: Pular quadros</string>
|
|
||||||
<string name="frame_skipping_description">Ative ou desative o pulo de quadros para melhorar o desempenho reduzindo o número de quadros renderizados. Este recurso ainda está em desenvolvimento e será habilitado em versões futuras.</string>
|
|
||||||
<string name="frame_interpolation">Sincronização avançada de quadros</string>
|
<string name="frame_interpolation">Sincronização avançada de quadros</string>
|
||||||
<string name="frame_interpolation_description">Garante entrega suave e consistente de quadros sincronizando seu tempo, reduzindo engasgos e animações irregulares. Ideal para jogos com instabilidade no tempo de quadros ou micro-engasgos durante a jogatina.</string>
|
<string name="frame_interpolation_description">Garante entrega suave e consistente de quadros sincronizando seu tempo, reduzindo engasgos e animações irregulares. Ideal para jogos com instabilidade no tempo de quadros ou micro-engasgos durante a jogatina.</string>
|
||||||
<string name="renderer_early_release_fences">Liberar cercas antecipadamente</string>
|
<string name="renderer_early_release_fences">Liberar cercas antecipadamente</string>
|
||||||
|
|
|
@ -72,8 +72,6 @@
|
||||||
<string name="eden_veil_description">Definições experimentais para melhorar o desempenho e capacidade. Estas definições podem causar ecrãs pretos ou outros problemas no jogo.</string>
|
<string name="eden_veil_description">Definições experimentais para melhorar o desempenho e capacidade. Estas definições podem causar ecrãs pretos ou outros problemas no jogo.</string>
|
||||||
<string name="eden_veil_warning_title">Definições experimentais</string>
|
<string name="eden_veil_warning_title">Definições experimentais</string>
|
||||||
<string name="eden_veil_warning_description">As configurações no Véu do Éden são altamente experimentais e podem causar problemas. Se o jogo não iniciar, desative todas as extensões.</string>
|
<string name="eden_veil_warning_description">As configurações no Véu do Éden são altamente experimentais e podem causar problemas. Se o jogo não iniciar, desative todas as extensões.</string>
|
||||||
<string name="frame_skipping">WIP: Saltar frames</string>
|
|
||||||
<string name="frame_skipping_description">Ative ou desative o salto de frames para melhorar o desempenho reduzindo o número de frames renderizados. Esta funcionalidade ainda está em desenvolvimento e será ativada em versões futuras.</string>
|
|
||||||
<string name="frame_interpolation">Sincronização avançada de frames</string>
|
<string name="frame_interpolation">Sincronização avançada de frames</string>
|
||||||
<string name="frame_interpolation_description">Garante uma entrega suave e consistente de frames sincronizando o seu tempo, reduzindo engasgadelas e animações irregulares. Ideal para jogos que experienciam instabilidade no tempo de frames ou micro-engasgadelas durante o jogo.</string>
|
<string name="frame_interpolation_description">Garante uma entrega suave e consistente de frames sincronizando o seu tempo, reduzindo engasgadelas e animações irregulares. Ideal para jogos que experienciam instabilidade no tempo de frames ou micro-engasgadelas durante o jogo.</string>
|
||||||
<string name="renderer_early_release_fences">Libertar barreiras antecipadamente</string>
|
<string name="renderer_early_release_fences">Libertar barreiras antecipadamente</string>
|
||||||
|
|
|
@ -70,8 +70,6 @@
|
||||||
<string name="eden_veil_description">Экспериментальные настройки для улучшения производительности и возможностей. Эти настройки могут вызывать черные экраны или другие проблемы в игре.</string>
|
<string name="eden_veil_description">Экспериментальные настройки для улучшения производительности и возможностей. Эти настройки могут вызывать черные экраны или другие проблемы в игре.</string>
|
||||||
<string name="eden_veil_warning_title">Экспериментальные настройки</string>
|
<string name="eden_veil_warning_title">Экспериментальные настройки</string>
|
||||||
<string name="eden_veil_warning_description">Настройки в Покров Эдема являются экспериментальными и могут вызывать проблемы. Если ваша игра не запускается, отключите все расширения.</string>
|
<string name="eden_veil_warning_description">Настройки в Покров Эдема являются экспериментальными и могут вызывать проблемы. Если ваша игра не запускается, отключите все расширения.</string>
|
||||||
<string name="frame_skipping">В разработке: Пропуск кадров</string>
|
|
||||||
<string name="frame_skipping_description">Включите или отключите пропуск кадров для повышения производительности за счет уменьшения количества отображаемых кадров. Эта функция находится в разработке и будет включена в будущих версиях.</string>
|
|
||||||
<string name="enable_raii">RAII</string>
|
<string name="enable_raii">RAII</string>
|
||||||
<string name="enable_raii_description">Метод автоматического управления ресурсами в Vulkan, который обеспечивает правильное освобождение ресурсов при их ненадобности, но может вызывать сбои в бандл-играх.</string>
|
<string name="enable_raii_description">Метод автоматического управления ресурсами в Vulkan, который обеспечивает правильное освобождение ресурсов при их ненадобности, но может вызывать сбои в бандл-играх.</string>
|
||||||
<string name="frame_interpolation">Улучшенная синхронизация кадров</string>
|
<string name="frame_interpolation">Улучшенная синхронизация кадров</string>
|
||||||
|
|
|
@ -462,8 +462,6 @@
|
||||||
<string name="backend">Бекенд</string>
|
<string name="backend">Бекенд</string>
|
||||||
<string name="display">Приказ</string>
|
<string name="display">Приказ</string>
|
||||||
<string name="processing">Постпроцесирање</string>
|
<string name="processing">Постпроцесирање</string>
|
||||||
<string name="frame_skipping">ВИП: Фрамескип</string>
|
|
||||||
<string name="frame_skipping_description">Пребацивање оквира прескакање да бисте побољшали перформансе смањењем броја пружених оквира. Ова функција се и даље ради и биће омогућена у будућим издањима.</string>
|
|
||||||
<string name="renderer_accuracy">Ниво тачности</string>
|
<string name="renderer_accuracy">Ниво тачности</string>
|
||||||
<string name="renderer_resolution">Резолуција (ручно / прикључено)</string>
|
<string name="renderer_resolution">Резолуција (ручно / прикључено)</string>
|
||||||
<string name="renderer_vsync">Всинц мод</string>
|
<string name="renderer_vsync">Всинц мод</string>
|
||||||
|
|
|
@ -72,8 +72,6 @@
|
||||||
<string name="eden_veil_warning_description">Налаштування Завіси Eden є експериментальними та можуть спричинити проблеми. Якщо ваша гра не запускається — вимкніть усі розширення.</string>
|
<string name="eden_veil_warning_description">Налаштування Завіси Eden є експериментальними та можуть спричинити проблеми. Якщо ваша гра не запускається — вимкніть усі розширення.</string>
|
||||||
<string name="enable_raii">RAII</string>
|
<string name="enable_raii">RAII</string>
|
||||||
<string name="enable_raii_description">Метод автоматичного керування ресурсами у Vulkan, який забезпечує правильне звільнення ресурсів після завершення їх використання, проте він може спричинити збої в ігрових збірниках.</string>
|
<string name="enable_raii_description">Метод автоматичного керування ресурсами у Vulkan, який забезпечує правильне звільнення ресурсів після завершення їх використання, проте він може спричинити збої в ігрових збірниках.</string>
|
||||||
<string name="frame_skipping">В розробці: Пропуск кадрів</string>
|
|
||||||
<string name="frame_skipping_description">Увімкніть або вимкніть пропуск кадрів для покращення продуктивності за рахунок зменшення кількості візуалізованих кадрів. Ця функція ще розробляється та буде доступна у майбутніх версіях.</string>
|
|
||||||
<string name="frame_interpolation">Покращена синхронізація кадрів</string>
|
<string name="frame_interpolation">Покращена синхронізація кадрів</string>
|
||||||
<string name="frame_interpolation_description">Забезпечує плавну та стабільну подачу кадрів шляхом синхронізації їх часу, зменшуючи підвисання та нерівномірну анімацію. Ідеально для ігор з нестабільним часом кадрів або мікро-підвисаннями під час гри.</string>
|
<string name="frame_interpolation_description">Забезпечує плавну та стабільну подачу кадрів шляхом синхронізації їх часу, зменшуючи підвисання та нерівномірну анімацію. Ідеально для ігор з нестабільним часом кадрів або мікро-підвисаннями під час гри.</string>
|
||||||
<string name="renderer_early_release_fences">Release fences early</string>
|
<string name="renderer_early_release_fences">Release fences early</string>
|
||||||
|
|
|
@ -72,8 +72,6 @@
|
||||||
<string name="eden_veil_description">Cài đặt thử nghiệm để cải thiện hiệu suất và khả năng. Những cài đặt này có thể gây ra màn hình đen hoặc các vấn đề khác trong trò chơi.</string>
|
<string name="eden_veil_description">Cài đặt thử nghiệm để cải thiện hiệu suất và khả năng. Những cài đặt này có thể gây ra màn hình đen hoặc các vấn đề khác trong trò chơi.</string>
|
||||||
<string name="eden_veil_warning_title">Cài đặt thử nghiệm</string>
|
<string name="eden_veil_warning_title">Cài đặt thử nghiệm</string>
|
||||||
<string name="eden_veil_warning_description">Các cài đặt trong Mành che của Eden rất thử nghiệm và có thể gây ra sự cố. Nếu trò chơi của bạn không khởi động, hãy tắt tất cả các tiện ích mở rộng.</string>
|
<string name="eden_veil_warning_description">Các cài đặt trong Mành che của Eden rất thử nghiệm và có thể gây ra sự cố. Nếu trò chơi của bạn không khởi động, hãy tắt tất cả các tiện ích mở rộng.</string>
|
||||||
<string name="frame_skipping">WIP: Bỏ qua khung hình</string>
|
|
||||||
<string name="frame_skipping_description">Bật hoặc tắt bỏ qua khung hình để cải thiện hiệu suất bằng cách giảm số lượng khung hình được kết xuất. Tính năng này đang được phát triển và sẽ được kích hoạt trong các bản phát hành tương lai.</string>
|
|
||||||
<string name="frame_interpolation">Đồng bộ khung hình nâng cao</string>
|
<string name="frame_interpolation">Đồng bộ khung hình nâng cao</string>
|
||||||
<string name="frame_interpolation_description">Đảm bảo cung cấp khung hình mượt mà và ổn định bằng cách đồng bộ hóa thời gian giữa các khung hình, giảm giật lag và hoạt ảnh không đồng đều. Lý tưởng cho các trò chơi gặp vấn đề về thời gian khung hình không ổn định hoặc giật lag nhẹ trong khi chơi.</string>
|
<string name="frame_interpolation_description">Đảm bảo cung cấp khung hình mượt mà và ổn định bằng cách đồng bộ hóa thời gian giữa các khung hình, giảm giật lag và hoạt ảnh không đồng đều. Lý tưởng cho các trò chơi gặp vấn đề về thời gian khung hình không ổn định hoặc giật lag nhẹ trong khi chơi.</string>
|
||||||
<string name="renderer_early_release_fences">Giải phóng rào chắn sớm</string>
|
<string name="renderer_early_release_fences">Giải phóng rào chắn sớm</string>
|
||||||
|
|
|
@ -71,8 +71,6 @@
|
||||||
<string name="eden_veil">伊甸之幕</string>
|
<string name="eden_veil">伊甸之幕</string>
|
||||||
<string name="eden_veil_description">实验性设置以提高性能和能力。这些设置可能会导致黑屏或其他游戏问题。</string>
|
<string name="eden_veil_description">实验性设置以提高性能和能力。这些设置可能会导致黑屏或其他游戏问题。</string>
|
||||||
<string name="eden_veil_warning_description">伊甸之幕中的设置具有高度实验性,可能导致问题。如果游戏无法启动,请禁用所有扩展。</string>
|
<string name="eden_veil_warning_description">伊甸之幕中的设置具有高度实验性,可能导致问题。如果游戏无法启动,请禁用所有扩展。</string>
|
||||||
<string name="frame_skipping">开发中:跳帧</string>
|
|
||||||
<string name="frame_skipping_description">启用或禁用跳帧以减少渲染帧数,提高性能。此功能仍在开发中,将在未来版本中启用。</string>
|
|
||||||
<string name="frame_interpolation">增强帧同步</string>
|
<string name="frame_interpolation">增强帧同步</string>
|
||||||
<string name="frame_interpolation_description">通过同步帧间时间确保流畅一致的帧交付,减少卡顿和不均匀动画。适合存在帧时间不稳定或游戏过程中出现微卡顿的游戏。</string>
|
<string name="frame_interpolation_description">通过同步帧间时间确保流畅一致的帧交付,减少卡顿和不均匀动画。适合存在帧时间不稳定或游戏过程中出现微卡顿的游戏。</string>
|
||||||
<string name="renderer_early_release_fences">提前释放围栏</string>
|
<string name="renderer_early_release_fences">提前释放围栏</string>
|
||||||
|
|
|
@ -72,8 +72,6 @@
|
||||||
<string name="eden_veil_description">實驗性設定以提高效能和能力。這些設定可能會導致黑屏或其他遊戲問題。</string>
|
<string name="eden_veil_description">實驗性設定以提高效能和能力。這些設定可能會導致黑屏或其他遊戲問題。</string>
|
||||||
<string name="eden_veil_warning_title">實驗性設定</string>
|
<string name="eden_veil_warning_title">實驗性設定</string>
|
||||||
<string name="eden_veil_warning_description">伊甸之幕中的設定具有高度實驗性,可能導致問題。如果遊戲無法啟動,請停用所有擴充功能。</string>
|
<string name="eden_veil_warning_description">伊甸之幕中的設定具有高度實驗性,可能導致問題。如果遊戲無法啟動,請停用所有擴充功能。</string>
|
||||||
<string name="frame_skipping">開發中:跳幀</string>
|
|
||||||
<string name="frame_skipping_description">啟用或停用跳幀以減少渲染幀數,提高效能。此功能仍在開發中,將在未來版本中啟用。</string>
|
|
||||||
<string name="frame_interpolation">增強幀同步</string>
|
<string name="frame_interpolation">增強幀同步</string>
|
||||||
<string name="frame_interpolation_description">通過同步幀間時間確保流暢一致的幀交付,減少卡頓和不均勻動畫。適合存在幀時間不穩定或遊戲過程中出現微卡頓的遊戲。</string>
|
<string name="frame_interpolation_description">通過同步幀間時間確保流暢一致的幀交付,減少卡頓和不均勻動畫。適合存在幀時間不穩定或遊戲過程中出現微卡頓的遊戲。</string>
|
||||||
<string name="renderer_early_release_fences">提前釋放圍欄</string>
|
<string name="renderer_early_release_fences">提前釋放圍欄</string>
|
||||||
|
|
84
src/android/app/src/main/res/values/eden_colors.xml
Normal file
84
src/android/app/src/main/res/values/eden_colors.xml
Normal file
|
@ -0,0 +1,84 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<resources>
|
||||||
|
|
||||||
|
<!-- Synthwave/Vaporwave Primary Colors -->
|
||||||
|
<color name="eden_primary">#FF0080</color> <!-- Neon magenta -->
|
||||||
|
<color name="eden_primary_variant">#E6006B</color> <!-- Darker magenta -->
|
||||||
|
<color name="eden_secondary">#00FFFF</color> <!-- Electric cyan -->
|
||||||
|
<color name="eden_secondary_variant">#00E6E6</color> <!-- Darker cyan -->
|
||||||
|
|
||||||
|
<!-- Background Colors - Deep space black -->
|
||||||
|
<color name="eden_background">#000000</color> <!-- Pure black background -->
|
||||||
|
<color name="eden_surface">#0D0D0D</color> <!-- Card surface -->
|
||||||
|
<color name="eden_surface_variant">#1A1A1A</color> <!-- Elevated surface -->
|
||||||
|
|
||||||
|
<!-- Text Colors - High contrast for readability -->
|
||||||
|
<color name="eden_on_background">#FFFFFF</color> <!-- Pure white text -->
|
||||||
|
<color name="eden_on_surface">#FFFFFF</color> <!-- Pure white text -->
|
||||||
|
<color name="eden_on_primary">#FFFFFF</color> <!-- White on neon -->
|
||||||
|
<color name="eden_on_secondary">#000000</color> <!-- Black on cyan -->
|
||||||
|
|
||||||
|
<!-- Synthwave Accent Colors -->
|
||||||
|
<color name="eden_accent_pink">#FF0080</color> <!-- Neon magenta -->
|
||||||
|
<color name="eden_accent_purple">#9D00FF</color> <!-- Electric purple -->
|
||||||
|
<color name="eden_accent_blue">#0080FF</color> <!-- Electric blue -->
|
||||||
|
<color name="eden_accent_orange">#FF8000</color> <!-- Neon orange -->
|
||||||
|
|
||||||
|
<!-- Synthwave Gradient Colors -->
|
||||||
|
<color name="eden_gradient_start">#FF0080</color> <!-- Neon magenta -->
|
||||||
|
<color name="eden_gradient_middle">#9D00FF</color> <!-- Electric purple -->
|
||||||
|
<color name="eden_gradient_end">#00FFFF</color> <!-- Electric cyan -->
|
||||||
|
|
||||||
|
<!-- Neon Glow Effects -->
|
||||||
|
<color name="eden_glow_pink">#80FF0080</color> <!-- Magenta glow -->
|
||||||
|
<color name="eden_glow_cyan">#8000FFFF</color> <!-- Cyan glow -->
|
||||||
|
<color name="eden_glow_purple">#809D00FF</color> <!-- Purple glow -->
|
||||||
|
<color name="eden_glow_orange">#80FF8000</color> <!-- Orange glow -->
|
||||||
|
|
||||||
|
<!-- Neon Border Colors -->
|
||||||
|
<color name="eden_border">#7c757f</color> <!-- Subtle border -->
|
||||||
|
<color name="eden_border_light">#948b98</color> <!-- Lighter border -->
|
||||||
|
<color name="eden_border_gradient_start">#FF0080</color> <!-- Neon magenta -->
|
||||||
|
<color name="eden_border_gradient_end">#00FFFF</color> <!-- Electric cyan -->
|
||||||
|
|
||||||
|
<!-- Retro Grid Pattern -->
|
||||||
|
<color name="eden_grid_line">#1A1A1A</color> <!-- Grid lines -->
|
||||||
|
<color name="eden_grid_line_accent">#FF0080</color> <!-- Neon grid lines -->
|
||||||
|
<color name="eden_grid_line_cyan">#00FFFF</color> <!-- Cyan grid lines -->
|
||||||
|
|
||||||
|
<!-- Synthwave Status Colors -->
|
||||||
|
<color name="eden_error">#FF0040</color> <!-- Neon red -->
|
||||||
|
<color name="eden_success">#00FF80</color> <!-- Neon green -->
|
||||||
|
<color name="eden_warning">#FFFF00</color> <!-- Neon yellow -->
|
||||||
|
<color name="eden_info">#0080FF</color> <!-- Electric blue -->
|
||||||
|
|
||||||
|
<!-- Overlay Colors -->
|
||||||
|
<color name="eden_overlay_dark">#CC000000</color>
|
||||||
|
<color name="eden_overlay_medium">#80000000</color>
|
||||||
|
<color name="eden_overlay_light">#33000000</color>
|
||||||
|
|
||||||
|
<!-- Neon Button Colors -->
|
||||||
|
<color name="eden_button_primary_bg">#FF0080</color> <!-- Neon magenta -->
|
||||||
|
<color name="eden_button_secondary_bg">#00000000</color> <!-- Transparent -->
|
||||||
|
<color name="eden_button_secondary_border">#00FFFF</color> <!-- Electric cyan -->
|
||||||
|
|
||||||
|
<!-- Synthwave Card Colors -->
|
||||||
|
<color name="eden_card_background">#0D0D0D</color> <!-- Almost black -->
|
||||||
|
<color name="eden_card_background_elevated">#1A1A1A</color> <!-- Elevated black -->
|
||||||
|
|
||||||
|
<!-- Retro Navigation Colors -->
|
||||||
|
<color name="eden_nav_background">#000000</color> <!-- Pure black -->
|
||||||
|
<color name="eden_nav_selected">#FF0080</color> <!-- Neon magenta -->
|
||||||
|
<color name="eden_nav_unselected">#666666</color> <!-- Gray -->
|
||||||
|
|
||||||
|
<!-- Transparent versions for gradients -->
|
||||||
|
<color name="eden_transparent">#00000000</color>
|
||||||
|
<color name="eden_primary_transparent">#05FF0080</color>
|
||||||
|
<color name="eden_secondary_transparent">#0500FFFF</color>
|
||||||
|
|
||||||
|
<!-- Additional Synthwave Colors -->
|
||||||
|
<color name="eden_scan_line">#33FF0080</color> <!-- Scan line effect -->
|
||||||
|
<color name="eden_hologram">#1A00FFFF</color> <!-- Holographic effect -->
|
||||||
|
<color name="eden_neon_outline">#FFFF0080</color> <!-- Neon outline -->
|
||||||
|
|
||||||
|
</resources>
|
|
@ -440,10 +440,9 @@
|
||||||
<string name="user_data_import_success">User data imported successfully</string>
|
<string name="user_data_import_success">User data imported successfully</string>
|
||||||
<string name="user_data_export_cancelled">Export cancelled</string>
|
<string name="user_data_export_cancelled">Export cancelled</string>
|
||||||
<string name="user_data_import_failed_description">Make sure the user data folders are at the root of the zip folder and contain a config file at config/config.ini and try again.</string>
|
<string name="user_data_import_failed_description">Make sure the user data folders are at the root of the zip folder and contain a config file at config/config.ini and try again.</string>
|
||||||
<string name="discord_link" translatable="false">https://discord.gg/kXAmGCXBGD</string>
|
<string name="support_link">https://discord.gg/edenemu</string>
|
||||||
<string name="revolt_link" translatable="false">https://rvlt.gg/qKgFEAbH</string>
|
<string name="website_link">https://eden-emulator.github.io</string>
|
||||||
<string name="website_link" translatable="false">https://eden-emu.dev</string>
|
<string name="github_link">https://git.eden-emu.dev/eden-emu</string>
|
||||||
<string name="github_link" translatable="false">https://git.eden-emu.dev/eden-emu</string>
|
|
||||||
|
|
||||||
<!-- General settings strings -->
|
<!-- General settings strings -->
|
||||||
<string name="frame_limit_enable">Limit speed</string>
|
<string name="frame_limit_enable">Limit speed</string>
|
||||||
|
@ -480,8 +479,6 @@
|
||||||
<string name="display">Display</string>
|
<string name="display">Display</string>
|
||||||
<string name="processing">Post-Processing</string>
|
<string name="processing">Post-Processing</string>
|
||||||
|
|
||||||
<string name="frame_skipping">WIP: Frameskip</string>
|
|
||||||
<string name="frame_skipping_description">Toggle frame skipping to improve performance by reducing the number of rendered frames. This feature is still being worked on and will be enabled in future releases.</string>
|
|
||||||
<string name="renderer_accuracy">Accuracy level</string>
|
<string name="renderer_accuracy">Accuracy level</string>
|
||||||
<string name="renderer_resolution">Resolution (Handheld/Docked)</string>
|
<string name="renderer_resolution">Resolution (Handheld/Docked)</string>
|
||||||
<string name="renderer_vsync">VSync mode</string>
|
<string name="renderer_vsync">VSync mode</string>
|
||||||
|
|
|
@ -64,7 +64,7 @@
|
||||||
<item name="android:windowLightStatusBar">false</item>
|
<item name="android:windowLightStatusBar">false</item>
|
||||||
<item name="android:windowLightNavigationBar">false</item>
|
<item name="android:windowLightNavigationBar">false</item>
|
||||||
<!-- Other theme attributes -->
|
<!-- Other theme attributes -->
|
||||||
<item name="android:shadowColor">@color/eden_overlay</item>
|
<item name="android:shadowColor">@color/eden_overlay_dark</item>
|
||||||
<item name="sliderStyle">@style/EdenSlider</item>
|
<item name="sliderStyle">@style/EdenSlider</item>
|
||||||
<item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>
|
<item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>
|
||||||
<item name="android:enforceStatusBarContrast">false</item>
|
<item name="android:enforceStatusBarContrast">false</item>
|
||||||
|
|
|
@ -221,64 +221,6 @@
|
||||||
<color name="yuzu_inversePrimary_gray">#BDBDBD</color>
|
<color name="yuzu_inversePrimary_gray">#BDBDBD</color>
|
||||||
<color name="yuzu_surfaceTint_gray">#9E9E9E</color>
|
<color name="yuzu_surfaceTint_gray">#9E9E9E</color>
|
||||||
|
|
||||||
<!-- Eden Theme Colors -->
|
|
||||||
|
|
||||||
<!-- Synthwave/Vaporwave Primary Colors -->
|
|
||||||
<color name="eden_primary">#FF0080</color> <!-- Neon magenta -->
|
|
||||||
<color name="eden_primary_variant">#E6006B</color> <!-- Darker magenta -->
|
|
||||||
<color name="eden_secondary">#60D1F6</color> <!-- Electric cyan -->
|
|
||||||
<color name="eden_secondary_variant">#00E6E6</color> <!-- Darker cyan -->
|
|
||||||
|
|
||||||
<!-- Background Colors - White -->
|
|
||||||
<color name="eden_background">#FFFFFF</color> <!-- Pure black background -->
|
|
||||||
<color name="eden_surface">#FFFFFF</color> <!-- Card surface -->
|
|
||||||
<color name="eden_surface_variant">#D3D3D3</color> <!-- Elevated surface -->
|
|
||||||
|
|
||||||
<!-- Text Colors - High contrast for readability -->
|
|
||||||
<color name="eden_on_background">#000000</color> <!-- Pure black text -->
|
|
||||||
<color name="eden_on_surface">#000000</color> <!-- Pure black text -->
|
|
||||||
<color name="eden_on_primary">#FFFFFF</color> <!-- White on neon -->
|
|
||||||
<color name="eden_on_secondary">#C0C0C0</color> <!-- Milky White on cyan -->
|
|
||||||
|
|
||||||
<!-- Synthwave Accent Colors -->
|
|
||||||
<color name="eden_accent_purple">#9D00FF</color> <!-- Electric purple -->
|
|
||||||
<color name="eden_accent_blue">#0080FF</color> <!-- Electric blue -->
|
|
||||||
<color name="eden_accent_orange">#FF8000</color> <!-- Neon orange -->
|
|
||||||
|
|
||||||
<!-- Neon Glow Effects -->
|
|
||||||
<color name="eden_glow_pink">#80FF0080</color> <!-- Magenta glow -->
|
|
||||||
<color name="eden_glow_cyan">#8060D1F6</color> <!-- Cyan glow -->
|
|
||||||
<color name="eden_glow_orange">#80FF8000</color> <!-- Orange glow -->
|
|
||||||
|
|
||||||
<!-- Neon Border Colors -->
|
|
||||||
<color name="eden_border">#7c757f</color> <!-- Subtle border -->
|
|
||||||
<color name="eden_border_light">#948b98</color> <!-- Lighter border -->
|
|
||||||
<color name="eden_border_gradient_start">#FF0080</color> <!-- Neon magenta -->
|
|
||||||
<color name="eden_border_gradient_end">#60D1F6</color> <!-- Electric cyan -->
|
|
||||||
|
|
||||||
<!-- Synthwave Status Colors -->
|
|
||||||
<color name="eden_error">#FF0040</color> <!-- Neon red -->
|
|
||||||
<color name="eden_success">#00FF80</color> <!-- Neon green -->
|
|
||||||
<color name="eden_warning">#FFFF00</color> <!-- Neon yellow -->
|
|
||||||
<color name="eden_info">#0080FF</color> <!-- Electric blue -->
|
|
||||||
|
|
||||||
<!-- Overlay Colors -->
|
|
||||||
<color name="eden_overlay">#CCFFFFFF</color>
|
|
||||||
|
|
||||||
<!-- Neon Button Colors -->
|
|
||||||
<color name="eden_button_primary_bg">#FF0080</color> <!-- Neon magenta -->
|
|
||||||
<color name="eden_button_secondary_bg">#00000000</color> <!-- Transparent -->
|
|
||||||
<color name="eden_button_secondary_border">#60D1F6</color> <!-- Electric cyan -->
|
|
||||||
|
|
||||||
<!-- Synthwave Card Colors -->
|
|
||||||
<color name="eden_card_background">#F0F0F0</color> <!-- Almost white -->
|
|
||||||
<color name="eden_card_background_elevated">#D8D8D8</color> <!-- Elevated white -->
|
|
||||||
|
|
||||||
<!-- Transparent versions for gradients -->
|
|
||||||
<color name="eden_transparent">#00000000</color>
|
|
||||||
<color name="eden_primary_transparent">#05FF0080</color>
|
|
||||||
<color name="eden_secondary_transparent">#0500FFFF</color>
|
|
||||||
|
|
||||||
<!-- Common Colors Across All Themes -->
|
<!-- Common Colors Across All Themes -->
|
||||||
<color name="yuzu_outlineVariant">#C6C5D0</color>
|
<color name="yuzu_outlineVariant">#C6C5D0</color>
|
||||||
<color name="yuzu_error">#BA1A1A</color>
|
<color name="yuzu_error">#BA1A1A</color>
|
||||||
|
@ -288,8 +230,7 @@
|
||||||
<color name="yuzu_shadow">#000000</color>
|
<color name="yuzu_shadow">#000000</color>
|
||||||
<color name="yuzu_scrim">#000000</color>
|
<color name="yuzu_scrim">#000000</color>
|
||||||
<color name="yuzu_transparent_black">#80000000</color>
|
<color name="yuzu_transparent_black">#80000000</color>
|
||||||
|
<!-- Values used in dark mode but here are jsut white / black values-->
|
||||||
<!-- Values used in dark mode but here are just white / black values-->
|
|
||||||
<color name="yuzu_onPrimary_blue">#FFFFFF</color>
|
<color name="yuzu_onPrimary_blue">#FFFFFF</color>
|
||||||
<color name="yuzu_onSecondary_blue">#FFFFFF</color>
|
<color name="yuzu_onSecondary_blue">#FFFFFF</color>
|
||||||
<color name="yuzu_onTertiary_blue">#FFFFFF</color>
|
<color name="yuzu_onTertiary_blue">#FFFFFF</color>
|
||||||
|
|
|
@ -159,8 +159,7 @@ add_library(
|
||||||
wall_clock.cpp
|
wall_clock.cpp
|
||||||
wall_clock.h
|
wall_clock.h
|
||||||
zstd_compression.cpp
|
zstd_compression.cpp
|
||||||
zstd_compression.h
|
zstd_compression.h)
|
||||||
)
|
|
||||||
|
|
||||||
if(YUZU_ENABLE_PORTABLE)
|
if(YUZU_ENABLE_PORTABLE)
|
||||||
add_compile_definitions(YUZU_ENABLE_PORTABLE)
|
add_compile_definitions(YUZU_ENABLE_PORTABLE)
|
||||||
|
|
|
@ -322,12 +322,8 @@ struct Values {
|
||||||
SwitchableSetting<int> vulkan_device{linkage, 0, "vulkan_device", Category::Renderer,
|
SwitchableSetting<int> vulkan_device{linkage, 0, "vulkan_device", Category::Renderer,
|
||||||
Specialization::RuntimeList};
|
Specialization::RuntimeList};
|
||||||
SwitchableSetting<bool> enable_raii{linkage, false, "enable_raii", Category::Renderer};
|
SwitchableSetting<bool> enable_raii{linkage, false, "enable_raii", Category::Renderer};
|
||||||
#ifdef __ANDROID__
|
|
||||||
SwitchableSetting<bool> frame_interpolation{linkage, true, "frame_interpolation", Category::Renderer,
|
SwitchableSetting<bool> frame_interpolation{linkage, true, "frame_interpolation", Category::Renderer,
|
||||||
Specialization::RuntimeList};
|
Specialization::RuntimeList};
|
||||||
SwitchableSetting<bool> frame_skipping{linkage, false, "frame_skipping", Category::Renderer,
|
|
||||||
Specialization::RuntimeList};
|
|
||||||
#endif
|
|
||||||
SwitchableSetting<bool> use_disk_shader_cache{linkage, true, "use_disk_shader_cache",
|
SwitchableSetting<bool> use_disk_shader_cache{linkage, true, "use_disk_shader_cache",
|
||||||
Category::Renderer};
|
Category::Renderer};
|
||||||
SwitchableSetting<SpirvOptimizeMode, true> optimize_spirv_output{linkage,
|
SwitchableSetting<SpirvOptimizeMode, true> optimize_spirv_output{linkage,
|
||||||
|
|
|
@ -391,14 +391,14 @@ void ProfileManager::ParseUserSaveFile() {
|
||||||
|
|
||||||
if (!save.IsOpen()) {
|
if (!save.IsOpen()) {
|
||||||
LOG_WARNING(Service_ACC, "Failed to load profile data from save data... Generating new "
|
LOG_WARNING(Service_ACC, "Failed to load profile data from save data... Generating new "
|
||||||
"user 'eden' with random UUID.");
|
"user 'yuzu' with random UUID.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
ProfileDataRaw data;
|
ProfileDataRaw data;
|
||||||
if (!save.ReadObject(data)) {
|
if (!save.ReadObject(data)) {
|
||||||
LOG_WARNING(Service_ACC, "profiles.dat is smaller than expected... Generating new user "
|
LOG_WARNING(Service_ACC, "profiles.dat is smaller than expected... Generating new user "
|
||||||
"'eden' with random UUID.");
|
"'yuzu' with random UUID.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,20 +0,0 @@
|
||||||
// SPDX-FileCopyrightText: 2025 Eden Emulator Project
|
|
||||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
||||||
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
namespace Common {
|
|
||||||
|
|
||||||
static const constexpr std::array<const char *, @DEPS_LENGTH@> dep_names = {
|
|
||||||
@DEP_NAMES@
|
|
||||||
};
|
|
||||||
|
|
||||||
static const constexpr std::array<const char *, @DEPS_LENGTH@> dep_hashes = {
|
|
||||||
@DEP_SHAS@
|
|
||||||
};
|
|
||||||
|
|
||||||
static const constexpr std::array<const char *, @DEPS_LENGTH@> dep_urls = {
|
|
||||||
@DEP_URLS@
|
|
||||||
};
|
|
||||||
|
|
||||||
} // namespace Common
|
|
42
src/dynarmic/externals/CMakeLists.txt
vendored
42
src/dynarmic/externals/CMakeLists.txt
vendored
|
@ -1,4 +1,4 @@
|
||||||
include(CPMUtil)
|
include(CPM)
|
||||||
|
|
||||||
# Always build externals as static libraries, even when dynarmic is built as shared
|
# Always build externals as static libraries, even when dynarmic is built as shared
|
||||||
if (BUILD_SHARED_LIBS)
|
if (BUILD_SHARED_LIBS)
|
||||||
|
@ -22,12 +22,12 @@ set(BUILD_TESTING OFF)
|
||||||
if ("riscv" IN_LIST ARCHITECTURE)
|
if ("riscv" IN_LIST ARCHITECTURE)
|
||||||
add_subdirectory(biscuit)
|
add_subdirectory(biscuit)
|
||||||
|
|
||||||
AddPackage(
|
CPMAddPackage(
|
||||||
NAME biscuit
|
NAME biscuit
|
||||||
VERSION 0.9.1
|
VERSION 0.9.1
|
||||||
REPO "lioncash/biscuit"
|
URL "https://github.com/lioncash/biscuit/archive/76b0be8dae.zip"
|
||||||
SHA 76b0be8dae
|
URL_HASH SHA512=47d55ed02d032d6cf3dc107c6c0a9aea686d5f25aefb81d1af91db027b6815bd5add1755505e19d76625feeb17aa2db6cd1668fe0dad2e6a411519bde6ca4489
|
||||||
HASH 47d55ed02d032d6cf3dc107c6c0a9aea686d5f25aefb81d1af91db027b6815bd5add1755505e19d76625feeb17aa2db6cd1668fe0dad2e6a411519bde6ca4489
|
CUSTOM_CACHE_KEY "76b0"
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
@ -49,14 +49,14 @@ if (NOT TARGET fmt::fmt)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# mcl
|
# mcl
|
||||||
AddPackage(
|
CPMAddPackage(
|
||||||
NAME mcl
|
NAME mcl
|
||||||
VERSION 0.1.12
|
VERSION 0.1.12
|
||||||
REPO "azahar-emu/mcl"
|
URL "https://github.com/azahar-emu/mcl/archive/7b08d83418.zip"
|
||||||
SHA 7b08d83418
|
URL_HASH SHA512=f943bac39c1879986decad7a442ff4288eaeca4a2907684c7914e115a55ecc43c2782ded85c0835763fe04e40d5c82220ce864423e489e648e408a84f54dc4f3
|
||||||
HASH f943bac39c1879986decad7a442ff4288eaeca4a2907684c7914e115a55ecc43c2782ded85c0835763fe04e40d5c82220ce864423e489e648e408a84f54dc4f3
|
|
||||||
OPTIONS
|
OPTIONS
|
||||||
"MCL_INSTALL OFF"
|
"MCL_INSTALL OFF"
|
||||||
|
CUSTOM_CACHE_KEY "7b08"
|
||||||
)
|
)
|
||||||
|
|
||||||
# oaknut
|
# oaknut
|
||||||
|
@ -71,14 +71,14 @@ AddPackage(
|
||||||
|
|
||||||
# unordered_dense
|
# unordered_dense
|
||||||
|
|
||||||
AddPackage(
|
CPMAddPackage(
|
||||||
NAME unordered_dense
|
NAME unordered_dense
|
||||||
REPO "Lizzie841/unordered_dense"
|
URL "https://github.com/Lizzie841/unordered_dense/archive/e59d30b7b1.zip"
|
||||||
SHA e59d30b7b1
|
URL_HASH SHA512=71eff7bd9ba4b9226967bacd56a8ff000946f8813167cb5664bb01e96fb79e4e220684d824fe9c59c4d1cc98c606f13aff05b7940a1ed8ab3c95d6974ee34fa0
|
||||||
HASH 71eff7bd9ba4b9226967bacd56a8ff000946f8813167cb5664bb01e96fb79e4e220684d824fe9c59c4d1cc98c606f13aff05b7940a1ed8ab3c95d6974ee34fa0
|
|
||||||
FIND_PACKAGE_ARGUMENTS "CONFIG"
|
FIND_PACKAGE_ARGUMENTS "CONFIG"
|
||||||
OPTIONS
|
OPTIONS
|
||||||
"UNORDERED_DENSE_INSTALL OFF"
|
"UNORDERED_DENSE_INSTALL OFF"
|
||||||
|
CUSTOM_CACHE_KEY "e59d"
|
||||||
)
|
)
|
||||||
|
|
||||||
# xbyak
|
# xbyak
|
||||||
|
@ -93,24 +93,24 @@ AddPackage(
|
||||||
# zydis
|
# zydis
|
||||||
|
|
||||||
if ("x86_64" IN_LIST ARCHITECTURE)
|
if ("x86_64" IN_LIST ARCHITECTURE)
|
||||||
AddPackage(
|
CPMAddPackage(
|
||||||
NAME Zycore
|
NAME Zycore
|
||||||
REPO "zyantific/zycore-c"
|
URL "https://github.com/zyantific/zycore-c/archive/75a36c45ae.zip"
|
||||||
SHA 75a36c45ae
|
URL_HASH SHA512=15aa399f39713e042c4345bc3175c82f14dca849fde2a21d4f591f62c43e227b70d868d8bb86beb5f4eb68b1d6bd3792cdd638acf89009e787e3d10ee7401924
|
||||||
HASH 15aa399f39713e042c4345bc3175c82f14dca849fde2a21d4f591f62c43e227b70d868d8bb86beb5f4eb68b1d6bd3792cdd638acf89009e787e3d10ee7401924
|
CUSTOM_CACHE_KEY "75a3"
|
||||||
)
|
)
|
||||||
|
|
||||||
AddPackage(
|
CPMAddPackage(
|
||||||
NAME Zydis
|
NAME Zydis
|
||||||
VERSION 4
|
VERSION 4
|
||||||
REPO "zyantific/zydis"
|
URL "https://github.com/zyantific/zydis/archive/c2d2bab025.zip"
|
||||||
SHA c2d2bab025
|
URL_HASH SHA512=7b48f213ff7aab2926f8c9c65195959143bebbfb2b9a25051ffd8b8b0f1baf1670d9739781de674577d955925f91ac89376e16b476a03828c84e2fd765d45020
|
||||||
HASH 7b48f213ff7aab2926f8c9c65195959143bebbfb2b9a25051ffd8b8b0f1baf1670d9739781de674577d955925f91ac89376e16b476a03828c84e2fd765d45020
|
|
||||||
OPTIONS
|
OPTIONS
|
||||||
"ZYDIS_BUILD_TOOLS OFF"
|
"ZYDIS_BUILD_TOOLS OFF"
|
||||||
"ZYDIS_BUILD_EXAMPLES OFF"
|
"ZYDIS_BUILD_EXAMPLES OFF"
|
||||||
"ZYDIS_BUILD_DOXYGEN OFF"
|
"ZYDIS_BUILD_DOXYGEN OFF"
|
||||||
"ZYAN_ZYCORE_PATH ${Zycore_SOURCE_DIR}"
|
"ZYAN_ZYCORE_PATH ${Zycore_SOURCE_DIR}"
|
||||||
"CMAKE_DISABLE_FIND_PACKAGE_Doxygen ON"
|
"CMAKE_DISABLE_FIND_PACKAGE_Doxygen ON"
|
||||||
|
CUSTOM_CACHE_KEY "c2d2"
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
|
@ -14,34 +14,19 @@ template<typename... Ts>
|
||||||
assert_terminate_impl(expr_str, msg, fmt::make_format_args(args...));
|
assert_terminate_impl(expr_str, msg, fmt::make_format_args(args...));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Temporary until MCL is fully removed
|
|
||||||
#ifndef ASSERT_MSG
|
|
||||||
#define ASSERT_MSG(_a_, ...) \
|
#define ASSERT_MSG(_a_, ...) \
|
||||||
([&]() { \
|
([&]() { \
|
||||||
if (!(_a_)) [[unlikely]] { \
|
if (!(_a_)) [[unlikely]] { \
|
||||||
assert_terminate(#_a_, __VA_ARGS__); \
|
assert_terminate(#_a_, __VA_ARGS__); \
|
||||||
} \
|
} \
|
||||||
}())
|
}())
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef ASSERT
|
|
||||||
#define ASSERT(_a_) ASSERT_MSG(_a_, "")
|
#define ASSERT(_a_) ASSERT_MSG(_a_, "")
|
||||||
#endif
|
|
||||||
#ifndef UNREACHABLE
|
|
||||||
#define UNREACHABLE() ASSERT_MSG(false, "unreachable")
|
#define UNREACHABLE() ASSERT_MSG(false, "unreachable")
|
||||||
#endif
|
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
#ifndef DEBUG_ASSERT
|
|
||||||
#define DEBUG_ASSERT(_a_) ASSERT(_a_)
|
#define DEBUG_ASSERT(_a_) ASSERT(_a_)
|
||||||
#endif
|
|
||||||
#ifndef DEBUG_ASSERT_MSG
|
|
||||||
#define DEBUG_ASSERT_MSG(_a_, ...) ASSERT_MSG(_a_, __VA_ARGS__)
|
#define DEBUG_ASSERT_MSG(_a_, ...) ASSERT_MSG(_a_, __VA_ARGS__)
|
||||||
#endif
|
|
||||||
#else // not debug
|
#else // not debug
|
||||||
#ifndef DEBUG_ASSERT
|
|
||||||
#define DEBUG_ASSERT(_a_)
|
#define DEBUG_ASSERT(_a_)
|
||||||
#endif
|
|
||||||
#ifndef DEBUG_ASSERT_MSG
|
|
||||||
#define DEBUG_ASSERT_MSG(_a_, _desc_, ...)
|
#define DEBUG_ASSERT_MSG(_a_, _desc_, ...)
|
||||||
#endif
|
#endif
|
||||||
#endif
|
|
||||||
|
|
|
@ -23,13 +23,13 @@ namespace Core {
|
||||||
static constexpr std::chrono::seconds announce_time_interval(15);
|
static constexpr std::chrono::seconds announce_time_interval(15);
|
||||||
|
|
||||||
AnnounceMultiplayerSession::AnnounceMultiplayerSession() {
|
AnnounceMultiplayerSession::AnnounceMultiplayerSession() {
|
||||||
#ifdef ENABLE_WEB_SERVICE
|
//#ifdef ENABLE_WEB_SERVICE
|
||||||
backend = std::make_unique<WebService::RoomJson>(Settings::values.web_api_url.GetValue(),
|
backend = std::make_unique<WebService::RoomJson>(Settings::values.web_api_url.GetValue(),
|
||||||
Settings::values.eden_username.GetValue(),
|
Settings::values.eden_username.GetValue(),
|
||||||
Settings::values.eden_token.GetValue());
|
Settings::values.eden_token.GetValue());
|
||||||
#else
|
//#else
|
||||||
backend = std::make_unique<AnnounceMultiplayerRoom::NullBackend>();
|
// backend = std::make_unique<AnnounceMultiplayerRoom::NullBackend>();
|
||||||
#endif
|
//#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
WebService::WebResult AnnounceMultiplayerSession::Register() {
|
WebService::WebResult AnnounceMultiplayerSession::Register() {
|
||||||
|
@ -156,11 +156,11 @@ bool AnnounceMultiplayerSession::IsRunning() const {
|
||||||
void AnnounceMultiplayerSession::UpdateCredentials() {
|
void AnnounceMultiplayerSession::UpdateCredentials() {
|
||||||
ASSERT_MSG(!IsRunning(), "Credentials can only be updated when session is not running");
|
ASSERT_MSG(!IsRunning(), "Credentials can only be updated when session is not running");
|
||||||
|
|
||||||
#ifdef ENABLE_WEB_SERVICE
|
//#ifdef ENABLE_WEB_SERVICE
|
||||||
backend = std::make_unique<WebService::RoomJson>(Settings::values.web_api_url.GetValue(),
|
backend = std::make_unique<WebService::RoomJson>(Settings::values.web_api_url.GetValue(),
|
||||||
Settings::values.eden_username.GetValue(),
|
Settings::values.eden_username.GetValue(),
|
||||||
Settings::values.eden_token.GetValue());
|
Settings::values.eden_token.GetValue());
|
||||||
#endif
|
//#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace Core
|
} // namespace Core
|
||||||
|
|
|
@ -70,7 +70,7 @@ Id GetMaxThreadId(EmitContext& ctx, Id thread_id, Id clamp, Id segmentation_mask
|
||||||
Id SelectValue(EmitContext& ctx, Id in_range, Id value, Id src_thread_id) {
|
Id SelectValue(EmitContext& ctx, Id in_range, Id value, Id src_thread_id) {
|
||||||
return ctx.OpSelect(
|
return ctx.OpSelect(
|
||||||
ctx.U32[1], in_range,
|
ctx.U32[1], in_range,
|
||||||
ctx.OpGroupNonUniformShuffle(ctx.U32[1], SubgroupScope(ctx), value, src_thread_id), value);
|
ctx.OpGroupNonUniformShuffleXor(ctx.U32[1], SubgroupScope(ctx), value, src_thread_id), value);
|
||||||
}
|
}
|
||||||
|
|
||||||
Id AddPartitionBase(EmitContext& ctx, Id thread_id) {
|
Id AddPartitionBase(EmitContext& ctx, Id thread_id) {
|
||||||
|
|
|
@ -337,10 +337,6 @@ if (VulkanUtilityLibraries_ADDED)
|
||||||
target_include_directories(video_core PUBLIC ${VulkanUtilityLibraries_SOURCE_DIR}/include)
|
target_include_directories(video_core PUBLIC ${VulkanUtilityLibraries_SOURCE_DIR}/include)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (VulkanHeaders_ADDED)
|
|
||||||
target_include_directories(video_core PUBLIC ${VulkanHeaders_SOURCE_DIR}/include)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
target_link_libraries(video_core PRIVATE sirit Vulkan::Headers)
|
target_link_libraries(video_core PRIVATE sirit Vulkan::Headers)
|
||||||
|
|
||||||
if (ENABLE_NSIGHT_AFTERMATH)
|
if (ENABLE_NSIGHT_AFTERMATH)
|
||||||
|
|
|
@ -38,9 +38,7 @@
|
||||||
#include "video_core/vulkan_common/vulkan_memory_allocator.h"
|
#include "video_core/vulkan_common/vulkan_memory_allocator.h"
|
||||||
#include "video_core/vulkan_common/vulkan_surface.h"
|
#include "video_core/vulkan_common/vulkan_surface.h"
|
||||||
#include "video_core/vulkan_common/vulkan_wrapper.h"
|
#include "video_core/vulkan_common/vulkan_wrapper.h"
|
||||||
#ifdef __ANDROID__
|
|
||||||
#include <jni.h>
|
|
||||||
#endif
|
|
||||||
namespace Vulkan {
|
namespace Vulkan {
|
||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
|
@ -189,144 +187,94 @@ RendererVulkan::~RendererVulkan() {
|
||||||
void(device.GetLogical().WaitIdle());
|
void(device.GetLogical().WaitIdle());
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef __ANDROID__
|
void RendererVulkan::InterpolateFrames(Frame* prev_frame, Frame* interpolated_frame) {
|
||||||
class BooleanSetting {
|
if (!prev_frame || !interpolated_frame || !prev_frame->image || !interpolated_frame->image) {
|
||||||
public:
|
return;
|
||||||
// static BooleanSetting FRAME_SKIPPING;
|
}
|
||||||
static BooleanSetting FRAME_INTERPOLATION;
|
|
||||||
explicit BooleanSetting(bool initial_value = false) : value(initial_value) {}
|
|
||||||
|
|
||||||
[[nodiscard]] bool getBoolean() const {
|
const auto& framebuffer_layout = render_window.GetFramebufferLayout();
|
||||||
return value;
|
// Fixed aggressive downscale (50%)
|
||||||
}
|
VkExtent2D dst_extent{
|
||||||
|
.width = framebuffer_layout.width / 2,
|
||||||
void setBoolean(bool new_value) {
|
.height = framebuffer_layout.height / 2
|
||||||
value = new_value;
|
|
||||||
}
|
|
||||||
|
|
||||||
private:
|
|
||||||
bool value;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// Initialize static members
|
// Check if we need to recreate the destination frame
|
||||||
// BooleanSetting BooleanSetting::FRAME_SKIPPING(false);
|
bool needs_recreation = false; // Only recreate when necessary
|
||||||
BooleanSetting BooleanSetting::FRAME_INTERPOLATION(false);
|
if (!interpolated_frame->image_view) {
|
||||||
|
needs_recreation = true; // Need to create initially
|
||||||
// extern "C" JNIEXPORT jboolean JNICALL
|
} else {
|
||||||
// Java_org_yuzu_yuzu_1emu_features_settings_model_BooleanSetting_isFrameSkippingEnabled(JNIEnv* env, jobject /* this */) {
|
// Check if dimensions have changed
|
||||||
// return static_cast<jboolean>(BooleanSetting::FRAME_SKIPPING.getBoolean());
|
if (interpolated_frame->framebuffer) {
|
||||||
// }
|
needs_recreation = (framebuffer_layout.width / 2 != dst_extent.width) ||
|
||||||
|
(framebuffer_layout.height / 2 != dst_extent.height);
|
||||||
extern "C" JNIEXPORT jboolean JNICALL
|
} else {
|
||||||
Java_org_yuzu_yuzu_1emu_features_settings_model_BooleanSetting_isFrameInterpolationEnabled(JNIEnv* env, jobject /* this */) {
|
needs_recreation = true;
|
||||||
return static_cast<jboolean>(BooleanSetting::FRAME_INTERPOLATION.getBoolean());
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererVulkan::InterpolateFrames(Frame* prev_frame, Frame* interpolated_frame) {
|
if (needs_recreation) {
|
||||||
if (!prev_frame || !interpolated_frame || !prev_frame->image || !interpolated_frame->image) {
|
interpolated_frame->image = CreateWrappedImage(memory_allocator, dst_extent, swapchain.GetImageViewFormat());
|
||||||
return;
|
interpolated_frame->image_view = CreateWrappedImageView(device, interpolated_frame->image, swapchain.GetImageViewFormat());
|
||||||
}
|
interpolated_frame->framebuffer = blit_swapchain.CreateFramebuffer(
|
||||||
|
Layout::FramebufferLayout{dst_extent.width, dst_extent.height},
|
||||||
|
*interpolated_frame->image_view,
|
||||||
|
swapchain.GetImageViewFormat());
|
||||||
|
}
|
||||||
|
|
||||||
const auto& framebuffer_layout = render_window.GetFramebufferLayout();
|
scheduler.RequestOutsideRenderPassOperationContext();
|
||||||
// Fixed aggressive downscale (50%)
|
scheduler.Record([&](vk::CommandBuffer cmdbuf) {
|
||||||
VkExtent2D dst_extent{
|
// Transition images to transfer layouts
|
||||||
.width = framebuffer_layout.width / 2,
|
TransitionImageLayout(cmdbuf, *prev_frame->image, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL);
|
||||||
.height = framebuffer_layout.height / 2
|
TransitionImageLayout(cmdbuf, *interpolated_frame->image, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL);
|
||||||
|
|
||||||
|
// Perform the downscale blit
|
||||||
|
VkImageBlit blit_region{};
|
||||||
|
blit_region.srcSubresource = {VK_IMAGE_ASPECT_COLOR_BIT, 0, 0, 1};
|
||||||
|
blit_region.srcOffsets[0] = {0, 0, 0};
|
||||||
|
blit_region.srcOffsets[1] = {
|
||||||
|
static_cast<int32_t>(framebuffer_layout.width),
|
||||||
|
static_cast<int32_t>(framebuffer_layout.height),
|
||||||
|
1
|
||||||
|
};
|
||||||
|
blit_region.dstSubresource = {VK_IMAGE_ASPECT_COLOR_BIT, 0, 0, 1};
|
||||||
|
blit_region.dstOffsets[0] = {0, 0, 0};
|
||||||
|
blit_region.dstOffsets[1] = {
|
||||||
|
static_cast<int32_t>(dst_extent.width),
|
||||||
|
static_cast<int32_t>(dst_extent.height),
|
||||||
|
1
|
||||||
};
|
};
|
||||||
|
|
||||||
// Check if we need to recreate the destination frame
|
// Using the wrapper's BlitImage with proper parameters
|
||||||
bool needs_recreation = false; // Only recreate when necessary
|
cmdbuf.BlitImage(
|
||||||
if (!interpolated_frame->image_view) {
|
*prev_frame->image, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL,
|
||||||
needs_recreation = true; // Need to create initially
|
*interpolated_frame->image, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,
|
||||||
} else {
|
blit_region, VK_FILTER_NEAREST
|
||||||
// Check if dimensions have changed
|
);
|
||||||
if (interpolated_frame->framebuffer) {
|
|
||||||
needs_recreation = (framebuffer_layout.width / 2 != dst_extent.width) ||
|
|
||||||
(framebuffer_layout.height / 2 != dst_extent.height);
|
|
||||||
} else {
|
|
||||||
needs_recreation = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (needs_recreation) {
|
// Transition back to general layout
|
||||||
interpolated_frame->image = CreateWrappedImage(memory_allocator, dst_extent, swapchain.GetImageViewFormat());
|
TransitionImageLayout(cmdbuf, *prev_frame->image, VK_IMAGE_LAYOUT_GENERAL);
|
||||||
interpolated_frame->image_view = CreateWrappedImageView(device, interpolated_frame->image, swapchain.GetImageViewFormat());
|
TransitionImageLayout(cmdbuf, *interpolated_frame->image, VK_IMAGE_LAYOUT_GENERAL);
|
||||||
interpolated_frame->framebuffer = blit_swapchain.CreateFramebuffer(
|
});
|
||||||
Layout::FramebufferLayout{dst_extent.width, dst_extent.height},
|
}
|
||||||
*interpolated_frame->image_view,
|
|
||||||
swapchain.GetImageViewFormat());
|
|
||||||
}
|
|
||||||
|
|
||||||
scheduler.RequestOutsideRenderPassOperationContext();
|
|
||||||
scheduler.Record([&](vk::CommandBuffer cmdbuf) {
|
|
||||||
// Transition images to transfer layouts
|
|
||||||
TransitionImageLayout(cmdbuf, *prev_frame->image, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL);
|
|
||||||
TransitionImageLayout(cmdbuf, *interpolated_frame->image, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL);
|
|
||||||
|
|
||||||
// Perform the downscale blit
|
|
||||||
VkImageBlit blit_region{};
|
|
||||||
blit_region.srcSubresource = {VK_IMAGE_ASPECT_COLOR_BIT, 0, 0, 1};
|
|
||||||
blit_region.srcOffsets[0] = {0, 0, 0};
|
|
||||||
blit_region.srcOffsets[1] = {
|
|
||||||
static_cast<int32_t>(framebuffer_layout.width),
|
|
||||||
static_cast<int32_t>(framebuffer_layout.height),
|
|
||||||
1
|
|
||||||
};
|
|
||||||
blit_region.dstSubresource = {VK_IMAGE_ASPECT_COLOR_BIT, 0, 0, 1};
|
|
||||||
blit_region.dstOffsets[0] = {0, 0, 0};
|
|
||||||
blit_region.dstOffsets[1] = {
|
|
||||||
static_cast<int32_t>(dst_extent.width),
|
|
||||||
static_cast<int32_t>(dst_extent.height),
|
|
||||||
1
|
|
||||||
};
|
|
||||||
|
|
||||||
// Using the wrapper's BlitImage with proper parameters
|
|
||||||
cmdbuf.BlitImage(
|
|
||||||
*prev_frame->image, VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL,
|
|
||||||
*interpolated_frame->image, VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL,
|
|
||||||
blit_region, VK_FILTER_NEAREST
|
|
||||||
);
|
|
||||||
|
|
||||||
// Transition back to general layout
|
|
||||||
TransitionImageLayout(cmdbuf, *prev_frame->image, VK_IMAGE_LAYOUT_GENERAL);
|
|
||||||
TransitionImageLayout(cmdbuf, *interpolated_frame->image, VK_IMAGE_LAYOUT_GENERAL);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
void RendererVulkan::Composite(std::span<const Tegra::FramebufferConfig> framebuffers) {
|
void RendererVulkan::Composite(std::span<const Tegra::FramebufferConfig> framebuffers) {
|
||||||
#ifdef __ANDROID__
|
|
||||||
static int frame_counter = 0;
|
|
||||||
static int target_fps = 60; // Target FPS (30 or 60)
|
|
||||||
int frame_skip_threshold = 1;
|
|
||||||
|
|
||||||
bool frame_skipping = false; //BooleanSetting::FRAME_SKIPPING.getBoolean();
|
|
||||||
bool frame_interpolation = BooleanSetting::FRAME_INTERPOLATION.getBoolean();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (framebuffers.empty()) {
|
if (framebuffers.empty()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef __ANDROID__
|
bool frame_interpolation_enabled = Settings::values.frame_interpolation.GetValue();
|
||||||
if (frame_skipping) {
|
|
||||||
frame_skip_threshold = (target_fps == 30) ? 2 : 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
frame_counter++;
|
if (frame_interpolation_enabled && previous_frame) {
|
||||||
if (frame_counter % frame_skip_threshold != 0) {
|
Frame* interpolated_frame = present_manager.GetRenderFrame();
|
||||||
if (frame_interpolation && previous_frame) {
|
InterpolateFrames(previous_frame, interpolated_frame);
|
||||||
Frame* interpolated_frame = present_manager.GetRenderFrame();
|
blit_swapchain.DrawToFrame(rasterizer, interpolated_frame, framebuffers,
|
||||||
InterpolateFrames(previous_frame, interpolated_frame);
|
render_window.GetFramebufferLayout(), swapchain.GetImageCount(),
|
||||||
blit_swapchain.DrawToFrame(rasterizer, interpolated_frame, framebuffers,
|
swapchain.GetImageViewFormat());
|
||||||
render_window.GetFramebufferLayout(), swapchain.GetImageCount(),
|
scheduler.Flush(*interpolated_frame->render_ready);
|
||||||
swapchain.GetImageViewFormat());
|
present_manager.Present(interpolated_frame);
|
||||||
scheduler.Flush(*interpolated_frame->render_ready);
|
|
||||||
present_manager.Present(interpolated_frame);
|
|
||||||
}
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
SCOPE_EXIT {
|
SCOPE_EXIT {
|
||||||
render_window.OnFrameDisplayed();
|
render_window.OnFrameDisplayed();
|
||||||
|
|
|
@ -974,6 +974,7 @@ bool Device::GetSuitability(bool requires_swapchain) {
|
||||||
// Configure properties.
|
// Configure properties.
|
||||||
VkPhysicalDeviceVulkan12Features features_1_2{};
|
VkPhysicalDeviceVulkan12Features features_1_2{};
|
||||||
VkPhysicalDeviceVulkan13Features features_1_3{};
|
VkPhysicalDeviceVulkan13Features features_1_3{};
|
||||||
|
VkPhysicalDeviceVulkan14Features features_1_4{};
|
||||||
|
|
||||||
// Configure properties.
|
// Configure properties.
|
||||||
properties.properties = physical.GetProperties();
|
properties.properties = physical.GetProperties();
|
||||||
|
@ -1052,10 +1053,13 @@ bool Device::GetSuitability(bool requires_swapchain) {
|
||||||
if (instance_version >= VK_API_VERSION_1_2) {
|
if (instance_version >= VK_API_VERSION_1_2) {
|
||||||
features_1_2.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES;
|
features_1_2.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES;
|
||||||
features_1_3.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES;
|
features_1_3.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES;
|
||||||
|
features_1_4.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_4_FEATURES;
|
||||||
|
|
||||||
features_1_2.pNext = &features_1_3;
|
features_1_2.pNext = &features_1_3;
|
||||||
|
features_1_3.pNext = &features_1_4;
|
||||||
|
|
||||||
*next = &features_1_2;
|
*next = &features_1_2;
|
||||||
|
// next = &features_1_4.pNext;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Test all features we know about. If the feature is not available in core at our
|
// Test all features we know about. If the feature is not available in core at our
|
||||||
|
|
|
@ -238,10 +238,6 @@ add_executable(yuzu
|
||||||
migration_dialog.h migration_dialog.cpp
|
migration_dialog.h migration_dialog.cpp
|
||||||
migration_worker.h
|
migration_worker.h
|
||||||
migration_worker.cpp
|
migration_worker.cpp
|
||||||
|
|
||||||
deps_dialog.cpp
|
|
||||||
deps_dialog.h
|
|
||||||
deps_dialog.ui
|
|
||||||
)
|
)
|
||||||
|
|
||||||
set_target_properties(yuzu PROPERTIES OUTPUT_NAME "eden")
|
set_target_properties(yuzu PROPERTIES OUTPUT_NAME "eden")
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowTitle">
|
<property name="windowTitle">
|
||||||
<string>About Eden</string>
|
<string>About eden</string>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_3">
|
<layout class="QVBoxLayout" name="verticalLayout_3">
|
||||||
<item>
|
<item>
|
||||||
|
|
|
@ -1,6 +1,3 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
|
||||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
||||||
|
|
||||||
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
@ -55,7 +52,7 @@ QtProfileSelectionDialog::QtProfileSelectionDialog(
|
||||||
Core::System& system, QWidget* parent,
|
Core::System& system, QWidget* parent,
|
||||||
const Core::Frontend::ProfileSelectParameters& parameters)
|
const Core::Frontend::ProfileSelectParameters& parameters)
|
||||||
: QDialog(parent), profile_manager{system.GetProfileManager()} {
|
: QDialog(parent), profile_manager{system.GetProfileManager()} {
|
||||||
outer_layout = new QVBoxLayout(this);
|
outer_layout = new QVBoxLayout;
|
||||||
|
|
||||||
instruction_label = new QLabel();
|
instruction_label = new QLabel();
|
||||||
|
|
||||||
|
@ -69,7 +66,7 @@ QtProfileSelectionDialog::QtProfileSelectionDialog(
|
||||||
outer_layout->addWidget(scroll_area);
|
outer_layout->addWidget(scroll_area);
|
||||||
outer_layout->addWidget(buttons);
|
outer_layout->addWidget(buttons);
|
||||||
|
|
||||||
layout = new QVBoxLayout(scroll_area);
|
layout = new QVBoxLayout;
|
||||||
tree_view = new QTreeView;
|
tree_view = new QTreeView;
|
||||||
item_model = new QStandardItemModel(tree_view);
|
item_model = new QStandardItemModel(tree_view);
|
||||||
tree_view->setModel(item_model);
|
tree_view->setModel(item_model);
|
||||||
|
@ -97,6 +94,8 @@ QtProfileSelectionDialog::QtProfileSelectionDialog(
|
||||||
layout->setSpacing(0);
|
layout->setSpacing(0);
|
||||||
layout->addWidget(tree_view);
|
layout->addWidget(tree_view);
|
||||||
|
|
||||||
|
scroll_area->setLayout(layout);
|
||||||
|
|
||||||
connect(tree_view, &QTreeView::clicked, this, &QtProfileSelectionDialog::SelectUser);
|
connect(tree_view, &QTreeView::clicked, this, &QtProfileSelectionDialog::SelectUser);
|
||||||
connect(tree_view, &QTreeView::doubleClicked, this, &QtProfileSelectionDialog::accept);
|
connect(tree_view, &QTreeView::doubleClicked, this, &QtProfileSelectionDialog::accept);
|
||||||
connect(controller_navigation, &ControllerNavigation::TriggerKeyboardEvent,
|
connect(controller_navigation, &ControllerNavigation::TriggerKeyboardEvent,
|
||||||
|
@ -125,6 +124,7 @@ QtProfileSelectionDialog::QtProfileSelectionDialog(
|
||||||
for (const auto& item : list_items)
|
for (const auto& item : list_items)
|
||||||
item_model->appendRow(item);
|
item_model->appendRow(item);
|
||||||
|
|
||||||
|
setLayout(outer_layout);
|
||||||
SetWindowTitle(parameters);
|
SetWindowTitle(parameters);
|
||||||
SetDialogPurpose(parameters);
|
SetDialogPurpose(parameters);
|
||||||
resize(550, 400);
|
resize(550, 400);
|
||||||
|
|
|
@ -287,6 +287,7 @@ GRenderWindow::GRenderWindow(GMainWindow* parent, EmuThread* emu_thread_,
|
||||||
setAttribute(Qt::WA_AcceptTouchEvents);
|
setAttribute(Qt::WA_AcceptTouchEvents);
|
||||||
auto* layout = new QHBoxLayout(this);
|
auto* layout = new QHBoxLayout(this);
|
||||||
layout->setContentsMargins(0, 0, 0, 0);
|
layout->setContentsMargins(0, 0, 0, 0);
|
||||||
|
setLayout(layout);
|
||||||
input_subsystem->Initialize();
|
input_subsystem->Initialize();
|
||||||
this->setMouseTracking(true);
|
this->setMouseTracking(true);
|
||||||
|
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowTitle">
|
<property name="windowTitle">
|
||||||
<string>Eden Configuration</string>
|
<string>eden Configuration</string>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QVBoxLayout" name="verticalLayout">
|
<layout class="QVBoxLayout" name="verticalLayout">
|
||||||
<item>
|
<item>
|
||||||
|
|
|
@ -1,6 +1,3 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
|
||||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
||||||
|
|
||||||
// SPDX-FileCopyrightText: 2016 Citra Emulator Project
|
// SPDX-FileCopyrightText: 2016 Citra Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
@ -101,8 +98,8 @@ void ConfigureInput::Initialize(InputCommon::InputSubsystem* input_subsystem,
|
||||||
};
|
};
|
||||||
|
|
||||||
for (std::size_t i = 0; i < player_tabs.size(); ++i) {
|
for (std::size_t i = 0; i < player_tabs.size(); ++i) {
|
||||||
QHBoxLayout *tab_layout = new QHBoxLayout(player_tabs[i]);
|
player_tabs[i]->setLayout(new QHBoxLayout(player_tabs[i]));
|
||||||
tab_layout->addWidget(player_controllers[i]);
|
player_tabs[i]->layout()->addWidget(player_controllers[i]);
|
||||||
connect(player_controllers[i], &ConfigureInputPlayer::Connected, [this, i](bool checked) {
|
connect(player_controllers[i], &ConfigureInputPlayer::Connected, [this, i](bool checked) {
|
||||||
// Ensures that connecting a controller changes the number of players
|
// Ensures that connecting a controller changes the number of players
|
||||||
if (connected_controller_checkboxes[i]->isChecked() != checked) {
|
if (connected_controller_checkboxes[i]->isChecked() != checked) {
|
||||||
|
@ -141,9 +138,8 @@ void ConfigureInput::Initialize(InputCommon::InputSubsystem* input_subsystem,
|
||||||
[this](bool is_handheld) { UpdateDockedState(is_handheld); });
|
[this](bool is_handheld) { UpdateDockedState(is_handheld); });
|
||||||
|
|
||||||
advanced = new ConfigureInputAdvanced(hid_core, this);
|
advanced = new ConfigureInputAdvanced(hid_core, this);
|
||||||
|
ui->tabAdvanced->setLayout(new QHBoxLayout(ui->tabAdvanced));
|
||||||
QHBoxLayout* advancedLayout = new QHBoxLayout(ui->tabAdvanced);
|
ui->tabAdvanced->layout()->addWidget(advanced);
|
||||||
advancedLayout->addWidget(advanced);
|
|
||||||
|
|
||||||
connect(advanced, &ConfigureInputAdvanced::CallDebugControllerDialog,
|
connect(advanced, &ConfigureInputAdvanced::CallDebugControllerDialog,
|
||||||
[this, input_subsystem, &hid_core, is_powered_on] {
|
[this, input_subsystem, &hid_core, is_powered_on] {
|
||||||
|
|
|
@ -1,12 +1,10 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
|
||||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
||||||
|
|
||||||
// SPDX-FileCopyrightText: 2016 Citra Emulator Project
|
// SPDX-FileCopyrightText: 2016 Citra Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include <utility>
|
#include <utility>
|
||||||
|
#include <QGridLayout>
|
||||||
#include <QInputDialog>
|
#include <QInputDialog>
|
||||||
#include <QMenu>
|
#include <QMenu>
|
||||||
#include <QMessageBox>
|
#include <QMessageBox>
|
||||||
|
@ -15,6 +13,7 @@
|
||||||
#include "common/assert.h"
|
#include "common/assert.h"
|
||||||
#include "common/param_package.h"
|
#include "common/param_package.h"
|
||||||
#include "configuration/qt_config.h"
|
#include "configuration/qt_config.h"
|
||||||
|
#include "frontend_common/config.h"
|
||||||
#include "hid_core/frontend/emulated_controller.h"
|
#include "hid_core/frontend/emulated_controller.h"
|
||||||
#include "hid_core/hid_core.h"
|
#include "hid_core/hid_core.h"
|
||||||
#include "hid_core/hid_types.h"
|
#include "hid_core/hid_types.h"
|
||||||
|
|
|
@ -1,6 +1,3 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
|
||||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
||||||
|
|
||||||
// SPDX-FileCopyrightText: 2018 Citra Emulator Project
|
// SPDX-FileCopyrightText: 2018 Citra Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
@ -22,7 +19,7 @@
|
||||||
CalibrationConfigurationDialog::CalibrationConfigurationDialog(QWidget* parent,
|
CalibrationConfigurationDialog::CalibrationConfigurationDialog(QWidget* parent,
|
||||||
const std::string& host, u16 port)
|
const std::string& host, u16 port)
|
||||||
: QDialog(parent) {
|
: QDialog(parent) {
|
||||||
layout = new QVBoxLayout(this);
|
layout = new QVBoxLayout;
|
||||||
status_label = new QLabel(tr("Communicating with the server..."));
|
status_label = new QLabel(tr("Communicating with the server..."));
|
||||||
cancel_button = new QPushButton(tr("Cancel"));
|
cancel_button = new QPushButton(tr("Cancel"));
|
||||||
connect(cancel_button, &QPushButton::clicked, this, [this] {
|
connect(cancel_button, &QPushButton::clicked, this, [this] {
|
||||||
|
@ -33,6 +30,7 @@ CalibrationConfigurationDialog::CalibrationConfigurationDialog(QWidget* parent,
|
||||||
});
|
});
|
||||||
layout->addWidget(status_label);
|
layout->addWidget(status_label);
|
||||||
layout->addWidget(cancel_button);
|
layout->addWidget(cancel_button);
|
||||||
|
setLayout(layout);
|
||||||
|
|
||||||
using namespace InputCommon::CemuhookUDP;
|
using namespace InputCommon::CemuhookUDP;
|
||||||
job = std::make_unique<CalibrationConfigurationJob>(
|
job = std::make_unique<CalibrationConfigurationJob>(
|
||||||
|
|
|
@ -418,7 +418,7 @@ bool ConfigureProfileManager::LoadAvatarData() {
|
||||||
ConfigureProfileManagerAvatarDialog::ConfigureProfileManagerAvatarDialog(QWidget* parent)
|
ConfigureProfileManagerAvatarDialog::ConfigureProfileManagerAvatarDialog(QWidget* parent)
|
||||||
: QDialog{parent}, avatar_list{new QListWidget(this)}, bg_color_button{new QPushButton(this)} {
|
: QDialog{parent}, avatar_list{new QListWidget(this)}, bg_color_button{new QPushButton(this)} {
|
||||||
auto* main_layout = new QVBoxLayout(this);
|
auto* main_layout = new QVBoxLayout(this);
|
||||||
auto* button_layout = new QHBoxLayout();
|
auto* button_layout = new QHBoxLayout(this);
|
||||||
auto* select_button = new QPushButton(tr("Select"), this);
|
auto* select_button = new QPushButton(tr("Select"), this);
|
||||||
auto* cancel_button = new QPushButton(tr("Cancel"), this);
|
auto* cancel_button = new QPushButton(tr("Cancel"), this);
|
||||||
auto* bg_color_label = new QLabel(tr("Background Color"), this);
|
auto* bg_color_label = new QLabel(tr("Background Color"), this);
|
||||||
|
@ -442,6 +442,7 @@ ConfigureProfileManagerAvatarDialog::ConfigureProfileManagerAvatarDialog(QWidget
|
||||||
button_layout->addWidget(select_button);
|
button_layout->addWidget(select_button);
|
||||||
button_layout->addWidget(cancel_button);
|
button_layout->addWidget(cancel_button);
|
||||||
|
|
||||||
|
this->setLayout(main_layout);
|
||||||
this->setWindowTitle(tr("Select Firmware Avatar"));
|
this->setWindowTitle(tr("Select Firmware Avatar"));
|
||||||
main_layout->addWidget(avatar_list);
|
main_layout->addWidget(avatar_list);
|
||||||
main_layout->addLayout(button_layout);
|
main_layout->addLayout(button_layout);
|
||||||
|
|
|
@ -12,7 +12,6 @@
|
||||||
#include <QDialog>
|
#include <QDialog>
|
||||||
#include <QList>
|
#include <QList>
|
||||||
#include <QWidget>
|
#include <QWidget>
|
||||||
#include "core/file_sys/vfs/vfs_types.h"
|
|
||||||
|
|
||||||
namespace Common {
|
namespace Common {
|
||||||
struct UUID;
|
struct UUID;
|
||||||
|
|
|
@ -250,6 +250,12 @@ std::unique_ptr<TranslationMap> InitializeTranslations(QWidget* parent)
|
||||||
"of available video memory for performance. Has no effect on integrated graphics. "
|
"of available video memory for performance. Has no effect on integrated graphics. "
|
||||||
"Aggressive mode may severely impact the performance of other applications such as "
|
"Aggressive mode may severely impact the performance of other applications such as "
|
||||||
"recording software."));
|
"recording software."));
|
||||||
|
INSERT(Settings,
|
||||||
|
frame_interpolation,
|
||||||
|
tr("Enhanced Frame Pacing"),
|
||||||
|
tr("Ensures smooth and consistent frame delivery by synchronizing the timing between frames, "
|
||||||
|
"reducing stuttering and uneven animation. Ideal for games that experience frame timing "
|
||||||
|
"instability or micro-stutters during gameplay."));
|
||||||
INSERT(Settings,
|
INSERT(Settings,
|
||||||
skip_cpu_inner_invalidation,
|
skip_cpu_inner_invalidation,
|
||||||
tr("Skip CPU Inner Invalidation"),
|
tr("Skip CPU Inner Invalidation"),
|
||||||
|
@ -333,14 +339,13 @@ std::unique_ptr<TranslationMap> InitializeTranslations(QWidget* parent)
|
||||||
barrier_feedback_loops,
|
barrier_feedback_loops,
|
||||||
tr("Barrier feedback loops"),
|
tr("Barrier feedback loops"),
|
||||||
tr("Improves rendering of transparency effects in specific games."));
|
tr("Improves rendering of transparency effects in specific games."));
|
||||||
|
|
||||||
// Renderer (Extensions)
|
|
||||||
INSERT(Settings,
|
INSERT(Settings,
|
||||||
enable_raii,
|
enable_raii,
|
||||||
tr("RAII"),
|
tr("RAII"),
|
||||||
tr("A method of automatic resource management in Vulkan "
|
tr("A method of automatic resource management in Vulkan "
|
||||||
"that ensures proper release of resources "
|
"that ensures proper release of resources "
|
||||||
"when they are no longer needed, but may cause crashes in bundled games."));
|
"when they are no longer needed, but may cause crashes in bundled games."));
|
||||||
|
// Renderer (Extensions)
|
||||||
INSERT(Settings,
|
INSERT(Settings,
|
||||||
dyna_state,
|
dyna_state,
|
||||||
tr("Extended Dynamic State"),
|
tr("Extended Dynamic State"),
|
||||||
|
|
|
@ -1,6 +1,3 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
|
||||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
||||||
|
|
||||||
// SPDX-FileCopyrightText: 2015 Citra Emulator Project
|
// SPDX-FileCopyrightText: 2015 Citra Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
@ -31,6 +28,7 @@ ControllerDialog::ControllerDialog(Core::HID::HIDCore& hid_core_,
|
||||||
QLayout* layout = new QVBoxLayout(this);
|
QLayout* layout = new QVBoxLayout(this);
|
||||||
layout->setContentsMargins(0, 0, 0, 0);
|
layout->setContentsMargins(0, 0, 0, 0);
|
||||||
layout->addWidget(widget);
|
layout->addWidget(widget);
|
||||||
|
setLayout(layout);
|
||||||
|
|
||||||
// Configure focus so that widget is focusable and the dialog automatically forwards focus to
|
// Configure focus so that widget is focusable and the dialog automatically forwards focus to
|
||||||
// it.
|
// it.
|
||||||
|
|
|
@ -1,121 +0,0 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
|
||||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
||||||
|
|
||||||
#include "yuzu/deps_dialog.h"
|
|
||||||
#include <QAbstractTextDocumentLayout>
|
|
||||||
#include <QDesktopServices>
|
|
||||||
#include <QIcon>
|
|
||||||
#include <QPainter>
|
|
||||||
#include <QTableWidget>
|
|
||||||
#include <QTextEdit>
|
|
||||||
#include "dep_hashes.h"
|
|
||||||
#include "ui_deps_dialog.h"
|
|
||||||
#include <fmt/ranges.h>
|
|
||||||
|
|
||||||
DepsDialog::DepsDialog(QWidget* parent)
|
|
||||||
: QDialog(parent)
|
|
||||||
, ui{std::make_unique<Ui::DepsDialog>()}
|
|
||||||
{
|
|
||||||
ui->setupUi(this);
|
|
||||||
|
|
||||||
constexpr size_t rows = Common::dep_hashes.size();
|
|
||||||
ui->tableDeps->setRowCount(rows);
|
|
||||||
|
|
||||||
QStringList labels;
|
|
||||||
labels << tr("Dependency") << tr("Version");
|
|
||||||
|
|
||||||
ui->tableDeps->setHorizontalHeaderLabels(labels);
|
|
||||||
ui->tableDeps->horizontalHeader()->setSectionResizeMode(0, QHeaderView::ResizeMode::Stretch);
|
|
||||||
ui->tableDeps->horizontalHeader()->setSectionResizeMode(1, QHeaderView::ResizeMode::Fixed);
|
|
||||||
ui->tableDeps->horizontalHeader()->setMinimumSectionSize(200);
|
|
||||||
|
|
||||||
for (size_t i = 0; i < rows; ++i) {
|
|
||||||
const std::string name = Common::dep_names.at(i);
|
|
||||||
const std::string sha = Common::dep_hashes.at(i);
|
|
||||||
const std::string url = Common::dep_urls.at(i);
|
|
||||||
|
|
||||||
std::string dependency = fmt::format("<a href=\"{}\">{}</a>", url, name);
|
|
||||||
|
|
||||||
QTableWidgetItem *nameItem = new QTableWidgetItem(QString::fromStdString(dependency));
|
|
||||||
QTableWidgetItem *shaItem = new QTableWidgetItem(QString::fromStdString(sha));
|
|
||||||
|
|
||||||
ui->tableDeps->setItem(i, 0, nameItem);
|
|
||||||
ui->tableDeps->setItem(i, 1, shaItem);
|
|
||||||
}
|
|
||||||
|
|
||||||
ui->tableDeps->setItemDelegateForColumn(0, new LinkItemDelegate(this));
|
|
||||||
}
|
|
||||||
|
|
||||||
DepsDialog::~DepsDialog() = default;
|
|
||||||
|
|
||||||
LinkItemDelegate::LinkItemDelegate(QObject *parent)
|
|
||||||
: QStyledItemDelegate(parent)
|
|
||||||
{}
|
|
||||||
|
|
||||||
void LinkItemDelegate::paint(QPainter *painter,
|
|
||||||
const QStyleOptionViewItem &option,
|
|
||||||
const QModelIndex &index) const
|
|
||||||
{
|
|
||||||
auto options = option;
|
|
||||||
initStyleOption(&options, index);
|
|
||||||
|
|
||||||
QTextDocument doc;
|
|
||||||
QString html = index.data(Qt::DisplayRole).toString();
|
|
||||||
doc.setHtml(html);
|
|
||||||
|
|
||||||
options.text.clear();
|
|
||||||
|
|
||||||
painter->save();
|
|
||||||
painter->translate(options.rect.topLeft());
|
|
||||||
doc.drawContents(painter, QRectF(0, 0, options.rect.width(), options.rect.height()));
|
|
||||||
painter->restore();
|
|
||||||
}
|
|
||||||
|
|
||||||
QSize LinkItemDelegate::sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const
|
|
||||||
{
|
|
||||||
QStyleOptionViewItem options = option;
|
|
||||||
initStyleOption(&options, index);
|
|
||||||
|
|
||||||
QTextDocument doc;
|
|
||||||
doc.setHtml(options.text);
|
|
||||||
doc.setTextWidth(options.rect.width());
|
|
||||||
return QSize(doc.idealWidth(), doc.size().height());
|
|
||||||
}
|
|
||||||
|
|
||||||
bool LinkItemDelegate::editorEvent(QEvent *event,
|
|
||||||
QAbstractItemModel *model,
|
|
||||||
const QStyleOptionViewItem &option,
|
|
||||||
const QModelIndex &index)
|
|
||||||
{
|
|
||||||
if (event->type() == QEvent::MouseButtonRelease) {
|
|
||||||
QMouseEvent *mouseEvent = static_cast<QMouseEvent *>(event);
|
|
||||||
if (mouseEvent->button() == Qt::LeftButton) {
|
|
||||||
QString html = index.data(Qt::DisplayRole).toString();
|
|
||||||
QTextDocument doc;
|
|
||||||
doc.setHtml(html);
|
|
||||||
doc.setTextWidth(option.rect.width());
|
|
||||||
|
|
||||||
// this is kinda silly but it werks
|
|
||||||
QAbstractTextDocumentLayout *layout = doc.documentLayout();
|
|
||||||
|
|
||||||
QPoint pos = mouseEvent->pos() - option.rect.topLeft();
|
|
||||||
int charPos = layout->hitTest(pos, Qt::ExactHit);
|
|
||||||
|
|
||||||
if (charPos >= 0) {
|
|
||||||
QTextCursor cursor(&doc);
|
|
||||||
cursor.setPosition(charPos);
|
|
||||||
|
|
||||||
QTextCharFormat format = cursor.charFormat();
|
|
||||||
|
|
||||||
if (format.isAnchor()) {
|
|
||||||
QString href = format.anchorHref();
|
|
||||||
if (!href.isEmpty()) {
|
|
||||||
QDesktopServices::openUrl(QUrl(href));
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return QStyledItemDelegate::editorEvent(event, model, option, index);
|
|
||||||
}
|
|
|
@ -1,41 +0,0 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
|
||||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
||||||
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#include <QDialog>
|
|
||||||
#include <QStyledItemDelegate>
|
|
||||||
#include <QTableView>
|
|
||||||
#include <memory>
|
|
||||||
|
|
||||||
namespace Ui { class DepsDialog; }
|
|
||||||
|
|
||||||
class DepsDialog : public QDialog
|
|
||||||
{
|
|
||||||
Q_OBJECT
|
|
||||||
|
|
||||||
public:
|
|
||||||
explicit DepsDialog(QWidget *parent);
|
|
||||||
~DepsDialog() override;
|
|
||||||
|
|
||||||
private:
|
|
||||||
std::unique_ptr<Ui::DepsDialog> ui;
|
|
||||||
};
|
|
||||||
|
|
||||||
class LinkItemDelegate : public QStyledItemDelegate
|
|
||||||
{
|
|
||||||
Q_OBJECT
|
|
||||||
|
|
||||||
public:
|
|
||||||
explicit LinkItemDelegate(QObject *parent = 0);
|
|
||||||
|
|
||||||
protected:
|
|
||||||
void paint(QPainter *painter,
|
|
||||||
const QStyleOptionViewItem &option,
|
|
||||||
const QModelIndex &index) const override;
|
|
||||||
QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const override;
|
|
||||||
bool editorEvent(QEvent *event,
|
|
||||||
QAbstractItemModel *model,
|
|
||||||
const QStyleOptionViewItem &option,
|
|
||||||
const QModelIndex &index) override;
|
|
||||||
};
|
|
|
@ -1,166 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<ui version="4.0">
|
|
||||||
<class>DepsDialog</class>
|
|
||||||
<widget class="QDialog" name="DepsDialog">
|
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>0</x>
|
|
||||||
<y>0</y>
|
|
||||||
<width>701</width>
|
|
||||||
<height>500</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="windowTitle">
|
|
||||||
<string>Eden Dependencies</string>
|
|
||||||
</property>
|
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_3">
|
|
||||||
<item>
|
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout" stretch="0,1">
|
|
||||||
<item>
|
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_2">
|
|
||||||
<item>
|
|
||||||
<widget class="QLabel" name="labelLogo">
|
|
||||||
<property name="sizePolicy">
|
|
||||||
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
|
||||||
<horstretch>0</horstretch>
|
|
||||||
<verstretch>0</verstretch>
|
|
||||||
</sizepolicy>
|
|
||||||
</property>
|
|
||||||
<property name="maximumSize">
|
|
||||||
<size>
|
|
||||||
<width>200</width>
|
|
||||||
<height>200</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string/>
|
|
||||||
</property>
|
|
||||||
<property name="pixmap">
|
|
||||||
<pixmap resource="../../dist/qt_themes/default/default.qrc">:/icons/default/256x256/eden.png</pixmap>
|
|
||||||
</property>
|
|
||||||
<property name="scaledContents">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<spacer name="verticalSpacer">
|
|
||||||
<property name="orientation">
|
|
||||||
<enum>Qt::Orientation::Vertical</enum>
|
|
||||||
</property>
|
|
||||||
<property name="sizeHint" stdset="0">
|
|
||||||
<size>
|
|
||||||
<width>20</width>
|
|
||||||
<height>40</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
</spacer>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<layout class="QVBoxLayout" name="verticalLayout">
|
|
||||||
<item>
|
|
||||||
<widget class="QLabel" name="labelEden">
|
|
||||||
<property name="sizePolicy">
|
|
||||||
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
|
||||||
<horstretch>0</horstretch>
|
|
||||||
<verstretch>0</verstretch>
|
|
||||||
</sizepolicy>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string><html><head/><body><p><span style=" font-size:28pt;">Eden Dependencies</span></p></body></html></string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QLabel" name="labelInfo">
|
|
||||||
<property name="sizePolicy">
|
|
||||||
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
|
||||||
<horstretch>0</horstretch>
|
|
||||||
<verstretch>0</verstretch>
|
|
||||||
</sizepolicy>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string><html><head/><body><p>The projects that make Eden possible</p></body></html></string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QTableWidget" name="tableDeps">
|
|
||||||
<property name="editTriggers">
|
|
||||||
<set>QAbstractItemView::EditTrigger::NoEditTriggers</set>
|
|
||||||
</property>
|
|
||||||
<property name="alternatingRowColors">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
<property name="selectionMode">
|
|
||||||
<enum>QAbstractItemView::SelectionMode::NoSelection</enum>
|
|
||||||
</property>
|
|
||||||
<property name="columnCount">
|
|
||||||
<number>2</number>
|
|
||||||
</property>
|
|
||||||
<attribute name="horizontalHeaderShowSortIndicator" stdset="0">
|
|
||||||
<bool>false</bool>
|
|
||||||
</attribute>
|
|
||||||
<attribute name="verticalHeaderVisible">
|
|
||||||
<bool>false</bool>
|
|
||||||
</attribute>
|
|
||||||
<column/>
|
|
||||||
<column/>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QDialogButtonBox" name="buttonBox">
|
|
||||||
<property name="orientation">
|
|
||||||
<enum>Qt::Orientation::Horizontal</enum>
|
|
||||||
</property>
|
|
||||||
<property name="standardButtons">
|
|
||||||
<set>QDialogButtonBox::StandardButton::Ok</set>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</widget>
|
|
||||||
<resources>
|
|
||||||
<include location="../../dist/qt_themes/default/default.qrc"/>
|
|
||||||
</resources>
|
|
||||||
<connections>
|
|
||||||
<connection>
|
|
||||||
<sender>buttonBox</sender>
|
|
||||||
<signal>accepted()</signal>
|
|
||||||
<receiver>DepsDialog</receiver>
|
|
||||||
<slot>accept()</slot>
|
|
||||||
<hints>
|
|
||||||
<hint type="sourcelabel">
|
|
||||||
<x>20</x>
|
|
||||||
<y>20</y>
|
|
||||||
</hint>
|
|
||||||
<hint type="destinationlabel">
|
|
||||||
<x>20</x>
|
|
||||||
<y>20</y>
|
|
||||||
</hint>
|
|
||||||
</hints>
|
|
||||||
</connection>
|
|
||||||
<connection>
|
|
||||||
<sender>buttonBox</sender>
|
|
||||||
<signal>rejected()</signal>
|
|
||||||
<receiver>DepsDialog</receiver>
|
|
||||||
<slot>reject()</slot>
|
|
||||||
<hints>
|
|
||||||
<hint type="sourcelabel">
|
|
||||||
<x>20</x>
|
|
||||||
<y>20</y>
|
|
||||||
</hint>
|
|
||||||
<hint type="destinationlabel">
|
|
||||||
<x>20</x>
|
|
||||||
<y>20</y>
|
|
||||||
</hint>
|
|
||||||
</hints>
|
|
||||||
</connection>
|
|
||||||
</connections>
|
|
||||||
</ui>
|
|
12
src/yuzu/externals/CMakeLists.txt
vendored
12
src/yuzu/externals/CMakeLists.txt
vendored
|
@ -2,7 +2,7 @@
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
# cpm
|
# cpm
|
||||||
include(CPMUtil)
|
include(CPM)
|
||||||
|
|
||||||
# Disable tests/tools in all externals supporting the standard option name
|
# Disable tests/tools in all externals supporting the standard option name
|
||||||
set(BUILD_TESTING OFF)
|
set(BUILD_TESTING OFF)
|
||||||
|
@ -14,11 +14,11 @@ set(BUILD_SHARED_LIBS OFF)
|
||||||
set_directory_properties(PROPERTIES EXCLUDE_FROM_ALL ON)
|
set_directory_properties(PROPERTIES EXCLUDE_FROM_ALL ON)
|
||||||
|
|
||||||
# QuaZip
|
# QuaZip
|
||||||
AddPackage(
|
set(CPM_USE_LOCAL_PACKAGES ON)
|
||||||
|
|
||||||
|
CPMAddPackage(
|
||||||
NAME QuaZip-Qt6
|
NAME QuaZip-Qt6
|
||||||
VERSION 1.3
|
VERSION 1.3
|
||||||
REPO "crueter/quazip-qt6"
|
URL "https://github.com/crueter/quazip-qt6/archive/f838774d63.zip"
|
||||||
SHA f838774d63
|
CUSTOM_CACHE_KEY "f838"
|
||||||
HASH 9f629a438699801244a106c8df6d5f8f8d19e80df54f530a89403a10c8c4e37a6e95606bbdd307f23636961e8ce34eb37a2186d589a1f227ac9c8e2c678e326e
|
|
||||||
SYSTEM_PACKAGE ON
|
|
||||||
)
|
)
|
||||||
|
|
|
@ -96,7 +96,6 @@ static FileSys::VirtualFile VfsDirectoryCreateFileWrapper(const FileSys::Virtual
|
||||||
#include <QStandardPaths>
|
#include <QStandardPaths>
|
||||||
#include <QStatusBar>
|
#include <QStatusBar>
|
||||||
#include <QString>
|
#include <QString>
|
||||||
#include <QStyleHints>
|
|
||||||
#include <QSysInfo>
|
#include <QSysInfo>
|
||||||
#include <QUrl>
|
#include <QUrl>
|
||||||
#include <QtConcurrent/QtConcurrent>
|
#include <QtConcurrent/QtConcurrent>
|
||||||
|
@ -160,7 +159,6 @@ static FileSys::VirtualFile VfsDirectoryCreateFileWrapper(const FileSys::Virtual
|
||||||
#include "yuzu/debugger/console.h"
|
#include "yuzu/debugger/console.h"
|
||||||
#include "yuzu/debugger/controller.h"
|
#include "yuzu/debugger/controller.h"
|
||||||
#include "yuzu/debugger/wait_tree.h"
|
#include "yuzu/debugger/wait_tree.h"
|
||||||
#include "yuzu/deps_dialog.h"
|
|
||||||
#include "yuzu/discord.h"
|
#include "yuzu/discord.h"
|
||||||
#include "yuzu/game_list.h"
|
#include "yuzu/game_list.h"
|
||||||
#include "yuzu/game_list_p.h"
|
#include "yuzu/game_list_p.h"
|
||||||
|
@ -174,91 +172,6 @@ static FileSys::VirtualFile VfsDirectoryCreateFileWrapper(const FileSys::Virtual
|
||||||
#include "yuzu/util/clickable_label.h"
|
#include "yuzu/util/clickable_label.h"
|
||||||
#include "yuzu/vk_device_info.h"
|
#include "yuzu/vk_device_info.h"
|
||||||
|
|
||||||
#ifdef _WIN32
|
|
||||||
#include <QPlatformSurfaceEvent>
|
|
||||||
#include <dwmapi.h>
|
|
||||||
#include <windows.h>
|
|
||||||
#pragma comment(lib, "Dwmapi.lib")
|
|
||||||
|
|
||||||
static inline void ApplyWindowsTitleBarDarkMode(HWND hwnd, bool enabled) {
|
|
||||||
if (!hwnd)
|
|
||||||
return;
|
|
||||||
BOOL val = enabled ? TRUE : FALSE;
|
|
||||||
// 20 = Win11/21H2+
|
|
||||||
if (SUCCEEDED(DwmSetWindowAttribute(hwnd, 20, &val, sizeof(val))))
|
|
||||||
return;
|
|
||||||
// 19 = pre-21H2
|
|
||||||
DwmSetWindowAttribute(hwnd, 19, &val, sizeof(val));
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void ApplyDarkToTopLevel(QWidget* w, bool on) {
|
|
||||||
if (!w || !w->isWindow())
|
|
||||||
return;
|
|
||||||
ApplyWindowsTitleBarDarkMode(reinterpret_cast<HWND>(w->winId()), on);
|
|
||||||
}
|
|
||||||
|
|
||||||
namespace {
|
|
||||||
struct TitlebarFilter final : QObject {
|
|
||||||
bool dark;
|
|
||||||
explicit TitlebarFilter(bool is_dark) : QObject(qApp), dark(is_dark) {}
|
|
||||||
|
|
||||||
void setDark(bool is_dark) {
|
|
||||||
dark = is_dark;
|
|
||||||
}
|
|
||||||
|
|
||||||
void onFocusChanged(QWidget*, QWidget* now) {
|
|
||||||
if (now)
|
|
||||||
ApplyDarkToTopLevel(now->window(), dark);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool eventFilter(QObject* obj, QEvent* ev) override {
|
|
||||||
if (auto* w = qobject_cast<QWidget*>(obj)) {
|
|
||||||
switch (ev->type()) {
|
|
||||||
case QEvent::WinIdChange:
|
|
||||||
case QEvent::Show:
|
|
||||||
case QEvent::ShowToParent:
|
|
||||||
case QEvent::Polish:
|
|
||||||
case QEvent::WindowStateChange:
|
|
||||||
case QEvent::ZOrderChange:
|
|
||||||
ApplyDarkToTopLevel(w, dark);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return QObject::eventFilter(obj, ev);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
static TitlebarFilter* g_filter = nullptr;
|
|
||||||
static QMetaObject::Connection g_focusConn;
|
|
||||||
|
|
||||||
} // namespace
|
|
||||||
|
|
||||||
static void ApplyGlobalDarkTitlebar(bool is_dark) {
|
|
||||||
if (!g_filter) {
|
|
||||||
g_filter = new TitlebarFilter(is_dark);
|
|
||||||
qApp->installEventFilter(g_filter);
|
|
||||||
g_focusConn = QObject::connect(qApp, &QApplication::focusChanged, g_filter,
|
|
||||||
&TitlebarFilter::onFocusChanged);
|
|
||||||
} else {
|
|
||||||
g_filter->setDark(is_dark);
|
|
||||||
}
|
|
||||||
for (QWidget* w : QApplication::topLevelWidgets())
|
|
||||||
ApplyDarkToTopLevel(w, is_dark);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void RemoveTitlebarFilter() {
|
|
||||||
if (!g_filter)
|
|
||||||
return;
|
|
||||||
qApp->removeEventFilter(g_filter);
|
|
||||||
QObject::disconnect(g_focusConn);
|
|
||||||
g_filter->deleteLater();
|
|
||||||
g_filter = nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef YUZU_CRASH_DUMPS
|
#ifdef YUZU_CRASH_DUMPS
|
||||||
#include "yuzu/breakpad.h"
|
#include "yuzu/breakpad.h"
|
||||||
#endif
|
#endif
|
||||||
|
@ -386,16 +299,16 @@ static void OverrideWindowsFont() {
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
inline static bool isDarkMode() {
|
bool GMainWindow::CheckDarkMode() {
|
||||||
#if QT_VERSION >= QT_VERSION_CHECK(6, 5, 0)
|
#ifdef __unix__
|
||||||
const auto scheme = QGuiApplication::styleHints()->colorScheme();
|
const QPalette test_palette(qApp->palette());
|
||||||
return scheme == Qt::ColorScheme::Dark;
|
const QColor text_color = test_palette.color(QPalette::Active, QPalette::Text);
|
||||||
|
const QColor window_color = test_palette.color(QPalette::Active, QPalette::Window);
|
||||||
|
return (text_color.value() > window_color.value());
|
||||||
#else
|
#else
|
||||||
const QPalette defaultPalette;
|
// TODO: Windows
|
||||||
const auto text = defaultPalette.color(QPalette::WindowText);
|
return false;
|
||||||
const auto window = defaultPalette.color(QPalette::Window);
|
#endif // __unix__
|
||||||
return text.lightness() > window.lightness();
|
|
||||||
#endif // QT_VERSION
|
|
||||||
}
|
}
|
||||||
|
|
||||||
GMainWindow::GMainWindow(bool has_broken_vulkan)
|
GMainWindow::GMainWindow(bool has_broken_vulkan)
|
||||||
|
@ -445,6 +358,7 @@ GMainWindow::GMainWindow(bool has_broken_vulkan)
|
||||||
statusBar()->hide();
|
statusBar()->hide();
|
||||||
|
|
||||||
// Check dark mode before a theme is loaded
|
// Check dark mode before a theme is loaded
|
||||||
|
os_dark_mode = CheckDarkMode();
|
||||||
startup_icon_theme = QIcon::themeName();
|
startup_icon_theme = QIcon::themeName();
|
||||||
// fallback can only be set once, colorful theme icons are okay on both light/dark
|
// fallback can only be set once, colorful theme icons are okay on both light/dark
|
||||||
QIcon::setFallbackThemeName(QStringLiteral("colorful"));
|
QIcon::setFallbackThemeName(QStringLiteral("colorful"));
|
||||||
|
@ -1764,13 +1678,11 @@ void GMainWindow::ConnectMenuEvents() {
|
||||||
connect_menu(ui->action_Log_Folder, &GMainWindow::OnOpenLogFolder);
|
connect_menu(ui->action_Log_Folder, &GMainWindow::OnOpenLogFolder);
|
||||||
|
|
||||||
connect_menu(ui->action_Discord, &GMainWindow::OnOpenDiscord);
|
connect_menu(ui->action_Discord, &GMainWindow::OnOpenDiscord);
|
||||||
connect_menu(ui->action_Revolt, &GMainWindow::OnOpenRevolt);
|
|
||||||
connect_menu(ui->action_Verify_installed_contents, &GMainWindow::OnVerifyInstalledContents);
|
connect_menu(ui->action_Verify_installed_contents, &GMainWindow::OnVerifyInstalledContents);
|
||||||
connect_menu(ui->action_Firmware_From_Folder, &GMainWindow::OnInstallFirmware);
|
connect_menu(ui->action_Firmware_From_Folder, &GMainWindow::OnInstallFirmware);
|
||||||
connect_menu(ui->action_Firmware_From_ZIP, &GMainWindow::OnInstallFirmwareFromZIP);
|
connect_menu(ui->action_Firmware_From_ZIP, &GMainWindow::OnInstallFirmwareFromZIP);
|
||||||
connect_menu(ui->action_Install_Keys, &GMainWindow::OnInstallDecryptionKeys);
|
connect_menu(ui->action_Install_Keys, &GMainWindow::OnInstallDecryptionKeys);
|
||||||
connect_menu(ui->action_About, &GMainWindow::OnAbout);
|
connect_menu(ui->action_About, &GMainWindow::OnAbout);
|
||||||
connect_menu(ui->action_Eden_Dependencies, &GMainWindow::OnEdenDependencies);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void GMainWindow::UpdateMenuState() {
|
void GMainWindow::UpdateMenuState() {
|
||||||
|
@ -2090,7 +2002,7 @@ bool GMainWindow::LoadROM(const QString& filename, Service::AM::FrontendAppletPa
|
||||||
tr("Error while loading ROM! %1", "%1 signifies a numeric error code.")
|
tr("Error while loading ROM! %1", "%1 signifies a numeric error code.")
|
||||||
.arg(QString::fromStdString(error_code));
|
.arg(QString::fromStdString(error_code));
|
||||||
const auto description =
|
const auto description =
|
||||||
tr("%1<br>Please redump your files or ask on Discord/Revolt for help.",
|
tr("%1<br>Please redump your files or ask on Discord for help.",
|
||||||
"%1 signifies an error string.")
|
"%1 signifies an error string.")
|
||||||
.arg(QString::fromStdString(
|
.arg(QString::fromStdString(
|
||||||
GetResultStatusString(static_cast<Loader::ResultStatus>(error_id))));
|
GetResultStatusString(static_cast<Loader::ResultStatus>(error_id))));
|
||||||
|
@ -3744,11 +3656,7 @@ void GMainWindow::OnOpenFAQ() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void GMainWindow::OnOpenDiscord() {
|
void GMainWindow::OnOpenDiscord() {
|
||||||
OpenURL(QUrl(QStringLiteral("https://discord.gg/HstXbPch7X")));
|
OpenURL(QUrl(QStringLiteral("https://discord.gg/kXAmGCXBGD")));
|
||||||
}
|
|
||||||
|
|
||||||
void GMainWindow::OnOpenRevolt() {
|
|
||||||
OpenURL(QUrl(QStringLiteral("https://rvlt.gg/qKgFEAbH")));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void GMainWindow::ToggleFullscreen() {
|
void GMainWindow::ToggleFullscreen() {
|
||||||
|
@ -4584,11 +4492,6 @@ void GMainWindow::OnAbout() {
|
||||||
aboutDialog.exec();
|
aboutDialog.exec();
|
||||||
}
|
}
|
||||||
|
|
||||||
void GMainWindow::OnEdenDependencies() {
|
|
||||||
DepsDialog depsDialog(this);
|
|
||||||
depsDialog.exec();
|
|
||||||
}
|
|
||||||
|
|
||||||
void GMainWindow::OnToggleFilterBar() {
|
void GMainWindow::OnToggleFilterBar() {
|
||||||
game_list->SetFilterVisible(ui->action_Show_Filter_Bar->isChecked());
|
game_list->SetFilterVisible(ui->action_Show_Filter_Bar->isChecked());
|
||||||
if (ui->action_Show_Filter_Bar->isChecked()) {
|
if (ui->action_Show_Filter_Bar->isChecked()) {
|
||||||
|
@ -5475,11 +5378,15 @@ void GMainWindow::UpdateUITheme() {
|
||||||
current_theme = default_theme;
|
current_theme = default_theme;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef _WIN32
|
||||||
|
QIcon::setThemeName(current_theme);
|
||||||
|
AdjustLinkColor();
|
||||||
|
#else
|
||||||
if (current_theme == QStringLiteral("default") || current_theme == QStringLiteral("colorful")) {
|
if (current_theme == QStringLiteral("default") || current_theme == QStringLiteral("colorful")) {
|
||||||
QIcon::setThemeName(current_theme == QStringLiteral("colorful") ? current_theme
|
QIcon::setThemeName(current_theme == QStringLiteral("colorful") ? current_theme
|
||||||
: startup_icon_theme);
|
: startup_icon_theme);
|
||||||
QIcon::setThemeSearchPaths(QStringList(default_theme_paths));
|
QIcon::setThemeSearchPaths(QStringList(default_theme_paths));
|
||||||
if (isDarkMode()) {
|
if (CheckDarkMode()) {
|
||||||
current_theme = QStringLiteral("default_dark");
|
current_theme = QStringLiteral("default_dark");
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -5487,7 +5394,7 @@ void GMainWindow::UpdateUITheme() {
|
||||||
QIcon::setThemeSearchPaths(QStringList(QStringLiteral(":/icons")));
|
QIcon::setThemeSearchPaths(QStringList(QStringLiteral(":/icons")));
|
||||||
AdjustLinkColor();
|
AdjustLinkColor();
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
if (current_theme != default_theme) {
|
if (current_theme != default_theme) {
|
||||||
QString theme_uri{QStringLiteral(":%1/style.qss").arg(current_theme)};
|
QString theme_uri{QStringLiteral(":%1/style.qss").arg(current_theme)};
|
||||||
QFile f(theme_uri);
|
QFile f(theme_uri);
|
||||||
|
@ -5510,11 +5417,6 @@ void GMainWindow::UpdateUITheme() {
|
||||||
qApp->setStyleSheet({});
|
qApp->setStyleSheet({});
|
||||||
setStyleSheet({});
|
setStyleSheet({});
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef _WIN32
|
|
||||||
RemoveTitlebarFilter();
|
|
||||||
ApplyGlobalDarkTitlebar(UISettings::IsDarkTheme());
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void GMainWindow::LoadTranslation() {
|
void GMainWindow::LoadTranslation() {
|
||||||
|
|
|
@ -346,8 +346,6 @@ private slots:
|
||||||
void OnOpenQuickstartGuide();
|
void OnOpenQuickstartGuide();
|
||||||
void OnOpenFAQ();
|
void OnOpenFAQ();
|
||||||
void OnOpenDiscord();
|
void OnOpenDiscord();
|
||||||
void OnOpenRevolt();
|
|
||||||
|
|
||||||
/// Called whenever a user selects a game in the game list widget.
|
/// Called whenever a user selects a game in the game list widget.
|
||||||
void OnGameListLoadFile(QString game_path, u64 program_id);
|
void OnGameListLoadFile(QString game_path, u64 program_id);
|
||||||
void OnGameListOpenFolder(u64 program_id, GameListOpenTarget target,
|
void OnGameListOpenFolder(u64 program_id, GameListOpenTarget target,
|
||||||
|
@ -397,7 +395,6 @@ private slots:
|
||||||
void OnInstallFirmwareFromZIP();
|
void OnInstallFirmwareFromZIP();
|
||||||
void OnInstallDecryptionKeys();
|
void OnInstallDecryptionKeys();
|
||||||
void OnAbout();
|
void OnAbout();
|
||||||
void OnEdenDependencies();
|
|
||||||
void OnToggleFilterBar();
|
void OnToggleFilterBar();
|
||||||
void OnToggleStatusBar();
|
void OnToggleStatusBar();
|
||||||
void OnGameListRefresh();
|
void OnGameListRefresh();
|
||||||
|
@ -467,6 +464,7 @@ private:
|
||||||
void OpenURL(const QUrl& url);
|
void OpenURL(const QUrl& url);
|
||||||
void LoadTranslation();
|
void LoadTranslation();
|
||||||
void OpenPerGameConfiguration(u64 title_id, const std::string& file_name);
|
void OpenPerGameConfiguration(u64 title_id, const std::string& file_name);
|
||||||
|
bool CheckDarkMode();
|
||||||
bool CheckFirmwarePresence();
|
bool CheckFirmwarePresence();
|
||||||
void SetFirmwareVersion();
|
void SetFirmwareVersion();
|
||||||
void ConfigureFilesystemProvider(const std::string& filepath);
|
void ConfigureFilesystemProvider(const std::string& filepath);
|
||||||
|
@ -557,6 +555,7 @@ private:
|
||||||
QTimer update_input_timer;
|
QTimer update_input_timer;
|
||||||
|
|
||||||
QString startup_icon_theme;
|
QString startup_icon_theme;
|
||||||
|
bool os_dark_mode = false;
|
||||||
|
|
||||||
// FS
|
// FS
|
||||||
std::shared_ptr<FileSys::VfsFilesystem> vfs;
|
std::shared_ptr<FileSys::VfsFilesystem> vfs;
|
||||||
|
|
|
@ -214,10 +214,7 @@
|
||||||
<addaction name="action_Open_FAQ"/>
|
<addaction name="action_Open_FAQ"/>
|
||||||
<addaction name="separator"/>
|
<addaction name="separator"/>
|
||||||
<addaction name="action_Discord"/>
|
<addaction name="action_Discord"/>
|
||||||
<addaction name="action_Revolt"/>
|
|
||||||
<addaction name="separator"/>
|
|
||||||
<addaction name="action_About"/>
|
<addaction name="action_About"/>
|
||||||
<addaction name="action_Eden_Dependencies"/>
|
|
||||||
</widget>
|
</widget>
|
||||||
<addaction name="menu_File"/>
|
<addaction name="menu_File"/>
|
||||||
<addaction name="menu_Emulation"/>
|
<addaction name="menu_Emulation"/>
|
||||||
|
@ -562,25 +559,6 @@
|
||||||
<string>From ZIP</string>
|
<string>From ZIP</string>
|
||||||
</property>
|
</property>
|
||||||
</action>
|
</action>
|
||||||
<action name="action_Revolt">
|
|
||||||
<property name="text">
|
|
||||||
<string>&Revolt</string>
|
|
||||||
</property>
|
|
||||||
<property name="toolTip">
|
|
||||||
<string>Revolt</string>
|
|
||||||
</property>
|
|
||||||
<property name="statusTip">
|
|
||||||
<string/>
|
|
||||||
</property>
|
|
||||||
<property name="whatsThis">
|
|
||||||
<string/>
|
|
||||||
</property>
|
|
||||||
</action>
|
|
||||||
<action name="action_Eden_Dependencies">
|
|
||||||
<property name="text">
|
|
||||||
<string>&Eden Dependencies</string>
|
|
||||||
</property>
|
|
||||||
</action>
|
|
||||||
</widget>
|
</widget>
|
||||||
<resources>
|
<resources>
|
||||||
<include location="yuzu.qrc"/>
|
<include location="yuzu.qrc"/>
|
||||||
|
|
|
@ -1,6 +1,3 @@
|
||||||
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
|
||||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
||||||
|
|
||||||
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
@ -24,11 +21,13 @@ void LimitableInputDialog::CreateUI() {
|
||||||
text_label_invalid = new QLabel(this);
|
text_label_invalid = new QLabel(this);
|
||||||
buttons = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, this);
|
buttons = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, this);
|
||||||
|
|
||||||
auto* const layout = new QVBoxLayout(this);
|
auto* const layout = new QVBoxLayout;
|
||||||
layout->addWidget(text_label);
|
layout->addWidget(text_label);
|
||||||
layout->addWidget(text_entry);
|
layout->addWidget(text_entry);
|
||||||
layout->addWidget(text_label_invalid);
|
layout->addWidget(text_label_invalid);
|
||||||
layout->addWidget(buttons);
|
layout->addWidget(buttons);
|
||||||
|
|
||||||
|
setLayout(layout);
|
||||||
}
|
}
|
||||||
|
|
||||||
void LimitableInputDialog::ConnectEvents() {
|
void LimitableInputDialog::ConnectEvents() {
|
||||||
|
|
|
@ -1,4 +1,7 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
SUM=`wget -q https://github.com/$1/archive/$2.zip -O - | sha512sum`
|
for i in $@; do
|
||||||
echo "$SUM" | cut -d " " -f1
|
SUM=`wget -q $i -O - | sha512sum`
|
||||||
|
echo "$i"
|
||||||
|
echo "URL_HASH SHA512=$SUM" | cut -d " " -f1-2
|
||||||
|
done
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue