Gamoover

[move]Pour vous aussi la chipo ne sera jamais qu'un bootleg de merguez (c)sushy18 ? Alors soyez les bienvenus sur Gamoover ! [/move]

[WIVSP] Space Invaders upright, Midway 1978

Démarré par Little_Rabbit, Vendredi 29 Septembre 2017, 18:30:04 PM

Arvester

Pareil, je ne réponds pas toujours, mais je lis tout ce qui est publié sur Gamoo :) Je suis impressionné et bien souvent ça me dépasse complètement en terme de technique, mais j'adore. Faut pas lever le pied !

rygar

Citation de: Little_Rabbit le Jeudi 07 Mars 2019, 23:08:44 PM
le démon des pannes se matérialise à toutes sortes d'échelles, je m'attaque à celles qui peuvent être à ma portée ;).

Si tu as un PCB Space Invaders en rade, fais péter le WIP ! Je commence à bien le cerner ce PCB, ce peut-être l'occasion de faire voir au démon des pannes de quel bois on se chauffe sur Gamoo !  8)


Heu, en ayant bien lu tout ton post, je ne vois pas quelle panne peut te résister ... Tu sembles même être chaud patate dans le wip en ce moment; ça fait plaisir ...

Pour le bruit de la scie circulaire; à bien y réfléchir, ce sont surement les ouvriers qui sont chez toi en ce moment et qui changent ton parquet ...  :D  =:))

Bref, ta Space Invaders est repartie pour 20 ans au moins ...

Je me pose une question; sur un pcb en panne, tu dessoudes tout, tu testes chaque élément, tu montes tout les supports après contrôle visuel approfondi de la carte et ça devrait fonctionner ...   ;)


funkycochise

#114
Citation de: Little_Rabbit le Jeudi 07 Mars 2019, 23:08:44 PM
Salut,

Merci à tous pour vos retours  ^-^ : ils font chaud au cœur et m'encouragent alors à poursuivre ces récits wipesques à rallonge ! :D

@funkycochise : je n'ai pas compris à quel mug tu faisais allusion ! :D J'ai bien un mug Pacman, mais pas encore de SI :)
Si tu as un PCB Space Invaders en rade, fais péter le WIP ! Je commence à bien le cerner ce PCB, ce peut-être l'occasion de faire voir au démon des pannes de quel bois on se chauffe sur Gamoo !  8)
je me souvenais que tu étais un des destinataires des mug SI dénichés chez noz il y a une année ou 2

oui je crois même avoir au moins deux pcb SI

philougames

Salut petit lapin =:)), ça fait un petit moment que je suis pas venu sur le forum, je viens de parcourir ton wip , un truc de fou  ^-^ tu as du en passer du temps , je comprend pas tout mais c'est un vrai plaisir de te lire. Merci.

Little_Rabbit

#116
Salut,

@philougames : merci, ça fait toujours plaisir de savoir cela intéresse certaines personnes ! ;)


À présent que ma borne fonctionne depuis plusieurs mois, je voulais faire un petit bilan de ce dépannage :).

En ce qui concerne le PCB, ce WIP démarra en novembre 2015, pour s'étaler jusqu'en novembre 2018 ! Trois ans !... :-\

Un WIP, c'est facile à démarrer, mais c'est autre chose de s'y tenir et aller jusqu'au bout :D. Et c'est encore pire pour ce qui est de s'astreindre à rédiger son WIP et continuer à le partager avec la communauté !...  :-\

Bon, ce WIP a certes été très long (et n'est pas fini sur le plan cosmétique !), mais il faut dire que c'était le premier PCB auquel je m'attaquais véritablement avec persévérance, et puis les pannes étaient multiples !

Voyons l'étendu de ce qui était HS :



- le microprocesseur 8080
- 2 condensateurs tantale goutte en court-circuit (j'ai aussi remplacé pas mal d'autres condensateurs, dont tous ceux de la carte alimentation ;))
- 8 RAM sur les 16 présentes
- 4 circuits TTL : le 7404 lié au RESET, le 9316 des tops de synchro vidéo, le 7400 lié au signal Sample, et le fameux 74S174 qui sert de Status Register et qui m'a donné tant de fil à retordre !
- 3 LM3900 sur la partie son
- Et 4 ROM sur les 5 présentes ! :-\

Parlons de ces ROM justement. Une fois que le PCB était dépanné et fonctionnait avec les EPROM 2716 programmées, j'étais curieux de voir si les ROM d'origine étaient bonne ou pas. D'autant que j'avais remarqué qu'il y en avait 5 et non 4 comme c'est normalement le cas sur un PCB Space Invaders ! S'agissait-il d'une version Deluxe ?

