Home Mobile Android Online il nuovo report sui progressi raggiunti dall’emulatore Yuzu nel mese di...

Online il nuovo report sui progressi raggiunti dall’emulatore Yuzu nel mese di settembre

526
0

Pubblicato un nuovo report sui progressi raggiunti nel mese di settembre da Yuzu, il popolare emulatore della console Switch per PC Windows, MacOS, Linux e dispositivi Android.

Nel corso dell’ultimo mese, sono state apportate diverse novità interessanti. Sono emersi correzioni per Mii, cambiamenti nella GPU, miglioramenti su Android e altro ancora.

https://twitter.com/yuzuemu/status/1715456839578693925

Da un po’ di tempo è possibile caricare i Mii predefiniti nei giochi supportati su Yuzu. Tuttavia, l’implementazione di Yuzu del servizio Mii non aveva il supporto necessario per il database dei Mii.

Il database dei Mii è un file salvato sulla console Nintendo Switch che può contenere fino a 100 Mii. Senza il giusto supporto per questo database all’interno del servizio Mii, era impossibile caricare i Mii personalizzati.

Per questo, lo sviluppatore german77, ha intrapreso un’avventurosa missione per testare l’applet MiiEdit come parte del suo continuo impegno a far funzionare senza problemi gli applet di sistema su Yuzu.

Inizialmente, le cose stavano procedendo bene, ma i suoi sforzi sono stati ostacolati quando i blocchi software durante l’avvio dell’applet sono diventati un problema ricorrente.

Sospettando che dati errati dal servizio Mii potessero essere la causa di questi blocchi software, german77 decise di intraprendere il compito di decodificare completamente il servizio Mii.

I suoi sforzi dedicati hanno portato a un servizio Mii quasi completamente implementato, con l’unica parte mancante che è la capacità di inviare e ricevere Mii da utenti nelle vicinanze.

Questa completa implementazione ha comportato la correzione di alcuni codici più vecchi, la riorganizzazione delle strutture dei dati e, finalmente, il supporto per il tanto atteso database Mii.

Gli utenti avventurosi hanno la possibilità di caricare i propri personaggi Mii in qualsiasi gioco posizionando il file del database della loro console in %appdata%/yuzu/nand/system/save/8000000000000030/MiiDatabase.dat.

Con il completamento del servizio Mii, lo sviluppatore Narr si spinse a far funzionare l’applet MiiEdit senza problemi su Yuzu. Grazie all’assistenza di troubleshooting di byte[], alla fine è riuscito a farlo funzionare.

L’ultimo pezzo del puzzle era il completamento del supporto del database Mii per l’applet, e con questa aggiunta fondamentale, la funzionalità Mii di Yuzu ora appariva più robusta che mai.

Gli utenti ora possono creare, modificare e salvare i loro Mii utilizzando il nuovo applet MiiEdit tramite Tools > Open Mii Editor, e i giochi possono generare automaticamente un Mii casuale per i giocatori senza crash.

Sulla base del successo dell’applet MiiEdit, il developer Narr ha continuato la sua striscia produttiva implementando completamente il supporto per l’applet Cabinet.

L’applet Cabinet, se non ne eravate già a conoscenza, è l’applet per la gestione degli amiibo. Con queste modifiche recenti, gli utenti possono registrare, rinominare, eliminare e ripristinare i dati degli amiibo tramite Tools > Amiibo.

Cambiamenti nella grafica

Dopo aver ricevuto segnalazioni di crash durante l’esecuzione di Pikmin 4 su Linux, il developer byte[] ha scoperto che il gruppo Khronos aveva rimosso la possibilità di dichiarare un OpTypeSampledImage per le texture del buffer dalla versione più recente della specifica SPIR-V, il backend shader utilizzato da Yuzu per il supporto Vulkan.

Questa è una situazione estremamente insolita: di solito si preferisce una deprecazione (per non influenzare il codice precedente).

Mesa, essendo l’esempio classico di un’applicazione che segue la specifica, ha seguito questa modifica, costringendo gli sviluppatori a saltare i campionatori per le texture del buffer.

Con queste strane decisioni su Vulkan gestite correttamente, Pikmin 4 è nuovamente giocabile per coloro che utilizzano i driver Mesa.

Parlando di Pikmin 4, e di Master Detective Archives: RAIN CODE, Lo sviluppatore byte[] è infine riuscito a individuare la causa dei problemi di illuminazione e del rendering di facce sbagliate che colpivano rispettivamente il primo e il secondo gioco.

