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

311
0

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

In questo primo report del 2024 viene evidenziata la nuova funzione applet multiprocess che consente un’emulazione di basso livello (LLE) per diverse applet presenti sulla console Nintendo Switch, tra cui l’applet Mii, l’applet Cabinet, l’applet Profilo, l’applet Browser Web offline, e l’applet Tastiera software.

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

Il supporto multiprocess è stato integrato all’interno di diversi componenti come la GPU, l’input, i servizi e l’emulazione delle applet, risolvendo nel contempo problematiche preesistenti.

Sfida di velocità di digitazione con la tastiera Nintendo?

Al momento della stesura, il supporto multiprocess non è ancora stato completamente integrato, ma sono già state rilasciate correzioni nei moduli GPU, input e altri, consentendo un’aggiunta graduale del supporto completo.

L’implementazione dei requisiti per supportare il multiprocess in Yuzu ha portato a cinque significativi cambiamenti nel mese scorso:

  • Consenti alla GPU di eseguire più programmi contemporaneamente. Questo è il punto in cui entra in gioco il supporto SMMU, il quale sarà discusso nella sezione successiva.
  • Riscritto il vecchio e semplice gestore delle applet.
  • Riscritta la presentazione. Una parte dei prerequisiti per eseguire più programmi contemporaneamente è la capacità di visualizzarli tutti all’utente.
  • Riscritta ogni altra area rilevante (per esempio, l’input) per supportare i processi multipli.
  • Automatizzata la serializzazione delle chiamate di servizio.

Mappatura dei dispositivi e SMMU

Blinkhawk ha implementato l’emulazione del mapping della memoria del dispositivo e ha riscritto l’implementazione della GPU con il supporto per la SMMU, noto anche come IOMMU per gli appassionati di desktop/Linux VM/UEFI.

L’Unità di Gestione della Memoria di Sistema ARM gestisce il mapping della memoria per dispositivi periferici come il GPU, traducendo gli indirizzi di memoria virtuale del dispositivo in indirizzi di memoria fisica.

La GPU aggiunge un MMU proprio, il GMMU, un livello aggiuntivo che si sovrappone alla SMMU. L’emulatore già possedeva uno strato di traduzione della memoria performante per il GMMU, ma poteva gestire solo un singolo programma che usava il GPU alla volta, impossibilitato a condividerlo con altri processi.

Era necessario il supporto per i processi multipli. I principali vantaggi di questa riscrittura sono:

  • Maggiore precisione.
  • Riduzione dell’uso della memoria video (i test mostrano una riduzione di circa 300 MB).
  • Abilita l’uso multiprocesso della GPU.
  • Consente ad altri dispositivi emulati di utilizzare il mapper del dispositivo.
  • Lascia spazio per potenziali future ottimizzazioni.

Uno svantaggio di questo cambiamento è stato l’aumento della complessità del debugging, che ha portato a più tempo di sviluppo con ogni bug trovato durante la sua implementazione.

Questo cambiamento ha aperto le porte all’emulazione delle applet ed è il punto di partenza per implementare Direct Memory Import in futuro.

Progetto Leviathan

German77 ha dovuto adattare il suo progetto di riscrittura dell’input, Project Leviathan, ai requisiti del multiprocess. La riscrittura è ancora in corso, con ulteriori parti pianificate.

Ma solo nel mese di gennaio sono state implementate le seguenti modifiche, sia specificamente per il multiprocess che più in generale come parte della riscrittura:

  • Utilizzo di risorse applet individuali, in modo che ciascuna applet abbia la propria visione dell’input del controller.
  • Implementazione dell’emulazione di NpadResource, ora utilizzando l’ID del processo di input per distinguere lo stato HID e la configurazione dello stile del controller tra processi multipli.
  • Creazione della struttura di pad astratta, responsabile dell’aggiornamento della memoria condivisa e dell’assegnazione dei controller. La vecchia implementazione era troppo semplice, causando l’apparizione non necessaria dell’applet del controller o la visualizzazione senza controller supportati disponibili.
  • Implementazione completa della vibrazione astratta, rimuovendo vecchio codice inaccurato e adattando il comportamento al firmware più recente della Switch. Anche se questo ci consente di caricare l’applet del controller nativo (tra gli altri) e divertirci con esso, non ha molto utilizzo per l’emulazione.

