Commit Graph

28111 Commits

Author SHA1 Message Date
Collecting
d06bb79dd9 fix(ui): Adjust for consistency
Signed-off-by: Collecting <collecting@noreply.localhost>
2026-01-31 00:49:59 +01:00
Collecting
dcef7593cf fix(ui): Make styling more consistent
Signed-off-by: Collecting <collecting@noreply.localhost>
2026-01-31 00:49:26 +01:00
Collecting
4568f63570 Merge pull request 'fix(ui): Consistent Accent Coloring across various UI elements' (#117) from fix/colors into main
Reviewed-on: https://git.citron-emu.org/Citron/Emulator/pulls/117
2026-01-30 22:53:30 +01:00
Collecting
87e9352444 fix(ui): Att void for setStyleSheet
Signed-off-by: Collecting <collecting@noreply.localhost>
2026-01-30 22:52:37 +01:00
Collecting
e23f80d772 fix(ui): Coloring of Search Field & Game list
Signed-off-by: Collecting <collecting@noreply.localhost>
2026-01-30 22:52:07 +01:00
Zephyron
2272b62171 fix(android): prevent RomFS/ExeFS dump while emulation is running
Add safety checks to prevent dumping game files while emulation is active, which could cause crashes or data corruption.

- Check EmulationSession.IsRunning() before starting dump in native.cpp

- Check NativeLibrary.isRunning() in GamePropertiesFragment.kt

- Show user-friendly toast message when dump is blocked
2026-01-30 17:58:08 +10:00
Zephyron
1543418260 refactor(settings): simplify GC aggressiveness to Off/Light only
Remove Moderate, Heavy, and Extreme GC aggressiveness levels, keeping only Off and Light options for simpler configuration.

- Light mode now uses 75%/90% VRAM thresholds

- Simplified switch statements in texture/buffer cache

- Updated UI dropdowns for desktop and Android

- Light is now the default and recommended setting
2026-01-30 17:55:43 +10:00
Collecting
4229eaa8fd fix(msvc): Please and thank you
Signed-off-by: Collecting <collecting@noreply.localhost>
2026-01-29 02:37:53 +01:00
Collecting
bf3f80557b Update README.md
Signed-off-by: Collecting <collecting@noreply.localhost>
2026-01-29 02:10:16 +01:00
Collecting
01ca952b6a fix(macOS): static_cast requirement for out_displays
Signed-off-by: Collecting <collecting@noreply.localhost>
2026-01-29 02:06:32 +01:00
Collecting
b29d1d7d3f fix(msvc): Float Requirement
Signed-off-by: Collecting <collecting@noreply.localhost>
2026-01-29 02:03:57 +01:00
Collecting
5bbd9e0b8f Merge pull request 'feat: Add game hiding, launch animations, and accent color theming' (#116) from feat/customized_game_list into main
Reviewed-on: https://git.citron-emu.org/Citron/Emulator/pulls/116
2026-01-29 01:22:46 +01:00
Collecting
ce83b341a7 feat(add): Initial Boot icon animation & core logic for hiding entries
Signed-off-by: Collecting <collecting@noreply.localhost>
2026-01-29 01:20:02 +01:00
Collecting
0bb1c53c55 feat(add): Icon Animation during initial boot
Signed-off-by: Collecting <collecting@noreply.localhost>
2026-01-29 01:15:32 +01:00
Collecting
a73aa4f19d feat(add): Emit Configuration Saved
Signed-off-by: Collecting <collecting@noreply.localhost>
2026-01-29 01:15:05 +01:00
Collecting
8820ae568c feat(add): Configuration Saved
Signed-off-by: Collecting <collecting@noreply.localhost>
2026-01-29 01:14:19 +01:00
Collecting
783f30be0e feat(add): Hidden Paths logic for saving to qt_config
Signed-off-by: Collecting <collecting@noreply.localhost>
2026-01-29 01:13:51 +01:00
Collecting
4f7cd049ef feat(add): QStringList for paths to hide specific games
Signed-off-by: Collecting <collecting@noreply.localhost>
2026-01-29 01:13:16 +01:00
Zephyron
08a88e8d55 Merge pull request 'feat/qlaunch-home-menu-support' (#115) from feat/qlaunch-home-menu-support into main
Reviewed-on: https://git.citron-emu.org/Citron/Emulator/pulls/115
2026-01-28 07:46:11 +01:00
Zephyron
5600aefcd5 chore(core): update build config for QLaunch services
- Add application_observer and system_process_common_functions to CMakeLists

- Add enable_home_menu setting option
2026-01-28 16:43:07 +10:00
Zephyron
a5632d7576 feat(ui): add QLaunch/Home Menu support to menubar
- Add Tools > Open QLaunch menu action

- Implement OnOpenQLaunch() to launch firmware home menu

- Add translation strings for QLaunch option
2026-01-28 16:42:51 +10:00
Zephyron
626ea63cbc feat(hle): implement misc service stubs for QLaunch compatibility
- audctl: Add GetAudioController (cmd 5000) returning IAudioController

- vi: Improve display service with better non-default display handling

- psc/ovln: Add GetReceiveEventHandle for overlay notifications

- omm: Add GetNotificationMessageEventHandle for power state

- olsc: Implement GetNativeHandle returning valid event

- prepo: Add SaveSystemReport2 (cmd 20102) stub
2026-01-28 16:42:35 +10:00
Zephyron
5fa71ce5b0 feat(hle/ns): implement application manager interface stubs for 20.0.0+
- Add Cmd4022, Cmd4023, Cmd4088 stubs for application readiness checks

- Add GetApplicationRecord stub returning empty list

- Required for QLaunch application enumeration
2026-01-28 16:42:14 +10:00
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
46630e770d Merge pull request 'feat(gamelist): Add 'Surprise Me!' random game feature' (#114) from feat/surprise-me into main
Reviewed-on: https://git.citron-emu.org/Citron/Emulator/pulls/114
2026-01-28 07:40:01 +01:00
Collecting
ea9c04bccb feat(ui): Surprise Me! Logic
The main logic for the Surprise Me feature.

Signed-off-by: Collecting <collecting@noreply.localhost>
2026-01-28 07:38:38 +01:00
Collecting
b465783bf7 feat(ui): Surprise Me! Option
Needed the thingies

Signed-off-by: Collecting <collecting@noreply.localhost>
2026-01-28 07:37:53 +01:00
Collecting
5b90431380 feat: dice.svg into qrc
For rendering of the Surprise Me! icon.

Signed-off-by: Collecting <collecting@noreply.localhost>
2026-01-28 07:37:22 +01:00
Collecting
32fc088c5e feat: dice.svg
A dice svg.

Signed-off-by: Collecting <collecting@noreply.localhost>
2026-01-28 07:36:36 +01: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