Comme j'avais déjà dessoudé/ressoudé plusieurs fois les « jumpers » qui permettent de changer la configuration entre ROM ou EPROM, cette zone du PCB commençait à être fragilisé. Ne voulant pas l'abîmer d'avantage, j'ai décidé d'ajouter un commutateur permettant facilement de passer instantanément de ROM à EPROM :



J'ai ensuite pu mettre en place les 5 ROM d'origine :).

Mise sous tension, et...  rien !  :'(

Le PCB ne boote pas. Je voulais en savoir un peu plus, et étais curieux de dumper ces ROM pour voir ce qu'elles pouvaient contenir. Mais mon programmateur ne les connaît pas, et leur brochage étant différent d'une EPROM, ce n'était pas possible directement. Du coup je me suis fabriqué un petit adaptateur. Les brochages sont très proches :

       9316
A7   1 +-v-+ 24  Vcc
A6   2 |   | 23  A8
A5   3 |   | 22  A9
A4   4 |   | 21  CS/
A3   5 |   | 20  CS/
A2   6 |   | 19  A10
A1   7 |   | 18  CS
A0   8 |   | 17  D7
D0   9 |   | 16  D6
D1  10 |   | 15  D5
D2  11 |   | 14  D4
GND 12 +---+ 13  D3


       2716
A7   1 +-v-+ 24  Vcc
A6   2 |   | 23  A8
A5   3 |   | 22  A9
A4   4 |   | 21  Vpp
A3   5 |   | 20  OE/
A2   6 |   | 19  A10
A1   7 |   | 18  CE/
A0   8 |   | 17  D7
D0   9 |   | 16  D6
D1  10 |   | 15  D5
D2  11 |   | 14  D4
GND 12 +---+ 13  D3




-------------------------------------------------------------------
 Broche9316  |  2716  | Câblage sur PCB Midway
--------+--------+--------+----------------------------------------
   18   |   CS/  |   CE/  | Chip Select du boîtier
--------+--------+--------+----------------------------------------
   20   |   CS/  |   OE/  | Toujours à la masse
--------+--------+--------+----------------------------------------
   21   |   CS/  |   Vpp  | +5V pour EPROM, à la masse pour 9316
-------------------------------------------------------------------


Pour lire une 9316 sur un programmateur réglé sur le type 2716, il suffit donc de détourner la broche 21 vers la 20 :)



Ainsi j'ai pu tenter de dumper mes 5 ROM « mystère ».

Résultat :
-   ROM D => HS !
-   ROM E => HS !
-   ROM F => dumpée
-   ROM G => HS !
-   ROM H => HS !

Sur les 5 ROM, 4 s'avéraient mortes :'( ...

Mon fichier binaire de la ROM F allait-il tout de même m'en apprendre un peu plus et révéler le mystère ? Bah même pas ! La ROM F s'avéra tout à fait identique à la ROM F d'un Space Invaders de base ! Mais pourquoi y avait-il 5 ROM au lieu de 4 ? Je ne le saurai peut-être jamais :D. Si vous avez un PCB Space Invaders à 5 ROM, je suis curieux de savoir ce qu'elles contiennent ! ;)

Et pour l'anecdote, dernier point que je voulais approfondir : le programme de test corrigé par f4brice et surtout grandement amélioré par spectroman. Vous savez combien ce programme fût précieux, et je les remercie encore une fois pour leur superbe travail !

Souvenez-vous, j'ai terriblement galéré autour du dépannage des RAM :
-   j'en avais 8 de défectueuses sur les 16
-   sur les 24 RAM soit disant NOS achetées sur Ebay, 17 s'avérèrent HS ! :-((
-   et ce satané Status Register en panne qui venait parasiter le bus de donnée pour certaines combinaisons de A8, A9 et A10 me fit longtemps douter de la viabilité des RAM installées

Ces difficultés m'ont fait exécuter un paquet de fois le programme de test. Et comme je faisais cela avec mon banc test et non dans la borne, j'avais la possibilité d'appuyer sur mon bouton RESET pour exécuter encore et encore ce programme, sans éteindre et rallumer l'ensemble. Mais curieusement, j'avais remarqué qu'après un RESET, une bonne  moitié des RAM étaient presque toujours détectée comme mauvaises :'(. Tant que le PCB était en panne, on pouvait trouver cela normal, mais une fois apparemment fonctionnel, un RESET du programme de test provoquait toujours la détection de RAM défectueuses !

