まこと の ブログ

MaKoTo no burogu — Journal de bord…

Aller au contenu | Aller au menu | Aller à la recherche

Mot-clé - Jeux video

Fil des billets - Fil des commentaires

samedi, 22 novembre 2025

Joystick Arcade pour Nintendo GameCube

La borne est en travaux !
En plus du PC « mame » je souhaite lui installer deux autres systèmes de jeux, dont l'un est la console GameCube.
Motivation ? Jouer à Ikaruga et SoulCalibur sur la borne avec les sticks arcade.
Sauf que ! Comment faire pour connecter ces derniers à la console ?

Avant de réinventer la roue, j'ai traîné sur le web à la recherche d'une proposition de circuit électronique.
J'ai eu un peu de mal à trouver ce que je cherchai, visiblement ça n'intéresse pas trop les foules… L'occasion de constater au passage que la manette GameCube n'était pas aussi électroniquement simple que ses aînées, et qu'il faudrait un circuit programmable pour faire le travail.

J'ai fini par trouver cette page, qui décrit comment construire un contrôleur maison, avec un Arduino, et surtout l’existence de la bibliothèque logicielle adéquate : https://github.com/NicoHood/Nintendo (que je joins en annexe à ce billet)

  • Le code C++ est vraiment très simple à adapter grâce aux exemples donnés, et j'ai alors pu assigner les numéros de broches d'un Arduino Pro Mini 5V aux boutons d'une manette GameCube et établir le schéma de câblage suivant :


Une fois un câble de manette de remplacement acheté, restait alors le plus long à faire, câbler les broches sur le joystick.

  • Ici le brochage est réalisé à l'aide de connecteurs « maisons », qui permettront d'interchanger le joystick entre plusieurs systèmes de jeu (USB ou GameCube pour le moment).


  • Le brochage du câble de la manette est le suivant :
Couleur  −   Usage 

Jaune    −   5V
Blanc    −   GND
Vert     −   GND
Noir     −   GND
Bleu     −   3,3V
Rouge    −   DATA
  • Voici le Scketch à inscrire sur l'Arduino, en ayant pris soins de charger la librairie de NicoHood :

https://github.com/makotoworkshop/Joystick_Arcade_GameCube

#include <Nintendo.h>

// Variables
#define Bouton_A  A1
#define Bouton_B  9
#define Bouton_X  A2
#define Bouton_Y  3
#define Bouton_START  A3
#define Bouton_L  7
#define Bouton_R  8
#define Bouton_Z  2
#define Direction_UP  6
#define Direction_DOWN  5
#define Direction_LEFT  A0
#define Direction_RIGHT  4

// Broche de communication vers la console GameCube
CGamecubeConsole gc_console(10);

// Structure de données de la manette
Gamecube_Data_t gc_data = defaultGamecubeData;


void setup() {
//  Serial.begin(115200);
  // Configuration des boutons en entrée avec résistance pull-up
  pinMode(Bouton_A, INPUT_PULLUP);
  pinMode(Bouton_B, INPUT_PULLUP);
  pinMode(Bouton_X, INPUT_PULLUP);
  pinMode(Bouton_Y, INPUT_PULLUP);
  pinMode(Bouton_START, INPUT_PULLUP);
  pinMode(Bouton_L, INPUT_PULLUP);
  pinMode(Bouton_R, INPUT_PULLUP);
  pinMode(Bouton_Z, INPUT_PULLUP);
  pinMode(Direction_UP, INPUT_PULLUP);
  pinMode(Direction_DOWN, INPUT_PULLUP);
  pinMode(Direction_LEFT, INPUT_PULLUP);
  pinMode(Direction_RIGHT, INPUT_PULLUP);
  delay(100);
}

