- Implement thread-safe singleton VfsCache class for O(1) file metadata lookup
- Add game asset priority caching with extended expiration (5 min vs 60s)
- Include directory listing cache for reduced SAF overhead
- Support LRU-based smart eviction preserving game assets
- Increase cache limits to 100K entries for high-memory devices (12GB Thor)
Signed-off-by: Zephyron <zephyron@citron-emu.org>
- Add 1.25X (900p/1350p) and 1.75X (1260p/1890p) resolution scales
- Fix Android resolution array value mappings (was incorrectly mapped)
- Add all resolution options (0.25X to 8X) to Android settings
- Mark experimental resolutions with [EXPERIMENTAL] tag
Signed-off-by: Zephyron <zephyron@citron-emu.org>
ASTC Settings:
- Add ANDROID_ASTC_MODE enum to IntSetting.kt
- Add setting to Zep Zone panel in SettingsFragmentPresenter.kt
- Add string resources for Auto/Native/Decompress options
- Add arrays for option names and values
CRT Shader Settings:
- Add 6 CRT float settings to FloatSetting.kt (scanline_strength, curvature, gamma, bloom, brightness, alpha)
- Add CRT_MASK_TYPE int setting for mask type selection
- Add scale factor support to SliderSetting.kt for float-to-percentage conversion
- Add conditional visibility for CRT settings (only shown when CRT filter is enabled)
- Add string resources and arrays for all CRT settings
The CRT settings section only appears in Zep Zone when the scaling filter is
set to CRTEasyMode or CRTRoyale.
Co-Authored-By: FDT <fdt@citron-emu.org>
- Add AndroidAstcMode enum to settings_enums.h (Auto/Native/Decompress)
- Add android_astc_mode setting to settings.h
- Add Adreno 7xx+ GPU detection in vulkan_device (IsAdrenoGpu, IsAdreno7xxOrNewer, SupportsNativeAstc)
- Add compressed_size_bytes field to ImageBase for accurate ASTC VRAM tracking
- Add use_compressed_eviction flag to texture cache for Android-optimized eviction
- Increase VRAM budget to 90% for Android devices with native ASTC support
- Add SupportsNativeAstc() to Vulkan and OpenGL texture cache runtimes
This improves performance on high-end Android devices by allowing more ASTC
textures to be cached when using compressed size for eviction calculations.
Co-Authored-By: FDT <fdt@citron-emu.org>
Updated description to accurately describe Off and Light options instead
of implying multiple "higher levels" that don't exist.
Signed-off-by: Zephyron <zephyron@citron-emu.org>
The tooltip described 5 levels (Off, Light, Moderate, Heavy, Extreme)
but only Off and Light are implemented in the enum.
Signed-off-by: Zephyron <zephyron@citron-emu.org>
a race condition where the BootGame() function was called directly from the GMainWindow constructor. This would create and start the EmuThread before the main Qt application event loop (app.exec()) had begun. As a result, the LoadingScreen UI was not fully initialized and could not properly process the progress signals from the background emulation thread, causing the hang.
The fix defers the call to emu_thread->start() by wrapping it in a QTimer::singleShot(0, ...) with a lambda function. This places the start command on the Qt event queue, ensuring it only executes after the GMainWindow has been fully constructed and the event loop is active. This guarantees the UI is ready to receive signals, resolving the race condition.
Signed-off-by: Collecting <collecting@noreply.localhost>
- Cache focus state result to prevent race condition from double-call
- Signal caller applet resume notification on PopOutData
Fixes freezes in games using controller applet (e.g. Mario Kart 8 Deluxe).
Signed-off-by: Zephyron <zephyron@citron-emu.org>
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
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
- 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
- Add OpenHomeMenuProxy (cmd 110) for QLaunch support
- Add GetSystemProcessCommonFunctions (cmd 450)
- Add Cmd460 stub for system process initialization
- Implement IApplicationObserver and ISystemProcessCommonFunctions services