Disponibili i nuovi report del mese di marzo sui progressi raggiunti dall’emulatore RPCS3

Disponibile un nuovo report sui progressi raggiunti dall’emulatore RPCS3, l’applicazione capace di emulare gran parte dei giochi della console PlayStation 3 su PC Windows e Linux, oggi ha raggiunto un traguardo importante, scendere al di sotto dell’uno per cento nella sezione Nothing.

La sezione Nothing (ovvero “Nulla”) segna le percentuali dei titoli che non possono essere ancora eseguiti attraverso l’emulatore, un numero veramente esiguo se paragonato alle altre percentuali Playable, Ingame, Intro e Loadable.

Gli sviluppatori nell’ultimo mese hanno riportato molte correzioni e modifiche all’interno del codice sorgente, con enormi progressi in termini grafici, miglioramenti nelle prestazioni della SPU e compatibilità di gioco.

Migliorie principali

Rimozione della impanatura MFC

Nekotekina ha apportato miglioramenti nella precisione dell’emulazione SPU di RPCS3. Poiché SPU MFC non può essere spiegato facilmente, ecco la versione breve:

Il processore della console PlayStation 3 si chiama Cell e può, in termini semplici, eseguire contemporaneamente 8 thread.

Il processore Cell ha un singolo core CPU primario con multithreading simultaneo (commercializzato da Intel come “Hyper-Threading”) chiamato Power Processor Element (PPE), il che significa che può eseguire contemporaneamente due thread.

Il processore dispone inoltre di sei elementi di elaborazione sinergica (SPE), ciascuno composto da un’unità di elaborazione sinergica (SPU) e un controller di flusso di memoria (MFC).

Mentre i PPE e gli SPE si trovano tutti sullo stesso pacchetto per così dire, i core SPU non possono accedere direttamente alla memoria principale ma devono passare attraverso la MFC.

La vecchia implementazione che ora è stata sostituita, aveva un thread MFC separato che veniva eseguito contemporaneamente ai thread SPU.

Questo è stato implementato in quanto si riteneva che avrebbe eseguito più velocemente. Tuttavia, in pratica, l’uso massiccio della sincronizzazione dei thread e di altri fattori ha notevolmente diminuito qualsiasi guadagno teorico. 

Inoltre, non ha mai funzionato correttamente, causando tutti i tipi di problemi di sincronizzazione dei thread con successivi bug e crash.

Ora, Nekotekina ha rimosso il filo MFC di riserva. Di conseguenza, l’emulazione dell’accesso alla memoria viene invece eseguita all’interno dei thread SPU.

Pur non essendo solo più sicuro e stabile, non sembra nemmeno influenzare negativamente le prestazioni. Caso in questione: alcuni giochi con problemi noti di sincronizzazione dei thread ora funzionano meglio!

Tutto, dall’oscuro Ar Tonelico Qoga (con molta meno probabilità di crashare/bloccarsi su schermi di caricamento e la mappa del mondo) fino a The Last of Us (anche se si blocca ancora, con molta pazienza o fortuna, è persino possibile andare Ingame).

Essenzialmente, questo è principalmente un miglioramento della stabilità. I giochi che prima si bloccavano o crashavano potrebbero presentare migliorie da queste modifiche.

Typo Fix

RPCS3 ha avuto un bel po’ di sviluppo verso il supporto delle texture 3D, ma a causa di questo errore non è mai stato veramente abilitato.

Cambiare un singolo “2” in un “3” ha finito per migliorare i problemi in vari titoli, tra cui Skate 2, LittleBigPlanet Karting, Dante’s Inferno, Infamous Festival of Blood e numerosi altri. Ringraziamo pauls-gh per aver trovato il problema.

Principali migliorie RSX

kd-11 intanto ha incluso diverse ottimizzazioni, con la rimozione di alcuni hack (che potrebbero causare alcune regressioni per un po’) e numerosi miglioramenti grafici.

I miglioramenti più notevoli riguardano la correzione delle ombre in molti giochi, tra cui Red Dead Redemption, Uncharted e Skate 3.

