Extenmote: Manettes NES, SNES, N64 ou Gamecube sur Wii ou Wii U via la télécommande.

Résumé du projet

Il y a quelques années, j'ai réalisé un projet utilisant les ports de Gamecube de la Wii pour y raccorder des manettes NES, SNES et N64. Malheureusement, les ports de Gamecube ont été retirés des nouvelles Wii et la Wii U n'en offre pas non plus.

Ce nouveau projet utilise donc le port d'extension de la télécommande Wii (wiimote), exactement comme la manette classique de Nintendo. En fait, le microcontrôleur de ce projet fait tout simplement semblant d'en être une.

  • Permet de jouer aux jeux virtual console avec une manette d'origine.
  • Fonctionne sur la Wii U et sur les Wii dépourvues de ports Gamecube.
  • Apparait à la Wii comme étant une manette classique.
  • Supporte les manettes N64[2]
  • Supporte les manettes SNES
  • Supporte les manettes Gamecube (Testé avec les manettes standard Nintendo[1] et la Wavebird)
  • Supporte les manettes NES
[1] Manettes DOL-008: Version originale (Gamecube), version japonaise avec câble plus long et édition Super Smash Bros.
[2] Ne fonctionne pas avec « N64 reality quest glove »

Certaines version déjà assemblées de ce projet sont disponibles dans le magasin en ligne:




Photos

Adaptateur SNES

Adaptateur SNES

En développement

En développement

En développement

En développement

En développement

En développement

The lost levels

The lost levels

Mario Kart Wii

Mario Kart Wii

NES Classic edition

NES Classic edition



Installation dans une manette NES:





Support NES et SNES

Bouton Classique Wii Manette SNES Manette SNES (mode NES) Manette SNES mode analogique Manette NES
D-Pad D-Pad D-Pad D-Pad D-Pad
plus Start Start Start Start
moins Select Select Select Select
A A B A A
B B Y B B
X X X
Y Y Y
L L L
R R R
Lorsqu'une manette de SNES est utilisée pour des jeux SNES ou qu'une manette NES est utilisée pour des jeux NES, le mapping est très simple. Par contre, l'utilisation d'une manette SNES pour jouer à un jeu NES n'est pas idéale si A et B contrôlent A et B du côté Wii.

Pour activer le mode NES:
Appuyez sur START+SELECT+L+R+DOWN simultanément. Dans ce mode, les boutons SNES sont mieux disposés pour les jeux VC NES.

Pour activer le mode analogique:
Appuyez sur START+SELECT+L+R+LEFT simultanément. Dans ce mode, le D-Pad contrôle le joystick analogique gauche de la manette classique. Ce mode n'est pas vraiment utile, mais battre un ami à ainsi peut s'avérer plutôt drôle.

Pour retourner au mode standard:
Appuyez sur START+SELECT+L+R+UP simultanément.

Bouton Home:
Donnez trois coups rapides (Triple-clic) sur le bouton start pour activer le bouton home.(Depuis la version 1.9.5)



Support N64

