Adaptateur manette Gamecube à N64



Introduction

Le problème des joysticks pour N64 qui s'usent pour devenir inutilisables est très répandu. Les manettes pour Gamecube, elles, semblent être beaucoup plus durables et sont relativement similaires à celles du N64.

À bien des reprises, on m'a donc demandé si je pourrais réaliser un adaptateur permettant d'utiliser des manettes de Gamecube sur une N64. Ce project en est le résultat.

Caractéristiques:

Versions partiellement assemblées et adaptateurs complets disponibles dans le magasin!
Circuit pré-assemblé (soudez vos fils)
Adaptateur complet (prêt à jouer)

goto top Retour en haut


Photos

Voici quelques photos. Envoyez-moi les vôtres que je puisse les ajouter ici!
N64 et manette GC

N64 et manette GC

Circuit imprimé

Circuit imprimé


goto top Retour en haut


Équivalance des boutons (mappings)

Afin d'améliorer l'expérience de jeu ou simplement la rendre possible, j'ai conçu cet adaptateur pour qu'il soit possible de créer des nouveaux 'mappings' relativement facilement. Comme la saisie peut être une fastidieuse opération en raison du nombre élevé de combinaisons possibles, quatre emplacement de sauvegarde correspondant aux quatres directions du pavé numérique sont offerts.

L'outil ci-bas vous permet d'associer les boutons, axes ou états des axes à différentes actions possibles du côté N64. Faites votre sélection et appuyez sur Générer pour afficher le code correspondant. Les instructions sont dans la colonne de droite.

Bouton ou état GamecubeAction N64
[0] A
[1] B
[2] Z
[3] Start
[4] L
[5] R
[6] C-stick up (50% threshold)
[7] C-stick down (50% threshold)
[8] C-stick left (50% threshold)
[9] C-stick right (50% threshold)
[10] Dpad-up
[11] Dpad-down
[12] Dpad-left
[13] Dpad-right
[14] Joystick left-right axis
[15] Joystick up-down axis
[16] X
[17] Y
[18] Joystick up (50% threshold)
[19] Joystick down (50% threshold)
[20] Joystick left (50% threshold)
[21] Joystick right (50% threshold)
[22] Analogic L slider (50% threshold)
[23] Analogic R slider (50% threshold)
[24] C-stick left-right axis
[25] C-stick up-down axis
[26] None

Code de mapping:

Saisie d'un code

1) Entrer en mode gestion des mappings
Il faut d'abord entrer dans ce mode.
  • Pendant le jeu: Enfoncer et maintenir le bouton 'start' pendant environ 8 secondes. Relâcher après les 5 bips rapides.
  • Au démarrage: Maintenir le bouton 'start' de la manette enfoncé au moment où l'adaptateur est mis sous tension. (Donc appuyer et maintenir 'start', allumer la N64 ou y brancher l'adaptateur, relâcher après les 5 bips rapides.
2) Effectuer la saisie du code
Une fois en mode gestion des mappings, il suffit de procéder directement à la saisie du code en appuyant simplement sur les boutons correspondants au code. Après chaque groupe de lettres se terminant par 'L', l'adaptateur emettra un bip de confirmation.

À la fin, lorsque le bouton 'start' aura été appuyé, l'adaptateur emettra 3 bips pour confirmer l'entrée en vigueur du nouveau mapping et retournera en mode jeu.

Sauvegarde et rappel des codes favoris

1) Entrer en mode gestion des mappings
Entrer dans ce mode en maintenant le bouton 'start' enfoncé tel que décrit plus haut.

2A) Pour sauvegarder le mapping actuel
Une fois en mode gestion des mappings, appuyez d'abord sur R. Ensuite, appuyez sur une des directions du pavé numérique. À chaque direction pourra correspondre un mapping de votre choix. L'adaptateur émettra 3 bips pour confirmer l'enregistrement et retournera en mode jeu.

