まこと の ブログ

MaKoTo no burogu — Journal de bord…

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

Mot-clé - Console

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);
  
}

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

dimanche, 7 mai 2017

Changer la pile d'un jeu Super Nintendo

Les jeux Super Nintendo ont maintenant autour de 25 ans et tournent toujours tranquillement dans la console de l'époque.
Le seul truc c'est que certains jeux à sauvegardes deviennent amnésique.
Je ne sais pas combien de temps est censé tenir la pile de sauvegarde soudée à la carte électronique de ces jeux, j'en ai qui se souviennent encore de mes parties, et d'autres plus du tout.

J'ai donc décidé de procéder au remplacement systématique des piles, quitte à perdre les sauvegardes encore en mémoire.

dsc02622.jpg dsc02621.jpg

  • Après avoir ouvert la cartouche en ôtant les deux vis, on accède au circuit imprimé.

Il est temps de préparer le support de pile en soudant deux bouts de fil.
dsc02602.jpg dsc02604.jpg

  • On dessoude proprement la pile, en prenant soin de repérer les polarités positives et négatives.

On peut donc y souder les fils.
dsc02603.jpg dsc02605.jpg

  • De l'adhésif double face est ici utilisé pour fixer le support de pile au fond du boîtier.

dsc02606.jpg dsc02607.jpg

  • Une fois judicieusement collé, reste à loger la pile dans le support, refermer, revisser…

dsc02608.jpg dsc02611.jpg

  • Et tester… C'est tout simple :)

dsc02612.jpg dsc02619.jpg

mercredi, 16 septembre 2015

Dépanner une manette de jeu

Une petite vidéo :)


Et bien sûr, revissez tout ça avec la bonne technique !!!

- page 1 de 12