Home Emulatori Disponibili i nuovi report del mese di marzo sui progressi raggiunti dall’emulatore...

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

321
6

Disponibile il nuovo report sui progressi raggiunti dall’emulatore RPCS3 nel mese di marzo. RPCS3 ad oggi è l’unico programma che ci permette di emulare gran parte dei titoli commerciali della console PlayStation 3 su PC Windows e Linux.

Questo mese sono stati eseguiti ulteriori interventi di manutenzione sull’elenco di compatibilità in cui gli ID di gioco duplicati per lo stesso gioco ora sono stati uniti in un’unica voce.

Un totale complessivo di 118 thread sono stati uniti per consentire una rappresentazione più equa della compatibilità di RPCS3 in questo momento.

In aggiunta a ciò, la nostra comunità di tester ha continuato i loro sforzi nell’acquisire e testare titoli oscuri che non erano stati ancora adeguatamente testati.

I risultati hanno rivelato che molti dei titoli nelle categorie Ingame e Intro ora risultano effettivamente giocabili e sono stati giustamente spostati nel grafico.

Grazie al doppio effetto di entrambi gli sforzi, la categoria Playable ha visto un aumento marginale, mentre le categorie Ingame e Intro hanno visto una netta diminuzione del numero totale dei giochi elencati.

Infine, grazie ai miglioramenti di elad335 a sys_vm, ora Doom 3: BFG Edition è passato dalla categoria Nothing direttamente alla categoria Playable, lasciando solo altri due titoli all’interno della categoria Nothing!

Principali miglioramenti

