[WIP 100%] Une GBS8100 bricolée pour jouer à Daytona
Page 1 sur 1
[WIP 100%] Une GBS8100 bricolée pour jouer à Daytona
Après pas mal de temps passé en bricolages divers et réparations inachevées (pour le moment), j'ai décidé de me remettre à Daytona USA (et à Stepmania). J'ai donc dépoussiéré ma vieille station de pilotage et son bon gros (énorme) écran cathodique 16/9.
Je me suis peut-être un peu trop habitué à la qualité d'image des PCB sur un CRT, parce que quand j'ai rebranché mon vieux boîtier de conversion de chez Amazon et sa bonne grosse connectique S-Vidéo, j'ai cru que j'allais faire un malaise.
J'ai donc resorti ma carte GBS8100 bricolée...
Elle est plutôt pas mal, propose une sortie S-Vidéo (que tout le monde utilise), et une sortie RGB (que pas grand monde n'utilise à ma connaissance). Son plus gros défaut au goût du monde entier: les réglages d'image sont perdus quand on coupe l'alimentation! Ca la réserve pour des moniteurs sur lesquels on peut faire les réglages (et on ne fait alors aucun réglage sur la carte elle-même).
Il y a quelques années, j'avais fait un petit bricolage permettant de mémoriser les réglages et de les rejouer en simulant l'appui sur les boutons à l'allumage...
La technique avait quelques limites:
- La carte a tendance à péter un boulon quand on change de résolution (ce qui arrive, par exemple, quand on boote, puisse démarre HyperSpin, puis démarre Model 2 Emulator
- La carte ne prend les réglages en compte que si un signal vidéo est présent. Donc il faut temporiser le chargement des réglages
- C'est toujours du S-Video pas très beau, et il faut basculer le canal de la télé à la main à chaque démarrage (le S-Video n'intègre pas le switch auto).
Au boulot...
Je vais prendre comme base technique la section vidéo du supergun que j'utilise pour mes bricolages de PCB. A savoir: une petite plaquette avec des contacts, des résistances, et une terminaison Peritel.
Ca fonctionne plutôt pas mal quand on sort un signal depuis un PCB (ici, une Pandora Box X).
J'ai un petit doute sur le niveau des signaux qui sortent sur le GBS8100. Je vais les sonder à l'oscilloscope...
On observe un signal à 3.5V. C'est plus haut que ce que sort une Peritel, et de l'ordre de ce que j'observe habituellement sur les PCB. Je vais donc considérer que ce connecteur RGBS sort des signaux identiques à ceux d'un PCB, pour être sûr.
Je vais commencer par le plus pratique pour la suite, la commutation de la télé sur le canal AV. Pour ça, on est censé envoyer 12V sur l'entrée SWITCHING de la Péritel:
(au passage, ce diagramme est franchement top)
Vu que je vais travailler avec des microcontrôleurs à l'ancienne, en 5V, je vais voir si la télé switche avec 5V. Le signal en 5V n'est pas censé commuter une télé 4/3. Il est là uniquement pour spécifier à une télé 16/9 qu'elle doit commuter en mode 16/9.
J'envoie quand même du 5V direct sur le bon pin pour voir...
Et ça commute, yeah!
Maintenant, il va falloir essayer d'afficher une image, tant qu'à faire.
Je câble donc le GBS8100 sur mon petit adaptateur, à coups de pinces crocodiles. C'est vraiment pour tester!
Au passage, j'ai des câbles vraiment nazes sur mon alim stabilisée. Ils sont super fins et super résistifs. Du coup, je dois remonter le niveau de l'alim pour qu'il me reste 5V à l'entrée du GBS (qui consomme 400mA, l'air de rien).
Et le résultat est hyper pas satisfaisant et flippant: un écran noir.
Après vérifications à l'oscillo pour m'assurer que j'ai bien un signal vidéo à la sortie de la carte, je réfléchis un peu et je m'aperçois que je n'ai pas câblé le BLANKING de la Péritel en mode RGB!
Je rajoute le pont nécessaire...
Puis je croise les doigts et j'active l'alim...
Et j'obtiens une image.
Une image moche, mais il y a quelque chose, ça fait toujours plaisir.
Je m'aperçois que les couleurs sont complètement fausses, et je commence à jouer avec l'ordre des fils et les switches de la carte.
J'arrive à des résultats intéressants. Comme une Hornet verte au milieu de la végétation rouge.
Je finis par tout remettre dans l'ordre et obtenir une image qui ressemble à quelque chose.
La preuve de concept est faite, je vais pouvoir coller une Péritel sur cette carte. Alors on va enlever tous ces fils et attaquer une carte proto évolutive. Je repars du schéma historique, que j'avais publié, et c'est parti!
... j'ai détaillé l'analyse du fonctionnement de la carte GBS8100 et de son hack dans la vidéo suivante:
Je me suis peut-être un peu trop habitué à la qualité d'image des PCB sur un CRT, parce que quand j'ai rebranché mon vieux boîtier de conversion de chez Amazon et sa bonne grosse connectique S-Vidéo, j'ai cru que j'allais faire un malaise.
J'ai donc resorti ma carte GBS8100 bricolée...
Elle est plutôt pas mal, propose une sortie S-Vidéo (que tout le monde utilise), et une sortie RGB (que pas grand monde n'utilise à ma connaissance). Son plus gros défaut au goût du monde entier: les réglages d'image sont perdus quand on coupe l'alimentation! Ca la réserve pour des moniteurs sur lesquels on peut faire les réglages (et on ne fait alors aucun réglage sur la carte elle-même).
Il y a quelques années, j'avais fait un petit bricolage permettant de mémoriser les réglages et de les rejouer en simulant l'appui sur les boutons à l'allumage...
La technique avait quelques limites:
- La carte a tendance à péter un boulon quand on change de résolution (ce qui arrive, par exemple, quand on boote, puisse démarre HyperSpin, puis démarre Model 2 Emulator
- La carte ne prend les réglages en compte que si un signal vidéo est présent. Donc il faut temporiser le chargement des réglages
- C'est toujours du S-Video pas très beau, et il faut basculer le canal de la télé à la main à chaque démarrage (le S-Video n'intègre pas le switch auto).
Au boulot...
Je vais prendre comme base technique la section vidéo du supergun que j'utilise pour mes bricolages de PCB. A savoir: une petite plaquette avec des contacts, des résistances, et une terminaison Peritel.
Ca fonctionne plutôt pas mal quand on sort un signal depuis un PCB (ici, une Pandora Box X).
J'ai un petit doute sur le niveau des signaux qui sortent sur le GBS8100. Je vais les sonder à l'oscilloscope...
On observe un signal à 3.5V. C'est plus haut que ce que sort une Peritel, et de l'ordre de ce que j'observe habituellement sur les PCB. Je vais donc considérer que ce connecteur RGBS sort des signaux identiques à ceux d'un PCB, pour être sûr.
Je vais commencer par le plus pratique pour la suite, la commutation de la télé sur le canal AV. Pour ça, on est censé envoyer 12V sur l'entrée SWITCHING de la Péritel:
(au passage, ce diagramme est franchement top)
Vu que je vais travailler avec des microcontrôleurs à l'ancienne, en 5V, je vais voir si la télé switche avec 5V. Le signal en 5V n'est pas censé commuter une télé 4/3. Il est là uniquement pour spécifier à une télé 16/9 qu'elle doit commuter en mode 16/9.
J'envoie quand même du 5V direct sur le bon pin pour voir...
Et ça commute, yeah!
Maintenant, il va falloir essayer d'afficher une image, tant qu'à faire.
Je câble donc le GBS8100 sur mon petit adaptateur, à coups de pinces crocodiles. C'est vraiment pour tester!
Au passage, j'ai des câbles vraiment nazes sur mon alim stabilisée. Ils sont super fins et super résistifs. Du coup, je dois remonter le niveau de l'alim pour qu'il me reste 5V à l'entrée du GBS (qui consomme 400mA, l'air de rien).
Et le résultat est hyper pas satisfaisant et flippant: un écran noir.
Après vérifications à l'oscillo pour m'assurer que j'ai bien un signal vidéo à la sortie de la carte, je réfléchis un peu et je m'aperçois que je n'ai pas câblé le BLANKING de la Péritel en mode RGB!
Je rajoute le pont nécessaire...
Puis je croise les doigts et j'active l'alim...
Et j'obtiens une image.
Une image moche, mais il y a quelque chose, ça fait toujours plaisir.
Je m'aperçois que les couleurs sont complètement fausses, et je commence à jouer avec l'ordre des fils et les switches de la carte.
J'arrive à des résultats intéressants. Comme une Hornet verte au milieu de la végétation rouge.
Je finis par tout remettre dans l'ordre et obtenir une image qui ressemble à quelque chose.
La preuve de concept est faite, je vais pouvoir coller une Péritel sur cette carte. Alors on va enlever tous ces fils et attaquer une carte proto évolutive. Je repars du schéma historique, que j'avais publié, et c'est parti!
... j'ai détaillé l'analyse du fonctionnement de la carte GBS8100 et de son hack dans la vidéo suivante:
Dernière édition par Bouz le Sam 15 Mai 2021 - 21:06, édité 2 fois
Re: [WIP 100%] Une GBS8100 bricolée pour jouer à Daytona
En cherchant bien, je crois qu'on pouvait retrouver les infos de cette carte.
Si je comprends bien tu vas créer un truc qui transforme le RGBS de cette carte pour mettre sur une péritel ?
Ton truc sera même compatible avec ton autre carte adpatateur que tu as en photo sous ta video.
Si je comprends bien tu vas créer un truc qui transforme le RGBS de cette carte pour mettre sur une péritel ?
Ton truc sera même compatible avec ton autre carte adpatateur que tu as en photo sous ta video.
poup- Near-mint
- Messages : 588
Date d'inscription : 03/12/2015
Age : 46
Localisation : 37
Re: [WIP 100%] Une GBS8100 bricolée pour jouer à Daytona
La partie Péritel, c'est facile. Le côté sensible, c'est la mémorisation des réglages (qui sont franchement nazes par défaut).
L'adaptateur, c'est juste un module que je mets sur ma carte de bricolage de PCB. Il a l'avantage d'être raccordé à une prise Péritel femelle. Pratique pour faire les tests, mais il ne fera pas partie du projet final .
Cette carte est très répandue, mais pour autant, elle a ce gros souci de mémorisation. Et vu qu'elle est essentiellement constituée d'un unique chip et d'une ROM, Il ne me semble pas envisageable de tenter un hack de la RAM.
L'adaptateur, c'est juste un module que je mets sur ma carte de bricolage de PCB. Il a l'avantage d'être raccordé à une prise Péritel femelle. Pratique pour faire les tests, mais il ne fera pas partie du projet final .
Cette carte est très répandue, mais pour autant, elle a ce gros souci de mémorisation. Et vu qu'elle est essentiellement constituée d'un unique chip et d'une ROM, Il ne me semble pas envisageable de tenter un hack de la RAM.
Re: [WIP 100%] Une GBS8100 bricolée pour jouer à Daytona
Attention, roman photo à suivre!
Je vais faire le montage sur une plaque de proto, et à base d'Arduino Nano, pour commencer. L'ancien modèle tournait sur un ATTINY84, mais pour développer, c'est bien pratique d'avoir un microcnotrôleur avec un câble USB aux fesses.
J'en ai acheté quelques uns en pensant qu'il s'agissait d'Arduino Pro Micro (ceux qui disposent d'un contrôleur USB programmable).
Je commence par souder de quoi tester les boutons de configuration et leur répétition automatique sur la carte GBS façon Simon.
Je fais plus simple que la dernière fois. Au lieu d'utiliser des optocoupleurs, j'utilise un circuit intégré Darlingon ULN2803. Vu que je partage la masse avec le GBS, les opto n'ont aucun intérêt (on apprend avec le temps).
Je bricole un câble d'alim pour relier les modules entre eux, mon montage est alimenté par le GBS8100. Au passage, j'ai horreur de sertir des câbles, j'ai un taux de ratage assez important. Ce n'est pas mon truc.
Il ne reste qu'à tout relier pour un premier test.
Je reparts du code source de mon projet précédent, que je modifie pour l'adapter à l'Arduino Nano...
Et le test est concluant: je fais une config dans le vide (parce que je n'ai pas d'affichage) et le circuit la rejoue!
J'ai acheté un lot de prises Peritel femelles, parce que j'en bave avec tous mes superguns pour adapter ça proprement.
L'écartement des pins n'est pas du tout au format 1/10 de pouce, et les pins sont alternés. Par chance, on dirait qu'un pin sur 2 tombe en face des trous, et que justement, un pin sur deux est utilisé!
Je replie donc les pins inutilisés et je soude les autres.
De l'autre côté, vu que je tombe sur une piste d'alimentation qui court-circuite tous les pins d'une rangée, je dois couper la piste en petits tronçons au cutter.
On va maintenant s'occuper de l'image. Vu que je n'ai pas de prises RGBS à sertir, si de terminaux mâles à souder sur ma carte, je passe par la case soudure sous le connecteur de la carte.
Ensuite, je relie les résistances de 390 ohms qui relient les signaux RGBS de la carte et ceux de la prise Peritel.
Pour avoir une image, il faut également câbler la commutation. Maintenant que je sais qu'on peut commuter en mode 4/3 ou en mode 16/9 suivant la tension d'entrée, je prévois un cavalier pour basculer d'un mode à l'autre.
Pour obtenir le 12V à partir d'une alimentation 5V, j'utilise un module de boost (un petit module à découpage). Par défaut, il me sort une trentaine de volts. A coups d'un paquet de tours de tournevis, je le ramène à 12V.
On assemble tout ça et on teste!
J'ai une image, et les réglages se déclenchent bien quand je redémarre le microcontrôleur!
Maintenant, il est temps de s'attaquer à un souci qui m'avait bien gonflé dans la première édition: il est impossible d'activer le menu de configuration tant qu'on n'a pas de signal en entrée. Du coup, on doit temporiser pour être sûr que quelque chose est affiché à l'écran avant de lancer la config. C'est un peu trop aléatoire pour mon goût.
Je me connecte sur le signal de synchro pour voir à quel moment elle s'active...
Et surprise... on a un signal de synchro de sortie dès que le GBS démarre. Même si on n'a pas de signal de synchro en entrée!
Plan B: j'observe un signal de couleur (le vert). Ca, au moins, je suis sûr qu'il n'y en a pas (sinon on le verrait à l'écran). J'observe bien un signal uniquement quand le GBS affiche quelque chose.
Vu que j'ai déjà le signal vert sur ma carte, je vais y ajouter un circuit de détection.
L'idée de base est de charger un condensateur avec la tension du signal vert. Ensuite, je compare la tension aux bornes du condensateur avec une tension de référence de 1V. Si je suis au-dessus, c'est que j'ai une image.
Mais comme le signal est à relativement haute impédence, si je charge un condensateur avec, je vais carrément détraquer le vert sur l'image produite.
Du coup, j'utilise un ampli op en mode suiveur. Ne consommant pas de courant sur ses entrées, il laisse intact le signal source. Comme c'est un montage suiveur, il me sort un signal de même forme, et avec une impédence bien plus faible. Et quand bien même je déforme ce signal de sortie, le signal d'entrée reste isolé à l'entrée. Ouf.
Je colle, aux bornes du condensateur, un comparateur avec une entrée inverseuse fixée à 1V. Du coup, la sortie vaudra 0V en l'absence de signal, et 5V si un signal est détecté. Et ça, c'est un signal TTL que mon microcontrôleur peut comprendre!
Voilà les deux circuits à 8 pattes (l'ampli op et le comparateur). Pour le fun (?), j'ai rajouté une LED rouge qui s'allume uniquement en l'absence de détection de signal de sortie.
Voilà ce que ça donne à l'ocillo... En bleu, le signal vert produit par le GBS. En rouge, le signal aux bornes du condensateur. Il est carrément lissé.
Après une petite modif du code source, dès l'instant où je branche le câble VGA sur l'entrée du GBS, ça déclenche le pilotage de la configuration!
Par contre, petit souci avec cette horreur de carte... Je fais un test en conditions réelles: j'alimente la carte, puis je démarre le PC et j'observe...
Le PC envoie un signal quelques secondes, puis le coupe, puis en émet un nouveau. La logique voudrait que le microcontrôleur détecte cette fluctuation. Oui, sauf que le GBS, gros malin qu'il est, renvoie des barres colorées dans l'intervalle. Et quand il affiche ces barres, il refuse qu'on lui applique une configuration!
Je passe donc au plan C... Au lieu de détecter la présence d'un signal de sortie sur le vert, je me résigne à ajouter un nouveau fil et à détecter un signal de synchro horizontale sur le port VGA en entrée!
On observe un signal tellement classe que je me demande pourquoi je ne l'ai pas récupéré avant.
Par contre, étant donné que le signal disparait, puis réapparait, le microcontrôleur envoie de la config une fois, et pas les suivantes. Pour le coup, quand le GBS reçoit une configuration, rien ne dit qu'elle sera toujours prise en compte quand le 2nd signal apparait (ce n'est pas le cas, je vous fais grâce des photos).
Au point où j'en suis, la meilleure solution que je vois consiste à redémarre le GBS à chaque fois que je détecte l'apparition d'un signal d'entrée.
Pour ça, ma première idée était d'utiliser un MOSFET, ou un Darlington pour couper et alimenter le GBS depuis ma carte.
Je fais le tour de mes tiroirs à composants, et je trouve deux bons candidats. Mais d'un coup, le doute m'étreint. Ces composants sont à canal N (pour le MOSFET) ou NPN (pour le Darlington). Du coup, leur boulot, c'est de couper la masse (le pôle "-") et pas le +5V. Dans les faits, on pourrait dire qu'on s'en fout parce qu'il faut les 2 fils pour que ça marche.
Oui, mais le souci, c'est que la masse, on la retrouve ailleurs sur la liaison, et notamment dans la prise VGA!
Conclusion: il me faut n'importe quoi de PNP. Et ça, je n'en ai pas des masses Du coup, je me rabats sur un assortiment de transistors venus de Chine dans leur jolie petite boîte. Je me cogne toutes les specs pour trouver les transistors PNP du lot, et identifier ceux qui supporteraient le courant consommé par le GBS, à savoir 400mA. J'ai la chance de trouver l'une des références qui ferait l'affaire: le BC327 peut drainer jusqu'à 800mA. Je ne suis pas certain de l'authenticité du composants, mais la fumée me dira s'il tient effectivement la charge.
Je vais faire le montage sur une plaque de proto, et à base d'Arduino Nano, pour commencer. L'ancien modèle tournait sur un ATTINY84, mais pour développer, c'est bien pratique d'avoir un microcnotrôleur avec un câble USB aux fesses.
J'en ai acheté quelques uns en pensant qu'il s'agissait d'Arduino Pro Micro (ceux qui disposent d'un contrôleur USB programmable).
Je commence par souder de quoi tester les boutons de configuration et leur répétition automatique sur la carte GBS façon Simon.
Je fais plus simple que la dernière fois. Au lieu d'utiliser des optocoupleurs, j'utilise un circuit intégré Darlingon ULN2803. Vu que je partage la masse avec le GBS, les opto n'ont aucun intérêt (on apprend avec le temps).
Je bricole un câble d'alim pour relier les modules entre eux, mon montage est alimenté par le GBS8100. Au passage, j'ai horreur de sertir des câbles, j'ai un taux de ratage assez important. Ce n'est pas mon truc.
Il ne reste qu'à tout relier pour un premier test.
Je reparts du code source de mon projet précédent, que je modifie pour l'adapter à l'Arduino Nano...
Et le test est concluant: je fais une config dans le vide (parce que je n'ai pas d'affichage) et le circuit la rejoue!
J'ai acheté un lot de prises Peritel femelles, parce que j'en bave avec tous mes superguns pour adapter ça proprement.
L'écartement des pins n'est pas du tout au format 1/10 de pouce, et les pins sont alternés. Par chance, on dirait qu'un pin sur 2 tombe en face des trous, et que justement, un pin sur deux est utilisé!
Je replie donc les pins inutilisés et je soude les autres.
De l'autre côté, vu que je tombe sur une piste d'alimentation qui court-circuite tous les pins d'une rangée, je dois couper la piste en petits tronçons au cutter.
On va maintenant s'occuper de l'image. Vu que je n'ai pas de prises RGBS à sertir, si de terminaux mâles à souder sur ma carte, je passe par la case soudure sous le connecteur de la carte.
Ensuite, je relie les résistances de 390 ohms qui relient les signaux RGBS de la carte et ceux de la prise Peritel.
Pour avoir une image, il faut également câbler la commutation. Maintenant que je sais qu'on peut commuter en mode 4/3 ou en mode 16/9 suivant la tension d'entrée, je prévois un cavalier pour basculer d'un mode à l'autre.
Pour obtenir le 12V à partir d'une alimentation 5V, j'utilise un module de boost (un petit module à découpage). Par défaut, il me sort une trentaine de volts. A coups d'un paquet de tours de tournevis, je le ramène à 12V.
On assemble tout ça et on teste!
J'ai une image, et les réglages se déclenchent bien quand je redémarre le microcontrôleur!
Maintenant, il est temps de s'attaquer à un souci qui m'avait bien gonflé dans la première édition: il est impossible d'activer le menu de configuration tant qu'on n'a pas de signal en entrée. Du coup, on doit temporiser pour être sûr que quelque chose est affiché à l'écran avant de lancer la config. C'est un peu trop aléatoire pour mon goût.
Je me connecte sur le signal de synchro pour voir à quel moment elle s'active...
Et surprise... on a un signal de synchro de sortie dès que le GBS démarre. Même si on n'a pas de signal de synchro en entrée!
Plan B: j'observe un signal de couleur (le vert). Ca, au moins, je suis sûr qu'il n'y en a pas (sinon on le verrait à l'écran). J'observe bien un signal uniquement quand le GBS affiche quelque chose.
Vu que j'ai déjà le signal vert sur ma carte, je vais y ajouter un circuit de détection.
L'idée de base est de charger un condensateur avec la tension du signal vert. Ensuite, je compare la tension aux bornes du condensateur avec une tension de référence de 1V. Si je suis au-dessus, c'est que j'ai une image.
Mais comme le signal est à relativement haute impédence, si je charge un condensateur avec, je vais carrément détraquer le vert sur l'image produite.
Du coup, j'utilise un ampli op en mode suiveur. Ne consommant pas de courant sur ses entrées, il laisse intact le signal source. Comme c'est un montage suiveur, il me sort un signal de même forme, et avec une impédence bien plus faible. Et quand bien même je déforme ce signal de sortie, le signal d'entrée reste isolé à l'entrée. Ouf.
Je colle, aux bornes du condensateur, un comparateur avec une entrée inverseuse fixée à 1V. Du coup, la sortie vaudra 0V en l'absence de signal, et 5V si un signal est détecté. Et ça, c'est un signal TTL que mon microcontrôleur peut comprendre!
Voilà les deux circuits à 8 pattes (l'ampli op et le comparateur). Pour le fun (?), j'ai rajouté une LED rouge qui s'allume uniquement en l'absence de détection de signal de sortie.
Voilà ce que ça donne à l'ocillo... En bleu, le signal vert produit par le GBS. En rouge, le signal aux bornes du condensateur. Il est carrément lissé.
Après une petite modif du code source, dès l'instant où je branche le câble VGA sur l'entrée du GBS, ça déclenche le pilotage de la configuration!
Par contre, petit souci avec cette horreur de carte... Je fais un test en conditions réelles: j'alimente la carte, puis je démarre le PC et j'observe...
Le PC envoie un signal quelques secondes, puis le coupe, puis en émet un nouveau. La logique voudrait que le microcontrôleur détecte cette fluctuation. Oui, sauf que le GBS, gros malin qu'il est, renvoie des barres colorées dans l'intervalle. Et quand il affiche ces barres, il refuse qu'on lui applique une configuration!
Je passe donc au plan C... Au lieu de détecter la présence d'un signal de sortie sur le vert, je me résigne à ajouter un nouveau fil et à détecter un signal de synchro horizontale sur le port VGA en entrée!
On observe un signal tellement classe que je me demande pourquoi je ne l'ai pas récupéré avant.
Par contre, étant donné que le signal disparait, puis réapparait, le microcontrôleur envoie de la config une fois, et pas les suivantes. Pour le coup, quand le GBS reçoit une configuration, rien ne dit qu'elle sera toujours prise en compte quand le 2nd signal apparait (ce n'est pas le cas, je vous fais grâce des photos).
Au point où j'en suis, la meilleure solution que je vois consiste à redémarre le GBS à chaque fois que je détecte l'apparition d'un signal d'entrée.
Pour ça, ma première idée était d'utiliser un MOSFET, ou un Darlington pour couper et alimenter le GBS depuis ma carte.
Je fais le tour de mes tiroirs à composants, et je trouve deux bons candidats. Mais d'un coup, le doute m'étreint. Ces composants sont à canal N (pour le MOSFET) ou NPN (pour le Darlington). Du coup, leur boulot, c'est de couper la masse (le pôle "-") et pas le +5V. Dans les faits, on pourrait dire qu'on s'en fout parce qu'il faut les 2 fils pour que ça marche.
Oui, mais le souci, c'est que la masse, on la retrouve ailleurs sur la liaison, et notamment dans la prise VGA!
Conclusion: il me faut n'importe quoi de PNP. Et ça, je n'en ai pas des masses Du coup, je me rabats sur un assortiment de transistors venus de Chine dans leur jolie petite boîte. Je me cogne toutes les specs pour trouver les transistors PNP du lot, et identifier ceux qui supporteraient le courant consommé par le GBS, à savoir 400mA. J'ai la chance de trouver l'une des références qui ferait l'affaire: le BC327 peut drainer jusqu'à 800mA. Je ne suis pas certain de l'authenticité du composants, mais la fumée me dira s'il tient effectivement la charge.
poup- Near-mint
- Messages : 588
Date d'inscription : 03/12/2015
Age : 46
Localisation : 37
Re: [WIP 100%] Une GBS8100 bricolée pour jouer à Daytona
Et la fin du suspense
Au passage, le magnifique calcul de la résistance sur la base du transistor pour le saturer. Si je ne le sature pas, il va chauffer à bloc.
J'arrive à un peu plus de 3k, j'arrondis à 3k, je fais des tests et mon alim m'indique qu'elle ne sort que 200mA sur les 400mA que j'observais avant. Conclusion: le transistor n'est pas saturé!
Vu que j'avais soudé la resistance, tout confiant, j'accroche des résistances en parallèle avec la résistance soudée jusqu'à ce que j'observe la saturation. Je me retrouve avec une résistance équivalente de 1k, j'y étais presque .
Je teste ensuite le nouveau montage. La détection se fait bien, même quand la carte m'affiche ses bandes colorées!
Par contre, j'avais pris le parti de couper l'alim du GBS quand je n'avais pas de signal. Et ce n'est pas une bonne idée. En fait, le transistor PNP, pour couper le courant, doit voir une tension la plus proche possible de zéro (à la tension seuil près?) entre le collecteur et la base. Or ici, j'ai une alimentation du GBS qui est autour des 6V, alors que la tension de commande est en TTL, soit un peu moins de 5V.
Résultat: le transistor est légèrement passant (et donc pas saturé), et il chauffe à bloc quand l'alim est coupée!
Je modifie donc le code pour qu'il se contente de "redémarrer" le GBS quand une image apparait. Il coupe l'alim une seconde et la rétablit. Le GBS perd ses réglages et repart avec ses valeurs par défaut.
Je lance MAME avec un Street Fighter 2 et son menu service pour essayer de calibrer les couleurs...
Malgré tous les réglages sur la carte, je n'arrive pas à avoir une dynamique satisfaisante. Je me retrouve avec les 4 ou 5 cases de gauche du même niveau de luminosité. Je vais remplacer les résistances de 390 ohms que j'avais intercalées sur les 4 composantes, par des potars de 2k parce que je n'ai que ça sous la main. Je les utilise en résistances ajustables, avec seulement 2 pattes.
J'attaque les réglages à coups de tournevis. C'est sensible, ce sera mieux avec des potars plus petits!
Après moult bricolage, j'obtiens une belle image avec les couleurs vert et bleu qui se mélangent. Oui, parce que j'ai créé un pont partiel de soudure, et j'ai une résistance de 20 ohms qui apparait entre les deux fils. Très pratique à diagnostiquer.
Je règle ça et j'obtiens une image satisfaisante. Je refais un ultime test, tout content de moi. J'arrête le PC, je branche tout correctement, je démarre le PC et j'observe.
J'observe un truc nouveau que je n'avais pas prévu... La prise VGA sort un signal, qui (re)démarre le GBS, la configuration commence à s'appliquer, puis la prise VGA m'envoie une grosse perturbation moisie qui me fait sauter l'image, mais sans interruption => la configuration continue de s'appliquer sur une image naze, et hop, c'est bon, j'arrive sur mon bureau Windows avec une image pas réglée .
Je soupçonne un changement de fréquence de la sortie VGA. Je ne peux pas contrôler ça avec mon oscilloscope, vu que c'est un oscilloscope USB, qui tourne sur le PC (qui n'a pas encore démarré).
Je dégaine mon générateur de signaux, qui a une entrée "compteur", qui sait compter des fréquences.
J'observe bien une variation de fréquence. L'affichage sort sur une résolution pendant le démarrage, puis bascule sur la résolution configurée une fois Windows démarré.
Plan C ou D, je ne sais plus.... Au lieu de juste détecter un signal d'entrée, je vais détecter les variations de fréquence, et redémarrer le GBS si je détecte un changement significatif.
Pour ça, je vais faire des échantillonnages en boucle. L'idée est d'attendre une période fixe de 10ms et de compter les impulsions. Pour compter avec précision, il faut utiliser une interruption matérielle, pilotée par le signal HSync.
Et pour faire ça sur ce microcontrôleur, il faut utiliser les pins 2 ou 3. Et bien-sûr, ces pins sont déjà utilisés. Et pour le reste du code, il faut que les pins utilisés pour lire et stimuler les boutons soient contigus.
Pour faire simple, il faut que je décale 10 soudures d'un cran vers la droite, super!
Je refais donc les soudures, le code qui compte les fréquences, et je fais un test: je lance Daytona USA, et je reviens au bureau. Oui, parce que Daytona, il tourne en 31kHz:
Résultat: quand je lance le mode fullscreen ou quand je retourne à la vue fenêtre, je bascule de 31kHz à 48kHz, le GBS est redémarré et les paramètres sont réappliqués.
Le système résiste aussi à l'épreuve du démarrage du PC, ça va le faire!
Maitenant, se pose la question de l'alimentation. J'ai noté qu'il me fallait au minimum 6.2V sur ma carte pour faire tourner correctement le GBS. Probablement, entre autres choses, à cause de la résistances de mes câbles tout pourris. Je ne compte pas installer mon alim de labo dans ma borne, alors je regarde ce que j'ai sous la main...
Je trouve des transfo 5V que je collecte quand j'en trouve, mais c'est trop bas.
Je trouve un transfo 6.5V, super! Mais il sort du 6.5V alternatif!
Je trouve un transfo 9V mais c'est celui de mon étiqueteuse (j'y ai cru).
Et je trouve un transfo 12V, et ça, c'est plutôt cool.
Par contre, ça fait 6V à absorber. La carte Arduino intègre un régulateur linéaire 5V. Ca va chauffer, mais pas beaucoup, parce qu'il y a finalement assez peu de composants actifs sur la plaque.
Côté GBS8100, on trouve aussi un régulateur. Vu que j'ai des yeux de papy, je dégaine mon microscope pour voir ça:
Il s'agit d'un régulateur linéaire 3.3V. Il alimente le buffer, la ROM et le microcontrôleur. Je suis donc censé être tranquille si je rentre une tension trop élevée. Au passage, on note une diode en série avec l'entrée du régulateur, qui doit occasionner une chute de tension. Ajoutée à la marge de tension attendue par le régulateur, il n'est pas surprenant qu'il faille finalement bien plus de 3.3V en entrée pour avoir 3.3V en sortie.
Après le module à découpage "boost converter" que j'avais utilisée pour générer du 12V pour switcher le canal AV, j'utilise son copain le "buck converter", qui me permet de régler une tension de sortie à 6.5V quelle que soit la tension d'entrée (supérieure à 7.5V environ). C'est encore un module à découpage, avec un rendement à plus de 90% (vs les 40% du dégulateur linéaire). Ca ne va pas chauffer et ça me sortira toujours ma tension voulue. Ca prend 35V en entrée et ça balance plusieurs ampères. C'est over-kill, mais je n'ai que ça sous la main
Et ça marche impec. Je n'utilise plus d'alim stabilisée, ni le port USB du Nano, tout passe par le convertisseur réglé en 6.5V!
Joie, il est temps de monter ça dans mon "meuble de conduite et de danse". Mais pour éviter les court-circuits et les arrachements de câbles, je passe par la case "colle chaude". L'idée est de fixer les fils sous la carte pour augmenter la résistance à la traction.
Oui, la colle chaude, c'est dégueulasse, mais ça marche.
Un petit crosshatch pour tout bien régler...
Oui, mon yoke a tourné, et j'ai un souci de dégauss en haut à droite. Mais quand on joue, ça ne se voit pas!
Note pour plus tard: faire une carte dédiée pour avoir moins de fils de partout. Ca prend de la place!
Et plus qu'à jouer. L'image n'a rien à voir avec celle que j'avais avant en S-Vidéo!
Au final, je suis plutôt content du résultat. Je vais sérieusement réfléchir à produire une carte qui contient tout ça, histoire d'avoir quelque chose de plus compact.
Je me pose aussi des questions sur mon module Amazon, basé sur une puce qui propose exactement le même menu, mais dont les réglages sont persistants. Par contre, sur celle-ci, pas de RGB.
Cela dit, j'avais regardé les specs il y a quelques années, et je me souviens que la puce était capable d'en produire.
S'agirait-il d'une puce standard, intégrée avec les pieds sur le GBS8100?
On va voir si mon courage m'amène plus loin, mais le prochain projet immédiat consistera à remettre au goût du jour l'afficheur à LED que j'avais fait pour communiquer avec Daytona sur l'émulateur Model2, en commençant par les boutons de vue. Oui, parce que j'adore conduire en vue intérieure ou capot pour avoir une meilleure sensation de vitesse, et c'est hyper casse bonbons de devoir cycler les vues avec un seul bouton (tout est relatif).
Au passage, le magnifique calcul de la résistance sur la base du transistor pour le saturer. Si je ne le sature pas, il va chauffer à bloc.
J'arrive à un peu plus de 3k, j'arrondis à 3k, je fais des tests et mon alim m'indique qu'elle ne sort que 200mA sur les 400mA que j'observais avant. Conclusion: le transistor n'est pas saturé!
Vu que j'avais soudé la resistance, tout confiant, j'accroche des résistances en parallèle avec la résistance soudée jusqu'à ce que j'observe la saturation. Je me retrouve avec une résistance équivalente de 1k, j'y étais presque .
Je teste ensuite le nouveau montage. La détection se fait bien, même quand la carte m'affiche ses bandes colorées!
Par contre, j'avais pris le parti de couper l'alim du GBS quand je n'avais pas de signal. Et ce n'est pas une bonne idée. En fait, le transistor PNP, pour couper le courant, doit voir une tension la plus proche possible de zéro (à la tension seuil près?) entre le collecteur et la base. Or ici, j'ai une alimentation du GBS qui est autour des 6V, alors que la tension de commande est en TTL, soit un peu moins de 5V.
Résultat: le transistor est légèrement passant (et donc pas saturé), et il chauffe à bloc quand l'alim est coupée!
Je modifie donc le code pour qu'il se contente de "redémarrer" le GBS quand une image apparait. Il coupe l'alim une seconde et la rétablit. Le GBS perd ses réglages et repart avec ses valeurs par défaut.
Je lance MAME avec un Street Fighter 2 et son menu service pour essayer de calibrer les couleurs...
Malgré tous les réglages sur la carte, je n'arrive pas à avoir une dynamique satisfaisante. Je me retrouve avec les 4 ou 5 cases de gauche du même niveau de luminosité. Je vais remplacer les résistances de 390 ohms que j'avais intercalées sur les 4 composantes, par des potars de 2k parce que je n'ai que ça sous la main. Je les utilise en résistances ajustables, avec seulement 2 pattes.
J'attaque les réglages à coups de tournevis. C'est sensible, ce sera mieux avec des potars plus petits!
Après moult bricolage, j'obtiens une belle image avec les couleurs vert et bleu qui se mélangent. Oui, parce que j'ai créé un pont partiel de soudure, et j'ai une résistance de 20 ohms qui apparait entre les deux fils. Très pratique à diagnostiquer.
Je règle ça et j'obtiens une image satisfaisante. Je refais un ultime test, tout content de moi. J'arrête le PC, je branche tout correctement, je démarre le PC et j'observe.
J'observe un truc nouveau que je n'avais pas prévu... La prise VGA sort un signal, qui (re)démarre le GBS, la configuration commence à s'appliquer, puis la prise VGA m'envoie une grosse perturbation moisie qui me fait sauter l'image, mais sans interruption => la configuration continue de s'appliquer sur une image naze, et hop, c'est bon, j'arrive sur mon bureau Windows avec une image pas réglée .
Je soupçonne un changement de fréquence de la sortie VGA. Je ne peux pas contrôler ça avec mon oscilloscope, vu que c'est un oscilloscope USB, qui tourne sur le PC (qui n'a pas encore démarré).
Je dégaine mon générateur de signaux, qui a une entrée "compteur", qui sait compter des fréquences.
J'observe bien une variation de fréquence. L'affichage sort sur une résolution pendant le démarrage, puis bascule sur la résolution configurée une fois Windows démarré.
Plan C ou D, je ne sais plus.... Au lieu de juste détecter un signal d'entrée, je vais détecter les variations de fréquence, et redémarrer le GBS si je détecte un changement significatif.
Pour ça, je vais faire des échantillonnages en boucle. L'idée est d'attendre une période fixe de 10ms et de compter les impulsions. Pour compter avec précision, il faut utiliser une interruption matérielle, pilotée par le signal HSync.
Et pour faire ça sur ce microcontrôleur, il faut utiliser les pins 2 ou 3. Et bien-sûr, ces pins sont déjà utilisés. Et pour le reste du code, il faut que les pins utilisés pour lire et stimuler les boutons soient contigus.
Pour faire simple, il faut que je décale 10 soudures d'un cran vers la droite, super!
Je refais donc les soudures, le code qui compte les fréquences, et je fais un test: je lance Daytona USA, et je reviens au bureau. Oui, parce que Daytona, il tourne en 31kHz:
Résultat: quand je lance le mode fullscreen ou quand je retourne à la vue fenêtre, je bascule de 31kHz à 48kHz, le GBS est redémarré et les paramètres sont réappliqués.
Le système résiste aussi à l'épreuve du démarrage du PC, ça va le faire!
Maitenant, se pose la question de l'alimentation. J'ai noté qu'il me fallait au minimum 6.2V sur ma carte pour faire tourner correctement le GBS. Probablement, entre autres choses, à cause de la résistances de mes câbles tout pourris. Je ne compte pas installer mon alim de labo dans ma borne, alors je regarde ce que j'ai sous la main...
Je trouve des transfo 5V que je collecte quand j'en trouve, mais c'est trop bas.
Je trouve un transfo 6.5V, super! Mais il sort du 6.5V alternatif!
Je trouve un transfo 9V mais c'est celui de mon étiqueteuse (j'y ai cru).
Et je trouve un transfo 12V, et ça, c'est plutôt cool.
Par contre, ça fait 6V à absorber. La carte Arduino intègre un régulateur linéaire 5V. Ca va chauffer, mais pas beaucoup, parce qu'il y a finalement assez peu de composants actifs sur la plaque.
Côté GBS8100, on trouve aussi un régulateur. Vu que j'ai des yeux de papy, je dégaine mon microscope pour voir ça:
Il s'agit d'un régulateur linéaire 3.3V. Il alimente le buffer, la ROM et le microcontrôleur. Je suis donc censé être tranquille si je rentre une tension trop élevée. Au passage, on note une diode en série avec l'entrée du régulateur, qui doit occasionner une chute de tension. Ajoutée à la marge de tension attendue par le régulateur, il n'est pas surprenant qu'il faille finalement bien plus de 3.3V en entrée pour avoir 3.3V en sortie.
Après le module à découpage "boost converter" que j'avais utilisée pour générer du 12V pour switcher le canal AV, j'utilise son copain le "buck converter", qui me permet de régler une tension de sortie à 6.5V quelle que soit la tension d'entrée (supérieure à 7.5V environ). C'est encore un module à découpage, avec un rendement à plus de 90% (vs les 40% du dégulateur linéaire). Ca ne va pas chauffer et ça me sortira toujours ma tension voulue. Ca prend 35V en entrée et ça balance plusieurs ampères. C'est over-kill, mais je n'ai que ça sous la main
Et ça marche impec. Je n'utilise plus d'alim stabilisée, ni le port USB du Nano, tout passe par le convertisseur réglé en 6.5V!
Joie, il est temps de monter ça dans mon "meuble de conduite et de danse". Mais pour éviter les court-circuits et les arrachements de câbles, je passe par la case "colle chaude". L'idée est de fixer les fils sous la carte pour augmenter la résistance à la traction.
Oui, la colle chaude, c'est dégueulasse, mais ça marche.
Un petit crosshatch pour tout bien régler...
Oui, mon yoke a tourné, et j'ai un souci de dégauss en haut à droite. Mais quand on joue, ça ne se voit pas!
Note pour plus tard: faire une carte dédiée pour avoir moins de fils de partout. Ca prend de la place!
Et plus qu'à jouer. L'image n'a rien à voir avec celle que j'avais avant en S-Vidéo!
Au final, je suis plutôt content du résultat. Je vais sérieusement réfléchir à produire une carte qui contient tout ça, histoire d'avoir quelque chose de plus compact.
Je me pose aussi des questions sur mon module Amazon, basé sur une puce qui propose exactement le même menu, mais dont les réglages sont persistants. Par contre, sur celle-ci, pas de RGB.
Cela dit, j'avais regardé les specs il y a quelques années, et je me souviens que la puce était capable d'en produire.
S'agirait-il d'une puce standard, intégrée avec les pieds sur le GBS8100?
On va voir si mon courage m'amène plus loin, mais le prochain projet immédiat consistera à remettre au goût du jour l'afficheur à LED que j'avais fait pour communiquer avec Daytona sur l'émulateur Model2, en commençant par les boutons de vue. Oui, parce que j'adore conduire en vue intérieure ou capot pour avoir une meilleure sensation de vitesse, et c'est hyper casse bonbons de devoir cycler les vues avec un seul bouton (tout est relatif).
Re: [WIP 100%] Une GBS8100 bricolée pour jouer à Daytona
Ha génial à la fin ce sont les gentils qui gagnent et en plus un teasing pour une saison 2.
C'est quoi ton module amazon ?
C'est quoi ton module amazon ?
poup- Near-mint
- Messages : 588
Date d'inscription : 03/12/2015
Age : 46
Localisation : 37
Re: [WIP 100%] Une GBS8100 bricolée pour jouer à Daytona
Un boîtier comme ça:
https://www.amazon.fr/Adaptateur-convertisseur-Composite-moniteurs-Ordinateur/dp/B08FD54G3T/ref=sr_1_10
Teasing: Ce convertisseur peut facilement vous aider à convertir le signal VGA en signal vidéo / S vidéo / AV. De cette manière, les films que vous téléchargez à partir d'Internet peuvent être complètement fusionnés dans le cinéma maison et vous pouvez facilement ressentir l'effet cinéma.
https://www.amazon.fr/Adaptateur-convertisseur-Composite-moniteurs-Ordinateur/dp/B08FD54G3T/ref=sr_1_10
Teasing: Ce convertisseur peut facilement vous aider à convertir le signal VGA en signal vidéo / S vidéo / AV. De cette manière, les films que vous téléchargez à partir d'Internet peuvent être complètement fusionnés dans le cinéma maison et vous pouvez facilement ressentir l'effet cinéma.
Re: [WIP 100%] Une GBS8100 bricolée pour jouer à Daytona
Pour ceux que ça intéresse, je fais une analyse plutôt détaillée de la carte GBS8100 et j'explique le hack en essayant de ne pas être trop lourd dans une vidéo:
Re: [WIP 100%] Une GBS8100 bricolée pour jouer à Daytona
Merci .
Je vais vous laisser respirer un moment avec les WIP, je peux enfin jouer décemment à Daytona USA à la maison!
Je vais vous laisser respirer un moment avec les WIP, je peux enfin jouer décemment à Daytona USA à la maison!
Re: [WIP 100%] Une GBS8100 bricolée pour jouer à Daytona
Bien ça !
_________________
"Il est indispensable d'avoir une euro dans un setup arcade" :Raditz 2/02/2018.
John Caffe le 25/09/2018:"Je comprends mieux ta remarque. Toi, t'es au moins ingénieur, et probablement inscrit à Mensa "
Re: [WIP 100%] Une GBS8100 bricolée pour jouer à Daytona
Joker a écrit:Bien ça !
Merci! En tout cas, c'est pratique
Sujets similaires
» [WIP 120%] Un panneau de commande pour Daytona USA
» Quel stick sur PC pour jouer à du SNK ?
» Jouer en TATE sur Switch en mode portable
» 18 ans plus tard...Daytona USA 3 !
» Razoola met en téléchargement libre l'UniBios 4.0 pour AES/ MVS & 3.3 pour NGCD
» Quel stick sur PC pour jouer à du SNK ?
» Jouer en TATE sur Switch en mode portable
» 18 ans plus tard...Daytona USA 3 !
» Razoola met en téléchargement libre l'UniBios 4.0 pour AES/ MVS & 3.3 pour NGCD
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|