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 ottobre

466
0

Il nuovo report sui progressi raggiunti da Yuzu per il mese di ottobre evidenziano numerosi miglioramenti e nuove funzionalità nell’emulatore del Nintendo Switch per PC Windows, MacOS, Linux e dispositivi Android.

Tra i punti salienti, si segnalano correzioni per la GPU, il supporto per nuovi applet, significativi sviluppi nelle versioni Android, e altre anticipazioni sul prossimo futuro.

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

Super Mario Bros. Wonder ha richiesto alcune modifiche per renderlo giocabile su Yuzu. In particolare, sono state apportate correzioni alla segnalazione errata della memoria utilizzata nel kernel, corrette grazie alla modifica di una sola riga.

Tuttavia, il gioco presentava ancora problemi dovuti al cambio frequente tra modalità di presentazione VSync doppia e tripla. Per affrontare questo problema, sono state apportate modifiche al codice.

Inoltre, è stato apportato anche un aggiornamento nell’implementazione della vibrazione, rendendo l’esperienza più piacevole, specialmente quando si utilizza l’HD Rumble sui controller Nintendo.

Le modifiche alla GPU

Nell’ambito delle modifiche alla GPU, viene evidenziato il concetto di comportamento non definito, definito formalmente come “here be dragons” (qui ci sono i draghi).

Si sottolinea l’importanza di evitare comportamenti non definiti nel codice, specialmente quando si utilizza un’API grafica complessa come Vulkan.

Si fa riferimento a una spiegazione precedente sui “depth stencils” per contestualizzare la discussione successiva.

Durante il testing di profondità, l’hardware della GPU determina se un pixel è visibile o nascosto da un altro pixel basandosi sui valori di profondità. Viene spiegato il ruolo del “depth buffer” nel tenere traccia della distanza di ciascun pixel dalla fotocamera.

Si evidenzia un problema con il percorso di pulizia mascherato di Yuzu per i buffer di profondità/stencil, che ha causato problemi di rendering in giochi come Super Mario 64.

Vengono presentati ulteriori miglioramenti, come l’implementazione del supporto per il formato di profondità X8_D24 e la risoluzione di problemi legati alla memoria nel nuovo sistema di query cache.

Viene anche menzionato il lavoro di Squall-Leonhart sull’implementazione di conversioni di formato più oscure, come D32_SFLOAT.

Si discute della robustezza fornita da Vulkan per gestire gli accessi di memoria non validi in modo definito, prevenendo crash o comportamenti non definiti.

Viene segnalato un problema specifico con la robustezza su GPU NVIDIA delle generazioni Maxwell e Pascal, risolto da Maide mediante la correzione delle letture fuori limite su Crash Team Racing Nitro-Fueled.

Viene menzionata l’ottimizzazione di epicboy per il supporto OpenGL, con la correzione di variabili e l’abilitazione forzata dell’ottimizzazione threaded per NVIDIA.

Successivamente, Maide ha corretto i problemi con i compute shaders e ottimizzato la gestione delle eliminazioni dei buffer.

Infine, sono stati affrontati problemi di rendering su GPU non NVIDIA in alcuni giochi 2D, risolti grazie a una implementazione alternativa per la gestione delle inversioni verticali nelle API Vulkan e OpenGL.

Byte[] ha corretto anche problemi di rendering in giochi come Stardew Valley e Streets of Rage 4 su hardware non NVIDIA.

Cambiamenti su Android

La build Android ha ricevuto significative modifiche all’interfaccia utente, mentre la compatibilità del dispositivo è stata notevolmente migliorata per gli utenti Adreno.

Un nuovo gestore di driver GPU è stato sviluppato da t895, consentendo l’elenco di driver multipli, utile per passare rapidamente tra versioni proprietarie Qualcomm o rilasci Mesa Turnip, o diverse versioni di ciascuno.

A causa dello stato beta dei driver Turnip e del codice immaturo dei driver Qualcomm, l’ultima versione non è sempre la migliore.

byte[] ha corretto un crash legato alla ricreazione della superficie, che poteva essere innescato semplicemente ruotando il dispositivo.

Tra l’altro, lo stesso byte[] ha corretto anche un problema che colpiva alcuni dispositivi Android che includono un caricatore Vulkan 1.1 obsoleto anziché l’attuale 1.3, causando il crash del dispositivo all’avvio quando si utilizza qualsiasi versione del driver Mesa Turnip.

t895 ha implementato un menu delle impostazioni home per dispositivi con schermi più grandi e/o DPI più alti. Questo dovrebbe fare piacere agli utenti che fanno uso di dispositivi tablet e pieghevoli.

Sempre byte[] ha corretto un altro caso in cui yuzu avrebbe fallito nel ricreare la superficie durante le rotazioni dello schermo, mentre t895 ha spostato il processo di caricamento dell’elenco dei giochi su un thread separato per ridurre gli scatti durante l’apertura di Yuzu.