byte[] ha notato un errore di convalida aggiuntivo che Mesa forniva durante la risoluzione del problema con i buffer campionati.

L’emettitore SPIR-V di Yuzu stava generando operazioni atomiche su un’immagine senza tipo, cosa che la specifica SPIR-V non ha mai permesso.

Dopo un falso avvio cercando di evitare le immagini senza tipo, ha individuato il vero colpevole: il codice per la generazione degli atomi SPIR-V utilizzava in modo errato l’indice dell’immagine anziché il descrittore designato.

La correzione di questo comportamento dello shader ha risolto l’illuminazione del faro richiesta in sezioni buie specifiche di Pikmin 4 e le espressioni facciali dei personaggi in Master Detective Archives: RAIN CODE.

Ad un certo punto, il developer GPUCode scese in campo unendosi alla mischia introducendo gli upload di buffer di comando separati.

Ciò comporta un leggero aumento delle prestazioni, dovuto alla riduzione delle interruzioni della passata di renderizzazione, il che aiuta notevolmente le GPU mobili.

Più grande è la passata renderizzazione, più a lungo le GPU mobili possono mantenere i dati nella memoria a celle, quindi interromperla è un’operazione costosa. Le GPU dedicate traggono beneficio da questo cambiamento, ma molto meno.

Questo porta ad un aumento delle prestazioni dell’8% in alcuni giochi con un 5800X3D. I sistemi di fascia bassa potrebbero ottenere guadagni più consistenti.

GPUCode ha combattuto anche contro i problemi di rendering che colpivano Mortal Kombat 1 e Sonic Forces quando si utilizzava Vulkan.

Per coloro che conoscono a fondo la storia di Yuzu, questa è un’implementazione dello shader di copia immagine MSAA tramite un compute shader, simile a quanto ha fatto epicboy lo scorso febbraio. Come detto allora, rispetto a OpenGL, Vulkan richiede molto più lavoro.

I giocatori di The Legend of Nayuta: Boundless Trails e altri giochi Falcom come la serie The Legend of Heroes hanno segnalato che il testo veniva visualizzato in modo errato, con strani evidenziazioni di colore.

GPUCode ha indagato su questo e ha scoperto che l’emulatore stava utilizzando l’ordine sbagliato dei componenti del colore (BGR contro RGB, ad esempio) per il formato di texture A4B4G4R4_UNORM.

Invece, A4B4G4R4_UNORM_PACK16_EXT ha l’ordine che il gioco si aspetta, garantendo un rendering corretto.

Continuando questa tendenza di correzioni delle texture, lo sviluppatore GPUCode ha individuato anche un bug nella gestione delle texture sRGB.

Il problema era che le texture sRGB non potevano essere utilizzate come immagini di memorizzazione negli shader.

La soluzione era quella di creare la texture come linear, che è un altro spazio colore che non ha correzione gamma, e quindi utilizzare una vista sRGB per accedervi.

In questo modo, la texture può essere utilizzata come immagine di memorizzazione e avere comunque i colori corretti.

Tuttavia, questa soluzione ha avuto un effetto collaterale non voluto. Quando la texture veniva utilizzata direttamente senza la vista, ad esempio quando veniva risolta copiandola in un’altra immagine, i colori venivano visualizzati in modo errato perché lo spazio colore era cambiato.

Per risolvere questo problema, il pull request garantisce che la creazione sRGB sia vietata solo durante la trascodifica, il che significa che si applica sempre tranne che durante la conversione di formati compressi in formati non compressi sulla GPU.

In questo modo, la texture viene creata come sRGB e ha i colori corretti in entrambi i casi.

Grazie a questo, Momotaro Dentetsu e Star Ocean First Departure R ora possono essere resi con gli stessi colori e la gamma intesi dagli sviluppatori.

Ora tocca ai classici fan delle visual novel di Key. Gli utenti hanno segnalato che i giochi avevano fastidiosi lampeggi. La causa, come ha scoperto Maide, è dovuta al fatto che il rendering per questi giochi classici è particolarmente specifico.

La maggior parte dei giochi crea un singolo target di rendering su un singolo indirizzo, sia a 1080p che a 720p.

Le visual novel di Key invece utilizzano lo stesso indirizzo per creare sia i target di rendering a 720p che a 1080p, con il target a 1080p creato per primo, ma mai utilizzato. Di default, Yuzu sceglie sempre il primo target di rendering.

