Jeux vidéo › Arcade

RecalStick -1-

Aujourd'hui on va fabriquer un RecalStick !… Un stick avec RecalBox dedans.
Je dispose en effet d'un écran cathodique qui ne demande qu'à afficher de belles images, et d'un Raspberry Pi 4 sur lequel j'ai enfin testé la distribution Recalbox, boite à émulateurs permettant d'exécuter des jeux vidéos d’antan, et je voulais une solution pour faire fonctionner ça joliment.


  • L'émulation sur ce genre de plate-forme étant enfin à peu prés potable, par la puissance maintenant correcte du Rpi – le 4 c'est bien, le 5 je pense qu'on ne fera pas mieux – pour émuler des jeux d'Arcade, et le rendu graphique excellent notamment grâce au module VGA666 compatible avec Recalbox.

On le trouve pour moins de 5€, il suffit de l'enficher sur le Rpi, d'y connecter un câble VGA,

  • alors on pourra brancher ça sur la vieille télé en intercalant un adaptateur VGA vers Péritel câblé comme ceci :
      Prise VGA                —        Prise Péritel

Pin N°1: Vidéo Rouge           —     Pin N°15: Rouge
Pin N°2: Vidéo Vert            —     Pin N°11: Vert
Pin N°3: Vidéo Bleu            —     Pin N°7:  Bleu
Pin N°6: Retour rouge          —     Pin N°13: Masse Rouge
Pin N°7: Retour vert           —     Pin N°9:  Masse Verte
Pin N°8: Retour bleu           —     Pin N°5:  Masse Bleue
Pin N°9: +5 V                  —     Pin N°8:  SWITCH
Pin N°10: Masse                —     Pin N°17: Masse Synchro
Pin N°13: HSync et N°14: VSync —     Pin N°20: Synchro.

Ajouter une résistance de 75 Ohms entre la Pin 8 et 16 de la prise péritel, permet, grâce au 5V en provenance de la carte vidéo, de basculer le TV en RVB sur l'entrée AV.
dsc07537.jpg dsc07535.jpg
On préféra néanmoins utiliser un circuit plus malin que ces branchements assez rustres (attention cependant, le RaspberryPi+VGA666 ne délivrent pas +5V sur la pin VGA 9).

Ok, donc on a le micro-ordinateur pour faire tourner des jeux branchés à la TV, il manque la manette et une boite pour l'ordinateur.
Et bien on va combiner les deux pour donc fabriquer (encore !) une sorte de TV Game.


Les plans :

Disponibles en annexe à ce billet, j'ai dessiné le modèle 3D en fonction de plusieurs facteurs importants :
– Je souhaitais que le stick arcade ressemble au Hori Real Arcade Pro VX
– Qu'on puisse l'utiliser posé sur ses genoux
– Qu'il intègre donc le Rpi4
– Qu'on puisse brancher directement les câbles VGA, audio, et alimentation sur le boîtier du stick
– Et aussi un HDMI, comme ça on ne se limite pas aux écrans cathodiques
– Que l'on puisse brancher le câble USB du stick sur évidement le Rpi, mais aussi sur un autre ordinateur
– Qu'on puisse brancher jusqu'à trois autres manettes sur le Rpi Recalbox
– Qu'un bouton permette de basculer le joystick d'un quart de tour pour permettre de jouer aux jeux verticaux à l'horizontale dans le cas où l'on ne peux pas basculer l'écran d'un quart de tour.


Nous avons donc de gauche à droite, sur la façade arrière, l'emplacement du bouton de bascule ¼ de tour, la prise HDMI, la lamelle métallique VGA (qui intégrera la prise audio et la prise alimentation jack), et l'emplacement du Rpi qui laisse l'accès aux 4 prises USB. Il manque pour le moment le trou pour faire sortir le câble USB du circuit manette.

Le matériel :

  • Cette fois je n'ai pas investi dans des fournitures arcade onéreuses Sanwa ou Seimitsu, car l'usage en sera occasionnel.

– J'ai opté pour le célèbre Zippy et des boutons « no-name »
– On dispose aussi d'un câble de déport VGA (une mini-ralonge en somme)
– Un déport mini-HDMI vers HDMI qui intègre aussi un déport USB-C
– Une prise jack femelle audio stéréo
– Une prise jack femelle d'alimentation
– Un énorme dissipateur thermique ventilé qui enserre le Raspberry
– 4 bouts de bois de récupération, préparés à dimensions, constituant le cadre du boîtier
– Un circuit de manette USB qui vient avec ses câbles et ses cosses serties
Ce qui sera au final tellement plus pratique que de tout fabriquer comme je l'ai fait à l'époque

