Logo PJ
Home
Arcade
Musica
Bicicletta
FabLab
Linux
DreamBox
Giochi
 
   Introduzione   Bartop   Cabinato   Flipper   Raspberry   Risorse 

Console arcade su Raspberry

 

Dopo aver lavorato su cabinati originali il mio interesse si è spostato ora sul realizzare un dispositivo facilmente trasportabile e collegabile alle moderne televisioni HD, con il quale emulare i vecchi giochi arcade, i computer e le console. Può sembrare banale, ma uno dei problemi maggiori di questa configurazione risulta proprio come visualizzare giochi la cui risoluzione variava intorno ai 260x220 pixel sui moderni schermi da 1920x1080 pixel, magari pure di gran formato come 50 o 60 pollici.

Dal punto di vista hardware la scelta è caduta ovviamente su una scheda Raspberry per via delle ridotte dimensioni e della potenza di calcolo disponibile. Dotata di un processore quad core a 64 bit da 1.2GHz e di 1GB di RAM, completa di wireless, bluetooth una porta ethernet e quattro porte USB, utilizza una scheda micro SD come supporto di massa per il sistema operativo. Per quanto riguarda la parte video, integrata nel processore Broadcom, l'uscita è in full HD tramite connettore HDMI, con il quale è possibile veicolare anche l'audio; in alternativa è possibile utilizzare un classico jack da 3,5 mm (quello delle cuffie).

Il sistema operativo che ho utilizzato si basa sulla distribuzione Retropie, opportunamente personalizzata e ottimizzata. In particolare ho installato il frontend Attract-Mode, che ritengo molto più configurabile e potente rispetto all'EmulationStation fornito di default. Mentre la grafica del menù principale è stata creata da zero, per quella dei menù degli emulatori sono partito da dei layout già disponibili per personalizzarli secondo le mie necessità, in maniera da rendere il tutto più omogeneo.

Per quanto riguarda il case, ovviamente volevo che fosse qualcosa di attinente al mondo videoludico ma che allo stesso tempo garantisse all'interno spazio a sufficienza per gestire l'accensione/spegnimento tramite una schedina PowerBlock e magari la presenza di una ventola. Ho utilizzato quindi un case NESPi prodotto dalla Retroflag che, come dice il nome, riproduce le forme della vecchia console NES, integrando un pulsante di accensione e uno di reset funzionanti, come pure funzionanti sono sia le due porte USB presenti davanti che quelle nascoste dallo sportellino della cartuccia.

 

Sebbene la console non richieda una connessione Internet per il suo utilizzo, è possibile comunque effettuare aggiornamenti del sistema o aggiungere giochi via wireless o cavo di rete, tramite accesso SSH o SAMBA. I giocatori invece utilizzano i joypad cordless della Playstation 3 connessi via bluetooth. Per le attività di manutenzione infine ho predisposto una tastiera cordless Logitech K400 Plus con touchpad integrato attraverso la quale è possibile accedere direttamente in console.

Gestione dello spegnimento

Una delle poche cose brutte della Raspberry, che la avvicina molto a schede come Arduino, è che non ha una gestione dello spegnimento: si accende quando riceve la corrente e si spegne quando viene tolta. Anche dando il comando di spegnimento da sistema operativo si arriva fino allo spegnimento dello schermo, ma la scheda poi risulta sempre alimentata e per riavviarla occorre togliere la corrente e ridarla; non è presente neanche un tasto di reset sul circuito stampato.

Il case NESPi mette a disposizione un pulsante di accensione e uno di reset, che si limitano però unicamente a fornire o meno l'alimentazione alla scheda: spegnere il sistema in questa maniera rischia di compromettere l'integrità del filesystem. Sicuramente si tratta di un passo avanti ma non è ancora la soluzione ottimale.

Per risolvere la questione ho quindi utilizzato una schedina PowerBlock che, basandosi su uno schema elettrico circolato su Internet, gestisce due segnali della porta GPIO per spegnere la Raspberry in maniera pulita. In pratica quando l'interruttore di accensione viene posto su ON viene fornita tensione alla scheda e il sistema operativo parte, quando invece l'interruttore viene posto su OFF viene invertito lo stato logico del pin 18, in maniera tale che il demone installato possa avviare la procedura di shutdown; nel momento in cui tale procedura termina viene rilevata la mancanza di tensione sul pin 17 e viene tolta la corrente alla scheda. Viene gestito inoltre un LED di stato, che lampeggia durante le fasi di avvio e spegnimento, restando invece acceso durante il normale funzionamento.

Prima di utilizzare la PowerBlock all'interno del case NESPi occorre effettuare delle modifiche alla schedina che ospita gli interruttori e il LED, interrompendo delle piste in maniera tale da rendere indipendenti LED e interruttore di accensione e lasciando invece inalterata la funzionalità del pulsante di reset. Occorre poi saldare dei fili per collegare alla PowerBlock interruttore e LED e fornire la tensione necessaria. Il lavoro non richiede più di 10 minuti in quanto il circuito stampato è molto semplice e i componenti sono ben spaziati; è quasi più il tempo necessario per svitare tutte le parti e per riassemblarle.

RIFERIMENTI

  • Il sito ufficiale della Raspberry.
  • PowerBlock è una scheda che permette di gestire lo spegnimento pulito del sistema operativo con la Raspberry.
  • RetroPie è una distribuzione linux specifica per il retro gaming.
  • Attract-Mode è un frontend grafico molto leggero ma potente. Può essere compilato su varie piattaforme tra cui anche la Raspberry.