Questo non era un problema per gli altri giochi, ma per questo motore, la cache delle texture rilevava costantemente l’immagine sbagliata, causando la visualizzazione di un frame nero tra due frame validi, con il rischio di provocare fastidiosi e pericolosi lampeggi per chi soffre di epilessia fotosensibile.

Cambiando il comportamento di Yuzu in modo da cercare l’immagine più di recente da presentare, il problema è completamente risolto e gli utenti possono ora leggere intere notti giocando a questi giochi senza fastidiosi lampeggi.

Per concludere questa sezione, Blinkhawk ha corretto anche alcune perdite di memoria causate dalla recente riscrittura della cache delle query.

Aggiunte su Android

Lo sviluppatore t895, appassionato di Terminator e Nier: Automata, continua, insieme ad altri membri del team a lavorare duramente per migliorare l’esperienza della versione Android:

  1. Corretta una limitazione hardware esposta dalla Riscrittura della Cache Buffer del Progetto Y.F.C. Questo cambiamento è stato effettuato da GPUcode.
  2. Corretto un bug che faceva ripristinare alcune impostazioni temporanee all’avvio dell’emulazione, ad esempio, “Limita la velocità dell’emulazione”.
  3. Corretta una problematica in cui le scorciatoie dei giochi apparivano tagliate su alcuni dispositivi.
  4. Ridotta la quantità di thread di lavoro per la compilazione degli shader a uno, con l’obiettivo di ridurre il consumo di memoria.
  5. Corrette ulteriori problematiche relative all’orientamento dello schermo e all’aspetto dei rapporti tra larghezza e altezza.
  6. Corretta una problematica in cui l’overlay di input veniva disegnato al di fuori dello schermo su alcuni dispositivi.
  7. Corretta una problematica in cui l’attività delle impostazioni appariva opaca in modalità landscape mentre si utilizzava la navigazione a 3 pulsanti.
  8. L’apertura accidentale del menu in-game durante l’animazione di caricamento è ora corretta.
  9. Sono state corrette diverse situazioni di crash legate alla configurazione iniziale, all’attività di emulazione e al frammento di emulazione.
  10. L’emulatore ora ricaricherà correttamente il file delle impostazioni dopo il ripristino di tutte le impostazioni.
  11. Infine, è stato introdotto un nuovo menu delle impostazioni che unifica tutte le installazioni di contenuti in un’unica posizione. Gli utenti ora possono accedere al menu “Gestisci dati yuzu” per importare/esportare firmware, salvataggi, dati utente e installare contenuti di gioco, console e chiavi Amiibo. La nuova opzione “Dati utente” consente agli utenti di eseguire il backup e il ripristino di tutti i dati dell’app, utile ad esempio durante la migrazione tra diverse versioni, come da una versione GitHub a una versione Play Store.

Cambiamenti audio

Lo sviluppatore Maide ha lavorato duramente ad una riscrittura del servizio Opus hardware, responsabile della gestione della decompressione dell’audio in formato Opus nei giochi.

La vecchia implementazione mancava di diverse funzioni documentate dalla community dell’ingegneria inversa, su cui questa riscrittura si è concentrata maggiormente.

Ora l’implementazione hardware di Opus corrisponde alle informazioni attuali disponibili. Maide ha anche colto l’occasione per spostare l’elaborazione di Opus all’ADSP emulato (l’implementazione emulata del coprocessore audio del Switch).

Il risultato di questo sforzo è consentire ai giochi che precedentemente incontravano crash nel tentativo di decodificare l’audio Opus, come MLB The Show 22 & 23, i giochi della serie Touhou, Pokémon Quest, Pokémon Let’s Go Eevee!/Pikachu! e Sea of Stars di riprodurre l’audio correttamente senza crash.

Maide ha anche risolto il problema dell’elaborazione dei comandi audio, evitando che alcune liste di comandi venissero restituite in modo prematuro prima di essere terminate correttamente.

Con la vecchia implementazione, dopo un’interruzione, il processo di elaborazione della lista veniva riavviato dall’inizio anziché continuare da dove aveva lasciato.

Questo rallentava il rendering audio fino a quando non veniva completato correttamente. Correggendo questo comportamento, sono stati risolti i casi in cui il motore audio funzionava troppo lentamente, migliorando le prestazioni.

