Auteur Sujet: [WIP] PCB bootleg Gyruss #2  (Lu 120 fois)

Hors ligne Little_Rabbit

  • ✌(◕‿◕)✌ Donateur 2019
  • Alien
  • *
  • Messages: 4955
  • Localisation: Nantes
  • The early 80's : the arcade golden age !!
    • Voir le profil
[WIP] PCB bootleg Gyruss #2
« le: Samedi 11 Mai 2019, 11:15:08 am »
  • Salut,

    Dans la foulée du WIP du PCB de Gyruss que houpela m'avait confié, je m'en vais vous narrer le WIP de mon propre PCB Gyruss (on va essayer de faire plus court hein ! ;)).

    Vous le savez si vous avez courageusement lu le récit de l'autre WIP, en voulant dépanner le PCB d'houpela, je me suis rendu compte que j'avais exactement le même bootleg, en panne lui aussi mais différemment !

    Le harnais réalisé pour l'autre WIP me permit de tester immédiatement mon PCB


    Yeah ! Y a de la vie aussi, et même de la musique !

    Bon OK, vous aurez remarqué, les sprites ont un petit problèmes :D.
    (c'est marrant du reste, cela permet de se rendre compte que chaque étoile du star field est en fait un sprite !  :o)

    Je vous montre une nouvelle fois le schéma des derniers étages du PCB responsables de la génération des pixels, y compris ceux des sprites :



    Dans le WIP du Gyruss appartenant à houpela, j'ai oublié d'expliquer le fonctionnement de la palette finale construite à partir d'une PROM 6331/82S123. Rappelons qu'elle contient 32 octets.



    On voit que le bus d'adresse de la PROM qui va de A0 à A4 va permettre de désigner laquelle des 32 cellules mémoire on sélectionne :
    - A0 à A3 permettent d'adresser 16 couleurs pour les tilemaps quand A4 est à 1
    - Et quand A4 est à 0, on adresse 16 autres couleurs pour les sprites
    (le multiplexeur 74LS157 envoie vers la PROM, via le registre 74LS174, soit les 4 bits des pixels des sprites, soit les 4 bits des pixels des tilemaps)

    Et en sortie, la valeur 8 bits est immédiatement convertie en 3 composantes RVB analogiques :
    - D0 + D1 + D2 sont associés à 3 résistances pondérées qui vont nous donner la tension pour la composante ROUGE, réglable donc sur 8 niveaux
    - D3 + D4 + D5 de la même façon vont nous donner la tension pour la composante VERTE, réglable donc sur 8 niveaux
    - Et il ne reste que D6 et D7 pour définir la composante BLEUE, soit réglable sur 4 niveaux seulement
    => cela autorise (8 niveaux de rouge) x (8 niveaux de vert) x (4 niveaux de bleu), soit 256 couleurs différentes

    On peut en déduire que sur Gyruss, l'affichage peut se faire parmi une palette de 256 couleurs, et qu'on affiche simultanément jusqu'à 32 couleurs différentes réparties ainsi : les sprites sont en 16 couleurs parmi 256, et les tilemaps disposent elles aussi de 16 couleurs parmi 256 :). En 1983, date à laquelle est sortie en salle d'arcade Gyruss, je pense qu'aucun micro-ordinateur domestique ne pouvait en faire autant dans cette définition d'écran ! ;)

    Revenons en à la PROM 6301/82S129 en 6C qui gère les sprites. Son fonctionnement est différent. Il s'agit d'une PROM de 256 mots de 4 bits :



    Ici les 4 bits de poids faibles (A0 à A3) proviennent d'une EPROM 2764. On peut imaginer que c'est la valeur d'un pixel de sprite en 16 couleurs. Les 4 bits de poids forts viennent quant à eux d'une autre partie du schémas : j'avoue ne pas avoir tout compris, d'autant qu'il y a de-ci de-là des custom-chips Konami qui ne facilitent pas la lecture... Mais je pense que la PROM ici sert à remapper les pixels des sprites : il ressort de la PROM la valeur finale sur 4 bits d'un pixel de sprite.

    Voilà pour la théorie, revenons-en à du concret avec mon PCB mal en point.

    J'inspecte d'abord visuellement tout le PCB : je nettoie et désoxyde les broches qui en ont besoin.

    Ouch !! Quand je tombe sur la PROM 6331 de la palette finale, je vois qu'elle est dans un triste état ! :-\ Une fois sortie de son support, elle tient plus de l'unijambiste que du bien-portant !...



    Je me vois contraint en attendant mieux de souder à ma PROM unijambiste une prothèse :



    :)

    Le résultat peut faire penser à de la boucherie, mais pour autant j'obtiens le même résultat qu'avant de l'avoir charcuté :). À ce moment là je n'ai pas encore de quoi programmer des PROM, on s'en contentera donc !

    Comme toutes les PROM sont sur support, et que je dispose du PCB d'houpela qui lui n'a pas de problème vidéo (mis à part la palette erronée), je substitue à ma PROM avec sa prothèse celle du PCB d'houpela. Nouveau test et pas de changement. Cela ne me surprend pas trop : mon problème ne vient pas de la palette finale.

    Pourquoi alors tous les pixels de sprite sont blancs ? À ce stade, je n'en sais rien :). Mais là aussi grâce au PCB d'houpela, je peux enlever ma PROM 6301 qui gère la palette sprite par celle du PCB d'houpela.

    Nouvel essai, et...


    Youpi, ça marche ! Moi je dis  Finger in the nose! ^-^

    Bon là ça ne marche que grâce à la PROM prêtée par le PCB d'houpela ;). Mais si vous avez lu l'autre WIP, vous aurez remarqué que j'étais parvenu à programmer une PROM 82S129 : c'était bien sûr pour remplacer ma palette sprite morte !

    Un truc à garder en tête pour mes futurs WIP : les PROM semblent être des composants fragiles qui passent facilement l'arme à gauche dans le temps !

    La prochaine fois je vous raconterai les problèmes que j'ai finalement rencontrés pour le son ! :)

    A+
    Recherche 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 : Xenon, Baby Pac Man, Gottlieb des années 80 (Spirit, Amazon Hunt, ...). Divers :  Ice Cold Beer
    Trois fois rien quoi ! :D

    Hors ligne lencouet

    • ✌(◕‿◕)✌ Donateur 2019
    • Confirmé
    • *
    • Messages: 137
    • Localisation: Lot et Garonne
      • Voir le profil
    [WIP] PCB bootleg Gyruss #2
    « Réponse #1 le: Samedi 11 Mai 2019, 15:06:26 pm »
  • he voila une fois de plus un wip passionnant
    avec tes conneries je pensai avoir trouvé mon pigiste pour m'aider a rédiger des wips et ce matin il m'annonce que ca va etre dure de rivaliser avec toi  ::)
    c'est vrai que c'est vraiment bien expliqué et étaye 

    Hors ligne Little_Rabbit

    • ✌(◕‿◕)✌ Donateur 2019
    • Alien
    • *
    • Messages: 4955
    • Localisation: Nantes
    • The early 80's : the arcade golden age !!
      • Voir le profil
    [WIP] PCB bootleg Gyruss #2
    « Réponse #2 le: Samedi 11 Mai 2019, 15:12:39 pm »

  •  :D

    Mais il ne s'agit pas de rivaliser entre WIP ! :)

    Comme dirait Pierre, "L'important c'est de participer !" ;)

    Merci pour tes appréciations ! :)

    A+
    Recherche 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 : Xenon, Baby Pac Man, Gottlieb des années 80 (Spirit, Amazon Hunt, ...). Divers :  Ice Cold Beer
    Trois fois rien quoi ! :D

    Hors ligne Little_Rabbit

    • ✌(◕‿◕)✌ Donateur 2019
    • Alien
    • *
    • Messages: 4955
    • Localisation: Nantes
    • The early 80's : the arcade golden age !!
      • Voir le profil
    [WIP] PCB bootleg Gyruss #2
    « Réponse #3 le: Lundi 13 Mai 2019, 15:28:43 pm »
  • Salut,

    Allez, je vous livre la seconde et dernière partie de ce WIP, comme ça cela sera classé !...

    Le jeu fonctionne donc parfaitement au niveau vidéo, ainsi que l'étage son / musique à première vue.

    Mais pourtant, la partie ampli présentait des comportements suspects. Notamment à la mise sous tension, l'une des deux voies faisait une sorte de Woofe Woofe Woofe Woofe Woofe
    ! :) C'est-à-dire que visuellement, on voyait la membrane du haut parleur faire une excursion complète, puis se renfoncer dans le haut-parleur, puis recommencer dans l'autre sens avec un amorti progressif jusqu'à ce que cela s'arrête (ça durait 2 ou 3 secondes, je n'ai malheureusement pas pris de vidéo !). La fréquence étant très basse, c'était légèrement audible ET très visible ! Hummm, pas très sain pour le haut-parleur je pense !...

    Ensuite, les composants intégrés assurant l'amplification étaient rapidement bouillants ! :-\

    J'ai regardé le schéma de la partie audio :



    On y trouve deux blocs identiques (Gyruss est stéréo ;)), où chaque ampli est construit autour d'un composant dédié et intégré, le LA4460 :



    C'est un composant de chez Sanyo, initialement pensé pour la réalisation d'auto-radio. La mise en œuvre paraît plutôt simple :



    Cela ne nécessite que quelques condensateurs et résistances, on injecte le son à amplifier sur la broche 2, et on branche le HP en 9 ! :)

    Si on compare avec la mise en œuvre qu'en a fait Konami sur son PCB, on voit que c'est exactement la même chose.

    D'où peut bien venir ce Woofe Woofe Woofe à la mise sous tension, et pourquoi les composants sont-ils brûlants ? J'ai observé les signaux à l'oscilloscope, mais ne voyais rien de probant.

    Comme il y avait pas mal de condensateurs électrochimique, j'ai pensé que certains étaient peut-être fatigués : allez hop, un cap kit complet de cette partie là !



    Nouvel essai, mais aucun changement ! :'(

    Après observation détaillé de mon PCB, je me rends compte qu'il manque des condensateurs ! :-\


    C23 et C24 sont présents à droite, mais C21 et C22 sont absents à gauche !

    Ils ont dû être arraché car côté soudure il y a encore leurs pattes !


    (là j'avais déjà débouché 2 des 4 trous)

    Ah ! Voilà certainement mon coupable qui affectait une voie et pas l'autre. Je soude deux nouveaux condensateurs :



    Et nouveau test ! Bah non, aucun changement ! :'( Et les 2 LA4460 qui étaient toujours brûlants !



    J'avais également constaté la présence de petits condensateurs tantale goutte en sortie de certains des processeurs audio AY8910 :



    Je ne suis pas sûr d'avoir compris la fonction de cette partie, mais je la comprends comme ça :
    - CHA, CHB et CHC sont les sorties des 3 canaux audio du chip
    - Les 4066 sont des interrupteurs analogiques commandables. Il faut donc les voir ni plus ni moins que comme un interrupteur qui sera ouvert ou fermé à la demande, et piloté par le port d'E/S du 8910 (ils auraient pu être piloté par autre chose, mais puisqu'on dispose de ce port juste à côté, profitons-en ! :))
    - Si le ou les 4066 sont ouvert, un canal se retrouve simplement avec 3,2 K Ω en série, comme toutes les autres sorties de AY-8910 sur le PCB
    - Si un des 4066 est fermé, alors sa sortie se voit ajouter un filtre RC constitué d'une résistance de 1 K Ω et d'un ou deux condensateurs.
    => j'imagine donc que cela permet de contrôler l'enveloppe d'un son produit par ce canal (mais pour autant l'AY-8910 dispose de son propre contrôle d'enveloppe il me semble...), ou bien de filtrer certaines fréquences.

    Quoiqu'il en soit, on sait que les condensateurs tantale goutte en vieillissant peuvent facilement passer en court-circuit, je décide donc de les changer.

    Je dessoude ceux d'origine :


    Et les remplace par des tantale goutte neufs :).


    Une bonne chose de faite, mais cela n'a aucun incidence immédiate sur mon problème :'(.

    Là, je commence un peu à être à court d'idée sur quelle peut être la cause des dysfonctionnements que j'observe :-\

    Puis à un moment je comparais les deux PCB : le mien et celui d'houpela, et une différence finit par me sauter aux yeux !

    Celui d'houpela :


    Le mien :


    Sur celui d'houpela, la face des LA4460 prévue pour potentiellement recevoir un radiateur était face en l'air, quand sur le mien elle était face contre le pcb ! :-\ Mais comment serait-ce possible ?? Mes LA4460 ne peuvent quand même pas être branchés à l'envers ?? Ça ne marcherait pas du tout si tel était le cas non ? Je cherche un peu sur Internet d'autres photos de ce bootleg, et trouve ça :



    Fichtre ! Ils sont là aussi dans le sens inverse du mien ! :-\

    Je relis la datasheet et ne comprends plus rien : mais non ce n'est pas possible ! Mon PCB viendrait-il d'un univers parallèle où tout est symétrique au nôtre ? :-\ Serais-je en fait sans le savoir dans ...


    :D

    Restons cartésien et reprenons posément :). Je relis donc plus en détail et non en diagonal comme je l'avais fait avant la datasheet. Et là je comprends que le LA4460 est décliné dans deux brochages différents : le LA4460, mais aussi le LA4461 avec un brochage inversé, prévu pour faciliter l'implantation de systèmes stéréos !

    Mais cette photo trouvée sur Internet alors ?? Et le PCB d'houpela, comment se fait-il... mais attendez, je n'ai pas regardé dessous !



    Bingo ! Tout s'éclaircit :). Sur le PCB d'houpela, il est monté à l'envers car il s'agit du LA4461, et non le LA4460 comme sur le mien ! Quant à la photo Internet, on remarque dessus que les boîtiers sont explosés, sans doute parce que le composant a été monté à l'envers ! ;)

    J'ai donc définitivement quitté la 4ème dimension et suis revenu dans un univers stable et bien réel, mais pourquoi alors cela ne marche pas bien chez moi ? :D Je ne me rappelle plus précisément, mais au fil des essais j'avais fini par avoir l'amplification qui déconnait de plus en plus, avec des chouïnements parasites et fluctuations de son.

    Et si tout simplement mes LA4460 étaient défaillants ? Peut-être, mais où diable vais-je pouvoir trouver ce composant ! Je jette un œil à E44, et Ô miracle, ils l'ont, et il ne coûte que 3 EUR ! ^- Allez, me dis-je, ce soir en rentrant du boulot à vélo, je fais un crochet par E44 et en achète 2 !

    Je dessoude les anciens, soude les nouveaux, et test :

    Yes !! Ça marche ! Plus de Woofe Woofe Woofe Woofe Woofe, plus de chouïnements, et plus de composants brûlants ! :)

    Voilà, mon PCB était alors complètement réparé, ou presque : ne restait que la palette de l'écran titre qui était mauvaise comme sur le PCB d'houple, mais ça il m'a fallu attendre plusieurs mois avant de pouvoir programmer la PROM adéquate :).

    Bilan de cette réparation :
    - 2 PROM => palette des sprites et palette finale
    - 2 amplis LA4460
    - une poignée de condensateurs



    Grâce à Houpela et son PCB inconnu, cela m'aura incité à sortir mon propre PCB Gyruss, et à le réparer !  ^-^

    Merci de m'avoir lu jusqu'au bout !

    À présent, je me dis que je vais peut-être arrêter ces comptes-rendus de WIP détaillés : cela avait pour but de partager et dynamiser la fréquentation de Gamoover, mais si finalement cela décourage d'autres à poster leur WIP comme l'évoque l'encouet plus haut, c'est pour le moins contre-productif  :-[...

    A+
    Recherche 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 : Xenon, Baby Pac Man, Gottlieb des années 80 (Spirit, Amazon Hunt, ...). Divers :  Ice Cold Beer
    Trois fois rien quoi ! :D

    Hors ligne Nostalarcade 90

    • Confirmé
    • *
    • Messages: 126
      • Voir le profil
    [WIP] PCB bootleg Gyruss #2
    « Réponse #4 le: Lundi 13 Mai 2019, 20:20:01 pm »
  •  ^-^super intérressant et instructif. Même si je n'ai pas les compétences pour en faire autant.

    Hors ligne lencouet

    • ✌(◕‿◕)✌ Donateur 2019
    • Confirmé
    • *
    • Messages: 137
    • Localisation: Lot et Garonne
      • Voir le profil
    [WIP] PCB bootleg Gyruss #2
    « Réponse #5 le: Lundi 13 Mai 2019, 20:59:59 pm »
  • Salut mais non!! arrêtes pas!! j'adore lire tes wip ^-^
    Même si je connaissais la fin , pour avoir déjà eu ce probleme :D
    Promis ce soir je vais dans mon atelier avec mon tel pour faire des photos au fur et a mesure et essayer de faire un wip