Du coup je me suis penché sur la routine de test dont je vous livre le début :

;---------------------------------------
; First RAM test
;---------------------------------------
ramtest::   mvi     d,0x00       ; clear the error register
            mvi     c,0x03       ; We'll do the ram tests three times - keep track in c

            ;---------------------------------------
            ;Store #0x55 in all memory 0x2000 - 0x4000
            ;---------------------------------------
ramtest1:   mvi     b,0x55
            lxi     h,0x2000
rmtst1:     mov     m,b
            inx     h
            mov     a,h
            cpi     0x40
            jnz     rmtst1

            ;---------------------------------------
            ;Check each stored value 0x2000 - 0x4000
            ;---------------------------------------
            lxi     h,0x2000
rmtst2:     mov     a,m
            xri     0x55
            jz      rmtst2_cont    ; no error, test next byte
            mov     b,a            ; save A in B
            mov     a,l            ; YES- load L into A
            rrc
            jc      rmtst2_bad_odd
            mov     a, e
            ora     b
            mov     e, a
            jmp     rmtst2_cont
rmtst2_bad_odd:
            mov     a, d
            ora     b
            mov     d, a
rmtst2_cont:
            inx     h
            mov     a,h
            cpi     0x40
            jnz     rmtst2
            ...


Comme je n'avais pas écrit cette routine, il me fallait comprendre pas à pas ce qu'elle faisait. Je comprends que les registres D et E de huit bits chacun, qui forment le registre 16 bits DE sont utilisés pour stocker les n° de RAM détectées comme mauvaises. OK.

Mais à la 1ère lecture un truc m'interpella : la ligne de code suivante remettait bien à 0 le registre D avant de commencer le test :

;---------------------------------------
; First RAM test
;---------------------------------------
ramtest::   mvi     d,0x00       ; clear the error register

mais je ne trouvais pas trace d'initialisation du registre E ! Serait-ce aussi simple ? J'ai remplacé cette première instruction par la suivante :

;---------------------------------------
; First RAM test
;---------------------------------------
ramtest::   lxi     de,0x0000    ; clear the error register

cette fois, c'est la paire de registres DE qui est mise à zero. J'assemble le code, le « link » et programme une nouvelle EPROM. Je test sur mon PCB, et... ça marche ! ^-^ Même après un RESET, toutes les RAM sont bien détectées comme bonnes !  :-)=

On peut en conclure qu'un microprocesseur 8080 remet à 0 tous ces registres à 0 à la mise sous tension, mais que ce n'est pas le cas après un RESET ! Voilà pourquoi cela fonctionnait la première fois, mais pas les suivantes en cas de RESET ;).

J'ai donc corrigé ce petit bug dans la routine de spectroman, et il existe à présent une version 1.3 de la ROM de test qui fonctionne dans toutes les circonstances :).



Ça c'était en novembre 2018, et je viens de constater que le gars qui héberge la ROM de test et les sources a déjà une autre version 1.3 faite par un Canadien en mars 2019 ! Merde, moi qui pensais passer à la postérité en matière de restauration d'arcade avec mon débuggage, me suis fait griller par un Québécois :D ;).


Les leçons que je retirerai de ce dépannage :
- être persévérant, même si les impasses dans lesquelles on se trouve parfois sont décourageantes ^-
- ne pas toujours se focaliser sur la recherche d'un composant coupable, parfois ce peut être une piste coupée ou abîmée
- ouvrir les yeux ET les oreilles : le son fourni par un PCB peut aussi être source d'indices qui mèneront à la résolution de la panne

Comme le disait si bien La Fontaine, "Patience et longueur de temps font plus que force ni que rage" 8) !

A+
Recherche bornes dédiées ou PCB originaux: Miss Pacman, Dig Dug, Galaga, Mappy, Asteroids, Battlezone, Missile Command, Tempest, Star Wars, Donkey Kong (+ Jr), Mario Bros, Moon Patrol, Defender, Joust, Frogger, Gyruss, Pooyan, Space Tactics, Zaxxon, etc. Flip : Gottlieb des années 80 (Spirit, Amazon Hunt, ...), Baby Pac Man. Divers :  Ice Cold Beer => Trois fois rien quoi ! :D
Ma séance sur le divan : c'est grave Docteur ? :-\
Ma gaming room, ma storage room

Arvester

Comme toujours, c'est vraiment super intéressant, bien écrit et documenté, merci beaucoup de ton partage ! Il doit y avoir pas mal de monde qui lit sans commenter et c'est dommage, pour ma part et en tant que complet béotien en électronique, tes sujets sont toujours un plaisir à lire et me donnent l'impression que je pourrais même le faire moi-même ! Ce qui bien évidemment est faux puisqu'il me manque les bases les plus élémentaires en cette matière  :D

