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)
  • Firmware pouvant être mis à jour par l'utilisateur.
  • Support d'un LED ou buzzer facilitant la programmation de mappings.

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



Photos

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

N64 et manette GC (Adaptateur V1)

Circuit imprimé (V1)

Circuit imprimé (V1)

Version 2

Version 2

Version 2 avec LED

Version 2 avec LED





É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
[27] Joystick left-right axis (inverted) - v2.3 or newer
[28] Joystick up-down axis (inverted) - v2.3 or newer
[29] C-Stick left-right axis (inverted) - v2.3 or newer
[30] C-Stick up-down axis (inverted) - v2.3 or newer

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
Entrez 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.

2C) Rappel du mapping par défaut standard 1 pour 1
Une fois en mode de configuration, appuyez d'abord sur R, et ensuite sur START.

3) Activer/déactiver la zone morte (depuis 1.3)
Entrez 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.

4) Activation automatique d'un mapping sauvegardé au démarrage (depuis 1.5)
Entrez en mode gestion des mappings, appuyez et relâchez R, puis L. Appuyez ensuite sur la direction du pavé numérique correspondant au mapping que vous souhaitez être rappelé automatiquement au démarrage. Sinon, pour que le mapping standard soit actif par défaut, appuyez plutôt sur START.

5) Modes de conversion des valeurs de stick (depuis 2.0)
Les valeurs d'axes Gamecube doivent être traduites avant d'être retransmises vers la N64. Plusieurs versions sont disponibles et il est possible de passer d'une à l'autre dans cet ordre:
  1. Mode v2.0 (standard, par défaut)
  2. Mode étendu (depuis le firmware 2.1, très sensible)
  3. Mode v1.5 (ancienne formule, diagonales peu sensibles)
Pour passer d'un mode au suivant, entrez d'abord en mode de configuration. Appuyez ensuite sur R, puis sur B. Après quelques secondes l'adaptateur confirmera le changement en clignotant deux fois et retournera au mode jeu.

Pour en apprendre davantage sur ces différents modes, consultez la section Valeurs d'axes.

6) Réinitialisation (depuis 2.0)
Pour effacer les mappings sauvegardés et remettre les options (ex: Zone morte) aux valeurs d'usine, entrez d'abord en mode de configuration. Appuyez sur R et ensuite sur X. Après quelques secondes, l'adaptateur clignotera pour confirmer et retournera au mode jeu.

7) Activer ou déactiver le "Controller Pak" (carte mémoire intégrée) (depuis 2.3)
Pour activer la fonction de carte mémoire, ou pour la déactiver si elle est active, entrez d'abord en mode de configuration. Appuyer sur R et ensuite sur Y. Après quelques secondes, l'adaptateur clignotera pour confirmer et retournera au mode jeu.

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.)



Carte des menus

Voici un organigramme permettant d'avoir une vue d'ensemble du mode de gestion de l'adaptateur décrit dans la section précédente.
Organigramme de la version 2.3

Organigramme de la version 2.3





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)
XZBBL BBZXL ZBAAL ZBABL ZBAXL ZBAYL YXZBBAL ZBBAL BAXZBXL ZBYL ZXAL ZXBL BXAZYXL ZYYL START Goldeneye 007 N64 Lorsque les contrôles du jeu sont configurés en mode 1.2 Solitaire, permet de jouer à Goldeneye avec des contrôles de style « Call of Duty » / « Halo ».
BAZXAL ZXBL BYZBBAL ZBBAL ZBBAL BAAZBYL ZXL BBXZXAL ZXBL start Earthworm Jim 3D Contrôle de la caméra avec L/R, armes avec X/Y.
XZBBL BAZXL ZXL XXZBAL BAAZBXL ZXAL START Super Smash Bros. 64 X/Y pour sauter, Z pour saisir, R et L pour parer, et D-Pad vers le haut pour provoquer. (Correspond au mapping pour manette Gamecube de melee/brawl/smash4.)
XZBBL BAZBBL BXZAL ZAL ZAL ZAL ZBAL ZBAL ZBAL ZBAL BAAZBYL BAAZBYL ZBYL BBXZXLZXL START Super Smash Bros 64 Je me suis efforcé de reproduire la configuration des version ultérieures de Super Smash Bros tout en améliorant un peu.
  • Enfoncés partiellement, L et R pour bloquer (shield) et lorsque enfoncés complètement, permet de saisir (grab) l'adversaire.
  • Y et X sont pour sauter.
  • A pour «hit» et B pour «special».
  • Toutes les directions du stick C correspondent au bouton A, donc « hit ».
  • Z pour saisir l'adversaire (Grab).
