Compare commits

...
Sign in to create a new pull request.

25 commits

Author SHA1 Message Date
1551387739
[cmake, frontend] feat: CPMUtil + dependency viewer (#238)
- creates a CPMUtil.cmake module that makes my job 10x easier and removes boilerplate
- also lets us generate dependency names/versions at compiletime, thus letting the frontend display each dependency's versions.

Signed-off-by: crueter <crueter@eden-emu.dev>
Reviewed-on: eden-emu/eden#238
2025-08-11 22:27:29 +02:00
3f02d7713f
[qt] Fix title bar for windows being forced to light theme (#236)
Fixed the title bar being forced to light theme and properly handle it the qt6.5 way
See: https://stackoverflow.com/a/78854851

Reviewed-on: eden-emu/eden#236
Reviewed-by: crueter <crueter@eden-emu.dev>
Co-authored-by: Maufeat <sahyno1996@gmail.com>
Co-committed-by: Maufeat <sahyno1996@gmail.com>
2025-08-10 22:14:12 +02:00
bdf5674d7e
[cmake] use CPM.cmake without download (#234)
openSUSE build environment doesn't have internet access. So all downloads must be skipped.

Reviewed-on: eden-emu/eden#234
Co-authored-by: Guo Yunhe <i@guoyunhe.me>
Co-committed-by: Guo Yunhe <i@guoyunhe.me>
2025-08-09 18:47:25 +02:00
6b8408ef50
[android] fix light theming (#230)
Signed-off-by: crueter <crueter@eden-emu.dev>
Reviewed-on: eden-emu/eden#230
Reviewed-by: Lizzie <lizzie@eden-emu.dev>
2025-08-09 01:09:01 +02:00
a3cf780a3a
[dynarmic] fix pch gen (#231)
Signed-off-by: lizzie <lizzie@eden-emu.dev>
Co-authored-by: lizzie <lizzie@eden-emu.dev>
Reviewed-on: eden-emu/eden#231
Reviewed-by: Lizzie <lizzie@eden-emu.dev>
2025-08-09 01:08:55 +02:00
0705ba0b47
[frontend] add revolt links to about (#227)
Signed-off-by: crueter <crueter@eden-emu.dev>
Reviewed-on: eden-emu/eden#227
Reviewed-by: Lizzie <lizzie@eden-emu.dev>
2025-08-08 01:56:42 +02:00
982b171f30
[desktop] fix random qt annoyances (#226)
Removes that silly QLayout message and improves consistency thereof for
other QLayouts

Still work to be done but this is all that's needed rn

Signed-off-by: crueter <crueter@eden-emu.dev>

Reviewed-on: eden-emu/eden#226
Reviewed-by: Shinmegumi <shinmegumi@eden-emu.dev>
2025-08-08 01:25:00 +02:00
ae89b5e1b9
[android] fix regressions from redesign + room (#197)
- Don't set room address during creation
- Fixed per-game config not properly unloading
- Fixed invisible thumb on switch setting
- Fixed north app bar not coloring

Signed-off-by: crueter <crueter@eden-emu.dev>
Reviewed-on: eden-emu/eden#197
Reviewed-by: Shinmegumi <shinmegumi@eden-emu.dev>
2025-08-07 22:29:47 +02:00
d499693c29
[cmake] don't explicitly set archflags by default (#220)
Closes #216

Signed-off-by: crueter <crueter@eden-emu.dev>

Reviewed-on: eden-emu/eden#220
Reviewed-by: Shinmegumi <shinmegumi@eden-emu.dev>
2025-08-07 22:09:02 +02:00
1f5b4cce6e
[externals] revert oaknut to Merry's last version (#223)
thanks wunkolo, very cool

Signed-off-by: crueter <crueter@eden-emu.dev>

Reviewed-on: eden-emu/eden#223
Reviewed-by: Shinmegumi <shinmegumi@eden-emu.dev>
2025-08-07 22:08:05 +02:00
6b7cac003a
[deps] use --enable-pic for ffmpeg (#214)
Signed-off-by: lizzie <lizzie@eden-emu.dev>
Reviewed-on: eden-emu/eden#214
Reviewed-by: crueter <crueter@eden-emu.dev>
Co-authored-by: lizzie <lizzie@eden-emu.dev>
Co-committed-by: lizzie <lizzie@eden-emu.dev>
2025-08-07 22:05:51 +02:00
99426f064c
[docs] freebsd does not have pkg-config since FBSD12 (#222)
Signed-off-by: lizzie <lizzie@eden-emu.dev>
Reviewed-on: eden-emu/eden#222
Reviewed-by: crueter <crueter@eden-emu.dev>
Co-authored-by: lizzie <lizzie@eden-emu.dev>
Co-committed-by: lizzie <lizzie@eden-emu.dev>
2025-08-07 22:05:36 +02:00
37618e1043
[dist] fix icons (#221)
Signed-off-by: lizzie <lizzie@eden-emu.dev>
Reviewed-on: eden-emu/eden#221
Reviewed-by: crueter <crueter@eden-emu.dev>
Co-authored-by: lizzie <lizzie@eden-emu.dev>
Co-committed-by: lizzie <lizzie@eden-emu.dev>
2025-08-07 22:05:21 +02:00
6b33b5a734
revolt (#213)
Signed-off-by: crueter <crueter@eden-emu.dev>
Reviewed-on: eden-emu/eden#213
Reviewed-by: Lizzie <lizzie@eden-emu.dev>
2025-08-07 05:44:51 +02:00
dc444c7af9
[docs] update Linux build guide to include private for debian (#191)
Signed-off-by: crueter <crueter@eden-emu.dev>
Reviewed-on: eden-emu/eden#191
Reviewed-by: Lizzie <lizzie@eden-emu.dev>
2025-08-06 07:48:41 +02:00
a4f845b98d
[meta] readme updates (#206)
Signed-off-by: crueter <crueter@eden-emu.dev>
Reviewed-on: eden-emu/eden#206
Reviewed-by: Lizzie <lizzie@eden-emu.dev>
2025-08-06 07:48:28 +02:00
f1e74f6855
[meta] remove MicroProfile (#185)
Signed-off-by: crueter <crueter@eden-emu.dev>
Reviewed-on: eden-emu/eden#185
Reviewed-by: Lizzie <lizzie@eden-emu.dev>
2025-08-06 07:48:11 +02:00
dbbe5b3328
[android] Early Release Fences, v2 (#190)
Reviewed-on: eden-emu/eden#190
Reviewed-by: Shinmegumi <shinmegumi@eden-emu.dev>
2025-08-05 23:16:57 +02:00
0102f548d0
[host1x] Update FFmpeg to 7.1.1 and add support for NVidia CUDA on Linux (#207)
This updates FFmpeg to 7.1.1 and add support for NVidia CUDA on Linux, following the same version as Android and Windows to maintain a standard across platforms.

Reviewed-on: eden-emu/eden#207
Co-authored-by: MaranBr <maranbr@outlook.com>
Co-committed-by: MaranBr <maranbr@outlook.com>
2025-08-05 23:16:15 +02:00
9634342100
[cmake] fix regressions intr. CPM and packaging (#201)
- don't install dynarmic, mcl, unordered_dense files
- fix bundled qt w/ quazip
- don't install libyuzu-room.a
- don't link to VUH

Signed-off-by: crueter <crueter@eden-emu.dev>

Reviewed-on: eden-emu/eden#201
Reviewed-by: Shinmegumi <shinmegumi@eden-emu.dev>
2025-08-04 21:57:01 +02:00
41f0fa97ca
[dynarmic] revert bad changes (#202)
This reverts commit 56acd4041a.

pr needs rebase and fix, audio broke

Signed-off-by: crueter <crueter@eden-emu.dev>

Reviewed-on: eden-emu/eden#202
Reviewed-by: Lizzie <lizzie@eden-emu.dev>
Signed-off-by: crueter <crueter@eden-emu.dev>
2025-08-04 15:21:54 -04:00
76d0659ffe
[docs] IDE setup for vscode, better wording in guideline (#200)
Signed-off-by: lizzie <lizzie@eden-emu.dev>
Co-authored-by: crueter <crueter@eden-emu.dev>
Reviewed-on: eden-emu/eden#200
Reviewed-by: crueter <crueter@eden-emu.dev>
Co-authored-by: lizzie <lizzie@eden-emu.dev>
Co-committed-by: lizzie <lizzie@eden-emu.dev>
2025-08-04 18:48:32 +02:00
5ee06b2d75
[dist] update icons + script to update icons (#198)
Reviewed-on: eden-emu/eden#198
Reviewed-by: crueter <crueter@eden-emu.dev>
Co-authored-by: lizzie <lizzie@eden-emu.dev>
Co-committed-by: lizzie <lizzie@eden-emu.dev>
2025-08-04 18:42:05 +02:00
41ffa5a342
[core, nce] module_id cache key handling (#195)
Uses Module_id plus offset for cache key, Module_id is unique to each module. Also passes the module_id everytime new patcher is created in case the module is too big.

Co-authored-by: crueter <crueter@eden-emu.dev>
Reviewed-on: eden-emu/eden#195
Reviewed-by: crueter <crueter@eden-emu.dev>
Co-authored-by: wildcard <nubieluv@gmail.com>
Co-committed-by: wildcard <nubieluv@gmail.com>
2025-08-04 18:41:28 +02:00
33275c28d3
[texture_cache] Enforce conservative 3D texture aliasing. Consistently merge/lookup images. (#196)
Previously, the merging strategy is permissive but the lookup strategy is strict. Together they create a infinite merge loop because lookup always fails and merges are always executed.
The last attempt to fix this issue made the lookup strategy more permissive which created unexpected aliased textures.
This commit implements an alternative: make the merging strategy strict.

Reviewed-on: eden-emu/eden#196
Reviewed-by: Shinmegumi <shinmegumi@eden-emu.dev>
Co-authored-by: weakboson <weakboson@quantum-field.net>
Co-committed-by: weakboson <weakboson@quantum-field.net>
2025-08-04 18:39:17 +02:00
196 changed files with 3469 additions and 12856 deletions

View file

@ -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
View 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

View file

@ -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
View 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()

View file

@ -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)

View file

@ -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()

View 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})

View file

@ -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

Binary file not shown.

BIN
dist/eden.ico vendored

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 316 KiB

Before After
Before After

View file

@ -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

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 9.2 KiB

Before After
Before After

View file

@ -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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 256 KiB

After

Width:  |  Height:  |  Size: 256 KiB

Before After
Before After

BIN
dist/yuzu.icns vendored

Binary file not shown.

View file

@ -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
View file

@ -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
View file

@ -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:

View file

@ -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()

View file

@ -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)

@ -1 +1 @@
Subproject commit 3dbfa16f0cd9e8ed4fec916c6c00f41c738cb8f4
Subproject commit c060e9ce30ac2e3ffb49d94209c4dae77b6642f7

View file

@ -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

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -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)

View file

@ -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(

View file

@ -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"),

View file

@ -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,

View file

@ -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)

View file

@ -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)) }

View file

@ -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")

View file

@ -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)

View file

@ -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()) {

View 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>

View file

@ -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>

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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

View file

@ -7,6 +7,7 @@
android:scrollbars="vertical"
android:fadeScrollbars="false"
android:clipToPadding="false"
android:background="?attr/colorSurface"
android:defaultFocusHighlightEnabled="false">
<androidx.appcompat.widget.LinearLayoutCompat

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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>

View file

@ -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;
}

View file

@ -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 {

View file

@ -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();
}

View file

@ -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)

View file

@ -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"

View file

@ -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)

View file

@ -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>

View file

@ -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

View file

@ -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

View file

@ -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));
}
}

View file

@ -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});
}
}

View file

@ -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;
}

View file

@ -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;

View file

@ -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_) {

View file

@ -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

View file

@ -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()};

View file

@ -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;
}

View file

@ -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);

View file

@ -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) {

View file

@ -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);
}

View file

@ -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;
}

View file

@ -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;

View file

@ -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"

View file

@ -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.

View file

@ -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);
}

View file

@ -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
View 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

View file

@ -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()

View file

@ -1,8 +1,6 @@
Dynarmic
========
[![Github Actions Build Status (x86-64)](https://github.com/yuzu-mirror/dynarmic/actions/workflows/x86-64.yml/badge.svg)](https://github.com/yuzu-mirror/dynarmic/actions/workflows/x86-64.yml) [![Github Actions Build Status (AArch64)](https://github.com/yuzu-mirror/dynarmic/actions/workflows/aarch64.yml/badge.svg)](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