Et encore félicitations pour la résurrection de cette vénérable grand-mère  ^-

ducatman1098

Félicitations pour ce dépannage de cette pcb de SI  ^-^ ^-^
J espère que les pcbs de SI ne sont pas dans le même état que la tienne :-[

lencouet

bravo surtout pour le travail de redaction et de vulgarisation  ^-^
quand j'ai commencer dans le depannage mon pere me disait toujours "explique si tu ne peux pas c'est que tu n'as pas compris "là on peux dire que tu as bien compris le fonctionnement

AsPiC

Merci Little_Rabbit, comme d'hab c'est agréable et utile à lire :20: Un WIP de longue haleine qui ce fini, ça fait quoi ?

Citation de: lencouet le Lundi 06 Mai 2019, 21:57:17 PM
mon pere me disait toujours "explique si tu ne peux pas c'est que tu n'as pas compris "

Ton père avait tout à fait raison ^-^

Little_Rabbit

#121
Salut,

Merci à tous pour commentaires et encouragements, c'est super sympa et motivant  ^-^.

Oui, ton père avait raison lencouet, c'est exactement ce que je viens de me dire en finissant de rédiger mon compte-rendu de WIP pour Gun Fight ! ^-

Parfois on a fait le dépannage, on sait en gros pourquoi ça marche, mais en rédigeant dans le détail le WIP, cela m'oblige à approfondir certains points et finalement cela amène une meilleure compréhension qu'avant d'avoir publié le WIP ! ;) Donc allez y, racontez aussi vos WIP dans le détail ! C'est vrai que ça prend un peu de temps (voire beaucoup :-\), mais vous verrez que c'est utile aux lecteur et au rédacteur :) !

@AsPiC : bah disons qu'on est content d'en voir le bout, mais en même temps ce n'est jamais fini : il me reste des détails cosmétiques à améliorer, et puis ça peut retomber en panne ! :D
Mais cela reste pour moi très positif car cela motive pour en attaquer d'autres : après des années d'échecs, avoir enfin une victoire est valorisant, renforce sa confiance en soi, etc.  ^-^

A+
Recherche bornes dédiées ou PCB originaux: Miss Pacman, Dig Dug, Galaga, Mappy, Asteroids, Battlezone, Missile Command, Tempest, Star Wars, Donkey Kong (+ Jr), Mario Bros, Moon Patrol, Defender, Joust, Frogger, Gyruss, Pooyan, Space Tactics, Zaxxon, etc. Flip : Gottlieb des années 80 (Spirit, Amazon Hunt, ...), Baby Pac Man. Divers :  Ice Cold Beer => Trois fois rien quoi ! :D
Ma séance sur le divan : c'est grave Docteur ? :-\
Ma gaming room, ma storage room

olschool

Superbe

une histoire qui finis bien  ^-

J'ai suivi avec attention et a n'en pas douter lors de la remise en route de la mienne ce wip sera plus qu'utile  ^-

PS:pense a le sauvegarder dans un doc style word avec les photos pour en avoir ne sauvegarde  ;)
Winner's Don't Use Drug mais ça aide quand même pour finir Ghost & Goblins.



Citation de: ducatman1098 le Lundi 05 Novembre 2018, 22:45:37 PM
En rentrant le camion au garage,  je me suis aperçu que j avais récupérer une after burner  ;D

Little_Rabbit

Salut,

Merci olschool :).

Citation de: olschool le Mardi 07 Mai 2019, 10:37:23 AM
PS:pense a le sauvegarder dans un doc style word avec les photos pour en avoir ne sauvegarde  ;)

Oui pas de soucis, je rédige toujours mes WIP sous Word avant de les poster (plus pratique je trouve, correcteur orthographique, etc.), et j'ai les photos à part :



;).

A+
Recherche bornes dédiées ou PCB originaux: Miss Pacman, Dig Dug, Galaga, Mappy, Asteroids, Battlezone, Missile Command, Tempest, Star Wars, Donkey Kong (+ Jr), Mario Bros, Moon Patrol, Defender, Joust, Frogger, Gyruss, Pooyan, Space Tactics, Zaxxon, etc. Flip : Gottlieb des années 80 (Spirit, Amazon Hunt, ...), Baby Pac Man. Divers :  Ice Cold Beer => Trois fois rien quoi ! :D
Ma séance sur le divan : c'est grave Docteur ? :-\
Ma gaming room, ma storage room