Il processo richiede comunque un tempo simile, ma la percezione della fluidità è molto gradita. Seguono tutta una serie di correzioni da parte di t895, come un problema che causava il blocco dell’overlay dei pulsanti touch durante il disegno del menu in-game dal lato sinistro.

Mentre si attende un menu delle impostazioni del controller, t895 ha corretto un bug che causava il passaggio di tutti gli input del controller al giocatore 2 su alcuni dispositivi, impedendo agli utenti di giocare a molti giochi.

I dispositivi con controller integrati dovrebbero avere un’esperienza molto migliore ora, e infine, seguendo le recenti modifiche nella versione desktop, t895 ha aggiunto un menu per accedere alle applet supportate attualmente, Album e Mii editor, insieme all’applet Cabinet per gestire i dati degli amiibo.

Modifiche all’UI e alle Applet

Dopo un inizio difficoltoso, grazie al lavoro iniziale di roenyroeny, boludoz e FearlessTobi, ora abbiamo il supporto adeguato per la creazione di shortcut anche per PC Windows.

Per accedere a questa funzione, basta fare clic destro su un gioco nell’elenco giochi di Yuzu, selezionare “Crea shortcut” e scegliere se si desidera posizionarlo sul desktop o nella sezione delle applicazioni del menu Start.

Questo consente di avviare i giochi con una ricerca rapida nel menu di avvio o anche da una scorciatoia nel menu/barra delle applicazioni, se si preferisce.

Aiutando a migliorare ciò, german77 ha apportato le modifiche necessarie per salvare più risoluzioni per icona, rendendo le icone più piccole sul desktop molto più leggibili di prima.

DanielSvoboda ha apportato diverse modifiche alla gestione del file system per migliorare la rilevazione del percorso della directory per le shortcut, rendendole molto più utilizzabili e stabili.

Il lavoro per migliorare l’esperienza utente (UX) è sempre benvenuto. Si ritiene che l’UX sia altrettanto importante quanto la corretta funzionalità e non dovrebbe mai essere trascurato.

Per migliorare la qualità della vita delle persone che giocano con più controller, flodavid ha cambiato il comportamento di come gli utenti interagiscono con il numero di controller collegati nelle impostazioni dei controlli.

Ora gli utenti possono cliccare in modo più intuitivo sulle luci verdi nella parte inferiore per selezionare quanti giocatori/controller vogliono attivare. Grazie!

Un’altra gradita aggiunta all’UX è di Macj0rdan, che ha implementato un rapido controllo del volume del gioco con la rotella del mouse quando il puntatore è posizionato sopra il pulsante del volume nell’UI, eliminando la necessità di fare clic e trascinare uno slider piccolo.

Continuando il suo lavoro sul supporto delle applet, german77 ha implementato il metodo di servizio SaveScreenShotEx0 e le sue varianti, consentendo agli utenti di fare screenshot da dentro i giochi invece che globalmente con la combinazione di tasti per gli screenshot.

Questo funziona per giochi come Super Smash Bros. Ultimate – tuttavia, notare che l’editing degli screenshot non è ancora disponibile.

Sempre german77 ha implementato anche il metodo SaveCurrentScreenshot, consentendo agli utenti di fare screenshot in-game in Pokémon Scarlet/Violet con la sua ultima versione installata.

Modifiche al Kernel, alla CPU e al File System

byte[] ha avuto molto “divertimento” ultimamente a risolvere e implementare modifiche al kernel. In primo luogo, ha completamente implementato la memoria di trasferimento, corretto il monitoraggio erroneo dei gruppi di pagine, aggiornato l’implementazione di KPageTableBase e ha ora completato quasi completamente l’intera implementazione di KProcess.

Come lavoro preliminare per il supporto NCE che arriverà nel prossimo futuro, byte[] ha implementato il supporto nativo dell’orologio per i dispositivi arm64 in esecuzione su Linux o Android.

Non c’è supporto per i dispositivi ARM Windows per ora, poiché nessuno si è preoccupato di includere un driver Vulkan ancora.

Il kernel è stato aggiornato per riflettere le modifiche apportate nella versione del firmware 17.0.0, garantendo il supporto per i giochi futuri.

v1993 ha risolto alcuni avvisi che stavano invadendo i nostri log di compilazione – in particolare, utilizzando std::forward dove appropriato e qualificando le chiamate std::move.

Questo dovrebbe risolvere i problemi di compilazione per coloro che sperimentano con i target di compilazione Darwin.

Su richiesta dell’utente, byte[] ha ulteriormente migliorato le prestazioni di compilazione delle mod RomFS eliminando alcune copie di oggetti non necessarie.

Ciò ha risolto anche una perdita di handle del file, consentendo ora agli sviluppatori di modificare i file delle mod dopo aver interrotto l’emulazione, aiutandoli a lavorare più velocemente su quelle gustose e deliziose mod di gioco.

Grazie alle segnalazioni degli utenti, l’esperto audio Maide ha scoperto che Ancient Rush 2 andava in crash alla fine della prima schermata degli sviluppatori. La correzione di questo problema ha richiesto la pulizia del buffer DSP dopo ogni esecuzione.