Questo ha riguardato anche Star Wars: The Force Unleashed – Ultimate Sith Edition che mostra a schermo qualcosa per la prima volta, anche se si blocca ancora poco dopo l’avvio. Ulteriori dettagli per il lavoro di kd-11 questo mese possono essere trovati sul suo rapporto Patreon.

Il video seguente mostra i miglioramenti delle due modifiche RSX precedentemente menzionate:

Correzioni RSX

Nella seconda meta del mese, kd-11 ha apportato miglioramenti a centinaia di giochi, principalmente quelli che utilizzano Unreal Engine.

Questo changeset è stato inizialmente presentato come una piccola modifica per correggere alcuni bug nei titoli potenziati dal motore di gioco Unreal Engine.

Era stato notato che la luminosità di questi giochi era troppo alta, mancavano le ombre e la fioritura copriva tutto con una luce accecante.

È stata necessaria una sessione di debug molto lunga e un confronto con le porte su PC per scoprire che gli asset nel motore venivano trattati come correzione gamma (spazio colore sRGB) rispetto al normale spazio colore RGB lineare che RPCS3 utilizza per tutte le sue texture.

Questo processo ha comportato il campionamento di pixel su molte chiamate draw e la scoperta che su RPCS3, la semplice lettura dei texels stava dando risultati errati.

Le parti necessarie per rilevare questo aspetto sembravano essere state implementate molto tempo fa, quindi una correzione minore è stata inviata per rilevare le texture codificate sRGB durante il rendering.

Questo ha risolto la luminosità nei giochi irreali, ma ha comunque danneggiato molti altri titoli rendendoli estremamente scuri.

Fu in quel momento che kd-11 notò alcuni strani shader in questi giochi, spesso i framment shader con una sola istruzione venivano letti come input di texture e scritti nel framebuffer.

Questo non ha senso in quanto esiste un motore di copia 2d e i giochi lo stavano già utilizzando, quindi perché lo hanno fatto? Con l’impressione che qualcosa di simile all’estensione OpenGL framebuffer_srgb, kd-11 ha aggiunto del codice per cambiare i colori di output da questi shader apparentemente inutili e la luminosità era apparentemente corretta.

Ciò è stato ulteriormente supportato dal fatto che nelle estrazioni successive che utilizzavano framebuffer precedenti come input, i framebuffer avevano i loro flag di codifica sRGB impostati nonostante il loro contenuto fosse rasterizzato dalla GPU.

Questo era un indizio che doveva essere fatto molto prima poiché l’ipotesi iniziale era che solo alcuni formati di texture sRGB potevano essere usati in questo modo.

È stato trovato un registro che controlla le scritture del framebuffer con correzione gamma (id 1fec) e l’output corretto della gamma è stato implementato.

Altri dump di comando mostravano altri formati inaspettati inviati alla GPU con il set di codifica sRGB, il che significa che semplici hack non sarebbero sufficienti.

Gli opcodes di texturing sono stati riscritti per emulare alcuni bit che controllano il comportamento delle letture di texel e le regressioni sono state corrette senza rompere i titoli irreali.

Ci sono altri cambiamenti nel set che interessano altre parti dell’emulatore, ma il problema della correzione gamma è ciò che la maggior parte degli utenti noterà immediatamente.

Ulteriori dettagli per il lavoro di kd-11 questo mese possono essere trovati sul suo rapporto Patreon. Un video che mostra questo nuovo changeset è stato pubblicato sul nostro canale, dai un’occhiata se non lo hai già fatto:

Implementazione vertex_data_base_index

L’uso del registro vertex_data_base_index è stato implementato da jarveson, tenendo conto dell’indice di base durante la creazione/utilizzo dei buffer dell’indice.

Corregge la grafica in diversi giochi come Knights Contract, Valkyria Chronicles, LEGO Star Wars III: The Clone Wars, Castle of Illusion con protagonista Mickey Mouse, RIO, Alone in the Dark, Blood Drive, tra molti altri.

Giochi

La sezione dei giochi di questo mese si concentrerà principalmente sui titoli che non sono stati mostrati sul nostro video in evidenza.