2B) Effectuer le rappel d'un mapping
Une fois en mode gestion des mappings, appuyez immédiatement sur la direcion du pavé numérique correspondant au mapping que vous désirez. L'adaptateur emettrra alors 3 bips pour confirmer l'entrée en vigueur du nouveau mapping et retournera en mode jeu.

3) Activer/déactiver la zone morte (depuis 1.3)
Entrer en mode gestion des mappings, enfoncez et relâchez R, appuyez et relâchez Z puis attendez l'émission du signal sonore final. La fonction sera activée si elle ne l'était pas, ou déactivée si elle l'était. Comme la configuration de l'option de zone morte est sauvegardée dans l'adaptateur, il n'est pas besoin de refaire l'opération à chaque utilisation.

Erreurs

À tout moment, si une erreur se produit (Tentative de rappel d'un emplacement vide, erreur de saisie, etc), l'adaptateur produira 4 bips (3 court 1 long) et retournera au mode jeu.

PROBLÈMES CONNUS:

goto top Retour en haut


Collection de mappings

Voici une table de mapping qui je l'espère grandira. N'hésitez pas à me contacter pour partager les mappings qui vous seront utiles pour certains jeux. Si possible, avec des détails sur les jeux avec lesquels vous les utilisez ainsi que des commentaires sur votre choix.

MappingJeu(x)Commentaires
R START Générique Mapping de base. Les boutons du même nom sont équivalents.
XZBBL BAAZXL ZXL START Mario Kart 64 Bouton Z pour dérapper, boutons X et Y pour item. Le bouton Z est plus agréable car il se déplace moins que le bouton 'R'.
BAAZBXL ZXAL START Starwars - Shadow of the empire Boutons Y et X a C-Haut et C-Gauche respectivement. Utilisez l'un où l'autre pour lançer le harpon.
[...] BBXZBBAL ZBBAL START * Pour la version 1.2.1 (et précédentes). Déactive réellement les leviers analogiques. Ils étaient liés aux boutons N64 L et R même si "[20] None" était sélectionné. Si vous utilisez un mapping sur mesure, ajoutez simplement ces deux mots avant la fin (bouton START)

goto top Retour en haut


Partie électronique

Voici tout de suite le schéma:


Choix du MCU
J'ai décidé que j'utiliserais un MCU AVR d'Atmel, de préférence le ATmega8 (ou le nouveau Atmega8a). Pourquoi?

Stratégie d'alimentation
Je suis d'avis que l'idéal est de s'alimenter directement depuis la N64. Malheureusement, la N64 ne fournit que 3.3 volt et les manettes de Gamecube s'attendent à recevoir du 5 volt et du 3.3 volt. En plus, le choix d'utiliser un Atmega8 me force à alimenter le MCU à 5 volt pour qu'il puisse être cadencé à 16 MHz.

Il était donc nécesaire d'obtenir du 5 volt à partir du 3.3 volt fourni par la N64. J'ai opté pour un Convertisseur à pompe de charge à sortie régulée 5 volt LTC3200ES6-5 de Linear Technology pour sa petit taille, son nombre réduit de pièces externes requises et sa sortie régulée à 5v (il ne fait pas que doubler le voltage d'entrée comme d'autres).

Le LTC3200ES6-5 est difficile à utiliser s'il n'est pas monté sur un PCB. Une alternative qui me semble adéquate serait le module VBSD1-S3.3-S5-SIP de Cui. Le datasheet recommande un condensateur de 4.7uF électrolytique à résistance équivalente basse (Low ESR) à l'entrée. Une charge minimale de 20mA est requise alors l'installation d'une résistance de 220 ohm entre le GND et la sortie 5V est recommandée. Lire le datasheet pour plus de détails.

Vous êtes également libre de modifier le circuit pour utiliser une alimentation 5v externe provenant d'un port USB ou d'un adaptateur mural.

Un mot sur la fonction Vibration
Pour le moment, la fonction vibration n'est pas supportée. Mon raisonnement pour ne pas la supporter est le suivant: Quand Nintendo ont mis le 'rumble pack' sur le marché, ce dernier utilisait des piles. Il n'alimentait pas son moteur avec le 3.3 volt reçu de la console, ce qui me porte à croire que les ports de manettes ne sont probablement pas conçus (voir capable) de fournir un courant suffisamment élevé pour un moteur.

Il se peut toutefois que les besoins énergitiques du moteur du 'rumble pack' pour N64 et celui dans les manette Gamecube soient différents. Je prévois faire une analyse complète de la question en prenant des mesures, en regardant quelles sont les fusibles dans une N64 (s'il y en a), etc.

Donc pour le moment, je n'ai pas encore écrit le code pour contrôler le moteur car mon adaptateur s'alimente seulement depuis le 3.3 volt de la N64. Mais avec une alimentation externe (ou une manette sans fils ayant ses propres piles), il serait parfaitement valide d'active la fonction vibration.

Je me souviens d'avoir lu à plusieurs endroits que le 5 volt fourni à la manette est destiné à la fonction vibration. Mais il y aussi des manettes qui l'utilise simplement pour fonctionner. Je crois donc qu'il est bon de fournir du 5 volt à la manette puisque nous en avons pour le MCU bien que la fonction vibration ne soit pas, pour l'instant du moins, utilisable.


goto top Retour en haut


Programmation et code source

Ce projet est distribué sous forme de code source et de fichier .hex prêt à utiliser.

Important!
Pour que le microcontrôleur fonctionne à la bonne vitesse, il est essentiel de configurer les 'fuses' correctement. Les valeurs pour ce projet sont: high_byte=0xc9 low_byte=0x9f.

Pour de l'information sur la programmation d'un AVR, visitez ma page sur la programmation d'AVR

Voici sans plus tarder les fichiers:
Fichier(s)DateDescription
gc_to_n64-1.4.tar.gz (34.7 KB)
gc_to_n64-1.4.hex (17.9 KB)
19 Mai 2013 Correctifs et améliorations:
  • Correction du problème de menu gelé du ED64
  • Amélioration de la position neutre de la Wavebird.
  • Temps de réponse plus court dans l'interruption N64. Cela semble corriger F-Zero X. (Je n'ai jamais vu un jeu aussi capricieux et bogué*).
* Débranchez votre manette, même standard, et dites adieu à votre partie car la rebrancher ne fonctionnera pas. Il suffit de ne pas le faire dites-vous? Exact, mais si la manette ne répond pas à ne serait-ce qu'une seule interrogation d'état, eh bien, Game Over..

goto top Retour en haut


Circuit imprimé

Pour fabriquer des adaptateurs facilement, j'ai créé un petit circuit imprimé. Ce circuit imprimé est en vente, pré-programmé dans mon magain. Idéal pour fabriquer des adaptateurs sur mesures dans une boîte de votre choix, ou encore qui sait, l'intégrer à une N64? (J'ignore si l'espace nécessaire est disponible).

Pour le (re)programmer il suffit de souder les fils du programmeur ou un connecteur adéquat à l'arrière.

goto top Retour en haut


Avertissement

Je ne saurais être tenu responsable pour les dommages que la mise en œuvre des instructions présentées sur cette page pourraient causer à votre équipement ou à vous-même. Aussi, je ne donne aucune garantie quant à l'exactitude des informations et à leur fonctionnement. Notez toutefois que les procédures ci-haut ont fonctionnées sans aucun problème pour moi.

goto top Retour en haut


Les marques de commerce utilisées dans ce site appartiennent à leurs propriétaires respectifs.
Copyright © 2002-2013, Raphaël Assénat
Site codé avecSite codé avec vimDernière mise à jour: 28 Avril 2013