Oltre alla GPU emulata, anche la presentazione a schermo ha richiesto alcuni lavori per supportare l’esecuzione delle applet: senza di essa, nessuno dei vantaggi potrebbe essere effettivamente visualizzato.

Oltre alla GPU emulata, anche la presentazione su schermo ha richiesto un po’ di lavoro per supportare l’esecuzione delle applet: senza di essa, nessuno dei vantaggi potrebbe essere effettivamente visualizzato. Se non c’è una composizione multistrato, non c’è divertimento per le applet.

byte[] ha riscritto quasi tutto il codice di presentazione per supportare sovrapposizioni di livello e blending, prestando particolare attenzione a non compromettere le opzioni di filtraggio e antialiasing esistenti.

In particolare, FSR è stato convertito da un compute shader a un fragment shader, così da poter abilitare il blending corretto.

Il risultato finale è lo stesso, senza modifiche alla qualità dell’immagine, ma ora FSR può essere utilizzato mentre i giochi visualizzano, ad esempio, la tastiera nativa inline.

Il servizio critico che richiedeva una riscrittura per avere un adeguato supporto multiprocess è AM, l’Applet Manager.

AM è stato ora quasi completamente refattorizzato per tenere traccia dello stato di ogni applet individualmente, consentendogli correttamente di supportare l’esecuzione di più applet contemporaneamente.

Mentre byte[] ha completato la riscrittura e l’ha resa operativa, german77 ha risolto un problema che causava il blocco temporaneo di The Battle Cats Unite oltre la schermata di caricamento iniziale.

Maide è stato responsabile di rendere l’emulazione audio compatibile con il multiprocess. I giochi dovrebbero poter condividere la riproduzione audio con le applet, giusto? Condividere è importante.

Serializzazione universale

La serializzazione e deserializzazione delle chiamate di servizio dai programmi è una delle attività più importanti che yuzu deve svolgere quando interagisce con i programmi ospiti.

La comunicazione tra i programmi e i moduli di sistema della Switch utilizza un formato binario speciale con parser personalizzati.

Interagire con i processi ospiti richiedeva calcoli di layout noiosi e soggetti a errori per ogni singolo metodo di interfaccia che yuzu doveva implementare, consumando molto tempo di sviluppo per il controllo degli errori e la manutenzione.

Con l’aumento del coinvolgimento nelle implementazioni dei servizi e la crescita esponenziale della complessità finora vista, byte[] punta ad automatizzare e semplificare la serializzazione utilizzando un approccio basato su modelli che genera automaticamente il codice necessario per il metodo.

Finora, il lavoro sul multiprocess ha richiesto oltre ventimila righe di codice e continua a crescere. Tutto ciò che devi fare ora per goderti le tue applet native è dumpare il tuo firmware. La versione minima richiesta per far funzionare le applet è il firmware 14.0.0.

Altre riscritture e correzioni di servizio

Si elogia Maide per aver risolto uno dei bug più persistenti in yuzu: il passare del tempo nei giochi come Pokémon Sword/Shield e Pokémon Quest.

In passato, sebbene il tempo venisse tracciato durante il salvataggio, alcuni eventi di gioco come Dens o Pokéjobs non si azzeravano, costringendo gli utenti ad avanzare manualmente nel tempo con l’opzione RTC personalizzata. Questo era piuttosto fastidioso.

Si è resa necessaria una riscrittura completa dei servizi temporali per risolvere il problema, “solo” circa nove mila righe di codice.

La nuova implementazione è molto più precisa, consentendo a Pokéjobs e ad altri eventi temporizzati di essere finalmente goduti normalmente in questo capolavoro low-poly, quasi sempre a 30 FPS.

Continuando questo lavoro, Maide ha rimosso alcune vecchie soluzioni alternative che non erano più necessarie nei servizi temporali e ha risolto la sincronizzazione dell’orologio di rete con l’orologio locale ad ogni avvio del gioco.

Questo ha risolto la progressione del tempo in Pokémon Quest. Non più una Time Quest.

Accampamento (Pokémon Quest)

Per concludere la sezione, byte[] ha risolto il modo in cui il servizio AOC elenca i DLC disponibili per le applicazioni multiprogramma, consentendo ad Assassin’s Creed Rogue di avviarsi con i suoi DLC installati. Proprio come la Marina intendeva.

Modifiche grafiche

Gli imprevisti rappresentano uno dei momenti caratteristici “fa parte del lavoro” dell’emulazione: non si sa mai da dove potrà sorgere un nuovo problema, quindi è necessario iniziare questa sezione con un avviso.

