Commit Graph

28083 Commits

Author SHA1 Message Date
Zephyron
3bfa2ebc58 feat(hle/pctl): implement parental control service stubs for 18.0.0+
- Add GetPlayTimerSettingsVer2 (cmd 1456) with proper struct

- Add GetPlayTimerRemainingTime (cmd 1454)

- Add GetPlayTimerRemainingTimeDisplayInfo (cmd 1459) for 20.0.0+

- Add GetExtendedPlayTimerEvent (cmd 1475) with kernel event

- Define PlayTimerSettingsVer2 and PlayTimerRemainingTimeDisplayInfo types
2026-01-28 16:41:58 +10:00
Zephyron
37863fcb09 feat(hle/am): implement applet and home menu management
- Add home menu popup event and request handling

- Implement various self controller functions for applet lifecycle

- Add applet common functions with event support

- Implement application accessor and debug function stubs

- Add window system hooks for QLaunch integration
2026-01-28 16:41:40 +10:00
Zephyron
53fc6bf107 feat(hle/am): add event handling for state controllers
- Implement GetGpuErrorDetectedSystemEvent (cmd 1020)

- Implement GetFriendInvitationStorageChannelEvent (cmd 1030)

- Implement GetNotificationStorageChannelEvent (cmd 1040)

- Implement GetHealthWarningDisappearedSystemEvent (cmd 1050)

- Implement GetAccumulatedSuspendedTickChangedEvent (cmd 63)
2026-01-28 16:41:21 +10:00
Zephyron
ab93279542 feat(hle/am): implement system applet proxies and observer services
- Add OpenHomeMenuProxy (cmd 110) for QLaunch support

- Add GetSystemProcessCommonFunctions (cmd 450)

- Add Cmd460 stub for system process initialization

- Implement IApplicationObserver and ISystemProcessCommonFunctions services
2026-01-28 16:41:03 +10:00
Collecting
af5eb92450 fix(graphics/adv): Ensure STPE is auto-disabled
Games appear to have horrendous VRAM leaking with this setting enabled. By default, this setting was turned on, leaving users without any information of the setting or what the setting does and seems to have adverse effects in certain titles. Disabling it so that users don't have it automatically chosen.

Signed-off-by: Collecting <collecting@noreply.localhost>
2026-01-26 00:26:05 +01:00
Collecting
0caf8866fa fix(android): He say give me more static_cast, I say yes
Signed-off-by: Collecting <collecting@noreply.localhost>
2026-01-25 15:34:10 +01:00
Collecting
f842dfb7fe fix(android): moar static cast, me hungry
Signed-off-by: Collecting <collecting@noreply.localhost>
2026-01-25 15:07:21 +01:00
Collecting
851e8da116 Merge pull request 'fix(android): Add static_cast's for Android Warnings' (#113) from fix/compiler into main
Reviewed-on: https://git.citron-emu.org/Citron/Emulator/pulls/113
2026-01-25 14:37:51 +01:00
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