2️⃣ Gaming sincronizzato tra PlayStation 2 e smartphone
Da OctoSpacc
Chi segue le mie avventure da abbastanza tempo e con dovuta attenzione forse lo sa, ma il più grande problema dell’informatica è: come conciliare bene le discrepanze che si vengono a creare quando ci si pone il problema di videogiocare sia a casa che in portatilità? Tra giochi che in un caso sono comodi da giocare e in un altro magari nemmeno girano, e i salvataggi che si spargono per innumerevoli dispositivi diversi, risolvere questo problema in toto non sarà mai possibile…
Eppure, certe volte, l’entropia del cervello è in grado di generare idee particolarmente utili anche a questo proposito, come mi è successo l’altro giorno per la PS2.
Io ho infatti una reale PlayStation 2, console domestica che quando si trova modo di usare è certamente apprezzabile… e che io spesso mi trovavo a non usare, per i motivi sopracitati: né direttamente, perché a casa spesso non mi va, né con emulatore sullo smartphone, perché sentirei che a casa non sfrutterei la vera console dato che i salvataggi aggiornati starebbero solo sul telefono.
E allora, proprio l’altro giorno, fissando la console (non so bene perché), penso che dovrebbe esistere un modo per avere i salvataggi facilmente sincronizzati tra quella e il telefono…
Intoppo 1: chiavetta o memory card?
Sul momento, l’idea più semplice a cui ho pensato è stata: esistono degli adattatori per usare una scheda microSD come memory card PlayStation (che usano invece un’interfaccia non-standard)… potrebbe convenire comprare uno di quelli, così tengo lì tutti i salvataggi, e a desiderio posso accedervi anche da altri dispositivi spostando la scheda in giro.1
Con una scheda da diversi GB (tanto ormai in giro non se ne trovano di piccole comunque), inoltre, potrei anche fare a meno della chiavetta USB e tenere tutti i giochi solo sulla scheda di memoria!
Per fortuna, questo non è l’unico modo, almeno per certi giochi: Open PS2 Loader, l’homebrew che esegue giochi commerciali da memorie di backup (come le chiavette USB), supporta l’uso di memory card virtuali (VMC) che sono salvate come file sull’unità USB. I giochi sono alquanto lenti a salvare su quella (la PS2 supporta solo USB 1.1, e in più c’è dell’overhead strano), però è una soluzione apparentemente agibile.
Intoppo 2: conversione dei salvataggi
Indipendentemente dalla precedente scelta, scopro però un altro ostacolo: i salvataggi andrebbero convertiti per essere passati dalla console all’emulatore (almeno AetherSX2, nel bene e nel male l’unico veramente decente ad oggi) e poi viceversa.
Fortunatamente, trovo subito mymc, un programma talmente antico che richiede Python 2 (mentre al momento siamo da anni e anni al 3), che però funziona, e grazie al cielo offre un’interfaccia a riga di comando.
Di per sé non fa vere conversioni di memory card virtuali, ma permette di manipolare i file contenuti in vari modi. Tutto molto grezzo, ma per fortuna abbastanza sfruttabile per fare proprio quello che serve a me, dopo aver assemblato uno script ideale.
Non mi metto a spiegare come funziona, in fondo all’articolo potete scaricarlo e leggerlo, è una noia. Ho pacchettizzato mymc dentro lo script, così che non vada installato a parte.
Intoppo 3: convertire dal telefono
Nota 2023-10-18: ho trovato un fork moderno (in Python 3) di mymc, mymc+… non l’ho (ancora) provato, ma è possibile che questo possa funzionare anche su Android, eliminando il setup intricato che segue, quindi lo menziono.
Purtroppo, mymc ha qualche problema a funzionare in Termux (l’ambiente Linux nativo molto comodo per questo tipo di integrazioni) sul mio Android: non so di cosa sia la colpa, ma in pratica il programma ha problemi a leggere i file VMC, tirando un errore del tipo di file.vmc: Bad file descriptor
. Non ho trovato soluzioni online, nemmeno per ricerche generiche del problema, quindi ho dovuto arrangiarmi. Forse usare un sistema GNU+Linux containerizzato in proot, con le sue librerie e una build diversa di Python 2.7, basterebbe a risolvere il problema, ma chissà.
Dal canto mio, mi stavo iniziando a scocciare, e allora ho optato per delegare la conversione al mio server Debian, facendo svolgere ad uno script in Termux il semplice compito di caricare la VMC sul server, eseguire lì sopra il vero script di conversione, e poi scaricare il file convertito nella giusta posizione in locale.
Prima che mi dimentichi: su Android 13 e superiori (ma già da alcune versioni passate) servono i permessi di root per far leggere e scrivere file da/su memorie esterne (come la chiavetta USB) e cartelle private delle applicazioni (come quella dove AetherSX2 conserva le memory card virtuali).
A quanto ho potuto provare, se non si ha il root bisognerà per forza usare un gestore di file adeguato (e non credo ne esistano di scriptabili, quindi bisogna usare le manine), o forse ADB, per spostare i file in giro… ringraziate Google.
In ogni caso, i miei script hanno scritti dentro i percorsi speciali usati per tutto l’ambaradan.
Usando Termux:Widget, ho aggiunto infine due collegamenti al mio launcher di sistema, per la conversione della VMC:
- uno che va dal formato PS2 a quello emulatore, da eseguire quando voglio giocare su telefono ma i salvataggi sulla pennetta sono stati modificati l’ultima volta dalla PS2;
- l’altro per la conversione inversa, da eseguire quando voglio andare a giocare sulla PS2 una volta che è stato l’emulatore ad aggiornare i miei salvataggi.
A spiegarlo mi rendo conto che appaia complicatissimo, nella pratica devo solo premere un tasto e aspettare una manciata di secondi.
Nella pratica: il pregio della memoria unica
Eliminati gli intoppi, la configurazione è fatta, ed il suo punto di forza sta nella centralizzazione di giochi e salvataggi su un unico dispositivo: la chiave USB. In questo modo:
- evito la confusione generata da giochi che ho da una parte ma non l’altra, specialmente quando voglio modificare la mia raccolta;
- non mi serve una microSD tanto più grande nello smartphone per contenere tutti i giochi che ho già su un’altra memoria portatile, con vantaggi per la stabilità degli altri dati ed il peso del portafogli;
- non c’è confusione extra per la gestione di anche i salvataggi, essendo questi gestiti come ho detto prima.
Sulla PS2 attacco la pennetta normalmente quando mi serve, invece sullo smartphone devo usare un adattatore USB-C OTG, cosa mediamente scomoda ma c’è poco da fare. Per evitare di perdere ‘sti robi in giro, ho attaccato poi un moschettone alla pennina USB, e un anello portachiavi nel buco per i laccetti che ho sulla cover del telefono.
Concludendo: idee a catena
Credo che questo sia il sistema più ideale date le mie condizioni iniziali, e nei giorni a seguire lo proverò per bene.
Probabilmente, dovrò comunque procurarmi una memoria esterna più capiente per conservare più giochi, perché quella da 32 GB che uso ora mi è sempre stata strettina.
Magari, prendendone una abbastanza grande, e scrivendo un homebrew apposito, credo di poter adattare questo mio sistema anche per i giochi Wii, usando la stessa memoria anche per quelli… spoiler? 👀
In vera fine, ecco le risorse aggiuntive per questo articolo:
- La mia domanda iniziale e la breve discussione del sistema su Sony Hacking Zone: https://t.me/SonyHacking/46784;
- Guida all’uso delle VMC su OPL: https://youtube.com/watch?v=tBrKcJC_E4U
- I miei script di conversione (su GitLab): diretto, via server;
- Build Android di AetherSX2 con cui gioco (ultima senza adware): https://www.apkmirror.com/apk/aethersx2/aethersx2/aethersx2-v1-4-3060-release/aethersx2-v1-4-3060-android-apk-download/.
- Su questo riscontro opinioni contrastanti o consigli non troppo chiari, quindi attenzione: non si capisce se questi adattatori funzionino anche come normali memory card per i salvataggi dei giochi (e dunque anche possibilmente come scheda per FMCB), oppure solo come memoria esterna per homebrew come OPL… in ogni caso sarebbe un acquisto potenzialmente valido, considerando le inconvenienze tecniche della USB su PS2. ↩