summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2025-05-11ui: Remove save states menu and unused help linksZephyron
Removes the save states menu and unused help menu items as they require additional research and implementation work. Specifically: - Remove save states menu and associated actions (Save/Load) as proper implementation requires more research - Remove unused help menu items: * Open Mods Page * Open Quickstart Guide * Open FAQ - Keep core help functionality (Report Compatibility and About) - Reorder menu properties for better organization This change helps maintain a cleaner UI by removing placeholder features that are not yet ready for implementation.
2025-05-11service: mm: Refactor Memory Management service implementationZephyron
Refactors the MM (Memory Management) service implementation with improved: - Session management using a vector of Session objects instead of global vars - Type safety with proper enums and member encapsulation - Error handling with consistent patterns - Modern C++ features (std::erase_if, std::find_if, emplace_back) - Logging with detailed debug messages - Code organization and const correctness Key changes: - Add Session class with proper encapsulation - Add EventClearMode enum (Manual = 0, Auto = 1) - Update Module enum naming for consistency - Implement proper session tracking and lookup - Add detailed parameter logging - Use modern C++ algorithms for session management The implementation now properly handles multiple sessions and matches the documented nn::mmnv::IRequest interface more closely. Refs: switchbrew.org/wiki/Display_services#mm:u service/mm: add missing vector include and update copyright - Add missing <vector> include for std::vector usage - Add Citron copyright notice - Maintain existing include ordering This is a minor cleanup change to ensure proper header inclusion and copyright attribution.
2025-05-11service: mm: Implement proper parameter handling for MM serviceZephyron
Add proper type definitions and parameter handling for the Memory Management (mm:u) service based on the Switch documentation: - Add Module enum for hardware components (CPU, GPU, EMC, etc) - Add Priority and Setting type definitions as u32 - Add EventClearMode enum for initialization - Implement proper parameter handling for all IPC calls - Add detailed logging with parameter values The Module enum now properly reflects the documented hardware components: CPU, GPU, EMC, System Bus, Memory Select, and NVIDIA modules (NVDEC, NVENC, NVJPG). This makes the implementation match the documented nn::mmnv::IRequest interface. Refs: switchbrew.org/wiki/Display_services#mm:u
2025-05-11feat: implement modern dark theme and loading screen redesignZephyron
- Redesign loading screen progress bar with gradient animation - Update loading screen typography using Segoe UI - Add comprehensive dark theme styling to main window - Modernize menu, toolbar, and dock widget appearances
2025-05-11service/nvdrv: Relax GPU validation and improve error handlingZephyron
Relaxes validation checks in the NVDRV GPU service and improves error notifier handling to prevent potential hangs. Key changes: - Remove strict size validation in SetErrorNotifier - Relax GPFIFO entry count validation to only check for non-zero values - Add proper error notifier state tracking in GPU class - Improve debug logging messages The previous strict validation was causing issues with some games like ACNH. These changes maintain necessary checks while being more permissive with edge cases that don't impact functionality. Technical changes: - Store error notifier state in GPU class for future implementation - Remove upper bound check on GPFIFO entries - Simplify error notifier setup flow This should resolve hanging issues while maintaining core functionality.
2025-05-11service/nvdrv: Implement stubbed GPU functionsZephyron
Implements several previously stubbed functions in the NVDRV service: - Initialize proper transfer memory handling - Add error notifier configuration - Implement channel timeout and timeslice management - Add object context allocation and tracking - Add GPU interface stubs for new functionality The changes improve the accuracy of GPU-related operations while maintaining compatibility with the existing codebase. All functions now properly validate parameters and handle endianness correctly using _le types.
2025-05-11ui: Add Save States menu stubsZephyron
Adds UI elements for future save state support: - New "Save States" menu in the main menubar - Save and Load action items with keyboard shortcuts - No functionality implemented yet, just UI stubs
2025-05-11shader: Implement EmitInvocationInfo across all backendsZephyron
- Add proper invocation info handling for tessellation and fragment stages - Return patch vertices info shifted by 16 bits for tessellation stages - Return sample mask shifted by 16 bits for fragment stage - Return standard format (0x00ff0000) for compute and other stages - Implement consistently across SPIRV, GLSL, and GLASM backends - Remove stubbed warning message
2025-05-11service-am: Handle panic conditions in SetTerminateResultZephyron
- Prevents propagation of panic conditions when setting termination results - Previously, panic error codes could trigger cascading crashes - Only stores non-error termination results while allowing successful completion - Fixes crash when applications set panic-related termination codes (0x1A80A)
2025-05-11service: vi: Remove stubbed warning from GetManagerDisplayServiceZephyron
- The GetManagerDisplayService function in IApplicationDisplayService is fully implemented, so remove the stubbed warning and change the log level to DEBUG to match its implementation status.
2025-05-11arm/video: Fix shader extension and exception handlingZephyron
Two main changes in this commit: 1. Replace NVIDIA-specific GL_NV_gpu_shader5 extension with the more widely supported GL_EXT_shader_explicit_arithmetic_types_float16 in the scaleforce shader. This improves compatibility across different GPU vendors. 2. Refactor ARM32 exception handling: - Restructure exception cases for better readability - Update exception handling to match current Dynarmic API - Fix indentation in switch statement - Remove AccessViolation case as it's no longer supported in current API These changes improve shader compatibility and align the exception handling with the current Dynarmic implementation.
2025-05-11memory: Improve null pointer and unmapped memory handlingZephyron
- Update vcpkg baseline to a42af01b72c28a8e1d7b48107b33e4f286a55ef6 - Add SPIRV-Tools and SPIRV-Headers as submodules - Update Vulkan-related submodules to latest stable versions - Improve memory access error handling: - Add specific handling for null pointer accesses in ARM32 emulation - Return 0 for null pointer reads instead of undefined behavior - Silently ignore writes to null pointers - Add more detailed error messages distinguishing between null pointer access and other unmapped memory errors - Treat addresses below 0x1000 as potential null pointer accesses These changes should provide more graceful handling of null pointer accesses and improve stability when running games that attempt invalid memory operations.
2025-05-11Add QT Network packagevampiric_x
2025-05-11feat(network): Ip input field for multiplayer room creationvampiric_x
2025-05-11android: Fix battery temperature reading in EmulationFragmentZephyron
Replaces the battery temperature reading implementation with a more compatible approach using ACTION_BATTERY_CHANGED broadcast intent. This change provides better backwards compatibility and adds proper error handling for the temperature reading functionality.
2025-05-11shader_recompiler: Add stubs for CSM/FCSM flow test conditionsZephyron
Add stub implementations for previously unhandled flow test conditions in the shader recompiler's IR emitter. These conditions were previously throwing "Not Implemented" exceptions when encountered. The following flow test cases are now stubbed: - FCSM_TR (Fragment Shader Coarse/Fine Mode Test and Reject) - CSM_TA (Coarse/Fine Mode Test Accept) - CSM_TR (Coarse/Fine Mode Test and Reject) - CSM_MX (Coarse/Fine Mode Maximum) - FCSM_TA (Fragment Shader Coarse/Fine Mode Test Accept) - FCSM_MX (Fragment Shader Coarse/Fine Mode Maximum) Currently these stubs: 1. Return false (ir.Imm1(false)) as a placeholder value 2. Log a warning message indicating the stub 3. Allow shaders using these conditions to compile rather than fail This is a step toward proper implementation of coarse/fine mode shader operations. The stubs prevent crashes while making it clear which code paths need full implementation. Technical notes: - Removed the previous FCSM_TR implementation that used flag operations - Added consistent warning messages for tracking stub usage - Kept within the existing GetFlowTest switch statement structure
2025-05-11android: Add USE_AUTO_STUB settingZephyron
Implements the USE_AUTO_STUB setting in the Android frontend: - Added USE_AUTO_STUB to BooleanSetting enum - Added UI switch setting with description in SettingsItem - Added setting to system settings section in SettingsFragmentPresenter - Added string resources for setting title and description The setting allows users to toggle automatic stubbing of missing services and functions, which may improve compatibility at the cost of stability.
2025-05-11fix(sm_controller): Correct QueryPointerBufferSize implementationZephyron
- Updated the QueryPointerBufferSize function to return the correct u16 pointer buffer size. - Ensured the function logs its call at the debug level. - Used IPC::ResponseBuilder to construct the response with the correct buffer size. This change addresses the stubbed implementation and ensures compliance with the HIPC protocol.
2025-05-11fix: Implement SetGestureOutputRanges to handle unimplemented function errorZephyron
- Added the SetGestureOutputRanges function to the IHidServer class to address the unimplemented function '92' error. - This fix was discovered through log analysis, which showed a critical assertion failure in the HID service for an unknown function '92'. - The log indicated a userspace panic and backtrace, pointing to the need for implementing this function to prevent execution breaks. - Updated CMakeLists.txt to remove specific version requirements for several packages, enhancing flexibility. - Updated subproject commit references for VulkanMemoryAllocator and vcpkg. - REF: https://switchbrew.org/wiki/HID_services#ActivateGesture
2025-05-11feat: Improve thermal display and build systemZephyron
- Replace emoji thermal indicators with modern progress bar UI - Switch temperature source to battery sensor for better accuracy - Adjust temperature thresholds (30°C-45°C range) - Add automatic Vulkan Validation Layer download for Android The thermal display now shows a visual progress bar with percentage instead of emojis, making it easier to gauge system temperature at a glance. Temperature reading now comes from the battery sensor which is more reliable across devices. Build system improvements include automated VVL binary downloads and installation for Android builds when CITRON_DOWNLOAD_ANDROID_VVL is enabled.
2025-05-11ui(QT): QT 6.7.3 Implementationvampiric_x
2025-05-11vulkan: Fix crashes with bindless texture constant buffer handlingZephyron
Previously, the code would unconditionally add a constant buffer descriptor at index 0 whenever storage buffers were present, which could cause conflicts and crashes. This change: - Adds validation to check if constant buffer 0 already exists - Only adds the descriptor if it's not already present - Prevents potential descriptor conflicts in shaders This should resolve crashes in Vulkan games related to invalid descriptor layouts and resource binding conflicts.
2025-05-11vulkan: Add bindless texture constant buffer support in compute pipelineZephyron
Add support for bindless texture constant buffers in the compute pipeline creation process. When storage buffer descriptors are present, create a constant buffer descriptor to handle bindless textures. This fixes the "Failed to track bindless texture constant buffer" error. Changes: - Add constant buffer descriptor with index 0 and count 1 when storage buffers are present - Place descriptor creation before SPIR-V code generation to ensure proper shader compilation This resolves issues with bindless texture access in compute shaders.
2025-05-11kernel: Implement SystemResourceSize info type for VAMM initializationZephyron
Adds support for InfoType::SystemResourceSize (0x1C) which is required for proper initialization of the Virtual Address Memory Manager (VAMM). This implementation: 1. Adds SystemResourceSize to the InfoType enum in svc_types.h 2. Implements the GetInfo handler for SystemResourceSize in svc_info.cpp 3. Returns 512MB (0x20000000 bytes) as the system resource size 4. Adds debug logging for the SVC call The 512MB value is chosen based on typical system resource allocations needed for VAMM initialization on the Nintendo Switch. This fixes crashes in games that rely on VAMM functionality, particularly during nn::os::detail::VammManager::InitializeIfEnabled().
2025-05-11core: Improve device memory and buffer queue handlingZephyron
This commit makes several improvements to device memory management and buffer queue handling: DeviceMemoryManager: - Add null pointer and size checks for ReadBlock - Fill unmapped memory with a known pattern (0xCC) instead of zeros - Add better error logging for invalid memory accesses - Add null pointer check for source pointer in memcpy BufferQueueProducer: - Improve error handling in WaitForFreeSlotThenRelock - Add proper abandoned state checking during wait conditions - Clean up and simplify buffer scanning logic - Improve logging messages with more descriptive information - Remove redundant buffer count validation - Fix potential infinite loop condition during wait These changes improve stability and error handling while making the code more maintainable and debuggable. The use of a known pattern for unmapped memory helps identify uninitialized memory access issues.
2025-05-11service/am: Implement friend invitation storage channelZephyron
Implements TryPopFromFriendInvitationStorageChannel to properly handle friend invitation data storage and retrieval. This includes: - Add ResultNoData error code to am_results.h - Add friend_invitation_storage_channel storage queue to Applet struct - Implement proper data handling in TryPopFromFriendInvitationStorageChannel The implementation now properly manages a queue of friend invitation data and returns appropriate results based on data availability.
2025-05-11discord: Improve game image handling and UI presentationZephyron
Updates the Discord Rich Presence implementation to use Tinfoil's media server for game images and improves the overall presentation. Technical changes: - Switch to Tinfoil media server for game images - Add proper title ID handling and display - Improve error handling for image requests - Increase network timeout to 10 seconds - Cache URL to prevent string destruction - Update Discord client ID - Clean up code formatting and organization UI/UX improvements: - Remove title ID from game state display - Update default text to be more descriptive - Improve error logging for failed image fetches - Maintain image persistence between updates This change provides better game image support and a cleaner Discord presence display while improving reliability of the integration.
2025-05-11common: Use consistent cache line size in RingBufferZephyron
Replace hardcoded 128-byte alignment with a defined CACHE_LINE_SIZE constant of 64 bytes for the atomic indices in RingBuffer. This value is more appropriate for most modern CPU architectures and simplifies the implementation by using a consistent value regardless of compiler support for hardware_interference_size. Changes: - Add CACHE_LINE_SIZE constant set to 64 bytes - Use CACHE_LINE_SIZE for atomic index alignment in both code paths - Remove outdated TODO comment about hardware_destructive_interference_size
2025-05-11nvdrv: Fix incorrect IoctlZbcSetTable structure size assertionZephyron
Resolves a build failure caused by a mismatch between the defined and expected size of the `IoctlZbcSetTable` structure in `nvhost_ctrl_gpu`. The `static_assert` incorrectly expected the size to be 44 bytes, while the actual size was 48 bytes. Changes include: - Updated `static_assert` to correctly reflect the 48-byte size of `IoctlZbcSetTable`. - Verified packing and alignment to ensure compliance with hardware specifications. - Reviewed and confirmed correctness of `u32` type definitions. This fix addresses a regression introduced in commit 9be4bf9aa5, which implemented ZBCSetTable functionality, and ensures successful compilation and adherence to the ZBC table implementation's design.
2025-05-11nvdrv: Implement ZBCSetTable functionalityZephyron
Implements basic Zero Bandwidth Clear (ZBC) table support in nvhost_ctrl_gpu. This adds storage and validation for both color and depth clear values, replacing the previous stub implementation. ZBC is a hardware optimization technique used by NVIDIA GPUs to efficiently handle buffer clearing operations. Changes include: - Added ZBC table storage structures - Implemented parameter validation - Added separate handling for color and depth modes - Improved debug logging - Added documentation explaining ZBC functionality
2025-05-11core: Add support for 10GB and 12GB memory configurationsZephyron
- Add Memory_10Gb and Memory_12Gb to MemoryLayout enum - Update memory layout settings to support up to 12GB - Add SMC enums for 10GB and 12GB memory sizes and arrangements - Increase MainMemorySizeMax from 8GB to 12GB - Add memory pool size calculations for 10GB and 12GB configurations - Update UI translations for new memory options
2025-05-11Audio Core: Add support tags for compressor stats and volume resetZephyron
Added two new audio feature support tags with their corresponding revision numbers: - AudioCompressorStatistics (rev 16): For tracking compressor statistics - AudioVolumeResetSupport (rev 17): For volume reset functionality These features align with the documented Nintendo Switch audio service capabilities and maintain compatibility with the existing feature support system.
2025-05-11buffer_cache: Fix storage buffer memory validation and size detectionZephyron
Fixes the StorageBufferBinding function to properly handle memory validation and size detection. Key changes include: - Fix ReadBlock usage to properly handle void return values - Implement safer memory validation using byte-level reads - Improve size detection logic for storage buffers - Fix NVN buffer size reading - Add proper bounds checking for device memory addresses - Add better error logging for invalid conditions This addresses the "Failed to find storage buffer for cbuf index 0" errors by implementing more robust memory validation and size detection. The changes ensure proper handling of invalid memory addresses and prevent crashes from accessing out-of-bounds memory.
2025-05-11arm: Skip duplicate consecutive addresses in backtrace outputZephyron
Adds logic to track and skip duplicate consecutive addresses when logging backtraces. This improves log readability by removing redundant entries that point to the same address in sequence.
2025-05-11impl(Multiplayer): Switched API To Enable MultiplayerZephyron
2025-05-11video_core: Enforce safe memory reads for compute dispatchZephyron
- Modify DmaPusher to use safe memory reads when handling compute operations at High GPU accuracy - Prevent potential memory corruption issues that could lead to invalid dispatch parameters - Previously, unsafe reads could result in corrupted launch_description data in KeplerCompute::ProcessLaunch, causing invalid vkCmdDispatch calls - By enforcing safe reads specifically for compute operations, we maintain performance for other GPU tasks while ensuring compute dispatch stability This change requires >= High GPU accuracy level to take effect.
2025-05-11shader_recompiler: Fix ISBERD instruction implementationZephyron
- Simplify ISBERD instruction to handle register-to-register moves - Remove incorrect CompositeConstruct usage - Replace with direct register value passing - Fix compilation errors in internal stage buffer handling
2025-05-11shader_recompiler: Use FPRecip in FSWZADD implementationZephyron
Simplifies the negative reciprocal calculation in FSWZADD by using the dedicated FPRecip operation instead of manually constructing a division. This change: - Replaces FPDiv(Imm32(f32(1.0f)), src_b) with FPRecip(src_b) - Results in more efficient code for calculating 1.0/x - Fixes build errors from undefined IR emitter methods
2025-05-11shader_recompiler: Fix method names in FSWZADD implementationZephyron
Fixes incorrect method names in the floating point swizzled add implementation: - FNeg -> FPNeg - FDiv -> FPDiv - FImm32(1.0f) -> Imm32(ir.f32(1.0f)) These changes align with the correct IR emitter interface naming conventions, where floating-point operations use the 'FP' prefix and immediate values are properly constructed using f32().
2025-05-11shader_recompiler: Implement ISBERD instructionZephyron
Implements the Internal Stage Buffer Entry Read (ISBERD) instruction in the Maxwell shader recompiler. This replaces the previous stubbed implementation with actual buffer reading functionality. The implementation: - Validates unsupported features (skew, o, mode, shift) - Performs buffer read using IR::InternalStageBufferRead - Stores the read value to the destination register This removes the "(STUBBED) called" warning messages that were previously being logged during shader compilation.
2025-05-11shader_recompiler: Implement ISBERD instruction modes and shiftsZephyron
Implements the ISBERD (Internal Stage Buffer Entry Read) instruction's mode and shift options that were previously throwing NotImplemented exceptions. This includes: - Patch mode for reading patch data - Prim mode for reading primitive data - Attr mode for reading attribute data - U16 shift for 16-bit unsigned values - B32 shift for 32-bit values The implementation follows Maxwell's ISA specification for handling different buffer read modes and data shifts.
2025-05-11audio_core: Add comprehensive audio feature support tagsZephyron
Added new feature support tags to track audio functionality across firmware versions. Changes include: - Added Audio Out/In Auto buffer support tags (3.0.0+) - Added Final Output Recorder features including work buffer (3.0.0+, 9.0.0+) - Added Audio Renderer features like manual execution and voice drop - Added Audio Device features including notifications and auto volume - Added Hardware Opus decoder features including large frame support - Added System Audio features like master volume and hearing protection This provides more complete feature detection for audio functionality introduced in firmware versions 3.0.0 through 19.0.1.
2025-05-11"Merge Tagged PR 13018"yuzubot
2025-05-11Pass optimisations to CMake via build.gradle.ktsMike Lothian
This passes compiler flags from Gradle to CMake
2025-05-11Qt6 no longer requires theseMike Lothian
2025-05-11Remove old linksMike Lothian
2025-05-11Boost: Fix building against Boost 1.88.0Mike Lothian
2024-12-20Boost: Fix building against Boost 1.87.0Mike Lothian
2024-12-20Boost: Fix building against Boost 1.86.0Andrew Udvare
2024-12-20Add 12gb DRAM option (#90)Zuckerwatte1
This adds the option to allow the emulator to use 12gb of RAM for something like really big texture packs. Co-authored-by: smiRaphi <neogt404@gmail.com> Reviewed-on: http://vub63vv26q6v27xzv2dtcd25xumubshogm67yrpaz2rculqxs7jlfqad.onion/torzu-emu/torzu/pulls/90 Co-authored-by: Zuckerwatte1 <zuckerwatte1@noreply.localhost> Co-committed-by: Zuckerwatte1 <zuckerwatte1@noreply.localhost>