Construction d'une manette style arcade pour Snes, NES et PC

Résumé

arcade controller La sensation qu'on a lorsqu'on utilise une manette style arcade pour jouer a un jeu est très différente que lorsqu'on joue avec une manette ordinaire ou un clavier.

Après avoir rencontré quelqu'un qui achète des vieille arcades pour les remettre à neuf et les upgrader en installant un PC avec Mame à l'intérieur, j'ai eu l'idée de construire un manette pour Snes/Nes et PC du genre manette d'arcade.






Schéma

Une manette de Snes n'est en fait qu'un 'shift register' de 16 bits. J'ai donc conçu mon circuit avec 2 circuits intégrés 74ls165. Il a fallu un inverseur pour changer la polarité du 'latch' (replacable par un transistor et 2 resistances).

Il est important d'utiliser des 74ls165. Les 74hc165 ne fonctionnent pas car ils n'aiment pas que le clock soit haut en meme temps que le latch est bas.

Le 'shift in' (ser) du 2ieme 'shift register' est a 0 volts car il influencera l'etat final de QH (data) apreè les 16 coups d'horloge. Il doit rester bas, sinon certains jeux (notamment ceux fait par Nintendo ex: Donkey Kong) ne détecteront pas la manette.

J'ai nommé les 4 derniers bits E1 a E4. Ils ne sont pas associés a des boutons par les manette construites par Nintendo. Je crois qu'il servent à identifier le type d'équipement branché à un port. Dans le cas d'une sourie, E4 est a 0 plutot qu'a 1. Direct Pad Pro, Zsnes et Linux génèrent seulement 12 coups d'horloge, donc ils ignorent ces bits. Mais un vrai Snes génère bien 16 coups, et plusieurs jeux ne détectent pas de manette lorsque ces 4 bits d'extra ne sont pas à un niveau logique élevé.

Les résistances pull-up des boutons n'ont pas de valeur d'indiquées dans le schéma. N'importe quoi entre 1k et 22k est raisonnable et devrai fonctionner.

Petite note à propos des consoles PAL: Un utilisateur explique qu'il a fallu qu'il installe une pull-up de 1.2kohm sur le signal clock provenant de la console. (3kohm ne fonctionnait pas). Dans l'incarnation finale de son projet, il a descendu la valeur de cette résistance à 467ohm. Pour l'instant, j'ignore pourquoi ce fut nécessaire et donc pourquoi ça fonctionne...

done schematic
Pour une meilleure visualisation, voici la version pdf de ce schéma.
Voici comment se construire un inverseur avec un transitor. Utile si vous n'avez plus de 7404, que vous trouvez qu'utiliser 1 inverseur sur 6 est ridicule ou peut-etre pour sauver de l'argent.
transistor inverter
Pour une meilleure visualisation, voici la version pdf de ce schéma.
Pour alimenter le circuit à partir d'un port parallèle, il est possible d'utiliser 5 diodes pour récupérer un peu de courant. Il peut y avoir des problèmes avec certains ports parallèles. Les 74ls165 ont besoin de 5 volts pour fonctionner, alors les ports parallèles qui donnent du 3.3 ou 3.5 volts ne fonctionneront pas. De plus, les diodes causent une baisse du voltage. Si cela se produit, vous devrez récupérer du 5 volt ailleur. Par exemple, à partir du port de jeu (DB15F, en utilisant les broches 1 et 4 (+5Volts et GND respectivements)(Attention, il commence à y avoir des ports de jeu a 3.3 volts...) Ou encore, à partir du port de clavier ou sourie PS/2.
parallel port power
Pour une meilleure visualisation, voici la version pdf de ce schéma.
Pour pouvoir utiliser ce circuit avec un SNES ou NES, j'ai construit un cable. Je me suis servi des cables de manettes de NES et SNES. Vous pouvez construire seulement une des deux parties du schéma si vous voulez:
snes/nes cable



Photos

test test Tout d'abord, j'ai testé que le circuit était bel et bien fonctionnel.

test Voici a quoi ressemble les signaux qui arrivent aux 74ls165 dans le circuit. L'horloge est en haut de l'écran, et le latch en bas de lécran.

test Voici a quoi ressemble d'autres signaux qui arrivent et qui partent des 74ls165. L'horloge est en haut de l'écran, et le data est en base. Dans cet exemple, le bouton 'Start' est enfoncée.

test Le circuit final. Les resistances utilisées à chaque bouton sont des résistances 'surface mount' et elles sont soudées en dessous.

button placement Pour déterminer la position optimale des boutons pour ma main, j'ai fait des essais dans du carton. Un coup satisfait, j'ai percé les trous dans la planche finale.

under Le cablage des boutons et du Joystick. Très simple. Un fil commun qui va au GND, un fil allant de chaque bouton au bornier du circuit.

kit Une vue d'ensemble de tout les composants. (Paneau de bouton + joystick, circuit, cables). Il reste a faire une base convenable. Il manque 2 boutons (L et R) pour avoir l'équivalent d'une manette snes. Je pense les installer de chaque coté de la boite finale (bon pour pinball) et aussi de les assigner a 2 pédales (bon pour Mario Kart).

Les boutons et le joystick peuvent être commandés de Wico.




Protocole

Si vous désirez comprendre le 'protocol' (un gros mot pour de simple shift registers...), je vous conseille de lire ce document: (en anglais)
Super Nintendo Entertainment System: pinouts & protocol

Pour bien comprendre les 'shift registers' et apprendre comment les utiliser intelligemment: (en anglais)
shift.txt


Logiciel

Pour l'utiliser sur un Snes, il va de soit que le seul logiciel requis est le jeu. Pour l'utiliser sur un PC, il suffit d'utiliser les mêmes logiciels que pour les manettes de Snes. Direct Pad pro, PsxPad, Zsnes Dos, Linux...

Veuillez consulter la section configuration logicielle de ma page Manette de Snes sur un PC pour plus de détails et les addresses pour télécharger les logiciels.



Avertissement

Je ne saurais être tenu responsable pour les dommages que l'utilisation des informations ou la mise en œuvre des instructions présentées sur cette page pourrait causer à votre équipement, à vous-même ou à autrui. Aussi, je ne donne aucune garantie quant à l'exactitude des informations et à leur fonctionnement.