L’emulatore Citron, uno dei progetti open-source più promettenti nel panorama dell’emulazione della console Nintendo Switch, continua a crescere con il rilascio della nuova versione 0.8.0, che introduce una serie di miglioramenti sostanziali alle prestazioni, alla compatibilità e alla stabilità generale.

Dopo mesi di lavoro da parte della community di sviluppatori indipendenti, questo aggiornamento rappresenta un ulteriore passo in avanti nella ricerca di un’esperienza di gioco fluida e fedele all’hardware originale della console.
Nato come progetto sperimentale per portare l’esperienza Switch su PC, Linux e macOS, Citron si è rapidamente trasformato in un emulatore completo, capace di eseguire un’ampia gamma di titoli commerciali e homebrew con risultati sorprendenti.
La filosofia alla base del progetto è chiara: offrire un emulatore completamente trasparente e open-source, sviluppato con un approccio collaborativo che valorizzi il contributo della community.
Rispetto alle versioni precedenti, Citron 0.8.0 introduce un importante salto di qualità sia dal punto di vista prestazionale che tecnico.
Il nuovo aggiornamento mira a ottimizzare l’esperienza d’uso per tutti gli utenti, migliorando la compatibilità con diversi firmware e integrando nuove funzioni grafiche per garantire una resa visiva più fedele e stabile.
Il fulcro dell’aggiornamento riguarda appunto il nuovo motore di rendering, profondamente ottimizzato per sfruttare meglio le GPU moderne. Gli sviluppatori hanno riscritto parte della pipeline grafica, riducendo i tempi di elaborazione e migliorando la gestione degli shader.
Il risultato è un incremento di performance che si traduce in frame rate più stabili e caricamenti più rapidi, soprattutto nei titoli più pesanti come The Legend of Zelda: Tears of the Kingdom, Bayonetta 3 e Xenoblade Chronicles 2.
Inoltre, l’introduzione di una cache intelligente degli shader ha ridotto sensibilmente i micro-scatti che potevano verificarsi durante l’esecuzione delle prime fasi di gioco.
Inoltre il supporto esteso ai formati di texture compressi ASTC consente una compatibilità maggiore con i titoli first-party Nintendo, migliorando al contempo la resa visiva e l’uso della memoria.
Uno dei punti deboli delle versioni precedenti riguardava la sincronizzazione audio-video, che in alcuni casi poteva provocare ritardi o piccoli artefatti sonori.
Con la versione 0.8.0, Citron introduce un nuovo sistema di gestione del suono, completamente riscritto per ridurre la latenza e migliorare la fedeltà.
Il risultato è un audio più preciso, coerente con l’azione a schermo, e compatibile con una gamma più ampia di dispositivi, inclusi sistemi con schede audio integrate o driver ALSA/PulseAudio su Linux.
Tra l’altro il team di sviluppo ha lavorato duramente anche sulla stabilità del runtime, risolvendo numerosi bug e crash segnalati dalla community.
L’emulatore ora gestisce meglio il consumo di memoria e previene le perdite di risorse durante le lunghe sessioni di gioco. Inoltre, è stato migliorato il supporto ai firmware più recenti della console, garantendo la corretta esecuzione di titoli che prima non si avviavano o presentavano problemi grafici.
Particolare attenzione è stata dedicata anche alla compatibilità Vulkan, ampliando la gamma di dispositivi supportati e rendendo Citron più efficiente su GPU di fascia media o integrata.
Implementazioni principali
- Revisione completa del pipeline di rendering Vulkan.
- Gestione avanzata delle tabelle ZBC con integrazione nella memoria GPU.
- Sistema migliorato di rilevamento e recupero crash del Nintendo SDK.
- Ottimizzazione delle prestazioni della coda di aggiornamento dei descrittori.
- Timeout adattivo e disattivazione automatica per la modalità turbo Vulkan.
- Implementazione delle funzioni e degli handle di evento kernel mancanti.
- Implementazione dell’istruzione ISBERD nel ricompilatore di shader.
- Servizio QueryPointerBufferSize con calcolo corretto del buffer IPC.
- Miglioramenti alla stabilità di rete per il multiplayer HDR.
- Correzioni di compilazione multipiattaforma (Linux/Android/Windows).
- Integrazione del sistema di autenticazione per il beta testing.
Note importanti
- STATO IMPLEMENTAZIONE FSR2: L’implementazione di FSR2 (FidelityFX Super Resolution 2) è attualmente SPERIMENTALE e incompleta. Gli utenti devono aspettarsi:
- Artefatti visivi e glitch di rendering
- Miglioramenti al frame rate incoerenti
- Potenziali crash o instabilità
- Problemi di gestione della memoria
- Problemi di compatibilità con alcuni giochi
Questa funzione è fornita “così com’è” solo a scopo di test. Usatela a vostro rischio.
Bug attesi
Dato che si tratta di una riscrittura completa, gli utenti dovrebbero prevedere:
- Regressioni nella compatibilità dei giochi.
- Incoerenze nelle prestazioni.
- Problemi di interfaccia utente ed esperienza d’uso.
- Bug specifici per piattaforma.
- Perdite di memoria in determinati scenari.
- Problemi di sincronizzazione audio.
Raccomandazioni per i test
- Testare con una varietà di giochi appartenenti a generi diversi.
- Monitorare l’utilizzo della memoria durante le sessioni di gioco prolungate.
- Segnalare eventuali crash o problemi di prestazioni significativi.
- Disattivare FSR2 per un gameplay più stabile.
Changelog
Aggiornamenti principali di compatibilità dei giochi
Supporto BOTW & TOTK – AGGIORNAMENTO RIVOLUZIONARIO
Questa release porta la piena compatibilità con le versioni più recenti dei giochi:
- The Legend of Zelda: Breath of the Wild v1.8.2 – Ora completamente supportato!
- The Legend of Zelda: Tears of the Kingdom v1.4.2 – Risolti i problemi di boot loop e crash del controller!
Cosa è stato corretto
- Problemi di boot loop causati da un’implementazione errata dello stato HID.
- Crash “nessun controller” all’avvio del gioco.
- Crepitii audio e problemi di stabilità nei giochi REV15.
- Miglioramento delle prestazioni e della stabilità in entrambi i titoli.
Nuove funzionalità
Sistema Audio – Implementazione completa REV15
Questo è il nostro aggiornamento audio più grande di sempre!
Funzionalità principali REV15
- Audio Renderer REV15: Implementazione completa del renderer audio SDK versione 15 con elaborazione nativa float:
- Filtri biquad float nativi per qualità audio superiore (
BiquadFilterParameter2). - Gestione corretta del formato Voice Input Parameter V2 (0x188 bytes vs legacy 0x170).
- Supporto Splitter Destination V2b con parametri filtro biquad (0xA8 bytes).
- Elaborazione multi-tap filtro biquad con ottimizzazione FP16/FP32.
- Dual coefficient storage: mantiene sia float che fixed-point per compatibilità.
- Filtri biquad float nativi per qualità audio superiore (
Correzione Numero di Campionamento HID (Critica)
- Bug Boot Loop corretto: il numero di campionamento HID atomic storage ora raddoppia correttamente il valore dello stato di input.
- Risolti problemi di rilevamento controller nei giochi SDK20.
- Risolto il problema che impediva l’avvio di TotK v1.4.2 e BotW v1.8.2.
Nuovi Sottosistemi Audio
- AudioSnoopManager: Sistema di statistiche DSP e monitoraggio delle prestazioni:
- Monitoraggio in tempo reale CPU/DSP.
- Conteggio cadute di voce e comandi.
- Rilevamento buffer underrun/overrun.
- AudioSystemManager: Gestione dello stato audio degli applet:
- Supporto sospensione/ripresa durante le transizioni degli applet.
- Controllo volume master (input/output/record).
- Funzionalità di debug suspension.
- Registrazione ID utente risorse applet.
- FinalOutputRecorder: Implementazione completa della registrazione audio in output:
- Buffer circolare condiviso per cattura audio.
- Supporto misurazione loudness ITU-R BS.1770.
- Gestione buffer di lavoro e ciclo di vita dei buffer.
Miglioramenti elaborazione audio
- FFT (Trasformata di Fourier Veloce): implementazione dell’algoritmo Cooley-Tukey:
- Trasformazioni da reale a complesso e da complesso a reale.
- Trasformazioni da complesso a complesso con supporto inverso.
- Gestione corretta dell’inversione dei bit e del buffer di lavoro.
- Calcolatore di Loudness: Misurazione professionale della loudness.
- Conformità allo standard ITU-R BS.1770.
- Misurazione LUFS (Loudness Units Full Scale).
- Filtro K-weighting con stadi shelf e high-pass.
- Loudness momentanea (400ms), a breve termine (3s) e integrata.
- Effetto Limiter: Processore dinamico completo:
- Controlli di tempo di attacco e rilascio
- Parametri di soglia e rapporto
- Compensazione del guadagno (Makeup Gain)
- Envelope follower con rilevamento del picco
- Miglioramenti ai dispositivi audio:
- Supporto al guadagno del dispositivo per AudioInSystem.
- Utilità migliorate per la gestione dei buffer.
- Funzioni helper per ADPCM.
Miglioramenti visivi
Filtro ScaleFX – Nuovo Upscaling per Pixel Art
- Algoritmo di upscaling per pixel art basato sul rilevamento dei bordi.
- Preserva i bordi netti riducendo la pixelazione.
- Sei tipi di rilevamento pattern (orizzontale, verticale, diagonale).
- Anti-aliasing sub-pixel con forza configurabile.
- Gestione degli angoli per una qualità migliorata.
- Disponibile sia in OpenGL che Vulkan.
- Varianti FP16/FP32 per ottimizzazione hardware.
- Basato sull’implementazione ScaleFX di libretro
- Ideale per giochi a bassa risoluzione e stili pixel art.
Filtro Lanczos – Rimappatura ad Alta Qualità
- Filtro di rimappatura professionale.
- Interpolazione basata su sinc per massima nitidezza.
- Minimi artefatti di ringing.
- Eccellente per scenari di scaling intero.
Risoluzione 0.25X – Modalità Prestazioni Estreme
- Rendering a 180p/270p per 720p/1080p nativi.
- Rendering quattro volte più veloce.
- Perfetto per hardware ultra-low-end.
- Test delle prestazioni e profilazione.
- Contrassegnato come SPERIMENTALE (può causare artefatti visivi).
Monitoraggio delle Prestazioni
- Visualizzazione della Temperatura CPU & GPU (Linux): Monitoraggio in tempo reale dell’hardware:
- Indicatori di temperatura codificati a colori
- Supporto per Desktop e Android
- Integrazione overlay non invasiva
- Percentuale Batteria (Android): Stato della batteria nell’overlay prestazioni:
- Visualizzazione della percentuale di carica.
- Indicatore dello stato di ricarica.
- Temperatura insieme alle informazioni sulla batteria.
Prestazioni – Ottimizzazione Guidata dal Profilo (PGO)
Introduzione del Sistema di Build PGO – Aumento delle Prestazioni del 10-30%!
- Processo di Ottimizzazione in Due Fasi:
- Fase 1: Build strumentate raccolgono dati di profilazione in runtime.
- Fase 2: Build ottimizzate utilizzano i dati di profilazione per ottimizzazione intelligente.
- Supporto Multi-Compilatore:
- MSVC con FASTGENPROFILE per profilazione rapida.
- GCC con profile-generate/profile-use.
- Clang con integrazione llvm-profdata.
- Script di Build Automatizzati:
pgo-build.ps1per Windows (PowerShell).pgo-build.shper Linux/macOS (Bash).- Utility
fix-pgo-dll.ps1per problemi con DLL MSVC.
- Integrazione CMake:
-DCITRON_ENABLE_PGO_GENERATE=ONper build di profilazione.-DCITRON_ENABLE_PGO_USE=ONper build ottimizzate.- Rilevamento e deploy automatico delle DLL runtime PGO.
Miglioramenti
Architettura del sistema audio
Dettagli di implementazione REV15:
- Elaborazione del Filtro Biquad:
- Conversione legacy in punto fisso Q2.14 mantenuta per compatibilità.
- Percorso di elaborazione nativa in float per giochi REV15+.
- Corretta conversione dei coefficienti con clamping.
- Inizializzazione dello stato del filtro migliorata.
ApplyBiquadFilterFloat2()per coefficienti nativi in float.
- Generazione dei Comandi:
- Selezione intelligente tra elaborazione in float e punto fisso.
- Rilevamento automatico delle capacità REV15 tramite behavior flags.
- Ottimizzazione multi-tap biquad per giochi REV10+.
- Integrazione corretta con i contesti di voce ed effetti.
- Gestione dei Parametri:
- Struct
VoiceInParameterV2(0x188 bytes) per voci REV15. InParameterVersion2b(0xA8 bytes) per destinazioni splitter.- Sistema di archiviazione doppio: biquads (s16) e biquads_float (f32).
- Calcolo corretto dello stride per supporto a revisioni miste.
- Struct
Miglioramenti UI/UX
- Finestra di Configurazione Regolabile: Finestra delle impostazioni ridimensionabile con supporto corretto allo scroll.
- Correzioni Tab Grafica & Sistema: Comportamento corretto di ridimensionamento e scroll.
- Sistema di Colori Accento: Tema UI personalizzabile con colori accento.
- Layout delle Colonne: Organizzazione migliorata delle colonne nella lista dei giochi.
- Interfaccia Gestione Stati: Interfaccia di gestione dei salvataggi migliorata.
Supporto del sistema di compilazione e del compilatore
- Supporto Compilatore Clang:
- Compilazione completa con Clang con supporto LTO.
- Risolti problemi di istanziazione dei template.
- Risolte soppressioni di warning.
- Gestione corretta degli attributi.
- Miglioramenti MSVC:
- Risolti i warning di troncamento C4305 nelle chiamate a QColor.
- Disabilitato il warning C2375 per la ridefinizione di
__builtin_assume_aligned. - Gestione corretta delle DLL runtime PGO.
- Miglioramenti CMake:
- Creazione automatica della directory utente per la modalità portatile.
- Migliorata la gestione delle dipendenze.
- Migliore configurazione cross-platform.
Supporto della piattaforma
- Miglioramenti Android:
- Risolto il crash immediato nell’overlay RAM.
- Visualizzazione della percentuale di batteria e della temperatura.
- Migliorata la gestione delle risorse.
- Framework Qt:
- Risolto l’uso di
QImage::mirrored()(veniva utilizzato erroneamente il metodo non esistenteflipped()). - Gestione corretta dei cambiamenti di stato.
- Migliore gestione degli eventi.
- Risolto l’uso di
Correzioni di bug
Correzioni critiche
- TotK/BotW Boot Loop: Corretta la mancata corrispondenza del numero di campionamento HID che impediva l’avvio del gioco:
- Il numero di campionamento dell’archiviazione atomica ora raddoppia correttamente il valore dello stato.
- Rilevamento del controller : Corretto il crash “nessun controller” correggendo lo stato di archiviazione atomica:
- Corretto SamplingNumber in LIFO ad anello.
- Corregge l’inizializzazione del controller di gioco SDK20.
- Bug Use-After-Free: Corretto il problema di sicurezza della memoria nei sistemi core.
- Arresto anomalo della sovrapposizione RAM su Android: Corretto l’arresto anomalo istantaneo quando si abilita la visualizzazione della RAM (credito al beta tester: Shadai theonlyshadai).
Correzioni audio
- Compatibilità REV15: L’elaborazione nativa float biquad previene la distorsione audio.
- Validazione dei parametri mix: Aggiunto controllo dei limiti per il conteggio mix in modalità parametro dirty.
- Coefficienti di galleggiamento dello splitter: Memorizza e applica correttamente i filtri biquad negli splitter.
- Stabilità audio: Corretti crash e crepitii nei giochi REV15.
Correzioni di compilazione
- Avvisi di Clang: Corretti tutti gli avvisi di compilazione di Clang.
- Troncamento MSVC: Corretti gli avvisi C4305 nella conversione del colore.
- Discord RPC: Applicata la patch di correzione wclass-memaccess
- RapidJSON: Patch di compatibilità del compilatore.
- Immagine STB: Patch di correzione dell’overflow (attenuazione CVE).
Correzioni dell’interfaccia utente
- Scorrimento della finestra di configurazione: Comportamento di scorrimento corretto in tutte le schede.
- Layout verticale Qt: Corretto l’utilizzo di valori deprecati.
- Eventi di modifica dello stato: Gestione corretta di checkStateChanged.
- Applicazione del tema: Corretta inclusione e inizializzazione di
theme.h.
Correzioni del sistema di compilazione
- Allineamento del buffer ad anello: Allineamento stabile e prevedibile a 64 byte.
- Dynarmic Fastmem: Rimosse le assegnazioni dei puntatori specifici di MSVC.
- Applicazione patch: Corretto l’utilizzo del flag
-p0nelle patch. - Intestazioni copyright: Aggiunte le intestazioni SPDX appropriate ai nuovi file.
Miglioramenti tecnici
Architettura del codice
Coefficiente di galleggiamento:
- Il sistema di archiviazione doppio per filtri biquad mantiene la precisione:
- Punto fisso legacy
s16per revisioni precedenti (REV1-14). - Float nativo
f32per precisione REV15+. - Selezione automatica basata su
IsVoiceInParameterV2Supported()
- Punto fisso legacy
- Compatibilità con le versioni precedenti completamente mantenuta.
Miglioramento del contesto Splitter:
- Supporto del formato dei parametri V2b (0xA8 byte).
- Stoccaggio del filtro Biquad nelle destinazioni splitter.
- Gestione corretta delle strutture dei parametri estesi.
- Gestione flag
splitter_float_coeff_supported.
Tipo di sicurezza:
- Aggiunti flag
use_float_biquadseuse_float_coefficients. - Gestione corretta dell’ambito per le strutture dei parametri
- Gestione degli errori migliorata per l’analisi dei parametri
- Eliminati i problemi di ombreggiatura variabile
Sistema shader
Implementazione ScaleFX:
- 6 modelli di rilevamento dei bordi (orizzontale, verticale, diagonale).
- Anti-aliasing sub-pixel con intensità configurabile (SFX_SAA).
- Regolazione della soglia del colore (SFX_CLR = 0,35).
- Gestione degli angoli per una qualità migliorata.
- Ottimizzazione FP16 con supporto per estensione AMD/NVIDIA.
Raffinamenti Lanczos:
- Calcolo ottimizzato della funzione sinc.
- Funzione finestra migliorata.
- Migliore gestione dei bordi.
Ottimizzazioni delle prestazioni
- Infrastruttura PGO: Ottimizzazione guidata dal profilo per guadagni del 10-30%.
- Monitoraggio della temperatura: Zero overhead quando disabilitato.
- Gestione buffer: Implementazione ottimizzata del buffer ad anello.
- Elaborazione FFT: Algoritmo efficiente di Cooley-Tukey.
Nuovi file aggiunti
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.h
Video 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.frag
Build System
CMakeModules/PGO.cmake
fix-pgo-dll.ps1
pgo-build.ps1
pgo-build.sh
File modificati (modifiche importanti)
Audio Core – Implementazione REV15
src/audio_core/common/feature_support.h: Revisione corrente 13 → 15src/audio_core/renderer/behavior/behavior_info.{cpp,h}: Aggiunti metodi di supporto REV15src/audio_core/renderer/behavior/info_updater.cpp: Analisi di VoiceInParameterV2src/audio_core/renderer/voice/voice_info.h: AggiuntoInParameter2e spazio di archiviazione biquad flottantesrc/audio_core/renderer/command/effect/biquad_filter.{cpp,h}: Elaborazione float nativasrc/audio_core/renderer/command/effect/multi_tap_biquad_filter.{cpp,h}: Supporto coefficiente floatsrc/audio_core/renderer/command/command_buffer.cpp: Generazione di comandi aggiornatasrc/audio_core/renderer/splitter/splitter_destinations_data.{cpp,h}: Supporto dei parametri V2bsrc/audio_core/renderer/splitter/splitter_context.{cpp,h}: Gestione del coefficiente floatsrc/audio_core/in/audio_in_system.{cpp,h}: Supporto per l’acquisizione di dispositivi
Core HID
src/hid_core/resources/ring_lifo.h: Correzione critica : sampling_number ora raddoppiato correttamente
Core video
src/video_core/renderer_opengl/gl_blit_screen.cpp: Integrazione ScaleFXsrc/video_core/renderer_opengl/present/filters.{cpp,h}: Fabbrica ScaleFXsrc/video_core/renderer_vulkan/vk_blit_screen.cpp: Integrazione ScaleFXsrc/video_core/renderer_vulkan/present/filters.{cpp,h}: Selezione dello shader ScaleFXsrc/video_core/host_shaders/CMakeLists.txt: Nuove registrazioni shader
Configurazione e interfaccia utente
src/common/settings.cpp: Gestione della risoluzione 0,25Xsrc/common/settings_enums.h: AggiuntiRes1_4XedScaleFxenumeratisrc/citron/configuration/shared_translation.{cpp,h}: ScaleFX e traduzioni 0.25Xsrc/citron/main.{cpp,h}: Monitoraggio della temperatura, miglioramenti dell’interfaccia utentesrc/citron/about_dialog.cpp: Versione 0.7.1 → 0.8.0- File di configurazione dell’interfaccia utente: finestre di dialogo ridimensionabili, colori di accento, layout migliorati
Sistema di compilazione
CMakeLists.txt: Integrazione del modulo PGO.src/audio_core/CMakeLists.txt: Aggiunti tutti i nuovi file audio..gitignore: Esclusioni del profilo PGO.
Problemi noti
- FSR2 e TAA rimangono sperimentali (dalla v0.7/v0.7.1).
- ScaleFX potrebbe mostrare artefatti con alcuni elementi dell’interfaccia utente a scale estreme.
- Risoluzione 0,25X contrassegnata come SPERIMENTALE – potrebbe causare problemi di rendering in alcuni giochi.
- PGO richiede due cicli di build completi (comportamento previsto).
- Il monitoraggio della temperatura richiede il supporto del sensore hardware (potrebbe indicare 0°C su alcuni sistemi).
Download: Citron v0.8.0 (Linux/Windows/Android)
Fonte: git.citron-emu.org
![[Scena DS] Rilasciato SpeccySE v1.7a e v1.7b: corretti crash e problemi di caricamento su Nintendo DS](https://www.biteyourconsole.net/wp-content/uploads/SpeccySE-1-238x178.webp)

![[Scena PS Vita] Rilasciato Apollo Save Tool Vita v2.0.4 ora con supporto multilingua e miglioramenti tecnici](https://www.biteyourconsole.net/wp-content/uploads/ApolloSaveToolVita-238x178.jpg)
![[Scena DS] Rilasciato SpeccySE v1.7a e v1.7b: corretti crash e problemi di caricamento su Nintendo DS](https://www.biteyourconsole.net/wp-content/uploads/SpeccySE-1-100x75.webp)

![[Scena PS Vita] Rilasciato Apollo Save Tool Vita v2.0.4 ora con supporto multilingua e miglioramenti tecnici](https://www.biteyourconsole.net/wp-content/uploads/ApolloSaveToolVita-100x75.jpg)