void loop() {
  // Lecture des boutons
  gc_data.report.a      = !digitalRead(Bouton_A);
  gc_data.report.b      = !digitalRead(Bouton_B);
  gc_data.report.x      = !digitalRead(Bouton_X);
  gc_data.report.y      = !digitalRead(Bouton_Y);
  gc_data.report.start  = !digitalRead(Bouton_START);
  gc_data.report.z      = !digitalRead(Bouton_Z);
  gc_data.report.l      = !digitalRead(Bouton_L);
  gc_data.report.r      = !digitalRead(Bouton_R);

  gc_data.report.dup    = !digitalRead(Direction_UP);
  gc_data.report.ddown  = !digitalRead(Direction_DOWN);
  gc_data.report.dleft  = !digitalRead(Direction_LEFT);
  gc_data.report.dright = !digitalRead(Direction_RIGHT);

  // Stick analogique centré
  gc_data.report.xAxis = 128;
  gc_data.report.yAxis = 128;

  // Stick C centré
  gc_data.report.cxAxis = 128;
  gc_data.report.cyAxis = 128;

  // Gâchettes analogiques à 0
  gc_data.report.left = 0;
  gc_data.report.right = 0;

  // Envoi du rapport à la console de jeux
  gc_console.write(gc_data);

//  Serial.print("bouton Y = ");
//  Serial.println(gc_data.report.y);
  
}

mardi, 9 septembre 2025

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

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...

mercredi, 12 mars 2025

Réparer la croix de direction des manettes Megadrive

Lors d'une session de jeu avec un ami nous avons rencontré un problème avec la croix de direction d'un pad Megadrive.
Impossible d'utiliser certaines diagonales, en l’occurrence, en haut-droit et bas-droite.

J'ai pensé, comme souvent c'est le cas, à des soucis de contacts comme déjà vu de manière générale, et c'est donc confiant, que j'ai procédé à cette l'opération de nettoyage et d'optimisation des contacts.

Et de découvrir une originalité que je ne connaissais pas en la matière !
En effet, les contacts s'effectuent à l'arrière de la manette, via une tige qui transfère les directions à un disque chargé d'appuyer sur les boutons placés au dos de la manette. La carte électronique est donc double face, première fois que j'en vois une pour une manette de cette l'époque.

  • Sur la dernière photo, j'oriente la croix côté face de la carte, pour voir au dos le disque appuyer sur les boutons de caoutchouc.


Une fois la manette remontée le problème était toujours bien présent…

Mais que se passe-t'il donc ??

  • Et puis, j'ai secoué la manette :

Hum… Ce n'est peut-être pas trop normal que la croix gigote autant non ?

Lire la suite...

lundi, 7 octobre 2024

Pocket SDVX pico, Makoto's edition -3-

Suite des précédents travaux :

Nous arrivons donc au point où nous avons besoin d'une structure pour assembler et contenir tous les éléments, sous la forme d'un cadre sur lequel on va visser les plaques. Dans les fait j'ai modélisé toutes les pièces au fur et à mesure,

  • Mais pour permettre une bonne compréhension dans l'assemblage qui nous attend, voici d'ores et déjà une petite vidéo d'animation :



Conception du boîtier :

  • J'ai imprimé quelques tests afin que le cadre s'ajuste le plus parfaitement possible au contour des plaques.



Si on opte pour du plastique de couleur claire, on bénéficiera d'un peu de la lumière des leds au travers…

  • Cependant m'voyez, mon imprimante étant trop petite, j'ai été obligé de séparer la pièce en deux et de bricoler un système de collage pour les rassembler. Avec de la colle cyanoacrylate, ça fonctionne très bien, et pour augmenter la résistance de l'assemblage, j'ai incrusté un morceau de fil métallique (trombone de bureau) à l'aide d'un fer à souder de plomberie sur lequel j'ai monté une vis à tête hexagonale afin de m'en servir de poussoir chauffant.


Opération à faire dehors ou sous la fenêtre ouverte, pour ne pas respirer trop la fumée toxique qui s'en dégage…

  • J'ai aussi réalisé deux versions, du cadre, l'un de 2 mm d'épaisseur et l'autre de 3 mm. On pourra alors choisir celle qu'on préfère…


Lire la suite...

- page 1 de 47