← Torna al blog
Aicirca 7 min di lettura

AnyPS5: ricollegare gli eseguibili PS5 invece di emularli

Pubblicato 18 ott 2026
AnyPS5: ricollegare gli eseguibili PS5 invece di emularli

C'è una categoria di progetti che finiscono in tendenza su GitHub per motivi che nessuno si prende la briga di mettere per iscritto. AnyPS5 è uno di questi. Sta in cima alla classifica settimanale con circa 16,000 nuove stelle, sfiora i 10,000 commit, e la sua descrizione in una riga — «strumento per il porting automatico degli eseguibili PS5 su Linux e Windows» — è il tipo di frase che fa cercare una penna a un avvocato e un segnalibro a un ingegnere.

La parte interessante non è che esista. La parte interessante è ciò che si rifiuta di essere.

Niente emulatore, niente runtime, niente console in una finestra

Quasi tutti i progetti che fanno girare software per console su un PC sono emulatori. Modellano l'hardware: la CPU, la GPU, la disposizione della memoria, il timing. Questo approccio è una meraviglia quando funziona e una faticata lunga un decennio quando non funziona, perché ogni gioco diventa una trattativa con il modello incompleto di una macchina di cui nessuno possiede la documentazione completa.

AnyPS5 imbocca un'altra strada. Fornisce un relinker che converte un eseguibile PS5 nel formato nativo della piattaforma di destinazione, più le implementazioni delle librerie di sistema prx a cui l'eseguibile si aspetta di essere collegato. Il README dice la conseguenza senza giri di parole: nessuna emulazione, nessun processo runtime separato. Il codice del gioco gira come codice nativo sulla tua macchina, chiamando librerie di sistema reimplementate esattamente come avrebbe chiamato quelle di Sony.

È una promessa molto più difficile da mantenere, e molto migliore se ci riesci. L'emulazione tassa ogni istruzione. Il ricollegamento tassa solo il confine: le chiamate che passano dal gioco al livello di sistema.

La parte che decide se funziona: gli shader

Un gioco è per lo più un mucchio di shader travestiti da gioco. Un titolo PS5 porta con sé programmi GPU compilati per uno specifico stack grafico; una macchina Windows o Linux vuole qualcosa che il suo driver possa digerire. AnyPS5 include un ricompilatore di shader che emette SPIR-V, e il repository annota che l'output viene validato con SPIRV-Tools quando la build abilita ANYPS5_ENABLE_SPIRV_TOOLS.

Validare lo SPIR-V non è la stessa cosa che far girare un gioco. Significa che il modulo generato è strutturalmente legale, ed è la differenza tra «potrebbe funzionare» e «il driver lo rifiuterà in un modo molto difficile da debuggare». Chiunque abbia passato una serata davanti a uno schermo nero riconosce il valore di quel controllo.

La pagina dei progressi del progetto è attenta a cosa significano i suoi numeri. La copertura delle librerie misura la quota di funzioni che il progetto ha dichiarato finora, non la quota di tutte le funzioni esposte da una PS5. È un'impostazione onesta, e significa anche che la percentuale si muoverà man mano che il team scopre quanto è grande ciò che non sa.

Come fallisce, di proposito

C'è una decisione di design che dice molto sulla maturità di una base di codice. Gli stati non supportati o inattesi lanciano std::runtime_error; il messaggio finisce su stderr e il processo termina.

Sembra brutale, ed è la scelta giusta. L'alternativa — tirare a indovinare, proseguire, corrompere lo stato — produce un crash tre frame dopo, in un punto che non ha niente a che vedere con il bug vero. Un progetto a questo stadio ha bisogno di fallimenti rumorosi, precoci e specifici. C'è un commit di metà ottobre che sistema proprio un blocco dei test su Windows causato da questo tipo di problema di ordinamento: su Windows un test che ritorna da main passa per exit, e exit uccide tutti gli altri thread prima che i distruttori statici girino al detach della DLL, così un distruttore che poi aspetta un logger morto non ritorna mai. La correzione avvolge main su MinGW e termina il processo tramite la libc. Non è lavoro glamour. È il lavoro che separa una demo da uno strumento.

L'input, e le piccole cose che contano

I controller mappati via SDL funzionano, stick analogici e grilletti compresi. Tastiera e mouse si configurano tramite un file anyps5-input.ini. C'è un convertitore web che elabora i file in locale, quindi non viene caricato nulla.

La compatibilità gioco per gioco non è tenuta nel README. Vive su una mappa dei blocchi della community costruita con dati pubblici di GitHub, con thread per titolo nelle discussions del repository per i report dei test. Vale la pena capirlo prima di scaricare qualcosa: il progetto traccia dove si incastra ogni titolo, non una lista verde di giochi che funzionano.

La frase legale che dovresti davvero leggere

Il disclaimer dice che il progetto è per interoperabilità, ricerca, preservazione e compatibilità. Dice che non include, distribuisce né richiede software protetto da copyright, firmware, chiavi crittografiche o librerie proprietarie. E dice che gli utenti sono responsabili di assicurarsi che i binari che usano siano ottenuti e usati legalmente.

È una linea tracciata con cura, ed è tutto il gioco. Lo strumento in sé è GPL-2.0-only e non contiene dati di gioco. Quello che gli dai da mangiare è un problema tuo, e nella maggior parte delle giurisdizioni «l'ho ricollegato io» non è una difesa che sia mai stata testata in tribunale.

Dove si trova davvero il confine

Il mestiere di un relinker è la risoluzione dei simboli. L'eseguibile chiede funzioni per nome; lo strumento deve garantire che ognuno di quei nomi si risolva in qualcosa di richiamabile al caricamento, con la convenzione di chiamata giusta, su una macchina che non è quella per cui il binario è stato compilato. Ne sbagli uno e il processo muore all'avvio, di solito con un messaggio che nomina una libreria e nient'altro.

Per questo la pagina di copertura del progetto è il documento più onesto del repository. Riporta la quota di funzioni dichiarate che sono implementate — non la quota dell'intera superficie API di una PS5. La differenza è enorme, e significa che la percentuale scenderà man mano che il team scopre quanto è vasto ciò che non sa. Quasi tutti i progetti nascondono questa dinamica. Questo mette una nota accanto al numero.

La stessa logica spiega il lato GPU. La traduzione degli shader non è un problema unico; è un problema diverso per ogni shader, e un titolo che renderizza correttamente per venti minuti e poi incappa in un percorso di istruzioni non tradotto andrà in crash in un modo che sembra un bug del driver. La validazione SPIR-V intercetta presto i problemi strutturali. Non può intercettare quelli semantici, e il progetto non sostiene il contrario.

Quindi la domanda pratica non è «funziona?». È «dove si ferma il mio titolo?», e la mappa dei blocchi risponde gioco per gioco, con le issue aperte allegate.

Perché è in tendenza adesso

La preservazione sta vivendo un momento suo. Dischi che si degradano, store che delistano titoli, server spenti: l'argomento per tenere il software eseguibile ha smesso di essere sentimentale ed è diventato pratico. Un relinker è uno strumento di preservazione in un modo in cui un emulatore non lo è: non ha bisogno di modellare una macchina, solo di soddisfare l'interfaccia che il software si aspetta.

C'è anche una spiegazione più semplice. Il progetto è enorme, i commit arrivano a centinaia, e una buona parte è chiaramente scritta con agenti di coding nel giro — il repository include perfino un file AGENTS.md con le regole che gli agenti tendono a infrangere. Guardare un progetto da 10,000 commit venire su in circa due mesi e mezzo è di per sé uno spettacolo, e spiega una curva di stelle che ha poco a che fare con quanti giochi si avviano.

Che cosa farne

Se hai un eseguibile ottenuto legalmente e una serata libera, l'aspettativa onesta è questa: imparerai moltissimo su come è costruito un titolo console moderno, e probabilmente non finirai un gioco. Leggi prima la mappa dei blocchi del tuo titolo. Leggi il documento sul debito tecnico prima di aprire una issue. E leggi la licenza prima di distribuire qualsiasi cosa costruita con questo.

Il punto più grande resta valido a prescindere da quanti titoli arriveranno ad avviarsi. Per vent'anni la risposta a «questo software per console può girare altrove?» è stata «solo se qualcuno emula la macchina». AnyPS5 è un tentativo serio di una seconda risposta, e il fatto che venga scritto in pubblico, a questa velocità, con così tanta idraulica senza gloria è esattamente il motivo per cui merita la pagina delle tendenze.

Articoli correlati