forked from eden-emu/eden
Compare commits
25 commits
Author | SHA1 | Date | |
---|---|---|---|
1551387739 | |||
3f02d7713f | |||
bdf5674d7e | |||
6b8408ef50 | |||
a3cf780a3a | |||
0705ba0b47 | |||
982b171f30 | |||
ae89b5e1b9 | |||
d499693c29 | |||
1f5b4cce6e | |||
6b7cac003a | |||
99426f064c | |||
37618e1043 | |||
6b33b5a734 | |||
dc444c7af9 | |||
a4f845b98d | |||
f1e74f6855 | |||
dbbe5b3328 | |||
0102f548d0 | |||
9634342100 | |||
41f0fa97ca | |||
76d0659ffe | |||
5ee06b2d75 | |||
41ffa5a342 | |||
33275c28d3 |
196 changed files with 3469 additions and 12856 deletions
|
@ -14,6 +14,8 @@ FILES=`git diff-tree --no-commit-id --name-only ${RANGE} -r`
|
|||
echo "Done"
|
||||
|
||||
for file in $FILES; do
|
||||
[ -f "$file" ] || continue
|
||||
|
||||
EXTENSION="${file##*.}"
|
||||
case "$EXTENSION" in
|
||||
kts|kt|cpp|h)
|
||||
|
|
21
.ci/update-icons.sh
Executable file
21
.ci/update-icons.sh
Executable file
|
@ -0,0 +1,21 @@
|
|||
#!/bin/sh -e
|
||||
|
||||
# SPDX-FileCopyrightText: 2025 eden Emulator Project
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
which png2icns || [ which yay && yay libicns ] || exit
|
||||
which magick || exit
|
||||
|
||||
export EDEN_SVG_ICO="dist/org.eden_emu.eden.svg"
|
||||
svgo --multipass $EDEN_SVG_ICO
|
||||
|
||||
magick -density 256x256 -background transparent $EDEN_SVG_ICO \
|
||||
-define icon:auto-resize -colors 256 dist/eden.ico || exit
|
||||
convert -density 256x256 -resize 256x256 -background transparent $EDEN_SVG_ICO \
|
||||
dist/yuzu.bmp || exit
|
||||
|
||||
export TMP_PNG="dist/eden-tmp.png"
|
||||
magick -size 1024x1024 -background transparent $EDEN_SVG_ICO $TMP_PNG || exit
|
||||
png2icns dist/eden.icns $TMP_PNG || exit
|
||||
cp dist/eden.icns dist/yuzu.icns
|
||||
rm $TMP_PNG
|
|
@ -216,14 +216,14 @@ if (YUZU_USE_BUNDLED_VCPKG)
|
|||
list(APPEND VCPKG_MANIFEST_FEATURES "android")
|
||||
endif()
|
||||
|
||||
include(CPM)
|
||||
set(CPM_USE_LOCAL_PACKAGES OFF)
|
||||
include(CPMUtil)
|
||||
|
||||
CPMAddPackage(
|
||||
AddPackage(
|
||||
NAME vcpkg
|
||||
DOWNLOAD_ONLY YES
|
||||
GIT_REPOSITORY "https://github.com/microsoft/vcpkg.git"
|
||||
URL "https://github.com/microsoft/vcpkg.git"
|
||||
GIT_TAG "ea2a964f93"
|
||||
CUSTOM_CACHE_KEY "ea2a"
|
||||
SHA "ea2a964f93"
|
||||
)
|
||||
|
||||
include(${vcpkg_SOURCE_DIR}/scripts/buildsystems/vcpkg.cmake)
|
||||
|
@ -277,6 +277,30 @@ function(check_submodules_present)
|
|||
message(FATAL_ERROR "Git submodule ${module} not found. "
|
||||
"Please run: \ngit submodule update --init --recursive")
|
||||
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()
|
||||
endfunction()
|
||||
|
||||
|
@ -358,7 +382,7 @@ endif()
|
|||
# Build/optimization presets
|
||||
if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
|
||||
if (ARCHITECTURE_x86_64)
|
||||
set(YUZU_BUILD_PRESET "generic" CACHE STRING "Build preset to use. One of: generic, v3, zen2, zen4, native")
|
||||
set(YUZU_BUILD_PRESET "custom" CACHE STRING "Build preset to use. One of: custom, generic, v3, zen2, zen4, native")
|
||||
if (${YUZU_BUILD_PRESET} STREQUAL "generic")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=x86-64 -mtune=generic")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=x86-64 -mtune=generic")
|
||||
|
@ -376,7 +400,7 @@ if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
|
|||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=native -mtune=native")
|
||||
endif()
|
||||
elseif(ARCHITECTURE_arm64)
|
||||
set(YUZU_BUILD_PRESET "generic" CACHE STRING "Build preset to use. One of: generic, armv9")
|
||||
set(YUZU_BUILD_PRESET "custom" CACHE STRING "Build preset to use. One of: custom, generic, armv9")
|
||||
if (${YUZU_BUILD_PRESET} STREQUAL "generic")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=armv8-a -mtune=generic")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=armv8-a -mtune=generic")
|
||||
|
@ -423,9 +447,9 @@ endif()
|
|||
|
||||
if (ENABLE_LIBUSB)
|
||||
if (${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD")
|
||||
find_package(libusb MODULE)
|
||||
find_package(libusb MODULE)
|
||||
else()
|
||||
find_package(libusb 1.0.24 MODULE)
|
||||
find_package(libusb 1.0.24 MODULE)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
|
@ -453,7 +477,7 @@ if (ENABLE_SDL2)
|
|||
endif()
|
||||
|
||||
if (DEFINED SDL2_VER)
|
||||
download_bundled_external("sdl2/" ${SDL2_VER} "sdl2-bundled" SDL2_PREFIX)
|
||||
download_bundled_external("sdl2/" ${SDL2_VER} "sdl2-bundled" SDL2_PREFIX 2.32.8)
|
||||
endif()
|
||||
|
||||
set(SDL2_FOUND YES)
|
||||
|
@ -516,7 +540,7 @@ if (ENABLE_QT)
|
|||
endif()
|
||||
|
||||
if (UNIX AND NOT APPLE)
|
||||
find_package(Qt6 REQUIRED COMPONENTS DBus)
|
||||
find_package(Qt6 REQUIRED COMPONENTS DBus GuiPrivate)
|
||||
endif()
|
||||
|
||||
if (ENABLE_QT_TRANSLATION)
|
||||
|
@ -584,7 +608,7 @@ endif()
|
|||
|
||||
if (WIN32 AND YUZU_CRASH_DUMPS)
|
||||
set(BREAKPAD_VER "breakpad-c89f9dd")
|
||||
download_bundled_external("breakpad/" ${BREAKPAD_VER} "breakpad-win" BREAKPAD_PREFIX)
|
||||
download_bundled_external("breakpad/" ${BREAKPAD_VER} "breakpad-win" BREAKPAD_PREFIX "c89f9dd")
|
||||
|
||||
set(BREAKPAD_CLIENT_INCLUDE_DIR "${BREAKPAD_PREFIX}/include")
|
||||
set(BREAKPAD_CLIENT_LIBRARY "${BREAKPAD_PREFIX}/lib/libbreakpad_client.lib")
|
||||
|
@ -722,7 +746,6 @@ else()
|
|||
set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT yuzu-cmd)
|
||||
endif()
|
||||
|
||||
|
||||
# Installation instructions
|
||||
# =========================
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load diff
117
CMakeModules/CPMUtil.cmake
Normal file
117
CMakeModules/CPMUtil.cmake
Normal file
|
@ -0,0 +1,117 @@
|
|||
# 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,6 +63,4 @@ function(copy_yuzu_Qt6_deps target_dir)
|
|||
else()
|
||||
# Update for non-MSVC platforms if needed
|
||||
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)
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
# 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
|
||||
set(CURRENT_MODULE_DIR ${CMAKE_CURRENT_LIST_DIR})
|
||||
function(download_bundled_external remote_path lib_name cpm_key prefix_var)
|
||||
function(download_bundled_external remote_path lib_name cpm_key prefix_var version)
|
||||
set(package_base_url "https://github.com/eden-emulator/")
|
||||
set(package_repo "no_platform")
|
||||
set(package_extension "no_platform")
|
||||
|
@ -29,13 +29,13 @@ function(download_bundled_external remote_path lib_name cpm_key prefix_var)
|
|||
set(package_url "${package_base_url}${package_repo}")
|
||||
set(full_url ${package_url}${remote_path}${lib_name}${package_extension})
|
||||
|
||||
set(CPM_USE_LOCAL_PACKAGES OFF)
|
||||
|
||||
CPMAddPackage(
|
||||
AddPackage(
|
||||
NAME ${cpm_key}
|
||||
VERSION ${version}
|
||||
URL ${full_url}
|
||||
DOWNLOAD_ONLY YES
|
||||
CUSTOM_CACHE_KEY ${CACHE_KEY}
|
||||
KEY ${CACHE_KEY}
|
||||
# TODO(crueter): hash
|
||||
)
|
||||
|
||||
set(${prefix_var} "${${cpm_key}_SOURCE_DIR}" PARENT_SCOPE)
|
||||
|
@ -46,11 +46,11 @@ function(download_win_archives)
|
|||
set(FORCE_WIN_ARCHIVES ON)
|
||||
set(FFmpeg_EXT_NAME "ffmpeg-7.1.1")
|
||||
|
||||
download_bundled_external("ffmpeg/" ${FFmpeg_EXT_NAME} "ffmpeg-bundled" "")
|
||||
download_bundled_external("ffmpeg/" ${FFmpeg_EXT_NAME} "ffmpeg-bundled" "" 7.1.1)
|
||||
|
||||
# TODO(crueter): separate handling for arm64
|
||||
set(SDL2_VER "SDL2-2.32.8")
|
||||
download_bundled_external("sdl2/" ${SDL2_VER} "sdl2-bundled" "")
|
||||
download_bundled_external("sdl2/" ${SDL2_VER} "sdl2-bundled" "" 2.32.8)
|
||||
set(FORCE_WIN_ARCHIVES OFF)
|
||||
endfunction()
|
||||
|
||||
|
|
21
CMakeModules/GenerateDepHashes.cmake
Normal file
21
CMakeModules/GenerateDepHashes.cmake
Normal file
|
@ -0,0 +1,21 @@
|
|||
# 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})
|
13
README.md
13
README.md
|
@ -22,9 +22,13 @@ It is written in C++ with portability in mind, and we actively maintain builds f
|
|||
<p align="center">
|
||||
</a>
|
||||
<a href="https://discord.gg/kXAmGCXBGD">
|
||||
<img src="https://img.shields.io/discord/1317386222229917696?color=5865F2&label=Eden&logo=discord&logoColor=white"
|
||||
<img src="https://img.shields.io/discord/1367654015269339267?color=5865F2&label=Eden&logo=discord&logoColor=white"
|
||||
alt="Discord">
|
||||
</a>
|
||||
<a href="https://rvlt.gg/qKgFEAbH">
|
||||
<img src="https://img.shields.io/revolt/invite/qKgFEAbH?color=d61f3a&label=Revolt"
|
||||
alt="Revolt">
|
||||
</a>
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
|
@ -46,10 +50,9 @@ Check out our [website](https://eden-emu.dev) for the latest news on exciting fe
|
|||
|
||||
## Development
|
||||
|
||||
Most of the development happens on our Git server. It is also where [our central repository](https://git.eden-emu.dev/eden-emu/eden) is hosted. For development discussions, please join us on [Discord](https://discord.gg/edenemu).
|
||||
Most of the development happens on our Git server. It is also where [our central repository](https://git.eden-emu.dev/eden-emu/eden) is hosted. For development discussions, please join us on [Discord](https://discord.gg/kXAmGCXBGD) or [Revolt](https://rvlt.gg/qKgFEAbH).
|
||||
|
||||
If you would like to contribute, we are open to new developers and pull requests. Please ensure that your work is of a high standard and properly documented.
|
||||
You can also contact any of the developers on Discord to learn more about the current state of the emulator.
|
||||
If you would like to contribute, we are open to new developers and pull requests. Please ensure that your work is of a high standard and properly documented. You can also contact any of the developers on Discord or Revolt to learn more about the current state of the emulator.
|
||||
|
||||
## Building
|
||||
|
||||
|
@ -66,7 +69,7 @@ You can download the latest releases from [here](https://github.com/eden-emulato
|
|||
|
||||
## Support
|
||||
|
||||
If you enjoy the project and would like to support us financially, please check out our developers' [donation pages](https://eden-emu.dev/donations.html)!
|
||||
If you enjoy the project and would like to support us financially, please check out our developers' [donation pages](https://eden-emu.dev/donations)!
|
||||
|
||||
Any donations received will go towards things such as:
|
||||
* Switch consoles to explore and reverse-engineer the hardware
|
||||
|
|
BIN
dist/eden.icns
vendored
BIN
dist/eden.icns
vendored
Binary file not shown.
BIN
dist/eden.ico
vendored
BIN
dist/eden.ico
vendored
Binary file not shown.
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 316 KiB |
2
dist/org.eden_emu.eden.desktop
vendored
2
dist/org.eden_emu.eden.desktop
vendored
|
@ -7,7 +7,7 @@
|
|||
[Desktop Entry]
|
||||
Version=1.0
|
||||
Type=Application
|
||||
Name=eden
|
||||
Name=Eden
|
||||
GenericName=Switch Emulator
|
||||
Comment=Nintendo Switch video game console emulator
|
||||
Icon=org.eden_emu.eden
|
||||
|
|
14
dist/org.eden_emu.eden.svg
vendored
14
dist/org.eden_emu.eden.svg
vendored
File diff suppressed because one or more lines are too long
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 9.2 KiB |
13
dist/org.eden_emu.eden.xml
vendored
13
dist/org.eden_emu.eden.xml
vendored
|
@ -1,5 +1,10 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<!--
|
||||
SPDX-FileCopyrightText: 2025 Eden Emulator Project
|
||||
SPDX-License-Identifier: GPL-3.0-or-later
|
||||
-->
|
||||
|
||||
<!--
|
||||
SPDX-FileCopyrightText: 2018 yuzu Emulator Project
|
||||
SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
@ -9,7 +14,7 @@ SPDX-License-Identifier: GPL-2.0-or-later
|
|||
<mime-type type="application/x-nx-nro">
|
||||
<comment>Nintendo Switch homebrew executable</comment>
|
||||
<acronym>NRO</acronym>
|
||||
<icon name="org.yuzu_emu.yuzu"/>
|
||||
<icon name="org.eden_emu.eden"/>
|
||||
<glob pattern="*.nro"/>
|
||||
<magic><match value="NRO" type="string" offset="16"/></magic>
|
||||
</mime-type>
|
||||
|
@ -17,7 +22,7 @@ SPDX-License-Identifier: GPL-2.0-or-later
|
|||
<mime-type type="application/x-nx-nso">
|
||||
<comment>Nintendo Switch homebrew executable</comment>
|
||||
<acronym>NSO</acronym>
|
||||
<icon name="org.yuzu_emu.yuzu"/>
|
||||
<icon name="org.eden_emu.eden"/>
|
||||
<glob pattern="*.nso"/>
|
||||
<magic><match value="NSO" type="string" offset="0"/></magic>
|
||||
</mime-type>
|
||||
|
@ -25,7 +30,7 @@ SPDX-License-Identifier: GPL-2.0-or-later
|
|||
<mime-type type="application/x-nx-nsp">
|
||||
<comment>Nintendo Switch Package</comment>
|
||||
<acronym>NSP</acronym>
|
||||
<icon name="org.yuzu_emu.yuzu"/>
|
||||
<icon name="org.eden_emu.eden"/>
|
||||
<glob pattern="*.nsp"/>
|
||||
<magic><match value="PFS" type="string" offset="0"/></magic>
|
||||
</mime-type>
|
||||
|
@ -33,7 +38,7 @@ SPDX-License-Identifier: GPL-2.0-or-later
|
|||
<mime-type type="application/x-nx-xci">
|
||||
<comment>Nintendo Switch Card Image</comment>
|
||||
<acronym>XCI</acronym>
|
||||
<icon name="org.yuzu_emu.yuzu"/>
|
||||
<icon name="org.eden_emu.eden"/>
|
||||
<glob pattern="*.xci"/>
|
||||
</mime-type>
|
||||
</mime-info>
|
||||
|
|
BIN
dist/yuzu.bmp
vendored
BIN
dist/yuzu.bmp
vendored
Binary file not shown.
Before Width: | Height: | Size: 256 KiB After Width: | Height: | Size: 256 KiB |
BIN
dist/yuzu.icns
vendored
BIN
dist/yuzu.icns
vendored
Binary file not shown.
|
@ -1,11 +1,11 @@
|
|||
# Development
|
||||
|
||||
* **Windows**: [Windows Building Guide](./build/Windows.md)
|
||||
* **Linux**: [Linux Building Guide](./build/Linux.md)
|
||||
* **Android**: [Android Building Guide](./build/Android.md)
|
||||
* **Solaris**: [Solaris Building Guide](./build/Solaris.md)
|
||||
* **FreeBSD**: [FreeBSD Building Guide](./build/FreeBSD.md)
|
||||
* **macOS**: [macOS Building Guide](./build/macOS.md)
|
||||
* **Windows**: [Windows Building Guide](./docs/build/Windows.md)
|
||||
* **Linux**: [Linux Building Guide](./docs/build/Linux.md)
|
||||
* **Android**: [Android Building Guide](./docs/build/Android.md)
|
||||
* **Solaris**: [Solaris Building Guide](./docs/build/Solaris.md)
|
||||
* **FreeBSD**: [FreeBSD Building Guide](./docs/build/FreeBSD.md)
|
||||
* **macOS**: [macOS Building Guide](./docs/build/macOS.md)
|
||||
|
||||
# Guidelines
|
||||
|
||||
|
@ -33,18 +33,44 @@ Pull requests are only to be merged by core developers when properly tested and
|
|||
[desktop] feat: implement firmware install from ZIP
|
||||
[hle] stub fw20 functions
|
||||
[core] test: raise maximum CPU cores to 6
|
||||
[cmake, core] Unbreak FreeBSD Building Process
|
||||
```
|
||||
|
||||
The level of namespacing is generally left to the committer's choice, but we never recommend going more than two levels *except* in `hle`, in which case you may go as many as four levels depending on the specificity of your changes. Developers are permitted to change namespaces at will. Commits within PRs are not required to be namespaced, but it is highly recommended.
|
||||
- The level of namespacing is generally left to the committer's choice.
|
||||
- However, we never recommend going more than two levels *except* in `hle`, in which case you may go as many as four levels depending on the specificity of your changes.
|
||||
- Ocassionally, up to two namespaces may be provided for more clarity.
|
||||
* Changes that affect the entire project (sans CMake changes) should be namespaced as `meta`.
|
||||
- Maintainers are permitted to change namespaces at will.
|
||||
- Commits within PRs are not required to be namespaced, but it is highly recommended.
|
||||
|
||||
# Building speedup
|
||||
# IDE setup
|
||||
|
||||
## VSCode
|
||||
Copy this to `.vscode/settings.json`, get CMake tools and it should be ready to build:
|
||||
```json
|
||||
{
|
||||
"editor.tabSize": 4,
|
||||
"files.watcherExclude": {
|
||||
"**/target": true
|
||||
},
|
||||
"files.associations": {
|
||||
"*.inc": "cpp"
|
||||
},
|
||||
"git.enableCommitSigning": true,
|
||||
"git.alwaysSignOff": true
|
||||
}
|
||||
```
|
||||
|
||||
You may additionally need the `Qt Extension Pack` extension if building Qt.
|
||||
|
||||
# Build speedup
|
||||
|
||||
If you have an HDD, use ramdisk (build in RAM):
|
||||
```sh
|
||||
sudo mkdir /tmp/ramdisk
|
||||
sudo chmod 777 /tmp/ramdisk
|
||||
# about 10GB needed
|
||||
sudo mount -t tmpfs -o size=10G myramdisk /tmp/ramdisk
|
||||
# about 8GB needed
|
||||
sudo mount -t tmpfs -o size=8G myramdisk /tmp/ramdisk
|
||||
cmake -B /tmp/ramdisk
|
||||
cmake --build /tmp/ramdisk -- -j32
|
||||
sudo umount /tmp/ramdisk
|
||||
|
@ -61,7 +87,7 @@ Then type `target remote localhost:1234` and type `c` (for continue) - and then
|
|||
|
||||
### gdb cheatsheet
|
||||
|
||||
- `mo <cmd>`: Monitor commands, `get info`, `get fastmem` and `get mappings` are available. Type `mo help` for more info.
|
||||
- `mo <cmd>`: Monitor commands, `get info`, `get fastmem` and `get mappings` are available.
|
||||
- `detach`: Detach from remote (i.e restarting the emulator).
|
||||
- `c`: Continue
|
||||
- `p <expr>`: Print variable, `p/x <expr>` for hexadecimal.
|
||||
|
@ -88,7 +114,7 @@ For more information type `info gdb` and read [the man page](https://man7.org/li
|
|||
Since going into the past can be tricky (especially due to the dependencies from the project being lost thru time). This should "restore" the URLs for the respective submodules.
|
||||
|
||||
```sh
|
||||
#!/bin/sh
|
||||
#!/bin/sh -e
|
||||
cat > .gitmodules <<EOF
|
||||
[submodule "enet"]
|
||||
path = externals/enet
|
||||
|
|
50
docs/build/FreeBSD.md
vendored
50
docs/build/FreeBSD.md
vendored
|
@ -1,42 +1,44 @@
|
|||
## One word of caution before proceeding.
|
||||
This is not the usual or preferred way to build programs on FreeBSD.
|
||||
As of writing there is no official fresh port available for eden-emu, but it is in the works.
|
||||
After it is available you can find a link to the eden-emu fresh port here and on Escarys github repo.
|
||||
This is not the usual or preferred way to build programs on FreeBSD.
|
||||
As of writing there is no official fresh port available for eden-emu, but it is in the works.
|
||||
After it is available you can find a link to the eden-emu fresh port here and on Escarys github repo.
|
||||
See this build as an App Image alternative for FreeBSD.
|
||||
|
||||
## Dependencies.
|
||||
Before we start we need some dependencies.
|
||||
## Dependencies.
|
||||
Before we start we need some dependencies.
|
||||
These dependencies are generally needed to build eden-emu on FreeBSD.
|
||||
|
||||
```
|
||||
devel/cmake
|
||||
devel/sdl20
|
||||
devel/boost-libs
|
||||
devel/catch2
|
||||
devel/libfmt
|
||||
devel/nlohmann-json
|
||||
devel/ninja
|
||||
devel/nasm
|
||||
devel/autoconf
|
||||
devel/pkg-config
|
||||
devel/qt6-base
|
||||
devel/cmake
|
||||
devel/sdl20
|
||||
devel/boost-libs
|
||||
devel/catch2
|
||||
devel/libfmt
|
||||
devel/nlohmann-json
|
||||
devel/ninja
|
||||
devel/nasm
|
||||
devel/autoconf
|
||||
devel/pkgconf
|
||||
devel/qt6-base
|
||||
|
||||
multimedia/ffnvcodec-headers
|
||||
multimedia/ffmpeg
|
||||
multimedia/ffnvcodec-headers
|
||||
multimedia/ffmpeg
|
||||
|
||||
audio/opus
|
||||
audio/opus
|
||||
|
||||
archivers/liblz4
|
||||
archivers/liblz4
|
||||
|
||||
lang/gcc12
|
||||
lang/gcc12
|
||||
|
||||
graphics/glslang
|
||||
graphics/vulkan-utility-libraries
|
||||
graphics/glslang
|
||||
graphics/vulkan-utility-libraries
|
||||
```
|
||||
|
||||
If using FreeBSD 12 or prior, use `devel/pkg-config` instead.
|
||||
|
||||
---
|
||||
|
||||
### Build preparations:
|
||||
### Build preparations:
|
||||
Run the following command to clone eden with git:
|
||||
```sh
|
||||
git clone --recursive https://git.eden-emu.dev/eden-emu/eden
|
||||
|
|
5
docs/build/Linux.md
vendored
5
docs/build/Linux.md
vendored
|
@ -32,8 +32,9 @@ Dependencies are listed here as commands that can be copied/pasted. Of course, t
|
|||
- Building with QT Web Engine requires `qt6-webengine` as well.
|
||||
- Proper wayland support requires `qt6-wayland`
|
||||
- GCC 11 or later is required.
|
||||
|
||||
- Ubuntu / Linux Mint / Debian:
|
||||
- `sudo apt-get install autoconf cmake g++ gcc git glslang-tools libasound2 libboost-context-dev libglu1-mesa-dev libhidapi-dev libpulse-dev libtool libudev-dev libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-render-util0 libxcb-xinerama0 libxcb-xkb1 libxext-dev libxkbcommon-x11-0 mesa-common-dev nasm ninja-build qtbase6-dev libmbedtls-dev catch2 libfmt-dev liblz4-dev nlohmann-json3-dev libzstd-dev libssl-dev libavfilter-dev libavcodec-dev libswscale-dev pkg-config zlib1g-dev`
|
||||
- `sudo apt-get install autoconf cmake g++ gcc git glslang-tools libasound2 libboost-context-dev libglu1-mesa-dev libhidapi-dev libpulse-dev libtool libudev-dev libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-render-util0 libxcb-xinerama0 libxcb-xkb1 libxext-dev libxkbcommon-x11-0 mesa-common-dev nasm ninja-build qt6-base-private-dev libmbedtls-dev catch2 libfmt-dev liblz4-dev nlohmann-json3-dev libzstd-dev libssl-dev libavfilter-dev libavcodec-dev libswscale-dev pkg-config zlib1g-dev`
|
||||
- Ubuntu 22.04, Linux Mint 20, or Debian 12 or later is required.
|
||||
- Users need to manually specify building with QT Web Engine enabled. This is done using the parameter `-DYUZU_USE_QT_WEB_ENGINE=ON` when running CMake.
|
||||
- Users need to manually disable building SDL2 from externals if they intend to use the version provided by their system by adding the parameters `-DYUZU_USE_EXTERNAL_SDL2=OFF`
|
||||
|
@ -44,7 +45,7 @@ cmake .. -GNinja -DCMAKE_C_COMPILER=gcc-11 -DCMAKE_CXX_COMPILER=g++-11
|
|||
```
|
||||
|
||||
- Fedora:
|
||||
- `sudo dnf install autoconf ccache cmake fmt-devel gcc{,-c++} glslang hidapi-devel json-devel libtool libusb1-devel libzstd-devel lz4-devel nasm ninja-build openssl-devel pulseaudio-libs-devel qt5-linguist qt5-qtbase{-private,}-devel qt5-qtwebengine-devel qt5-qtmultimedia-devel speexdsp-devel wayland-devel zlib-devel ffmpeg-devel libXext-devel`
|
||||
- `sudo dnf install autoconf ccache cmake fmt-devel gcc{,-c++} glslang hidapi-devel json-devel libtool libusb1-devel libzstd-devel lz4-devel nasm ninja-build openssl-devel pulseaudio-libs-devel qt6-linguist qt6-qtbase{-private,}-devel qt6-qtwebengine-devel qt6-qtmultimedia-devel speexdsp-devel wayland-devel zlib-devel ffmpeg-devel libXext-devel`
|
||||
- Fedora 32 or later is required.
|
||||
- Due to GCC 12, Fedora 36 or later users need to install `clang`, and configure CMake to use it via `-DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_COMPILER=clang`
|
||||
- CMake arguments to force system libraries:
|
||||
|
|
243
externals/CMakeLists.txt
vendored
243
externals/CMakeLists.txt
vendored
|
@ -1,11 +1,11 @@
|
|||
# SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||
# SPDX-FileCopyrightText: 2025 Eden Emulator Project
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
# SPDX-FileCopyrightText: 2016 Citra Emulator Project
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
# cpm
|
||||
include(CPM)
|
||||
include(CPMUtil)
|
||||
|
||||
# Explicitly declare this option here to propagate to the oaknut CPM call
|
||||
option(DYNARMIC_TESTS "Build tests" ${BUILD_TESTING})
|
||||
|
@ -29,8 +29,6 @@ endif()
|
|||
|
||||
# Xbyak (also used by Dynarmic, so needs to be added first)
|
||||
if (ARCHITECTURE_x86 OR ARCHITECTURE_x86_64)
|
||||
set(CPM_USE_LOCAL_PACKAGES OFF)
|
||||
|
||||
if ("${CMAKE_SYSTEM_NAME}" STREQUAL "SunOS")
|
||||
# Fix regset.h collisions
|
||||
set(XBYAK_HASH 51f507b0b3)
|
||||
|
@ -40,22 +38,22 @@ if (ARCHITECTURE_x86 OR ARCHITECTURE_x86_64)
|
|||
set(XBYAK_SHA512SUM 5824e92159e07fa36a774aedd3b3ef3541d0241371d522cffa4ab3e1f215fa5097b1b77865b47b2481376c704fa079875557ea463ca63d0a7fd6a8a20a589e70)
|
||||
endif()
|
||||
|
||||
CPMAddPackage(
|
||||
AddPackage(
|
||||
NAME xbyak
|
||||
URL "https://github.com/Lizzie841/xbyak/archive/${XBYAK_HASH}.zip"
|
||||
URL_HASH SHA512=${XBYAK_SHA512SUM}
|
||||
CUSTOM_CACHE_KEY ${XBYAK_HASH}
|
||||
REPO "Lizzie841/xbyak"
|
||||
SHA ${XBYAK_HASH}
|
||||
HASH ${XBYAK_SHA512SUM}
|
||||
)
|
||||
endif()
|
||||
|
||||
# Oaknut (also used by Dynarmic, so needs to be added first)
|
||||
if (ARCHITECTURE_arm64 OR DYNARMIC_TESTS)
|
||||
CPMAddPackage(
|
||||
AddPackage(
|
||||
NAME oaknut
|
||||
VERSION 2.0.1
|
||||
URL "https://github.com/Wunkolo/oaknut/archive/d9a104d558.zip"
|
||||
URL_HASH SHA512=3702c8cf818a8c2b19edf9b18278b3d2b857f118faf1e05064c9389c6da639aaf6e955c20abd4f8bf92e309efb6df79affdefc0d3a1e0f980f86203525dbbcd8
|
||||
CUSTOM_CACHE_KEY "d9a1"
|
||||
REPO "merryhime/oaknut"
|
||||
SHA 94c726ce03
|
||||
HASH d8d082242fa1881abce3c82f8dafa002c4e561e66a69e7fc038af67faa5eff2630f082d3d19579c88c4c9f9488e54552accc8cb90e7ce743efe043b6230c08ac
|
||||
)
|
||||
endif()
|
||||
|
||||
|
@ -69,15 +67,14 @@ add_subdirectory(glad)
|
|||
|
||||
# mbedtls
|
||||
# TODO(crueter): test local mbedtls
|
||||
set(CPM_USE_LOCAL_PACKAGES ON)
|
||||
|
||||
CPMAddPackage(
|
||||
AddPackage(
|
||||
NAME mbedtls
|
||||
URL "https://github.com/Mbed-TLS/mbedtls/archive/8c88150ca1.zip"
|
||||
URL_HASH SHA512=769ad1e94c570671071e1f2a5c0f1027e0bf6bcdd1a80ea8ac970f2c86bc45ce4e31aa88d6d8110fc1bed1de81c48bc624df1b38a26f8b340a44e109d784a966
|
||||
REPO "Mbed-TLS/mbedtls"
|
||||
SHA "8c88150ca1"
|
||||
HASH 769ad1e94c570671071e1f2a5c0f1027e0bf6bcdd1a80ea8ac970f2c86bc45ce4e31aa88d6d8110fc1bed1de81c48bc624df1b38a26f8b340a44e109d784a966
|
||||
PATCHES
|
||||
${CMAKE_SOURCE_DIR}/.patch/mbedtls/0001-cmake-version.patch
|
||||
CUSTOM_CACHE_KEY "8c88"
|
||||
SYSTEM_PACKAGE ON
|
||||
)
|
||||
|
||||
if (mbedtls_ADDED)
|
||||
|
@ -90,20 +87,6 @@ if (mbedtls_ADDED)
|
|||
endif()
|
||||
endif()
|
||||
|
||||
# MicroProfile
|
||||
add_library(microprofile INTERFACE)
|
||||
target_include_directories(microprofile INTERFACE ./microprofile)
|
||||
if (ENABLE_MICROPROFILE)
|
||||
target_compile_definitions(microprofile INTERFACE MICROPROFILE_ENABLED=1)
|
||||
else()
|
||||
target_compile_definitions(microprofile INTERFACE MICROPROFILE_ENABLED=0)
|
||||
endif()
|
||||
|
||||
# GCC bugs
|
||||
if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "12" AND CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND MINGW)
|
||||
target_compile_options(microprofile INTERFACE "-Wno-array-bounds")
|
||||
endif()
|
||||
|
||||
# libusb
|
||||
if (ENABLE_LIBUSB AND NOT TARGET libusb::usb)
|
||||
add_subdirectory(libusb)
|
||||
|
@ -130,6 +113,7 @@ if (YUZU_USE_EXTERNAL_SDL2)
|
|||
set(SDL_FILE ON)
|
||||
endif()
|
||||
|
||||
include(CPM)
|
||||
set(CPM_USE_LOCAL_PACKAGES OFF)
|
||||
|
||||
if ("${YUZU_SYSTEM_PROFILE}" STREQUAL "steamdeck")
|
||||
|
@ -144,11 +128,12 @@ if (YUZU_USE_EXTERNAL_SDL2)
|
|||
set(SDL_SHA512SUM d95af47f469a312876f8ab361074a1e7b8083db19935a102d9c6e5887ace6008e64475a8c54b00164b40cad86492bb1b2366084efdd0b2555e5fea6d9c5da80e)
|
||||
endif()
|
||||
|
||||
CPMAddPackage(
|
||||
AddPackage(
|
||||
NAME SDL2
|
||||
URL "https://github.com/libsdl-org/SDL/archive/${SDL_HASH}.zip"
|
||||
URL_HASH SHA512=${SDL_SHA512SUM}
|
||||
CUSTOM_CACHE_KEY "${YUZU_SYSTEM_PROFILE}"
|
||||
REPO "libsdl-org/SDL"
|
||||
SHA ${SDL_HASH}
|
||||
HASH ${SDL_SHA512SUM}
|
||||
KEY ${YUZU_SYSTEM_PROFILE}
|
||||
)
|
||||
endif()
|
||||
|
||||
|
@ -159,18 +144,17 @@ if (NOT TARGET enet::enet)
|
|||
add_library(enet::enet ALIAS enet)
|
||||
endif()
|
||||
|
||||
# TODO(crueter): Create a common CPMUtil.cmake that does this for me
|
||||
set(CPM_USE_LOCAL_PACKAGES ON)
|
||||
|
||||
CPMAddPackage(
|
||||
AddPackage(
|
||||
NAME cubeb
|
||||
URL "https://github.com/mozilla/cubeb/archive/fa02160712.zip"
|
||||
REPO "mozilla/cubeb"
|
||||
SHA fa02160712
|
||||
HASH 82d808356752e4064de48c8fecbe7856715ade1e76b53937116bf07129fc1cc5b3de5e4b408de3cd000187ba8dc32ca4109661cb7e0355a52e54bd81b9be1c61
|
||||
FIND_PACKAGE_ARGUMENTS "CONFIG" # not sure this works outside of gentoo
|
||||
OPTIONS
|
||||
"USE_SANITIZERS OFF"
|
||||
"BUILD_TESTS OFF"
|
||||
"BUILD_TOOLS OFF"
|
||||
CUSTOM_CACHE_KEY "fa02"
|
||||
SYSTEM_PACKAGE ON
|
||||
)
|
||||
|
||||
if (cubeb_ADDED)
|
||||
|
@ -197,19 +181,17 @@ endif()
|
|||
|
||||
# DiscordRPC
|
||||
if (USE_DISCORD_PRESENCE)
|
||||
set(CPM_USE_LOCAL_PACKAGES OFF)
|
||||
|
||||
CPMAddPackage(
|
||||
AddPackage(
|
||||
NAME discord-rpc
|
||||
URL "https://github.com/discord/discord-rpc/archive/963aa9f3e5.zip"
|
||||
URL_HASH SHA512=386e1344e9a666d730f2d335ee3aef1fd05b1039febefd51aa751b705009cc764411397f3ca08dffd46205c72f75b235c870c737b2091a4ed0c3b061f5919bde
|
||||
REPO "discord/discord-rpc"
|
||||
SHA 963aa9f3e5
|
||||
HASH 386e1344e9a666d730f2d335ee3aef1fd05b1039febefd51aa751b705009cc764411397f3ca08dffd46205c72f75b235c870c737b2091a4ed0c3b061f5919bde
|
||||
OPTIONS
|
||||
"BUILD_EXAMPLES OFF"
|
||||
PATCHES
|
||||
${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/0003-fix-cpp17.patch
|
||||
CUSTOM_CACHE_KEY "963a"
|
||||
)
|
||||
|
||||
target_include_directories(discord-rpc INTERFACE ${discord-rpc_SOURCE_DIR}/include)
|
||||
|
@ -218,76 +200,68 @@ endif()
|
|||
|
||||
# Sirit
|
||||
# TODO(crueter): spirv-tools doesn't work w/ system
|
||||
set(CPM_USE_LOCAL_PACKAGES OFF)
|
||||
|
||||
CPMAddPackage(
|
||||
AddPackage(
|
||||
NAME SPIRV-Headers
|
||||
URL "https://github.com/KhronosGroup/SPIRV-Headers/archive/4e209d3d7e.zip"
|
||||
URL_HASH SHA512=f48bbe18341ed55ea0fe280dbbbc0a44bf222278de6e716e143ca1e95ca320b06d4d23d6583fbf8d03e1428f3dac8fa00e5b82ddcd6b425e6236d85af09550a4
|
||||
CUSTOM_CACHE_KEY "4e20"
|
||||
REPO "KhronosGroup/SPIRV-Headers"
|
||||
SHA 4e209d3d7e
|
||||
HASH f48bbe18341ed55ea0fe280dbbbc0a44bf222278de6e716e143ca1e95ca320b06d4d23d6583fbf8d03e1428f3dac8fa00e5b82ddcd6b425e6236d85af09550a4
|
||||
)
|
||||
|
||||
set(CPM_USE_LOCAL_PACKAGES ON)
|
||||
|
||||
CPMAddPackage(
|
||||
AddPackage(
|
||||
NAME sirit
|
||||
URL "https://github.com/raphaelthegreat/sirit/archive/51fcf9720f.zip"
|
||||
URL_HASH SHA512=a8f98ea0c51763b89924d836ad482ebdfe9130251cf4e14733ccaacc885ae8cc4c8b03d1dc43e8861609e5f7929c16f935879c1f6bf61866fd75077954774394
|
||||
REPO "eden-emulator/sirit"
|
||||
SHA db1f1e8ab5
|
||||
HASH 73eb3a042848c63a10656545797e85f40d142009dfb7827384548a385e1e28e1ac72f42b25924ce530d58275f8638554281e884d72f9c7aaf4ed08690a414b05
|
||||
OPTIONS
|
||||
"SIRIT_USE_SYSTEM_SPIRV_HEADERS ON"
|
||||
CUSTOM_CACHE_KEY "51fc"
|
||||
SYSTEM_PACKAGE ON
|
||||
)
|
||||
|
||||
# httplib
|
||||
if ((ENABLE_WEB_SERVICE OR ENABLE_QT_UPDATE_CHECKER))
|
||||
set(CPM_USE_LOCAL_PACKAGES ${YUZU_USE_SYSTEM_HTTPLIB})
|
||||
|
||||
# TODO(crueter): fix local package (gentoo?)
|
||||
CPMAddPackage(
|
||||
AddPackage(
|
||||
NAME httplib
|
||||
VERSION 0.12
|
||||
URL "https://github.com/yhirose/cpp-httplib/archive/a609330e4c.zip"
|
||||
URL_HASH SHA512=dd3fd0572f8367d8549e1319fd98368b3e75801a293b0c3ac9b4adb806473a4506a484b3d389dc5bee5acc460cb90af7a20e5df705a1696b56496b30b9ce7ed2
|
||||
REPO "yhirose/cpp-httplib"
|
||||
SHA a609330e4c
|
||||
HASH dd3fd0572f8367d8549e1319fd98368b3e75801a293b0c3ac9b4adb806473a4506a484b3d389dc5bee5acc460cb90af7a20e5df705a1696b56496b30b9ce7ed2
|
||||
FIND_PACKAGE_ARGUMENTS "MODULE"
|
||||
OPTIONS
|
||||
"HTTPLIB_REQUIRE_OPENSSL ON"
|
||||
CUSTOM_CACHE_KEY "a609"
|
||||
SYSTEM_PACKAGE ${YUZU_USE_SYSTEM_HTTPLIB}
|
||||
)
|
||||
endif()
|
||||
|
||||
# cpp-jwt
|
||||
if (ENABLE_WEB_SERVICE)
|
||||
set(CPM_USE_LOCAL_PACKAGES OFF)
|
||||
|
||||
CPMAddPackage(
|
||||
AddPackage(
|
||||
NAME cpp-jwt
|
||||
VERSION 1.4
|
||||
URL "https://github.com/arun11299/cpp-jwt/archive/10ef5735d8.zip"
|
||||
URL_HASH SHA512=ebba3d26b33a3b0aa909f475e099594560edbce10ecd03e76d7fea68549a28713ea606d363808f88a5495b62c54c3cdb7e47aee2d946eceabd36e310479dadb7
|
||||
REPO "arun11299/cpp-jwt"
|
||||
SHA 10ef5735d8
|
||||
HASH ebba3d26b33a3b0aa909f475e099594560edbce10ecd03e76d7fea68549a28713ea606d363808f88a5495b62c54c3cdb7e47aee2d946eceabd36e310479dadb7
|
||||
FIND_PACKAGE_ARGUMENTS "CONFIG"
|
||||
OPTIONS
|
||||
"CPP_JWT_BUILD_EXAMPLES OFF"
|
||||
"CPP_JWT_BUILD_TESTS OFF"
|
||||
"CPP_JWT_USE_VENDORED_NLOHMANN_JSON OFF"
|
||||
CUSTOM_CACHE_KEY "10ef"
|
||||
)
|
||||
endif()
|
||||
|
||||
# Opus
|
||||
set(CPM_USE_LOCAL_PACKAGES ${YUZU_USE_SYSTEM_OPUS})
|
||||
|
||||
CPMAddPackage(
|
||||
AddPackage(
|
||||
NAME Opus
|
||||
VERSION 1.3
|
||||
URL "https://github.com/xiph/opus/archive/5ded705cf4.zip"
|
||||
URL_HASH SHA512=0dc89e58ddda1f3bc6a7037963994770c5806c10e66f5cc55c59286fc76d0544fe4eca7626772b888fd719f434bc8a92f792bdb350c807968b2ac14cfc04b203
|
||||
REPO "xiph/opus"
|
||||
SHA 5ded705cf4
|
||||
HASH 0dc89e58ddda1f3bc6a7037963994770c5806c10e66f5cc55c59286fc76d0544fe4eca7626772b888fd719f434bc8a92f792bdb350c807968b2ac14cfc04b203
|
||||
FIND_PACKAGE_ARGUMENTS "MODULE"
|
||||
OPTIONS
|
||||
"OPUS_BUILD_TESTING OFF"
|
||||
"OPUS_BUILD_PROGRAMS OFF"
|
||||
"OPUS_INSTALL_PKG_CONFIG_MODULE OFF"
|
||||
"OPUS_INSTALL_CMAKE_CONFIG_MODULE OFF"
|
||||
CUSTOM_CACHE_KEY "5ded"
|
||||
SYSTEM_PACKAGE ${YUZU_USE_SYSTEM_OPUS}
|
||||
)
|
||||
|
||||
# FFMpeg
|
||||
|
@ -303,67 +277,72 @@ endif()
|
|||
if (YUZU_USE_EXTERNAL_VULKAN_HEADERS)
|
||||
set(CPM_USE_LOCAL_PACKAGES OFF)
|
||||
else()
|
||||
set(CPM_USE_LOCAL_PACKAGES ON)
|
||||
set(CPM_USE_LOCAL_PACKAGES OFF)
|
||||
endif()
|
||||
|
||||
# TODO(crueter): System vk-headers are too new for externals vk-util
|
||||
# TODO(crueter): Vk1.4 impl
|
||||
|
||||
CPMAddPackage(
|
||||
# TODO(crueter): allow sys packages?
|
||||
AddPackage(
|
||||
NAME VulkanHeaders
|
||||
VERSION 1.3.274
|
||||
URL "https://github.com/KhronosGroup/Vulkan-Headers/archive/89268a6d17.zip"
|
||||
URL_HASH SHA512=3ab349f74298ba72cafb8561015690c0674d428a09fb91ccd3cd3daca83650d190d46d33fd97b0a8fd4223fe6df2bcabae89136fbbf7c0bfeb8776f9448304c8
|
||||
CUSTOM_CACHE_KEY "8926"
|
||||
REPO "KhronosGroup/Vulkan-Headers"
|
||||
SHA 89268a6d17
|
||||
HASH 3ab349f74298ba72cafb8561015690c0674d428a09fb91ccd3cd3daca83650d190d46d33fd97b0a8fd4223fe6df2bcabae89136fbbf7c0bfeb8776f9448304c8
|
||||
BUNDLED_PACKAGE ${YUZU_USE_EXTERNAL_VULKAN_HEADERS}
|
||||
)
|
||||
|
||||
# Vulkan-Utility-Libraries
|
||||
if (YUZU_USE_EXTERNAL_VULKAN_UTILITY_LIBRARIES)
|
||||
set(CPM_USE_LOCAL_PACKAGES OFF)
|
||||
else()
|
||||
set(CPM_USE_LOCAL_PACKAGES ON)
|
||||
# CMake's interface generator sucks
|
||||
if (VulkanHeaders_ADDED)
|
||||
target_include_directories(Vulkan-Headers INTERFACE ${VulkanHeaders_SOURCE_DIR}/include)
|
||||
endif()
|
||||
|
||||
CPMAddPackage(
|
||||
set(VulkanHeaders_SOURCE_DIR "${VulkanHeaders_SOURCE_DIR}" PARENT_SCOPE)
|
||||
set(VulkanHeaders_ADDED "${VulkanHeaders_ADDED}" PARENT_SCOPE)
|
||||
|
||||
# Vulkan-Utility-Libraries
|
||||
AddPackage(
|
||||
NAME VulkanUtilityLibraries
|
||||
URL "https://github.com/KhronosGroup/Vulkan-Utility-Libraries/archive/df2e358152.zip"
|
||||
URL_HASH SHA512=3e468c3d9ff93f6d418d71e5527abe0a12c8c7ab5b0b52278bbbee4d02bb87e99073906729b727e0147242b7e3fd5dedf68b803f1878cb4c0e4f730bc2238d79
|
||||
CUSTOM_CACHE_KEY "df2e"
|
||||
REPO "KhronosGroup/Vulkan-Utility-Libraries"
|
||||
SHA df2e358152
|
||||
HASH 3e468c3d9ff93f6d418d71e5527abe0a12c8c7ab5b0b52278bbbee4d02bb87e99073906729b727e0147242b7e3fd5dedf68b803f1878cb4c0e4f730bc2238d79
|
||||
BUNDLED_PACKAGE ${YUZU_USE_EXTERNAL_VULKAN_UTILITY_LIBRARIES}
|
||||
)
|
||||
|
||||
set(VulkanUtilityLibraries_SOURCE_DIR "${VulkanUtilityLibraries_SOURCE_DIR}" PARENT_SCOPE)
|
||||
set(VulkanUtilityLibraries_ADDED "${VulkanUtilityLibraries_ADDED}" PARENT_SCOPE)
|
||||
|
||||
# SPIRV-Tools
|
||||
if (YUZU_USE_EXTERNAL_VULKAN_SPIRV_TOOLS)
|
||||
CPMAddPackage(
|
||||
AddPackage(
|
||||
NAME SPIRV-Tools
|
||||
URL "https://github.com/KhronosGroup/SPIRV-Tools/archive/40eb301f32.zip"
|
||||
URL_HASH SHA512=58d0fb1047d69373cf24c73e6f78c73a72a6cca3b4df1d9f083b9dcc0962745ef154abf3dbe9b3623b835be20c6ec769431cf11733349f45e7568b3525f707aa
|
||||
REPO "KhronosGroup/SPIRV-Tools"
|
||||
SHA 40eb301f32
|
||||
HASH 58d0fb1047d69373cf24c73e6f78c73a72a6cca3b4df1d9f083b9dcc0962745ef154abf3dbe9b3623b835be20c6ec769431cf11733349f45e7568b3525f707aa
|
||||
OPTIONS
|
||||
"SPIRV_SKIP_EXECUTABLES ON"
|
||||
CUSTOM_CACHE_KEY "40eb"
|
||||
)
|
||||
endif()
|
||||
|
||||
# Boost headers
|
||||
set(CPM_USE_LOCAL_PACKAGES OFF)
|
||||
|
||||
CPMAddPackage(
|
||||
AddPackage(
|
||||
NAME boost_headers
|
||||
URL "https://github.com/boostorg/headers/archive/0456900fad.zip"
|
||||
URL_HASH SHA512=50cd75dcdfc5f082225cdace058f47b4fb114a47585f7aee1d22236a910a80b667186254c214fa2fcebac67ae6d37ba4b6e695e1faea8affd6fd42a03cf996e3
|
||||
CUSTOM_CACHE_KEY "0456"
|
||||
REPO "boostorg/headers"
|
||||
SHA 0456900fad
|
||||
HASH 50cd75dcdfc5f082225cdace058f47b4fb114a47585f7aee1d22236a910a80b667186254c214fa2fcebac67ae6d37ba4b6e695e1faea8affd6fd42a03cf996e3
|
||||
)
|
||||
|
||||
# TZDB (Time Zone Database)
|
||||
add_subdirectory(nx_tzdb)
|
||||
|
||||
# VMA
|
||||
set(CPM_USE_LOCAL_PACKAGES ON)
|
||||
|
||||
CPMAddPackage(
|
||||
AddPackage(
|
||||
NAME VulkanMemoryAllocator
|
||||
URL "https://github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator/archive/1076b348ab.zip"
|
||||
URL_HASH SHA512=a46b44e4286d08cffda058e856c47f44c7fed3da55fe9555976eb3907fdcc20ead0b1860b0c38319cda01dbf9b1aa5d4b4038c7f1f8fbd97283d837fa9af9772
|
||||
REPO "GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator"
|
||||
SHA 1076b348ab
|
||||
HASH a46b44e4286d08cffda058e856c47f44c7fed3da55fe9555976eb3907fdcc20ead0b1860b0c38319cda01dbf9b1aa5d4b4038c7f1f8fbd97283d837fa9af9772
|
||||
FIND_PACKAGE_ARGUMENTS "CONFIG"
|
||||
CUSTOM_CACHE_KEY "1076"
|
||||
# SYSTEM_PACKAGE ON
|
||||
)
|
||||
|
||||
set(VulkanMemoryAllocator_SOURCE_DIR "${VulkanMemoryAllocator_SOURCE_DIR}" PARENT_SCOPE)
|
||||
|
@ -399,20 +378,18 @@ endif()
|
|||
|
||||
if (ANDROID)
|
||||
if (ARCHITECTURE_arm64)
|
||||
set(CPM_USE_LOCAL_PACKAGES OFF)
|
||||
|
||||
CPMAddPackage(
|
||||
AddPackage(
|
||||
NAME libadrenotools
|
||||
URL "https://github.com/bylaws/libadrenotools/archive/8fae8ce254.zip"
|
||||
URL_HASH SHA512=c74fa855f0edebbf25c9bce40b00966daa2447bfc5e15f0cf1a95f86cbf70fc6b02590707edbde16328a0a2a4fb9a1fc419d2dfc22a4a4150971be91892d4edb
|
||||
REPO "bylaws/libadrenotools"
|
||||
SHA 8fae8ce254
|
||||
HASH c74fa855f0edebbf25c9bce40b00966daa2447bfc5e15f0cf1a95f86cbf70fc6b02590707edbde16328a0a2a4fb9a1fc419d2dfc22a4a4150971be91892d4edb
|
||||
PATCHES
|
||||
${CMAKE_SOURCE_DIR}/.patch/libadrenotools/0001-linkerns-cpm.patch
|
||||
CUSTOM_CACHE_KEY "8fae"
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if ((CMAKE_SYSTEM_NAME STREQUAL "Linux" OR ANDROID) AND NOT TARGET gamemode::headers)
|
||||
if (UNIX AND NOT APPLE AND NOT TARGET gamemode::headers)
|
||||
add_library(gamemode INTERFACE)
|
||||
target_include_directories(gamemode INTERFACE gamemode)
|
||||
add_library(gamemode::headers ALIAS gamemode)
|
||||
|
@ -432,13 +409,12 @@ if (YUZU_CRASH_DUMPS AND NOT TARGET libbreakpad_client)
|
|||
_CRT_NONSTDC_NO_DEPRECATE
|
||||
)
|
||||
|
||||
set(CPM_USE_LOCAL_PACKAGES OFF)
|
||||
CPMAddPackage(
|
||||
AddPackage(
|
||||
NAME breakpad
|
||||
URL "https://github.com/google/breakpad/archive/f80f288803.zip"
|
||||
URL_HASH SHA512=4a87ee88cea99bd633d52a5b00135a649f1475e3b65db325a6df9c804ab82b054ad7e62419b35f6e22cc5dfbbb569214041d7ad5d10fab10106e700bb5050e1d
|
||||
URL "google/breakpad"
|
||||
SHA f80f288803
|
||||
HASH 4a87ee88cea99bd633d52a5b00135a649f1475e3b65db325a6df9c804ab82b054ad7e62419b35f6e22cc5dfbbb569214041d7ad5d10fab10106e700bb5050e1d
|
||||
DOWNLOAD_ONLY YES
|
||||
CUSTOM_CACHE_KEY "f80f"
|
||||
)
|
||||
|
||||
# libbreakpad
|
||||
|
@ -538,14 +514,11 @@ endif()
|
|||
|
||||
# oboe
|
||||
if (ANDROID)
|
||||
set(CPM_USE_LOCAL_PACKAGES ON)
|
||||
CPMAddPackage(
|
||||
AddPackage(
|
||||
NAME oboe
|
||||
URL "https://github.com/google/oboe/archive/2bc873e53c.zip"
|
||||
URL_HASH SHA512=02329058a7f9cf7d5039afaae5ab170d9f42f60f4c01e21eaf4f46073886922b057a9ae30eeac040b3ac182f51b9c1bfe9fe1050a2c9f6ce567a1a9a0ec2c768
|
||||
OPTIONS
|
||||
"SPIRV_SKIP_EXECUTABLES ON"
|
||||
CUSTOM_CACHE_KEY "2bc8"
|
||||
REPO "google/oboe"
|
||||
SHA 2bc873e53c
|
||||
HASH 02329058a7f9cf7d5039afaae5ab170d9f42f60f4c01e21eaf4f46073886922b057a9ae30eeac040b3ac182f51b9c1bfe9fe1050a2c9f6ce567a1a9a0ec2c768
|
||||
)
|
||||
|
||||
add_library(oboe::oboe ALIAS oboe)
|
||||
|
@ -556,15 +529,3 @@ if (ARCHITECTURE_arm64 AND NOT TARGET sse2neon)
|
|||
add_library(sse2neon INTERFACE)
|
||||
target_include_directories(sse2neon INTERFACE sse2neon)
|
||||
endif()
|
||||
|
||||
# QuaZip
|
||||
if (ENABLE_QT)
|
||||
set(CPM_USE_LOCAL_PACKAGES ON)
|
||||
|
||||
CPMAddPackage(
|
||||
NAME QuaZip-Qt6
|
||||
VERSION 1.3
|
||||
URL "https://github.com/crueter/quazip-qt6/archive/f838774d63.zip"
|
||||
CUSTOM_CACHE_KEY "f838"
|
||||
)
|
||||
endif()
|
||||
|
|
16
externals/ffmpeg/CMakeLists.txt
vendored
16
externals/ffmpeg/CMakeLists.txt
vendored
|
@ -19,14 +19,11 @@ if (NOT WIN32 AND NOT ANDROID)
|
|||
message(FATAL_ERROR "Required program `autoconf` not found.")
|
||||
endif()
|
||||
|
||||
include(CPM)
|
||||
set(CPM_USE_LOCAL_PACKAGES OFF)
|
||||
|
||||
CPMAddPackage(
|
||||
AddPackage(
|
||||
NAME ffmpeg
|
||||
URL "https://github.com/ffmpeg/ffmpeg/archive/9c1294eadd.zip"
|
||||
URL_HASH SHA512=2076e4cb843787c44718c70c4452517273dbc963ef98442f343762ade6c7b9f78555ae9b50a7c628844a15d8cb5e866c04e2f1acfb77093cea4fbc9edf3ad21a
|
||||
CUSTOM_CACHE_KEY "9c12"
|
||||
REPO "FFmpeg/FFmpeg"
|
||||
SHA c2184b65d2
|
||||
HASH 2a89d664119debbb3c006ab1c48d5d7f26e889f4a65ad2e25c8b0503308295123d5a9c5c78bf683aef5ff09acef8c3fc2837f22d3e8c611528b933bf03bcdd97
|
||||
)
|
||||
|
||||
set(FFmpeg_PREFIX ${ffmpeg_SOURCE_DIR})
|
||||
|
@ -176,6 +173,7 @@ if (NOT WIN32 AND NOT ANDROID)
|
|||
--enable-decoder=vp8
|
||||
--enable-decoder=vp9
|
||||
--enable-filter=yadif,scale
|
||||
--enable-pic
|
||||
--cc="${FFmpeg_CC}"
|
||||
--cxx="${FFmpeg_CXX}"
|
||||
${FFmpeg_HWACCEL_FLAGS}
|
||||
|
@ -242,7 +240,7 @@ elseif(ANDROID)
|
|||
message(FATAL_ERROR "Unsupported architecture for Android FFmpeg")
|
||||
endif()
|
||||
|
||||
download_bundled_external("ffmpeg/" ${FFmpeg_EXT_NAME} "ffmpeg-bundled" FFmpeg_PATH)
|
||||
download_bundled_external("ffmpeg/" ${FFmpeg_EXT_NAME} "ffmpeg-bundled" FFmpeg_PATH 7.1.1)
|
||||
set(FFmpeg_FOUND YES)
|
||||
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)
|
||||
|
@ -267,7 +265,7 @@ elseif(WIN32)
|
|||
# Use yuzu FFmpeg binaries
|
||||
set(FFmpeg_EXT_NAME "ffmpeg-7.1.1")
|
||||
|
||||
download_bundled_external("ffmpeg/" ${FFmpeg_EXT_NAME} "ffmpeg-bundled" FFmpeg_PATH)
|
||||
download_bundled_external("ffmpeg/" ${FFmpeg_EXT_NAME} "ffmpeg-bundled" FFmpeg_PATH 7.1.1)
|
||||
set(FFmpeg_FOUND YES)
|
||||
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)
|
||||
|
|
2
externals/libusb/libusb
vendored
2
externals/libusb/libusb
vendored
|
@ -1 +1 @@
|
|||
Subproject commit 3dbfa16f0cd9e8ed4fec916c6c00f41c738cb8f4
|
||||
Subproject commit c060e9ce30ac2e3ffb49d94209c4dae77b6642f7
|
7
externals/microprofile/README.md
vendored
7
externals/microprofile/README.md
vendored
|
@ -1,7 +0,0 @@
|
|||
# microprofile
|
||||
|
||||
MicroProfile is a embeddable profiler in a single file, written in C++
|
||||
|
||||
It can display profile information in the application, or by generating captures via a minimal built in webserver.
|
||||
|
||||
For more information see the project webpage at https://bitbucket.org/jonasmeyer/microprofile
|
3606
externals/microprofile/microprofile.h
vendored
3606
externals/microprofile/microprofile.h
vendored
File diff suppressed because it is too large
Load diff
3868
externals/microprofile/microprofile_html.h
vendored
3868
externals/microprofile/microprofile_html.h
vendored
File diff suppressed because it is too large
Load diff
3349
externals/microprofile/microprofileui.h
vendored
3349
externals/microprofile/microprofileui.h
vendored
File diff suppressed because it is too large
Load diff
|
@ -232,3 +232,5 @@ if (ANDROID)
|
|||
add_subdirectory(android/app/src/main/jni)
|
||||
target_include_directories(yuzu-android PRIVATE android/app/src/main)
|
||||
endif()
|
||||
|
||||
include(GenerateDepHashes)
|
||||
|
|
|
@ -552,7 +552,7 @@ class NetPlayDialog(context: Context) : BottomSheetDialog(context) {
|
|||
if (result == 0) {
|
||||
StringSetting.WEB_USERNAME.setString(username)
|
||||
NetPlayManager.setRoomPort(activity, portStr)
|
||||
NetPlayManager.setRoomAddress(activity, ipAddress)
|
||||
|
||||
if (!isCreateRoom) NetPlayManager.setRoomAddress(activity, ipAddress)
|
||||
|
||||
Toast.makeText(
|
||||
|
|
|
@ -25,6 +25,7 @@ enum class BooleanSetting(override val key: String) : AbstractBooleanSetting {
|
|||
RENDERER_ASYNCHRONOUS_SHADERS("use_asynchronous_shaders"),
|
||||
RENDERER_FAST_GPU("use_fast_gpu_time"),
|
||||
RENDERER_REACTIVE_FLUSHING("use_reactive_flushing"),
|
||||
RENDERER_EARLY_RELEASE_FENCES("early_release_fences"),
|
||||
BUFFER_REORDER_DISABLE("disable_buffer_reorder"),
|
||||
RENDERER_DEBUG("debug"),
|
||||
RENDERER_PROVOKING_VERTEX("provoking_vertex"),
|
||||
|
|
|
@ -664,6 +664,13 @@ abstract class SettingsItem(
|
|||
descriptionId = R.string.renderer_reactive_flushing_description
|
||||
)
|
||||
)
|
||||
put(
|
||||
SwitchSetting(
|
||||
BooleanSetting.RENDERER_EARLY_RELEASE_FENCES,
|
||||
titleId = R.string.renderer_early_release_fences,
|
||||
descriptionId = R.string.renderer_early_release_fences_description
|
||||
)
|
||||
)
|
||||
put(
|
||||
SwitchSetting(
|
||||
BooleanSetting.BUFFER_REORDER_DISABLE,
|
||||
|
|
|
@ -446,6 +446,7 @@ class SettingsFragmentPresenter(
|
|||
|
||||
add(HeaderSetting(R.string.veil_renderer))
|
||||
add(BooleanSetting.ENABLE_RAII.key)
|
||||
add(BooleanSetting.RENDERER_EARLY_RELEASE_FENCES.key)
|
||||
add(BooleanSetting.BUFFER_REORDER_DISABLE.key)
|
||||
add(BooleanSetting.FRAME_INTERPOLATION.key)
|
||||
add(BooleanSetting.RENDERER_FAST_GPU.key)
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: 2025 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
|
@ -91,7 +94,8 @@ class AboutFragment : Fragment() {
|
|||
}
|
||||
}
|
||||
|
||||
binding.buttonDiscord.setOnClickListener { openLink(getString(R.string.support_link)) }
|
||||
binding.buttonDiscord.setOnClickListener { openLink(getString(R.string.discord_link)) }
|
||||
binding.buttonRevolt.setOnClickListener { openLink(getString(R.string.revolt_link)) }
|
||||
binding.buttonWebsite.setOnClickListener { openLink(getString(R.string.website_link)) }
|
||||
binding.buttonGithub.setOnClickListener { openLink(getString(R.string.github_link)) }
|
||||
|
||||
|
|
|
@ -211,6 +211,7 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback {
|
|||
|
||||
if (shouldUseCustom) {
|
||||
SettingsFile.loadCustomConfig(game!!)
|
||||
NativeConfig.unloadPerGameConfig()
|
||||
Log.info("[EmulationFragment] Loading custom settings for ${game!!.title}")
|
||||
} else {
|
||||
Log.info("[EmulationFragment] Using global settings")
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
|
||||
package org.yuzu.yuzu_emu.ui
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.content.res.Configuration
|
||||
|
@ -94,6 +95,7 @@ class GamesFragment : Fragment() {
|
|||
return binding.root
|
||||
}
|
||||
|
||||
@SuppressLint("NotifyDataSetChanged")
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
homeViewModel.setStatusBarShadeVisibility(true)
|
||||
|
|
|
@ -32,7 +32,6 @@
|
|||
#include "common/fs/path_util.h"
|
||||
#include "common/logging/backend.h"
|
||||
#include "common/logging/log.h"
|
||||
#include "common/microprofile.h"
|
||||
#include "common/scm_rev.h"
|
||||
#include "common/scope_exit.h"
|
||||
#include "common/settings.h"
|
||||
|
@ -432,11 +431,6 @@ u64 EmulationSession::GetProgramId(JNIEnv* env, jstring jprogramId) {
|
|||
static Core::SystemResultStatus RunEmulation(const std::string& filepath,
|
||||
const size_t program_index,
|
||||
const bool frontend_initiated) {
|
||||
MicroProfileOnThreadCreate("EmuThread");
|
||||
SCOPE_EXIT {
|
||||
MicroProfileShutdown();
|
||||
};
|
||||
|
||||
LOG_INFO(Frontend, "starting");
|
||||
|
||||
if (filepath.empty()) {
|
||||
|
|
15
src/android/app/src/main/res/drawable/ic_revolt.xml
Normal file
15
src/android/app/src/main/res/drawable/ic_revolt.xml
Normal file
|
@ -0,0 +1,15 @@
|
|||
<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>
|
|
@ -4,6 +4,7 @@
|
|||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="?attr/colorSurface"
|
||||
android:clipChildren="false"
|
||||
>
|
||||
|
||||
|
@ -21,7 +22,7 @@
|
|||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/app_name"
|
||||
android:textAppearance="@style/TextAppearance.Material3.HeadlineLarge"
|
||||
style="@style/SynthwaveText.Title"
|
||||
android:textSize="27sp"
|
||||
android:textStyle="bold"
|
||||
/>
|
||||
|
@ -40,13 +41,11 @@
|
|||
|
||||
<com.google.android.material.card.MaterialCardView
|
||||
android:id="@+id/search_background"
|
||||
style="?attr/materialCardViewFilledStyle"
|
||||
style="@style/EdenCard"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="48dp"
|
||||
app:cardCornerRadius="24dp"
|
||||
app:cardBackgroundColor="?attr/colorSurfaceVariant"
|
||||
app:strokeColor="?attr/colorOutline"
|
||||
app:strokeWidth="1dp"
|
||||
android:padding="4dp"
|
||||
>
|
||||
|
||||
<LinearLayout
|
||||
|
@ -64,7 +63,7 @@
|
|||
android:layout_gravity="center_vertical"
|
||||
android:layout_marginEnd="18dp"
|
||||
android:src="@drawable/ic_search"
|
||||
app:tint="?attr/colorOnSurfaceVariant"
|
||||
app:tint="?attr/colorSecondary"
|
||||
/>
|
||||
|
||||
<EditText
|
||||
|
@ -76,6 +75,9 @@
|
|||
android:inputType="text"
|
||||
android:maxLines="1"
|
||||
android:imeOptions="flagNoFullscreen"
|
||||
android:textColor="?attr/colorOnBackground"
|
||||
android:textColorHint="?attr/colorOnSurfaceVariant"
|
||||
android:fontFamily="monospace"
|
||||
/>
|
||||
|
||||
</LinearLayout>
|
||||
|
@ -98,13 +100,11 @@
|
|||
|
||||
<com.google.android.material.card.MaterialCardView
|
||||
android:id="@+id/view_button"
|
||||
style="?attr/materialCardViewFilledStyle"
|
||||
style="@style/EdenCard"
|
||||
android:layout_width="42dp"
|
||||
android:layout_height="42dp"
|
||||
app:cardCornerRadius="21dp"
|
||||
app:cardBackgroundColor="@color/eden_surface_variant"
|
||||
app:strokeColor="@color/eden_border"
|
||||
app:strokeWidth="1dp"
|
||||
android:padding="8dp"
|
||||
>
|
||||
|
||||
<ImageView
|
||||
|
@ -112,7 +112,7 @@
|
|||
android:layout_height="18dp"
|
||||
android:layout_gravity="center"
|
||||
android:src="@drawable/ic_eye"
|
||||
app:tint="?attr/colorOnSurfaceVariant"
|
||||
app:tint="?attr/colorSecondary"
|
||||
/>
|
||||
|
||||
</com.google.android.material.card.MaterialCardView>
|
||||
|
@ -124,13 +124,11 @@
|
|||
|
||||
<com.google.android.material.card.MaterialCardView
|
||||
android:id="@+id/filter_button"
|
||||
style="?attr/materialCardViewFilledStyle"
|
||||
style="@style/EdenCard"
|
||||
android:layout_width="42dp"
|
||||
android:layout_height="42dp"
|
||||
app:cardCornerRadius="21dp"
|
||||
app:cardBackgroundColor="@color/eden_surface_variant"
|
||||
app:strokeColor="@color/eden_border"
|
||||
app:strokeWidth="1dp"
|
||||
android:padding="8dp"
|
||||
>
|
||||
|
||||
<ImageView
|
||||
|
@ -150,13 +148,11 @@
|
|||
|
||||
<com.google.android.material.card.MaterialCardView
|
||||
android:id="@+id/settings_button"
|
||||
style="?attr/materialCardViewFilledStyle"
|
||||
style="@style/EdenCard"
|
||||
android:layout_width="42dp"
|
||||
android:layout_height="42dp"
|
||||
app:cardCornerRadius="21dp"
|
||||
app:cardBackgroundColor="@color/eden_surface_variant"
|
||||
app:strokeColor="@color/eden_border"
|
||||
app:strokeWidth="1dp"
|
||||
android:padding="8dp"
|
||||
>
|
||||
|
||||
<ImageView
|
||||
|
@ -164,7 +160,7 @@
|
|||
android:layout_height="18dp"
|
||||
android:layout_gravity="center"
|
||||
android:src="@drawable/ic_settings"
|
||||
app:tint="?attr/colorOnSurfaceVariant"
|
||||
app:tint="?attr/colorTertiary"
|
||||
/>
|
||||
|
||||
</com.google.android.material.card.MaterialCardView>
|
||||
|
|
|
@ -6,7 +6,8 @@
|
|||
android:id="@+id/coordinator_main"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@drawable/eden_background_gradient">
|
||||
android:background="@drawable/eden_background_gradient"
|
||||
>
|
||||
|
||||
<androidx.fragment.app.FragmentContainerView
|
||||
android:id="@+id/fragment_container"
|
||||
|
|
|
@ -219,6 +219,17 @@
|
|||
app:iconSize="24dp"
|
||||
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
|
||||
android:id="@+id/button_website"
|
||||
style="@style/EdenButton.Secondary"
|
||||
|
|
|
@ -6,7 +6,8 @@
|
|||
android:id="@+id/coordinator_main"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="?android:attr/colorBackground">
|
||||
android:background="@drawable/eden_background_gradient"
|
||||
>
|
||||
|
||||
<androidx.fragment.app.FragmentContainerView
|
||||
android:id="@+id/fragment_container"
|
||||
|
|
|
@ -66,7 +66,7 @@
|
|||
android:orientation="vertical">
|
||||
|
||||
<com.google.android.material.textview.MaterialTextView
|
||||
style="@style/SynthwaveText.Header"
|
||||
style="@style/TextAppearance.Material3.TitleMedium"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:textAlignment="viewStart"
|
||||
|
@ -101,7 +101,7 @@
|
|||
android:orientation="vertical">
|
||||
|
||||
<com.google.android.material.textview.MaterialTextView
|
||||
style="@style/SynthwaveText.Header"
|
||||
style="@style/TextAppearance.Material3.TitleMedium"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:textAlignment="viewStart"
|
||||
|
@ -213,6 +213,18 @@
|
|||
app:iconGravity="textStart"
|
||||
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
|
||||
style="@style/EdenButton.Secondary"
|
||||
android:id="@+id/button_website"
|
||||
|
|
|
@ -4,6 +4,8 @@
|
|||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="?attr/colorSurface"
|
||||
android:clipChildren="false"
|
||||
>
|
||||
|
||||
<LinearLayout
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
android:scrollbars="vertical"
|
||||
android:fadeScrollbars="false"
|
||||
android:clipToPadding="false"
|
||||
android:background="?attr/colorSurface"
|
||||
android:defaultFocusHighlightEnabled="false">
|
||||
|
||||
<androidx.appcompat.widget.LinearLayoutCompat
|
||||
|
|
|
@ -75,6 +75,8 @@
|
|||
<string name="frame_skipping_description">تبديل تخطي الإطارات لتحسين الأداء عن طريق تقليل عدد الإطارات المعروضة. هذه الميزة قيد التطوير وسيتم تمكينها في الإصدارات المستقبلية.</string>
|
||||
<string name="frame_interpolation">تحسين توقيت الإطارات</string>
|
||||
<string name="frame_interpolation_description">يضمن تسليمًا سلسًا ومتناسقًا للإطارات من خلال مزامنة التوقيت بينها، مما يقلل من التقطيع وعدم انتظام الحركة. مثالي للألعاب التي تعاني من عدم استقرار في توقيت الإطارات أو تقطع دقيق أثناء اللعب.</string>
|
||||
<string name="renderer_early_release_fences">إطلاق الأسوار مبكرًا</string>
|
||||
<string name="renderer_early_release_fences_description">يساعد في إصلاح مشكلة 0 إطار في الثانية في ألعاب مثل DKCR:HD وSubnautica Below Zero وOri 2، ولكن قد يتسبب في تعطيل التحميل أو الأداء في ألعاب Unreal Engine.</string>
|
||||
<string name="buffer_reorder_disable">تعطيل إعادة ترتيب المخزن المؤقت</string>
|
||||
<string name="buffer_reorder_disable_description">عند التحديد، يتم تعطيل إعادة ترتيب تحميل الذاكرة المعينة مما يسمح بربط التحميلات برسومات محددة. قد يقلل الأداء في بعض الحالات.</string>
|
||||
<string name="use_lru_cache">تمكين ذاكرة التخزين المؤقت LRU</string>
|
||||
|
|
|
@ -76,6 +76,8 @@
|
|||
<string name="frame_skipping_description">تێپەڕاندنی فرەیمەکان بکە بۆ باشترکردنی کارایی بە کەمکردنەوەی ژمارەی فرەیمە ڕێندرکراوەکان. ئەم تایبەتمەندییە هێشتا کاردەکرێت و لە وەشانە داهاتووەکاندا چالاکدەکرێت.</string>
|
||||
<string name="frame_interpolation">تحسين توقيت الإطارات</string>
|
||||
<string name="frame_interpolation_description">يضمن تسليمًا سلسًا ومتناسقًا للإطارات من خلال مزامنة التوقيت بينها، مما يقلل من التقطيع وعدم انتظام الحركة. مثالي للألعاب التي تعاني من عدم استقرار في توقيت الإطارات أو تقطع دقيق أثناء اللعب.</string>
|
||||
<string name="renderer_early_release_fences">زێدەکردنی پەرستارەکان زووتر</string>
|
||||
<string name="renderer_early_release_fences_description">یارمەتی دەدات لە چارەسەری 0 FPS لە یارییەکانی وەک DKCR:HD، Subnautica Below Zero و Ori 2، بەڵام ڕەنگە بارکردن یان کارایی لە یارییەکانی Unreal Engine تێکبدات.</string>
|
||||
<string name="buffer_reorder_disable">ڕێکخستنەوەی بافر ناچالاک بکە</string>
|
||||
<string name="buffer_reorder_disable_description">کە دیاریکرا، ڕێکخستنەوەی بارکردنی بیرگەی نەخشەکراو ناچالاک دەکات کە ڕێگەدەدات بارکردنەکان بە ڕەسمی دیاریکراو ببەسترێت. لە هەندێک حاڵەتدا کاراییمان دەکاتەوە.</string>
|
||||
<string name="use_lru_cache">تمكين ذاكرة التخزين المؤقت LRU</string>
|
||||
|
|
|
@ -75,6 +75,8 @@
|
|||
<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_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_description">Pomáhá opravit 0 FPS v hrách jako DKCR:HD, Subnautica Below Zero a Ori 2, ale může narušit načítání nebo výkon v hrách na Unreal Engine.</string>
|
||||
<string name="buffer_reorder_disable">Zakázat přeřazování vyrovnávací paměti</string>
|
||||
<string name="buffer_reorder_disable_description">Při zaškrtnutí zakáže přeřazování nahrání mapované paměti, což umožňuje spojit nahrání s konkrétními vykresleními. V některých případech může snížit výkon.</string>
|
||||
<string name="use_lru_cache">Povolit LRU mezipaměť</string>
|
||||
|
|
|
@ -76,6 +76,8 @@
|
|||
<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_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_description">Behebt 0 FPS in Spielen wie DKCR:HD, Subnautica Below Zero und Ori 2, kann aber Ladezeiten oder Performance in Unreal Engine-Spielen beeinträchtigen.</string>
|
||||
<string name="buffer_reorder_disable">Puffer-Neuanordnung deaktivieren</string>
|
||||
<string name="buffer_reorder_disable_description">Wenn aktiviert, wird die Neuanordnung von gemappten Speicher-Uploads deaktiviert, was die Zuordnung von Uploads zu bestimmten Zeichenvorgängen ermöglicht. Kann in einigen Fällen die Leistung verringern.</string>
|
||||
<string name="use_lru_cache">LRU-Cache aktivieren</string>
|
||||
|
|
|
@ -76,6 +76,8 @@
|
|||
<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_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_description">Ayuda a solucionar 0 FPS en juegos como DKCR:HD, Subnautica Below Zero y Ori 2, pero puede afectar la carga o rendimiento en juegos de Unreal Engine.</string>
|
||||
<string name="buffer_reorder_disable">Desactivar reordenamiento de búfer</string>
|
||||
<string name="buffer_reorder_disable_description">Cuando está marcado, desactiva el reordenamiento de cargas de memoria mapeada, lo que permite asociar cargas con dibujos específicos. Puede reducir el rendimiento en algunos casos.</string>
|
||||
<string name="use_lru_cache">Habilitar caché LRU</string>
|
||||
|
|
|
@ -76,6 +76,8 @@
|
|||
<string name="frame_skipping_description">با فعال کردن رد کردن فریمها، عملکرد را با کاهش تعداد فریمهای رندر شده بهبود دهید. این قابلیت در حال توسعه است و در نسخههای آینده فعال خواهد شد.</string>
|
||||
<string name="frame_interpolation">زمانبندی پیشرفته فریمها</string>
|
||||
<string name="frame_interpolation_description">ارسال یکنواخت و پایدار فریمها را با همگامسازی زمان بین آنها تضمین میکند، که منجر به کاهش لرزش و انیمیشنهای ناهموار میشود. برای بازیهایی که ناپایداری در زمانبندی فریمها یا میکرو لرزش در حین بازی دارند ایدهآل است</string>
|
||||
<string name="renderer_early_release_fences">رهاسازی حصارها زودتر</string>
|
||||
<string name="renderer_early_release_fences_description">به رفع مشکل 0 فریم بر ثانیه در بازیهایی مانند DKCR:HD، Subnautica Below Zero و Ori 2 کمک میکند، اما ممکن است بارگذاری یا عملکرد بازیهای Unreal Engine را مختل کند.</string>
|
||||
<string name="buffer_reorder_disable">غیرفعال کردن مرتبسازی مجدد بافر</string>
|
||||
<string name="buffer_reorder_disable_description">در صورت انتخاب، مرتبسازی مجدد آپلودهای حافظه نگاشتشده غیرفعال میشود که امکان ارتباط آپلودها با ترسیمات خاص را فراهم میکند. ممکن است در برخی موارد عملکرد را کاهش دهد.</string>
|
||||
<string name="use_lru_cache">فعالسازی حافظه نهان LRU</string>
|
||||
|
|
|
@ -76,6 +76,8 @@
|
|||
<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_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_description">Résout les problèmes de 0 FPS dans des jeux comme DKCR:HD, Subnautica Below Zero et Ori 2, mais peut perturber le chargement ou les performances des jeux Unreal Engine.</string>
|
||||
<string name="buffer_reorder_disable">Désactiver le réordonnancement du tampon</string>
|
||||
<string name="buffer_reorder_disable_description">Lorsqu\'il est coché, désactive le réordonnancement des téléchargements de mémoire mappée, permettant d\'associer les téléchargements à des dessins spécifiques. Peut réduire les performances dans certains cas.</string>
|
||||
<string name="use_lru_cache">Activer le cache LRU</string>
|
||||
|
|
|
@ -76,6 +76,8 @@
|
|||
<string name="frame_skipping_description">החלף דילוג על פריימים כדי לשפר ביצועים על ידי הפחתת מספר הפריימים המוצגים. תכונה זו עדיין בפיתוח ותופעל בגרסאות עתידיות.</string>
|
||||
<string name="frame_interpolation">סנכרון פריימים מתקדם</string>
|
||||
<string name="frame_interpolation_description">מבטיח אספקה חלקה ועקבית של פריימים על ידי סנכרון התזמון ביניהם, מפחית קפיצות ואנימציה לא אחידה. אידיאלי למשחקים עם בעיות בתזמון פריימים או מיקרו-קפיצות במהלך המשחק.</string>
|
||||
<string name="renderer_early_release_fences">שחרר גדרות מוקדם</string>
|
||||
<string name="renderer_early_release_fences_description">עוזר לתקן 0 FPS במשחקים כמו DKCR:HD, Subnautica Below Zero ו-Ori 2, אך עלול לפגוע בטעינה או בביצועים במשחקי Unreal Engine.</string>
|
||||
<string name="buffer_reorder_disable">השבת סידור מחדש של חוצץ</string>
|
||||
<string name="buffer_reorder_disable_description">כאשר מסומן, מבטל את סידור מחדש של העלאות זיכרון ממופה המאפשר לשייך העלאות עם ציורים ספציפיים. עלול להפחית ביצועים במקרים מסוימים.</string>
|
||||
<string name="use_lru_cache">הפעלת מטמון LRU</string>
|
||||
|
|
|
@ -76,6 +76,8 @@
|
|||
<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_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_description">Segít javítani a 0 FPS-t olyan játékokban, mint a DKCR:HD, Subnautica Below Zero és az Ori 2, de ronthatja az Unreal Engine játékok betöltését vagy teljesítményét.</string>
|
||||
<string name="buffer_reorder_disable">Puffer újrarendezés letiltása</string>
|
||||
<string name="buffer_reorder_disable_description">Ha be van jelölve, letiltja a leképezett memória feltöltéseinek újrarendezését, lehetővé téve a feltöltések összerendelését konkrét rajzolásokkal. Bizonyos esetekben csökkentheti a teljesítményt.</string>
|
||||
<string name="use_lru_cache">LRU gyorsítótár engedélyezése</string>
|
||||
|
|
|
@ -76,6 +76,8 @@
|
|||
<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_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_description">Membantu memperbaiki 0 FPS di game seperti DKCR:HD, Subnautica Below Zero dan Ori 2, tapi mungkin mengganggu loading atau performa di game Unreal Engine.</string>
|
||||
<string name="buffer_reorder_disable">Nonaktifkan Penyusunan Ulang Buffer</string>
|
||||
<string name="buffer_reorder_disable_description">Ketika dicentang, menonaktifkan penyusunan ulang unggahan memori yang dipetakan yang memungkinkan mengaitkan unggahan dengan gambar tertentu. Dapat mengurangi kinerja dalam beberapa kasus.</string>
|
||||
<string name="use_lru_cache">Aktifkan LRU Cache</string>
|
||||
|
|
|
@ -76,6 +76,8 @@
|
|||
<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_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_description">Risolve problemi di 0 FPS in giochi come DKCR:HD, Subnautica Below Zero e Ori 2, ma potrebbe compromettere caricamento o prestazioni in giochi Unreal Engine.</string>
|
||||
<string name="buffer_reorder_disable">Disabilita riordino buffer</string>
|
||||
<string name="buffer_reorder_disable_description">Se selezionato, disabilita il riordino dei caricamenti di memoria mappata consentendo di associare i caricamenti a disegni specifici. Potrebbe ridurre le prestazioni in alcuni casi.</string>
|
||||
<string name="use_lru_cache">Abilita cache LRU</string>
|
||||
|
|
|
@ -76,6 +76,8 @@
|
|||
<string name="frame_skipping_description">フレームスキップを切り替えて、レンダリングされるフレーム数を減らしパフォーマンスを向上させます。この機能は開発中であり、今後のリリースで有効になります。</string>
|
||||
<string name="frame_interpolation">高度なフレーム同期</string>
|
||||
<string name="frame_interpolation_description">フレーム間のタイミングを同期させることで、スムーズで一貫したフレーム配信を確保し、カクつきや不均一なアニメーションを軽減します。フレームタイミングの不安定さやマイクロスタッターが発生するゲームに最適です。</string>
|
||||
<string name="renderer_early_release_fences">フェンスを早期に解放</string>
|
||||
<string name="renderer_early_release_fences_description">DKCR:HD、Subnautica Below Zero、Ori 2などのゲームで0 FPSを修正しますが、Unreal Engineゲームの読み込みやパフォーマンスに影響する可能性があります。</string>
|
||||
<string name="buffer_reorder_disable">バッファの再並べ替えを無効化</string>
|
||||
<string name="buffer_reorder_disable_description">チェック時、マップされたメモリのアップロードの再並べ替えを無効化し、特定の描画に関連付けることができます。場合によってはパフォーマンスが低下する可能性があります。</string>
|
||||
<string name="use_lru_cache">LRUキャッシュを有効化</string>
|
||||
|
|
|
@ -76,6 +76,8 @@
|
|||
<string name="frame_skipping_description">렌더링되는 프레임 수를 줄여 성능을 향상시키기 위해 프레임 스킵을 전환합니다. 이 기능은 현재 개발 중이며 향후 출시 버전에서 활성화될 예정입니다.</string>
|
||||
<string name="frame_interpolation">향상된 프레임 페이싱</string>
|
||||
<string name="frame_interpolation_description">프레임 간 타이밍을 동기화하여 부드럽고 일관된 프레임 전달을 보장하며, 끊김과 불균일한 애니메이션을 줄입니다. 프레임 타이밍 불안정이나 게임 플레이 중 미세 끊김이 발생하는 게임에 이상적입니다.</string>
|
||||
<string name="renderer_early_release_fences">펜스 조기 해제</string>
|
||||
<string name="renderer_early_release_fences_description">DKCR:HD, Subnautica Below Zero, Ori 2 등의 게임에서 0 FPS 현상을 해결하지만, Unreal Engine 게임의 로딩이나 성능에 문제를 일으킬 수 있습니다.</string>
|
||||
<string name="buffer_reorder_disable">버퍼 재정렬 비활성화</string>
|
||||
<string name="buffer_reorder_disable_description">체크 시, 매핑된 메모리 업로드의 재정렬을 비활성화하여 특정 그리기와 업로드를 연결할 수 있습니다. 경우에 따라 성능이 저하될 수 있습니다.</string>
|
||||
<string name="use_lru_cache">LRU 캐시 사용</string>
|
||||
|
|
|
@ -76,6 +76,8 @@
|
|||
<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_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_description">Løser 0 FPS i spill som DKCR:HD, Subnautica Below Zero og Ori 2, men kan forårsake problemer med lasting eller ytelse i Unreal Engine-spill.</string>
|
||||
<string name="buffer_reorder_disable">Deaktiver bufferomorganisering</string>
|
||||
<string name="buffer_reorder_disable_description">Når merket, deaktiveres omorganisering av kartlagt minneopplasting som tillater å knytte opplastinger til spesifikke tegninger. Kan redusere ytelsen i noen tilfeller.</string>
|
||||
<string name="use_lru_cache">Aktiver LRU-mellomlager</string>
|
||||
|
|
|
@ -226,6 +226,64 @@
|
|||
<color name="yuzu_inversePrimary_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 -->
|
||||
<color name="yuzu_transparent_black">#80000000</color>
|
||||
<color name="yuzu_outlineVariant">#C6C5D0</color>
|
||||
|
|
|
@ -76,6 +76,8 @@
|
|||
<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_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_description">Pomaga naprawić 0 FPS w grach takich jak DKCR:HD, Subnautica Below Zero i Ori 2, ale może zaburzyć ładowanie lub wydajność w grach Unreal Engine.</string>
|
||||
<string name="buffer_reorder_disable">Wyłącz przestawianie bufora</string>
|
||||
<string name="buffer_reorder_disable_description">Po zaznaczeniu wyłącza przestawianie załadowań zmapowanej pamięci, umożliwiając powiązanie załadowań z konkretnymi rysunkami. Może zmniejszyć wydajność w niektórych przypadkach.</string>
|
||||
<string name="use_lru_cache">Włącz pamięć podręczną LRU</string>
|
||||
|
|
|
@ -76,6 +76,8 @@
|
|||
<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_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_description">Ajuda a corrigir 0 FPS em jogos como DKCR:HD, Subnautica Below Zero e Ori 2, mas pode prejudicar carregamento ou desempenho em jogos Unreal Engine.</string>
|
||||
<string name="buffer_reorder_disable">Desativar reorganização de buffer</string>
|
||||
<string name="buffer_reorder_disable_description">Quando marcado, desativa a reorganização de carregamentos de memória mapeada que permite associar carregamentos a desenhos específicos. Pode reduzir o desempenho em alguns casos.</string>
|
||||
<string name="use_lru_cache">Ativar cache LRU</string>
|
||||
|
|
|
@ -76,6 +76,8 @@
|
|||
<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_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_description">Ajuda a corrigir 0 FPS em jogos como DKCR:HD, Subnautica Below Zero e Ori 2, mas pode afetar carregamento ou desempenho em jogos Unreal Engine.</string>
|
||||
<string name="buffer_reorder_disable">Desativar reordenação de buffer</string>
|
||||
<string name="buffer_reorder_disable_description">Quando assinalado, desativa a reordenação de carregamentos de memória mapeada, permitindo associar carregamentos a desenhos específicos. Pode reduzir o desempenho nalguns casos.</string>
|
||||
<string name="use_lru_cache">Ativar cache LRU</string>
|
||||
|
|
|
@ -76,6 +76,8 @@
|
|||
<string name="enable_raii_description">Метод автоматического управления ресурсами в Vulkan, который обеспечивает правильное освобождение ресурсов при их ненадобности, но может вызывать сбои в бандл-играх.</string>
|
||||
<string name="frame_interpolation">Улучшенная синхронизация кадров</string>
|
||||
<string name="frame_interpolation_description">Обеспечивает плавную и стабильную подачу кадров за счет синхронизации их времени, уменьшая подтормаживания и неравномерную анимацию. Идеально для игр с нестабильным временем кадров или микро-подтормаживаниями во время игры.</string>
|
||||
<string name="renderer_early_release_fences">Ранний релиз ограждений</string>
|
||||
<string name="renderer_early_release_fences_description">Помогает исправить 0 FPS в играх типа DKCR:HD, Subnautica Below Zero и Ori 2, но может нарушить загрузку или производительность в играх на Unreal Engine.</string>
|
||||
<string name="buffer_reorder_disable">Отключить переупорядочивание буфера</string>
|
||||
<string name="buffer_reorder_disable_description">При включении отключает переупорядочивание загрузки отображенной памяти, позволяя связывать загрузки с конкретными отрисовками. В некоторых случаях может снизить производительность.</string>
|
||||
<string name="use_lru_cache">Включить LRU-кеш</string>
|
||||
|
|
|
@ -85,6 +85,8 @@
|
|||
<string name="enable_raii_description">Метод аутоматског управљања ресурсима у Vulkan-у који осигурава правилно ослобађање ресурса када више нису потребни, али може изазвати падове у пакованим играма.</string>
|
||||
<string name="frame_interpolation">Побољшани оквирни пејсинг</string>
|
||||
<string name="frame_interpolation_description">Осигурава глатку и доследан испоруку оквира синхронизацијом времена између оквира, смањење муцања и неуједначене анимације. Идеално за игре које доживљавају временски оквир нестабилност или микро-штитнике током играња.</string>
|
||||
<string name="renderer_early_release_fences">Ranije oslobađanje ograda</string>
|
||||
<string name="renderer_early_release_fences_description">Pomaže u popravci 0 FPS u igrama kao što su DKCR:HD, Subnautica Below Zero i Ori 2, ali može oštetiti učitavanje ili performanse u Unreal Engine igrama.</string>
|
||||
<string name="buffer_reorder_disable">Онемогући преуређивање бафера</string>
|
||||
<string name="buffer_reorder_disable_description">Када је означено, онемогућава преуређивање учитавања мапиране меморије што омогућава повезивање учитавања са одређеним цртањима. Може у неким случајевима смањити перформансе.</string>
|
||||
<string name="use_auto_stub">Користите ауто-стуб</string>
|
||||
|
|
|
@ -76,6 +76,8 @@
|
|||
<string name="frame_skipping_description">Увімкніть або вимкніть пропуск кадрів для покращення продуктивності за рахунок зменшення кількості візуалізованих кадрів. Ця функція ще розробляється та буде доступна у майбутніх версіях.</string>
|
||||
<string name="frame_interpolation">Покращена синхронізація кадрів</string>
|
||||
<string name="frame_interpolation_description">Забезпечує плавну та стабільну подачу кадрів шляхом синхронізації їх часу, зменшуючи підвисання та нерівномірну анімацію. Ідеально для ігор з нестабільним часом кадрів або мікро-підвисаннями під час гри.</string>
|
||||
<string name="renderer_early_release_fences">Release fences early</string>
|
||||
<string name="renderer_early_release_fences_description">Це налаштування може бути необхідним для виправлення помилок 0FPS у деяких іграх (зокрема DKCR:HD, Subnautica та Ori 2). Водночас інші ігри, особливо створені на рушії Unreal Engine, можуть працювати некоректно або взагалі не запускатися.</string>
|
||||
<string name="buffer_reorder_disable">Вимкнути переупорядкування буфера</string>
|
||||
<string name="buffer_reorder_disable_description">Якщо позначено, вимикає переупорядкування завантажень відображеної пам\'яті, що дозволяє пов\'язувати завантаження з конкретними малюваннями. Може знизити продуктивність у деяких випадках.</string>
|
||||
<string name="use_lru_cache">Увімкнути LRU-кеш</string>
|
||||
|
|
|
@ -76,6 +76,8 @@
|
|||
<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_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_description">Giúp sửa lỗi 0 FPS trong các trò chơi như DKCR:HD, Subnautica Below Zero và Ori 2, nhưng có thể ảnh hưởng đến tải hoặc hiệu suất trong trò chơi Unreal Engine.</string>
|
||||
<string name="buffer_reorder_disable">Tắt sắp xếp lại bộ đệm</string>
|
||||
<string name="buffer_reorder_disable_description">Khi được chọn, sẽ tắt tính năng sắp xếp lại các lần tải lên bộ nhớ đã ánh xạ, cho phép liên kết các lần tải lên với các bản vẽ cụ thể. Có thể làm giảm hiệu suất trong một số trường hợp.</string>
|
||||
<string name="use_lru_cache">Bật bộ nhớ đệm LRU</string>
|
||||
|
|
|
@ -75,6 +75,8 @@
|
|||
<string name="frame_skipping_description">启用或禁用跳帧以减少渲染帧数,提高性能。此功能仍在开发中,将在未来版本中启用。</string>
|
||||
<string name="frame_interpolation">增强帧同步</string>
|
||||
<string name="frame_interpolation_description">通过同步帧间时间确保流畅一致的帧交付,减少卡顿和不均匀动画。适合存在帧时间不稳定或游戏过程中出现微卡顿的游戏。</string>
|
||||
<string name="renderer_early_release_fences">提前释放围栏</string>
|
||||
<string name="renderer_early_release_fences_description">可修复《大金刚国度:热带寒流》《深海迷航:零度之下》和《奥日2》等游戏中的0 FPS问题,但可能影响Unreal Engine游戏的加载或性能。</string>
|
||||
<string name="buffer_reorder_disable">禁用缓冲重排序</string>
|
||||
<string name="buffer_reorder_disable_description">勾选时,禁用映射内存上传的重排序功能,允许将上传与特定绘制关联。在某些情况下可能会降低性能。</string>
|
||||
<string name="use_lru_cache">启用LRU缓存</string>
|
||||
|
|
|
@ -76,6 +76,8 @@
|
|||
<string name="frame_skipping_description">啟用或停用跳幀以減少渲染幀數,提高效能。此功能仍在開發中,將在未來版本中啟用。</string>
|
||||
<string name="frame_interpolation">增強幀同步</string>
|
||||
<string name="frame_interpolation_description">通過同步幀間時間確保流暢一致的幀交付,減少卡頓和不均勻動畫。適合存在幀時間不穩定或遊戲過程中出現微卡頓的遊戲。</string>
|
||||
<string name="renderer_early_release_fences">提前釋放圍欄</string>
|
||||
<string name="renderer_early_release_fences_description">可修復《大金剛國度:熱帶寒流》《深海迷航:零度之下》和《奧日2》等遊戲中的0 FPS問題,但可能影響Unreal Engine遊戲的載入或效能。</string>
|
||||
<string name="buffer_reorder_disable">停用緩衝區重新排序</string>
|
||||
<string name="buffer_reorder_disable_description">勾選時,停用映射記憶體上傳的重新排序功能,允許將上傳與特定繪製關聯。某些情況下可能會降低效能。</string>
|
||||
<string name="use_lru_cache">啟用LRU快取</string>
|
||||
|
|
|
@ -1,84 +0,0 @@
|
|||
<?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">#333333</color> <!-- Subtle border -->
|
||||
<color name="eden_border_light">#555555</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">#00FF0080</color>
|
||||
<color name="eden_secondary_transparent">#0000FFFF</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>
|
|
@ -88,6 +88,8 @@
|
|||
<string name="enable_raii_description">A method of automatic resource management in Vulkan that ensures proper release of resources when they are no longer needed, but may cause crashes in bundled games.</string>
|
||||
<string name="frame_interpolation">Enhanced Frame Pacing</string>
|
||||
<string name="frame_interpolation_description">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.</string>
|
||||
<string name="renderer_early_release_fences">Release Fences Early</string>
|
||||
<string name="renderer_early_release_fences_description">Helps fix 0 FPS in games like DKCR:HD, Subnautica Below Zero and Ori 2, but may break loading or performance in Unreal Engine games.</string>
|
||||
<string name="buffer_reorder_disable">Disable Buffer Reorder</string>
|
||||
<string name="buffer_reorder_disable_description">When checked, disables reordering of mapped memory uploads which allows to associate uploads with specific draws. May reduce performance in some cases.</string>
|
||||
|
||||
|
@ -95,7 +97,7 @@
|
|||
<string name="use_sync_core">Synchronize Core Speed</string>
|
||||
<string name="use_sync_core_description">Synchronize the core tick speed to the maximum speed percentage to improve performance without altering the game\'s actual speed.</string>
|
||||
<string name="use_lru_cache">Enable LRU Cache</string>
|
||||
<string name="use_lru_cache_description">Enable or disable the Least Recently Used (LRU) cache, increasing performance by saving CPU process usage. Some games have issues with it, notably TotK 1.2.1, so disable if the game doesn\'t boot or crashes randomly.</string>
|
||||
<string name="use_lru_cache_description">Enable or disable the Least Recently Used (LRU) cache, increasing performance by saving CPU process usage. Some games may see issues with this setting, so disable it if the game doesn\'t boot or crashes randomly.</string>
|
||||
<string name="use_fast_cpu_time">Fast CPU Time</string>
|
||||
<string name="use_fast_cpu_time_description">Forces the emulated CPU to run at a higher clock, reducing certain FPS limiters. This option is hacky and may cause issues, and weaker CPUs may see reduced performance.</string>
|
||||
<string name="custom_cpu_ticks">Custom CPU Ticks</string>
|
||||
|
@ -438,9 +440,10 @@
|
|||
<string name="user_data_import_success">User data imported successfully</string>
|
||||
<string name="user_data_export_cancelled">Export cancelled</string>
|
||||
<string name="user_data_import_failed_description">Make sure the user data folders are at the root of the zip folder and contain a config file at config/config.ini and try again.</string>
|
||||
<string name="support_link">https://discord.gg/edenemu</string>
|
||||
<string name="website_link">https://eden-emulator.github.io</string>
|
||||
<string name="github_link">https://git.eden-emu.dev/eden-emu</string>
|
||||
<string name="discord_link" translatable="false">https://discord.gg/kXAmGCXBGD</string>
|
||||
<string name="revolt_link" translatable="false">https://rvlt.gg/qKgFEAbH</string>
|
||||
<string name="website_link" translatable="false">https://eden-emu.dev</string>
|
||||
<string name="github_link" translatable="false">https://git.eden-emu.dev/eden-emu</string>
|
||||
|
||||
<!-- General settings strings -->
|
||||
<string name="frame_limit_enable">Limit speed</string>
|
||||
|
|
|
@ -64,7 +64,7 @@
|
|||
<item name="android:windowLightStatusBar">false</item>
|
||||
<item name="android:windowLightNavigationBar">false</item>
|
||||
<!-- Other theme attributes -->
|
||||
<item name="android:shadowColor">@color/eden_overlay_dark</item>
|
||||
<item name="android:shadowColor">@color/eden_overlay</item>
|
||||
<item name="sliderStyle">@style/EdenSlider</item>
|
||||
<item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>
|
||||
<item name="android:enforceStatusBarContrast">false</item>
|
||||
|
|
|
@ -221,6 +221,64 @@
|
|||
<color name="yuzu_inversePrimary_gray">#BDBDBD</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 -->
|
||||
<color name="yuzu_outlineVariant">#C6C5D0</color>
|
||||
<color name="yuzu_error">#BA1A1A</color>
|
||||
|
@ -230,7 +288,8 @@
|
|||
<color name="yuzu_shadow">#000000</color>
|
||||
<color name="yuzu_scrim">#000000</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_onSecondary_blue">#FFFFFF</color>
|
||||
<color name="yuzu_onTertiary_blue">#FFFFFF</color>
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
|
@ -9,13 +12,10 @@
|
|||
#include "audio_core/common/common.h"
|
||||
#include "audio_core/sink/sink.h"
|
||||
#include "common/logging/log.h"
|
||||
#include "common/microprofile.h"
|
||||
#include "common/thread.h"
|
||||
#include "core/core.h"
|
||||
#include "core/core_timing.h"
|
||||
|
||||
MICROPROFILE_DEFINE(Audio_Renderer, "Audio", "DSP_AudioRenderer", MP_RGB(60, 19, 97));
|
||||
|
||||
namespace AudioCore::ADSP::AudioRenderer {
|
||||
|
||||
AudioRenderer::AudioRenderer(Core::System& system_, Sink::Sink& sink_)
|
||||
|
@ -131,7 +131,6 @@ void AudioRenderer::CreateSinkStreams() {
|
|||
|
||||
void AudioRenderer::Main(std::stop_token stop_token) {
|
||||
static constexpr char name[]{"DSP_AudioRenderer_Main"};
|
||||
MicroProfileOnThreadCreate(name);
|
||||
Common::SetCurrentThreadName(name);
|
||||
Common::SetCurrentThreadPriority(Common::ThreadPriority::High);
|
||||
|
||||
|
@ -203,7 +202,6 @@ void AudioRenderer::Main(std::stop_token stop_token) {
|
|||
|
||||
// Process the command list
|
||||
{
|
||||
MICROPROFILE_SCOPE(Audio_Renderer);
|
||||
render_times_taken[index] =
|
||||
command_list_processor.Process(index) - start_time;
|
||||
}
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
|
@ -10,13 +13,10 @@
|
|||
#include "audio_core/audio_core.h"
|
||||
#include "audio_core/common/common.h"
|
||||
#include "common/logging/log.h"
|
||||
#include "common/microprofile.h"
|
||||
#include "common/thread.h"
|
||||
#include "core/core.h"
|
||||
#include "core/core_timing.h"
|
||||
|
||||
MICROPROFILE_DEFINE(OpusDecoder, "Audio", "DSP_OpusDecoder", MP_RGB(60, 19, 97));
|
||||
|
||||
namespace AudioCore::ADSP::OpusDecoder {
|
||||
|
||||
namespace {
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
|
@ -6,14 +9,10 @@
|
|||
#include "audio_core/adsp/adsp.h"
|
||||
#include "audio_core/audio_core.h"
|
||||
#include "audio_core/renderer/system_manager.h"
|
||||
#include "common/microprofile.h"
|
||||
#include "common/thread.h"
|
||||
#include "core/core.h"
|
||||
#include "core/core_timing.h"
|
||||
|
||||
MICROPROFILE_DEFINE(Audio_RenderSystemManager, "Audio", "Render System Manager",
|
||||
MP_RGB(60, 19, 97));
|
||||
|
||||
namespace AudioCore::Renderer {
|
||||
|
||||
SystemManager::SystemManager(Core::System& core_)
|
||||
|
@ -80,15 +79,12 @@ bool SystemManager::Remove(System& system_) {
|
|||
|
||||
void SystemManager::ThreadFunc(std::stop_token stop_token) {
|
||||
static constexpr char name[]{"AudioRenderSystemManager"};
|
||||
MicroProfileOnThreadCreate(name);
|
||||
Common::SetCurrentThreadName(name);
|
||||
Common::SetCurrentThreadPriority(Common::ThreadPriority::High);
|
||||
while (active && !stop_token.stop_requested()) {
|
||||
{
|
||||
std::scoped_lock l{mutex1};
|
||||
|
||||
MICROPROFILE_SCOPE(Audio_RenderSystemManager);
|
||||
|
||||
for (auto system : systems) {
|
||||
system->SendCommandToDsp();
|
||||
}
|
||||
|
|
|
@ -95,9 +95,6 @@ add_library(
|
|||
math_util.h
|
||||
memory_detect.cpp
|
||||
memory_detect.h
|
||||
microprofile.cpp
|
||||
microprofile.h
|
||||
microprofileui.h
|
||||
multi_level_page_table.cpp
|
||||
multi_level_page_table.h
|
||||
nvidia_flags.cpp
|
||||
|
@ -162,7 +159,8 @@ add_library(
|
|||
wall_clock.cpp
|
||||
wall_clock.h
|
||||
zstd_compression.cpp
|
||||
zstd_compression.h)
|
||||
zstd_compression.h
|
||||
)
|
||||
|
||||
if(YUZU_ENABLE_PORTABLE)
|
||||
add_compile_definitions(YUZU_ENABLE_PORTABLE)
|
||||
|
@ -263,7 +261,7 @@ if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
|
|||
)
|
||||
endif()
|
||||
|
||||
target_link_libraries(common PUBLIC Boost::headers fmt::fmt microprofile
|
||||
target_link_libraries(common PUBLIC Boost::headers fmt::fmt
|
||||
stb::headers Threads::Threads)
|
||||
target_link_libraries(common PRIVATE lz4::lz4 zstd::zstd LLVM::Demangle)
|
||||
|
||||
|
|
|
@ -1,6 +0,0 @@
|
|||
// SPDX-FileCopyrightText: 2015 Citra Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
// Includes the MicroProfile implementation in this file for compilation
|
||||
#define MICROPROFILE_IMPL 1
|
||||
#include "common/microprofile.h"
|
|
@ -1,24 +0,0 @@
|
|||
// SPDX-FileCopyrightText: 2015 Citra Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#pragma once
|
||||
|
||||
// Uncomment this to disable microprofile. This will get you cleaner profiles when using
|
||||
// external sampling profilers like "Very Sleepy", and will improve performance somewhat.
|
||||
// #define MICROPROFILE_ENABLED 0
|
||||
|
||||
// Customized Citra settings.
|
||||
// This file wraps the MicroProfile header so that these are consistent everywhere.
|
||||
#define MICROPROFILE_WEBSERVER 0
|
||||
#define MICROPROFILE_GPU_TIMERS 0 // TODO: Implement timer queries when we upgrade to OpenGL 3.3
|
||||
#define MICROPROFILE_CONTEXT_SWITCH_TRACE 0
|
||||
#define MICROPROFILE_PER_THREAD_BUFFER_SIZE (2048 << 13) // 16 MB
|
||||
|
||||
#ifdef _WIN32
|
||||
// This isn't defined by the standard library in MSVC2015
|
||||
typedef void* HANDLE;
|
||||
#endif
|
||||
|
||||
#include <microprofile.h>
|
||||
|
||||
#define MP_RGB(r, g, b) ((r) << 16 | (g) << 8 | (b) << 0)
|
|
@ -1,18 +0,0 @@
|
|||
// SPDX-FileCopyrightText: 2015 Citra Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "common/microprofile.h"
|
||||
|
||||
// Customized Citra settings.
|
||||
// This file wraps the MicroProfile header so that these are consistent everywhere.
|
||||
#define MICROPROFILE_TEXT_WIDTH 6
|
||||
#define MICROPROFILE_TEXT_HEIGHT 12
|
||||
#define MICROPROFILE_HELP_ALT "Right-Click"
|
||||
#define MICROPROFILE_HELP_MOD "Ctrl"
|
||||
|
||||
// This isn't included by microprofileui.h :(
|
||||
#include <cstdlib> // For std::abs
|
||||
|
||||
#include <microprofileui.h>
|
|
@ -457,6 +457,15 @@ struct Values {
|
|||
Specialization::Default,
|
||||
true,
|
||||
true};
|
||||
#ifdef ANDROID
|
||||
SwitchableSetting<bool> early_release_fences{linkage,
|
||||
false,
|
||||
"early_release_fences",
|
||||
Category::RendererAdvanced,
|
||||
Specialization::Default,
|
||||
true,
|
||||
true};
|
||||
#endif
|
||||
|
||||
SwitchableSetting<bool> async_presentation{linkage,
|
||||
#ifdef ANDROID
|
||||
|
|
|
@ -47,7 +47,6 @@ constexpr std::bitset<32> BuildRegSet(std::initializer_list<Xbyak::Reg> regs) {
|
|||
constexpr inline std::bitset<32> ABI_ALL_GPRS(0x0000FFFF);
|
||||
constexpr inline std::bitset<32> ABI_ALL_XMMS(0xFFFF0000);
|
||||
|
||||
constexpr inline Xbyak::Reg ABI_JIT_REG = Xbyak::util::rbx;
|
||||
#ifdef _WIN32
|
||||
|
||||
// Microsoft x64 ABI
|
||||
|
|
|
@ -136,7 +136,6 @@ public:
|
|||
case Dynarmic::A64::Exception::SendEvent:
|
||||
case Dynarmic::A64::Exception::SendEventLocal:
|
||||
case Dynarmic::A64::Exception::Yield:
|
||||
LOG_TRACE(Core_ARM, "ExceptionRaised(exception = {}, pc = {:08X}, code = {:08X})", static_cast<std::size_t>(exception), pc, m_memory.Read32(pc));
|
||||
return;
|
||||
case Dynarmic::A64::Exception::NoExecuteFault:
|
||||
LOG_CRITICAL(Core_ARM, "Cannot execute instruction at unmapped address {:#016x}", pc);
|
||||
|
@ -145,10 +144,12 @@ public:
|
|||
default:
|
||||
if (m_debugger_enabled) {
|
||||
ReturnException(pc, InstructionBreakpoint);
|
||||
} else {
|
||||
m_parent.LogBacktrace(m_process);
|
||||
LOG_CRITICAL(Core_ARM, "ExceptionRaised(exception = {}, pc = {:08X}, code = {:08X})", static_cast<std::size_t>(exception), pc, m_memory.Read32(pc));
|
||||
return;
|
||||
}
|
||||
|
||||
m_parent.LogBacktrace(m_process);
|
||||
LOG_CRITICAL(Core_ARM, "ExceptionRaised(exception = {}, pc = {:08X}, code = {:08X})",
|
||||
static_cast<std::size_t>(exception), pc, m_memory.Read32(pc));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -16,6 +16,24 @@
|
|||
#include "core/hle/kernel/physical_memory.h"
|
||||
#include "lru_cache.h"
|
||||
#include <utility>
|
||||
using ModuleID = std::array<u8, 32>; // NSO build ID
|
||||
struct PatchCacheKey {
|
||||
ModuleID module_id;
|
||||
uintptr_t offset;
|
||||
bool operator==(const PatchCacheKey&) const = default;
|
||||
};
|
||||
|
||||
template <>
|
||||
struct std::hash<PatchCacheKey> {
|
||||
size_t operator()(const PatchCacheKey& key) const {
|
||||
// Simple XOR hash of first few bytes
|
||||
size_t hash = 0;
|
||||
for (size_t i = 0; i < key.module_id.size(); ++i) {
|
||||
hash ^= static_cast<size_t>(key.module_id[i]) << ((i % sizeof(size_t)) * 8);
|
||||
}
|
||||
return hash ^ std::hash<uintptr_t>{}(key.offset);
|
||||
}
|
||||
};
|
||||
|
||||
namespace Core::NCE {
|
||||
|
||||
|
@ -31,13 +49,15 @@ using EntryTrampolines = std::unordered_map<ModuleTextAddress, PatchTextAddress>
|
|||
|
||||
class Patcher {
|
||||
public:
|
||||
void SetModuleID(const ModuleID& id) {
|
||||
module_id = id;
|
||||
}
|
||||
Patcher(const Patcher&) = delete;
|
||||
Patcher& operator=(const Patcher&) = delete;
|
||||
Patcher(Patcher&& other) noexcept;
|
||||
Patcher& operator=(Patcher&&) noexcept = delete;
|
||||
explicit Patcher();
|
||||
~Patcher();
|
||||
|
||||
bool PatchText(const Kernel::PhysicalMemory& program_image,
|
||||
const Kernel::CodeSet::Segment& code);
|
||||
bool RelocateAndCopy(Common::ProcessAddress load_base, const Kernel::CodeSet::Segment& code,
|
||||
|
@ -50,7 +70,7 @@ public:
|
|||
|
||||
private:
|
||||
using ModuleDestLabel = uintptr_t;
|
||||
|
||||
ModuleID module_id{};
|
||||
struct Trampoline {
|
||||
ptrdiff_t patch_offset;
|
||||
uintptr_t module_offset;
|
||||
|
@ -68,26 +88,25 @@ private:
|
|||
|
||||
private:
|
||||
static constexpr size_t CACHE_SIZE = 16384; // Cache size for patch entries
|
||||
LRUCache<uintptr_t, PatchTextAddress> patch_cache{CACHE_SIZE, Settings::values.lru_cache_enabled.GetValue()};
|
||||
LRUCache<PatchCacheKey, PatchTextAddress> patch_cache{CACHE_SIZE, Settings::values.lru_cache_enabled.GetValue()};
|
||||
|
||||
void BranchToPatch(uintptr_t module_dest) {
|
||||
if (patch_cache.isEnabled()) {
|
||||
LOG_DEBUG(Core_ARM, "LRU cache lookup for address {:#x}", module_dest);
|
||||
PatchCacheKey key{module_id, module_dest};
|
||||
LOG_DEBUG(Core_ARM, "LRU cache lookup for module={}, offset={:#x}", fmt::ptr(module_id.data()), module_dest);
|
||||
// Try to get existing patch entry from cache
|
||||
if (auto* cached_patch = patch_cache.get(module_dest)) {
|
||||
LOG_WARNING(Core_ARM, "LRU cache hit for address {:#x}", module_dest);
|
||||
if (auto* cached_patch = patch_cache.get(key)) {
|
||||
LOG_WARNING(Core_ARM, "LRU cache hit for module offset {:#x}", module_dest);
|
||||
curr_patch->m_branch_to_patch_relocations.push_back({c.offset(), *cached_patch});
|
||||
return;
|
||||
}
|
||||
LOG_DEBUG(Core_ARM, "LRU cache miss for address {:#x}, creating new patch", module_dest);
|
||||
|
||||
// If not in cache, create new entry and cache it
|
||||
LOG_DEBUG(Core_ARM, "LRU cache miss for module offset {:#x}, creating new patch", module_dest);
|
||||
// Not in cache: create and store
|
||||
const auto patch_addr = c.offset();
|
||||
curr_patch->m_branch_to_patch_relocations.push_back({patch_addr, module_dest});
|
||||
patch_cache.put(module_dest, patch_addr);
|
||||
patch_cache.put(key, patch_addr);
|
||||
} else {
|
||||
LOG_DEBUG(Core_ARM, "LRU cache disabled - creating direct patch for address {:#x}", module_dest);
|
||||
// LRU disabled - use pre-LRU approach
|
||||
LOG_DEBUG(Core_ARM, "LRU cache disabled - direct patch for offset {:#x}", module_dest);
|
||||
curr_patch->m_branch_to_patch_relocations.push_back({c.offset(), module_dest});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -9,7 +9,6 @@
|
|||
#include "audio_core/audio_core.h"
|
||||
#include "common/fs/fs.h"
|
||||
#include "common/logging/log.h"
|
||||
#include "common/microprofile.h"
|
||||
#include "common/settings.h"
|
||||
#include "common/settings_enums.h"
|
||||
#include "common/string_util.h"
|
||||
|
@ -63,11 +62,6 @@
|
|||
#include "video_core/renderer_base.h"
|
||||
#include "video_core/video_core.h"
|
||||
|
||||
MICROPROFILE_DEFINE(ARM_CPU0, "ARM", "CPU 0", MP_RGB(255, 64, 64));
|
||||
MICROPROFILE_DEFINE(ARM_CPU1, "ARM", "CPU 1", MP_RGB(255, 64, 64));
|
||||
MICROPROFILE_DEFINE(ARM_CPU2, "ARM", "CPU 2", MP_RGB(255, 64, 64));
|
||||
MICROPROFILE_DEFINE(ARM_CPU3, "ARM", "CPU 3", MP_RGB(255, 64, 64));
|
||||
|
||||
namespace Core {
|
||||
|
||||
FileSys::VirtualFile GetGameFileFromPath(const FileSys::VirtualFilesystem& vfs,
|
||||
|
@ -289,13 +283,6 @@ struct System::Impl {
|
|||
exit_locked = false;
|
||||
exit_requested = false;
|
||||
|
||||
#if MICROPROFILE_ENABLED
|
||||
microprofile_cpu[0] = MICROPROFILE_TOKEN(ARM_CPU0);
|
||||
microprofile_cpu[1] = MICROPROFILE_TOKEN(ARM_CPU1);
|
||||
microprofile_cpu[2] = MICROPROFILE_TOKEN(ARM_CPU2);
|
||||
microprofile_cpu[3] = MICROPROFILE_TOKEN(ARM_CPU3);
|
||||
#endif
|
||||
|
||||
if (Settings::values.enable_renderdoc_hotkey) {
|
||||
renderdoc_api = std::make_unique<Tools::RenderdocAPI>();
|
||||
}
|
||||
|
@ -575,9 +562,6 @@ struct System::Impl {
|
|||
std::stop_source stop_event;
|
||||
|
||||
std::array<u64, Core::Hardware::NUM_CPU_CORES> dynarmic_ticks{};
|
||||
#if MICROPROFILE_ENABLED
|
||||
std::array<MicroProfileToken, Core::Hardware::NUM_CPU_CORES> microprofile_cpu{};
|
||||
#endif
|
||||
|
||||
std::array<Core::GPUDirtyMemoryManager, Core::Hardware::NUM_CPU_CORES>
|
||||
gpu_dirty_memory_managers;
|
||||
|
@ -956,18 +940,6 @@ void System::RegisterHostThread() {
|
|||
impl->kernel.RegisterHostThread();
|
||||
}
|
||||
|
||||
#if MICROPROFILE_ENABLED
|
||||
void System::EnterCPUProfile() {
|
||||
std::size_t core = impl->kernel.GetCurrentHostThreadID();
|
||||
impl->dynarmic_ticks[core] = MicroProfileEnter(impl->microprofile_cpu[core]);
|
||||
}
|
||||
|
||||
void System::ExitCPUProfile() {
|
||||
std::size_t core = impl->kernel.GetCurrentHostThreadID();
|
||||
MicroProfileLeave(impl->microprofile_cpu[core], impl->dynarmic_ticks[core]);
|
||||
}
|
||||
#endif
|
||||
|
||||
bool System::IsMulticore() const {
|
||||
return impl->is_multicore;
|
||||
}
|
||||
|
|
|
@ -396,14 +396,6 @@ public:
|
|||
/// Register a host thread as an auxiliary thread.
|
||||
void RegisterHostThread();
|
||||
|
||||
#if MICROPROFILE_ENABLED
|
||||
/// Enter CPU Microprofile
|
||||
void EnterCPUProfile();
|
||||
|
||||
/// Exit CPU Microprofile
|
||||
void ExitCPUProfile();
|
||||
#endif
|
||||
|
||||
/// Tells if system is running on multicore.
|
||||
[[nodiscard]] bool IsMulticore() const;
|
||||
|
||||
|
|
|
@ -18,7 +18,6 @@
|
|||
#endif
|
||||
|
||||
#include "common/settings.h"
|
||||
#include "common/microprofile.h"
|
||||
#include "core/core_timing.h"
|
||||
#include "core/hardware_properties.h"
|
||||
|
||||
|
@ -56,14 +55,10 @@ CoreTiming::~CoreTiming() {
|
|||
|
||||
void CoreTiming::ThreadEntry(CoreTiming& instance) {
|
||||
static constexpr char name[] = "HostTiming";
|
||||
MicroProfileOnThreadCreate(name);
|
||||
Common::SetCurrentThreadName(name);
|
||||
Common::SetCurrentThreadPriority(Common::ThreadPriority::High);
|
||||
instance.on_thread_init();
|
||||
instance.ThreadLoop();
|
||||
#if MICROPROFILE_ENABLED
|
||||
MicroProfileOnThreadExit();
|
||||
#endif
|
||||
}
|
||||
|
||||
void CoreTiming::Initialize(std::function<void()>&& on_thread_init_) {
|
||||
|
|
|
@ -1,8 +1,10 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include "common/fiber.h"
|
||||
#include "common/microprofile.h"
|
||||
#include "common/scope_exit.h"
|
||||
#include "common/thread.h"
|
||||
#include "core/core.h"
|
||||
|
@ -192,7 +194,6 @@ void CpuManager::RunThread(std::stop_token token, std::size_t core) {
|
|||
} else {
|
||||
name = "CPUThread";
|
||||
}
|
||||
MicroProfileOnThreadCreate(name.c_str());
|
||||
Common::SetCurrentThreadName(name.c_str());
|
||||
Common::SetCurrentThreadPriority(Common::ThreadPriority::Critical);
|
||||
auto& data = core_data[core];
|
||||
|
@ -201,9 +202,6 @@ void CpuManager::RunThread(std::stop_token token, std::size_t core) {
|
|||
// Cleanup
|
||||
SCOPE_EXIT {
|
||||
data.host_context->Exit();
|
||||
#if MICROPROFILE_ENABLED
|
||||
MicroProfileOnThreadExit();
|
||||
#endif
|
||||
};
|
||||
|
||||
// Running
|
||||
|
|
|
@ -554,31 +554,32 @@ void GDBStub::HandleVCont(std::string_view command, std::vector<DebuggerAction>&
|
|||
}
|
||||
}
|
||||
|
||||
constexpr std::array<std::pair<const char*, Kernel::Svc::MemoryState>, 22> MemoryStateNames{{
|
||||
{"----- Free ------", Kernel::Svc::MemoryState::Free},
|
||||
{"Io ", Kernel::Svc::MemoryState::Io},
|
||||
{"Static ", Kernel::Svc::MemoryState::Static},
|
||||
{"Code ", Kernel::Svc::MemoryState::Code},
|
||||
{"CodeData ", Kernel::Svc::MemoryState::CodeData},
|
||||
{"Normal ", Kernel::Svc::MemoryState::Normal},
|
||||
{"Shared ", Kernel::Svc::MemoryState::Shared},
|
||||
{"AliasCode ", Kernel::Svc::MemoryState::AliasCode},
|
||||
{"AliasCodeData ", Kernel::Svc::MemoryState::AliasCodeData},
|
||||
{"Ipc ", Kernel::Svc::MemoryState::Ipc},
|
||||
{"Stack ", Kernel::Svc::MemoryState::Stack},
|
||||
{"ThreadLocal ", Kernel::Svc::MemoryState::ThreadLocal},
|
||||
{"Transferred ", Kernel::Svc::MemoryState::Transferred},
|
||||
{"SharedTransferred", Kernel::Svc::MemoryState::SharedTransferred},
|
||||
{"SharedCode ", Kernel::Svc::MemoryState::SharedCode},
|
||||
{"Inaccessible ", Kernel::Svc::MemoryState::Inaccessible},
|
||||
{"NonSecureIpc ", Kernel::Svc::MemoryState::NonSecureIpc},
|
||||
{"NonDeviceIpc ", Kernel::Svc::MemoryState::NonDeviceIpc},
|
||||
{"Kernel ", Kernel::Svc::MemoryState::Kernel},
|
||||
{"GeneratedCode ", Kernel::Svc::MemoryState::GeneratedCode},
|
||||
{"CodeOut ", Kernel::Svc::MemoryState::CodeOut},
|
||||
{"Coverage ", Kernel::Svc::MemoryState::Coverage},
|
||||
}};
|
||||
|
||||
static constexpr const char* GetMemoryStateName(Kernel::Svc::MemoryState state) {
|
||||
constexpr std::array<std::pair<const char*, Kernel::Svc::MemoryState>, 22> MemoryStateNames{{
|
||||
{"----- Free ------", Kernel::Svc::MemoryState::Free},
|
||||
{"Io ", Kernel::Svc::MemoryState::Io},
|
||||
{"Static ", Kernel::Svc::MemoryState::Static},
|
||||
{"Code ", Kernel::Svc::MemoryState::Code},
|
||||
{"CodeData ", Kernel::Svc::MemoryState::CodeData},
|
||||
{"Normal ", Kernel::Svc::MemoryState::Normal},
|
||||
{"Shared ", Kernel::Svc::MemoryState::Shared},
|
||||
{"AliasCode ", Kernel::Svc::MemoryState::AliasCode},
|
||||
{"AliasCodeData ", Kernel::Svc::MemoryState::AliasCodeData},
|
||||
{"Ipc ", Kernel::Svc::MemoryState::Ipc},
|
||||
{"Stack ", Kernel::Svc::MemoryState::Stack},
|
||||
{"ThreadLocal ", Kernel::Svc::MemoryState::ThreadLocal},
|
||||
{"Transferred ", Kernel::Svc::MemoryState::Transferred},
|
||||
{"SharedTransferred", Kernel::Svc::MemoryState::SharedTransferred},
|
||||
{"SharedCode ", Kernel::Svc::MemoryState::SharedCode},
|
||||
{"Inaccessible ", Kernel::Svc::MemoryState::Inaccessible},
|
||||
{"NonSecureIpc ", Kernel::Svc::MemoryState::NonSecureIpc},
|
||||
{"NonDeviceIpc ", Kernel::Svc::MemoryState::NonDeviceIpc},
|
||||
{"Kernel ", Kernel::Svc::MemoryState::Kernel},
|
||||
{"GeneratedCode ", Kernel::Svc::MemoryState::GeneratedCode},
|
||||
{"CodeOut ", Kernel::Svc::MemoryState::CodeOut},
|
||||
{"Coverage ", Kernel::Svc::MemoryState::Coverage},
|
||||
}};
|
||||
for (size_t i = 0; i < MemoryStateNames.size(); i++) {
|
||||
if (std::get<1>(MemoryStateNames[i]) == state) {
|
||||
return std::get<0>(MemoryStateNames[i]);
|
||||
|
@ -610,7 +611,13 @@ void GDBStub::HandleRcmd(const std::vector<u8>& command) {
|
|||
|
||||
auto* process = GetProcess();
|
||||
auto& page_table = process->GetPageTable();
|
||||
if (command_str == "fastmem" || command_str == "get fastmem") {
|
||||
|
||||
const char* commands = "Commands:\n"
|
||||
" get fastmem\n"
|
||||
" get info\n"
|
||||
" get mappings\n";
|
||||
|
||||
if (command_str == "get fastmem") {
|
||||
if (Settings::IsFastmemEnabled()) {
|
||||
const auto& impl = page_table.GetImpl();
|
||||
const auto region = reinterpret_cast<uintptr_t>(impl.fastmem_arena);
|
||||
|
@ -623,7 +630,7 @@ void GDBStub::HandleRcmd(const std::vector<u8>& command) {
|
|||
} else {
|
||||
reply = "Fastmem is not enabled.\n";
|
||||
}
|
||||
} else if (command_str == "info" || command_str == "get info") {
|
||||
} else if (command_str == "get info") {
|
||||
auto modules = Core::FindModules(process);
|
||||
|
||||
reply = fmt::format("Process: {:#x} ({})\n"
|
||||
|
@ -641,7 +648,8 @@ void GDBStub::HandleRcmd(const std::vector<u8>& command) {
|
|||
GetInteger(page_table.GetHeapRegionStart()),
|
||||
GetInteger(page_table.GetHeapRegionStart()) + page_table.GetHeapRegionSize() - 1,
|
||||
GetInteger(page_table.GetAliasCodeRegionStart()),
|
||||
GetInteger(page_table.GetAliasCodeRegionStart()) + page_table.GetAliasCodeRegionSize() - 1,
|
||||
GetInteger(page_table.GetAliasCodeRegionStart()) + page_table.GetAliasCodeRegionSize() -
|
||||
1,
|
||||
GetInteger(page_table.GetStackRegionStart()),
|
||||
GetInteger(page_table.GetStackRegionStart()) + page_table.GetStackRegionSize() - 1);
|
||||
|
||||
|
@ -649,7 +657,7 @@ void GDBStub::HandleRcmd(const std::vector<u8>& command) {
|
|||
reply += fmt::format(" {:#012x} - {:#012x} {}\n", vaddr,
|
||||
GetInteger(Core::GetModuleEnd(process, vaddr)), name);
|
||||
}
|
||||
} else if (command_str == "mappings" || command_str == "get mappings") {
|
||||
} else if (command_str == "get mappings") {
|
||||
reply = "Mappings:\n";
|
||||
VAddr cur_addr = 0;
|
||||
|
||||
|
@ -667,11 +675,15 @@ void GDBStub::HandleRcmd(const std::vector<u8>& command) {
|
|||
std::numeric_limits<u64>::max()) {
|
||||
const char* state = GetMemoryStateName(svc_mem_info.state);
|
||||
const char* perm = GetMemoryPermissionString(svc_mem_info);
|
||||
|
||||
const char l = True(svc_mem_info.attribute & MemoryAttribute::Locked) ? 'L' : '-';
|
||||
const char i = True(svc_mem_info.attribute & MemoryAttribute::IpcLocked) ? 'I' : '-';
|
||||
const char d = True(svc_mem_info.attribute & MemoryAttribute::DeviceShared) ? 'D' : '-';
|
||||
const char i =
|
||||
True(svc_mem_info.attribute & MemoryAttribute::IpcLocked) ? 'I' : '-';
|
||||
const char d =
|
||||
True(svc_mem_info.attribute & MemoryAttribute::DeviceShared) ? 'D' : '-';
|
||||
const char u = True(svc_mem_info.attribute & MemoryAttribute::Uncached) ? 'U' : '-';
|
||||
const char p =True(svc_mem_info.attribute & MemoryAttribute::PermissionLocked) ? 'P' : '-';
|
||||
const char p =
|
||||
True(svc_mem_info.attribute & MemoryAttribute::PermissionLocked) ? 'P' : '-';
|
||||
|
||||
reply += fmt::format(
|
||||
" {:#012x} - {:#012x} {} {} {}{}{}{}{} [{}, {}]\n", svc_mem_info.base_address,
|
||||
|
@ -686,8 +698,11 @@ void GDBStub::HandleRcmd(const std::vector<u8>& command) {
|
|||
|
||||
cur_addr = next_address;
|
||||
}
|
||||
} else if (command_str == "help") {
|
||||
reply = commands;
|
||||
} else {
|
||||
reply += "Commands: fastmem, info, mappings\n";
|
||||
reply = "Unknown command.\n";
|
||||
reply += commands;
|
||||
}
|
||||
|
||||
std::span<const u8> reply_span{reinterpret_cast<u8*>(&reply.front()), reply.size()};
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
|
@ -12,7 +15,6 @@
|
|||
|
||||
#include "common/assert.h"
|
||||
#include "common/logging/log.h"
|
||||
#include "common/microprofile.h"
|
||||
#include "common/scope_exit.h"
|
||||
#include "common/thread.h"
|
||||
#include "common/thread_worker.h"
|
||||
|
@ -46,8 +48,6 @@
|
|||
#include "core/hle/service/sm/sm.h"
|
||||
#include "core/memory.h"
|
||||
|
||||
MICROPROFILE_DEFINE(Kernel_SVC, "Kernel", "SVC", MP_RGB(70, 200, 70));
|
||||
|
||||
namespace Kernel {
|
||||
|
||||
struct KernelCore::Impl {
|
||||
|
@ -1278,16 +1278,6 @@ void KernelCore::ExceptionalExitApplication() {
|
|||
SuspendEmulation(true);
|
||||
}
|
||||
|
||||
#if MICROPROFILE_ENABLED
|
||||
void KernelCore::EnterSVCProfile() {
|
||||
impl->svc_ticks[CurrentPhysicalCoreIndex()] = MicroProfileEnter(MICROPROFILE_TOKEN(Kernel_SVC));
|
||||
}
|
||||
|
||||
void KernelCore::ExitSVCProfile() {
|
||||
MicroProfileLeave(MICROPROFILE_TOKEN(Kernel_SVC), impl->svc_ticks[CurrentPhysicalCoreIndex()]);
|
||||
}
|
||||
#endif
|
||||
|
||||
Init::KSlabResourceCounts& KernelCore::SlabResourceCounts() {
|
||||
return impl->slab_resource_counts;
|
||||
}
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
|
@ -271,12 +274,6 @@ public:
|
|||
|
||||
bool IsShuttingDown() const;
|
||||
|
||||
#if MICROPROFILE_ENABLED
|
||||
void EnterSVCProfile();
|
||||
|
||||
void ExitSVCProfile();
|
||||
#endif
|
||||
|
||||
/// Workaround for single-core mode when preempting threads while idle.
|
||||
bool IsPhantomModeForSingleCore() const;
|
||||
void SetIsPhantomModeForSingleCore(bool value);
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
|
@ -27,10 +30,6 @@ void PhysicalCore::RunThread(Kernel::KThread* thread) {
|
|||
interface->Initialize();
|
||||
|
||||
const auto EnterContext = [&]() {
|
||||
#if MICROPROFILE_ENABLED
|
||||
system.EnterCPUProfile();
|
||||
#endif
|
||||
|
||||
// Lock the core context.
|
||||
std::scoped_lock lk{m_guard};
|
||||
|
||||
|
@ -60,10 +59,6 @@ void PhysicalCore::RunThread(Kernel::KThread* thread) {
|
|||
// On exit, we no longer are running.
|
||||
m_arm_interface = nullptr;
|
||||
m_current_thread = nullptr;
|
||||
|
||||
#if MICROPROFILE_ENABLED
|
||||
system.ExitCPUProfile();
|
||||
#endif
|
||||
};
|
||||
|
||||
while (true) {
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
|
@ -4428,9 +4431,6 @@ void Call(Core::System& system, u32 imm) {
|
|||
|
||||
std::array<uint64_t, 8> args;
|
||||
kernel.CurrentPhysicalCore().SaveSvcArguments(process, args);
|
||||
#if MICROPROFILE_ENABLED
|
||||
kernel.EnterSVCProfile();
|
||||
#endif
|
||||
|
||||
if (process.Is64Bit()) {
|
||||
Call64(system, imm, args);
|
||||
|
@ -4438,9 +4438,6 @@ void Call(Core::System& system, u32 imm) {
|
|||
Call32(system, imm, args);
|
||||
}
|
||||
|
||||
#if MICROPROFILE_ENABLED
|
||||
kernel.ExitSVCProfile();
|
||||
#endif
|
||||
kernel.CurrentPhysicalCore().LoadSvcArguments(process, args);
|
||||
}
|
||||
|
||||
|
|
|
@ -391,14 +391,14 @@ void ProfileManager::ParseUserSaveFile() {
|
|||
|
||||
if (!save.IsOpen()) {
|
||||
LOG_WARNING(Service_ACC, "Failed to load profile data from save data... Generating new "
|
||||
"user 'yuzu' with random UUID.");
|
||||
"user 'eden' with random UUID.");
|
||||
return;
|
||||
}
|
||||
|
||||
ProfileDataRaw data;
|
||||
if (!save.ReadObject(data)) {
|
||||
LOG_WARNING(Service_ACC, "profiles.dat is smaller than expected... Generating new user "
|
||||
"'yuzu' with random UUID.");
|
||||
"'eden' with random UUID.");
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,9 +1,11 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
#include <boost/container/small_vector.hpp>
|
||||
|
||||
#include "common/microprofile.h"
|
||||
#include "core/hle/service/nvdrv/devices/nvdisp_disp0.h"
|
||||
#include "core/hle/service/nvnflinger/buffer_item.h"
|
||||
#include "core/hle/service/nvnflinger/buffer_item_consumer.h"
|
||||
|
@ -115,9 +117,6 @@ u32 HardwareComposer::ComposeLocked(f32* out_speed_scale, Display& display,
|
|||
nvdisp.Composite(composition_stack);
|
||||
}
|
||||
|
||||
// Render MicroProfile.
|
||||
MicroProfileFlip();
|
||||
|
||||
// Advance by at least one frame.
|
||||
const u32 frame_advance = swap_interval.value_or(1);
|
||||
m_frame_number += frame_advance;
|
||||
|
|
|
@ -11,7 +11,6 @@
|
|||
|
||||
#include <fmt/ranges.h>
|
||||
|
||||
#include "common/microprofile.h"
|
||||
#include "common/socket_types.h"
|
||||
#include "core/core.h"
|
||||
#include "core/hle/kernel/k_thread.h"
|
||||
|
|
|
@ -166,9 +166,12 @@ std::optional<VAddr> AppLoader_NSO::LoadModule(Kernel::KProcess& process, Core::
|
|||
const auto& code = codeset.CodeSegment();
|
||||
auto* patch = patches ? &patches->operator[](patch_index) : nullptr;
|
||||
if (patch && !load_into_process) {
|
||||
//Set module ID using build_id from the NSO header
|
||||
patch->SetModuleID(nso_header.build_id);
|
||||
// Patch SVCs and MRS calls in the guest code
|
||||
while (!patch->PatchText(program_image, code)) {
|
||||
patch = &patches->emplace_back();
|
||||
patch->SetModuleID(nso_header.build_id); // In case the patcher is changed for big modules, the new patcher should also have the build_id
|
||||
}
|
||||
} else if (patch) {
|
||||
// Relocate code patch and copy to the program_image.
|
||||
|
|
|
@ -1,9 +1,11 @@
|
|||
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include <locale>
|
||||
#include "common/hex_util.h"
|
||||
#include "common/microprofile.h"
|
||||
#include "common/swap.h"
|
||||
#include "core/arm/debug.h"
|
||||
#include "core/core.h"
|
||||
|
@ -269,8 +271,6 @@ void CheatEngine::Reload(std::vector<CheatEntry> reload_cheats) {
|
|||
is_pending_reload.exchange(true);
|
||||
}
|
||||
|
||||
MICROPROFILE_DEFINE(Cheat_Engine, "Add-Ons", "Cheat Engine", MP_RGB(70, 200, 70));
|
||||
|
||||
void CheatEngine::FrameCallback(std::chrono::nanoseconds ns_late) {
|
||||
if (is_pending_reload.exchange(false)) {
|
||||
vm.LoadProgram(cheats);
|
||||
|
@ -280,8 +280,6 @@ void CheatEngine::FrameCallback(std::chrono::nanoseconds ns_late) {
|
|||
return;
|
||||
}
|
||||
|
||||
MICROPROFILE_SCOPE(Cheat_Engine);
|
||||
|
||||
vm.Execute(metadata);
|
||||
}
|
||||
|
||||
|
|
|
@ -23,10 +23,6 @@ if (MSVC)
|
|||
endif()
|
||||
target_link_libraries(yuzu-room PRIVATE ${PLATFORM_LIBRARIES} Threads::Threads)
|
||||
|
||||
if(UNIX AND NOT APPLE)
|
||||
install(TARGETS yuzu-room)
|
||||
endif()
|
||||
|
||||
if (YUZU_USE_PRECOMPILED_HEADERS)
|
||||
target_precompile_headers(yuzu-room PRIVATE precompiled_headers.h)
|
||||
endif()
|
||||
|
|
20
src/dep_hashes.h.in
Normal file
20
src/dep_hashes.h.in
Normal file
|
@ -0,0 +1,20 @@
|
|||
// 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
|
|
@ -20,6 +20,7 @@ option(DYNARMIC_IGNORE_ASSERTS "Ignore asserts" OFF)
|
|||
option(DYNARMIC_TESTS_USE_UNICORN "Enable fuzzing tests against unicorn" OFF)
|
||||
option(DYNARMIC_USE_LLVM "Support disassembly of jitted x86_64 code using LLVM" OFF)
|
||||
option(DYNARMIC_USE_PRECOMPILED_HEADERS "Use precompiled headers" ON)
|
||||
option(DYNARMIC_INSTALL "Install dynarmic headers and CMake files" OFF)
|
||||
option(DYNARMIC_USE_BUNDLED_EXTERNALS "Use all bundled externals (useful when e.g. cross-compiling)" OFF)
|
||||
option(DYNARMIC_WARNINGS_AS_ERRORS "Warnings as errors" ${MASTER_PROJECT})
|
||||
if (NOT DEFINED DYNARMIC_FRONTENDS)
|
||||
|
@ -184,26 +185,28 @@ endif()
|
|||
#
|
||||
# Install
|
||||
#
|
||||
include(GNUInstallDirs)
|
||||
include(CMakePackageConfigHelpers)
|
||||
if (DYNARMIC_INSTALL)
|
||||
include(GNUInstallDirs)
|
||||
include(CMakePackageConfigHelpers)
|
||||
|
||||
install(TARGETS dynarmic EXPORT dynarmicTargets)
|
||||
install(EXPORT dynarmicTargets
|
||||
NAMESPACE dynarmic::
|
||||
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/dynarmic"
|
||||
)
|
||||
install(TARGETS dynarmic EXPORT dynarmicTargets)
|
||||
install(EXPORT dynarmicTargets
|
||||
NAMESPACE dynarmic::
|
||||
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/dynarmic"
|
||||
)
|
||||
|
||||
configure_package_config_file(CMakeModules/dynarmicConfig.cmake.in
|
||||
dynarmicConfig.cmake
|
||||
INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/dynarmic"
|
||||
)
|
||||
write_basic_package_version_file(dynarmicConfigVersion.cmake
|
||||
COMPATIBILITY SameMajorVersion
|
||||
)
|
||||
install(FILES
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/dynarmicConfig.cmake"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/dynarmicConfigVersion.cmake"
|
||||
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/dynarmic"
|
||||
)
|
||||
configure_package_config_file(CMakeModules/dynarmicConfig.cmake.in
|
||||
dynarmicConfig.cmake
|
||||
INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/dynarmic"
|
||||
)
|
||||
write_basic_package_version_file(dynarmicConfigVersion.cmake
|
||||
COMPATIBILITY SameMajorVersion
|
||||
)
|
||||
install(FILES
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/dynarmicConfig.cmake"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/dynarmicConfigVersion.cmake"
|
||||
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/dynarmic"
|
||||
)
|
||||
|
||||
install(DIRECTORY src/dynarmic TYPE INCLUDE FILES_MATCHING PATTERN "*.h")
|
||||
install(DIRECTORY src/dynarmic TYPE INCLUDE FILES_MATCHING PATTERN "*.h")
|
||||
endif()
|
||||
|
|
|
@ -1,8 +1,6 @@
|
|||
Dynarmic
|
||||
========
|
||||
|
||||
[](https://github.com/yuzu-mirror/dynarmic/actions/workflows/x86-64.yml) [](https://github.com/yuzu-mirror/dynarmic/actions/workflows/AArch64.yml)
|
||||
|
||||
A dynamic recompiler for ARM.
|
||||
|
||||
Highlight features:
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue