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:
- Support des manettes Gamecube officielles (Manette blanche Japonaise avec long câble incluse).
- Support des manettes sans fil Wavebird de Nintendo et d'Intec.
- Devrait fonctionner avec tout périphérique équivalent à une manette (clones, tapis, etc).
- Mapping des boutons programmable permettant pour une expérience de jeu la meilleure possible.
- Algorithme d'interrogation à faible délai de transit (environ 5ms, soit moins qu'une trame)
- Support d'un buzzer facilitant la programmation.
Versions partiellement assemblées et adaptateurs complets disponibles dans le magasin!
Circuit pré-assemblé (soudez vos fils)
Adaptateur complet (prêt à jouer)
Retour en haut
Photos
Voici quelques photos. Envoyez-moi les vôtres que je puisse les ajouter ici!
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.
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:
- Avant la version 1.3.1, lorsqu'on configurait le joystick principal pour contrôler des boutons, les directions up[18]/down[19] et left[20]/right[21] étaient inversées.
- Avant la version 1.3.1, il y avait un bug faisant en sorte que lorsqu'un nouveau code de mapping était saisi, certains éléments du mapping en cours
pouvaient rester actifs. Pour éviter ce problème, il suffit de redémarrer l'adaptateur avant de saisir un nouveau code. (Notez que la sauvegarde et le rappel des
mappings fonctionnait bien)
- Avant la version 1.2.2, les leviers analogiques L et R contrôlaient les boutons N64 L et R même s'ils étaient configurés à [20] None ci-dessus. Pour les déactiver réellement, utilisez le code BBXZBBAL ZBBAL. (Pour le combiner avec votre propre mapping, ajoutez le code avant le START final de votre mapping existant.)
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.
| Mapping | Jeu(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) |
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?
- D'abord car il s'agit de l'architecture sur laquelle j'ai le plus d'expérience.
- Ensuite, cela me permet de réutiliser une bonne partie du code de d'autrse
projets tels que l'adaptateur gc/n64 à USB et
l'adaptateur N64 à Gamecube/Wii. Surtout que la communication
N64 et Gamecube est faite en assembleur où le temps d'exécution de chaque
instruction compte, le port à une autre architecture serait en fait une
réécriture.
- Finalement, comme j'utilise beaucoup le ATMega8, j'économise en achetant
seulement celui là en plus grande quantité.
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.
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) | Date | Description |
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.. |
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.
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.
Retour en haut