(Fourni par Benjamin Wilkinson)
XZBBL BAZXL ZXL ZAL ZAL ZAL ZAL ZBAL BAAZXBL ZBXL ZBAAL ZBABL ZBAXL ZBAYL ZXL ZXL ZYXL ZYYL START Super Smash Bros Ce mapping fonctionne exactement comme dans Melee et Brawl.
  • Y/X pour sauter
  • C-stick pour les attaque smash et aériennes
  • Z pour saisir (grab)
  • R/L pour bloquer (le bouclier apparaît à mis chemin comme dans Melee)
  • Dpad-haut: Taunt
(Fourni par Tyler)
BZAL ZBXL BAZXL BXZBL ZBL ZBL XXZBAAL ZBABL ZBAXL ZBAYL BAAZBYL ZXALZBAAL ZBABL ZBAXL ZBAYLZXL ZBBL START Lylat Wars J'ai créé cette configuration afin que les commandes ne soient ni difficiles à apprendre, ni à utiliser.
  • Inversion des directions gauche/droite du C stick.
  • Y est 'boos't, X est 'slow'
  • B et A et a sont 'shoot'
  • Z est le mode FPS
  • D-Pad: Bombe (toutes directions)
  • Les gâchettes L et R ne nécéssites qu'un enfoncement partiel pour s'activer. Plus rapide et facilite l'exécution de ce que le jeu nomme « barrel roll ».
(Fourni par Benjamin Wilkinson)
XZBBL BAZXL ZXL XXZBAAL ZBABL ZBAXL ZBAYL BAAZAL ZXL BBXZXL ZXL START Super Mario 64 J'ai conçu ceci pour toutes les situations dans Super Mario 64.
  • Mario se penche avec une légère pression sur les gâchettes L et R.
  • Z permet permuter la caméra.
  • Le stick C permet l'ajustement de l'angle de caméra.
  • A et X sont pour sauter.
  • B est pour frapper, et Y permet également de se pencher et fonctionne bien pour les longs sauts. The D-Pad peut être utilisé comme le stick.
(Fourni par Benjamin Wilkinson)
BZBYL ZXBL BAZXL BXZB BAL ZBBAL ZBBAL ZBBAL ZBAAL ZBABL ZBAXL ZBAYL BAAZBXL ZBL ZBAAL ZBABL ZBAXL ZBAYL ZXL ZBBL START F Zero X Vous devrez d'abord brancher l'adaptateur et saisir le code de configuration. Appuyez ensuite sur le bouton RESET du N64 pour que la manette soit reconnue au démarrage. J'ai configuré les commandes pour qu'elles soit très près de celles de F Zero GX.
  • Faible pression sur L: Se pencher vers la gauche.
  • Faible pression sur R: Se pencher vers la droite.
  • Z: Distance caméra
  • X: Caméra arrière
  • Y: boost
  • Le D-Pad peut être utilisé comme stick pour ceux qui préfèrent.
(Fourni par Benjamin Wilkinson)
XZBXL BAZXL BXZBAL ZXBLZXBL ZBAL ZBAAL ZBABL ZBAXL ZBAYL BAAZXL ZXL ZBAAL ZBABL ZBAXL ZBAYL ZXL ZBBL START Mario Kart 64
  • Faible pression sur R pour déraper.
  • Faible pression sur L pour item
  • Y et X pour item
  • C stick vers le haut et la droite: Commutateur de musique
  • C stick vers la gauche et le bas pour la carte, la vitesse et la position.
  • Z: Distance de la caméra
  • Le D-Pad peut être utilisé comme stick pour ceux qui préfèrent.
(Fourni par Benjamin Wilkinson)
XXZBAAL ZBABL ZBAXL ZBAYL BXZXBL ZXBL ZXBL XZBXL BAZBBL BAAZXL ZXLZBAAL ZBABL ZBAXL ZBAYL ZBBL ZBBL START Diddy Kong Racing Pour ce jeu, les deux gâchettes doivent permettre de déraper pour tout véhicule.
  • Faible pression sur L: Dérapage
  • Faible pression sur R: Dérapage
  • A: Avancer
  • B: freiner
  • Y et X: Item
  • Z: Distance de la caméra
  • C stick: Vitesse, carte
  • Le D-Pad peut être utilisé comme stick pour ceux qui préfèrent.
