-
Citron Release 0.8.0 Pre-release
released this
2025-10-11 03:11:09 -04:00 | 735 commits to main since this releaseCitron Emulator v0.8.0 Changelog
This is a special coordinated release:
- Ryubing (Ryujinx Fork) - SDK20 and REV15 audio support
- TKMM (TotK Mod Manager) - #1 Mod Manager for TotK
- NX Optimizer - Advanced game optimization framework for many games
Special Thanks & Acknowledgments
This release would not have been possible without the incredible work and collaboration from:
Research & Development
- LotP (Ryubing/Ryujinx): Reverse engineering genius
- Lord Bubbles & TKMM Team: For creating the amazing TKMM mod manager and collaborative support
- MaxLastBreath: Extensive testing, insights, and creator of NX Optimizer
Testing & Quality Assurance
- Hayate Yoshida (JapanMan): Dedicated testing
- Tetsuya Takahashi: Thorough testing across multiple titles
- Dr.Stug: Testing, detailed logging, and hardware compatibility reports
- Collecting: UI Developer, Linux Maintainer, and new features to Citron
The Citron Team
A massive thank you to all Citron contributors and community members who made this release possible!
Major Game Compatibility Updates
BOTW & TOTK Support - BREAKTHROUGH UPDATE
This release brings full compatibility with the latest game versions:
- ✅ The Legend of Zelda: Breath of the Wild v1.8.2 - Now fully supported!
- ✅ The Legend of Zelda: Tears of the Kingdom v1.4.2 - Resolved boot loop and controller crashes!
What's Fixed:
- Boot loop issues caused by incorrect HID state implementation
- "No controller" crash on game launch
- Audio crackling and stability issues with REV15 games
- Improved performance and stability in both titles
New Features
Audio System - Complete REV15 Implementation
This is our biggest audio update yet!
Core REV15 Features
- Audio Renderer REV15: Full implementation of SDK version 15 audio renderer with native float processing
- Native float biquad filters for superior audio quality (
BiquadFilterParameter2) - Proper handling of Voice Input Parameter V2 format (0x188 bytes vs legacy 0x170)
- Splitter Destination V2b support with biquad filter parameters (0xA8 bytes)
- Multi-tap biquad filter processing with FP16/FP32 optimization
- Dual coefficient storage: maintains both float and fixed-point for compatibility
- Native float biquad filters for superior audio quality (
HID Sampling Number Fix (Critical)
- Fixed Boot Loop Bug: HID atomic storage sampling number now correctly doubles the input state value
- Resolves controller detection issues in SDK20 games
- Fixes the exact issue preventing TotK v1.4.2 and BotW v1.8.2 from launching
New Audio Subsystems
- AudioSnoopManager: DSP statistics and performance monitoring system
- Real-time CPU/DSP usage tracking
- Voice drop and command drop counting
- Buffer underrun/overrun detection
- AudioSystemManager: Applet audio state management
- Suspend/resume support for applet transitions
- Master volume control (input/output/record)
- Debug suspension capabilities
- Applet resource user ID registration
- FinalOutputRecorder: Complete output recording implementation
- Shared ring buffer for audio capture
- ITU-R BS.1770 loudness measurement support
- Work buffer management and buffer lifecycle
Audio Processing Enhancements
- FFT (Fast Fourier Transform): Cooley-Tukey algorithm implementation
- Real-to-complex and complex-to-real transforms
- Complex-to-complex transforms with inverse support
- Proper bit-reversal and work buffer management
- Loudness Calculator: Professional loudness metering
- ITU-R BS.1770 standard compliance
- LUFS (Loudness Units Full Scale) measurement
- K-weighting filter with shelf and high-pass stages
- Momentary (400ms), short-term (3s), and integrated loudness
- Limiter Effect: Full-featured dynamics processor
- Attack and release time controls
- Threshold and ratio parameters
- Makeup gain compensation
- Envelope follower with peak detection
- Audio Device Enhancements:
- Device gain support for AudioInSystem
- Improved buffer management utilities
- ADPCM helper functions
Visual Enhancements
ScaleFX Filter - New Pixel Art Upscaling
- Edge-detection based pixel art upscaling algorithm
- Preserves sharp edges while reducing pixelation
- Six pattern detection types (horizontal, vertical, diagonal)
- Sub-pixel anti-aliasing with configurable strength
- Corner handling for improved quality
- Available in both OpenGL and Vulkan
- FP16/FP32 variants for hardware optimization
- Based on libretro's ScaleFX implementation
- Ideal for low-resolution games and pixel art styles
Lanczos Filter - High-Quality Resampling
- Professional-grade resampling filter
- Sinc-based interpolation for maximum sharpness
- Minimal ringing artifacts
- Excellent for integer scaling scenarios
0.25X Quarter Resolution - Extreme Performance Mode
- Render at 180p/270p for 720p/1080p native
- Four times faster rendering
- Perfect for ultra-low-end hardware
- Performance testing and profiling
- Marked as EXPERIMENTAL (may cause visual artifacts)
Performance Monitoring
- CPU & GPU Temperature Display (Linux): Real-time hardware temperature monitoring
- Color-coded temperature indicators
- Desktop and Android support
- Non-intrusive overlay integration
- Battery Percentage (Android): Battery status in performance overlay
- Charge percentage display
- Charging state indicator
- Temperature alongside battery info
Performance - Profile-Guided Optimization (PGO)
Introducing PGO Build System - 10-30% Performance Boost!
- Two-Stage Optimization Process:
- Stage 1: Instrumented builds collect runtime profiling data
- Stage 2: Optimized builds use profile data for intelligent optimization
- Multi-Compiler Support:
- MSVC with FASTGENPROFILE for fast profiling
- GCC with profile-generate/profile-use
- Clang with llvm-profdata integration
- Automated Build Scripts:
pgo-build.ps1for Windows (PowerShell)pgo-build.shfor Linux/macOS (Bash)fix-pgo-dll.ps1utility for MSVC DLL issues
- CMake Integration:
-DCITRON_ENABLE_PGO_GENERATE=ONfor profiling builds-DCITRON_ENABLE_PGO_USE=ONfor optimized builds- Automatic PGO runtime DLL detection and deployment
Improvements
Audio System Architecture
REV15 Implementation Details:
- Biquad Filter Processing:
- Legacy fixed-point Q2.14 conversion maintained for compatibility
- Native float processing path for REV15+ games
- Proper coefficient conversion with clamping
- Enhanced filter state initialization
ApplyBiquadFilterFloat2()for native float coefficients
- Command Generation:
- Smart selection between float and fixed-point processing
- Automatic detection of REV15 capabilities via behavior flags
- Multi-tap biquad optimization for REV10+ games
- Proper integration with voice and effect contexts
- Parameter Handling:
- VoiceInParameterV2 struct (0x188 bytes) for REV15 voices
- InParameterVersion2b (0xA8 bytes) for splitter destinations
- Dual storage system:
biquads(s16) andbiquads_float(f32) - Proper stride calculation for mixed revision support
UI/UX Improvements
- Adjustable Configuration Window: Resizable settings dialog with proper scroll support
- Graphics & System Tab Fixes: Proper resize and scroll behavior
- Accent Color System: Customizable UI theming with accent colors
- Column Layout: Improved game list column organization
- State Management UI: Enhanced save state interface
Build System & Compiler Support
- Clang Compiler Support: Full Clang compilation with LTO support
- Fixed template instantiation issues
- Resolved warning suppressions
- Proper attribute handling
- MSVC Improvements:
- Fixed C4305 truncation warnings in QColor calls
- Disabled C2375 warning for
__builtin_assume_alignedredefinition - Proper PGO runtime DLL handling
- CMake Enhancements:
- Automatic user directory creation for portable mode
- Improved dependency management
- Better cross-platform configuration
Platform Support
- Android Enhancements:
- Fixed instant crash in RAM overlay
- Battery percentage and temperature display
- Improved resource handling
- Qt Framework:
- Fixed
QImage::mirrored()usage (was incorrectly using non-existentflipped()) - Proper state change handling
- Better event management
- Fixed
Bug Fixes
Critical Fixes
- TotK/BotW Boot Loop: Fixed HID sampling number mismatch preventing game startup
- Atomic storage sampling number now properly doubles state value
- Controller Detection: Resolved "no controller" crash by fixing atomic storage state
- Proper SamplingNumber propagation in ring LIFO
- Fixes SDK20 game controller initialization
- Use-After-Free Bug: Resolved memory safety issue in core systems
- Android RAM Overlay Crash: Fixed instant crash when enabling RAM display (Credit To Beta Tester: Shadai theonlyshadai)
Audio Fixes
- REV15 Compatibility: Native float biquad processing prevents audio distortion
- Mix Parameter Validation: Added bounds checking for mix count in dirty parameter mode
- Splitter Float Coefficients: Properly stores and applies biquad filters in splitters
- Audio Stability: Fixed crashes and crackling in REV15 games
Compilation Fixes
- Clang Warnings: Resolved all Clang compilation warnings
- MSVC Truncation: Fixed C4305 warnings in color conversion
- Discord RPC: Applied wclass-memaccess fix patch
- RapidJSON: Compiler compatibility patch
- STB Image: Overflow fix patch (CVE mitigation)
UI Fixes
- Configuration Window Scrolling: Proper scroll behavior in all tabs
- Qt Vertical Layout: Fixed deprecated value usage
- State Change Events: Proper checkStateChanged handling
- Theme Application: Correct theme.h inclusion and initialization
Build System Fixes
- Ring Buffer Alignment: Stable and predictable 64-byte alignment
- Dynarmic Fastmem: Removed MSVC-specific pointer assignments
- Patch Application: Corrected -p0 flag usage in patches
- Copyright Headers: Added proper SPDX headers to new files
Technical Improvements
Code Architecture
Float Coefficient Storage:
- Dual storage system for biquad filters maintains accuracy
- Legacy
s16fixed-point for older revisions (REV1-14) - Native
f32float for REV15+ accuracy - Automatic selection based on
IsVoiceInParameterV2Supported()
- Legacy
- Backward compatibility fully maintained
Splitter Context Enhancement:
- V2b parameter format support (0xA8 bytes)
- Biquad filter storage in splitter destinations
- Proper handling of extended parameter structures
splitter_float_coeff_supportedflag management
Type Safety:
- Added
use_float_biquadsanduse_float_coefficientsflags - Proper scope management for parameter structures
- Enhanced error handling for parameter parsing
- Eliminated variable shadowing issues
Shader System
ScaleFX Implementation:
- 6 edge detection patterns (horizontal, vertical, diagonal)
- Sub-pixel anti-aliasing with configurable strength (SFX_SAA)
- Color threshold tuning (SFX_CLR = 0.35)
- Corner handling for improved quality
- FP16 optimization with AMD/NVIDIA extension support
Lanczos Refinements:
- Optimized sinc function calculation
- Improved window function
- Better edge handling
Performance Optimizations
- PGO Infrastructure: Profile-guided optimization for 10-30% gains
- Temperature Monitoring: Zero-overhead when disabled
- Buffer Management: Optimized ring buffer implementation
- FFT Processing: Efficient Cooley-Tukey algorithm
New Files Added
Audio Core
src/audio_core/audio_snoop_manager.{cpp,h} src/audio_core/audio_system_manager.{cpp,h} src/audio_core/common/audio_helpers.h src/audio_core/common/fft.{cpp,h} src/audio_core/common/loudness_calculator.{cpp,h} src/audio_core/device/audio_buffer_list.h src/audio_core/device/shared_ring_buffer.{cpp,h} src/audio_core/renderer/command/effect/limiter.{cpp,h} src/audio_core/renderer/effect/limiter.{cpp,h} src/audio_core/renderer/final_output_recorder/ ├── final_output_recorder_buffer.h ├── final_output_recorder_system.cpp └── final_output_recorder_system.hVideo Core
src/video_core/host_shaders/opengl_present_scalefx.frag src/video_core/host_shaders/vulkan_present_scalefx_fp16.frag src/video_core/host_shaders/vulkan_present_scalefx_fp32.fragBuild System
CMakeModules/PGO.cmake fix-pgo-dll.ps1 pgo-build.ps1 pgo-build.sh
Modified Files (Major Changes)
Audio Core - REV15 Implementation
src/audio_core/common/feature_support.h: CurrentRevision 13 → 15src/audio_core/renderer/behavior/behavior_info.{cpp,h}: Added REV15 support methodssrc/audio_core/renderer/behavior/info_updater.cpp: VoiceInParameterV2 parsingsrc/audio_core/renderer/voice/voice_info.h: AddedInParameter2and float biquad storagesrc/audio_core/renderer/command/effect/biquad_filter.{cpp,h}: Native float processingsrc/audio_core/renderer/command/effect/multi_tap_biquad_filter.{cpp,h}: Float coefficient supportsrc/audio_core/renderer/command/command_buffer.cpp: Updated command generationsrc/audio_core/renderer/splitter/splitter_destinations_data.{cpp,h}: V2b parameter supportsrc/audio_core/renderer/splitter/splitter_context.{cpp,h}: Float coefficient handlingsrc/audio_core/in/audio_in_system.{cpp,h}: Device gain support
HID Core
src/hid_core/resources/ring_lifo.h: Critical fix - sampling_number now properly doubled
Video Core
src/video_core/renderer_opengl/gl_blit_screen.cpp: ScaleFX integrationsrc/video_core/renderer_opengl/present/filters.{cpp,h}: ScaleFX factorysrc/video_core/renderer_vulkan/vk_blit_screen.cpp: ScaleFX integrationsrc/video_core/renderer_vulkan/present/filters.{cpp,h}: ScaleFX shader selectionsrc/video_core/host_shaders/CMakeLists.txt: New shader registrations
Configuration & UI
src/common/settings.cpp: 0.25X resolution handlingsrc/common/settings_enums.h: AddedRes1_4XandScaleFxenumssrc/citron/configuration/shared_translation.{cpp,h}: ScaleFX and 0.25X translationssrc/citron/main.{cpp,h}: Temperature monitoring, UI improvementssrc/citron/about_dialog.cpp: Version 0.7.1 → 0.8.0- UI configuration files: Resizable dialogs, accent colors, improved layouts
Build System
CMakeLists.txt: PGO module integrationsrc/audio_core/CMakeLists.txt: All new audio files added.gitignore: PGO profile exclusions
Known Issues
- FSR2 and TAA remain experimental (from v0.7/v0.7.1)
- ScaleFX may show artifacts with some UI elements at extreme scales
- 0.25X resolution marked EXPERIMENTAL - may cause rendering issues in some games
- PGO requires two complete build cycles (expected behavior)
- Temperature monitoring requires hardware sensor support (may show 0°C on some systems)
Building with PGO (Optional)
For maximum performance, you can build Citron with Profile-Guided Optimization:
Windows:
.\pgo-build.ps1 generate # Build instrumented version # Run Citron and play games for 15-30 minutes .\pgo-build.ps1 use # Build optimized versionLinux/macOS:
./pgo-build.sh generate # Build instrumented version # Run Citron and play games for 15-30 minutes ./pgo-build.sh use # Build optimized versionPGO can provide 10-30% performance improvements based on your typical usage patterns!
Migration Notes
For Users
- No configuration migration needed - fully backward compatible
- Existing saves remain compatible
- REV15 games will automatically use new audio path
For Developers
- New audio subsystems available for service implementations
CurrentRevisionupdated to 15 - update any hardcoded checks- BiquadFilterCommand now has dual coefficient storage
- Check
use_float_biquadsflag when handling voice info
Community & Coordination
This synchronized release shows the power of community collaboration:
- Citron: Core emulator with REV15 audio and enhanced compatibility
- Ryubing: Research and reverse engineering insights for SDK20 support
- TKMM: Professional mod management for seamless game modifications
- NX Optimizer: Performance optimization and advanced game tweaking
Together, we're providing the most complete and optimized experience for Nintendo Switch emulation!
Statistics
- Files Changed: 100+ files modified/added
- Lines Added: ~5,000+ lines of new code
- New Subsystems: 4 major audio subsystems
- Bug Fixes: 20+ critical and minor fixes
- New Features: 8 major user-facing features
Full Changelog: v0.7.1...v0.8.0
Download: Latest Release
Enjoy full TotK 1.4.2 and BotW 1.8.2 support!
Special thanks to the Ryubing community, MaxLastBreath community and TKMM community, and to all our testers and contributors who made this release possible!
Downloads
-
Source code (ZIP)
497 downloads
-
Source code (TAR.GZ)
254 downloads