L’ultimo report sui progressi raggiunti dall’emulatore Yuzu riprende nuove caratteristiche e funzioni come Project Gaia, pieno supporto Amiibo, ulteriori informazioni su Project Y.F.C e quant’altro.
Strizza l’occhio l’emulazione di The Legend of Zelda: Tears of the Kingdom, il gioco ha sorpreso per la sua capacità di girare su hardware molto vecchio, come un tablet del 2015, dimostrando una grande ottimizzazione.
Inoltre, ha introdotto una sfida per gli emulatori su PC a causa dell’uso intensivo di texture ASTC, che richiedono una decodifica particolare non supportata da molte schede grafiche. Nonostante ciò, il gioco ha ricevuto un’ampia lode per la sua qualità e innovazione nel gameplay open-world.
In sintesi, le modifiche apportate nel programma, riguarderebbero principalmente la gestione della VRAM (memoria video) e la ricompressione delle texture ASTC (Adaptive Scalable Texture Compression) per ridurre l’utilizzo della VRAM.
Inizialmente, l’emulatore Yuzu ha riscontrato problemi di prestazioni a causa dell’elevato consumo di VRAM, specialmente su schede grafiche con capacità limitata.
Per affrontare questo problema, sono state apportate diverse modifiche, come l’uso di flag di proprietà di memoria incompatibili quando l’allocatore di memoria Vulkan era sotto pressione, causando arresti anomali delle GPU con VRAM bassa.
Migliorata inoltre la gestione della memoria per mantenere le allocazioni nella VRAM, evitando il lento trasferimento verso la RAM di sistema. Questo ha portato a un gameplay più fluido, anche su GPU con VRAM da 4 GB.
Introdotta anche la ricompressione delle texture ASTC in formati più piccoli, come BC1 e BC3, per ridurre ulteriormente l’utilizzo della VRAM. Sono state fornite diverse opzioni di compressione con diversi livelli di qualità e riduzione dell’utilizzo della VRAM.
Tuttavia, è stato sottolineato che la ricompressione ASTC funziona solo su texture ASTC, quindi l’effetto sulla VRAM dipende dal gioco e non tutte le risorse sono in formato ASTC.
Altre modifiche includono l’ottimizzazione del gestore della memoria per migliorare la stabilità del gioco su sistemi con meno RAM e la correzione di bug di rendering specifici che interessavano il gioco “The Legend of Zelda: Tears of the Kingdom”.
Complessivamente, queste modifiche hanno lo scopo di consentire un gameplay più fluido e stabile su hardware con VRAM limitata e di ottimizzare l’utilizzo della VRAM nelle situazioni di stress.
Project Lime
L’implementazione di Yuzu per dispositivi Android è stata un’impresa impegnativa che ha richiesto quasi otto mesi di duro lavoro. Tuttavia, i risultati sono impressionanti: l’esperienza di gioco su dispositivi Android è ora molto simile a quella offerta dalla versione desktop.
Gli utenti possono godere di funzionalità come il supporto ai giochi a 32 bit, la decodifica video NVDEC, il rilevamento del movimento, l’automapping dei controller, la scalabilità della risoluzione e i filtri.
Tuttavia, il team di sviluppo sottolinea che ci sono ancora alcune caratteristiche in fase di sviluppo, come la gestione delle mod e dei cheat, LDN e l’applet di configurazione del controller.
L’obiettivo finale è raggiungere la parità con la versione per PC, offrendo agli utenti un’esperienza di gioco completa e senza compromessi.
Uno dei maggiori ostacoli affrontati nel processo di porting su Android riguarda i driver GPU forniti dai produttori di SoC.
Nonostante gli sforzi congiunti per migliorare il supporto a Vulkan, solo pochi produttori, come NVIDIA, AMD, Mesa e Intel, hanno dimostrato l’esperienza e l’impegno necessari per fornire driver stabili e conformi.
Di conseguenza, il supporto attuale si concentra principalmente su dispositivi con SoC Qualcomm, che offrono un supporto GPU relativamente migliore rispetto ad altri fornitori.
Il team di sviluppo sta lavorando duramente per migliorare la compatibilità con altre GPU, come le serie Mali e l’AMD RDNA2-based Xclipse 920 di Samsung. Tuttavia, queste richiedono ulteriori sforzi e tempo di sviluppo per superare le sfide tecniche presenti nei driver proprietari disponibili.
Per quanto riguarda i requisiti hardware, si consiglia di utilizzare dispositivi con CPU dotate di almeno 6 core e alta IPC per prestazioni ottimali.
La RAM consigliata è di almeno 8 GB, dato che i giochi complessi potrebbero richiedere ancora più memoria. Inoltre, è necessario avere dispositivi con Android 11 a 64 bit per garantire la compatibilità.
Nonostante le sfide incontrate lungo il percorso, il team di sviluppo di Yuzu ha realizzato un’implementazione impressionante dell’emulatore per dispositivi Android.
Gli utenti possono godere dei loro giochi preferiti di Nintendo Switch in movimento, personalizzando le opzioni di gioco, sfruttando l’overlay di input con feedback tattile e gestendo facilmente i salvataggi.
Infine, gli sviluppatori consigliano di creare una cartella dedicata a yuzu nella memoria dello storage per evitare eventuali problemi di autorizzazioni del file system di Android.
In definitiva, l’introduzione di Yuzu su dispositivi Android rappresenta una nuova frontiera per gli appassionati dei giochi portatili. Grazie agli sforzi del team di sviluppo, è possibile portare l’esperienza di gioco di Nintendo Switch ovunque si vada.
Con ulteriori miglioramenti in corso, ci aspettiamo che Yuzu per Android diventi ancora più solido e ricco di funzionalità nel prossimo futuro, regalando ai fan di Nintendo un modo unico e coinvolgente per immergersi nei loro giochi preferiti.
Altre modifiche grafiche
Oltre alle migliorie menzionate in precedenza, sono stati introdotti altri cambiamenti grafici e ottimizzazioni. Ecco alcuni dei punti salienti:
- Reactive Flushing: Blinkhawk, uno degli sviluppatori, ha implementato un nuovo sistema chiamato Reactive Flushing per affrontare varie regressioni grafiche. Questo sistema risolve problemi come ombre e illuminazione errate in giochi come Bayonetta 2 e Xenoblade Chronicles, migliora le prestazioni in giochi che richiedono molte risorse come Monster Hunter Rise e risolve parzialmente miniature e foto in giochi come ASTRAL CHAIN e Luigi’s Mansion 3.
- Opzioni VSync in Vulkan: toastUnlimited, un altro sviluppatore, ha aggiornato l’interruttore VSync nel menu Grafica per Vulkan, offrendo agli utenti più opzioni. Oltre all’interruttore semplice on/off, ora è possibile scegliere tra le opzioni Immediate, FIFO, Relaxed FIFO e Mailbox. L’opzione consigliata per la maggior parte dei giochi è Mailbox, che offre il triplo buffering e evita il tearing, consentendo al contempo framerate superiori alla frequenza di aggiornamento del display.
- Miglioramenti nella cache dei pipeline e nell’utilizzo della RAM: Maide ha apportato diversi miglioramenti relativi alla cache dei pipeline e all’utilizzo della memoria. La dimensione della cache dei pipeline viene ora calcolata correttamente, risolvendo problemi di stabilità e utilizzo della memoria. Gli utenti con 8 GB di RAM potrebbero riscontrare una maggiore stabilità man mano che vengono aggiunti nuovi shader alla cache dei pipeline. Tuttavia, per prestazioni ottimali, è consigliabile disporre di 16 GB di RAM.
- Correzioni per le texture ASTC: Sono state risolte le problematiche legate al rendering delle texture ASTC (Adaptive Scalable Texture Compression). Un bug nell’implementazione delle texture ASTC in 3D causava problemi di rendering in giochi come Donkey Kong Country: Tropical Freeze. Il problema è stato risolto, migliorando il rendering di tali texture.
- Ottimizzazione della cache dei buffer: Maide ha ottimizzato il codice della cache dei buffer, migliorando la sincronizzazione e il monitoraggio delle modifiche ai buffer da parte della CPU e della GPU. Questa ottimizzazione risolve i problemi in cui alcuni disegni ignoravano gli scambi di canali e utilizzavano valori errati dal canale sbagliato nei buffer uniformi.
- Selezione del render target: Maide ha risolto un problema riguardante la selezione del render target da cancellare. La nuova implementazione garantisce la cancellazione del render target corretto, evitando errori potenziali e migliorando l’efficienza.
- Aggiornamenti del descriptor set: È stata migliorata la gestione degli aggiornamenti del descriptor set nell’API Vulkan. Sono state introdotte code separate per i pipeline di calcolo dell’host e dell’ospite, evitando problemi di integrità dei dati e migliorando la stabilità. Questo cambiamento risolve i crash casuali in giochi come Xenoblade Chronicles, Luigi’s Mansion 3 e Bayonetta 3.
- Correzioni per il rendering dei video: Sono stati apportati diversi miglioramenti al rendering dei video. Sono stati aggiunti i bitflag mancanti nell’intestazione responsabile della decodifica dei video H.264, risolvendo il rendering dei video in Layton’s Mystery Journey: Katrielle and the Millionaires’ Conspiracy. È stato inoltre aggiunto il supporto per la riproduzione dei video deinterlacciati utilizzando il filtro yadif di FFmpeg.
- Altre correzioni varie: Sono stati apportati vari altri fix e ottimizzazioni, tra cui miglioramenti di compatibilità con il driver Vulkan Mesa di Linux di Intel, migliorie delle prestazioni in Vulkan, correzioni per problemi legati ad OpenGL e miglioramenti delle app console homebrew per evitare crash.
Questi cambiamenti grafici e ottimizzazioni mostrano gli sforzi in corso del team di sviluppo di yuzu per migliorare la compatibilità, le prestazioni e la stabilità per una gamma più ampia di giochi e configurazioni hardware.
Project Gaia-lite
Project Gaia-lite ha portato all’implementazione di diverse modifiche al sistema di file in modo autonomo, fornendo un’anteprima di ciò che sarà possibile nel prossimo futuro.
Una situazione interessante riguarda il tempo di avvio dei giochi come Fire Emblem Engage o Animal Crossing: New Horizons con mod. In passato, l’implementazione precedente rallentava in modo quadratico all’aumentare del numero di file nel gioco, il che causava lunghi tempi di caricamento.
Tuttavia, grazie a un’ottimizzazione che ha corretto questa complessità temporale, i tempi di avvio sono stati drasticamente ridotti.
Ad esempio, Fire Emblem Engage ora richiede solo tre secondi per avviarsi anziché un minuto e mezzo, mentre Animal Crossing: New Horizons si avvia in un secondo e mezzo invece di un minuto.
Ma non era solo il tempo di avvio che era soggetto a rallentamenti quadratici. Anche le letture aumentavano in modo quadratico in base al numero di file, ma ora questa situazione è stata ottimizzata, migliorando i tempi di caricamento all’interno del gioco, oltre a quelli di avvio.
Inoltre, è stata individuata un’altra fonte di rallentamento derivante dalla copia e cancellazione non necessaria di stringhe, e questo problema sarà affrontato in futuro tramite il Project Gaia.
Infine, per avviare The Legend of Zelda: Tears of the Kingdom, è stato necessario rendere stub un lettore di dati salvati per la memoria cache.
Oltre a queste modifiche al sistema di file, sono stati apportati anche miglioramenti nell’input e nell’uso degli Amiibo. Ad esempio, i possessori del controller DualSense di Sony possono ora godere di un’esperienza di vibrazione migliorata grazie all’implementazione dell’emulazione della vibrazione HD.
Inoltre, è stata aggiunta un’opzione di ricalibrazione per affrontare il drift del movimento, e ora c’è una generazione casuale di nuovi ID per gli Amiibo.
Infine, sono state apportate modifiche all’emulazione audio per supportare il decodificatore SBR per la decodifica AAC, risolvendo così il problema del suono tagliato per i possessori di schede audio Creative con frequenze di campionamento superiori.
Fonte e download: yuzu-emu.org