summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2025-03-06revert 31694994f2c338486486efb7d8bc5e954b8a9e07Zephyron
revert arm_nce: Hash TLB to MLP L2 Update
2025-03-06revert ee3d858935600e23a7914620b21f45082cccf8bdZephyron
revert Follow Up Of the previous commit with the update of TLB update
2025-03-06revert 6565055865688ba316801d99a3c3a5a0300cad5dZephyron
revert Fix: Core_Memory logging and ARM_NCE Mutex logging
2025-03-06revert 90a8165f7740702c5bc9c57a997bb67d229002aaZephyron
revert Added: Core_Memory to filter logging class
2025-03-06revert 031c635095622a35982f7f6faef894df9583e888Zephyron
revert arm: corrected declarations
2025-03-05arm: corrected declarationsCamilleLaVey
2025-03-05Added: Core_Memory to filter logging classCamilleLaVey
2025-03-05Fix: Core_Memory logging and ARM_NCE Mutex loggingCamilleLaVey
2025-03-04Follow Up Of the previous commit with the update of TLB updateCamilleLaVey
2025-03-04arm_nce: Hash TLB to MLP L2 UpdateCamilleLaVey
2025-03-04revert e4342324fe4ef63ef48a15ac379063ab8c7fa7aeCamilleLaVey
revert Changes of the previous commits
2025-03-03Changes of the previous commitsCamilleLaVey
2025-03-03Android: Remove redundant firmware checkZephyron
Remove duplicate firmware presence check in EmulationActivity. The isFirmwareAvailable() check already handles this functionality, making checkFirmwarePresence() redundant.
2025-03-03Android: Downgrade build dependencies and SDK versionsZephyron
- Revert Android Gradle plugin from 8.8.1 to 8.1.2 - Downgrade Kotlin version from 2.1.20-RC to 1.9.20 - Lower Java/JVM target from 21 to 17 - Reduce CMake version from 3.31.5 to 3.22.1 - Update various Android dependencies to stable versions: - Navigation Safe Args plugin to 2.6.0 - ktlint to 0.47.1 - Play Publisher plugin to 3.8.6 - Remove custom APK naming scheme - Fix CMake boolean arguments (OFF -> 0) - Remove citron copyright header
2025-03-03revert cbb9a35166f18f8eebe31e9976e66094388fb8abCamilleLaVey
revert Re-Enabled Vulkan Functions disabled on Adreno to improve compatibility and performance and check further issues within the current changes.
2025-03-02Re-Enabled Vulkan Functions disabled on Adreno to improve compatibility and ↵CamilleLaVey
performance and check further issues within the current changes.
2025-02-28arm: Improve TLB implementation and fault handling in NCEZephyron
This commit enhances the Translation Lookaside Buffer (TLB) implementation in the ARM Native Code Execution (NCE) component to increase stability, particularly on Android devices. The changes prioritize robustness and error recovery over performance optimizations. Key improvements: - Replace set-associative TLB with a simpler linear search implementation - Implement a basic LRU replacement policy for TLB entries - Add validation checks for memory addresses before TLB insertion - Ensure proper page alignment for guest and host addresses - Enhance alignment fault handling with instruction skipping as fallback - Add comprehensive debug logging for memory access errors - Improve error recovery in guest memory access scenarios These changes should significantly reduce crashes during emulation on Android devices by gracefully handling memory access edge cases that previously resulted in hard crashes. Co-Authored-By: Camille LaVey <camillelavey@citron-emu.org> Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-02-28shader_recompiler: Implement vertex count lookup for Geometry stageZephyron
Add proper handling of input topologies in the Geometry stage for all three shader backends (GLASM, GLSL, SPIRV). This implementation uses a lookup table approach to determine vertex counts based on input topology type (Points, Lines, LinesAdjacency, Triangles, TrianglesAdjacency) and shifts the vertex count by 16 bits as required by the invocation info format. Additional changes: - Fixed TessellationControl and TessellationEval stages to properly break after emitting code - Added proper header include for runtime_info.h in GLASM backend - Improved code documentation with clear commenting patterns This change ensures accurate geometry shader behavior across all backends, improving compatibility with games that rely on proper vertex count reporting. Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-02-28feat: Make firmware mandatory for title launchingZephyron
This commit implements a requirement for firmware to be installed before titles can be launched, similar to how keys are required. Changes include: - Add IsFirmwareAvailable method to KeyManager to check for essential keys - Add CheckFirmwarePresence method to verify actual firmware files (NCAs) - Add firmware checks in game loading process for both desktop and Android - Add error messages when firmware is missing - Add strings for firmware-related error messages The implementation checks for both essential keys and the presence of system applets like Mii Edit and Home Menu to ensure proper firmware is installed. Games will not launch if firmware is missing, and users will be shown an appropriate error message.
2025-02-28feat: Remove autogenerated key functionalityZephyron
This commit removes the functionality that automatically generates and writes keys to *_autogenerated files. The key derivation logic is preserved, but derived keys are now only stored in memory and not written to disk. Changes include: - Remove loading from *_autogenerated key files - Make WriteKeyToFile a no-op function - Remove all file writing operations in SetKey methods - Remove file writing for keyblobs and other derived keys - Update copyright notices This change improves security by not storing derived keys on disk and simplifies the key management system.
2025-02-27renderer: Disable async presentation due to crashesZephyron
- Disable async presentation by default on both Android and desktop platforms due to stability issues.
2025-02-25core/arm/nce: Implement TLB caching systemZephyron
Adds a software TLB cache to improve memory access performance in the NCE (Native Code Execution) system. Key changes include: - Implement set-associative TLB with 64 sets and 8 ways - Add TLB lookup before memory access in HandleGuestAccessFault - Implement LRU replacement policy with access frequency consideration - Add thread context caching to reduce overhead - Add proper synchronization with mutex locks - Add helper functions for TLB management (lookup, insert, invalidate) This change should improve performance by reducing redundant memory translations and providing faster access to frequently used pages.
2025-02-24Revert "settings: Enable auto-stub by default"Zephyron
This reverts commit 7903415fa4369fbf0e8f415fbe9eb0017e0f7b3e.
2025-02-22vulkan: Improve memory allocation robustnessZephyron
Enhances the Vulkan memory allocator with better OOM handling and memory alignment: * Add memory recovery by cleaning up empty allocations before failing * Implement proper fallback to non-device-local memory * Simplify memory alignment handling for different vendors * Add better error logging for allocation failures * Add IsEmpty() helper to track unused allocations * Fix alignment requirements for Adreno (4KB) vs other vendors These changes improve the robustness of memory allocation, particularly in low-memory situations, and streamline vendor-specific alignment requirements.
2025-02-22android: Update build dependencies and configurationsZephyron
Updates various build dependencies and configurations for the Android build: * Upgrade Android Gradle Plugin to 8.8.1 * Update Kotlin to 2.1.20-RC * Upgrade NDK to 28.0.13004108 * Update target/compile SDK to Android 35 * Upgrade Java/Kotlin target to JVM 21 * Enable additional release optimizations (shrinkResources, proguard-android-optimize) * Update CMake to 3.31.5 * Update various AndroidX and support library dependencies * Change CMake boolean flags from 0/1 to OFF/ON * Update ktlint to 0.51.1 and related plugins This commit modernizes the Android build system and enables additional optimizations for release builds.
2025-02-22settings: Enable auto-stub by defaultZephyron
Changes the default value of use_auto_stub from false to true in the settings. This setting controls whether unimplemented functions should be automatically stubbed during execution.
2025-02-22feat: Add AnTuTu to license verification for Android appZephyron
2025-02-21Add license verification for Android appZephyron
Implements a LicenseVerifier class to ensure app integrity and license compliance: - Verifies the app's package name matches the official release - Validates app signature against official release signature - Allows debug and EA (Early Access) builds - Shows violation dialog and exits if verification fails - Enforces GPLv3 license compliance for modified versions This helps prevent unauthorized modified versions from being distributed without source code, as required by the GPLv3 license.
2025-02-20Revert "audio: refactor SDL2 sink implementation"Zephyron
This reverts commit 3aa9c0d1518ceec8e3f9ad93efa84bf90e1f1b21.
2025-02-19Remove redundant TranslateIPv4 functionZephyron
Remove the TranslateIPv4 function that converts in_addr to IPv4Address, as it appears to be unused or redundant. The functionality might be handled elsewhere in the codebase or no longer needed.
2025-02-17network: Improve network interface handling and address resolutionZephyron
- Return loopback address (127.0.0.1) when no network interface is selected - Improve IPv4 address string conversion and handling - Add explicit handling for "None" network interface selection - Change IsAnyInternetRequestAccepted logging from ERROR to DEBUG - Simplify internet request acceptance check to assume availability This change makes the network interface handling more robust by providing fallback behaviors and improving address resolution. It also reduces unnecessary error logging for expected scenarios.
2025-02-17feat: Add Home Menu launch support and system improvementsZephyron
This commit adds support for launching the system Home Menu and implements several system-level improvements: - Add Home Menu launch functionality through new UI action - Implement shutdown/reboot sequence handlers in GlobalStateController - Add support for reserved region extra size in page tables - Enhance audio controller with output management - Expand parental control service capabilities - Add profile service improvements for user management Technical changes: - Add OnHomeMenu() handler to launch QLaunch system applet - Implement m_alias_region_extra_size tracking in page tables - Add new CreateProcessFlag for reserved region extra size - Expand audio controller interface with output management - Add self-controller methods to various services - Implement play timer and profile service improvements The changes primarily focus on system menu integration and core service improvements to better support system functionality.
2025-02-16texture_cache: Add equality operators for ImageInfo and ImageViewInfoZephyron
- Add operator== to ImageInfo and ImageViewInfo classes to enable direct equality comparisons. The implementations use std::tie to perform member-wise comparisons of all relevant fields in a safe and efficient manner. This allows for easier comparison of texture cache entries and view information, which can be useful for cache management and debugging.
2025-02-16build: upgrade fmt and SDL2Zephyron
Update fmt library to version 11.0.2 and make necessary adjustments: - Replace fmt/format.h includes with fmt/ranges.h - Add const qualifiers to formatter::format functions - Update CMake to require fmt version 11 Additional dependency updates: - Update SDL2 bundled version from 2.28.2 to 2.32.0 - Update catch2 to version 3.8.0 - Update vcpkg baseline to c82f74667287d3dc386bce81e44964370c91a289
2025-02-16service/am: Implement SetRequestExitToLibraryAppletAtExecuteNextProgramEnabledZephyron
- Removes STUBBED designation as implementation is now complete - Changes log level from WARNING to DEBUG - Properly sets the exit request flag under lock protection
2025-02-16service/am: Implement CreateManagedDisplaySeparableLayerZephyron
- Removes STUBBED designation as implementation is now complete - Changes log level from WARNING to DEBUG - Adds proper locking when accessing the display layer manager - Fixes parameter alignment in function declaration
2025-02-16service/nvnflinger: Unstub GetNativeHandleZephyron
Removes the STUBBED designation from GetNativeHandle in IHOSBinderDriver as the implementation is now complete. Changes the log level from WARNING to DEBUG to reflect this status. The function properly handles binder ID validation and returns the appropriate handle as documented in switchbrew.
2025-02-16service/vi: Improve OpenDisplay validationZephyron
Updates the OpenDisplay function in IApplicationDisplayService to properly validate display names. Instead of only accepting "Default", now validates against all known valid display names: "Default", "External", "Edid", "Internal", and "Null". - Changes log level from WARNING to DEBUG since this is no longer stubbed - Adds proper validation for all valid display names - Returns ResultOperationFailed for invalid display names - Improves logging by including the requested display name
2025-02-16service/aoc: Implement CheckAddOnContentMountStatusZephyron
Implements the CheckAddOnContentMountStatus command for the aoc:u service. This function checks whether add-on content (DLC) is currently mounted. Currently returns false as we don't yet track mounted content state. Changed log level from WARNING to DEBUG since this is no longer stubbed.
2025-02-09android: Disable RAM Overlay By DefaultZephyron
- TODO
2025-02-09android: Update build toolchain to NDK 28 and Java 21Zephyron
Update Android build configuration to use the latest NDK version 28.0.13004108 and Java JDK 21. This includes: - Updating ndkVersion from 26.3.11579264 to 28.0.13004108 - Upgrading Java compatibility from Java 17 to Java 21 - Setting Kotlin JVM target from 17 to 21 These changes modernize the Android build toolchain and ensure compatibility with the latest development tools.
2025-02-09vulkan: Rename resolve_image to resolve_image_holderZephyron
Fix Android compilation with latest NDK (28.0.13004108) and Java JDK 21 by renaming the resolve_image variable to resolve_image_holder to avoid potential naming conflicts. This change helps maintain compatibility with the updated build toolchain while keeping the core functionality intact. The change affects the MSAA image copy operation in the Vulkan texture cache implementation.
2025-02-09Revert "Replace yuzu identifiers with citron"Zephyron
This reverts commit d4ad55ed21047747698618e97dfa727d454c3c96.
2025-02-09network: Fix 0.0 FPS bug on Android (Part 2)Zephyron
- Add network interface enumeration support for Android - Implement fallback loopback interface when no interfaces are detected - Add ability to force offline mode on critical network errors - Improve socket initialization with better error handling - Add socket state tracking (domain, type, protocol) - Make translation functions static and mark as maybe_unused - Add detailed logging for network initialization failures Part 2 of the Android FPS bug fix focuses on network resilience, particularly handling cases where network initialization fails. Instead of hanging the emulator, it now gracefully falls back to offline mode and provides better diagnostic information.
2025-02-09common: Enhance memory mapping safety and debuggingZephyron
- Reduce max_memory_size from 512GB to 1GB for safer allocation limits - Add memory operation logging for debugging purposes - Implement MapMemory() with additional safety checks and large allocation handling - Add validation checks for memory mappings - Introduce chunked allocation strategy for large memory requests - Add detailed error logging for memory operations
2025-02-09Replace yuzu identifiers with citronZephyron
Update magic numbers and default identifiers across codebase: - UUID default value - Thread magic number - Amiibo name - Vulkan cache magic number - Shader cache magic number
2025-02-09service/nvdrv: Implement NVGPU_GPU_IOCTL_NUM_VSMSZephyron
- Add IoctlNumVsms struct definition - Implement ioctl 0x13 to return number of SM units (2 for Tegra X1)
2025-02-09service/friend: Clean up friend service implementationZephyron
- Remove unused function stubs - Improve GetCompletionEvent implementation - Clean up response builder naming
2025-02-09service/audio: Clean up audio controller implementationZephyron
- Remove Unknown5000 function and related debug commands - Fix incorrect service name in log message
2025-02-09service/acc: Clean up account service implementationZephyron
- Remove unused function stubs - Add version information comments - Add clang-format markers - Remove duplicate TrySelectUserWithoutInteraction function - Fix formatting and code style