diff --git a/.codespellrc b/.codespellrc index 1874359d3..59ef89bff 100644 --- a/.codespellrc +++ b/.codespellrc @@ -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 [codespell] diff --git a/.git-blame-ignore-revs b/.git-blame-ignore-revs index 109f2f45e..cad1bf375 100644 --- a/.git-blame-ignore-revs +++ b/.git-blame-ignore-revs @@ -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 # CRLF -> LF diff --git a/.gitattributes b/.gitattributes index 99172a7f3..a50932458 100644 --- a/.gitattributes +++ b/.gitattributes @@ -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 dist/languages/* linguist-vendored diff --git a/.gitignore b/.gitignore index fbadb208b..eecf58eaf 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: 2013 Citra Emulator Project +# SPDX-FileCopyrightText: 2013 Citra Emulator Project & 2025 Citron Homebrew Project # SPDX-License-Identifier: GPL-2.0-or-later # Build directory diff --git a/.gitmodules b/.gitmodules index 0d8210906..93a2b44d4 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: 2014 Citra Emulator Project +# SPDX-FileCopyrightText: 2014 Citra Emulator Project & 2025 Citron Homebrew Project # SPDX-License-Identifier: GPL-2.0-or-later [submodule "enet"] diff --git a/.reuse/dep5 b/.reuse/dep5 index e6903c569..0078d3aff 100644 --- a/.reuse/dep5 +++ b/.reuse/dep5 @@ -9,7 +9,7 @@ Files: dist/english_plurals/* dist/qt_themes/*/icons/48x48/sd_card.png dist/qt_themes/*/icons/index.theme dist/qt_themes/default/style.qss -Copyright: yuzu Emulator Project +Copyright: yuzu Emulator Project & 2025 citron Homebrew Project License: GPL-2.0-or-later Files: dist/qt_themes/default/icons/256x256/citron.png @@ -17,7 +17,7 @@ Files: dist/qt_themes/default/icons/256x256/citron.png dist/citron.icns dist/citron.ico dist/citron.svg -Copyright: yuzu Emulator Project +Copyright: yuzu Emulator Project & 2025 citron Homebrew Project License: GPL-2.0-or-later Files: dist/qt_themes/qdarkstyle*/LICENSE.* @@ -109,12 +109,12 @@ Copyright: 2021 Advanced Micro Devices, Inc. License: MIT 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 Files: src/citron/compatdb.ui src/citron/main.ui -Copyright: 2014-2017 Citra Emulator Project +Copyright: 2014-2017 Citra Emulator Project & 2025 Citron Homebrew Project License: GPL-2.0-or-later Files: src/citron/loading_screen.ui @@ -125,27 +125,27 @@ Files: src/citron/applets/aboutdialog.ui src/citron/applets/qt_software_keyboard.ui src/citron/util/overlay_dialog.ui Copyright: 2020-2021 Its-Rei - 2020-2021 yuzu Emulator Project + 2020-2021 yuzu Emulator Project & 2025 citron Homebrew Project License: GPL-2.0-or-later Files: vcpkg.json -Copyright: 2022 yuzu Emulator Project +Copyright: 2022 yuzu Emulator Project & 2025 citron Homebrew Project License: GPL-3.0-or-later Files: .github/ISSUE_TEMPLATE/* -Copyright: 2022 yuzu Emulator Project +Copyright: 2022 yuzu Emulator Project & 2025 citron Homebrew Project License: GPL-2.0-or-later 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 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 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 Files: externals/stb/* @@ -157,5 +157,5 @@ Copyright: Copyright 2017-2019 Feral Interactive License: BSD-3-Clause 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 diff --git a/CMakeLists.txt b/CMakeLists.txt index 9cde23779..380717cb8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: 2025 Citron Homebrew Emulator Project +# SPDX-FileCopyrightText: 2018 yuzu Emulator Project & 2025 citron Homebrew Project # SPDX-License-Identifier: GPL-2.0-or-later cmake_minimum_required(VERSION 3.22) @@ -12,60 +12,11 @@ include(DownloadExternals) include(CMakeDependentOption) include(CTest) -# Disable Warnings as Errors for MSVC -if (MSVC) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W3 /WX-") -endif() - -# PGO Configuration -option(CITRON_ENABLE_PGO_INSTRUMENT "Enable Profile-Guided Optimization instrumentation build" OFF) -option(CITRON_ENABLE_PGO_OPTIMIZE "Enable Profile-Guided Optimization optimization build" OFF) - -if(MSVC) - if(CITRON_ENABLE_PGO_INSTRUMENT) - string(APPEND CMAKE_CXX_FLAGS_RELEASE " /GL /LTCG:PGINSTRUMENT") - string(APPEND CMAKE_EXE_LINKER_FLAGS_RELEASE " /LTCG:PGINSTRUMENT") - string(APPEND CMAKE_SHARED_LINKER_FLAGS_RELEASE " /LTCG:PGINSTRUMENT") - elseif(CITRON_ENABLE_PGO_OPTIMIZE) - string(APPEND CMAKE_CXX_FLAGS_RELEASE " /GL /LTCG:PGOPTIMIZE") - string(APPEND CMAKE_EXE_LINKER_FLAGS_RELEASE " /LTCG:PGOPTIMIZE") - string(APPEND CMAKE_SHARED_LINKER_FLAGS_RELEASE " /LTCG:PGOPTIMIZE") - endif() -else() - # GCC and Clang PGO flags - if(CITRON_ENABLE_PGO_INSTRUMENT) - if(CMAKE_CXX_COMPILER_ID MATCHES "Clang") - string(APPEND CMAKE_CXX_FLAGS_RELEASE " -fprofile-instr-generate") - string(APPEND CMAKE_EXE_LINKER_FLAGS_RELEASE " -fprofile-instr-generate") - string(APPEND CMAKE_SHARED_LINKER_FLAGS_RELEASE " -fprofile-instr-generate") - else() # GCC - string(APPEND CMAKE_CXX_FLAGS_RELEASE " -fprofile-generate") - string(APPEND CMAKE_EXE_LINKER_FLAGS_RELEASE " -fprofile-generate") - string(APPEND CMAKE_SHARED_LINKER_FLAGS_RELEASE " -fprofile-generate") - endif() - elseif(CITRON_ENABLE_PGO_OPTIMIZE) - if(CMAKE_CXX_COMPILER_ID MATCHES "Clang") - string(APPEND CMAKE_CXX_FLAGS_RELEASE " -fprofile-instr-use=default.profdata") - string(APPEND CMAKE_EXE_LINKER_FLAGS_RELEASE " -fprofile-instr-use=default.profdata") - string(APPEND CMAKE_SHARED_LINKER_FLAGS_RELEASE " -fprofile-instr-use=default.profdata") - else() # GCC - string(APPEND CMAKE_CXX_FLAGS_RELEASE " -fprofile-use") - string(APPEND CMAKE_EXE_LINKER_FLAGS_RELEASE " -fprofile-use") - string(APPEND CMAKE_SHARED_LINKER_FLAGS_RELEASE " -fprofile-use") - endif() - endif() -endif() - -# Check if SDL2::SDL2 target exists; if not, create an alias -if (TARGET SDL2::SDL2-static) - add_library(SDL2::SDL2 ALIAS SDL2::SDL2-static) -elseif (TARGET SDL2::SDL2-shared) - add_library(SDL2::SDL2 ALIAS SDL2::SDL2-shared) -endif() - # Set bundled sdl2/qt as dependent options. +# OFF by default, but if ENABLE_SDL2 and MSVC are true then ON option(ENABLE_SDL2 "Enable the SDL2 frontend" ON) 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 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) @@ -73,6 +24,8 @@ cmake_dependent_option(ENABLE_LIBUSB "Enable the use of LibUSB" ON "NOT ANDROID" option(ENABLE_OPENGL "Enable OpenGL" ON) mark_as_advanced(FORCE ENABLE_OPENGL) option(ENABLE_QT "Enable the Qt frontend" ON) +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/") option(ENABLE_QT_TRANSLATION "Enable translations for the Qt frontend" OFF) CMAKE_DEPENDENT_OPTION(CITRON_USE_BUNDLED_QT "Download bundled Qt binaries" "${MSVC}" "ENABLE_QT" OFF) @@ -113,18 +66,11 @@ option(CITRON_DOWNLOAD_TIME_ZONE_DATA "Always download time zone binaries" OFF) option(CITRON_ENABLE_PORTABLE "Allow citron to enable portable mode if a user folder is found in the CWD" ON) -option(CITRON_USE_LLVM_DEMANGLE "Use LLVM Demangle" ON) - 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) set(DEFAULT_ENABLE_OPENSSL ON) -if (ANDROID OR WIN32 OR APPLE) - set(DEFAULT_ENABLE_OPENSSL OFF) -endif() -option(ENABLE_OPENSSL "Enable OpenSSL backend for ISslConnection" ${DEFAULT_ENABLE_OPENSSL}) - if (ANDROID OR WIN32 OR APPLE) # - Windows defaults to the Schannel backend. # - macOS defaults to the SecureTransport backend. @@ -137,25 +83,21 @@ endif() option(ENABLE_OPENSSL "Enable OpenSSL backend for ISslConnection" ${DEFAULT_ENABLE_OPENSSL}) if (ANDROID AND CITRON_DOWNLOAD_ANDROID_VVL) - set(vvl_version "1.4.309.0") + set(vvl_version "sdk-1.3.261.1") set(vvl_zip_file "${CMAKE_BINARY_DIR}/externals/vvl-android.zip") - set(vvl_lib_path "${CMAKE_CURRENT_SOURCE_DIR}/src/android/app/src/main/jniLibs/arm64-v8a/") - set(vvl_final_lib "${vvl_lib_path}/libVkLayer_khronos_validation.so") - - if (NOT EXISTS "${vvl_final_lib}") + if (NOT EXISTS "${vvl_zip_file}") # Download and extract validation layer release to externals directory - if (NOT EXISTS "${vvl_zip_file}") - set(vvl_base_url "https://github.com/KhronosGroup/Vulkan-ValidationLayers/releases/download") - file(DOWNLOAD "${vvl_base_url}/vulkan-sdk-${vvl_version}/android-binaries-${vvl_version}.zip" - "${vvl_zip_file}" SHOW_PROGRESS) - execute_process(COMMAND ${CMAKE_COMMAND} -E tar xf "${vvl_zip_file}" - WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/externals") - endif() - - # Copy the arm64 binary to src/android/app/main/jniLibs - file(COPY "${CMAKE_BINARY_DIR}/externals/android-binaries-${vvl_version}/arm64-v8a/libVkLayer_khronos_validation.so" - DESTINATION "${vvl_lib_path}") + set(vvl_base_url "https://github.com/KhronosGroup/Vulkan-ValidationLayers/releases/download") + file(DOWNLOAD "${vvl_base_url}/${vvl_version}/android-binaries-${vvl_version}-android.zip" + "${vvl_zip_file}" SHOW_PROGRESS) + execute_process(COMMAND ${CMAKE_COMMAND} -E tar xf "${vvl_zip_file}" + WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/externals") endif() + + # Copy the arm64 binary to src/android/app/main/jniLibs + set(vvl_lib_path "${CMAKE_CURRENT_SOURCE_DIR}/src/android/app/src/main/jniLibs/arm64-v8a/") + file(COPY "${CMAKE_BINARY_DIR}/externals/android-binaries-${vvl_version}/arm64-v8a/libVkLayer_khronos_validation.so" + DESTINATION "${vvl_lib_path}") endif() if (ANDROID) @@ -169,39 +111,22 @@ if (CITRON_USE_BUNDLED_VCPKG) if (CMAKE_ANDROID_ARCH_ABI STREQUAL "arm64-v8a") set(VCPKG_TARGET_TRIPLET "arm64-android") - # Detect host system (Windows or Linux) - if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows") - set(VCPKG_HOST_TRIPLET "x64-windows") - else() - set(VCPKG_HOST_TRIPLET "x64-linux") - endif() # this is to avoid CMake using the host pkg-config to find the host # libraries when building for Android targets set(PKG_CONFIG_EXECUTABLE "aarch64-none-linux-android-pkg-config" CACHE FILEPATH "" FORCE) elseif (CMAKE_ANDROID_ARCH_ABI STREQUAL "x86_64") set(VCPKG_TARGET_TRIPLET "x64-android") - # Detect host system (Windows or Linux) - if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows") - set(VCPKG_HOST_TRIPLET "x64-windows") - else() - set(VCPKG_HOST_TRIPLET "x64-linux") - endif() set(PKG_CONFIG_EXECUTABLE "x86_64-none-linux-android-pkg-config" CACHE FILEPATH "" FORCE) else() message(FATAL_ERROR "Unsupported Android architecture ${CMAKE_ANDROID_ARCH_ABI}") endif() - - # Add these lines to ensure proper Android toolchain setup - set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "${ANDROID_NDK}/build/cmake/android.toolchain.cmake") - set(VCPKG_CRT_LINKAGE "dynamic") - set(VCPKG_LIBRARY_LINKAGE "static") endif() if (MSVC) set(VCPKG_DOWNLOADS_PATH ${PROJECT_SOURCE_DIR}/externals/vcpkg/downloads) - set(NASM_VERSION "2.16.03") + set(NASM_VERSION "2.16.01") set(NASM_DESTINATION_PATH ${VCPKG_DOWNLOADS_PATH}/nasm-${NASM_VERSION}-win64.zip) - set(NASM_DOWNLOAD_URL "https://www.nasm.us/pub/nasm/releasebuilds/${NASM_VERSION}/win64/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}) file(DOWNLOAD ${NASM_DOWNLOAD_URL} ${NASM_DESTINATION_PATH} SHOW_PROGRESS STATUS NASM_STATUS) @@ -288,7 +213,7 @@ endif() if (ENABLE_COMPATIBILITY_LIST_DOWNLOAD AND NOT EXISTS ${PROJECT_BINARY_DIR}/dist/compatibility_list/compatibility_list.json) message(STATUS "Downloading compatibility list for citron...") file(DOWNLOAD - https://api.citron-emu.org/gamedb/ + https://api.yuzu-mirror.org/gamedb/ "${PROJECT_BINARY_DIR}/dist/compatibility_list/compatibility_list.json" SHOW_PROGRESS) endif() if (NOT EXISTS ${PROJECT_BINARY_DIR}/dist/compatibility_list/compatibility_list.json) @@ -367,24 +292,22 @@ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin) # ======================================================================= # Enforce the search mode of non-required packages for better and shorter failure messages -find_package(Boost REQUIRED context) -find_package(enet MODULE) -find_package(fmt 11 REQUIRED) -if (CITRON_USE_LLVM_DEMANGLE) - find_package(LLVM MODULE COMPONENTS Demangle) -endif() +find_package(Boost 1.79.0 REQUIRED context) +find_package(enet 1.3 MODULE) +find_package(fmt 9 REQUIRED) +find_package(LLVM 17.0.2 MODULE COMPONENTS Demangle) find_package(lz4 REQUIRED) -find_package(nlohmann_json REQUIRED) -find_package(Opus MODULE) +find_package(nlohmann_json 3.8 REQUIRED) +find_package(Opus 1.3 MODULE) find_package(RenderDoc MODULE) find_package(SimpleIni MODULE) find_package(stb MODULE) find_package(VulkanMemoryAllocator CONFIG) -find_package(ZLIB REQUIRED) -find_package(zstd REQUIRED) +find_package(ZLIB 1.2 REQUIRED) +find_package(zstd 1.5 REQUIRED) if (NOT CITRON_USE_EXTERNAL_VULKAN_HEADERS) - find_package(VulkanHeaders 1.4.313 REQUIRED) + find_package(VulkanHeaders 1.3.274 REQUIRED) endif() if (NOT CITRON_USE_EXTERNAL_VULKAN_UTILITY_LIBRARIES) @@ -392,19 +315,19 @@ if (NOT CITRON_USE_EXTERNAL_VULKAN_UTILITY_LIBRARIES) endif() if (ENABLE_LIBUSB) - find_package(libusb MODULE) + find_package(libusb 1.0.24 MODULE) endif() if (ARCHITECTURE_x86 OR ARCHITECTURE_x86_64) - find_package(xbyak CONFIG) + find_package(xbyak 6 CONFIG) endif() if (ARCHITECTURE_arm64) - find_package(oaknut CONFIG) + find_package(oaknut 2.0.1 CONFIG) endif() if (ARCHITECTURE_x86_64 OR ARCHITECTURE_arm64) - find_package(dynarmic CONFIG) + find_package(dynarmic 6.4.0 CONFIG) endif() if (ENABLE_CUBEB) @@ -416,12 +339,12 @@ if (USE_DISCORD_PRESENCE) endif() if (ENABLE_WEB_SERVICE) - find_package(cpp-jwt CONFIG) - find_package(httplib MODULE COMPONENTS OpenSSL) + find_package(cpp-jwt 1.4 CONFIG) + find_package(httplib 0.12 MODULE COMPONENTS OpenSSL) endif() if (CITRON_TESTS) - find_package(Catch2 REQUIRED) + find_package(Catch2 3.0.1 REQUIRED) endif() # boost:asio has functions that require AcceptEx et al @@ -430,11 +353,11 @@ if (MINGW) endif() if(ENABLE_OPENSSL) - find_package(OpenSSL REQUIRED) + find_package(OpenSSL 1.1.1 REQUIRED) endif() if (UNIX AND NOT APPLE) - find_package(gamemode MODULE) + find_package(gamemode 1.7 MODULE) endif() # Please consider this as a stub @@ -442,11 +365,171 @@ if(ENABLE_QT6 AND Qt6_LOCATION) list(APPEND CMAKE_PREFIX_PATH "${Qt6_LOCATION}") endif() +function(set_citron_qt_components) + # Best practice is to ask for all components at once, so they are from the same version + set(CITRON_QT_COMPONENTS2 Core Widgets Concurrent) + if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux") + list(APPEND CITRON_QT_COMPONENTS2 DBus) + endif() + if (CITRON_USE_QT_MULTIMEDIA) + list(APPEND CITRON_QT_COMPONENTS2 Multimedia) + endif() + if (CITRON_USE_QT_WEB_ENGINE) + list(APPEND CITRON_QT_COMPONENTS2 WebEngineCore WebEngineWidgets) + endif() + if (ENABLE_QT_TRANSLATION) + list(APPEND CITRON_QT_COMPONENTS2 LinguistTools) + endif() + if (USE_DISCORD_PRESENCE) + list(APPEND CITRON_QT_COMPONENTS2 Network) + endif() + set(CITRON_QT_COMPONENTS ${CITRON_QT_COMPONENTS2} PARENT_SCOPE) +endfunction(set_citron_qt_components) + +# Qt5 requires that we find components, so it doesn't fit our pretty little find package function +if(ENABLE_QT) + set(QT_VERSION 5.15) + # These are used to specify minimum versions + set(QT5_VERSION 5.15) + set(QT6_VERSION 6.3.1) + + set_citron_qt_components() + if (ENABLE_QT6) + find_package(Qt6 ${QT6_VERSION} COMPONENTS ${CITRON_QT_COMPONENTS}) + endif() + if (Qt6_FOUND) + message(STATUS "citron/CMakeLists.txt: Qt6Widgets_VERSION ${Qt6Widgets_VERSION}, setting QT_VERSION") + set(QT_VERSION ${Qt6Widgets_VERSION}) + set(QT_MAJOR_VERSION 6) + # Qt6 sets cxx_std_17 and we need to undo that + set_target_properties(Qt6::Platform PROPERTIES INTERFACE_COMPILE_FEATURES "") + else() + 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 + set(QT_DEFAULT_MAJOR_VERSION 5) + set(QT_MAJOR_VERSION 5) + + set(CITRON_USE_QT_MULTIMEDIA ON) + # Check for system Qt on Linux, fallback to bundled Qt + if (UNIX AND NOT APPLE) + if (NOT CITRON_USE_BUNDLED_QT) + find_package(Qt5 ${QT5_VERSION} COMPONENTS Widgets DBus Multimedia) + endif() + if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux" AND (NOT Qt5_FOUND OR CITRON_USE_BUNDLED_QT)) + # Check for dependencies, then enable bundled Qt download + + # Check that the system GLIBCXX version is compatible + find_program(OBJDUMP objdump) + if (NOT OBJDUMP) + message(FATAL_ERROR "Required program `objdump` not found.") + endif() + find_library(LIBSTDCXX libstdc++.so.6) + execute_process( + COMMAND + ${OBJDUMP} -T ${LIBSTDCXX} + COMMAND + grep GLIBCXX_3.4.28 + COMMAND + sed "s/[0-9a-f]*.* //" + COMMAND + sed "s/ .*//" + COMMAND + sort -u + OUTPUT_VARIABLE + GLIBCXX_MET + ) + if (NOT GLIBCXX_MET) + message(FATAL_ERROR "Qt too old or not found, and bundled Qt package is not \ + compatible with this system. Either install Qt ${QT_VERSION}, or provide the path \ + to Qt by setting the variable Qt5_ROOT.") + endif() + + # Check for headers + find_package(PkgConfig REQUIRED) + pkg_check_modules(QT_DEP_GLU QUIET glu>=9.0.0) + if (NOT QT_DEP_GLU_FOUND) + message(FATAL_ERROR "Qt bundled package dependency `glu` not found. \ + Perhaps `libglu1-mesa-dev` needs to be installed?") + endif() + pkg_check_modules(QT_DEP_MESA QUIET dri>=20.0.8) + if (NOT QT_DEP_MESA_FOUND) + message(FATAL_ERROR "Qt bundled package dependency `dri` not found. \ + Perhaps `mesa-common-dev` needs to be installed?") + endif() + + # Check for X libraries + set(BUNDLED_QT_REQUIREMENTS + libxcb-icccm.so.4 + libxcb-image.so.0 + libxcb-keysyms.so.1 + libxcb-randr.so.0 + libxcb-render-util.so.0 + libxcb-render.so.0 + libxcb-shape.so.0 + libxcb-shm.so.0 + libxcb-sync.so.1 + libxcb-xfixes.so.0 + libxcb-xinerama.so.0 + libxcb-xkb.so.1 + libxcb.so.1 + libxkbcommon-x11.so.0 + libxkbcommon.so.0 + ) + set(UNRESOLVED_QT_DEPS "") + foreach (REQUIREMENT ${BUNDLED_QT_REQUIREMENTS}) + find_library(BUNDLED_QT_${REQUIREMENT} ${REQUIREMENT}) + if (NOT BUNDLED_QT_${REQUIREMENT}) + set(UNRESOLVED_QT_DEPS ${UNRESOLVED_QT_DEPS} ${REQUIREMENT}) + endif() + unset(BUNDLED_QT_${REQUIREMENT}) + endforeach() + unset(BUNDLED_QT_REQUIREMENTS) + + if (NOT "${UNRESOLVED_QT_DEPS}" STREQUAL "") + message(FATAL_ERROR "Bundled Qt package missing required dependencies: ${UNRESOLVED_QT_DEPS}") + endif() + + set(CITRON_USE_BUNDLED_QT ON CACHE BOOL "Download bundled Qt" FORCE) + endif() + if (CITRON_USE_BUNDLED_QT) + # Binary package currently does not support Qt webengine, so make sure it's disabled + set(CITRON_USE_QT_WEB_ENGINE OFF CACHE BOOL "Use Qt Webengine" FORCE) + endif() + endif() + + set(CITRON_QT_NO_CMAKE_SYSTEM_PATH) + + if(CITRON_USE_BUNDLED_QT) + if ((MSVC_VERSION GREATER_EQUAL 1920 AND MSVC_VERSION LESS 1940) AND ARCHITECTURE_x86_64) + set(QT_BUILD qt-5.15.2-msvc2019_64) + elseif ((${CMAKE_SYSTEM_NAME} STREQUAL "Linux") AND NOT MINGW AND ARCHITECTURE_x86_64) + set(QT_BUILD qt5_5_15_2) + else() + message(FATAL_ERROR "No bundled Qt binaries for your toolchain. Disable CITRON_USE_BUNDLED_QT and provide your own.") + endif() + + if (DEFINED QT_BUILD) + download_bundled_external("qt/" ${QT_BUILD} QT_PREFIX) + endif() + + set(QT_PREFIX_HINT HINTS "${QT_PREFIX}") + + set(CITRON_QT_NO_CMAKE_SYSTEM_PATH "NO_CMAKE_SYSTEM_PATH") + # Binary package for Qt5 has Qt Multimedia + set(CITRON_USE_QT_MULTIMEDIA ON CACHE BOOL "Use Qt Multimedia" FORCE) + endif() + + set_citron_qt_components() + find_package(Qt5 ${QT5_VERSION} COMPONENTS ${CITRON_QT_COMPONENTS} ${QT_PREFIX_HINT} ${CITRON_QT_NO_CMAKE_SYSTEM_PATH}) + endif() + +endif() + # 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 (CITRON_USE_BUNDLED_SDL2) # Detect toolchain and platform - if ((MSVC_VERSION GREATER_EQUAL 1920) 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") else() message(FATAL_ERROR "No bundled SDL2 binaries for your toolchain. Disable CITRON_USE_BUNDLED_SDL2 and provide your own.") @@ -471,90 +554,22 @@ if (ENABLE_SDL2) endif() endif() -add_subdirectory(externals) - -if (USE_DISCORD_PRESENCE) - target_compile_options(discord-rpc PRIVATE -fpermissive) -endif() - -if (ENABLE_QT) - if (NOT USE_SYSTEM_QT) - download_qt(6.8.2) - endif() - - find_package(Qt6 REQUIRED COMPONENTS Widgets Multimedia Concurrent Network) - - if (UNIX AND NOT APPLE) - find_package(Qt6 REQUIRED COMPONENTS DBus) - endif() - - if (ENABLE_QT_TRANSLATION) - find_package(Qt6 REQUIRED COMPONENTS LinguistTools) - endif() - - if (NOT DEFINED QT_TARGET_PATH) - get_target_property(qtcore_path Qt6::Core LOCATION_Release) - string(FIND "${qtcore_path}" "/bin/" qtcore_path_bin_pos REVERSE) - string(FIND "${qtcore_path}" "/lib/" qtcore_path_lib_pos REVERSE) - if (qtcore_path_bin_pos GREATER qtcore_path_lib_pos) - string(SUBSTRING "${qtcore_path}" 0 ${qtcore_path_bin_pos} QT_TARGET_PATH) - else() - string(SUBSTRING "${qtcore_path}" 0 ${qtcore_path_lib_pos} QT_TARGET_PATH) - endif() - endif() - - if (NOT DEFINED QT_HOST_PATH) - set(QT_HOST_PATH "${QT_TARGET_PATH}") - endif() - message(STATUS "Using target Qt at ${QT_TARGET_PATH}") - message(STATUS "Using host Qt at ${QT_HOST_PATH}") -endif() - -function(set_citron_qt_components) -# Best practice is to ask for all components at once, so they are from the same version -set(CITRON_QT_COMPONENTS2 Core Widgets Concurrent) -if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux") -list(APPEND CITRON_QT_COMPONENTS2 DBus) -endif() -if (CITRON_USE_QT_MULTIMEDIA) -list(APPEND CITRON_QT_COMPONENTS2 Multimedia) - endif() - if (CITRON_USE_QT_WEB_ENGINE) - list(APPEND CITRON_QT_COMPONENTS2 WebEngineCore WebEngineWidgets) - endif() - if (ENABLE_QT_TRANSLATION) - list(APPEND CITRON_QT_COMPONENTS2 LinguistTools) - endif() - if (USE_DISCORD_PRESENCE) - list(APPEND CITRON_QT_COMPONENTS2 Network) - endif() - set(CITRON_QT_COMPONENTS ${CITRON_QT_COMPONENTS2} PARENT_SCOPE) - endfunction(set_citron_qt_components) - - # List of all FFmpeg components required - set(FFmpeg_COMPONENTS +# List of all FFmpeg components required +set(FFmpeg_COMPONENTS avcodec avfilter avutil swscale) - if (UNIX AND NOT APPLE AND NOT ANDROID) +if (UNIX AND NOT APPLE AND NOT ANDROID) find_package(PkgConfig REQUIRED) pkg_check_modules(LIBVA libva) endif() if (NOT CITRON_USE_BUNDLED_FFMPEG) # Use system installed FFmpeg - find_package(FFmpeg REQUIRED QUIET COMPONENTS ${FFmpeg_COMPONENTS}) + find_package(FFmpeg 4.3 REQUIRED QUIET COMPONENTS ${FFmpeg_COMPONENTS}) endif() -if(ENABLE_QT) - set_citron_qt_components() - find_package(Qt6 REQUIRED COMPONENTS ${CITRON_QT_COMPONENTS}) - set(QT_MAJOR_VERSION 6) - # Qt6 sets cxx_std_17 and we need to undo that - set_target_properties(Qt6::Platform PROPERTIES INTERFACE_COMPILE_FEATURES "") - endif() - if (WIN32 AND CITRON_CRASH_DUMPS) set(BREAKPAD_VER "breakpad-c89f9dd") download_bundled_external("breakpad/" ${BREAKPAD_VER} BREAKPAD_PREFIX) @@ -685,25 +700,7 @@ if (CITRON_USE_FASTER_LD AND CMAKE_CXX_COMPILER_ID STREQUAL "GNU") endif() endif() -# Set runtime library to MD/MDd for all configurations -if(MSVC) - set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>DLL") - - # Force all projects (including external dependencies) to use the same runtime - set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MD") - set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MDd") - set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /MD") - set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /MDd") - - # Add this to ensure Cubeb uses the same runtime - add_compile_options( - $<$:/MDd> - $<$:/MD> - $<$:/MD> - $<$:/MD> - ) -endif() - +add_subdirectory(externals) add_subdirectory(src) # Set citron project or citron-cmd project as default StartUp Project in Visual Studio depending on whether QT is enabled or not diff --git a/CMakeModules/CopyCitronFFmpegDeps.cmake b/CMakeModules/CopyCitronFFmpegDeps.cmake index f8413b574..10f8dcf5b 100644 --- a/CMakeModules/CopyCitronFFmpegDeps.cmake +++ b/CMakeModules/CopyCitronFFmpegDeps.cmake @@ -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 function(copy_citron_FFmpeg_deps target_dir) diff --git a/CMakeModules/CopyCitronQt5Deps.cmake b/CMakeModules/CopyCitronQt5Deps.cmake index af58151d7..c8f9e1dbe 100644 --- a/CMakeModules/CopyCitronQt5Deps.cmake +++ b/CMakeModules/CopyCitronQt5Deps.cmake @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: 2016 Citra Emulator Project +# SPDX-FileCopyrightText: 2016 Citra Emulator Project & 2025 Citron Homebrew Project # SPDX-License-Identifier: GPL-2.0-or-later function(copy_citron_Qt5_deps target_dir) diff --git a/CMakeModules/CopyCitronQt6Deps.cmake b/CMakeModules/CopyCitronQt6Deps.cmake deleted file mode 100644 index 3d354a495..000000000 --- a/CMakeModules/CopyCitronQt6Deps.cmake +++ /dev/null @@ -1,60 +0,0 @@ -# SPDX-FileCopyrightText: 2024 Citron HomeBrew Emulator Project - -function(copy_citron_Qt6_deps target_dir) - include(WindowsCopyFiles) - if (MSVC) - set(DLL_DEST "$/") - set(Qt6_DLL_DIR "${Qt6_DIR}/../../../bin") - else() - set(DLL_DEST "${CMAKE_BINARY_DIR}/bin/") - set(Qt6_DLL_DIR "${Qt6_DIR}/../../../lib/") - endif() - set(Qt6_PLATFORMS_DIR "${Qt6_DIR}/../../../plugins/platforms/") - set(Qt6_STYLES_DIR "${Qt6_DIR}/../../../plugins/styles/") - set(Qt6_IMAGEFORMATS_DIR "${Qt6_DIR}/../../../plugins/imageformats/") - set(Qt6_RESOURCES_DIR "${Qt6_DIR}/../../../resources/") - set(PLATFORMS ${DLL_DEST}plugins/platforms/) - set(STYLES ${DLL_DEST}plugins/styles/) - set(IMAGEFORMATS ${DLL_DEST}plugins/imageformats/) - - if (MSVC) - windows_copy_files(${target_dir} ${Qt6_DLL_DIR} ${DLL_DEST} - Qt6Core$<$:d>.* - Qt6Gui$<$:d>.* - Qt6Widgets$<$:d>.* - Qt6Network$<$:d>.* - ) - if (CITRON_USE_QT_MULTIMEDIA) - windows_copy_files(${target_dir} ${Qt6_DLL_DIR} ${DLL_DEST} - Qt6Multimedia$<$:d>.* - ) - endif() - if (CITRON_USE_QT_WEB_ENGINE) - windows_copy_files(${target_dir} ${Qt6_DLL_DIR} ${DLL_DEST} - Qt6WebEngineCore$<$:d>.* - Qt6WebEngineWidgets$<$:d>.* - QtWebEngineProcess$<$:d>.* - ) - windows_copy_files(${target_dir} ${Qt6_RESOURCES_DIR} ${DLL_DEST} - icudtl.dat - qtwebengine_devtools_resources.pak - qtwebengine_resources.pak - qtwebengine_resources_100p.pak - qtwebengine_resources_200p.pak - ) - endif() - windows_copy_files(citron ${Qt6_PLATFORMS_DIR} ${PLATFORMS} qwindows$<$:d>.*) - windows_copy_files(citron ${Qt6_STYLES_DIR} ${STYLES} qwindowsvistastyle$<$:d>.*) - windows_copy_files(citron ${Qt6_IMAGEFORMATS_DIR} ${IMAGEFORMATS} - qjpeg$<$:d>.* - qgif$<$:d>.* - ) - else() - # Update for non-MSVC platforms if needed - endif() - - # Create an empty qt.conf file - add_custom_command(TARGET citron POST_BUILD - COMMAND ${CMAKE_COMMAND} -E touch ${DLL_DEST}qt.conf - ) -endfunction(copy_citron_Qt6_deps) diff --git a/CMakeModules/CopyCitronSDLDeps.cmake b/CMakeModules/CopyCitronSDLDeps.cmake index a07f6f8c7..1ce39a3a0 100644 --- a/CMakeModules/CopyCitronSDLDeps.cmake +++ b/CMakeModules/CopyCitronSDLDeps.cmake @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: 2016 Citra Emulator Project +# SPDX-FileCopyrightText: 2016 Citra Emulator Project & 2025 Citron Homebrew Project # SPDX-License-Identifier: GPL-2.0-or-later function(copy_citron_SDL_deps target_dir) diff --git a/CMakeModules/DownloadExternals.cmake b/CMakeModules/DownloadExternals.cmake index d237876e6..12b337997 100644 --- a/CMakeModules/DownloadExternals.cmake +++ b/CMakeModules/DownloadExternals.cmake @@ -1,11 +1,10 @@ -# SPDX-FileCopyrightText: 2025 Citron Homebrew Emulator Project +# SPDX-FileCopyrightText: 2017 yuzu Emulator Project & 2025 citron Homebrew Project # SPDX-License-Identifier: GPL-2.0-or-later # This function downloads a binary library package from our external repo. # Params: # remote_path: path to the file to download, relative to the remote repository root # prefix_var: name of a variable which will be set with the path to the extracted contents -set(CURRENT_MODULE_DIR ${CMAKE_CURRENT_LIST_DIR}) function(download_bundled_external remote_path lib_name prefix_var) set(package_base_url "https://github.com/yuzu-mirror/") @@ -17,7 +16,7 @@ if (WIN32) elseif (${CMAKE_SYSTEM_NAME} STREQUAL "Linux") set(package_repo "ext-linux-bin/raw/main/") set(package_extension ".tar.xz") -elseif (ANDROID) +elseif (ANDROID) set(package_repo "ext-android-bin/raw/main/") set(package_extension ".tar.xz") else() @@ -55,172 +54,3 @@ function(download_moltenvk_external platform version) list(APPEND CMAKE_PREFIX_PATH "${MOLTENVK_DIR}/MoltenVK/dylib/${platform}") set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} PARENT_SCOPE) endfunction() - -# Determine installation parameters for OS, architecture, and compiler -function(determine_qt_parameters target host_out type_out arch_out arch_path_out host_type_out host_arch_out host_arch_path_out) - if (WIN32) - set(host "windows") - set(type "desktop") - - if (NOT tool) - if (MINGW) - set(arch "win64_mingw") - set(arch_path "mingw_64") - elseif (MSVC) - if ("arm64" IN_LIST ARCHITECTURE) - set(arch_path "msvc2022_arm64") - elseif ("x86_64" IN_LIST ARCHITECTURE) - set(arch_path "msvc2022_64") - else() - message(FATAL_ERROR "Unsupported bundled Qt architecture. Enable USE_SYSTEM_QT and provide your own.") - endif() - set(arch "win64_${arch_path}") - - if (CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "AMD64") - set(host_arch_path "msvc2022_64") - elseif (CMAKE_HOST_SYSTEM_PROCESSOR STREQUAL "ARM64") - set(host_arch_path "msvc2022_64") - endif() - set(host_arch "win64_${host_arch_path}") - else() - message(FATAL_ERROR "Unsupported bundled Qt toolchain. Enable USE_SYSTEM_QT and provide your own.") - endif() - endif() - elseif (APPLE) - set(host "mac") - set(type "desktop") - set(arch "clang_64") - set(arch_path "macos") - else() - set(host "linux") - set(type "desktop") - set(arch "gcc_64") - set(arch_path "linux") - endif() - - set(${host_out} "${host}" PARENT_SCOPE) - set(${type_out} "${type}" PARENT_SCOPE) - set(${arch_out} "${arch}" PARENT_SCOPE) - set(${arch_path_out} "${arch_path}" PARENT_SCOPE) - if (DEFINED host_type) - set(${host_type_out} "${host_type}" PARENT_SCOPE) - else() - set(${host_type_out} "${type}" PARENT_SCOPE) - endif() - if (DEFINED host_arch) - set(${host_arch_out} "${host_arch}" PARENT_SCOPE) - else() - set(${host_arch_out} "${arch}" PARENT_SCOPE) - endif() - if (DEFINED host_arch_path) - set(${host_arch_path_out} "${host_arch_path}" PARENT_SCOPE) - else() - set(${host_arch_path_out} "${arch_path}" PARENT_SCOPE) - endif() -endfunction() - -# Download Qt binaries for a specific configuration. -function(download_qt_configuration prefix_out target host type arch arch_path base_path) - if (target MATCHES "tools_.*") - set(tool ON) - else() - set(tool OFF) - endif() - - set(install_args -c "${CURRENT_MODULE_DIR}/aqt_config.ini") - if (tool) - set(prefix "${base_path}/Tools") - set(install_args ${install_args} install-tool --outputdir ${base_path} ${host} desktop ${target}) - else() - set(prefix "${base_path}/${target}/${arch_path}") - set(install_args ${install_args} install-qt --outputdir ${base_path} ${host} ${type} ${target} ${arch} - -m all) - endif() - - if (NOT EXISTS "${prefix}") - message(STATUS "Downloading Qt binaries for ${target}:${host}:${type}:${arch}:${arch_path}") - set(AQT_PREBUILD_BASE_URL "https://github.com/miurahr/aqtinstall/releases/download/v3.2.0") - if (WIN32) - set(aqt_path "${base_path}/aqt.exe") - if (NOT EXISTS "${aqt_path}") - file(DOWNLOAD - ${AQT_PREBUILD_BASE_URL}/aqt.exe - ${aqt_path} SHOW_PROGRESS) - endif() - execute_process(COMMAND ${aqt_path} ${install_args} - WORKING_DIRECTORY ${base_path}) - elseif (APPLE) - set(aqt_path "${base_path}/aqt-macos") - if (NOT EXISTS "${aqt_path}") - file(DOWNLOAD - ${AQT_PREBUILD_BASE_URL}/aqt-macos - ${aqt_path} SHOW_PROGRESS) - endif() - execute_process(COMMAND chmod +x ${aqt_path}) - execute_process(COMMAND ${aqt_path} ${install_args} - WORKING_DIRECTORY ${base_path}) - else() - set(aqt_install_path "${base_path}/aqt") - file(MAKE_DIRECTORY "${aqt_install_path}") - - execute_process(COMMAND python3 -m pip install --target=${aqt_install_path} aqtinstall - WORKING_DIRECTORY ${base_path}) - execute_process(COMMAND ${CMAKE_COMMAND} -E env PYTHONPATH=${aqt_install_path} python3 -m aqt ${install_args} - WORKING_DIRECTORY ${base_path}) - endif() - - message(STATUS "Downloaded Qt binaries for ${target}:${host}:${type}:${arch}:${arch_path} to ${prefix}") - endif() - - set(${prefix_out} "${prefix}" PARENT_SCOPE) -endfunction() - -# This function downloads Qt using aqt. -# The path of the downloaded content will be added to the CMAKE_PREFIX_PATH. -# QT_TARGET_PATH is set to the Qt for the compile target platform. -# QT_HOST_PATH is set to a host-compatible Qt, for running tools. -# Params: -# target: Qt dependency to install. Specify a version number to download Qt, or "tools_(name)" for a specific build tool. -function(download_qt target) - determine_qt_parameters("${target}" host type arch arch_path host_type host_arch host_arch_path) - - get_external_prefix(qt base_path) - file(MAKE_DIRECTORY "${base_path}") - - download_qt_configuration(prefix "${target}" "${host}" "${type}" "${arch}" "${arch_path}" "${base_path}") - if (DEFINED host_arch_path AND NOT "${host_arch_path}" STREQUAL "${arch_path}") - download_qt_configuration(host_prefix "${target}" "${host}" "${host_type}" "${host_arch}" "${host_arch_path}" "${base_path}") - else() - set(host_prefix "${prefix}") - endif() - - set(QT_TARGET_PATH "${prefix}" CACHE STRING "") - set(QT_HOST_PATH "${host_prefix}" CACHE STRING "") - - list(APPEND CMAKE_PREFIX_PATH "${prefix}") - set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} PARENT_SCOPE) -endfunction() - -function(download_moltenvk) -set(MOLTENVK_PLATFORM "macOS") - -set(MOLTENVK_DIR "${CMAKE_BINARY_DIR}/externals/MoltenVK") -set(MOLTENVK_TAR "${CMAKE_BINARY_DIR}/externals/MoltenVK.tar") -if (NOT EXISTS ${MOLTENVK_DIR}) -if (NOT EXISTS ${MOLTENVK_TAR}) - file(DOWNLOAD https://github.com/KhronosGroup/MoltenVK/releases/download/v1.2.10-rc2/MoltenVK-all.tar - ${MOLTENVK_TAR} SHOW_PROGRESS) -endif() - -execute_process(COMMAND ${CMAKE_COMMAND} -E tar xf "${MOLTENVK_TAR}" - WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/externals") -endif() - -# Add the MoltenVK library path to the prefix so find_library can locate it. -list(APPEND CMAKE_PREFIX_PATH "${MOLTENVK_DIR}/MoltenVK/dylib/${MOLTENVK_PLATFORM}") -set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} PARENT_SCOPE) -endfunction() - -function(get_external_prefix lib_name prefix_var) - set(${prefix_var} "${CMAKE_BINARY_DIR}/externals/${lib_name}" PARENT_SCOPE) -endfunction() diff --git a/CMakeModules/FindFFmpeg.cmake b/CMakeModules/FindFFmpeg.cmake index 5cb1f3c8a..c88b19c15 100644 --- a/CMakeModules/FindFFmpeg.cmake +++ b/CMakeModules/FindFFmpeg.cmake @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: 2019 Citra Emulator Project +# SPDX-FileCopyrightText: 2019 Citra Emulator Project & 2025 Citron Homebrew Project # SPDX-License-Identifier: GPL-2.0-or-later # FindFFmpeg diff --git a/CMakeModules/FindOpus.cmake b/CMakeModules/FindOpus.cmake index 25a44fd87..76b5de287 100644 --- a/CMakeModules/FindOpus.cmake +++ b/CMakeModules/FindOpus.cmake @@ -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 find_package(PkgConfig QUIET) diff --git a/CMakeModules/Findgamemode.cmake b/CMakeModules/Findgamemode.cmake index aa2f36683..5c9e04955 100644 --- a/CMakeModules/Findgamemode.cmake +++ b/CMakeModules/Findgamemode.cmake @@ -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 find_package(PkgConfig QUIET) diff --git a/CMakeModules/Findlz4.cmake b/CMakeModules/Findlz4.cmake index 7a9a02d4e..36a2b5228 100644 --- a/CMakeModules/Findlz4.cmake +++ b/CMakeModules/Findlz4.cmake @@ -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 include(FindPackageHandleStandardArgs) diff --git a/CMakeModules/Findzstd.cmake b/CMakeModules/Findzstd.cmake index ae3ea0865..e3676079e 100644 --- a/CMakeModules/Findzstd.cmake +++ b/CMakeModules/Findzstd.cmake @@ -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 include(FindPackageHandleStandardArgs) diff --git a/CMakeModules/GenerateSCMRev.cmake b/CMakeModules/GenerateSCMRev.cmake index 3f5ce0f34..43b482f42 100644 --- a/CMakeModules/GenerateSCMRev.cmake +++ b/CMakeModules/GenerateSCMRev.cmake @@ -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 # Gets a UTC timestamp and sets the provided variable to it diff --git a/CMakeModules/MSVCCache.cmake b/CMakeModules/MSVCCache.cmake index ba0d22d9e..56c77ae11 100644 --- a/CMakeModules/MSVCCache.cmake +++ b/CMakeModules/MSVCCache.cmake @@ -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 # buildcache wrapper diff --git a/CMakeModules/MinGWClangCross.cmake b/CMakeModules/MinGWClangCross.cmake index 286a59a7a..08be04a62 100644 --- a/CMakeModules/MinGWClangCross.cmake +++ b/CMakeModules/MinGWClangCross.cmake @@ -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 set(MINGW_PREFIX /usr/x86_64-w64-mingw32/) diff --git a/CMakeModules/WindowsCopyFiles.cmake b/CMakeModules/WindowsCopyFiles.cmake index 08b598365..92abf37e7 100644 --- a/CMakeModules/WindowsCopyFiles.cmake +++ b/CMakeModules/WindowsCopyFiles.cmake @@ -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 # This file provides the function windows_copy_files. diff --git a/CMakeModules/aqt_config.ini b/CMakeModules/aqt_config.ini deleted file mode 100644 index 2ea6096e4..000000000 --- a/CMakeModules/aqt_config.ini +++ /dev/null @@ -1,30 +0,0 @@ -# SPDX-FileCopyrightText: 2024 Citron HomeBrew Emulator Project - -[aqt] -concurrency: 2 - -[mirrors] -trusted_mirrors: - https://download.qt.io -blacklist: - https://qt.mirror.constant.com - https://mirrors.ocf.berkeley.edu - https://mirrors.ustc.edu.cn - https://mirrors.tuna.tsinghua.edu.cn - https://mirrors.geekpie.club - https://mirrors-wan.geekpie.club - https://mirrors.sjtug.sjtu.edu.cn -fallbacks: - https://qtproject.mirror.liquidtelecom.com/ - https://mirrors.aliyun.com/qt/ - https://ftp.jaist.ac.jp/pub/qtproject/ - https://ftp.yz.yamagata-u.ac.jp/pub/qtproject/ - https://qt-mirror.dannhauer.de/ - https://ftp.fau.de/qtproject/ - https://mirror.netcologne.de/qtproject/ - https://mirrors.dotsrc.org/qtproject/ - https://www.nic.funet.fi/pub/mirrors/download.qt-project.org/ - https://master.qt.io/ - https://mirrors.ukfast.co.uk/sites/qt.io/ - https://ftp2.nluug.nl/languages/qt/ - https://ftp1.nluug.nl/languages/qt/ diff --git a/appimage-builder.sh b/appimage-builder.sh deleted file mode 100755 index 2c29d9aa5..000000000 --- a/appimage-builder.sh +++ /dev/null @@ -1,109 +0,0 @@ -#!/bin/bash -# reg_server, 2024-01-09 - -set -e - -# check arguments -if [[ $# != 2 ]]; then - >&2 echo "Invalid arguments!" - echo "Usage: $0 torzu|citron " - exit 1 -fi - -BUILD_APP="$1" -if [[ "${BUILD_APP}" != "torzu" && "${BUILD_APP}" != "citron" ]]; then - >&2 echo "Invalid arguments!" - echo "Usage: $0 torzu|citron " - exit 1 -fi - -BUILD_DIR=$(realpath "$2") -if [[ ! -d "${BUILD_DIR}" ]]; then - >&2 echo "Invalid arguments!" - echo "'$2' is not a directory" - exit 1 -fi - -DEPLOY_LINUX_FOLDER="${BUILD_DIR}/deploy-linux" -DEPLOY_LINUX_APPDIR_FOLDER="${BUILD_DIR}/deploy-linux/AppDir" -BIN_FOLDER="${BUILD_DIR}/bin" -BIN_EXE="${BIN_FOLDER}/${BUILD_APP//torzu/yuzu}" - -CPU_ARCH=$(uname -m) - -#export DISPLAYVERSION="1.2.3" # before cmake - -BIN_EXE_MIME_TYPE=$(file -b --mime-type "${BIN_EXE}") -if [[ "${BIN_EXE_MIME_TYPE}" != "application/x-pie-executable" && "${BIN_EXE_MIME_TYPE}" != "application/x-executable" ]]; then - >&2 echo "Invalid or missing main executable (${BIN_EXE})!" - exit 1 -fi - -mkdir -p "${DEPLOY_LINUX_FOLDER}" -rm -rf "${DEPLOY_LINUX_APPDIR_FOLDER}" - -cd "${BUILD_DIR}" - -# deploy/install to deploy-linux/AppDir -DESTDIR="${DEPLOY_LINUX_APPDIR_FOLDER}" ninja install - -cd "${DEPLOY_LINUX_FOLDER}" - -# remove -cmd executable, not needed for AppImage -rm -fv "${DEPLOY_LINUX_APPDIR_FOLDER}"/usr/bin/"${BUILD_APP//torzu/yuzu}"-cmd - -curl -fsSLo ./linuxdeploy "https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-${CPU_ARCH}.AppImage" -chmod +x ./linuxdeploy - -curl -fsSLo ./linuxdeploy-plugin-qt "https://github.com/linuxdeploy/linuxdeploy-plugin-qt/releases/download/continuous/linuxdeploy-plugin-qt-${CPU_ARCH}.AppImage" -chmod +x ./linuxdeploy-plugin-qt - -curl -fsSLo ./linuxdeploy-plugin-checkrt.sh https://github.com/darealshinji/linuxdeploy-plugin-checkrt/releases/download/continuous/linuxdeploy-plugin-checkrt.sh -chmod +x ./linuxdeploy-plugin-checkrt.sh - -# Add Qt 6 specific environment variables -export QT_QPA_PLATFORM="wayland;xcb" -export EXTRA_PLATFORM_PLUGINS="libqwayland-egl.so;libqwayland-generic.so;libqxcb.so" -export EXTRA_QT_PLUGINS="svg;wayland-decoration-client;wayland-graphics-integration-client;wayland-shell-integration;waylandcompositor;xcb-gl-integration;platformthemes/libqt6ct.so" - -# Update linuxdeploy commands for Qt 6 -export QMAKE="/usr/bin/qmake6" -export QT_SELECT=6 - -# remove NO_STRIP=1 if linuxdeploy is updated, see: https://github.com/linuxdeploy/linuxdeploy/issues/272 -NO_STRIP=1 APPIMAGE_EXTRACT_AND_RUN=1 ./linuxdeploy --appdir ./AppDir --plugin qt --plugin checkrt - -# remove libwayland-client because it has platform-dependent exports and breaks other OSes -rm -fv ./AppDir/usr/lib/libwayland-client.so* - -# remove libvulkan because it causes issues with gamescope -rm -fv ./AppDir/usr/lib/libvulkan.so* - -rm -rf ./linuxdeploy-squashfs-root -./linuxdeploy --appimage-extract -mv -v ./squashfs-root/ ./linuxdeploy-squashfs-root/ - -./linuxdeploy-squashfs-root/plugins/linuxdeploy-plugin-appimage/usr/bin/appimagetool ./AppDir -g - -#APPIMAGE_SUFFIX="linux_${CPU_ARCH}" -APPIMAGE_SUFFIX="${CPU_ARCH}" -#COMM_TAG="${DISPLAYVERSION}" -COMM_COUNT="$(git rev-list --count HEAD)" -COMM_HASH="$(git rev-parse --short=9 HEAD)" -BUILD_DATE=$(date +"%Y%m%d") -#APPIMAGE_NAME="${BUILD_APP}-v${COMM_TAG}-${BUILD_DATE}-${COMM_COUNT}-${COMM_HASH}-${APPIMAGE_SUFFIX}.AppImage" -APPIMAGE_NAME="${BUILD_APP}-nightly-${BUILD_DATE}-${COMM_COUNT}-${COMM_HASH}-${APPIMAGE_SUFFIX}.AppImage" - -LATEST_APPIMAGE=$(ls -1t ${BUILD_APP}*.AppImage | head -n 1) # find the most recent AppImage -if [[ -z "${LATEST_APPIMAGE}" ]]; then - >&2 echo "Error: No AppImage found for ${BUILD_APP}" - exit 1 -fi - -mv -v "${LATEST_APPIMAGE}" "${APPIMAGE_NAME}" - -FILESIZE=$(stat -c %s "./${APPIMAGE_NAME}") -SHA256SUM=$(sha256sum "./${APPIMAGE_NAME}" | awk '{ print $1 }') - -echo "${APPIMAGE_NAME}" -echo "${SHA256SUM};${FILESIZE}B" diff --git a/dist/72-citron-input.rules b/dist/72-citron-input.rules index df051ca28..ab6474033 100644 --- a/dist/72-citron-input.rules +++ b/dist/72-citron-input.rules @@ -1,5 +1,4 @@ -# SPDX-FileCopyrightText: 2023 yuzu Emulator Project -# SPDX-FileCopyrightText: 2025 citron Emulator Project +# SPDX-FileCopyrightText: 2023 yuzu Emulator Project & 2025 citron Homebrew Project # SPDX-License-Identifier: GPL-2.0-or-later # Allow systemd-logind to manage user access to hidraw with this file @@ -8,13 +7,13 @@ # Switch Pro Controller (USB/Bluetooth) KERNEL=="hidraw*", ATTRS{idVendor}=="057e", ATTRS{idProduct}=="2009", MODE="0660", TAG+="uaccess" -KERNEL=="hidraw*", KERNELS=="*057E:2009*", MODE="0660", TAG+="uaccess" +KERNEL=="hidraw*", KERNELS=="*057e:2009*", MODE="0660", TAG+="uaccess" # Joy-Con L (Bluetooth) -KERNEL=="hidraw*", KERNELS=="*057E:2006*", MODE="0660", TAG+="uaccess" +KERNEL=="hidraw*", KERNELS=="*057e:2006*", MODE="0660", TAG+="uaccess" # Joy-Con R (Bluetooth) -KERNEL=="hidraw*", KERNELS=="*057E:2007*", MODE="0660", TAG+="uaccess" +KERNEL=="hidraw*", KERNELS=="*057e:2007*", MODE="0660", TAG+="uaccess" # Joy-Con Charging Grip (USB) KERNEL=="hidraw*", ATTRS{idVendor}=="057e", ATTRS{idProduct}=="200e", MODE="0660", TAG+="uaccess" diff --git a/dist/citron.manifest b/dist/citron.manifest index f2c8639a2..033913b59 100644 --- a/dist/citron.manifest +++ b/dist/citron.manifest @@ -1,7 +1,7 @@ diff --git a/dist/compatibility_list/compatibility_list.qrc b/dist/compatibility_list/compatibility_list.qrc index 3b1359a8e..f23105ecf 100644 --- a/dist/compatibility_list/compatibility_list.qrc +++ b/dist/compatibility_list/compatibility_list.qrc @@ -1,5 +1,5 @@ diff --git a/dist/icons/controller/controller.qrc b/dist/icons/controller/controller.qrc index 8d5261c38..ffe80fd8f 100644 --- a/dist/icons/controller/controller.qrc +++ b/dist/icons/controller/controller.qrc @@ -1,5 +1,5 @@ diff --git a/dist/icons/overlay/overlay.qrc b/dist/icons/overlay/overlay.qrc index 8d7833aca..0d421ab09 100644 --- a/dist/icons/overlay/overlay.qrc +++ b/dist/icons/overlay/overlay.qrc @@ -1,5 +1,5 @@ diff --git a/dist/languages/ar.ts b/dist/languages/ar.ts index 68102e044..b890f4f97 100644 --- a/dist/languages/ar.ts +++ b/dist/languages/ar.ts @@ -35,8 +35,8 @@ p, li { white-space: pre-wrap; } - <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.citron-emu.org"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">موقعنا</span></a>|<a href="https://git.citron-emu.org"><span style=" text-decoration: underline; color:#039be5;">رماز المصدر</span></a>|<a href="https://git.citron-emu.org/Citron/Citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">المساهمون</span></a>|<a href="https://git.citron-emu.org/Citron/Citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">الرخصة</span></a></p></body></html> + <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://github.com/citron-emu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://github.com/citron-emu/citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://github.com/citron-emu/citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> + <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">موقعنا</span></a>|<a href="https://github.com/citron-emu"><span style=" text-decoration: underline; color:#039be5;">رماز المصدر</span></a>|<a href="https://github.com/citron-emu/citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">المساهمون</span></a>|<a href="https://github.com/citron-emu/citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">الرخصة</span></a></p></body></html> @@ -409,7 +409,7 @@ This would ban both their forum username and their IP address. - Mii Editor + Mii Edit @@ -6074,7 +6074,7 @@ Please, only use this feature to install updates and DLC. - Mii Editor Applet + Mii Edit Applet Mii تحرير التطبيق الصغير diff --git a/dist/languages/ca.ts b/dist/languages/ca.ts index 5af1aba76..474332d76 100644 --- a/dist/languages/ca.ts +++ b/dist/languages/ca.ts @@ -35,8 +35,8 @@ p, li { white-space: pre-wrap; } - <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.citron-emu.org"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Pàgina web</span></a> | <a href="https://git.citron-emu.org"><span style=" text-decoration: underline; color:#039be5;">Codi Font</span></a>|<a href="https://git.citron-emu.org/Citron/Citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contribuïdors</span></a>|<a href="https://git.citron-emu.org/Citron/Citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Llicència</span></a></p></body></html> + <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://github.com/citron-emu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://github.com/citron-emu/citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://github.com/citron-emu/citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> + <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Pàgina web</span></a> | <a href="https://github.com/citron-emu"><span style=" text-decoration: underline; color:#039be5;">Codi Font</span></a>|<a href="https://github.com/citron-emu/citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contribuïdors</span></a>|<a href="https://github.com/citron-emu/citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Llicència</span></a></p></body></html> @@ -407,7 +407,7 @@ This would ban both their forum username and their IP address. - Mii Editor + Mii Edit @@ -6111,7 +6111,7 @@ Si us plau, utilitzi aquesta funció només per a instal·lar actualitzacions i - Mii Editor Applet + Mii Edit Applet diff --git a/dist/languages/cs.ts b/dist/languages/cs.ts index 3a5929a9e..cf18ed420 100644 --- a/dist/languages/cs.ts +++ b/dist/languages/cs.ts @@ -35,8 +35,8 @@ p, li { white-space: pre-wrap; } - <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.citron-emu.org"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Webové stránky</span></a> | <a href="https://git.citron-emu.org"><span style=" text-decoration: underline; color:#039be5;">Zdrojový kód</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Přispěvatelé</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Licence</span></a></p></body></html> + <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://github.com/citron-emu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://github.com/citron-emu/citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://github.com/citron-emu/citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> + <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Webové stránky</span></a> | <a href="https://github.com/citron-emu"><span style=" text-decoration: underline; color:#039be5;">Zdrojový kód</span></a> | <a href="https://github.com/citron-emu/citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Přispěvatelé</span></a> | <a href="https://github.com/citron-emu/citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Licence</span></a></p></body></html> @@ -407,7 +407,7 @@ This would ban both their forum username and their IP address. - Mii Editor + Mii Edit @@ -6095,7 +6095,7 @@ Tuto funkci prosím používejte pouze k instalaci aktualizací a DLC. - Mii Editor Applet + Mii Edit Applet diff --git a/dist/languages/da.ts b/dist/languages/da.ts index 29bc75823..c5b86b640 100644 --- a/dist/languages/da.ts +++ b/dist/languages/da.ts @@ -35,8 +35,8 @@ p, li { white-space: pre-wrap; } - <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.citron-emu.org"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - <html><head/><body><p><a href="https://citron-emu.org/">Netsted<span style=" text-decoration: underline; color:#039be5;"></a> | <a href="https://git.citron-emu.org"><span style=" text-decoration: underline; color:#039be5;">Kildekode</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Bidragsydere</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Licens</span></a></p></body></html> + <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://github.com/citron-emu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://github.com/citron-emu/citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://github.com/citron-emu/citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> + <html><head/><body><p><a href="https://citron-emu.org/">Netsted<span style=" text-decoration: underline; color:#039be5;"></a> | <a href="https://github.com/citron-emu"><span style=" text-decoration: underline; color:#039be5;">Kildekode</span></a> | <a href="https://github.com/citron-emu/citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Bidragsydere</span></a> | <a href="https://github.com/citron-emu/citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Licens</span></a></p></body></html> @@ -409,7 +409,7 @@ Dette vil bandlyse både vedkommendes forum-brugernavn og IP-adresse. - Mii Editor + Mii Edit @@ -6101,7 +6101,7 @@ Please, only use this feature to install updates and DLC. - Mii Editor Applet + Mii Edit Applet diff --git a/dist/languages/de.ts b/dist/languages/de.ts index ad9ca87c2..a2497ff7e 100644 --- a/dist/languages/de.ts +++ b/dist/languages/de.ts @@ -35,8 +35,8 @@ p, li { white-space: pre-wrap; } - <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.citron-emu.org"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Webseite</span></a> | <a href="https://git.citron-emu.org"><span style=" text-decoration: underline; color:#039be5;">Quellcode</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Mitwirkende</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Lizenz</span></a></p></body></html> + <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://github.com/citron-emu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://github.com/citron-emu/citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://github.com/citron-emu/citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> + <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Webseite</span></a> | <a href="https://github.com/citron-emu"><span style=" text-decoration: underline; color:#039be5;">Quellcode</span></a> | <a href="https://github.com/citron-emu/citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Mitwirkende</span></a> | <a href="https://github.com/citron-emu/citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Lizenz</span></a></p></body></html> @@ -408,7 +408,7 @@ Dies würde deren Forum-Benutzernamen und deren IP-Adresse sperren. - Mii Editor + Mii Edit @@ -6121,7 +6121,7 @@ Bitte nutze diese Funktion nur zum Installieren von Updates und DLC. - Mii Editor Applet + Mii Edit Applet Mii-Edit-Applet diff --git a/dist/languages/el.ts b/dist/languages/el.ts index 9f780c6b4..d9c6416d7 100644 --- a/dist/languages/el.ts +++ b/dist/languages/el.ts @@ -35,8 +35,8 @@ p, li { white-space: pre-wrap; } - <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.citron-emu.org"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Ιστοσελίδα</span></a> | <a href="https://git.citron-emu.org"><span style=" text-decoration: underline; color:#039be5;">Πηγαίος Κώδικας</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Συνεργάτες</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/blob/master/LICENSE.txt"></span>Άδεια</span></a></p></body></html> + <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://github.com/citron-emu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://github.com/citron-emu/citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://github.com/citron-emu/citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> + <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Ιστοσελίδα</span></a> | <a href="https://github.com/citron-emu"><span style=" text-decoration: underline; color:#039be5;">Πηγαίος Κώδικας</span></a> | <a href="https://github.com/citron-emu/citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Συνεργάτες</span></a> | <a href="https://github.com/citron-emu/citron/blob/master/LICENSE.txt"></span>Άδεια</span></a></p></body></html> @@ -409,7 +409,7 @@ This would ban both their forum username and their IP address. - Mii Editor + Mii Edit @@ -6097,7 +6097,7 @@ Please, only use this feature to install updates and DLC. - Mii Editor Applet + Mii Edit Applet diff --git a/dist/languages/es.ts b/dist/languages/es.ts index 8e3714e42..1bb0eab54 100644 --- a/dist/languages/es.ts +++ b/dist/languages/es.ts @@ -35,8 +35,8 @@ p, li { white-space: pre-wrap; } - <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.citron-emu.org"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Página web</span></a> | <a href="https://git.citron-emu.org"><span style=" text-decoration: underline; color:#039be5;">Código fuente</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contribuidores</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Licencia</span></a></p></body></html> + <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://github.com/citron-emu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://github.com/citron-emu/citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://github.com/citron-emu/citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> + <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Página web</span></a> | <a href="https://github.com/citron-emu"><span style=" text-decoration: underline; color:#039be5;">Código fuente</span></a> | <a href="https://github.com/citron-emu/citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contribuidores</span></a> | <a href="https://github.com/citron-emu/citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Licencia</span></a></p></body></html> @@ -409,7 +409,7 @@ Esto banearía su nombre del foro y su dirección IP. - Mii Editor + Mii Edit Editor de Mii @@ -6167,7 +6167,7 @@ Por favor, utiliza esta función sólo para instalar actualizaciones y DLCs. - Mii Editor Applet + Mii Edit Applet Applet de Editor de Mii diff --git a/dist/languages/fi.ts b/dist/languages/fi.ts index 29caf2e5f..930ac332e 100644 --- a/dist/languages/fi.ts +++ b/dist/languages/fi.ts @@ -40,8 +40,8 @@ p, li { white-space: pre-wrap; } - <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.citron-emu.org"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/blob/master/license.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Nettisivu</span></a> | <a href="https://git.citron-emu.org"><span style=" text-decoration: underline; color:#039be5;">Lähdekoodi</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Lahjoittajat</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/blob/master/license.txt"><span style=" text-decoration: underline; color:#039be5;">Lisenssi</span></a></p></body></html> + <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://github.com/citron-emu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://github.com/citron-emu/citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://github.com/citron-emu/citron/blob/master/license.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> + <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Nettisivu</span></a> | <a href="https://github.com/citron-emu"><span style=" text-decoration: underline; color:#039be5;">Lähdekoodi</span></a> | <a href="https://github.com/citron-emu/citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Lahjoittajat</span></a> | <a href="https://github.com/citron-emu/citron/blob/master/license.txt"><span style=" text-decoration: underline; color:#039be5;">Lisenssi</span></a></p></body></html> diff --git a/dist/languages/fr.ts b/dist/languages/fr.ts index d42232bb6..6c397c7dc 100644 --- a/dist/languages/fr.ts +++ b/dist/languages/fr.ts @@ -35,8 +35,8 @@ p, li { white-space: pre-wrap; } - <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.citron-emu.org"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Site Web</span></a> | <a href="https://git.citron-emu.org"><span style=" text-decoration: underline; color:#039be5;">Code Source</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributeurs</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Licence</span></a></p></body></html> + <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://github.com/citron-emu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://github.com/citron-emu/citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://github.com/citron-emu/citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> + <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Site Web</span></a> | <a href="https://github.com/citron-emu"><span style=" text-decoration: underline; color:#039be5;">Code Source</span></a> | <a href="https://github.com/citron-emu/citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributeurs</span></a> | <a href="https://github.com/citron-emu/citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Licence</span></a></p></body></html> @@ -410,7 +410,7 @@ Cela bannirait à la fois son nom d'utilisateur du forum et son adresse IP. - Mii Editor + Mii Edit Édition de Mii @@ -6160,7 +6160,7 @@ Veuillez n'utiliser cette fonctionnalité que pour installer des mises à j - Mii Editor Applet + Mii Edit Applet Applet de l'éditeur Mii diff --git a/dist/languages/hu.ts b/dist/languages/hu.ts index 641e99064..ad654452d 100644 --- a/dist/languages/hu.ts +++ b/dist/languages/hu.ts @@ -35,8 +35,8 @@ p, li { white-space: pre-wrap; } - <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.citron-emu.org"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Weboldal</span></a> | <a href="https://git.citron-emu.org"><span style=" text-decoration: underline; color:#039be5;">Forráskód</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Közreműködők</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Licensz</span></a></p></body></html> + <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://github.com/citron-emu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://github.com/citron-emu/citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://github.com/citron-emu/citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> + <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Weboldal</span></a> | <a href="https://github.com/citron-emu"><span style=" text-decoration: underline; color:#039be5;">Forráskód</span></a> | <a href="https://github.com/citron-emu/citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Közreműködők</span></a> | <a href="https://github.com/citron-emu/citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Licensz</span></a></p></body></html> @@ -409,7 +409,7 @@ Ez kitiltaná a fórum felhasználóneve és az IP címe alapján. - Mii Editor + Mii Edit Mii szerkesztés @@ -6134,7 +6134,7 @@ Kérjük, csak frissítések és DLC-k telepítéséhez használd ezt a funkció - Mii Editor Applet + Mii Edit Applet Mii szerkesztő applet diff --git a/dist/languages/id.ts b/dist/languages/id.ts index c3aa25018..f611be75d 100644 --- a/dist/languages/id.ts +++ b/dist/languages/id.ts @@ -35,8 +35,8 @@ p, li { white-space: pre-wrap; } - <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.citron-emu.org"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Situs web</span></a> | <a href="https://git.citron-emu.org"><span style=" text-decoration: underline; color:#039be5;">Kode Sumber</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Kontributor</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Lisensi</span></a></p></body></html> + <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://github.com/citron-emu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://github.com/citron-emu/citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://github.com/citron-emu/citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> + <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Situs web</span></a> | <a href="https://github.com/citron-emu"><span style=" text-decoration: underline; color:#039be5;">Kode Sumber</span></a> | <a href="https://github.com/citron-emu/citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Kontributor</span></a> | <a href="https://github.com/citron-emu/citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Lisensi</span></a></p></body></html> @@ -409,7 +409,7 @@ Ini akan melarang nama pengguna forum mereka dan alamat IP mereka. - Mii Editor + Mii Edit Ubah Mii @@ -6154,7 +6154,7 @@ Please, only use this feature to install updates and DLC. - Mii Editor Applet + Mii Edit Applet diff --git a/dist/languages/it.ts b/dist/languages/it.ts index 73b95b56d..e12e40431 100644 --- a/dist/languages/it.ts +++ b/dist/languages/it.ts @@ -35,8 +35,8 @@ p, li { white-space: pre-wrap; } - <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.citron-emu.org"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Sito web</span></a> | <a href="https://git.citron-emu.org"><span style=" text-decoration: underline; color:#039be5;">Codice sorgente</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributori</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Licenza</span></a></p></body></html> + <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://github.com/citron-emu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://github.com/citron-emu/citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://github.com/citron-emu/citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> + <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Sito web</span></a> | <a href="https://github.com/citron-emu"><span style=" text-decoration: underline; color:#039be5;">Codice sorgente</span></a> | <a href="https://github.com/citron-emu/citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributori</span></a> | <a href="https://github.com/citron-emu/citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Licenza</span></a></p></body></html> @@ -409,7 +409,7 @@ Questo bannerà sia il suo nome utente del forum che il suo indirizzo IP. - Mii Editor + Mii Edit @@ -6130,7 +6130,7 @@ Configurazione &gt; Web. - Mii Editor Applet + Mii Edit Applet Editor dei Mii diff --git a/dist/languages/ja_JP.ts b/dist/languages/ja_JP.ts index bef6d8804..6d56078f1 100644 --- a/dist/languages/ja_JP.ts +++ b/dist/languages/ja_JP.ts @@ -35,8 +35,8 @@ p, li { white-space: pre-wrap; } - <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.citron-emu.org"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">ウェブサイト</span></a> | <a href="https://git.citron-emu.org"><span style=" text-decoration: underline; color:#039be5;">ソースコード</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">貢献者</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">ライセンス</span></a></p></body></html> + <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://github.com/citron-emu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://github.com/citron-emu/citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://github.com/citron-emu/citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> + <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">ウェブサイト</span></a> | <a href="https://github.com/citron-emu"><span style=" text-decoration: underline; color:#039be5;">ソースコード</span></a> | <a href="https://github.com/citron-emu/citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">貢献者</span></a> | <a href="https://github.com/citron-emu/citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">ライセンス</span></a></p></body></html> @@ -409,7 +409,7 @@ This would ban both their forum username and their IP address. - Mii Editor + Mii Edit @@ -6116,7 +6116,7 @@ Please, only use this feature to install updates and DLC. - Mii Editor Applet + Mii Edit Applet Mii 編集アプレット diff --git a/dist/languages/ko_KR.ts b/dist/languages/ko_KR.ts index f7cb093d1..ee92addc1 100644 --- a/dist/languages/ko_KR.ts +++ b/dist/languages/ko_KR.ts @@ -35,8 +35,8 @@ p, li { white-space: pre-wrap; } - <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.citron-emu.org"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">웹사이트</span></a> | <a href="https://git.citron-emu.org"><span style=" text-decoration: underline; color:#039be5;">소스 코드</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">기여자</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">라이센스</span></a></p></body></html> + <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://github.com/citron-emu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://github.com/citron-emu/citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://github.com/citron-emu/citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> + <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">웹사이트</span></a> | <a href="https://github.com/citron-emu"><span style=" text-decoration: underline; color:#039be5;">소스 코드</span></a> | <a href="https://github.com/citron-emu/citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">기여자</span></a> | <a href="https://github.com/citron-emu/citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">라이센스</span></a></p></body></html> @@ -409,7 +409,7 @@ This would ban both their forum username and their IP address. - Mii Editor + Mii Edit @@ -6115,7 +6115,7 @@ Please, only use this feature to install updates and DLC. - Mii Editor Applet + Mii Edit Applet diff --git a/dist/languages/nb.ts b/dist/languages/nb.ts index 70005af1a..f154082dd 100644 --- a/dist/languages/nb.ts +++ b/dist/languages/nb.ts @@ -35,8 +35,8 @@ p, li { white-space: pre-wrap; } - <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.citron-emu.org"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Nettside</span></a>|<a href="https://git.citron-emu.org"><span style=" text-decoration: underline; color:#039be5;">Kildekode</span></a>|<a href="https://git.citron-emu.org/Citron/Citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Bidragsytere</span></a>|<a href="https://git.citron-emu.org/Citron/Citron/blob/master/license.txt"><span style=" text-decoration: underline; color:#039be5;">Lisens</span></a></p></body></html> + <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://github.com/citron-emu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://github.com/citron-emu/citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://github.com/citron-emu/citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> + <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Nettside</span></a>|<a href="https://github.com/citron-emu"><span style=" text-decoration: underline; color:#039be5;">Kildekode</span></a>|<a href="https://github.com/citron-emu/citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Bidragsytere</span></a>|<a href="https://github.com/citron-emu/citron/blob/master/license.txt"><span style=" text-decoration: underline; color:#039be5;">Lisens</span></a></p></body></html> @@ -409,7 +409,7 @@ Dette vil bannlyse både deres forum brukernavn og deres IP adresse. - Mii Editor + Mii Edit @@ -6120,7 +6120,7 @@ Bruk kun denne funksjonen til å installere oppdateringer og DLC. - Mii Editor Applet + Mii Edit Applet diff --git a/dist/languages/nl.ts b/dist/languages/nl.ts index 15e873d51..66c6e8dc7 100644 --- a/dist/languages/nl.ts +++ b/dist/languages/nl.ts @@ -35,8 +35,8 @@ p, li { white-space: pre-wrap; } - <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.citron-emu.org"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.citron-emu.org"><span style=" text-decoration: underline; color:#039be5;">Broncode</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Bijdragers</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Licentie</span></a></p></body></html> + <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://github.com/citron-emu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://github.com/citron-emu/citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://github.com/citron-emu/citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> + <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://github.com/citron-emu"><span style=" text-decoration: underline; color:#039be5;">Broncode</span></a> | <a href="https://github.com/citron-emu/citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Bijdragers</span></a> | <a href="https://github.com/citron-emu/citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Licentie</span></a></p></body></html> @@ -409,7 +409,7 @@ Dit zou zowel hun forum gebruikersnaam als hun IP-adres verbannen. - Mii Editor + Mii Edit @@ -6108,7 +6108,7 @@ Gebruik deze functie alleen om updates en DLC te installeren. - Mii Editor Applet + Mii Edit Applet diff --git a/dist/languages/pl.ts b/dist/languages/pl.ts index 0313fe654..915af887a 100644 --- a/dist/languages/pl.ts +++ b/dist/languages/pl.ts @@ -35,8 +35,8 @@ p, li { white-space: pre-wrap; } - <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.citron-emu.org"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Strona</span></a>I<a href="https://git.citron-emu.org"><span style=" text-decoration: underline; color:#039be5;">Kod Źródłowy</span></a>I<a href="https://git.citron-emu.org/Citron/Citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Kontrybutorzy</span></a>I<a href="https://git.citron-emu.org/Citron/Citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Licencja</span></a></p></body></html> + <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://github.com/citron-emu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://github.com/citron-emu/citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://github.com/citron-emu/citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> + <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Strona</span></a>I<a href="https://github.com/citron-emu"><span style=" text-decoration: underline; color:#039be5;">Kod Źródłowy</span></a>I<a href="https://github.com/citron-emu/citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Kontrybutorzy</span></a>I<a href="https://github.com/citron-emu/citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Licencja</span></a></p></body></html> @@ -409,7 +409,7 @@ To zbanuje jego/jej nick na forum, oraz jego/jej adres IP. - Mii Editor + Mii Edit @@ -6111,7 +6111,7 @@ Proszę, używaj tej funkcji tylko do instalowania łatek i DLC. - Mii Editor Applet + Mii Edit Applet diff --git a/dist/languages/pt_BR.ts b/dist/languages/pt_BR.ts index 75f62f5c9..95525595c 100644 --- a/dist/languages/pt_BR.ts +++ b/dist/languages/pt_BR.ts @@ -35,8 +35,8 @@ p, li { white-space: pre-wrap; } - <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.citron-emu.org"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Site</span></a> | <a href="https://git.citron-emu.org"><span style=" text-decoration: underline; color:#039be5;">Código-fonte</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Colaboradores</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Licença</span></a></p></body></html> + <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://github.com/citron-emu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://github.com/citron-emu/citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://github.com/citron-emu/citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> + <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Site</span></a> | <a href="https://github.com/citron-emu"><span style=" text-decoration: underline; color:#039be5;">Código-fonte</span></a> | <a href="https://github.com/citron-emu/citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Colaboradores</span></a> | <a href="https://github.com/citron-emu/citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Licença</span></a></p></body></html> @@ -409,7 +409,7 @@ Isto banirá tanto o nome de usuário do fórum como o endereço IP. - Mii Editor + Mii Edit Editar Mii @@ -6169,7 +6169,7 @@ Por favor, use esse recurso apenas para instalar atualizações e DLCs. - Mii Editor Applet + Mii Edit Applet Miniaplicativo Editor de Mii diff --git a/dist/languages/pt_PT.ts b/dist/languages/pt_PT.ts index 2754b99b9..0ccf7654e 100644 --- a/dist/languages/pt_PT.ts +++ b/dist/languages/pt_PT.ts @@ -35,8 +35,8 @@ p, li { white-space: pre-wrap; } - <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.citron-emu.org"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - Site | <a href="https://git.citron-emu.org"><span style=" text-decoration: underline; color:#039be5;">Código fonte | <a href="https://git.citron-emu.org/Citron/Citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contribuidores</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Licença</span></a></p></body></html> + <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://github.com/citron-emu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://github.com/citron-emu/citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://github.com/citron-emu/citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> + Site | <a href="https://github.com/citron-emu"><span style=" text-decoration: underline; color:#039be5;">Código fonte | <a href="https://github.com/citron-emu/citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contribuidores</span></a> | <a href="https://github.com/citron-emu/citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Licença</span></a></p></body></html> @@ -409,7 +409,7 @@ Isto banirá tanto o nome de usuário do fórum como o endereço IP. - Mii Editor + Mii Edit Editar Mii @@ -6152,7 +6152,7 @@ Por favor, use esse recurso apenas para instalar atualizações e DLC. - Mii Editor Applet + Mii Edit Applet Applet Editor de Miis diff --git a/dist/languages/ru_RU.ts b/dist/languages/ru_RU.ts index ca7239691..19bcb75c8 100644 --- a/dist/languages/ru_RU.ts +++ b/dist/languages/ru_RU.ts @@ -35,8 +35,8 @@ p, li { white-space: pre-wrap; } - <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.citron-emu.org"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Веб-сайт</span></a> | <a href="https://git.citron-emu.org"><span style=" text-decoration: underline; color:#039be5;">Исходный код</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Контрибьюторы</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Лицензия</span></a></p></body></html> + <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://github.com/citron-emu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://github.com/citron-emu/citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://github.com/citron-emu/citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> + <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Веб-сайт</span></a> | <a href="https://github.com/citron-emu"><span style=" text-decoration: underline; color:#039be5;">Исходный код</span></a> | <a href="https://github.com/citron-emu/citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Контрибьюторы</span></a> | <a href="https://github.com/citron-emu/citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Лицензия</span></a></p></body></html> @@ -409,7 +409,7 @@ This would ban both their forum username and their IP address. - Mii Editor + Mii Edit Mii редактор @@ -6165,8 +6165,8 @@ Please, only use this feature to install updates and DLC. - Mii Editor Applet - Mii Editor Applet + Mii Edit Applet + Mii Edit Applet diff --git a/dist/languages/sv.ts b/dist/languages/sv.ts index 9a05c255a..3bca755ab 100644 --- a/dist/languages/sv.ts +++ b/dist/languages/sv.ts @@ -35,8 +35,8 @@ p, li { white-space: pre-wrap; } - <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.citron-emu.org"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Hemsida</span></a>I<a href="https://git.citron-emu.org"><span style=" text-decoration: underline; color:#039be5;">Källkod</span></a>I<a href="https://git.citron-emu.org/Citron/Citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Bidragsgivare</span></a>I<a href="https://git.citron-emu.org/Citron/Citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Licens</span></a></p></body></html> + <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://github.com/citron-emu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://github.com/citron-emu/citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://github.com/citron-emu/citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> + <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Hemsida</span></a>I<a href="https://github.com/citron-emu"><span style=" text-decoration: underline; color:#039be5;">Källkod</span></a>I<a href="https://github.com/citron-emu/citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Bidragsgivare</span></a>I<a href="https://github.com/citron-emu/citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Licens</span></a></p></body></html> @@ -409,7 +409,7 @@ Detta kommer bannlysa både dennes användarnamn på forum samt IP-adress. - Mii Editor + Mii Edit @@ -6090,7 +6090,7 @@ Please, only use this feature to install updates and DLC. - Mii Editor Applet + Mii Edit Applet diff --git a/dist/languages/tr_TR.ts b/dist/languages/tr_TR.ts index d39a0ea30..b04dce1c6 100644 --- a/dist/languages/tr_TR.ts +++ b/dist/languages/tr_TR.ts @@ -35,8 +35,8 @@ p, li { white-space: pre-wrap; } - <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.citron-emu.org"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a>|<a href="https://git.citron-emu.org"><span style=" text-decoration: underline; color:#039be5;">Kaynak Kodu</span></a>|<a href="https://git.citron-emu.org/Citron/Citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Katkıda Bulunanlar</span></a>|<a href="https://git.citron-emu.org/Citron/Citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Lisans</span></a></p></body></html> + <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://github.com/citron-emu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://github.com/citron-emu/citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://github.com/citron-emu/citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> + <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a>|<a href="https://github.com/citron-emu"><span style=" text-decoration: underline; color:#039be5;">Kaynak Kodu</span></a>|<a href="https://github.com/citron-emu/citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Katkıda Bulunanlar</span></a>|<a href="https://github.com/citron-emu/citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Lisans</span></a></p></body></html> @@ -409,7 +409,7 @@ Bu işlem onların hem forum kullanıcı adını hem de IP adresini banlar. - Mii Editor + Mii Edit @@ -6112,7 +6112,7 @@ Lütfen bu özelliği sadece güncelleme ve DLC yüklemek için kullanın. - Mii Editor Applet + Mii Edit Applet diff --git a/dist/languages/uk.ts b/dist/languages/uk.ts index 314c0c41f..7a654eb2a 100644 --- a/dist/languages/uk.ts +++ b/dist/languages/uk.ts @@ -35,8 +35,8 @@ p, li { white-space: pre-wrap; } - <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.citron-emu.org"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Веб-сайт</span></a> | <a href="https://git.citron-emu.org"><span style=" text-decoration: underline; color:#039be5;">Першокод</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Вкладники</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Ліцензія</span></a></p></body></html> + <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://github.com/citron-emu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://github.com/citron-emu/citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://github.com/citron-emu/citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> + <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Веб-сайт</span></a> | <a href="https://github.com/citron-emu"><span style=" text-decoration: underline; color:#039be5;">Першокод</span></a> | <a href="https://github.com/citron-emu/citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Вкладники</span></a> | <a href="https://github.com/citron-emu/citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Ліцензія</span></a></p></body></html> @@ -409,7 +409,7 @@ This would ban both their forum username and their IP address. - Mii Editor + Mii Edit @@ -6124,7 +6124,7 @@ Please, only use this feature to install updates and DLC. - Mii Editor Applet + Mii Edit Applet diff --git a/dist/languages/vi.ts b/dist/languages/vi.ts index f99ccd9fa..48ac970e2 100644 --- a/dist/languages/vi.ts +++ b/dist/languages/vi.ts @@ -35,8 +35,8 @@ p, li { white-space: pre-wrap; } - <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.citron-emu.org"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Trang web</span></a> | <a href="https://git.citron-emu.org"><span style=" text-decoration: underline; color:#039be5;">Mã nguồn</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Người đóng góp</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Giấy phép</span></a></p></body></html> + <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://github.com/citron-emu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://github.com/citron-emu/citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://github.com/citron-emu/citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> + <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Trang web</span></a> | <a href="https://github.com/citron-emu"><span style=" text-decoration: underline; color:#039be5;">Mã nguồn</span></a> | <a href="https://github.com/citron-emu/citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Người đóng góp</span></a> | <a href="https://github.com/citron-emu/citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">Giấy phép</span></a></p></body></html> @@ -409,7 +409,7 @@ Việc này sẽ ban tên người dùng trên diễn đàn và IP của họ lu - Mii Editor + Mii Edit @@ -6117,7 +6117,7 @@ Vui lòng, chỉ sử dụng tính năng này để cài đặt các bản cập - Mii Editor Applet + Mii Edit Applet diff --git a/dist/languages/vi_VN.ts b/dist/languages/vi_VN.ts index 3e975139c..9041fa7d6 100644 --- a/dist/languages/vi_VN.ts +++ b/dist/languages/vi_VN.ts @@ -35,8 +35,8 @@ p, li { white-space: pre-wrap; } - <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.citron-emu.org"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Trang web</span></a> | <a href="https://git.citron-emu.org"><span style=" text-decoration: underline; color:#039be5;">Mã nguồn</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Đóng góp</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/blob/master/license.txt"><span style=" text-decoration: underline; color:#039be5;">Giấy phép</span></a></p></body></html> + <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://github.com/citron-emu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://github.com/citron-emu/citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://github.com/citron-emu/citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> + <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Trang web</span></a> | <a href="https://github.com/citron-emu"><span style=" text-decoration: underline; color:#039be5;">Mã nguồn</span></a> | <a href="https://github.com/citron-emu/citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Đóng góp</span></a> | <a href="https://github.com/citron-emu/citron/blob/master/license.txt"><span style=" text-decoration: underline; color:#039be5;">Giấy phép</span></a></p></body></html> @@ -409,7 +409,7 @@ This would ban both their forum username and their IP address. - Mii Editor + Mii Edit @@ -6117,7 +6117,7 @@ Vui lòng, chỉ sử dụng tính năng này để cài các bản cập nhật - Mii Editor Applet + Mii Edit Applet diff --git a/dist/languages/zh_CN.ts b/dist/languages/zh_CN.ts index 336fc9af1..6ce517c4e 100644 --- a/dist/languages/zh_CN.ts +++ b/dist/languages/zh_CN.ts @@ -35,8 +35,8 @@ p, li { white-space: pre-wrap; } - <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.citron-emu.org"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">官方网站</span></a> | <a href="https://git.citron-emu.org"><span style=" text-decoration: underline; color:#039be5;">源代码</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">贡献者</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">许可证</span></a></p></body></html> + <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://github.com/citron-emu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://github.com/citron-emu/citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://github.com/citron-emu/citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> + <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">官方网站</span></a> | <a href="https://github.com/citron-emu"><span style=" text-decoration: underline; color:#039be5;">源代码</span></a> | <a href="https://github.com/citron-emu/citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">贡献者</span></a> | <a href="https://github.com/citron-emu/citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">许可证</span></a></p></body></html> @@ -409,8 +409,8 @@ This would ban both their forum username and their IP address. - Mii Editor - Mii Editor + Mii Edit + Mii Edit @@ -6165,8 +6165,8 @@ Please, only use this feature to install updates and DLC. - Mii Editor Applet - Mii Editor 小程序 + Mii Edit Applet + Mii Edit 小程序 diff --git a/dist/languages/zh_TW.ts b/dist/languages/zh_TW.ts index 6842cf9ec..c21c27797 100644 --- a/dist/languages/zh_TW.ts +++ b/dist/languages/zh_TW.ts @@ -35,8 +35,8 @@ p, li { white-space: pre-wrap; } - <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://git.citron-emu.org"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> - <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">官網</span></a> | <a href="https://git.citron-emu.org"><span style=" text-decoration: underline; color:#039be5;">原始碼</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">貢獻者</span></a> | <a href="https://git.citron-emu.org/Citron/Citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">許可證</span></a></p></body></html> + <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">Website</span></a> | <a href="https://github.com/citron-emu"><span style=" text-decoration: underline; color:#039be5;">Source Code</span></a> | <a href="https://github.com/citron-emu/citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">Contributors</span></a> | <a href="https://github.com/citron-emu/citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">License</span></a></p></body></html> + <html><head/><body><p><a href="https://citron-emu.org/"><span style=" text-decoration: underline; color:#039be5;">官網</span></a> | <a href="https://github.com/citron-emu"><span style=" text-decoration: underline; color:#039be5;">原始碼</span></a> | <a href="https://github.com/citron-emu/citron/graphs/contributors"><span style=" text-decoration: underline; color:#039be5;">貢獻者</span></a> | <a href="https://github.com/citron-emu/citron/blob/master/LICENSE.txt"><span style=" text-decoration: underline; color:#039be5;">許可證</span></a></p></body></html> @@ -409,8 +409,8 @@ This would ban both their forum username and their IP address. - Mii Editor - Mii Editor + Mii Edit + Mii Edit @@ -6161,7 +6161,7 @@ Please, only use this feature to install updates and DLC. - Mii Editor Applet + Mii Edit Applet Mii 編輯器小程式 diff --git a/dist/org.citron_emu.citron.desktop b/dist/org.citron_emu.citron.desktop index dd4bdab28..dc1b1d506 100644 --- a/dist/org.citron_emu.citron.desktop +++ b/dist/org.citron_emu.citron.desktop @@ -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 [Desktop Entry] diff --git a/dist/org.citron_emu.citron.metainfo.xml b/dist/org.citron_emu.citron.metainfo.xml index 83690eae2..53bd6f79a 100644 --- a/dist/org.citron_emu.citron.metainfo.xml +++ b/dist/org.citron_emu.citron.metainfo.xml @@ -1,7 +1,7 @@ @@ -25,13 +25,13 @@ SPDX-License-Identifier: CC0-1.0 emulator https://citron-emu.org/ - https://git.citron-emu.org/Citron/Citron/issues + https://github.com/citron-emu/citron/issues https://citron-emu.org/wiki/faq/ https://citron-emu.org/wiki/home/ https://citron-emu.org/donate/ https://www.transifex.com/projects/p/citron https://community.citra-emu.org/ - https://git.citron-emu.org/Citron/Citron + https://github.com/citron-emu/citron https://citron-emu.org/wiki/contributing/ org.citron_emu.citron.desktop diff --git a/dist/org.citron_emu.citron.xml b/dist/org.citron_emu.citron.xml index eefe13de6..d5891b7cf 100644 --- a/dist/org.citron_emu.citron.xml +++ b/dist/org.citron_emu.citron.xml @@ -1,7 +1,7 @@ diff --git a/dist/qt_themes/colorful/style.qrc b/dist/qt_themes/colorful/style.qrc index 82cd367be..e63ae3c5d 100644 --- a/dist/qt_themes/colorful/style.qrc +++ b/dist/qt_themes/colorful/style.qrc @@ -1,5 +1,5 @@ diff --git a/dist/qt_themes/colorful_dark/style.qrc b/dist/qt_themes/colorful_dark/style.qrc index 72451ef02..ed8e3ad25 100644 --- a/dist/qt_themes/colorful_dark/style.qrc +++ b/dist/qt_themes/colorful_dark/style.qrc @@ -1,5 +1,5 @@ diff --git a/dist/qt_themes/colorful_midnight_blue/style.qrc b/dist/qt_themes/colorful_midnight_blue/style.qrc index b9821c672..8220d9a43 100644 --- a/dist/qt_themes/colorful_midnight_blue/style.qrc +++ b/dist/qt_themes/colorful_midnight_blue/style.qrc @@ -1,5 +1,5 @@ diff --git a/dist/qt_themes/default/default.qrc b/dist/qt_themes/default/default.qrc index c0c1ba4a5..7b2c56c2d 100644 --- a/dist/qt_themes/default/default.qrc +++ b/dist/qt_themes/default/default.qrc @@ -1,5 +1,5 @@ diff --git a/dist/qt_themes/default/icons/256x256/citron.png b/dist/qt_themes/default/icons/256x256/citron.png index fc4f080a6..238adeb89 100644 Binary files a/dist/qt_themes/default/icons/256x256/citron.png and b/dist/qt_themes/default/icons/256x256/citron.png differ diff --git a/dist/qt_themes/default_dark/style.qrc b/dist/qt_themes/default_dark/style.qrc index 7de4737c2..cc5ffbcf8 100644 --- a/dist/qt_themes/default_dark/style.qrc +++ b/dist/qt_themes/default_dark/style.qrc @@ -1,5 +1,5 @@ diff --git a/dist/qt_themes/default_dark/style.qss b/dist/qt_themes/default_dark/style.qss index ca6daa2d5..ccb99ab63 100644 --- a/dist/qt_themes/default_dark/style.qss +++ b/dist/qt_themes/default_dark/style.qss @@ -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 */ QAbstractSpinBox { diff --git a/externals/CMakeLists.txt b/externals/CMakeLists.txt index 117683423..a9b026c04 100644 --- a/externals/CMakeLists.txt +++ b/externals/CMakeLists.txt @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: 2016 Citra Emulator Project +# SPDX-FileCopyrightText: 2016 Citra Emulator Project & 2025 Citron Homebrew Project # SPDX-License-Identifier: GPL-2.0-or-later # Dynarmic has cmake_minimum_required(3.12) and we may want to override diff --git a/externals/SDL b/externals/SDL index 2359383fc..cc016b004 160000 --- a/externals/SDL +++ b/externals/SDL @@ -1 +1 @@ -Subproject commit 2359383fc187386204c3bb22de89655a494cd128 +Subproject commit cc016b0046d563287f0aa9f09b958b5e70d43696 diff --git a/externals/Vulkan-Headers b/externals/Vulkan-Headers index e2e53a724..d4a196d8c 160000 --- a/externals/Vulkan-Headers +++ b/externals/Vulkan-Headers @@ -1 +1 @@ -Subproject commit e2e53a724677f6eba8ff0ce1ccb64ee321785cbd +Subproject commit d4a196d8c84e032d27f999adcea3075517c1c97f diff --git a/externals/Vulkan-Utility-Libraries b/externals/Vulkan-Utility-Libraries index 4e246c56e..5a88b6042 160000 --- a/externals/Vulkan-Utility-Libraries +++ b/externals/Vulkan-Utility-Libraries @@ -1 +1 @@ -Subproject commit 4e246c56ec5afb5ad66b9b04374d39ac04675c8e +Subproject commit 5a88b6042edb8f03eefc8de73bd73a899989373f diff --git a/externals/VulkanMemoryAllocator b/externals/VulkanMemoryAllocator index 539c0a8d8..3bab69249 160000 --- a/externals/VulkanMemoryAllocator +++ b/externals/VulkanMemoryAllocator @@ -1 +1 @@ -Subproject commit 539c0a8d8e3733c9f25ea9a184c85c77504f1653 +Subproject commit 3bab6924988e5f19bf36586a496156cf72f70d9f diff --git a/externals/cpp-httplib b/externals/cpp-httplib index 39a64fb4e..a609330e4 160000 --- a/externals/cpp-httplib +++ b/externals/cpp-httplib @@ -1 +1 @@ -Subproject commit 39a64fb4e7e42216f14f0ec51ccc5fa85e651432 +Subproject commit a609330e4c6374f741d3b369269f7848255e1954 diff --git a/externals/cpp-jwt b/externals/cpp-jwt index 4a970bc30..10ef5735d 160000 --- a/externals/cpp-jwt +++ b/externals/cpp-jwt @@ -1 +1 @@ -Subproject commit 4a970bc302d671476122cbc6b43cc89fbf4a96ec +Subproject commit 10ef5735d842b31025f1257ae78899f50a40fb14 diff --git a/externals/enet b/externals/enet index 657eaf97d..39a72ab19 160000 --- a/externals/enet +++ b/externals/enet @@ -1 +1 @@ -Subproject commit 657eaf97d9d335917c58484a4a4b5e03838ebd8e +Subproject commit 39a72ab1990014eb399cee9d538fd529df99c6a0 diff --git a/externals/ffmpeg/CMakeLists.txt b/externals/ffmpeg/CMakeLists.txt index 790f7c8de..cb3471c36 100644 --- a/externals/ffmpeg/CMakeLists.txt +++ b/externals/ffmpeg/CMakeLists.txt @@ -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 if (NOT WIN32 AND NOT ANDROID) diff --git a/externals/ffmpeg/ffmpeg b/externals/ffmpeg/ffmpeg index 99e2af4e7..9c1294ead 160000 --- a/externals/ffmpeg/ffmpeg +++ b/externals/ffmpeg/ffmpeg @@ -1 +1 @@ -Subproject commit 99e2af4e7837ca09b97d93a562dc12947179fc48 +Subproject commit 9c1294eaddb88cb0e044c675ccae059a85fc9c6c diff --git a/externals/libadrenotools b/externals/libadrenotools index 8fae8ce25..5cd3f5c5c 160000 --- a/externals/libadrenotools +++ b/externals/libadrenotools @@ -1 +1 @@ -Subproject commit 8fae8ce254dfc1344527e05301e43f37dea2df80 +Subproject commit 5cd3f5c5ceea6d9e9d435ccdd922d9b99e55d10b diff --git a/externals/libusb/CMakeLists.txt b/externals/libusb/CMakeLists.txt index 1d50c9f8c..c0a23c998 100644 --- a/externals/libusb/CMakeLists.txt +++ b/externals/libusb/CMakeLists.txt @@ -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 if (MINGW OR (${CMAKE_SYSTEM_NAME} MATCHES "Linux") OR APPLE) diff --git a/externals/libusb/config.h.in b/externals/libusb/config.h.in index 42ae5a5e8..5cf076a03 100644 --- a/externals/libusb/config.h.in +++ b/externals/libusb/config.h.in @@ -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 */ diff --git a/externals/libusb/libusb b/externals/libusb/libusb index de38189e8..c060e9ce3 160000 --- a/externals/libusb/libusb +++ b/externals/libusb/libusb @@ -1 +1 @@ -Subproject commit de38189e8014fa393f4d8c1d9d3fdf5e2a95899d +Subproject commit c060e9ce30ac2e3ffb49d94209c4dae77b6642f7 diff --git a/externals/nx_tzdb/CMakeLists.txt b/externals/nx_tzdb/CMakeLists.txt index 9fe251c1d..8bca08083 100644 --- a/externals/nx_tzdb/CMakeLists.txt +++ b/externals/nx_tzdb/CMakeLists.txt @@ -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 set(NX_TZDB_INCLUDE_DIR "${CMAKE_CURRENT_BINARY_DIR}/include") diff --git a/externals/nx_tzdb/ListFilesInDirectory.cmake b/externals/nx_tzdb/ListFilesInDirectory.cmake index 35a9e726a..634f7aea0 100644 --- a/externals/nx_tzdb/ListFilesInDirectory.cmake +++ b/externals/nx_tzdb/ListFilesInDirectory.cmake @@ -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 # CMake does not have a way to list the files in a specific directory, diff --git a/externals/nx_tzdb/NxTzdbCreateHeader.cmake b/externals/nx_tzdb/NxTzdbCreateHeader.cmake index 95606d862..6eb02cc72 100644 --- a/externals/nx_tzdb/NxTzdbCreateHeader.cmake +++ b/externals/nx_tzdb/NxTzdbCreateHeader.cmake @@ -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 set(ZONE_PATH ${CMAKE_ARGV3}) diff --git a/externals/nx_tzdb/include/nx_tzdb.h b/externals/nx_tzdb/include/nx_tzdb.h index 1f7c6069a..5cef8d701 100644 --- a/externals/nx_tzdb/include/nx_tzdb.h +++ b/externals/nx_tzdb/include/nx_tzdb.h @@ -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 #pragma once diff --git a/externals/nx_tzdb/tzdb_template.h.in b/externals/nx_tzdb/tzdb_template.h.in index 289d002ea..26e69d6d8 100644 --- a/externals/nx_tzdb/tzdb_template.h.in +++ b/externals/nx_tzdb/tzdb_template.h.in @@ -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 #pragma once diff --git a/externals/oaknut b/externals/oaknut index 94c726ce0..9d091109d 160000 --- a/externals/oaknut +++ b/externals/oaknut @@ -1 +1 @@ -Subproject commit 94c726ce0338b054eb8cb5ea91de8fe6c19f4392 +Subproject commit 9d091109deb445bc6e9289c6195a282b7c993d49 diff --git a/externals/opus b/externals/opus index 734aed05d..101a71e03 160000 --- a/externals/opus +++ b/externals/opus @@ -1 +1 @@ -Subproject commit 734aed05d09af3d2690f8cb5aafa97f052746daf +Subproject commit 101a71e03bbf860aaafb7090a0e440675cb27660 diff --git a/externals/simpleini b/externals/simpleini index 6048871ea..382ddbb4b 160000 --- a/externals/simpleini +++ b/externals/simpleini @@ -1 +1 @@ -Subproject commit 6048871ea9ee0ec24be5bd099d161a10567d7dc2 +Subproject commit 382ddbb4b92c0b26aa1b32cefba2002119a5b1f2 diff --git a/externals/tz/tz/tz.cpp b/externals/tz/tz/tz.cpp index 04fa6cc8a..729a14e47 100644 --- a/externals/tz/tz/tz.cpp +++ b/externals/tz/tz/tz.cpp @@ -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-License-Identifier: BSD-2-Clause diff --git a/externals/tz/tz/tz.h b/externals/tz/tz/tz.h index dae4459bc..d4dac33a7 100644 --- a/externals/tz/tz/tz.h +++ b/externals/tz/tz/tz.h @@ -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-License-Identifier: BSD-2-Clause diff --git a/externals/vcpkg b/externals/vcpkg index 96d5fb3de..a42af01b7 160000 --- a/externals/vcpkg +++ b/externals/vcpkg @@ -1 +1 @@ -Subproject commit 96d5fb3de135b86d7222c53f2352ca92827a156b +Subproject commit a42af01b72c28a8e1d7b48107b33e4f286a55ef6 diff --git a/hooks/pre-commit b/hooks/pre-commit index 855af6dca..2ae0d36a4 100755 --- a/hooks/pre-commit +++ b/hooks/pre-commit @@ -1,6 +1,6 @@ #!/bin/sh -# SPDX-FileCopyrightText: 2015 Citra Emulator Project +# SPDX-FileCopyrightText: 2015 Citra Emulator Project & 2025 Citron Homebrew Project # SPDX-License-Identifier: GPL-2.0-or-later # Enforce citron's whitespace policy diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 6f57af126..0effad625 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -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 # Enable modules to include each other's files diff --git a/src/android/.gitignore b/src/android/.gitignore index ff7121acd..a9745be18 100644 --- a/src/android/.gitignore +++ b/src/android/.gitignore @@ -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 # Built application files diff --git a/src/android/app/build.gradle.kts b/src/android/app/build.gradle.kts index b0537f50c..4965b9564 100644 --- a/src/android/app/build.gradle.kts +++ b/src/android/app/build.gradle.kts @@ -1,5 +1,4 @@ -// SPDX-FileCopyrightText: 2023 yuzu Emulator Project -// SPDX-FileCopyrightText: 2025 citron Emulator Project +// SPDX-FileCopyrightText: 2023 yuzu Emulator Project & 2025 citron Homebrew Project // SPDX-License-Identifier: GPL-3.0-or-later import android.annotation.SuppressLint @@ -28,20 +27,20 @@ val autoVersion = (((System.currentTimeMillis() / 1000) - 1451606400) / 10).toIn android { namespace = "org.citron.citron_emu" - compileSdkVersion = "android-35" - ndkVersion = "29.0.13113456 rc1" // "26.1.10909125" + compileSdkVersion = "android-34" + ndkVersion = "26.1.10909125" buildFeatures { viewBinding = true } compileOptions { - sourceCompatibility = JavaVersion.VERSION_21 - targetCompatibility = JavaVersion.VERSION_21 + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 } kotlinOptions { - jvmTarget = "21" + jvmTarget = "17" } packaging { @@ -57,8 +56,7 @@ android { // TODO If this is ever modified, change application_id in strings.xml applicationId = "org.citron.citron_emu" minSdk = 30 - //noinspection EditedTargetSdkVersion - targetSdk = 35 + targetSdk = 34 versionName = getGitVersion() versionCode = if (System.getenv("AUTO_VERSIONED") == "true") { @@ -105,14 +103,11 @@ android { signingConfigs.getByName("default") } - resValue("string", "app_name_suffixed", "Citron") - isDefault = true + resValue("string", "app_name_suffixed", "citron") isMinifyEnabled = true - isShrinkResources = true - isJniDebuggable = false isDebuggable = false proguardFiles( - getDefaultProguardFile("proguard-android-optimize.txt"), + getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro" ) } @@ -120,11 +115,13 @@ android { // builds a release build that doesn't need signing // Attaches 'debug' suffix to version and package name, allowing installation alongside the release build. register("relWithDebInfo") { - resValue("string", "app_name_suffixed", "Citron Debug Release") + isDefault = true + resValue("string", "app_name_suffixed", "citron Debug Release") signingConfig = signingConfigs.getByName("default") + isMinifyEnabled = true isDebuggable = true proguardFiles( - getDefaultProguardFile("proguard-android-optimize.txt"), + getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro" ) versionNameSuffix = "-relWithDebInfo" @@ -136,7 +133,7 @@ android { // Attaches 'debug' suffix to version and package name, allowing installation alongside the release build. debug { signingConfig = signingConfigs.getByName("default") - resValue("string", "app_name_suffixed", "Citron Debug") + resValue("string", "app_name_suffixed", "citron Debug") isDebuggable = true isJniDebuggable = true versionNameSuffix = "-debug" @@ -149,7 +146,7 @@ android { create("mainline") { isDefault = true dimension = "version" - buildConfigField("Boolean", "PREMIUM", "true") + buildConfigField("Boolean", "PREMIUM", "false") } create("ea") { @@ -161,7 +158,7 @@ android { externalNativeBuild { cmake { - version = "4.0.1" + version = "3.22.1" path = file("../../../CMakeLists.txt") } } @@ -178,12 +175,10 @@ android { "-DCITRON_USE_BUNDLED_VCPKG=ON", "-DCITRON_USE_BUNDLED_FFMPEG=ON", "-DCITRON_ENABLE_LTO=ON", - "-DCMAKE_EXPORT_COMPILE_COMMANDS=ON", - "-DANDROID_SUPPORT_FLEXIBLE_PAGE_SIZES=ON", - "-DCMAKE_POLICY_VERSION_MINIMUM=3.5" + "-DCMAKE_EXPORT_COMPILE_COMMANDS=ON" ) - abiFilters("arm64-v8a") // , "x86_64") + abiFilters("arm64-v8a", "x86_64") } } } @@ -196,7 +191,7 @@ tasks.create("ktlintReset") { val showFormatHelp = { logger.lifecycle( "If this check fails, please try running \"gradlew ktlintFormat\" for automatic " + - "codestyle fixes" + "codestyle fixes" ) } tasks.getByPath("ktlintKotlinScriptCheck").doFirst { showFormatHelp.invoke() } @@ -241,6 +236,7 @@ dependencies { implementation("io.coil-kt:coil:2.2.2") implementation("androidx.core:core-splashscreen:1.0.1") implementation("androidx.window:window:1.2.0-beta03") + implementation("androidx.constraintlayout:constraintlayout:2.1.4") implementation("androidx.swiperefreshlayout:swiperefreshlayout:1.1.0") implementation("androidx.navigation:navigation-fragment-ktx:2.7.4") implementation("androidx.navigation:navigation-ui-ktx:2.7.4") diff --git a/src/android/app/proguard-rules.pro b/src/android/app/proguard-rules.pro index 6b1a4a2e5..228daf8e5 100644 --- a/src/android/app/proguard-rules.pro +++ b/src/android/app/proguard-rules.pro @@ -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 # To get usable stack traces @@ -22,10 +22,3 @@ -dontwarn java.beans.Introspector -dontwarn java.beans.VetoableChangeListener -dontwarn java.beans.VetoableChangeSupport - -# LicenseVerifier protection --keep class org.citron.citron_emu.utils.LicenseVerifier { *; } --keepnames class org.citron.citron_emu.utils.LicenseVerifier --dontskipnonpubliclibraryclasses --dontoptimize --dontpreverify diff --git a/src/android/app/src/main/AndroidManifest.xml b/src/android/app/src/main/AndroidManifest.xml index e58b93ddd..fb9243079 100644 --- a/src/android/app/src/main/AndroidManifest.xml +++ b/src/android/app/src/main/AndroidManifest.xml @@ -1,7 +1,7 @@ @@ -14,7 +14,6 @@ SPDX-License-Identifier: GPL-3.0-or-later - { - val interfaceList = mutableListOf() - try { - NetworkInterface.getNetworkInterfaces()?.toList()?.forEach { iface -> - if (iface.isUp && !iface.isLoopback) { - iface.inetAddresses.toList() - .filterNot { it.isLoopbackAddress } - .forEach { addr -> - interfaceList.add("${iface.name};${addr.hostAddress}") - } - } - } - } catch (e: Exception) { - Log.error("[NativeLibrary] Failed to enumerate network interfaces: ${e.message}") - } - - // Always ensure we have at least a loopback interface - if (interfaceList.isEmpty()) { - Log.warning("[NativeLibrary] No interfaces found, adding loopback fallback") - interfaceList.add("lo;127.0.0.1") - } - - return interfaceList.toTypedArray() - } } diff --git a/src/android/app/src/main/java/org/citron/citron_emu/activities/EmulationActivity.kt b/src/android/app/src/main/java/org/citron/citron_emu/activities/EmulationActivity.kt index c4c2c1ed1..5dfee80c0 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/activities/EmulationActivity.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/activities/EmulationActivity.kt @@ -1,10 +1,9 @@ -// SPDX-FileCopyrightText: 2023 yuzu Emulator Project +// SPDX-FileCopyrightText: 2023 yuzu Emulator Project & 2025 citron Homebrew Project // SPDX-License-Identifier: GPL-2.0-or-later package org.citron.citron_emu.activities import android.annotation.SuppressLint -import android.app.AlertDialog import android.app.PendingIntent import android.app.PictureInPictureParams import android.app.RemoteAction @@ -40,14 +39,12 @@ import org.citron.citron_emu.NativeLibrary import org.citron.citron_emu.R import org.citron.citron_emu.CitronApplication import org.citron.citron_emu.databinding.ActivityEmulationBinding -import org.citron.citron_emu.dialogs.NetPlayDialog import org.citron.citron_emu.features.input.NativeInput import org.citron.citron_emu.features.settings.model.BooleanSetting import org.citron.citron_emu.features.settings.model.IntSetting import org.citron.citron_emu.features.settings.model.Settings import org.citron.citron_emu.model.EmulationViewModel import org.citron.citron_emu.model.Game -import org.citron.citron_emu.network.NetPlayManager import org.citron.citron_emu.utils.InputHandler import org.citron.citron_emu.utils.Log import org.citron.citron_emu.utils.MemoryUtil @@ -55,7 +52,6 @@ import org.citron.citron_emu.utils.NativeConfig import org.citron.citron_emu.utils.NfcReader import org.citron.citron_emu.utils.ParamPackage import org.citron.citron_emu.utils.ThemeHelper -import org.citron.citron_emu.utils.LicenseVerifier import java.text.NumberFormat import kotlin.math.roundToInt @@ -83,22 +79,6 @@ class EmulationActivity : AppCompatActivity(), SensorEventListener { super.onCreate(savedInstanceState) - // Check if firmware is available - if (!NativeLibrary.isFirmwareAvailable()) { - AlertDialog.Builder(this) - .setTitle(R.string.firmware_missing_title) - .setMessage(R.string.firmware_missing_message) - .setPositiveButton(R.string.ok) { _, _ -> - finish() - } - .setCancelable(false) - .show() - return - } - - // Add license verification at the start - LicenseVerifier.verifyLicense(this) - InputHandler.updateControllerData() val players = NativeConfig.getInputSettings(true) var hasConfiguredControllers = false @@ -425,16 +405,6 @@ class EmulationActivity : AppCompatActivity(), SensorEventListener { setPictureInPictureParams(pictureInPictureParamsBuilder.build()) } - fun displayMultiplayerDialog() { - val dialog = NetPlayDialog(this) - dialog.show() - } - - fun addNetPlayMessages(type: Int, msg: String) { - NetPlayManager.addNetPlayMessage(type, msg) - } - - private var pictureInPictureReceiver = object : BroadcastReceiver() { override fun onReceive(context: Context?, intent: Intent) { if (intent.action == actionPlay) { diff --git a/src/android/app/src/main/java/org/citron/citron_emu/adapters/AbstractDiffAdapter.kt b/src/android/app/src/main/java/org/citron/citron_emu/adapters/AbstractDiffAdapter.kt index 9d45971db..aa78fa3a3 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/adapters/AbstractDiffAdapter.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/adapters/AbstractDiffAdapter.kt @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2024 yuzu Emulator Project +// SPDX-FileCopyrightText: 2024 yuzu Emulator Project & 2025 citron Homebrew Project // SPDX-License-Identifier: GPL-2.0-or-later package org.citron.citron_emu.adapters diff --git a/src/android/app/src/main/java/org/citron/citron_emu/adapters/AbstractListAdapter.kt b/src/android/app/src/main/java/org/citron/citron_emu/adapters/AbstractListAdapter.kt index aed3fb569..01cd974bf 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/adapters/AbstractListAdapter.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/adapters/AbstractListAdapter.kt @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2024 yuzu Emulator Project +// SPDX-FileCopyrightText: 2024 yuzu Emulator Project & 2025 citron Homebrew Project // SPDX-License-Identifier: GPL-2.0-or-later package org.citron.citron_emu.adapters diff --git a/src/android/app/src/main/java/org/citron/citron_emu/adapters/AbstractSingleSelectionList.kt b/src/android/app/src/main/java/org/citron/citron_emu/adapters/AbstractSingleSelectionList.kt index 965b28f98..ade634177 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/adapters/AbstractSingleSelectionList.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/adapters/AbstractSingleSelectionList.kt @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2024 yuzu Emulator Project +// SPDX-FileCopyrightText: 2024 yuzu Emulator Project & 2025 citron Homebrew Project // SPDX-License-Identifier: GPL-2.0-or-later package org.citron.citron_emu.adapters diff --git a/src/android/app/src/main/java/org/citron/citron_emu/adapters/AddonAdapter.kt b/src/android/app/src/main/java/org/citron/citron_emu/adapters/AddonAdapter.kt index 29c9113f7..c0260ccea 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/adapters/AddonAdapter.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/adapters/AddonAdapter.kt @@ -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 package org.citron.citron_emu.adapters diff --git a/src/android/app/src/main/java/org/citron/citron_emu/adapters/AppletAdapter.kt b/src/android/app/src/main/java/org/citron/citron_emu/adapters/AppletAdapter.kt index 57d222713..19b6978f4 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/adapters/AppletAdapter.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/adapters/AppletAdapter.kt @@ -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 package org.citron.citron_emu.adapters diff --git a/src/android/app/src/main/java/org/citron/citron_emu/adapters/CabinetLauncherDialogAdapter.kt b/src/android/app/src/main/java/org/citron/citron_emu/adapters/CabinetLauncherDialogAdapter.kt index 16254670c..6c8b952f7 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/adapters/CabinetLauncherDialogAdapter.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/adapters/CabinetLauncherDialogAdapter.kt @@ -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 package org.citron.citron_emu.adapters diff --git a/src/android/app/src/main/java/org/citron/citron_emu/adapters/DriverAdapter.kt b/src/android/app/src/main/java/org/citron/citron_emu/adapters/DriverAdapter.kt index 2d59efefc..a5362c668 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/adapters/DriverAdapter.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/adapters/DriverAdapter.kt @@ -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 package org.citron.citron_emu.adapters diff --git a/src/android/app/src/main/java/org/citron/citron_emu/adapters/FolderAdapter.kt b/src/android/app/src/main/java/org/citron/citron_emu/adapters/FolderAdapter.kt index 450f6171f..b0af974ce 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/adapters/FolderAdapter.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/adapters/FolderAdapter.kt @@ -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 package org.citron.citron_emu.adapters diff --git a/src/android/app/src/main/java/org/citron/citron_emu/adapters/GameAdapter.kt b/src/android/app/src/main/java/org/citron/citron_emu/adapters/GameAdapter.kt index 9adf45c14..2a568b4ab 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/adapters/GameAdapter.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/adapters/GameAdapter.kt @@ -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 package org.citron.citron_emu.adapters diff --git a/src/android/app/src/main/java/org/citron/citron_emu/adapters/GamePropertiesAdapter.kt b/src/android/app/src/main/java/org/citron/citron_emu/adapters/GamePropertiesAdapter.kt index cf504dca8..3e6bae380 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/adapters/GamePropertiesAdapter.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/adapters/GamePropertiesAdapter.kt @@ -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 package org.citron.citron_emu.adapters diff --git a/src/android/app/src/main/java/org/citron/citron_emu/adapters/HomeSettingAdapter.kt b/src/android/app/src/main/java/org/citron/citron_emu/adapters/HomeSettingAdapter.kt index 0cb7944a4..89a612233 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/adapters/HomeSettingAdapter.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/adapters/HomeSettingAdapter.kt @@ -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 package org.citron.citron_emu.adapters diff --git a/src/android/app/src/main/java/org/citron/citron_emu/adapters/InstallableAdapter.kt b/src/android/app/src/main/java/org/citron/citron_emu/adapters/InstallableAdapter.kt index c136c3e92..bfa173f9c 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/adapters/InstallableAdapter.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/adapters/InstallableAdapter.kt @@ -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 package org.citron.citron_emu.adapters diff --git a/src/android/app/src/main/java/org/citron/citron_emu/adapters/LicenseAdapter.kt b/src/android/app/src/main/java/org/citron/citron_emu/adapters/LicenseAdapter.kt index 6af14c5b8..ee30b5075 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/adapters/LicenseAdapter.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/adapters/LicenseAdapter.kt @@ -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 package org.citron.citron_emu.adapters diff --git a/src/android/app/src/main/java/org/citron/citron_emu/adapters/SetupAdapter.kt b/src/android/app/src/main/java/org/citron/citron_emu/adapters/SetupAdapter.kt index 5c4f51f64..0fe2443b7 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/adapters/SetupAdapter.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/adapters/SetupAdapter.kt @@ -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 package org.citron.citron_emu.adapters @@ -31,7 +31,7 @@ class SetupAdapter(val activity: AppCompatActivity, pages: List) : override fun bind(model: SetupPage) { if (model.stepCompleted.invoke() == StepState.COMPLETE) { binding.buttonAction.setVisible(visible = false, gone = false) - binding.textConfirmation?.setVisible(true) + binding.textConfirmation.setVisible(true) } binding.icon.setImageDrawable( @@ -68,7 +68,7 @@ class SetupAdapter(val activity: AppCompatActivity, pages: List) : override fun onStepCompleted() { ViewUtils.hideView(binding.buttonAction, 200) - binding.textConfirmation?.let { ViewUtils.showView(it, 200) } + ViewUtils.showView(binding.textConfirmation, 200) ViewModelProvider(activity)[HomeViewModel::class.java].setShouldPageForward(true) } } diff --git a/src/android/app/src/main/java/org/citron/citron_emu/applets/keyboard/SoftwareKeyboard.kt b/src/android/app/src/main/java/org/citron/citron_emu/applets/keyboard/SoftwareKeyboard.kt index 517695a45..31c8e0845 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/applets/keyboard/SoftwareKeyboard.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/applets/keyboard/SoftwareKeyboard.kt @@ -1,4 +1,4 @@ -// 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 package org.citron.citron_emu.applets.keyboard diff --git a/src/android/app/src/main/java/org/citron/citron_emu/applets/keyboard/ui/KeyboardDialogFragment.kt b/src/android/app/src/main/java/org/citron/citron_emu/applets/keyboard/ui/KeyboardDialogFragment.kt index 31b61cd0b..c775a86dc 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/applets/keyboard/ui/KeyboardDialogFragment.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/applets/keyboard/ui/KeyboardDialogFragment.kt @@ -1,4 +1,4 @@ -// 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 package org.citron.citron_emu.applets.keyboard.ui diff --git a/src/android/app/src/main/java/org/citron/citron_emu/dialogs/ChatDialog.kt b/src/android/app/src/main/java/org/citron/citron_emu/dialogs/ChatDialog.kt deleted file mode 100644 index c3bce5676..000000000 --- a/src/android/app/src/main/java/org/citron/citron_emu/dialogs/ChatDialog.kt +++ /dev/null @@ -1,133 +0,0 @@ -package org.citron.citron_emu.dialogs - -import android.content.Context -import android.content.res.Configuration -import android.os.Bundle -import android.os.Handler -import android.os.Looper -import android.view.LayoutInflater -import android.view.ViewGroup -import androidx.recyclerview.widget.LinearLayoutManager -import androidx.recyclerview.widget.RecyclerView -import com.google.android.material.bottomsheet.BottomSheetBehavior -import com.google.android.material.bottomsheet.BottomSheetDialog -import org.citron.citron_emu.R -import org.citron.citron_emu.databinding.DialogChatBinding -import org.citron.citron_emu.databinding.ItemChatMessageBinding -import org.citron.citron_emu.network.NetPlayManager -import java.text.SimpleDateFormat -import java.util.* - -class ChatMessage( - val nickname: String, // This is the common name youll see on private servers - val username: String, // Username is the community/forum username - val message: String, - val timestamp: String = SimpleDateFormat("HH:mm", Locale.getDefault()).format(Date()) -) { -} - -class ChatDialog(context: Context) : BottomSheetDialog(context) { - private lateinit var binding: DialogChatBinding - private lateinit var chatAdapter: ChatAdapter - private val handler = Handler(Looper.getMainLooper()) - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - binding = DialogChatBinding.inflate(LayoutInflater.from(context)) - setContentView(binding.root) - - NetPlayManager.setChatOpen(true) - setupRecyclerView() - - behavior.state = BottomSheetBehavior.STATE_EXPANDED - behavior.state = BottomSheetBehavior.STATE_EXPANDED - behavior.skipCollapsed = context.resources.configuration.orientation == Configuration.ORIENTATION_LANDSCAPE - - - handler.post { - chatAdapter.notifyDataSetChanged() - binding.chatRecyclerView.post { - scrollToBottom() - } - } - - NetPlayManager.setOnMessageReceivedListener { type, message -> - handler.post { - chatAdapter.notifyDataSetChanged() - scrollToBottom() - } - } - - binding.sendButton.setOnClickListener { - val message = binding.chatInput.text.toString() - if (message.isNotBlank()) { - sendMessage(message) - binding.chatInput.text?.clear() - } - } - } - - override fun dismiss() { - NetPlayManager.setChatOpen(false) - super.dismiss() - } - - private fun sendMessage(message: String) { - val username = NetPlayManager.getUsername(context) - NetPlayManager.netPlaySendMessage(message) - - val chatMessage = ChatMessage( - nickname = username, - username = "", - message = message, - timestamp = SimpleDateFormat("HH:mm", Locale.getDefault()).format(Date()) - ) - - NetPlayManager.addChatMessage(chatMessage) - chatAdapter.notifyDataSetChanged() - scrollToBottom() - } - - private fun setupRecyclerView() { - chatAdapter = ChatAdapter(NetPlayManager.getChatMessages()) - binding.chatRecyclerView.layoutManager = LinearLayoutManager(context).apply { - stackFromEnd = true - } - binding.chatRecyclerView.adapter = chatAdapter - } - - private fun scrollToBottom() { - binding.chatRecyclerView.scrollToPosition(chatAdapter.itemCount - 1) - } -} - -class ChatAdapter(private val messages: List) : - RecyclerView.Adapter() { - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ChatViewHolder { - val binding = ItemChatMessageBinding.inflate( - LayoutInflater.from(parent.context), - parent, - false - ) - return ChatViewHolder(binding) - } - - override fun getItemCount(): Int = messages.size - - override fun onBindViewHolder(holder: ChatViewHolder, position: Int) { - holder.bind(messages[position]) - } - - inner class ChatViewHolder(private val binding: ItemChatMessageBinding) : - RecyclerView.ViewHolder(binding.root) { - fun bind(message: ChatMessage) { - binding.usernameText.text = message.nickname - binding.messageText.text = message.message - binding.userIcon.setImageResource(when (message.nickname) { - "System" -> R.drawable.ic_system - else -> R.drawable.ic_user - }) - } - } -} diff --git a/src/android/app/src/main/java/org/citron/citron_emu/dialogs/NetPlayDialog.kt b/src/android/app/src/main/java/org/citron/citron_emu/dialogs/NetPlayDialog.kt deleted file mode 100644 index 13ba8360a..000000000 --- a/src/android/app/src/main/java/org/citron/citron_emu/dialogs/NetPlayDialog.kt +++ /dev/null @@ -1,397 +0,0 @@ -// Copyright 2024 Mandarine Project -// Licensed under GPLv2 or any later version -// Refer to the license.txt file included. - -package org.citron.citron_emu.dialogs - -import android.content.Context -import org.citron.citron_emu.R -import android.content.res.Configuration -import android.os.Bundle -import android.os.Handler -import android.os.Looper -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import android.widget.PopupMenu -import android.widget.Toast -import androidx.recyclerview.widget.LinearLayoutManager -import androidx.recyclerview.widget.RecyclerView -import com.google.android.material.bottomsheet.BottomSheetBehavior -import com.google.android.material.bottomsheet.BottomSheetDialog -import com.google.android.material.dialog.MaterialAlertDialogBuilder -import org.citron.citron_emu.CitronApplication -import org.citron.citron_emu.databinding.DialogMultiplayerConnectBinding -import org.citron.citron_emu.databinding.DialogMultiplayerLobbyBinding -import org.citron.citron_emu.databinding.DialogMultiplayerRoomBinding -import org.citron.citron_emu.databinding.ItemBanListBinding -import org.citron.citron_emu.databinding.ItemButtonNetplayBinding -import org.citron.citron_emu.databinding.ItemTextNetplayBinding -import org.citron.citron_emu.utils.CompatUtils -import org.citron.citron_emu.network.NetPlayManager - -class NetPlayDialog(context: Context) : BottomSheetDialog(context) { - private lateinit var adapter: NetPlayAdapter - - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - - behavior.state = BottomSheetBehavior.STATE_EXPANDED - behavior.state = BottomSheetBehavior.STATE_EXPANDED - behavior.skipCollapsed = context.resources.configuration.orientation == Configuration.ORIENTATION_LANDSCAPE - - when { - NetPlayManager.netPlayIsJoined() -> DialogMultiplayerLobbyBinding.inflate(layoutInflater) - .apply { - setContentView(root) - adapter = NetPlayAdapter() - listMultiplayer.layoutManager = LinearLayoutManager(context) - listMultiplayer.adapter = adapter - adapter.loadMultiplayerMenu() - btnLeave.setOnClickListener { - NetPlayManager.netPlayLeaveRoom() - dismiss() - } - btnChat.setOnClickListener { - ChatDialog(context).show() - } - - refreshAdapterItems() - - btnModeration.visibility = if (NetPlayManager.netPlayIsModerator()) View.VISIBLE else View.GONE - btnModeration.setOnClickListener { - showModerationDialog() - } - - } - else -> { - DialogMultiplayerConnectBinding.inflate(layoutInflater).apply { - setContentView(root) - btnCreate.setOnClickListener { - showNetPlayInputDialog(true) - dismiss() - } - btnJoin.setOnClickListener { - showNetPlayInputDialog(false) - dismiss() - } - } - } - } - } - - data class NetPlayItems( - val option: Int, - val name: String, - val type: Int, - val id: Int = 0 - ) { - companion object { - const val MULTIPLAYER_ROOM_TEXT = 1 - const val MULTIPLAYER_ROOM_MEMBER = 2 - const val MULTIPLAYER_SEPARATOR = 3 - const val MULTIPLAYER_ROOM_COUNT = 4 - const val TYPE_BUTTON = 0 - const val TYPE_TEXT = 1 - const val TYPE_SEPARATOR = 2 - } - } - - inner class NetPlayAdapter : RecyclerView.Adapter() { - val netPlayItems = mutableListOf() - - abstract inner class NetPlayViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView), View.OnClickListener { - init { - itemView.setOnClickListener(this) - } - abstract fun bind(item: NetPlayItems) - } - - inner class TextViewHolder(private val binding: ItemTextNetplayBinding) : NetPlayViewHolder(binding.root) { - private lateinit var netPlayItem: NetPlayItems - - override fun onClick(clicked: View) {} - - override fun bind(item: NetPlayItems) { - netPlayItem = item - binding.itemTextNetplayName.text = item.name - binding.itemIcon.apply { - val iconRes = when (item.option) { - NetPlayItems.MULTIPLAYER_ROOM_TEXT -> R.drawable.ic_system - NetPlayItems.MULTIPLAYER_ROOM_COUNT -> R.drawable.ic_joined - else -> 0 - } - visibility = if (iconRes != 0) { - setImageResource(iconRes) - View.VISIBLE - } else View.GONE - } - } - } - - inner class ButtonViewHolder(private val binding: ItemButtonNetplayBinding) : NetPlayViewHolder(binding.root) { - private lateinit var netPlayItems: NetPlayItems - private val isModerator = NetPlayManager.netPlayIsModerator() - - init { - binding.itemButtonMore.apply { - visibility = View.VISIBLE - setOnClickListener { showPopupMenu(it) } - } - } - - override fun onClick(clicked: View) {} - - - private fun showPopupMenu(view: View) { - PopupMenu(view.context, view).apply { - menuInflater.inflate(R.menu.menu_netplay_member, menu) - menu.findItem(R.id.action_kick).isEnabled = isModerator && - netPlayItems.name != NetPlayManager.getUsername(context) - menu.findItem(R.id.action_ban).isEnabled = isModerator && - netPlayItems.name != NetPlayManager.getUsername(context) - setOnMenuItemClickListener { item -> - if (item.itemId == R.id.action_kick) { - NetPlayManager.netPlayKickUser(netPlayItems.name) - true - } else if (item.itemId == R.id.action_ban) { - NetPlayManager.netPlayBanUser(netPlayItems.name) - true - } else false - } - show() - } - } - - override fun bind(item: NetPlayItems) { - netPlayItems = item - binding.itemButtonNetplayName.text = netPlayItems.name - } - } - - fun loadMultiplayerMenu() { - val infos = NetPlayManager.netPlayRoomInfo() - if (infos.isNotEmpty()) { - val roomInfo = infos[0].split("|") - netPlayItems.add(NetPlayItems(NetPlayItems.MULTIPLAYER_ROOM_TEXT, roomInfo[0], NetPlayItems.TYPE_TEXT)) - netPlayItems.add(NetPlayItems(NetPlayItems.MULTIPLAYER_ROOM_COUNT, "${infos.size - 1}/${roomInfo[1]}", NetPlayItems.TYPE_TEXT)) - netPlayItems.add(NetPlayItems(NetPlayItems.MULTIPLAYER_SEPARATOR, "", NetPlayItems.TYPE_SEPARATOR)) - for (i in 1 until infos.size) { - netPlayItems.add(NetPlayItems(NetPlayItems.MULTIPLAYER_ROOM_MEMBER, infos[i], NetPlayItems.TYPE_BUTTON)) - } - } - } - - override fun getItemViewType(position: Int) = netPlayItems[position].type - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): NetPlayViewHolder { - val inflater = LayoutInflater.from(parent.context) - return when (viewType) { - NetPlayItems.TYPE_TEXT -> TextViewHolder(ItemTextNetplayBinding.inflate(inflater, parent, false)) - NetPlayItems.TYPE_BUTTON -> ButtonViewHolder(ItemButtonNetplayBinding.inflate(inflater, parent, false)) - NetPlayItems.TYPE_SEPARATOR -> object : NetPlayViewHolder(inflater.inflate(R.layout.item_separator_netplay, parent, false)) { - override fun bind(item: NetPlayItems) {} - override fun onClick(clicked: View) {} - } - else -> throw IllegalStateException("Unsupported view type") - } - } - - override fun onBindViewHolder(holder: NetPlayViewHolder, position: Int) { - holder.bind(netPlayItems[position]) - } - - override fun getItemCount() = netPlayItems.size - } - - fun refreshAdapterItems() { - val handler = Handler(Looper.getMainLooper()) - - NetPlayManager.setOnAdapterRefreshListener() { type, msg -> - handler.post { - adapter.netPlayItems.clear() - adapter.loadMultiplayerMenu() - adapter.notifyDataSetChanged() - } - } - } - - private fun showNetPlayInputDialog(isCreateRoom: Boolean) { - val activity = CompatUtils.findActivity(context) - val dialog = BottomSheetDialog(activity) - - dialog.behavior.state = BottomSheetBehavior.STATE_EXPANDED - dialog.behavior.state = BottomSheetBehavior.STATE_EXPANDED - dialog.behavior.skipCollapsed = context.resources.configuration.orientation == Configuration.ORIENTATION_LANDSCAPE - - - val binding = DialogMultiplayerRoomBinding.inflate(LayoutInflater.from(activity)) - dialog.setContentView(binding.root) - - binding.textTitle.text = activity.getString( - if (isCreateRoom) R.string.multiplayer_create_room - else R.string.multiplayer_join_room - ) - - binding.ipAddress.setText( - if (isCreateRoom) NetPlayManager.getIpAddressByWifi(activity) - else NetPlayManager.getRoomAddress(activity) - ) - binding.ipPort.setText(NetPlayManager.getRoomPort(activity)) - binding.username.setText(NetPlayManager.getUsername(activity)) - - binding.roomName.visibility = if (isCreateRoom) View.VISIBLE else View.GONE - binding.maxPlayersContainer.visibility = if (isCreateRoom) View.VISIBLE else View.GONE - binding.maxPlayersLabel.text = context.getString(R.string.multiplayer_max_players_value, binding.maxPlayers.value.toInt()) - - binding.maxPlayers.addOnChangeListener { _, value, _ -> - binding.maxPlayersLabel.text = context.getString(R.string.multiplayer_max_players_value, value.toInt()) - } - - binding.btnConfirm.setOnClickListener { - binding.btnConfirm.isEnabled = false - binding.btnConfirm.text = activity.getString(R.string.disabled_button_text) - - val ipAddress = binding.ipAddress.text.toString() - val username = binding.username.text.toString() - val portStr = binding.ipPort.text.toString() - val password = binding.password.text.toString() - val port = portStr.toIntOrNull() ?: run { - Toast.makeText(activity, R.string.multiplayer_port_invalid, Toast.LENGTH_LONG).show() - binding.btnConfirm.isEnabled = true - binding.btnConfirm.text = activity.getString(R.string.original_button_text) - return@setOnClickListener - } - val roomName = binding.roomName.text.toString() - val maxPlayers = binding.maxPlayers.value.toInt() - - if (isCreateRoom && (roomName.length !in 3..20)) { - Toast.makeText(activity, R.string.multiplayer_room_name_invalid, Toast.LENGTH_LONG).show() - binding.btnConfirm.isEnabled = true - binding.btnConfirm.text = activity.getString(R.string.original_button_text) - return@setOnClickListener - } - - if (ipAddress.length < 7 || username.length < 5) { - Toast.makeText(activity, R.string.multiplayer_input_invalid, Toast.LENGTH_LONG).show() - binding.btnConfirm.isEnabled = true - binding.btnConfirm.text = activity.getString(R.string.original_button_text) - } else { - Handler(Looper.getMainLooper()).post { - val result = if (isCreateRoom) { - NetPlayManager.netPlayCreateRoom(ipAddress, port, username, password, roomName, maxPlayers) - } else { - NetPlayManager.netPlayJoinRoom(ipAddress, port, username, password) - } - - if (result == 0) { - NetPlayManager.setUsername(activity, username) - NetPlayManager.setRoomPort(activity, portStr) - if (!isCreateRoom) NetPlayManager.setRoomAddress(activity, ipAddress) - Toast.makeText( - CitronApplication.appContext, - if (isCreateRoom) R.string.multiplayer_create_room_success - else R.string.multiplayer_join_room_success, - Toast.LENGTH_LONG - ).show() - dialog.dismiss() - } else { - Toast.makeText(activity, R.string.multiplayer_could_not_connect, Toast.LENGTH_LONG).show() - binding.btnConfirm.isEnabled = true - binding.btnConfirm.text = activity.getString(R.string.original_button_text) - } - } - } - } - - dialog.show() - } - - private fun showModerationDialog() { - val activity = CompatUtils.findActivity(context) - val dialog = MaterialAlertDialogBuilder(activity) - dialog.setTitle(R.string.multiplayer_moderation_title) - - val banList = NetPlayManager.getBanList() - if (banList.isEmpty()) { - dialog.setMessage(R.string.multiplayer_no_bans) - dialog.setPositiveButton(R.string.ok, null) - dialog.show() - return - } - - val view = LayoutInflater.from(context).inflate(R.layout.dialog_ban_list, null) - val recyclerView = view.findViewById(R.id.ban_list_recycler) - recyclerView.layoutManager = LinearLayoutManager(context) - - lateinit var adapter: BanListAdapter - - val onUnban: (String) -> Unit = { bannedItem -> - MaterialAlertDialogBuilder(activity) - .setTitle(R.string.multiplayer_unban_title) - .setMessage(activity.getString(R.string.multiplayer_unban_message, bannedItem)) - .setPositiveButton(R.string.multiplayer_unban) { _, _ -> - NetPlayManager.netPlayUnbanUser(bannedItem) - adapter.removeBan(bannedItem) - } - .setNegativeButton(R.string.cancel, null) - .show() - } - - adapter = BanListAdapter(banList, onUnban) - recyclerView.adapter = adapter - - dialog.setView(view) - dialog.setPositiveButton(R.string.ok, null) - dialog.show() - } - - private class BanListAdapter( - banList: List, - private val onUnban: (String) -> Unit - ) : RecyclerView.Adapter() { - - private val usernameBans = banList.filter { !it.contains(".") }.toMutableList() - private val ipBans = banList.filter { it.contains(".") }.toMutableList() - - class ViewHolder(val binding: ItemBanListBinding) : RecyclerView.ViewHolder(binding.root) - - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { - val binding = ItemBanListBinding.inflate( - LayoutInflater.from(parent.context), parent, false) - return ViewHolder(binding) - } - - override fun onBindViewHolder(holder: ViewHolder, position: Int) { - val isUsername = position < usernameBans.size - val item = if (isUsername) usernameBans[position] else ipBans[position - usernameBans.size] - - holder.binding.apply { - banText.text = item - icon.setImageResource(if (isUsername) R.drawable.ic_user else R.drawable.ic_ip) - btnUnban.setOnClickListener { onUnban(item) } - } - } - - override fun getItemCount() = usernameBans.size + ipBans.size - - fun removeBan(bannedItem: String) { - val position = if (bannedItem.contains(".")) { - ipBans.indexOf(bannedItem).let { if (it >= 0) it + usernameBans.size else it } - } else { - usernameBans.indexOf(bannedItem) - } - - if (position >= 0) { - if (bannedItem.contains(".")) { - ipBans.remove(bannedItem) - } else { - usernameBans.remove(bannedItem) - } - notifyItemRemoved(position) - } - } - - } -} \ No newline at end of file diff --git a/src/android/app/src/main/java/org/citron/citron_emu/disk_shader_cache/DiskShaderCacheProgress.kt b/src/android/app/src/main/java/org/citron/citron_emu/disk_shader_cache/DiskShaderCacheProgress.kt index 0ce5a1841..68fa86530 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/disk_shader_cache/DiskShaderCacheProgress.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/disk_shader_cache/DiskShaderCacheProgress.kt @@ -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 package org.citron.citron_emu.disk_shader_cache diff --git a/src/android/app/src/main/java/org/citron/citron_emu/features/DocumentProvider.kt b/src/android/app/src/main/java/org/citron/citron_emu/features/DocumentProvider.kt index 980fe1975..b42169654 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/features/DocumentProvider.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/features/DocumentProvider.kt @@ -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: MPL-2.0 diff --git a/src/android/app/src/main/java/org/citron/citron_emu/features/input/CitronInputDevice.kt b/src/android/app/src/main/java/org/citron/citron_emu/features/input/CitronInputDevice.kt index 14ff2dcc3..b164503e3 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/features/input/CitronInputDevice.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/features/input/CitronInputDevice.kt @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2024 yuzu Emulator Project +// SPDX-FileCopyrightText: 2024 yuzu Emulator Project & 2025 citron Homebrew Project // SPDX-License-Identifier: GPL-2.0-or-later package org.citron.citron_emu.features.input diff --git a/src/android/app/src/main/java/org/citron/citron_emu/features/input/CitronVibrator.kt b/src/android/app/src/main/java/org/citron/citron_emu/features/input/CitronVibrator.kt index c4f86595b..c746260de 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/features/input/CitronVibrator.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/features/input/CitronVibrator.kt @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2024 yuzu Emulator Project +// SPDX-FileCopyrightText: 2024 yuzu Emulator Project & 2025 citron Homebrew Project // SPDX-License-Identifier: GPL-2.0-or-later package org.citron.citron_emu.features.input diff --git a/src/android/app/src/main/java/org/citron/citron_emu/features/input/NativeInput.kt b/src/android/app/src/main/java/org/citron/citron_emu/features/input/NativeInput.kt index a64590484..d847bdc47 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/features/input/NativeInput.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/features/input/NativeInput.kt @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2024 yuzu Emulator Project +// SPDX-FileCopyrightText: 2024 yuzu Emulator Project & 2025 citron Homebrew Project // SPDX-License-Identifier: GPL-2.0-or-later package org.citron.citron_emu.features.input diff --git a/src/android/app/src/main/java/org/citron/citron_emu/features/input/model/AnalogDirection.kt b/src/android/app/src/main/java/org/citron/citron_emu/features/input/model/AnalogDirection.kt index 97b834ad3..8728ed470 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/features/input/model/AnalogDirection.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/features/input/model/AnalogDirection.kt @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2024 yuzu Emulator Project +// SPDX-FileCopyrightText: 2024 yuzu Emulator Project & 2025 citron Homebrew Project // SPDX-License-Identifier: GPL-2.0-or-later package org.citron.citron_emu.features.input.model diff --git a/src/android/app/src/main/java/org/citron/citron_emu/features/input/model/ButtonName.kt b/src/android/app/src/main/java/org/citron/citron_emu/features/input/model/ButtonName.kt index a91c11869..fbaeb05b3 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/features/input/model/ButtonName.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/features/input/model/ButtonName.kt @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2024 yuzu Emulator Project +// SPDX-FileCopyrightText: 2024 yuzu Emulator Project & 2025 citron Homebrew Project // SPDX-License-Identifier: GPL-2.0-or-later package org.citron.citron_emu.features.input.model diff --git a/src/android/app/src/main/java/org/citron/citron_emu/features/input/model/InputType.kt b/src/android/app/src/main/java/org/citron/citron_emu/features/input/model/InputType.kt index 7d97d1a51..d073cfe54 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/features/input/model/InputType.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/features/input/model/InputType.kt @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2024 yuzu Emulator Project +// SPDX-FileCopyrightText: 2024 yuzu Emulator Project & 2025 citron Homebrew Project // SPDX-License-Identifier: GPL-2.0-or-later package org.citron.citron_emu.features.input.model diff --git a/src/android/app/src/main/java/org/citron/citron_emu/features/input/model/NativeAnalog.kt b/src/android/app/src/main/java/org/citron/citron_emu/features/input/model/NativeAnalog.kt index daafb0291..dda57408f 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/features/input/model/NativeAnalog.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/features/input/model/NativeAnalog.kt @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2024 yuzu Emulator Project +// SPDX-FileCopyrightText: 2024 yuzu Emulator Project & 2025 citron Homebrew Project // SPDX-License-Identifier: GPL-2.0-or-later package org.citron.citron_emu.features.input.model diff --git a/src/android/app/src/main/java/org/citron/citron_emu/features/input/model/NativeButton.kt b/src/android/app/src/main/java/org/citron/citron_emu/features/input/model/NativeButton.kt index 2ab3cf30b..380c30faf 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/features/input/model/NativeButton.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/features/input/model/NativeButton.kt @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2024 yuzu Emulator Project +// SPDX-FileCopyrightText: 2024 yuzu Emulator Project & 2025 citron Homebrew Project // SPDX-License-Identifier: GPL-2.0-or-later package org.citron.citron_emu.features.input.model diff --git a/src/android/app/src/main/java/org/citron/citron_emu/features/input/model/NativeTrigger.kt b/src/android/app/src/main/java/org/citron/citron_emu/features/input/model/NativeTrigger.kt index 9b3392b26..fd53ecf82 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/features/input/model/NativeTrigger.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/features/input/model/NativeTrigger.kt @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2024 yuzu Emulator Project +// SPDX-FileCopyrightText: 2024 yuzu Emulator Project & 2025 citron Homebrew Project // SPDX-License-Identifier: GPL-2.0-or-later package org.citron.citron_emu.features.input.model diff --git a/src/android/app/src/main/java/org/citron/citron_emu/features/input/model/NpadStyleIndex.kt b/src/android/app/src/main/java/org/citron/citron_emu/features/input/model/NpadStyleIndex.kt index 16127d79a..c518a9e29 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/features/input/model/NpadStyleIndex.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/features/input/model/NpadStyleIndex.kt @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2024 yuzu Emulator Project +// SPDX-FileCopyrightText: 2024 yuzu Emulator Project & 2025 citron Homebrew Project // SPDX-License-Identifier: GPL-2.0-or-later package org.citron.citron_emu.features.input.model diff --git a/src/android/app/src/main/java/org/citron/citron_emu/features/input/model/PlayerInput.kt b/src/android/app/src/main/java/org/citron/citron_emu/features/input/model/PlayerInput.kt index 26b0e382d..2c905c9b7 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/features/input/model/PlayerInput.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/features/input/model/PlayerInput.kt @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2024 yuzu Emulator Project +// SPDX-FileCopyrightText: 2024 yuzu Emulator Project & 2025 citron Homebrew Project // SPDX-License-Identifier: GPL-2.0-or-later package org.citron.citron_emu.features.input.model diff --git a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/AbstractBooleanSetting.kt b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/AbstractBooleanSetting.kt index df03f5fe7..a2f98f88e 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/AbstractBooleanSetting.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/AbstractBooleanSetting.kt @@ -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 package org.citron.citron_emu.features.settings.model diff --git a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/AbstractByteSetting.kt b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/AbstractByteSetting.kt index 63c5dcc5e..1d2997bdb 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/AbstractByteSetting.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/AbstractByteSetting.kt @@ -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 package org.citron.citron_emu.features.settings.model diff --git a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/AbstractFloatSetting.kt b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/AbstractFloatSetting.kt index 376405419..62d54bab8 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/AbstractFloatSetting.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/AbstractFloatSetting.kt @@ -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 package org.citron.citron_emu.features.settings.model diff --git a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/AbstractIntSetting.kt b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/AbstractIntSetting.kt index ee112d570..a95a64ebc 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/AbstractIntSetting.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/AbstractIntSetting.kt @@ -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 package org.citron.citron_emu.features.settings.model diff --git a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/AbstractLongSetting.kt b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/AbstractLongSetting.kt index 9e10dd016..7cbab013e 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/AbstractLongSetting.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/AbstractLongSetting.kt @@ -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 package org.citron.citron_emu.features.settings.model diff --git a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/AbstractSetting.kt b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/AbstractSetting.kt index dfbac1dfd..664ac4af6 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/AbstractSetting.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/AbstractSetting.kt @@ -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 package org.citron.citron_emu.features.settings.model diff --git a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/AbstractShortSetting.kt b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/AbstractShortSetting.kt index 219b6ebba..fb428f2a2 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/AbstractShortSetting.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/AbstractShortSetting.kt @@ -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 package org.citron.citron_emu.features.settings.model diff --git a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/AbstractStringSetting.kt b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/AbstractStringSetting.kt index 32fbc3737..5c3d5155d 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/AbstractStringSetting.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/AbstractStringSetting.kt @@ -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 package org.citron.citron_emu.features.settings.model diff --git a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/BooleanSetting.kt b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/BooleanSetting.kt index 1297b6852..776d08101 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/BooleanSetting.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/BooleanSetting.kt @@ -1,5 +1,4 @@ -// SPDX-FileCopyrightText: 2023 yuzu Emulator Project -// SPDX-FileCopyrightText: 2025 Citron Emulator Project +// SPDX-FileCopyrightText: 2023 yuzu Emulator Project & 2025 citron Homebrew Project // SPDX-License-Identifier: GPL-2.0-or-later package org.citron.citron_emu.features.settings.model @@ -18,7 +17,6 @@ enum class BooleanSetting(override val key: String) : AbstractBooleanSetting { RENDERER_ASYNCHRONOUS_SHADERS("use_asynchronous_shaders"), RENDERER_REACTIVE_FLUSHING("use_reactive_flushing"), RENDERER_DEBUG("debug"), - RENDERER_ENHANCED_SHADER_BUILDING("use_enhanced_shader_building"), PICTURE_IN_PICTURE("picture_in_picture"), USE_CUSTOM_RTC("custom_rtc_enabled"), BLACK_BACKGROUNDS("black_backgrounds"), @@ -28,9 +26,7 @@ enum class BooleanSetting(override val key: String) : AbstractBooleanSetting { SHOW_PERFORMANCE_OVERLAY("show_performance_overlay"), SHOW_INPUT_OVERLAY("show_input_overlay"), TOUCHSCREEN("touchscreen"), - SHOW_THERMAL_OVERLAY("show_thermal_overlay"), - SHOW_RAM_OVERLAY("show_ram_overlay"), - USE_AUTO_STUB("use_auto_stub"); + SHOW_THERMAL_OVERLAY("show_thermal_overlay"); override fun getBoolean(needsGlobal: Boolean): Boolean = NativeConfig.getBoolean(key, needsGlobal) diff --git a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/ByteSetting.kt b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/ByteSetting.kt index 984eb5cd4..3f31bd606 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/ByteSetting.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/ByteSetting.kt @@ -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 package org.citron.citron_emu.features.settings.model diff --git a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/FloatSetting.kt b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/FloatSetting.kt index b2d7d8b2b..343fc2782 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/FloatSetting.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/FloatSetting.kt @@ -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 package org.citron.citron_emu.features.settings.model diff --git a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/IntSetting.kt b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/IntSetting.kt index f1cf5df75..7d059bc35 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/IntSetting.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/IntSetting.kt @@ -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 package org.citron.citron_emu.features.settings.model diff --git a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/LongSetting.kt b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/LongSetting.kt index 994decb60..65e8dca72 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/LongSetting.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/LongSetting.kt @@ -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 package org.citron.citron_emu.features.settings.model diff --git a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/Settings.kt b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/Settings.kt index 7ae4a7c00..8a4e66dca 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/Settings.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/Settings.kt @@ -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 package org.citron.citron_emu.features.settings.model diff --git a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/ShortSetting.kt b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/ShortSetting.kt index 721f8cb76..c12456e8f 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/ShortSetting.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/ShortSetting.kt @@ -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 package org.citron.citron_emu.features.settings.model diff --git a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/StringSetting.kt b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/StringSetting.kt index 34379e445..0a879f5f9 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/StringSetting.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/StringSetting.kt @@ -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 package org.citron.citron_emu.features.settings.model diff --git a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/view/AnalogInputSetting.kt b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/view/AnalogInputSetting.kt index 0e8fce32f..626744b26 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/view/AnalogInputSetting.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/view/AnalogInputSetting.kt @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2024 yuzu Emulator Project +// SPDX-FileCopyrightText: 2024 yuzu Emulator Project & 2025 citron Homebrew Project // SPDX-License-Identifier: GPL-2.0-or-later package org.citron.citron_emu.features.settings.model.view diff --git a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/view/ButtonInputSetting.kt b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/view/ButtonInputSetting.kt index 4d3cec898..ee9cce937 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/view/ButtonInputSetting.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/view/ButtonInputSetting.kt @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2024 yuzu Emulator Project +// SPDX-FileCopyrightText: 2024 yuzu Emulator Project & 2025 citron Homebrew Project // SPDX-License-Identifier: GPL-2.0-or-later package org.citron.citron_emu.features.settings.model.view diff --git a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/view/DateTimeSetting.kt b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/view/DateTimeSetting.kt index 89779e566..de41abbdb 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/view/DateTimeSetting.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/view/DateTimeSetting.kt @@ -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 package org.citron.citron_emu.features.settings.model.view diff --git a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/view/HeaderSetting.kt b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/view/HeaderSetting.kt index cff7d0128..e91a3b05b 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/view/HeaderSetting.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/view/HeaderSetting.kt @@ -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 package org.citron.citron_emu.features.settings.model.view diff --git a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/view/InputProfileSetting.kt b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/view/InputProfileSetting.kt index cc78ad399..3fb9ed7bf 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/view/InputProfileSetting.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/view/InputProfileSetting.kt @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2024 yuzu Emulator Project +// SPDX-FileCopyrightText: 2024 yuzu Emulator Project & 2025 citron Homebrew Project // SPDX-License-Identifier: GPL-2.0-or-later package org.citron.citron_emu.features.settings.model.view diff --git a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/view/InputSetting.kt b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/view/InputSetting.kt index 0210e4b11..6c6dc0e7c 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/view/InputSetting.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/view/InputSetting.kt @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2024 yuzu Emulator Project +// SPDX-FileCopyrightText: 2024 yuzu Emulator Project & 2025 citron Homebrew Project // SPDX-License-Identifier: GPL-2.0-or-later package org.citron.citron_emu.features.settings.model.view diff --git a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/view/IntSingleChoiceSetting.kt b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/view/IntSingleChoiceSetting.kt index 1dcaab7b2..d23925870 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/view/IntSingleChoiceSetting.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/view/IntSingleChoiceSetting.kt @@ -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 package org.citron.citron_emu.features.settings.model.view diff --git a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/view/ModifierInputSetting.kt b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/view/ModifierInputSetting.kt index 856e1ccf4..a768df7b8 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/view/ModifierInputSetting.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/view/ModifierInputSetting.kt @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2024 yuzu Emulator Project +// SPDX-FileCopyrightText: 2024 yuzu Emulator Project & 2025 citron Homebrew Project // SPDX-License-Identifier: GPL-2.0-or-later package org.citron.citron_emu.features.settings.model.view diff --git a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/view/RunnableSetting.kt b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/view/RunnableSetting.kt index dee8e7bc4..2b90378ea 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/view/RunnableSetting.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/view/RunnableSetting.kt @@ -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 package org.citron.citron_emu.features.settings.model.view diff --git a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/view/SettingsItem.kt b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/view/SettingsItem.kt index 8a0b12f14..fea45965a 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/view/SettingsItem.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/view/SettingsItem.kt @@ -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 package org.citron.citron_emu.features.settings.model.view @@ -386,14 +386,6 @@ abstract class SettingsItem( override fun reset() = setBoolean(defaultValue) } put(SwitchSetting(fastmem, R.string.fastmem)) - - put( - SwitchSetting( - BooleanSetting.USE_AUTO_STUB, - titleId = R.string.use_auto_stub, - descriptionId = R.string.use_auto_stub_description - ) - ) } } } diff --git a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/view/SingleChoiceSetting.kt b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/view/SingleChoiceSetting.kt index 2a01aa52d..468d85b34 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/view/SingleChoiceSetting.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/view/SingleChoiceSetting.kt @@ -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 package org.citron.citron_emu.features.settings.model.view diff --git a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/view/SliderSetting.kt b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/view/SliderSetting.kt index 6d7f079da..2916ba1e7 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/view/SliderSetting.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/view/SliderSetting.kt @@ -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 package org.citron.citron_emu.features.settings.model.view diff --git a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/view/StringInputSetting.kt b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/view/StringInputSetting.kt index c22a22f9e..645b958c4 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/view/StringInputSetting.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/view/StringInputSetting.kt @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2024 yuzu Emulator Project +// SPDX-FileCopyrightText: 2024 yuzu Emulator Project & 2025 citron Homebrew Project // SPDX-License-Identifier: GPL-2.0-or-later package org.citron.citron_emu.features.settings.model.view diff --git a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/view/StringSingleChoiceSetting.kt b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/view/StringSingleChoiceSetting.kt index 91744a558..c12aae307 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/view/StringSingleChoiceSetting.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/view/StringSingleChoiceSetting.kt @@ -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 package org.citron.citron_emu.features.settings.model.view diff --git a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/view/SubmenuSetting.kt b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/view/SubmenuSetting.kt index c19140c30..9d03914b0 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/view/SubmenuSetting.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/view/SubmenuSetting.kt @@ -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 package org.citron.citron_emu.features.settings.model.view diff --git a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/view/SwitchSetting.kt b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/view/SwitchSetting.kt index dd6947c6b..5a18f9aac 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/view/SwitchSetting.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/model/view/SwitchSetting.kt @@ -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 package org.citron.citron_emu.features.settings.model.view diff --git a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/InputDialogFragment.kt b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/InputDialogFragment.kt index 584d71174..18652ff75 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/InputDialogFragment.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/InputDialogFragment.kt @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2024 yuzu Emulator Project +// SPDX-FileCopyrightText: 2024 yuzu Emulator Project & 2025 citron Homebrew Project // SPDX-License-Identifier: GPL-2.0-or-later package org.citron.citron_emu.features.settings.ui diff --git a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/InputProfileAdapter.kt b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/InputProfileAdapter.kt index b911c6632..dda8a8a90 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/InputProfileAdapter.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/InputProfileAdapter.kt @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2024 yuzu Emulator Project +// SPDX-FileCopyrightText: 2024 yuzu Emulator Project & 2025 citron Homebrew Project // SPDX-License-Identifier: GPL-2.0-or-later package org.citron.citron_emu.features.settings.ui diff --git a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/InputProfileDialogFragment.kt b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/InputProfileDialogFragment.kt index 2f68c2430..236f6b77b 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/InputProfileDialogFragment.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/InputProfileDialogFragment.kt @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2024 yuzu Emulator Project +// SPDX-FileCopyrightText: 2024 yuzu Emulator Project & 2025 citron Homebrew Project // SPDX-License-Identifier: GPL-2.0-or-later package org.citron.citron_emu.features.settings.ui diff --git a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/NewInputProfileDialogFragment.kt b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/NewInputProfileDialogFragment.kt index 45dafc3b1..11e020e02 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/NewInputProfileDialogFragment.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/NewInputProfileDialogFragment.kt @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2024 yuzu Emulator Project +// SPDX-FileCopyrightText: 2024 yuzu Emulator Project & 2025 citron Homebrew Project // SPDX-License-Identifier: GPL-2.0-or-later package org.citron.citron_emu.features.settings.ui diff --git a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/SettingsActivity.kt b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/SettingsActivity.kt index cece76e69..0c6eaf9c6 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/SettingsActivity.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/SettingsActivity.kt @@ -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 package org.citron.citron_emu.features.settings.ui diff --git a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/SettingsAdapter.kt b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/SettingsAdapter.kt index 0f060c478..e4066897a 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/SettingsAdapter.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/SettingsAdapter.kt @@ -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 package org.citron.citron_emu.features.settings.ui diff --git a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/SettingsDialogFragment.kt b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/SettingsDialogFragment.kt index d10856e30..4e8fd7b57 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/SettingsDialogFragment.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/SettingsDialogFragment.kt @@ -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 package org.citron.citron_emu.features.settings.ui diff --git a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/SettingsFragment.kt b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/SettingsFragment.kt index 7323f114b..9105c645b 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/SettingsFragment.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/SettingsFragment.kt @@ -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 package org.citron.citron_emu.features.settings.ui diff --git a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/SettingsFragmentPresenter.kt b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/SettingsFragmentPresenter.kt index 763bf8c35..d4ef0486d 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/SettingsFragmentPresenter.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/SettingsFragmentPresenter.kt @@ -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 package org.citron.citron_emu.features.settings.ui @@ -158,7 +158,6 @@ class SettingsFragmentPresenter( add(BooleanSetting.RENDERER_USE_SPEED_LIMIT.key) add(ShortSetting.RENDERER_SPEED_LIMIT.key) add(BooleanSetting.USE_DOCKED_MODE.key) - add(BooleanSetting.USE_AUTO_STUB.key) add(IntSetting.REGION_INDEX.key) add(IntSetting.LANGUAGE_INDEX.key) add(BooleanSetting.USE_CUSTOM_RTC.key) diff --git a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/SettingsSearchFragment.kt b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/SettingsSearchFragment.kt index 2f28ca765..9f89e707a 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/SettingsSearchFragment.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/SettingsSearchFragment.kt @@ -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 package org.citron.citron_emu.features.settings.ui diff --git a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/SettingsViewModel.kt b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/SettingsViewModel.kt index d6256512d..e3bc9b6f0 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/SettingsViewModel.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/SettingsViewModel.kt @@ -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 package org.citron.citron_emu.features.settings.ui diff --git a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/viewholder/DateTimeViewHolder.kt b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/viewholder/DateTimeViewHolder.kt index af2a5233a..03352f90c 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/viewholder/DateTimeViewHolder.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/viewholder/DateTimeViewHolder.kt @@ -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 package org.citron.citron_emu.features.settings.ui.viewholder diff --git a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/viewholder/HeaderViewHolder.kt b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/viewholder/HeaderViewHolder.kt index c4bbac824..dfb04089f 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/viewholder/HeaderViewHolder.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/viewholder/HeaderViewHolder.kt @@ -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 package org.citron.citron_emu.features.settings.ui.viewholder diff --git a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/viewholder/InputProfileViewHolder.kt b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/viewholder/InputProfileViewHolder.kt index 88d53cac3..f8ddf93b1 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/viewholder/InputProfileViewHolder.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/viewholder/InputProfileViewHolder.kt @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2024 yuzu Emulator Project +// SPDX-FileCopyrightText: 2024 yuzu Emulator Project & 2025 citron Homebrew Project // SPDX-License-Identifier: GPL-2.0-or-later package org.citron.citron_emu.features.settings.ui.viewholder diff --git a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/viewholder/InputViewHolder.kt b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/viewholder/InputViewHolder.kt index 5704bccae..beff9441b 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/viewholder/InputViewHolder.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/viewholder/InputViewHolder.kt @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2024 yuzu Emulator Project +// SPDX-FileCopyrightText: 2024 yuzu Emulator Project & 2025 citron Homebrew Project // SPDX-License-Identifier: GPL-2.0-or-later package org.citron.citron_emu.features.settings.ui.viewholder diff --git a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/viewholder/RunnableViewHolder.kt b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/viewholder/RunnableViewHolder.kt index cf82be211..b6ac6cdf5 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/viewholder/RunnableViewHolder.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/viewholder/RunnableViewHolder.kt @@ -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 package org.citron.citron_emu.features.settings.ui.viewholder diff --git a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/viewholder/SettingViewHolder.kt b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/viewholder/SettingViewHolder.kt index dcf077ac8..a481c06af 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/viewholder/SettingViewHolder.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/viewholder/SettingViewHolder.kt @@ -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 package org.citron.citron_emu.features.settings.ui.viewholder diff --git a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/viewholder/SingleChoiceViewHolder.kt b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/viewholder/SingleChoiceViewHolder.kt index 8a59b4d29..a8b457978 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/viewholder/SingleChoiceViewHolder.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/viewholder/SingleChoiceViewHolder.kt @@ -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 package org.citron.citron_emu.features.settings.ui.viewholder diff --git a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/viewholder/SliderViewHolder.kt b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/viewholder/SliderViewHolder.kt index ed7a9ac7f..5400ea0b3 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/viewholder/SliderViewHolder.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/viewholder/SliderViewHolder.kt @@ -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 package org.citron.citron_emu.features.settings.ui.viewholder diff --git a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/viewholder/StringInputViewHolder.kt b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/viewholder/StringInputViewHolder.kt index e4dbf85d5..c286e92db 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/viewholder/StringInputViewHolder.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/viewholder/StringInputViewHolder.kt @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2024 yuzu Emulator Project +// SPDX-FileCopyrightText: 2024 yuzu Emulator Project & 2025 citron Homebrew Project // SPDX-License-Identifier: GPL-2.0-or-later package org.citron.citron_emu.features.settings.ui.viewholder diff --git a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/viewholder/SubmenuViewHolder.kt b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/viewholder/SubmenuViewHolder.kt index 90f25b8ab..961726586 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/viewholder/SubmenuViewHolder.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/viewholder/SubmenuViewHolder.kt @@ -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 package org.citron.citron_emu.features.settings.ui.viewholder diff --git a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/viewholder/SwitchSettingViewHolder.kt b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/viewholder/SwitchSettingViewHolder.kt index 1879b6208..4077fe2b0 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/viewholder/SwitchSettingViewHolder.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/ui/viewholder/SwitchSettingViewHolder.kt @@ -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 package org.citron.citron_emu.features.settings.ui.viewholder diff --git a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/utils/SettingsFile.kt b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/utils/SettingsFile.kt index 6d8a83dd8..76851f23c 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/features/settings/utils/SettingsFile.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/features/settings/utils/SettingsFile.kt @@ -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 package org.citron.citron_emu.features.settings.utils diff --git a/src/android/app/src/main/java/org/citron/citron_emu/fragments/AboutFragment.kt b/src/android/app/src/main/java/org/citron/citron_emu/fragments/AboutFragment.kt index 1bb7c8583..80e916c4b 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/fragments/AboutFragment.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/fragments/AboutFragment.kt @@ -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 package org.citron.citron_emu.fragments diff --git a/src/android/app/src/main/java/org/citron/citron_emu/fragments/AddGameFolderDialogFragment.kt b/src/android/app/src/main/java/org/citron/citron_emu/fragments/AddGameFolderDialogFragment.kt index fbeb2177b..774038023 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/fragments/AddGameFolderDialogFragment.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/fragments/AddGameFolderDialogFragment.kt @@ -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 package org.citron.citron_emu.fragments diff --git a/src/android/app/src/main/java/org/citron/citron_emu/fragments/AddonsFragment.kt b/src/android/app/src/main/java/org/citron/citron_emu/fragments/AddonsFragment.kt index 22a66892b..59416f203 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/fragments/AddonsFragment.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/fragments/AddonsFragment.kt @@ -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 package org.citron.citron_emu.fragments diff --git a/src/android/app/src/main/java/org/citron/citron_emu/fragments/AppletLauncherFragment.kt b/src/android/app/src/main/java/org/citron/citron_emu/fragments/AppletLauncherFragment.kt index c53395b57..dcde69f14 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/fragments/AppletLauncherFragment.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/fragments/AppletLauncherFragment.kt @@ -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 package org.citron.citron_emu.fragments diff --git a/src/android/app/src/main/java/org/citron/citron_emu/fragments/CabinetLauncherDialogFragment.kt b/src/android/app/src/main/java/org/citron/citron_emu/fragments/CabinetLauncherDialogFragment.kt index ce4f3f6be..28b79cdd5 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/fragments/CabinetLauncherDialogFragment.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/fragments/CabinetLauncherDialogFragment.kt @@ -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 package org.citron.citron_emu.fragments diff --git a/src/android/app/src/main/java/org/citron/citron_emu/fragments/ContentTypeSelectionDialogFragment.kt b/src/android/app/src/main/java/org/citron/citron_emu/fragments/ContentTypeSelectionDialogFragment.kt index 4ca7c05bb..7c6fead5a 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/fragments/ContentTypeSelectionDialogFragment.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/fragments/ContentTypeSelectionDialogFragment.kt @@ -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 package org.citron.citron_emu.fragments diff --git a/src/android/app/src/main/java/org/citron/citron_emu/fragments/CoreErrorDialogFragment.kt b/src/android/app/src/main/java/org/citron/citron_emu/fragments/CoreErrorDialogFragment.kt index 1b1de4994..4c48a2316 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/fragments/CoreErrorDialogFragment.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/fragments/CoreErrorDialogFragment.kt @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2024 yuzu Emulator Project +// SPDX-FileCopyrightText: 2024 yuzu Emulator Project & 2025 citron Homebrew Project // SPDX-License-Identifier: GPL-2.0-or-later package org.citron.citron_emu.fragments diff --git a/src/android/app/src/main/java/org/citron/citron_emu/fragments/DriverManagerFragment.kt b/src/android/app/src/main/java/org/citron/citron_emu/fragments/DriverManagerFragment.kt index 78b50ccab..ea7167800 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/fragments/DriverManagerFragment.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/fragments/DriverManagerFragment.kt @@ -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 package org.citron.citron_emu.fragments diff --git a/src/android/app/src/main/java/org/citron/citron_emu/fragments/DriversLoadingDialogFragment.kt b/src/android/app/src/main/java/org/citron/citron_emu/fragments/DriversLoadingDialogFragment.kt index dae4ee968..e7893c45f 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/fragments/DriversLoadingDialogFragment.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/fragments/DriversLoadingDialogFragment.kt @@ -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 package org.citron.citron_emu.fragments diff --git a/src/android/app/src/main/java/org/citron/citron_emu/fragments/EarlyAccessFragment.kt b/src/android/app/src/main/java/org/citron/citron_emu/fragments/EarlyAccessFragment.kt index 8351b84ea..32a472851 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/fragments/EarlyAccessFragment.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/fragments/EarlyAccessFragment.kt @@ -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 package org.citron.citron_emu.fragments diff --git a/src/android/app/src/main/java/org/citron/citron_emu/fragments/EmulationFragment.kt b/src/android/app/src/main/java/org/citron/citron_emu/fragments/EmulationFragment.kt index 68b4166ee..aa255a942 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/fragments/EmulationFragment.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/fragments/EmulationFragment.kt @@ -1,5 +1,4 @@ -// SPDX-FileCopyrightText: 2023 yuzu Emulator Project -// SPDX-FileCopyrightText: 2025 Citron Emulator Project +// SPDX-FileCopyrightText: 2023 yuzu Emulator Project & 2025 citron Homebrew Project // SPDX-License-Identifier: GPL-2.0-or-later package org.citron.citron_emu.fragments @@ -8,15 +7,10 @@ import android.annotation.SuppressLint import android.app.AlertDialog import android.content.Context import android.content.DialogInterface -import android.content.Intent -import android.content.IntentFilter import android.content.pm.ActivityInfo import android.content.res.Configuration -import android.graphics.Color import android.net.Uri -import android.os.BatteryManager import android.os.Bundle -import android.os.Debug import android.os.Handler import android.os.Looper import android.os.PowerManager @@ -71,7 +65,6 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { private var emulationActivity: EmulationActivity? = null private var perfStatsUpdater: (() -> Unit)? = null private var thermalStatsUpdater: (() -> Unit)? = null - private var ramStatsUpdater: (() -> Unit)? = null private var _binding: FragmentEmulationBinding? = null private val binding get() = _binding!! @@ -87,8 +80,6 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { private lateinit var powerManager: PowerManager - private val ramStatsUpdateHandler = Handler(Looper.myLooper()!!) - override fun onAttach(context: Context) { super.onAttach(context) if (context is EmulationActivity) { @@ -271,13 +262,6 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { true } - - R.id.menu_multiplayer -> { - emulationActivity?.displayMultiplayerDialog() - true - } - - R.id.menu_controls -> { val action = HomeNavigationDirections.actionGlobalSettingsActivity( null, @@ -389,7 +373,6 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { // Setup overlays updateShowFpsOverlay() updateThermalOverlay() - updateRamOverlay() } } emulationViewModel.isEmulationStopping.collect(viewLifecycleOwner) { @@ -484,9 +467,6 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { override fun onDestroyView() { super.onDestroyView() - if (ramStatsUpdater != null) { - ramStatsUpdateHandler.removeCallbacks(ramStatsUpdater!!) - } _binding = null } @@ -519,20 +499,10 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { val cpuBackend = NativeLibrary.getCpuBackend() val gpuDriver = NativeLibrary.getGpuDriver() if (_binding != null) { - // Calculate color based on FPS (red at 0, green at 60) - val fps = perfStats[FPS].toFloat() - val normalizedFps = (fps / 60f).coerceIn(0f, 1f) - - // Interpolate between red (0xFFFF0000) and green (0xFF00FF00) - val red = ((1f - normalizedFps) * 255).toInt() - val green = (normalizedFps * 255).toInt() - val color = android.graphics.Color.rgb(red, green, 0) - - binding.showFpsText.setTextColor(color) binding.showFpsText.text = - String.format("FPS: %.1f\n%s/%s", fps, cpuBackend, gpuDriver) + String.format("FPS: %.1f\n%s/%s", perfStats[FPS], cpuBackend, gpuDriver) } - perfStatsUpdateHandler.postDelayed(perfStatsUpdater!!, 1000) + perfStatsUpdateHandler.postDelayed(perfStatsUpdater!!, 800) } } perfStatsUpdateHandler.post(perfStatsUpdater!!) @@ -551,8 +521,19 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { if (emulationViewModel.emulationStarted.value && !emulationViewModel.isEmulationStopping.value ) { - val temperature = getBatteryTemperature(requireContext()) - updateThermalOverlay(temperature) + val thermalStatus = when (powerManager.currentThermalStatus) { + PowerManager.THERMAL_STATUS_LIGHT -> "😥" + PowerManager.THERMAL_STATUS_MODERATE -> "🥵" + PowerManager.THERMAL_STATUS_SEVERE -> "🔥" + PowerManager.THERMAL_STATUS_CRITICAL, + PowerManager.THERMAL_STATUS_EMERGENCY, + PowerManager.THERMAL_STATUS_SHUTDOWN -> "☢️" + + else -> "🙂" + } + if (_binding != null) { + binding.showThermalsText.text = thermalStatus + } thermalStatsUpdateHandler.postDelayed(thermalStatsUpdater!!, 1000) } } @@ -564,77 +545,6 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { } } - private fun updateThermalOverlay(temperature: Float) { - if (BooleanSetting.SHOW_THERMAL_OVERLAY.getBoolean() && - emulationViewModel.emulationStarted.value && - !emulationViewModel.isEmulationStopping.value - ) { - // Get thermal status for color - val thermalStatus = when (powerManager.currentThermalStatus) { - PowerManager.THERMAL_STATUS_NONE -> 0f - PowerManager.THERMAL_STATUS_LIGHT -> 0.25f - PowerManager.THERMAL_STATUS_MODERATE -> 0.5f - PowerManager.THERMAL_STATUS_SEVERE -> 0.75f - PowerManager.THERMAL_STATUS_CRITICAL, - PowerManager.THERMAL_STATUS_EMERGENCY, - PowerManager.THERMAL_STATUS_SHUTDOWN -> 1.0f - else -> 0f - } - - // Convert to Fahrenheit - val fahrenheit = (temperature * 9f / 5f) + 32f - - // Color based on thermal status (green to red) - val red = (thermalStatus * 255).toInt() - val green = ((1f - thermalStatus) * 255).toInt() - val color = android.graphics.Color.rgb(red, green, 0) - - binding.showThermalsText.setTextColor(color) - binding.showThermalsText.text = String.format("%.1f°C • %.1f°F", temperature, fahrenheit) - } - } - - private fun updateRamOverlay() { - val showOverlay = BooleanSetting.SHOW_RAM_OVERLAY.getBoolean() - binding.showRamText.setVisible(showOverlay) - if (showOverlay) { - ramStatsUpdater = { - if (emulationViewModel.emulationStarted.value && - !emulationViewModel.isEmulationStopping.value - ) { - val runtime = Runtime.getRuntime() - val nativeHeapSize = Debug.getNativeHeapSize() - val nativeHeapFreeSize = Debug.getNativeHeapFreeSize() - val nativeHeapUsed = nativeHeapSize - nativeHeapFreeSize - - val usedMemInMB = nativeHeapUsed / 1048576L - val maxMemInMB = nativeHeapSize / 1048576L - val percentUsed = (nativeHeapUsed.toFloat() / nativeHeapSize.toFloat() * 100f) - - // Color interpolation from green to red based on usage percentage - val normalizedUsage = (percentUsed / 100f).coerceIn(0f, 1f) - val red = (normalizedUsage * 255).toInt() - val green = ((1f - normalizedUsage) * 255).toInt() - val color = Color.rgb(red, green, 0) - - binding.showRamText.setTextColor(color) - binding.showRamText.text = String.format( - "\nRAM: %d/%d MB (%.1f%%)", - usedMemInMB, - maxMemInMB, - percentUsed - ) - ramStatsUpdateHandler.postDelayed(ramStatsUpdater!!, 1000) - } - } - ramStatsUpdateHandler.post(ramStatsUpdater!!) - } else { - if (ramStatsUpdater != null) { - ramStatsUpdateHandler.removeCallbacks(ramStatsUpdater!!) - } - } - } - @SuppressLint("SourceLockedOrientationActivity") private fun updateOrientation() { emulationActivity?.let { @@ -764,10 +674,6 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { BooleanSetting.SHOW_PERFORMANCE_OVERLAY.getBoolean() findItem(R.id.thermal_indicator).isChecked = BooleanSetting.SHOW_THERMAL_OVERLAY.getBoolean() - findItem(R.id.ram_meter).apply { - isChecked = BooleanSetting.SHOW_RAM_OVERLAY.getBoolean() - isEnabled = false // This grays out the option - } findItem(R.id.menu_rel_stick_center).isChecked = BooleanSetting.JOYSTICK_REL_CENTER.getBoolean() findItem(R.id.menu_dpad_slide).isChecked = BooleanSetting.DPAD_SLIDE.getBoolean() @@ -794,11 +700,6 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { true } - R.id.ram_meter -> { - // Do nothing since it's disabled - true - } - R.id.menu_edit_overlay -> { binding.drawerLayout.close() binding.surfaceInputOverlay.requestFocus() @@ -1144,17 +1045,4 @@ class EmulationFragment : Fragment(), SurfaceHolder.Callback { private val perfStatsUpdateHandler = Handler(Looper.myLooper()!!) private val thermalStatsUpdateHandler = Handler(Looper.myLooper()!!) } - - private fun getBatteryTemperature(context: Context): Float { - try { - val batteryIntent = context.registerReceiver(null, IntentFilter(Intent.ACTION_BATTERY_CHANGED)) - // Temperature in tenths of a degree Celsius - val temperature = batteryIntent?.getIntExtra(BatteryManager.EXTRA_TEMPERATURE, 0) ?: 0 - // Convert to degrees Celsius - return temperature / 10.0f - } catch (e: Exception) { - Log.error("[EmulationFragment] Failed to get battery temperature: ${e.message}") - return 0.0f - } - } } diff --git a/src/android/app/src/main/java/org/citron/citron_emu/fragments/GameFolderPropertiesDialogFragment.kt b/src/android/app/src/main/java/org/citron/citron_emu/fragments/GameFolderPropertiesDialogFragment.kt index 220e33fd9..7d73d4a72 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/fragments/GameFolderPropertiesDialogFragment.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/fragments/GameFolderPropertiesDialogFragment.kt @@ -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 package org.citron.citron_emu.fragments diff --git a/src/android/app/src/main/java/org/citron/citron_emu/fragments/GameFoldersFragment.kt b/src/android/app/src/main/java/org/citron/citron_emu/fragments/GameFoldersFragment.kt index 771ae292b..1081ffb65 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/fragments/GameFoldersFragment.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/fragments/GameFoldersFragment.kt @@ -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 package org.citron.citron_emu.fragments diff --git a/src/android/app/src/main/java/org/citron/citron_emu/fragments/GameInfoFragment.kt b/src/android/app/src/main/java/org/citron/citron_emu/fragments/GameInfoFragment.kt index 221175855..193e332b3 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/fragments/GameInfoFragment.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/fragments/GameInfoFragment.kt @@ -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 package org.citron.citron_emu.fragments diff --git a/src/android/app/src/main/java/org/citron/citron_emu/fragments/GamePropertiesFragment.kt b/src/android/app/src/main/java/org/citron/citron_emu/fragments/GamePropertiesFragment.kt index 203cbd70a..7a9def5b8 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/fragments/GamePropertiesFragment.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/fragments/GamePropertiesFragment.kt @@ -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 package org.citron.citron_emu.fragments diff --git a/src/android/app/src/main/java/org/citron/citron_emu/fragments/HomeSettingsFragment.kt b/src/android/app/src/main/java/org/citron/citron_emu/fragments/HomeSettingsFragment.kt index b92fc5afd..2c159f259 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/fragments/HomeSettingsFragment.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/fragments/HomeSettingsFragment.kt @@ -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 package org.citron.citron_emu.fragments @@ -119,16 +119,6 @@ class HomeSettingsFragment : Fragment() { driverViewModel.selectedDriverTitle ) ) - add( - HomeSetting( - R.string.multiplayer, - R.string.multiplayer_description, - R.drawable.ic_multiplayer, - { - val action = mainActivity.displayMultiplayerDialog() - }, - ) - ) add( HomeSetting( R.string.applets, diff --git a/src/android/app/src/main/java/org/citron/citron_emu/fragments/InstallableFragment.kt b/src/android/app/src/main/java/org/citron/citron_emu/fragments/InstallableFragment.kt index 90f15f8ed..47980cd9a 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/fragments/InstallableFragment.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/fragments/InstallableFragment.kt @@ -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 package org.citron.citron_emu.fragments diff --git a/src/android/app/src/main/java/org/citron/citron_emu/fragments/LaunchGameDialogFragment.kt b/src/android/app/src/main/java/org/citron/citron_emu/fragments/LaunchGameDialogFragment.kt index da6a5dd4a..37dffc928 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/fragments/LaunchGameDialogFragment.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/fragments/LaunchGameDialogFragment.kt @@ -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 package org.citron.citron_emu.fragments diff --git a/src/android/app/src/main/java/org/citron/citron_emu/fragments/LicenseBottomSheetDialogFragment.kt b/src/android/app/src/main/java/org/citron/citron_emu/fragments/LicenseBottomSheetDialogFragment.kt index af6eebb21..a032d0256 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/fragments/LicenseBottomSheetDialogFragment.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/fragments/LicenseBottomSheetDialogFragment.kt @@ -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 package org.citron.citron_emu.fragments diff --git a/src/android/app/src/main/java/org/citron/citron_emu/fragments/LicensesFragment.kt b/src/android/app/src/main/java/org/citron/citron_emu/fragments/LicensesFragment.kt index 48b76c6bb..9b9c46ed9 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/fragments/LicensesFragment.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/fragments/LicensesFragment.kt @@ -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 package org.citron.citron_emu.fragments diff --git a/src/android/app/src/main/java/org/citron/citron_emu/fragments/MessageDialogFragment.kt b/src/android/app/src/main/java/org/citron/citron_emu/fragments/MessageDialogFragment.kt index 4b27adffb..fb3049a3a 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/fragments/MessageDialogFragment.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/fragments/MessageDialogFragment.kt @@ -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 package org.citron.citron_emu.fragments diff --git a/src/android/app/src/main/java/org/citron/citron_emu/fragments/PermissionDeniedDialogFragment.kt b/src/android/app/src/main/java/org/citron/citron_emu/fragments/PermissionDeniedDialogFragment.kt index fdf8f253a..c1dd710c1 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/fragments/PermissionDeniedDialogFragment.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/fragments/PermissionDeniedDialogFragment.kt @@ -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 package org.citron.citron_emu.fragments diff --git a/src/android/app/src/main/java/org/citron/citron_emu/fragments/ProgressDialogFragment.kt b/src/android/app/src/main/java/org/citron/citron_emu/fragments/ProgressDialogFragment.kt index 84ee7aabb..a64b0716f 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/fragments/ProgressDialogFragment.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/fragments/ProgressDialogFragment.kt @@ -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 package org.citron.citron_emu.fragments diff --git a/src/android/app/src/main/java/org/citron/citron_emu/fragments/ResetSettingsDialogFragment.kt b/src/android/app/src/main/java/org/citron/citron_emu/fragments/ResetSettingsDialogFragment.kt index d1b761884..152c1c6fe 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/fragments/ResetSettingsDialogFragment.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/fragments/ResetSettingsDialogFragment.kt @@ -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 package org.citron.citron_emu.fragments diff --git a/src/android/app/src/main/java/org/citron/citron_emu/fragments/SearchFragment.kt b/src/android/app/src/main/java/org/citron/citron_emu/fragments/SearchFragment.kt index 657025ea4..c8308d427 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/fragments/SearchFragment.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/fragments/SearchFragment.kt @@ -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 package org.citron.citron_emu.fragments diff --git a/src/android/app/src/main/java/org/citron/citron_emu/fragments/SetupFragment.kt b/src/android/app/src/main/java/org/citron/citron_emu/fragments/SetupFragment.kt index 962fa709a..817210d48 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/fragments/SetupFragment.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/fragments/SetupFragment.kt @@ -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 package org.citron.citron_emu.fragments @@ -98,19 +98,6 @@ class SetupFragment : Fragment() { val pages = mutableListOf() pages.apply { - add( - SetupPage( - R.drawable.ic_check, - R.string.disclaimer_title, - R.string.disclaimer_description, - 0, - true, - R.string.accept_and_continue, - { pageForward() }, - false - ) - ) - add( SetupPage( R.drawable.ic_citron_title, @@ -180,62 +167,6 @@ class SetupFragment : Fragment() { } ) ) - - // Add title.keys installation page - add( - SetupPage( - R.drawable.ic_key, - R.string.install_title_keys, - R.string.install_title_keys_description, - R.drawable.ic_add, - true, - R.string.select_keys, - { - titleKeyCallback = it - getTitleKey.launch(arrayOf("*/*")) - }, - true, - R.string.install_title_keys_warning, - R.string.install_title_keys_warning_description, - R.string.install_title_keys_warning_help, - { - val file = File(DirectoryInitialization.userDirectory + "/keys/title.keys") - if (file.exists()) { - StepState.COMPLETE - } else { - StepState.INCOMPLETE - } - } - ) - ) - - // Add firmware installation page (mandatory) - add( - SetupPage( - R.drawable.ic_key, - R.string.install_firmware, - R.string.install_firmware_description, - R.drawable.ic_add, - true, - R.string.select_firmware, - { - firmwareCallback = it - getFirmware.launch(arrayOf("application/zip")) - }, - true, - R.string.install_firmware_warning, - R.string.install_firmware_warning_description, - R.string.install_firmware_warning_help, - { - if (NativeLibrary.isFirmwareAvailable()) { - StepState.COMPLETE - } else { - StepState.INCOMPLETE - } - } - ) - ) - add( SetupPage( R.drawable.ic_controller, @@ -324,18 +255,6 @@ class SetupFragment : Fragment() { return@setOnClickListener } - // Special handling for firmware page - don't allow skipping - if (currentPage.titleId == R.string.install_firmware && !NativeLibrary.isFirmwareAvailable()) { - SetupWarningDialogFragment.newInstance( - currentPage.warningTitleId, - currentPage.warningDescriptionId, - currentPage.warningHelpLinkId, - index, - allowSkip = false - ).show(childFragmentManager, SetupWarningDialogFragment.TAG) - return@setOnClickListener - } - if (!hasBeenWarned[index]) { SetupWarningDialogFragment.newInstance( currentPage.warningTitleId, @@ -414,30 +333,6 @@ class SetupFragment : Fragment() { } } - private lateinit var titleKeyCallback: SetupCallback - - val getTitleKey = - registerForActivityResult(ActivityResultContracts.OpenDocument()) { result -> - if (result != null) { - mainActivity.processTitleKey(result) - titleKeyCallback.onStepCompleted() - } - } - - private lateinit var firmwareCallback: SetupCallback - - val getFirmware = - registerForActivityResult(ActivityResultContracts.OpenDocument()) { result -> - if (result != null) { - mainActivity.getFirmware.launch(arrayOf("application/zip")) - binding.root.postDelayed({ - if (NativeLibrary.isFirmwareAvailable()) { - firmwareCallback.onStepCompleted() - } - }, 1000) - } - } - private lateinit var gamesDirCallback: SetupCallback val getGamesDirectory = diff --git a/src/android/app/src/main/java/org/citron/citron_emu/fragments/SetupWarningDialogFragment.kt b/src/android/app/src/main/java/org/citron/citron_emu/fragments/SetupWarningDialogFragment.kt index 7104917c6..583cd8854 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/fragments/SetupWarningDialogFragment.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/fragments/SetupWarningDialogFragment.kt @@ -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 package org.citron.citron_emu.fragments @@ -17,7 +17,6 @@ class SetupWarningDialogFragment : DialogFragment() { private var descriptionId: Int = 0 private var helpLinkId: Int = 0 private var page: Int = 0 - private var allowSkip: Boolean = true private lateinit var setupFragment: SetupFragment @@ -27,24 +26,17 @@ class SetupWarningDialogFragment : DialogFragment() { descriptionId = requireArguments().getInt(DESCRIPTION) helpLinkId = requireArguments().getInt(HELP_LINK) page = requireArguments().getInt(PAGE) - allowSkip = requireArguments().getBoolean(ALLOW_SKIP, true) setupFragment = requireParentFragment() as SetupFragment } override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { val builder = MaterialAlertDialogBuilder(requireContext()) - - if (allowSkip) { - builder.setPositiveButton(R.string.warning_skip) { _: DialogInterface?, _: Int -> + .setPositiveButton(R.string.warning_skip) { _: DialogInterface?, _: Int -> setupFragment.pageForward() setupFragment.setPageWarned(page) } - builder.setNegativeButton(R.string.warning_cancel, null) - } else { - // For mandatory steps, only show an OK button that dismisses the dialog - builder.setPositiveButton(R.string.ok, null) - } + .setNegativeButton(R.string.warning_cancel, null) if (titleId != 0) { builder.setTitle(titleId) @@ -56,7 +48,7 @@ class SetupWarningDialogFragment : DialogFragment() { } if (helpLinkId != 0) { builder.setNeutralButton(R.string.warning_help) { _: DialogInterface?, _: Int -> - val helpLink = resources.getString(helpLinkId) + val helpLink = resources.getString(R.string.install_prod_keys_warning_help) val intent = Intent(Intent.ACTION_VIEW, Uri.parse(helpLink)) startActivity(intent) } @@ -72,14 +64,12 @@ class SetupWarningDialogFragment : DialogFragment() { private const val DESCRIPTION = "Description" private const val HELP_LINK = "HelpLink" private const val PAGE = "Page" - private const val ALLOW_SKIP = "AllowSkip" fun newInstance( titleId: Int, descriptionId: Int, helpLinkId: Int, - page: Int, - allowSkip: Boolean = true + page: Int ): SetupWarningDialogFragment { val dialog = SetupWarningDialogFragment() val bundle = Bundle() @@ -88,7 +78,6 @@ class SetupWarningDialogFragment : DialogFragment() { putInt(DESCRIPTION, descriptionId) putInt(HELP_LINK, helpLinkId) putInt(PAGE, page) - putBoolean(ALLOW_SKIP, allowSkip) } dialog.arguments = bundle return dialog diff --git a/src/android/app/src/main/java/org/citron/citron_emu/layout/AutofitGridLayoutManager.kt b/src/android/app/src/main/java/org/citron/citron_emu/layout/AutofitGridLayoutManager.kt index 9b62459a0..97360b098 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/layout/AutofitGridLayoutManager.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/layout/AutofitGridLayoutManager.kt @@ -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 package org.citron.citron_emu.layout diff --git a/src/android/app/src/main/java/org/citron/citron_emu/model/AddonViewModel.kt b/src/android/app/src/main/java/org/citron/citron_emu/model/AddonViewModel.kt index 3ce91169b..03f42afdd 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/model/AddonViewModel.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/model/AddonViewModel.kt @@ -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 package org.citron.citron_emu.model diff --git a/src/android/app/src/main/java/org/citron/citron_emu/model/Applet.kt b/src/android/app/src/main/java/org/citron/citron_emu/model/Applet.kt index eefcdc7ad..a0d51531f 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/model/Applet.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/model/Applet.kt @@ -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 package org.citron.citron_emu.model diff --git a/src/android/app/src/main/java/org/citron/citron_emu/model/Driver.kt b/src/android/app/src/main/java/org/citron/citron_emu/model/Driver.kt index 33935f752..7d8773751 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/model/Driver.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/model/Driver.kt @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2024 yuzu Emulator Project +// SPDX-FileCopyrightText: 2024 yuzu Emulator Project & 2025 citron Homebrew Project // SPDX-License-Identifier: GPL-2.0-or-later package org.citron.citron_emu.model diff --git a/src/android/app/src/main/java/org/citron/citron_emu/model/DriverViewModel.kt b/src/android/app/src/main/java/org/citron/citron_emu/model/DriverViewModel.kt index 8a7820a86..1745360d4 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/model/DriverViewModel.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/model/DriverViewModel.kt @@ -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 package org.citron.citron_emu.model diff --git a/src/android/app/src/main/java/org/citron/citron_emu/model/EmulationViewModel.kt b/src/android/app/src/main/java/org/citron/citron_emu/model/EmulationViewModel.kt index 218437545..303a1823b 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/model/EmulationViewModel.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/model/EmulationViewModel.kt @@ -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 package org.citron.citron_emu.model diff --git a/src/android/app/src/main/java/org/citron/citron_emu/model/Game.kt b/src/android/app/src/main/java/org/citron/citron_emu/model/Game.kt index dced02d5c..5f3ad32cf 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/model/Game.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/model/Game.kt @@ -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 package org.citron.citron_emu.model diff --git a/src/android/app/src/main/java/org/citron/citron_emu/model/GameDir.kt b/src/android/app/src/main/java/org/citron/citron_emu/model/GameDir.kt index f17fa54e4..3eb925e12 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/model/GameDir.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/model/GameDir.kt @@ -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 package org.citron.citron_emu.model diff --git a/src/android/app/src/main/java/org/citron/citron_emu/model/GameProperties.kt b/src/android/app/src/main/java/org/citron/citron_emu/model/GameProperties.kt index ea02789d0..b7d858e82 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/model/GameProperties.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/model/GameProperties.kt @@ -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 package org.citron.citron_emu.model diff --git a/src/android/app/src/main/java/org/citron/citron_emu/model/GameVerificationResult.kt b/src/android/app/src/main/java/org/citron/citron_emu/model/GameVerificationResult.kt index 646263278..f17c52419 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/model/GameVerificationResult.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/model/GameVerificationResult.kt @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2024 yuzu Emulator Project +// SPDX-FileCopyrightText: 2024 yuzu Emulator Project & 2025 citron Homebrew Project // SPDX-License-Identifier: GPL-2.0-or-later package org.citron.citron_emu.model diff --git a/src/android/app/src/main/java/org/citron/citron_emu/model/GamesViewModel.kt b/src/android/app/src/main/java/org/citron/citron_emu/model/GamesViewModel.kt index 14118e4e6..c1dbab0c2 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/model/GamesViewModel.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/model/GamesViewModel.kt @@ -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 package org.citron.citron_emu.model diff --git a/src/android/app/src/main/java/org/citron/citron_emu/model/HomeSetting.kt b/src/android/app/src/main/java/org/citron/citron_emu/model/HomeSetting.kt index fb615b9d7..f2628e3ed 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/model/HomeSetting.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/model/HomeSetting.kt @@ -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 package org.citron.citron_emu.model diff --git a/src/android/app/src/main/java/org/citron/citron_emu/model/HomeViewModel.kt b/src/android/app/src/main/java/org/citron/citron_emu/model/HomeViewModel.kt index 616af3394..e8df48f18 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/model/HomeViewModel.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/model/HomeViewModel.kt @@ -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 package org.citron.citron_emu.model diff --git a/src/android/app/src/main/java/org/citron/citron_emu/model/InstallResult.kt b/src/android/app/src/main/java/org/citron/citron_emu/model/InstallResult.kt index 92b18bbdf..5921bcecf 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/model/InstallResult.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/model/InstallResult.kt @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2024 yuzu Emulator Project +// SPDX-FileCopyrightText: 2024 yuzu Emulator Project & 2025 citron Homebrew Project // SPDX-License-Identifier: GPL-2.0-or-later package org.citron.citron_emu.model diff --git a/src/android/app/src/main/java/org/citron/citron_emu/model/Installable.kt b/src/android/app/src/main/java/org/citron/citron_emu/model/Installable.kt index 10c544ac7..28d0fbe7f 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/model/Installable.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/model/Installable.kt @@ -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 package org.citron.citron_emu.model diff --git a/src/android/app/src/main/java/org/citron/citron_emu/model/License.kt b/src/android/app/src/main/java/org/citron/citron_emu/model/License.kt index 5b6071372..c61ae7c0d 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/model/License.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/model/License.kt @@ -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 package org.citron.citron_emu.model diff --git a/src/android/app/src/main/java/org/citron/citron_emu/model/MessageDialogViewModel.kt b/src/android/app/src/main/java/org/citron/citron_emu/model/MessageDialogViewModel.kt index 75c5759ff..bace57591 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/model/MessageDialogViewModel.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/model/MessageDialogViewModel.kt @@ -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 package org.citron.citron_emu.model diff --git a/src/android/app/src/main/java/org/citron/citron_emu/model/MinimalDocumentFile.kt b/src/android/app/src/main/java/org/citron/citron_emu/model/MinimalDocumentFile.kt index de5430b3e..e5bc08c7b 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/model/MinimalDocumentFile.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/model/MinimalDocumentFile.kt @@ -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 package org.citron.citron_emu.model diff --git a/src/android/app/src/main/java/org/citron/citron_emu/model/Patch.kt b/src/android/app/src/main/java/org/citron/citron_emu/model/Patch.kt index da2468687..678d086c4 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/model/Patch.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/model/Patch.kt @@ -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 package org.citron.citron_emu.model diff --git a/src/android/app/src/main/java/org/citron/citron_emu/model/PatchType.kt b/src/android/app/src/main/java/org/citron/citron_emu/model/PatchType.kt index 391ce6da2..62dd5e6b7 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/model/PatchType.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/model/PatchType.kt @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2024 yuzu Emulator Project +// SPDX-FileCopyrightText: 2024 yuzu Emulator Project & 2025 citron Homebrew Project // SPDX-License-Identifier: GPL-2.0-or-later package org.citron.citron_emu.model diff --git a/src/android/app/src/main/java/org/citron/citron_emu/model/SelectableItem.kt b/src/android/app/src/main/java/org/citron/citron_emu/model/SelectableItem.kt index 11493c1de..3080b35e0 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/model/SelectableItem.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/model/SelectableItem.kt @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2024 yuzu Emulator Project +// SPDX-FileCopyrightText: 2024 yuzu Emulator Project & 2025 citron Homebrew Project // SPDX-License-Identifier: GPL-2.0-or-later package org.citron.citron_emu.model diff --git a/src/android/app/src/main/java/org/citron/citron_emu/model/SetupPage.kt b/src/android/app/src/main/java/org/citron/citron_emu/model/SetupPage.kt index 01a390d5e..9063e638e 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/model/SetupPage.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/model/SetupPage.kt @@ -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 package org.citron.citron_emu.model diff --git a/src/android/app/src/main/java/org/citron/citron_emu/model/TaskViewModel.kt b/src/android/app/src/main/java/org/citron/citron_emu/model/TaskViewModel.kt index 9a18086bd..581d148bc 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/model/TaskViewModel.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/model/TaskViewModel.kt @@ -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 package org.citron.citron_emu.model diff --git a/src/android/app/src/main/java/org/citron/citron_emu/network/NetPlayManager.kt b/src/android/app/src/main/java/org/citron/citron_emu/network/NetPlayManager.kt deleted file mode 100644 index 701be9494..000000000 --- a/src/android/app/src/main/java/org/citron/citron_emu/network/NetPlayManager.kt +++ /dev/null @@ -1,222 +0,0 @@ -// Copyright 2024 Mandarine Project -// Licensed under GPLv2 or any later version -// Refer to the license.txt file included. - -package org.citron.citron_emu.network - -import android.app.Activity -import android.content.Context -import android.net.wifi.WifiManager -import android.os.Handler -import android.os.Looper -import android.text.format.Formatter -import android.widget.Toast -import androidx.preference.PreferenceManager -import org.citron.citron_emu.CitronApplication -import org.citron.citron_emu.R -import org.citron.citron_emu.dialogs.ChatMessage - -object NetPlayManager { - external fun netPlayCreateRoom(ipAddress: String, port: Int, username: String, password: String, roomName: String, maxPlayers: Int): Int - external fun netPlayJoinRoom(ipAddress: String, port: Int, username: String, password: String): Int - external fun netPlayRoomInfo(): Array - external fun netPlayIsJoined(): Boolean - external fun netPlayIsHostedRoom(): Boolean - external fun netPlaySendMessage(msg: String) - external fun netPlayKickUser(username: String) - external fun netPlayLeaveRoom() - external fun netPlayIsModerator(): Boolean - external fun netPlayGetBanList(): Array - external fun netPlayBanUser(username: String) - external fun netPlayUnbanUser(username: String) - - private var messageListener: ((Int, String) -> Unit)? = null - private var adapterRefreshListener: ((Int, String) -> Unit)? = null - - fun setOnMessageReceivedListener(listener: (Int, String) -> Unit) { - messageListener = listener - } - - fun setOnAdapterRefreshListener(listener: (Int, String) -> Unit) { - adapterRefreshListener = listener - } - - fun getUsername(activity: Context): String { val prefs = PreferenceManager.getDefaultSharedPreferences(activity) - val name = "Citron${(Math.random() * 100).toInt()}" - return prefs.getString("NetPlayUsername", name) ?: name - } - - fun setUsername(activity: Activity, name: String) { - val prefs = PreferenceManager.getDefaultSharedPreferences(activity) - prefs.edit().putString("NetPlayUsername", name).apply() - } - - fun getRoomAddress(activity: Activity): String { - val prefs = PreferenceManager.getDefaultSharedPreferences(activity) - val address = getIpAddressByWifi(activity) - return prefs.getString("NetPlayRoomAddress", address) ?: address - } - - fun setRoomAddress(activity: Activity, address: String) { - val prefs = PreferenceManager.getDefaultSharedPreferences(activity) - prefs.edit().putString("NetPlayRoomAddress", address).apply() - } - - fun getRoomPort(activity: Activity): String { - val prefs = PreferenceManager.getDefaultSharedPreferences(activity) - return prefs.getString("NetPlayRoomPort", "24872") ?: "24872" - } - - fun setRoomPort(activity: Activity, port: String) { - val prefs = PreferenceManager.getDefaultSharedPreferences(activity) - prefs.edit().putString("NetPlayRoomPort", port).apply() - } - - private val chatMessages = mutableListOf() - private var isChatOpen = false - - fun addChatMessage(message: ChatMessage) { - chatMessages.add(message) - } - - fun getChatMessages(): List = chatMessages - - fun clearChat() { - chatMessages.clear() - } - - fun setChatOpen(isOpen: Boolean) { - isChatOpen = isOpen - } - - fun addNetPlayMessage(type: Int, msg: String) { - val context = CitronApplication.appContext - val message = formatNetPlayStatus(context, type, msg) - - when (type) { - NetPlayStatus.CHAT_MESSAGE -> { - val parts = msg.split(":", limit = 2) - if (parts.size == 2) { - val nickname = parts[0].trim() - val chatMessage = parts[1].trim() - addChatMessage(ChatMessage( - nickname = nickname, - username = "", - message = chatMessage - )) - } - } - NetPlayStatus.MEMBER_JOIN, - NetPlayStatus.MEMBER_LEAVE, - NetPlayStatus.MEMBER_KICKED, - NetPlayStatus.MEMBER_BANNED -> { - addChatMessage(ChatMessage( - nickname = "System", - username = "", - message = message - )) - } - } - - - Handler(Looper.getMainLooper()).post { - if (!isChatOpen) { - Toast.makeText(context, message, Toast.LENGTH_SHORT).show() - } - } - - - messageListener?.invoke(type, msg) - adapterRefreshListener?.invoke(type, msg) - } - - private fun formatNetPlayStatus(context: Context, type: Int, msg: String): String { - return when (type) { - NetPlayStatus.NETWORK_ERROR -> context.getString(R.string.multiplayer_network_error) - NetPlayStatus.LOST_CONNECTION -> context.getString(R.string.multiplayer_lost_connection) - NetPlayStatus.NAME_COLLISION -> context.getString(R.string.multiplayer_name_collision) - NetPlayStatus.MAC_COLLISION -> context.getString(R.string.multiplayer_mac_collision) - NetPlayStatus.CONSOLE_ID_COLLISION -> context.getString(R.string.multiplayer_console_id_collision) - NetPlayStatus.WRONG_VERSION -> context.getString(R.string.multiplayer_wrong_version) - NetPlayStatus.WRONG_PASSWORD -> context.getString(R.string.multiplayer_wrong_password) - NetPlayStatus.COULD_NOT_CONNECT -> context.getString(R.string.multiplayer_could_not_connect) - NetPlayStatus.ROOM_IS_FULL -> context.getString(R.string.multiplayer_room_is_full) - NetPlayStatus.HOST_BANNED -> context.getString(R.string.multiplayer_host_banned) - NetPlayStatus.PERMISSION_DENIED -> context.getString(R.string.multiplayer_permission_denied) - NetPlayStatus.NO_SUCH_USER -> context.getString(R.string.multiplayer_no_such_user) - NetPlayStatus.ALREADY_IN_ROOM -> context.getString(R.string.multiplayer_already_in_room) - NetPlayStatus.CREATE_ROOM_ERROR -> context.getString(R.string.multiplayer_create_room_error) - NetPlayStatus.HOST_KICKED -> context.getString(R.string.multiplayer_host_kicked) - NetPlayStatus.UNKNOWN_ERROR -> context.getString(R.string.multiplayer_unknown_error) - NetPlayStatus.ROOM_UNINITIALIZED -> context.getString(R.string.multiplayer_room_uninitialized) - NetPlayStatus.ROOM_IDLE -> context.getString(R.string.multiplayer_room_idle) - NetPlayStatus.ROOM_JOINING -> context.getString(R.string.multiplayer_room_joining) - NetPlayStatus.ROOM_JOINED -> context.getString(R.string.multiplayer_room_joined) - NetPlayStatus.ROOM_MODERATOR -> context.getString(R.string.multiplayer_room_moderator) - NetPlayStatus.MEMBER_JOIN -> context.getString(R.string.multiplayer_member_join, msg) - NetPlayStatus.MEMBER_LEAVE -> context.getString(R.string.multiplayer_member_leave, msg) - NetPlayStatus.MEMBER_KICKED -> context.getString(R.string.multiplayer_member_kicked, msg) - NetPlayStatus.MEMBER_BANNED -> context.getString(R.string.multiplayer_member_banned, msg) - NetPlayStatus.ADDRESS_UNBANNED -> context.getString(R.string.multiplayer_address_unbanned) - NetPlayStatus.CHAT_MESSAGE -> msg - else -> "" - } - } - - fun getIpAddressByWifi(activity: Activity): String { - var ipAddress = 0 - val wifiManager = activity.getSystemService(WifiManager::class.java) - val wifiInfo = wifiManager.connectionInfo - if (wifiInfo != null) { - ipAddress = wifiInfo.ipAddress - } - - if (ipAddress == 0) { - val dhcpInfo = wifiManager.dhcpInfo - if (dhcpInfo != null) { - ipAddress = dhcpInfo.ipAddress - } - } - - return if (ipAddress == 0) { - "192.168.0.1" - } else { - Formatter.formatIpAddress(ipAddress) - } - } - - fun getBanList(): List { - return netPlayGetBanList().toList() - } - - object NetPlayStatus { - const val NO_ERROR = 0 - const val NETWORK_ERROR = 1 - const val LOST_CONNECTION = 2 - const val NAME_COLLISION = 3 - const val MAC_COLLISION = 4 - const val CONSOLE_ID_COLLISION = 5 - const val WRONG_VERSION = 6 - const val WRONG_PASSWORD = 7 - const val COULD_NOT_CONNECT = 8 - const val ROOM_IS_FULL = 9 - const val HOST_BANNED = 10 - const val PERMISSION_DENIED = 11 - const val NO_SUCH_USER = 12 - const val ALREADY_IN_ROOM = 13 - const val CREATE_ROOM_ERROR = 14 - const val HOST_KICKED = 15 - const val UNKNOWN_ERROR = 16 - const val ROOM_UNINITIALIZED = 17 - const val ROOM_IDLE = 18 - const val ROOM_JOINING = 19 - const val ROOM_JOINED = 20 - const val ROOM_MODERATOR = 21 - const val MEMBER_JOIN = 22 - const val MEMBER_LEAVE = 23 - const val MEMBER_KICKED = 24 - const val MEMBER_BANNED = 25 - const val ADDRESS_UNBANNED = 26 - const val CHAT_MESSAGE = 27 - } -} \ No newline at end of file diff --git a/src/android/app/src/main/java/org/citron/citron_emu/overlay/InputOverlay.kt b/src/android/app/src/main/java/org/citron/citron_emu/overlay/InputOverlay.kt index 5e6190a7f..4c219b2a1 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/overlay/InputOverlay.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/overlay/InputOverlay.kt @@ -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 package org.citron.citron_emu.overlay diff --git a/src/android/app/src/main/java/org/citron/citron_emu/overlay/InputOverlayDrawableButton.kt b/src/android/app/src/main/java/org/citron/citron_emu/overlay/InputOverlayDrawableButton.kt index 556ffbc48..de7fd49a5 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/overlay/InputOverlayDrawableButton.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/overlay/InputOverlayDrawableButton.kt @@ -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 package org.citron.citron_emu.overlay diff --git a/src/android/app/src/main/java/org/citron/citron_emu/overlay/InputOverlayDrawableDpad.kt b/src/android/app/src/main/java/org/citron/citron_emu/overlay/InputOverlayDrawableDpad.kt index de852e813..26c02fb37 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/overlay/InputOverlayDrawableDpad.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/overlay/InputOverlayDrawableDpad.kt @@ -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 package org.citron.citron_emu.overlay diff --git a/src/android/app/src/main/java/org/citron/citron_emu/overlay/InputOverlayDrawableJoystick.kt b/src/android/app/src/main/java/org/citron/citron_emu/overlay/InputOverlayDrawableJoystick.kt index b2cba1f2a..c14222659 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/overlay/InputOverlayDrawableJoystick.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/overlay/InputOverlayDrawableJoystick.kt @@ -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 package org.citron.citron_emu.overlay diff --git a/src/android/app/src/main/java/org/citron/citron_emu/overlay/model/OverlayControl.kt b/src/android/app/src/main/java/org/citron/citron_emu/overlay/model/OverlayControl.kt index 85053a07a..a9ee552fd 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/overlay/model/OverlayControl.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/overlay/model/OverlayControl.kt @@ -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 package org.citron.citron_emu.overlay.model diff --git a/src/android/app/src/main/java/org/citron/citron_emu/overlay/model/OverlayControlData.kt b/src/android/app/src/main/java/org/citron/citron_emu/overlay/model/OverlayControlData.kt index 56f105f82..a8b18a9ae 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/overlay/model/OverlayControlData.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/overlay/model/OverlayControlData.kt @@ -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 package org.citron.citron_emu.overlay.model diff --git a/src/android/app/src/main/java/org/citron/citron_emu/overlay/model/OverlayControlDefault.kt b/src/android/app/src/main/java/org/citron/citron_emu/overlay/model/OverlayControlDefault.kt index 193827124..c101541e6 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/overlay/model/OverlayControlDefault.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/overlay/model/OverlayControlDefault.kt @@ -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 package org.citron.citron_emu.overlay.model diff --git a/src/android/app/src/main/java/org/citron/citron_emu/overlay/model/OverlayLayout.kt b/src/android/app/src/main/java/org/citron/citron_emu/overlay/model/OverlayLayout.kt index effc141f3..1c9ca1e11 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/overlay/model/OverlayLayout.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/overlay/model/OverlayLayout.kt @@ -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 package org.citron.citron_emu.overlay.model diff --git a/src/android/app/src/main/java/org/citron/citron_emu/ui/GamesFragment.kt b/src/android/app/src/main/java/org/citron/citron_emu/ui/GamesFragment.kt index 8c73a8d10..e7b0c4fce 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/ui/GamesFragment.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/ui/GamesFragment.kt @@ -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 package org.citron.citron_emu.ui diff --git a/src/android/app/src/main/java/org/citron/citron_emu/ui/main/MainActivity.kt b/src/android/app/src/main/java/org/citron/citron_emu/ui/main/MainActivity.kt index 8e1d1db78..9d3bcb42b 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/ui/main/MainActivity.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/ui/main/MainActivity.kt @@ -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 package org.citron.citron_emu.ui.main @@ -31,7 +31,6 @@ import org.citron.citron_emu.HomeNavigationDirections import org.citron.citron_emu.NativeLibrary import org.citron.citron_emu.R import org.citron.citron_emu.databinding.ActivityMainBinding -import org.citron.citron_emu.dialogs.NetPlayDialog import org.citron.citron_emu.features.settings.model.Settings import org.citron.citron_emu.fragments.AddGameFolderDialogFragment import org.citron.citron_emu.fragments.ProgressDialogFragment @@ -69,7 +68,6 @@ class MainActivity : AppCompatActivity(), ThemeProvider { splashScreen.setKeepOnScreenCondition { !DirectoryInitialization.areDirectoriesReady } ThemeHelper.setTheme(this) - NativeLibrary.netPlayInit() super.onCreate(savedInstanceState) @@ -159,11 +157,6 @@ class MainActivity : AppCompatActivity(), ThemeProvider { setInsets() } - fun displayMultiplayerDialog() { - val dialog = NetPlayDialog(this) - dialog.show() - } - private fun checkKeys() { if (!NativeLibrary.areKeysPresent()) { MessageDialogFragment.newInstance( @@ -377,57 +370,6 @@ class MainActivity : AppCompatActivity(), ThemeProvider { return false } - val getTitleKey = - registerForActivityResult(ActivityResultContracts.OpenDocument()) { result -> - if (result != null) { - processTitleKey(result) - } - } - - fun processTitleKey(result: Uri): Boolean { - if (FileUtil.getExtension(result) != "keys") { - MessageDialogFragment.newInstance( - this, - titleId = R.string.reading_keys_failure, - descriptionId = R.string.install_title_keys_failure_extension_description - ).show(supportFragmentManager, MessageDialogFragment.TAG) - return false - } - - contentResolver.takePersistableUriPermission( - result, - Intent.FLAG_GRANT_READ_URI_PERMISSION - ) - - val dstPath = DirectoryInitialization.userDirectory + "/keys/" - if (FileUtil.copyUriToInternalStorage( - result, - dstPath, - "title.keys" - ) != null - ) { - if (NativeLibrary.reloadKeys()) { - Toast.makeText( - applicationContext, - R.string.install_keys_success, - Toast.LENGTH_SHORT - ).show() - homeViewModel.setCheckKeys(true) - gamesViewModel.reloadGames(true) - return true - } else { - MessageDialogFragment.newInstance( - this, - titleId = R.string.invalid_keys_error, - descriptionId = R.string.install_keys_failure_description, - helpLinkId = R.string.dumping_keys_quickstart_link - ).show(supportFragmentManager, MessageDialogFragment.TAG) - return false - } - } - return false - } - val getFirmware = registerForActivityResult(ActivityResultContracts.OpenDocument()) { result -> if (result == null) { diff --git a/src/android/app/src/main/java/org/citron/citron_emu/ui/main/ThemeProvider.kt b/src/android/app/src/main/java/org/citron/citron_emu/ui/main/ThemeProvider.kt index a16dfec32..4defc7bed 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/ui/main/ThemeProvider.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/ui/main/ThemeProvider.kt @@ -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 package org.citron.citron_emu.ui.main diff --git a/src/android/app/src/main/java/org/citron/citron_emu/utils/AddonUtil.kt b/src/android/app/src/main/java/org/citron/citron_emu/utils/AddonUtil.kt index d2ef1c7c7..7a9fcea85 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/utils/AddonUtil.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/utils/AddonUtil.kt @@ -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 package org.citron.citron_emu.utils diff --git a/src/android/app/src/main/java/org/citron/citron_emu/utils/CompatUtils.kt b/src/android/app/src/main/java/org/citron/citron_emu/utils/CompatUtils.kt deleted file mode 100644 index 67ab65c74..000000000 --- a/src/android/app/src/main/java/org/citron/citron_emu/utils/CompatUtils.kt +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright 2024 Mandarine Project -// Licensed under GPLv2 or any later version -// Refer to the license.txt file included. - -package org.citron.citron_emu.utils - -import android.app.Activity -import android.content.Context -import android.content.ContextWrapper - -object CompatUtils { - fun findActivity(context: Context): Activity { - return when (context) { - is Activity -> context - is ContextWrapper -> findActivity(context.baseContext) - else -> throw IllegalArgumentException("Context is not an Activity") - } - } -} diff --git a/src/android/app/src/main/java/org/citron/citron_emu/utils/DirectoryInitialization.kt b/src/android/app/src/main/java/org/citron/citron_emu/utils/DirectoryInitialization.kt index 97f106a57..28e310985 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/utils/DirectoryInitialization.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/utils/DirectoryInitialization.kt @@ -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 package org.citron.citron_emu.utils diff --git a/src/android/app/src/main/java/org/citron/citron_emu/utils/DocumentsTree.kt b/src/android/app/src/main/java/org/citron/citron_emu/utils/DocumentsTree.kt index 14adf9650..4ff3d3abb 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/utils/DocumentsTree.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/utils/DocumentsTree.kt @@ -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 package org.citron.citron_emu.utils diff --git a/src/android/app/src/main/java/org/citron/citron_emu/utils/FileUtil.kt b/src/android/app/src/main/java/org/citron/citron_emu/utils/FileUtil.kt index 1f02d313d..a64e7bdd4 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/utils/FileUtil.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/utils/FileUtil.kt @@ -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 package org.citron.citron_emu.utils diff --git a/src/android/app/src/main/java/org/citron/citron_emu/utils/GameHelper.kt b/src/android/app/src/main/java/org/citron/citron_emu/utils/GameHelper.kt index 6edb79226..bba166b42 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/utils/GameHelper.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/utils/GameHelper.kt @@ -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 package org.citron.citron_emu.utils diff --git a/src/android/app/src/main/java/org/citron/citron_emu/utils/GameIconUtils.kt b/src/android/app/src/main/java/org/citron/citron_emu/utils/GameIconUtils.kt index 3e8a0e12f..f1cbffb17 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/utils/GameIconUtils.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/utils/GameIconUtils.kt @@ -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 package org.citron.citron_emu.utils diff --git a/src/android/app/src/main/java/org/citron/citron_emu/utils/GameMetadata.kt b/src/android/app/src/main/java/org/citron/citron_emu/utils/GameMetadata.kt index c89048db3..a3c035f6f 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/utils/GameMetadata.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/utils/GameMetadata.kt @@ -1,4 +1,4 @@ -// 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 package org.citron.citron_emu.utils diff --git a/src/android/app/src/main/java/org/citron/citron_emu/utils/GpuDriverHelper.kt b/src/android/app/src/main/java/org/citron/citron_emu/utils/GpuDriverHelper.kt index 2112a1666..672d732c4 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/utils/GpuDriverHelper.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/utils/GpuDriverHelper.kt @@ -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 package org.citron.citron_emu.utils diff --git a/src/android/app/src/main/java/org/citron/citron_emu/utils/GpuDriverMetadata.kt b/src/android/app/src/main/java/org/citron/citron_emu/utils/GpuDriverMetadata.kt index 10112bda0..fce854616 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/utils/GpuDriverMetadata.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/utils/GpuDriverMetadata.kt @@ -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 package org.citron.citron_emu.utils diff --git a/src/android/app/src/main/java/org/citron/citron_emu/utils/InputHandler.kt b/src/android/app/src/main/java/org/citron/citron_emu/utils/InputHandler.kt index 3713593a0..5d3e2f6cf 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/utils/InputHandler.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/utils/InputHandler.kt @@ -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 package org.citron.citron_emu.utils diff --git a/src/android/app/src/main/java/org/citron/citron_emu/utils/InsetsHelper.kt b/src/android/app/src/main/java/org/citron/citron_emu/utils/InsetsHelper.kt index 1341fe8f7..2181dc0fb 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/utils/InsetsHelper.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/utils/InsetsHelper.kt @@ -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 package org.citron.citron_emu.utils diff --git a/src/android/app/src/main/java/org/citron/citron_emu/utils/LicenseVerifier.kt b/src/android/app/src/main/java/org/citron/citron_emu/utils/LicenseVerifier.kt deleted file mode 100644 index c92046455..000000000 --- a/src/android/app/src/main/java/org/citron/citron_emu/utils/LicenseVerifier.kt +++ /dev/null @@ -1,74 +0,0 @@ -package org.citron.citron_emu.utils - -import android.app.Activity -import android.app.AlertDialog -import android.content.ClipData -import android.content.ClipboardManager -import android.content.Context -import android.content.pm.PackageManager -import android.content.pm.Signature -import android.os.Build -import android.os.Process -import kotlin.system.exitProcess - -object LicenseVerifier { - private const val EXPECTED_PACKAGE = "org.citron.citron_emu" - private const val ALTERNATE_PACKAGE = "com.miHoYo.Yuanshen" - private const val ALTERNATE_PACKAGE_2 = "com.antutu.ABenchMark" - private const val OFFICIAL_HASH = "308202e4308201cc020101300d06092a864886f70d010105050030373116301406035504030c0d416e64726f69642044656275673110300e060355040a0c07416e64726f6964310b30090603550406130255533020170d3231303831383138303335305a180f32303531303831313138303335305a30373116301406035504030c0d416e64726f69642044656275673110300e060355040a0c07416e64726f6964310b300906035504061302555330820122300d06092a864886f70d01010105000382010f003082010a0282010100803b4ba8d352ed0475a8442032eadb75ea0a865a0c310c59970bc5f011f162733941a17bac932e060a7f6b00e1d87e640d87951753ee396893769a6e4a60baddc2bf896cd46d5a08c8321879b955eeb6d9f43908029ec6e938433432c5a1ba19da26d8b3dba39f919695626fba5c412b4aba03d85f0246e79af54d6d57347aa6b5095fe916a34262e7060ef4d3f436e7ce03093757fb719b7e72267402289b0fd819673ee44b5aee23237be8e46be08df64b42de09be6090c49d6d0d7d301f0729e25c67eae2d862a87db0aa19db25ba291aae60c7740e0b745af0f1f236dadeb81fe29104a0731eb9091249a94bb56a90239b6496977ebaf1d98b6fa9f679cd0203010001300d06092a864886f70d01010505000382010100784d8e8d28b11bbdb09b5d9e7b8b4fac0d6defd2703d43da63ad4702af76f6ac700f5dcc2f480fbbf6fb664daa64132b36eb7a7880ade5be12919a14c8816b5c1da06870344902680e8ace430705d0a08158d44a3dc710fff6d60b6eb5eff4056bb7d462dafed5b8533c815988805c9f529ef1b70c7c10f1e225eded6db08f847ae805d8b37c174fa0b42cbab1053acb629711e60ce469de383173e714ae2ea76a975169785d1dbe330f803f7f12dd6616703dbaae4d4c327c5174bee83f83635e06f8634cf49d63ba5c3a4f865572740cf9e720e7df1d48fd7a4a2a651d7bb9f40d1cc6b6680b384827a6ea2a44cc1e5168218637fc5da0c3739caca8d21a1d" - - fun verifyLicense(activity: Activity) { - val currentPackage = activity.packageName - val isDebugBuild = currentPackage.endsWith(".debug") - val isEaBuild = currentPackage.endsWith(".ea") - - // Check package name - if (!isDebugBuild && !isEaBuild && - currentPackage != EXPECTED_PACKAGE && - currentPackage != ALTERNATE_PACKAGE && - currentPackage != ALTERNATE_PACKAGE_2) { - showViolationDialog(activity) - return - } - - try { - val packageInfo = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { - activity.packageManager.getPackageInfo( - currentPackage, - PackageManager.PackageInfoFlags.of(PackageManager.GET_SIGNATURES.toLong()) - ) - } else { - @Suppress("DEPRECATION") - activity.packageManager.getPackageInfo(currentPackage, PackageManager.GET_SIGNATURES) - } - - if (!verifySignature(packageInfo.signatures)) { - showViolationDialog(activity) - } - - } catch (e: Exception) { - showViolationDialog(activity) - } - } - - private fun verifySignature(signatures: Array?): Boolean { - if (signatures == null || signatures.isEmpty()) return false - val currentSignature = signatures[0].toCharsString() - return currentSignature == OFFICIAL_HASH - } - - private fun showViolationDialog(activity: Activity) { - AlertDialog.Builder(activity) - .setTitle("License Violation") - .setMessage("This appears to be a modified version of Citron Emulator. " + - "Redistributing modified versions without source code violates the GPLv3 License. " + - "The application will now close.") - .setCancelable(false) - .setPositiveButton("Exit") { _, _ -> - activity.finish() - Process.killProcess(Process.myPid()) - exitProcess(1) - } - .show() - } -} \ No newline at end of file diff --git a/src/android/app/src/main/java/org/citron/citron_emu/utils/LifecycleUtils.kt b/src/android/app/src/main/java/org/citron/citron_emu/utils/LifecycleUtils.kt index 3ce7697d1..04cc82cfd 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/utils/LifecycleUtils.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/utils/LifecycleUtils.kt @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2024 yuzu Emulator Project +// SPDX-FileCopyrightText: 2024 yuzu Emulator Project & 2025 citron Homebrew Project // SPDX-License-Identifier: GPL-2.0-or-later package org.citron.citron_emu.utils diff --git a/src/android/app/src/main/java/org/citron/citron_emu/utils/Log.kt b/src/android/app/src/main/java/org/citron/citron_emu/utils/Log.kt index a9a103b59..f29dc05c0 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/utils/Log.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/utils/Log.kt @@ -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 package org.citron.citron_emu.utils diff --git a/src/android/app/src/main/java/org/citron/citron_emu/utils/MemoryUtil.kt b/src/android/app/src/main/java/org/citron/citron_emu/utils/MemoryUtil.kt index fa5b797be..0669e274b 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/utils/MemoryUtil.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/utils/MemoryUtil.kt @@ -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 package org.citron.citron_emu.utils diff --git a/src/android/app/src/main/java/org/citron/citron_emu/utils/NativeConfig.kt b/src/android/app/src/main/java/org/citron/citron_emu/utils/NativeConfig.kt index 34cd8abd7..b3c6ee7a5 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/utils/NativeConfig.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/utils/NativeConfig.kt @@ -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 package org.citron.citron_emu.utils diff --git a/src/android/app/src/main/java/org/citron/citron_emu/utils/NfcReader.kt b/src/android/app/src/main/java/org/citron/citron_emu/utils/NfcReader.kt index b4fca3c96..4737989ac 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/utils/NfcReader.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/utils/NfcReader.kt @@ -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 package org.citron.citron_emu.utils diff --git a/src/android/app/src/main/java/org/citron/citron_emu/utils/ParamPackage.kt b/src/android/app/src/main/java/org/citron/citron_emu/utils/ParamPackage.kt index 888650c01..126f71461 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/utils/ParamPackage.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/utils/ParamPackage.kt @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2024 yuzu Emulator Project +// SPDX-FileCopyrightText: 2024 yuzu Emulator Project & 2025 citron Homebrew Project // SPDX-License-Identifier: GPL-2.0-or-later package org.citron.citron_emu.utils diff --git a/src/android/app/src/main/java/org/citron/citron_emu/utils/PreferenceUtil.kt b/src/android/app/src/main/java/org/citron/citron_emu/utils/PreferenceUtil.kt index eab587491..e570791ac 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/utils/PreferenceUtil.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/utils/PreferenceUtil.kt @@ -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 package org.citron.citron_emu.utils diff --git a/src/android/app/src/main/java/org/citron/citron_emu/utils/SerializableHelper.kt b/src/android/app/src/main/java/org/citron/citron_emu/utils/SerializableHelper.kt index d1ddf6cc8..946ccf6f3 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/utils/SerializableHelper.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/utils/SerializableHelper.kt @@ -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 package org.citron.citron_emu.utils diff --git a/src/android/app/src/main/java/org/citron/citron_emu/utils/ThemeHelper.kt b/src/android/app/src/main/java/org/citron/citron_emu/utils/ThemeHelper.kt index 338216dff..15ccd1f2d 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/utils/ThemeHelper.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/utils/ThemeHelper.kt @@ -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 package org.citron.citron_emu.utils diff --git a/src/android/app/src/main/java/org/citron/citron_emu/utils/ViewUtils.kt b/src/android/app/src/main/java/org/citron/citron_emu/utils/ViewUtils.kt index bd514cd5f..a7d94cd97 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/utils/ViewUtils.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/utils/ViewUtils.kt @@ -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 package org.citron.citron_emu.utils diff --git a/src/android/app/src/main/java/org/citron/citron_emu/viewholder/AbstractViewHolder.kt b/src/android/app/src/main/java/org/citron/citron_emu/viewholder/AbstractViewHolder.kt index cdd092e3e..ad78e4ea3 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/viewholder/AbstractViewHolder.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/viewholder/AbstractViewHolder.kt @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2024 yuzu Emulator Project +// SPDX-FileCopyrightText: 2024 yuzu Emulator Project & 2025 citron Homebrew Project // SPDX-License-Identifier: GPL-2.0-or-later package org.citron.citron_emu.viewholder diff --git a/src/android/app/src/main/java/org/citron/citron_emu/views/FixedRatioSurfaceView.kt b/src/android/app/src/main/java/org/citron/citron_emu/views/FixedRatioSurfaceView.kt index bb009b32e..a2476074d 100644 --- a/src/android/app/src/main/java/org/citron/citron_emu/views/FixedRatioSurfaceView.kt +++ b/src/android/app/src/main/java/org/citron/citron_emu/views/FixedRatioSurfaceView.kt @@ -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 package org.citron.citron_emu.views diff --git a/src/android/app/src/main/jni/CMakeLists.txt b/src/android/app/src/main/jni/CMakeLists.txt index c9c695125..203dc1c96 100644 --- a/src/android/app/src/main/jni/CMakeLists.txt +++ b/src/android/app/src/main/jni/CMakeLists.txt @@ -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 add_library(citron-android SHARED diff --git a/src/android/app/src/main/jni/android_config.cpp b/src/android/app/src/main/jni/android_config.cpp index a79a64afb..ed03eb9e4 100644 --- a/src/android/app/src/main/jni/android_config.cpp +++ b/src/android/app/src/main/jni/android_config.cpp @@ -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 #include diff --git a/src/android/app/src/main/jni/android_config.h b/src/android/app/src/main/jni/android_config.h index 28ef5d0a8..340ea2373 100644 --- a/src/android/app/src/main/jni/android_config.h +++ b/src/android/app/src/main/jni/android_config.h @@ -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 #pragma once diff --git a/src/android/app/src/main/jni/android_settings.cpp b/src/android/app/src/main/jni/android_settings.cpp index 16023a6b0..39835ec84 100644 --- a/src/android/app/src/main/jni/android_settings.cpp +++ b/src/android/app/src/main/jni/android_settings.cpp @@ -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 #include "android_settings.h" diff --git a/src/android/app/src/main/jni/android_settings.h b/src/android/app/src/main/jni/android_settings.h index f160752ef..94e0ce697 100644 --- a/src/android/app/src/main/jni/android_settings.h +++ b/src/android/app/src/main/jni/android_settings.h @@ -1,5 +1,4 @@ -// SPDX-FileCopyrightText: 2023 yuzu Emulator Project -// SPDX-FileCopyrightText: 2025 Citron Emulator Project +// SPDX-FileCopyrightText: 2023 yuzu Emulator Project & 2025 citron Homebrew Project // SPDX-License-Identifier: GPL-2.0-or-later #pragma once @@ -52,7 +51,7 @@ struct Values { Settings::Setting theme{linkage, 0, "theme", Settings::Category::Android}; Settings::Setting theme_mode{linkage, -1, "theme_mode", Settings::Category::Android}; - Settings::Setting black_backgrounds{linkage, true, "black_backgrounds", + Settings::Setting black_backgrounds{linkage, false, "black_backgrounds", Settings::Category::Android}; // Input/performance overlay settings @@ -68,10 +67,8 @@ struct Values { Settings::Category::Overlay}; Settings::Setting show_performance_overlay{linkage, true, "show_performance_overlay", Settings::Category::Overlay}; - Settings::Setting show_thermal_overlay{linkage, true, "show_thermal_overlay", + Settings::Setting show_thermal_overlay{linkage, false, "show_thermal_overlay", Settings::Category::Overlay}; - Settings::Setting show_ram_overlay{linkage, false, "show_ram_overlay", - Settings::Category::Overlay}; Settings::Setting show_input_overlay{linkage, true, "show_input_overlay", Settings::Category::Overlay}; Settings::Setting touchscreen{linkage, true, "touchscreen", Settings::Category::Overlay}; diff --git a/src/android/app/src/main/jni/emu_window/emu_window.cpp b/src/android/app/src/main/jni/emu_window/emu_window.cpp index 06db55369..85982a52a 100644 --- a/src/android/app/src/main/jni/emu_window/emu_window.cpp +++ b/src/android/app/src/main/jni/emu_window/emu_window.cpp @@ -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 #include diff --git a/src/android/app/src/main/jni/emu_window/emu_window.h b/src/android/app/src/main/jni/emu_window/emu_window.h index d7b5fc6da..4d77b5479 100644 --- a/src/android/app/src/main/jni/emu_window/emu_window.h +++ b/src/android/app/src/main/jni/emu_window/emu_window.h @@ -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 #pragma once diff --git a/src/android/app/src/main/jni/game_metadata.cpp b/src/android/app/src/main/jni/game_metadata.cpp index bac052b5d..e26b5773c 100644 --- a/src/android/app/src/main/jni/game_metadata.cpp +++ b/src/android/app/src/main/jni/game_metadata.cpp @@ -1,4 +1,4 @@ -// 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 #include "common/android/android_common.h" diff --git a/src/android/app/src/main/jni/native.cpp b/src/android/app/src/main/jni/native.cpp index f2a6a64d4..9f99ed608 100644 --- a/src/android/app/src/main/jni/native.cpp +++ b/src/android/app/src/main/jni/native.cpp @@ -1,4 +1,4 @@ -// 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 #include @@ -20,7 +20,6 @@ #include #include -#include "common/android/multiplayer/multiplayer.h" #include "common/android/android_common.h" #include "common/android/id_cache.h" #include "common/detached_tasks.h" @@ -871,83 +870,4 @@ jboolean Java_org_citron_citron_1emu_NativeLibrary_areKeysPresent(JNIEnv* env, j return ContentManager::AreKeysPresent(); } -JNIEXPORT jint JNICALL Java_org_citron_citron_1emu_network_NetPlayManager_netPlayCreateRoom( - JNIEnv* env, [[maybe_unused]] jobject obj, jstring ipaddress, jint port, - jstring username, jstring password, jstring room_name, jint max_players) { - return static_cast( - NetPlayCreateRoom(Common::Android::GetJString(env, ipaddress), port, - Common::Android::GetJString(env, username), Common::Android::GetJString(env, password), - Common::Android::GetJString(env, room_name), max_players)); -} - -JNIEXPORT jint JNICALL Java_org_citron_citron_1emu_network_NetPlayManager_netPlayJoinRoom( - JNIEnv* env, [[maybe_unused]] jobject obj, jstring ipaddress, jint port, - jstring username, jstring password) { - return static_cast( - NetPlayJoinRoom(Common::Android::GetJString(env, ipaddress), port, - Common::Android::GetJString(env, username), Common::Android::GetJString(env, password))); -} - -JNIEXPORT jobjectArray JNICALL -Java_org_citron_citron_1emu_network_NetPlayManager_netPlayRoomInfo( - JNIEnv* env, [[maybe_unused]] jobject obj) { - return Common::Android::ToJStringArray(env, NetPlayRoomInfo()); -} - -JNIEXPORT jboolean JNICALL -Java_org_citron_citron_1emu_network_NetPlayManager_netPlayIsJoined( - [[maybe_unused]] JNIEnv* env, [[maybe_unused]] jobject obj) { - return NetPlayIsJoined(); -} - -JNIEXPORT jboolean JNICALL -Java_org_citron_citron_1emu_network_NetPlayManager_netPlayIsHostedRoom( - [[maybe_unused]] JNIEnv* env, [[maybe_unused]] jobject obj) { - return NetPlayIsHostedRoom(); -} - -JNIEXPORT void JNICALL -Java_org_citron_citron_1emu_network_NetPlayManager_netPlaySendMessage( - JNIEnv* env, [[maybe_unused]] jobject obj, jstring msg) { - NetPlaySendMessage(Common::Android::GetJString(env, msg)); -} - -JNIEXPORT void JNICALL Java_org_citron_citron_1emu_network_NetPlayManager_netPlayKickUser( - JNIEnv* env, [[maybe_unused]] jobject obj, jstring username) { - NetPlayKickUser(Common::Android::GetJString(env, username)); -} - -JNIEXPORT void JNICALL Java_org_citron_citron_1emu_network_NetPlayManager_netPlayLeaveRoom( - [[maybe_unused]] JNIEnv* env, [[maybe_unused]] jobject obj) { - NetPlayLeaveRoom(); -} - -JNIEXPORT jboolean JNICALL -Java_org_citron_citron_1emu_network_NetPlayManager_netPlayIsModerator( - [[maybe_unused]] JNIEnv* env, [[maybe_unused]] jobject obj) { - return NetPlayIsModerator(); -} - -JNIEXPORT jobjectArray JNICALL -Java_org_citron_citron_1emu_network_NetPlayManager_netPlayGetBanList( - JNIEnv* env, [[maybe_unused]] jobject obj) { - return Common::Android::ToJStringArray(env, NetPlayGetBanList()); -} - -JNIEXPORT void JNICALL Java_org_citron_citron_1emu_network_NetPlayManager_netPlayBanUser( - JNIEnv* env, [[maybe_unused]] jobject obj, jstring username) { - NetPlayBanUser(Common::Android::GetJString(env, username)); -} - -JNIEXPORT void JNICALL Java_org_citron_citron_1emu_network_NetPlayManager_netPlayUnbanUser( - JNIEnv* env, [[maybe_unused]] jobject obj, jstring username) { - NetPlayUnbanUser(Common::Android::GetJString(env, username)); -} - -JNIEXPORT void JNICALL -Java_org_citron_citron_1emu_NativeLibrary_netPlayInit( - JNIEnv* env, [[maybe_unused]] jobject obj) { - NetworkInit(&EmulationSession::GetInstance().System().GetRoomNetwork()); -} - } // extern "C" diff --git a/src/android/app/src/main/jni/native.h b/src/android/app/src/main/jni/native.h index 6a4551ada..bffc82e77 100644 --- a/src/android/app/src/main/jni/native.h +++ b/src/android/app/src/main/jni/native.h @@ -1,4 +1,4 @@ -// 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 #include diff --git a/src/android/app/src/main/jni/native_config.cpp b/src/android/app/src/main/jni/native_config.cpp index 619a1c887..61dbd5bc9 100644 --- a/src/android/app/src/main/jni/native_config.cpp +++ b/src/android/app/src/main/jni/native_config.cpp @@ -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 #include diff --git a/src/android/app/src/main/jni/native_input.cpp b/src/android/app/src/main/jni/native_input.cpp index cc7ced780..01d08d996 100644 --- a/src/android/app/src/main/jni/native_input.cpp +++ b/src/android/app/src/main/jni/native_input.cpp @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2024 yuzu Emulator Project +// SPDX-FileCopyrightText: 2024 yuzu Emulator Project & 2025 citron Homebrew Project // SPDX-License-Identifier: GPL-2.0-or-later #include diff --git a/src/android/app/src/main/jni/native_library.cpp b/src/android/app/src/main/jni/native_library.cpp deleted file mode 100644 index 41152ef41..000000000 --- a/src/android/app/src/main/jni/native_library.cpp +++ /dev/null @@ -1,31 +0,0 @@ -#include "core/crypto/key_manager.h" -#include "core/hle/service/am/am.h" -#include "core/file_sys/registered_cache.h" -#include "core/file_sys/content_archive.h" -#include "core/system.h" - -extern "C" { - -JNIEXPORT jboolean JNICALL Java_org_citron_citron_1emu_NativeLibrary_isFirmwareAvailable( - JNIEnv* env, jobject obj) { - return Core::Crypto::KeyManager::Instance().IsFirmwareAvailable(); -} - -JNIEXPORT jboolean JNICALL Java_org_citron_citron_1emu_NativeLibrary_checkFirmwarePresence( - JNIEnv* env, jobject obj) { - constexpr u64 MiiEditId = 0x0100000000001009; // Mii Edit applet ID - constexpr u64 QLaunchId = 0x0100000000001000; // Home Menu applet ID - - auto& system = Core::System::GetInstance(); - auto bis_system = system.GetFileSystemController().GetSystemNANDContents(); - if (!bis_system) { - return false; - } - - auto mii_applet_nca = bis_system->GetEntry(MiiEditId, FileSys::ContentRecordType::Program); - auto qlaunch_nca = bis_system->GetEntry(QLaunchId, FileSys::ContentRecordType::Program); - - return (mii_applet_nca != nullptr && qlaunch_nca != nullptr); -} - -} // extern "C" \ No newline at end of file diff --git a/src/android/app/src/main/jni/native_log.cpp b/src/android/app/src/main/jni/native_log.cpp index e076d4ab2..bbc1fab2c 100644 --- a/src/android/app/src/main/jni/native_log.cpp +++ b/src/android/app/src/main/jni/native_log.cpp @@ -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 #include diff --git a/src/android/app/src/main/res/drawable/ic_chat.xml b/src/android/app/src/main/res/drawable/ic_chat.xml deleted file mode 100644 index e0efa062b..000000000 --- a/src/android/app/src/main/res/drawable/ic_chat.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - \ No newline at end of file diff --git a/src/android/app/src/main/res/drawable/ic_citron.png b/src/android/app/src/main/res/drawable/ic_citron.png deleted file mode 100644 index 5b6dd81ca..000000000 Binary files a/src/android/app/src/main/res/drawable/ic_citron.png and /dev/null differ diff --git a/src/android/app/src/main/res/drawable/ic_citron.xml b/src/android/app/src/main/res/drawable/ic_citron.xml new file mode 100644 index 000000000..5e2a8efd0 --- /dev/null +++ b/src/android/app/src/main/res/drawable/ic_citron.xml @@ -0,0 +1,22 @@ + + + + diff --git a/src/android/app/src/main/res/drawable/ic_citron_full.png b/src/android/app/src/main/res/drawable/ic_citron_full.png deleted file mode 100644 index 5b6dd81ca..000000000 Binary files a/src/android/app/src/main/res/drawable/ic_citron_full.png and /dev/null differ diff --git a/src/android/app/src/main/res/drawable/ic_citron_full.xml b/src/android/app/src/main/res/drawable/ic_citron_full.xml new file mode 100644 index 000000000..04e458400 --- /dev/null +++ b/src/android/app/src/main/res/drawable/ic_citron_full.xml @@ -0,0 +1,12 @@ + + + + diff --git a/src/android/app/src/main/res/drawable/ic_citron_title.png b/src/android/app/src/main/res/drawable/ic_citron_title.png deleted file mode 100644 index 5b6dd81ca..000000000 Binary files a/src/android/app/src/main/res/drawable/ic_citron_title.png and /dev/null differ diff --git a/src/android/app/src/main/res/drawable/ic_citron_title.xml b/src/android/app/src/main/res/drawable/ic_citron_title.xml new file mode 100644 index 000000000..b733e5248 --- /dev/null +++ b/src/android/app/src/main/res/drawable/ic_citron_title.xml @@ -0,0 +1,24 @@ + + + + + + + + diff --git a/src/android/app/src/main/res/drawable/ic_ip.xml b/src/android/app/src/main/res/drawable/ic_ip.xml deleted file mode 100644 index 19f719b39..000000000 --- a/src/android/app/src/main/res/drawable/ic_ip.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - \ No newline at end of file diff --git a/src/android/app/src/main/res/drawable/ic_joined.xml b/src/android/app/src/main/res/drawable/ic_joined.xml deleted file mode 100644 index c86e96da4..000000000 --- a/src/android/app/src/main/res/drawable/ic_joined.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - \ No newline at end of file diff --git a/src/android/app/src/main/res/drawable/ic_multiplayer.xml b/src/android/app/src/main/res/drawable/ic_multiplayer.xml deleted file mode 100644 index cf3e49fcc..000000000 --- a/src/android/app/src/main/res/drawable/ic_multiplayer.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - \ No newline at end of file diff --git a/src/android/app/src/main/res/drawable/ic_network.xml b/src/android/app/src/main/res/drawable/ic_network.xml deleted file mode 100644 index eef8a0b43..000000000 --- a/src/android/app/src/main/res/drawable/ic_network.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - diff --git a/src/android/app/src/main/res/drawable/ic_send.xml b/src/android/app/src/main/res/drawable/ic_send.xml deleted file mode 100644 index fa2074057..000000000 --- a/src/android/app/src/main/res/drawable/ic_send.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - \ No newline at end of file diff --git a/src/android/app/src/main/res/drawable/ic_system.xml b/src/android/app/src/main/res/drawable/ic_system.xml deleted file mode 100644 index 63fd22d7d..000000000 --- a/src/android/app/src/main/res/drawable/ic_system.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - \ No newline at end of file diff --git a/src/android/app/src/main/res/drawable/ic_user.xml b/src/android/app/src/main/res/drawable/ic_user.xml deleted file mode 100644 index 606e966ca..000000000 --- a/src/android/app/src/main/res/drawable/ic_user.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - diff --git a/src/android/app/src/main/res/layout-w600dp/page_setup.xml b/src/android/app/src/main/res/layout-w600dp/page_setup.xml index 5a8566c0b..9e0ab8ecb 100644 --- a/src/android/app/src/main/res/layout-w600dp/page_setup.xml +++ b/src/android/app/src/main/res/layout-w600dp/page_setup.xml @@ -34,41 +34,28 @@ android:gravity="center" android:textColor="?attr/colorOnSurface" android:textStyle="bold" - app:layout_constraintBottom_toTopOf="@+id/scroll_description" + app:layout_constraintBottom_toTopOf="@+id/text_description" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" app:layout_constraintVertical_weight="2" tools:text="@string/welcome" /> - - - - - + app:layout_constraintVertical_weight="2" + app:lineHeight="30sp" + tools:text="@string/welcome_description" /> @@ -101,7 +88,7 @@ app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@+id/scroll_description" + app:layout_constraintTop_toBottomOf="@+id/text_description" tools:text="Get started" /> diff --git a/src/android/app/src/main/res/layout/dialog_ban_list.xml b/src/android/app/src/main/res/layout/dialog_ban_list.xml deleted file mode 100644 index eb4082717..000000000 --- a/src/android/app/src/main/res/layout/dialog_ban_list.xml +++ /dev/null @@ -1,7 +0,0 @@ - - \ No newline at end of file diff --git a/src/android/app/src/main/res/layout/dialog_bottom_sheet.xml b/src/android/app/src/main/res/layout/dialog_bottom_sheet.xml deleted file mode 100644 index 6dd10d97b..000000000 --- a/src/android/app/src/main/res/layout/dialog_bottom_sheet.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/src/android/app/src/main/res/layout/dialog_chat.xml b/src/android/app/src/main/res/layout/dialog_chat.xml deleted file mode 100644 index d62ef0802..000000000 --- a/src/android/app/src/main/res/layout/dialog_chat.xml +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/android/app/src/main/res/layout/dialog_multiplayer_connect.xml b/src/android/app/src/main/res/layout/dialog_multiplayer_connect.xml deleted file mode 100644 index 36a77d395..000000000 --- a/src/android/app/src/main/res/layout/dialog_multiplayer_connect.xml +++ /dev/null @@ -1,72 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/android/app/src/main/res/layout/dialog_multiplayer_lobby.xml b/src/android/app/src/main/res/layout/dialog_multiplayer_lobby.xml deleted file mode 100644 index 19368bc2c..000000000 --- a/src/android/app/src/main/res/layout/dialog_multiplayer_lobby.xml +++ /dev/null @@ -1,75 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/android/app/src/main/res/layout/dialog_multiplayer_room.xml b/src/android/app/src/main/res/layout/dialog_multiplayer_room.xml deleted file mode 100644 index 53afda931..000000000 --- a/src/android/app/src/main/res/layout/dialog_multiplayer_room.xml +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/android/app/src/main/res/layout/fragment_emulation.xml b/src/android/app/src/main/res/layout/fragment_emulation.xml index fe028e028..df91a08c5 100644 --- a/src/android/app/src/main/res/layout/fragment_emulation.xml +++ b/src/android/app/src/main/res/layout/fragment_emulation.xml @@ -171,21 +171,6 @@ - - - - - - - - - - \ No newline at end of file diff --git a/src/android/app/src/main/res/layout/item_button_netplay.xml b/src/android/app/src/main/res/layout/item_button_netplay.xml deleted file mode 100644 index 494cc8878..000000000 --- a/src/android/app/src/main/res/layout/item_button_netplay.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - diff --git a/src/android/app/src/main/res/layout/item_chat_message.xml b/src/android/app/src/main/res/layout/item_chat_message.xml deleted file mode 100644 index f4ce137e7..000000000 --- a/src/android/app/src/main/res/layout/item_chat_message.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/src/android/app/src/main/res/layout/item_netplay_button.xml b/src/android/app/src/main/res/layout/item_netplay_button.xml deleted file mode 100644 index f324e8e26..000000000 --- a/src/android/app/src/main/res/layout/item_netplay_button.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - -