Retour en enfance : Projet Nintendo NES / USB

C’est suite à la récupération d’une Nintendo NES toute cassée, que j’ai pensé à ce projet : c’est quand même dommage que le port USB n’existait pas au moment où nos vieilles consoles sont sorties car on pourrai maitenant les utiliser avec des émulateurs… Donc j’ai vidé cette pauvre NES et récupéré mes anciennes manettes.

Objectifs :

  • Relier mes anciennes manettes sur un ordi en les gardant d’origines
  • Ne pas avoir à installer de drivers si je change d’ordinateur (pour la transporter facilement)
  • prévoir un schéma adaptable pour 4 manettes NES et peut-être pour relier celles de Nintendo 64 à l’avenir
  • Réutiliser les boutons Power et Reset de la NES.

Tout un programme donc, heureusement beaucoup de projets ont déjà été développés sur internet dont la plupart sur le site http://www.instructables.com/ où je ferai surement un tuto de fabrication après (mais en Anglais) avec le code et pleins de conseils 🙂 . Sur ces sites, il n’y a évidemment jamais un projet qui correspond vraiment à ce que l’on veut faire ^^, donc ça laisse l’occasion de plus bidouiller. Alors première étape, récupérer le boitier

Image

A l’époque, c’était vraiment plus simple de démonter un objet, un tournevis standard et hop!

Ensuite, on récupère les fils des boutons power et reset, on récupere les fils des sorties des manettes (à gauche sur la photo ci-dessous) et on prépare un petit atmega8 en standalone. La Nintendo dialogue avec ses manettes via un protocole bien définit visible ici : http://www.mit.edu/~tarvizo/nes-controller.html, si l’on veut garder les manettes d’origines il est nécessaire d’utiliser un contrôleur. Certains remplacent les boutons des manettes par des boutons classiques et peuvent ainsi se passer du contrôleur… mais je ne voulais pas sacrifier ces beaux objets collectors!

Image

Donc, un Atmega pour réceptionner le protocole, gérer la LED power de la console (suptilement remplacé par une RGB qui clignote en vert, rouge et allume aussi le bleu quand un bouton est appuyé) et assurer la connection USB. Ce dernier point m’a posé beaucoup plus de difficulté que prévu :

  • Au départ j’ai voulu opter pour la solution de facilité et relier une petite board FTDI qui trainait par là et le tour est joué. Cependant en fesant cette solution la récupération des données n’est pas automatique car il passe par un port série qui n’est pas reconnu automatiquement (ou alors il faut passer par Arduino ou Processing).
  • Je me suis donc penché sur comment transformer un contrôleur en clavier/usb et ainsi être reconnu automatiquement par tout ordinateur sans avoir à installer quoi que ce soit… J’ai trouvé pour cela une super librairie : usbkeyboard.h  qui a quelques exemples sur internet et semble plutôt facile à utiliser. Evidemment il y a toujours un hic : après deux jours à manipuler je me retrouve avec un Mario qui avance pas et saute très bas, c’est pas du tout pratique pour jouer! Il semblerai que cette librairie ne puisse pas directement simuler un bouton de clavier qui reste appuyé, donc il renvoit des courts appuis de touches et simule bien le relevé à chaque fois. J’ai éssayé de la modifier, mais en tant qu’électronicien, mes humbles compétences d’informatique ne m’ont pas permisent de vaincre cette librairie optimisé.
  • Un peu déçu par la solution précédente, je finis par descendre à la décharge, récupérer un clavier d’ordi (disponible par milliers dans les bennes), le démonter, gratter les contacts pour les rendrent soudable et le tour est joué

Image

Ici en haut à droite on peut voir une toute petite carte avec quelques fils qui partent dans la patafix, ce sont les leds et résistances qui permettent d’interfacer la tension et utiliser la librairie usbkeyboard.h.

Image

Après démontage de la solution usbkeyboard, j’ai remplacé par le circuit de clavier (en vert en haut a droite) et adapté quelques petits transistors PNP afin de pouvoir simuler les touches à l’aide de mon Atmega. J’ai dut aussi rajouter un STP16CPS afin de pouvoir contrôler suffisamment de sorties.

Après quelques petits déboggages, le résultat est vraiment sympa et je viens d’arriver au niveau 7 de Mario Bros 3 sur un émulateur MAME sur mon Mac. Je l’ai aussi installé sur ma Raspberry Pi, mais MAME semble trop lent pour que ce soit agréable, il faut que je reconfigure l’écran pour pouvoir le lancer en mode commande et peut être que ce sera jouable…

Bon je fais prochainement un Instructables avec toutes les infos pour fabriquer ça facilement et le code pour les flémarts 😉 En attendant, je vais aller essayer worldCup 1990 un des premier jeux de foot sur console qui se joue à 4 !!!!  🙂

DSCF5856

Advertisements

~ by Jean Perardel on October 1, 2013.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

 
%d bloggers like this: