Reprogrammation Dallas DS5002 - Gaelco GAE
Avant de commencer cet article il convient de remercier ceux qui ont rendu ce tuto possible. Je pense à Apocalypse et Caius qui m'ont mis sur la piste, mais aussi et surtout Peter Wilhelmsen et Morten Shearman Kirkegaard qui sont à l'origine du dump et de la compréhenssion du fonctionnement des DS5002 sur les PCB Gaelco.
Une pensée pour Morten Shearman Kirkegaard qui nous a quitté trop tôt.
Dans le monde merveilleux de l'arcade, les éditeurs ont toujours cherché à protéger leurs jeux des pirates. C'est ainsi que les piles suicides virent le jour. Véritables petites saloperies qui nous pourrissent la vie en ajoutant des pannes aux pannes... Comme si cela ne suffisait pas !
Heureusement il existe de fiers résistants qui chevauchent le code et brisent les derniers remparts de ces protections devenues aujourd'hui obsolètes mais néanmoins redoutables pour les collectionneurs que nous sommes.
C'est au début des années 90 que la société Espagnole Gaelco se lance dans le développement de jeux d'arcade. Pour protéger leur travail des pirates ils utilisèrent sur certains de leurs titres un microprocesseur Dallas de la famille 8051 (DS5002) qui était spécialisé dans les applications de sécurité.
A noter que quelques années plus tard Gealco cessera son activité de développeur de jeux d'arcade pour se focaliser sur l'activité de jeux de fléchettes, sous le nom de Gaelco Darts.
Voici une liste non exhaustive des jeux concernés par le DS5002 :
- Alligator Hunt
- Glass
- Maniac Square
- Play 2000
- Touch & Go
- TH Strikes Back (Thunder hoop 2)
- World Rally 1&2
...
Sur la PCB système de protection se cache à l’intérieur d'un boitier en plastique recouvert d'un avertissement sans équivoque : "DO NOT REMOVE", doublé d'un : "WARNING DO NOT OPEN" .
Brrrrr ça fait peur.
Voici ce qui se trouve à l’intérieur :
La pile CR2032 sert à maintenir des informations dans une mémoire volatile (qui a besoin d'alimentation électrique pour ne pas perdre ses données). Sans ces informations le jeu ne démarre plus !
Autant dire qu'à l'ouverture il faut être très prudent en particulier si vous êtes pourvu de doigts palmés, car il existe un risque réel de court circuit avec la pile, et/ou de détériorer les pistes qui se trouvent sous les bords du boitier.
Voici ce qui arrive si jamais la pile a un "accident" ou si elle n'est plus en mesure de fournir assez de puissance pour alimenter la RAM du circuit :
"COPROCESSOR BAD" ou "Not Ready" pour d'autres titres.
Le jeu ne démarre plus... Reste plus qu'à se toucher devant l'écran...
...
Si jamais cela devait arriver, voici la solution pour reprogrammer la RAM du DS5002. (Youpi !)
Au préalable vous aurez besoin de :
- un adaptateur USB vers TTL compatible avec votre OS favoris (attention aux pilotes Windows 10). Ces adaptateurs se trouvent facilement chez nos revendeurs chinois préférés (Covid-19 free) ou dans la boutique la plus célèbre du net (celle appartenant au 168eme chauve le plus sexy de la côte ouest).
Sur celui-ci il faut penser à régler le jumper de la tension électrique sur 5V
- une rallonge Dupont mâle vers femelle :
- Le fichier RAM du DS5002 au format HEX intel correspondant à votre jeu (convertis par votre serviteur) :
- Un logiciel de communication par le port COM. Personnellement j'utilise HyperTerminal, c'est un logiciel disponible depuis des années dans Windows, cependant Microsoft a eu la bonne idée de le retirer de Windows 10. Heureusement il est très simple à installer :
- Télécharger ->ici<-
- Copier les fichiers dans un dossier sur le PC (n'importe lequel osef).
Pour commencer il faut remplacer la pile (c'est mieux non ?) :
Ensuite il faut réaliser le câblage suivant entre votre adaptateur USB/TTL et le port COM de la PCB :
Pinout du port COM (de gauche à droite) :
1 - VCC
2 - TX(D)
3 - RX(D)
4 - /Prog (entrée inversée qui nécessite d'être à la masse pour être activée)
5 - Masse
Une fois le câblage entre la PCB et l'adaptateur USB/TTL terminé, mettez la PCB sous tension et ensuite branchez votre adaptateur au port USB de votre PC.
A partir de cette étape, et une fois les pilotes de l'adaptateur USB/TTL correctement installés, vous pouvez lancer Hyperterminal :
Inutile de configurer un modem, vous pouvez zapper cette étape en cliquant sur "OK" :
Mettez le nom que vous voulez dans la description de connexion :
Il faut sélectionner le port COM de votre adaptateur USB/TTL (COM2 dans mon cas) :
Entrez les paramètres de connexion :
2400 BPS, 8 bits de données, aucune parité, 1 bit d'arrêt et contrôle de flux Xon / Xoff.
Ensuite la fenêtre du terminal s'ouvre, appuyez sur touche "Entrée" pour afficher le prompt :
Là nous sommes connecté !
Ensuite il faut débloquer le DS5002 avec la Touche "U" puis "entrée", et le passer en attente de chargement avec la touche "L" puis "entrée":
Une fois débloqué le microcontrôleur peut recevoir le code, pour cela il faut cliquer sur "Transfert", puis "Envoyer un fichier texte" :
sélectionner le fichier, puis valider avec "Ouvrir" :
Le transfert se lance automatiquement après avoir cliqué sur "Ouvrir". Il peut durer plusieurs minutes, pendant ce temps le voyant TX de l'adaptateur USB/TTL reste allumé, cela veut dire que des données sont envoyées et qu'il ne faut pas interrompre la connexion :
Il ne se passe rien dans le terminal pendant le chargement, ce n'est qu'une fois terminée que le prompt réapparait :
Pour les jeux suivant, à la fin du transfert vous pouvez appuyez sur la touche "Z" puis "entrée" pour verrouiller le MCU :
- World Rally 1
...
Déconnectez le terminal puis débranchez l'adaptateur USB de l'ordinateur en premier, et enfin éteignez votre PCB.
Pour les autres jeux il est nécessaire d’initialiser le registre MCON du DS5002, sinon le jeu démarre avec des bug dans tous les sens.
Il faut donc rentrer la commande suivante dans le terminal pour ces jeux :
- Alligator Hunt : W MCON 19
- Glass : W MCON 29
- Maniac Square : W MCON 19
- Play 2000 : W MCON 79
- TH Strikes Back : W MCON 79
- Touch & Go : W MCON 19
- World Rally 2 : W MCON 69
Puis valider avec "entrée"
Et enfin, verrouiller le MCU avec la touche "Z" et "entrée" :
Débrancher l'adaptateur USB de l'ordinateur en premier et éteignez votre PCB.
Au démarrage suivant votre jeu doit se lancer et tourner normalement :
Pour finir je vous conseille de remettre le boitier de protection en plastique, c'est mieux pour éviter les étincelles. Vous pouvez aussi dater, car si jamais on est encore là dans 20 ans ça peut servir :
PJ Article :
Alligator Hunt
Glass
Maniac Square
Play 2000
Touch & Go
TH strikes Back
World Rally 1
World Rally 2
Hyperterminal XP