Commit Graph

28075 Commits

Author SHA1 Message Date
Collecting
be9fbddd5d Merge branch 'main' into fix/compiler 2026-01-25 14:37:22 +01:00
Collecting
dcf6e4058f fix(android): Required multiple static_cast fixes
Signed-off-by: Collecting <collecting@noreply.localhost>
2026-01-25 14:36:41 +01:00
Collecting
7c14003ebd fix(android): Double for static_cast
Signed-off-by: Collecting <collecting@noreply.localhost>
2026-01-25 14:35:44 +01:00
Collecting
2b18a97e12 Merge pull request 'Fix: Resolve linker errors and improve type safety in cache GC' (#112) from fix/compiler into main
Reviewed-on: https://git.citron-emu.org/Citron/Emulator/pulls/112
2026-01-25 13:44:42 +01:00
Collecting
6253352e1e fix(compiler): generate the vtable within settings.cpp
Signed-off-by: Collecting <collecting@noreply.localhost>
2026-01-25 13:42:55 +01:00
Collecting
f428c20bf6 fix(compiler): static_cast w/ unsigned long long to remove ambiguity
Signed-off-by: Collecting <collecting@noreply.localhost>
2026-01-25 13:42:19 +01:00
Collecting
47656f1fdf fix(compiler): static_cast w/ unsigned long long to remove ambiguity
Signed-off-by: Collecting <collecting@noreply.localhost>
2026-01-25 13:41:26 +01:00
Zephyron
79afcfad28 Merge pull request 'fix/vram-leak-prevention' (#111) from fix/vram-leak-prevention into main
Reviewed-on: https://git.citron-emu.org/Citron/Emulator/pulls/111
2026-01-25 06:44:29 +01:00
Zephyron
8eaa38540c refactor(settings): simplify VRAM usage mode to Conservative/Aggressive
The removed modes added complexity without significant benefit now that
the new VRAM management system (gc_aggressiveness, vram_limit_mb)
provides finer-grained control over memory pressure.

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2026-01-25 15:29:25 +10:00
Zephyron
3e2137a470 feat(video_core): implement comprehensive VRAM management system
Add automatic VRAM leak prevention with configurable garbage collection
to prevent device loss crashes during extended play sessions.

New Settings:
- vram_limit_mb: Configurable VRAM limit (0 = auto-detect 80%)
- gc_aggressiveness: Off/Light/Moderate/Heavy/Extreme levels
- texture_eviction_frames: Frames before texture eviction (default 2)
- buffer_eviction_frames: Frames before buffer eviction (default 5)
- sparse_texture_priority_eviction: Prioritize large sparse textures
- log_vram_usage: Enable VRAM statistics logging

Core Changes:
- Enhanced texture cache with LRU eviction and sparse texture priority
- Enhanced buffer cache with configurable eviction thresholds
- Added VRAM pressure monitoring using VK_EXT_memory_budget
- Emergency GC triggers at 90%/95% VRAM usage thresholds

Platform Support:
- Desktop: Settings in Graphics > Advanced tab
- Android: Settings in Zep Zone category

Fixes VRAM climbing steadily during gameplay until device loss.
Target: Stable VRAM usage below configured limit for 2+ hours.

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2026-01-25 15:21:02 +10:00
Zephyron
44f9cb6347 fix(ssl): implement SetVerifyOption instead of stubbing it
Games can now properly disable SSL certificate verification by setting
option=0, which was previously ignored causing handshake failures.

Thanks to Raytwo and DogeThis (https://github.com/Raytwo/Cobalt) for
helping debug this issue.

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2026-01-24 14:46:34 +10:00
Collecting
31a2a6212d Merge pull request 'feat(fix): Re-structure Pathing Logic for necessary additional configuration for multiple different varieties' (#110) from fix/restructure-save-pathing-logic into main
Reviewed-on: https://git.citron-emu.org/Citron/Emulator/pulls/110
2026-01-24 03:01:36 +01:00
Collecting
a3a8e6f916 feat(add): Logic to determine base location when using Global or Default Paths
Signed-off-by: Collecting <collecting@noreply.localhost>
2026-01-24 03:00:58 +01:00
Collecting
7dee5834bf feat(add): More options including Dynamic understanding of Global & Default NAND Locations
Signed-off-by: Collecting <collecting@noreply.localhost>
2026-01-24 02:59:14 +01:00
Collecting
c0914868f6 feat(add): Boolean for Initial Sync to ensure re-arm for proper syncing
Signed-off-by: Collecting <collecting@noreply.localhost>
2026-01-24 02:58:20 +01:00
Collecting
d7814f6f76 feat(add): Initial Sync to fix overwriting of NAND when Configuring Settings outside of emulation
Signed-off-by: Collecting <collecting@noreply.localhost>
2026-01-24 02:57:14 +01:00
Collecting
05a839423b Merge pull request 'feat(fs): Correct save path hierarchy to prioritize mirroring and per-game paths' (#109) from fix/path-ordering-for-saves into main
Reviewed-on: https://git.citron-emu.org/Citron/Emulator/pulls/109
2026-01-23 23:27:48 +01:00
Collecting
3bf1497300 fix(ui): Ensure Paths are properly displayed when checking paths
Signed-off-by: Collecting <collecting@noreply.localhost>
2026-01-23 23:26:36 +01:00
Collecting
a819b230d0 fix(filesystem): Re-organize Path Ordering
Signed-off-by: Collecting <collecting@noreply.localhost>
2026-01-23 23:25:39 +01:00
Collecting
0102d6c8d9 Merge pull request 'feat(chat): Implement robust link filtering and sanitization' (#108) from fix/link-removal-chatroom into main
Reviewed-on: https://git.citron-emu.org/Citron/Emulator/pulls/108
2026-01-23 18:59:54 +01:00
Collecting
c22350feab feat(multiplayer): Add Filtering for URL Logic
Signed-off-by: Collecting <collecting@noreply.localhost>
2026-01-23 18:58:21 +01:00
Collecting
701d552b0e feat(multiplayer): Add SanitizeMessage String for URL Links
Signed-off-by: Collecting <collecting@noreply.localhost>
2026-01-23 18:57:34 +01:00
Collecting
5083308f8e Merge pull request 'service: network: Fix lobby SDK crashes and performance drops in multiplayer' (#107) from fix/mitigate-sdk-crash into main
Reviewed-on: https://git.citron-emu.org/Citron/Emulator/pulls/107
2026-01-22 05:37:18 +01:00
Collecting
44e8e2a630 fix(multiplayer): Ensure Node = 1 and not 0
Signed-off-by: Collecting <collecting@noreply.localhost>
2026-01-22 05:32:45 +01:00
Collecting
2b810e766a fix(multiplayer): Add mutable to packet_mutex
Signed-off-by: Collecting <collecting@noreply.localhost>
2026-01-22 05:32:14 +01:00
Collecting
cc85173fa9 fix(multiplayer): Add sleep_for & remove yield for Stabilization
Signed-off-by: Collecting <collecting@noreply.localhost>
2026-01-22 05:31:36 +01:00
Collecting
550b08335e fix(multiplayer): Remove Socket Re-utilization
Signed-off-by: Collecting <collecting@noreply.localhost>
2026-01-22 05:30:49 +01:00
Collecting
6a7fd947d5 Remove Redundant NavigateToGamedbEntry
Since new compatibility list is off-shored to separate repo, might as well get rid of this. Could of re-purposed for reading the listings but we'll think about it.

Signed-off-by: Collecting <collecting@noreply.localhost>
2026-01-21 10:47:54 +01:00
Collecting
e822aa41b2 Merge pull request 'feat(compatibility): Add automated compatibility reporting and remote list syncing' (#106) from feat/compat-list-overhaul into main
Reviewed-on: https://git.citron-emu.org/Citron/Emulator/pulls/106
2026-01-21 08:45:48 +01:00
Collecting
02e7a689bd feat(compatibility): Overhaul Compatibility Logic for GitHub Parsing
Signed-off-by: Collecting <collecting@noreply.localhost>
2026-01-21 08:41:13 +01:00
Collecting
1f1fa1e215 feat(compatibility): Fix QString w/ game_name to display properly w/ issues
Signed-off-by: Collecting <collecting@noreply.localhost>
2026-01-21 08:39:52 +01:00
Collecting
04552f33b9 Merge pull request 'feat(android): Permission for Read/Write/Managing External Storage Directories w/ Scoped' (#105) from test-android into main
Reviewed-on: https://git.citron-emu.org/Citron/Emulator/pulls/105
2026-01-21 04:47:28 +01:00
Collecting
c6ca62e706 Update src/android/app/src/main/AndroidManifest.xml
Signed-off-by: Collecting <collecting@noreply.localhost>
2026-01-20 10:31:07 +01:00
Zephyron
4e0078d6d4 cmake: Switch external binaries to yuzu-mirror
Signed-off-by: Zephyron <zephyron@citron-emu.org>
2026-01-20 16:46:09 +10:00
Zephyron
c720e354d2 service/ldn: Implement SetProtocol and SetWirelessAudioPolicy commands
Adds support for LDN service commands introduced in firmware 20.0.0+:
- Command 105: SetWirelessAudioPolicy (stubbed)
- Command 106: SetProtocol

This enables ACNH Update 3.0 and other games using newer SDK versions
to properly initialize LDN for local multiplayer functionality.

Signed-off-by: Zephyron <zephyron@citron-emu.org>
2026-01-19 16:29:46 +10:00
Collecting
23bb5078a7 fix(multiplayer): Z-A Connection Issues
Signed-off-by: Collecting <collecting@noreply.localhost>
2026-01-18 22:39:29 +00:00
Collecting
ead238ba35 Merge pull request 'feat(add): Xenoblade Title ID for Optimizer' (#104) from add/title-id-optimizer into main
Reviewed-on: https://git.citron-emu.org/Citron/Emulator/pulls/104
2026-01-18 04:01:12 +00:00
Collecting
78d70c6b48 add: Title ID for Optimizer
Signed-off-by: Collecting <collecting@noreply.localhost>
2026-01-18 04:00:40 +00:00
Collecting
4d018eb894 add: Title ID for Optimizer
Signed-off-by: Collecting <collecting@noreply.localhost>
2026-01-18 03:59:58 +00:00
Collecting
bd32690a76 revert c575341d1e
revert Merge pull request 'fix(multiplayer): Race Condition during Packet Discovery' (#101) from fix/lan_discovery_race_condition into main

Reviewed-on: https://git.citron-emu.org/Citron/Emulator/pulls/101
2026-01-18 00:01:51 +00:00
Collecting
df97c4f325 revert 47edb00351
revert Merge pull request 'Service: Sockets: Fix busy-waiting CPU starvation and Close/Socket race conditions' (#100) from fix-socket-performance-and-crashes into main

Reviewed-on: https://git.citron-emu.org/Citron/Emulator/pulls/100
2026-01-17 23:28:32 +00:00
Zephyron
d77cc3e518 chore: bump Citroen version
Signed-off-by: Zephyron <zephyron@citron-emu.org>
2026-01-18 00:48:31 +10:00
Collecting
c5c241aa73 Watch what you're typing next time
Signed-off-by: Collecting <collecting@noreply.localhost>
2026-01-17 10:08:25 +00:00
Collecting
ad35ac85ef Typo buddy
Signed-off-by: Collecting <collecting@noreply.localhost>
2026-01-17 10:07:56 +00:00
Collecting
c7220e4c27 Update src/citron/mod_manager/mod_service.cpp
Signed-off-by: Collecting <collecting@noreply.localhost>
2026-01-17 09:55:31 +00:00
Collecting
d3d7f41536 Update src/core/file_sys/patch_manager.cpp
Signed-off-by: Collecting <collecting@noreply.localhost>
2026-01-17 09:54:48 +00:00
Collecting
2107ca9c95 Merge pull request 'fix(mods): Remove Unused Nx-Optimizer Title ID's' (#103) from remove-title-ids into main
Reviewed-on: https://git.citron-emu.org/Citron/Emulator/pulls/103
2026-01-17 09:01:20 +00:00
Collecting
e0b13d9414 Remove Un-used Title ID's
Signed-off-by: Collecting <collecting@noreply.localhost>
2026-01-17 09:00:46 +00:00
Collecting
a380ba4c60 Remove Un-used Title IDs
Signed-off-by: Collecting <collecting@noreply.localhost>
2026-01-17 09:00:03 +00:00
Collecting
2873e3b97f Update src/citron/configuration/configure_per_game_addons.cpp
Signed-off-by: Collecting <collecting@noreply.localhost>
2026-01-17 02:38:31 +00:00