Des lattes de volets, un montant de porte, et une chute non-identifiée.


Lire la suite

Décapotes -01-, circuit de positionnement d'image pour écran TV

J'évoquais dans le premier billet de la série IGS−PGM le petit soucis que provoquait l'utilisation de cette machine sur un écran de téléviseur plutôt que sur un écran d'arcade.

  • L'image est trop à gauche, et présente une bande verticale noire sur la droite de l'écran, et ce malgré le maximum des possibilités de réglages du TV.

Et effectivement en recherchant sur le sujet, on fini par trouver de l'info fiable et des produits proposants des solutions au problème, par exemple avec cette Carte de positionnement image pour écran tv.
Il y a une vidéo de démo bienvenue où tout est bien expliqué :

  • Mais comment ça marche !??

On trouve des photos et analyses d'objets de ce type chez retrorgb, pour constater que les références de composants sont caviardées pour rendre impossible leur identification… Pratique qui m'agace toujours très fortement.
Et si on recherche sur des sites marchands asiatiques, même constat… Quel est donc ce secret qu'on s'acharne à si bien garder ??

Étudions la chose…
Une fois trouvé le bon mot clef, rgb shifter, on commence à tomber sur des choses intéressantes, comme sur ce site présentant un montage censé permettre de décaler l'image horizontalement : https://playoffline.wordpress.com/cable/rgbshifter/
Et concomitamment, un forum où les membres s'organisent pour réaliser le montage, ici non plus via le standard Jamma, mais en Péritel : https://circuit-board.de/forum/index.php/Thread/15207-RGB-Shifter/

  • En étudiant ces circuits on fini par comprendre que le concept de ce type de montage est relativement simple.

Il consiste à déphaser le signal de synchronisation horizontal.

Imaginons qu'on ait une image bien cadrée sur l'écran,
Théoriquement un déphasage de π du signal de synchro déplacerait l'image vers la droite sur une moitié de l'écran, c'est à dire qu'on aurait une moitié gauche noire et la moitié droite avec l'image.
Un déphasage de 2π, reviendrait enfin à replacer l'image au complet dans le cadre, puisqu'elle aurait fait le tour de l'écran, l'image réapparaissant par la gauche du cadre.

L'occasion de consulter quelques ressources sur le signal vidéo :
http://f5ad.free.fr/ATV-QSP_F5AD_Le_signal_video.htm
http://tvandco.free.fr/tpe-tvandco/4/4-signal-synchronisation.html
https://www.nutsvolts.com/magazine/article/video_basics
https://www.analog.com/en/resources/technical-articles/understanding-analog-video-signals.html
https://www.retrogamingcables.co.uk/composite-video-vs-composite-sync

  • Pour résumer, il y a deux cas de figures qui vont nous intéresser :

− La vidéo contenue dans un seul câble (les couleurs + les deux synchro, tout mélangées), qu'on appelle le Composite.
− La vidéo contenue dans trois câbles (rouge, vert, bleu) et un câble de synchro (horizontal + vertical mélangé), donc qu'on nomme communément le RGB, mais devrait-on préciser, le RGB + C−Sync.

C−Sync désignant le mélange de H−Sync et V−Sync, respectivement signal de synchronisation horizontal et vertical.

En effet, le système IGS−PGM fonctionne en RGB + C−Sync, ainsi que quasiment toutes les consoles 8 et 16 bits sorties en Europe : snes, master system, megadrive, pc engine (sodipeng). Et aussi la gamecube et le PC d'émulation Mame. Certaines machines fonctionnent aussi en Composite, c'est le cas pour : snes, gamecube, pc engine (en NTSC).

J'ai donc réalisé un premier circuit pour expérimenter et comprendre la chose.
Nous allons l'analyser et décrire son fonctionnement.
J'ai ensuite eu d'autres ambitions, que je détaillerais dans cette série d'articles.
L'idée étant de concevoir mon propre circuit de décalage de l'image − le Décapotes − pour aller sur ma Péritel multiple où j'ai prévu un emplacement pour une carte fille de traitement du signal. Ce qui permettra donc de recaler non seulement le système IGS-PGM (qui à la base motive tout ça), mais aussi toutes les consoles qui passeront par ce bloc multi−péritel.


Un premier circuit d'essais :

  • Je me suis donc basé le rgbshifter dont je parlais plus haut, et l'ai modifié dans l'intention de pouvoir décaler l'image horizontalement, mais aussi verticalement.

Principe de fonctionnement :

