J’ai acquis il y a quelques semaines une Monaco GP, célèbre borne de SEGA par son âge et sa technologie : entièrement en logique cablée, il n’y a donc pas de programme chargé sur une EPROM, le jeu n’est donc pas “dumpable” et on ne peut bien évidemment pas l’émuler (il y a des projets en ce sens, mais aucun n’a abouti à ma connaissance).
flyer Monaco GP
Le gameplay est absolument d’enfer, tester cette borne, c’est l’adopter. Le plaisir est immédiat, les commandes très réactives, on comprend très rapidement que le but du jeu est de réussir à éviter les obstacles et véhicules sur la route… Route qui change souvent de forme : terrain verglacé, pont, tunnel avec vision limitée à la zone des phares, etc.
Dans une première phase de jeu, vous avez 90 secondes pour atteindre 2000 points. Vous pouvez vous crasher à loisir, les vies sont infinies. Si une fois le temps écoulé, vous n’avez pas atteint 2000 points, vous êtes bon pour réinsérer 2 francs.
Si au contraire, vous avez atteint 2000 points (ou plus), vous avez alors une “vie” et chaque crash vous décompte 1 vie. Tous les 2000 points suivants, une nouvelle vie est accordée.
Il existe 3 modèles de cab différents pour le même jeu : upright (le modèle que j’ai), cockpit et cocktail. Merci de prendre rendez-vous avec Bernard Banel pour voir les 3 modèles d’un seul coup 🙂
Maintenant que les présentations sont faites, voici le tour du propriétaire pour ma Monaco GP.
Au niveau décoratif, les 2 sides, le bezel et le CPO sont soient endommagés, soient absents. Je vais voir dans un second temps pour refaire tout ça.
La partie qui m’intéresse actuellement : l’électronique.
Ouvrons la bête…
Une vue d’ensemble
L’alim + ampli audio (qui est normalement au fond du cab)
Présentation des cartes… Tout à gauche, la carte qui gère les scores (afficheurs en haut de la borne).
Puis à droite, un rack contenant 3 cartes. De gauche à droite : gestion des graphismes, gestion du jeu et gestion des sons
Les 3 cartes sont sur un rack, avec des cartes interboard à l’arrière pour relier les cartes entre elle (notamment graphisme avec jeu et jeu avec son). En débranchant quelques cables, on peut avoir un peu de mou et tirer le rack (voir carrément le sortir).
Par contre, à cause des interboards, les 3 cartes sont solidaires, pour avoir accès à la carte jeu ou son, il faut la désenficher, ce qui est loin d’être pratique pour le dépannage…
Une vue de la carte jeu hors du rack :
Au niveau jeu lui-même, au moment où je l’ai acheté, cette Monaco GP avait quelques soucis :
- le jeu ne tient pas compte des points du joueur, et même si on dépasse les 2000 points en moins de 90 secondes, un magnifique game over apparait.
- un petit bug graphique sur les voitures des adversaires
- le jeu n’affiche pas les décors autre que la route de base (pas de tunnel, de pont, de verglas, …)
- pas de sons ni de fanfares
On décide de commencer par l’aspect “son” en espérant que ça soit lié à un des autres problèmes et qu’on fasse d’une pierre 2 ou 3 coups.
Par chance, les schémas électroniques de cette borne sont disponibles. Sans ces derniers, le dépannage serait vraiment compliqué.
Voici un des schémas de la carte son (carte 96598, “oscillator”) :
Alors au niveau des schémas, ce qu’il faut retenir :
- ils ne sont pas tout à fait exacts, certaines réf vers des portes logiques sont fausses, ne pas hésiter à vérifier si d’autres pattes du circuit que vous souhaitez tester mènent bien à d’autres composants alentours
- sur chaque page, il y a la référence de la carte (ici 96598-P), suivi du nombre de page sur le total pour la carte en question (ici c’est donc la 4ème page sur 7 pages disponible pour la carte son)
- quand il y a un petit carré (ici juste à gauche de sound out), ça signifie que ça part (ou que ça rentre) du bornier de la carte
Mais revenons en à notre carte son. Sur ce bout de schéma, on voit qu’une résistance 100 Ohms est activée dans certains cas, juste avant l’ampli du cab (sound out), ce qui a pour effet de “muter” le son. La porte logique qui gère ça est de type “OR” et c’est le composant IC67 avec en entrée les pattes 9 et 10 et la sortie sur 8. J’ai mis en fluo jaune les 2 entrées qui contrôlent cette porte logique : NON – COIN IN (ou /COIN IN) et une autre référence en japonais. Je donne cet exemple pour que que ça puisse servir à d’autres, le principe est toujours le même.
Après mesure du /COIN IN, on suspecte une mauvaise valeur. On part donc du côté de la “carte CPU” et on retrouve sur notre schéma qu’est-ce qui gère le signal COIN IN.
J’ai mis en fluo (à droite) les 2 sorties COIN IN et /COIN IN qui proviennent du composant IC37 (toujours en fluo à gauche). Ce composant est une bascule, à chaque coup d’horloge (entrée CK), il recopie la valeur de l’entrée D sur Q et /Q (Q et /Q étant toujours opposés, si l’un vaut 0, l’autre vaut 1 et inversement). L’entrée CL (patte 1), met la bascule à 0, quel que soit l’état en entrée.
On voit donc à gauche du schéma que cette bascule permet de savoir que le joueur a payé (ou qu’on a utilisé le switch de service) pour créditer une partie. Puisque D est toujours à 1 (relié à Vcc), dès qu’un coup de clock va arriver (l’insertion de la pièce ou du bouton service), la bascule va recopier la valeur 1 en sortie Q. Q et /Q correspondent à COIN IN et /COIN IN.
Bon tout ça c’est la théorie, mais en pratique, comment visualiser si ça fonctionne alors que la carte est enfichée dans un rack ?
Nous avons utilisé un analyseur logique, avec 16 entrées possibles (il peut aller jusqu’à 32). Voici la merveille :
Pour ceux que ça intéresse, on peut le trouver ici : http://www.seeedstudio.com/depot/open-workbench-logic-sniffer-p-612.html?cPath=61_68
N’hésitez pas à fouiller leur site, ils font plein de matos sympathique à prix très accessible, par exemple cet oscilloscope portatif numérique : http://www.seeedstudio.com/depot/dso-nano-v2-p-681.html?cPath=104_108
Pour en revenir à l’analyseur, c’est du hardware open source, il est livré sous licence CC-BY-SA-NC
Le soft qu’on a utilisé est celui-ci : http://www.lxtreme.nl/ols/ (il y a des screenshots si vous voulez voir comment ça tourne)
On s’est donc branché sur le composant douteux (je rappelle pour ceux du fond qui ont du mal à suivre, qu’on suspecte le COIN IN de ne pas changer d’état lorsque le joueur lance la partie).
(les photos ne correspondent pas au test de ce composant là, mais le principe est là)
L’énorme avantage avec l’analyseur, c’est qu’on peut voir d’un coup, tout se qui se passe sur les entrées / sorties de plusieurs portes à la fois et mettre le doigt sur le problème de manière rapide.
On renfiche la carte dans son rack, et on peut lancer une partie avec l’analyseur qui capture les signaux. Voici le résultat du test pour cette bascule :
Je n’ai laissé visibles que les sorties Q et /Q. On voit clairement qu’il y a un souci : elles devraient être tout le temps opposées. Cette bascule est donc défectueuse !
On la déssoude, mise en place d’un socket avant de remettre un nouveau composant.
On peut maintenant retester les valeurs de sorties de la bascule avec l’analyseur logique :
Les signaux de sorties sont maintenant corrects (le premier front montant correspond à la mise sous tension de la borne).
Après le détail du changement de cette porte en particulier (j’espère avoir été le plus didactique possible, toujours dans l’optique que ça puisse servir à d’autres), voici dans les grandes lignes ce qui s’est passé ensuite :
- recherche de la panne de la carte son
- on remonte sur la porte logique que je viens de détailler, mais entre temps, un nouveau problème apparait : impossible de lancer une partie.
- on se met à la recherche de ce nouveau bug : quand on crédite une partie, le compteur de temps s’initialise bien à 90 secondes, mais le jeu reste en game over.
- on finit par tomber sur l’IC74 qui est assez central pour la gestion du game over. C’est une triple porte triple-non-ou.
- après test à l’analyseur, ce composant est HS.
- impossible pour l’instant de le changer (pas de composant identique en stock), on se débrouille pour que la porte renvoi “toujours vrai” de manière à ce que le jeu ne puisse plus être en gameover.
- on trouve enfin le problème du composant IC37 (que j’ai détaillé plus haut), mais le son est toujours muté.
- on finit par identifier que l’ampli (LM2902) est HS. A commander également.
A ce moment, le jeu peut être lancé, en shuntant l’ampli HS, on obtient le son (10x plus faible), tous les bruitages semblent être là.
Il reste encore un problème très génant, le fait que le jeu ne défile pas au niveau des décors : pas de flaque d’eau, de tunnel, de pont, etc.
Après analyse des schémas, c’est la carte de score qui tient au courant la carte graphique de l’avancement des points et en fonction lance l’affichage des différents paysages. Il y a notamment un changement de décors qui s’opère tous les 100 / 500 points
Le dernier circuit qui envoie les informations de points à la carte graphique (S-100-A / B / C / D) est l’IC 2E-1 (sur la carte de score, les circuits sont numérotés en ligne / colonne).
On regarde sur la carte et… Il y a déjà un socket pour ce composant ! Ahah, ça sent bon, sauf que ce socket est là d’usine, ce n’est pas une réparation faite ultérieurement. Il s’agit d’une porte 7417.
On la remplace par un équivalent, une 7407 et voilà le résultat en place :
On teste et … Le problème des décors a disparu ! Le jeu défile normalement : pont, tunnel avec éclairage, verglas, …
Sega avait-il prévu que ce composant lâche “régulièrement” ? Si d’autres possesseurs de Monaco GP peuvent confirmer la présence de ce socket d’origine ?
Il reste encore un petit bug graphique sur les voitures des adversaires, à suivre avec plus de photos du problème et bien sûr, la restauration esthétique du cab !
September 26th, 2015 at 11:50 pm
Bravo pour ton travail ça a l Air si simple quand c est expliqué comme ça sauf que ça représente des heures de fouille en amont.
Belle resto et joli tuto.
Dav