chore: update project references and add Citron copyright

- Replaced all references to the old project name with Citron.
- Added Citron copyright information alongside existing notices in all files.
This commit is contained in:
Zephyron 2024-12-31 17:07:49 +10:00
parent 6778aa8ec8
commit b3facaa6bb
No known key found for this signature in database
GPG key ID: 8DA271B6A74353F1
2802 changed files with 60643 additions and 60643 deletions

View file

@ -1,4 +1,4 @@
; SPDX-FileCopyrightText: 2023 yuzu Emulator Project ; SPDX-FileCopyrightText: 2023 yuzu Emulator Project & 2025 citron Homebrew Project
; SPDX-License-Identifier: GPL-2.0-or-later ; SPDX-License-Identifier: GPL-2.0-or-later
[codespell] [codespell]

View file

@ -1,4 +1,4 @@
# SPDX-FileCopyrightText: 2023 yuzu Emulator Project # SPDX-FileCopyrightText: 2023 yuzu Emulator Project & 2025 citron Homebrew Project
# SPDX-License-Identifier: GPL-2.0-or-later # SPDX-License-Identifier: GPL-2.0-or-later
# CRLF -> LF # CRLF -> LF

2
.gitattributes vendored
View file

@ -1,4 +1,4 @@
# SPDX-FileCopyrightText: 2018 yuzu Emulator Project # SPDX-FileCopyrightText: 2018 yuzu Emulator Project & 2025 citron Homebrew Project
# SPDX-License-Identifier: GPL-2.0-or-later # SPDX-License-Identifier: GPL-2.0-or-later
dist/languages/* linguist-vendored dist/languages/* linguist-vendored

View file

@ -9,15 +9,15 @@ Files: dist/english_plurals/*
dist/qt_themes/*/icons/48x48/sd_card.png dist/qt_themes/*/icons/48x48/sd_card.png
dist/qt_themes/*/icons/index.theme dist/qt_themes/*/icons/index.theme
dist/qt_themes/default/style.qss dist/qt_themes/default/style.qss
Copyright: yuzu Emulator Project Copyright: yuzu Emulator Project & 2025 citron Homebrew Project
License: GPL-2.0-or-later License: GPL-2.0-or-later
Files: dist/qt_themes/default/icons/256x256/yuzu.png Files: dist/qt_themes/default/icons/256x256/citron.png
dist/yuzu.bmp dist/citron.bmp
dist/yuzu.icns dist/citron.icns
dist/yuzu.ico dist/citron.ico
dist/yuzu.svg dist/citron.svg
Copyright: yuzu Emulator Project Copyright: yuzu Emulator Project & 2025 citron Homebrew Project
License: GPL-2.0-or-later License: GPL-2.0-or-later
Files: dist/qt_themes/qdarkstyle*/LICENSE.* Files: dist/qt_themes/qdarkstyle*/LICENSE.*
@ -108,44 +108,44 @@ Files: externals/FidelityFX-FSR/*
Copyright: 2021 Advanced Micro Devices, Inc. Copyright: 2021 Advanced Micro Devices, Inc.
License: MIT License: MIT
Files: src/yuzu/*.ui Files: src/citron/*.ui
Copyright: 2018-2022 yuzu Emulator Project Copyright: 2018-2022 yuzu Emulator Project & 2025 citron Homebrew Project
License: GPL-2.0-or-later License: GPL-2.0-or-later
Files: src/yuzu/compatdb.ui Files: src/citron/compatdb.ui
src/yuzu/main.ui src/citron/main.ui
Copyright: 2014-2017 Citra Emulator Project Copyright: 2014-2017 Citra Emulator Project
License: GPL-2.0-or-later License: GPL-2.0-or-later
Files: src/yuzu/loading_screen.ui Files: src/citron/loading_screen.ui
Copyright: 2019 James Rowe <jroweboy@gmail.com> Copyright: 2019 James Rowe <jroweboy@gmail.com>
License: GPL-2.0-or-later License: GPL-2.0-or-later
Files: src/yuzu/applets/aboutdialog.ui Files: src/citron/applets/aboutdialog.ui
src/yuzu/applets/qt_software_keyboard.ui src/citron/applets/qt_software_keyboard.ui
src/yuzu/util/overlay_dialog.ui src/citron/util/overlay_dialog.ui
Copyright: 2020-2021 Its-Rei <kupfel@gmail.com> Copyright: 2020-2021 Its-Rei <kupfel@gmail.com>
2020-2021 yuzu Emulator Project 2020-2021 yuzu Emulator Project & 2025 citron Homebrew Project
License: GPL-2.0-or-later License: GPL-2.0-or-later
Files: vcpkg.json Files: vcpkg.json
Copyright: 2022 yuzu Emulator Project Copyright: 2022 yuzu Emulator Project & 2025 citron Homebrew Project
License: GPL-3.0-or-later License: GPL-3.0-or-later
Files: .github/ISSUE_TEMPLATE/* Files: .github/ISSUE_TEMPLATE/*
Copyright: 2022 yuzu Emulator Project Copyright: 2022 yuzu Emulator Project & 2025 citron Homebrew Project
License: GPL-2.0-or-later License: GPL-2.0-or-later
Files: src/android/app/src/ea/res/* Files: src/android/app/src/ea/res/*
Copyright: 2023 yuzu Emulator Project Copyright: 2023 yuzu Emulator Project & 2025 citron Homebrew Project
License: GPL-3.0-or-later License: GPL-3.0-or-later
Files: src/android/app/src/main/res/* Files: src/android/app/src/main/res/*
Copyright: 2023 yuzu Emulator Project Copyright: 2023 yuzu Emulator Project & 2025 citron Homebrew Project
License: GPL-3.0-or-later License: GPL-3.0-or-later
Files: src/android/gradle/wrapper/* Files: src/android/gradle/wrapper/*
Copyright: 2023 yuzu Emulator Project Copyright: 2023 yuzu Emulator Project & 2025 citron Homebrew Project
License: GPL-3.0-or-later License: GPL-3.0-or-later
Files: externals/stb/* Files: externals/stb/*
@ -157,5 +157,5 @@ Copyright: Copyright 2017-2019 Feral Interactive
License: BSD-3-Clause License: BSD-3-Clause
Files: src/android/app/debug.keystore Files: src/android/app/debug.keystore
Copyright: 2023 yuzu Emulator Project Copyright: 2023 yuzu Emulator Project & 2025 citron Homebrew Project
License: GPL-3.0-or-later License: GPL-3.0-or-later

View file

@ -1,9 +1,9 @@
# SPDX-FileCopyrightText: 2018 yuzu Emulator Project # SPDX-FileCopyrightText: 2018 yuzu Emulator Project & 2025 citron Homebrew Project
# SPDX-License-Identifier: GPL-2.0-or-later # SPDX-License-Identifier: GPL-2.0-or-later
cmake_minimum_required(VERSION 3.22) cmake_minimum_required(VERSION 3.22)
project(yuzu) project(citron)
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules") list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules")
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/externals/cmake-modules") list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/externals/cmake-modules")
@ -15,9 +15,9 @@ include(CTest)
# Set bundled sdl2/qt as dependent options. # Set bundled sdl2/qt as dependent options.
# OFF by default, but if ENABLE_SDL2 and MSVC are true then ON # OFF by default, but if ENABLE_SDL2 and MSVC are true then ON
option(ENABLE_SDL2 "Enable the SDL2 frontend" ON) option(ENABLE_SDL2 "Enable the SDL2 frontend" ON)
CMAKE_DEPENDENT_OPTION(YUZU_USE_BUNDLED_SDL2 "Download bundled SDL2 binaries" ON "ENABLE_SDL2;MSVC" OFF) CMAKE_DEPENDENT_OPTION(CITRON_USE_BUNDLED_SDL2 "Download bundled SDL2 binaries" ON "ENABLE_SDL2;MSVC" OFF)
# On Linux system SDL2 is likely to be lacking HIDAPI support which have drawbacks but is needed for SDL motion # On Linux system SDL2 is likely to be lacking HIDAPI support which have drawbacks but is needed for SDL motion
CMAKE_DEPENDENT_OPTION(YUZU_USE_EXTERNAL_SDL2 "Compile external SDL2" ON "ENABLE_SDL2;NOT MSVC" OFF) CMAKE_DEPENDENT_OPTION(CITRON_USE_EXTERNAL_SDL2 "Compile external SDL2" ON "ENABLE_SDL2;NOT MSVC" OFF)
cmake_dependent_option(ENABLE_LIBUSB "Enable the use of LibUSB" ON "NOT ANDROID" OFF) cmake_dependent_option(ENABLE_LIBUSB "Enable the use of LibUSB" ON "NOT ANDROID" OFF)
@ -28,45 +28,45 @@ option(ENABLE_QT6 "Allow usage of Qt6 to be attempted" OFF)
set(QT6_LOCATION "" CACHE PATH "Additional Location to search for Qt6 libraries like C:/Qt/6.3.1/msvc2019_64/") set(QT6_LOCATION "" CACHE PATH "Additional Location to search for Qt6 libraries like C:/Qt/6.3.1/msvc2019_64/")
option(ENABLE_QT_TRANSLATION "Enable translations for the Qt frontend" OFF) option(ENABLE_QT_TRANSLATION "Enable translations for the Qt frontend" OFF)
CMAKE_DEPENDENT_OPTION(YUZU_USE_BUNDLED_QT "Download bundled Qt binaries" "${MSVC}" "ENABLE_QT" OFF) CMAKE_DEPENDENT_OPTION(CITRON_USE_BUNDLED_QT "Download bundled Qt binaries" "${MSVC}" "ENABLE_QT" OFF)
option(ENABLE_WEB_SERVICE "Enable web services (telemetry, etc.)" ON) option(ENABLE_WEB_SERVICE "Enable web services (telemetry, etc.)" ON)
option(YUZU_USE_BUNDLED_FFMPEG "Download/Build bundled FFmpeg" "${WIN32}") option(CITRON_USE_BUNDLED_FFMPEG "Download/Build bundled FFmpeg" "${WIN32}")
option(YUZU_USE_EXTERNAL_VULKAN_HEADERS "Use Vulkan-Headers from externals" ON) option(CITRON_USE_EXTERNAL_VULKAN_HEADERS "Use Vulkan-Headers from externals" ON)
option(YUZU_USE_EXTERNAL_VULKAN_UTILITY_LIBRARIES "Use Vulkan-Utility-Libraries from externals" ON) option(CITRON_USE_EXTERNAL_VULKAN_UTILITY_LIBRARIES "Use Vulkan-Utility-Libraries from externals" ON)
option(YUZU_USE_QT_MULTIMEDIA "Use QtMultimedia for Camera" OFF) option(CITRON_USE_QT_MULTIMEDIA "Use QtMultimedia for Camera" OFF)
option(YUZU_USE_QT_WEB_ENGINE "Use QtWebEngine for web applet implementation" OFF) option(CITRON_USE_QT_WEB_ENGINE "Use QtWebEngine for web applet implementation" OFF)
option(ENABLE_CUBEB "Enables the cubeb audio backend" ON) option(ENABLE_CUBEB "Enables the cubeb audio backend" ON)
option(USE_DISCORD_PRESENCE "Enables Discord Rich Presence" OFF) option(USE_DISCORD_PRESENCE "Enables Discord Rich Presence" OFF)
option(YUZU_TESTS "Compile tests" "${BUILD_TESTING}") option(CITRON_TESTS "Compile tests" "${BUILD_TESTING}")
option(YUZU_USE_PRECOMPILED_HEADERS "Use precompiled headers" ON) option(CITRON_USE_PRECOMPILED_HEADERS "Use precompiled headers" ON)
option(YUZU_DOWNLOAD_ANDROID_VVL "Download validation layer binary for android" ON) option(CITRON_DOWNLOAD_ANDROID_VVL "Download validation layer binary for android" ON)
CMAKE_DEPENDENT_OPTION(YUZU_ROOM "Compile LDN room server" ON "NOT ANDROID" OFF) CMAKE_DEPENDENT_OPTION(CITRON_ROOM "Compile LDN room server" ON "NOT ANDROID" OFF)
CMAKE_DEPENDENT_OPTION(YUZU_CRASH_DUMPS "Compile crash dump (Minidump) support" OFF "WIN32 OR LINUX" OFF) CMAKE_DEPENDENT_OPTION(CITRON_CRASH_DUMPS "Compile crash dump (Minidump) support" OFF "WIN32 OR LINUX" OFF)
option(YUZU_USE_BUNDLED_VCPKG "Use vcpkg for yuzu dependencies" "${MSVC}") option(CITRON_USE_BUNDLED_VCPKG "Use vcpkg for citron dependencies" "${MSVC}")
option(YUZU_CHECK_SUBMODULES "Check if submodules are present" ON) option(CITRON_CHECK_SUBMODULES "Check if submodules are present" ON)
option(YUZU_ENABLE_LTO "Enable link-time optimization" OFF) option(CITRON_ENABLE_LTO "Enable link-time optimization" OFF)
option(YUZU_DOWNLOAD_TIME_ZONE_DATA "Always download time zone binaries" OFF) option(CITRON_DOWNLOAD_TIME_ZONE_DATA "Always download time zone binaries" OFF)
option(YUZU_ENABLE_PORTABLE "Allow yuzu to enable portable mode if a user folder is found in the CWD" ON) option(CITRON_ENABLE_PORTABLE "Allow citron to enable portable mode if a user folder is found in the CWD" ON)
CMAKE_DEPENDENT_OPTION(YUZU_USE_FASTER_LD "Check if a faster linker is available" ON "NOT WIN32" OFF) CMAKE_DEPENDENT_OPTION(CITRON_USE_FASTER_LD "Check if a faster linker is available" ON "NOT WIN32" OFF)
CMAKE_DEPENDENT_OPTION(USE_SYSTEM_MOLTENVK "Use the system MoltenVK lib (instead of the bundled one)" OFF "APPLE" OFF) CMAKE_DEPENDENT_OPTION(USE_SYSTEM_MOLTENVK "Use the system MoltenVK lib (instead of the bundled one)" OFF "APPLE" OFF)
@ -82,7 +82,7 @@ if (ANDROID OR WIN32 OR APPLE)
endif() endif()
option(ENABLE_OPENSSL "Enable OpenSSL backend for ISslConnection" ${DEFAULT_ENABLE_OPENSSL}) option(ENABLE_OPENSSL "Enable OpenSSL backend for ISslConnection" ${DEFAULT_ENABLE_OPENSSL})
if (ANDROID AND YUZU_DOWNLOAD_ANDROID_VVL) if (ANDROID AND CITRON_DOWNLOAD_ANDROID_VVL)
set(vvl_version "sdk-1.3.261.1") set(vvl_version "sdk-1.3.261.1")
set(vvl_zip_file "${CMAKE_BINARY_DIR}/externals/vvl-android.zip") set(vvl_zip_file "${CMAKE_BINARY_DIR}/externals/vvl-android.zip")
if (NOT EXISTS "${vvl_zip_file}") if (NOT EXISTS "${vvl_zip_file}")
@ -104,7 +104,7 @@ if (ANDROID)
set(CMAKE_SKIP_INSTALL_RULES ON) set(CMAKE_SKIP_INSTALL_RULES ON)
endif() endif()
if (YUZU_USE_BUNDLED_VCPKG) if (CITRON_USE_BUNDLED_VCPKG)
if (ANDROID) if (ANDROID)
set(ENV{ANDROID_NDK_HOME} "${ANDROID_NDK}") set(ENV{ANDROID_NDK_HOME} "${ANDROID_NDK}")
list(APPEND VCPKG_MANIFEST_FEATURES "android") list(APPEND VCPKG_MANIFEST_FEATURES "android")
@ -126,7 +126,7 @@ if (YUZU_USE_BUNDLED_VCPKG)
set(VCPKG_DOWNLOADS_PATH ${PROJECT_SOURCE_DIR}/externals/vcpkg/downloads) set(VCPKG_DOWNLOADS_PATH ${PROJECT_SOURCE_DIR}/externals/vcpkg/downloads)
set(NASM_VERSION "2.16.01") set(NASM_VERSION "2.16.01")
set(NASM_DESTINATION_PATH ${VCPKG_DOWNLOADS_PATH}/nasm-${NASM_VERSION}-win64.zip) set(NASM_DESTINATION_PATH ${VCPKG_DOWNLOADS_PATH}/nasm-${NASM_VERSION}-win64.zip)
set(NASM_DOWNLOAD_URL "https://github.com/yuzu-emu/ext-windows-bin/raw/master/nasm/nasm-${NASM_VERSION}-win64.zip") set(NASM_DOWNLOAD_URL "https://github.com/yuzu-mirror/ext-windows-bin/raw/master/nasm/nasm-${NASM_VERSION}-win64.zip")
if (NOT EXISTS ${NASM_DESTINATION_PATH}) if (NOT EXISTS ${NASM_DESTINATION_PATH})
file(DOWNLOAD ${NASM_DOWNLOAD_URL} ${NASM_DESTINATION_PATH} SHOW_PROGRESS STATUS NASM_STATUS) file(DOWNLOAD ${NASM_DOWNLOAD_URL} ${NASM_DESTINATION_PATH} SHOW_PROGRESS STATUS NASM_STATUS)
@ -138,8 +138,8 @@ if (YUZU_USE_BUNDLED_VCPKG)
endif() endif()
endif() endif()
if (YUZU_TESTS) if (CITRON_TESTS)
list(APPEND VCPKG_MANIFEST_FEATURES "yuzu-tests") list(APPEND VCPKG_MANIFEST_FEATURES "citron-tests")
endif() endif()
if (ENABLE_WEB_SERVICE) if (ENABLE_WEB_SERVICE)
list(APPEND VCPKG_MANIFEST_FEATURES "web-service") list(APPEND VCPKG_MANIFEST_FEATURES "web-service")
@ -155,16 +155,16 @@ elseif(NOT "$ENV{VCPKG_TOOLCHAIN_FILE}" STREQUAL "")
include("$ENV{VCPKG_TOOLCHAIN_FILE}") include("$ENV{VCPKG_TOOLCHAIN_FILE}")
endif() endif()
if (YUZU_USE_PRECOMPILED_HEADERS) if (CITRON_USE_PRECOMPILED_HEADERS)
if (MSVC AND CCACHE) if (MSVC AND CCACHE)
# buildcache does not properly cache PCH files, leading to compilation errors. # buildcache does not properly cache PCH files, leading to compilation errors.
# See https://github.com/mbitsnbites/buildcache/discussions/230 # See https://github.com/mbitsnbites/buildcache/discussions/230
message(WARNING "buildcache does not properly support Precompiled Headers. Disabling PCH") message(WARNING "buildcache does not properly support Precompiled Headers. Disabling PCH")
set(DYNARMIC_USE_PRECOMPILED_HEADERS OFF CACHE BOOL "" FORCE) set(DYNARMIC_USE_PRECOMPILED_HEADERS OFF CACHE BOOL "" FORCE)
set(YUZU_USE_PRECOMPILED_HEADERS OFF CACHE BOOL "" FORCE) set(CITRON_USE_PRECOMPILED_HEADERS OFF CACHE BOOL "" FORCE)
endif() endif()
endif() endif()
if (YUZU_USE_PRECOMPILED_HEADERS) if (CITRON_USE_PRECOMPILED_HEADERS)
message(STATUS "Using Precompiled Headers.") message(STATUS "Using Precompiled Headers.")
set(CMAKE_PCH_INSTANTIATE_TEMPLATES ON) set(CMAKE_PCH_INSTANTIATE_TEMPLATES ON)
endif() endif()
@ -199,7 +199,7 @@ function(check_submodules_present)
endforeach() endforeach()
endfunction() endfunction()
if(EXISTS ${PROJECT_SOURCE_DIR}/.gitmodules AND YUZU_CHECK_SUBMODULES) if(EXISTS ${PROJECT_SOURCE_DIR}/.gitmodules AND CITRON_CHECK_SUBMODULES)
check_submodules_present() check_submodules_present()
endif() endif()
configure_file(${PROJECT_SOURCE_DIR}/dist/compatibility_list/compatibility_list.qrc configure_file(${PROJECT_SOURCE_DIR}/dist/compatibility_list/compatibility_list.qrc
@ -211,9 +211,9 @@ if (EXISTS ${PROJECT_SOURCE_DIR}/dist/compatibility_list/compatibility_list.json
COPYONLY) COPYONLY)
endif() endif()
if (ENABLE_COMPATIBILITY_LIST_DOWNLOAD AND NOT EXISTS ${PROJECT_BINARY_DIR}/dist/compatibility_list/compatibility_list.json) if (ENABLE_COMPATIBILITY_LIST_DOWNLOAD AND NOT EXISTS ${PROJECT_BINARY_DIR}/dist/compatibility_list/compatibility_list.json)
message(STATUS "Downloading compatibility list for yuzu...") message(STATUS "Downloading compatibility list for citron...")
file(DOWNLOAD file(DOWNLOAD
https://api.yuzu-emu.org/gamedb/ https://api.yuzu-mirror.org/gamedb/
"${PROJECT_BINARY_DIR}/dist/compatibility_list/compatibility_list.json" SHOW_PROGRESS) "${PROJECT_BINARY_DIR}/dist/compatibility_list/compatibility_list.json" SHOW_PROGRESS)
endif() endif()
if (NOT EXISTS ${PROJECT_BINARY_DIR}/dist/compatibility_list/compatibility_list.json) if (NOT EXISTS ${PROJECT_BINARY_DIR}/dist/compatibility_list/compatibility_list.json)
@ -262,7 +262,7 @@ endif()
message(STATUS "Target architecture: ${ARCHITECTURE}") message(STATUS "Target architecture: ${ARCHITECTURE}")
if (UNIX) if (UNIX)
add_definitions(-DYUZU_UNIX=1) add_definitions(-DCITRON_UNIX=1)
endif() endif()
if (ARCHITECTURE_arm64 AND (ANDROID OR ${CMAKE_SYSTEM_NAME} STREQUAL "Linux")) if (ARCHITECTURE_arm64 AND (ANDROID OR ${CMAKE_SYSTEM_NAME} STREQUAL "Linux"))
@ -306,11 +306,11 @@ find_package(VulkanMemoryAllocator CONFIG)
find_package(ZLIB 1.2 REQUIRED) find_package(ZLIB 1.2 REQUIRED)
find_package(zstd 1.5 REQUIRED) find_package(zstd 1.5 REQUIRED)
if (NOT YUZU_USE_EXTERNAL_VULKAN_HEADERS) if (NOT CITRON_USE_EXTERNAL_VULKAN_HEADERS)
find_package(VulkanHeaders 1.3.274 REQUIRED) find_package(VulkanHeaders 1.3.274 REQUIRED)
endif() endif()
if (NOT YUZU_USE_EXTERNAL_VULKAN_UTILITY_LIBRARIES) if (NOT CITRON_USE_EXTERNAL_VULKAN_UTILITY_LIBRARIES)
find_package(VulkanUtilityLibraries REQUIRED) find_package(VulkanUtilityLibraries REQUIRED)
endif() endif()
@ -343,7 +343,7 @@ if (ENABLE_WEB_SERVICE)
find_package(httplib 0.12 MODULE COMPONENTS OpenSSL) find_package(httplib 0.12 MODULE COMPONENTS OpenSSL)
endif() endif()
if (YUZU_TESTS) if (CITRON_TESTS)
find_package(Catch2 3.0.1 REQUIRED) find_package(Catch2 3.0.1 REQUIRED)
endif() endif()
@ -365,26 +365,26 @@ if(ENABLE_QT6 AND Qt6_LOCATION)
list(APPEND CMAKE_PREFIX_PATH "${Qt6_LOCATION}") list(APPEND CMAKE_PREFIX_PATH "${Qt6_LOCATION}")
endif() endif()
function(set_yuzu_qt_components) function(set_citron_qt_components)
# Best practice is to ask for all components at once, so they are from the same version # Best practice is to ask for all components at once, so they are from the same version
set(YUZU_QT_COMPONENTS2 Core Widgets Concurrent) set(CITRON_QT_COMPONENTS2 Core Widgets Concurrent)
if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux") if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
list(APPEND YUZU_QT_COMPONENTS2 DBus) list(APPEND CITRON_QT_COMPONENTS2 DBus)
endif() endif()
if (YUZU_USE_QT_MULTIMEDIA) if (CITRON_USE_QT_MULTIMEDIA)
list(APPEND YUZU_QT_COMPONENTS2 Multimedia) list(APPEND CITRON_QT_COMPONENTS2 Multimedia)
endif() endif()
if (YUZU_USE_QT_WEB_ENGINE) if (CITRON_USE_QT_WEB_ENGINE)
list(APPEND YUZU_QT_COMPONENTS2 WebEngineCore WebEngineWidgets) list(APPEND CITRON_QT_COMPONENTS2 WebEngineCore WebEngineWidgets)
endif() endif()
if (ENABLE_QT_TRANSLATION) if (ENABLE_QT_TRANSLATION)
list(APPEND YUZU_QT_COMPONENTS2 LinguistTools) list(APPEND CITRON_QT_COMPONENTS2 LinguistTools)
endif() endif()
if (USE_DISCORD_PRESENCE) if (USE_DISCORD_PRESENCE)
list(APPEND YUZU_QT_COMPONENTS2 Network) list(APPEND CITRON_QT_COMPONENTS2 Network)
endif() endif()
set(YUZU_QT_COMPONENTS ${YUZU_QT_COMPONENTS2} PARENT_SCOPE) set(CITRON_QT_COMPONENTS ${CITRON_QT_COMPONENTS2} PARENT_SCOPE)
endfunction(set_yuzu_qt_components) endfunction(set_citron_qt_components)
# Qt5 requires that we find components, so it doesn't fit our pretty little find package function # Qt5 requires that we find components, so it doesn't fit our pretty little find package function
if(ENABLE_QT) if(ENABLE_QT)
@ -393,29 +393,29 @@ if(ENABLE_QT)
set(QT5_VERSION 5.15) set(QT5_VERSION 5.15)
set(QT6_VERSION 6.3.1) set(QT6_VERSION 6.3.1)
set_yuzu_qt_components() set_citron_qt_components()
if (ENABLE_QT6) if (ENABLE_QT6)
find_package(Qt6 ${QT6_VERSION} COMPONENTS ${YUZU_QT_COMPONENTS}) find_package(Qt6 ${QT6_VERSION} COMPONENTS ${CITRON_QT_COMPONENTS})
endif() endif()
if (Qt6_FOUND) if (Qt6_FOUND)
message(STATUS "yuzu/CMakeLists.txt: Qt6Widgets_VERSION ${Qt6Widgets_VERSION}, setting QT_VERSION") message(STATUS "citron/CMakeLists.txt: Qt6Widgets_VERSION ${Qt6Widgets_VERSION}, setting QT_VERSION")
set(QT_VERSION ${Qt6Widgets_VERSION}) set(QT_VERSION ${Qt6Widgets_VERSION})
set(QT_MAJOR_VERSION 6) set(QT_MAJOR_VERSION 6)
# Qt6 sets cxx_std_17 and we need to undo that # Qt6 sets cxx_std_17 and we need to undo that
set_target_properties(Qt6::Platform PROPERTIES INTERFACE_COMPILE_FEATURES "") set_target_properties(Qt6::Platform PROPERTIES INTERFACE_COMPILE_FEATURES "")
else() else()
message(STATUS "yuzu/CMakeLists.txt: Qt6 not found/not selected, trying for Qt5") message(STATUS "citron/CMakeLists.txt: Qt6 not found/not selected, trying for Qt5")
# When Qt6 partially found, need this set to use Qt5 when not specifying version # When Qt6 partially found, need this set to use Qt5 when not specifying version
set(QT_DEFAULT_MAJOR_VERSION 5) set(QT_DEFAULT_MAJOR_VERSION 5)
set(QT_MAJOR_VERSION 5) set(QT_MAJOR_VERSION 5)
set(YUZU_USE_QT_MULTIMEDIA ON) set(CITRON_USE_QT_MULTIMEDIA ON)
# Check for system Qt on Linux, fallback to bundled Qt # Check for system Qt on Linux, fallback to bundled Qt
if (UNIX AND NOT APPLE) if (UNIX AND NOT APPLE)
if (NOT YUZU_USE_BUNDLED_QT) if (NOT CITRON_USE_BUNDLED_QT)
find_package(Qt5 ${QT5_VERSION} COMPONENTS Widgets DBus Multimedia) find_package(Qt5 ${QT5_VERSION} COMPONENTS Widgets DBus Multimedia)
endif() endif()
if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux" AND (NOT Qt5_FOUND OR YUZU_USE_BUNDLED_QT)) if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux" AND (NOT Qt5_FOUND OR CITRON_USE_BUNDLED_QT))
# Check for dependencies, then enable bundled Qt download # Check for dependencies, then enable bundled Qt download
# Check that the system GLIBCXX version is compatible # Check that the system GLIBCXX version is compatible
@ -489,23 +489,23 @@ if(ENABLE_QT)
message(FATAL_ERROR "Bundled Qt package missing required dependencies: ${UNRESOLVED_QT_DEPS}") message(FATAL_ERROR "Bundled Qt package missing required dependencies: ${UNRESOLVED_QT_DEPS}")
endif() endif()
set(YUZU_USE_BUNDLED_QT ON CACHE BOOL "Download bundled Qt" FORCE) set(CITRON_USE_BUNDLED_QT ON CACHE BOOL "Download bundled Qt" FORCE)
endif() endif()
if (YUZU_USE_BUNDLED_QT) if (CITRON_USE_BUNDLED_QT)
# Binary package currently does not support Qt webengine, so make sure it's disabled # Binary package currently does not support Qt webengine, so make sure it's disabled
set(YUZU_USE_QT_WEB_ENGINE OFF CACHE BOOL "Use Qt Webengine" FORCE) set(CITRON_USE_QT_WEB_ENGINE OFF CACHE BOOL "Use Qt Webengine" FORCE)
endif() endif()
endif() endif()
set(YUZU_QT_NO_CMAKE_SYSTEM_PATH) set(CITRON_QT_NO_CMAKE_SYSTEM_PATH)
if(YUZU_USE_BUNDLED_QT) if(CITRON_USE_BUNDLED_QT)
if ((MSVC_VERSION GREATER_EQUAL 1920 AND MSVC_VERSION LESS 1940) AND ARCHITECTURE_x86_64) if ((MSVC_VERSION GREATER_EQUAL 1920 AND MSVC_VERSION LESS 1940) AND ARCHITECTURE_x86_64)
set(QT_BUILD qt-5.15.2-msvc2019_64) set(QT_BUILD qt-5.15.2-msvc2019_64)
elseif ((${CMAKE_SYSTEM_NAME} STREQUAL "Linux") AND NOT MINGW AND ARCHITECTURE_x86_64) elseif ((${CMAKE_SYSTEM_NAME} STREQUAL "Linux") AND NOT MINGW AND ARCHITECTURE_x86_64)
set(QT_BUILD qt5_5_15_2) set(QT_BUILD qt5_5_15_2)
else() else()
message(FATAL_ERROR "No bundled Qt binaries for your toolchain. Disable YUZU_USE_BUNDLED_QT and provide your own.") message(FATAL_ERROR "No bundled Qt binaries for your toolchain. Disable CITRON_USE_BUNDLED_QT and provide your own.")
endif() endif()
if (DEFINED QT_BUILD) if (DEFINED QT_BUILD)
@ -514,25 +514,25 @@ if(ENABLE_QT)
set(QT_PREFIX_HINT HINTS "${QT_PREFIX}") set(QT_PREFIX_HINT HINTS "${QT_PREFIX}")
set(YUZU_QT_NO_CMAKE_SYSTEM_PATH "NO_CMAKE_SYSTEM_PATH") set(CITRON_QT_NO_CMAKE_SYSTEM_PATH "NO_CMAKE_SYSTEM_PATH")
# Binary package for Qt5 has Qt Multimedia # Binary package for Qt5 has Qt Multimedia
set(YUZU_USE_QT_MULTIMEDIA ON CACHE BOOL "Use Qt Multimedia" FORCE) set(CITRON_USE_QT_MULTIMEDIA ON CACHE BOOL "Use Qt Multimedia" FORCE)
endif() endif()
set_yuzu_qt_components() set_citron_qt_components()
find_package(Qt5 ${QT5_VERSION} COMPONENTS ${YUZU_QT_COMPONENTS} ${QT_PREFIX_HINT} ${YUZU_QT_NO_CMAKE_SYSTEM_PATH}) find_package(Qt5 ${QT5_VERSION} COMPONENTS ${CITRON_QT_COMPONENTS} ${QT_PREFIX_HINT} ${CITRON_QT_NO_CMAKE_SYSTEM_PATH})
endif() endif()
endif() endif()
# find SDL2 exports a bunch of variables that are needed, so its easier to do this outside of the yuzu_find_package # find SDL2 exports a bunch of variables that are needed, so its easier to do this outside of the citron_find_package
if (ENABLE_SDL2) if (ENABLE_SDL2)
if (YUZU_USE_BUNDLED_SDL2) if (CITRON_USE_BUNDLED_SDL2)
# Detect toolchain and platform # Detect toolchain and platform
if ((MSVC_VERSION GREATER_EQUAL 1920 AND MSVC_VERSION LESS 1940) AND ARCHITECTURE_x86_64) if ((MSVC_VERSION GREATER_EQUAL 1920 AND MSVC_VERSION LESS 1940) AND ARCHITECTURE_x86_64)
set(SDL2_VER "SDL2-2.28.2") set(SDL2_VER "SDL2-2.28.2")
else() else()
message(FATAL_ERROR "No bundled SDL2 binaries for your toolchain. Disable YUZU_USE_BUNDLED_SDL2 and provide your own.") message(FATAL_ERROR "No bundled SDL2 binaries for your toolchain. Disable CITRON_USE_BUNDLED_SDL2 and provide your own.")
endif() endif()
if (DEFINED SDL2_VER) if (DEFINED SDL2_VER)
@ -547,7 +547,7 @@ if (ENABLE_SDL2)
add_library(SDL2::SDL2 INTERFACE IMPORTED) add_library(SDL2::SDL2 INTERFACE IMPORTED)
target_link_libraries(SDL2::SDL2 INTERFACE "${SDL2_LIBRARY}") target_link_libraries(SDL2::SDL2 INTERFACE "${SDL2_LIBRARY}")
target_include_directories(SDL2::SDL2 INTERFACE "${SDL2_INCLUDE_DIR}") target_include_directories(SDL2::SDL2 INTERFACE "${SDL2_INCLUDE_DIR}")
elseif (YUZU_USE_EXTERNAL_SDL2) elseif (CITRON_USE_EXTERNAL_SDL2)
message(STATUS "Using SDL2 from externals.") message(STATUS "Using SDL2 from externals.")
else() else()
find_package(SDL2 2.26.4 REQUIRED) find_package(SDL2 2.26.4 REQUIRED)
@ -565,12 +565,12 @@ if (UNIX AND NOT APPLE AND NOT ANDROID)
find_package(PkgConfig REQUIRED) find_package(PkgConfig REQUIRED)
pkg_check_modules(LIBVA libva) pkg_check_modules(LIBVA libva)
endif() endif()
if (NOT YUZU_USE_BUNDLED_FFMPEG) if (NOT CITRON_USE_BUNDLED_FFMPEG)
# Use system installed FFmpeg # Use system installed FFmpeg
find_package(FFmpeg 4.3 REQUIRED QUIET COMPONENTS ${FFmpeg_COMPONENTS}) find_package(FFmpeg 4.3 REQUIRED QUIET COMPONENTS ${FFmpeg_COMPONENTS})
endif() endif()
if (WIN32 AND YUZU_CRASH_DUMPS) if (WIN32 AND CITRON_CRASH_DUMPS)
set(BREAKPAD_VER "breakpad-c89f9dd") set(BREAKPAD_VER "breakpad-c89f9dd")
download_bundled_external("breakpad/" ${BREAKPAD_VER} BREAKPAD_PREFIX) download_bundled_external("breakpad/" ${BREAKPAD_VER} BREAKPAD_PREFIX)
@ -620,7 +620,7 @@ if (NOT CLANG_FORMAT)
message(STATUS "Clang format not found! Downloading...") message(STATUS "Clang format not found! Downloading...")
set(CLANG_FORMAT "${PROJECT_BINARY_DIR}/externals/clang-format${CLANG_FORMAT_POSTFIX}.exe") set(CLANG_FORMAT "${PROJECT_BINARY_DIR}/externals/clang-format${CLANG_FORMAT_POSTFIX}.exe")
file(DOWNLOAD file(DOWNLOAD
https://github.com/yuzu-emu/ext-windows-bin/raw/master/clang-format${CLANG_FORMAT_POSTFIX}.exe https://github.com/yuzu-mirror/ext-windows-bin/raw/master/clang-format${CLANG_FORMAT_POSTFIX}.exe
"${CLANG_FORMAT}" SHOW_PROGRESS "${CLANG_FORMAT}" SHOW_PROGRESS
STATUS DOWNLOAD_SUCCESS) STATUS DOWNLOAD_SUCCESS)
if (NOT DOWNLOAD_SUCCESS EQUAL 0) if (NOT DOWNLOAD_SUCCESS EQUAL 0)
@ -685,7 +685,7 @@ if (MSVC AND CMAKE_GENERATOR STREQUAL "Ninja")
) )
endif() endif()
if (YUZU_USE_FASTER_LD AND CMAKE_CXX_COMPILER_ID STREQUAL "GNU") if (CITRON_USE_FASTER_LD AND CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
# We will assume that if the compiler is GCC, it will attempt to use ld.bfd by default. # We will assume that if the compiler is GCC, it will attempt to use ld.bfd by default.
# Try to pick a faster linker. # Try to pick a faster linker.
find_program(LLD lld) find_program(LLD lld)
@ -703,11 +703,11 @@ endif()
add_subdirectory(externals) add_subdirectory(externals)
add_subdirectory(src) add_subdirectory(src)
# Set yuzu project or yuzu-cmd project as default StartUp Project in Visual Studio depending on whether QT is enabled or not # Set citron project or citron-cmd project as default StartUp Project in Visual Studio depending on whether QT is enabled or not
if(ENABLE_QT) if(ENABLE_QT)
set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT yuzu) set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT citron)
else() else()
set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT yuzu-cmd) set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT citron-cmd)
endif() endif()
@ -720,13 +720,13 @@ endif()
# https://specifications.freedesktop.org/shared-mime-info-spec/shared-mime-info-spec-latest.html # https://specifications.freedesktop.org/shared-mime-info-spec/shared-mime-info-spec-latest.html
# https://www.freedesktop.org/software/appstream/docs/ # https://www.freedesktop.org/software/appstream/docs/
if(ENABLE_QT AND UNIX AND NOT APPLE) if(ENABLE_QT AND UNIX AND NOT APPLE)
install(FILES "dist/org.yuzu_emu.yuzu.desktop" install(FILES "dist/org.citron_emu.citron.desktop"
DESTINATION "share/applications") DESTINATION "share/applications")
install(FILES "dist/yuzu.svg" install(FILES "dist/citron.svg"
DESTINATION "share/icons/hicolor/scalable/apps" DESTINATION "share/icons/hicolor/scalable/apps"
RENAME "org.yuzu_emu.yuzu.svg") RENAME "org.citron_emu.citron.svg")
install(FILES "dist/org.yuzu_emu.yuzu.xml" install(FILES "dist/org.citron_emu.citron.xml"
DESTINATION "share/mime/packages") DESTINATION "share/mime/packages")
install(FILES "dist/org.yuzu_emu.yuzu.metainfo.xml" install(FILES "dist/org.citron_emu.citron.metainfo.xml"
DESTINATION "share/metainfo") DESTINATION "share/metainfo")
endif() endif()

View file

@ -1,10 +1,10 @@
# SPDX-FileCopyrightText: 2020 yuzu Emulator Project # SPDX-FileCopyrightText: 2020 yuzu Emulator Project & 2025 citron Homebrew Project
# SPDX-License-Identifier: GPL-2.0-or-later # SPDX-License-Identifier: GPL-2.0-or-later
function(copy_yuzu_FFmpeg_deps target_dir) function(copy_citron_FFmpeg_deps target_dir)
include(WindowsCopyFiles) include(WindowsCopyFiles)
set(DLL_DEST "$<TARGET_FILE_DIR:${target_dir}>/") set(DLL_DEST "$<TARGET_FILE_DIR:${target_dir}>/")
file(READ "${FFmpeg_PATH}/requirements.txt" FFmpeg_REQUIRED_DLLS) file(READ "${FFmpeg_PATH}/requirements.txt" FFmpeg_REQUIRED_DLLS)
string(STRIP "${FFmpeg_REQUIRED_DLLS}" FFmpeg_REQUIRED_DLLS) string(STRIP "${FFmpeg_REQUIRED_DLLS}" FFmpeg_REQUIRED_DLLS)
windows_copy_files(${target_dir} ${FFmpeg_LIBRARY_DIR} ${DLL_DEST} ${FFmpeg_REQUIRED_DLLS}) windows_copy_files(${target_dir} ${FFmpeg_LIBRARY_DIR} ${DLL_DEST} ${FFmpeg_REQUIRED_DLLS})
endfunction(copy_yuzu_FFmpeg_deps) endfunction(copy_citron_FFmpeg_deps)

View file

@ -1,7 +1,7 @@
# SPDX-FileCopyrightText: 2016 Citra Emulator Project # SPDX-FileCopyrightText: 2016 Citra Emulator Project
# SPDX-License-Identifier: GPL-2.0-or-later # SPDX-License-Identifier: GPL-2.0-or-later
function(copy_yuzu_Qt5_deps target_dir) function(copy_citron_Qt5_deps target_dir)
include(WindowsCopyFiles) include(WindowsCopyFiles)
if (MSVC) if (MSVC)
set(DLL_DEST "$<TARGET_FILE_DIR:${target_dir}>/") set(DLL_DEST "$<TARGET_FILE_DIR:${target_dir}>/")
@ -29,12 +29,12 @@ function(copy_yuzu_Qt5_deps target_dir)
Qt5Widgets$<$<CONFIG:Debug>:d>.* Qt5Widgets$<$<CONFIG:Debug>:d>.*
Qt5Network$<$<CONFIG:Debug>:d>.* Qt5Network$<$<CONFIG:Debug>:d>.*
) )
if (YUZU_USE_QT_MULTIMEDIA) if (CITRON_USE_QT_MULTIMEDIA)
windows_copy_files(${target_dir} ${Qt5_DLL_DIR} ${DLL_DEST} windows_copy_files(${target_dir} ${Qt5_DLL_DIR} ${DLL_DEST}
Qt5Multimedia$<$<CONFIG:Debug>:d>.* Qt5Multimedia$<$<CONFIG:Debug>:d>.*
) )
endif() endif()
if (YUZU_USE_QT_WEB_ENGINE) if (CITRON_USE_QT_WEB_ENGINE)
windows_copy_files(${target_dir} ${Qt5_DLL_DIR} ${DLL_DEST} windows_copy_files(${target_dir} ${Qt5_DLL_DIR} ${DLL_DEST}
Qt5Network$<$<CONFIG:Debug>:d>.* Qt5Network$<$<CONFIG:Debug>:d>.*
Qt5Positioning$<$<CONFIG:Debug>:d>.* Qt5Positioning$<$<CONFIG:Debug>:d>.*
@ -57,13 +57,13 @@ function(copy_yuzu_Qt5_deps target_dir)
qtwebengine_resources_200p.pak qtwebengine_resources_200p.pak
) )
endif () endif ()
windows_copy_files(yuzu ${Qt5_PLATFORMS_DIR} ${PLATFORMS} qwindows$<$<CONFIG:Debug>:d>.*) windows_copy_files(citron ${Qt5_PLATFORMS_DIR} ${PLATFORMS} qwindows$<$<CONFIG:Debug>:d>.*)
windows_copy_files(yuzu ${Qt5_STYLES_DIR} ${STYLES} qwindowsvistastyle$<$<CONFIG:Debug>:d>.*) windows_copy_files(citron ${Qt5_STYLES_DIR} ${STYLES} qwindowsvistastyle$<$<CONFIG:Debug>:d>.*)
windows_copy_files(yuzu ${Qt5_IMAGEFORMATS_DIR} ${IMAGEFORMATS} windows_copy_files(citron ${Qt5_IMAGEFORMATS_DIR} ${IMAGEFORMATS}
qjpeg$<$<CONFIG:Debug>:d>.* qjpeg$<$<CONFIG:Debug>:d>.*
qgif$<$<CONFIG:Debug>:d>.* qgif$<$<CONFIG:Debug>:d>.*
) )
windows_copy_files(yuzu ${Qt5_MEDIASERVICE_DIR} ${MEDIASERVICE} windows_copy_files(citron ${Qt5_MEDIASERVICE_DIR} ${MEDIASERVICE}
dsengine$<$<CONFIG:Debug>:d>.* dsengine$<$<CONFIG:Debug>:d>.*
wmfengine$<$<CONFIG:Debug>:d>.* wmfengine$<$<CONFIG:Debug>:d>.*
) )
@ -119,7 +119,7 @@ function(copy_yuzu_Qt5_deps target_dir)
endif() endif()
# Create an empty qt.conf file. Qt will detect that this file exists, and use the folder that its in as the root folder. # Create an empty qt.conf file. Qt will detect that this file exists, and use the folder that its in as the root folder.
# This way it'll look for plugins in the root/plugins/ folder # This way it'll look for plugins in the root/plugins/ folder
add_custom_command(TARGET yuzu POST_BUILD add_custom_command(TARGET citron POST_BUILD
COMMAND ${CMAKE_COMMAND} -E touch ${DLL_DEST}qt.conf COMMAND ${CMAKE_COMMAND} -E touch ${DLL_DEST}qt.conf
) )
endfunction(copy_yuzu_Qt5_deps) endfunction(copy_citron_Qt5_deps)

View file

@ -1,8 +1,8 @@
# SPDX-FileCopyrightText: 2016 Citra Emulator Project # SPDX-FileCopyrightText: 2016 Citra Emulator Project
# SPDX-License-Identifier: GPL-2.0-or-later # SPDX-License-Identifier: GPL-2.0-or-later
function(copy_yuzu_SDL_deps target_dir) function(copy_citron_SDL_deps target_dir)
include(WindowsCopyFiles) include(WindowsCopyFiles)
set(DLL_DEST "$<TARGET_FILE_DIR:${target_dir}>/") set(DLL_DEST "$<TARGET_FILE_DIR:${target_dir}>/")
windows_copy_files(${target_dir} ${SDL2_DLL_DIR} ${DLL_DEST} SDL2.dll) windows_copy_files(${target_dir} ${SDL2_DLL_DIR} ${DLL_DEST} SDL2.dll)
endfunction(copy_yuzu_SDL_deps) endfunction(copy_citron_SDL_deps)

View file

@ -1,4 +1,4 @@
# SPDX-FileCopyrightText: 2017 yuzu Emulator Project # SPDX-FileCopyrightText: 2017 yuzu Emulator Project & 2025 citron Homebrew Project
# SPDX-License-Identifier: GPL-2.0-or-later # SPDX-License-Identifier: GPL-2.0-or-later
# This function downloads a binary library package from our external repo. # This function downloads a binary library package from our external repo.
@ -7,7 +7,7 @@
# prefix_var: name of a variable which will be set with the path to the extracted contents # prefix_var: name of a variable which will be set with the path to the extracted contents
function(download_bundled_external remote_path lib_name prefix_var) function(download_bundled_external remote_path lib_name prefix_var)
set(package_base_url "https://github.com/yuzu-emu/") set(package_base_url "https://github.com/yuzu-mirror/")
set(package_repo "no_platform") set(package_repo "no_platform")
set(package_extension "no_platform") set(package_extension "no_platform")
if (WIN32) if (WIN32)

View file

@ -19,7 +19,7 @@ if (LLVM_FOUND AND LLVM_Demangle_FOUND AND NOT TARGET LLVM::Demangle)
target_include_directories(LLVM::Demangle INTERFACE ${LLVM_INCLUDE_DIRS}) target_include_directories(LLVM::Demangle INTERFACE ${LLVM_INCLUDE_DIRS})
# prefer shared LLVM: https://github.com/llvm/llvm-project/issues/34593 # prefer shared LLVM: https://github.com/llvm/llvm-project/issues/34593
# but use ugly hack because llvm_config doesn't support interface library # but use ugly hack because llvm_config doesn't support interface library
add_library(_dummy_lib SHARED EXCLUDE_FROM_ALL src/yuzu/main.cpp) add_library(_dummy_lib SHARED EXCLUDE_FROM_ALL src/citron/main.cpp)
llvm_config(_dummy_lib USE_SHARED demangle) llvm_config(_dummy_lib USE_SHARED demangle)
get_target_property(LLVM_LIBRARIES _dummy_lib LINK_LIBRARIES) get_target_property(LLVM_LIBRARIES _dummy_lib LINK_LIBRARIES)
target_link_libraries(LLVM::Demangle INTERFACE ${LLVM_LIBRARIES}) target_link_libraries(LLVM::Demangle INTERFACE ${LLVM_LIBRARIES})

View file

@ -1,4 +1,4 @@
# SPDX-FileCopyrightText: 2022 yuzu Emulator Project # SPDX-FileCopyrightText: 2022 yuzu Emulator Project & 2025 citron Homebrew Project
# SPDX-License-Identifier: GPL-2.0-or-later # SPDX-License-Identifier: GPL-2.0-or-later
find_package(PkgConfig QUIET) find_package(PkgConfig QUIET)

View file

@ -1,4 +1,4 @@
# SPDX-FileCopyrightText: 2023 yuzu Emulator Project # SPDX-FileCopyrightText: 2023 yuzu Emulator Project & 2025 citron Homebrew Project
# SPDX-License-Identifier: GPL-2.0-or-later # SPDX-License-Identifier: GPL-2.0-or-later
find_package(PkgConfig QUIET) find_package(PkgConfig QUIET)

View file

@ -1,4 +1,4 @@
# SPDX-FileCopyrightText: 2022 yuzu Emulator Project # SPDX-FileCopyrightText: 2022 yuzu Emulator Project & 2025 citron Homebrew Project
# SPDX-License-Identifier: GPL-2.0-or-later # SPDX-License-Identifier: GPL-2.0-or-later
include(FindPackageHandleStandardArgs) include(FindPackageHandleStandardArgs)

View file

@ -1,4 +1,4 @@
# SPDX-FileCopyrightText: 2022 yuzu Emulator Project # SPDX-FileCopyrightText: 2022 yuzu Emulator Project & 2025 citron Homebrew Project
# SPDX-License-Identifier: GPL-2.0-or-later # SPDX-License-Identifier: GPL-2.0-or-later
include(FindPackageHandleStandardArgs) include(FindPackageHandleStandardArgs)

View file

@ -1,4 +1,4 @@
# SPDX-FileCopyrightText: 2019 yuzu Emulator Project # SPDX-FileCopyrightText: 2019 yuzu Emulator Project & 2025 citron Homebrew Project
# SPDX-License-Identifier: GPL-2.0-or-later # SPDX-License-Identifier: GPL-2.0-or-later
# Gets a UTC timestamp and sets the provided variable to it # Gets a UTC timestamp and sets the provided variable to it
@ -27,7 +27,7 @@ set(BUILD_VERSION "0")
set(BUILD_ID ${DISPLAY_VERSION}) set(BUILD_ID ${DISPLAY_VERSION})
if (BUILD_REPOSITORY) if (BUILD_REPOSITORY)
# regex capture the string nightly or canary into CMAKE_MATCH_1 # regex capture the string nightly or canary into CMAKE_MATCH_1
string(REGEX MATCH "yuzu-emu/yuzu-?(.*)" OUTVAR ${BUILD_REPOSITORY}) string(REGEX MATCH "citron-emu/citron-?(.*)" OUTVAR ${BUILD_REPOSITORY})
if ("${CMAKE_MATCH_COUNT}" GREATER 0) if ("${CMAKE_MATCH_COUNT}" GREATER 0)
# capitalize the first letter of each word in the repo name. # capitalize the first letter of each word in the repo name.
string(REPLACE "-" ";" REPO_NAME_LIST ${CMAKE_MATCH_1}) string(REPLACE "-" ";" REPO_NAME_LIST ${CMAKE_MATCH_1})

View file

@ -1,4 +1,4 @@
# SPDX-FileCopyrightText: 2022 yuzu Emulator Project # SPDX-FileCopyrightText: 2022 yuzu Emulator Project & 2025 citron Homebrew Project
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
# buildcache wrapper # buildcache wrapper

View file

@ -1,4 +1,4 @@
# SPDX-FileCopyrightText: 2022 yuzu Emulator Project # SPDX-FileCopyrightText: 2022 yuzu Emulator Project & 2025 citron Homebrew Project
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
set(MINGW_PREFIX /usr/x86_64-w64-mingw32/) set(MINGW_PREFIX /usr/x86_64-w64-mingw32/)

View file

@ -1,4 +1,4 @@
# SPDX-FileCopyrightText: 2018 yuzu Emulator Project # SPDX-FileCopyrightText: 2018 yuzu Emulator Project & 2025 citron Homebrew Project
# SPDX-License-Identifier: GPL-2.0-or-later # SPDX-License-Identifier: GPL-2.0-or-later
# This file provides the function windows_copy_files. # This file provides the function windows_copy_files.

View file

@ -35,7 +35,7 @@ DOXYFILE_ENCODING = UTF-8
# title of most generated pages and in a few other places. # title of most generated pages and in a few other places.
# The default value is: My Project. # The default value is: My Project.
PROJECT_NAME = yuzu PROJECT_NAME = citron
# The PROJECT_NUMBER tag can be used to enter a project or revision number. This # The PROJECT_NUMBER tag can be used to enter a project or revision number. This
# could be handy for archiving the generated documentation or if some version # could be handy for archiving the generated documentation or if some version

View file

@ -1,8 +1,8 @@
# SPDX-FileCopyrightText: 2023 yuzu Emulator Project # SPDX-FileCopyrightText: 2023 yuzu Emulator Project & 2025 citron Homebrew Project
# SPDX-License-Identifier: GPL-2.0-or-later # SPDX-License-Identifier: GPL-2.0-or-later
# Allow systemd-logind to manage user access to hidraw with this file # Allow systemd-logind to manage user access to hidraw with this file
# On most systems, this file should be installed to /etc/udev/rules.d/72-yuzu-input.rules # On most systems, this file should be installed to /etc/udev/rules.d/72-citron-input.rules
# Consult your distro if this is not the case # Consult your distro if this is not the case
# Switch Pro Controller (USB/Bluetooth) # Switch Pro Controller (USB/Bluetooth)

View file

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- <!--
SPDX-FileCopyrightText: 2020 yuzu Emulator Project SPDX-FileCopyrightText: 2020 yuzu Emulator Project & 2025 citron Homebrew Project
SPDX-License-Identifier: GPL-2.0-or-later SPDX-License-Identifier: GPL-2.0-or-later
--> -->

View file

@ -1,5 +1,5 @@
<!-- <!--
SPDX-FileCopyrightText: 2018 yuzu Emulator Project SPDX-FileCopyrightText: 2018 yuzu Emulator Project & 2025 citron Homebrew Project
SPDX-License-Identifier: GPL-2.0-or-later SPDX-License-Identifier: GPL-2.0-or-later
--> -->

View file

@ -10,7 +10,7 @@ Qt has "Translation Rules for Plurals", small example
// i = 2: // i = 2:
Building: 2 shaders Building: 2 shaders
For yuzu the source language used is English, for all other languages handling of plurals is handled by Qt and the translation collaboration site. Handling plurals in the source language (English) requires special consideration. For citron the source language used is English, for all other languages handling of plurals is handled by Qt and the translation collaboration site. Handling plurals in the source language (English) requires special consideration.
With CMake flag GENERATE_QT_TRANSLATION a generated_en.ts file is created from the source. It ignored by git (`.gitignore` in the project root). It is placed in this directory so that the relative refrences with the source code is correct. With CMake flag GENERATE_QT_TRANSLATION a generated_en.ts file is created from the source. It ignored by git (`.gitignore` in the project root). It is placed in this directory so that the relative refrences with the source code is correct.

View file

@ -4,7 +4,7 @@
<context> <context>
<name>GMainWindow</name> <name>GMainWindow</name>
<message numerus="yes"> <message numerus="yes">
<location filename="../../src/yuzu/main.cpp" line="2322"/> <location filename="../../src/citron/main.cpp" line="2322"/>
<source>%n file(s) remaining</source> <source>%n file(s) remaining</source>
<translation> <translation>
<numerusform>%n file remaining</numerusform> <numerusform>%n file remaining</numerusform>
@ -12,7 +12,7 @@
</translation> </translation>
</message> </message>
<message numerus="yes"> <message numerus="yes">
<location filename="../../src/yuzu/main.cpp" line="2377"/> <location filename="../../src/citron/main.cpp" line="2377"/>
<source>%n file(s) were newly installed <source>%n file(s) were newly installed
</source> </source>
<translation> <translation>
@ -23,7 +23,7 @@
</translation> </translation>
</message> </message>
<message numerus="yes"> <message numerus="yes">
<location filename="../../src/yuzu/main.cpp" line="2380"/> <location filename="../../src/citron/main.cpp" line="2380"/>
<source>%n file(s) were overwritten <source>%n file(s) were overwritten
</source> </source>
<translation> <translation>
@ -34,7 +34,7 @@
</translation> </translation>
</message> </message>
<message numerus="yes"> <message numerus="yes">
<location filename="../../src/yuzu/main.cpp" line="2382"/> <location filename="../../src/citron/main.cpp" line="2382"/>
<source>%n file(s) failed to install <source>%n file(s) failed to install
</source> </source>
<translation> <translation>
@ -45,7 +45,7 @@
</translation> </translation>
</message> </message>
<message numerus="yes"> <message numerus="yes">
<location filename="../../src/yuzu/main.cpp" line="3264"/> <location filename="../../src/citron/main.cpp" line="3264"/>
<source>Building: %n shader(s)</source> <source>Building: %n shader(s)</source>
<translation> <translation>
<numerusform>Building: %n shader</numerusform> <numerusform>Building: %n shader</numerusform>
@ -56,7 +56,7 @@
<context> <context>
<name>GameListSearchField</name> <name>GameListSearchField</name>
<message numerus="yes"> <message numerus="yes">
<location filename="../../src/yuzu/game_list.cpp" line="87"/> <location filename="../../src/citron/game_list.cpp" line="87"/>
<source>%1 of %n result(s)</source> <source>%1 of %n result(s)</source>
<translation> <translation>
<numerusform>%1 of %n result</numerusform> <numerusform>%1 of %n result</numerusform>

View file

@ -1,5 +1,5 @@
<!-- <!--
SPDX-FileCopyrightText: 2020 yuzu Emulator Project SPDX-FileCopyrightText: 2020 yuzu Emulator Project & 2025 citron Homebrew Project
SPDX-License-Identifier: GPL-2.0-or-later SPDX-License-Identifier: GPL-2.0-or-later
--> -->

View file

@ -1,5 +1,5 @@
<!-- <!--
SPDX-FileCopyrightText: 2021 yuzu Emulator Project SPDX-FileCopyrightText: 2021 yuzu Emulator Project & 2025 citron Homebrew Project
SPDX-License-Identifier: GPL-2.0-or-later SPDX-License-Identifier: GPL-2.0-or-later
--> -->

View file

@ -1,13 +1,13 @@
[main] [main]
host = https://www.transifex.com host = https://www.transifex.com
[o:yuzu-emulator:p:yuzu:r:emulator] [o:citron-emulator:p:citron:r:emulator]
file_filter = <lang>.ts file_filter = <lang>.ts
source_file = en.ts source_file = en.ts
source_lang = en source_lang = en
type = QT type = QT
[o:yuzu-emulator:p:yuzu:r:yuzu-android] [o:citron-emulator:p:citron:r:citron-android]
file_filter = ../../src/android/app/src/main/res/values-<lang>/strings.xml file_filter = ../../src/android/app/src/main/res/values-<lang>/strings.xml
source_file = ../../src/android/app/src/main/res/values/strings.xml source_file = ../../src/android/app/src/main/res/values/strings.xml
type = ANDROID type = ANDROID

View file

@ -1,3 +1,3 @@
This directory stores translation patches (TS files) for yuzu Qt frontend. This directory is linked with [yuzu project on transifex](https://www.transifex.com/yuzu-emulator/yuzu), so you can update the translation by executing `tx pull -t -a`. If you want to contribute to the translation, please go the transifex link and submit your translation there. This directory on the main repo will be synchronized with transifex periodically. This directory stores translation patches (TS files) for citron Qt frontend. This directory is linked with [citron project on transifex](https://www.transifex.com/citron-emulator/citron), so you can update the translation by executing `tx pull -t -a`. If you want to contribute to the translation, please go the transifex link and submit your translation there. This directory on the main repo will be synchronized with transifex periodically.
Do not directly open PRs on github to modify the translation. Do not directly open PRs on github to modify the translation.

4030
dist/languages/ar.ts vendored

File diff suppressed because it is too large Load diff

4088
dist/languages/ca.ts vendored

File diff suppressed because it is too large Load diff

4076
dist/languages/cs.ts vendored

File diff suppressed because it is too large Load diff

4072
dist/languages/da.ts vendored

File diff suppressed because it is too large Load diff

4102
dist/languages/de.ts vendored

File diff suppressed because it is too large Load diff

4054
dist/languages/el.ts vendored

File diff suppressed because it is too large Load diff

4108
dist/languages/es.ts vendored

File diff suppressed because it is too large Load diff

2910
dist/languages/fi.ts vendored

File diff suppressed because it is too large Load diff

4110
dist/languages/fr.ts vendored

File diff suppressed because it is too large Load diff

4100
dist/languages/hu.ts vendored

File diff suppressed because it is too large Load diff

4080
dist/languages/id.ts vendored

File diff suppressed because it is too large Load diff

4102
dist/languages/it.ts vendored

File diff suppressed because it is too large Load diff

4096
dist/languages/ja_JP.ts vendored

File diff suppressed because it is too large Load diff

4098
dist/languages/ko_KR.ts vendored

File diff suppressed because it is too large Load diff

4102
dist/languages/nb.ts vendored

File diff suppressed because it is too large Load diff

4098
dist/languages/nl.ts vendored

File diff suppressed because it is too large Load diff

4100
dist/languages/pl.ts vendored

File diff suppressed because it is too large Load diff

4108
dist/languages/pt_BR.ts vendored

File diff suppressed because it is too large Load diff

4108
dist/languages/pt_PT.ts vendored

File diff suppressed because it is too large Load diff

4108
dist/languages/ru_RU.ts vendored

File diff suppressed because it is too large Load diff

4070
dist/languages/sv.ts vendored

File diff suppressed because it is too large Load diff

4096
dist/languages/tr_TR.ts vendored

File diff suppressed because it is too large Load diff

4098
dist/languages/uk.ts vendored

File diff suppressed because it is too large Load diff

4098
dist/languages/vi.ts vendored

File diff suppressed because it is too large Load diff

4098
dist/languages/vi_VN.ts vendored

File diff suppressed because it is too large Load diff

4114
dist/languages/zh_CN.ts vendored

File diff suppressed because it is too large Load diff

4112
dist/languages/zh_TW.ts vendored

File diff suppressed because it is too large Load diff

View file

@ -1,16 +1,16 @@
# SPDX-FileCopyrightText: 2018 yuzu Emulator Project # SPDX-FileCopyrightText: 2018 yuzu Emulator Project & 2025 citron Homebrew Project
# SPDX-License-Identifier: GPL-2.0-or-later # SPDX-License-Identifier: GPL-2.0-or-later
[Desktop Entry] [Desktop Entry]
Version=1.0 Version=1.0
Type=Application Type=Application
Name=yuzu Name=citron
GenericName=Switch Emulator GenericName=Switch Emulator
Comment=Nintendo Switch video game console emulator Comment=Nintendo Switch video game console emulator
Icon=org.yuzu_emu.yuzu Icon=org.citron_emu.citron
TryExec=yuzu TryExec=citron
Exec=yuzu %f Exec=citron %f
Categories=Game;Emulator;Qt; Categories=Game;Emulator;Qt;
MimeType=application/x-nx-nro;application/x-nx-nso;application/x-nx-nsp;application/x-nx-xci; MimeType=application/x-nx-nro;application/x-nx-nso;application/x-nx-nsp;application/x-nx-xci;
Keywords=Nintendo;Switch; Keywords=Nintendo;Switch;
StartupWMClass=yuzu StartupWMClass=citron

View file

@ -1,19 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!-- <!--
SPDX-FileCopyrightText: 2021 yuzu Emulator Project SPDX-FileCopyrightText: 2021 yuzu Emulator Project & 2025 citron Homebrew Project
SPDX-License-Identifier: CC0-1.0 SPDX-License-Identifier: CC0-1.0
--> -->
<component type="desktop-application"> <component type="desktop-application">
<id>org.yuzu_emu.yuzu</id> <id>org.citron_emu.citron</id>
<metadata_license>CC0-1.0</metadata_license> <metadata_license>CC0-1.0</metadata_license>
<name>yuzu</name> <name>citron</name>
<summary>Nintendo Switch emulator</summary> <summary>Nintendo Switch emulator</summary>
<description> <description>
<p>yuzu is the world's most popular, open-source, Nintendo Switch emulator — started by the creators of Citra.</p> <p>citron is the world's most popular, open-source, Nintendo Switch emulator — started by the creators of Citra.</p>
<p>The emulator is capable of running most commercial games at full speed, provided you meet the necessary hardware requirements.</p> <p>The emulator is capable of running most commercial games at full speed, provided you meet the necessary hardware requirements.</p>
<p>For a full list of games yuzu support, please visit our Compatibility page.</p> <p>For a full list of games citron support, please visit our Compatibility page.</p>
<p>Check out our website for the latest news on exciting features, monthly progress reports, and more!</p> <p>Check out our website for the latest news on exciting features, monthly progress reports, and more!</p>
</description> </description>
<categories> <categories>
@ -24,19 +24,19 @@ SPDX-License-Identifier: CC0-1.0
<keyword>switch</keyword> <keyword>switch</keyword>
<keyword>emulator</keyword> <keyword>emulator</keyword>
</keywords> </keywords>
<url type="homepage">https://yuzu-emu.org/</url> <url type="homepage">https://citron-emu.org/</url>
<url type="bugtracker">https://github.com/yuzu-emu/yuzu/issues</url> <url type="bugtracker">https://github.com/citron-emu/citron/issues</url>
<url type="faq">https://yuzu-emu.org/wiki/faq/</url> <url type="faq">https://citron-emu.org/wiki/faq/</url>
<url type="help">https://yuzu-emu.org/wiki/home/</url> <url type="help">https://citron-emu.org/wiki/home/</url>
<url type="donation">https://yuzu-emu.org/donate/</url> <url type="donation">https://citron-emu.org/donate/</url>
<url type="translate">https://www.transifex.com/projects/p/yuzu</url> <url type="translate">https://www.transifex.com/projects/p/citron</url>
<url type="contact">https://community.citra-emu.org/</url> <url type="contact">https://community.citra-emu.org/</url>
<url type="vcs-browser">https://github.com/yuzu-emu/yuzu</url> <url type="vcs-browser">https://github.com/citron-emu/citron</url>
<url type="contribute">https://yuzu-emu.org/wiki/contributing/</url> <url type="contribute">https://citron-emu.org/wiki/contributing/</url>
<launchable type="desktop-id">org.yuzu_emu.yuzu.desktop</launchable> <launchable type="desktop-id">org.citron_emu.citron.desktop</launchable>
<provides> <provides>
<binary>yuzu</binary> <binary>citron</binary>
<binary>yuzu-cmd</binary> <binary>citron-cmd</binary>
</provides> </provides>
<supports> <supports>
<control>pointing</control> <control>pointing</control>
@ -50,13 +50,13 @@ SPDX-License-Identifier: CC0-1.0
<memory>16384</memory> <memory>16384</memory>
</recommends> </recommends>
<project_license>GPL-3.0-or-later</project_license> <project_license>GPL-3.0-or-later</project_license>
<developer_name>yuzu Emulator Team</developer_name> <developer_name>citron Emulator Team</developer_name>
<content_rating type="oars-1.0"/> <content_rating type="oars-1.0"/>
<screenshots> <screenshots>
<screenshot type="default"><image>https://raw.githubusercontent.com/yuzu-emu/yuzu-emu.github.io/master/images/screenshots/001-Super%20Mario%20Odyssey%20.png</image></screenshot> <screenshot type="default"><image>https://raw.githubusercontent.com/citron-emu/citron-emu.github.io/master/images/screenshots/001-Super%20Mario%20Odyssey%20.png</image></screenshot>
<screenshot><image>https://raw.githubusercontent.com/yuzu-emu/yuzu-emu.github.io/master/images/screenshots/004-The%20Legend%20of%20Zelda%20Skyward%20Sword%20HD.png</image></screenshot> <screenshot><image>https://raw.githubusercontent.com/citron-emu/citron-emu.github.io/master/images/screenshots/004-The%20Legend%20of%20Zelda%20Skyward%20Sword%20HD.png</image></screenshot>
<screenshot><image>https://raw.githubusercontent.com/yuzu-emu/yuzu-emu.github.io/master/images/screenshots/007-Pokemon%20Sword.png</image></screenshot> <screenshot><image>https://raw.githubusercontent.com/citron-emu/citron-emu.github.io/master/images/screenshots/007-Pokemon%20Sword.png</image></screenshot>
<screenshot><image>https://raw.githubusercontent.com/yuzu-emu/yuzu-emu.github.io/master/images/screenshots/010-Hyrule%20Warriors%20Age%20of%20Calamity.png</image></screenshot> <screenshot><image>https://raw.githubusercontent.com/citron-emu/citron-emu.github.io/master/images/screenshots/010-Hyrule%20Warriors%20Age%20of%20Calamity.png</image></screenshot>
<screenshot><image>https://raw.githubusercontent.com/yuzu-emu/yuzu-emu.github.io/master/images/screenshots/039-Pok%C3%A9mon%20Mystery%20Dungeon%20Rescue%20Team%20DX.png.png.png</image></screenshot> <screenshot><image>https://raw.githubusercontent.com/citron-emu/citron-emu.github.io/master/images/screenshots/039-Pok%C3%A9mon%20Mystery%20Dungeon%20Rescue%20Team%20DX.png.png.png</image></screenshot>
</screenshots> </screenshots>
</component> </component>

View file

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!-- <!--
SPDX-FileCopyrightText: 2018 yuzu Emulator Project SPDX-FileCopyrightText: 2018 yuzu Emulator Project & 2025 citron Homebrew Project
SPDX-License-Identifier: GPL-2.0-or-later SPDX-License-Identifier: GPL-2.0-or-later
--> -->
@ -9,7 +9,7 @@ SPDX-License-Identifier: GPL-2.0-or-later
<mime-type type="application/x-nx-nro"> <mime-type type="application/x-nx-nro">
<comment>Nintendo Switch homebrew executable</comment> <comment>Nintendo Switch homebrew executable</comment>
<acronym>NRO</acronym> <acronym>NRO</acronym>
<icon name="org.yuzu_emu.yuzu"/> <icon name="org.citron_emu.citron"/>
<glob pattern="*.nro"/> <glob pattern="*.nro"/>
<magic><match value="NRO" type="string" offset="16"/></magic> <magic><match value="NRO" type="string" offset="16"/></magic>
</mime-type> </mime-type>
@ -17,7 +17,7 @@ SPDX-License-Identifier: GPL-2.0-or-later
<mime-type type="application/x-nx-nso"> <mime-type type="application/x-nx-nso">
<comment>Nintendo Switch homebrew executable</comment> <comment>Nintendo Switch homebrew executable</comment>
<acronym>NSO</acronym> <acronym>NSO</acronym>
<icon name="org.yuzu_emu.yuzu"/> <icon name="org.citron_emu.citron"/>
<glob pattern="*.nso"/> <glob pattern="*.nso"/>
<magic><match value="NSO" type="string" offset="0"/></magic> <magic><match value="NSO" type="string" offset="0"/></magic>
</mime-type> </mime-type>
@ -25,7 +25,7 @@ SPDX-License-Identifier: GPL-2.0-or-later
<mime-type type="application/x-nx-nsp"> <mime-type type="application/x-nx-nsp">
<comment>Nintendo Switch Package</comment> <comment>Nintendo Switch Package</comment>
<acronym>NSP</acronym> <acronym>NSP</acronym>
<icon name="org.yuzu_emu.yuzu"/> <icon name="org.citron_emu.citron"/>
<glob pattern="*.nsp"/> <glob pattern="*.nsp"/>
<magic><match value="PFS" type="string" offset="0"/></magic> <magic><match value="PFS" type="string" offset="0"/></magic>
</mime-type> </mime-type>
@ -33,7 +33,7 @@ SPDX-License-Identifier: GPL-2.0-or-later
<mime-type type="application/x-nx-xci"> <mime-type type="application/x-nx-xci">
<comment>Nintendo Switch Card Image</comment> <comment>Nintendo Switch Card Image</comment>
<acronym>XCI</acronym> <acronym>XCI</acronym>
<icon name="org.yuzu_emu.yuzu"/> <icon name="org.citron_emu.citron"/>
<glob pattern="*.xci"/> <glob pattern="*.xci"/>
</mime-type> </mime-type>
</mime-info> </mime-info>

View file

@ -1,5 +1,5 @@
<!-- <!--
SPDX-FileCopyrightText: 2019 yuzu Emulator Project SPDX-FileCopyrightText: 2019 yuzu Emulator Project & 2025 citron Homebrew Project
SPDX-License-Identifier: GPL-2.0-or-later SPDX-License-Identifier: GPL-2.0-or-later
--> -->

View file

@ -1,5 +1,5 @@
<!-- <!--
SPDX-FileCopyrightText: 2019 yuzu Emulator Project SPDX-FileCopyrightText: 2019 yuzu Emulator Project & 2025 citron Homebrew Project
SPDX-License-Identifier: GPL-2.0-or-later SPDX-License-Identifier: GPL-2.0-or-later
--> -->

View file

@ -1,5 +1,5 @@
<!-- <!--
SPDX-FileCopyrightText: 2020 yuzu Emulator Project SPDX-FileCopyrightText: 2020 yuzu Emulator Project & 2025 citron Homebrew Project
SPDX-License-Identifier: GPL-2.0-or-later SPDX-License-Identifier: GPL-2.0-or-later
--> -->

View file

@ -1,5 +1,5 @@
<!-- <!--
SPDX-FileCopyrightText: 2018 yuzu Emulator Project SPDX-FileCopyrightText: 2018 yuzu Emulator Project & 2025 citron Homebrew Project
SPDX-License-Identifier: GPL-2.0-or-later SPDX-License-Identifier: GPL-2.0-or-later
--> -->
@ -18,7 +18,7 @@ SPDX-License-Identifier: GPL-2.0-or-later
<file alias="48x48/sd_card.png">icons/48x48/sd_card.png</file> <file alias="48x48/sd_card.png">icons/48x48/sd_card.png</file>
<file alias="48x48/star.png">icons/48x48/star.png</file> <file alias="48x48/star.png">icons/48x48/star.png</file>
<file alias="256x256/plus_folder.png">icons/256x256/plus_folder.png</file> <file alias="256x256/plus_folder.png">icons/256x256/plus_folder.png</file>
<file alias="256x256/yuzu.png">icons/256x256/yuzu.png</file> <file alias="256x256/citron.png">icons/256x256/citron.png</file>
</qresource> </qresource>
<qresource prefix="default"> <qresource prefix="default">
<file>style.qss</file> <file>style.qss</file>

View file

@ -1,5 +1,5 @@
<!-- <!--
SPDX-FileCopyrightText: 2022 yuzu Emulator Project SPDX-FileCopyrightText: 2022 yuzu Emulator Project & 2025 citron Homebrew Project
SPDX-License-Identifier: GPL-2.0-or-later SPDX-License-Identifier: GPL-2.0-or-later
--> -->
<RCC> <RCC>

View file

@ -1,5 +1,5 @@
/* /*
* SPDX-FileCopyrightText: 2018 yuzu Emulator Project * SPDX-FileCopyrightText: 2018 yuzu Emulator Project & 2025 citron Homebrew Project
* SPDX-License-Identifier: GPL-2.0-or-later * SPDX-License-Identifier: GPL-2.0-or-later
*/ */
QAbstractSpinBox { QAbstractSpinBox {

View file

@ -63,11 +63,11 @@ if (ENABLE_LIBUSB AND NOT TARGET libusb::usb)
endif() endif()
# SDL2 # SDL2
if (YUZU_USE_EXTERNAL_SDL2) if (CITRON_USE_EXTERNAL_SDL2)
if (NOT WIN32) if (NOT WIN32)
# Yuzu itself needs: Atomic Audio Events Joystick Haptic Sensor Threads Timers # Citron itself needs: Atomic Audio Events Joystick Haptic Sensor Threads Timers
# Since 2.0.18 Atomic+Threads required for HIDAPI/libusb (see https://github.com/libsdl-org/SDL/issues/5095) # Since 2.0.18 Atomic+Threads required for HIDAPI/libusb (see https://github.com/libsdl-org/SDL/issues/5095)
# Yuzu-cmd also needs: Video (depends on Loadso/Dlopen) # Citron-cmd also needs: Video (depends on Loadso/Dlopen)
# CPUinfo also required for SDL Audio, at least until 2.28.0 (see https://github.com/libsdl-org/SDL/issues/7809) # CPUinfo also required for SDL Audio, at least until 2.28.0 (see https://github.com/libsdl-org/SDL/issues/7809)
set(SDL_UNUSED_SUBSYSTEMS set(SDL_UNUSED_SUBSYSTEMS
File Filesystem File Filesystem
@ -142,7 +142,7 @@ if (NOT TARGET Opus::opus)
endif() endif()
# FFMpeg # FFMpeg
if (YUZU_USE_BUNDLED_FFMPEG) if (CITRON_USE_BUNDLED_FFMPEG)
add_subdirectory(ffmpeg) add_subdirectory(ffmpeg)
set(FFmpeg_PATH "${FFmpeg_PATH}" PARENT_SCOPE) set(FFmpeg_PATH "${FFmpeg_PATH}" PARENT_SCOPE)
set(FFmpeg_LDFLAGS "${FFmpeg_LDFLAGS}" PARENT_SCOPE) set(FFmpeg_LDFLAGS "${FFmpeg_LDFLAGS}" PARENT_SCOPE)
@ -151,12 +151,12 @@ if (YUZU_USE_BUNDLED_FFMPEG)
endif() endif()
# Vulkan-Headers # Vulkan-Headers
if (YUZU_USE_EXTERNAL_VULKAN_HEADERS) if (CITRON_USE_EXTERNAL_VULKAN_HEADERS)
add_subdirectory(Vulkan-Headers) add_subdirectory(Vulkan-Headers)
endif() endif()
# Vulkan-Utility-Libraries # Vulkan-Utility-Libraries
if (YUZU_USE_EXTERNAL_VULKAN_UTILITY_LIBRARIES) if (CITRON_USE_EXTERNAL_VULKAN_UTILITY_LIBRARIES)
add_subdirectory(Vulkan-Utility-Libraries) add_subdirectory(Vulkan-Utility-Libraries)
endif() endif()
@ -210,7 +210,7 @@ endif()
# Breakpad # Breakpad
# https://github.com/microsoft/vcpkg/blob/master/ports/breakpad/CMakeLists.txt # https://github.com/microsoft/vcpkg/blob/master/ports/breakpad/CMakeLists.txt
if (YUZU_CRASH_DUMPS AND NOT TARGET libbreakpad_client) if (CITRON_CRASH_DUMPS AND NOT TARGET libbreakpad_client)
set(BREAKPAD_WIN32_DEFINES set(BREAKPAD_WIN32_DEFINES
NOMINMAX NOMINMAX
UNICODE UNICODE

View file

@ -1,4 +1,4 @@
# SPDX-FileCopyrightText: 2021 yuzu Emulator Project # SPDX-FileCopyrightText: 2021 yuzu Emulator Project & 2025 citron Homebrew Project
# SPDX-License-Identifier: GPL-2.0-or-later # SPDX-License-Identifier: GPL-2.0-or-later
if (NOT WIN32 AND NOT ANDROID) if (NOT WIN32 AND NOT ANDROID)
@ -143,7 +143,7 @@ if (NOT WIN32 AND NOT ANDROID)
) )
endif() endif()
# `configure` parameters builds only exactly what yuzu needs from FFmpeg # `configure` parameters builds only exactly what citron needs from FFmpeg
# `--disable-vdpau` is needed to avoid linking issues # `--disable-vdpau` is needed to avoid linking issues
set(FFmpeg_CC ${CMAKE_C_COMPILER_LAUNCHER} ${CMAKE_C_COMPILER}) set(FFmpeg_CC ${CMAKE_C_COMPILER_LAUNCHER} ${CMAKE_C_COMPILER})
set(FFmpeg_CXX ${CMAKE_CXX_COMPILER_LAUNCHER} ${CMAKE_CXX_COMPILER}) set(FFmpeg_CXX ${CMAKE_CXX_COMPILER_LAUNCHER} ${CMAKE_CXX_COMPILER})
@ -222,7 +222,7 @@ if (NOT WIN32 AND NOT ANDROID)
message(FATAL_ERROR "FFmpeg not found") message(FATAL_ERROR "FFmpeg not found")
endif() endif()
elseif(ANDROID) elseif(ANDROID)
# Use yuzu FFmpeg binaries # Use citron FFmpeg binaries
if (ARCHITECTURE_arm64) if (ARCHITECTURE_arm64)
set(FFmpeg_EXT_NAME "ffmpeg-android-v5.1.LTS-aarch64") set(FFmpeg_EXT_NAME "ffmpeg-android-v5.1.LTS-aarch64")
elseif (ARCHITECTURE_x86_64) elseif (ARCHITECTURE_x86_64)
@ -253,7 +253,7 @@ elseif(ANDROID)
set(FFmpeg_LIBRARIES "${FFmpeg_LIBRARIES}" PARENT_SCOPE) set(FFmpeg_LIBRARIES "${FFmpeg_LIBRARIES}" PARENT_SCOPE)
set(FFmpeg_INCLUDE_DIR "${FFmpeg_INCLUDE_DIR}" PARENT_SCOPE) set(FFmpeg_INCLUDE_DIR "${FFmpeg_INCLUDE_DIR}" PARENT_SCOPE)
elseif(WIN32) elseif(WIN32)
# Use yuzu FFmpeg binaries # Use citron FFmpeg binaries
set(FFmpeg_EXT_NAME "ffmpeg-6.0") set(FFmpeg_EXT_NAME "ffmpeg-6.0")
set(FFmpeg_PATH "${CMAKE_BINARY_DIR}/externals/${FFmpeg_EXT_NAME}") set(FFmpeg_PATH "${CMAKE_BINARY_DIR}/externals/${FFmpeg_EXT_NAME}")
download_bundled_external("ffmpeg/" ${FFmpeg_EXT_NAME} "") download_bundled_external("ffmpeg/" ${FFmpeg_EXT_NAME} "")

View file

@ -1,4 +1,4 @@
# SPDX-FileCopyrightText: 2020 yuzu Emulator Project # SPDX-FileCopyrightText: 2020 yuzu Emulator Project & 2025 citron Homebrew Project
# SPDX-License-Identifier: GPL-2.0-or-later # SPDX-License-Identifier: GPL-2.0-or-later
if (MINGW OR (${CMAKE_SYSTEM_NAME} MATCHES "Linux") OR APPLE) if (MINGW OR (${CMAKE_SYSTEM_NAME} MATCHES "Linux") OR APPLE)

View file

@ -1,5 +1,5 @@
/* /*
* SPDX-FileCopyrightText: 2020 yuzu Emulator Project * SPDX-FileCopyrightText: 2020 yuzu Emulator Project & 2025 citron Homebrew Project
* SPDX-License-Identifier: GPL-2.0-or-later * SPDX-License-Identifier: GPL-2.0-or-later
*/ */

View file

@ -1,4 +1,4 @@
# SPDX-FileCopyrightText: 2023 yuzu Emulator Project # SPDX-FileCopyrightText: 2023 yuzu Emulator Project & 2025 citron Homebrew Project
# SPDX-License-Identifier: GPL-2.0-or-later # SPDX-License-Identifier: GPL-2.0-or-later
set(NX_TZDB_INCLUDE_DIR "${CMAKE_CURRENT_BINARY_DIR}/include") set(NX_TZDB_INCLUDE_DIR "${CMAKE_CURRENT_BINARY_DIR}/include")
@ -32,7 +32,7 @@ set(NX_TZDB_ARCHIVE "${CMAKE_CURRENT_BINARY_DIR}/${NX_TZDB_VERSION}.zip")
set(NX_TZDB_ROMFS_DIR "${CMAKE_CURRENT_BINARY_DIR}/nx_tzdb") set(NX_TZDB_ROMFS_DIR "${CMAKE_CURRENT_BINARY_DIR}/nx_tzdb")
if ((NOT CAN_BUILD_NX_TZDB OR YUZU_DOWNLOAD_TIME_ZONE_DATA) AND NOT EXISTS ${NX_TZDB_ROMFS_DIR}) if ((NOT CAN_BUILD_NX_TZDB OR CITRON_DOWNLOAD_TIME_ZONE_DATA) AND NOT EXISTS ${NX_TZDB_ROMFS_DIR})
set(NX_TZDB_DOWNLOAD_URL "https://github.com/lat9nq/tzdb_to_nx/releases/download/${NX_TZDB_VERSION}/${NX_TZDB_VERSION}.zip") set(NX_TZDB_DOWNLOAD_URL "https://github.com/lat9nq/tzdb_to_nx/releases/download/${NX_TZDB_VERSION}/${NX_TZDB_VERSION}.zip")
message(STATUS "Downloading time zone data from ${NX_TZDB_DOWNLOAD_URL}...") message(STATUS "Downloading time zone data from ${NX_TZDB_DOWNLOAD_URL}...")
@ -48,7 +48,7 @@ if ((NOT CAN_BUILD_NX_TZDB OR YUZU_DOWNLOAD_TIME_ZONE_DATA) AND NOT EXISTS ${NX_
${NX_TZDB_ARCHIVE} ${NX_TZDB_ARCHIVE}
DESTINATION DESTINATION
${NX_TZDB_ROMFS_DIR}) ${NX_TZDB_ROMFS_DIR})
elseif (CAN_BUILD_NX_TZDB AND NOT YUZU_DOWNLOAD_TIME_ZONE_DATA) elseif (CAN_BUILD_NX_TZDB AND NOT CITRON_DOWNLOAD_TIME_ZONE_DATA)
add_subdirectory(tzdb_to_nx) add_subdirectory(tzdb_to_nx)
add_dependencies(nx_tzdb x80e) add_dependencies(nx_tzdb x80e)

View file

@ -1,4 +1,4 @@
# SPDX-FileCopyrightText: 2023 yuzu Emulator Project # SPDX-FileCopyrightText: 2023 yuzu Emulator Project & 2025 citron Homebrew Project
# SPDX-License-Identifier: GPL-2.0-or-later # SPDX-License-Identifier: GPL-2.0-or-later
# CMake does not have a way to list the files in a specific directory, # CMake does not have a way to list the files in a specific directory,

View file

@ -1,4 +1,4 @@
# SPDX-FileCopyrightText: 2023 yuzu Emulator Project # SPDX-FileCopyrightText: 2023 yuzu Emulator Project & 2025 citron Homebrew Project
# SPDX-License-Identifier: GPL-2.0-or-later # SPDX-License-Identifier: GPL-2.0-or-later
set(ZONE_PATH ${CMAKE_ARGV3}) set(ZONE_PATH ${CMAKE_ARGV3})

View file

@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-FileCopyrightText: 2023 yuzu Emulator Project & 2025 citron Homebrew Project
// SPDX-License-Identifier: GPL-2.0-or-later // SPDX-License-Identifier: GPL-2.0-or-later
#pragma once #pragma once

View file

@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-FileCopyrightText: 2023 yuzu Emulator Project & 2025 citron Homebrew Project
// SPDX-License-Identifier: GPL-2.0-or-later // SPDX-License-Identifier: GPL-2.0-or-later
#pragma once #pragma once

View file

@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-FileCopyrightText: 2023 yuzu Emulator Project & 2025 citron Homebrew Project
// SPDX-FileCopyrightText: 1996 Arthur David Olson // SPDX-FileCopyrightText: 1996 Arthur David Olson
// SPDX-License-Identifier: BSD-2-Clause // SPDX-License-Identifier: BSD-2-Clause

View file

@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-FileCopyrightText: 2023 yuzu Emulator Project & 2025 citron Homebrew Project
// SPDX-FileCopyrightText: 1996 Arthur David Olson // SPDX-FileCopyrightText: 1996 Arthur David Olson
// SPDX-License-Identifier: BSD-2-Clause // SPDX-License-Identifier: BSD-2-Clause

View file

@ -3,7 +3,7 @@
# SPDX-FileCopyrightText: 2015 Citra Emulator Project # SPDX-FileCopyrightText: 2015 Citra Emulator Project
# SPDX-License-Identifier: GPL-2.0-or-later # SPDX-License-Identifier: GPL-2.0-or-later
# Enforce yuzu's whitespace policy # Enforce citron's whitespace policy
git config --local core.whitespace tab-in-indent,trailing-space git config --local core.whitespace tab-in-indent,trailing-space
paths_to_check="src/ CMakeLists.txt" paths_to_check="src/ CMakeLists.txt"

View file

@ -1,7 +1,7 @@
#!/bin/bash #!/bin/bash
# Define old and new strings # Define old and new strings
old="yuzu" old="citron"
new="citron" new="citron"
# Find and rename directories first # Find and rename directories first

View file

@ -1,4 +1,4 @@
# SPDX-FileCopyrightText: 2018 yuzu Emulator Project # SPDX-FileCopyrightText: 2018 yuzu Emulator Project & 2025 citron Homebrew Project
# SPDX-License-Identifier: GPL-2.0-or-later # SPDX-License-Identifier: GPL-2.0-or-later
# Enable modules to include each other's files # Enable modules to include each other's files
@ -88,7 +88,7 @@ if (MSVC)
/wd4702 # unreachable code (when used with LTO) /wd4702 # unreachable code (when used with LTO)
) )
if (USE_CCACHE OR YUZU_USE_PRECOMPILED_HEADERS) if (USE_CCACHE OR CITRON_USE_PRECOMPILED_HEADERS)
# when caching, we need to use /Z7 to downgrade debug info to use an older but more cacheable format # when caching, we need to use /Z7 to downgrade debug info to use an older but more cacheable format
# Precompiled headers are deleted if not using /Z7. See https://github.com/nanoant/CMakePCHCompiler/issues/21 # Precompiled headers are deleted if not using /Z7. See https://github.com/nanoant/CMakePCHCompiler/issues/21
add_compile_options(/Z7) add_compile_options(/Z7)
@ -192,20 +192,20 @@ add_subdirectory(input_common)
add_subdirectory(frontend_common) add_subdirectory(frontend_common)
add_subdirectory(shader_recompiler) add_subdirectory(shader_recompiler)
if (YUZU_ROOM) if (CITRON_ROOM)
add_subdirectory(dedicated_room) add_subdirectory(dedicated_room)
endif() endif()
if (YUZU_TESTS) if (CITRON_TESTS)
add_subdirectory(tests) add_subdirectory(tests)
endif() endif()
if (ENABLE_SDL2) if (ENABLE_SDL2)
add_subdirectory(yuzu_cmd) add_subdirectory(citron_cmd)
endif() endif()
if (ENABLE_QT) if (ENABLE_QT)
add_subdirectory(yuzu) add_subdirectory(citron)
endif() endif()
if (ENABLE_WEB_SERVICE) if (ENABLE_WEB_SERVICE)
@ -214,5 +214,5 @@ endif()
if (ANDROID) if (ANDROID)
add_subdirectory(android/app/src/main/jni) add_subdirectory(android/app/src/main/jni)
target_include_directories(yuzu-android PRIVATE android/app/src/main) target_include_directories(citron-android PRIVATE android/app/src/main)
endif() endif()

View file

@ -1,4 +1,4 @@
# SPDX-FileCopyrightText: 2023 yuzu Emulator Project # SPDX-FileCopyrightText: 2023 yuzu Emulator Project & 2025 citron Homebrew Project
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
# Built application files # Built application files

View file

@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-FileCopyrightText: 2023 yuzu Emulator Project & 2025 citron Homebrew Project
// SPDX-License-Identifier: GPL-3.0-or-later // SPDX-License-Identifier: GPL-3.0-or-later
import android.annotation.SuppressLint import android.annotation.SuppressLint
@ -25,7 +25,7 @@ val autoVersion = (((System.currentTimeMillis() / 1000) - 1451606400) / 10).toIn
@Suppress("UnstableApiUsage") @Suppress("UnstableApiUsage")
android { android {
namespace = "org.yuzu.yuzu_emu" namespace = "org.citron.citron_emu"
compileSdkVersion = "android-34" compileSdkVersion = "android-34"
ndkVersion = "26.1.10909125" ndkVersion = "26.1.10909125"
@ -54,7 +54,7 @@ android {
defaultConfig { defaultConfig {
// TODO If this is ever modified, change application_id in strings.xml // TODO If this is ever modified, change application_id in strings.xml
applicationId = "org.yuzu.yuzu_emu" applicationId = "org.citron.citron_emu"
minSdk = 30 minSdk = 30
targetSdk = 34 targetSdk = 34
versionName = getGitVersion() versionName = getGitVersion()
@ -103,7 +103,7 @@ android {
signingConfigs.getByName("default") signingConfigs.getByName("default")
} }
resValue("string", "app_name_suffixed", "yuzu") resValue("string", "app_name_suffixed", "citron")
isMinifyEnabled = true isMinifyEnabled = true
isDebuggable = false isDebuggable = false
proguardFiles( proguardFiles(
@ -116,7 +116,7 @@ android {
// Attaches 'debug' suffix to version and package name, allowing installation alongside the release build. // Attaches 'debug' suffix to version and package name, allowing installation alongside the release build.
register("relWithDebInfo") { register("relWithDebInfo") {
isDefault = true isDefault = true
resValue("string", "app_name_suffixed", "yuzu Debug Release") resValue("string", "app_name_suffixed", "citron Debug Release")
signingConfig = signingConfigs.getByName("default") signingConfig = signingConfigs.getByName("default")
isMinifyEnabled = true isMinifyEnabled = true
isDebuggable = true isDebuggable = true
@ -133,7 +133,7 @@ android {
// Attaches 'debug' suffix to version and package name, allowing installation alongside the release build. // Attaches 'debug' suffix to version and package name, allowing installation alongside the release build.
debug { debug {
signingConfig = signingConfigs.getByName("default") signingConfig = signingConfigs.getByName("default")
resValue("string", "app_name_suffixed", "yuzu Debug") resValue("string", "app_name_suffixed", "citron Debug")
isDebuggable = true isDebuggable = true
isJniDebuggable = true isJniDebuggable = true
versionNameSuffix = "-debug" versionNameSuffix = "-debug"
@ -172,9 +172,9 @@ android {
"-DENABLE_WEB_SERVICE=0", // Don't use telemetry "-DENABLE_WEB_SERVICE=0", // Don't use telemetry
"-DBUNDLE_SPEEX=ON", "-DBUNDLE_SPEEX=ON",
"-DANDROID_ARM_NEON=true", // cryptopp requires Neon to work "-DANDROID_ARM_NEON=true", // cryptopp requires Neon to work
"-DYUZU_USE_BUNDLED_VCPKG=ON", "-DCITRON_USE_BUNDLED_VCPKG=ON",
"-DYUZU_USE_BUNDLED_FFMPEG=ON", "-DCITRON_USE_BUNDLED_FFMPEG=ON",
"-DYUZU_ENABLE_LTO=ON", "-DCITRON_ENABLE_LTO=ON",
"-DCMAKE_EXPORT_COMPILE_COMMANDS=ON" "-DCMAKE_EXPORT_COMPILE_COMMANDS=ON"
) )

View file

@ -1,4 +1,4 @@
# SPDX-FileCopyrightText: 2023 yuzu Emulator Project # SPDX-FileCopyrightText: 2023 yuzu Emulator Project & 2025 citron Homebrew Project
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
# To get usable stack traces # To get usable stack traces

View file

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!-- <!--
SPDX-FileCopyrightText: 2023 yuzu Emulator Project SPDX-FileCopyrightText: 2023 yuzu Emulator Project & 2025 citron Homebrew Project
SPDX-License-Identifier: GPL-3.0-or-later SPDX-License-Identifier: GPL-3.0-or-later
--> -->
@ -17,7 +17,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
<uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.VIBRATE" />
<application <application
android:name="org.yuzu.yuzu_emu.YuzuApplication" android:name="org.citron.citron_emu.CitronApplication"
android:label="@string/app_name_suffixed" android:label="@string/app_name_suffixed"
android:icon="@drawable/ic_launcher" android:icon="@drawable/ic_launcher"
android:allowBackup="true" android:allowBackup="true"
@ -34,9 +34,9 @@ SPDX-License-Identifier: GPL-3.0-or-later
android:resource="@xml/game_mode_config" /> android:resource="@xml/game_mode_config" />
<activity <activity
android:name="org.yuzu.yuzu_emu.ui.main.MainActivity" android:name="org.citron.citron_emu.ui.main.MainActivity"
android:exported="true" android:exported="true"
android:theme="@style/Theme.Yuzu.Splash.Main"> android:theme="@style/Theme.Citron.Splash.Main">
<!-- This intentfilter marks this Activity as the one that gets launched from Home screen. --> <!-- This intentfilter marks this Activity as the one that gets launched from Home screen. -->
<intent-filter> <intent-filter>
@ -48,13 +48,13 @@ SPDX-License-Identifier: GPL-3.0-or-later
</activity> </activity>
<activity <activity
android:name="org.yuzu.yuzu_emu.features.settings.ui.SettingsActivity" android:name="org.citron.citron_emu.features.settings.ui.SettingsActivity"
android:theme="@style/Theme.Yuzu.Main" android:theme="@style/Theme.Citron.Main"
android:label="@string/preferences_settings"/> android:label="@string/preferences_settings"/>
<activity <activity
android:name="org.yuzu.yuzu_emu.activities.EmulationActivity" android:name="org.citron.citron_emu.activities.EmulationActivity"
android:theme="@style/Theme.Yuzu.Main" android:theme="@style/Theme.Citron.Main"
android:launchMode="singleTop" android:launchMode="singleTop"
android:supportsPictureInPicture="true" android:supportsPictureInPicture="true"
android:configChanges="orientation|screenSize|smallestScreenSize|screenLayout|uiMode" android:configChanges="orientation|screenSize|smallestScreenSize|screenLayout|uiMode"

View file

@ -1,22 +1,22 @@
// SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-FileCopyrightText: 2023 yuzu Emulator Project & 2025 citron Homebrew Project
// SPDX-License-Identifier: GPL-2.0-or-later // SPDX-License-Identifier: GPL-2.0-or-later
package org.yuzu.yuzu_emu package org.citron.citron_emu
import android.app.Application import android.app.Application
import android.app.NotificationChannel import android.app.NotificationChannel
import android.app.NotificationManager import android.app.NotificationManager
import android.content.Context import android.content.Context
import org.yuzu.yuzu_emu.features.input.NativeInput import org.citron.citron_emu.features.input.NativeInput
import java.io.File import java.io.File
import org.yuzu.yuzu_emu.utils.DirectoryInitialization import org.citron.citron_emu.utils.DirectoryInitialization
import org.yuzu.yuzu_emu.utils.DocumentsTree import org.citron.citron_emu.utils.DocumentsTree
import org.yuzu.yuzu_emu.utils.GpuDriverHelper import org.citron.citron_emu.utils.GpuDriverHelper
import org.yuzu.yuzu_emu.utils.Log import org.citron.citron_emu.utils.Log
fun Context.getPublicFilesDir(): File = getExternalFilesDir(null) ?: filesDir fun Context.getPublicFilesDir(): File = getExternalFilesDir(null) ?: filesDir
class YuzuApplication : Application() { class CitronApplication : Application() {
private fun createNotificationChannels() { private fun createNotificationChannels() {
val noticeChannel = NotificationChannel( val noticeChannel = NotificationChannel(
getString(R.string.notice_notification_channel_id), getString(R.string.notice_notification_channel_id),
@ -47,7 +47,7 @@ class YuzuApplication : Application() {
companion object { companion object {
var documentsTree: DocumentsTree? = null var documentsTree: DocumentsTree? = null
lateinit var application: YuzuApplication lateinit var application: CitronApplication
val appContext: Context val appContext: Context
get() = application.applicationContext get() = application.applicationContext

View file

@ -1,7 +1,7 @@
// SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-FileCopyrightText: 2023 yuzu Emulator Project & 2025 citron Homebrew Project
// SPDX-License-Identifier: GPL-2.0-or-later // SPDX-License-Identifier: GPL-2.0-or-later
package org.yuzu.yuzu_emu package org.citron.citron_emu
import android.content.DialogInterface import android.content.DialogInterface
import android.net.Uri import android.net.Uri
@ -13,18 +13,18 @@ import android.widget.TextView
import androidx.annotation.Keep import androidx.annotation.Keep
import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.dialog.MaterialAlertDialogBuilder
import java.lang.ref.WeakReference import java.lang.ref.WeakReference
import org.yuzu.yuzu_emu.activities.EmulationActivity import org.citron.citron_emu.activities.EmulationActivity
import org.yuzu.yuzu_emu.fragments.CoreErrorDialogFragment import org.citron.citron_emu.fragments.CoreErrorDialogFragment
import org.yuzu.yuzu_emu.utils.DocumentsTree import org.citron.citron_emu.utils.DocumentsTree
import org.yuzu.yuzu_emu.utils.FileUtil import org.citron.citron_emu.utils.FileUtil
import org.yuzu.yuzu_emu.utils.Log import org.citron.citron_emu.utils.Log
import org.yuzu.yuzu_emu.model.InstallResult import org.citron.citron_emu.model.InstallResult
import org.yuzu.yuzu_emu.model.Patch import org.citron.citron_emu.model.Patch
import org.yuzu.yuzu_emu.model.GameVerificationResult import org.citron.citron_emu.model.GameVerificationResult
/** /**
* Class which contains methods that interact * Class which contains methods that interact
* with the native side of the Yuzu code. * with the native side of the Citron code.
*/ */
object NativeLibrary { object NativeLibrary {
@JvmField @JvmField
@ -32,7 +32,7 @@ object NativeLibrary {
init { init {
try { try {
System.loadLibrary("yuzu-android") System.loadLibrary("citron-android")
} catch (ex: UnsatisfiedLinkError) { } catch (ex: UnsatisfiedLinkError) {
error("[NativeLibrary] $ex") error("[NativeLibrary] $ex")
} }
@ -42,7 +42,7 @@ object NativeLibrary {
@JvmStatic @JvmStatic
fun openContentUri(path: String?, openmode: String?): Int { fun openContentUri(path: String?, openmode: String?): Int {
return if (DocumentsTree.isNativePath(path!!)) { return if (DocumentsTree.isNativePath(path!!)) {
YuzuApplication.documentsTree!!.openContentUri(path, openmode) CitronApplication.documentsTree!!.openContentUri(path, openmode)
} else { } else {
FileUtil.openContentUri(path, openmode) FileUtil.openContentUri(path, openmode)
} }
@ -52,7 +52,7 @@ object NativeLibrary {
@JvmStatic @JvmStatic
fun getSize(path: String?): Long { fun getSize(path: String?): Long {
return if (DocumentsTree.isNativePath(path!!)) { return if (DocumentsTree.isNativePath(path!!)) {
YuzuApplication.documentsTree!!.getFileSize(path) CitronApplication.documentsTree!!.getFileSize(path)
} else { } else {
FileUtil.getFileSize(path) FileUtil.getFileSize(path)
} }
@ -62,7 +62,7 @@ object NativeLibrary {
@JvmStatic @JvmStatic
fun exists(path: String?): Boolean { fun exists(path: String?): Boolean {
return if (DocumentsTree.isNativePath(path!!)) { return if (DocumentsTree.isNativePath(path!!)) {
YuzuApplication.documentsTree!!.exists(path) CitronApplication.documentsTree!!.exists(path)
} else { } else {
FileUtil.exists(path, suppressLog = true) FileUtil.exists(path, suppressLog = true)
} }
@ -72,7 +72,7 @@ object NativeLibrary {
@JvmStatic @JvmStatic
fun isDirectory(path: String?): Boolean { fun isDirectory(path: String?): Boolean {
return if (DocumentsTree.isNativePath(path!!)) { return if (DocumentsTree.isNativePath(path!!)) {
YuzuApplication.documentsTree!!.isDirectory(path) CitronApplication.documentsTree!!.isDirectory(path)
} else { } else {
FileUtil.isDirectory(path) FileUtil.isDirectory(path)
} }
@ -82,7 +82,7 @@ object NativeLibrary {
@JvmStatic @JvmStatic
fun getParentDirectory(path: String): String = fun getParentDirectory(path: String): String =
if (DocumentsTree.isNativePath(path)) { if (DocumentsTree.isNativePath(path)) {
YuzuApplication.documentsTree!!.getParentDirectory(path) CitronApplication.documentsTree!!.getParentDirectory(path)
} else { } else {
path path
} }
@ -91,7 +91,7 @@ object NativeLibrary {
@JvmStatic @JvmStatic
fun getFilename(path: String): String = fun getFilename(path: String): String =
if (DocumentsTree.isNativePath(path)) { if (DocumentsTree.isNativePath(path)) {
YuzuApplication.documentsTree!!.getFilename(path) CitronApplication.documentsTree!!.getFilename(path)
} else { } else {
FileUtil.getFilename(Uri.parse(path)) FileUtil.getFilename(Uri.parse(path))
} }
@ -326,7 +326,7 @@ object NativeLibrary {
} }
/** /**
* Logs the Yuzu version, Android version and, CPU. * Logs the Citron version, Android version and, CPU.
*/ */
external fun logDeviceInfo() external fun logDeviceInfo()

View file

@ -1,7 +1,7 @@
// SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-FileCopyrightText: 2023 yuzu Emulator Project & 2025 citron Homebrew Project
// SPDX-License-Identifier: GPL-2.0-or-later // SPDX-License-Identifier: GPL-2.0-or-later
package org.yuzu.yuzu_emu.activities package org.citron.citron_emu.activities
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.app.PendingIntent import android.app.PendingIntent
@ -35,23 +35,23 @@ import androidx.core.view.WindowInsetsCompat
import androidx.core.view.WindowInsetsControllerCompat import androidx.core.view.WindowInsetsControllerCompat
import androidx.navigation.fragment.NavHostFragment import androidx.navigation.fragment.NavHostFragment
import androidx.preference.PreferenceManager import androidx.preference.PreferenceManager
import org.yuzu.yuzu_emu.NativeLibrary import org.citron.citron_emu.NativeLibrary
import org.yuzu.yuzu_emu.R import org.citron.citron_emu.R
import org.yuzu.yuzu_emu.YuzuApplication import org.citron.citron_emu.CitronApplication
import org.yuzu.yuzu_emu.databinding.ActivityEmulationBinding import org.citron.citron_emu.databinding.ActivityEmulationBinding
import org.yuzu.yuzu_emu.features.input.NativeInput import org.citron.citron_emu.features.input.NativeInput
import org.yuzu.yuzu_emu.features.settings.model.BooleanSetting import org.citron.citron_emu.features.settings.model.BooleanSetting
import org.yuzu.yuzu_emu.features.settings.model.IntSetting import org.citron.citron_emu.features.settings.model.IntSetting
import org.yuzu.yuzu_emu.features.settings.model.Settings import org.citron.citron_emu.features.settings.model.Settings
import org.yuzu.yuzu_emu.model.EmulationViewModel import org.citron.citron_emu.model.EmulationViewModel
import org.yuzu.yuzu_emu.model.Game import org.citron.citron_emu.model.Game
import org.yuzu.yuzu_emu.utils.InputHandler import org.citron.citron_emu.utils.InputHandler
import org.yuzu.yuzu_emu.utils.Log import org.citron.citron_emu.utils.Log
import org.yuzu.yuzu_emu.utils.MemoryUtil import org.citron.citron_emu.utils.MemoryUtil
import org.yuzu.yuzu_emu.utils.NativeConfig import org.citron.citron_emu.utils.NativeConfig
import org.yuzu.yuzu_emu.utils.NfcReader import org.citron.citron_emu.utils.NfcReader
import org.yuzu.yuzu_emu.utils.ParamPackage import org.citron.citron_emu.utils.ParamPackage
import org.yuzu.yuzu_emu.utils.ThemeHelper import org.citron.citron_emu.utils.ThemeHelper
import java.text.NumberFormat import java.text.NumberFormat
import kotlin.math.roundToInt import kotlin.math.roundToInt
@ -123,7 +123,7 @@ class EmulationActivity : AppCompatActivity(), SensorEventListener {
nfcReader = NfcReader(this) nfcReader = NfcReader(this)
nfcReader.initialize() nfcReader.initialize()
val preferences = PreferenceManager.getDefaultSharedPreferences(YuzuApplication.appContext) val preferences = PreferenceManager.getDefaultSharedPreferences(CitronApplication.appContext)
if (!preferences.getBoolean(Settings.PREF_MEMORY_WARNING_SHOWN, false)) { if (!preferences.getBoolean(Settings.PREF_MEMORY_WARNING_SHOWN, false)) {
if (MemoryUtil.isLessThan(MemoryUtil.REQUIRED_MEMORY, MemoryUtil.totalMemory)) { if (MemoryUtil.isLessThan(MemoryUtil.REQUIRED_MEMORY, MemoryUtil.totalMemory)) {
Toast.makeText( Toast.makeText(

View file

@ -1,13 +1,13 @@
// SPDX-FileCopyrightText: 2024 yuzu Emulator Project // SPDX-FileCopyrightText: 2024 yuzu Emulator Project & 2025 citron Homebrew Project
// SPDX-License-Identifier: GPL-2.0-or-later // SPDX-License-Identifier: GPL-2.0-or-later
package org.yuzu.yuzu_emu.adapters package org.citron.citron_emu.adapters
import android.annotation.SuppressLint import android.annotation.SuppressLint
import androidx.recyclerview.widget.AsyncDifferConfig import androidx.recyclerview.widget.AsyncDifferConfig
import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.DiffUtil
import androidx.recyclerview.widget.ListAdapter import androidx.recyclerview.widget.ListAdapter
import org.yuzu.yuzu_emu.viewholder.AbstractViewHolder import org.citron.citron_emu.viewholder.AbstractViewHolder
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
/** /**

View file

@ -1,11 +1,11 @@
// SPDX-FileCopyrightText: 2024 yuzu Emulator Project // SPDX-FileCopyrightText: 2024 yuzu Emulator Project & 2025 citron Homebrew Project
// SPDX-License-Identifier: GPL-2.0-or-later // SPDX-License-Identifier: GPL-2.0-or-later
package org.yuzu.yuzu_emu.adapters package org.citron.citron_emu.adapters
import android.annotation.SuppressLint import android.annotation.SuppressLint
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import org.yuzu.yuzu_emu.viewholder.AbstractViewHolder import org.citron.citron_emu.viewholder.AbstractViewHolder
/** /**
* Generic list class meant to take care of basic lists * Generic list class meant to take care of basic lists

View file

@ -1,10 +1,10 @@
// SPDX-FileCopyrightText: 2024 yuzu Emulator Project // SPDX-FileCopyrightText: 2024 yuzu Emulator Project & 2025 citron Homebrew Project
// SPDX-License-Identifier: GPL-2.0-or-later // SPDX-License-Identifier: GPL-2.0-or-later
package org.yuzu.yuzu_emu.adapters package org.citron.citron_emu.adapters
import org.yuzu.yuzu_emu.model.SelectableItem import org.citron.citron_emu.model.SelectableItem
import org.yuzu.yuzu_emu.viewholder.AbstractViewHolder import org.citron.citron_emu.viewholder.AbstractViewHolder
/** /**
* Generic list class meant to take care of single selection UI updates * Generic list class meant to take care of single selection UI updates

View file

@ -1,14 +1,14 @@
// SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-FileCopyrightText: 2023 yuzu Emulator Project & 2025 citron Homebrew Project
// SPDX-License-Identifier: GPL-2.0-or-later // SPDX-License-Identifier: GPL-2.0-or-later
package org.yuzu.yuzu_emu.adapters package org.citron.citron_emu.adapters
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.ViewGroup import android.view.ViewGroup
import org.yuzu.yuzu_emu.databinding.ListItemAddonBinding import org.citron.citron_emu.databinding.ListItemAddonBinding
import org.yuzu.yuzu_emu.model.Patch import org.citron.citron_emu.model.Patch
import org.yuzu.yuzu_emu.model.AddonViewModel import org.citron.citron_emu.model.AddonViewModel
import org.yuzu.yuzu_emu.viewholder.AbstractViewHolder import org.citron.citron_emu.viewholder.AbstractViewHolder
class AddonAdapter(val addonViewModel: AddonViewModel) : class AddonAdapter(val addonViewModel: AddonViewModel) :
AbstractDiffAdapter<Patch, AddonAdapter.AddonViewHolder>() { AbstractDiffAdapter<Patch, AddonAdapter.AddonViewHolder>() {

View file

@ -1,7 +1,7 @@
// SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-FileCopyrightText: 2023 yuzu Emulator Project & 2025 citron Homebrew Project
// SPDX-License-Identifier: GPL-2.0-or-later // SPDX-License-Identifier: GPL-2.0-or-later
package org.yuzu.yuzu_emu.adapters package org.citron.citron_emu.adapters
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.ViewGroup import android.view.ViewGroup
@ -9,15 +9,15 @@ import android.widget.Toast
import androidx.core.content.res.ResourcesCompat import androidx.core.content.res.ResourcesCompat
import androidx.fragment.app.FragmentActivity import androidx.fragment.app.FragmentActivity
import androidx.navigation.findNavController import androidx.navigation.findNavController
import org.yuzu.yuzu_emu.HomeNavigationDirections import org.citron.citron_emu.HomeNavigationDirections
import org.yuzu.yuzu_emu.NativeLibrary import org.citron.citron_emu.NativeLibrary
import org.yuzu.yuzu_emu.R import org.citron.citron_emu.R
import org.yuzu.yuzu_emu.YuzuApplication import org.citron.citron_emu.CitronApplication
import org.yuzu.yuzu_emu.databinding.CardSimpleOutlinedBinding import org.citron.citron_emu.databinding.CardSimpleOutlinedBinding
import org.yuzu.yuzu_emu.model.Applet import org.citron.citron_emu.model.Applet
import org.yuzu.yuzu_emu.model.AppletInfo import org.citron.citron_emu.model.AppletInfo
import org.yuzu.yuzu_emu.model.Game import org.citron.citron_emu.model.Game
import org.yuzu.yuzu_emu.viewholder.AbstractViewHolder import org.citron.citron_emu.viewholder.AbstractViewHolder
class AppletAdapter(val activity: FragmentActivity, applets: List<Applet>) : class AppletAdapter(val activity: FragmentActivity, applets: List<Applet>) :
AbstractListAdapter<Applet, AppletAdapter.AppletViewHolder>(applets) { AbstractListAdapter<Applet, AppletAdapter.AppletViewHolder>(applets) {
@ -64,7 +64,7 @@ class AppletAdapter(val activity: FragmentActivity, applets: List<Applet>) :
NativeLibrary.setCurrentAppletId(applet.appletInfo.appletId) NativeLibrary.setCurrentAppletId(applet.appletInfo.appletId)
val appletGame = Game( val appletGame = Game(
title = YuzuApplication.appContext.getString(applet.titleId), title = CitronApplication.appContext.getString(applet.titleId),
path = appletPath path = appletPath
) )
val action = HomeNavigationDirections.actionGlobalEmulationActivity(appletGame) val action = HomeNavigationDirections.actionGlobalEmulationActivity(appletGame)

View file

@ -1,23 +1,23 @@
// SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-FileCopyrightText: 2023 yuzu Emulator Project & 2025 citron Homebrew Project
// SPDX-License-Identifier: GPL-2.0-or-later // SPDX-License-Identifier: GPL-2.0-or-later
package org.yuzu.yuzu_emu.adapters package org.citron.citron_emu.adapters
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.ViewGroup import android.view.ViewGroup
import androidx.core.content.res.ResourcesCompat import androidx.core.content.res.ResourcesCompat
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import androidx.navigation.fragment.findNavController import androidx.navigation.fragment.findNavController
import org.yuzu.yuzu_emu.HomeNavigationDirections import org.citron.citron_emu.HomeNavigationDirections
import org.yuzu.yuzu_emu.NativeLibrary import org.citron.citron_emu.NativeLibrary
import org.yuzu.yuzu_emu.R import org.citron.citron_emu.R
import org.yuzu.yuzu_emu.YuzuApplication import org.citron.citron_emu.CitronApplication
import org.yuzu.yuzu_emu.databinding.DialogListItemBinding import org.citron.citron_emu.databinding.DialogListItemBinding
import org.yuzu.yuzu_emu.model.CabinetMode import org.citron.citron_emu.model.CabinetMode
import org.yuzu.yuzu_emu.adapters.CabinetLauncherDialogAdapter.CabinetModeViewHolder import org.citron.citron_emu.adapters.CabinetLauncherDialogAdapter.CabinetModeViewHolder
import org.yuzu.yuzu_emu.model.AppletInfo import org.citron.citron_emu.model.AppletInfo
import org.yuzu.yuzu_emu.model.Game import org.citron.citron_emu.model.Game
import org.yuzu.yuzu_emu.viewholder.AbstractViewHolder import org.citron.citron_emu.viewholder.AbstractViewHolder
class CabinetLauncherDialogAdapter(val fragment: Fragment) : class CabinetLauncherDialogAdapter(val fragment: Fragment) :
AbstractListAdapter<CabinetMode, CabinetModeViewHolder>( AbstractListAdapter<CabinetMode, CabinetModeViewHolder>(
@ -49,7 +49,7 @@ class CabinetLauncherDialogAdapter(val fragment: Fragment) :
NativeLibrary.setCurrentAppletId(AppletInfo.Cabinet.appletId) NativeLibrary.setCurrentAppletId(AppletInfo.Cabinet.appletId)
NativeLibrary.setCabinetMode(mode.id) NativeLibrary.setCabinetMode(mode.id)
val appletGame = Game( val appletGame = Game(
title = YuzuApplication.appContext.getString(R.string.cabinet_applet), title = CitronApplication.appContext.getString(R.string.cabinet_applet),
path = appletPath path = appletPath
) )
val action = HomeNavigationDirections.actionGlobalEmulationActivity(appletGame) val action = HomeNavigationDirections.actionGlobalEmulationActivity(appletGame)

View file

@ -1,18 +1,18 @@
// SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-FileCopyrightText: 2023 yuzu Emulator Project & 2025 citron Homebrew Project
// SPDX-License-Identifier: GPL-2.0-or-later // SPDX-License-Identifier: GPL-2.0-or-later
package org.yuzu.yuzu_emu.adapters package org.citron.citron_emu.adapters
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.ViewGroup import android.view.ViewGroup
import org.yuzu.yuzu_emu.R import org.citron.citron_emu.R
import org.yuzu.yuzu_emu.databinding.CardDriverOptionBinding import org.citron.citron_emu.databinding.CardDriverOptionBinding
import org.yuzu.yuzu_emu.features.settings.model.StringSetting import org.citron.citron_emu.features.settings.model.StringSetting
import org.yuzu.yuzu_emu.model.Driver import org.citron.citron_emu.model.Driver
import org.yuzu.yuzu_emu.model.DriverViewModel import org.citron.citron_emu.model.DriverViewModel
import org.yuzu.yuzu_emu.utils.ViewUtils.marquee import org.citron.citron_emu.utils.ViewUtils.marquee
import org.yuzu.yuzu_emu.utils.ViewUtils.setVisible import org.citron.citron_emu.utils.ViewUtils.setVisible
import org.yuzu.yuzu_emu.viewholder.AbstractViewHolder import org.citron.citron_emu.viewholder.AbstractViewHolder
class DriverAdapter(private val driverViewModel: DriverViewModel) : class DriverAdapter(private val driverViewModel: DriverViewModel) :
AbstractSingleSelectionList<Driver, DriverAdapter.DriverViewHolder>( AbstractSingleSelectionList<Driver, DriverAdapter.DriverViewHolder>(

View file

@ -1,18 +1,18 @@
// SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-FileCopyrightText: 2023 yuzu Emulator Project & 2025 citron Homebrew Project
// SPDX-License-Identifier: GPL-2.0-or-later // SPDX-License-Identifier: GPL-2.0-or-later
package org.yuzu.yuzu_emu.adapters package org.citron.citron_emu.adapters
import android.net.Uri import android.net.Uri
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.ViewGroup import android.view.ViewGroup
import androidx.fragment.app.FragmentActivity import androidx.fragment.app.FragmentActivity
import org.yuzu.yuzu_emu.databinding.CardFolderBinding import org.citron.citron_emu.databinding.CardFolderBinding
import org.yuzu.yuzu_emu.fragments.GameFolderPropertiesDialogFragment import org.citron.citron_emu.fragments.GameFolderPropertiesDialogFragment
import org.yuzu.yuzu_emu.model.GameDir import org.citron.citron_emu.model.GameDir
import org.yuzu.yuzu_emu.model.GamesViewModel import org.citron.citron_emu.model.GamesViewModel
import org.yuzu.yuzu_emu.utils.ViewUtils.marquee import org.citron.citron_emu.utils.ViewUtils.marquee
import org.yuzu.yuzu_emu.viewholder.AbstractViewHolder import org.citron.citron_emu.viewholder.AbstractViewHolder
class FolderAdapter(val activity: FragmentActivity, val gamesViewModel: GamesViewModel) : class FolderAdapter(val activity: FragmentActivity, val gamesViewModel: GamesViewModel) :
AbstractDiffAdapter<GameDir, FolderAdapter.FolderViewHolder>() { AbstractDiffAdapter<GameDir, FolderAdapter.FolderViewHolder>() {

View file

@ -1,7 +1,7 @@
// SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-FileCopyrightText: 2023 yuzu Emulator Project & 2025 citron Homebrew Project
// SPDX-License-Identifier: GPL-2.0-or-later // SPDX-License-Identifier: GPL-2.0-or-later
package org.yuzu.yuzu_emu.adapters package org.citron.citron_emu.adapters
import android.net.Uri import android.net.Uri
import android.view.LayoutInflater import android.view.LayoutInflater
@ -19,15 +19,15 @@ import androidx.preference.PreferenceManager
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext import kotlinx.coroutines.withContext
import org.yuzu.yuzu_emu.HomeNavigationDirections import org.citron.citron_emu.HomeNavigationDirections
import org.yuzu.yuzu_emu.R import org.citron.citron_emu.R
import org.yuzu.yuzu_emu.YuzuApplication import org.citron.citron_emu.CitronApplication
import org.yuzu.yuzu_emu.databinding.CardGameBinding import org.citron.citron_emu.databinding.CardGameBinding
import org.yuzu.yuzu_emu.model.Game import org.citron.citron_emu.model.Game
import org.yuzu.yuzu_emu.model.GamesViewModel import org.citron.citron_emu.model.GamesViewModel
import org.yuzu.yuzu_emu.utils.GameIconUtils import org.citron.citron_emu.utils.GameIconUtils
import org.yuzu.yuzu_emu.utils.ViewUtils.marquee import org.citron.citron_emu.utils.ViewUtils.marquee
import org.yuzu.yuzu_emu.viewholder.AbstractViewHolder import org.citron.citron_emu.viewholder.AbstractViewHolder
class GameAdapter(private val activity: AppCompatActivity) : class GameAdapter(private val activity: AppCompatActivity) :
AbstractDiffAdapter<Game, GameAdapter.GameViewHolder>(exact = false) { AbstractDiffAdapter<Game, GameAdapter.GameViewHolder>(exact = false) {
@ -51,12 +51,12 @@ class GameAdapter(private val activity: AppCompatActivity) :
fun onClick(game: Game) { fun onClick(game: Game) {
val gameExists = DocumentFile.fromSingleUri( val gameExists = DocumentFile.fromSingleUri(
YuzuApplication.appContext, CitronApplication.appContext,
Uri.parse(game.path) Uri.parse(game.path)
)?.exists() == true )?.exists() == true
if (!gameExists) { if (!gameExists) {
Toast.makeText( Toast.makeText(
YuzuApplication.appContext, CitronApplication.appContext,
R.string.loader_error_file_not_found, R.string.loader_error_file_not_found,
Toast.LENGTH_LONG Toast.LENGTH_LONG
).show() ).show()
@ -66,7 +66,7 @@ class GameAdapter(private val activity: AppCompatActivity) :
} }
val preferences = val preferences =
PreferenceManager.getDefaultSharedPreferences(YuzuApplication.appContext) PreferenceManager.getDefaultSharedPreferences(CitronApplication.appContext)
preferences.edit() preferences.edit()
.putLong( .putLong(
game.keyLastPlayedTime, game.keyLastPlayedTime,
@ -77,12 +77,12 @@ class GameAdapter(private val activity: AppCompatActivity) :
activity.lifecycleScope.launch { activity.lifecycleScope.launch {
withContext(Dispatchers.IO) { withContext(Dispatchers.IO) {
val shortcut = val shortcut =
ShortcutInfoCompat.Builder(YuzuApplication.appContext, game.path) ShortcutInfoCompat.Builder(CitronApplication.appContext, game.path)
.setShortLabel(game.title) .setShortLabel(game.title)
.setIcon(GameIconUtils.getShortcutIcon(activity, game)) .setIcon(GameIconUtils.getShortcutIcon(activity, game))
.setIntent(game.launchIntent) .setIntent(game.launchIntent)
.build() .build()
ShortcutManagerCompat.pushDynamicShortcut(YuzuApplication.appContext, shortcut) ShortcutManagerCompat.pushDynamicShortcut(CitronApplication.appContext, shortcut)
} }
} }

View file

@ -1,21 +1,21 @@
// SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-FileCopyrightText: 2023 yuzu Emulator Project & 2025 citron Homebrew Project
// SPDX-License-Identifier: GPL-2.0-or-later // SPDX-License-Identifier: GPL-2.0-or-later
package org.yuzu.yuzu_emu.adapters package org.citron.citron_emu.adapters
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.ViewGroup import android.view.ViewGroup
import androidx.core.content.res.ResourcesCompat import androidx.core.content.res.ResourcesCompat
import androidx.lifecycle.LifecycleOwner import androidx.lifecycle.LifecycleOwner
import org.yuzu.yuzu_emu.databinding.CardInstallableIconBinding import org.citron.citron_emu.databinding.CardInstallableIconBinding
import org.yuzu.yuzu_emu.databinding.CardSimpleOutlinedBinding import org.citron.citron_emu.databinding.CardSimpleOutlinedBinding
import org.yuzu.yuzu_emu.model.GameProperty import org.citron.citron_emu.model.GameProperty
import org.yuzu.yuzu_emu.model.InstallableProperty import org.citron.citron_emu.model.InstallableProperty
import org.yuzu.yuzu_emu.model.SubmenuProperty import org.citron.citron_emu.model.SubmenuProperty
import org.yuzu.yuzu_emu.utils.ViewUtils.marquee import org.citron.citron_emu.utils.ViewUtils.marquee
import org.yuzu.yuzu_emu.utils.ViewUtils.setVisible import org.citron.citron_emu.utils.ViewUtils.setVisible
import org.yuzu.yuzu_emu.utils.collect import org.citron.citron_emu.utils.collect
import org.yuzu.yuzu_emu.viewholder.AbstractViewHolder import org.citron.citron_emu.viewholder.AbstractViewHolder
class GamePropertiesAdapter( class GamePropertiesAdapter(
private val viewLifecycle: LifecycleOwner, private val viewLifecycle: LifecycleOwner,

View file

@ -1,7 +1,7 @@
// SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-FileCopyrightText: 2023 yuzu Emulator Project & 2025 citron Homebrew Project
// SPDX-License-Identifier: GPL-2.0-or-later // SPDX-License-Identifier: GPL-2.0-or-later
package org.yuzu.yuzu_emu.adapters package org.citron.citron_emu.adapters
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.ViewGroup import android.view.ViewGroup
@ -9,14 +9,14 @@ import androidx.appcompat.app.AppCompatActivity
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
import androidx.core.content.res.ResourcesCompat import androidx.core.content.res.ResourcesCompat
import androidx.lifecycle.LifecycleOwner import androidx.lifecycle.LifecycleOwner
import org.yuzu.yuzu_emu.R import org.citron.citron_emu.R
import org.yuzu.yuzu_emu.databinding.CardHomeOptionBinding import org.citron.citron_emu.databinding.CardHomeOptionBinding
import org.yuzu.yuzu_emu.fragments.MessageDialogFragment import org.citron.citron_emu.fragments.MessageDialogFragment
import org.yuzu.yuzu_emu.model.HomeSetting import org.citron.citron_emu.model.HomeSetting
import org.yuzu.yuzu_emu.utils.ViewUtils.marquee import org.citron.citron_emu.utils.ViewUtils.marquee
import org.yuzu.yuzu_emu.utils.ViewUtils.setVisible import org.citron.citron_emu.utils.ViewUtils.setVisible
import org.yuzu.yuzu_emu.utils.collect import org.citron.citron_emu.utils.collect
import org.yuzu.yuzu_emu.viewholder.AbstractViewHolder import org.citron.citron_emu.viewholder.AbstractViewHolder
class HomeSettingAdapter( class HomeSettingAdapter(
private val activity: AppCompatActivity, private val activity: AppCompatActivity,

View file

@ -1,14 +1,14 @@
// SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-FileCopyrightText: 2023 yuzu Emulator Project & 2025 citron Homebrew Project
// SPDX-License-Identifier: GPL-2.0-or-later // SPDX-License-Identifier: GPL-2.0-or-later
package org.yuzu.yuzu_emu.adapters package org.citron.citron_emu.adapters
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.ViewGroup import android.view.ViewGroup
import org.yuzu.yuzu_emu.databinding.CardInstallableBinding import org.citron.citron_emu.databinding.CardInstallableBinding
import org.yuzu.yuzu_emu.model.Installable import org.citron.citron_emu.model.Installable
import org.yuzu.yuzu_emu.utils.ViewUtils.setVisible import org.citron.citron_emu.utils.ViewUtils.setVisible
import org.yuzu.yuzu_emu.viewholder.AbstractViewHolder import org.citron.citron_emu.viewholder.AbstractViewHolder
class InstallableAdapter(installables: List<Installable>) : class InstallableAdapter(installables: List<Installable>) :
AbstractListAdapter<Installable, InstallableAdapter.InstallableViewHolder>(installables) { AbstractListAdapter<Installable, InstallableAdapter.InstallableViewHolder>(installables) {

View file

@ -1,16 +1,16 @@
// SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-FileCopyrightText: 2023 yuzu Emulator Project & 2025 citron Homebrew Project
// SPDX-License-Identifier: GPL-2.0-or-later // SPDX-License-Identifier: GPL-2.0-or-later
package org.yuzu.yuzu_emu.adapters package org.citron.citron_emu.adapters
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.ViewGroup import android.view.ViewGroup
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import org.yuzu.yuzu_emu.databinding.ListItemSettingBinding import org.citron.citron_emu.databinding.ListItemSettingBinding
import org.yuzu.yuzu_emu.fragments.LicenseBottomSheetDialogFragment import org.citron.citron_emu.fragments.LicenseBottomSheetDialogFragment
import org.yuzu.yuzu_emu.model.License import org.citron.citron_emu.model.License
import org.yuzu.yuzu_emu.utils.ViewUtils.setVisible import org.citron.citron_emu.utils.ViewUtils.setVisible
import org.yuzu.yuzu_emu.viewholder.AbstractViewHolder import org.citron.citron_emu.viewholder.AbstractViewHolder
class LicenseAdapter(private val activity: AppCompatActivity, licenses: List<License>) : class LicenseAdapter(private val activity: AppCompatActivity, licenses: List<License>) :
AbstractListAdapter<License, LicenseAdapter.LicenseViewHolder>(licenses) { AbstractListAdapter<License, LicenseAdapter.LicenseViewHolder>(licenses) {

View file

@ -1,7 +1,7 @@
// SPDX-FileCopyrightText: 2023 yuzu Emulator Project // SPDX-FileCopyrightText: 2023 yuzu Emulator Project & 2025 citron Homebrew Project
// SPDX-License-Identifier: GPL-2.0-or-later // SPDX-License-Identifier: GPL-2.0-or-later
package org.yuzu.yuzu_emu.adapters package org.citron.citron_emu.adapters
import android.text.Html import android.text.Html
import android.view.LayoutInflater import android.view.LayoutInflater
@ -10,14 +10,14 @@ import androidx.appcompat.app.AppCompatActivity
import androidx.core.content.res.ResourcesCompat import androidx.core.content.res.ResourcesCompat
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import com.google.android.material.button.MaterialButton import com.google.android.material.button.MaterialButton
import org.yuzu.yuzu_emu.databinding.PageSetupBinding import org.citron.citron_emu.databinding.PageSetupBinding
import org.yuzu.yuzu_emu.model.HomeViewModel import org.citron.citron_emu.model.HomeViewModel
import org.yuzu.yuzu_emu.model.SetupCallback import org.citron.citron_emu.model.SetupCallback
import org.yuzu.yuzu_emu.model.SetupPage import org.citron.citron_emu.model.SetupPage
import org.yuzu.yuzu_emu.model.StepState import org.citron.citron_emu.model.StepState
import org.yuzu.yuzu_emu.utils.ViewUtils import org.citron.citron_emu.utils.ViewUtils
import org.yuzu.yuzu_emu.utils.ViewUtils.setVisible import org.citron.citron_emu.utils.ViewUtils.setVisible
import org.yuzu.yuzu_emu.viewholder.AbstractViewHolder import org.citron.citron_emu.viewholder.AbstractViewHolder
class SetupAdapter(val activity: AppCompatActivity, pages: List<SetupPage>) : class SetupAdapter(val activity: AppCompatActivity, pages: List<SetupPage>) :
AbstractListAdapter<SetupPage, SetupAdapter.SetupPageViewHolder>(pages) { AbstractListAdapter<SetupPage, SetupAdapter.SetupPageViewHolder>(pages) {

View file

@ -1,7 +1,7 @@
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project // SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project & 2025 citron Homebrew Project
// SPDX-License-Identifier: GPL-2.0-or-later // SPDX-License-Identifier: GPL-2.0-or-later
package org.yuzu.yuzu_emu.applets.keyboard package org.citron.citron_emu.applets.keyboard
import android.content.Context import android.content.Context
import android.os.Handler import android.os.Handler
@ -13,9 +13,9 @@ import android.view.inputmethod.InputMethodManager
import androidx.annotation.Keep import androidx.annotation.Keep
import androidx.core.view.ViewCompat import androidx.core.view.ViewCompat
import java.io.Serializable import java.io.Serializable
import org.yuzu.yuzu_emu.NativeLibrary import org.citron.citron_emu.NativeLibrary
import org.yuzu.yuzu_emu.R import org.citron.citron_emu.R
import org.yuzu.yuzu_emu.applets.keyboard.ui.KeyboardDialogFragment import org.citron.citron_emu.applets.keyboard.ui.KeyboardDialogFragment
@Keep @Keep
object SoftwareKeyboard { object SoftwareKeyboard {

Some files were not shown because too many files have changed in this diff Show more