Commit Graph

27802 Commits

Author SHA1 Message Date
Zephyron
5fbfc6693b audio_core: Fix reverb effect causing extreme noise on Windows
Fixed multiple bugs in reverb processing:
- Early gains for stereo channels not being assigned (missing *=)
- Incorrect TapOut pointer arithmetic (extra +1 offset)
- Uninitialized input pointer causing crashes
- Missing state initialization check
- SetDelay not called during parameter updates

Co-authored-by: MaranBr <maranbr@outlook.com>
Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-12-17 16:41:59 +10:00
Zephyron
b1192de0c4 vulkan: Add memory pressure handling and pipeline eviction
Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-12-16 19:56:27 +10:00
Collecting
180606a166 fix(UI): Resolve Weird Horizontal UI Issue
The QScrollArea containing the top navigation buttons was slightly too tall for horizontal UI positioning, causing an unwanted vertical scrollbar to appear. This has been fixed by calculating the exact required height for the buttons and enforcing it on the scroll area, while also setting the vertical scrollbar policy to ScrollBarAlwaysOff.

Signed-off-by: Collecting <collecting@noreply.localhost>
2025-12-16 07:12:19 +00:00
Zephyron
5eed2b221b fix(nvdrv): prevent infinite loop and improve error handling when SMMU address space is exhausted
Fix crash in PinHandle when SMMU allocation fails and unmap queue is empty.
Previously, the code would log an error and continue looping indefinitely,
causing log spam and eventual crash.

- Free multiple handles from unmap queue (up to 100) before giving up
- Add maximum attempt counter to prevent infinite loops
- Return 0 gracefully when no more handles can be freed
- Add error handling in callers (Remap, MapBufferEx, MapBuffer) to check for
  PinHandle failure and return NvResult::InsufficientMemory instead of using
  invalid addresses

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-12-16 16:44:13 +10:00
Zephyron
dadf9d270c fix(nvdrv): prevent infinite loop when SMMU address space is exhausted
Fix crash in PinHandle when SMMU allocation fails and unmap queue is empty.
Previously, the code would log an error and continue looping indefinitely,
causing log spam and eventual crash. Now it returns 0 to fail gracefully.