AVVISO: Se yuzu ha recentemente iniziato a mostrare Microsoft come produttore della GPU e non è più possibile giocare a nessun gioco, disinstallare il pacchetto denominato OpenCL™, OpenGL® e Vulkan® Compatibility Pack, oppure, se si preferisce mantenerlo, andare su Emulation > Configure… > Graphics > Device e cambiare la GPU con il modello corretto, senza “Microsoft Direct3D 12” all’inizio del suo nome.

Gli utenti AMD e Intel che utilizzano Windows 11 hanno improvvisamente avuto il loro hardware completamente incapace di avviare qualsiasi gioco mentre utilizzano Vulkan.

La ragione è qualcosa che nessuno di noi si aspettava affatto: Microsoft… e Mesa! Per favore, abbassate le forche.

Microsoft ha deciso di distribuire un’installazione di questo pacchetto, che consente all’hardware non in grado di eseguire le API menzionate di farlo se non è stato fornito un driver adeguato dal produttore dell’hardware o se l’hardware è semplicemente incapace di eseguirle.

Il progetto utilizzato per ottenere questo è Mesa Dozen, che esegue Vulkan su un’interfaccia Direct3D 12. Lo scopo previsto è offrire il supporto Vulkan ai dispositivi che includono solo un driver Direct3D 12, ad esempio i laptop ARM Qualcomm.

Non sappiamo perché Microsoft abbia deciso di testare silenziosamente questa funzionalità su PC x86-64 che già includono hardware in grado di fornire un supporto Vulkan adeguato, ma eccoci qui.

I nuovi dispositivi generati da Dozen vengono aggiunti ai dispositivi Vulkan disponibili per il sistema operativo, denominati “Microsoft Direct3D 12 (nome del modello GPU)”, ed entrano in conflitto con l’ordine della lista dei dispositivi di yuzu.

Per garantire che la migliore GPU sia selezionata per impostazione predefinita su yuzu, vengono eseguiti tre ordinamenti in ordine:

  1. Preferire l’hardware NVIDIA su AMD, l’hardware AMD su Intel. Questo favorisce l’hardware NVIDIA e garantisce inoltre che le GPU dedicate vengano selezionate anziché quelle integrate. Inoltre, nel caso raro in cui un utente abbia più GPU di diversi produttori su un sistema, ci assicuriamo che venga selezionata quella con il minor numero di problemi per impostazione predefinita. “Una vecchia console tablet NVIDIA trasformata in console” dopo tutto.
  2. Preferire l’hardware dedicato rispetto a qualsiasi altro, inclusa la renderizzazione integrata e della CPU. Ci sono persone che cercano di eseguire yuzu con la renderizzazione della CPU.
  3. Ordinare in ordine alfabetico inverso. Questo aiuta a garantire che venga selezionato un RTX 4090 su un GTX 1050, o un RX 7900 XTX su un RX 780m.

L’ultimo punto è il problema. I dispositivi Dozen condividono le stesse identiche caratteristiche del vero dispositivo Vulkan ma cambiano il nome.

Poiché l’elenco è ordinato in ordine alfabetico inverso, un dispositivo denominato “Microsoft” avrà la priorità su uno identico denominato AMD o Intel.

Il problema è abbastanza semplice da risolvere: rilevare quando un dispositivo è Dozen e spostarlo in fondo all’elenco. Anche se Dozen fosse in grado di eseguire yuzu, preferiremmo non eseguire un’implementazione stratificata per impostazione predefinita.

Purtroppo, Dozen non è compatibile con yuzu al momento: mancano alcune estensioni obbligatorie e presenta alcuni problemi che il vostro scrittore ha avuto il piacere di segnalare ai suoi sviluppatori durante i test.

Le correzioni per molti di essi sono arrivate in soli un paio di giorni. Gli sviluppatori di Mesa sono costruiti in modo diverso.

Questo potrebbe essere un esperimento interessante per gli utenti di Fermi o altri hardware in fase di fine vita una volta che Dozen sarà adatto per yuzu.

I cambi di GPU regolarmente programmati

Durante i divertenti test per il multiprocess, è emerso un problema grafico nell’apertura della pagina di aiuto dell’applet web in Super Smash Bros. Ultimate.

Con una correzione per la lettura e la scrittura lineare dell’intensità dei pixel nel codice del software blitter, Blinkhawk ha risolto il problema.

