Home Emulatori Rilasciato shadPS4 v0.9.0 – codename KalosPsofos

Rilasciato shadPS4 v0.9.0 – codename KalosPsofos

50
0

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.

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 e sceKernelGetModuleList.
  • 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 era vcc_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 e IMAGE_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