Also fix incorrect handle check on line 219 - should check freeHandleDesc
instead of handle_description.

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-12-16 16:24:15 +10:00
Zephyron
05c04aa0f2 Merge pull request 'feat(UI): Add toggle for Online column visibility in Game List' (#70) from feat(ui)/toggle-online-column into main
Reviewed-on: https://git.citron-emu.org/Citron/Emulator/pulls/70
2025-12-16 06:07:01 +00:00
Collecting
af1da600c7 feat(ui): Toggle Online Column
Signed-off-by: Collecting <collecting@noreply.localhost>
2025-12-16 05:45:02 +00:00
Collecting
8ea0d6487a feat(ui): Toggle Online Column
Signed-off-by: Collecting <collecting@noreply.localhost>
2025-12-16 05:44:34 +00:00
Collecting
376591344f feat(ui): Toggle Online Column
Signed-off-by: Collecting <collecting@noreply.localhost>
2025-12-16 05:43:56 +00:00
Collecting
27b214bf90 feat(ui): Toggle Online Column
Signed-off-by: Collecting <collecting@noreply.localhost>
2025-12-16 05:43:22 +00:00
Zephyron
d7a3c585ae fix(dma): allow pipelined transfers to prevent assertion failures
Remove strict assertion on data_transfer_type and allow PIPELINED
transfers (treating them as NON_PIPELINED). Some games like Marvel
Cosmic Invasion use pipelined transfers, causing crashes.

Fixes assertion at maxwell_dma.cpp:76

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-12-13 12:16:07 +10:00
Zephyron
feddd58680 fix(updater): handle read-only files and improve Windows update reliability
The automatic Windows updater was failing to install updates after downloading
and unpacking. The batch script had several issues:

- Read-only file attributes were not being removed before copying, causing
  xcopy to fail silently
- xcopy was unreliable and didn't provide good error codes
- No retry logic for transient file lock issues
- Insufficient wait time after process closure

Changes:
- Replace xcopy with robocopy for more reliable file copying
- Remove read-only attributes from all destination files before copying
- Add retry logic (up to 3 attempts) for copy operations
- Improve process wait logic with timeout and additional delay
- Add verification that critical files were copied successfully
- Enhance error messages to help diagnose issues
- Add retry logic for cleanup operations

This fixes the issue where updates would download and unpack but fail to
install.

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-12-13 11:43:07 +10:00
Zephyron
3bcdad1948 WIP: fix(video_core): shadow map square artifacts for Metroid Prime 4
- Force shadow maps to use CLAMP_TO_BORDER with white border color
- Convert CLAMP_TO_EDGE to CLAMP_TO_BORDER for shadow maps
- Improve GL_CLAMP handling for shadow maps on AMD

Issue may persist - likely needs investigation of shadow map rendering
or shader coordinate generation.

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-12-13 11:37:53 +10:00
Zephyron
10daa1e625 fix(texture_cache): handle GPU-modified ignored textures
Fix UNIMPLEMENTED assertion when handling GPU-modified ignored textures
in texture cache. When ignored textures (remapped or same address/size)
have GpuModified flag set, now properly copies data to new image if
formats match, or marks new image as modified otherwise.

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-12-13 10:43:22 +10:00
Zephyron
7db12d7e80 video_core: MCI boot fixes and DMA multisized components support
Add workarounds for Marvel Cosmic Invasion boot issues:
- Skip first 2 compute dispatches (xbzk@eden-emu.dev)
- Clamp staging buffers to 2GB to prevent Vulkan failures (xbzk@eden-emu.dev)
- Validate staging buffer sizes before uploads (xbzk@eden-emu.dev)

Also improve DMA engine to support multisized components (1-4 bytes)
instead of hardcoded 4-byte components.

Co-authored-by: xbzk <xbzk@eden-emu.dev>
Signed-off-by: Zephyron <zephyron@citron-emu.org>
2025-12-13 09:49:04 +10:00
Zephyron
b770abeea2 Merge pull request 'fix(macos): macOS build fixes and MoltenVK improvements' (#69) from sylveondeko-patch into main
Reviewed-on: https://git.citron-emu.org/Citron/Emulator/pulls/69
2025-12-12 22:49:55 +00:00
sylveondeko
3b35c2eeb9 fix(macos): macOS build fixes and MoltenVK improvements
- Switch to Ryujinx MoltenVK build compiled with older Metal SDK to avoid
  MSL 3.2 thread_scope_subgroup bugs that cause text rendering issues
- Exclude Apple from GNU ld.bfd linker option (macOS uses different linker)
- Handle VK_ERROR_FRAGMENTED_POOL in Vulkan descriptor pool allocation
2025-12-12 10:57:23 -05:00
Collecting
6afb4e5370 Merge pull request 'feat: Backup Paths & Disable Option for Linux' (#68) from feat/custom-path-appimage-backup into main
Reviewed-on: https://git.citron-emu.org/Citron/Emulator/pulls/68
2025-12-11 07:39:18 +00:00
Collecting
8d7054114d feat: Backup Paths & Disable Option for Linux
Signed-off-by: Collecting <collecting@noreply.localhost>
2025-12-11 07:34:01 +00:00
Collecting
c9cb8a64e7 feat: Backup Paths & Disable Option for Linux
Signed-off-by: Collecting <collecting@noreply.localhost>
2025-12-11 07:33:37 +00:00
Collecting
b8fb643417 feat: Backup Paths & Disable Option for Linux
Signed-off-by: Collecting <collecting@noreply.localhost>
2025-12-11 07:32:56 +00:00
Collecting
3658ae38eb feat: Backup Paths & Disable Option for Linux
I messed this file up hardcore too, sorry about that. Made sure to clean it up to look nice again.

Signed-off-by: Collecting <collecting@noreply.localhost>
2025-12-11 07:31:54 +00:00
Collecting
5b548048f1 feat: Backup Paths & Disable Option for Linux
Signed-off-by: Collecting <collecting@noreply.localhost>
2025-12-11 07:30:56 +00:00
Collecting
565c5b5f62 feat: Backup Paths & Disable Option for Linux
Signed-off-by: Collecting <collecting@noreply.localhost>
2025-12-11 07:30:12 +00:00
Collecting
cb918bdbc8 feat: Add Backup Location Path Notification for Linux Updates
Implements a new feature for the Updater for Linux users, that notifies them of the directory of where their backup folder has been made & stores their last version of the emulator. This folder is not stagnant, for now, it makes a backup folder wherever the AppImage is, so it'll create a new one if the AppImage is moved to a separate location. Can be looked into in the future to make it so users can select a location. For now, this works.

Signed-off-by: Collecting <collecting@noreply.localhost>
2025-12-11 05:25:57 +00:00
Collecting
6f32e5106a feat: Information of Update Channel
A lot of users have been confused when being notified of releases. Some users have their defaulted Update Channel to Stable. This is meant to showcase and inform that there's an option for releases.

Signed-off-by: Collecting <collecting@noreply.localhost>
2025-12-11 05:06:36 +00:00
Collecting
c94f9a0fec fix: Backup AppImages for Linux
Updater would still read from the AppImage path when making a backup directory, had to fix up & rewrite some of  the logic to ensure that a backup is parsed & a folder is cracked within the original_appimage_path with std::filesystem so that it properly functions.

Signed-off-by: Collecting <collecting@noreply.localhost>
2025-12-11 05:05:15 +00:00
Collecting
cc96039134 fix: Remove Duplicate Games Appearing When Creating Room
Evilperson1337 from Discord showcased a bug to where if you had a game stored within multiple folders in the game list, when you'd create a room the game would appear twice.

The fix was to add an std::set which will keep track of games Title ID's. The way it functions is simple, "Did I see this Title ID before? Yes or no?" and, as mentioned, will ensure there are no duplicate games being shown, ensuring one version of the game is present for selection.

Signed-off-by: Collecting <collecting@noreply.localhost>
2025-12-11 04:21:19 +00:00
Collecting
5644a406cd refactor: Change Discord Links for redirect to Help Tab
Too lazy to change links to include warning message boxes as made for the Help section. Changed all strings relating to just forward directly to it regardless so users still are prompted both warnings of reading the rules before joining the Discord.

Signed-off-by: Collecting <collecting@noreply.localhost>
2025-12-11 03:35:32 +00:00
Collecting
dd215ef836 feat: Warning Dialogs for Discord Support Help
People started coming into the server stating that it was meant for stuff that we do not help people with. People don't enjoy reading rules, now there's 2 QDialog warnings to ensure people are forced to read.

Signed-off-by: Collecting <collecting@noreply.localhost>
2025-12-11 03:16:46 +00:00
Collecting
f74fda2d56 Merge pull request 'refactor: Exit Fullscreen & Mouse Panning Hotkeys to GRenderWindow' (#67) from refactor/hotkeys into main
Reviewed-on: https://git.citron-emu.org/Citron/Emulator/pulls/67
2025-12-10 11:37:47 +00:00
Collecting
69aa33f824 refactor: Exit Fullscreen & Mouse Panning Hotkeys to GRenderWindow
Signed-off-by: Collecting <collecting@noreply.localhost>
2025-12-10 11:36:15 +00:00
Collecting
4b00e25d8c refactor: Exit Fullscreen & Mouse Panning Hotkeys to GRenderWindow
Signed-off-by: Collecting <collecting@noreply.localhost>
2025-12-10 11:35:16 +00:00
Collecting
af1a934414 refactor: Exit Fullscreen & Mouse Panning Hotkeys to GRenderWindow
Signed-off-by: Collecting <collecting@noreply.localhost>
2025-12-10 11:34:26 +00:00
Collecting
b5528f74fa refactor: Exit Fullscreen & Mouse Panning Hotkeys to GRenderWindow
Signed-off-by: Collecting <collecting@noreply.localhost>
2025-12-10 11:29:14 +00:00
Collecting
c1f41ee2c1 refactor: Exit Fullscreen & Mouse Panning Hotkeys to GRenderWindow
Signed-off-by: Collecting <collecting@noreply.localhost>
2025-12-10 11:27:37 +00:00
Collecting
bab42bccd2 fix: Hide Cursor during Mouse Panning
When incorporating mouse hiding into the GRenderWindow I ended up not providing any logic for the mouse to appropiately hide during panning. This should solve the issue.

Signed-off-by: Collecting <collecting@noreply.localhost>
2025-12-10 08:59:18 +00:00
Collecting
f1c935fc23 Merge pull request 'feat: New Autoloader & Rebrand Current to "Update Manager"' (#66) from feat/autoloader-update-manager into main
Reviewed-on: https://git.citron-emu.org/Citron/Emulator/pulls/66
2025-12-10 01:32:35 +00:00
Collecting
3745341ae9 feat: New Autoloader & Rebrand Current to "Update Manager"
Signed-off-by: Collecting <collecting@noreply.localhost>
2025-12-10 01:29:15 +00:00
Collecting
775b26775e feat: New Autoloader & Rebrand Current to "Update Manager"
Signed-off-by: Collecting <collecting@noreply.localhost>
2025-12-10 01:28:49 +00:00
Collecting
be962262bc feat: New Autoloader & Rebrand Current to "Update Manager"
Signed-off-by: Collecting <collecting@noreply.localhost>
2025-12-10 01:28:12 +00:00
Collecting
dd6ab6d0ee feat: New Autoloader & Rebrand Current to "Update Manager"
Signed-off-by: Collecting <collecting@noreply.localhost>
2025-12-10 01:27:44 +00:00
Collecting
acfd055769 feat: New Autoloader & Rebrand Current to "Update Manager"
Signed-off-by: Collecting <collecting@noreply.localhost>
2025-12-10 01:27:08 +00:00
Collecting
80f492481d feat: New Autoloader & Rebrand Current to "Update Manager"
Signed-off-by: Collecting <collecting@noreply.localhost>
2025-12-10 01:25:10 +00:00
Collecting
ca8703ae52 feat: New Autoloader & Rebrand Current to "Update Manager"
Signed-off-by: Collecting <collecting@noreply.localhost>
2025-12-10 01:24:20 +00:00
Collecting
157b22340d feat: New Autoloader & Rebrand Current to "Update Manager"
Signed-off-by: Collecting <collecting@noreply.localhost>
2025-12-10 01:23:40 +00:00
Collecting
0fce0e6c6d feat: New Autoloader & Rebrand Current to "Update Manager"
Signed-off-by: Collecting <collecting@noreply.localhost>
2025-12-10 01:23:01 +00:00
Collecting
51a2bd004d feat: New Autoloader & "Update Manager" Rebrand & Remove Unused Variable
Signed-off-by: Collecting <collecting@noreply.localhost>
2025-12-10 01:22:19 +00:00
Collecting
d57646eb33 feat: New Autoloader & Rebrand Current to "Update Manager"
Signed-off-by: Collecting <collecting@noreply.localhost>
2025-12-10 01:17:17 +00:00
Zephyron
7c3e85152c Merge pull request 'revert d5efa255ee8a5602f60fc96512b9ad3bc1c22796' (#65) from zephyron-patch-1 into main
Reviewed-on: https://git.citron-emu.org/Citron/Emulator/pulls/65
2025-12-08 20:14:08 +00:00