Gli utenti Android ci hanno regolarmente ricordato che Mortal Kombat 11 non è in grado di avviarsi. Dopo una dettagliata esplorazione del codice, byte[] ha scoperto che le scritture di storage a 8-bit e 16-bit negli shader erano completamente difettose su hardware che non le supportava.

Il problema, almeno uno di essi, era la mancanza di supporto hardware per shaderInt8 e shaderInt16, qualcosa che i tre grandi, NVIDIA (compreso il Nintendo Switch, naturalmente), AMD (e per estensione, Xclipse), e Intel, supportano completamente con driver aggiornati, ma i dispositivi Android con GPU Adreno e Mali no.

Il momento Mali #1, insieme ad Adreno.

La soluzione implementata da byte[] per risolvere questo problema specifico è quella solita per la mancanza di supporto hardware. Se non puoi eseguirlo, emulalo! Queste sono passeggiate molto entusiaste.

Queste piattaforme supportano atomi di storage, quindi eseguendo un loop di confronto e scambio per scrivere atomicamente (nel senso di sicurezza del thread, non radioattivo) un valore in una posizione di memoria, i valori a 8-bit e 16-bit possono essere scritti in parole di memoria più grandi di 32-bit senza strappare il valore visto da altri thread.

Questa emulazione comporta una piccola perdita di prestazioni, ma non si può pretendere di avere tutto. Le GPU mobili sono molto parsimoniose con i loro set di funzionalità, il che spesso limita lo sviluppo e richiede l’aggiunta di soluzioni alternative.

Dubitiamo che solo Mortal Kombat 11 sia interessato: questo cambiamento ha migliorato molti giochi sconosciuti che crashavano su dispositivi Android o per persone che utilizzavano driver GPU obsoleti su PC desktop/portatili.

Purtroppo, questo cambiamento da solo non è sufficiente per rendere giocabile il gioco su dispositivi Android.

Questo problema ha esposto altri problemi degli shader legati alla mancanza di supporto per StorageImageExtendedFormats, ma è un compito da affrontare in seguito, molto probabilmente per future implementazioni di byte[].

Passando all’altro sistema operativo Linux, gli utenti di Tux hanno segnalato problemi di rendering confusi quando si ridimensionava la finestra di yuzu su Wayland.

La soluzione è stata fortunatamente semplice, ripristinando una modifica non necessaria in una delle correzioni DMA precedenti. Forzando la ricreazione della catena di swap ogni volta che cambia la dimensione del frame della finestra, il problema è sparito.

Il nuovo arrivato shinra-electric ha aggiornato la dipendenza di MoltenVK alla sua ultima versione.

Anche se l’aggiornamento porta un sacco di miglioramenti e molte estensioni Vulkan sono ora supportate, non ci sono nuovi cambiamenti da segnalare nel rendering o nella compatibilità sui dispositivi Apple. Ma hey, nessuna regressione segnalata è una buona notizia.

Incrementi Android

T895 ha iniziato il nuovo anno con una serie di cambiamenti per migliorare yuzu su Android. Mentre uno di questi cambiamenti migliora le prestazioni complessive dell’app, la maggior parte sono correzioni della qualità della vita (QoL) che alcuni dei nostri utenti stavano aspettando.

Come molti di voi potrebbero già sapere, yuzu su Android supporta l’esportazione dei dati dell’utente e dei salvataggi in formato ZIP per trasferirli tra diverse versioni dell’app.

La compressione ZIP, nella maggior parte dei casi, può portare a una riduzione delle dimensioni dei file rispetto alle dimensioni originali dei file su disco. Tuttavia, l’applicazione della compressione sopra dati criptati è quasi sempre una perdita di tempo.

T895 ha osservato che quando la compressione era attivata, queste esportazioni ZIP erano eccessivamente lente, pur ottenendo guadagni di riduzione di dimensione trascurabili, poiché i file più grandi nei dati dell’utente sono NCA, e quelli sono criptati.

Pertanto, ha disabilitato la compressione per queste esportazioni ZIP, mostrando una diminuzione dei tempi di esportazione fino a 3 volte.

