Adaptateur manette Gamecube à NES

Introduction

À l'inverse des autres adaptateurs que j'ai conçu qui permettent d'utiliser les manettes d'autrefois sur le matériel moderne, ce projet propose d'utiliser une manette d'aujourd'hui sur du matériel d'hier.

M'étant fait demander de réaliser un adaptateur permettant d'utiliser une manette Gamecube pour jouer à la NES, j'ai passé quelques soirées à mettre au point ce projet, et beaucoup plus de temps à tester (Un réel plaisir de jouer avec la Wavebird).

Caractéristiques:
  • Se branche directement à un port de manette sur la NES.
  • Supporte la plupart des manettes Gamecube. Testé avec les manettes traditionnelles, les manettes japonaises blanche à long fil, la Nintendo Wavebird et une manette sans fil d'Intec.
  • Fonction turbo (Quand L est appuyé, active le mode turbo pour les boutons A et B)
  • Mode spécial pour Mario (course automatique).

Adaptateurs complets disponibles dans le magasin!
Adaptateur complet (prêt à jouer)



Photos

Voici quelques photos. Envoyez-moi les vôtres que je puisse les ajouter ici!
En développemnet.

En développemnet.

Jour que d'une main...

Jour que d'une main...

NES et Wavebird

NES et Wavebird

Adaptateur

Adaptateur

Manette blanche supportée

Manette blanche supportée


Note: Deux NES sont visibles sur ces photos. Celle que j'ai celle que j'ai modifiée il y a quelques annés et ma NES transformée pour faire tourner la version arcade de Super Mario Bros.


Fonctionnement

L'équivalence des boutons est simplement la suivante:

GamecubeNES
AA
BB
StartStart
ZSelect
D-PadD-Pad
JoystickD-Pad
LTurbo A/B
Modes spéciaux:
  • Course automatique: Si A est enfoncé lors de la mise sous tension, le bouton NES B sera activé par le joystick lorsque celui-ci est déplacé au delà d'un certain seuil. Essayez Super Mario dans ce mode. Il n'est nécessaire d'appuyer sur un bouton que pour sauter!
  • Sensibilité: Si B est enfoncé lors de la mise sous tension, le seuil à partir duquel un déplacement du joystick entrâine l'activation de la direction D-Pad correspondante du côté NES sera plus bas. (Le stick devient plus sensible). Certains jeux sont plus agréables ainsi.




Compatiblité

L'adaptateur devrait fonctionne avec la plupart des jeux. Jusqu'à maintenant, les jeux suivant ont été testés. N'hésitez pas à me contacter si vous essayez l'adaptateur avec d'autres jeux!

Baseball, Battle Tank, Blades of steel, Bubble Bobble, Ikari Warriors, Kid Icarus, Legendary Wings, Lifeforce, MetalStorm, Metroid, Paperboy, R.C. Pro-AM, Super Mario Bros, Super Mario Bros II, Super Mario Bros III, Turtles II, Zelda II.

Attention: L'écran de pause de Paperboy ne fonctionne pas à cause que le jeu interroge la manette d'une manière très agressive. Avec le firmware 1.0, il n'est pas possible de retourner au jeu. Des changements au firmware 1.1 font que le jeu recommence immédiatement. (Désolé, mais avec le circuit actuel, je ne peux pas faire mieux. Si le projet devient populaire je pourrais conçevoir un circuit 100% compatible...)


Partie électronique

J'ai encore une fois réutilisé mon circuit multiuse pcb2 utilisant un Atmega8a. J'utilise un régulateur linéaire pour abaisser la tension de 5 volt provenant de la NES à 3.3 volt pour la manette Gamecube. Pour ce projet, le circuit est cadencé à l'aide d'un cristal de 12Mhz.

Broche AtmegaSignal NES ou Gamecube
PD2 / INT0NES Latch
PC0NES Data
PC1NES Clock
PC5Gamecube data (avec résistances pull-up externe de 1K vers 3.3 volt)

Important: Assurez-vous d'alimenter le MCU (atmega8a) à 5 volt, et de fournir du 3.3 volt ET du 5 volt à la manette Gamecube.

Voici le pinout des connecteurs Gamecube et NES.

Attention! Il n'y a aucun lien entre les couleurs des conducteurs et les couleurs dans l'image ci-haut.



Programmation et code source

Ce projet est distribué sous forme de code source (License GPL) 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:
  • ATmega8: high_byte=0xc9 low_byte=0x9f.
  • Atmega168: ext_byte=0x01, high_byte=0xD5, low_byte=0xD7
Pour de l'information sur la programmation d'un AVR, visitez ma page sur la programmation d'AVR

Voici sans plus tarder les fichiers:
Version v1.2
23 octobre 2016 (Dimanche)
Mise à jour du code de communication Gamecube depuis gcn64usb v2.9.2. Cela améliore la compatibilité.
Fichier(s):
gc_to_nes-1.2.tar.gz (30.4 KB)
gc_to_nes-1.2-atmega8.hex (18.3 KB)
gc_to_nes-1.2-atmega168.hex (16.9 KB)
Afficher les versions précédentes
Version v1.1.1
2 Septembre 2013
Support du atmega168
Fichier(s):
gamecube_to_nes-1.1.1.tar.gz (24.2 KB)
gc_to_nes-1.1.1-atmega168.hex (16.8 KB)
Version v1.1
15 Avril 2012
Nouvelle version corrigée pour fonctionner correctement avec Mario Bros 3.
Fichier(s):
gc_to_nes-1.1.tar.gz (23.4 KB)
gc_to_nes-1.1.hex (18.3 KB)
Version v1.0
Février 2012
Version initiale.
Fichier(s):
gc_to_nes-1.0.tar.gz (21.2 KB)
gc_to_nes-1.0.hex (8.7 KB)
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/gamecube_to_nes




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.