Pubblicato un nuovo aggiornamento per shadPS4, l’emulatore open source della console PlayStation 4 per PC Windows, MacOS e Linux sviluppato da georgemoralis, meglio noto sulla scena come shadow, fondatore e programmatore di molti altri progetti di emulazione.
Avviato nell’ottobre 2022 e scritto in C++, l’emulatore è ancora in una fase preliminare, il che significa che non garantisce un’esperienza perfetta per tutti i titoli.
Share this post https://t.co/dzaYlK1oDY
— shadps4 (@shadps4) May 22, 2025
Tuttavia, è già in grado di avviare diversi giochi commerciali. Bloodborne è tra i titoli più giocabili grazie a mod che correggono bug grafici, mentre altri giochi come Red Dead Redemption, Dark Souls Remastered e Resident Evil 4 sono avviabili ma con problemi di stabilità del framerate e glitch visivi.
Alcuni titoli più leggeri, come BlazBlue: Cross Tag Battle e Capcom Fighting Collection, funzionano quasi perfettamente.
Il nuovo aggiornamento segna un passo avanti significativo. Come dichiarato dall’autore, l’ultima release introduce una serie di miglioramenti al core dell’emulatore, alle librerie, al ricompilatore degli shader e al motore grafico Vulkan, con l’obiettivo di aumentare il numero di giochi che riescono a superare la schermata iniziale o addirittura raggiungono una giocabilità accettabile.
A livello di core, sono stati corretti diversi bug relativi alla memoria, alle chiamate di sistema e alla gestione dei moduli.
Sono stati implementati nuovi syscall, come scePthreadGetaffinit
e sceKernelMapDirectMemory2
, e migliorata la gestione degli errori nella mappatura della memoria.
La compatibilità con i file system è stata affinata, e l’allocazione della memoria diretta è ora più stabile grazie a patch mirate.
Le librerie interne dell’emulatore hanno ricevuto numerosi aggiornamenti, con l’implementazione di funzioni di rete (sceNet
), gestione dei salvataggi, moduli di dialogo e supporto per trofei.
Sono stati anche introdotti miglioramenti nei componenti HTTP interni e nelle operazioni asincrone, con una maggiore attenzione alla pulizia della memoria e alla prevenzione di accessi nulli.
Le directory di salvataggio vengono ora selezionate rispettando le impostazioni specificate nei file param.sfo
.
Il ricompilatore degli shader, elemento cruciale per l’esecuzione corretta della grafica, ha visto l’aggiunta di nuove funzioni di conversione, miglioramenti nel supporto ai buffer e la gestione di istruzioni avanzate come IMAGE_ATOMIC_FMIN
e IMAGE_SAMPLE_B_O
.
Migliorata anche la compatibilità con GPU che non supportano i float a 64 bit, oltre a una più corretta interpretazione dei formati di texture e buffer.
Per quanto riguarda il lato GPU, il motore Vulkan è stato aggiornato con correzioni nella gestione del formato immagine, dell’output e della profondità.
Sono stati implementati miglioramenti nelle chiamate PM4 e nelle funzioni legate al chip Liverpool, cuore hardware della PS4. Anche il supporto AMDGPU è stato migliorato nella gestione di alcuni formati specifici.
L’interfaccia utente ha ricevuto piccole ma utili ottimizzazioni. In particolare, il frontend Qt ora ritarda l’enumerazione dei dispositivi fisici fino all’apertura delle impostazioni e migliora la gestione delle directory di salvataggio, mostrando il nome del gioco in modo più intuitivo.
Questo aggiornamento non rappresenta ancora una svolta definitiva per l’emulazione PS4, ma rafforza la base di un progetto ambizioso che avanza con costanza.
La scelta di concentrarsi sull’accuratezza dell’hardware e sulle API di basso livello lascia intravedere un futuro in cui shadPS4 potrebbe raggiungere un livello di compatibilità paragonabile ad altri emulatori di console Sony, oggi già maturi. Per ora, resta uno strumento sperimentale per sviluppatori e appassionati, ma il progresso è evidente.
Changelog
Core
- Correzioni rapide per
sceKernelAllocateDirectMemory
. - Esportazione dell’indirizzo eboot.
- libkernel: Varie correzioni al filesystem.
- Esecuzione dell’apertura in lettura-scrittura anticipata solo quando è necessario troncare.
- Emulatore: Correzione dell’ordine di inizializzazione dei log.
- Core: Correzione degli indirizzi di caricamento dei moduli.
- Aggiunta di
scePthreadSetaffinity
ed emulazione dell’affinità. - Core: Correzioni relative alla memoria.
- libkernel: Implementazione di
sceKernelMemoryPoolBatch
. - Core: Introduzione del wrapper per chiamate host.
- Kernel: iImplementazione di
scePthreadGetaffinit
. - Mprotect applicato solo su pagine intere.
- Kernel (macOS/Linux): Implementazione di
sceKernelUuidCreate
. - Implementazione di
sceKernelIsStack
. - Implementazione di
sceKernelMapDirectMemory2
. - Gestione corretta degli errori per
MapMemory
.
Librerie
- Implementazione di
sceImeDialogGetPanelSize
. - Pulizia degli eventi VideoOut.
- Implementazione di
sceKernelGetModuleInfo
,sceKernelGetModuleInfoInternal
esceKernelGetModuleList
. - Aggiornamento di
ime_dialog.h
. - Implementazione di
sceKernelPwritev
. - Prima implementazione di
sceNet
. - Correzioni per
SaveData
. - Pulizia dello stack prima dell’esecuzione del codice guest.
- [Librerie] Stub per
sceSigninDialog
. - Registrazione degli errori per videodec e videodec2.
- [Librerie] Implementazione di
sceNet
. - Implementazione di
sceKernelAddTimerEvent
. - equeue: Pulizia dell’implementazione dei timer.
- [Librerie] Companion httpd.
- SaveDataDialog: Correzione di un possibile accesso nullo.
- SaveData: Rispetto della directory di installazione indicata in
param.sfo
per la selezione della cartella dei salvataggi. - Savedata: Correzione dell’uso mancante della directory di salvataggio basata sulla configurazione.
- Correzione per la gestione della cancellazione dei trofei.
Ricompilatore shader
- Usa
GetSrc
nelle istruzioni VALU invece di assumere il registro vettoriale (prima eravcc_lo
). lower_buffer_format_to_raw
: Correzione nella gestione del remapping dei formati.shader_recompiler
: Aggiunta di una fase di lowering per i casi in cui i float a 64 bit non sono supportati.- Implementazione di
IMAGE_ATOMIC_FMIN
eIMAGE_ATOMIC_FMAX
per float a 32 bit. - shader_recompiler: Alcune correzioni nelle conversioni dei numeri di buffer.
- Implementazione della conversione
SnormNz
. - shader_recompiler: Ampliamento del campo bit
num_conversion
. - Aggiunta dell’opcode
IMAGE_SAMPLE_B_O
. - shader_recompiler: I buffer sono sempre marcati come storage buffers.
- Gestione dell’argomento -1 per
V_CMP_NE_U64
. - Evitato il post-incremento di SGPR nelle istruzioni
S_*_LOAD_DWORD
. - Gestione dell’evento
VgtStreamoutFlush
. - shader_recompiler: Correzione nella lettura del tipo di buffer dall’attributo step rate.
GPU
renderer_vulkan
: Ripristinata la versione Vulkan a 1.3.pp_pass
: Utilizzo del formato superficie corretto.vk_rasterizer
: Correzione nell’aggiornamento dell’attachment colore errato quando viene saltato dalla mask.vk_presenter
: Utilizzo del formato corretto per l’immagine e la vista del frame in output.- vulkan: Non utilizzare
VK_EXT_extended_dynamic_state
. - vulkan: Gestione del formato di profondità incompatibile tramite binding nullo.
- gnm: Implementazione di
sceGnmDrawIndexIndirectMulti
. - liverpool: Registrazione di maggiori informazioni su
SetQueueReg
. - renderer_vulkan: Abilitazione corretta della funzionalità
dualSrcBlend
. - buffer_cache: Divisione delle chiamate updateBuffer in blocchi da 65536 byte.
- vk_instance: Abilitazione di
robustImageAccess2
. - Correzione: Indirizzo di memoria di
PM4CmdWaitRegMem
. - amdgpu: Gestione dei formati Unorm a 32 bit.
GUI
- Multitasto per
kbm_gui
. - qt: Ritardata l’enumerazione dei dispositivi fisici all’apertura delle impostazioni.
- qt: Aggiornata l’apertura della directory dei salvataggi per utilizzare il nome dal PSF.
Per discutere dello sviluppo di shadPS4, suggerire idee o chiedere aiuto, gli utenti possono unirsi al server Discord. Il team invita inoltre la community ad aggiornare la lista di compatibilità su GitHub: shadPS4 Game Compatibility List
Download: shadPS4 v0.9.0 (Linux qt) (Linux SDL)
Download: shadPS4 v0.9.0 (Win64 qt) (Win64 SDL)
Download: shadPS4 v0.9.0 (macos qt) (macos SDL)
Download: Source code shadPS4 v0.8.0
Fonte: github.com