Passando alle correzioni, t895 ha esteso il supporto per le orientazioni personalizzate dello schermo. Con questo cambiamento, yuzu ora supporta un totale di sette stili di orientamento, elencati di seguito.

  • Auto. Seleziona una delle quattro orientazioni in base al sensore del telefono.
  • Sensor Landscape. Limita il rilevamento del sensore solo alle orientazioni in orizzontale.
  • Landscape. Paesaggio regolare fisso.
  • Reverse Landscape. Paesaggio invertito fisso.
  • Sensor Portrait. Limita il rilevamento del sensore solo alle orientazioni in verticale, se il dispositivo lo consente.
  • Portrait. Ritratto regolare fisso.
  • Reverse Portrait. Ritratto invertito fisso.

Successivamente, è stata migliorata la gestione globale dei salvataggi. Per i giochi, esistono due possibili directory di salvataggio, e la versione originale del gestore globale dei salvataggi verificava solo una di esse.

Pertanto, t895 ha rimosso questa funzionalità difettosa qualche tempo fa e ha ora reintegrato una versione migliorata della stessa.

Con questa versione migliorata, è ora possibile utilizzare gli esportazioni effettuate con il gestore globale dei salvataggi anche nel gestore dei salvataggi specifico del gioco e viceversa.

A seguire ci sono i nuovi pulsanti di disinstallazione degli add-on. t895 ha aggiunto un pulsante di disinstallazione per ogni tipo di add-on nell’applicazione Android.

Gli utenti di yuzu possono ora disinstallare facilmente eventuali aggiornamenti, DLC, mod e trucchi che potrebbero aver installato. Nota: Attualmente, yuzu su PC non ha un supporto UI per la disinstallazione di mod o trucchi.

t895 ha introdotto le funzionalità di controllo dell’integrità della versione PC su Android. Ora è possibile verificare facilmente l’integrità dei file dei propri dump di gioco e dei contenuti della NAND.

Basta andare alle proprietà del gioco e selezionare Verifica Integrità sotto le Informazioni. Inoltre, c’è un pulsante separato nelle Impostazioni denominato Verifica Contenuto Installato.

Ora è possibile bloccare il menu in-game per evitare di attivarlo accidentalmente quando si utilizza l’area del joystick sinistro. Quando è bloccato, è comunque possibile visualizzare il menu in-game utilizzando il pulsante “indietro” o il gesto sul dispositivo.

Ora, viene esaminato l’aspetto delle scorciatoie dei giochi sulla schermata principale. Con la funzione delle scorciatoie dinamiche di Android, le app possono ora fornire agli utenti un accesso rapido a azioni o contenuti specifici all’interno di un’app direttamente dalla schermata principale. Anche se questa funzione è stata introdotta nel 2016, sembra che alcuni launcher Android non la supportino ancora.

Anche se questa funzione è già supportata su yuzu e funziona perfettamente, diventa piuttosto noioso quando è necessario lanciare ogni singolo gioco per ottenere una scorciatoia per esso, specialmente dopo una reinstallazione.

Come soluzione universale a questo problema, t895 ha implementato un pulsante nell’attività delle proprietà del gioco che consente di aggiungere facilmente una scorciatoia a qualsiasi gioco sulla schermata principale senza dover lanciare il gioco prima.

t895 ha proseguito con alcune ottimizzazioni del focus del controller. Il focus del controller su Android è l’evidenziazione che si vede sui pulsanti, indicando che è possibile selezionarli.

Questi cambiamenti risolvono alcuni problemi osservati durante l’utilizzo di un controller per navigare nell’interfaccia dell’app di yuzu e risolvono un problema in cui la superficie di emulazione appariva grigia.

Nel suo impegno per portare la parità di funzionalità tra yuzu su PC e yuzu su Android, t895 ha implementato l’avviso “chiavi di crittografia mancanti” su Android. Ora otterrai questo avviso all’avvio dell’app se non hai le chiavi necessarie per decrittare giochi/firmware.

t895 ha anche implementato il supporto per il cambio tra app multiprogramma. Questa funzionalità consente a compilazioni di giochi come Super Mario 3D All-Stars e Klonoa: Phantasy Reverie Series di passare tra i giochi all’interno del bundle.

Ha anche apportato alcuni miglioramenti minori all’interfaccia utente, come:

La nuova arrivata Emma ha implementato il supporto di base per la funzione del cruscotto di gioco trovata sui dispositivi Pixel.

Moonlacer, tester residente AMD, ha notato che i dispositivi mobili Samsung con le nuove GPU Xclipse basate su RDNA presentavano gli stessi problemi di wireframe in vari giochi Pokémon, che affliggono i driver AMD Vulkan su PC.

