Le console retro su degli oggetti molto affascinanti, non solo per la loro aura quasi magica proveniente da tutto quello che hanno vissuto e i pomeriggi passati a far divertire persone, ma anche per quella sana nostalgia di una scoperta di un mondo ai tempi nuovo ma che oggi è al suo picco e che è diventato una parte della cultura mondiale. I giochi, in particolare, rispettano molto questo aspetto: guardare delle immagini di gameplay dell’originale Crash Bandicoot o dei meravigliosi Pokèmon Rosso e Blu ci fa stupire di quanto in pochi anni sia cambiato totalmente questo medium.
Oggi c’è chi ancora gioca questi giochi, attraverso le console originale o gli emulatori, e che continua a provare quelle sensazioni di un passato ormai lontano. Un modo molto semplice per poter giocare ai giochi retro è tramite la Raspberry Pi, una SBC(Single Board Computer) che riesce a far girare un intero sistema operativo assieme a diversi programmi, tra cui gli emulatori. Ci sono anche numerosi sistemi operativi da installare sul Pi che servono esclusivamente per far girare videogiochi delle vecchie console.
Il più utilizzato si chiama RetroPie ed è anche quello più documentato e completo. RetroPie permette di far girare giochi di numerosissime console datate, oltre che i cabinati e i porting di alcuni giochi iconici (Doom, Quake 3 etc.). Essendo poi la scheda molto piccola, la community ha provveduto a costruire numerosi progetti come un piccolo NES o un intero cabinato a grandezza naturale per giocare con qualche amico.
Il mio progetto, però, era diverso e, per certi versi anche più ambizioso.
Dove tutto ebbe inizio
Un po’ di tempo fa mi capitò sotto mano un video in cui un ragazzo utilizzava uno schermetto da 3.5 pollici attaccata sopra la sua Raspberry per creare quello che viene detto cyberdeck un computerino portatile molto cyberpunk che permetteva di fare diverse cose con la scheda del lampone. Navigando in Internet e nella community di creatori di questi oggetti, mi imbattei nel progetto di una console retro indossabile sul proprio polso e che permetteva di giocare in mobilità. Il primo problema che vidi in quel progetto era lo schermo troppo piccolo: in foto si riconosceva appena la schermata del Tetris o Pac-Man. Da lì mi venne in mente una piccola idea: perchè non creare una console retro che assomigli in tutto e per tutto alla Nintendo Switch? Si potrebbe tranquillamente connettere allo schermo e giocare insieme a un sacco di amici contemporaneamente.
L’idea mi piaceva, anche perchè gli avevo già trovato un posto nel mio laboratorio dove ogni tanto passo il tempo con i miei amici. A questo punto iniziai a documentarmi e a cercare di definire le caretteristiche che doveva avere la mia creazione:
- Doveva avere un proprio schermo portatile (possibilmente più grande di 3.5 pollici)
- Doveva emulare bene i giochi retro delle console più famose
- Doveva essere comandabile con i controller (nel mio caso i DualShock)
- Doveva potersi connettere alla TV e usare quella quando disponibile
- Il tutto doveva essere compatto e facilmente trasportabile
La sfida era sicuramente ambiziosa, ma avevo tempo da dedicarle.
Primi passi
Come prima cosa per costruire questo gioiellino mi procurai l’hardware necessario: la Raspberry, una micro SD da minimo 8GB, uno schermo touch da 7″ pollici e un alimentatore che erogasse 3A a 5V. Fatto ciò pensai di assemblare il tutto in un unico case stampato in 3D che trovai su Thingivese. Una volta preso tutto, lo assemblai e iniziai a smanettare con RetroPie.
La documentazione di RetroPie è fortunatamente molto esplicativa e ben fatta ma pecca di organizzazione e dà per scontato delle cose che non sono propiro ovvie per chi si approccia per la prima volta all’emulazione. Una delle prime complicazioni, infatti, è stata installare i driver necessari a far funzionare i DualShock con la console. Per farlo occorreva fare il tutto da riga di codice installando il pacchetto apposito e modificando il file rc.local per lanciare la ricerca dei controller all’avvio del sistema.
Una volta fatta l’operazione, di per se molto semplice, iniziai a provare a giocare a qualche gioco: oltre a vedere che non tutti i giochi funzionavano, notavo che alcuni di questi occupavano davvero parecchio spazio. Mi venne in aiuto la documentazione e pensai di fare in modo di avviare i giochi da una chiavetta USB più capiente. Anche qui il processo non fu lungo.
Croce e delizia della RetroPie-Switch
Arriviamo ora a ciò che ha reso particolare e interessante questo progetto: lo schermo integrato. Questa feature è stata ciò in cui è stato riposto più impegno, principalmente per la mancanza di progetti online che facessero quello che volevo fare io. Perciò ho preferito smanettare seriamente e provare a creare tutto quasi da zero.
Innanzitutto dobbiamo capire qual’era la mia idea di funzionamento: lo schermo integrato doveva funzionare solo nel caso in cui volessi giocare in mobilità ma quando volevo attaccare la RetroPie Switch ad uno schermo tramite HDMI questo non doveva accedersi e dare priorità al monitor appena collegato. Già scriverlo non è semplice, ma crearlo è stato anche più complesso.
Fortunatamente non sono partito dallo zero assoluto ma avevo trovato dei piccoli script che facevano una cosa simile con il famoso schermetto da 3.5 pollici, anche se quest’ultimo non si poteva spegnere in nessun modo se collegato. Pertanto iniziai a vedere come funzionavano questi script e come poter prendere spunto per creare un qualcosa di più completo.
Come prima cosa capii che andava tutto scritto in bash e utilizzando un piccolo pacchetto chiamato tvservice che permetteva di individuare i dispositivi video collegati al Pi. Tramite questo pacchetto si chiedeva al sistema di individuare uno schermo HDMI e di inserire la risposta, affermativa o negativa, all’interno di un file di testo. Dopodichè si effettuava un controllo sul risultato.
A questo punto sapevamo se era connesso un monitor o meno ma bisognava fare in modo che il Pi ignorasse lo schermo integrato. Per farlo ho pensato di modificare il file config.txt che viene letto all’avvio per tutte le configurazioni iniziali. Perciò ho creato due copie di questo file, uno nel caso di schermo esterno e uno nel caso di avvio in mobilità, ognuno dei quai contenenti le configurazioni specifiche per ogni periferica video. A questo punto lo script bash doveva solo sostituire il file originale con uno di questi due, in base al caso in cui si trovava, e riavviare il sistema.
Per concludere si inserisce il percorso del file bash all’interno del file rc.local in modo da renderlo eseguibile all’avvio, procedura già vista per installare i driver del DualShock.
La nascita della creatura
Dopo due settimane circa di lavoro e diversi test effettuati, la RetroPie Switch funziona! Dopo aver finito il progetto, però, ho voluto rendere più facile la vita a chi voglia ripetere o prendere spunto da questo mio progetto. Ho, infatti, inserito tutta la documentazione, tra poco anche in italiano, e i file del progetto in una repo GitHub liberamente consultabile e modificabile. Anche GitHub è stata un’esperienza nuova, era la prima volta che lo usavo e forse imparare pubblicando il primo progetto è stato il modo migliore per renderlo subito indispensabile.
Senza dubbio è stata un’esperienza davvero bella ed divertente, ho imparato molto e questo è l’importante. Come al solito, lascio qui alcune delle risorse che ho consultato per questo progetto e che mi sono state profondamente utili, oltre che la repo della RetroPie Switch.
Buon divertimento!
- Repo RetroPie Switch: GitHub
- Partire con GitHub (EN): Getting started with your GitHub account
- Creare una repo (EN): Create a repo
- RetroPie Docs (EN): Docs