Dragon Blaze - Psikyo
Un Dragon Blaze bloqué au démarrage sur une erreur : "Security NG!".
La PCB est en excellent état :
A l'inspection visuelle, deux choses attirent mon attention.
Un condensateur manquant dans le circuit audio :
Et l'EEPROM emplacement U44 qui a été charcutée :
Qu'est-il arrivé à ce jeu ?
Cette EEPROM sert à stocker une partie des paramètres du jeu et contient des données indispensables à son démarrage.
En utilisant Google pour voir si cette panne est déjà connue, je tombe sur ce sujet du forum du forum shumps.system11.org.
Le post date de 2015.
Quelqu'un y explique que son Dragon Blaze démarrait sur "EEPROM error" et qu'il a remplacé la 93C56 (U44), puis s'est finalement retrouvé avec une erreur : "Security NG".
Ça fait sérieusement penser à ce que j'ai entre les mains !
A la fin de son sujet il explique que des continuités sont coupées.
Exactement le même souci sur ma PCB :
Après dessoudage de l'EEPROM, certaines pastilles tombent toutes seules et des pistes sont coupées au ras des traversants. Un massacre...
J'en conclus que le sujet sur ce forum est très certainement celui de l'ancien propriétaire de la PCB que j'ai entre les mains.
Il va donc falloir vérifier tout ce qui a été fait.
Pour commencer, je monte l'EEPROM sur un adaptateur SOIC8 dans le but de pouvoir lire son contenu et de m'assurer qu'elle n'est pas HS :
Jusque là je ne vois rien de suspect.
A noter qu'il Il existe un moyen de contourner cette erreur de sécurité sur ces systèmes Psikyo : il faut activer la pin "TILT" sur le connecteur JAMMA au démarrage :
MAME utilise cette méthode dans son driver pour pouvoir émuler le jeu tout en contournant la sécurité.
Dans le cas de cette PCB ce serait trop simple et pas propre de shunter cette pin à la masse pour ne pas aller plus loin.
Du coup j'entreprends de comprendre là où ça bloque.
L'ancien proprio a remplacé l'EEPROM originale par une Atmel 93C56A qu'il a programmé avec la dernière ROM disponible dans le romset de MAME : "eeprom-dragnblz.bin" CRC : 70A8A3A6.
Ce qu'il ne savait pas au sujet de cette ROM c'est qu'elle a été modifiée pour les besoins de l'émulation. Elle n'est donc pas utilisable directement sur le hardware original !
Je me lance donc en quête de la ROM originale : "eeprom-dragnblz.u44" avec le CRC : 46E85DA9. Elle est facilement trouvable sur le net en lançant une recherche avec son CRC comme mot clef.
Une fois trouvée, il me faut un support pour programmer : les 93C56 existent en version programmable en 8 et/ou 16bits. L'organisation des données se fait à l'aide de la pin 6 de l'EEPROM (ORG). Dans le cas de celle utilisée par l'ancien proprio il est impossible de la programmer en 16 bits.
Pour mes tests je commande un lot de 93LC56C Microchip (8 & 16bits), et je réalise un petit circuit pour faciliter mes essais :
Je commence par faire un test directement avec une 93C56 vierge -> Je constate que quand le TILT est activé (contournement du test de sécurité), le jeu démarre avec une erreur "EEPROM NG" puis réécrit une partie de la 93C56 et enfin reboot normalement.
Cependant la clef de sécurité n'est pas réécrite. donc l'erreur "security NG" persiste au démarrage suivant lorsque le TILT est désactivé.
Quand je programme l'EEPROM avec la ROM eeprom-dragnblz.bin (CRC : 70A8A3A6) en 8 et 16 bits, j'ai toujours le même problème. Ce qui est normal car cette ROM est modifiée pour les besoins de l'émulation.
Je passe donc à la ROM "eeprom-dragnblz.u44" avec le CRC : 46E85dA9, puis la programme en 8bits -> toujours la même erreur...
Et enfin en 16 bits :
Je lance le test et :
Parfait, le jeu démarre normalement sans avoir à activer le TILT.
A noter : le driver de MAME précise la taille des données de la 93C56 dans son fichier source : "ROM_LOAD16_WORD_SWAP".
La solution était donc de programmer "eeprom-dragnblz.u44" avec le CRC : 46E85dA9 sur une 93C56 en 16bits.
Je peux maintenant ressouder l'EEPROM sur la PCB :
Puis remplacer le condensateur C16 (2200uf 25v) :
En bonus je décide de passer le jeu en version japonaise.
Pour ça il faut aller à l'emplacement JP3 :
Et fermer tous les jumpers :
dans le cas présent JP4 ouvert = version internationale
JP1,2,3,4 fermés = Version japonaise.
Voilà c'est fini, maintenant il va falloir s'entrainer dur, parce que ça pique fort !