Un buon numero di sistemi coin-op usciti nelle sale giochi a partire dalla seconda metà degli anni '80 in poi, prevedevano una sorta di protezione antipirateria, al fine di evitare che altre aziende potessero copiare/clonare i giochi (principalmente ad opera di piccole aziende asiatiche ed europee).
Una delle protezioni meglio riuscite è senza dubbio quella adottata dall' azienda spagnola Gaelco http://en.wikipedia.org/wiki/Gaelco, protezione che a tutt'oggi risulta essere inviolata. Essa si basa sull'utilizzo di un microcontrollore - il Dallas DS5002FP - http://www.maxim-ic.com/datasheet/index.mvp/id/2949 che interfacciato alla memoria RAM della scheda del gioco, provvede ad effettuare delle operazioni di decriptaggio dei dati e quantaltro. Se questo microcontrollore smette di effettuare il suo "lavoro", il microprocessore principale della scheda non è più in grado di interpretare correttamente il flusso di dati, con la sgardevole conseguenza che il gioco diventa...ingiocabile.
Il motivo principale del non funzionamento del microcontrollore DS5002FP è dovuto al fatto che esso esegue un codice programma che risiede in una memoria sram a lui dedicata, e che tale memoria è mantenuta elettricamente alimentata da una batteria tampone al litio; nel momento in cui la batteria esaurisce la carica, la memoria sram si cancella ed il DS5002 non è più in grado di operare.
Per risolvere il problema , sarebbe necessario e sufficiente sostituire la batteria e ricaricare nella memoria sram il codice del programma andato preso. Peccato che il codice non sia disponibile, e che non è possibile ricavare tale codice neanche da schede ancora funzionanti : il DS5002FP ha un sistema di protezione tale che è impossibile scaricare il suo codice programma.
Di fatto, i proprietari delle schede con le batterie tampone esaurite, possono gettare nella spazzatura i loro amati videogiochi.
Tuttavia qualche anno fà la Gaelco stessa rilasciò al team del Mame, il codice del Dallas specifico per il loro gioco World Rally , uscito nelle sale giochi nel 1993, e facente parte di questi giochi dotati di protezioni di fatto inviolabili. Il Mame Team fù così in grado di emulare perfettamente il gioco.
Con il codice ora disponibile, i possessori di World Rally possono tranquillamente "rivitalizzare" le loro schede sostituiendo la batteria e ricaricando il programma. Operazione non semplicissima se non si ha un minimo di dimestichezza con l'elettronica, ma assolutamente non impossibile. Mediamente il cambio della batteria tampone allunga la vita del gioco per un altra quindicina di anni almeno.
Ecco come si presenta la schermata iniziale del gioco World Rally con il DS5002FP non più funzionante: viene indicato come "Not ready" il coprocessore, che non è altri che il DS5002FP stesso.
DSCN0555.JPG
Nelle righe che seguiranno, darò indicazione su come può essere fatta questa procedura di sostituzione batteria e di riprogrammazione del DS5002FP.
Mi preme sottolineare che mi sono deciso a pubblicare questa piccola guida con una sola motivazione: evitare che qualcuno debba PAGARE per vedersi far funzionare una scheda di World Rally morta; dieci minuti di lavoro non giustificano in alcun modo nessuna somma di denaro richiesta. Inoltre la Gaelco stessa ammonisce tale comportamento....We also want to disapprove and isolate those opportunists who are already thinking the way to take advantage of Gaelco’s, S.A. generosity and turn it into a lucrative business, using the free-liberated code of Gaelco, S.A. for commercial means. These persons will turn this generosity into mistrust, that can affect future collaborations.
Materiale necessario:
- computer con software di terminale RS-232 (tipo Hyperterminal di Windows, con funzione di invio dei files)
- convertitore di livello da tensioni RS-232 per PC a RS-232 CMOS (un generico MAX232 è ok)
- codice programma del microcontrollore DS5002FP (scaricabile dal sito Gaelco o dall'ultima versione del Mame), preventivamente convertito dal formato Binario al formato Intel Hex
- batteria tampone (non ricaricabile) tipo CR2032 da 3,0 Volt per circuito stampato
- interruttore on/off e cavo di collegamento tra scheda arcade a convertitore di livello RS-232
DSCN0561.JPG
Cavo di collegamento con interruttore, convertitore RS-232PC --> RS-232CMOS (nel mio caso ho usato un programmatore di MCU con già a bordo in convertitore)
DSCN0562.jpg
Collegamento tra PC-Convertitore RS232-Scheda di gioco
DSCN0532.jpg
Piazzole dalle quale prelevare i segnali per la riprogrammazione. La batteria tampone presente sulla scheda, è quella che verrà sostituita
DSCN0549.jpg
Vecchia batteria eliminata...
DSCN0550.jpg
Batteria nuova
DSCN0564.jpg
Primo piano del cavo di collegamento posizionato sulle piazzole di programmazione
Procedimento:
- a scheda spenta, eliminare la vecchia batteria sostituendola con una nuova e carica. Sulla scheda del gioco è serigrafato il simbolo + che indica dove saldare il polo positivo della batteria.
- inserire il cavo di colegamento sulle piazzole, e tramite il convertitore RS232, collegarlo al PC
- avviare il programma di comunicazione seriale (ad esempio Hyperterminal di Windows), e settare i parametri di comunicazione come segue : velocità=2400, nr di bit=8, bit di stop=1, parità=N (nessuna), controllo di flusso=Xon/Xoff. Attivare il collegamento
- accendere la scheda di gioco e chiudere il contatto dell'interruttore collegato tra la piazzola GND e la piazzola PROG; in questo modo si "dice" al DS5002FP di mettersi in modalità di riprograzzazione.
- sul programma di terminale (Hyperterminal) del PC, non compare ancora nessun messaggio da parte della scheda di gioco; è normale, poichè il DS5002FP è ora in attesa di ricevere in sequenza il carattere corrispondente alla pressione del tasto INVIO/ENTER del pC, al fine di verificare i parametri di comunicazione. Premete quindi il tasto INVIO, fino a quando non ottenete una risposta da parte del DS5002FP , del tipo "DS5002 Loader Version......" , e sulla riga successiva vedete comparire il carattere >
Schermata.jpg
- ora digitate il carattere U (maiuscolo) seguito da invio; questo è il comando che indica al DS5002FP di poter accedere agli altri tipi di comando; in risposta otterrete la risposta "UNLOCKED". Ora premete L (maiuscolo) e invio per dire al microcontrollore di prepararsi alla riprogrammazione vera e propria. A questo comando non riceverete nessuna risposta: il DS5002FP infatti sta aspettando i codici di programmazione; sempre dal programma dell terminale, andate a selezione il file binario prelevato dal sito Gaelco o dal Mame e preventivamente convertito in formato Intel Hex, ed iniziate il trasferimanto del file stesso.
Schermata-2.jpg
- il trasferimento del file dura qualche minuto, al termine del quale il DS5002 risponderà visualizzando nella finestra di Hyperterminal, due righe con il carattere > .
Schermata-3.jpg
- Ora non dovete far altro che chiudere il processo di programmazione e mettere in sicurezza il DS5002FP; per fare ciò aprite l'interruttore tra la piazzola PROG e GND e digitare il carattere Z (maiuscolo) seguito da invio, ed otterrete la risposta "LOCKED" .
Schermata-4.jpg
- spegnete la scheda di gioco, scollegate il cavo di collegamento e riaccendetela. Ora sul monitor al quale la scheda è attaccata, potrete vedere il corretto riconoscimento del "coprocessore". E buon divertimento...
DSCN0557.JPG
Alcune note:
- Sò benissimo che questa non possa considerarsi una guida esaustiva, ma è stata redatta con il solo scopo di far comprendere che è possibile resuscitare le schede di World Rally in 10 minuti ed a costo praticamente uguale a zero. Chi chiede soldi per farlo, tanto onesto non è. E mamma Gaelco non è contenta ! Personalmente sono a disposizione di chiunque ne abbia necessità.
- Esiste un altro gioco della Gaelco che utilizza lo stesso sistema di protezione con il DS5002FP, ed è la continuazione della serie World Rally 2 - Twin racing. Ovviamente il codice programma del DS5002FP è diverso da quello utilizzato nel suo predecessore World Rally, e quindi non è utilizzabile per il ripristino della scheda.
Il codice di World Rally 2 non è mai stato rilasciato da Gaelco, e quindi il giorno in cui dovesse esaurirsi la batteria tampone, non sarà più possibile utilizzare questo gioco. Dico questo perchè avendo la scheda di WR2, era mia intenzione trovare un modo di sostiuire la batteria prima del suo esaurimento. Il manuale del microcontrollore Dallas DS5002FP riporta che se la sua memoria sram è alimentata ad una tensione maggiore rispetto a quella della batteria tampone (come avviene quando la scheda è normalmente in funzione durante il gioco), allora la batteria tampone è esclusa. Quindi mi son detto: se sostituisco la batteria a gioco acceso, non dovrei disalimentare la memoria sram e quindi non dovrei perdere il codice programma. Provare questo sulla scheda di WR2 mi sembrava comunque un azzardo, e così ho compiuto questa operazione sulla scheda di World Rally , male che andava avrei riprogrammato il DS5002FP. E da quì è nata questa specie di miniguida, perchè anche così facendo il DS5002FP ha smesso di funzionare, indicazione chiara che la sua memoria sram si è cancellata. In effetti il DS5002FP è così "bastardo" che è in grado di "sentire manomissioni" e/o operazione invasive contro di esso , e preferisce "suicidarsi" piuttosto di essere sprotetto. Alcune di queste sicurezze, non sono neanche documentate sul datasheet...
La morale è che se avete un gioco ancora funzionante e volete preventivamente sostiuire la batteria prima che muoia, non fatelo, neanche se state compiendo questa operazione con la scheda alimentata elettricamente.
Una delle protezioni meglio riuscite è senza dubbio quella adottata dall' azienda spagnola Gaelco http://en.wikipedia.org/wiki/Gaelco, protezione che a tutt'oggi risulta essere inviolata. Essa si basa sull'utilizzo di un microcontrollore - il Dallas DS5002FP - http://www.maxim-ic.com/datasheet/index.mvp/id/2949 che interfacciato alla memoria RAM della scheda del gioco, provvede ad effettuare delle operazioni di decriptaggio dei dati e quantaltro. Se questo microcontrollore smette di effettuare il suo "lavoro", il microprocessore principale della scheda non è più in grado di interpretare correttamente il flusso di dati, con la sgardevole conseguenza che il gioco diventa...ingiocabile.
Il motivo principale del non funzionamento del microcontrollore DS5002FP è dovuto al fatto che esso esegue un codice programma che risiede in una memoria sram a lui dedicata, e che tale memoria è mantenuta elettricamente alimentata da una batteria tampone al litio; nel momento in cui la batteria esaurisce la carica, la memoria sram si cancella ed il DS5002 non è più in grado di operare.
Per risolvere il problema , sarebbe necessario e sufficiente sostituire la batteria e ricaricare nella memoria sram il codice del programma andato preso. Peccato che il codice non sia disponibile, e che non è possibile ricavare tale codice neanche da schede ancora funzionanti : il DS5002FP ha un sistema di protezione tale che è impossibile scaricare il suo codice programma.
Di fatto, i proprietari delle schede con le batterie tampone esaurite, possono gettare nella spazzatura i loro amati videogiochi.
Tuttavia qualche anno fà la Gaelco stessa rilasciò al team del Mame, il codice del Dallas specifico per il loro gioco World Rally , uscito nelle sale giochi nel 1993, e facente parte di questi giochi dotati di protezioni di fatto inviolabili. Il Mame Team fù così in grado di emulare perfettamente il gioco.
Con il codice ora disponibile, i possessori di World Rally possono tranquillamente "rivitalizzare" le loro schede sostituiendo la batteria e ricaricando il programma. Operazione non semplicissima se non si ha un minimo di dimestichezza con l'elettronica, ma assolutamente non impossibile. Mediamente il cambio della batteria tampone allunga la vita del gioco per un altra quindicina di anni almeno.
Ecco come si presenta la schermata iniziale del gioco World Rally con il DS5002FP non più funzionante: viene indicato come "Not ready" il coprocessore, che non è altri che il DS5002FP stesso.
DSCN0555.JPG
Nelle righe che seguiranno, darò indicazione su come può essere fatta questa procedura di sostituzione batteria e di riprogrammazione del DS5002FP.
Mi preme sottolineare che mi sono deciso a pubblicare questa piccola guida con una sola motivazione: evitare che qualcuno debba PAGARE per vedersi far funzionare una scheda di World Rally morta; dieci minuti di lavoro non giustificano in alcun modo nessuna somma di denaro richiesta. Inoltre la Gaelco stessa ammonisce tale comportamento....We also want to disapprove and isolate those opportunists who are already thinking the way to take advantage of Gaelco’s, S.A. generosity and turn it into a lucrative business, using the free-liberated code of Gaelco, S.A. for commercial means. These persons will turn this generosity into mistrust, that can affect future collaborations.
Materiale necessario:
- computer con software di terminale RS-232 (tipo Hyperterminal di Windows, con funzione di invio dei files)
- convertitore di livello da tensioni RS-232 per PC a RS-232 CMOS (un generico MAX232 è ok)
- codice programma del microcontrollore DS5002FP (scaricabile dal sito Gaelco o dall'ultima versione del Mame), preventivamente convertito dal formato Binario al formato Intel Hex
- batteria tampone (non ricaricabile) tipo CR2032 da 3,0 Volt per circuito stampato
- interruttore on/off e cavo di collegamento tra scheda arcade a convertitore di livello RS-232
DSCN0561.JPG
Cavo di collegamento con interruttore, convertitore RS-232PC --> RS-232CMOS (nel mio caso ho usato un programmatore di MCU con già a bordo in convertitore)
DSCN0562.jpg
Collegamento tra PC-Convertitore RS232-Scheda di gioco
DSCN0532.jpg
Piazzole dalle quale prelevare i segnali per la riprogrammazione. La batteria tampone presente sulla scheda, è quella che verrà sostituita
DSCN0549.jpg
Vecchia batteria eliminata...
DSCN0550.jpg
Batteria nuova
DSCN0564.jpg
Primo piano del cavo di collegamento posizionato sulle piazzole di programmazione
Procedimento:
- a scheda spenta, eliminare la vecchia batteria sostituendola con una nuova e carica. Sulla scheda del gioco è serigrafato il simbolo + che indica dove saldare il polo positivo della batteria.
- inserire il cavo di colegamento sulle piazzole, e tramite il convertitore RS232, collegarlo al PC
- avviare il programma di comunicazione seriale (ad esempio Hyperterminal di Windows), e settare i parametri di comunicazione come segue : velocità=2400, nr di bit=8, bit di stop=1, parità=N (nessuna), controllo di flusso=Xon/Xoff. Attivare il collegamento
- accendere la scheda di gioco e chiudere il contatto dell'interruttore collegato tra la piazzola GND e la piazzola PROG; in questo modo si "dice" al DS5002FP di mettersi in modalità di riprograzzazione.
- sul programma di terminale (Hyperterminal) del PC, non compare ancora nessun messaggio da parte della scheda di gioco; è normale, poichè il DS5002FP è ora in attesa di ricevere in sequenza il carattere corrispondente alla pressione del tasto INVIO/ENTER del pC, al fine di verificare i parametri di comunicazione. Premete quindi il tasto INVIO, fino a quando non ottenete una risposta da parte del DS5002FP , del tipo "DS5002 Loader Version......" , e sulla riga successiva vedete comparire il carattere >
Schermata.jpg
- ora digitate il carattere U (maiuscolo) seguito da invio; questo è il comando che indica al DS5002FP di poter accedere agli altri tipi di comando; in risposta otterrete la risposta "UNLOCKED". Ora premete L (maiuscolo) e invio per dire al microcontrollore di prepararsi alla riprogrammazione vera e propria. A questo comando non riceverete nessuna risposta: il DS5002FP infatti sta aspettando i codici di programmazione; sempre dal programma dell terminale, andate a selezione il file binario prelevato dal sito Gaelco o dal Mame e preventivamente convertito in formato Intel Hex, ed iniziate il trasferimanto del file stesso.
Schermata-2.jpg
- il trasferimento del file dura qualche minuto, al termine del quale il DS5002 risponderà visualizzando nella finestra di Hyperterminal, due righe con il carattere > .
Schermata-3.jpg
- Ora non dovete far altro che chiudere il processo di programmazione e mettere in sicurezza il DS5002FP; per fare ciò aprite l'interruttore tra la piazzola PROG e GND e digitare il carattere Z (maiuscolo) seguito da invio, ed otterrete la risposta "LOCKED" .
Schermata-4.jpg
- spegnete la scheda di gioco, scollegate il cavo di collegamento e riaccendetela. Ora sul monitor al quale la scheda è attaccata, potrete vedere il corretto riconoscimento del "coprocessore". E buon divertimento...
DSCN0557.JPG
Alcune note:
- Sò benissimo che questa non possa considerarsi una guida esaustiva, ma è stata redatta con il solo scopo di far comprendere che è possibile resuscitare le schede di World Rally in 10 minuti ed a costo praticamente uguale a zero. Chi chiede soldi per farlo, tanto onesto non è. E mamma Gaelco non è contenta ! Personalmente sono a disposizione di chiunque ne abbia necessità.
- Esiste un altro gioco della Gaelco che utilizza lo stesso sistema di protezione con il DS5002FP, ed è la continuazione della serie World Rally 2 - Twin racing. Ovviamente il codice programma del DS5002FP è diverso da quello utilizzato nel suo predecessore World Rally, e quindi non è utilizzabile per il ripristino della scheda.
Il codice di World Rally 2 non è mai stato rilasciato da Gaelco, e quindi il giorno in cui dovesse esaurirsi la batteria tampone, non sarà più possibile utilizzare questo gioco. Dico questo perchè avendo la scheda di WR2, era mia intenzione trovare un modo di sostiuire la batteria prima del suo esaurimento. Il manuale del microcontrollore Dallas DS5002FP riporta che se la sua memoria sram è alimentata ad una tensione maggiore rispetto a quella della batteria tampone (come avviene quando la scheda è normalmente in funzione durante il gioco), allora la batteria tampone è esclusa. Quindi mi son detto: se sostituisco la batteria a gioco acceso, non dovrei disalimentare la memoria sram e quindi non dovrei perdere il codice programma. Provare questo sulla scheda di WR2 mi sembrava comunque un azzardo, e così ho compiuto questa operazione sulla scheda di World Rally , male che andava avrei riprogrammato il DS5002FP. E da quì è nata questa specie di miniguida, perchè anche così facendo il DS5002FP ha smesso di funzionare, indicazione chiara che la sua memoria sram si è cancellata. In effetti il DS5002FP è così "bastardo" che è in grado di "sentire manomissioni" e/o operazione invasive contro di esso , e preferisce "suicidarsi" piuttosto di essere sprotetto. Alcune di queste sicurezze, non sono neanche documentate sul datasheet...
La morale è che se avete un gioco ancora funzionante e volete preventivamente sostiuire la batteria prima che muoia, non fatelo, neanche se state compiendo questa operazione con la scheda alimentata elettricamente.
Commenta