Con l’aiuto di byte[], è stata implementata una soluzione per questi driver GPU Xclipse considerando questi dispositivi come AMD, ottenendo così accesso agli stessi vecchi rimedi di cui beneficiano le schede Radeon. Grazie all’utente no.kola su Discord per i test effettuati!

Momento Xclipse #1. Abbiamo delle cattive notizie per gli utenti Xclipse che discuteremo nella sezione hardware.

Modifiche varie

Una problematica rilevante che persiste con yuzu è la corruzione dei profili, quando dopo un crash maltempo, l’emulatore crea un nuovo profilo e lascia tutti i dati dell’utente nel vecchio, costringendo l’utente a spostare manualmente i propri salvataggi nel nuovo profilo attivo appena creato.

Fortunatamente, german77 ha corretto i problemi di corruzione del profilo dell’utente salvando solo i dati del profilo quando il contenuto cambia.

Anche se NCE è con noi da un po’ di tempo, ciò non significa che sia completamente stabile ancora. Come ha evidenziato un utente Android, alcuni mod hardcore come Luminescent Platinum per Pokémon Brilliant Diamond/Shining Pearl si bloccavano su uno schermo nero durante l’uso di NCE.

Dopo che il lavoro investigativo è stato completato da byte[], è stata trovata la causa nel modo in cui alcuni mod fanno ipotesi sulla disposizione dei moduli, e yuzu avrebbe cercato di dare a ciascun modulo una sezione patch dedicata.

Per alleviare questo collo di bottiglia, GPUCode ha modificato il caricatore NCE per cercare di utilizzare la stessa sezione patch per il maggior numero possibile di moduli sequenziali.

Questo dovrebbe permettere alle mod di altri giochi che fanno ipotesi sulla disposizione dei moduli di funzionare anche con NCE.

Passando ad alcuni cambiamenti nell’input, german77 è stato informato che un utente ha provato a eseguire il dump dei suoi Amiibo, ma yuzu non è riuscito a generare alcun dump perché gli Amiibo erano montati come sola lettura e nessun backup era disponibile.

La soluzione? Eseguire il dump degli Amiibo se non esiste alcun backup, senza fare domande.

Il collaboratore residente anpilley ha deciso che era ora di migliorare gli argomenti della riga di comando per i binari di yuzu, aggiungendo l’uso di -u per specificare un utente da caricare e sopprimere la visualizzazione del selettore utente.

Tornando per di più, FearlessTobi decide di affrontare alcuni problemi con l’emulazione del sistema di file virtuale, o VFS. Poiché il Progetto Gaia è in una pausa indefinita, le priorità si sono spostate nel correggere il maggior numero possibile dell’attuale implementazione.

L’elenco delle modifiche è lungo: include il trasferimento dei file, unificare la denominazione dei codici di errore per facilitare il debug, rendere le definizioni del sistema di file più coerenti con le informazioni attuali ottenibili dall’ingegneria inversa e lasciare la struttura generale pronta per future aggiunte di codice.

La boss di Dynarmic stessa, merryhime, ha aggiornato la versione incorporata in yuzu all’ultima versione, portando con sé alcune nuove modifiche e correzioni.

Sono state apportate alcune ottimizzazioni all’emulazione delle istruzioni, sono state aggiunte più istruzioni ARM a 32 bit e i tempi di avvio dei giochi su Android sono stati migliorati — non è veloce come NCE, ma è notevolmente più veloce per quei giochi che devono essere eseguiti su JIT.

Per concludere questa sezione e passare a una discussione hardware interessante, t895 ha un ultimo regalo per noi questo mese, impostazioni audio per gioco.

Una delle impostazioni mancanti che poteva essere impostata su base per-gioco, e include l’intero set, motore di uscita, dispositivo di uscita, dispositivo di ingresso, ecc..

Sezione hardware e software

Come promesso il mese scorso, sarà trattata la generazione dei frame e i nuovi strumenti disponibili per sfruttarla in yuzu. Tuttavia, prima verrà presentato un ultimo esempio HDR per gli utenti NVIDIA.

NVIDIA TrueHDR

Con la serie di driver 551.XX, NVIDIA ha introdotto l’opzione di generare automaticamente un output HDR per qualsiasi video visualizzato su un browser basato su Chromium (come Google Chrome, Microsoft Edge, Brave, ecc..).

Non è passato molto tempo prima che la comunità creasse plug-in per sfruttare questa modifica anche in lettori video locali, ma questa non è l’unica applicazione al di fuori dell’uso ufficiale previsto da NVIDIA.

