- Added `CORE_SYNC_SPEED` to the Phoenix Hacks submenu as a toggleable option.
- This allows users to enable or disable synchronization of CPU core speed with game rendering.
- Updated the settings menu to include relevant title and description for the new setting.
- Added missing declaration for `ReleaseFramebuffers` in the `HardwareComposer` class.
- Forward-declared the `Layer` class to avoid incomplete type issues.
- Ensured method declarations in the header match the implementation in the `.cpp` file.
- Verified necessary includes and forward declarations for all relevant types.
- Implemented the `HardwareComposer::CacheFramebufferLocked` function to handle caching and reuse of framebuffers.
- Introduced logic to acquire and release framebuffers based on their acquisition state.
- Integrated support for sorting layers by Z-index during composition and rendering.
- Added functionality to normalize swap intervals, supporting speed control based on frame timing.
- Optimized the handling of framebuffers, releasing them when no longer needed to avoid resource contention.
- Improved buffer management to reduce redundant acquisitions, enhancing overall performance.
- Modularized common logic for multicore and single-core checks using ternary operators.
- Reduced code duplication in event scheduling and handling.
- Implemented early returns to simplify control flow and improve readability.
- Flattened nested conditions and improved consistency in function calls.
- Modularized repeated patterns for request parsing and response building:
- Created helper functions `ParseAndRespond`, `ParseSetAndRespond`, and `ParseGetAndRespond` for consistency and readability.
- Introduced `LogStubCall` for logging stubbed functions to reduce redundancy.
- Cleaned up `mm_u.h` by removing redundant enum assignments and replacing `typedef` with `using`.
- Simplified and improved readability in `mm_u.cpp` by reducing duplicate code and centralizing response logic.
- Ensured consistency and streamlined logic across all functions handling IPC requests.
- Added new features `EnhancedAudioProcessing` and `AdvancedNoiseSuppression` to `SupportTags` for revision 12.
- Updated `CurrentRevision` to 12.
- Expanded `features` array to map the new features to revision 12.
- Improved error logging:
- Logs an error to `std::cerr` if an invalid `SupportTag` is passed.
- Logs an error to `std::cerr` if the user revision exceeds the `CurrentRevision` value.
- Ensured `CheckValidRevision` function logs an error for invalid revision numbers.
- Removed fragment shader that blended previous and current frames with a 50% linear interpolation
- This shader was no longer required or used in the current pipeline
- Better Interpolation Method Used
- Updated Horizon OS version to 18.1.0 (from 12.1.0)
- Updated NintendoSDK firmware display version to 18.1.0-1.0
- Updated VERSION_HASH to "437857bcb1604c717ae3fe62d03ae1fcaa783264"
- Updated Atmosphere release version to 1.7.1 (from 1.0.0)
- Added shader module and pipeline for ABGR8 sRGB to D24S8 conversion in `convert_abgr8_srgb_to_d24s8.frag`.
- Implemented `BlitImageHelper::ConvertABGR8SRGBToD24S8` to handle the conversion using the new pipeline.
- Integrated the shader and pipeline with the `Framebuffer` and `ImageView` for proper rendering.
- Added logic to select the conversion function when the source image format is `PixelFormat::A8B8G8R8_SRGB`.
- Implemented a new host shader to enhance rendering performance and visual quality.
- The shader optimizes the handling of specific graphical effects and improves efficiency in Vulkan rendering.
- Integrated the shader into the rendering pipeline, ensuring compatibility with existing framebuffer handling.
- Added necessary shader compilation steps and resources for proper deployment across platforms.
- Refactored logic operation handling for AMD drivers to reduce unnecessary object creation.
- Inlined lambda for float type checking in vertex attribute format to improve performance.
- Updated dynamic state management with support for extended dynamic state and primitive restart enable.
- Added checks for various extended dynamic state support features (v1, v2, v3).
- Implemented frame skipping logic to skip every 4th frame in the Vulkan renderer.
- Added basic frame interpolation using a fragment shader to blend the previous and current frames.
- The interpolation shader performs a 50% blend between the two frames to smooth out skipped frames.
- Frame buffers are captured and used for interpolation in case a frame is skipped.
- Implemented logic to determine memory limit based on available memory.
- The system now sets a memory limit of 8 GiB, 6 GiB, or 4 GiB based on the available memory, using the total available memory if it's less than 4 GiB.
- Added multi-core, shader backend, NVDEC emulation, ASTC decode method, and ASTC recompression settings to the Phoenix Hacks submenu.
- This enhances the customization of rendering settings in the Phoenix Hacks section.
- Added ResolutionSetup enum to represent different resolution scaling levels.
- Integrated dynamic resolution adjustment based on FPS into the FPS overlay.
- Fixed type mismatch by safely handling nullable 'perfStatsUpdater' with null-safe operators.
- Ensured proper null safety handling when posting and removing callbacks.
- Resolved smart cast issue by preventing potential state changes of 'perfStatsUpdater'.
- Fixed argument order in String.format for FPS and memory usage.
- Improved null safety checks for binding and perfStatsUpdater.
- Ensured proper removal of callbacks to avoid memory leaks.
- Introduced a new 'Phoenix Hacks' submenu in the settings UI.
- Added options for Phoenix-specific hack toggles and adjustments.
- Prepared the settings infrastructure for upcoming Phoenix cherry-picked optimizations.
- Implemented `uninstallFirmware` method to remove installed firmware files from the system.
- Added confirmation and error handling for firmware uninstallation.
- Updated UI strings with messages for firmware uninstallation process.
- Linked the uninstallation option in the installable list of actions.
- Added battery temperature tracking through a broadcast receiver to update thermal overlay.
- Integrated memory usage display in the performance overlay.
- Updated lifecycle management to handle battery receiver registration and unregistration.
- Refined thermal overlay visibility and removed extra handling for foldable layouts.
- Improved overall performance tracking, memory statistics, and UI adjustments.
- Removed `CheckKgslPresent()` from `SupportsCustomDriver()` function.
- Updated API level requirement to 30 for custom driver support.
- Simplified the `supportsCustomDriverLoading` JNI function to rely solely on API level check.
- Introduced a Python-based tool for processing log files.
- The tool removes unnecessary `<Info>` lines, focusing on device information, warnings, and errors.
- Designed for easy integration into development workflows with drag-and-drop file selection.
- Output is formatted for Discord, making it easy to share logs with relevant details.
- Updated `nvn_bias` structure to extend the offset range.
- Adjusted `offset_begin` from 0x110 to 0x100 and `offset_end` from 0x610 to 0x700.
- These changes provide a broader range for better memory alignment and handling.
- Commented out the section in `CMakeLists.txt` responsible for downloading and extracting Vulkan Validation Layers (VVL).
- As VVL is now provided manually, the automated download and extraction process is no longer required.
- The script block responsible for copying the VVL binaries to `jniLibs` has also been commented out.
- Replaced outdated branding references with the new brand name.
- Updated URLs to point to the correct and current addresses.
- Ensured all references in `strings.xml` reflect the latest company or product updates.
- Upgraded Gradle to version 8.10 for enhanced build performance and compatibility.
- Updated Android Studio `build.gradle.kts` with new dependencies, NDK, and JDK versions.
- Improved obfuscation settings for better security and minimized APK size.
- Ensured all dependencies are compatible with the latest tooling for smoother development workflow.
- Implemented stubs for `SR_WScaleFactorXY` and `SR_WScaleFactorZ` to handle scaling factors for X, Y, and Z dimensions in the shader recompiler.
- Placeholder logic for scaling factor fetching, allowing future extension for proper uniform or buffer access.
- Ensures compatibility with the GLSL backend by providing stubbed implementations for scaling factors.
- Implemented necessary fixes for handling `std::optional`, ensuring proper assignment and value checks.
- Corrected all assignments and comparisons with pointers and `nullptr` to avoid potential runtime issues.
- Improved code reliability by addressing cases where optional values were improperly accessed or compared with null pointers.
- Replaced the old logo colors with vibrant cyan (#00FFFF) and bright purple (#BF40BF)
- Adjusted all relevant branding assets to reflect the new color scheme
- Updated documentation and references to the logo
- Merged two versions of EmitInvocationInfo into a single function handling multiple stages.
- Replaced repeated shift values with a constant `SHIFT_AMOUNT` for improved readability and maintainability.
- Ensured consistent use of comments and improved code organization.
- Replaced hardcoded shift value of 16 with a named constant `SHIFT_AMOUNT` for better readability and maintainability.
- Standardized the formatting and operation of all stages for consistency.
- Added comments to clarify the purpose of each case.
- Improved logging in the default case to include the shader stage for better debugging.
- Fixed path formatting issues for Windows batch script by using backslashes (`\`) in `rmdir` commands.
- Added `--force` option to `git submodule add` commands to handle existing local directories.
- Addressed warnings related to line-ending conversion (LF to CRLF).
- Improved error handling during submodule cleanup, removal, and reinitialization.
Added a batch script that automates the following tasks:
- Removes old Git remote and adds a new one.
- Pushes all branches with force.
- Provides an option to push tags with user confirmation.
Added the following missing submodules:
- Vulkan-Headers
- opus
- tzdb_to_nx
- VulkanMemoryAllocator
- oaknut
- Vulkan-Utility-Libraries
This ensures that all dependencies are properly tracked and initialized for project build.
- Updated branch references from 'master' to 'main' in CMakeList.txt and DownloadExternals.cmake.
- Ensured consistency with the new branch naming convention.
- Replaced all occurrences of 'YUZU' with 'UZUY' in file and directory names across the project.
- Updated to ensure consistency with the new project naming convention.
- Replaced all occurrences of 'yuzu' with 'uzuy' in file and directory names across the project.
- Updated the naming to ensure consistency with the new project identity."
- Recursively replaced 'Yuzu' with 'Uzuy' in all file and directory names under the specified path.
- Ensured consistency across the project by updating naming conventions."
- Recursively replaced 'yuzu' with 'uzuy' in all file and directory names under the specified path.
- Ensured consistency across the project by updating naming conventions.
- Updated 16 submodules to valid commits as some previous references were no longer available.
- Ensured all submodules are correctly synchronized with their respective repositories.