Citron, uno dei pochi emulatori Nintendo Switch ancora attivi e derivato da Yuzu, ha ricevuto un aggiornamento di rilievo con la versione 0.7.1, che prosegue il lavoro iniziato con la 0.7, caratterizzata da una profonda riscrittura del codice.

Dopo la chiusura forzata di Yuzu e la sospensione dello sviluppo di Ryujinx, il panorama dell’emulazione Switch è rimasto instabile, ma Citron è riuscito a mantenere un ciclo di aggiornamenti costante insieme ai progetti affini Ryubing ed Eden, nati da fork interni.
Questa nuova versione introduce numerose migliorie tecniche e funzionali, pensate per rendere l’esperienza di gioco più fluida, stabile e personalizzabile.
Sul fronte dei controlli, è stato introdotto il supporto alla rotellina del mouse e migliorata la gestione del sensore SixAxis, aumentando la precisione e la stabilità dei controller.
Dal punto di vista visivo, l’emulatore ora include un moderno overlay per il monitoraggio della VRAM, un sistema di anti-aliasing temporale (TAA) compatibile sia con OpenGL che con Vulkan e un’interfaccia di performance overlay più flessibile e compatibile con Wayland.
In ambito audio, questa versione introduce il renderer REV13, migliorando la compatibilità con diversi giochi e risolvendo numerosi crash e problemi di stabilità, mentre la versione REV15 è ancora in fase di sviluppo.
Rielaborato inoltre il sistema di gestione della memoria video, con l’aggiunta di modalità “High-End VRAM” e “Insane VRAM” per ottimizzare l’uso della memoria e prevenire perdite, oltre alla possibilità di ridurre l’accuratezza GPU per migliorare le prestazioni su hardware meno potenti.
L’aggiornamento segna anche una completa migrazione del progetto verso Qt6, con ottimizzazioni specifiche per Wayland e la risoluzione di diversi problemi di compilazione su Linux e Android.
Sono stati migliorati i sistemi di build e integrazione continua (CI/CD) con una revisione della pipeline GitLab, una gestione più stabile delle dipendenze e una migliore integrazione con Boost.Process.
Dal punto di vista tecnico, il ricompilatore degli shader introduce l’istruzione ISBERD per una lettura più efficiente dei buffer interni, mentre il sistema di memoria include il supporto per lo “ZBC Clear” in OpenGL e importanti correzioni alle perdite di memoria.
Sono stati anche implementati nuovi servizi di rete, sicurezza e account (NIM, SSL/TLS, ACC:U0) in conformità con le specifiche SwitchBrew.
L’aggiornamento risolve diversi problemi critici, tra cui dereferenziazioni di puntatori nulli, crash legati al sistema audio e instabilità del Service Manager.
Corrette anche incompatibilità grafiche su Android, Wayland e X11, oltre a vari problemi di interfaccia utente come il ridimensionamento delle finestre e la gestione dell’overlay delle prestazioni.
Alcune modifiche, tra cui l’implementazione ISBERD e parte degli aggiornamenti audio, sono state temporaneamente annullate per motivi di stabilità.
A livello di ottimizzazione generale, Citron introduce un miglior controllo dei tipi di variabili, una gestione più rigorosa degli errori e una pulizia del codice per garantire compatibilità e sicurezza.
Sono state inoltre migliorate le prestazioni grazie alla correzione di problemi di compatibilità con la memoria veloce, al miglior funzionamento della presenza su Discord e a un trattamento più efficiente delle variabili d’ambiente.
Il sistema di aggiornamento automatico ora è opzionale, sono stati aggiunti miglioramenti ai test e al reporting degli errori, e il recupero dai crash è più affidabile. Tuttavia, alcune funzioni come l’implementazione FSR2 rimangono sperimentali e richiedono ulteriori ottimizzazioni.
Gli sviluppatori precisano che il supporto per The Legend of Zelda: Breath of the Wild e Tears of the Kingdom (rispettivamente nelle versioni 1.8.2 e 1.4.2) sarà introdotto nel prossimo aggiornamento.
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
Nuove Funzionalità
Input e Controlli
- Supporto Rotellina del Mouse: Aggiunto supporto alla rotellina del mouse per il passthrough dell’input di gioco, migliorando l’esperienza su desktop.
- Validazione Sensore SixAxis: Migliorata la validazione del sensore SixAxis e la gestione degli errori per una maggiore stabilità del controller.
Miglioramenti Visivi
- Overlay Monitoraggio VRAM: Aggiunto un moderno overlay per il monitoraggio della VRAM con un’interfaccia pulita e priva di elementi superflui.
- Anti-Aliasing Temporale (TAA): Implementato il supporto TAA per i renderer OpenGL e Vulkan.
- Miglioramenti Overlay Prestazioni: Migliorato l’overlay delle prestazioni con funzionalità di trascinamento e compatibilità Wayland.
Sistema Audio
- Renderer Audio REV13: Aggiunto il supporto al renderer REV13 per una compatibilità più ampia con i giochi.
- Stabilità Audio: Migliorata significativamente la stabilità audio e risolti diversi crash.
- Renderer Audio REV15: Attualmente ancora in fase di sviluppo.
Gestione VRAM
- Modalità High-End VRAM: Aggiunta una modalità VRAM avanzata con uso ottimizzato della memoria.
- Modalità Insane VRAM: Implementata una modalità “Insane” con meccanismi di prevenzione delle perdite di memoria.
- Impostazione Bassa Accuratezza GPU: Aggiunta un’impostazione di bassa accuratezza GPU per massimizzare le prestazioni su hardware meno potenti.
Supporto Piattaforme
- Migrazione a Qt6: Migrazione completa a Qt6 con integrazione di aqtinstall 3.3.0.
- Ottimizzazioni Wayland: Aggiunte ottimizzazioni specifiche per l’interfaccia e le prestazioni su Wayland.
- Correzioni Compilazione Linux: Risolti diversi problemi di compilazione Linux e conflitti di macro X11.
Miglioramenti
Sistema di Build e CI/CD
- Revisione Completa CI GitLab: Revisione completa della pipeline CI di GitLab con configurazioni di build migliorate.
- Correzioni Build Android: Sistemate configurazioni e dipendenze della build Android.
- Compilazione Multipiattaforma: Risolti problemi di compilazione su Linux, Android e Windows.
- Integrazione Boost.Process: Migliorata l’integrazione di Boost.Process con gestione opzionale dei componenti.
Ricompilatore Shader
- Istruzione ISBERD: Implementata l’istruzione ISBERD per letture interne dei buffer di fase (con corretta gestione degli errori).
- Confronto visivo tra versione 0.7 e 0.7.1 per l’implementazione ISBERD.
Gestione Memoria
- Supporto ZBC Clear: Aggiunto supporto ZBC Clear per OpenGL e riorganizzato il sistema di gestione ZBC.
- Correzioni Perdite di Memoria: Risolte numerose perdite di memoria e migliorata la stabilità.
- Prevenzione Perdite VRAM: Migliorata la prevenzione delle perdite VRAM in modalità “Insane”.
Implementazione Servizi
- Servizi NIM: Implementati correttamente i servizi NIM (Network Interface Management).
- Servizi SSL/TLS: Implementazione completa dei servizi SSL/TLS con corretta gestione degli errori.
- Servizio ACC:U0: Implementate le funzioni mancanti acc:u0 in base alle specifiche SwitchBrew.
Correzioni di Bug
Correzioni Critiche
- Dereferenziazione Puntatore Nullo: Risolto un grave problema di dereferenziazione di puntatore nullo in patch_manager.cpp.
- Perdite di Memoria: Risolte numerose perdite di memoria in vari componenti.
- Crash Audio: Risolti crash e problemi di stabilità legati al sistema audio.
- Crash Service Manager: Risolti crash in chiusura dovuti a puntatori nulli nel ServiceManager.
Correzioni Specifiche per Piattaforma
- Rapporto d’Aspetto Android: Corretto crash del rapporto d’aspetto per impostazioni diverse da 16:9.
- Compatibilità Wayland: Corrette problematiche dell’interfaccia e dell’overlay prestazioni su Wayland.
- Conflitti Macro X11: Risolti conflitti tra valori enum e costanti Qt.
- Compilazione Linux: Risolti vari problemi di compilazione e dipendenze su Linux.
Correzioni UI/UX
- Ridimensionamento Finestra Proprietà: Corretto il ridimensionamento della finestra proprietà.
- Overlay Prestazioni: Corretto il funzionamento del trascinamento dell’overlay prestazioni.
- Overlay VRAM: Pulito il layout dell’overlay VRAM e rimossi elementi visivi superflui.
- Interfaccia Wayland: Corrette problematiche dello strato UI e delle funzionalità di attivazione/disattivazione.
Correzioni Sistema di Build
- Configurazione CMake: Risolti errori nei target_compile_definitions di CMake.
- Boost.Process: Risolti problemi con i componenti opzionali di Boost::process.
- Generazione MOC Qt: Corrette le generazioni MOC Qt per i componenti compilati condizionalmente.
- Inizializzazione Submodule: Risolti problemi di inizializzazione dei submodule in GitLab CI.
Modifiche Revertite
- Implementazione ISBERD: Temporaneamente revertita a causa di problemi di stabilità.
- Miglioramenti Audio: Revertiti alcuni miglioramenti che causavano instabilità.
- Correzioni Macro X11: Annullate alcune correzioni che avevano introdotto nuovi problemi.
Miglioramenti Tecnici
Qualità del Codice
- Correzioni Static Cast: Aggiunto uso corretto di static_cast per maggiore sicurezza nei tipi.
- Inizializzazione Variabili: Corrette variabili non inizializzate.
- Gestione Errori: Migliorata la gestione degli errori in più componenti.
Prestazioni
- Puntatore Fastmem: Risolti problemi di compatibilità dei tipi per fastmem_pointer in dynarmic.
- Discord Rich Presence: Corretto il timer e i problemi di compilazione.
- Variabili d’Ambiente: Migliorata la gestione di SSL e delle variabili Wayland.
Dipendenze
- RapidJSON: Aggiunta patch del compilatore per una migliore compatibilità.
- STBI: Aggiunta definizione STBI_NO_SIMD per prestazioni migliorate.
- Aggiornamento Automatico: Reso opzionale tramite l’opzione CITRON_USE_AUTO_UPDATER.
Test e Validazione
- Migliorata la copertura dei test per le nuove funzionalità.
- Rafforzata la segnalazione degli errori e le capacità di debug.
- Migliorati i meccanismi di recupero dai crash.
Problemi Noti
- L’implementazione FSR2 rimane sperimentale (come indicato nella versione 0.7).
- Alcuni handle di eventi kernel necessitano ancora di completamento.
- Le ottimizzazioni Wayland potrebbero richiedere ulteriori aggiustamenti.
- Il supporto per BOTW/TOTK sarà incluso nel prossimo aggiornamento per le versioni 1.8.2 / 1.4.2.
Download: Citron v0.7.1 (Linux/Windows/Android)
Fonte: reddit.com
![[Scena Switch] Rilasciato ldn_mitm v1.20.1 con supporto per il nuovo firmware 21.X.X](https://www.biteyourconsole.net/wp-content/uploads/SwitchLan1.jpg)
![[Scena 3DS] Nimbus v2.0.0 diventa stabile su Nintendo 3DS: gestione account Pretendo migliorata e nuove basi per l’online](https://www.biteyourconsole.net/wp-content/uploads/PretendoNimbus-238x178.webp)
![[Scena PS5] Rilasciato ps5-payload-elfldr v0.21.2: loader ELF per PS5 jailbroken con ptrace e persistenza](https://www.biteyourconsole.net/wp-content/uploads/PS5Xplorer-238x178.webp)
![[Scena 3DS] Nimbus v2.0.0 diventa stabile su Nintendo 3DS: gestione account Pretendo migliorata e nuove basi per l’online](https://www.biteyourconsole.net/wp-content/uploads/PretendoNimbus-100x75.webp)
![[Scena PS5] Rilasciato ps5-payload-elfldr v0.21.2: loader ELF per PS5 jailbroken con ptrace e persistenza](https://www.biteyourconsole.net/wp-content/uploads/PS5Xplorer-100x75.webp)
![[Scena PS3] Rilasciato ps3netsrv-android v0.4 Alpha](https://www.biteyourconsole.net/wp-content/uploads/PS3NetSRV1A-100x75.webp)
![[Scena PC] Disponibile un nuovo aggiornamento per il browser web Firefox](https://www.biteyourconsole.net/wp-content/uploads/w10-en.jpg)
