Pubblicato un più ampio aggiornamento beta per psOff, l’emulatore della console PlayStation 4 per PC Windows sviluppato dal developer SysRay in collaborazione con igor725, GamingDuck e VKokielov.
Questa nuova versione include numerosi miglioramenti e correzioni di bug, come per la libreria libSceSaveData, grazie al contributo di igor725, che ha lavorato anche sull’implementazione delle funzioni ioctl+fcntl IFile.
Inoltre, è stata introdotta l’implementazione iniziale di libSceSharePlay da parte di TylerJaacks e sono stati apportati miglioramenti alla gestione dei file e delle funzioni di rete.
Un altro miglioramento significativo riguarda la gestione delle finestre e la configurazione, con il supporto per configurazioni multi-monitor e la gestione delle finestre galleggianti su Steam Deck.
Sono state apportate correzioni di bug che causavano crash, come quello durante la Danza del Re Deku nei titoli di coda e il problema del “Boot Screen” che mostrava “Unknown” nella versione GC.
L’aggiornamento ha introdotto un sistema di gestione dei trofei e miglioramenti al rendering, con la gestione delle configurazioni fullscreen e delle finestre. Inoltre, sono stati aggiunti stub e funzioni mancanti in varie librerie come libSceVrTracker, libSceNgs2, libSceHttp e libSceVoice.
Ci sono stati miglioramenti significativi nella gestione della memoria e nell’hotkey handling, con l’introduzione di un sistema di notifica delle versioni dell’emulatore tramite Discord.
Sono state apportate correzioni di bug relative a librerie come libScePngDec, libSceAudioOut, libScePad e libScePthread, migliorando la stabilità e le prestazioni complessive dell’emulatore.
Descrizione
Come per tutti gli emulatori in sviluppo, anche psOff esegue un livello di compatibilità che consente al software scritto per un sistema operativo di funzionare su un sistema operativo ben diverso, traducendone le API e le chiamate di sistema.
Lo sviluppatore si è concentrato esclusivamente sulla parte di rendering iniziando solo di recente a implementare le funzioni di sistema per eseguire alcuni binari.
Attualmente non supporta:
- Invii multipli di buffer di comando.
- Cicli for negli shader.
- Opcode mancanti.
- Simboli mancanti
Dipendenze
- Vulkan SDK 1.3.268.0, minimo.
- Driver grafici aggiornati (verranno aggiunte librerie Vulkan nelle future versioni, se necessario).
Per lo sviluppo
- Ninja.
- CMake.
- Visual Studio 2019, per l’ambiente di compilazione (clang-cl, c++20).
Installazione
Per i test, basta scaricare l’ultima versione e installare le Vulkan SDK.
Per lo sviluppo, impostare CMAKE_INSTALL_PREFIX
nella cartella degli emulatori scaricata.
Esecuzione del programma
.\emulator.exe --h
.\emulator.exe --file="C:/****/eboot.bin"
Se non viene definito --root
, utilizzare la cartella da --file
. Per test/benchmark, aggiungere anche --vsync=0
.
Si aspetta che il target sia nel seguente formato:
sce_module
sce_sys
eboot.bin
Sviluppo
Utilizzare thread, mutex e condizioni di Boost. Le attese devono essere attentibili per ricevere segnali falsi dal “kernel”.
Il progetto usa p7 per il tracciamento -> server Baical.
- Moduli: Le librerie PS4.
- Core: kernel, memoria, ecc..
Emulator.exe
: (dalle release) contiene l’esecuzione e il rendering.
Changelog
- Implementazione iniziale di libSceSaveData di @igor725 in #52
- Implementazione iniziale di libSceSharePlay di @TylerJaacks in #51
- Un’altra implementazione di libSceSaveData di @igor725 in #54
- Implementazione delle funzioni ioctl+fcntl IFile di @igor725 in #56
- Non chiudere l’emulatore se il messaggio di errore fallisce di @igor725 in #58
- Implementazione di alcune API di SaveData deprecate di @igor725 in #59
- Implementazione parziale di libSceVrTracker + Pulizia + Funzioni di libSceNgs2 di @igor725 in #60
- Spostamento di zlib di @SysRay in #62
- Implementazione di alcune funzioni di libScePngDec di @igor725 in #63
- Implementazione di alcune funzioni di libSceNet di @igor725 in #64
- Tentativo di implementazione: funzioni sceNetEpoll di @igor725 in #65
- Game report di @igor725 in #66
- Lavoro di @SysRay in #67
- Alcune funzioni per far funzionare la versione originale di libSceNgs2 di @igor725 in #68
- Ricorda la posizione e le dimensioni della finestra di @igor725 in #70
- Correzione dell’implementazione di libScePngDec di @igor725 in #71
- Richiesta di game report di @igor725 in #72
- Azione di unit test di @igor725 in #74
- Riorganizzazione del GameReport di @igor725 in #75
- Implementazione parziale di sceRazorIsLoaded di @igor725 in #76
- Correzione della creazione di /dev/random di @igor725 in #77
- Correzioni varie di @igor725 in #78
- Spostamento dell’inizializzazione di /dev/zero e /dev/null, conformità allo standard POSIX di @minecraft8997 in #79
- Implementazione parziale di NpToolkit2, NpParty, Voice di @igor725 in #80
- Correzione delle dipendenze per core + config_emu|pthread|appcontent di @igor725 in #81
- Implementazione del resolver in libSceNet di @igor725 in #82
- Localizzazione del GameReport di @igor725 in #83
- Funzione Work -> di @SysRay in #85
- Stub e funzioni di @igor725 in #86
- Altre traduzioni per GameReport di @igor725 in #84
- Supporto per display multipli di @igor725 in #88
- Stub di alcune funzioni di @igor725 in #89
- Spostamento delle librerie di terze parti in un nuovo repository di @SysRay in #91
- Stub dei simboli di @kr1spy2115 in #90
- Backup dei dati salvati di @igor725 in #87
- Formattazione in loco di @igor725 in #92
- Videout: correzione della condizione di gara nella gestione delle immagini di @SysRay in #94
- Correzione della formattazione in loco di @igor725 in #93
- Lascia decidere a ffmpeg di @igor725 in #95
- Aggiunta della versione dell’emulatore di @SysRay in #97
- Autofill della versione dell’emulatore nel game report di @igor725 in #98
- Lavoro di @SysRay in #99
- Implementazione di libSceGameLiveStreamingSetMaxBitrate + simboli di libSceUsbd di @Ordinary205 in #101
- Pulizia + Json di @igor725 in #100
- Aggiornamento del titolo della finestra di @igor725 in #102
- Notifica di rilascio su Discord di @igor725 in #103
- Correzione della descrizione di vsync + funzioni di ngs2 di @igor725 in #106
- Molteplici simboli di @Ordinary205 in #105
- Revert delle modifiche audio di @igor725 in #108
- Trasferimento da “work” a “features” di @SysRay in #109
- Simboli di libSceVoice di @Ordinary205 in #110
- Molteplici simboli (Parte 2) di @Ordinary205 in #112
- Aggiornamento wiki di @igor725 in #55
- Implementazione iniziale di libSceHttp di @minecraft8997 in #104
- Correzione dell’azione wiki di @igor725 in #113
- Implementazione di alcuni simboli mancanti in libc di @igor725 in #114
- Spostamento del codice di rete al core di @igor725 in #111
- Supporto per più gamepad di @igor725 in #115
- Controlli di intervallo di configurazione e aggiornamento wiki di @igor725 in #116
- Multipli stub e implementazioni di @igor725 in #117
- Tasto di scelta rapida per il fullscreen di @igor725 in #118
- Ricerche minori su libSceUlt d @igor725 in #119
- Lavoro di @SysRay in #121
- Altri stub, implementazioni libc e correzione di scePadOpen di @igor725 in #120
- Molteplici simboli (Parte 3) di @Ordinary205 in #122
- Correzione di vari bug in libScePad di @igor725 in #124
- Aggiunta di schemi di convalida json ai file di configurazione di @igor725 in #123
- Pulizia dei codici di errore + ulteriori correzioni di scePad di @igor725 in #125
- Aggiornamento delle informazioni wiki e degli schemi json di @igor725 in #126
- Nuove funzioni per ngs2 di @igor725 in #128
- Gestione del caso ps_regs==nullptr di @igor725 in #127
- Livello di verbosità personalizzato per ogni modulo di logging di @igor725 in #129
- Lavoro di @SysRay in #130
- orrezioni in libScePad e libScePthread + alcuni stub di @igor725 in #131
- Lavoro di @SysRay in #133
- Render: versione 0.5-nightly_27.04.24 di @SysRay in #134
- Eliminazione degli alias di backend del pad di @igor725 in #132
- Correzione della formattazione di OpenFile di @igor725 in #135
- Correzione di altre stringhe di @igor725 in #136
- Spostamento del runtime e del main al pubblico di @SysRay in #137
- Correzione della visualizzazione della versione del renderer di @igor725 in #138
- Correzione dei limiti di Vulkan di @SysRay in #139
- Gestione della memoria + correzione dei simboli mancanti di @SysRay in #140
- Piccole correzioni di @SysRay in #141
- Correzioni nella configurazione di vulkanSetup e informazioni sugli errori di @SysRay in #143
- Altri stub di @igor725 in #142
- Correzione della gestione delle eccezioni di @SysRay in #144
- Implementazione di libScePngEnc di @igor725 in #146
- Correzione del comportamento di libSceAudioOut di @igor725 in #145
- Molteplici simboli (Parte 4) di @Ordinary205 in #148
- Correzione della corruzione dello stack di gmtime_s e del suono distorto FLOAT_8CH di @igor725 in #147
- Stub della libreria sceNpSignaling e correzione del log di @kr1spy2115 in #150
- Trasferimento da “work” a “features” di @SysRay in #151
- Correzione del crash di ridimensionamento di imgui di @SysRay in #152
- Sistema di trofei di @igor725 in #149
- Riorganizzazione della gestione dei tasti di scelta rapida + pulizia di @igor725 in #153
- Correzione dell’iteratore non utilizzato di @igor725 in #154
- Set di funzioni logaritmiche + correzione della configurazione di @igor725 in #156
- Elenco trofei di @igor725 in #155
- Aggiunta dei nomi e dei percorsi dei simboli allo stacktrace di @igor725 in #157
- Disabilitazione del vbuffer IO di @igor725 in #158
- Simboli mancanti e piccole correzioni di @igor725 in #159
- Lavoro di @SysRay in #160
- Correzione della frequenza di campionamento per il suono ngs2 di @igor725 in #161
- Molteplici simboli (Parte 5) di @Ordinary205 in #162
- Correzione del rilevamento della lingua per i trofei di @igor725 in #163
- Altra correzione per Ngs2 di @igor725 in #164
- Correzione dei trofei di @igor725 in #166
- Gestione dei casi zero di @igor725 in #165
- Correzioni di bug per libc malloc di @SysRay in #167
- Correzione del valore di ritorno di POSIX_CALL + correzione della libreria di @igor725 in #168
- Correzioni di @SysRay in #169
- Stub di alcune API sceNp di @igor725 in #170
- graphicsDriver: utilizzo della dimensione dei registri dello shader di @SysRay in #172
- Trasferimento da “work” a “features” di @SysRay in #173
- Correzione della dimensione della finestra + bug del nome del thread di @igor725 in #174
- Trasferimento da “features” a “main” di @SysRay in #175
Download: psOff v0.5
Download: Source code psOff v0.5
Fonte: github.com