− Le signal de synchro C−Sync provenant de l'IGS−PGM entre dans l'étage séparation des signaux basé sur un LM1881.
− Puis deux monostables U18A et U18B vont traiter C−Sync en sortie du LM1881 afin de le déphaser, ce qui décalera l'image horizontalement par rapport au cadre de l'écran de TV.
− Deux autres monostables U17A et U17B vont traiter V−Sync en sortie du LM1881, ce qui décalera l'image verticalement.
− Enfin, deux portes NAND sont chargées de ré−assembler les deux signaux afin de recréer le C−Sync qui sera envoyé à la péritel.


Lire la suite

IGS−PGM - Cartouche de jeu DIY N°3

Suite de l'aventure précédente :

  • On termine le travail, ici avec le jeu Ketsui.

Fluffy a prévu la possibilité de pouvoir jouer aussi au « mode arrange » (à priori un mode de jeu non officiel bricolé par un bidouilleur).

On utilisera un petit interrupteur branché sur le cavalier « JP2 » pour l'activer, suivit d'un reset du système IGS−PGM.


  • Il faut à nouveau souder 2 cartes ! Pas de photos à exposer, c'est la même chose que montré dans le billet précédent…


La programmation :

1 − Extraire les binaires pour les EEPROM 27c322 :
Télécharger sur le net la rom mame avec la mention « BL », ici : ketbl.zip
À priori celle-ci devrait peser 22,1 Mio (23240460 octets)

  • À l'aide du script python rom_gen.py qu'on aura pris soins d'extraire préalablement, exécuter :
python3 rom_gen.py ketbl.zip

Qui va générer le dossier « ketsui_rg » contenant les binaires à flasher sur les puces. (le dossier « bios_rg » n'est pas utile)

  • Exécuter ensuite :
python3 rom_gen.py -b pgm_bios_single_pcb_vxxxJP.u42 PGM\ Program\ Files.zip


Qui va générer dans le dossier « ketsui_rg » le fichier « ketsui_p1_trap.bin ».
Utiliser le fichier « ketsui_p1_trap.bin » à la place du fichier « ketsui_p1.bin » précédemment généré par la rom, permet d'utiliser le cavalier « JP2 » pour activer le « mode arrange ».

2 − Programmer les EEPROM 27c322 :
Se référer au billet précédent pour plus de détails sur la procédure de programmation et obtenir l'archive de scripts.

3 − Placer les EEPROM 27c322 sur les PCB :
Se référer pour cela aux sérigraphies, et faire attention au sens d'orientation des puces !

4 − Programmer la GAL : ATF16V8B qui va en position U6 :
Écrire le fichier PGM-RG-U6.jed.

5 − Programmer la GAL : ATF16V8B qui va en position U5 :
Écrire le fichier PGM_RG_U5_ESP.jed. Oui c'est le même fichier que ESPgaluda pour Ketsui.

NB : JP2 permet de sélectionner la ROM normale ou la rom Arrange 1.7 : Sans cavalier > Jeu original et Avec cavalier > mode Arrange.

Mise en cartouche et tests :

  • Pour que ce soit donc plus pratique, j'ai collé un micro-switch à l'intérieur de la cartouche, relié aux « pins headers » de JP2. On peut le basculer de l'extérieur, alors que la cartouche est insérée dans le système de jeu, à l'aide d'un truc fin comme un cure-dents.


  • Dans la vidéo, d'abord le mode normal, puis j'ai basculé le micro-switch avant de faire le reset pour redémarrer le système et montrer le « mode arrange » :


À suivre…

IGS−PGM - Cartouche de jeu DIY N°2

Suite de l'aventure précédente :

  • On reprend le travail, ici avec le jeu Dodonpachi Dai-ou-jou, appelé aussi Dodonpachi 3.

Ce jeu a la particularité, comme d'autre jeux édités par CAVE d'exister en deux versions. L'habitude chez cet éditeur c'est qu'à la sortie d'un jeu, il s'appelle simplement par son nom, et quelques temps plus tard il peut arriver que le jeu ressorte en version « Black Label ». Celle-ci venant améliorer le gameplay et en revoir la difficulté par exemple. La version du jeu précédente est alors re-nommée « White Label ».

Nous allons construire la version du jeu qui contient la White et la Black label, nommés simplement « Version-A (Old) » et « Version-B (New) » depuis le tableau d'accueil proposé dans la rom spécifique.

Mais d'abord, il faut souder les 2 cartes ! Cette fois-ci j'ai quelques photos…

  • La carte program:


  • La carte character :


Lire la suite

Haut de page