-
Bonjour.
Voici le WIP de réparation de ma borne vectorielle Sega Space Ship.
J'ai acheté cette borne le 29 novembre 2009 au sieur Wanou. Le topic du road-trip est là (http://www.gamoover.net/Forums/index.php?topic=20455.0).
0. Mises à jour
1. Recherche de documentation
C'est carrément la misère absolue pour trouver un milli-octet de doc sur le net à propos de cette borne.
Il n'y a que très peu d'informations :
- sur KLOV (http://www.klov.com/), elle existe (http://www.klov.com/game_detail.php?game_id=12823) mais il n'y a pas de photo ; au passage, je (http://www.vaps.org/members/game_detail.php?klov_id=12823) suis le seul propriétaire enregistré
- sur Arcade Flyers (http://www.arcadeflyers.com/), elle est présente dans un flyer SEGA (http://flyers.arcade-museum.com/?page=flyer&db=videodb&id=3025&image=3) de 1978.
- sur System16 (http://www.system16.com/), elle est référencée (http://www.system16.com/hardware.php?id=683&page=1#3127) comme étant un jeu sans CPU ; la photo provient du flyer SEGA
- une recherche google (http://www.google.fr/search?hl=fr&source=hp&q=sega+space+ship&btnG=Recherche+Google&meta=&aq=f&oq=) ne donne pas grans chose : lien sur mon RT, probablement lien sur cette page prochainement, et 2 trois trucs pas terribles
Je n'ai trouvé aucune information sur :
- l'écran vectoriel
- le PCB de jeu
J'ai quand même une feuille A3, même si les informations qu'elle contient auraient été faciles à retrouver :
(http://img1.uplood.fr/free/a4uw_20091129_100312_6717_img.jpg) (http://www.uplood.fr)
Il s'agit du plan de câblage de la borne, sur lequel est présent le schéma électronique de la partie alimentation.
C'est mieux que rien, mais ce n'est pas un document clé !
2. Nettoyage, état des lieux
Dès que la borne est arrivée dans mon sous-sol, je me suis dépéché d'aspirer toutes les arraignées qui ont fait le voyage avec la borne, avant qu'elles ne colonisent mon sous-sol.
J'en ai assez comme ça sans en apporter d'autres !
(http://img1.uplood.fr/free/ph9p_20091128_222748_6707_img.jpg) (http://www.uplood.fr)
Celle-là n'est plus vivante, mais c'était un beau spécimen :
(http://img1.uplood.fr/free/u79c_20091128_224250_6709_img.jpg) (http://www.uplood.fr)
Ce n'est pas la première fois que je trouve ça au fond d'une borne, mais celle-la aussi a reçu la visite de rongeurs :
(http://img1.uplood.fr/free/iqr7_20091229_224348_6811_img.jpg) (http://www.uplood.fr)
Il semble que le rongeur de gauche ait moins bien mangé que celui/ceux de droite ! :D
La borne souffre d'un manque, pour moi qui suis tout seul pour la déplacer : elle n'a absolument aucune roulette...
Ce n'est pas un problème : j'ai réalisé un petit support avec 4 roulettes :
(http://img1.uplood.fr/free/86fm_20091205_120914_6727_img.jpg) (http://www.uplood.fr)
Après un coup de baguette magique, la borne est posée sur son tapis roulant :
(http://img1.uplood.fr/free/n5ll_20091205_121550_6729_img.jpg) (http://www.uplood.fr)
Ca ne parait pas, mais ce fut une prise de tête monstrueuse pour la placer seul sur le support.
Le support ne demande qu'à rouler (il est prévu pour) et la borne possède 4 pieds qui doivent venir se placer dans les 4 angles du support.
Pfiouuuuu, ayé :
(http://img1.uplood.fr/free/9h9b_20091205_121600_6730_img.jpg) (http://www.uplood.fr)
Lorsque j'avais acheté la borne, Wanou m'avait signalé que le tube était marqué en son centre, qu'il y avait comme une goute d'étain.
Je pensais que le spot avait méchamment marqué le tube en son centre, faute de mouvement demandé par un PCB en panne.
J'ai retiré la vitre et finalement il en est autrement :
(http://img1.uplood.fr/free/s0mo_20091229_194554_6802_img.jpg) (http://www.uplood.fr)
Il s'agit simplement d'un genre de gomette décorative collée sur le tube.
D'une part il est impossible qu'elle soit arrivée là pile au centre par hasard, et d'autre part, je m'autorise à penser qu'on peut deviner comme un truc identique sur l'unique photo existante de cette borne.
Je décide donc de ne pas retirer ce truc pour le moment.
Ayant passé l'aspirateur sur le tube, on dirait qu'il est sale :
(http://img1.uplood.fr/free/5fs7_20091229_195106_6803_img.jpg) (http://www.uplood.fr)
Petit test :
(http://img1.uplood.fr/free/ah6x_20091229_195212_6804_img.jpg) (http://www.uplood.fr)
Hum, je pense que l'écran n'a pas été nettoyé depuis 32 ans...
Mieux :
(http://img1.uplood.fr/free/zqlu_20091229_201732_6805_img.jpg) (http://www.uplood.fr)
Voila, la borne a été nettoyée.
Je vais pouvoir passer aux choses sérieuses sans me dégeulasser les pattes à chaque fois.
3. Examen de l'écran
L'écran est un écran monochrome X-Y fabriqué par SEGA :
(http://img1.uplood.fr/free/i614_20091128_230510_6715_img.jpg) (http://www.uplood.fr)
La référence "96076X-P" est totalement inconnue...
Le numéro de série comporte 7 chiffres ! Je ne pense pas que le 1er écran sorti de ce type ait porté le numéro de série 0000001 !
Un écran "X-Y" dispose d'un principe de fonctionnement radicalement différent d'un écran standard.
Avec un écran standard, le PCB génère un signal qui représente la luminosité de chaque ligne (ou des composantes RVB), en partant du haut.
L'électronique de l'écran se synchronise à la fois sur la fréquence ligne et trame du PCB pour générer les courants des bobines de déviation ligne et trame.
L'image est balayée ligne par ligne de manière linéaire.
La fréquence ligne est utilisée en interne pour faire fonctionner la THT.
Avec un écran X-Y, c'est le PCB qui peut déplacer le spot à l'écran où bon lui semble pour dessiner des formes géométriques.
L'électronique de l'écran intègre 2 gros amplis pour piloter correctement les bobines de déviation à partir des signaux X et Y envoyés par le PCB.
Le PCB peut aussi contrôler la luminosité du spot pour faire un saut à l'écran sans laisser de trait visible ou pour apporter à l'image des dégradés de luminosité.
Pour la génération de la THT, il existe un oscillateur libre qui n'est pas synchronisé avec le PCB car c'est inutile.
En lisant la doc de certains écrans X-Y (Electrochrome), j'ai vu qu'il existait des protections pour ne pas brûler le tube si le PCB ne fait pas déplacer le spot.
Sur l'écran Electrochrome en question, la luminosité du spot est forcée à 0 en cas d'absence de mouvement demandé par le PCB.
Sur cet écran SEGA, j'ignore si une telle protection existe, et si elle existe comment elle procède.
(http://img1.uplood.fr/free/f02v_20091128_230348_6712_img.jpg) (http://www.uplood.fr)
Sur la vue d'ensemble, on peut constater :
- un petit toron à 2 fils (rouge + jaune) indiqué comme "overheat protection" ; je pense qu'il s'agit d'un capteur thermique placé au plus près des 4 gros transistors TO3 placés sur l'énorme radiateur noir
- le connecteur bleu va au PCB ; il y a quand même 28 fils !!!
- le dernier connecteur est le connecteur d'alimentation (basse tension)
J'ai été un peu surpris dans un 1er temps de trouver autant de fils entre l'écran et le PCB.
Mais finalement, vue la présence de 2 de ces composants :
(http://img1.uplood.fr/free/ng8i_20091230_170246_6820_img.jpg) (http://www.uplood.fr)
Il s'agit d'un convertisseur numérique => analogique sur 12 bits.
Il y en a 2, donc ça fait déjà 24 fils...
Je pense (en fait, j'en suis sûr) que l'interface de pilotage de l'écran est de type parallèle, probablement TTL.
En gros, le PCB ne fournit pas 2 tensions (par exemple de -10V à +10V) pour déplacer le spot en X et en Y, mais 2 mots de 12 bits.
J'en déduis une information sur l'image du jeu (image totalement inconnue).
Le PCB peut placer le spot en X à 212 = 4096 endroits différents, et même chose en Y.
Du coup, on peut dire que la "résolution" de l'image est de 4096 x 4096.
Pas mal pour un jeu de 1978, non ?
4. Examen du PCB
Voici le PCB du jeu :
(http://img1.uplood.fr/free/hw5l_20091229_184220_6795_img.jpg) (http://www.uplood.fr)
La partie gauche du PCB (avec les 2 transistors TO3 sur radiateur) est la partie audio.
Pour le moment, je la mets de coté. Son tour viendra bien plus tard.
Il y a 4 zones intéressantes, que j'ai entouré en rouge.
La zone 1, c'est 3 composants de RAM à la con de chez à la con de marque NEC.
Pourquoi à la con ? Il s'agit de puces référence µPD2101AL-2, 256 mots de 4 bits.
Cette puce a la particularité d'avoir des broches séparées pour les données en entrée et en sortie !
(http://img1.uplood.fr/free/df5o_a.jpg) (http://www.uplood.fr)
Les puces de la zone 2 sont des ROM : 1024 mots de 4 bits par composant.
(pas de photo)
Les puces de la zone 3 ont une fonction assez particulière : Il s'agit de composants 74LS181. Chacun est une "ALU" (Arthimetic Logical Unit) de 4 bits.
En gros, c'est un composant capable de faire l'opération que l'on veut (il en existe 16) sur 2 mots de 4 bits.
Je suppose que SEGA a eu besoin d'une fonction logique spéciale que ce composant sait faire.
C'est une bonne idée car ça évite l'utilisation d'un composant type PAL/GAL et on reste dans du composant générique.
(http://img1.uplood.fr/free/cv93_b.jpg) (http://www.uplood.fr)
Et enfin, les 3 composants de la zone 4 sont réliés à l'écran.
Il s'agit de 74LS377. Ce sont des latches 8 bits.
En gros, ils assurent que les 2 mots de 12 bits envoyés à l'écran pour déplacer le spot sont stables pendant que le PCB calcule le mot suivant.
Ca me confirme que l'entrée de l'écran est TTL.
(http://img1.uplood.fr/free/xotr_c.jpg) (http://www.uplood.fr)
Avant d'aller plus loin, je constate qu'il y a des résidus oranges de soudure à de nombreux endroits.
Ormis l'aspect estétique moche, ce n'est pas gênant sauf que ça peut masquer une soudure décollée ou oxydée.
(http://img1.uplood.fr/free/k3xi_20091229_184548_6797_img.jpg) (http://www.uplood.fr)
Je verse quelques gouttes d'alcool à brûler, puis je frotte avec une vieille brosse à dent.
(http://img1.uplood.fr/free/tqzg_20091229_184716_6798_img.jpg) (http://www.uplood.fr)
Les résidus sont dilués dans l'alcool, qu'il faut récupérer dans un chiffon avant évaporation (sinon, y'a re-dé-po-si-tion !).
Et voilà :
(http://img1.uplood.fr/free/6wpp_20091229_191536_6800_img.jpg) (http://www.uplood.fr)
5. Test de l'alim
L'alim est assez triviale.
Il y a un transfo 220V => 110V, puis un 2e transfo qui donne diverses tensions.
Ensuite, y'a du gros pont de diode, du gros condo et un régulateur 7805 pour le 5V du PCB.
Il y a un relais de protection anti-surchauffe ; en cas de surchauffe, le relais vient ni plus ni moins couper l'alim de l'écran !
(http://img1.uplood.fr/free/svk5_20091229_224200_6806_img.jpg) (http://www.uplood.fr)
Détail sur la partie régulation du +5 V :
(http://img1.uplood.fr/free/4owu_20091229_232248_6817_img.jpg) (http://www.uplood.fr)
Le radiateur est de travers ; je ne sais pas si c'est moi qui l'ai bougé ou pas.
S'pas bien grave de toute façon.
Le PCB est retiré, le connecteur d'alim de l'écran est débranché.
Il est temps de mettre sous tension pour tester dans un 1er temps la partie alimentation.
Je teste dans un 1er temps les alimentations à vide (sans charge).
Je re-contrôlerai les alims lors d'un essai futur avec l'écran et le PCB branché.
Le +5V du PCB est bon :
(http://img1.uplood.fr/free/tfky_20091229_232112_6816_img.jpg) (http://www.uplood.fr)
Je vérifie également toutes les autres alimentations, bonnes elles aussi.
Le néon derrière le marquee fonctionne lui aussi :
(http://img1.uplood.fr/free/gh7c_20091229_231354_6813_img.jpg) (http://www.uplood.fr)
Par contre la petite merde à gauche du néon (le ballast) émet un grésillement insuportable.
Je débranche le marquee qui est inutile pour mes tests (merci Sega pour les nombreux connecteurs).
(http://img1.uplood.fr/free/aiu6_20091229_231412_6815_img.jpg) (http://www.uplood.fr)
6. Envoie l'pâté, Simone !
Bon, on a bien fait joujou avec l'aspirateur, toussa, il est temps de brancher...
Finalement, à part un gros bruit dans le haut-parleur (que je n'ai pas pu prendre en photo), il ne se passe rien. Aucune image à l'écran.
Je note que la base du tube est orangée, mais comme pour ma Shark Jaws (http://www.gamoover.net/Forums/index.php?topic=20226.msg292020#msg292020), ça n'indique pas grand chose.
Je m'en doutais un peu, il est temps de sortir l'artillerie.
Voici le champ de bataille :
(http://img1.uplood.fr/free/aha9_20091230_213248_6826_img.jpg) (http://www.uplood.fr)
Je me suis installé ainsi car je n'ai pas de connecteur 80 broches qui irait sur ce PCB.
Je pense que je vais récupérer un vieux connecteur JAMMA que je vais scier et je pourrai ainsi travailler sur mon établi à une hauteur normale, et avec mon banc de test.
Sur une feuille de papier, j'ai recopié le pinout de composants clés que je veux examiner.
(http://img1.uplood.fr/free/g3if_20091230_213316_6827_img.jpg) (http://www.uplood.fr)
Je teste les sorties des 3 puces de latch du PCB, normalement reliées à l'écran. Effectivement, il y que d'alle.
Par contre, là ou c'est intéressant, c'est qu'en entrée des latches, il y a de la vie :
(http://img1.uplood.fr/free/8wg1_20091230_213410_6828_img.jpg) (http://www.uplood.fr)
Voici le signal qui active les sorties du latch :
(http://img1.uplood.fr/free/n57a_20091230_213506_6829_img.jpg) (http://www.uplood.fr)
Il est moche, parasité à mort. C'est une 1ère panne.
En suivant des yeux la piste, je me rends compte que ce signal est généré par... une ROM !!!
J'ai l'impression que les électroniciens SEGA ne se sont pas fait iéch' du tout dans la conception. Ils génèrent certains signaux particuliers à partir d'une ROM.
C'est un peu comme du papier à musique perforé : on déroule et ça se démerde.
Argl, ça c'est une mauvaise nouvelle, ça veut dire que j'ai une (ou plusieurs) ROM de morte(s).
La ROM en question est IC138, que je dessoude :
(http://img1.uplood.fr/free/d23g_20091230_230412_6831_img.jpg) (http://www.uplood.fr)
Après avoir mis un support, je remets la ROM en place tout en isolant la broche concernée.
Peut-être est-ce un autre composant qui superpose du parasitage (IC73 et IC75 sont concernés)...
Malheureusement non, c'est bien la ROM qui semble malade.
D'après mes tests, j'ai plusieurs bits sur plusieurs ROM qui sont malades :
- IC136 : bits D0, D3, D4, D7
- IC138 : bits D2, D3, D4, D5
- IC143 : bits D1, D2, D3, D5, D6, D7
Argl... Enfer et putréfaction de chacal barbare... :'(
Sans le contenu de ces ROM, la réparation s'avère... diffficile...
Que faire ?
Je pourrais adapter et flasher une EPROM, mais encore faut-il savoir quoi mettre dedans ! :'(
Peut-être que si j'isole chaque ROM sur une plaque d'essai et que je la lis lentement, j'ai une chance de trouver la valeur des bits qui me manquent ?
Peut-être qu'avec l'âge, l'accès est plus lent et que certains bits n'ont pas le temps de "sortir" avant que l'adresse de lecture ne change déjà...
J'ai essayé de givrer la ROM malade, mais sans aucun succès.
À suivre...
-
raisairvaide
-
up : et bien ca commence bien quand même
:)
j'adore voir tes wip
je comprend pas grand chose
mais on sens que tu maitrise le sujet, ca ... rassure un peu :D
bonne chance, chuis curieux de voir ca tourner :)
bye
-
çà va être coton pour pecho le contenu des roms.
Une fois de plus, merci pour ce récit haletant.
Bon courage ^-
-
Impressionnant :o décidément s'il y a bien quelqu'un de la réanimer c'est bien toi.
Pour les roms c'est une sacrée bad news.
Espérons qu'un miracle arrive :-*
-
Superbe ce debut de wip ^-^ je voudrais bien avoir ce niveau en electronique cela supprimerais bien des galères avec certaine pcb >:D
:-* vivement la suite
-
question con: les specialistes du dump de carte arcade, genre the guru ne poutraient t'il pas t'aider à au moins essayer de dumper les roms de la carte, aprés il restera à retrouver un moyen de les remplacer par des eproms plus recentes.
-
Comme le dit Funky, c'est déjà tendu de trouver de la doc sur la borne, alors le contenu des roms c'est carrément hardos à dégotter, mais on commence à s'y faire avec toi, ça semble foutu dans la 1ère moitié de l'épisode, puis la A-Team (Arcade Team) nous sort 3 rouleaux de papier essuie-tout, deux planches et un bout de ficelle et ça t'en fait un delta plane avec un lance roquettes intégré :D
-
Bonjour.
Les puces de la zone 3 ont une fonction assez particulière : Il s'agit de composants 74LS181. Chacun est une "ALU" (Arthimetic Logical Unit) de 4 bits.
En gros, c'est un composant capable de faire l'opération que l'on veut (il en existe 16) sur 2 mots de 4 bits.
Je suppose que SEGA a eu besoin d'une fonction logique spéciale que ce composant sait faire.
C'est une bonne idée car ça évite l'utilisation d'un composant type PAL/GAL et on reste dans du composant générique.
Sega a plutôt constitué, sur cette carte, un calculateur dédié à base de ce qui était disponible à l'époque, les premiers µP comme le 8080 ou le 6800 ne devaient pas encore être disponibles ou devaient coûter horriblement cher à l'époque.
En principe le noyau du calculateur devrait posséder ses propres PROM's fusibles dédiées à son micro-programme interne réalisant le séquencement nécessaire à chaque instruction lue dans un autre groupe de PROM's fusibles qui constitueraient la mémoire programme proprement dite.
Le micro-programme séquence au 1er niveau les échanges entre les ALU's, les registres de travail internes au noyau, la mémoire extérieure au noyau, les entrées/sorties ...
La mémoire programme contient les instructions qui sont lues et exécutées par le noyau du calculateur.
Et enfin, les 3 composants de la zone 4 sont réliés à l'écran.
Il s'agit de 74LS377. Ce sont des latches 8 bits.
En gros, ils assurent que les 2 mots de 12 bits envoyés à l'écran pour déplacer le spot sont stables pendant que le PCB calcule le mot suivant.
Les 3 ALU's de 4 bits, ainsi que ces 3 registres semblent montrer que le calculateur de la carte a une largeur de bus de 12 bits.
Avant d'aller plus loin, je constate qu'il y a des résidus oranges de soudure à de nombreux endroits.
Ne serait-ce pas plutôt la signature du remplacement de certains boîtiers lors d'une précédente tentative de réparation de la carte ?
Il est moche, parasité à mort. C'est une 1ère panne.
En suivant des yeux la piste, je me rends compte que ce signal est généré par... une ROM !!!
Ces ROM's sont des mémoires à sorties 3 états, le signal est peut-être multiplexé avec d'autres sorties à 3 états provenant d'autres boîtiers ? Est-ce que la mémoire en question est validée en permanence : broche CE/ (15) au niveau logique 0 permanent ?
Il est moche, parasité à mort. C'est une 1ère panne.
- A quel endroit as tu raccordé la masse de ton oscilloscope ? Il est préférable de la raccorder au plus près du connecteur de la carte.
- As tu remplacé les condensateurs chimiques de la carte et ceux de l'alimentation, est-ce que le +5 volts est propre quand il est zieuté à l'oscilloscope.
Peut-être qu'avec l'âge, l'accès est plus lent et que certains bits n'ont pas le temps de "sortir" avant que l'adresse de lecture ne change déjà...
J'ai essayé de givrer la ROM malade, mais sans aucun succès.
Ce sont des PROM's à fusibles, elles sont bien plus rapides en temps d'accès que des EPROM's même plus récentes.
-
Bonsoir.
Sega a plutôt constitué, sur cette carte, un calculateur dédié à base de ce qui était disponible à l'époque
[couic]
C'est intéressant comme idée ! :)
Je détaille plus bas comment les PROMs sont organisées.
Ne serait-ce pas plutôt la signature du remplacement de certains boîtiers lors d'une précédente tentative de réparation de la carte ?
C'est bien possible. Toutes les PROMs avaient des traces de soudures, ainsi que quelques boîtiers 74LSxxx.
J'ai noté que les 3 boîtiers 74LS377 avaient eux aussi des traces de soudures.
Ces ROM's sont des mémoires à sorties 3 états, le signal est peut-être multiplexé avec d'autres sorties à 3 états provenant d'autres boîtiers ? Est-ce que la mémoire en question est validée en permanence : broche CE/ (15) au niveau logique 0 permanent ?
Pour la PROMs concernée, son /CS est toujours à l'état bas : le boîtier est sélectionné en permanence.
Le bit que j'accuse d'être malade est relié à :
- 2 portes NOR sur IC75
- l'entrée /E (enable input) des 3 boîtiers 74LS377
- A quel endroit as tu raccordé la masse de ton oscilloscope ? Il est préférable de la raccorder au plus près du connecteur de la carte.
- As tu remplacé les condensateurs chimiques de la carte et ceux de l'alimentation, est-ce que le +5 volts est propre quand il est zieuté à l'oscilloscope.
Bien évidemment, j'ai fait l'erreur de connecter la masse de mon oscillo "loin" de la carte...
Elle était pile à la sortie de l'alim, au niveau du départ des fils qui vont au connecteur du PCB.
Dans l'alim, il y a 3 monstrueux condensateurs que j'appelle "bombones".
- 1 × 10.000 µF / 16 V en amont du régulateur 7805 qui fournit le +5 V TTL
- 2 × 22.000 µF / 35 V sur le +25 V & -25 V non régulés pour l'écran et l'audio du PCB
Sur la carte, il n'y a que très peu de condensateurs chimiques. Il y en a exactement 4 :
- 2 × 470 µF / 10 V sur le +5 V TTL
- 1 × 47 µF / 35 V sur le +15 V audio (obtenu à partir du +25 V via un 7815)
- 1 × 47 µF / 35 V sur le -15 V audio (obtenu à partir du -25 V via un 7915)
Aucun n'a été changé pour le moment, mais je le ferai.
Ce sont des PROM's à fusibles, elles sont bien plus rapides en temps d'accès que des EPROM's même plus récentes.
La maigre doc que j'ai pu trouver pour les PROM MMI 6331-1J indique :
- tAAC = 50 ns max
- tCAC = 30 ns max
L'un des deux est le temps d'accès (adress valid to output valid), et effectivement 30 ou 50 ns, c'est très rapide.
Une EPROM classique est plutot dans les 80 ns, je crois.
Voici la suite des investigations sur le PCB.
J'ai compté exactement 14 boîtiers de PROMs :
(http://img1.uplood.fr/free/rjhf_20091229_184220_6795_img.jpg) (http://www.uplood.fr)
Les 6 PROMs des zones 1, 2 et 3 ont toutes leur broche /CS reliée en permanance à la masse. Ces boîtiers sont donc sélectionnés en permanence.
Mon hypothèse est qu'ils ne contiennent pas de code/gfx au sens habituel du terme, mais n fonctions de transfert logiques à m arguments (n étant le nombre de bits du bus de données de la PROM, et m le nombre de bits du bus d'adresse)
Les 8 PROMs de la zone 4 travaillent différement. Elles ont toutes 2 broches "chip select" nommées /CS0 et /CS1.
Pour toutes, /CS1 est à la masse en permanence.
En revance /CS0 est dynamique.
(http://img1.uplood.fr/free/5ixf_20091229_184230_6796_img.jpg) (http://www.uplood.fr)
- le bus d'adresse (10 bits) est commun pour les 8 PROMs
- les PROMs sont associées 2 par 2 pour le bus de données (4 bits)
- les PROMs sont associées 4 par 4 pour le chip select
Chaque PROM faisant 1024 mots de 4 bits, j'ai l'impression que ces 8 PROMs forment l'équivallent de 2 PROMS de 1024 mots de 16 bits.
J'utilise maintenant mon banc de test pour dépanner le PCB.
Je ne connecte que la masse et le + 5 V TTL.
Il manque le +25 V / -25 V mais ces 2 tensions ne servent que pour la partie analogique audio du PCB.
Pour le moment, je n'investigue pas de ce coté.
Sur les conseils de GC339, j'ai examiné la tension d'alimentation à différents endroits sur le PCB, d'une part quand il était alimenté par la borne SEGA, et d'autre part quand il est alimenté par l'alim à découpage de mon banc de test.
Dans les 2 cas, les mesures sont très semblables.
Tous les oscillogrammes suivants ont été relevés avec le PCB connecté au banc de test.
Voici la composante alternative de VCC mesurée à 2 endroits différents :
(http://img1.uplood.fr/free/9xc3_ic138_vcc.png) (http://www.uplood.fr) | (http://img1.uplood.fr/free/sv5u_ic029_vcc.png) (http://www.uplood.fr) |
broche 16 de IC138 (la PROM que j'accuse d'être malade) | broche 16 de IC29 (un 74LS151 éloigné de IC138) |
Dans un cas, j'ai plus de 800 mV d'amplitude de parasites.
Dans l'autre cas, j'ai environ 300 mV d'amplitude de parasites
Voici maintenant des bits du bus de données de la PROM accusée d'être malade :
(http://img1.uplood.fr/free/wq5z_ic138_d0.png) (http://www.uplood.fr) | (http://img1.uplood.fr/free/6hli_ic138_d2.png) (http://www.uplood.fr) |
bit D0 | bit D2 |
| |
(http://img1.uplood.fr/free/4eqy_ic138_d3.png) (http://www.uplood.fr) | (http://img1.uplood.fr/free/vh0r_ic138_d6.png) (http://www.uplood.fr) |
bit D3 | bit D6 |
Pour moi, les bits D0 et D6 sont bons, mais les bits D2 et D3 seraient malades.
Mais vue la sale tronche du +5 V reçu par la PROM, peut-être qu'avec un condo céramique et un chimique entre masse et VCC au plus près de la PROM, les choses pourraient s'améliorer ?
J'ai aussi réussi a "dumper" le contenu de IC138 : c'est une PROM de 32 mots de 8 bits. 8)
Pour ça, je me suis réalisé un petit montage où les 8 bits de données de la PROM commandent chacun un transistor NPN, lequel transistor commande une LED.
Pour dérouler les adresses sur le bus, j'utilise un strap sur le bit de poids fort, 3 interrupteurs sur les bits intermédiaires et un bouton poussoir pour le bit de poids faible :
(http://img1.uplood.fr/free/yeni_20100101_210534_6840_img.jpg) (http://www.uplood.fr)
(http://img1.uplood.fr/free/znas_20100101_210546_6841_img.jpg) (http://www.uplood.fr)
Pour chacune des 25 = 32 adresses possibles, je note dans un tableau l'état des 8 sorties.
Je pense avoir confirmé le fait que la PROM réalise en fait 8 fonctions logiques à 5 arguments.
En effet :
- D0, D1, D6 et D7 ne passent à l'état haut qu'1 fois sur 32
- D2, D3 et D5 ne passent à l'état bas qu'1 fois sur 32
- D4 ne passe à l'état bas que 2 fois sur 32
À suivre : filtrage de VCC !
-
superbe
^-^
je panne pas tout mais c'est superbe :D
-
Yeps, concernant la 'pastille', tu as bien fait de la laisser à sa place :
(http://img1.uplood.fr/free/s0mo_20091229_194554_6802_img.jpg)
Sans connaître le jeu, il est certain qu'il s'agisse d'un simple 'masque' servant à coloriser un élément du jeu. Procédé courament utilisé sur les premières bornes B&W (Break Out, Space Invaders, SuperBug ... ), un peu comme les caches de la Vectrex dans le genre.
-
Chapeau bas <:) , de la vrai bonne bidouille d'électroniciens ^-^
Ps: ça me fait penser à l'époque ou on ce tapé le décodage d'adresse à la main.
-
Bonjour et meilleurs voeux pour 2010 à tous ceux qui liront ce post.
Dans l'alim, il y a 3 monstrueux condensateurs que j'appelle "bombones". [couic] Sur la carte, il n'y a que très peu de condensateurs chimiques. [re-couic] Aucun n'a été changé pour le moment moment, mais je le ferai.
Il est important de ne pas les remplacer par n'importe quel condensateur que ne manquerait pas de refourguer le crémier le plus proche.
Les "pots de confitures" doivent être remplacés par des condensateurs de filtrage équivalents prévus pour supporter le courant périodique qui les traverse. Il faut le vérifier sur le datasheet du fabriquant, c'est parfois indiqué sur leur boîtier, exemples :- I eff à 100 Hz 6,9 A à 85°
- I eff. (20 KHz) 9,5 A (70°C)
- 3,5A. 85°C
Les condensateurs de découplage sur la carte doivent être remplacés par des modèles à "low ESR" pour plus d'efficacité. Ils sont plus difficiles à approvisionner, Conrad en vend sur son site n°2, sinon voir Farnell.
(http://img1.uplood.fr/free/9xc3_ic138_vcc.png) | | (http://img1.uplood.fr/free/6hli_ic138_d2.png) |
broche 16 de IC138 (la PROM que j'accuse d'être malade) | | bit D2 de la même PROM |
Ces deux oscillogrammes me font penser à ceux que l'on pourrait observer sur les broches d'une mémoire rapide dont les adresses seraient connectées à un compteur asynchrone genre CD4040 ou 7493.
L'horloge qui pilote le compteur n'étant pas distribuée sur tous les bascules du compteur, mais uniquement sur la 1er, elles ne changent pas d'état simultanément mais les unes après les autres. Ce qui induit des états transitoires sur le bus d'adresse, donc des commutations intempestives sur les sorties des données et par conséquent des pointes de courant sur l'alimentation.
Ce comportement peut être aussi le fait d'une broche d'adresse "en l'air" ou à un niveau logique intermédiaire. As tu vérifié à l'oscilloscope le signal sur chacune des broches d'adresse de ces mémoires ?
Mais vue la sale tronche du +5 V reçu par la PROM, peut-être qu'avec un condo céramique et un chimique entre masse et VCC au plus près de la PROM, les choses pourraient s'améliorer ?
Non, il faut voir les choses autrement, ce sont les appels de courant intempestifs de la PROM qui parasitent le + 5 volts, c'est pour cela que la perturbation de l'alimentation, constatée sur l'oscilloscope, est plus importante au voisinage de ce boîtier.
Pour être sûr du bon fonctionnement de la PROM ( mais malheureusement pas de l'intégrité de sa programmation initiale ), il faudrait réaliser un petit montage :
- L'adresser par un compteur synchrone piloté par une horloge à quartz d'une dizaine de MHz (deux compteurs 74LS163 ou mieux 74S163 / 74F163 en cascade).
- Alimenter le montage à part pour qu'il ne soit pas parasité par d'autres circuits.
- Découpler correctement l'alimentation +5 volts du compteur et de la PROM.
- Vérifier les signaux à l'oscilloscope sur chacune des ses sorties.
A+
-
Petite mise à jour intermédiaire...
Je suis en plein reverse-engineering sur le chassis vidéo de l'écran X-Y. 8)
Alors que j'étais dans l'exploration autour du 1er convertisseur numérique/analogique, je suivais une piste de cuivre qui devait normalement être "-VCC", soit du -15 V régulé.
J'arrive sur ce composant, que j'ai examiné un peu vite :
(http://img1.uplood.fr/free/e53q_20100103_154152_6849_img.jpg) (http://www.uplood.fr)
Ayant lu la sérigraphie entourée en rouge, je m'étais dit que c'était un régulateur positif 14 V.
Déjà, 2 choses très louches :
- les régulateurs 14 V, ça n'existe pas dans la nature (c'est 12 ou 15 V)
- d'après la doc technique du CNA, je devais trouver une tension d'alim négative
En fait, la référence du composant est entourée en vert. C'est bien un régulateur négatif -15 V.
La sérigraphie "7814" correspond à la date de fabrication : 14e semaine de 1978...
Arf, le gros piège à noob, et je suis tombé dedans ! ;D
Bon, j'y retourne... :-)=
-
je viens de regarder mes flips (et faire un peu de la merde d'ailleurs) et quand je vois la facilité avec laquel tu trouve et resoud certains probleme dans l'ordre
j'en reste pantois :-)=
-
La sérigraphie "7814" correspond à la date de fabrication : 14e semaine de 1978...
Putain, avril 1978...
ca nous rajeunit pas !
-
Pfiouuuuuu....
Ayé, je viens de terminer une grosse partie du reverse-engineering sur le chassis vidéo du moniteur X-Y de la borne ! :-)=
Voici la pré-version du schéma électronique du pilotage de la bobine de déviation X du tube, à partir des données envoyées par le PCB (connecteur J1 à gauche sur mon schéma).
C'est un brouillon amélioré. J'ai réussi à ne pas faire se croiser trop de lignes.
Le pilotage de la bobine Y est totalement similaire. Seules changent des valeurs de résistances autour de IC4.
(http://img1.uplood.fr/free/thumbnails/fazv_deviation-x.png) (http://www.uplood.fr/visu.php?url=http://img1.uplood.fr/free/fazv_deviation-x.png)
J'ai mesuré les résistances ohmiques des bobines de déviation :
- bobine X : environ 1,0 Ω
- bobine Y : environ 0,3 Ω
La mesure tient compte de la résistance des fils du multimètre ; elle a été faite au plus près des bobines, au niveau du support blanc où les fils de cuivre sont soudés.
Mes commentaires :
1.
- La sortie du convertisseur numérique/analogique rentre sur 2 switches analogiques
- la sortie d'un des switches attaque C8 en direct, tandis que l'autre passe à travers 2 résistances
- J'ai l'impression que C8 sert de mémoire analogique lorsque les 2 switches sont ouverts ; il maintient la dernière tension convertie par le CNA à l'entrée du filtre réalisé autour de IC4 ?
- Quand J1-22 est actif, C8 reçoit directement la sortie du CNA ; le spot fait un saut depuis sa position courante vers l'endroit demandé ?
Ce serait l'équivallent du "PLOT" du basic... - Quand J1-21 est actif, C8 reçoit la sortie du CNA à travert R45 + VR4 ; le spot se déplace depuis sa position courante vers l'endroit demandé ?
Ce serait l'équivallent du "DRAWTO" du basic...
2.
- L'ampli-op IC4 (un LF351N) réalise un filtrage, mais je suis incapable de dire lequel...
3.
- Il n'y a pas moins de 11 transistors pour l'étage de commande de la bobine de déviation !
- TR18 semble avoir un rôle de protection, mais je ne saurais dire exactement lequel ; il est commandé par le courant qui traverse la bobine de déviation
si le courant est trop fort, il se sature et tend à bloquer TR17 en augmentant la tension de son émetteur ? - Je n'ai pas trop compris à quoi servent TR12 et TR13 ; ce sont 2 "petits" transistors (boîtier TO92) ; protection en cas de destruction de TRX1 ou TRX2 ? amorçage du circuit ?
4.
- il y a un truc louche avec TR12 et TR13 ; ce sont respectivement des "C815" et "A539"
- à supposer que ce sont des 2SC815 et 2SA539, leur brochage diffère de la doc que j'ai trouvée sur le net ; la doc dit que la base est la broche du mileu alors que la sérigraphie SEGA la place sur un coté
mon schéma est conforme à la sérigraphie SEGA.
(http://img1.uplood.fr/free/512h_20100103_204938_6850_img.jpg) (http://www.uplood.fr)
À suivre : reverse-engineering sur la partie THT... 8)
-
Toujours admiratif de tes travaux, j'ai un space wars en rade (bien en rade), j'ai faillis bener le moniteur mais en voyant des gars (enfin 1 gars :D) qui s'atarde sur des trucs comme ca :-* bah je le garde ca pourra servir qui sait :)
-
L'ampli-op IC4 (un LF351N) réalise un filtrage, mais je suis incapable de dire lequel...
IC4 est cablé en amplificateur pseudo logarithmique, le gain Vsortie/Ventrée n'est pas constant, il diminue quand l'amplitude de la tension de sortie augmente.
(http://pagesperso-orange.fr/michel.hubin/physique/elec/sv5185195.gif)
Principe de l'amplificateur logarithmique
Dans le cas présent, la courbe de transfert peut être assimilée à une suite de 3 segments de droite ayant des inclinaisons différentes.- Le premier coude ayant lieu dés que la tension en sortie avoisine le seuil des diodes D25 ou D26, c'est à dire ± 0,7 volt, il circule alors un courant dans la résistance R43 et le gain de l'amplificateur en est minoré d'autant.
- Le deuxième ayant lieu quand la tension en sortie avoisine les seuils cumulés de D24 + D25 ou de D23 + D26, c'est à dire ± 1,4 volt, il circule alors un courant dans la résistance R42 qui vient minorer une nouvelle fois le gain de l'amplificateur.
Il n'y a pas moins de 11 transistors pour l'étage de commande de la bobine de déviation
Il faut se représenter chaque amplificateur comme un amplificateur opérationnel de puissance réalisé avec des composants discrets.
TR18 semble avoir un rôle de protection, mais je ne saurais dire exactement lequel ; il est commandé par le courant qui traverse la bobine de déviation si le courant est trop fort, il se sature et tend à bloquer TR17 en augmentant la tension de son émetteur ?
TR17 et TR18 constituent un étage d'entrée différentiel, les transistors sont couplés par leur émetteurs et ils se partagent la source de courant constant constituée par TR16.
La base de TR17 est l'entrée "+" de cet amplificateur opérationnel de puissance et la base de TR18 est l'entrée "-"
Je n'ai pas trop compris à quoi servent TR12 et TR13 ; ce sont 2 "petits" transistors (boîtier TO92) ; protection en cas de destruction de TRX1 ou TRX2 ? amorçage du circuit
TR12 et TR13 servent à limiter le courant dans les transistors de puissance TRX1 et TRX2. Ces deux transistors de puissance sont associés respectivement à TR11 et TR10 pour constituer un assemblage nommé 'transistor darlington".
(http://www.awatronic.com/images/uploads/GammeE1020.jpg)
L'ensemble se comportant comme un super transistor dont le gain en courant est égal au produit des gains de chacun des transistors qui le constitue.
La tension aux bornes de la résistance R19 est aussi la tension appliquée à la jonction base / émetteur de TR12, de même pour TR13 avec la résistance R21, dés que cette tension atteint les 0,6 / 0,7 volt, le transistor impacté se met alors à conduire et à court-circuiter la jonction base / émetteur du transistor darlington qu'il protège. Le courant collecteur du transistor de puissance s'auto-limite alors à 0,7 ÷ 0,18 soit 3,9 ampères.
il y a un truc louche avec TR12 et TR13 ; ce sont respectivement des "C815" et "A539" [couic] à supposer que ce sont des 2SC815 et 2SA539, leur brochage diffère de la doc que j'ai trouvée sur le net ; la doc dit que la base est la broche du milieu alors que la sérigraphie SEGA la place sur un coté mon schéma est conforme à la sérigraphie SEGA.
Cela arrive parfois selon avec certains constructeurs. Un test à l'ohmmètre devrait permettre de vérifier une fois pour toute s'ils sont correctement montés.
-
Merci pour ces explications ! <:)
J'ai maintenant compris la fonction des transistors TR12 et TR13. :)
Que penses-tu de mon commentaire n°1 ? J'ai vu juste ou j'ai fumé ?
Sinon, j'ai bientôt fini de tracer le schéma de la partie "THT".
Il faut que je le redessine pour qu'il soit plus compréhensible.
J'ai l'impression que l'oscillateur nécessaire pour faire fonctionner la THT réside dans le PCB de jeu...
-
Que penses-tu de mon commentaire n°1 ? J'ai vu juste ou j'ai fumé ?
Il me semblait correct, c'est pour cela que je n'ai rien ajouté. Mais à bien y réfléchir :
- Dans un cas le condensateur est chargé/déchargé par l'impédance de sortie du convertisseur : le spot se déplace rapidement.
- Dans l'autre, la constante de temps est augmentée et le spot se déplace plus lentement :
- θmini = RC = 11 × 103 × 22 × 10-9 = 0,242 ms
- θmaxi = RC = (11 + 5) × 103 × 22 × 10-9 = 0,352 ms
La constante de temps me parait bien faible vis à vis de la persistance rétinienne.
Ne s'agirait-il pas plutôt d'un dispositif connexe à l'extinction de trace :
- Tracé non affiché : il vaut mieux déplacer le spot rapidement pendant l'extinction, inutile de folatrer...
- Tracé visible : il vaut mieux déplacer le spot plus lentement pour améliorer la luminosité du tracé.
J'ai l'impression que l'oscillateur nécessaire pour faire fonctionner la THT réside dans le PCB de jeu...
Pourquoi pas ! Puisque la production de THT n'a pas besoin d'être asservie au balayage ligne, celui-ci n'étant pas cyclique.
A+
-
((:s
Hey les gars, vous faites quoi dans la vie comme boulot ? ;)
J'ai la sensation d'être devant un tableau de Milo largement incompréhensible et donc forcément fascinant.
-
Voici le schéma de la partie "THT".
(http://img1.uplood.fr/free/thumbnails/rix1_tht.png) (http://www.uplood.fr/visu.php?url=http://img1.uplood.fr/free/rix1_tht.png)
Commentaires :
- IC10 possède 6 portes inverseuses à sortie à collecteur ouvert ; seules 2 portes ont utilisées
- je n'ai pas pu déterminer exactement les enroulements de la THT
à priori :
- E semble être un secondaire, sortie G2
- J semble être le focus et VR6 son réglage
- G semble être la cathode et VR5 son réglage
- J1-35 et J1-36 semblent contrôler la luminosité du spot ; il y a probablement 4 niveaux différents, en comptant le niveau "éteint"
- je n'ai pas compris comment TR22 est commandé
- le +18 V non régulé qui polarise TR21 vient directement de l'alim ;
ce sont 2 enroulements du transfo avec un point commun et 2 diodes de redressement ;
il y a un petit condo tantale de filtrage que je n'ai pas indiqué
Voici le transfo THT :
(http://img1.uplood.fr/free/b0o4_20100103_125420_6846_img.jpg) (http://www.uplood.fr)
La sérigraphie de ce gros truc gris indique "voltage tripler".
J'imagine que c'est un transfo noyé dans de la résine.
Il est entre la sortie latérale de la THT et la tétine.
(http://img1.uplood.fr/free/wh5b_20100103_125548_6847_img.jpg) (http://www.uplood.fr)
Bonne nuit. :D
-
je commence à scotcher à ce WIP, même si je comprends que-dalle :-* <:)
-
elle a l'air en bon état la platine
c'est deja un bon debut
-
Bonjour.
Help ! je n'arrive pas à enregistrer une image au format png sur le site d'upload.fr alors que les formats gif et jpeg sont OK, impossible même en direct.
J'obtiens systématiquement le message "Type de fichier invalide". Quelqu'un a la solution ?
-
Bonjour.
Help ! je n'arrive pas à enregistrer une image au format png sur le site d'upload.fr alors que les formats gif et jpeg sont OK, impossible même en direct.
J'obtiens systématiquement le message "Type de fichier invalide". Quelqu'un a la solution ?
Bizarre, car je confie souvent des images png à upload.fr (mes schémas par exemple).
Peut-être tes png ont une particularité qui ne plait pas à upload.fr ?
Mes images sont travaillées avec l'outil Gimp (http://www.gimp.org/) :
- scan (scanner Canon) 300 dpi -> image RVB 32 bits
- filtrage seuil pour obtenir du noir & blanc pur
- transformation en palette indexée, 2 couleurs, pas de tramage
- réduction à 1.600 pixels de large
- sauvegarde en PNG, compression maxi
As-tu vérifié la taille (octets) du fichier ?
Peut-être sont-ce les dimensions de l'image (pixels) qui ne plaisent pas à upload ?
-
Va l'héberger sur www.imageshack.us, il me semble que ça prend le .png ;)
-
je n'ai pas compris comment TR22 est commandé
TR22 et deux des enroulements du transformateur THT réalisent un auto-oscillateur à surcouplage connu sour le nom "d'oscillateur blocking".
Désolé, je n'ai trouvé que cette explication en anglais : http://en.wikipedia.org/wiki/Blocking_oscillator
La phase des enroulements doit être respectée pour que le système puisse osciller, je l'ai représentée par des points noir sur le schéma modifié :
(http://img1.uplood.fr/mamu/kdlm_rix1_tht.small.jpg) (http://img1.uplood.fr/mamu/etns_rix1_tht.jpg)
Les composants RC ainsi que les deux diodes sont ajoutés pour améliorer les temps de commutation du transistor TR22 et/ou le protéger des surtensions.
La sérigraphie de ce gros truc gris indique "voltage tripler".
J'imagine que c'est un transfo noyé dans de la résine.
Non, ce n'est pas un transformateur mais un dispositif redresseur constitué de cellules diodes/condensateurs :
(http://retro-forum.com/download/file.php?id=43682)
Voir cette explication sur le tripleur pour THT : http://dede92dubois.free.fr/alacouleur/21/21alacouleur.htm paragraphe : "B) Le redressement par multiplication de tension"
Ce dispositif tripleur était majoritairement utilisé dans les années 70/80 pour produire la THT des téléviseurs et moniteurs couleurs à transistors. Il a progressivement disparu dés que l'on a su produire des transformateurs à enroulements fractionnés voir le paragraphe "C) Le redressement fractionné" du même document.
A+
-
Va l'héberger sur www.imageshack.us, il me semble que ça prend le .png ;)
Pas besoin d'aller voir ailleurs, uplood gère très bien le png et a une persistance de contenu bien meilleure que imageshack.us... Et en plus, son créateur est membre gamoover :D
Après, même supposition que f4brice, sans doute un png "bizarre"...
-
J'apporte ma modeste pierre à l'édifice, même si elle n'a rien de technique (toute façon vu le niveau je crois pas qu'il y ait besoin d'en rajouter :D)
Ton jeu est un "Space Wars" et le "Soleil" central a bien sa raison d'être ! Il ne faut surtout pas le retirer, il matérialise le "trou noir" gravitationnel central qui perturbe la combat que se livrent les deux vaisseaux.
Not a valid youtube URL name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src=" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object>[/youtube]
plus d'info ici : http://en.wikipedia.org/wiki/Space_Wars (http://en.wikipedia.org/wiki/Space_Wars)
-
C'est pas la doc ça ?
http://arcarc.xmission.com/PDF_Arcade_Manuals_and_Schematics/Space%20Wars.pdf
plein d'autres infos ici :
réparation écran, rom eproms, art...
http://andysarcade.de/spacewars.html
-
ça avance on dirait ^-
Bon courage tu vas réussir à nous à la ressuisciter cette borne qui a maintenant un nom!
-
Ton jeu est un "Space Wars"
C'est pas la doc ça ?
http://arcarc.xmission.com/PDF_Arcade_Manuals_and_Schematics/Space%20Wars.pdf
plein d'autres infos ici :
réparation écran, rom eproms, art...
http://andysarcade.de/spacewars.html
Ouergl ! :-)=
Mon jeu est la version SEGA de Space Wars.
Le schéma de l'écran correspond à mon écran SEGA (mais SEGA utilise des composants japonnais).
Pour celui du PCB, ça a l'air d'être le même schéma. Il faut que je regarde en détails.
-
Ben les gars...
Vous êtes épatants.
-
Pour celui du PCB, ça a l'air d'être le même schéma. Il faut que je regarde en détails.
C'est aussi ma première impression, il faudra compter avec des adaptations mineures causées par l'emploi d'EPROM ou de ROM de capacité supérieure.
Il y a aussi le dump de ces ROM dans le lien donné par liodel, donc possibilité de vérification si les contenus sont identiques.
A+
-
Ouergl ! :-)=
Mon jeu est la version SEGA de Space Wars.
Le schéma de l'écran correspond à mon écran SEGA (mais SEGA utilise des composants japonnais).
Pour celui du PCB, ça a l'air d'être le même schéma. Il faut que je regarde en détails.
Yeps, indice déjà indiqué lors de la vente, juste ici (http://www.gamoover.net/Forums/index.php?topic=20430.msg293539#msg293539) ;)
Sinon, j'ai trouvé une photo de cette borne dans mon livre reprenant toutes les bornes SEGA... allez, hop, à l'arrache avec l'i-phone :fleche:
(http://www.arcadelifestyle.net/forforum2/segaspace.jpg)
Je ferai un scan high res. si tu veux...et histoire que quelqu'un puisse te traduire le texte ;)
-
Je peux lui prêter le Sega Arcade History que j'ai aussi si besoin, mais je pense pas qu'il contienne des infos extraordinaires :)
-
Un scan me suffit. <:)
J'ai 2 collègues de boulot qui devraient, à eux deux, peut-être me décrypter ça ! :D
EDIT: bon, y'en a un des deux qui se dégonfle devant le document !
-
wahaaa !
une space wars à gamoover!
champagne!!!! ((:s :10:
manquerai plus que la pcb de sega soit très proche voir identique à la doc , et la rénov' est dans la poche!
-
J'ai une notice du moniteur trouvée dans ma space wars, je l'avait transmise an andréa de http://andysarcade.de/ (http://andysarcade.de/)
Si ca t'interesse fais moi signe, je crois que c'est un vectorbeam
-
Bonsoir, juste une petite aparté ...
Help ! je n'arrive pas à enregistrer une image au format png sur le site d'upload.fr alors que les formats gif et jpeg sont OK, impossible même en direct.
J'obtiens systématiquement le message "Type de fichier invalide". Quelqu'un a la solution ?
Depuis j'ai essayé plusieurs browsers dont IE7, IE8 et Firefox, avec deux d'entre eux il m'est effectivement impossible d'enregistrer un png sur le site d'upload.fr, quelque soit le pc ou son système d'exploitation (XP ou Vista). Avec le 3èm browser, pas de soucis, le png est bien accepté.
Je vous laisse deviner lesquels de ces browsers sont incompatibles ...
-
Bonsoir, juste une petite aparté ...
[couic]
J'utilise Opera (http://www.opera.com/). ^-
C'est sûrement pour ça que je n'ai jamais eu ce problème !
Je viens de regarder la notice du jeu Space Wars de chez Cinematronic.
Ouergl, gc339 avait vu juste : c'est bien un CPU spécifique qui est réalisé en logique TTL. :o
Voici un extrait (traduit par mes soins) de la page 9 de cette notice, à propos de ce CPU dédié :
Les désavantages principaux d'un point de vue "SAV" sont que le système est lourdement contrôlé par le logiciel avec son propre language machine et op-codes, et qu'il y a un nombre de "boucles" au sein des circuits de signaux qu'il est virtuellement impossible de localiser une panne en utilisant des moyens et des techniques ordinaires.
Eh bé...
Les journées soirées nuits vont être longues ! :D
La 1ère chose que je vais faire, c'est reporter sur les schémas Cinematronic les n° de circuits (IC1, IC2, ... jusqu'à IC151) choisis par SEGA.
Je devrais ainsi m'y retrouver moins m'y perdre.
-
Bonsoir.
Voici une mise à jour de ce WIP.
Je me suis précipité pour télécharger les 2 archives zip contenant le dump des ROMs :
- dump du micro-cadenceur du CPU Cinematronic
- dump des ROMs du jeu lui-même
Le lien pour récupérer ces 2 archives est dispo sur cette page (http://andysarcade.de/spacewars.html), indiquée par liodel.
Déjà, chose bizarre, l'archive qui contient les PROMs du micro-cadenceur du CPU possède 6 fichiers dump + 1 fichier texte :
(http://img1.uplood.fr/free/jll1_a.png) (http://www.uplood.fr)
Je pensais que les PROMs de la région 4 étaient le micro-cadenceur :
(http://img1.uplood.fr/free/rjhf_20091229_184220_6795_img.jpg) (http://www.uplood.fr/)
En fait, pas du tout...
Ce sont les PROMs des régions 1, 2 et 3 qui sont le micro-cadenceur du CPU.
Dans les PROMs de la région 4 sont stockées les données spécifiques au jeu (instructions assembleur, données de graphisme, ...)
Cinematronic utilise une référence "ligne/colonne" pour désigner un circuit intégré sur le PCB de jeu.
On devine la sérigraphie "A B C..." de droite à gauche en bas du PCB sur cette photo :
(http://img1.uplood.fr/free/5jtl_spacewars.pcb.jpg) (http://www.uplood.fr)
[source : Crazy Kong (http://www.crazykong.com/pcbs/P%20-%20S/index02.html)]
De son coté, SEGA désigne les circuits intégrés avec une référence que j'appelle dans mon jargon une référence "itérative" : "IC1", "IC2", ... "IC151".
Mais dans la pratique, SEGA a placé ses composants au même endroit que Cinematronic, à quelques exceptions près.
J'ai donc pu recouper ainsi que la PROM SEGA "PR-17", référencée "IC138" sur le PCB SEGA correspond à la E14 chez Cinematronic.
C'est comme ça que j'ai pu comparer le dump que j'avais fait moi-même avec le dump de l'archive proposée par Andreas (http://andysarcade.de/) :
Mon relevé : chaque ligne est une adresse de lecture de la PROM.
J'avais préparé une feuille vide avec un tableur :
(http://img1.uplood.fr/free/wne4_dump_fab.png) (http://www.uplood.fr)
Contenu du dump trouvé sur le net :
(http://img1.uplood.fr/free/hkom_editeur_hexa.png) (http://www.uplood.fr)
Les 2 contenus sont totalement identiques. Il n'y a aucun bit de différence.
Le contenu de ma PROM est donc correct.
Grâce à l'aide de la doc, je vais pouvoir aborder le problème différemment.
Par exemple, page 12, il est indiqué - si j'ai bien compris - qu'une condition de reset sera atteinte si un foirage sur n'importe lequel des 90% des signaux du PCB est détecté.
Je vais donc examiner en 1er ce signal reset.
Par contre, il est indiqué qu'une conséquence est l'absence de commandes envoyées à l'écran et donc la rupture d'un fusible de l'alim, pour protéger l'écran.
Or d'après mes 1er tests, rien n'est envoyé à l'écran et pourtant je n'ai pas de fusible grillé.
J'avais déjà investigué, sur les conseils de gc339, les 5 bits d'adresse que la PROM que j'accusais d'être moisie.
Voici les relevés :
(http://img1.uplood.fr/free/wlm0_a0.png) (http://www.uplood.fr) | (http://img1.uplood.fr/free/ce6g_a1.png) (http://www.uplood.fr) | (http://img1.uplood.fr/free/9zj4_a2.png) (http://www.uplood.fr) |
a0 | a1 | a2 |
(http://img1.uplood.fr/free/7z7h_a3.png) (http://www.uplood.fr) | (http://img1.uplood.fr/free/3m3a_a4.png) (http://www.uplood.fr) | |
a3 | a4 | |
Mes relevés ne permettent pas de détecter l'asynchronisme de commutation des signaux du bus d'adresse. Il faut que je sorte la 2e sonde pour ça.
Déjà, il n'y a aucun bit "en l'air".
Les signaux ne m'ont pas l'air d'être exagérément parasités.
Sur a3, dans la 6e division de temps, il y a un glitch qui n'est pas constant (le trait épais).
Mon relevé a été fait alors que le glitch était bien visible.
À suivre : endoscopie du CPU Cinematronic ! :D
-
J'ai une notice du moniteur trouvée dans ma space wars, je l'avait transmise an andréa de http://andysarcade.de/ (http://andysarcade.de/)
Si ca t'interesse fais moi signe, je crois que c'est un vectorbeam
J'ai trouvé cette notice (http://arcarc.xmission.com/PDF_Monitors/Keltron%20Monitor%20new.pdf) en pdf, donc je n'ai pas besoin de ton document.
Par contre, si tu as la notice du jeu avec les schémas électroniques, ça m'intéresse.
Le scan que j'ai trouvé sur le net, sans être mauvais, n'a pas la précision nécessaire à certains endroits.
-
salut f4brice ,c'est un vrai plaisir de te relire =:))
tu es calé dans le domaine ,
en tous cas bravo ,grâce a des gens comme toi il y aura des bornes de collection qui seront sauvé ^-^ ^-^
de plus tu nous aide beaucoup dans nos réparation
je vais suivre ton wip de très près
bonne chance
-
Oui tes travaux sont vraiment agréables à lire car tu nous explique vraiment pas à pas ce que tu fais et c'est vraiment top.
Vraiment top ^- bon courage!!!
-
J'ai trouvé cette notice (http://arcarc.xmission.com/PDF_Monitors/Keltron%20Monitor%20new.pdf) en pdf, donc je n'ai pas besoin de ton document.
Par contre, si tu as la notice du jeu avec les schémas électroniques, ça m'intéresse.
Le scan que j'ai trouvé sur le net, sans être mauvais, n'a pas la précision nécessaire à certains endroits.
Oui je vais regarder je pense l'avoir.
-
Bonjour.
Je ne sais pas comment tu comptes t'y prendre pour dépanner cette carte, mais en analysant les schémas pages 25 et 26 de la notice "space wars" on se rend vite compte que tous les bus internes se "mordent la queue" à travers ALU et latches. Je ne parle pas du micro-séquenceur qui ajoute encore en complexité. C'est infernal à dépanner même avec les meilleurs outils.
La meilleure des solutions dans ce cas la est la méthode "bourrin" qui consiste à dessouder les circuits intégrés un par un ou par grappe pour :
- Vérifier le contenu de toutes les ROM.
- Vérifier les RAM.
- Vérifier les circuits TTL en les regroupant par fonction : ceux du compteur programme, ceux des accumulateurs, ceux de chaque multiplexeur 12 fois X vers 1 ... et en vérifiant le fonctionnement de la carte à chaque fois que les boîtiers d'une fonction ont été vérifiés et remis en place (sur supports tulipe ). Cette méthode a plus de chance d'aboutir rapidement qu'un test désordonné des circuits TTL.
Si l'on trouve par exemple un boîtier avec une de ses broches d'entrée/sortie en court-circuit ou qui impose une tension bâtarde, il est nécessaire d'aller vérifier tous les autres boîtiers ayant une ou des broches entrée/sortie connectées avec celle-ci.
Il y a bien la solution de remplacer les circuits TTL à chaque fois que l'on en dessoude un par un neuf, mais rien ne garantie que le neuf est 100% OK. C'est pour cela qu'un testeur de CI (IC tester) te serait des plus utile surtout si tu comptes dépanner tout le lot de cartes récupérées.
Ce genre d'équipement permet en plus de programmer et/ou de vérifier tout un tas de mémoires, voir par exemple les modèles VP280 et TOP2049 en vente sur un site d'enchères très connu.
A+
-
Ça sent bon le WIP de malade ici...Moi j'aime bien :-)=
-
Bonsoir.
Je ne sais pas comment tu comptes t'y prendre pour dépanner cette carte, mais en analysant les schémas pages 25 et 26 de la notice "space wars" on se rend vite compte que tous les bus internes se "mordent la queue" à travers ALU et latches. Je ne parle pas du micro-séquenceur qui ajoute encore en complexité. C'est infernal à dépanner même avec les meilleurs outils.
[couic]
N'ayons pas peur des mots : cette carte est une parfaite usine à gaz d'une complexité inimaginable !
(http://img1.uplood.fr/free/ey90_raffinerie.jpg) (http://www.uplood.fr)
Je me demande combien de temps et de prototypes il a fallu aux gens de chez Cinematronic pour pondre cette carte...
Pour le dépannage, j'avais dans l'idée de procéder à reculons.
J'ai déterminé (voir plus bas) que le CPU est reseté sans arrêt.
Mon idée, c'est de remonter progressivement tous les signaux qui provoquent cette condition de reset affin d'en déterminer la raison.
Pour le moment, j'ignore si cette méthode est réaliste.
Le problème avec l'idée d'un systématisme dans le dessoudage + test + soudage support + remise en place du composant, c'est que je vais certainement me retrouver avec un grand nombre de supports sur le PCB, ce que j'aimerais éviter pour une raison purement esthétique. Oui je sais, c'est une raison débile, mais idéalement j'aimerais garder ce PCB au plus proche de son état d'origine, avec ses composants d'origine (pour ceux qui veulent bien encore fonctionner en 2010).
J'ai bien conscience que cette contrainte purement subjective complique le dépannage.
Cependant, en cas d'échec de ma méthode, je me rabattrai certainement sur la tienne, dans l'ordre que tu as décris car cet ordre me semble assez logique.
[couic]
C'est pour cela qu'un testeur de CI (IC tester) te serait des plus utile surtout si tu comptes dépanner tout le lot de cartes récupérées.
Ce genre d'équipement permet en plus de programmer et/ou de vérifier tout un tas de mémoires, voir par exemple les modèles VP280 et TOP2049 en vente sur un site d'enchères très connu.
Ca tombe bien, car je pensais justement acheter un progammateur d'EPROM.
J'avais vu le modèle G540 (USB, bleu) sur le même site d'enchères.
Le TOP2049 me semble pas mal.
Le test de composants TTL & RAM me sera utile.
Quel est le meilleur modèle, sachant que je ne suis pas à 40 € près pour cet achat ?
Autre point, aucun ne semble pouvoir lire & programmer les PAL (mais ils savent faire les GAL). Une idée du pourquoi ?
On trouve souvent des PALs sur les PCB de jeux, et ce serait bête de ne pas pouvoir les lire/copier.
Sinon, petite mise à jour de ce WIP d'endoscopie de CPU Cinematronic...
J'ai examiné la clock principale du PCB (environ 20 MHz), et je trouve le signal pas très rectangulaire :
(http://img1.uplood.fr/free/yphk_a.png) (http://www.uplood.fr) (http://img1.uplood.fr/free/80rr_ic011-broche10.png) (http://www.uplood.fr)
Le signal observé est entouré en rouge sur le schéma (extrait de la page 24).
Le 0 V de mon oscillo est à 2 divisions en partant du bas (repère entouré en rouge).
Heureusement que mon oscillo a suffisamment de bande passante (100 MHz) pour ces mesures.
J'ai également examiné le signal /RESET (extrait de la page 27) :
(http://img1.uplood.fr/free/3sgb_b.png) (http://www.uplood.fr) (http://img1.uplood.fr/free/load_ic070-broche05.png) (http://www.uplood.fr)
Donc il est sûr que le CPU est constament reseté.
Je n'ai pas pu mesurer la périodicité du reset.
Quand je ralentis la base de temps, l'oscillo perd de vue le pic à 0 V du signal avant que je ne puisse voir 2 signaux en même temps.
J'ai encore une carte à jouer avec la synchro (je peux synchroniser l'oscillo sur un front non visible à l'écran), mais je n'ai pas encore testé.
La partie "reset à froid" (power up) n'est pas en cause. Le signal est fixe à +5 V.
Une idée qui vaut ce qu'elle vaut :
- mesurer le temps entre la fin du reset et le démarrage du CPU (fliquer les accès à une PROM du micro-ordonnanceur)
- mesurer le temps entre le démarrage du CPU et le reset suivant
- en déduire combien d'instructions assembleur le CPU a exécuté (fliquer les lectures dans la ROM de code du jeu)
Là, soit le CPU est reseté avant de lire le 1er op-code du jeu, soit il est reseté après N op-codes.
Peut-être que je pourrai déterminer quel op-code le fait planter et examiner les composants impliqués.
Le reverse-engineering des op-codes du CPU Cinematronic est totalement réalisé sous Mame.
EDIT: orthographe
-
Autre point, aucun ne semble pouvoir lire & programmer les PAL (mais ils savent faire les GAL). Une idée du pourquoi ?
et bien tout simplement un pal n'est pas réinscriptible. selon wiki un Gal est Un PAL réinscriptible. cqfd
je cite:
"An innovation of the PAL was the generic array logic device, or GAL, invented by Lattice Semiconductor in 1985. This device has the same logical properties as the PAL but can be erased and reprogrammed."
:D
-
N'ayons pas peur des mots : cette carte est une parfaite usine à gaz d'une complexité inimaginable ! [couic ]Je me demande combien de temps et de prototypes il a fallu aux gens de chez Cinematronic pour pondre cette carte...
Je pense surtout que c'est le micro-programme qui a du demander le plus de compétences pour la mise au point. L'architecture de la micro-machine est somme toute relativement standard.
Un seul prototype a du suffire s'il a été réalisé en mini-wrapping, il est très facile de modifier le câblage, d'ajouter/supprimer/remplacer une porte ou une fonction. Par contre il a peut-être fallu retoucher le circuit imprimé à plusieurs reprises pour éliminer des dysfonctionnements (temps de propagation du aux longueurs de pistes, équipotentialité des masses, parasites sur le + 5 volts ...) qui n'existaient pas avec le prototype en mini-wrapping.
Pour le dépannage, j'avais dans l'idée de procéder à reculons.
J'ai déterminé (voir plus bas) que le CPU est reseté sans arrêt.
Mon idée, c'est de remonter progressivement tous les signaux qui provoquent cette condition de reset affin d'en déterminer la raison.
Pour le moment, j'ignore si cette méthode est réaliste.
Pourquoi pas, tu peux dans 1er temps voir quelle est la cause qui fait aboyer le chien de garde, eh oui ce dispositif de réinitialisation n'est pas autre chose qu'un chien de garde.
Entre parenthèses : il n'est pas exclus qu'il soit malade et réinitialise intempestivement la carte !
Puis avec de la chance et de la réflexion voir quel est le circuit défaillant. Même en cas d'insuccès tu auras toujours progressé dans la compréhension du fonctionnement de cette carte.
Le problème avec l'idée d'un systématisme dans le dessoudage + test + soudage support + remise en place du composant, c'est que je vais certainement me retrouver avec un grand nombre de supports sur le PCB, ce que j'aimerais éviter pour une raison purement esthétique. Oui je sais, c'est une raison débile, mais idéalement j'aimerais garder ce PCB au plus proche de son état d'origine, avec ses composants d'origine (pour ceux qui veulent bien encore fonctionner en 2010).
J'ai bien conscience que cette contrainte purement subjective complique le dépannage.
Alors dans ce cas, je ne vois que deux solutions :
- Sois tu te mets en recherche d'un deuxième exemplaire de cette carte de jeu, pour pouvoir dépanner tranquillement la première. Et si le deuxième exemplaire est fonctionnel, ce ne sera que tant mieux.
- Sois tu clones la carte, ce qui n'est pas une tâche insurmontable avec les logiciels de tracé de schéma et de PCB existants. Le plus difficile sera peut-être d'approvisionner certains composants comme les mémoires RAM. Après tout il y a peut-être des gens qui seraient intéressés par un clone encore inédit de cette carte ...
Puis tu achètes une vitrine en verre pour exposer la carte et commencer ta collection de cartes originales ...
J'avais vu le modèle G540 (USB, bleu) sur le même site d'enchères.
J'ai zieuté ses caractéristiques, apparemment il ne réalise que la fonction programmation.
Le TOP2049 me semble pas mal.
Le test de composants TTL & RAM me sera utile.
Quel est le meilleur modèle, sachant que je ne suis pas à 40 € près pour cet achat ?
Autre point, aucun ne semble pouvoir lire & programmer les PAL (mais ils savent faire les GAL). Une idée du pourquoi ?
On trouve souvent des PALs sur les PCB de jeux, et ce serait bête de ne pas pouvoir les lire/copier.
Je ne sais pas quel est le meilleur modèle sur les deux que j'ai cité.
Ils programment bien certains PAL, il suffit de rechercher avec le mot clef "PAL" dans la liste dont le lien est donné dans chaque annonce.
Par contre il n'y a pas de liste concernant les références des boîtiers TTL qu'ils peuvent tester.
J'ai examiné la clock principale du PCB (environ 20 MHz), et je trouve le signal pas très rectangulaire :
C'est tout à fait normal, les inverseurs fonctionnent en régime pseudo linéaire grâce aux résistances de 330 ohms disposées entre entrée et sortie, sinon le montage ne pourrait pas entrer en oscillation. Le flip-flop qui suit est là pour symétriser le signal en le divisant par deux et obtenir des flancs plus raides dignes d'un signal TTL.
Une idée qui vaut ce qu'elle vaut :
- mesurer le temps entre la fin du reset et le démarrage du CPU (fliquer les accès à une PROM du micro-ordonnanceur)
- mesurer le temps entre le démarrage du CPU et le reset suivant
- en déduire combien d'instructions assembleur le CPU a exécuté (fliquer les lectures dans la ROM de code du jeu)
Là, soit le CPU est reseté avant de lire le 1er op-code du jeu, soit il est reseté après N op-codes.
Peut-être que je pourrai déterminer quel op-code le fait planter et examiner les composants impliqués.
Pourquoi pas, je ne crains qu'une seule chose : que tu progresses plus vite dans la compréhension du fonctionnement de la carte que dans son dépannage effectif !
J'ai déjà vu se faire le dépannage de ce genre de carte :
- Sur site : la carte était sortie de son panier par un prolongateur, il y avait un connecteur en bout de carte pour enficher :
- Un outil comportant une cinquantaine de LED pour afficher ainsi tous les signaux névralgiques, il avait été baptisé du joli nom poétique de "yeux de rat".
- Un mini-pupitre pour faire avancer l'horloge en pas à pas ou par cycle, avec une sonde pour stopper l'horloge sur apparition d'un signal quelconque prélevé sur la carte.
- En usine : la carte alimentée était disposé sur une "planche à clous". Les clous de la planche étaient en fait les pointes des sondes reliées au calculateur de la machine de test.
La machine de test devait soit imposer sa propre horloge soit prélever l'horloge de la carte pour synchroniser le test.
Par contre il semble me souvenir que les EPROM's de la carte étaient retirées pour ne pas entrer en conflit avec celles spécifiques au test. Ces dernières, situées dans la machine de test, étaient connectées à la carte à travers la "planche à clous".
Le reverse-engineering des op-codes du CPU Cinematronic est totalement réalisé sous Mame.
Donc les gens qui ont réalisés cette émulation devaient avoir des informations de bonne source, ou alors ont du investir pas mal de temps à décortiquer la carte pour les obtenir.
A+
-
je redéterre ce topic (j'en suis fan :-*)
alors ? du neuf? ;)
-
alors ? du neuf? ;)
Mise à jour ce soir ! ;)
Hier soir ce matin, j'ai arrêté à 02h00 et mon lit était plus attirant que le clavier du PC.
Je pense avoir démontré un défaut sur au moins une PROM à fusibles.
La PROM ne supporte plus les lectures rapides, les glitches (http://fr.wikipedia.org/wiki/Glitch) sur le bus de donnée ne sont pas dûs à un asynchronisme de commutation du bus d'adresse.
Ad'taleur.
-
Un scan me suffit. <:)
J'ai 2 collègues de boulot qui devraient, à eux deux, peut-être me décrypter ça ! :D
EDIT: bon, y'en a un des deux qui se dégonfle devant le document !
Tu veux que je m'en occupe ?
-
Tu veux que je m'en occupe ?
Vi beaucoup ! :-*
La 2e personne est d'origine chinoise, et ne décrypte que très très partiellement le japonnais.
-
Dès que tu as le scan tu me le transmet. :)
-
Je viens de solliciter mister Nuno par MP. :)
-
et voilou... pas grand chose mais mieux que rien ;) :fleche:
(http://www.dragonslairfans.com/forforum2/spaceship_sega.jpg)
Pour rappel, l'image original fait max 5cm, d'où la qualité moyenne une fois agrandie :-\
-
et voilou... pas grand chose mais mieux que rien ;)
Merci ! <:)
Pourquoi avoir ajouté des "$" ?
-
Merci ! <:)
Pourquoi avoir ajouté des "$" ?
LOL... j'ai installé à l'arrache le scanner sur mon iMac, mais je n'ai qu'un soft en mode 'trial' qui ajoute lui même les $ ...
-
Bonsoir.
Voici la mise à jour d'hier soir, non faite hier soir pour cause d'yeux qui se fermaient tous seuls... :D
J'ai commandé sur le site d'enchères mondialement connu un programmateur d'EPROM.
Mon choix s'est arrêté sur le VP280 (http://www.weilei.com/VP-280e.htm), sans réel argument très fort pour ce modèle plutôt qu'un autre.
Google m'a trouvé la liste des composants TTL qu'il sait tester, en plus de la programmation standard d'EPROMs : liste (http://www.weilei.com/VP-280list.htm#TTL & CMOS TEST).
Il semble très complet dans cette liste.
Le manuel d'utilisation que j'ai téléchargé indique que l'on peut, moyennant programmation, tester des composants non connus de l'appareil.
Au passage, est-ce que quelqu'un connait un genre de "catalogue" des composants TTL 74xxx ?
Je recherche un document PDF présentant le résumé du datasheet de tous les 74xxx, à raison par exemple d'un composant par page.
Je n'ai besoin que du brochage et de la description résumée du composant (table de vérité, etc...)
Aujourd'hui, à chaque nouveau 74xxx rencontré, je dois récupèrer sa datasheet que je sauvegarde sur mon disque dur, mais j'ai rarement besoin de tous les détails.
Un résumé me suffirait.
À propos de planche à clous, j'ai déjà vu des collègues électroniciens s'en servir pour tester des cartes.
Il y a un système avec un levier monstrueux (gros comme un levier de frein à main) pour insérer/retirer les connecteurs.
Des sondes en forme de "clous" positionnées avec précision viennent effectivement mesurer un signal.
[3615 MYLIFE]
Étant môme, j'avais 2 souris (l'animal, pas le périphérique) dont une souris albinos (http://fr.wikipedia.org/wiki/Albinisme).
C'est vrai que les yeux de souris albinos, selon l'éclairage, fond bien penser à des LEDs rouges ! ;D
[/3615 MYLIFE]
Hier soir, j'ai suivi la méthodologie expliquée dans un message précédent.
J'ai investigué le pourquoi du comment du signal "reset".
Voici le schéma de la génération du signal reset, extrait de la page 27 :
(http://img1.uplood.fr/free/4cks_schema_reset.png) (http://www.uplood.fr)
En 1, j'ai un signal qui passe à l'état bas toutes les xxx millisecondes.
Je n'ai pas pu mesurer la périodicité du signal : il passe à l'état bas seulement quelques dizaines de nanosecondes avant de retourner à l'état haut.
C'est normal car il est issu d'une bascule JK (http://fr.wikipedia.org/wiki/Bascule#Bascule_JK) dont la clock est la CLOCK principale (environ 5 MHz) du PCB.
Pour voir 2 passages à l'état bas, je dois extrêment ralentir la base de temps de mon oscillo et ce dernier ne voit plus du tout le signal passer à l'état bas car c'est bien trop rapide par rapport à la base de temps.
D'après moi, la périodicité du signal reset serait soit celle du signal "/PROCEED", soit le double.
En 2, j'ai le signal "POWER_UP" à l'état haut. Il est issu d'un montage à 2 transistors + 1 porte inverseuse. Aucun problème ici.
En 3, j'ai le signal "/PROCEED". Ce signal est un signal périodique à environ 38 Hz généré exclusivement à partir de nombreuses divisions de la clock principale.
D'après moi, ce signal sert à 2 choses :
- activation temporaire du compteur mécanique de crédits
- chien de garde : vérification périodique que le signal "OPERATING" (flèche 5 sur mon extrait de schéma) est bien actif
Aucun problème ici.
En 4, j'ai le signal "/RESET" inversé ; c'est normal quand on considère que le signal "OPERATING" est à 0
En 5, le signal "OPERATING" est en permanance à 0.
Je pense que c'est la conséquence d'une panne détectée par l'électronique du PCB.
J'observe sur le schéma que si ce signal venait à passer à 1 avant l'arrivée du front montant de /PROCEED, alors il ferait passer le signal de la flèche 4 à 0 et viendrait donc bloquer le fonctionnement de la bascule JK de gauche.
Le chien de garde serait muselé.
La porte NOR (http://fr.wikipedia.org/wiki/Fonction_NON-OU) à 3 entrées dont il est issu semble fonctionner, mais je n'ai pas encore investigué en détail là pour le moment.
L'une des 3 entrées de cette porte NOR est le signal "/COLD_START".
Ce signal est généré directement par la PROM IC138 (32 × 8 bits).
Mon oscillo montre les monstrueux glitches présents sur ce signal.
Ces glitches ne sont pas la cause directe de mon problème sur le signal de la flèche 5.
Mais ils sont bien le fruit de la PROM elle-même, car ils sont présents même quand j'isole la broche (le composant étant sur support, il me suffit de plier à peine la broche pour ne pas qu'elle soit insérée dans son contact tulipe quand je remets le composant en place).
(http://img1.uplood.fr/free/jsgv_cold_start.png) (http://www.uplood.fr)
signal "/COLD_START", broche 6 de IC138
Du coup, et c'est ce que j'ai fait hier soir, j'ai décortiqué méticuleusement les signaux autour de cette PROM.
GC339 avait indiqué à juste titre qu'un asynchronisme de commutation sur le signal du bus d'adresse pouvait être la raison de ces glitches.
En effet, supposons 2 signaux X et Y qui doivent par exemple passer de X=0,Y=0 à X=1,Y=1.
Si X change un micro-chouilla avant Y ou inversement, alors de manière très fugitive, on aura X=0,Y=1 (si Y a commuté avant X) ou bien X=1,Y=0 (si X a commuté avant Y).
Cette valeur fugitive parasite peut tout à fait expliquer un glitch de lecture : la PROM voit une demande de lecture à une certaine adresse et a le temps de trouver la donnée avant que tous les signaux aient fini de prendre leur valeur voulue.
Les PROMs à fusible étant des composants très rapides, ce scénario est tout à fait plausible.
C'était l'objet de mes investigations de hier soir.
Mon problème est que je ne dispose d'un oscillo qui ne possède "que" 2 voies.
Il peut lire 2 signaux en même temps mais moi, je voudrais en lire 9...
Un analyseur logique TTL à 9 canaux (ou plus) coûte la peau des glaouis.
J'ai donc synchronisé le déclenchement de mon oscillo sur un signal précis : le front montant du signal "/RESET" qui me gêne tant.
Ainsi toutes mes mesures vont être synchronisée sur une référence commune ; je peux donc faire autant de mesures que je veux, il me suffit ensuite d'assembler les captures d'écran avec un logiciel de dessin (http://www.gimp.org/).
Voici le fruit de pas mal de boulot :
(http://aquafab.free.fr/gamoover/all.png)
En 1er, j'ai mis le signal /RESET, source de synchro.
Ensuite viennent les 4 bits du bus d'adresse.
Les signaux "/COLD_START", "/VECTOR" et "/PAR2" sont 3 des bits du bus de données.
Chaque trait vertical rouge correspond à un changement sur un bit du bus d'adresse.
Entre les zones 2 et 3, le trait est épais car a2 et a3 n'ont pas commutés pile-poil en même temps. C'est a3 qui a commuté un micro-chouilla avant a2. La mesure n'est pas précise, mais l'ordre de grandeur est inférieur à 16 ns (ça fait 16 milliardièmes de secondes).
D'après le dump de la PROM, voici ce que j'aurais dû trouver sur le bus de données :
Zone | a4/a3/a2/a1/a0 | /COLD_START | /VECTOR | /PAR2 |
1 | 1/1/1/1/1 | 1 | 1 | 1 |
2 | 1/1/0/1/1 | 1 | 1 | 0 |
2 bis | 1/0/0/1/1 | 1 | 1 | 1 |
3 | 1/0/1/1/1 | 1 | 1 | 1 |
4 | 1/1/1/1/0 | 1 | 1 | 1 |
La zone 2 bis est la zone qui correspond au court instant où a3 a déja changé alors que a2 ne l'a pas encore fait.
Observations :
- pour tout ce relevé, le signal /COLD_START aurait dû être toujours lu à 1 ; hors il se mange 2 glitches
- même chose pour /VECTOR : il devrait être toujours lu à 1 sur la période de mon relevé, mais il souffre de 2 glitches lui aussi
- /PAR2 est correctement lu, mais il a aussi la maladie du glitch
- il semble que c'est une commutation sur a3 qui provoque les glitches (à confirmer par d'autres mesures)
Conclusion :
De mon point de vue, je dirais que cette PROM est malade. Je ne pense pas qu'il soit normal que des bits du bus de données bagottent sur certaines transitions du bus d'adresse, alors que ces transitions n'affectent pas les valeurs à lire d'après le contenu de la PROM.
N'ayant pas un 2e PCB qui fonctionne, je ne peux pas tester les PROM accusées d'être malades sur un PCB témoin.
N'ayant pas la spécification technique détaillée de la PROM à fusible, je ne peux pas dire si son fonctionnement est en-dehors des spécifications :
- soit le constructeur indique qu'après une transition sur le bus d'adresse, tous les bits de données peuvent bagotter pour finalement se stabiliser à la valeur devant être lue ; dans ce cas le composant est conforme
- soit seuls les bits de données affectés par la transition sur le bus d'adresse doivent changer ; dans ce cas le composant est non-conforme
Finalement, je ne suis pas sûr que la PROM soit réellement malade...
J'ai vérifié que pour la génération du signal "OPERATING" (voir flèche 5 de mon 1er schéma), les glitches de /COLD_START n'ont pas d'effet sur la porte logique NOR.
À suivre : suite des investigations en marche arrière. Je vais tenter de trouver pourquoi le signal "OPERATING" reste à 0, faisant aboyer le chien de garde.
EDIT : orthographe
-
Bonjour.
Au passage, est-ce que quelqu'un connait un genre de "catalogue" des composants TTL 74xxx ?
Je recherche un document PDF présentant le résumé du datasheet de tous les 74xxx, à raison par exemple d'un composant par page.
Je n'ai besoin que du brochage et de la description résumée du composant (table de vérité, etc...)
Ce qu'il te faut c'est une bible imprimée par le meilleur éditeur en la matière :
(http://img1.uplood.fr/mamu/s4pu_dscf4102.small.jpg) (http://img1.uplood.fr/mamu/m312_dscf4102.jpg)
C'est un document papier qui rassemble tous les TTL produits par cette marque, il y a toutes les informations dont tu as besoin.
Tu peux en trouver sur le site d'enchères mondialement connu.
Préfères une édition des années 80..85 à une édition plus vieille : ces dernières ont l'épaisseur d'un dictionnaire car elles sont moins condensées et il y a moins de type de boîtiers, surtout ceux numérotés à partir de 200 comme le 74244.
Celle que j'ai prise en photo est une édition de 80 et elle pèse bien son poids ...
A+
-
Lut' tout d'abord bravo pour ton travail <:)
Je ne sais pas si cela peux t'aider mais je viens de voir que arcadechips propose des ROM 6331 a la vente. Voici le liens au cas ou cela pourrai te dépanner :
http://www.arcadechips.com/product_info.php?products_id=64&osCsid=5272ddcda4fc1e08d25d9555afbbcf02
:)
-
Bonjour.
De mon point de vue, je dirais que cette PROM est malade. Je ne pense pas qu'il soit normal que des bits du bus de données bagottent sur certaines transitions du bus d'adresse, alors que ces transitions n'affectent pas les valeurs à lire d'après le contenu de la PROM.
N'ayant pas un 2e PCB qui fonctionne, je ne peux pas tester les PROM accusées d'être malades sur un PCB témoin.
N'ayant pas la spécification technique détaillée de la PROM à fusible, je ne peux pas dire si son fonctionnement est en-dehors des spécifications :
- soit le constructeur indique qu'après une transition sur le bus d'adresse, tous les bits de données peuvent bagotter pour finalement se stabiliser à la valeur devant être lue ; dans ce cas le composant est conforme
- soit seuls les bits de données affectés par la transition sur le bus d'adresse doivent changer ; dans ce cas le composant est non-conforme
Il ne faut pas oublier que tous les bus sont rebouclés à travers des latches sensibles non pas à un niveau logique mais à une transition sur leur entrée d'horloge, ce qui oblitère pas mal de phénomènes transitoires.
Prenons par exemple ce cas bien particulier :
- Soit un compteur asynchrone en cmos standard relativement lente, genre CD4040, dont les sorties pilotent les adresses d'une PROM fusible. Il est bien évident qu'à chaque front négatif d'horloge sur l'entrée du compteur CD4040, ses sorties ne changeront pas d'état toutes en même temps, des "glitches" seront donc présents un court instant en sortie de la PROM fusible après chaque incrémentation du compteur.
- Si l'on connecte les entrées d'un module octuple latches comme par exemple un LS374 ou un HCT374 sur les sorties de la PROM fusible ainsi que son entrée d'horloge sur la même horloge que celle du compteur CD4040 : le compteur avancera sur les fronts descendants de l'horloge alors que les données de la PROM seront transférées simultanément dans les latches sur le front montant de ce même signal.
Les données en sorties des latches seront certes accessibles 1/2 période d'horloge plus tard, par contre elles seront "glitches-free" car les données en sortie de PROM fusible auront eu le temps de se stabiliser bien avant le front montant du signal d'horloge.
Donc prudence, il faut bien connaître le séquencement interne des transferts entre tous les circuits avant de tirer une conclusion trop hâtive.
A+
-
Bonjour.
Ce qu'il te faut c'est une bible imprimée par le meilleur éditeur en la matière :
(http://img1.uplood.fr/mamu/s4pu_dscf4102.small.jpg) (http://img1.uplood.fr/mamu/m312_dscf4102.jpg)
C'est un document papier qui rassemble tous les TTL produits par cette marque, il y a toutes les informations dont tu as besoin.
Tu peux en trouver sur le site d'enchères mondialement connu.
Préfères une édition des années 80..85 à une édition plus vieille : ces dernières ont l'épaisseur d'un dictionnaire car elles sont moins condensées et il y a moins de type de boîtiers, surtout ceux numérotés à partir de 200 comme le 74244.
Celle que j'ai prise en photo est une édition de 80 et elle pèse bien son poids ...
A+
J'ai une dizaine de docs comme ça aussi, de plusieurs fabricants, pour plusieurs types de composants, je peux jeter un oeil dedans si tu veux...
Et encore bravo pour ce topic de fou ^-^ ^-^
-
Bonsoir.
Mise à jour de ce WIP d'endoscopie du CPU Cinematronic.
Samedi et dimanche matin, j'ai fait un gros boulot sur la documentation.
Vu qu'elle est assez peu lisible par endroit, j'ai repris le schéma Cinematronics et j'ai ajouté pour la plupart des composants :
- la référence du composant sur mon PCB SEGA
- les n° des broches chaque fois que c'était illisible
- des annotations personnelles (d'ouske vient un signal, ouskiva, keskecé, etc...)
Y'a pas à dire, le "CCPU" (Cinematronic CPU) est une sacrée usine à gaz.
Il a été conçu par le sieur Larry Rosenthal, diplômé du MIT (http://web.mit.edu/)... Quelques infos sur cette page (http://cinematronics.org/index_files/Page350.htm) pour les curieux.
Déjà, j'ai compris un premier truc en regardant le code de l'émulateur du CCPU dans Mame.
Pour ceux qui ont les sources de Mame, regardez dans le fichier src/emu/cpu/ccpu/ccpu.c.
Il existe une instruction assembleur appelée "CST" (opcode $7F $F7) qui reset le watchdog. Sans cette instruction exécutée périodiquement, le CCPU est automatiquement reseté.
Il suffit au développeur du jeu de placer cette instruction à la fin de la boucle principale du jeu et le tour est joué.
Si le jeu ne démarre pas ou plante, alors le watchdog fera son boulot.
J'ai décidé, dimanche après-midi, d'arrêter de me peler les glaouis dans mon sous-sol et d'avoir les extrémitées engourdies.
J'ai temporairement déplacé mon banc de test de PCB dans mon bureau, chauffé :
(http://img1.uplood.fr/free/ghk5_20100110_210254_6860_img.jpg) (http://www.uplood.fr)
Je peux bosser assis confortablement, j'ai toute la doc que je veux sous la main ou à portée de clic, et j'ai chaud !
Mes investigations ont continué en marche arrière sur le watchdog du PCB, pour être sûr qu'il n'est pas lui-même en panne et reset anormalement le PCB.
J'ai contrôlé à l'oscillo toutes les portes logiques impliquées dans le watchdog et je n'ai rien trouvé d'anormal.
Je n'ai pas cherché plus loin la raison d'aboiement du watchdog, car je sais maintenant que c'est une instruction assembleur non périodiquement exécutée qui en est la raison.
J'ai ensuite décidé de jetter un coup d'oeil d'oscillo sur les 3 puces de RAM.
Je me suis rendu compte qu'elles étaient assez peu sollicitées : leur bus d'adresse ne bouge presque pas.
J'ai alors essayé de comparer les données en entrée et les données en sortie, vue que les broches sont séparées.
C'est un peu blairométrique, mais je me suis dis que si je voyais un signal en entrée toujours à 0 ou à 1 ou bagotter (http://fr.wiktionary.org/wiki/bagotter) et que la sortie correspondante n'avait jamais la même tête, alors peut-être que je devrais gratter un peu plus là.
Finalement, j'ai découvert que 3 des bits de donnée en entrée de la RAM avaient un niveau TTL fixe.
Je trouve que c'est assez peu plausible pour être honnête.
(http://img1.uplood.fr/free/g84d_ram.png) (http://www.uplood.fr)
Extrait de la page 25
En rouge, ce sont les 3 entrées des puces de RAM qui ne bagottent pas K1, K3 et K10.
C'est peut-être un hasard, mais je n'y crois pas.
Entouré en vert, on voit 2 petites inscriptions "(2)". J'ai heureusement compris depuis un moment ce qu'elles signifient.
Elles indiquent que le composant qui génère ces signaux est situé page 2 des schémas.
Croyez moi, cette modeste information est particulièrement précieuse pour s'y retrouver.
Voici IC016 ("N2" chez Cinematronics), un des 3 composants qui génère le bus "K" dont 3 bits sont louches.
Celui-là est chargé de générer K0 à K3 :
(http://img1.uplood.fr/free/3itr_257.png) (http://www.uplood.fr)
Autre extrait de la page 25
Le composant en question est un 74LS257. Grosso modo, c'est un switch qui permet soit d'avoir K=A ou K=B selon la broche SELECT (entourée en bleu).
J'ai vérifié que cette broche SELECT est en permanance à l'état haut.
A priori, il semble que ce soit normal vu le fonctionnement dégradé du PCB actuellement.
La broche 15, entourée en vert, est la broche "/OUTPUT_CONTROL".
Il faut qu'elle soit à l'état bas pour que la sortie du composant soit valide. C'est bien le cas.
D'après le datasheet du composant, dans ces conditions (SELECT=1, /OUTPUT_CONTROL=0), je devrais avoir K1 (broche 9) = PA1 (broche 10).
Or voici ce que mon oscillo renifle :
(http://img1.uplood.fr/free/z3vz_broche_10.png) (http://www.uplood.fr) Broche 10 : PA1 | (http://img1.uplood.fr/free/2m00_broche_09.png) (http://www.uplood.fr) Broche 9 : K1 |
| |
:-)=
Il y a plusieurs conclusions possibles, qui ne sont pas mutuellement exclusives :
- le composant en question est en panne
- un autre composant, qui utilise le signal K1, est en panne ; ce composant impose un niveau haut sur le signal K1 (et tant pis pour IC016 qui a mal aux transistors)
À suivre :
- dessoudage du composant IC16 pour test individuel.
- pendant que IC16 est absent, mise en place d'une résistance de "pull-down" entre la masse et la broche 9 de l'emplacement de IC16 ; si un composant grillé impose un niveau sur ce signal, je trouverai un état haut malgré ma résistance
-
Bonjour.
Déjà, j'ai compris un premier truc en regardant le code de l'émulateur du CCPU dans Mame.
Pour ceux qui ont les sources de Mame, regardez dans le fichier src/emu/cpu/ccpu/ccpu.c.
Il existe une instruction assembleur appelée "CST" (opcode $7F) qui reset le watchdog. Sans cette instruction exécutée périodiquement, le CCPU est automatiquement reseté.
Il suffit au développeur du jeu de placer cette instruction à la fin de la boucle principale du jeu et le tour est joué.
Si le jeu ne démarre pas ou plante, alors le watchdog fera son boulot.
Cette information à piqué ma curiosité et j'ai donc sollicité Google avec les mots clefs suivants "ccpu mame cinematronics". Quelle ne fut pas ma surprise de voir que ce CCPU était parfaitement connu et bien doccumenté, il y a tout ce qu'il faut et dont on aurait pu rêver :
- Un assembleur pour ceux qui voudraient créer un jeu ou modifier un existant !
- Un désassembleur pour traduire en instructions intelligibles les lignes de code des ROM's
- Un simulateur ...
Le lien miraculeux : http://zonn.com/Cinematronics/
Les liens annexes :- The Cinematronics CPU - Programmer's Reference Guide : http://zonn.com/Cinematronics/files/CineRef.pdf
- The Cinematronics Applications Programming Manual : http://zonn.com/Cinematronics/files/CineApplPgmMan.pdf
Pour exemple : le synoptique du CCPU
(http://img1.uplood.fr/mamu/t9jk_ccpu.small.gif) (http://img1.uplood.fr/mamu/w3gk_ccpu.gif)
Tous ces documents devraient aider à la compréhension du fonctionnement du CCPU et permettre de faire une recherche de la ou des panne(s) qui soit un peu moins à l'aveuglette.
Un homme averti en vaut deux !
A+
-
Bonsoir.
Voici une mise à jour de ce WIP.
Suite à ce message (http://www.gamoover.net/Forums/index.php?topic=20677.msg298991#msg298991) de gc339, j'ai récupéré les documents cités et je les ai parcourus.
Pour un CPU implémenté en portes TTL, les possibilités sont certes modestes, mais quand même assez puissantes.
La compréhension des possibilités du CPU a facilité celle du schéma électronique.
Ainsi je vois dans les grandes lignes à quoi servent certains signaux, la raison de l'agencement de certains composants, etc...
Depuis la dernière mise à jour, je me suis inscrit sur une liste de diffusion dédiée aux jeux d'arcade vectoriels : vectorlist (http://www.vectorlist.org/).
Respectant les règles élémentaires de courtoisie, je me suis présenté et j'ai expliqué que j'étais en train de dépanner un PCB SEGA qui implémente un CPU Cinematronics.
Des gens très sympas m'ont acceuilli.
Leur compétence technique sur les CCPU est inimaginable.
L'une des personnes vend (je pense à titre privé) :
- une copie de l'Exorciser (http://www.biltronix.com/cinexor.html) Cinematronics ; c'est un outil dédié au dépannage des CCPU qui fonctionne avec un appareil de mesure un peu particulier qui est un analyseur de signature (http://prc68.com/I/HP5004.shtml) ; le principe est d'injecter des signaux précis à des endroits précis sur le PCB et de regarder le résultat à certains autres endroits avec l'analyseur de signature
- des puces de remplacement (http://www.biltronix.com/CCPU_Custom_Chip_Replacements.html) pour les PROMs du CCPU
Une autre personne a répondu aussi à mes questions de manière extrêment précise et m'a conseillé pour la suite de mon dépannage.
Il s'agit de Mark SHOSTAK.
Cette personne travaille chez CineLabs (http://www.cinelabs.com/), une société spécialisée dans... le dépannage des cartes à base de CCPU (entre autres) !
On m'a proposé de dépanner ma carte, mais j'ai décliné cette offre pour le moment, préférant le faire moi-même.
La personne de CineLabs a été très surprise de voir un CCPU sur un PCB SEGA.
J'ai donné le lien vers ce WIP, même si je pense que la langue restera un obstacle.
Il a été constaté sur les photos que mon PCB SEGA ne dispose pas des emplacements prévus par Cinematronics pour la mise en oeuvre d'un dépannage avec l'Exorciser.
On se demande donc comment les techniciens SEGA pouvaient bien faire pour dépanner ces cartes...
Les photos ont permis aussi de voir à quoi ressemble la borne SEGA.
Je reprends l'endoscopie du CCPU...
La dernière fois, j'avais identifié un problème majeur au niveau du bus "K", où 3 de ses bits étaient mauvais.
J'ai fait l'hypothèse que c'était la puce de RAM qui imposait l'état du signal via l'une de ses broches d'entrées.
J'ai donc dessoudé ce composant :
(http://img1.uplood.fr/free/ktht_20100111_205952_6873_img.jpg) (http://www.uplood.fr)
Notez que j'ai collé sur le PCB plein de petites étiquettes afin de retrouver instantanément un composant à partir de sa référence sur le schéma Cinematronics.
Ensuite, j'ai mis un support à la place, pour pouvoir remettre et retirer le composant à ma guise.
Problème : ce composant a un écartement entre ses 2 rangées de broches de 0,4 pouces, ce qui est assez peu courant (0,3 pouces est largement plus courant) :
(http://img1.uplood.fr/free/bu3u_20100111_231736_6875_img.jpg) (http://www.uplood.fr)
N'ayant que des supports de 0,3 ou 0,6 pouces de large, j'ai utilisé le système D...
Déjà, il faut 2 × 22 = 44 broches, ce que je n'ai pas.
Donc, je prends un support de 14 broches et un autre de 8 :
(http://img1.uplood.fr/free/isrq_20100111_231818_6876_img.jpg) (http://www.uplood.fr)
Puis je sépare les rangées avec une pince coupante :
(http://img1.uplood.fr/free/uln7_20100111_231840_6877_img.jpg) (http://www.uplood.fr)
Pour pouvoir tout souder tranquillement, je joue aux Légos avec d'autres supports.
Les autres supports apportent un maintient mécanique et le bon écartement :
(http://img1.uplood.fr/free/9mua_20100111_232112_6878_img.jpg) (http://www.uplood.fr)
Et voilà :
(http://img1.uplood.fr/free/eo0n_20100111_232944_6879_img.jpg) (http://www.uplood.fr)
Ensuite, je refais la mesure, avec le composant absent.
Si c'était lui qui imposait le niveau haut, son absence doit permettre de retrouver un signal normal.
Finalement, le problème que j'avais observé est toujours présent.
Je décide donc de tester le composant chargé de générer les bits malades.
Il s'agit de N2, soit IC16.
Je le dessoude :
(http://img1.uplood.fr/free/7vx5_20100111_212056_6874_img.jpg) (http://www.uplood.fr)
Puis je soude un support et replace le composant sur le support.
Je plie légèrement la broche de sortie que je pense être malade, de sorte à l'isoler du reste du circuit.
(http://img1.uplood.fr/free/q0up_20100112_223100_6881_img.jpg) (http://www.uplood.fr)
Après test, il apparaît bien que le composant est malade.
Il a 2 sorties qui restent en permanance à l'état haut alors qu'elles devraient bagoter.
J'ai 2 de ces composants sur les 3 installés qui ont un problème.
A chaque fois, j'ai vérifié en isolant la broche (méthode du pliage) et en vérifiant son niveau.
J'ai vérifié que le signal sur le PCB était à un niveau "non positionné", soit environ 2,5 V. Pour moi, aucune entrée d'un autre circuit ne "tire" ce signal anormalement vers la masse ou vers VCC.
Ce matin, le crémier m'a vendu 2 composants neufs que j'ai mis sur les supports soudés la veille :
(http://img1.uplood.fr/free/actc_20100112_223918_6882_img.jpg) (http://www.uplood.fr)
Après mise en route et test, je constate qu'il n'y toujours pas de commande sur les bus X et Y qui communiquent avec l'écran.
Je jette un coup d'oeil sur le reset, et effectivement, le chien de garde continue d'aboyer.
Le CCPU est toujours réseté périodiquement.
Il y a donc une autre panne et je m'en doutais un peu.
Je reprends donc les investigations autour des puces de RAM L14, M14 et N14.
Cette fois, je me rends compte qu'une des sorties de L14 est complètement à l'ouest.
Elle bagotte correctement puis me fait un beau signal analogique particulièrement esthétique, mais pas du tout TTL...
Il s'agit de la broche n°16 qui correspond à la sortie du 4e bit de données (signal "W3" sur le schéma Cinematronics).
Malheureusement, j'ai fait une fausse manip avec la sonde de l'oscillo.
Tel le soldat Pithivier dans la 7e Compagnie, « j'ai glissé chef ! »...
La sonde a glissé et a fait contact entre la broche 16 (O3) et sa voisine la broche 17 qui est reliée à VCC.
Bilan : fini le beau signal analogique totalement anormal ; j'ai maintenant un signal TTL qui bagote comme les autres.
Le PCB ne fonctionne ni mieux ni moins bien suite à ça, mais je pense avoir quand même grillé un peu plus le composant.
Voici la scène reconstituée :
(http://img1.uplood.fr/free/en6u_20100112_231630_6884_img.jpg) (http://www.uplood.fr)
Je pense que je vais passer commande chez Arcade Chips (http://www.arcadechips.com/).
Les puces de RAM en question sont disponibles (http://www.arcadechips.com/product_info.php?products_id=41) pour 1,5 dollar pièce.
Je vais en profiter pour commander aussi quelques composants spécifiques pour l'écran X-Y.
À suivre...
-
je suis toujours subjugé comme tu te lance la dedans...
on dirai Gandalf qui fait du Base Jumping dans une Moria de composants, dans un abime électronique... ^-^
je suis vraiment fan de ce topic, même si je comprends que pouic :o
il faut quand même que je pose une question:
le modèle de cinématronic est bien antérieur à celui de sega? on peu donc penser (raisonablement) que celui de sega est basé sur le modèle cinématronics. l'architecture et la présentation des composants est quasi la même, alors pourquoi CNM (j'abrège cinématronics) à laissé une porte de service sur sa carte et pas Sega ?
n'empèche que si ça continue, le plus simple serai de "ressortir" toutes les roms de mame, de remmettre TOUTES les puces à neuf avec l'aide d'un prog d'eprom, de tout ressouder et de tester. ça eviterai de t'arracher les cheveux dans cette architecture en boucle qui rend toute analyse quasi impossible... :-X
ce serai possible et pas trop onéreux ?? :-[ du coup après la panne ne pourrai venir plus que d'une piste ou d'un condo / résistance... :-\
-
le modèle de cinématronic est bien antérieur à celui de sega? on peu donc penser (raisonablement) que celui de sega est basé sur le modèle cinématronics. l'architecture et la présentation des composants est quasi la même, alors pourquoi CNM (j'abrège cinématronics) à laissé une porte de service sur sa carte et pas Sega ?
Cette carte réalise un CPU. Le terme adéquat est l'anglicisme "implémenter (http://fr.wikipedia.org/wiki/Mise_en_œuvre)". Le jeu qui est dedans s'appelle Space Wars.
Ce CPU est une architecture électronique dédiée aux jeux vectoriels.
Le schéma du CPU et le jeu Space Wars ont été conçus par une personne nommée Larry Rosenthal.
Rosenthal a vendu une licence d'exploitation à Cinematronics, mais a conservé la propriété intellectuelle.
Cette carte a pris le nom de "CCPU" (Cinematronics CPU) bienque Cinematronics n'en soit pas le concepteur ni le propriétaire intellectuel.
Il y a 2 possibilités :
- Rosenthal a vendu une license aussi à SEGA
- SEGA a acheté un droit à Cinematronics
Dans les 2 cas, SEGA a certainement récupéré l'industrialisation (production de série), donc aucune raison d'avoir une implantation différente.
Je pense que SEGA a fait une modif mineure au niveau des PROMs de jeu certainement pour adresser soit un problème de coût de composants, soit un problème d'approvisionnement.
SEGA n'a pas jugé utile de prévoir les emplacements pour la connection de l'Exorciser.
Peut-être n'ont ils pas acheté la licence d'utilisation de l'outil, peut-être qu'ils disposent de leur propres outils (planche à clous par exemple).
n'empèche que si ça continue, le plus simple serai de "ressortir" toutes les roms de mame, de remmettre TOUTES les puces à neuf avec l'aide d'un prog d'eprom, de tout ressouder et de tester. ça eviterai de t'arracher les cheveux dans cette architecture en boucle qui rend toute analyse quasi impossible... :-X
ce serai possible et pas trop onéreux ?? :-[ du coup après la panne ne pourrai venir plus que d'une piste ou d'un condo / résistance... :-\
Une personne ayant une très grande expérience dans le dépannage des cartes CCPU m'a indiqué que si le contenu d'une PROM était bon, alors il y avait 99,9% de chances que la PROM fonctionne.
En 15 ans de dépannage de CCPU, il n'a jamais vu une PROM déconner alors que son contenu était bon.
Pour infos, les PROMs présentes sur le PCB ne sont pas des EPROM.
Les PROMs ne sont programmables qu'une et une seule fois et ne peuvent pas être effacées.
Lorsqu'elle est vierge, elle comporte tout une structure de micros-fusibles que l'on vient détruire lors de la programmation. C'est donc irrémédiable.
Je ne m'arrache pas trop les cheveux. J'ai trouvé une méthodologie et une technique de mesure qui semblent bien fonctionner :
- j'ai trouvé rapidement les 2 pannes des composants IC16 et IC20
- j'ai trouvé rapidement la panne sur IC145
Mon problème aujourd'hui est un problème de disponibilité de composant pour remplacer IC145.
C'est un composant de RAM de la fin des années 70 / début des années 80.
Je dois le commander dans une boutique aux États-Unis.
J'attends lundi prochain pour passer commande. J'aurai peut-être des composants supplémentaires à commander pour le PCB Space Invaders de ZBP.
Je profite de ce message pour une petite mise à jour du WIP.
J'ai re-testé à l'oscillo la sortie malade de la puce de RAM IC145.
À ma grande surprise, le beau signal analogique, preuve de la panne, est réapparu.
Cette fois, j'ai pu faire 2 captures d'écrans, à des fréquences de balayage différentes :
(http://img1.uplood.fr/free/leol_broche_16_1us.png) (http://www.uplood.fr) (http://img1.uplood.fr/free/s05q_broche_16_500ns.png) (http://www.uplood.fr)
IC145 (L14), broche 16 (Out4)
Normalement sur cette broche, je dois avoir un signal TTL, c'est a dire dont la tension est soit d'environ 0 V (conventionnellement appelé "0"), soit environ 4 à 5 V (conventionnellement appelé "1").
Or je vois un signal qui fait un peut n'imp...
J'ai fait le test de plier la broche suspecte avant de replacer le composant sur son support.
Là, j'ai un signal propre sur la broche isolée.
Du coup je me dis que c'est un autre composant qui est malade et qui vient polluer le signal.
Mais pourtant, si je mesure le signal dans ces circonstances, je le trouve à une valeur intermédiaire, signe qu'aucun circuit ne tente de lui imposer une valeur.
Je pense que lorsque le CCPU fonctionne avec la broche de RAM isolée, il doit planter encore plus tôt et je n'ai pas la même signature.
-
Bonjour.
Voici une petite mise à jour de ce WIP, en attendant zebassprophet qui est sur la route pour arriver chez moi.
Des personnes de la liste de diffusion vectorlist m'ont demandé des photos du panel de la borne.
Voici :
(http://img1.uplood.fr/free/hav0_20100111_081906_6861_img.jpg) (http://www.uplood.fr)
Panel de la borne
(http://img1.uplood.fr/free/d5sv_20100111_081922_6862_img.jpg) (http://www.uplood.fr)
Il existe un panel US dessous...
(http://img1.uplood.fr/free/e5la_20100111_082024_6863_img.jpg) (http://www.uplood.fr)
Vue de dessous, joueur de gauche
(http://img1.uplood.fr/free/5slc_20100111_082400_6868_img.jpg) (http://www.uplood.fr)
Vue de dessous, joueur de droite
On constate qu'il y a de nombreux emplacements vides dans le panel US pour tous les boutons normalement prévus pour ce jeu.
SEGA, en recouvrant le panel US par un panel FR a décidé de masquer certains emplacements pour des boutons.
Il y a donc de nombreuses options de jeu qui sont innaccessibles. :-((
-
Bonjour encore.
Voici une mise à jour supplémentaire de ce WIP.
Merci à nicolas-le-jardinier qui m'a scanné et envoyé par mail les pages de la doc Cinematronic que je lui avais demandées.
Le scan est de qualité, ainsi j'ai accès à la doc avec la qualité d'origine.
Par endroit le schéma est lisible, à d'autres non. Mais au moins le problème n'est plus dû au document numérisé.
Ce scan me servira pour lire certaines parties du schéma écrites en tout petit, souvent illisibles sur le 1er document que j'ai récupéré.
Il faut savoir que le document original est souvent une photocopie de photocopie, réduite qui plus est.
Elle ne peut donc pas avoir la précision du schéma original.
J'ai décidé de tester le contenu des PROMs du PCB :
- les 6 PROMs qui implémentent le micro-ordonnanceur (http://fr.wikipedia.org/wiki/Catégorie:Ordonnanceur) du CCPU
- les 8 PROMs qui contiennent le code assembleur du jeu "Space Wars"
Pour ça, j'ai dû dessouder ces 14 circuits intégrés...
De plus, je voulais aussi faire quelques manip avec les puces de RAM. j'ai donc dessoudé les 2 dernières puces (sur les 3 présentes en tout).
Cette modeste photo est en fait le résultat de plusieurs heures de travail sur le PCB :
(http://img1.uplood.fr/free/jb1s_20100115_234710_6894_img.jpg) (http://www.uplood.fr)
Composants dessoudés
- à gauche : les 2 dernières puces de RAM maintenant dessoudées
- au centre : les 8 PROMs qui contiennent au total les 4096 octets du code assembleur du jeu
- à droite : 5 des 6 PROMs qui implémentent les signaux internes du micro-ordonnanceur du CCPU (la 6e était déjà dessoudée)
En regardant la référence des PROM SEGA ("PR-03", etc...), je me demandais si SEGA utilisait des numéros uniques pour toute PROM/EPROM de jeu.
Par exemple, "EPR-7457" est une référence à priori unique, présente sur les PCB Quartet.
Si c'est bien ça, j'ai sur ce PCB la 3e référence de ROM SEGA. =:))
Pas forcément la 3e ROM de l'histoire de SEGA, mais peut-être la 3e ROM depuis que SEGA a adopté ce système de numérotation.
Voici l'emplacement des PROMs du jeu :
(http://img1.uplood.fr/free/trb6_20100115_234526_6892_img.jpg) (http://www.uplood.fr)
Il manque 2 pastilles de cuivre sur IC84. C'est sans conséquence pour l'électronique.
Je ne pense pas être le seul responsable de cet incident.
Les PROMs avaient des traces évidentes de soudure à la main.
Probablement qu'elles ont été dessoudées déjà une première fois, et que la personne ayant fait ce travail n'a pas consacré la même minutie que moi dans cette opération.
Malgré tout le soin observé durant cette intervention, 2 pastilles se sont arrachées.
Voici le PCB avec des supports, et les composants dessoudés installés respectivement à leur emplacement d'origine :
(http://img1.uplood.fr/free/cjlm_20100116_144336_6898_img.jpg) (http://www.uplood.fr)
Composants sur supports
Au début, je ne voulais pas trop mettre de supports pour garder le PCB au plus près de son état d'origine.
Je l'ai fait à contre-coeur, car je dois absolument vérifier le contenu des PROMs et pouvoir en changer une facilement le cas échéant.
Mon modeste stock de supports divers a pris une claque. Il reprendra son niveau standard dès ma prochaine visite chez le crémier ou ma prochaine commande chez Électronique Diffusion.
Un essai rapide avec vérifications à l'oscillo à certains point clés m'a confirmé que cette opération de dessoudage / supports / remise en place n'a pas provoqué de panne supplémentaire.
À suivre :
- dump du contenu des PROMs, comparaison avec le dump récupéré chez Andy's Arcade (http://andysarcade.de/spacewars.html)
- commande chez Arcade Chips (http://www.arcadechips.com/) ; j'attends de mettre les pattes dans le PCB de SI de zebassprophet pour compléter ma commande et la transmettre
-
je redéterre ce topic que j'apprécie tant ):))s=
alors ? comment va la Space Ship? :D
-
Bonjour.
Le WIP de réparation de cette borne continue petit à petit.
J'ai dumpé toutes les PROMs de 32 × 8 bits :
(http://img1.uplood.fr/free/thumbnails/ki4o_dump.png) (http://www.uplood.fr/visu.php?url=http://img1.uplood.fr/free/ki4o_dump.png)
Contenu des PROM 32 × 8 bits
Je n'ai scanné que le recto de mon document. Il y a un 5e dump au verso.
Je me suis rendu compte qu'un des bits d'une EPROM n'avait pas les valeurs attendues dans 16 cas sur 32 possibles.
Ma PROM sort un "0" logique (état bas) alors que d'après le dump trouvé sur le net, je devrais avoir pour ces 16 cas un "1" logique (état haut).
Les valeurs louches dans mon document ont un coin noirci.
J'ai d'abors crû à un problème de l'EPROM.
Mais depuis hier soir cette nuit, je ne suis plus aussi sûr.
Peut-être s'agit-il plutot d'une spécificité propre à mon PB SEGA, car cette différence de contenu de PROM est indirectement liée à un écart de conception électronique par rapport au schéma "de référence" qui est le schéma Cinematronic.
Voir plus bas dans ce même message quel est cet écart.
Le dump "manuel" des PROMs s'arrête là.
Pour toutes les autres, il me faudra un système "semi-automatique" où c'est un compteur TTL qui génère le bus d'adresse.
J'incrémenterai le compteur avec un simple montage flip-flop.
Je suis toujours en attente de mon programmateur d'EPROM acheté en Chine via un site d'enchères mondialement connu.
C'est le moment de placer une de mes contrepétries favorites : "il arrive à pied par la Chine". :D
La suite du WIP, c'est un débuggage pas à pas de l'électronique du CCPU.
L'idée est la suivante :
- tout le PCB est cadencé par un unique oscillateur à environ 20 MHz
- je désactive cet oscillateur le plus proprement possible
- je mets en place un bouton poussoir qui va permettre de manuellement générer le signal de CLOCK à la place de l'oscillateur
- pour des raisons de rebond, le signal électronique du bouton poussoir serait moche et génererait plusieurs CLOCK pour un unique appui
- j'installe un système anti-rebond (flip-flop) entre le bouton poussoir et l'entrée CLOCK du PCB
C'est un peu comme un film qui serait en mode pause.
Mon bouton, c'est la télécommande qui me permet d'avancer image par image au rythme où je veux.
J'ai ainsi le temps de faire toutes les investigations que je veux avant de passer à l'étape d'après.
La réalisation de l'anti-rebond est identique à ce schéma (http://www.sonelec-musique.com/electronique_bases_bascule_on_off.html) (voir "Bascule à CD4011") sauf que je dois utiliser un 74LS00 (techno TTL) qui est l'équivallent du CD4011 (techno CMOS).
Voici le 1er étage de l'oscillateur du PCB :
(http://img1.uplood.fr/free/gyhn_20100122_222046_6906_img.jpg) (http://www.uplood.fr)
1er étage de l'oscillateur
Il est constitué d'un quartz, d'un condensateur, de 2 résistances et d'un boîtier 74LS04 (6 portes inverseuses).
Je pensais, tel un bourrin de base, dessouder le 74LS04, mais ce n'est pas nécessaire. Il suffit de dessouder le quartz et une résistance :
(http://img1.uplood.fr/free/erir_20100122_223620_6907_img.jpg) (http://www.uplood.fr)
Quartz et résistance retirés
Ensuite je prépare mon 74LS00 pour une installation par-dessus un circuit déjà soudé.
C'est ce qu'on appelle dans le jargon électronique une "verrue".
(http://img1.uplood.fr/free/1355_20100122_223728_6908_img.jpg) (http://www.uplood.fr)
J'ai mis à l'horizontale toutes les broches sauf la 7 (GND) et la 14 (VCC).
En le placant au-dessus d'un boîtier TTL à 14 broches pas trop exotique, les broches 7 et 14 vont tomber pile en face de ce que je veux.
Ensuite, il me reste à cabler le bouton poussoir et le flip-flop.
(http://img1.uplood.fr/free/4i33_20100122_231216_6909_img.jpg) (http://www.uplood.fr)
(http://img1.uplood.fr/free/efz8_20100122_231314_6911_img.jpg) (http://www.uplood.fr)
J'ai maintenant un PCB qui ne peut fonctionner qu'en pas à pas.
Dès la mise sous tension, il... ne fait rien.
Il est simplement figé, faute de signal d'horloge.
C'est mon doigt qui va remplacer les vibrations d'un cristal de quartz (http://fr.wikipedia.org/wiki/Quartz_(électronique)).
Maintenant que mon PCB ne sait faire que du pas à pas, l'idée est la suivante :
- alimenter le PCB
- regarder la 1ère instruction qui est lue dans la ROM du jeu
- regarder dans le guide de référence du CCPU que fait cette instruction
- fliquer son exécution par le PCB
- si c'est par exemple le chargement de la constante 0xF4B dans l'accumulateur A, je dois voir cette valeur s'écrire dans les 3 boîtiers latch qui correspondent à l'accumulateur (M4/IC37, P4/IC39 et S4/IC41 en l'occurence)
C'est donc là que j'ai regardé en détail l'agencement des 8 PROMs qui contiennent le code du jeu.
C'est là l'une des principales différences avec le schéma de référence :
- Cinematronics utilise 4 boîtiers EPROM 2616, chaque boîtier fait 1024 × 8 bits
- SEGA utilise 8 boîtiers PROM MB7054 ou 7643, chaque boîtier fait 1024 × 4 bits
(http://img1.uplood.fr/free/klmq_schema_proms.png) (http://www.uplood.fr)
Correspondance EPROMs Cinematronics / PROMs SEGA
SEGA a associé les boitiers 4 bits deux par deux pour faire l'équivallent d'un boîtier 8 bits.
Le bit A11 (à gauche sur le schéma) passe bien par une porte spéciale (boîtier TI SN74265) qui assure 2 sorties complémentaires et parfaitement synchrones. Ces 2 sorties sélectionnent les boîtiers PROMs quatre par quatre comme sur mon schéma.
Attention : cette entrée de sélection est active à l'état bas :
- A11=0 va sélectionner PR-07, PR-08, PR-03 et PR-04
- A11=1 va sélectionner PR-09, PR-10, PR-05 et PR-06
Par contrel la bascule JK (en bas à droite) est absente du PCB SEGA, les 2e entrées /CS des 8 boîtiers PROMs sont en permanance à l'état bas.
Ce qui est bizarre, c'est que d'après le schéma original Cinematronic, si la bascule JK ne sélectionne pas la bonne paire de boîtiers EPROM (U7+R7 ou bien T7+P7), alors selon la valeur du bit A11, on risque de lire "dans le vide" (aucun boîtier sélectionné) :
- hypothèse : la sélection de page (bascule JK) sélectionne les boîtiers U7+R7
- une adresse 0xxxxxxxxxxx (A11=0) est lue : A11 va sélectionner T7+P7
- in fine, aucun boîtier n'est sélectionné et la lecture se fait dans le vide...
Bizarre...
La conception du CCPU permet d'avoir plusieurs "pages" de code en ROM. Peut-être que mon schéma est incomplet ?
Pour en revenir à mon PCB SEGA, là je n'ai pas de doute : la sélection de page de ROM n'existe pas, et c'est seul le bit A11 qui choisit la quadrette de boîtiers PROM.
Grâce à nicolas-le-jardinier qui m'a scanné son document Cinematronic, j'ai le contenu du code du jeu (sous forme hexadécimale) facilement accessible :
(http://img1.uplood.fr/free/5stq_hexa.png) (http://www.uplood.fr)
Le jeu commence par le code machine "49 E7".
Un petit tour par le "Programmer's Reference Guide" du CCPU (voir ce message (http://www.gamoover.net/Forums/index.php?topic=20677.msg298991#msg298991) de gc339), et je sais que :
- 49 E7 = "LDJ #7E9", soit charger la constance 0x7E9 dans le registre "J"
(je n'ai pas réussi à trouvé où était stocké ce registre J sur le PCB...)
Par contre, dès la 1ère instruction, ça chie déja...
Au lieu de lire "49 E7", mon CCPU lit "09 E7".
En effet, j'ai découvert que le bit D2 de la PROM PR-08 semble malade.
Quand il veut passer à l'état haut, il se positionne à peine à 0,5 V...
Je dois investiguer si la PROM est en cause, ou si le signal est bouffé par un autre composant.
Du coup, le CCPU exécute :
- 09 E7 = "LDA #900" suivi de "ADD [ i]"
Je flique les boîtiers U11 et T11...
C'est bon, leur entrée SELECT est à l'état bas, ils laissent passer les boîtiers "pairs". Tout va bien.
Je flique le boîtier S13...
C'est bon, "on" l'active bien (/LDR passe à 0).
Je regarde sur le front montant de la CLOCK (j'appuie sur mon bouton)...
Et paf ! Sur le front montant de la clock, les sorties du latch changent, mais pas avec les données qu'on lui a présentées :
- les 4 bit de poid faible de S13 auraient dus être chargés avec "1001", soir "9" en hexa
- j'ai pas "1001" en sortie du latch...
Ben ça commence fort, ce mode pas à pas...
Ce n'est pas la bonne instruction qui est lue. :-((
L'instruction exécutée à la place ne l'est même pas correctement... :-((
A suivre :
- diagnostic pour PR-08 : malade ou signal bouffé par un autre composant ?
- diagnostic pour S13 : vraiment malade ?
Merci à gc339 pour ses conseils : j'aurais inutilement dessoudé le composant I2, inutilement utilisé 2 boutons poussoirs alors qu'un seul suffisait. <:)
-
Bonjour.
Je me suis rendu compte qu'un des bits d'une EPROM n'avait pas les valeurs attendues dans 16 cas sur 32 possibles.
Ma PROM sort un "0" logique (état bas) alors que d'après le dump trouvé sur le net, je devrais avoir pour ces 16 cas un "1" logique (état haut).
Les valeurs louches dans mon document ont un coin noirci.
J'ai d'abord crû à un problème de l'EPROM.
Mais depuis hier soir cette nuit, je ne suis plus aussi sûr.
Peut-être s'agit-il plutôt d'une spécificité propre à mon PB SEGA, car cette différence de contenu de PROM est indirectement liée à un écart de conception électronique par rapport au schéma "de référence" qui est le schéma Cinematronic.
Voir plus bas dans ce même message quel est cet écart.
Comme quoi il faut toujours se méfier, le jeu cloné n'est pas toujours une copie conforme
(http://img1.uplood.fr/free/efz8_20100122_231314_6911_img.jpg)
C'est mon doigt qui va remplacer les vibrations d'un cristal de quartz (http://fr.wikipedia.org/wiki/Quartz_(électronique)).
Il ne va pas faire que remplacer la vibration du quartz, il va aussi faire osciller dangereusement cet "échafaudage" à chaque appui sur le bouton poussoir, ce n'est pas très prudent ! Il eu mieux valu fixer le bouton poussoir sur une petite équerre métallique boulonnée dans un des trous de fixation du PCB (j'en ai ai au moins distingué deux sur les photos, un dans chaque angle, sur le bord opposé au connecteur).
-
Bonsoir.
je n'ai pas réussi à trouver où était stocké ce registre J sur le PCB...
2.3.5 The ‘J’ register
The CPU’s jump opcodes do not, in themselves, contain the destination addresses of the jumps. Instead all jumps jump to the address contained in the ‘J’ register, which must be loaded previous to the execution of a jump instruction.
Il ne faut pas faire une fixation sur la notice du "Space Wars" et ne pas hésiter à aller bouffer à tous les râteliers consulter les autres notices de jeux à base de CCPU.
Par exemple la notice du "Star Castle (http://www.outerworldarcade.com/arcade/cinematronics/manuals/Star_Castle_Manual.pdf)" est beaucoup plus prolifique à ce sujet :
- Selon la page 6-2 de cette notice, affichant le synoptique général, le registre baptisé "J" dans le "Programmer's Reference Guide (http://zonn.com/Cinematronics/files/CineRef.pdf)" du CCPU devrait être le registre "ADDRESS REGISTER" numéroté "16", le PC ou compteur ordinal devant être le registre "ADDRESS COUNTER" numéroté "15"
(http://img1.uplood.fr/mamu/amp2_6-8.small.gif) (http://img1.uplood.fr/mamu/i8vd_6-8.gif)
- La page 6.6 paragraphe 16 lève le doute : "This register is a latch used for temporary storage of an address which will be loaded into the program counter during a jump instruction".
(http://img1.uplood.fr/mamu/9n4t_6-4.small.gif) (http://img1.uplood.fr/mamu/4ikk_6-4.gif)
CPU BOARD page 6.3 + Page 6.4
| (http://img1.uplood.fr/mamu/9h0n_6-5.small.gif) (http://img1.uplood.fr/mamu/pam4_6-5.gif)
Page 6.5
| (http://img1.uplood.fr/mamu/29tw_6-6.small.gif) (http://img1.uplood.fr/mamu/t3xi_6-6.gif)
Page 6.6
| (http://img1.uplood.fr/mamu/0t1o_6-7.small.gif) (http://img1.uplood.fr/mamu/73bo_6-7.gif)
Page 6.7
|
- Et la page 6.7 énumère l'emplacement physique de chaque boîtier impliqué dans le bloc "16" du synoptique : P13 et R13.
Comme tous les circuits imprimés à base de CCPU Cinématronics sont pratiquement identiques quelque soit le jeu ou leur indice de version, il n'y a plus aucune difficulté à repérer ces boîtiers sur le schéma du "Space Wars" et à retrouver leurs emplacements sur le circuit imprimé Sega du "Space Ship".
-
t'es un grand bourrin f4brice, tu es reelement impressionant niveau electronique
( de même pour gc339 , mais j'ai plus eu l'occasion de voir le travail de F4b)
bonne chance pour la suite :)
-
t'es un grand bourrin f4brice, tu es reelement impressionant niveau electronique
( de même pour gc339 , mais j'ai plus eu l'occasion de voir le travail de F4b)
bonne chance pour la suite :)
Ils doivent avoir des chromosomes en commun avec ceux ci
(http://imgactus2.anakinweb.com/26355_bogdanoff.jpg)
-
Pour la doc exact c'est une photocopie, il est mentionné au debut du doc que le manuel n'est plus dispo, les premieres pages sont d'ailleurs tres artisanales, shéma de la machine preque a main levé...
En tout cas content que ca puisse te servir.
-
Bonjour.
Petite mise à jour vite faite...
J'ai passé ma soirée et ma matinée à faire faire du pas à pas au PCB SEGA.
A chaque fois, je regardais l'adresse lue en ROM, la donnée lu, et comment cette donnée est traitée.
J'ai un peu avancé dans le dépannage et beaucoup plus dans la compréhension du CCPU...
La notice du jeu "Star Castle" dont le lien (http://www.outerworldarcade.com/arcade/cinematronics/manuals/Star_Castle_Manual.pdf) a été donné par gc339 m'a bien aidé aussi.
Déjà, j'avais vu qu'au lieu de lire l'instruction "49 E7", mon PCB lisait "09 E7".
J'ai découvert qu'il s'agit d'un problème avec la PROM PR-10.
Normalement, c'est PR-8 qui est sélectionnée pour toutes les adresses de 0x000 à 0x7FE (1ère motiée des ROM) et PR-10 pour celles de 0x800 à 0x8FE (2e moitiée)
Mais PR-10 a un problème. C'est soit un problème de sélection, soit un problème sur au moins 1 de ses 4 bits de sortie.
Alors qu'elle n'est pas sélectionnée, elle impose une valeur par-dessus celle de PR-08.
J'ai viré temporairement PR-10 (mon CCPU est loin d'être en état d'atteindre le code situé en 0x800).
Maintenant, il lit bien l'instruction "49 E7" comme prévu.
(http://img1.uplood.fr/free/aiht_20100123_224430_6913_img.jpg) (http://www.uplood.fr)
Broche 12 de PR-10 isolée, celle de PR-08 peut à nouveau s'exprimer
Je verrai plus tard ce qu'il en est exactement de PR-10 :
- /CS0 ne répond plus => problème de sélection => peut-être que je peux utiliser /CS1 ?
- un ou plusieurs bits de données est en permanence à l'état bas => problème de sortie => composant mort
Ceci pourra être investigué en-dehors du PCB sur ma plaquette de tests à trous.
Le débuggage du CCPU a donc pu continuer.
Maintenant qu'il lit la bonne donnée contenue dans les PROM, il peut l'exécuter :
"49 E7" = "LDJ #7E9" (charger la constante 0x7E9 dans le registre J).
Grâce à la doc Star Castel, je sais dans quels composant est stocké ce registre.
Il s'agit de P13 (registre à décalage bidirectionnel de 4 bits, mais utilisé ici comme un simple latch de 4 bits) et de R13 (gros latch velu de 8 bits).
Si tout va bien, je dois voir la valeur en question être écrite dans ces composants.
Sauf que hier soir, j'ai un peu abusé des datasheets, des schémas et de l'oscillo. Mes neuronnes ont fait un "motor trouble" et j'en étais resté à être persuadé que cette valeur "7E9" devait aller dans l'accumulateur "A", soit M4, P4 et S4 (c'était vrai tant que PR-10 mettait le bin'z et induisait d'erreur le CCPU, mais je l'ai virée).
Ce matin, à tête reposée, j'ai compris que je ne regardais pas au bon endroit...
Le débuggage va pouvoir continuer.
J'ai installé le 1er oeil de rat :
(http://img1.uplood.fr/free/09ra_20100124_141252_6917_img.jpg) (http://www.uplood.fr)
C'est une LED de 3 mm (obligatoirement rouge, sinon ce n'est plus un oeil de rat) qui reflète l'état de la clock du PCB.
J'ai préféré la commander par un petit transistor pour ne pas surcharger le boîtier 74265.
A suivre...
-
je n'ai qu'un mot ,impressionnant ^-^ ^-^ bon courage a toi <:)
-
Bonsoir.
Voici encore une mise à jour de ce WIP de dépannage de CCPU.
J'ai poursuivi l'étude du fonctionnement pas à pas du CCPU.
Mon but est de suivre au plus près le déroulement de l'exécution des instructions contenues dans les ROM du jeu.
Bien sûr il y a de quoi y passer un vie entière, mais je me limite aux premières instructions pour le moment.
Si un composant est malade, je dois pouvoir le détecter grâce à cette méthode.
Si une instruction ne fait pas intervenir un composant malade, alors son exécution se déroulera sans accroc telle un plan du célèbre colonel Hannibal Smith (http://fr.wikipedia.org/wiki/Agence_tous_risques#Le_Colonel_John_.C2.AB_Hannibal_.C2.BB_Smith).
J'ai donc dans l'idée, plus tard, de flasher mes propres EPROMs avec les instructions que je veux voir exécutées par le CCPU.
Le fait d'être en mode pas à pas me permettra d'utiliser des EPROMs de n'importe quelle vitesse.
Il y a une quarantaine d'instructions possibles, ce serait bien la poisse si toutes ont un problème.
Le CCPU charge dans un registre l'instruction courante à exécuter.
Vu qu'il est important de savoir quand ce registre est écrit, j'ai ajouté un 2e oeil de rat :
(http://img1.uplood.fr/free/yj2w_20100124_195818_6921_img.jpg) (http://www.uplood.fr)
Oeil de rat sur le signal "/LIR"
La LED matérialise le signal "/LIR" qui permet d'écrire dans le registre d'instruction.
Je suppose que ça veut dire "Load Instruction Register".
Quand ce signal est actif (état bas), le latch T13 mémorise, lors du prochain front montant de sa clock, la prochaine instruction à exécuter.
Si l'instruction comporte un 2e octet, alors ce 2e octet est traité dans le(s) cycle(s) suivant(s).
Voici tout ce que j'ai tracé pas à pas :
Hexa | Assembleur | Description | Statut | Commentaires |
49 E7 | LDJ #7E9 | Charger le registre J avec 0x7E9 | OK | J'ai vu "1001" être chargé dans P13 et "0111.1110" dans R13. |
8A | LDP #A | Sélection page RAM n°A | OK | J'ai vu "1010" être écrit dans H12 |
1B | INP B | Lecture entrée n°B (touche "0" du panel) | OK | La touche n'étant pas appuyée, la résistance de pull-up a fait son boulot ; "1" est apparu dans le bit de poid faible de l'accumulateur |
EC | LSL | Décalage logique accumulateur 1 bit vers la gauche | OK | Les 2 bits de poid faible de l'accumulateur sont devenus "10" |
EC | LSL | Décalage logique accumulateur 1 bit vers la gauche | OK | Les 3 bits de poid faible de l'accumulateur sont devenus "100" |
EC | LSL | Décalage logique accumulateur 1 bit vers la gauche | OK | Les 4 bits de poid faible de l'accumulateur sont devenus "1000" |
58 | JMP | Saut à l'adresse pointée par le registre J | KO | L'adresse était mauvaise ; le CCPU est parti en 0x7ED (au lieu de 0x7E9, soit 1 bit de différence comme par hasard) |
Mais diantre comment l'adresse du JMP (jump) peut-elle être mauvaise alors que j'ai vu (enfin, c'est plutot mon oscillo qui l'a vue) la bonne valeur être chargée dans P13/R13 ???
Quand j'ai examiné la valeur "1001" être écrite dans P13, j'avais remarqué que son 3e bit avait une tête patibulaire mais presque :
(http://img1.uplood.fr/free/6u1g_broche_13_avant.png) (http://www.uplood.fr)
bit 3 de P13 après chargement de l'adresse
1,2 V pour un état bas TTL, c'est vraiment louche.
Je ne pensais pas que ce pût être catastrophique, car je croyais que les entrées TTL voulaient au moins 3 V pour considérer un état "haut".
Finalement, rien de mieux que de se référer à une spécification technique. Au moins, on sait de quoi il est question :
(http://img1.uplood.fr/free/o319_ttl_levels.png) (http://www.uplood.fr)
Extrait de la spécification Fairchild (http://www.fairchildsemi.com/) du 74LS00
Il faut minimum 2,0 V pour qu'un signal soit considéré à l'état haut. Pas de souci avec ma valeur de 1,2 V.
Il faut maximum 0,8 V pour qu'un signal soit considéré à l'état bas. Bon, bin là c'est le drame...
Mon signal de 1,2 V n'est ni haut ni bas... Il n'a aucune valeur TTL...
En laissant le CCPU s'exécuter à peine plus loin, je me rends compte que ce bit foireux passe à l'état haut sur le front descendant du signal appliqué sur la broche 11 du composant :
(http://img1.uplood.fr/free/o11l_broche_13_apres.png) (http://www.uplood.fr)
Bit tout vilain qui fait déconner le CCPU
Là, c'est carrément répréhensible. La doc du composant indique que rien n'aurait dû se produire sur un front descendant.
Non seulement S0 et S1 étaient tous les deux à 0 (donc aucun changement sur les sorties) , mais le composant ne change d'état que sur les fronts montants :
(http://img1.uplood.fr/free/9soi_74ls194.png) (http://www.uplood.fr)
Extrait de la spec technique du 74LS194
Bon, bin voilà. J'ai un 74LS194 malade à changer... 8)
-
Très intéressant et didactique :-*
Ca me rappelle mes cours d'informatique à la fac (20 ans déjà... :'()
:D
-
Quelle débauche de talent pour trouver le composant à 3 francs 6 sous défectueux !
En termes de VS fighting, on pourrait dire que tu es vraiment cracké, f4brice
Ca me rappelle une histoire (légende urbaine ?) au début des années 80 ou même 70, un ordi est en panne, il faut le réparer. Plus tard, la société qui recoit la facture voit 1.000.000$ de dollars. Furax, le patron appelle les techniciens qui ont réparé la bécane et demandent une explication. En effet, quel composant a bien pu couter si cher ?
Le gars répond: 1$ de composant et 999.999$ pour trouver la panne.
-
F4brice le yoda de l'élec ^-^
(http://www.terminally-incoherent.com/blog/wp-content/uploads/2007/06/yoda.jpg)
-
Bonsoir.
Voici une mise à jour de plus concernant le dépannage de ma borne SEGA Space Ship.
Ce matin, sur le chemin du boulot, je me suis arrêté chez le crémier pour acheter un composant 74LS194.
J'ai dessoudé celui en place :
(http://img1.uplood.fr/free/xumi_20100125_191732_6922_img.jpg) (http://www.uplood.fr)
Le voici (en bas) à coté de son remplacant (en haut).
Le hasard a fait qu'ils soient du même constructeur (je pense que c'est Motorola) :
(http://img1.uplood.fr/free/coob_20100125_192640_6923_img.jpg) (http://www.uplood.fr)
Je ne suis pas sûr, mais si "8211" signie que le composant neuf a été fabriqué durant la 11e semaine de 1982, alors ce composant neuf n'est pas tout jeune : il aurait 28 ans !
Voici le nouveau composant installé sur le PCB :
(http://img1.uplood.fr/free/0p1t_20100125_234124_6939_img.jpg) (http://www.uplood.fr)
Là, j'ai à nouveau recommencé l'exécution pas à pas.
J'ai pu constater que le composant conserve maintenant correctement la valeur écrite.
Quand le "JMP" de la dernière fois est atteint, c'est bien la bonne adresse qui est utilisée, le CCPU cotinue l'exécution en 0x7E9 comme prévu.
Le changement de ce composant a donc corrigé une panne majeure du PCB.
Bien sûr, j'ignore s'il en reste d'autres....
J'ai continué l'exécution pas à pas du code présent dans les PROMs du jeu.
Tout semble fonctionner correctement. Le jeu initialise plusieurs variables en RAM.
C'est très logique de trouver ça, je pense que c'est la partie initialisation du jeu qui est comme ça.
Il reste de nombreuses instructions dont je n'ai pas pu vérifier le bon fonctionnement :
- tout ce qui touche au 2e accumulateur
- les comparaisons
- les soustractions, les multiplications
- ...
Je me suis penché sur la PROM "PR-10" que j'avais temporairement retirée car elle imposait un niveau logique sur le bus de données (au moins pour 1 bit) alors qu'elle n'était pas sélectionnée.
C'est en soit la preuve d'une panne sur ce composant.
Vu que c'est un composant programmé par SEGA et difficile à remplacer, je me suis dit que ça valait le coup de regarder de près son problème...
Ce composant est une PROM à fusibles de 1024 × 4 bits, référence HM-7643-5 du constructeur Harris (http://www.harris.com/).
Le temps d'accès est de 50 ns maxi, ce qui est très rapide.
Il dispose de 2 entrées de sélection, nommées "/CE1" (broche 8 ) et "/CE2" (broche 10).
Il faut que toutes les deux soient simultanément à l'état bas pour que le bus de donnée soit "actif". Sinon, il est dans un état "haute impédance", l'équivalent de "déconnecté".
SEGA, qui n'avait besoin que d'une unique broche de sélection a donc relié "/CE1" en permanence à la masse et n'utilise que "/CE2".
L'hypothèse que je veux vérifier est la suivante :
- la broche "/CE2" utilisée par SEGA est morte et ne contrôle plus rien
- la broche "/CE1" qui n'a jamais servi est peut-être encore opérationnelle et pourrait travailler à la place de "/CE2"
Je réalise donc un petit montage de test de la PROM sur ma plaque d'essais "à trous"...
(http://img1.uplood.fr/free/2ym8_20100125_220950_6925_img.jpg) (http://www.uplood.fr)
Mise en place du composant, câblage alim et bus d'adresse
(http://img1.uplood.fr/free/j7zv_20100125_222100_6926_img.jpg) (http://www.uplood.fr)
Câblage du bus de données, commande des transistors
(http://img1.uplood.fr/free/rbb2_20100125_224158_6929_img.jpg) (http://www.uplood.fr)
Ajout des LEDs, mise en place d'interrupteurs sur les 4 bits de poids faible du bus d'adresse
Bon, maintenant ça ce complique... ;)
Cas n°1.
Je sélectionne le composant. Les petits cavaliers en 1 et 2 sont présents. Ils forcent /CE1 et /CE2 à l'état bas.
Le composant est sélectionné, son bus de données est actif.
J'ai réussi à trouver une adresse où les 4 bits de données sont à l'état haut, ce qui me fait allumer les 4 LEDs.
(http://img1.uplood.fr/free/1kqu_20100125_225912_6930_img.jpg) (http://www.uplood.fr)
Cas n°1 : /CE1 et /CE2 tous les deux à l'état bas ; le composant est sélectionné
Cas n°2.
J'ai retiré le cavalier n°2, donc /CE2 est à l'état haut grâce à une résistance de pull-up. Le cavalier en 1 est toujours en place.
Cette situation devrait suffire à désélectionner le composant et son bus de données devrait passer en haute impédance.
Vu que les LEDs restent allumées, j'ai bien la preuve que l'entrée /CE2 est morte et ne permet plus de désélectionner le composant.
(http://img1.uplood.fr/free/ajb5_20100125_225954_6931_img.jpg) (http://www.uplood.fr)
Cas n°2 : /CE1 est à l'état bas, /CE2 est à l'état haut ; le composant reste anormalement sélectionné
Cas n°3.
J'ai remis le cavalier en 2 (même si en fait il ne sert plus à rien du tout vu que l'entrée est morte), et j'ai retiré le cavalier en 1.
Cette fois, j'ai /CE1 qui est à l'état haut.
Je constate que les LEDs sont maintenant éteintes.
- soit le composant est réellement déselectionné
- soit le composant est anormalement resté sélectionné et impose un état bas sur le bus de données
(http://img1.uplood.fr/free/nk82_20100125_230102_6932_img.jpg) (http://www.uplood.fr)
Cas n°3 : /CE1 est à l'état haut, /CE2 est à l'état bas ; le composant semble enfin désélectionné
Pour lever l'ambiguïté, il me suffit de faire un 4e test.
Avec une résistance de pull-up, je viens "tirer vers le haut" chacun des bits du bus de données.
Si la LED s'allume, c'est que le composant est bien désélectionné et n'impose plus aucun état sur le bus.
Bingo, le composant a bien libéré le bus de données (vérifié pour les 4 bits) :
(http://img1.uplood.fr/free/ocrm_20100125_230208_6933_img.jpg) (http://www.uplood.fr)
Vérification que le bus de données est bien en haute impédance
C'est une très bonne nouvelle.
Ca veut dire que mon composant SEGA est toujours utilisable, mais je dois échanger les broches 8 et 10.
Pour échanger ces 2 broches, j'ai besoin de souder 2 petits bouts de fils.
Vu que je veux conserver la possibilité de retirer le composant sans fer à souder, je place le composant sur un support, en ayant pris soin de plier les 2 broches que je veux permuter.
(http://img1.uplood.fr/free/lu0t_20100125_230908_6934_img.jpg) (http://www.uplood.fr)
Broche 8 isolée
(http://img1.uplood.fr/free/amf6_20100125_230916_6935_img.jpg) (http://www.uplood.fr)
Broche 10 isolée
Ensuite, il me suffit de souder 2 petits bouts de fil à wrapper (http://fr.wikipedia.org/wiki/Wrapper_(électronique)) pour réaliser la permutation.
Je soude les fils sous le support, au plus haut sur la patte métallique pour ne pas gêner lors de l'insertion de l'ensemble sur le support soudé sur le PCB.
(http://img1.uplood.fr/free/espl_20100125_231944_6936_img.jpg) (http://www.uplood.fr)
Repiquage
(http://img1.uplood.fr/free/mtg6_20100125_232002_6937_img.jpg) (http://www.uplood.fr)
Repiquage
Et voilà :
(http://img1.uplood.fr/free/swxs_20100125_233234_6938_img.jpg) (http://www.uplood.fr)
J'ai testé en mode pas à pas la 1ère donnée lue en ROM.
PR-10 est bien désélectionnée et la donnée lue est bien celle de PR-8 ! :-)=
À suivre :
- ça vaut le coup maintenant de rester le PCB avec l'oscillateur d'origine ;
la seule inconnue est la PROM PR-18 pour laquelle le doute m'habite quand à son contenu, différent de la référence Cinematronics - je ne sais toujours pas si les composants de RAM sont bons, j'ai tracé 2 instructions d'écriture qui se sont correctement déroulées, mais ce n'étaient que 2 adresses parmi les 256 possibles...
-
tu pourrais presque monter ton wip de 1 ou 2 pourcent:p
-
Ayé. :D
-
:o j'adooooooooore ce topic :-*
-
Le hasard a fait qu'ils soient du même constructeur (je pense que c'est Motorola) :
C'est bien motorola.
Je ne suis pas sûr, mais si "8211" signie que le composant neuf a été fabriqué durant la 11e semaine de 1982, alors ce composant neuf n'est pas tout jeune : il aurait 28 ans !
Je confirme également cette hypothèse :)
Pour la petite histoire, vu l'âge de ce composant ce n'est probablement pas de la distribution officielle (cad vendu par le fabricant) mais probablement un composant acheté chez ce que l'on appel un Broker (En gros un brocanteur de l'électronique) ;)
-
Merci de nous donner des explications aussi détaillées (même si je/on comprend pas grand chose :D)
Faire un récit aussi propre et illustré doit prendre autant temps que le debug !!!
-
Bonjour.
Afin de progresser plus rapidement et plus confortablement dans le dépannage de cette carte CCPU il serait bon que tu t'équipes d'afficheurs hexadécimaux pour visualiser le contenu des bus de la carte ou les données en sorties d'une mémoire. Ce serait quand même beaucoup plus pratique est plus lisible que d'installer une foultitude de LED's ou de balader la sonde de l'oscilloscope sur chaque fil d'un bus à chaque nouvelle instruction.
LE TIL311 de Texas Instruments :
(http://www.mikrocontroller.net/attachment/4522/til311.jpg)
| (http://www.syntax.com.tw/proddata/IC/IC-TIL311.JPG)
|
(http://img1.uplood.fr/mamu/o0bb_til311.gif)
- Le datasheet : http://www.alldatasheet.com/datasheet-pdf/pdf/28761/TI/TIL311.html
- Afficheur "all-in-one", le boîtier DIL comporte la logique TTL et les LED's. L'affichage n'est pas un affichage à 7 segments car il est réalisé à l'aide de 20 points lumineux rouges , ce qui permet d'avoir des chiffres hexadécimaux moins stylisés et d'afficher le "B" et le "D" en majuscules.
- Il comporte aussi deux points décimaux, le droite et le gauche qui peuvent être utilisés comme "oeil de rat" pour afficher indépendemment l'état d'un signal TTL quelconque.
- Le gros problème est que ses entrées sont du type TTL et non pas du type TTL LS, il impose donc une charge trop importante sur un bus à base de TTL LS. Il est nécessaire de faire précéder chaque entrée A, B, C, D ou DP par un élément d'un boîtier type 74LS244 ou 74LS541. Le mieux serait d'utiliser les éléments d'un boîtier 74HCT244 ou 74HCT541 pour perturber encore moins le bus ou le signal dont on veut afficher l'état.
- Le TIL311 a toujours été relativement cher : 23 euros chez Électronique Diffusion, actuellement il y en a deux de disponibles (Electro Breizh) sur un site d'enchères mondialement connu pour 12 euros pièce.
Le DM9368 de Fairchild :
(http://www.intertexelectronics.com/images/IC.jpg) |
(http://t0.gstatic.com/images?q=tbn:VrJ4ey2J7r_s_M:http://img-europe.electrocomponents.com/largeimages/C235906-01.jpg)
|
| (http://web.tiscali.it/lukecondor/Relazione%20Contatori_file/image005.gif)
|
(http://www.shree-electronics.com/images/7_segment_display.svg.png) |
(http://upload.wikimedia.org/wikipedia/commons/archive/2/2b/20070128232929%21Seven_segment_display-animated.gif) |
(http://web.tiscali.it/lukecondor/Relazione%20Contatori_file/image004.gif)
- Le datasheet : http://www.alldatasheet.fr/datasheet-pdf/pdf/51129/FAIRCHILD/DM9368.html
- Le DM9368PC est un driver hexadécimal pour afficheurs 7 segments à LED's, il a le même brochage que les afficheurs décimaux du type 7447 ou 74247 avec les caractéristiques suivantes :
- Affichage 7 segments, le "b" et le "d" sont affichés en minuscules alors que les autres lettres le sont en majuscules.
- Nécessite un afficheur 7 segments à LED's à cathode commune.
- Pas besoin de résistance de limitation de courant en série avec chaque LED de l'afficheur car les sorties sont à courant constant (environ 20 mA ).
- Les entrées A0 à A3 sont à très faible courant, donc elles peuvent être connectées directement sur le bus à visualiser sans le perturber.
- Évidemment ses sorties à courant constant le font chauffer un peu surtout quand il doit afficher le "8". C'est pour cela qu'il vaut mieux utiliser des afficheurs d'une autre couleur que le rouge car plus la tension de seuil d'allumage des lED's sera élevée, moins le module aura à dissiper de calories.
- Le DM9368 est obsolète mais on peut encore en trouver. Sur le même site d'enchère mondialement connu, le vendeur LittleDiode en propose en ce moment au prix prohibitif de 21,60 € pièce alors que l'on peut en trouver à beaucoup moins cher ailleurs. Par exemple Intertex Electronics (http://www.intertexelectronics.com/product11382.html?osCsid=7c50bfbdd82464d837705b55c5aed6dc) les vends $5,95 pièce et il accepte PayPal !
EDIT : Sur le même site d'enchères, le vendeur dialelec en propose en ce moment deux exemplaires au prix plus raisonnable de 8,90 GBP (10,20 €) pièce sous l'appellation F9368DC. - Il faut bien sûr prévoir un afficheur 7 segments par module, une autre couleur que le rouge est préférable (orange, vert) pour la raison invoquée plus haut.
-
ben si j'avais su que l'on pouvait faire tout ça en electronique :-\
j'aurais jamais seché les cours pour aller jouer a SF2 au bar du coin :?
F4brice une fois de plus ^-^
-
F4brice une fois de plus ^-^
gc339 aussi ^-
-
Top ce dépannage ! ^-^
La suite ! :-)=
-
Bonsoir.
Voici une mise à jour de ce dépannage.
Je rappelle la méthodologie :
- j'ai déconnecté la CLOCK d'origine, qui fonctionnait à environ 20 MHz
- j'ai mis à la place un bouton poussoir qui fait avancer la CLOCK pas à pas
- je dis bonjour à chaque instruction qui se présente
- je contrôle son exécution
Cette méthodologie m'a déjà permis de résoudre 2 problèmes :
- le composant P13 (chargé de stocker le n° de la page de RAM sélectionnée) était mort
- la PROM PR-10 avait un problème de désélection
Je la trouve très efficace, mais particulièrement longue et laborieuse.
À chaque fois, je dois vérifier à l'oscillo l'instruction exécutée, la valeur de certains registres du CCPU, etc...
L'idée de gc339 d'utiliser des composants type TIL311 (voir ce message (http://www.gamoover.net/Forums/index.php?topic=20677.msg300882#msg300882)) serait un gain de temps et de confort très appréciable.
Jeudi dernier, lors de la rencontre entre lyonnais (http://www.gamoover.net/Forums/index.php?topic=20874.msg301208), gc339 m'a remis 6 composants TIL311 qu'il a pu dessouder de son stock de cartes diverses :
(http://img1.uplood.fr/free/e5u4_20100130_132930_6949_img.jpg) (http://www.uplood.fr)
Composants TIL311 donnés par gc339
L'idée est de leur faire afficher en hexadécimal (http://fr.wikipedia.org/wiki/Système_hexadécimal) toute donnée clé que je jugerai utile :
- l'adresse courante en ROM
- l'instruction en cours d'exécution
- les valeurs des 2 accumulateurs
- la page RAM sélectionnée
- etc...
Vu que je ne possède qu'un nombre limité de ces afficheurs TIL311, j'ai décidé de leur associer à chacun un composant 74LS157.
Ce composant est un quadruple sélectionneur 2 entrées / 1 sortie.
Il me permettra de choisir avec un bouton poussoir 2 sources de données différentes pour 1 afficheur TIL311.
Ainsi, chaque TIL311 pourra afficher 2 infos différentes. Un bouton poussoir me permet d'afficher l'une ou l'autre.
Voici donc le petit montage pour mettre en oeuvre le 1er TIL311...
J'utilise une chute de plaque à trous et pastilles cuivrées.
Le boîtier 74LS157 a 2 pattes dans le vide, mais c'est sans importance.
(http://img1.uplood.fr/free/ngv9_20100130_134924_6950_img.jpg) (http://www.uplood.fr)
Montage à base de TIL311
J'ai choisi de lui faire afficher les 4 bits de poids fort de l'instruction en cours d'exécution. Ces 4 bits sont les plus importants, car ils définissent le type de l'instruction (une addition, la lecture d'une entrée, etc...)
Les 4 bits de poids faible seront affichés si j'appuie sur le bouton poussoir.
La technique de réalisation la plus adaptée aurait été incontestablement le wrapping (http://fr.wikipedia.org/wiki/Wrapper_(électronique)).
Malheureusement, je ne suis pas (encore) équipé pour ça.
J'en ai fait quand j'étais étudiant et c'est d'une simplicité et d'une rapidité extraordinaire.
Pour aujourd'hui, j'ai donc dû me battre et souder le tout.
Et voilà !
(http://img1.uplood.fr/free/e2za_20100130_153402_6952_img.jpg) (http://www.uplood.fr)
Affichage des 4 bits de poids fort de la 1ère instruction
L'afficheur affiche un "4".
Ca tombe bien, c'est effectivement les 4 bits de poids fort de la 1ère instruction du jeu Space Wars (flèche rouge) :
(http://img1.uplood.fr/free/qb6b_p.png) (http://www.uplood.fr)
Lorsque j'appuie sur le bouton poussoir, l'afficheur me montre alors les 4 bits de poids faible (flèche verte :"9") :
(http://img1.uplood.fr/free/22u7_20100130_153414_6953_img.jpg) (http://www.uplood.fr)
Affichage des 4 bits de poids faible de la 1ère instruction
Maintenant, simplement avec cet unique afficheur et son bouton poussoir, je peux faire du pas à pas beaucoup plus vite :
- je vois quelle instruction est exécutée
- je sais où j'en suis dans le code du jeu
- je peux me concentrer sur sur ce que je veux investiguer
Cette fois, j'ai pu suivre une trentaine d'instructions sans perdre de temps ni me faire de noeuds au cerveau.
Je ne revérifie pas en détail toutes les instructions que j'ai déjà vues fonctionner.
Adresse | Code | Assembleur | Statut | Commentaire |
7EA | 8F | LDP #F | OK | Sélectionner la page de RAM n°15 ("F" en hexa) |
7EB | 08 | LDA #800 | OK | Charger l'accumulateur avec la constante 800 (en hexa) |
7EC | DF | STA F | OK | Enregistrer l'accumulateur à l'adresse RAM n°15 ("F" en hexa) de la page courante |
7ED | 0A | LDA #A00 | OK | Charger l'accumulateur avec la constante A00 (en hexa) |
7EE | DE | STA E | OK | Enregistrer l'accumulateur à l'adresse RAM n°14 ("E" en hexa) de la page courante |
7EF | 8B | LDP #B | OK | Sélectionner la page de RAM n°11 ("B" en hexa) |
7F0 | 20 A0 | ADD #A0 | OK | Ajouter la constante A0 (en hexa) à l'accumulateur |
7F2 | D6 | STA 6 | OK | Enregistrer l'accumulateur à l'adresse RAM n°6 de la page courante |
7F3 | 00 | CLR | OK | Effacer l'accumulateur |
7F4 | D3 | STA 3 | OK | Enregistrer l'accumulateur à l'adresse RAM n°3 de la page courante |
7F5 | D5 | STA 5 | OK | Enregistrer l'accumulateur à l'adresse RAM n°5 de la page courante |
7F6 | 21 | ADD #1 | OK | Ajouter la constante 1 à l'accumulateur |
7F7 | D4 | STA 4 | OK | Enregistrer l'accumulateur à l'adresse RAM n°4 de la page courante |
7F8 | 95 | OUT 5 | OK | Mettre la sortie n°5 à la valeur opposée du bit de poids faible de l'accumulateur (il faut suivre, hein ?) |
7F9 | 4C 27 | LDJ #72C | OK | Charger le registre J (adresse de destination du prochain jump) avec la constante 72C (en hexa) |
7FB | 58 | JMP | OK | Sauter à l'adresse contenue dans le registre J |
72C | A6 | LDA 6 | KO | Charger l'accumulateur avec le contenu en RAM de l'adresse n°6 dans la page courante |
L'instruction de l'adresse 72C a foiré.
Si on suit bien :
- en 7F2, l'accumulateur valait A00 (chargé en 7ED) + A0 (instruction en 7F0) = AA0
- cette valeur AA0 a été écrite en RAM à l'emplacement B:6
- en 72C, lorsque le programme veut relire cette adresse, j'ai constaté une erreur :
- valeur qu'il aurait dû relire : AA0 (soit en binaire 101010100000)
- valeur effectivement relue : A20 (soit en binaire 101000100000)
Le bit foireux correspond au bit de poid fort du composant de RAM M14.
Ce composant est donc bel est bien en panne comme je l'avais indiqué dans ce message (http://www.gamoover.net/Forums/index.php?topic=20677.msg299340#msg299340).
À ce moment là, il était en L14, mais il a changé de place depuis que tous les boîtiers de RAM sont sur support.
J'ai aujourd'hui la preuve de sa panne, car j'ai vérifié à l'oscillo directement en sortie du composant.
Il ne s'agit pas d'une piste coupée ou autre farce.
La bonne nouvelle, c'est que dès que j'avais déterminé qu'au moins un composant de RAM était foireux, je m'étais mis en quête d'en trouver un autre.
Une personne de la liste de diffusion vectorlist (http://www.vectorlist.org/) s'était proposée pour m'en envoyer gratuitement.
Il y a donc en ce moment même 3 de ces composants de RAM en train de se diriger vers ma boîte à lettre. =:))
-
J'adore lire tes explications, c'est clair, accessible et pour moi c'est pareil que restaurer une vieille bagnole :). Tu t'adaptes à des technologies anciennes et fait preuve d'ingéniosité pour résoudre tes problèmes ^-
Tout tes articles me motivent à me trouver une PCB en panne et à la réparer :)
-
Bonsoir.
- Pinaillage : Le TIL311 éblouit trop sur la photo, il serait nécessaire d'intercaler un bout de plexiglass rouge pour limiter l'éblouissement et améliorer le contraste.
- "Yeux de rat" : Le TIL 311 a deux points décimaux, le droite et le gauche, qui peuvent élégamment remplir cet office.
-
Pinaillage : Le TIL311 éblouit trop sur la photo, il serait nécessaire d'intercaler un bout de plexiglass rouge pour limiter l'éblouissement et améliorer le contraste.
:D
La photo étant prise sans flash, la diffusion de la lumière du TIL311 est exagérée.
"Yeux de rat" : Le TIL 311 a deux points décimaux, le droite et le gauche, qui peuvent élégamment remplir cet office.
J'ai câblé le point décimal droit dans cet optique, mais il ne s'allume pas.
J'ai vérifié mon transistor NPN et sa polarisation qui sont tous les deux bons.
Peut-être ma résistance de 570 Ω entre le transistor et le TIL311 est trop forte ?
-
Re ...
Mea culpa, j'aurais du penser Jeudi soir à te donner deux boîtiers mémoires MCM51L01.
(http://img1.uplood.fr/mamu/zsm0_dscf4133.small.jpg)
Car même si ces RAM CMOS sont lentes (650ns), elles sont compatibles broche à broche et conviendraient pour remplacer la RAM défectueuse et ainsi poursuivre la recherche de panne en pas à pas ou en vitesse d'horloge réduite.
En tous cas, si tu tardes à recevoir les boîtiers RAM promis, je peux te les poster pour faire avancer le schmilblick.
-
Clap, Clap, Clap, bravo très intéressant ce wip, même si moi aussi je plane à 20.000 très souvent, en tout cas le détail et les explications claires permettent de d'accrocher quand même et c'est un beau morceau de borne qui vas être sauvée ^-^ ^-^
-
donc si j'ai bien tout compris
les composants de gc 339 ont été fabriqué la 23eme semaine de 1980? =:))
-
Bonjour.
donc si j'ai bien tout compris
les composants de gc 339 ont été fabriqué la 23eme semaine de 1980? =:))
Ce doit être tout à fait exact car les cartes, sur lesquelles j'ai récupérés ces mémoires, ont été fabriquées à cette époque la.
-
Super, l'esprit d'entraide ! J'adore ce WIP, même si ma compréhension des choses est assez sommaire.
-
Bonsoir.
Good evening.
Voici une mise à jour de ce WIP.
Here is a WIP (Work In Progress) update.
Toutes les phrases ce message sont traduites en anglais, vous allez comprendre pourquoi...
All the sentences of this message are translated to english, you'll understand why...
Il y a quelques jours, j'ai été contacté par une personne très sympa : S.H qui habite en Angleterre.
Some days ago, I was contacted by a very friendly person : S.H. who lives in England
Il y a eu un échange rapide d'e-mails, signe qu'il était derrière son ordi en même temps que moi.
There was a rapid exchange of e-mails, sign that he was behind his computer at the same time as me.
J'ai fini par lui proposer de l'appeler au téléphone, et nous avons passé plus d'une heure à discuter (il a free, il a tout compris).
I finally ask him to call on the phone, and we spent over an hour to chat (untranslatable advertising slogan of a french internet operator).
Nous avons beaucoup parlé d'arcade, de jeux vectoriels, et du jeu Space Wars.
We chatted about arcade, vector games, and the Space Wars game.
S. m'a proposé de me donner un PCB original de chez Cinematronics non testé, ainsi qu'une doc qu'il avait en double.
S. offered to give me an untested Cinematronics original PCB, and an owner manual that he had duplicated.
Bien sûr j'ai accepté et je l'ai remercié autant que mon vocabulaire anglais me le permettait.
Of course I agreed and thanked him as much as my English vocabulary would allow.
En fin de semaine dernière, le facteur m'a apporté ça :
At the end of last week, the postman brought me this :
(http://img1.uplood.fr/free/1nue_20100129_174238_6941_img.jpg) (http://www.uplood.fr)
(http://img1.uplood.fr/free/vmkk_20100129_174334_6942_img.jpg) (http://www.uplood.fr)
(http://img1.uplood.fr/free/76wr_20100129_174532_6944_img.jpg) (http://www.uplood.fr)
(http://img1.uplood.fr/free/j5rg_20100129_174518_6943_img.jpg) (http://www.uplood.fr)
(http://img1.uplood.fr/free/b5ev_20100129_174858_6945_img.jpg) (http://www.uplood.fr)
Comme l'a dit speedsterharry, il y a non seulement un esprit d'entraide, mais en plus il est national et international ! :-*
As stated speedsterharry, there is not only a spirit of mutual assistance, but also it is national and international !
Un examen du PCB indique qu'il est sans aucun doute en panne. Il manque 3 circuits intégrés standards.
A check of the PCB shows it is for sure faulty. 3 standard chips are missing.
Bizarrement, ils n'ont pas été dessoudés, mais toutes leurs broches ont été coupées.
Strangely, they were not un-soldered, but all their pins were cut.
L'idée est que je récupère, si nécessaire et possible, les composants spécifiques tels que les PROMS du CPU.
The idea is that I get, if necessary and possible, the specific components such as CPU PROMS.
J'ai la PROM D14 sur le PCB SEGA qui est louche.
D14 PROM on the SEGA PCB is suspicious.
Si elle est en panne, peut-être celle de ce PCB pourra la remplacer.
If it's dead, maybe that one on this PCB may replace it.
La carte étant très sale, il est nécessaire de lui donner le bain.
The PCB is very dirty, it is necessary to bathe (<- not sure of this word !).
(http://img1.uplood.fr/free/k7ge_20100131_224150_6954_img.jpg) (http://www.uplood.fr)
Un peu d'eau tiède...
A little warm water...
(http://img1.uplood.fr/free/dz77_20100131_224210_6955_img.jpg) (http://www.uplood.fr)
Même pas peur !
No fear !
(http://img1.uplood.fr/free/fk1t_20100131_224752_6956_img.jpg) (http://www.uplood.fr)
C'était nécessaire...
It was necessary ...
(http://img1.uplood.fr/free/e7pm_20100131_224854_6957_img.jpg) (http://www.uplood.fr)
Rincage
Rinse
(http://img1.uplood.fr/free/nfnk_20100131_225248_6958_img.jpg) (http://www.uplood.fr)
Égouttage
Draining
(http://img1.uplood.fr/free/j34e_20100131_231152_6959_img.jpg) (http://www.uplood.fr)
Et voilà !
Et voilà !
Un grand merci à S.H. pour le don de cette carte et de la documentation originales.
A big thank you to SH for donating this PCB and the original documentation.
À suivre : prélèvement de composants sur cette carte pour test sur le PCB SEGA.
Next: removal of components on this board for testing on the SEGA PCB.
-
International gamoo spirit ^-^
-
Trop de la balle !
Too much of the bullet ! (silly French expression ;D translated just for fun)
-
Une fois la première retaper tu va même pouvoir t'en faire une de rechange ^-
-
Une fois la première retaper tu va même pouvoir t'en faire une de rechange ^-
Qui sait, peut être même qu'à son tour avec se qu'il en restera il pourra aider une autre personne plus tard qui en sauvera une lui aussi :ang:
Bravo pour ce don et l'entraide ^-
-
Bonsoir.
Good evening.
Voici une mise à jour de ce WIP, et non des moindres.
Here is an update of the WIP, not one of the smallest.
En effet, ce soir je suis parvenu à un résultat très encouragant.
In fact, tonight I reached a very encouraging result.
Ce message est lui-aussi traduit en anglais, pour une certaine raison...
This message is translated into English too, for some (great) reason...
Hier soir, j'avais nettoyé le PCB original Space Wars aimablement donné pour pièces par SH.
Yesterday evening, I cleaned the original Space Wars PCB kindly given by SH for spare parts.
J'ai ensuite dessoudé sur ce PCB une puce de RAM car j'en ai au moins une qui est HS sur le PCB SEGA.
I un-soldered an RAM chip on this PCB because I have at least one bad on the SEGA PCB.
(http://img1.uplood.fr/free/6ghv_20100203_004838_6968_img.jpg) (http://www.uplood.fr)
Une puce de RAM a été dessoudée
A RAM chip has been unsoldered
Je place la puce sur le PCB SEGA et vérifie avec soin la 1ère instruction du jeu qui écrit puis relit en RAM.
I set the chip on the SEGA PCB and check carefully the 1st game instruction that writes & read in RAM.
Malheureusement la relecture est fausse ; j'ai donc dessoudé une puce qui était déjà HS.
Unfortunately the reading is wrong, so I un-soldered a chip that was already bad.
Aucune avancée hier soir sur le sujet.
No progress yesterday on the subject.
Voici mon bureau, où je teste tranquillement le PCB :
Here is my desk, where I'm quietly testing the PCB:
(http://img1.uplood.fr/free/mlkn_20100203_001802_6965_img.jpg) (http://www.uplood.fr)
Plan de travail
Desk
- à gauche, sous la gomme, c'est une feuille de papier où je note toutes les écritures en RAM, de façon à pouvoir contrôler que les données relues sont correctes
on the left, under the eraser, it's a paper sheet where I write down all RAM writings, in order to be able to check that data read are correct - à droite de cette feuille, c'est le dump des ROM du jeu, sous forme hexa ; je vérifie que le PCB exécute bien l'instruction attendue ; chaque instruction vérifiée est surlignée en jaune fluo
on the right, it's the game ROM dump, in hexa form ; I'm checking that the CPU executes the expected instruction ; every checked instruction is highlighted with yellow pen - posées sur mon clavier, j'ai 2 des 5 feuilles du schéma électronique du PCB
on my keyboard, there are 2 on 5 PCB schematics sheets - sur l'écran de l'ordi, j'ai la doc de référence du CCPU qui me permet de traduire les codes hexa présents en ROM en instructions assembleur
on the screen, I have the CCPU reference guide which helps me to translate the hex codes present in ROM to instructions
Ce soir, après être rentré du boulot, j'avais prévu de dessouder une 2e et peut-être une 3e puce de RAM du PCB donné par SH, pour test sur le PCB SEGA.
Tonight, after office work, I was planning to unsolder a 2nd and perhaps 3rd chip RAM from SH PCB, for testing the SEGA PCB.
Sauf que j'ai trouvé ceci dans ma boîte à lettres :
But I found this in my mailbox:
(http://img1.uplood.fr/free/qemx_20100202_193054_6960_img.jpg) (http://www.uplood.fr)
Enveloppe en provenance des États-Unis
Cette envoloppe contenait ça :
This envoloppe contained this:
(http://img1.uplood.fr/free/6yme_20100202_193336_6963_img.jpg) (http://www.uplood.fr)
3 supports et 2 puces de RAM
3 sockets and 2 RAM chips
Il s'agit de 2 puces de RAM 2101 de 200 ns, testées.
It's 2 x 2101 @ 200 ns RAM chips, tested.
L'esprit d'entraide international continue : ces 2 puces m'ont été gentiment proposées et offertes par Mark Shostak, qui habite aux États-Unis.
The spirit of international assistance continues: these 2 chips were kindly offered and sent by Mark Shostak, who lives in the United States.
Je suis vraiment touché par l'aide qui m'est spontanément proposée.
I am really affected by the spontaneously support offered to me.
Bien-sûr je me dépêche de mettre en place une des puces sur le PCB SEGA.
Of course I quickly set a chip on the SEGA PCB.
J'avais déterminé qu'une des puces d'origine était HS et ce problème justifait totalement une panne du PCB.
I determined that one RAM chip was bad, and this problem was more than enough to make the PCB fail.
En effet, j'ai constaté que le jeu stocke en RAM des nombres qui correspondent à des adresses en ROM de certaines données. Si la RAM est HS, alors ces adresses relues deviennent fausses et le PCB fait n'importe quoi.
Indeed, I found that the game stores in RAM numbers that correspond to ROM data addresses. If the RAM is bad, then data read are wrong and the PCB fails.
Il s'agit simplement de la notion de pointeur (http://fr.wikipedia.org/wiki/Pointeur_(programmation)) comme dans le language C.
It is simply the concept of pointer (http://en.wikipedia.org/wiki/Pointer_(computing)) as in the C language.
Voici la nouvelle puce de RAM en place sur le PCB :
Here is the new RAM chip set on the PCB:
(http://img1.uplood.fr/free/yrq7_20100203_004556_6967_img.jpg) (http://www.uplood.fr)
La nouvelle puce de RAM en place
New RAM chip is set
Dès la mise en route, je regarde à l'oscillo le signal /RESET :
As soom as it starts, I check with DSO the /RESET signal:
(http://img1.uplood.fr/free/6hlr_20100203_001816_6966_img.jpg) (http://www.uplood.fr)
L'oscillo ne se synchronise pas sur le signal /RESET
DSO doesn't trig on the /RESET signal
Mon oscillo indique "NOTRIG". Ca veut dire qu'il ne trouve aucun changement sur le signal mesuré pour synchroniser son affichage.
My DSO displays "NOTRIG". It means it finds no change on the signal to synchronize its display.
Et "aucun changement", ça veut dire que mon PCB ne se reset plus en permanence.
And "no change" means my PCB is not more constantly reseting !
:-)= :-)= :-)= :-)= :-)= :-)= :-)=
Je me dépêche de regarder à l'oscillo les signaux importants qui pilotent l'écran X-Y :
I quickly check with the DSO major signals that drive the X-Y screen:
(http://img1.uplood.fr/free/jq09_reset.png) (http://www.uplood.fr) signal /RESET /RESET signal | (http://img1.uplood.fr/free/45th_intensify.png) (http://www.uplood.fr) signal INTENSIFY INTENSIFY signal |
(http://img1.uplood.fr/free/j5xi_initial_pos.png) (http://www.uplood.fr) signal INITIAL_POSITION INITIAL_POSITION signal | (http://img1.uplood.fr/free/0e1o_drawing.png) (http://www.uplood.fr) signal DRAWING DRAWING signal |
Le PCB SEGA envoie des commandes à l'écran X-Y !
The SEGA PCB is sending commands to the X-Y screen !
Il essaie d'afficher quelque chose !
It tries to display something !
:-)= :-)= :-)= :-)= :-)=
Ce n'est pas parce que le PCB tente d'afficher quelque chose que ce quelque chose est cohérent.
It'is not because the PCB is trying to display something that this "something" is consistent.
Mais c'est quand même une étape de franchie.
But it's still a step taken.
À suivre : bah maintenant il faut tester et éventuellement réparer l'écran vectoriel...
Next: now it's time to test and maybe fix the vector display
Big thanks to Mark Shostak.
-
Hello MS,
I don't know if you will ever read this message, but I think that many members of this forum (so am I) will think that your gift is really a proof of international assistance, and that passion for arcade games knows no borders!
Many thanks for him,
William
<:)
-
vala, t'as pu qu'a tester:)
Now you only have to test this
Mate ca bébé ...
Check it out baby :-)=
-
*FRENCH*
C'est hallucinant !
quel incroyable esprit d'entraide international.
Je sais maintenant que nous avons plein d'amis partout dans le monde qui vont accomplir la même mission que nous:
Sauver les jeux d'arcade.
ça fait chaud au coeur de sentir que chaque personne qui éssaie de sauver une PCB ou de restorer un meuble ne sera plus JAMAIS seul grâce à internet.
quel beau monde "fédération internationale de sauvetage de l'arcade". Avec plein d'anonymes qui soudent et réparent au fond de leur caves /garages. Les gars:
MERCI JE VOUS AIME.
c'est malin maintenant je pleure sur mon clavier.
l'esprit des jeux d'arcade survivra à jamais.
Merci, merci et merci :-*
(F4brice, si tu continue à m'émouvoir comme ça, il est pour toi le WIP de l'année) :D
______________________________________
*ENGLISH*
it's amazing !
what an incredible international helping spirit.
I know now we have a lot of friends all around the world that will do the same mission as ours:
saving Arcade Videogames.
it's really good to feel that every person who'll trying to bring back to life a PCB or any coin op, will NEVER be alone, thankfull to the web
the beautiful World "Arcade Saving Foundation". With thousands of anonymous, soldering and repairing in their dark basements /garages. Guys :
THANKS ALL I LOVE YOU.
Now i'm bleeding on my keyboard.
Arcade Videogame spirit will live on forever
thanks, thanks, and thanks :-*
-
Bonjour.
Maintenant que le CCPU commence à fonctionner et que tu es équipé pour programmer des EPROM's, tu devrais pouvoir écrire un petit bout de programme simple pour faire tester les RAM's par le noyau du CCPU avec la méthode du damier :
- En écrivant alternativement 555H, 0AAAH, 555H... dans toutes les lignes de la mémoire.
- Puis en vérifiant ce qui a été écrit dans chaque ligne.
- En refaisant une deuxième passe en décalant le motif d'une adresse : 0AAAH, 555H, 0AAAH...
Cela permettrait de tester le CCPU en vitesse réelle avec un jeu d'instructions réduit,
Plus tard tu pourras même utiliser une méthode plus sophistiquée comme celle du 1 ou du 0 baladeur pour tester chaque module mémoire 4 bits :
- Le un baladeur : 0000, 0001, 0010, 0100, 1000, 0000, 0001 et ainsi de suite ... en décalant le motif d'une cran à la passe suivante.
- Le zéro baladeur : 1111, 1110, 1101 et ainsi de suite ...
Hi.
Since the CCPU starts working and you are equipped to program EPROM's, you should write a bit of simple program to make the CCPU kernel check itself the RAM's with the checkerboard method :
- In writing alternately 555H, 0AAAH, 555H ... inside the whole memory.
- Then checking what was written in each line.
- In remaking a second pass by shifting the pattern one step : 0AAAH, 555H, 0AAAH ...
This would test the CCPU in real speed with a reduced instruction set,
Later you can even use a more sophisticated method such as the sliding 1 or 0 to test each 4-bits memory chip :
- The sliding one pattern : 0000, 0001, 0010, 0100, 1000, 0000, 0001 and so on ... shifting the pattern one step for each new run.
- The sliding zero pattern : 1111, 1110, 1101 and so on ...
-
Bonsoir.
Good evening.
Et c'est reparti pour une mise à jour de plus de ce WIP.
And here we go for one more update of this WIP.
Hier soir, j'ai constaté que mon PCB était tout frétillant de vie.
Yesterday evening, I found that my PCB was wriggling life.
Fini les reset incessants : maintenant il veut envoyer des commandes à l'écran.
It's done with endless resets : now it wants to send commands to the screen.
Ce soir, j'ai décidé de tester le PCB dans la borne, connecté à l'écran vectoriel SEGA (soyons fou).
This evening, I've decided to test the PCB inside the cabinet, connected to the SEGA vector display (let's rock).
J'avais tout démonté lorsque j'avais fait le reverse-engineering du chassis vidéo (http://www.gamoover.net/Forums/index.php?topic=20677.msg298234#msg298234) de l'écran.
I disconnected everything when I made the video board reverse-engineering (http://www.gamoover.net/Forums/index.php?topic=20677.msg298234#msg298234).
Vu que tout est actuellement débranché, j'en profite pour re-vérifier les tensions d'alimentation de la borne :
Since everything is now disconnected, I want to re-check the cabitnet's voltage supply :
- +5V DC
- +25V DC
- -25V DC
- +18V DC non régulés unregulated
- 6V AC
Tout est bon.
All's right.
Je reconnecte alors soigneusement tout ce que j'avais démonté.
I then carefully reconnect everything I had disconnected.
(http://img1.uplood.fr/free/7j49_20100203_202542_6981_img.jpg) (http://www.uplood.fr)
L'écran est entièrement reconnecté
Screen is fully reconnected
J'ai installé le PCB du jeu dans sa cage de protection.
I installed the game PCB in its protective cage.
L'afficheur lumineux qui m'a été si utile a été retiré car il gênait la mise mise en place du PCB.
The display device that was so useful has been removed because it impeded the PCB insertion.
(http://img1.uplood.fr/free/hox6_20100203_202648_6985_img.jpg) (http://www.uplood.fr)
Le PCB est en place
PCB is inserted
Après de nombreuses et minutieuses vérifications, il est temps de tenter une mise sous tension de la borne.
After extensive and careful investigations, it's time to try to power up the cabinet.
Je ne sais pas pourquoi, je suis resté près de 10 min assis derrière la borne à regarder l'interrupteur M/A.
I do not know why, but I stayed almost 10 minutes sitting behind the cabinet, looking at the power switch.
Je ne peux pas dire que c'était de l'indécision, juste que je "pensais" à son histoire, où elle pouvait bien être installée.
I can't say it was indecision, just I was "thinking" about its history, where it could be installed.
Je l'imaginais dans un bar, sur le coté à droite en entrant.
I imagined it in a bar on the right side as you enter.
Le barman est en train d'essuyer des verres.
The bartender is wiping glasses.
Un client est assis sur un tabouret sur-élevé, près du comptoir, accoudé.
A customer is seated on a high stool, near the bar, leaning.
Un expresso lui a été servi. Il est en train de fumer. Il souffle sa fumée tout en regardant légèrement vers le haut. On dirait qu'il regarde dans le vide.
He has an espresso. He's smoking. He blows his smoke while looking slightly upwards. Looks like he is staring into space.
Il tourne le dos à la borne. Il ne voit pas qu'un autre client s'est levé, a cherché dans sa poche une pièce de monnaie. Il était assis près d'une table ronde.
He turns back to the cabinet. He didn't see another customer got up, looked in his pocket for a coin. He was seated at a round table.
Son verre de bière est posé sur un sous-bock.
His glass of beer is placed on a coaster.
Le bruit de la pièce de monnaie qui tombe dans la tirelire métallique de la borne n'a pas tiré le premier client de sa torpeur.
The sound of the coin falling into the metal cashbox has not cleared the first customer of its torpor.
Tout juste le tintement a fait à peine tourner la tête du barman. Il a vu sans regarder.
The sound was just enough to make the bartender turn a little his head. He saw without looking.
La scène est simple et banale. C'est un petit bout de vie...
The scene is simple and common. It's a bit of life ...
Oui, voilà. Tout éveillé, je rêvais de l'histoire de cette borne...
Yes, that's it. I was awake, I was dreaming of the cabinet's history.
Ce petit instant de vagabondage et de sérénité m'a fait du bien...
This small moment of serenity and vagrancy was good ...
Je regarde maintenant fixement l'interrupteur.
I'm now staring at the power switch.
Ma main s'approche. Je bascule l'interrupteur avec l'index et le majeur.
My hand goes. I toggle the switch with the forefinger and middle finger.
(http://img1.uplood.fr/free/9hvz_20100203_225908_6988_img.jpg) (http://www.uplood.fr)
.
.
.
.
.
.
.
Clic !
.
(http://img1.uplood.fr/free/l1bp_20100203_225916_6989_img.jpg) (http://www.uplood.fr)
.
.
.
.
.
.
L'écran ne fait pas du tout le même bruit par rapport aux premières fois où j'avais tenté un démarrage de la borne.
The screen is not at all the same noise from the first times I tried powering up the cabinet.
C'est difficile à décrire, mais il fait un bruit d'"activité électrique".
It's hard to describe, but it makes a noise of "electrical activity".
J'entends que l'écran fonctionne, qu'il n'est pas au repos.
I can hear that the screen works, it's not idle.
Je me déplace devant la borne et...
I go in front of the cabinet and...
.
.
.
.
.
(http://img1.uplood.fr/free/yx58_20100203_201244_6969_img.jpg) (http://www.uplood.fr)
(http://img1.uplood.fr/free/g30m_20100203_201520_6974_img.jpg) (http://www.uplood.fr)
(http://img1.uplood.fr/free/cy8y_20100203_201450_6973_img.jpg) (http://www.uplood.fr)
(http://img1.uplood.fr/free/fa6l_20100203_202220_6978_img.jpg) (http://www.uplood.fr)
:-)= :-)= :-)= :-)= :-)= :-)= :-)= :-)= :-)= :-)= :-)= :-)= :-)= :-)= :-)=
Snif, c'est beau. :-*
(noise of a snorting nose), it's nice.
Certes il y a quelques bugs, mais la vie est là. La vie est là !
Of course there are some bugs, but it's alive. It's alive !
Le PCB fonctionne à 90%. Le son fonctionne à 100%.
PCB is 90% working. Sound is 100% working.
L'écran fonctionne très bien. Il y aura des réglages à faire et quelques condos à changer, mais l'essentiel est vivant : tube, bobines de déviation, THT...
Screen works fine. Adjustments will be needed and some caps are to be changed, but most of it is alive : CRT, yokes, HVT...
Les étoiles scintillent et je pense que c'est voulu.
Stars twinkle and I think it's expected.
Il y a quelques bugs graphiques :
There are some graphical bugs
- l'étoile centrale bugge par moment
the middle star sometimes bugs - les lignes des vaisseaux buggent aussi de temps en temps
ships lines also bug sometimes - les scores sont faux
scores are wrong
Je pense que c'est une autre puce de RAM qui est partiellement en panne.
I think it's another partially bad RAM chip.
Il doit y avoir 90% des bits qui fonctionnent. Les 10% restants sont en panne et provoquent les bugs visuels.
There must be 90% of the bits that work. The remaining 10% are down and cause visual bugs.
J'ai fait une vidéo :
I made a small movie:
Ma borne Space Ship qu'elle fonctionne !
My Space Ship cabinet is working
Regardez à 0:47 comment je me suis auto-pwned. :D
Look at 0:47 how I did self-pwned.
-
passage du wip a 90%
felicitation F4brice, you're the king
et je dit pas ca uniquement parce que tu as mes pcb de Space invaders pas loin
The wip is about to reach 90%
Congratulation F4brice, you're the king
and I don't say that only because I've lent you My space invaders PCB for an inspection ;)
Ca claque quand meme bien les ecran vectoriel, tu as bien merité que ca marche tant ta recherche a été longue est précise
Vectors screen kicks ass, you really deserved it works due to all the time and precision you put into this cab
-
Salut,
j'ai lu tout le topic <:) je pige quedalle ;D mais felicitations pour ces nouveaux tests ^-^
-
Un grand bravo à toi Fabrice, tu est un dieu de la restauration électronique ^-^ ^-^ ^-^
-
Ca fait plaisir à voir :-)=
Une borne vectorielle c'est vraiment sympa :-*
-
Pffff, encore un WIP de longue durée qui s'achève, que va-t-il nous rester si ça continue comme ça? :P
-
Là il y a de la sauvegarde de rétro-patrimoine! ^-
Bravo! Tu l'auras méritée cette borne quasi unique en France, voir en Europe?
Merci pour ce WIP.
-
Magnifique job ^-
Je suis toujours ému devant le rendu de ces écrans XY depuis que j'ai taté du Starwars upright et du Tempest...
C'est superbe 8)
Et la méthode, le compte rendu, tout est high level, merci.
Pour les moins doués ils peuvent se rabattre sur de l'émulation -VectorMame- et la carte The Zektor's Vector Generator (http://www.zektor.com/zvg/index.html)
(http://www.zektor.com/zvg/images/zvg_angle_512.jpg) (http://www.zektor.com/zvg/index.html)
Bon 200$ mais l'amour du vectoriel peut parfois faire faire des folies...
-
Superbe !!! comme d'hab !!
-
Fabrice : on ne peut qu'alluciner devant la qualité et la precision de ce wip ^-^
uk / us : Well :? Congratulations =:)) :-)= ^-^
-
Putain que c'est beau.
Vraiment un boss!!
-
Pour les moins doués ils peuvent se rabattre sur de l'émulation -VectorMame- et la carte The Zektor's Vector Generator (http://www.zektor.com/zvg/index.html)
sauf que A PU de carte Zektor :-((
-
:-* j'adore l'emotion qui parcours ce WIP
i love the feelings this WIP is giving to us ^-
....et une de plus de sauvée :-\
....one more saved again :D
-
Tout simplement génial ^- Argh, ce que je souhaiterais avoir de telles compétences en électronique comme toi :-\
J'ai toppé 'y a un moment une Space Wars (http://www.dragonslairfans.com/smfor/index.php?topic=454.0) modèle US mais complètement vide ::) ...
Pour les moins doués ils peuvent se rabattre sur de l'émulation -VectorMame- et la carte The Zektor's Vector Generator (http://www.zektor.com/zvg/index.html)
(http://www.zektor.com/zvg/images/zvg_angle_512.jpg) (http://www.zektor.com/zvg/index.html)
... et c'est ce que j'ai prévu de faire. J'ai par chance acheté cette carte quand elle était encore dispo 8) Je viens de toppé également un écran XY ... 'y a plus qu'à tester le truc.
Encore bravo pour ta resto ^-^
-
Un grand bravo pour cette splendide resto :-* :-* :-)=
-
du coup tu peux peut être remonter un peu ta barre du wip qui est à 20% :D
-
(...)
J'ai toppé 'y a un moment une Space Wars (http://www.dragonslairfans.com/smfor/index.php?topic=454.0) modèle US mais complètement vide ::) ...
... et c'est ce que j'ai prévu de faire. J'ai par chance acheté cette carte quand elle était encore dispo 8) Je viens de toppé également un écran XY ... 'y a plus qu'à tester le truc.
(...)
Excellent ça aussi Nuno, je serait curieux de suivre cette remise en état,
J'attends ce WIP impatiemment aussi alors !
-
du coup tu peux peut être remonter un peu ta barre du wip qui est à 20% :D
Je l'ai passé à 80% mais un poil trop tard ! ;D
-
WIP de malade de ouf complet :o
Suivre l'évolution, presque du direct live en plus, et cette méticulosité et rigueur rarement vue pour un WIP, tout cela est franchement impressionnant.
Tu déchires trop f4brice ! :-)=
Immense respect intersidéral ^-^ ^-^ ^-^
-
Holy f*ck, you made it ! ^-
-
Ca c'est du WIP, du vrai, avec des poils ! :-)=
Respect, m'sieur <:)
-
Bonsoir.
Good evening.
Merci à tous pour vos commentaires d'encouragement ! :-*
Thanks to all for your encouragement !
Voici encore une mise à jour de ce WIP.
Here is again an update of this WIP.
Hier soir, tout ému, pour la 1ère fois j'avais vu fonctionner ma borne.
Yesterday evening, I was affected, for the first time I saw my cabinet working.
Certes il y avait des bugs graphiques, mais l'émotion était forte.
Of course there were glitches, but the emotion was strong.
Ce soir, je me suis penché sur ces bugs.
Tonight, I'm working on these bugs.
Je suspectais un des composants de RAM d'être partiellement HS.
I was suspecting one of the RAM chips to be partially bad.
Pas assez pour faire planter le CPU, mais assez pour provoquer des bugs.
Not enough to make the CPU trap, but enough for glitches.
Ayant reçu 2 puces de RAM testées, j'ai décidé de simplement mettre la 2e puce à la place d'une des 2 dernières puces d'origines.
Having received 2 tested RAM chips, I've decided to simply put the 2nd chip in place of one of the two last original chips.
Vu que les bugs provoquent de petits écarts de placement des segments, je me suis dit que c'était la puce de RAM de poids faible qui devait avoir un problème.
Since glitches are small line shifting, I assumed it was the RAM chip for the 4 low bits that could be bad.
C'est donc elle que j'ai retirée pour mettre à la place la 2e puce neuve :
It's that one I removed in order to put the 2nd good new chip :
(http://img1.uplood.fr/free/6sf4_20100204_201106_7000_img.jpg) (http://www.uplood.fr)
2e puce de RAM changée
2nd RAM chip changed
Après mise en place, je mets la borne sous tension...
After that, I power on the cabinet :
(http://img1.uplood.fr/free/ynfz_20100204_200146_6993_img.jpg) (http://www.uplood.fr)
Il n'y a plus de bug graphique
There no more glitches
:-)= :-)= :-)= :-)= :-)= :-)= :-)= :-)=
J'avais vu juste. =:))
I had it right.
Le changement de cette puce de RAM par une neuve a suffit pour résoudre les derniers problèmes.
Changing this RAM chip for a new one was enough to solve the last problems.
Mon PCB SEGA est maintenant réparé à 100% ! :-)=
My SEGA PCB is now 100% fixed !
J'ai essayé de prendre en photo les 2 vaisseaux, mais c'est assez difficile.
I tried to take a picture of the 2 starships, but it's quiet hard.
(http://img1.uplood.fr/free/6yff_20100204_200548_6996_img.jpg) (http://www.uplood.fr)
1er vaisseau, qui sera copié par Asteroids (http://fr.wikipedia.org/wiki/Asteroids)
1st starship, it'll be copied by Asteroids (http://en.wikipedia.org/wiki/Asteroids_(video_game))
(http://img1.uplood.fr/free/dqvx_20100204_200620_6997_img.jpg) (http://www.uplood.fr)
2e vaisseau, inspiré de l'USS Enterprise (http://fr.wikipedia.org/wiki/USS_Enterprise_(NCC-1701))
2nd starship, inspired from USS Entreprise (http://en.wikipedia.org/wiki/USS_Enterprise_(NCC-1701))
Le vaisseau Enterprise semble un peu disloqué, mais ça ne vient pas du PCB de jeu.
The Enterprise starship seems a bit disjointed, but it doesn't come from the PCB game.
Le problème est dû aux condensateurs fatigués de l'écran vectoriel.
The problem is due to tired capacitors of the display vector.
Le changement de certains condos résoudra cette imperfection. :)
Changing some capacitors will solve this imperfection.
Voici une photo de famille où j'ai regoupé les puces que j'ai changées sur le PCB SEGA :
Here is a familly picture where I put together chips I changed on the SEGA PCB :
(http://img1.uplood.fr/free/k6ou_20100204_221946_7003_img.jpg) (http://www.uplood.fr)
5 puces HS qui ont été changées
5 bas chips have been changed
Il manque sur la photo la PROM à fusibles PR-10.
Fuse-PROM PR-10 is missing on the picture.
En effet, cette dernière a pu continuer son service grâce à l'utilisation de sa 2e broche "CS" (chip select).
Indeed, that chip could continue to work thanks to using its 2nd "CS" (chip select) pin.
Je suis assez content de moi sur ce coup là : j'ai pu conserver la PROM SEGA d'origine.
I'm pretty pleased with myself on this one here: I've kept the original SEGA PROM.
Voici une 2e vidéo du jeu :
Here is a 2nd game movie:
À suivre :
Next:
- réparation du bouton de tir du joueur n°1 (oxydé)
fix player #1 shoot button (oxidized) - mise en place des modifications électroniques de l'écran qui ont été faites sur le terrain pour améliorer la fiabilité
install electronic patches for screen applied on field to have better reliability - capkit
capkit
-
Je me permets une petite remarque, la "planète" au centre de l'écran n'est elle pas sensée influencer le déplacement des vaisseaux par son champ gravitationnel ? Pour avoir vu des vidéos du jeu, lorsqu'un vaisseau approche de la planète il est attiré par celle ci et orbite autour.
-
Voui, toutafé.
Mais SEGA a choisi de brider le jeu et il ne peut être démarré qu'en niveau "0".
L'attraction de l'étoile centrale est inexistante dans ce niveau.
Je pense réaliser une petite modification du câblage pour que le jeu démarre en niveau "7" ou "8" qui est plus sympa : inertie des vaisseaux + force d'attraction.
-
rhoooo cette ambiance cosmos 1999 :-* j'adore ! ^-^
-
Bonjour.
Hi.
Je viens d'éditer ce message (http://www.gamoover.net/Forums/index.php?topic=20677.msg301754#msg301754).
I just edited this message (http://www.gamoover.net/Forums/index.php?topic=20677.msg301754#msg301754).
Suite à l'accord de la personne, le nom de la personne qui m'a offert les puces de RAM apparaît maintenant en toutes lettres.
Having the agreement, the name of the person who gave me the RAM chips is now full.
Il s'agit de Mark Shostak de chez http://www.cinelabs.com/ (http://www.cinelabs.com/).
He's Mark Shostak from http://www.cinelabs.com/ (http://www.cinelabs.com/).
Encore une fois, merci à lui !
Once again, thanks to him !
-
j'ai beaucoup aimé ce jeu sur la vectrex, très fun de jouer à 2 ;) encore il y a quelques années avec Atarimania (il a perdu =:)) )
Bravo et belle pièce ^-^ et sympa les photos de vaisseaux 8)
-
:-)= :-)= :-)=
^-^ ^-^ ^-^
:-* :-* :-*
:ang: :ang:
-
absolument fabuleux
ce jeu est magnifique
le son rappelle trop de souvenir d'enfance
quand on jouai a astéroïde dans les bar
en attendant le bus pour rentrer du lycée
magnifique travail ^-^
-
Un grand bravo pour cette belle restauration électronique ^-^ ce fut un plaisir de se plonger dans cette électronique vintage avec des explications détaillées aussi clairement présentées ^-
Une histoire qui se termine bien, bravo <:)
-
Juste un petit message pour dire que j'ai trouvé un Vectrex récemment et que j'ai le portage de ce jeu dessus ! :D Donc moi aussi je joue à Space Wars =:))
Edit : J'ai fait une vidéo, la voici : Solar Quest (http://www.dailymotion.com/video/xc5b4d_solar-quest-mb-vectrex_videogames)
-
Edit : J'ai fait une vidéo, la voici : Solar Quest (http://www.dailymotion.com/video/xc5b4d_solar-quest-mb-vectrex_videogames)
Il faut que je me trouve une Vectrex dans un vide-grenier ! :-*
-
nope le jeu sur vectrex c'est bien Space wars, solar quest c'est un autre jeu aussi sur vectrex ;)
-
Bonsoir.
Petite mise à jour de ce WIP.
La dernière fois, j'avais laissé la borne fonctionnelle mais avec un problème de tir pour le 1er joueur.
J'ai décidé aujourd'hui de me pencher sur le problème.
J'avais déjà déterminé que le problème venait du bouton de tir lui-même.
Aucun contact électrique n'est réalisé lorsqu'on appuie sur le bouton.
Effectivement, ça n'aide pas.
Dans un 1er temps, il a fallu retirer le bouton du panel.
Manque de bol, le bouton ne peut sortir que par le haut et la partie en plexy du panel l'empêche de sortir.
J'ai dû jouer légèrement de la fraise pour agrandir un chouilla la découpe carrée du panel :
(http://img1.uplood.fr/free/aslv_20100220_104114_7037_img.jpg) (http://www.uplood.fr)
Le bouton est libéré
Voici la confirmation de ce que j'avais déjà diagnostiqué lorsque le bouton était en place dans la borne :
(http://img1.uplood.fr/free/fp2v_20100220_104450_7038_img.jpg) (http://www.uplood.fr)
Ça môrche pô !
L'avantage avec le matériel de cette époque, c'est que c'est démontable :
(http://img1.uplood.fr/free/cum0_20100220_104904_7040_img.jpg) (http://www.uplood.fr)
Déclipsage en cours
Le bouton est maintenant complètement démonté.
Là, j'avoue avoir été très surpris par ce que j'ai trouvé :
(http://img1.uplood.fr/free/c9es_20100220_105004_7041_img.jpg) (http://www.uplood.fr)
Surprise !
Je pensais trouver une simple partie mobile faisant contact sur des broches oxydées par le temps.
Finalement, le bouton est très différent de ce que je pensais.
La partie mobile (en bas sur la photo) porte un petit aimant.
Quand on appuie sur le bouton, l'aimant vient se placer au milieu d'un ILS (http://fr.wikipedia.org/wiki/Interrupteur#Magn.C3.A9tique) (l'ampoule verte au milieu du plastique jaunâtre en dessous du ressort) et c'est l'ILS qui assure le contact électrique.
Je suis surpris que ça ne fonctionne plus.
C'est totalement étanche à la poussière, quasiment increvable tant que la petite ampoule n'est pas cassée.
Finalement, il se trouve que l'ILS fonctionne toujours, mais l'une de ses broches est déssertie du support.
Deux petits coups de fer à souder plus tard, et c'est réglé :
(http://img1.uplood.fr/free/mwae_20100220_111138_7045_img.jpg) (http://www.uplood.fr)
2 soudures
Vérification :
(http://img1.uplood.fr/free/afjf_20100220_111042_7044_img.jpg) (http://www.uplood.fr)
Et voilà ! Le bouton est remonté.
Dernière vérification, car c'est beaucoup plus facile de le faire sur l'établi que dans la borne sous le panel :
(http://img1.uplood.fr/free/wm8p_20100220_112154_7046_img.jpg) (http://www.uplood.fr)
Je remonte le bouton sur panel de la borne et je mets la borne sous tension.
Fichtre !
Le haut-parleur émet un son absolument anormal.
J'attends quelques secondes, mais aucune image ne s'affiche...
Mon PCB est à nouveau en panne... :'(
J'ai donc réinstallé le banc de test dans mon bureau :
(http://img1.uplood.fr/free/zg51_20100220_214438_7047_img.jpg) (http://www.uplood.fr)
C'est reparti !
Je suis près à parier que c'est la dernière puce de RAM d'origine, la seule que je n'ai pas changée, qui s'est petit-suicidée...
En regardant vite fait, je vois que le chien de garde électronique se déclenche : le PCB est réseté sans arrêt.
Pourtant, le compteur de crédit est bien activé quand je mets un crédit.
Chose étrange : sans mettre aucun crédit, tout appui sur les boutons de tir (joueur 1 et joueur 2) déclenchent le son correspondant.
Le jeu devrait rester muet quand aucun crédit n'est inséré.
Ce genre de comportement me fait vraiment penser à un problème de RAM !
À suivre...
-
Damned ... repasse vite ton WIP à 30% :-((
;)
-
Je suis sur que t'avais tout prévus pour ne pas t'ennuyer !
-
surprenaznt en effet le coup du bouton à ILS, mais en y réfléchissant, c'est la solution la plus fiable sur le lon, voire trés long terme. pas de contacts "ouverts" signifie pas d'usure autre que le ressort ou la tige verticale dans sa glissiere, tout deux vachement durables.
-
ce wip .... ;D j'adore!
bon, ben bon courage pour ta panne inopinée...
par contre, l'intérupteur ILS sur wiki ils disent que le temps de réponse est plus long qu'un bouton standard ? quid ? :?
-
par contre, l'intérupteur ILS sur wiki ils disent que le temps de réponse est plus long qu'un bouton standard ? quid ? :?
C'est très certainement exact.
A mon avis, ce genre de bouton ne serait pas apprécié par les adeptes des jeux de fight par exemple.
-
Wahouu ...
il faut avouer que ça en jette un max ...
On sent bien les passionnés par le sujet ..
Autant Fabrice, l'instigateur du projet que Gc qui vient apporter son soutien ..
Bravo, chapeau bas messieurs.
-
J'ai travaillé plusieurs années dans la téléphonie mobile et sur l'un de nos modèle nous utilisions un contacteurs type ILS et bien je peux vous dire que ca n'est pas le truc indestructible que vous pensez !! Le nombre de panne et de retour client que nous avons eu a cause de ça ::) >:D !!! Quoi qu'il en soit F4brice Go-Go-Go !!!!!! ^-^
-
Bonjour.
Ces RAM 256×4 ne semblent pas être d'une fiabilité extraordinaire tout comme les MCM51L01 que je proposais comme remplaçantes temporaires, ces dernières claquaient comme des mouches et il fallait souvent les remplacer.
Une suggestion : pourquoi ne pas les remplacer par des mémoires caches pour carte mère de PC à base de 486, elles sont très véloces avec un temps d'accès de l'ordre de 15 ns, donc théoriquement au moins 10 fois plus rapides que celles d'origine. Ce qui devrait oblitérer tout un tas de problèmes potentiels que ne manqueraient pas d'occasionner des mémoires, plus facile à trouver, mais beaucoup plus lentes comme la HM6116 (2K×8 CMOS).
Il devrait être possible de trouver une de ces vielles cartes pour une somme symbolique. La plupart du temps ces mémoires cache étaient montées sur support ce qui facilite la tâche pour les récupérer.
Le problème avec ce type de mémoire cache, c'est que les entrées/sorties sont multiplexées, il est donc nécessaire de les différencier à l'aide d'un buffer de bus du genre LS244.
L'encombrement de ces mémoires ainsi que leur brochage étant complètement différents, il sera nécessaire de les installer avec les buffers de bus sur une petite carte fille tout comme l'a fait Biltronix pour ses ersatz de ROM : http://www.biltronix.com/CCPU_Custom_Chip_Replacements.html
(http://www.biltronix.com/images/CCPU/ccpu_bprom_replacement_02_200x150.jpg) (http://www.biltronix.com/images/CCPU/ccpu_bprom_replacement_02.jpg)
Un schéma possible pour des RAM UM61512AK-15 utilisées sur ces vieilles cartes mères à base de 486 :
(http://img1.uplood.fr/mamu/453h_ram.gif) (http://www.uplood.fr)
Il s'agit plus d'un schéma de principe que d'un schéma fonctionnel car il n'est pas exclu qu'il y ait des problèmes de timing entre les buffers, la RAM et/ou les bus concernés du CCPU ... Ici le schéma est incomplet car il n'est dessiné que pour les 4 bits de poids forts, il est nécessaire de le dupliquer pour les 4 bits de poids faibles.
-
Bonsoir.
Maintenant [couic] tu devrais pouvoir écrire un petit bout de programme simple pour faire tester les RAM's par le noyau du CCPU avec la méthode du damier :
- En écrivant alternativement 555H, 0AAAH, 555H... dans toutes les lignes de la mémoire.
- Puis en vérifiant ce qui a été écrit dans chaque ligne.
- En refaisant une deuxième passe en décalant le motif d'une adresse : 0AAAH, 555H, 0AAAH...
Cela permettrait de tester le CCPU en vitesse réelle avec un jeu d'instructions réduit,
Plus tard tu pourras même utiliser une méthode plus sophistiquée comme celle du 1 ou du 0 baladeur pour tester chaque module mémoire 4 bits :
- Le un baladeur : 0000, 0001, 0010, 0100, 1000, 0000, 0001 et ainsi de suite ... en décalant le motif d'une cran à la passe suivante.
- Le zéro baladeur : 1111, 1110, 1101 et ainsi de suite ...
Précision pour les tests : il ne faut pas tester les lignes mémoire individuellement les unes après les autres mais faire le test en globalité :
Le test du damier :
Il faut d'abord écrire le motif sur toutes les lignes de la mémoire :
- 1er ligne : 0555H ou 010101010101 en binaire.
- 2em ligne : 0AAAH ou 101010101010 en binaire.
- 3em ligne : 0555H ou 010101010101 en binaire.
- 4em ligne : 0AAAH ou 101010101010 en binaire.
- Et ainsi de suite jusqu'à la dernière ligne mémoire incluse.
Il faut ensuite relire les lignes les unes après les autres pour vérifier le motif qui vient d'être écrit.
S'il n'y a pas d'erreur à la relecture, il faut enchaîner une deuxième passe de test en décalant le motif d'une ligne lors de sa réécriture :
- 1er ligne : 0AAAH ou 101010101010 en binaire.
- 2em ligne : 0555H ou 010101010101 en binaire.
- 3em ligne : 0AAAH ou 101010101010 en binaire.
- Et ainsi de suite jusqu'à la dernière ligne mémoire incluse.
Tout comme pour la première passe, il faut effectuer une relecture pour vérifier ce deuxième motif ligne par ligne jusqu'à la dernière incluse.
Ce test du damier s'effectue toujours en deux passes puisque le motif est répétitif toutes les deux lignes mémoires. Une fois ces deux premières passes effectuées on peut enchaîner indéfiniment sur une série de nouvelles passes en décalant le motif d'une ligne mémoire à chaque fois.
Le test du 1 baladeur :
Bien que la ligne mémoire du CCPU ait une largeur de 12 bits, les boîtiers mémoires n'ont qu'une largeur de 4 bits. Aussi il sera plus simple et plus rapide de balader 1 bit par ligne de boîtier mémoire qu'un bit par ligne mémoire, car il est quasi impossible qu'un bit d'un boîtier interfère sur celui d'un boîtier voisin.
Il faut d'abord écrire le motif sur toutes les lignes de la mémoire :
- 1er ligne : 0000H ou 0000.0000.0000 en binaire.
- 2em ligne : 0111H ou 0001.0001.0001 en binaire.
- 3em ligne : 0222H ou 0010.0010.0010 en binaire.
- 4em ligne : 0444H ou 0100.0100.0100 en binaire.
- 5em ligne : 0888H ou 1000.1000.1000 en binaire.
- 6em ligne : 0000H ou 0000.0000.0000 en binaire.
- 7em ligne : 0111H ou 0001.0001.0001 en binaire.
- Et ainsi de suite jusqu'à la dernière ligne mémoire incluse.
Il faut ensuite relire les lignes les unes après les autres pour vérifier le motif qui vient d'être écrit.
S'il n'y a pas d'erreur à la relecture, il faut enchaîner la passe de test suivante en décalant le motif d'une ligne lors de sa réécriture :
- 1er ligne : 0111H ou 0001.0001.0001 en binaire.
- 2em ligne : 0222H ou 0010.0010.0010 en binaire.
- 3em ligne : 0444H ou 0100.0100.0100 en binaire.
- 4em ligne : 0888H ou 1000.1000.1000 en binaire.
- 5em ligne : 0000H ou 0000.0000.0000 en binaire.
- 6em ligne : 0111H ou 0001.0001.0001 en binaire.
- 7em ligne : 0222H ou 0010.0010.0010 en binaire.
- Et ainsi de suite jusqu'à la dernière ligne mémoire incluse.
Tout comme pour la passe précédente, il faut effectuer une relecture pour vérifier ce deuxième motif ligne par ligne jusqu'à la dernière incluse.
Le motif étant répétitif toutes les cinq lignes mémoires, il faudra donc cinq passes consécutives pour effectuer un test complet, c'est à dire pour tester toutes les possibilités pour chaque ligne mémoire (à noter qu'il aurait fallu 13 passes consécutives si un seul bit avait été baladé sur toute la largeur de la ligne mémoire, le faire au niveau de chaque boîtier est somme toute beaucoup plus rapide )
Pour résumer :
- 1er passe : le motif démarre avec 0000H ou 0000.0000.0000 en binaire.
- 2em passe : le motif démarre avec 0111H ou 0001.0001.0001 en binaire.
- 3em passe : le motif démarre avec 0222H ou 0010.0010.0010 en binaire.
- 4em passe : le motif démarre avec 0444H ou 0100.0100.0100 en binaire.
- 5em passe : le motif démarre avec 0888H ou 1000.1000.1000 en binaire.
Cette manière de faire permet de mettre en évidence des interférences entre lignes ou blocs d'adresses car d'une part le motif est écrit dans toute la mémoire avant d'être relu pour vérification et d'autre part il est répétitif modulo 5 pour éviter d'être en phase avec des blocs mémoire défectueux dont le nombre de lignes est selon toute évidence une puissance de 2.
Le test du 0 balladeur :
Identique à celui du 1 balladeur, il suffit d'inverser les 1 et les 0 dans le motif binaire de chaque ligne à tester.
Il faudra donc aussi 5 passes consécutives, avec décalage du motif à chaque passe, pour effectuer un test complet.
Il est bien sûr possible et même conseillé d'enchainer les différents tests les uns à la suite des autres et de reboucler indéfiniment jusqu'à l'arrêt par intervention humaine ou détection d'une faute mémoire.
En jonglant avec les registres internes du CCPU, il devrait être possible d'écrire un programme de test qui n'a besoin d'aucune ressource mémoire RAM pour fonctionner.
-
Précision pour les tests : il ne faut pas tester les lignes mémoire individuellement les unes après les autres mais faire le test en globalité
[couic sur la description précise de l'algo de test]
Bonjour.
Merci pour cette information. ^-
Je partais mal pour mon algo de test car il ne sollicitait qu'une seule cellule mémoire à la fois, sans se préoccuper des autres.
Un problème lié au bus d'adresse n'aurait pas pu être détecté, si tant est que le problème se manifeste à l'identique entre les phases de lecture et d'écriture.
Je n'avais écrit que 25% du programme, donc je vais le reprendre à 0.
De même, je n'avais pas utilisé le fait que les 3 puces mémoires de 256 x 4 bits chacunes sont indépendantes.
L'algo s'en trouvera simplifié.
Le CCPU ne permet d'accéder à la RAM qu'à travers la notion de page.
Les 256 mots de 3 x 4 bits sont organisés en 16 pages de 16 mots de 3 x 4 bits.
Il n'est possible de sélectionner qu'une seule page à la fois (en écrivant dans le registre P, qui ne peut pas être relu).
D'ailleur, il n'existe qu'une et une unique instruction pour écrire dans le registre P :
Il n'est possible d'utiliser qu'une constante "n" pour cette instruction, donc définie au moment de l'écriture du programme.
Impossible d'incrémenter, décrémenter P, de copier un accumulateur dans P, etc...
Le jeu d'instructions du CCPU est particulièrement réduit.
Il y a 2 accumulateurs de 12 bits chacun. Tous les autres registres ont une utilité spécifique et ne peuvent être qu'écrits, jamais lu.
Par exemple, le registre "J" contient l'adresse du prochain JUMP réalisé.
Plusieurs instructions permettent de l'écrire, mais aucune ne peut le relire.
Il est lu en interne lorsque justement un JUMP est effectué.
De même, le registre "I" (registre d'indirection mémoire) peut être écrit grâce à plusieurs instructions, mais il n'est jamais lisible.
Il est utilisé en interne pour toutes les opération mémoires qui peuvent utiliser l'indirection :
À suivre...
-
Bonsoir.
Après des semaines où je n'ai pas touché terre et une semaine d'absence, j'ai enfin pu reprendre le dépannage de ce PCB Sega Space Ship.
La dernière fois, je l'avais laissé dans l'état suivant :
- le watchdog aboie et reset périodiquement le PCB
- des commandes aléatoires sont envoyées dans la partie audio pendant quelques secondes
- aucune image
La 3e puce de RAM (qui était encore d'origine) était très fortement soupçonnée.
J'avais écris un compilateur de code assembleur pour pouvoir réaliser mon propre programme de test de RAM.
Ce programme devait être flashé dans une EPROM standard et j'aurais adapté cette EPROM à la place des 8 PROM Sega qui contiennent le jeu.
N'ayant pas encore d'effaceur d'EPROM, j'avais apporté chez mes parents tout mon stock d'EPROM pour les effacer sur l'insoleur UV (outil pour faire les circuits imprimés) de mon Pôpa.
Malheureusement, j'ai oublié chez mes parents tout ce stock d'EPROM, et je me retrouve donc pour quelques semaines sans aucun de ces composants, jusqu'à ma prochaine visite chez eux !
Donc en attendant, j'ai décidé de continuer quand même le dépannage du PCB avec la méthode "traditionnelle" :
- suppression de l'oscillateur à quartz du PCB
- mise en place d'un bouton poussoir pour faire du pas à pas
- flicage
au microscope à l'oscilloscope de toutes les instructions
Ayant plusieurs petits composants optiques "TIL311" qui m'ont été donnés par gc339, j'en ai profité pour les mettre en action :
(http://img1.uplood.fr/free/78ip_20100325_000846_7558_img.jpg) (http://www.uplood.fr)
5 composants TIL311 en action
- 2 d'entre eux affichent l'instruction en cours d'exécution ; c'est une information essentielle
- 3 autres affichent la valeur de l'accumulateur principal du PCB ; c'est une autre information majeure
Ainsi, je suis quitte de promener la sonde de l'oscillo à ces endroits.
J'ai 2 infos très importantes en un seul coup d'oeil. Le confort et le gain de temps sont nettement améliorés.
(http://img1.uplood.fr/free/tp62_20100325_000904_7559_img.jpg) (http://www.uplood.fr)
L'instruction en cours d'exécution
Pour le branchement, je ne me suis pas pris la tête comme la dernière fois.
Les composants TIL311 sont branchés directement sur les bus à observer.
J'ai vérifié à l'oscillo et leur présence n'affaiblit pas les niveaux TTL.
J'ai vérifié également qu'ils étaient tous correctement câblés et qu'ils indiquaient tous la valeur qu'ils doivent mesurer.
C'est reparti pour un débuggage électronique du PCB...
Parmi les premières instructions, le jeu lit une entrée et récupère la valeur opposée (le PCB est ainsi conçu) dans l'accumulateur :
(http://img1.uplood.fr/free/t7pj_20100325_002918_7563_img.jpg) (http://www.uplood.fr)
L'entrée n'est pas activée, 0x001 est écrit dans l'accumulateur
L'instruction d'après demande un décalage de 1 bit vers la gauche de l'accumulateur.
Il passe donc comme prévu de la valeur 0x001 à 0x002.
C'est grosso-modo l'équivalent d'une multiplication par 2.
(http://img1.uplood.fr/free/bzp9_20100325_002928_7564_img.jpg) (http://www.uplood.fr)
Décalage de 1 bit vers la gauche
L'instruction suivante est elle aussi un décalage de 1 bit vers la gauche.
L'accumulateur passe donc de 0x002 à 0x004 comme il est prévu :
(http://img1.uplood.fr/free/1gta_20100325_002938_7565_img.jpg) (http://www.uplood.fr)
2e décalage de 1 bit vers la gauche
Puis l'instruction d'après est encore un décalage vers la gauche (ça fait le 3e).
J'ai vérifié, et le code du jeu est bel et bien réalisé comme ça.
Sauf que là, c'est le drame :
(http://img1.uplood.fr/free/li7i_20100325_002948_7566_img.jpg) (http://www.uplood.fr)
Patatra !
L'accumulateur passe de 0x004 à 0x000 au lieu de 0x008. Pas glop...
En plus, le changement se fait sur un front descendant de la clock.
D'après la doc technique du 74LS194 (le composant qui stocke la valeur de l'accumulateur et qui réalise aussi les décalages binaires), le changement aurait dû se faire sur le front montant de la clock, et j'aurai dû avoir 0x008 et non pas 0x000.
J'ai bien sûr vérifié à l'oscillo et le petit afficheur TIL311 affiche la valeur réelle (une erreur de câblage de ma part aurait pu m'enduire d'erreur et me faire croire à une erreur à l'insu de mon plein gré).
Demain matin, je ferai escale chez le crémier pour acheter un composant de remplacement...
À suivre...
-
c'est toujours aussi passionant a suivre, et surtout détaillé :-* :-* ^-
-
Ca a l'air trop facile pour toi d'acheter des composants. Je trouve ça trop galere, il n'y a plus de magasin d'electronique par chez moi et faire une commande electronique diffusion coute plus cher en transport (en plus je me goure souvent dans les ref).
-
Ca a l'air trop facile pour toi d'acheter des composants de dépanner.
... tout cours !!
Je suis admiratif devant ce travail !!!
HS : Gti Club Minifiesta est sorti sur WII. Sympa mais pas transcendant.
-
Ca a l'air trop facile pour toi d'acheter des composants. Je trouve ça trop galere, il n'y a plus de magasin d'electronique par chez moi et faire une commande electronique diffusion coute plus cher en transport (en plus je me goure souvent dans les ref).
Sur Besançon, il y a 2 magasins d'électroniques assez bien fournis.
EDIT : http://www.microprocessor-fr.com/ (http://www.microprocessor-fr.com/) et http://www.reboul.fr/ (http://www.reboul.fr/)
Ce matin, je suis passé dans le magasin habituel (situé à 2 min de mon boulot, je passe devant tous les jours).
Ils n'avaient pas de 74LS194 référencés (pourtant ils ont des trucs largement plus exotiques).
J'ai passé un coup de fil au 2e magasin qui l'avait en référence et en stock.
C'est vrai que c'est extrêmement pratique de ne pas à avoir à tout commander par correspondance.
-
Bonsoir.
Mise à jour de ce WIP.
Hier soir, j'avais déterminé avec certitude qu'un composant était bel et bien grillé.
À midi, je suis passé chez le 2e crémier et j'ai donc acheté 3 circuits intégrés 74LS194 (1 pour remplacement, 2 pour avoir un peu de stock).
Ce soir, j'ai donc dessoudé celui d'origine qui avait pris sa retraite trop tôt à mon goût :
(http://img1.uplood.fr/free/bq2h_20100325_184422_7567_img.jpg) (http://www.uplood.fr)
Toi, tu sors !
J'ai déjà constaté à l'oscillo sa panne ; mon flasheur-testeur confirme mon diagnostic :
(http://img1.uplood.fr/free/514j_pb_74ls194.jpg) (http://www.uplood.fr)
Ca môrche pô !
Je mets en place (sans utiliser de support) son remplaçant, fraichement acheté :
(http://img1.uplood.fr/free/60iu_20100325_185614_7568_img.jpg) (http://www.uplood.fr)
Bienvenue au p'tit nouveau
Ensuite, il me faut confirmer que le p'tit nouveau a un avenir prometteur.
Je déroule donc à nouveau les instructions assembleur du jeu en pas à pas.
Cette fois, lorsqu'il s'agit de faire le 3e décalage binaire, le nouveau composant assure :
(http://img1.uplood.fr/free/4c97_20100325_190524_7569_img.jpg) (http://www.uplood.fr)
Well done, Jim !
Je continue de suivre l'exécution de nombreuses instructions.
Tout semble correct, il est temps de déconnecter mon bouton poussoir de pas à pas, et de remettre en service le quartz de la clock d'origine...
(http://img1.uplood.fr/free/6ssv_20100325_192422_7571_img.jpg) (http://www.uplood.fr)
Back to 19,968 MHz (ok, c'est divisé derrière)
Les afficheurs TIL311 affichent "8" car l'œil n'a pas le temps de voir les changements (persistance rétinienne) si toutefois les afficheurs ont bien le temps de commuter, ce qui n'est pas sûr. Bref, c'est normal.
Un petit coup d'oscillo sur le signal "RESET" du watchdog, et... c'est le calme plat !
Le PCB n'est plus reseté par le watchdog !
:-)= :-)= :-)= :-)=
Je jette un oeil à l'une des sorties qui pilote l'écran vectoriel :
(http://img1.uplood.fr/free/jqy4_out.png) (http://www.uplood.fr)
Miam !
Ça, c'est très très (...) très bon signe, ça veut dire que le PCB envoie des ordres de tracé vectoriel à l'écran ! :-)=
Je teste donc le PCB dans la borne, et...
.
.
.
.
.
.
(http://img1.uplood.fr/free/is25_20100325_193826_7578_img.jpg) (http://www.uplood.fr)
Ça maaaaaaaaaaarche !
Mon PCB Sega Space Ship est donc réparé pour la 2e fois ! :-)= :-* 8)
-
you're the best^^
-
Good Job ^-^
Sinon pas tout jeune le remplaçant :D
(http://img1.uplood.fr/free/60iu_20100325_185614_7568_img.jpg)
-
C'est le genre de post qui me redonne du courage pour reparer mes pcb défectueux (en particulier une turbo outrun qui me reste à dépanner) 8)
En tout cas bravo pour la réparation, mais aussi pour les explications, ce n'est peux être pas limpides pour tout le monde, mais en tous cas ca donne une certaine démarche logique à suivre (pas bête le coup des TIL) ^-
-
pas bête le coup des TIL
L'idée des TIL311 est de gc339. <:)
C'est lui aussi qui m'a donné 6 de ces composants ! :-*
-
J'adore ces WIPs de PCB ! :-*
-
yeahhh encore une super action des dieux de l'électronique ^-^
(on peut dire "des" pour une personne ??? :D)
et mdr pour la signature de ton pseudo
« Matériel inconnu ? Touche à ton cul ! »
^-
-
F4brice, l'homme qui avait le pouvoir de vie et de mort sur les PCBs ^-
-
f4brice, le chuck norris des pcb ^-^ :D
-
F4brice, l'homme qui avait le pouvoir de vie et de mort sur les PCBs ^-
f4brice, le chuck norris des pcb ^-^ :D
Ne vous emballez pas, les poulettes !
Cette réparation-là était assez simple :
- problème constaté dès les 1ères instructions du jeu
- 1 seul composant était malade
En plus, je n'ai même pas fini d'écrire le programme de test mémoire dont je pensais avoir besoin...
:? ;)
-
Bonsoir.
Maintenant que le PCB de jeu est réparé (pour combien de temps ?), je vais essayer de gagner un peu en qualité d'image.
En effet, le poids des années fait que les dessins vectoriels ont un petit peu la tremblotte, et les segments de droite ne sont pas tout à fait jointifs là où ils le devraient.
Le problème s'estompant au bout de quelques minutes de fonctionnement, je suis persuadé que c'est un problème de condos vieillissants...
Pour le moment, je n'en ai changé absolument aucun...
Et des candidats au changement, il y en a plusieurs !
Voici ce que j'appelle des « bombonnes » (ou « pots de confiture ») :
(http://img1.uplood.fr/free/8l2a_20100329_230702_7590_img.jpg) (http://www.uplood.fr)
10.000 µF / 16V
(http://img1.uplood.fr/free/j65r_20100329_230746_7591_img.jpg) (http://www.uplood.fr)
22.000 µF / 35V (il y en a 2)
Il n'y a pas d'autre indication sur ces condos...
« CE62W » est une indication que je n'ai pas identifiée.
« 07F8 » est certainement un numéro de lot...
Je pensais les remplacer par des condos série « CHASSIS FILTRAGE TYPE C106 SS PB » disponibles chez Electronique-Diffusion (http://www.electronique-diffusion.fr/index.php?cPath=99_144_1880).
Voici la page sur le site du fabriquant (http://www.vishay.com/product?docid=28384&query=106) et la documentation technique (http://www.vishay.com/docs/28384/106pedst.pdf).
Le fabriquant indique que ces condos ont un faible ESR :
(http://img1.uplood.fr/free/3cpd_condo.png) (http://www.uplood.fr)
Extrait datasheet
Est-ce que cette gamme de condensateur serait un bon substitut ?
Je pense aussi changer les 2 condensateurs non-polarisés qui font « mémoire analogique » et qui permettent le tracé de ligne entre 2 points :
(http://img1.uplood.fr/free/ezwx_20100329_231432_7593_img.jpg) (http://www.uplood.fr)
Oh le joli condo tout vert
Enfin, il y a une foultitude de condos tantale-goutte.
Je me demande s'il ne faudrait pas les changer eux aussi ?
-
Je ne sais pas si tu as trouvé cette datasheet donc je te la passes au cas ou ;)
http://www.gamoover.net/AsPiC/Marcon.pdf
-
Pourquoi te complique tu alors que tu as la capacité du condo, et son voltage ?
-
Je ne sais pas si tu as trouvé cette datasheet donc je te la passes au cas ou ;)
http://www.gamoover.net/AsPiC/Marcon.pdf
Rhooo, je n'avais pas cette doc. Merci ! <:)
Elle est intéressante. On y apprend que « CE62W » est en fait la gamme du condo.
Il semble qu'ils ne soient pas à faible ESR...
Pourquoi te complique tu alors que tu as la capacité du condo, et son voltage sa tension de service ?
La convention collective des condensateurs stipule qu'un camarade condensateur ne peut être viré et remplacé par un chinois que sur faute professionnelle prouvée par du personnel assermenté (camarade voltmètre, camarade capacimètre, camarade oscilloscope).
;)
-
Certes, mais tu voulais les changer non ?
Ou alors, pas tant que tu ne les aura pas testés à coup de capacimètre ?
-
Bonjour.
Pourquoi te complique tu alors que tu as la capacité du condo, et son voltage ?
Ces deux caractéristiques ne sont que "la partie visible de l'iceberg", celles qui permettent au détaillant du coin de refiler n'importe quoi au béotien et de ne pas rater une vente.
En ce qui concerne les condensateurs de filtrage, il vaut mieux préférer un condensateur de valeur moindre, mais à faible ESR, qu'un condensateur quelconque de capacité bien supérieure.
-
......
La convention collective des condensateurs stipule qu'un camarade condensateur ne peut être viré et remplacé par un chinois que sur faute professionnelle prouvée par du personnel assermenté (camarade voltmètre, camarade capacimètre, camarade oscilloscope).
;)
;D j'adore
-
Rhooo, je n'avais pas cette doc. Merci ! <:)
Elle est intéressante. On y apprend que « CE62W » est en fait la gamme du condo.
Il semble qu'ils ne soient pas à faible ESR...
<:)
Si tu bute sur la recherche de certaine datasheet n'hésite pas a demander, j'ai accès a une base pro au boulot :)
-
Si tu bute sur la recherche de certaine datasheet n'hésite pas a demander, j'ai accès a une base pro au boulot :)
C'est noté. :-*
Google est ma principale source de données, mais des fois j'ai du mal à trouver certaines datasheet (composants japonnais par exemple).
-
f4brice, le chuck norris des pcb ^-^ :D
Voui voui complètement d'accord :-)= :-)=
Moi, y me fais halluciner f4brice, il vient de Mars j'en suis sûr :D :D
Et pour la peine, le ptit lien qui va bien :
http://chucknorrisfacts.fr/
Ceci dit, très, très, très beau boulot pour ta Pcb <:) et si ton savoir est, en plus, tuned by GC339 alors là..... <:)
Allez hop au boulot maintenant, s'agirait de nous faire rêver encore ^-^ voui j'en veuuuuuuuux !!!
PS: moi aussi je kiffe ta signature ;) et c'est bien ce que je fais d'ailleurs :D
-
J'ai passé une bonne partie de l'après midi à lire tout ça, je suis loin d'avoir compris toutes les technologies employées mais rien que les méthodes sont passionnantes !
Un grand bravo et bon jeu !
-
La convention collective des condensateurs stipule qu'un camarade condensateur ne peut être viré et remplacé par un chinois que sur faute professionnelle prouvée par du personnel assermenté (camarade voltmètre, camarade capacimètre, camarade oscilloscope).
;)
;D j'adore
J'adhère ;D
Dans les PC, il y'a en partie bcp de chinois :?
-
Bonsoir.
Voici une mise à jour de ce WIP.
Le PCB est réparé, les condos de rechange ne sont pas encore commandés car j'attends d'avoir une commande suffisemment conséquente pour la passer.
En attendant, ayant reçu mon petit outil d'entrées-sorties USB entièrement paramétrable (voir ce message (http://www.gamoover.net/Forums/index.php?topic=21358.0)), j'en ai profité pour faire de la sauvegarde de patrimoine vidéo-ludique.
En effet, et à ma connaissance, je suis le seul possesseur connu (http://www.arcade-museum.com/members/game_detail.php?klov_id=12823) de cette borne Space Ship dans le monde mondial (et peut-être même dans toute la galaxie).
J'ai donc écrit un petit programme en C++ qui permet d'exploiter le module d'entrées-sorties USB :
(http://img1.uplood.fr/free/85yn_main.png) (http://www.uplood.fr)
Extrait de mon programme
Comme tout programme en C++, il faut le compiler.
Il existe MinGW, qui est un portage minimaliste mais très fonctionnel de l'excellent compilateur GCC pour Windaube.
(http://img1.uplood.fr/free/8qit_make.png) (http://www.uplood.fr)
« ça compile donc ça marche »
J'ai maintenant mon fichier « PROM_dump.exe » qui est prêt à configurer et à balancer toutes les commandes nécessaires au module d'entrées-sorties USB.
Le principe est simple :
- la PROM à dumper possède un bus d'adresses de 10 bits, donc je configure 10 broches du module USB comme sorties
- elle a un bus de données de 4 bits, donc je configure 4 autres broches du module USB comme entrées
- pour chacune des 210 = 1024 adresses possibles, mon programme :
- configure les 10 sorties du module USB conformément à l'adresse à écrire sur le bus
- attend 10 ms pour éviter les farces, bien que la PROM soit extrêmement rapide
- lit les 4 entrées du module USB pour connaître la valeur des 4 bits de données de la PROM
Voici le montage :
(http://img1.uplood.fr/free/l8jp_20100411_100608_7688_img.jpg) (http://www.uplood.fr)
Dump in progress...
L'opération est réalisée 8 fois, car il y a 8 PROM à dumper...
Et voilà le résultat :
(http://img1.uplood.fr/free/616t_aye.png) (http://www.uplood.fr)
Les 8 PROM sont dumpées ! 8)
J'ai fait une vidéo assez courte de la manip durant l'un des 8 dumps :
Sur cette vidéo, on voit une PROM en cours de lecture (à un rythme d'escargot asthmatique) avec mon programme qui se déroule.
Les loupiottes qui clignottent, ce sont les 4 bits du bus de données.
C'est un contrôle visuel qui permet de vérifier que tout fonctionne.
À suivre :
- comparaison du byte-code du jeu Sega avec l'« original » de chez Cinematronics ; je sais qu'il y a au moins une différence dans la gestion du temps accordé par crédit (Sega est plus généreux)
- ajout dans Mame l'émulation de Space Ship ; je pense que 95% du boulot est déjà fait du fait que Space Wars est déjà émulé
-
Superbe, je suis grand fan de tes WIPs et des détails que tu nous donnes. :-*
-
rho la belle sauvegarde pour la communauté Mame ^-^
chapeau pour ton bénévolat, tu n'étais pas obligé d'investir dans un tel appareil, tu aurais pu garder ta space ship jalousement... :-\
moi je dis bravo. <:) <:) <:)
-
Hello, par contre il me semble bien que tu parlais d'autre différences plus tôt dans le wip, des choses inactivées comme le trou noir etc....., as tu jeté un oeil sur ça ou ne sont elles pas présente dans ta version ?
-
Bonjour.
Pourquoi faire simple quand on peut faire compliqué ?
A mon humble avis, tu aurais pu lire les PROM's fusible à partir de ton programmateur d'EPROM simplement en réalisant un petit adaptateur fil à fil pour faire faire croire au programmateur que tu voulais lire une 2716 ou une 2732.
-
C'était effectivement une possibilité possible, mais il y a quelques aspects qui m'ont poussés vers une autre solution :
- le programmateur d'EPROM est plutot intelligent et peut détecter des broches malades sur le composant ; il est possible qu'il se soit pas laissé berné par la supercherie, mais je n'en avais pas la certitude
- je ne voulais surtout pas que le programmateur balance des signaux acceptés par une EPROM mais qui auraient pu risquer d'abimer la PROM.
Lesquels ? Je ne sais pas... - 80% du boulot réalisé pour le dump des PROM va me re-servir pour réaliser un outil de test des composants de RAM
En gros, j'ai fait mon parano complet dans la manip
Ne voulant en aucun cas risquer d'abimer le composant, et n'ayant pas un contrôle absolu du programmateur, je l'ai écarté de la solution, certainement plus par peur que par raison technique objective.
-
En gros, j'ai fait mon parano complet dans la manip
Ne voulant en aucun cas risquer d'abimer le composant, et n'ayant pas un contrôle absolu du programmateur, je l'ai écarté de la solution, certainement plus par peur que par raison technique objective.
(http://laurentdetours.blog.lemonde.fr/files/2007/02/shadoks-3.1170669778.jpg)
-
C'est tout à fait ça... :D
-
Bonsoir.
J'ai fini de dumper les dernières PROMs, bienqu'elles ne soient pas strictement nécessaires pour l'émulation.
J'en ai profité pour modifier Mame :
(http://img1.uplood.fr/free/0212_a.png) (http://www.uplood.fr)
(http://img1.uplood.fr/free/uw3g_b.png) (http://www.uplood.fr)
(http://img1.uplood.fr/free/ugbt_c.png) (http://www.uplood.fr)
=:))
-
Nickel !! ^-^
-
ce jeu n'était pas dumpé ou émulé avec MAME avant ton passage sur cette carte ?
-
ce jeu n'était pas dumpé ou émulé avec MAME avant ton passage sur cette carte ?
pas la version sega, si j'ai bien suivi.
-
ce jeu n'était pas dumpé ou émulé avec MAME avant ton passage sur cette carte ?
Non.
pas la version sega, si j'ai bien suivi.
Voilà.
99,9% du boulot était déjà : émulation du CCPU, inputs, etc...
-
Bonsoir.
Disposant du dump exact du jeu Space Ship et de Space Wars, je me suis livré à un petit exercice.
J'ai généré sous forme de texte le contenu du programme tel que le CCPU l'exécute, puis j'ai comparé octet par octet ce contenu entre Space Ship et Space Wars.
Eh bien il y a 99,95% des données qui sont identiques.
Il n'y a exactement que 2 octets sur les 4096 qui diffèrent :
(http://img1.uplood.fr/free/69jn_diff.png) (http://www.uplood.fr)
J'ai regardé vite fait à quoi ça correspond et ce ne sont pas des instructions assembleur car les quelques octets qui les précèdent n'ont pas de sens.
Il s'agit donc de données numériques, mais je ne vois pas trop en quoi elles sont liées au temps alloué pour chaque crédit inséré.
Il s'agit peut-être de "pointeurs" en ROM qui sont utilisés avec l'instruction "LKP".
Le mystère reste donc entier.
-
J'ai regardé vite fait à quoi ça correspond et ce ne sont pas des instructions assembleur car les quelques octets qui les précèdent n'ont pas de sens.
Il s'agit donc de données numériques, mais je ne vois pas trop en quoi elles sont liées au temps alloué pour chaque crédit inséré.
Il s'agit peut-être de "pointeurs" en ROM qui sont utilisés avec l'instruction "LKP".
Le mystère reste donc entier.
Quoi???? autant de suspense, de bave à nos lèvres, de tremblements, de tics nerveux en se demandant qu'elle pouvait être cette différence et la science reste impuissante, le mystère reste entier, arghhhhhhhhh c'est intolérable, une honte, oooohh dieu des bornes pourquoi tant de haine envers tes fidèles et pourquoi tant de questions et de souffrances.............. :'(
-
félicitation, ca c'est de la préservation ^-^
-
je viens de lire ce wip de ouf et franchement, en te lisant que tu voulais au départ enlever la pastille sur l'écran, j'avoue que mon coeur a failli jaillir de ma poitrine velue ^^
PATOUCH !
c'est une pastille qui sert à colorer le "soleil" dans le jeu ^^
-
Bonjour.
Je suis en train de bosser sur cette borne (capkit entre autre) et j'ai 2 questions :
- Le ballast du néon (110 V) de la marquee fait un bruit absolument infernal.
Est-ce que un ballast pour néon 220 V peut convenir en remplacement, si la puissance maxi est respectée ?
J'éviterais ainsi de changer en plus le néon qui fonctionne très bien !
- Je souhaite changer 4 condos tantale-goutte par précaution. Ce sont des 2,2 µF / 50 V qui semblent être assez exotiques.
Je n'ai que des 2,2 µF / 35 V en remplacement.
Est-ce qu'ils peuvent convenir sachant que :
- 2 d'entre eux sont sur l'alim principale +25 V d'une part et -25 V d'autre part (mesurées à +26,7 V et -26,7 V)
- les 2 autres sont immédiatement en aval de régulateurs 7815 et 7915, donc sur du +15 V d'une part et -15 V d'autre part
Voici un des condos tantale-goutte :
(http://img1.uplood.fr/free/xzdm_20100512_120638_8072_img.jpg) (http://www.uplood.fr)
J'ai retiré par curiosité la petite enveloppe qui porte la sérigraphie (gaîne thermo) ; le condo est totalement nu en dessous (aucune sérigraphie).
-
Il n'y a aucune autre indication sur tes condos tantale ?
-
Il n'y a aucune autre indication sur tes condos tantale ?
Il y a au dos le nombre "76", s'tout.
-
Essaye de voir avec ton oscillo si a l'allumage ou bien a un quelconque moment tu dépasse la tension de service de tes nouveaux condo, et si ce n'est pas le cas je pense que tu peux effectivement remplacer les 50V par les 35V.
-
Bonsoir.
Pas d'avancement de ce WIP aujourd'hui...
Mais par contre, j'avais invité ce soir un copain pour voir mes bornes.
Elles ont toutes été essayées. :D
J'ai été très content de voir que la Space Ship a beaucoup plus.
Tout mon stock de pièces de 1 FRF y est passé... :D
On a passé un bon moment à jouer sur la borne.
Ca fait vraiment plaisir de voir ce jeu aux graphismes modestes et pourtant fantastiques donner à nouveau du plaisir aux joueurs.
L'aspect ludique est vraiment grandiose.
J'ai modifié le câblage d'un connecteur entre le panel et la borne pour que les parties démarrent en mode "7" (attraction de l'étoile centrale + inertie des vaisseaux + efficacité moyenne de la propulsion des vaisseaux) plutot qu'en mode "0" comme à l'origine (pas d'attraction, pas d'inertie des vaisseaux).
Que de chemin parcouru depuis l'instant du RT chez Wanou (http://www.gamoover.net/Forums/index.php?topic=20455.0) et l'arrivée de cette borne inconnue chez moi...
-
Ca c'est toujours la reconnaissance ultime lorsque nos invités jouent sur nos bornes qu'on bricole tant avec amour :-*
-
Bonsoir.
Petite mise à jour de ce topic pour vous informer que la version 0.138u4 de Mame (http://mamedev.org/?p=310) est sortie.
Je vous laisse découvrir les changements (http://mamedev.org/updates/whatsnew_0138u4.txt) par rapport à la version d'avant, et en particulier la section "New clones added".
=:))
-
Bonsoir.
Petite mise à jour de ce topic pour vous informer que la version 0.138u4 de Mame (http://mamedev.org/?p=310) est sortie.
Je vous laisse découvrir les changements (http://mamedev.org/updates/whatsnew_0138u4.txt) par rapport à la version d'avant, et en particulier la section "New clones added".
=:))
^-^ ^-^
-
Excellent !!
:-*
-
^-^ une réussite !
-
une reconnaissance bien méritée !
-
Bonjour.
Petite mise à jour de ce WIP.
Le sieur Nuno avait eu la gentillesse de me scanner une page d'un bouquin listant les jeux SEGA (voir son message (http://www.gamoover.net/Forums/index.php?topic=20677.msg298772#msg298772)) :
(http://hico-srv004.pixhotel.fr/sites/default/files/styles/gamoovernet890px/public/gamoovernet/20100824190951-f4brice-spaceship-sega.jpg) (http://hico-srv004.pixhotel.fr/sites/default/files/gamoovernet/20100824190951-f4brice-spaceship-sega.jpg)
Aujourd'hui, une personne bien aimable (l'amie de Régis, un collègue de boulot) a eu la gentillesse de me proposer une traduction de ce document.
Cette personne a étudié le japonnais pendant 1 an et déclare avoir un niveau modeste.
Elle savait qu'il s'agissait de la description d'un jeu vidéo, mais ne connaissait pas le jeu.
Voici la traduction proposée par Elsa :
(Entre parenthèses et en italique, ce sont les commentaires d'Elsa ; je les ai conservés avec la traduction car je les trouve très instructifs)
Space ship
2 joueurs uniquement / juin 1978
Les 2 (joueurs) s'opposent dans un jeu de guerre spatiale.
Le pilote du vaisseau spatial attaque le vaisseau adverse avec des
missiles en évitant le soleil et les étoiles filantes.
Il y a 10 sortes de difficultés en changeant la vitesse du vaisseau
depuis la sélection de course. (ça doit être à l'écran de sélection de
jeu, mais il y a écrit "course", façon de parler de chez eux sans doute)
Pendant la partie le soleil peut se transformer en trou noir parmi 5
sortes de changements possibles. (Là j'avoue que je ne comprend pas trop
la fin de la phrase "5 sortes..." peut-être que le trou noir aspire les
vaisseaux, puis peut aussi les repousser, ou les faire tourbillonner...
c'est pas précisé donc pas sûre d'avoir bien traduit ce bout de phrase...)
Un clin d'oeil à l'espace qui se déplace, au bouton critique d'urgence
qui fait le plein de combustible (carburant) et de missiles aussi. (A
voir si le nombre de missiles est limité et si le carburant baisse
pendant le jeu)
Le temps (de jeu) est prolongé en introduisant une pièce.
La borne possède au total 20 boutons individuels. (Alors là c'est la
phrase la plus bizarre, j'suis pas sûre d'avoir bien saisi le sens de
cette phrase... à vous de me dire s'il y a bien 20 boutons sur la borne
parce que je ne vois pas bien sur la photo)
Je m'autorise à penser que cette traduction est excellente ! :-)=
Il ne va sans dire qu'Elsa et Régis ont déjà été invités à découvrir le jeu et à dîner. :-*
-
Superbe, c'est le genre de détail que j'adore :-*.
Merci fab (et nuno et Elsa) ^-^.