Entra in scena NvTrueHDR, un’alternativa a Windows AutoHDR e Special K HDR. È sempre divertente avere più opzioni tra cui scegliere.

Scala lossless alla riscossa

Lossless Scaling, un programma destinato al ridimensionamento della risoluzione, ha recentemente introdotto un’opzione generica per la generazione di fotogrammi, diventando così la prima implementazione agnostica del fornitore.

Basta impostare la Generazione Frame sulla destra su LSFG. Se sei un utente di Intel iGPU, abilita l’API di cattura Legacy, apri yuzu, abilita la scala e torna a giocare al tuo gioco, o premi il tasto di scelta rapida predefinito Ctrl + Alt + S mentre sei in gioco. Si consiglia la modalità a schermo intero esclusiva.

I risultati sono buoni su display più piccoli, ma su monitor più grandi (come quelli da 27 pollici), gli artefatti dei frame generati sono troppo evidenti, rendendo questo strumento più adatto per laptop e dispositivi portatili che per il gioco su desktop o TV.

Tuttavia, è un modo economico per migliorare i frame rate percepiti e superare i limiti della CPU su qualsiasi GPU senza restrizioni di driver o hardware.

Di seguito puoi vedere video di confronto tra 30 FPS nativi e Lossless Scaling che genera frame a 60 FPS in The Legend of Zelda: Breath of the Wild. A causa del supporto di YouTube solo per i video a 60 FPS, non vedrai i veri esempi di framegen a 120 FPS.

I video di cui sopra dimostrano i fotogrammi nativi a 30 FPS rispetto a quelli generati dal lossless scaling a partire da una base di 30 FPS. Si può notare che con così poche informazioni, gli artefatti sono comuni. Il Lossless Scaling non gestisce le transizioni di scena.

I video qui sopra mostrano la generazione di fotogrammi a 60 FPS nativi e quella di Lossless Scaling a partire da una base di 60 FPS. Con più informazioni con cui giocare, il Lossless Scaling fa un lavoro migliore. Le transizioni di scena sono ancora un problema.

Sebbene la qualità non sia perfetta, è un modo semplice e innocuo per migliorare l’esperienza su qualsiasi hardware, specialmente su giochi a 30 FPS come la serie Pokémon o esperienze cinematografiche come la saga di Xenoblade.

Nessun trattamento di favore qui. Tuttavia, per coloro con GPU AMD recenti (RDNA2 e RDNA3 finora), ora c’è una migliore opzione disponibile:

AMD Fluid Motion Frames

La release 24.1.1 del driver ha introdotto la prima versione pubblica di AFMF, l’algoritmo di generazione dei fotogrammi indipendente dai giochi di AMD.

L’AFMF è limitato ai giochi Direct3D 11 e 12. Tuttavia, qui si commette un errore. Si scopre che sul forum di Guru3D sono disponibili informazioni sorprendenti: l’AFMF può essere eseguito anche su Vulkan, OpenGL e Direct3D 9/10, e richiede solo una modifica al registro di sistema:

[HKEY_LOCAL_MACHINE\SOFTWARE\AMDVR]
"GFGEnableAPI"=dword:00000007

Apportare manualmente questa modifica con regedit, riavviare Windows se necessario, aggiungere yuzu al software Radeon, impostare Wait for Vertical Refresh su Disabled, abilitare AMD Fluid Motion Frames:

Nella scheda delle prestazioni, è possibile impostare l’overlay per mostrare le prestazioni dei frame generati (non verrà visualizzato su app normali o su yuzu, poiché non è informato dal motore di gioco), insieme alla latenza e agli scatti.

Apri yuzu, imposta la modalità schermo intero su Schermo intero esclusivo:

Ed è tutto, avvia un gioco, vai a schermo intero premendo F11 o il tasto assegnato al tuo controller e goditi da 2x a 3x il frame rate percepito.

Nota che, mentre la qualità dell’immagine è molto migliore rispetto al risultato della scala senza perdita di dati, AMD disabilita AFMF se c’è troppa varianza tra un frame e il successivo per evitare di appiattire le transizioni della scena come i cambiamenti di telecamera o l’apertura del menu.

Ciò porta a un’incoerenza del tempo di frame notevole quando sullo schermo c’è molta azione. Speriamo che AMD aggiunga in futuro un’opzione per regolare la sensibilità di questo comportamento.