Abbiamo avuto un’enorme quantità di segnalazioni di giochi migliorati questo mese, quindi sfortunatamente non possiamo mostrarli tutti.

Di seguito sono riportati alcuni dei giochi interessanti che sono migliorati in un modo o nell’altro.

The Last of Us

Forse il miglioramento più importante di questo mese è stato per The Last of Us. Il gioco che è stato spesso definito “il Santo Graal dell’emulazione” sta finalmente mostrando segni significativi di vita in RPCS3.

Anche se non è attualmente in uno stato giocabile, ora siamo più vicini che mai! Grazie a miglioramenti nella stabilità delle modifiche apportate in MFC da parte di Nekotekina e eladash aka elad335, The Last of Us ora può raggiungere costantemente il menu principale e visualizzare alcuni elementi grafici.

Con molta pazienza è possibile superare la cascata di condizioni di gara per vedere anche alcuni gameplay in un glorioso 1 fps:

Skate 3

Come mostrato nel video qui sotto, Skate 3 ora sta funzionando abbastanza bene! Con ombre, prestazioni e stabilità generalmente migliorate, Skate 3 funziona meglio che mai in RPCS3.

Gira anche ad una risoluzione 4K, puoi vedere chiaramente che la grafica ha resistito sorprendentemente bene nel corso degli anni.

Crysis

Ma può funzionare Crysis? Proprio così, Crysis 1 e Crysis 2 ora sono Ingame in RPCS3 grazie a eladash! La versione PS3 di Crysis era interessante.

Anche se certamente non ha lo stesso dettaglio o risoluzione delle texture del titolo originale su PC, la versione per PS3 gira su CryEngine 3 invece che su CryEngine 2.

Questo gioco non è ancora vicino a Playable, poiché soffre di problemi grafici e crash casuali, ma solo poche settimane fa questo gioco era all’interno della sezione Nothing.

Supersonic Acrobatic Rocket-Powered Battle Cars

Diversi problemi grafici sono stati risolti su SARPBC, che ora esegue correttamente il rendering.

inFamous: Festival of Blood

Anche questo titolo ben noto è migliorato notevolmente nel corso del mese.

Drakengard 3

Questo gioco in Unreal Engine 3 ha ottenuto importanti miglioramenti nel rendering grazie a kd-11 e poco dopo è stato risolto un problema in cui il gioco si arrestava in modo anomalo quando si verificavano i trofei grazie a Megamouse. Un utente nel nostro canale Discord è persino riuscito a terminare il gioco con buone prestazioni e audio.

Asura’s Wrath

Illynir, un altro utente di RPCS3, è riuscito a completare Asura’s Wrath compresi i DLC senza problemi importanti e buone prestazioni. Questo gioco è entrato nella categoria Giocabile questo mese! Di seguito è riportato un video di gameplay generale:

Ninja Gaiden Sigma

Questo titolo ha sempre avuto buone prestazioni, ma solo recentemente ha ricevuto correzioni di audio e grafica grazie a Numan e kd-11.

In precedenza, l’audio non funzionava affatto e i colori erano sballati a causa di un problema con il modo in cui RPCS3 rendeva la nebbia Ingame. Dopo che entrambi questi problemi sono stati risolti, Ninja Gaiden Sigma è diventato giocabile!

Ecco un video che mostra come il gioco è migliorato:

LEGO Batman 2

Questo è un esempio dei numerosi giochi risolti dall’implementazione index_base_offset di jarveson.

I seguenti giochi sono stati migliorati dal changeset Epic RSX Fixes, migliorando principalmente in modo simile – le ombre e la gamma:

NIER

Journey

Gran Turismo HD Concept

Tony Hawk’s Pro Skater HD

Batman: Arkham City

Destroy All Humans! Path of the Furon

Life is Strange

Potrete scaricare la versione più recente dell’emulatore collegandovi a questo indirizzo per PC Windows e Linux. Se vi piace potrete anche contribuire allo sviluppo con una piccola donazione sul Patreon.

(Visited 1 times, 1 visits today)

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *