Invito ai navigatori!

Scuola, Retrocomputing, Retrogames, Filosofia, in modo semplice e con qualche innovazione.
Se gradirete i post di questo sito non mancate di cliccare su qualche banner pubblicitario, a voi non costa nulla, e potete anche trovare qualche occasione!
Commenti (civili) e giudizi sono graditi, attendete qualche giorno per vederli, debbo prima controllarli e poi eventualmente rispondere.

sabato 6 giugno 2015

RETROCOMPUTING --- CONTROLLARE UN R.O.B. NINTENDO CON UN C64

Il Nintendo R.O.B. con gli
 accessori che ho trovato 
Alcune settimane fa sono entrato in possesso di un R.O.B. della Nintendo, si tratta di una periferica da  usare con la vecchia console NES, in pratica è un robottino che doveva essere usato con alcuni giochi previsti quali Gyromite e Stack Up. L'intenzione della Nintendo era quella di aiutare il lancio della console NES che avvenne subito dopo il famoso crack delle console del Natale del 1983 che aveva rischiato di spazzare via questo mercato a favore degli home conmputer.
 Il robottino non ebbe un grande successo, ma è rimasto nella memoria di molti ragazzi di allora che oggi lo cercano come oggetto di collezione. Il robottino veniva venduto in due package, uno era il cosiddetto "De Luxe Set" che comprendeva la console, la pistola "Zapper" ed appunto il robottino con altri accessori, un altro era una confezione solo col robottino e gli accessori di uno dei due giochi "Gyromite" o "Stack up".
E' quest'ultimo set che mi è arrivato, inizialmente senza cartuccia e coperchio del vano batterie, mancanza che ho rimediato su ebay con una spesa abbastanza moderata.
Ho subito notato che in effetti il robottino era molto sacrificato visto che si potevano usare solo due giochi, ma ho anche visto la mancanza di collegamenti a filo con la console, che guidava il robot solo con dei segnali video (input del robot) e con la pressione di alcuni tasti del controller della console (output del robot). Mi è dunque balenata l'idea di gestirlo con un home computer, ovvero con il suo peggiore concorrente di allora, e non poteva essere che il Commodore 64!
Il Commodore 64 con la
configurazione simile a quella usata
Il progetto non sembrava impossibile, bastava trovare il codice con cui la NES mandava i comandi al robot, sotto forma di flash dello schermo. Alcuni video su youtube facevano pensare a dei semplici cambiamenti del colore dello sfondo con alternanza di nero e verde.
Per poter ottenere il codice preciso avrei dovuto fare una ripresa video ad alta velocità e mi stavo attrezzando per farla, ma per fortuna ho trovato su Google un forum dove si discuteva appunto di questo, al seguente url:
Il post più interessante è del 16 aprile 2011 e da una lista dei comandi con i relativi codici di lampeggio sotto forma di numeri esadecimali, che qui brevemente riporto anche in binario:
HEX      BIN     Comando
             00010       Sequenza di inizio comando (va fatta sempre prima del comando)
AB       10101011 Calibratura (R.O.B. Effettua la stessa sequenza di test che fa all'accensione)
AE       10101110 Giu' di 1 passo
BA       10111010 Sinistra di 1 passo
BB       10111011 Su di 2 passi
BE       10111110 Chiude le braccia
EA       11101010 Destra di 1 passo
EB       11101011 Test (accende la spia sulla testa del ROB se era spenta)
EE       11101110 Apre le braccia
FA       11111010 Su di 1 passo
FB       11111011 Giu' di 2 passi

Il lampeggio deve seguire lo standard video usato che per il PAL richiede un flash ogni 1/50 di secondo, dato che il C64 lavora come progetto con il NTSC (sessantesimi di secondo) anche se esiste la versione PAL il timing è un pò critico e spesso occorre creare o modificare delle piccole pause tra un flash e l'altro. Il risultato è che il robot non reagisce sempre nel modo giusto.
Dopo vari tentativi sono riuscito a creare un algoritmo di codifica abbastanza efficiente, e quindi ora posso far lavorare il robot con un C64, missione riuscita!
Per festeggiare ho fatto un piccolo video dimostrativo, mi raccomando, non badate al joystick che da comandi diversi da quelli che dovrebbe, aveva un piccolo difetto, lo avevo ripulito e poi rimontato male, ruotando la schedina interna di 90 gradi! L'importante è che il robot esegue i comandi come descritto a video.



Ora è possibile usare il robot per tanti altri scopi, io avrei pensato, p.es. a fargli risolvere il problema delle Torri di Hanoi, ma c'è molto per chi vorrà utilizzare le informazioni che ho dato.
Qui c'è il file PRG, da usare con un C64 reale (il nome file inizia con ROB) ovviamente, per ripetere il mio esperimento, una nota: nel ciclo di trasmissione del comando, appena dopo ogni flash c'è una riga contenente istruzioni inutili, servono per ottenere una piccola pausa.
Vi sono due versioni del file, quella migliore finisce col numero 2.
Naturalmente la tecnica usata è applicabile per tutti i computer in grado di generare i lampeggi con un timing compatibile, quindi Buon Lavoro!