I video sopra dimostrano 30 FPS nativi rispetto ai frame generati da AFMF da una base di 30 FPS. Anche se è un risultato migliore rispetto alla scala senza perdita di dati a 30 FPS, gli artefatti sono comunque visibili nei movimenti più veloci, specialmente sulla vegetazione. Le transizioni delle scene sono chiare e c’è meno tremolio intorno al giocatore.

I video sopra dimostrano 60 FPS nativi rispetto ai frame generati da AFMF da una base di 60 FPS. E a 60 FPS, i risultati sono ottimi! Consentendo un gameplay più fluido su display da 120-180 Hz.

Non sono inclusi grafici delle prestazioni perché il redattore non considera il frame rate percepito come una vera prestazione, ma per fornire un esempio, The Legend of Zelda: Tears of the Kingdom, che produce solidi 60 FPS in mondo aperto con un 5600X e una RTX 3060 Ti, può produrre “FPS” da 170 a 180 con AFMF abilitato, e con pochissima o nessuna distorsione visibile.

I giochi possono essere resi con una GPU NVIDIA o Intel mentre vengono ancora generati frame con AFMF, anche se l’esperienza è leggermente peggiore rispetto all’uso diretto della scheda AMD a causa dell’aumento della latenza nell’invio dei frame finiti tramite PCIe.

L’unico requisito per far funzionare AFMF è avere il display collegato alla GPU AMD compatibile, qualsiasi altra GPU può fare il rendering effettivo dopo questo. È ora di investire in un RX 6400? Smash deve essere incredibile a 240 FPS.

Intel mantiene le promesse

Come promesso, Intel ha corretto i crash durante la creazione di geometry shader, a partire dalla versione del driver 31.0.101.5186/5234.

Anche se ciò consente a giochi come Xenoblade Chronicles 3 di finalmente essere giocabili su GPU integrate e schede dedicate ARC, sembra che ci siano altre aree in cui il driver deve maturare per produrre rendering adeguati:

D’altra parte, The Legend of Zelda: Tears of the Kingdom ha migliorato la stabilità con questa correzione del driver, quindi, a parte i problemi specifici del rendering di Windows di Intel, il gioco dovrebbe essere abbastanza giocabile ora.

Qualcomm

Le release dei driver di K11MCH1 continuano ad essere rilasciate, portando miglioramenti significativi nelle prestazioni e nella compatibilità per gli utenti Adreno. Si consiglia vivamente di mantenere aggiornati i driver per godere appieno di tali benefici.

Allo stesso tempo, nonostante le nuove release del driver proprietario, non sono stati apportati aggiornamenti o risolti problemi significativi fino ad ora. Il conteggio totale dei momenti Adreno di questo mese è di 1.

Exynos e Mali

La decisione di raggruppare Exynos e Mali è stata presa poiché sono state riscontrate limitazioni simili nell’hardware, ricordando le sfide affrontate da entrambi.

Oltre al problema specifico di AMD precedentemente menzionato, sia la serie di GPU Xclipse di Exynos che le GPU Mali condividono una caratteristica fondamentale: la mancanza totale di supporto per la decodifica delle texture BC4 a BC7.

Sebbene questo possa essere adeguato per i giochi nativi Android, l’assenza di supporto per le texture utilizzate dai giochi Switch, con conseguente necessità di decodificarle tramite CPU, può limitare le prestazioni e aumentare l’utilizzo della memoria.

Questo aspetto rappresenta una delle principali ragioni per cui queste GPU non possono competere con Adreno in termini di supporto alle funzionalità.

Linux

Alcune distribuzioni Linux, come SteamOS e Fedora dalla versione 39, hanno aumentato significativamente i valori predefiniti di vm.max_map_count, migliorando così la stabilità durante l’esecuzione di giochi Unreal Engine su yuzu.

Questo progresso è considerato gratificante e indica una direzione positiva nell’ottimizzazione delle esperienze di gioco su piattaforme non native. Si sottolinea che questo sviluppo potrebbe suggerire opportunità di apprendimento per il sistema operativo Windows.

Progetti futuri

Il lavoro sul supporto multiprocess è ancora lontano dall’essere completato. L’obiettivo è quello di supportare QLaunch, il che significa che l’entità in questione mira a rendere possibile l’avvio del launcher di gioco nativo, l’avvio dei giochi da lì, la loro chiusura, sospensione e l’avvio di un gioco diverso, fornendo così un’esperienza completa e integrata.

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.