N64Mode 0Mode 1Mode 2Mode 3Mode 4Mode 5Mode 6Mode 7Mode 8
A A A A A A A A A B
B B B B B B B B B Y
Start plus plus plus plus plus plus plus plus plus
L L ZR D-Down D-Down ZR L D-right ZR L
R R R R ZR R R R R R
Z ZR L L L & R L L L X & Y ZR
D-up D-up D-up D-up D-up D-up D-up D-up D-up D-up
D-down D-down D-down D-down D-down D-down D-down D-down D-down D-down
D-left D-left D-left D-left D-left D-left D-left D-left D-left D-left
D-right D-right D-right D-right D-right D-right D-right D-right D-right D-right
C-Up C-Up C-Up C-Up C-Up N/A C-Up N/A C-up C-Up
C-down C-down C-down C-down C-down+X N/A C-down X C-down A
C-left C-left C-left C-left C-left+Y Y C-left Y C-left X
C-right C-right C-right C-right C-right X C-right ZR C-right C-right
MappingActivationJeuxDisponible depuis
Mapping 0L+R+Z+D-upMario 64, Kirby 64, Mario Tennis 64, Wii64*, Bomberman hero, Mario Golf, Pokemon Puzzle Leaguev1.0
Mapping 1L+R+Z+D-downMario Kart 64, Mario Kart Wii, Mario Party 2, Cruisn' USA, Wave race 64, Custom robo v2v1.0
Mapping 2L+R+Z+D-leftZelda Ocarina of time, Paper Mariov1.0
Mapping 3L+R+Z+D-rightSuper Smash Brosv1.0
Mapping 4L+R+Z+C-upSin and punishmentv1.0
Mapping 5L+R+Z+C-downOgre Battle 64, 1080° Snowboarding, Pokemon Snap, Starfox 64v1.0
Mapping 6L+R+Z+C-leftF-Zero Xv1.6
Mapping 7L+R+Z+C-rightYoshi's Storyv1.6
Mapping 8L+R+Z+(Joystick-down)Mario Odysseyv2.1.1
Aidez moi à mettre en place les mappings nécessaires pour d'autres jeux en me faisant parvenir des photos du manuel.

Combinaisons spéciales:
* Lorsque le mapping 0 est actif, il est possible d'envoyer la combinaison de X et Y appuyés afin d'accéder au menu de Wii64. Il suffit d'appuyer sur les boutons suivants simultanément: Les 4 boutons C + D-Pad gauche + Z.