(Fourni par Benjamin Wilkinson)
XZXAL BAZXL BYZBXL ZXL ZXL ZBXL ZBYL ZXAL ZXBL BAAZBYL ZXBL ZBAAL ZBABL ZBAXL ZBAYL ZBBL ZXL START Ocarina of Time J'ai eu l'idée de combiner les fonctions bouclier et cible sur les gâchettes. Plusieurs options pour l'utilisation des items sont également possibles.
  • L enfoncé partiellement: Bouclier
  • L à fond: Cible
  • R enfoncé partiellement: Cible
  • R à fond: Bouclier
  • A: Rouler
  • B: Coup d'épée
  • C stick gauche/droite: Cible (z)
  • C stick haut/bas: Mode première personne.
  • Z: Item de gauche (j'utilise le «slingshot»)
  • Y: Item de droite (j'utilise le «deku nut»
  • X: Item du bas (j'utilise la bombe)
  • D pad: Pour les items, ou pour le mode FPS selon votre préférence.
(Fourni par Benjamin Wilkinson)



Utilisation de cartes mémoire

On me demande de temps à autre comment peut-on utiliser une carte mémoire avec cet adaptateur pour sauvegarde sa partie. Il suffit simplement d'installer la carte mémoire dans une manette N64 normale et de brancher cette dernière dans un port différent.

Cela fonctionne sans problèmes avec certains jeux, par exemple « Turok 2 : Seeds of evil », mais dans d'autres cas, comme avec « Mario Kart 64 », le jeu exige que la carte mémoire soit dans la manette du port 1. Il faut alors mettre l'adaptateur dans le port 2, mais cela empêche de jouer seul. Mario Kart 64 n'utilise toutefois la carte mémoire que pour sauvegarder les « ghosts » en « time trial ». C'est dommage, mais on peut s'en passer.

Aussi, bien des jeux comportent de la mémoire à même la cartouche, cas dans lequel il n'y a pas de problème.




Partie électronique

Voici tout de suite le schéma:


Attention: Pour utiliser le firmware 2 avec bootloader, remplacer le Atmega8 par un Atmega168 ou Atmega168a.

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é.
  • Attention: Pour la version 2 de l'adaptateur, j'ai changé pour un Atmega168a qui a plus d'espace et m'a permit d'ajouter la possibilité de faire des mises à jour (bootloader)
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.





Mise à jour

Option 1: ROM spécial

Les adaptateurs V2 (Atmega168 et LED) peuvent être mis à jour via un ROM spécial tournant sur N64, mais cela requiert une cartouche reprogrammable. Sans cela, il est nécessaire d'utiliser les mêmes outils que pour la programmation initale...

ROM: gc2n64_manager-1.1.v64 (Contient les versions 2.1 et 2.0)
ROM: gc2n64_manager-1.0.v64 (Ne contient que la version 2.0)




Option 2: Adaptateur N64 à USB version 3

Il est également possible de faire la mise à jour à travers un adaptateur de manette N64 à USB raphnet de troisième génération. Utilisez la fonction Manage GC to N64 adapter disponible despuis le menu Tools du Gestionnaire d'adaptateur.
Tools -> Manage Gc to N64 adapter

Tools -> Manage Gc to N64 adapter





Firmware (Adaptateurs V2, Atmega168 + LED)

N.B.: Les fichiers ci-dessous sont destinés aux nouveaux adaptateurs fabriqués avec un Atmegai168 utilisant un LED comme indicateur.
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=0xdc, low_byte=0xd7, extended_byte=0x01.

De plus, afin de protéger le bootloader contre les modifications accidentelles, il importe de bien configurer les "lock bits": lock: 0x2F

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

Voici sans plus tarder les fichiers:
Flux RSS pour cette table
Version v2.1
9 avril 2017 (Dimanche)
  • Ajout d'un nouveau mode de conversion valeurs d'axe: Mode étendu (où les valeurs reçues de la manette Gamecube sont retransmises telles-quelles à la console N64).
  • Corrige un problème avec la régularité du tir rapide (manuel) dans Shadows of the empire
  • Ajout de lock bits pour éviter que le bootloader puisse être effacé.
Fichier(s):
gc_to_n64-2.1.tar.gz (196.8 KB)
gc_to_n64-2.1.hex (21.5 KB)
Afficher les versions précédentes
Version v2.0
14 octobre 2015 (Mercredi)
Première version pour l'adaptateur V2:
  • Maintenant pour Atmega168 par défaut. L'ancien Makefile pour atmega8 reste disponible.
  • Ajout d'un bootloader (Atmega168 seulement) pour permettre les mises à jour
  • Formule de conversion des valeurs d'axes améliorée (L'ancienne formule est encore utilisable via une option menu)
  • Ajour d'un commande pour rappeler les paramètres d'usine
  • Ajout de fonctionalité pour lire et écrire les mappings via l'interface N64
  • Ajout d'un mode visuel (LED). Utilisé par défaut sur Atmega168. Remplace le buzzer.
Fichier(s):
gc_to_n64-2.0.tar.gz (71.5 KB)
gc_to_n64-2.0.hex (21 KB)




Firmware (Adaptateurs V1, Atmega8 + Buzzer)

N.B.: Les fichiers ci-dessous sont destinés aux anciens adaptateurs fabriqués avec un Atmega8 utilisant un haut parleur comme indicateur.

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=0x1f.

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.5.1
15 mars 2015 (Dimanche)
Nouvelle values de « fuses » pour activer le détecteur de basse tension. Corrige un problème occasionnel de perte de mappings au démarrage.
Fichier(s):
gc_to_n64-1.5.1.tar.gz (34.8 KB)
gc_to_n64-1.5.1.hex (17 KB)
Afficher les versions précédentes
Version v1.5
7 février 2015 (Samedi)
  • Nouvelle fonction: Sélection du mapping actif par défaut au démarrage
  • Mises à jour du code pour les compilateurs récents
Fichier(s):
gc_to_n64-1.5.tar.gz (34.5 KB)
gc_to_n64-1.5.hex (16.8 KB)
Version v1.4
19 mai 2013 (Dimanche)
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..
Fichier(s):
gc_to_n64-1.4.tar.gz (34.7 KB)
gc_to_n64-1.4.hex (17.9 KB)
Version v1.3.1
28 avril 2013 (Dimanche)
Correctifs:
  • Correction d'un bug faisant en sorte que lorsqu'un nouveau code de mapping était saisi, certains éléments du mapping en cours pouvaient rester actifs.
  • 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.
Fichier(s):
gc_to_n64-1.3.1.tar.gz (33.8 KB)
gc_to_n64-1.3.1.hex (17.8 KB)
Version v1.3
20 mars 2013 (Mercredi)
Nouveau:
  • Ajout d'une option zone morte (inactive par défaut).
Pour activer la fonciton zone morte, enfoncez le bouton START jusqu'à ce que les 5 impulsions sonores soient produites, enfoncez et relâchez R, appuyez et relâchez Z puis attendez l'émission du signal sonore final. 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.
Fichier(s):
gc_to_n64-1.3.tar.gz (33.6 KB)
gc_to_n64-1.3.hex (17.7 KB)
Version v1.2.2
12 février 2013 (Mardi)
Corrections et maintenance:
  • Les leviers analogiques L et R ne sont plus actifs par défaut.
  • Signal sonore lors des erreurs de lectures (manette débranchée ou défectueuse).
  • Signal sonore à la mise sous tension.
Fichier(s):
gc_to_n64-1.2.2.tar.gz (33.2 KB)
gc_to_n64-1.2.2.hex (17.4 KB)
Version v1.2.1
31 juillet 2012 (Mardi)
Corrections et maintenance:
  • La calibration automatique est maintenant effectuée à chaque branchement de manette en plus d'au démarrage. Il est donc possible de changer de manette sans devoir éteindre la console pour un résultat optimum.
  • Le point mentionné ci-dessus permet également à la Wavebird de fonctionner à nouveau (Dysfonctionel depuis la version 1.1)
  • Au démarrage, l'adaptateur attend qu'une manette soit présente.
  • Renouvellement du code de communication gamecube (portage du code de mon projet manette N64/Gamecube à USB)
Fichier(s):
gc_to_n64-1.2.1.tar.gz (32.5 KB)
gc_to_n64-1.2.1.hex (17.4 KB)
Version v1.1
Février 2012
Corrections pour accroître la compatibilité:
  • Détection automatique de l'origine du joystick Gamecube lors de la mise sous tension. Permet d'utiliser les joysticks n'étant pas parfaitement centré au repos.
  • Conversion des coordonées d'axes Gamecube vers N64 améliorée pour résoudre les problèmes encourrus avec certaines manettes/jeux où, notamment, le personnage ne courait pas à pleine vitesse.
Fichier(s):
gc_to_n64-1.1.tar.gz (30 KB)
gc_to_n64-1.1.hex (17.7 KB)
Version v1.0
Août 2011
Version initiale:
  • Support des manettes Gamecube Nintendo standard (Manette blanche Japonaise avec long câble incluse).
  • Support de la manette sans fil Wavebird.
  • Devrait fonctionner avec les périphériques Gamecube agissant comme une manette (clones, tapis, etc).
  • Mapping des boutons programmable avec mémoire
  • Algorithme d'interrogation de la manette permettant un faible délai de transit (environ 5ms, soit moins qu'une trame)
  • Support d'un buzzer facilitant la programmation.
Fichier(s):
gc_to_n64-1.0.tar.gz (31.4 KB)
gc_to_n64-1.0.hex (15.9 KB)




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.




Valeurs d'axes

Quelques faits à propos des manettes N64 standard:

  • Le joystick N64 génère deux valeurs d'axes numériques: Une pour l'axe de X, un pour l'axe des Y.
  • Les valeurs d'axe sont retransmises à la console sous 8 bits avec signe, ce qui implique des valeurs maximales théoriques d'environ -128 à +127.
  • Les valeurs retournées en pratique varient entre -80 et +80.
  • Cette plage de valeur se ressert lorsque la manette est usée.
  • Le stick se déplace physiquement à l'intérieur d'un octogone étiré. Au contraire des manettes Gamecube, cet octogone n'est pas régulier.

Courbes manette standard

Voici une représentation graphique des valeurs extrêmes obtenues sur deux manettes en bon état (comme neuves). La grille en arrière plan couvre les valeurs -80 à +80.
Manette officielle 1

Manette officielle 1

Manette officielle 2

Manette officielle 2


Quelques remarques:
  • Les deux manettes dépassent légèrement la plage -80 à +80 sur l'axe vertical.
  • Les diagonales n'atteignent pas des valeurs aussi élevées que la verticale et l'horizontal. Ceci est normal en raison de la restriction de mouvement au sein d'un octogone.

Courbe Hori mini N64

Courbe Hori mini N64

La manette Hori mini N64 (stick genre Gamecube)

Quelques faits à propos de la Hori Mini:
  • Le joystick gènère des valeurs de -100 à +100
  • Le stick se déplace à l'intérieur d'un octogone presque régulier.
L'image ci-contre représente les valeurs extrêmes obtenues sur une manette Hori. Ceci permet de faire les observations et constatations suivantes:
  • La manette Hori couvre une plus large plage que la manette N64 originale.
  • Le concepteur a manifestement ajusté l'échelle de sorte que les diagonales tombent pile sur ±80.
  • Cela dépasse les valeurs diagonales typiques des manettes originales.
  • À la verticale et à l'horizontal, les valeurs sont au delà du maximum de ±80 observé sur un manette N64 originale.
Ces différences peuvent avoir un impact sur le jeu. Par exemple, la vitesse de course maximale atteinte peut être plus élevée avec ce genre de manette.

Adaptateur Gamecube à N64

L'adaptateur Gamecube à N64 reçoit des valeurs provenant de la manette Gamecube et les transforme pour le N64. Voici le profil actif par défaut dans différentes version de l'adaptateur:
Version 1.5

Version 1.5

Version 2.0

Version 2.0



Plusieurs utilisateurs rapportaient que le personnage en jeu n'atteignait pas sa vitesse maximale en diagonale. C'est pourquoi les coins du profil ont étés étirés dans la version 2.0. Mais il demeure possible d'activer le profile de la version 1.5. (Voir la section mappings).


Voici le profil si l'adaptateur passe les donnés directement de la manette Gamecube au N64 sans transformation. Ce mode est disponible depuis la version 2.1 du firmware est est nommé « Mode étendu »:
Gamecube (Depuis v2.1, « Mode étendu »)

Gamecube (Depuis v2.1, « Mode étendu »)





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.