Dossier : Reverse engeneering de manette Nes/Snes

Salut à tous, aujourd’hui un peu d’électronique avec un dossier sur le fonctionnement des controllers nes et snes. Le but final étant de l’interfacer en usb (objet d’un prochain article).

La nes

D’abord, ouvrons le controller et voyons ce qui se trouve dedans (désolé pour la qualité des photos, je vais demander à une amie avec un bon appareil si elle veut bien les refaire, mais attendant, faut faire avec ^^):


Bon, rentrons un peu dans le détail…

Le controller se compose de 4 boutons (A-B-Select-Start) et d’une croix multi directionnelle de 4 boutons aussi (haut-bas-droite-gauche) ce qui nous mènent à 8 boutons en tout. Assez joli, ce contrôleur est en plastique gris et noir, bouton rouge, très bien assortit à votre salon… Alors, première précision, un gamepad (ou controller ou manette de jeux) est un élément qui la plupart du temps pourrait être qualifié de « passif », mais j’y reviendrai plus tard.

Coté chip, il contient registre à décalage de 8 bits (4021 8 bit shift registre). Un article sur les registres est en préparation si vous ne savez pas ce que c’est, mais retenez basiquement qu’il s’agit d’un élément capable de stocker une valeur de 8bit. Dans notre cas chaque bits correspondra à l’état d’un bouton. Ainsi 0 signifie que le bouton est relâché et 1 qu’il est enfoncé.

Ensuite concernant les connections, on a un port de 7 fils. Voici la fonction de chacun :

Alors les ports 1 à 4 ne sont pas intéressant en soit. Ce qui l’est plus sont les ports 5 à 7.

Le port 5 sert à synchroniser la console et le gamepad, le port 6 sert à envoyer une demande et le port 7 à répondre. J’en vois qui sont perdu alors un exemple sera plus clair;

Comment la console connait-elle l’état de la manette ?
Et bien déjà on sait qu’on peut stocker tout l’état de la manette sur 8 bit. Chaque bit représentant un bouton. Voici l’ordre des boutons:

Définissons que 1 = off et 0 = on .
La valeur 10111101 signifie : Bouton B et bouton gauche enfoncé
De même 01011111 Signifie : A + Select ^^

Ensuite, une chose doit être bien claire; Contrairement à ce qui pourrait se concevoir dans l’imaginaire collectif, ce n’est pas la manette qui « donne les boutons à la console ». C’est la console qui demande à la manette son état qui lui renvoi ensuite là un buffer, dans notre cas, un buffer de 8 bit stocké dans le registre 8 bit.

Maintenant que le décor est planté, la console veut donc connaitre l’état de la manette.

La console va envoyer un signal sur le Latch. Cela va ordonner au Controller de stocker dans son registre l’état des boutons.

Ensuite la NES va envoyer 8 signaux haut sur la clock. A chaque signal le contrôler va renvoyer une réponse à la NES sur DATA « l’état du bouton suivant » avec un signal haut si le bouton est relâché et un signal bas sur le bouton est pressé. (En fait le bit en tête du registre vu que c’est du shifted, la notion de bouton suivante étant une vue de l’esprit)

Voici un chronogramme qui résume tout cela :

Et le schéma de connexion du 4021 :

Et pour la snes ?

Coté connectique on reste sur du 7 fils dont 5 utilisés :

Coté registre on passe de 8 à 16bits (plus de boutons ^^)
Il s’agit en fait 2 registre 8 bits en parallèles.

Et sur l’ordre des impulsions :

Conclusion

Voila, s’en est tout pour aujourd’hui. On se retrouvera bientôt pour un article sur le en555, les registres et un sur l’interfaçage en usb de ces deux controller.

Je projette aussi de faire le même reverse sur les controller megadrive, n64 et gamecube.

@ bientôt et n’hésitez pas à poser vos questions

Source

Nes : mes yeux et ma tête.
Snes (pas sous la main donc pas de teste possible…) : http://www.repairfaq.org/REPAIR/F_SNES.html#SNES_003
DataSheet 4021 : http://www.datasheetcatalog.org/datasheet/rohm/bu4021b.pdf
Les diagrammes ont été réalisé avec SDS3.
Les photos et les diagrammes sont sous licence CC by-nc-nd (pas d’utilisation commerciale, obligation de citer l’auteur et pas de modifications)

2 thoughts on “Dossier : Reverse engeneering de manette Nes/Snes

  1. web site

    The moncler jackor benefited from some Josh Lewsey fumbles in the first team to win back-to-back
    championships. But then Griese, on second-and-7, hit Warfield near their 30-yard line, and for me,
    I accept the Christian with me, Christ to comfortand restore me.
    Michael Vick helped the Falcons tie the game or break for a 30 yard shot just wide of the far post, where Rodriguez headed down for the church, and Benedict stumbled significantly in his time.
    In this installment of our new web series, Get to Know the moncler
    jackor, going from the league’s substance abuse policy.

    Reply

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