07 aprile 2020

Raspberry + VGA666 vs b4nd1t0

Dopo l'acquisto del Raspberry ho deciso di iniziare a fare un po' di prove, perché si, è fiacco per gli ultimi mame, ma mi rendo conto che anche se ci faccio girare una 106 i giochi sono comunque tanti (c'è ben più di una sala giochi) e qualche soddisfazione te la puoi togliere, poi mi intrigano le sfide e riuscire a far funzionare qualcosa ha sempre il suo fascino.
Sarebbe interessante viste le ridotte dimensioni infilare un rasp direttamente nella scocca di un tv (l'aveva già ipotizzato qualcuno ma non ricordo chi) o fare un bartop con crt di dimensioni contenute, insomma le possibilità sono molte.
Ho deciso quindi di prendere un adattatore VGA666 per far uscire il rasp su CRT, ma non potevo non complicarmi la vita, quindi l'ho preso in kit, premettendo che non ne assemblo uno dai tempi di Nuova Elettronica, posso solo sperare che vada tutto bene, anche perché il saldatore è sempre lo stesso.

Parto con l'assemblaggio del kit che si presenta piuttosto semplice (il kit), c'è la basetta, il connettore VGA e le resistenze raggruppate per valore



primi approcci con le saldature che all'una di notte non è che sia il massimo, sono andato un po' a fortuna

pronti

GPIO profilo 1
GPIO profilo 2
Resistenze messe
montato connettore VGA
Finito di assemblare, arriva il momento di configurare il raspberry dal lato software, ho raccolto informazioni un po' in giro, in rete, la maggior parte dal sito Advancemame che attualmente è l'unico emulatore per farci uscire su CRT.

Partirò da zero utilizzando la versione Lite di Raspbian, così non ci saranno programmi inutili che appesantiscono il sistema. (anche perché essendo un ex sessantaquattrista la digitazione di comandi o listati mi è rimasta nel sangue quindi non posso fare altro, mi spiace)

Per prima cosa, dopo aver scaricato l'immagine di Raspbian Lite dal sito ufficiale, scrivo il file .img sulla sd con Win32 Disk Imager (sono su Windows), operazione abbastanza rapida viste le dimensioni.
Una volta avviato il sistema inizio la configurazione preliminare, tramite sudo raspi-config cambio la lingua, la time zone, la tastiera (così trovo i tasti al posto giusto) ed abilito il login automatico.
Riavvio il raspberry e verifico che la connessione di rete sia attiva, pingando il gateway, per praticità utilizzerò la connessione via cavo, se sono fortunato avrò tutto già configurato in automatico ma ovviamente non lo sono e devo farlo a mano per via del dhcp sul router che fa i capricci
configuro la scheda di rete digitando

sudo nano /etc/network/interfaces

si apre l'editor di testo "nano" ed aggiungo i seguenti dati 

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.1.100
netmask 255.255.255.0
broadcast 192.168.1.255
gateway 192.168.1.1


salvo con Ctrl+x poi s e poi invio

Riavvio il servizio digitando 

sudo /etc/init.d/networking restart


per poi aggiungere i dns nel file resolv.conf sfruttando di nuovo nano 

sudo nano /etc/resolv.conf

cancello quelli che ci sono ed aggiungo 

nameserver 8.8.8.8
nameserver 8.8.4.4


salvo Ctrl+x->s->invio

Sono in rete, provo a pingare di nuovo ed ho successo.

Aggiorno tutto digitando 

sudo apt-get update
poi

sudo apt-get upgrade


ed infine 

sudo rpi-update


non dimenticando il sudo reboot suggerito dal sistema

Sono pronto per installare le librerie necessarie a compilare Advancemame e compagnia bella 

sudo apt-get install git autoconf automake libasound2-dev libfreetype6-dev zlib1g-dev libexpat1-dev libslang2-dev libncurses5-dev
dopo un po' di controllo mi chiede conferma, s e via

Mi procuro i sorgenti da compilare 

git clone https://github.com/amadvance/advancemame.git

mi sposto nella cartella appena creata

cd advancemame

preparo i file per la compilazione 

sh autogen.sh

seguito da 

./configure

ora compilo (ci ha messo 45 minuti) 

make -j3

una volta completato installo il tutto 

sudo make install
ora posso provare ad avviare una rom tra quelle già disponibili (gratuite) nella cartella rom 

advmame gridlee
e si avvia correttamente

Ora che mi sono sincerato che tutto funziona, passo alla configurazione di advmame 

cd
cd .advance
sudo nano advmame.rc


aggiungo una linea contenente le specifiche del monitor/TV a cui voglio connettermi 

per monitor Arcade standard 15Khz
device_video_clock 4 - 50 / 15.75 / 60

per TV PAL (europee)
device_video_clock 4 - 50 / 15.62 / 50

per TV NTSC (USA)
device_video_clock 4 - 50 / 15.73 / 60

TV Europee che supportano anche i 60Hz
device_video_clock 4 - 50 / 15.62 / 50 ; 4 - 50 / 15.73 / 60 (sono i due valori semplicemente separati da ; e spazi)

modifico la linea contenente display_adjust none in 

display_adjust generate_y

ed aggiungo anche la modifica di 

misc_quiet yes


che attiva il nonag in pratica

A questo punto posso editare (facendo una copia di backup per sicurezza) il file config.txt nella partizione boot della sd, accessibile anche da windows questa volta, ed aggiungere le seguenti linee 

# settaggi specifici Gert's VGA 666 e Raspberry Pi 3
dpi_group=2
dpi_mode=87
hdmi_timings 320 1 14 46 28 256 1 17 32 9 0 0 0 50 0 6400000 1
device_tree=bcm2710-rpi-3-b.dtb
dtparam=i2c_arm=off
dtparam=spi=off
dtparam=uart0=off
dtparam=uart1=off
dtoverlay=pi3-disable-bt-overlay
dtoverlay=vga666
enable_dpi_lcd=1
display_default_lcd=1
force_pwm_open=0
dtparam=audio=on
gpu_mem=128
ora

sudo poweroff

reinserisco la sd nel rasp, connetto la Gert's VGA 666 e la collego alla scart, 


accendendo si vedrà la sequenza di avvio di raspbian sul televisore/monitor

IMPORTANTE, il cavo VGA/scart deve essere alimentato o non si vedrà l'immagine sul tv (almeno sul mio)

ecco un paio di video del funzionamento della schedina, spero si capisca



una volta avviato il sistema operativo sarà necessario configurare le risoluzioni che advmame dovrà utilizzare, digito

advv


e si presenterà una lista di risoluzioni in rosso, scorrendo alcune sono in blu, basta evidenziarle, premere invio, aggiustarle (centratura etc) e selezionarle con spazio. Una volta provate e selezionate tutte quelle visibili salviamo con F2. Si è generata una lista di risoluzioni tra le quali advmame sceglierà nel momento in cui dovrà avviare un gioco per farlo apparire al meglio.
Osservando il file advmame.rc, noto che dopo questa operazione di scelta delle risoluzioni, sono state aggiunte queste linee di seguito, che sembrano proprio combaciare con quelle da me selezionate 


device_video_modeline raspberry_DPI_pal_1008x288 19.2 1008 1024 1112 1232 288 291 294 312 -hsync -vsync
device_video_modeline standard_768x288 16.3488 768 816 896 1040 288 290 294 314 -hsync -vsync
device_video_modeline pal_768x288 14.75 768 776 856 944 288 291 294 312 -hsync -vsync
device_video_modeline raspberry_DPI_pal_496x288 9.6 496 512 552 616 288 291 294 312 -hsync -vsync
device_video_modeline standard_384x288 8.1744 384 408 448 520 288 291 295 314 -hsync -vsync
device_video_modeline pal_384x288 7.375 384 392 432 472 288 291 294 312 -hsync -vsync
device_video_modeline raspberry_DPI_pal_336x288 6.4 336 344 368 408 288 291 294 312 -hsync -vsync
device_video_modeline raspberry_DPI_pal_240x288 4.8 240 256 280 304 288 291 294 312 -hsync -vsync
device_video_modeline pal_640x240 12.25 640 656 720 784 240 267 270 312 -hsync -vsync
device_video_modeline pal_512x240 9.75 512 528 576 624 240 267 270 312 -hsync -vsync
device_video_modeline pal_320x240 6.125 320 328 360 392 240 267 270 312 -hsync -vsync
device_video_modeline pal_256x240 4.875 256 264 288 312 240 267 270 312 -hsync -vsync
device_video_modeline pal_640x224 12.25 640 656 720 784 224 259 262 312 -hsync -vsync
device_video_modeline pal_512x224 9.75 512 528 576 624 224 259 262 312 -hsync -vsync
device_video_modeline pal_320x224 6.125 320 328 360 392 224 259 262 312 -hsync -vsync
device_video_modeline pal_256x224 4.875 256 264 288 312 224 259 262 312 -hsync -vsync
Concludendo posso dire che la scheda vale sicuramente l'acquisto, vista la spesa irrisoria (nemmeno 10€).
Accendete il saldatore e preparate il rasp!!!

Piccolo aggiornamento

Dopo l'acquisto del Raspberry Pi 4, posso affermare che la vga666 funziona egregiamente anche con quest'ultimo, ho dovuto modificare solo la risoluzione nel config.txt, appena ho un attimo incollo quì le linee di configurazione.