ZL + ZR:
Avant la version 2.1.1, ZL et ZR étaient toujours enfoncés simultanément. À présent, seul Zr est enfoncé (par exemple, avec le Mapping 0 lorsqu'on appuie sur Z). L'ancien comportement est encore disponible. Pour alterner entre les modes Zr seul et Zr+Zl, utilisez la combinaison L+R+Z+Joystick_down. (c'est à dire: Enfoncez et maintenez enfoncé L, R et Z, puis pointez le stick vers le haut)

Bouton Home:
Donnez trois coups rapides (Triple-clic) sur le bouton start pour activer le bouton home.(Depuis la version 1.9.5)

Conversion des valeurs du joystick:
La manette classique rapporte la position des axes sous 6 bit alors que la manette N64 retourne cette position sous 8 bit. La sensation d'une conversion linéaire n'était pas bonne. Après plusieurs essais, j'ai trouvé qu'en utilisant les courbes ci-dessous nous sommes bien plus près de la sensation d'origine.

Il faut noter que sous 6 bits, une valeur entre -32 et +31 peut être représentée mais qu'en pratique la manette classique retourne des valeurs environ entre -24 et 24.


Note: La courbe est appliquée de manière symétrique au mouvement du centre vers un côté. Les valeurs de sortie sont donc 0 à 31. Notez aussi que la valeur retournée par les manettes N64 standard fabriquées par Nintendo n'atteint pas le maximum de 127.

Sélection de la courbe avec firmware v1.5:
Dans la version 1.5, deux courbes sont offertes et configurables en appuyant les combinaisons indiqués ci-dessous. l'adaptateur mémorise la dernière configuration afin de vous éviter d'avoir à refaire la combinaison à chaque branchement.

L+R+Z+A: Courbe par défaut(v1.5)
L+R+Z+B: Courbe alternative (v1.4)

Sélection dans les version précédentes:
Version 1.4.1: La courbe par défaut est v1.4, la courbe alternative est v1.1.
Version 1.4 and 1.3: Aucun choix de courbe possible..

Plage de valeurs des manettes N64:
La courbe de la version 1.1 ne fonctionnait pas très bien avec certaines manettes. Le symptôme était l'impossibilité d'atteindre l'effet maximal dans le jeu (ex: course, virage serré). En tenant compte que les valeurs attendues du côté Wiimote se situent entre -24 et 24 et des valeurs retournées par les manettes N64 dans la pratique, on peut facilement comprendre pourquoi. Quoi qu'il en soit, le problème a été corrigé dans les version 1.4.1 et 1.5.

Voici un tableau démontrant le genre de différences observées:
ManetteAxe des XAxe des YÉtat du stick
Standard N64 rouge-82 à 79-85 à 83Comme neuf
Standard N64 aqua-80 à 80-80 à 85Comme neuf
Standard N64 grise-75 à 75-80 à 77Usé
Standard N64 mauve translucide-72 à 80-80 à 80Assez usé
Standard N64 jaune-68 à 64-69 à 80Extrêmement usé (jugé inutilisable)
Hori pad mini-100 à 100-100 à 100Comme neuf
Marque inconnue-88 à 87-90 à 85Comme neuf
Marque inconnue-128 à 127-128 à 127Comme neuf.




Support Gamecube

GamecubeMode 0Mode 1Mode 2Mode 3Mode 4Mode 5
Start plus plus plus plus plus plus
A A B A ZR B A
B B Y B A Y X
X X A X B A R
Y Y X Y X X B
L L L ZL ZL L ZL
R R R ZR Y R ZR
Z ZL & ZR minus R B ZR minus
D-up D-up D-up D-up D-up D-up D-up
D-down D-down D-down D-down D-down D-down D-down
D-left D-left D-left D-left D-left D-left D-left
D-right D-right D-right D-right D-right D-right D-right
Main stick Left stick Left stick Left stick Left stick Left stick Left stick
C stick Right stick Right stick Right stick Right stick Right stick Right stick
Bouton Home:
Donnez trois coups rapides (Triple-clic) sur le bouton start pour activer le bouton home.(Depuis la version 1.9.5)
Appuyez simultanément sur ces boutons pour activer le bouton home: A+B+Y+X+Z+C-Bas (Version 1.7, 1.8 et 1.9 seulement)

Fonctionnalité analogique des boutons L/R:
La fonctionnalité analogique des boutons gamecube L et R n'est qu'implémentée depuis la version 1.7. Dans les version précédentes, seul les boutons de fin de course L et R étaient fonctionnels.

MappingFirmwareActivationJeux
Mapping 0Depuis 1.3A+B+X+Y+Dpad-HautMario Kart Wii
Mapping 1Depuis 1.3A+B+X+Y+Dpad-BasJeux Virtual Console SNES
Mapping 2Depuis 1.4A+B+X+Y+Dpad-GaucheSuggestion pour Sonic & All-Stars Racing et probablement bien d'autres jeux.
Mapping 3Depuis 1.4A+B+X+Y+Dpad-DroiteSuggestion pour Sonic & All-Stars Racing.
Mapping 4Depuis 1.7A+B+X+Y+Z+C-gauchePour Devolution.
Mapping 5Depuis 1.9.5A+B+X+Y+Z+C-droiteSuper Mario 3D World.

Aidez moi à faire mieux en me faisant parvenir les mappings qu'il vous faut.

Combinaisons spéciales:
  • A+B+X+Y+L: Active/Déactive une option permettant d'activer les boutons L/R plus tôt en utilisant les valeurs analogiques des gâchettes L/R plutôt que d'utiliser uniquement les boutons butoirs. - Depuis la version 2.2.1



Schémas

Voici deux schémas. Un est pour un MCU en boîtier DIP (gros avec broches), l'autre en boîtier TQFP (petit, montage en surface).

Version DIP

Version DIP

Version TQFP

Version TQFP

Connecteurs NES et SNES

Connecteurs NES et SNES

Connecteurs N64 et GC

Connecteurs N64 et GC

Connecteur Wiimote

Connecteur Wiimote

Connecteur Wiimote

Connecteur Wiimote


Alimentation:
L'alimentation 3.3v provenant de la Wiimote est actuellement utilisée. Les manettes standard NES et SNES, bien que conçues pour 5 volt, fonctionnent bien. Certaines manettes fabriquées par des tiers ou encore des manettes spéciales comme la NES Advantage ne fonctionneront pas. Les manettes N64 sont conçues pour fonctionner à 3.3 volt alors aucun problème ici. Les manettes Gamecube utilisent normalement deux sources d'alimentation. Dans le cas des manettes conçues par Nintendo, il semble que l'alimentation 5 volt ne soit requise que pour la fonction vibration. Pour ce projet, simplement ne pas brancher le fil 5 volt de la manette Gamecube.

De la durée des piles:
D'après les mesures exposées dans la section suivante, avec une manettes SNES, la durée des piles sera semblable à celle obtenue avec la manette classique. Avec une manette N64, les piles dureront moins longtemps, mais la durée totale devrait être plus longue que si la wii motion plus est utilisée...

Voici une liste des pièces avec suggestion de composantes pour le montage par trous.
Ref.DescriptionSuggestions
R11.5K resistorDigikey S1.5KQCT-ND ou autre.
C1,C218pf ceramic capacitorsDigikey BC1004CT-ND
C3,C4.1uF ceramic capacitorsDigikey BC2665CT-ND
P12x3 .100" pitch standard headerDigikey 609-3218-ND
Y1Crystal 12 MhzDigikey CTX904-ND
U1Atmega168a (Ou Atmega168)Digikey ATMEGA168A-PU-ND

Note: Si un montage SNES seulement est réalisé, Y1, C1 et C2 ne sont pas requis si les Fuses sont programmés pour utiliser l'oscillateur interne de 8 Mhz.

Voici un montage réalisé avec les pièces ci-dessus.





Consommation

La consommation électrique est en lien direct avec la durée des piles. Plus la consommation est élevée, plus il faudra changer les piles rapidement. Comme le démontre le tableau suivant, cet adaptateur consomme 1.6mA à lui seul, mais à cela s'ajoute la consommation de la manette utilisée. J'ai également mesuré la consommation de divers accessoires pour télécommande Wii afin d'avoir un point de référence.

Note: Toutes les mesures ont été prises à 3.3v entre la télécommande wii et l'accessoire en question à l'aide d'une rallonge wiimote et d'un multimètre.

Accessoire Consommation
Extenmote v1.1, Atmega168, no controller connected1.6mA
Classic controller RVL-005 1.7mA typique, environ 3mA tout boutons enfoncés
Classic controller RVL-005(-02) 1.36mA typique, environ 3mA tout boutons enfoncés
Extenmote v1.1, Atmega168, avec manette SNES américaine standard (SNS-005)2mA
Nunchuk RVL-004 2.3mA typique
Extenmote v1.1, Atmega168, avec manette Gamecube DOL-003 blanche (Japon)4.4mA
Immitation de manette classique5.5mA typique
Extenmote v1.1, Atmega168, avec manette N64 Horipad mini5.6mA
Récepteur de Nunchuk sans fil (marque inconnue)11.9mA typique
Extenmote v1.1, Atmega168, avec manette N64 standard NUS-00515.4mA
Wii motion plus 22.5mA (Chute à environ 1.5mA lorsqu'un accessoire est branché)
Conclusions:
  • Extenmote avec une manette de N64 consomme moins que la Wii motion plus. La durée de piles sera moins bonne qu'avec une manette Classique mais devrait dépasser la durée obtenue avec l'accessoire Wii motion plus.
  • Nintendo a fait du très bon travail avec la manette classique et la Nunchuk.
  • L'accessoire Wii motion plus consomme 22.5mA, mais dès qu'un accessoire (Manette classique, Nunchuk ou Extenmote) y est branché, sa consommation chute à 1.5mA. L'impact de sa présence est réduit, mais pour étirer au maximum la durée de vie des piles, il est tout de même préférable de le retirer lorsqu'il n'est pas requis.
  • Fait intéressant: La manette N64 Horipad mini consomme bien moins que la manette N64 standard.
  • L'adaptateur utilise le mode 'Extended Standby' du Atmega168. Cela réduit la consommation de l'adaptateur de 4mA à 1.6mA.



Délais

L'utilisation de l'adaptateur cause un léger délais supplémentaire. C'est inévitable. La bonne nouvelle est qu'il est très court. (Moins de 3 millièmes de seconde)
SymboleParamètreValeurUnitésCommentaires
ATemps interrogation N64/Gamecube0.4ms
BDélais causé par l'adaptateur2.84msPire cas observé.
CDélais interrogation wiimote à mise à jour N64/GC2.35msPoint de départ variable.
DTemps de communication wiimote1.5ms
EInterval d'interrogation wiimote5ms
Note: Je définis le délais causé par l'adaptateur comme étant le temps entre le moment ou les donnés de la manette ont été complètement reçues et le moment où cesdites données ont été retransmises au complet à la wiimote.

Note 2: L'ensemble du système (manette>adaptateur>wiimote>bluetooth>wii>Jeu>Télé) comporte plusieurs autres éléments susceptibles de causer des délais. Cet adaptateur s'efforce de contribuer au délais total le moins possible.


Compatibilité

Du point de vue de la console Wii ou Wii U, l'adaptateur n'est qu'une manette classique et devrait donc fonctionner avec n'importe quel jeu supportant la manette classique. Il n'y a pas de jeu incompatible connu à ce jour.

Malgré tout, on me pose souvent la question: Est-ce que l'adaptateur est compatible avec le jeu X. Voici donc une courte liste de logiciels testés:
  • Menu Wii, et Wii U
  • Mario Kart 8 (Wii U)
  • Super Smash Bros Brawl (Wii)
  • Sonic & All Stars Racing transformed (Wii U)
  • Super Mario 3D World
  • Jeux Virtual Console SNES et NES
  • Jeux Virtual Console N64: Mario 64, Kirby 64, Mario Tennis 64, Wii64, Bomberman hero, Mario Golf, Pokemon Puzzle League, Mario Kart 64, Mario Party 2, Cruisn' USA, Wave race 64, Custom robo v2, Zelda Ocarina of time, Paper Mario, Super Smash Bros, Sin and punishment, Ogre Battle 64, 1080° Snowboarding, Pokemon Snap, Starfox 64, F-Zero X, Yoshi's Story
Cette liste ne se veut pas exhaustive. Si un jeu n'y figure pas, il y de très bonnes chances qu'il fonctionne très bien avec l'adaptateur. Si vous testez un jeu non listé, veuillez m'en faire part pour que je l'ajoute.


Circuit imprimé

Il n'y a pas encore de circuit imprimé dédié pour ce projet, et ce n'est pas nécessaire. J'utilise mon circuit à usage multiples Multiuse PCB2 qui convient à merveille.



Des circuits déjà assemblés et programmés sont disponible dans le magasin en ligne:




Logiciel

Version 2.2.1
14 juillet 2022 (Jeudi)
  • Ajout d'une option pour les manette Gamecube permettant d'activer les boutons L/R plus tôt en utilisant les valeurs analogiques des gâchettes L/R plutôt que d'utiliser uniquement les boutons butoirs. La commutation de cette option se fait en appuyant sur A+B+X+Y+L. La configuration est mémorisée même si l'alimentation est coupée.
Fichier(s):
extenmote-2.2.1.tar.gz (92.1 KB)
extenmote-2.2.1.hex (38.5 KB)
Afficher les versions précédentes
Version 2.1.1
1 février 2019 (Vendredi)
  • Nouveau mapping de bouton. (activé par L+R+Z+Joystick_bas)
  • Valeurs d'axes améliorées en mode 'haute résolution'.
  • N64: ZL et ZR ne sont plus liés. Par défaut, c'est désormais seulement Zr qui s'active. L'ancien comportement peut être commuté en faisant L+R+Z+Joystick_haut.
Fichier(s):
extenmote-2.1.1.tar.gz (91.5 KB)
extenmote-2.1.1.hex (38.3 KB)
Version 2.1.0
30 novembre 2016 (Mercredi)
Support du NES Classic Edition
Fichier(s):
extenmote-2.1.0.tar.gz (90.2 KB)
extenmote-2.1.0.hex (38 KB)
Version 2.0
6 juillet 2016 (Mercredi)
  • Support des manettes Megadrive et SMS
  • Corrige un problème de compilation avec les version récentes de AVR LIBC
Fichier(s):
extenmote-2.0.tar.gz (88.2 KB)
extenmote-2.0.hex (37.2 KB)
Version 1.9.7
19 mai 2014 (Lundi)
Correctif et amélioration des leviers L/R:
  • N64/SNES: Simulation des valeurs analogiques des leviers L/R via les boutons correspondants.
  • Gamecube: Réparation du support analogique des leviers L/R (Ne fonctionnait plus depuis la version 1.9!)
Fichier(s):
extenmote-1.9.7.tar.gz (84.7 KB)
extenmote-1.9.7.hex (32.5 KB)
Version 1.9.6
29 avril 2014 (Mardi)
Support des manettes NES/SNES à nouveau fonctionnel (était brisé dans v1.9.5)
Fichier(s):
extenmote-1.9.6.tar.gz (84.5 KB)
extenmote-1.9.6.hex (32.4 KB)
Version 1.9.5
26 avril 2014 (Samedi)
Nouveau «mapping» Gamecube et correctifs divers:
  • Ajout d'un nouveau mapping pour Gamecube
  • Le bouton HOME peut maintenant être activé en faisant un Triple-clic sur le bouton start (SNES/NES/GC/N64)
  • Prévention d'un «overflow» 8bit. Corrige le symptôme « Direction gauche ne fonctionne pas » pour certaines imitations de manettes N64 de mauvaise qualité. Notez que la qualité générale de la manette n'en n'est pas améliorée. Elle fonctionnera aussi mal que sur un N64.
  • Ajustement de la vitesse de communication Gamecube/N64 (Note: N'a pas d'effet sur le «lag» ou délais de réponse de l'adaptateur)
  • Correction d'un bug d'initialisation du EEPROM (Mapping précédent non mémorisé)
  • Détection des manettes améliorée
Fichier(s):
extenmote-1.9.5.tar.gz (84.5 KB)
extenmote-1.9.5.hex (32.4 KB)
Version 1.9
24 Août 2013
Améliorations de l'accès aux données brutes des manettes:
  • Les données des manettes SNES et NES sont maintenant exposées
  • Implémentation d'une mode spécial l'ID de l'extension wiimote dépends de la manette utilisée.
  • Les données brutes N64 et GC sont maintenant disponibles telles quelles et incluent donc aussi les boutons.
Détails techniques ici: http://www.raphnet.net/programmation/extenmote_raw/index.php.
Fichier(s):
extenmote-1.9.tar.gz (83.1 KB)
extenmote-1.9.hex (33.6 KB)
Version 1.8
24 Juillet 2013
  • [GC/N64] Les donnés des axes des manettes N64 et GC sont maintenant concaténées à la structure de donnés standard de manette classique. Certains logiciels seront éventuellement capable de détecter cette fonctionnalité pour utiliser les axes à la pleine résolution d'origine.
Fichier(s):
extenmote-1.8.tar.gz (82.4 KB)
extenmote-1.8.hex (31.3 KB)
Version 1.7
17 Juillet 2013
Fonctionalités Gamecube:
  • [GC] Ajout d'un mapping pour Devolution
  • [GC] Ajout d'une combinaison de bouton permettant d'activer le bouton Home.
  • [GC] Implémentation de la fonctionnalité analogique des leviers L et R.
  • [GC/N64] Maintenir Start enfoncé au branchement de la manette (ou mise sous tension) permet de déactiver les combinaisons de boutons liées au mapping. (Au cas où un jeu aurait besoin de la même combinaison).
Fichier(s):
extenmote-1.7.tar.gz (81.4 KB)
extenmote-1.7.hex (30.8 KB)
Version 1.6
13 Juillet 2013
Nouveau mappings et correctifs:
  • Ajout de deux mappings N64 pour les jeux F-Zero X et Yoshi's Story.
  • Correction des donnés de calibration pour libOGC (permet notamment à Wii64 de fonctionner).
  • N64: Lorsque le mapping 0 est actif, la combinaison des quatre boutons C, D-Pad gauche et Z permet l'envoi d'un état appuyé des boutons X et Y. Utile pour accéder au menu de Wii64.
  • La courbe de transfert N64 par défaut (v1.5) n'était pas vraiment active par défaut. Il devait être explicitement activé avec la combinaison L+R+Z+A. (corrigé)
  • Inclusion d'un outil de test dans le code source. (Requiert Linux et un adaptateur wusbmote)
Fichier(s):
extenmote-1.6.tar.gz (80.5 KB)
extenmote-1.6.hex (29.8 KB)
Version 1.5
30 Janvier 2013
Nouvelle version contenant des correctifs importants!
  • Nouvelle courbe de transfert dans v1.5. (Bien meilleur pour Zelda)
  • Correctif: Il n'est plus nécessaire de rebrancher l'adaptateur lorsqu'on bascule entre le menu Wii et un jeu.
  • Correctif: Le problème de défilement continue qui survenait uniquement (à ma connaissance) dans le menu principal de la Wii U a été corrigé.
Fichier(s):
extenmote-1.5.tar.gz (77.2 KB)
extenmote-1.5.hex (29.1 KB)
Version 1.4.1
23 Janvier 2013
Nouveau:
  • Deux nouveaux mappings expérimentaux pour Gamecube.
  • Mise à jour de la courbe de réponse du joystick N64. Fonctionne avec les manettes plus usées. (L'ancienne courbe peut être rappelée à l'aide d'une combinaison de boutons.
  • La configuration de l'adaptateur (Mappings, courbes) est maintenant storée en mémoire non volatile. Il n'est plus nécessaire de reconfigurer l'adaptateur à chaque branchement.
Problèmes connus:
  • Certaines manettes NES ne fonctionnent pas à cause du voltage d'alimentation de seulement 3.3v (ex: La NES Advantage)
  • La fonctionnalité analogique des 'sliders' L et R n'est pas implémentée. (Cela ne semble pas causer problème).
  • Lorsqu'on passe du menu principal Wii à un jeu, il faut rebrancher l'adaptateur.
Fichier(s):
extenmote-1.4.1.tar.gz (61.6 KB)
extenmote-1.4.1.hex (28.2 KB)
Version 1.3
6 Janvier 2013
Du progrès sur le support Gamecube:
  • Nouveau mapping rendant les jeux VC SNES plus jouables.
  • Implémentation du C stick.
  • Note: La fonctionnalité analogique des 'sliders' L et R n'est toujours pas implémentée. J'aurais besoin d'un jeu se servant de cette fonction pour tester. Auriez-vous des suggestions?
Problèmes connus:
  • Certaines manettes NES ne fonctionnent pas à cause du voltage d'alimentation de seulement 3.3v (ex: La NES Advantage)
  • Le support des manettes Gamecube n'est pas terminé.
  • Les manettes de N64 usées ne fonctionne pas bien avec la courbe de transfert.
  • Lorsqu'on passe du menu principal Wii à un jeu, il faut rebrancher l'adaptateur.
Fichier(s):
extenmote-1.3.tar.gz (35.3 KB)
extenmote-1.3.hex (26.8 KB)
Version 1.2
1 Janvier 2013
Correction spécifique au circuit multiuse PCB2 permettant de réduire la consommation électrique.
Fichier(s):
extenmote-1.2.tar.gz (34.6 KB)
extenmote-1.2.hex (26.3 KB)
Version 1.1
25 Décembre 2012
Première publication.

Supporté:
  • Manette N64, 6 mappings disponibles.
  • Manette SNES, 3 mappings disponibles. Testé: Manette américaine SNS-005
  • Support des manettes NES: Testé avec la manette Standard (NES-004), la NES MAX (NES-027)
  • Projet testé avec plusieurs jeux Virtual Console NES, SNES et N64. Mario Kart Wii fonctionne aussi.
Problèmes connus:
  • Certaines manettes NES ne fonctionnent pas à cause du voltage d'alimentation de seulement 3.3v (ex: La NES Advantage)
  • Le support des manettes Gamecube n'est pas terminé.
Fichier(s):
extenmote-1.1.tar.gz (34.5 KB)
extenmote-1.1.hex (26.3 KB)
Utilisation des fichiers .hex
Les fichiers .hex sont pour programmer l'Atmega168a. Les "fuses bytes" pour ce projet sont: extended_byte=0x01, high_byte=0xdf, low_byte=0xdf.

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

Code source (fichiers .tar.gz):
À moins d'indications contraires, le code source est rendu publique sous la licence GPL v3. Consulter le fichier gpl.txt inclus dans le .tar.gz pour plus d'informations. Le projet se compile avec avr-gcc sous Linux.

Ce projet est aussi disponible sur GitHub!
Pour suggérer de nouvelles fonctionnalités, signaler un problème ou contribuer au projet, vous pouvez m'écrire ou utiliser le dépôt GitHub:
https://github.com/raphnet/extenmote



Donnés brutes

Afin d'assurer sa compatibilité avec les logiciels déjà existants, mon adaptateur extenmote doit convertir les valeurs d'axes au format utilisé par la manette classique. Malheureusement, cela occasionne une diminution de précision. Par exemple, la position du stick gauche passe de 8 bits (N64/GC) à 6 bits (manette classique]). Il est donc clair que les manettes N64 et Gamecube utilisées via l'adaptateur ne fonctionnent pas au maximum de leur potentiel.

À partir de la version 1.8, l'adaptateur concatène les valeurs analogiques brutes à la structure de donnée standard d'une manette classique. Les logiciels supportant la manette classique continuent donc de fonctionner, mais les donnés brutes sont disponibles et utilisables là ou cela peut être bénéfique.

Cette fonctionnalité est documentée sur sa propre page. Un exemple utilisant une libOGC modifiée est disponible.


Photos provenant des utilisateurs

J'aime bien voir comment les autres s'y prennent pour assembler mes projets. Vous pouvez me faire parvenir des photos de vos montages et je les afficherai ici. Veuillez également m'indiquer si vous souhaitez que j'affiche votre nom/alias et pays. Par défaut je ne mentionnerai que votre prénom.

J'ai reçu ces deux photos d'un utilisateur ayant assemblé le tout à même sa manette de N64. Notez la soudure habile du MCU montage en surface:



2013-02: Alexandre me fait parvenir ces deux photos du circuit installé dans une manette de N64.



2013-02-13: Samuel m'a envoyé ces photos du circuit installé dans une manette NES.



2013-08-12: Santiago a fabriqué l'adaptateur dans un boîtier de Gameboy. Le branchement des manettes se fait via une sélection de cartouches de jeu modifiées!



2015-05-04: Jonathan au Canada a fabriqué cette paire d'adaptateurs SNES/Gamecube à Wiimote:


Mars 2016: Jonathan a ajouté deux autres adaptaters à sa collection: N64/Gamecube à Wiimote:





Références

Les pages suivantes m'ont été d'une grande utilité pour la réalisation de ce projet.

Tout d'abord, la communication avec la Wiimote a été rendue possible grâce au code du projet suivant:
DIY Drum Set Controller for the Wii made with AVR

Les pages suivantes m'ont également beaucoup aidé:
Nintendo Gamecube Controller Protocol
Yet Another Gamecube Documentation
Sci.Electronics FAQ: Super Nintendo Entertainment System: pinouts & protocol
http://www.hardwarebook.info/Wiimote_Expansion_Port
http://wiibrew.org/wiki/Wiimote/Extension_Controllers
http://wiibrew.org/wiki/Wiimote/Extension_Controllers/Classic_Controller



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.