Un altro problema che ha richiesto una considerevole indagine ha causato il taglio casuale del suono di fondo in Xenoblade Chronicles 2.

La causa è stata individuata nei comandi della fonte dati durante i cicli. Modificando il comportamento tra le diverse versioni ha ripristinato i rumori ambientali appropriati a questo grande gioco e ad alcuni altri.

Per chiudere questa sezione, Maide ha scoperto anche cosa causava la caduta della musica e delle voci nel livello finale di New Super Mario Bros. U Deluxe.

Il buffer di comandi audio impiegava talvolta più tempo del previsto per il processo, il che causava la perdita delle voci nel renderer.

Il gioco dipendeva in parte da questo comportamento, ma il calcolo di Yuzu dell’indicazione era sottilmente scorretto, causando la perdita di quasi tutto.

Cambiamenti vari

A volte vengono trascurati i test su dispositivi che non rispettano le raccomandazioni hardware standard. Con l’aggiunta delle nuove opzioni VSync di Vulkan, è stata fatta un’assunzione errata. A quanto pare, gli utenti non hanno sempre i driver Vulkan installati.

Anche se nella maggior parte dei casi gli utenti hanno il supporto per Vulkan, questo non è certo il caso degli utenti delle schede NVIDIA Fermi (persone a cui è stata promessa una versione dei driver Vulkan ma che non l’hanno mai ottenuta) o degli utenti di distribuzioni Linux che non includono i file di firmware della GPU, come Trisquel.

Questo ha causato il rifiuto della casella combinata VSync di offrire qualsiasi opzione quando non veniva rilevato alcun driver Vulkan e dispositivo, bloccando gli utenti che utilizzavano solo OpenGL dall’attivazione del VSync.

Sebbene sia facile chiedere agli utenti di aggiornare l’hardware a uno più recente e/o di utilizzare una distribuzione più funzionale, ciò non cambia il fatto che il comportamento è scorretto.

ToastUnlimited è intervenuto per risolvere l’interfaccia utente e ha colto l’occasione per migliorare il rilevamento di Vulkan danneggiato, garantendo la selezione di OpenGL come API predefinita se necessario.

byte[] ha corretto il problema dell’ignoranza della selezione della lingua nelle applicazioni multiprogramma, che interessava giochi come Super Mario 3D All-Stars, Grandia HD Collection e altri.

Il developer rkfg, arrivato nel gruppo di recente, ha trovato uno di quei bug che ti fa chiedere come sia stato possibile che funzionasse prima.

Il parser di Yuzu per il formato del file PFS cercava di leggere i nomi dei file dall’intestazione come una stringa C.

Le stringhe C finiscono per definizione con un byte nullo, ma questa funzione non teneva conto del fatto che il prossimo byte nullo poteva essere molto più avanti rispetto alla fine dell’intestazione, e il tentativo di analizzare un file con questa costruzione specifica avrebbe causato a yuzu di non riuscire a trovare i file all’interno dell’archivio e/o di bloccarsi durante l’analisi.

Nello stesso periodo, lo sviluppatore ha riscritto l’algoritmo di compressione dei dati LZ4, che è stato di recente introdotto in yuzu.

Grazie a questa modifica, yuzu comprimerà i dati in modo più efficiente e, cosa più importante, eseguirà operazioni di decompressione molto più veloci.

Il developer bunnei, noto anche come il nonno del kernel di Yuzu, ha corretto i blocchi delle icone sulle recenti distribuzioni Linux utilizzando le API grafiche supportate.

Il problema era causato da una gestione scorretta dei file desktop; Yuzu richiede file di desktop separati per ciascun programma. Se una delle applicazioni si è bloccata, l’icona rimaneva bloccata.

Per chiudere, gli sviluppatori che operano sulla configurazione degli Amiibo e la compatibilità Amiibo si sono recentemente interessati alla possibilità di rilevare automaticamente i file delle chiavi Amiibo.

Di conseguenza, ora è possibile importare automaticamente i file delle chiavi nel sistema quando si rilevano i file delle chiavi con il prefisso “amiibo_key_*”.

Il team Yuzu è sempre alla ricerca di nuovi sviluppatori e collaboratori. Se vuoi contribuire a questo progetto open source, dai un’occhiata al canale Discord, dove potrai trovare ulteriori dettagli su come iniziare.

Fonte: twitter.com

LASCIA UN COMMENTO

Per favore inserisci il tuo commento!
Per favore inserisci il tuo nome qui

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.