Miglioramenti di texturing RSX (#5675#5726#5741#5752)

Questo mese, il developer kd-11 ha definito con chiarezza il lavoro che mirava a preservare correttamente i dati rasterizzati, senza ricorrere a tecniche di sincronizzazione lenta.

Dalla roadmap condivisa con i patreons, il primo passo verso tale obiettivo è stato quello di costruire le basi per una più agevole implementazione delle funzionalità riscrivendo la cache delle texture e per migliorare il modo in cui i dati delle texture venivano interpretati per il campionamento.

Questo è stato un compito arduo in quanto l’esperienza passata ci ha mostrato che molti giochi sono estremamente sensibili alle modifiche alla cache delle texture e spesso regrediscono quando vengono modificati.

Tuttavia, con l’aiuto della nostra base di tester dedicata a testare ogni gioco a loro disposizione, kd-11 è stato in grado di riscrivere la cache delle texture e indirizzare senza problemi la maggior parte delle regressioni.

Per chi è alla ricerca di uno sguardo dettagliato su cosa sia la cache delle texture e come funziona in RPCS3, puo leggere il nostro articolo Primer “veloce” sulla texture del caching in RPCS3.

Per più di sei settimane, kd-11 ha martellato la cache delle texture assumendo un approccio focalizzato sull’accuratezza per quanto riguarda la sincronizzazione avanzata e la risoluzione dei dati nella cache di gestione della superficie e nella cache dei dati di struttura.

L’obiettivo principale era migliorare la logica di ricerca delle texture tentando di “unire” i dati dell’archivio di superficie e i dati della cache delle texture ogni volta che si incontrano sovrapposizioni.

A causa di problemi di prestazioni, un collasso completo dei dati sarebbe impossibile, ma poiché le due fonti sono opzionalmente bloccate, questo dovrebbe quasi sempre risolversi correttamente, specialmente quando è abilitato Write Color Buffers.

The Last of Us ha visto un miglioramento significativo dell’illuminazione indiretta

Una volta portato a termine questo compito, lo sviluppatore ha iniziato a lavorare sul comportamento corretto del motore blit sulle nuove strutture e le politiche implementate sul resto della cache.

Il motore blit è il motore di rendering 2D all’interno della GPU, in grado di gestire attività a uso intensivo di memoria come copie asincrone su DMA, scaling di texture, conversione di formato, copie veloci di texture e rotazioni attorno all’asse X o Y che può essere pensato come ‘lanciando’ l’immagine.

Questo lavoro si basa su di un primo sviluppo precedentemente esistente poiché l’implementazione iniziale ha rotto molti giochi quando si utilizza l’hardware (GPU) per accelerare queste operazioni, rendendo necessario l’uso dell’opzione di debug ‘CPU blit’ per ottenere l’output corretto.

Oltre a questo, sono state implementate anche altre funzionalità come i metodi di compatibilità del pitch, ma non ancora abilitate.

Tutto ciò ha comportato miglioramenti grafici in un numero significativo di giochi e ha corretto problemi di vecchia data come lo sfarfallio in Demon’s Souls, i riflessi dell’acqua in Ratchet & Clank: A Crack in Time, il palco di Atlantica e lo stage di Genie Jafar in Kingdom Hearts HD 1.5 ReMIX (rimuovendo la necessità della modalità di rendering rigorosa e consentendo l’upscaling della risoluzione).

Giochi come Beyond: Two Souls e inFamous: Festival of Blood non hanno più bisogno della CPU blit per rendere correttamente le texture che portano ad un significativo incremento delle prestazioni.

Infine, con questi cambiamenti, Saints Row: The Third e Saints Row IV eseguono il rendering della grafica per la prima volta in RPCS3.

Nuovi miglioramenti SPU Interpreter e SPU basati su LLVM (#5762#5721#5770)

Questo mese, Nekotekina ha revisionato l’interprete SPU (veloce) in un interprete basato su LLVM che condivide lo stesso back-end dell’attuale Recompiler LLVM.

Questo è stato un passo importante in quanto il backend per l’interprete e il compilatore unificato elimina le differenze di accuratezza tra le due implementazioni e semplifica anche il codice sottostante. 

Oltre a questo, l’interprete rispetta ora le opzioni di accuratezza di xfloat precedentemente limitate al compilatore LLVM e può anche beneficiare della generazione di codice specifico per l’architettura LLVM.

In termini di prestazioni, il nuovo interprete ha visto massicci miglioramenti delle prestazioni rispetto all’implementazione legacy con alcuni giochi che hanno ottenuto un aumento del 20% in FPS.

Inoltre, in alcuni titoli come Sengoku Musou 4 e Dynasty Warriors: Gundam 3, l’FPS quando si utilizzava l’interprete ha migliorato le prestazioni da 10 FPS a 50 FPS, superando persino il Recompilatore ASUJIT SPU!

Confronto delle prestazioni in Skate 3 tra il precedente SPU Interpreter (veloce) e il nuovo interprete SPU basato su LLVM

Questo è stato il primo passo nella road map SPU/PPU di Nekotekina affidata ai patreons e sta lavorando sodo per migliorare le sinergie tra i due backend e usarlo per ottenere prestazioni e accuratezza maggiori.

Se vuoi leggere la roadmap completa di PPU/SPU di Nekotekina, puoi controllare il suo post sul patreon.

Oltre a ciò, Nekotekina ha migliorato anche la gestione del metodo MMIO nell’emulatore. Durante il debug, elad335 ha identificato che la SPU LLVM emette un codice MFC in CPU con TSX abilitato e alcuni controlli per l’indirizzo in SPU MFC sono MMIO ma trattati come al solito DMA che porta a problemi.

Nel contesto di SPU MFC, DMA (Direct Memory Access) è un metodo utilizzato per leggere/scrivere dati dalla/alla cache locale SPU nella memoria globale.

Mentre MMIO (I/O mappato in memoria) viene utilizzato per leggere/scrivere su di un registro ed eseguire un’azione oltre all’accesso ai dati.

Per impedire a SPU LLVM di utilizzare DMA in modo non corretto per questi controlli, Nekotekina ha implementato un fallback per il gestore MMIO MFC generale che gestirà correttamente tali transazioni.

Ciò non solo migliora la precisione dell’emulazione, ma in casi come MMU raw SPU, il controllo è stato precedentemente gestito dal gestore delle violazioni di accesso PPU, che è noto per essere costoso. Ora, questi controlli utilizzano anche il gestore MMIO MFC generale che porta ad un notevole aumento di velocità.

Infine, Nekotekina ha anche battuto la versione di LLVM utilizzata in RPCS3 dalla versione 7.0 alla versione 9.0 e implementato l’uso di alcune nuove funzionalità offerte dall’ultima versione.

Mentre LLVM 9.0 è ancora in fase di ricerca e non è stato completamente rilasciato, Nekotekina ha deciso di adottarlo in anticipo e utilizzare i vantaggi che esso fornisce.

Supporto per controller DualShock 3 (#5641)

Come per ogni console PlayStation, la PlayStation 3 è stata rilasciata insieme a un nuovo controller DualShock, il DualShock 3.

Questo controller è stato un grande balzo in avanti in quanto non solo aveva ancora i tasti sensibili alla pressione del suo predecessore, ma ha anche introdotto la tecnologia di controllo del movimento (SIXAXIS per come lo chiamava Sony). 

L’esclusività di queste funzionalità ha anche portato ad un tasso di adozione piuttosto basso da parte degli sviluppatori di giochi. Questo non vuol dire che non sono stati utilizzati, molte esclusive di PlayStation 3 o di prima parte hanno fatto uso di queste funzionalità come Metal Gear Solid 4, Flower, Heavy Rain, Uncharted 1 e Heavenly Sword.

Poiché il DualShock 3 è stato realizzato propriamente per PlayStation 3, i suoi driver non sono compatibili con il PC e necessitano di strumenti di terze parti per funzionare.

Mentre la maggior parte degli strumenti di terze parti utilizzati per estendere il supporto per DualShock 3 ha funzionato bene con RPCS3, le loro implementazioni hanno causato alcuni problemi notevoli.

Gli strumenti più comunemente usati si comportano come wrapper attorno all’API XInput standard su Windows, convertendo l’input da DualShock 3 a quello compatibile con XInput. Tuttavia, poiché XInput non ha funzionalità per i controlli di movimento o pulsanti sensibili alla pressione, tali ingressi dal controller vengono semplicemente ignorati.

Ciò ha richiesto un gestore di pad dedicato per DualShock 3 per supportare efficacemente l’intera gamma di funzionalità. Ora, chiunque abbia seguito RPCS3 sa di avere un gestore di pad dedicato per il DualShock 4 da maggio 2017.

Il DualShock 4 condivideva molte somiglianze con il suo predecessore come essere progettato per funzionare esclusivamente con la PlayStation 4, con una gamma di funzionalità esclusive non presenti in altri controller e che richiedono software di terze parti per funzionare su PC.

Quindi, perché l’implementazione del gestore nativo del pad è stata molto più semplice rispetto al DualShock 3? Per dirla semplicemente, il DualShock 3 soffre di alcune differenze fondamentali che ne impediscono il supporto con la stessa facilità.

La maggior parte dei controller interagiscono con i sistemi host tramite la porta USB e aderiscono alla classe HID USB (Human Interface Device) definita dal USB Implementers Forum.

Secondo questa specifica, ogni dispositivo descrive come comunicherà con il sistema host per consentire al sistema host di prevedere e definire accuratamente tutte le interazioni attuali e future con il dispositivo.

Durante l’enumerazione il dispositivo descrive come devono essere strutturati i report in modo che il sistema host possa prepararsi adeguatamente a ricevere queste informazioni.

La creazione di questo standard consente ai sistemi operativi di implementare un framework standardizzato per HID e consente una perfetta integrazione con vari dispositivi.

Allo stesso modo, la classe HID Bluetooth è un semplice wrapper attorno alla classe HID USB che semplifica l’implementazione del sistema operativo. Quindi se ti sei mai chiesto chi ringraziare quando la tua stampante, lavora solo quando sei connesso per la prima volta, ora lo sai!

Una panoramica di come i dispositivi pubblicizzano le loro funzionalità sul sistema host

Tutti i controller (incluso il DualShock 4) aderiscono a questa classe HID USB e comunicano con console/PC utilizzando questa specifica.

Tuttavia, il DualShock 3 si discosta dalle specifiche e richiede al sistema host di inviare una richiesta GET_REPORT per avviare la comunicazione.

Poiché il report non è pubblicizzato dal DualShock 3, il sistema operativo non ci consente di inviare questa richiesta. Per ovviare a questo problema, GalCiv ha implementato un sistema in cui il controller viene prima riconosciuto dal sistema operativo come un dispositivo USB generico e successivamente gestito da RPCS3 come controller per consentire l’ingresso ai giochi.

Mentre questo approccio ci ha permesso di supportare il DualShock 3 e tutte le sue caratteristiche uniche, ha alcuni requisiti. In primo luogo, gli utenti devono installare driver USB generici (come WinUSB) per accedere al controller. Poiché il controller deve essere riconosciuto come dispositivo USB, la connettività Bluetooth non è supportata in questo momento.

Infine, per il momento, il supporto nativo per DualShock 3 è limitato solo a Windows. Con questo, RPCS3 finalmente supporta nativamente il DualShock 3 consentendo una migliore emulazione dei titoli che utilizzavano le offerte uniche dei controller!

Miglioramenti sys_fs (fsync) (#5506)

Continuando la sua serie di correzioni di bug, elad335 ha apportato una grande varietà di miglioramenti all’emulatore questo mese.

Sono state effettuate solo 5 richieste di pull, ma ognuna di queste conteneva più correzioni per una vasta gamma di componenti.

Sebbene la maggior parte di queste correzioni siano significative, non tutte si traducono direttamente nei giochi; alcuni miglioramenti possono essere visti in più titoli mentre alcuni correggono problemi specifici per un singolo gioco, ma altri non mostrano effetti immediati nei giochi.

Se dovessimo elencare tutti questi cambiamenti e spiegare perché sono stati fatti, questo rapporto non vedrebbe mai la luce del giorno. Quindi ecco una rapida occhiata a un affascinante cambiamento fatto da elad335 questo mese. Per l’elenco completo dei miglioramenti, vedere la sezione Altri miglioramenti di seguito.

Durante il debug di alcuni titoli AAA, è stata fatta una sorprendente scoperta. Due utenti hanno testato God of War 3 con hardware simile, ma un utente è riuscito a malapena a colpire 20 FPS mentre l’altro era comodamente a 40 FPS.

Indagando sul perché una tale drastica discrepanza esistesse su hardware simile, un controllo diligente ha scoperto che un utente aveva il gioco su un SSD mentre l’altro lo aveva su un HDD.

Ora questo può sembrare ragionevole a prima vista, è tutt’altro. L’unità Blu-ray della PlayStation 3 funzionava a una velocità massima di 9 MB/s, mentre il disco rigido interno era in grado di trasferire dati fino a 100 MB/s (a seconda del modello).

Entrambi questi numeri sono molto più bassi degli HDD e dei campionati PC sotto SSD. Questo è il motivo per cui gli utenti riscontrano a malapena le differenze nelle prestazioni durante l’esecuzione di giochi su RPCS3 da un HDD o da un SSD.

Anche la cache generata da RPCS3 viene caricata nella RAM/VRAM durante l’avvio dei giochi annullando qualsiasi effetto in questo senso. Quindi, perché God of War 3 richiede un SSD per funzionare al massimo delle prestazioni?

Un grande indizio per rispondere a questa domanda è venuto quando uno dei tester ha deciso di eseguire il gioco su Linux (dal momento che tutte le metriche precedenti sono state ottenute solo su Windows).

Eseguendo God of War 3 su Linux, siamo stati facilmente in grado di raggiungere il punteggio di 40FPS sul posto di prova, solo che questa volta il gioco era ancora in esecuzione su un HDD.

Questo risultato ha immediatamente indicato una gestione speciale in Windows per gli HDD rispetto a un errore in RPCS3. God of War 3 stava chiaramente attivando qualcosa che è stato gestito facilmente su Linux, ma ha soffocato Windows con lo stesso HDD.

Indagando ulteriormente, elad335 ha identificato che il problema era dovuto ai frequenti buffer della cache di file che venivano scaricati dal gioco.

Che cosa chiede lo svuotamento dei buffer della cache dei file? In generale, un sistema operativo memorizza i dati nelle operazioni di lettura e scrittura dei file in buffer di dati gestiti dal sistema per ottimizzare le prestazioni del disco.

Quando un’applicazione scrive su di un file, il sistema in genere memorizza i dati e scrive i dati sul disco su base regolare. Tuttavia, un’applicazione può forzare il sistema operativo attraverso un trasferimento fsync per svuotare il contenuto di questi buffer di dati sul disco.

Alcuni HDD hanno anche la cache integrata dedicata per ulteriore buffering e Windows fa un passo in più e richiede che il disco cancelli anche questa cache. I buffer vengono svuotati principalmente per garantire uno stato coerente di file scritti nel caso di eventi di perdita di alimentazione e disastri simili.

Tornando al problema in questione, per qualche ragione (meglio conosciuta solo per SCE), God of War 3 richiede un flush buffer dopo ogni MB scritto su disco.

Questo è stato gestito abbastanza bene su Linux, ma si è rivelato costoso su Windows e con volumi così elevati, le prestazioni compromesse in quanto i thread PPU avrebbero atteso il completamento di questa operazione prima di cedere.

elad335 ha risolto questo problema producendo il thread PPU prima di eseguire il flush buffer in modo che l’emulatore fosse libero di riprogrammare il thread immediatamente per l’attività successiva. Questa soluzione ha portato la parità di prestazioni tra entrambi i sistemi operativi.

Un confronto delle prestazioni in God of War 3, in esecuzione su Windows

Progresso VSH

Stiamo concludendo la copertura di questo mese con un rapido aggiornamento sull’esecuzione di VSH in RPCS3. Nel novembre dello scorso anno, abbiamo presentato il lavoro svolto da ruipin e molti sviluppatori per raggiungere il menu XMB (interfaccia grafica della PlayStation 3) in RPCS3.

Al momento, gli utenti dovevano scaricare il file xRegistry.sys dalla loro PlayStation 3 per consentire a VSH di avviarsi. A quanto pare, ruipin ha scalfito VSH per vedere cosa lo rende perfetto.

Dopo un ampio reverse engineering, è finalmente riuscito a implementare le sysc sys_config, una delle funzionalità chiave necessarie per RPCS3 per poter avviare VSH in standalone.

VSH utilizza sys_config come modo per memorizzare permanentemente le impostazioni di sistema e la configurazione dell’hardware, ad esempio quanti controllori sono collegati. Senza queste syscall implementate, VSH non è in grado di identificare i controller connessi e, in quanto tale, non riconosce alcun input.

Con questo avanzamento fatto nel ramo VSH, RPCS3 ora può avviare VSH e procedere oltre la configurazione iniziale del sistema e in XMB senza il file xRegistry.sys.

Mentre il ramo VSH non è ancora pronto per essere unito al ramo master, il lavoro svolto su sys_config è in gran parte completo e ruipin ha aperto una richiesta pull per avere lo stesso fuso in master.

Per quelli di voi interessati alla descrizione tecnica di sys_config e alla sua implementazione, cliccate qui.

Se sei interessato a controllare il menu XMB in esecuzione su RPCS3, consulta le istruzioni qui. Si noti che mentre gli sviluppatori hanno fatto passi da gigante per avviare VSH, c’è ancora molta strada da fare prima che sia pronto per gli utenti finali.

Nel suo stato attuale, non può essere utilizzato per avviare i giochi installati in RPCS3. Tuttavia, i temi di PlayStation 3 installati in RPCS3 possono essere applicati e utilizzati nel menu XMB!

Giochi

Gran Turismo 6 & HD Concept

Questo mese ha visto un gran numero di titoli di corse migliorare in termini di prestazioni e stabilità e con la PlayStation 3, non si può parlare di titoli di corse senza la serie Gran Turismo

Da quando è entrato in gioco per la prima volta nel novembre 2018, la serie Gran Turismo ha registrato un costante miglioramento nei reparti di grafica e stabilità.

Grazie agli sforzi di vari sviluppatori negli ultimi mesi e all’implementazione di errori di pagina SPU di elad335 questo mese, Gran Turismo HD Concept è finalmente diventato giocabile! Guarda il filmato di gameplay esteso qui sotto:

E se ciò non bastasse, grazie alle correzioni delle notifiche dei difetti di pagina di elad335, Gran Turismo 6 (e Ayrton Senna Special Edition) ora progredisce anche in gioco!

Tuttavia, essendo l’ultimo capitolo della serie su PlayStation 3, attualmente soffre di pesanti problemi grafici. Il gioco soffre anche di basse prestazioni dovute alla necessità che l’Interprete di PPU progredisca.

Tuttavia, è già stato intrapreso un certo lavoro per migliorare la compatibilità di PPU LLVM che aumenterà significativamente le prestazioni in tali titoli.

Supercar e serie Ferrari

Più titoli di corse dello studio Eutechnyx sono entrati in gioco per la prima volta a gennaio. Grazie ai miglioramenti di stabilità apportati all’emulatore negli ultimi due mesi, Absolute Supercars, Supercar Challenge, Ferrari Challenge: Trofeo Pirelli e Ferrari: The Race Experience sono ora comodamente riproducibili!

Ridge Racer 7

Continuando i miglioramenti dei titoli di corse, l’esclusivo Ridge Racer 7 per console PlayStation 3 ora è giocabile! In precedenza, questo titolo ha risentito delle basse prestazioni e di alcuni problemi grafici che sono stati risolti. Si spera che il primo di molti titoli di Ridge Racer diventi giocabile su RPCS3.

NASCAR Unleashed

Per finire la copertura delle corse nel report di questo mese, NASCAR Unleashed è diventato anche il gioco più giocabile. Questa esclusiva per console era sfuggita ai test per oltre un anno e in precedenza mostrava solo una schermata nera durante l’ingame. Questi problemi ora sono stati risolti in modo sommario.

Doom 3: BFG Edition

Come molti di voi già sanno, Doom 3: BFG Edition era uno dei tre famigerati titoli ancora bloccati nella categoria Nothing nell’elenco di compatibilità di RPCS3. Grazie ai miglioramenti apportati a sys_vm da elad335, questo titolo è passato da Nothing straight a Playable!

College Hoops 2K7

Passando ai titoli sportivi, College Hoops 2K7 è andato in gioco per la prima volta questo mese. Mentre il titolo ha una buona grafica, soffre di basse prestazioni che causano problemi con la fisica del gioco, impedendogli di essere riproducibile sull’emulatore.

Move Street Cricket I & II

Infine, questo mese ha visto entrambe le puntate di Move Street Cricket farsi strada per giocare. Se sei un fan del cricket, vale sicuramente la pena provare questi giochi su RPCS3.

Altri miglioramenti

Ci sono state numerose altre richieste di pull unite durante il mese che non sono riuscite a raggiungere la sezione Major Improvements.

Abbiamo raccolto un elenco di tutti questi miglioramenti qui e abbiamo allegato una breve panoramica a ciascuno di essi.

Assicurati di controllare i link forniti, dato che le pagine GitHub di solito rivelano ulteriori dettagli, così come i cambiamenti del codice stesso. Per vedere l’elenco completo delle richieste di pull direttamente su GitHub, clicca qui.

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.

6 Commenti

  1. ciao francesco so che non e la sezione adatta potresti darmi il link della patch gt6 1.01 che ho perso durante la formattazione per rorrura hardisk…ti ringrazio

  2. mi sa che mi hai dato quella sbagliata infatti adesso mi trovo la 1.02 e non mi fa disistallare il pkg che non riesco a trovare…i volevo la patch dei 2000000 quella che vendi la macchina…posso rimediare?

    • Non esiste la versione 1.01, gli aggiornamenti partono dalla versione 1.02 alla versione 1.22, almeno sui server Sony è così, per disinstallare l’aggiornamento devi eliminare i dati di gioco installati sulla PS3 (non i salvataggi)

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.