Parlando sempre di audio, byte[] ha ottenuto un’altra vittoria risoluta nel reparto di spegnimento risolvendo un blocco nel renderer audio.

NVIDIA

Le versioni 545 e 546 dei driver hanno risolto i crash dovuti all’uso elevato di VRAM segnalato lo scorso mese, anche se gli utenti segnalano nuovi crash nei giochi con questi driver.

Tornare alle versioni 53X dei driver corregge il problema. Anche Mesa ha molti nuovi crash con il rilascio della versione 24.0.0, e il fatto che i primi due driver crashino nelle stesse condizioni non è una coincidenza.

Il problema potrebbe essere dovuto al modo in cui vengono ricompilati gli shader, dove i tipi di alcune variabili non corrispondono.

La correzione richiederà comunque del tempo, quindi per gli utenti NVIDIA e Mesa che riscontrano crash in giochi come Bayonetta 3, viene suggerito per il momento di non aggiornare i driver.

AMD, un ultimo applauso per Polaris e Vega

Gli ultimi 2 resti dell’architettura GCN stanno per essere interrotti. AMD ha iniziato a rilasciare driver separati per quei prodotti, che eseguono rami del driver Vulkan datati rispetto a RDNA e hardware più recente.

La notizia che AMDVLK, il driver ufficiale Linux AMD, ha interrotto il supporto per questi prodotti significa che non saranno disponibili nuovi driver Vulkan.

Questo non significa che lo spettacolo è finito per i proprietari di questi dispositivi. Per il momento, nessun nuovo cambiamento compromette la compatibilità con le schede, e i driver Mesa Linux come RADV continueranno a fornire supporto, molto probabilmente estendendolo oltre quanto riportato dai driver Windows (come avviene di solito con Mesa).

Turnip, un lavoro in progresso che migliora rapidamente

Yuzu utilizza una singola base di codice per tutte le sue versioni, upstream/master/main, chiamatelo come preferite, Mainline, Early Access e Android partono tutte da lì.

Quando vengono apportati miglioramenti alla base di codice, alla fine raggiungono tutte le versioni, inclusa Android.

Aggiunto un miglior supporto per le query di occultamento (parte del progetto Y.F.C.) ad Android per aumentare le prestazioni e la precisione su tutti i dispositivi.

Ma il supporto alle query di occultamento su driver Turnip con GPU Adreno 725 e 730 non funzionava correttamente, e ciò ha impiegato molto tempo per scoprirlo.

Gli utenti hanno sperimentato crash che li hanno costretti a rimanere su versioni outdated su GitHub, e abbiamo dovuto bloccare un nuovo rilascio su Play Store fino a quando il problema non è stato indagato e risolto correttamente.

Il problema è stato trovato, segnalato e risolto da Mesa in un tempo record nelle loro attuali branch Adreno 700, che poi i pacchettizzatori di driver come K11MCH1 utilizzano per creare pacchetti che gli utenti Qualcomm possono caricare sugli emulatori.

Per questo motivo si raccomanda vivamente agli utenti Adreno 730 e Adreno 725 di aggiornare all’ultimo driver Release X, che non solo corregge i crash causati dalle query di occultamento, ma ha anche la mancanza di supporto per l’Adreno 725 e alcune varianti (sì, ce ne sono diverse) dell’Adreno 730.

Utilizzando questo driver, si è riusciti a lanciare nuove build Android con le ultime modifiche upstream, e tutti gli utenti Qualcomm possono utilizzare in modo sicuro le ultime build GitHub se lo preferiscono.

Le build su GitHub ora sono correttamente firmate. Questo significa che è possibile aggiornare da una versione all’altra senza dover disinstallare prima.

Se volete testare modifiche sperimentali e potenzialmente non sicure (ma forse più veloci) prima degli aggiornamenti su Play Store, ora è molto più facile.

Progetti futuri

Iniziamo con ciò che la maggior parte delle persone vuole sentire: il progetto Nice per dispositivi Android.

NCE (Native Code Execution) sta progredendo molto bene, ma ci sono ancora alcuni bug da risolvere. I giochi stanno diventando non solo giocabili, ma anche più veloci su dispositivi con restrizioni termiche.

Inoltre, il tempo impiegato per caricare e chiudere i giochi è stato significativamente ridotto. NCE ci ha aiutato a comprendere i problemi nella nostra emulazione CPU in x86_64, quindi aspettatevi miglioramenti su entrambi i fronti.

Blinkhawk sta inoltre lavorando su un nuovo progetto volto a rendere il processo GPU agnostico. Tale iniziativa consentirebbe l’emulazione multiprocesso all’interno della GPU. Senza ricorrere a nomi particolarmente fantasiosi, il progetto è denominato internamente “Multiprocess”.

Questa iniziativa rappresenta un passo essenziale verso il supporto UMA, il quale apporterà considerevoli vantaggi agli utenti di iGPU e SoC, con la prospettiva di ridurre il consumo di RAM.

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.