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.
Già prima di questo aggiornamento, shadPS4 era in grado di avviare diversi giochi commerciali: Bloodborne è considerato tra i più giocabili, soprattutto se affiancato da mod che correggono i bug grafici.
Altri titoli di grande richiamo, come Red Dead Redemption, Dark Souls Remastered e Resident Evil 4, sono avviabili ma soffrono ancora di cali di framerate e glitch visivi. I giochi più leggeri, come BlazBlue: Cross Tag Battle e Capcom Fighting Collection, risultano invece quasi perfetti.
L’aggiornamento appena pubblicato è comunque molto ricco di novità. Dal punto di vista del core, è stata migliorata la gestione della memoria, standardizzate le librerie HLE, corretti i comportamenti del filesystem e aggiunto il supporto al microfono.
Introdotti inoltre meccanismi più sicuri per la validazione degli indirizzi di memoria, corretta la gestione dei thread e dei registri MXCSR e FPUCW, e migliorata la stabilità generale.
Importante anche il fatto che i giochi che utilizzano Unreal Engine ora iniziano ad avviarsi correttamente e alcuni risultano persino giocabili, un passo avanti significativo nella compatibilità.
Le librerie di sistema hanno ricevuto numerosi aggiornamenti: è stato implementato il supporto alla risoluzione interna per migliorare la qualità grafica e introdotte nuove funzioni di rete per aumentare la compatibilità con le API di OpenOrbis.
Migliorata anche la gestione dell’audio (incluso l’audio 3D e il supporto all’altoparlante del DualShock 4), risolti artefatti grafici nei filmati tramite aggiornamenti a ffmpeg, e migliorata l’emulazione di molte funzioni legate a fotocamera, VR, input e salvataggi.
Il recompiler degli shader è stato ottimizzato in maniera sostanziale, correggendo casi limite di istruzioni vettoriali, migliorando l’accuratezza delle esportazioni degli shader, supportando più attributi per i vertex fetch e implementando operazioni avanzate come MUBUF per short/byte e V_ADD_F64 per calcoli in double precision.
Queste modifiche contribuiscono a una resa grafica più corretta e a una riduzione dei crash.
Sul fronte GPU e renderer Vulkan, è stato potenziato il sistema di cache delle texture e dei buffer, introdotta la gestione asincrona per il download delle immagini modificate dalla GPU, migliorata la pulizia della tile manager e aggiunto un sistema di garbage collector per ottimizzare l’uso della memoria video.
Sono stati corretti numerosi bug che causavano glitch visivi, ripristinata la gestione corretta dei parametri di blending e aggiunti fallback per i formati grafici non supportati.
L’interfaccia Qt ha ricevuto un corposo aggiornamento: ora è possibile selezionare e configurare controller multipli, personalizzare hotkey e preset, applicare patch e cheat in base alla versione del gioco, modificare il percorso dei DLC, regolare il volume globale e persino visualizzare i trofei con un suono dedicato.
Sono stati introdotti anche nuovi toggle per il logging, per la modalità di presentazione e per abilitare o disabilitare i readback delle immagini.
La GUI è stata resa più intuitiva, con categorie più ordinate e descrizioni per le opzioni sperimentali, ed è stato aggiunto il supporto alle opzioni FSR per migliorare le prestazioni su PC meno potenti.
Changelog
Core
- Abilita mmap per memoria eseguibile.
- Azzeramento dei bit più significativi in INSERTQ/EXTRQ.
- Corretto l’unmap di file di sola lettura su Windows.
- Standardizzati i nomi di RegisterLib per le librerie HLE.
- Filesystem: corretto il trattamento del flag
createinopen - Se
CONTENT_IDè vuoto inparam.sfo, usareTITLE_IDcome fallback. - Aggiunto un ramo “unreachable” quando si incontra
ud2invece di rimanere bloccati in un loop infinito. - Supporto microfono.
- Aggiorna le configurazioni solo se si usa una build diversa.
- Core: restituisce errore se l’indirizzo in
DirectMemoryQueryè troppo alto. - IPC semplice per il controllo esterno.
- Filesystem: corretto il comportamento in caso di errore per le chiamate
closesu handle standard. - Correzioni ai socket.
- Aggiunte le voci
.e..inMntPoints::IterateDirectory - Registra CPU utente, RAM totale e sistema operativo nei log.
- Filesystem: correzioni relative alle directory.
- Memory: allineamento di dimensione e indirizzo in
posix_munmap - Filesystem: astrazione nella gestione dei file di directory.
- Sostituito l’uso diretto di
wrgsbaseerdgsbasecon una soluzione più portabile. - Config: aggiunta opzione “present mode”.
- Configurazioni specifiche per gioco.
- Migliorata la logica di validazione degli indirizzi di memoria.
- Rimosse le verifiche per
symbol version_majoreversion_minor - Correzione dei registri MXCSR e FPUCW nei thread creati.
- Registra errore su
MapMemoryquando si esce dal caso di memoria flessibile. - Apre un dispositivo audio di input fittizio se nel sistema non è presente nessuno.
- Supporto audio dallo speaker del DualShock 4.
Librerie (Libs)
- libkernel: aggiunta esportazione mancante di
mprotect - Correzioni IME.
- video_out: supporto risoluzione interna.
- Implementato
sceKernelGetSystemSwVersion - Implementato
sceAudio3dTerminate - Implementato
sceAudioOutGetLastOutputTime - Registrato
posix_rename - Implementato
sceKernelError - Utilizzo di una libreria USB personalizzata.
- Aggiunti
inet_ntopeinet_pton - Estrazione netmask e gateway predefinito dal sistema host.
- Implementata risoluzione DNS semplice.
- Restituito il numero di campioni in coda in AudioOut.
- Generato errore prima dell’apertura di un pad se non valido.
scePadResetOrientation- Corretto
sceAudioOutOutputs - Corretta estrazione netmask per Windows.
- Risolti vari problemi legati ai socket.
- Implementato
sys_getpeername - Implementato
ORBIS_NET_CTL_INFO_HTTP_PROXY_CONFIG - Corretto get/setsockopt levels.
- libkernel: aggiunte più funzioni di rete per compatibilità OpenOrbis.
- libSceAppContent: usa gli ultimi 16 caratteri della cartella DLC per determinare l’etichetta di entitlement.
- Reso
libSceRtccompletamente HLE. - Corretti artefatti verdi nei filmati/animazioni (ffmpeg).
- Supporto per
Select - libSceAppContent: determinazione etichette di entitlement dal file
param.sfodei contenuti aggiuntivi. - Corretto
sceVoiceGetPortInfo - Corretto il trattamento delle date in formato RFC 3339.
- libSceNpParty: stub per funzioni quando non si è in party.
- Aggiunta libreria
libSceNpProfileDialogstub. - Migliorati gli stub di
libSceMove - Migliorati gli stub di
libSceCamera - Implementato
ORBIS_NET_SO_ERROR_EXin GetSocketOptions. - Migliorati gli stub di
libSceHmd - Stub di
libSceHmdSetupDialog - Stub di
libSceVrTracker - semaphore: invertito ordine di priorità.
- semaphore: corretto calcolo stato di attesa quando cancellato/eliminato.
- Implementato
send/recvmsg - libkernel: restituisce EINVAL se
mmapè chiamato conlength = 0 - Correzioni SaveData.
- Gestione flag evento null in
canceleclear - Supporto preliminare per AF_UNIX.
- Pulizia delle librerie NP.
- Implementato
sceKernelIsInSandboxe aggiornato OrbisSysModule Enum. - equeue: alcune correzioni per
sceKernelWaitEqueue - Implementati
getargcegetargv - Implementazione semplice di
sceGnmUnmapComputeQueue - kernel: miglioramenti alle condvars.
- kernel: ulteriori pulizie del codice dei thread.
Ricompilatore Shader
- Corretto V_ADDC_U32 per i casi limite di carry-out.
- Riorganizzate le operazioni di data share e implementato GDS.
- ir_passes: unificazione di readlane con pattern ff1.
- Implementato ff1 con operazioni di sottogruppo.
- Sostituito buffer pulling con attribute divisor per il passo di istanza.
- Implementati barycentrici guest.
- Corretto ff1_i32_b64 che non accettava vcc come argomento.
- attribute: corretta la funzione di bary coord.
- Evitata la pulizia di HTILE quando lo shader contiene calcoli di indirizzo.
- Implementate istruzioni MUBUF per short/byte.
- control_flow_graph: trattato branch condizionale vuoto come noop.
- Corretto caricamento bary coord quando non supportato.
- Uso del bit VM per il discard condizionale.
- translate: corretta estrazione instance id negli shader locali.
- Implementati V_ALIGNBYTE_B32 e V_ALIGNBIT_B32.
- Rielaborato sharp tracking per maggiore robustezza.
- Migliorata l’euristica per gli attributi passati tramite ring buffer.
- ir: eseguita degamma nello shader quando il sampler imposta force_degamma.
- Implementato V_CMP_GT_U6.
- Migliorata l’accuratezza delle esportazioni shader (parte 1).
- Non emettere Layer quando si emula tipo primitivo con tessellation.
- vector_interpolation: risolte alcune asserzioni.
- Supporto per attributi multipli usando lo stesso load nei vertex fetch shader.
- Gestito S_LSHL_B32 in ParseCopyShader.
- Inizializzati tutti i valori di ClipDistance e CullDistance.
- Gestito ExecLo source in S_FF1_I32_B64.
- Applicato tipo float per atomic buffer a 32-bit float.
- constant_propagation_pass: gestite altre istruzioni bitwise.
- Implementato V_ADD_F64 e caricamento di float a 64 bit da SGPR.
- Gestiti offset e override dei formati nei fetch shader.
- Allentata l’asserzione dual source blending per consentire fino a due target.
- Permesso offset vettoriale e scalare negli argomenti di LoadBuffer/StoreBuffer.
- Supporto per attributi PointSize e ViewportIndex.
- image: non impostare l’uso di storage per formati con codifica a blocchi.
GPU
- texture_cache: ripristinato depth resolve della nuova immagine al massimo delle risorse.
- texture_cache: download asincrono delle immagini lineari modificate dalla GPU.
- buffer_cache: reintrodotto batching degli upload e buffer temporaneo.
- vk_rasterizer: impostata area di rendering allo scissor della finestra quando non ci sono framebuffer.
- renderer_vulkan: gestite altre impostazioni GPU varie.
- vk_instance: rimossa l’utilizzazione del depth clamp control.
- liverpool_to_vk: non usare formati rimappati per i valori di clear.
- vk_pipeline_cache: aggiunti fallback per R8Srgb e B5G6R5.
- texture_cache: limitata altezza immagine buffer a quella di microtile.
- vk_rasterizer: migliorata la pulizia dello stencil.
- texture_cache: non modificare altezza mip per le copie nelle texture volumetriche.
- video_core: implementato garbage collector (parte 1).
- video_core: rielaborato tile manager.
- texture_cache: accodare il download delle immagini solo se l’indirizzo è maggiore di zero.
- video_core: corrette alcune comparazioni di struct.
- vk_pipeline_cache: pulizia del refresh delle chiavi grafiche.
- renderer_vulkan: ripristinato stato dinamico di color write.
- vk_graphics_pipeline: priorità al depth clip quando il controllo clip/clamp separato non è supportato.
- vk_pipeline_cache: aggiunte immagini di storage agli heap dei descrittori.
- vk_scheduler: inizializzazione corretta delle strutture Vulkan in RenderState.
- renderer_vulkan: ignorati i parametri di blending quando disabilitato.
- vk_rasterizer: impostati i bit di flag immagine durante il resolve.
- liverpool: scrittura query valide su PixelPipeStatDump.
- amdgpu: riportato contatore di performance GPU in cicli GPU.
- vk_rasterizer: assert su primitive restart solo durante indexed draw.
- video_core: caricata memoria del buffer attorno a pagine non mappate.
- video_core: corretti vari bug UE.
- video_core: controllo del registro DB_SHADER_CONTROL prima di effettuare depth exports.
- texture_cache: assicurato download in tempo delle immagini di readback.
Interfaccia QT
- Estesa la rilevazione di Qt per supportare più drive.
- Corretto il bug su gui emulatorLanguage.
- Aggiunto slider del volume per regolare il livello audio globale dei giochi.
- Disabilitato l’aggiornamento automatico su branch non ufficiali.
- Aggiunto suono predefinito per i trofei.
- Aggiunto toggle nelle impostazioni per i readback.
- Applicazione di cheat/patch solo se AppVer corrisponde alla versione del gioco.
- Supporto multi-controller: selezione controller attivo e possibilità di impostare controller predefinito.
- Aggiunti hotkey personalizzabili per i controller.
- Remapping GUI – altre piccole correzioni.
- Corretto Play Time – non salvava ogni minuto.
- Nome preset comune per config tastiera/pad tradotto nella lingua di destinazione.
- Qt aggiornato alla versione 6.9.2 e rimosso workaround per Mac.
- Qt: ordine imposto per il mapping stringhe kbm per evitare duplicati nelle combo.
- Spostati i plugin Qt nella cartella qtplugins nelle build Windows.
- Aggiunto toggle per abilitare/disabilitare il logging.
- Qt: impedito salvataggio/annullamento dei dialoghi di remapping/hotkeys durante l’attesa input.
- Aggiunta opzione per cambiare percorso DLC dalle impostazioni.
- Uso di icone, musica e immagini di sfondo dagli update se disponibili.
- Qt: aggiunte opzioni FSR nelle impostazioni GUI.
- Aumentata la dimensione del box di testo per le descrizioni.
- Funzione di log dei preset.
- Qt: regolata dimensione TrophyViewer e tradotta la scheda ‘Log’.
- Qt: aggiunta interfaccia GUI per impostazioni specifiche per gioco.
- Qt: aggiunta scheda ‘Log’ come opzione per scheda predefinita all’apertura impostazioni.
- Qt: aggiunte descrizioni per le nuove impostazioni sperimentali.
- Qt: corretta notifica di incompatibilità per le patch.
- Qt: raggruppati elementi specifici e non specifici per gioco nelle stesse schede.
- Qt: aggiunta nota sul requisito Vulkan SDK nei tooltip di validazione.
- Corretto il caricamento delle impostazioni di fullscreen.
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.11.0 (Linux qt) (Linux SDL)
Download: shadPS4 v0.11.0 (Win64 qt) (Win64 SDL)
Download: shadPS4 v0.11.0 (macos qt) (macos SDL)
Download: Source code shadPS4 v0.11.0
Fonte: shadps4.net
![[Scena PS5] Rilasciato PS5 App Dumper v1.05 Beta ora con Auto Backport e generazione automatica FSELF](https://www.biteyourconsole.net/wp-content/uploads/PS5AppDumper-238x178.webp)


![[Scena PS5] Rilasciato PS5 App Dumper v1.05 Beta ora con Auto Backport e generazione automatica FSELF](https://www.biteyourconsole.net/wp-content/uploads/PS5AppDumper-100x75.webp)



![[Scena Switch] Rilasciato emulatore melonDS WIP](https://www.biteyourconsole.net/wp-content/uploads/MelonDS-2.jpg)
