Adaptateur manette Gamecube/N64 à USB (Troisième génération)



Introduction

Adaptateur complet

Adaptateur complet

Ceci est la troisième génération de mon adaptateur manette N64/Gamecube à USB.

Pourquoi une nouvelle version? Car cela permet de grandes améliorations. Comparez:

Avant (Versions 1 et 2)Maintenant (Version 3)
  • USB low speed (1.5 Mbit/s)
  • «Latency» bas (environ 14ms max.)
  • Mise à jour du firmware impossible[1]

Ce qui permet toutes ces améliorations est le changement de la plateforme matérielle. Alors qu'avant il fallait faire avec les contraintes d'un pilote USB 100% logiciel, cette nouvelle version utilise un micro-contrôleur supportant USB nativement pour plus de performances et de possibilités.

[1] Bon bon, je parle d'impossible pour l'utilisateur moyen qui m'a acheté un adaptateur fini. Naturellement, la mise à jour a toujours été possible en coupant la gaîne le recouvrant et en soudant des fils aux bons endroits....

goto top Retour en haut


Caractéristiques

L'adaptateur:
  • Support des manettes N64 et Gamecube (liste)
  • Supporte la fonction vibration des manettes Gamecube et N64.
  • 100% fonctionnel sans installer de pilotes spéciaux. (Reconnu en tant que dispositif de jeu USB HID avec PID pour la vibration.)
  • Fonctionne sur Mac, Linux et Windows.
  • Fréquence d'interrogation de la manette configurable (Maximum 500Hz)
  • Faible délai de transmission par USB (interrogation à 1000Hz)
  • Mise à jour possible et facile.
  • Paramètres configurables par USB.
  • Fonctionalités pour communiquer directement avec les manettes.
  • Numéro de série unique pour chaque adaptateur.
PIlotes:
  • Utilises les pilotes standard du système d'exploitation.
Logiciel de gestion:
  • Interface graphique facile à utiliser pouvant gérer plusieurs adaptateurs.
  • Affichage de la version de l'adaptateur et fonction de mise à jour.
  • Affichage du type de manette détecté.
  • Test de vibration intégré
  • Outils pour lecture et écriture de mempak N64
  • Supporte les fichiers d'image de mempak .N64 et .MPK
  • Support du Transfer Pak N64 (écriture et lecture de sauvegardes Gameboy)

goto top Retour en haut


Photos

Voici un adaptateur complet:
Connecteurs Gamecube/N64

Connecteurs Gamecube/N64

L'ensemble

L'ensemble

Le câble USB est détachable

Le câble USB est détachable




Le firmware est conçu pour fonctionner sur mon circuit Multiuse PCBX. C'est d'ailleurs ce qu'il y a à l'intérieur de l'adaptateur complet ci-dessus. Toutes les composantes requises (régulateur 3.3v, résistances, etc) sont déjà sur la carte. Il suffit donc simplement de souder les fils des connecteurs de manettes.
Multiuse PCB-X

Multiuse PCB-X

Multiuse PCB-X

Multiuse PCB-X

Multiuse PCB-X

Multiuse PCB-X

Câblage

Câblage




Pour le développement, je travaille avec un at90usb1287 installé sur un vieux kit de développement stk525 modifié (Il faut installer un cristal de 16 MHz. Les ports de manettes sont câblés au connecteur EXPAND 0. Broches 39,40: GND, Broche 38: Data [PORTD0]. Les cavaliers sont placés pour alimenter le micro-contôleur à 5 volt. L'alimentation 3.3v pour les manettes est récupérée dans la région du régulateur. L'alimentation 5v pour la fonction vibration gamecube provient du BUS USB (VBUS).

La troisième photo montre un autre montage dont je me sers pour le développement, mais cette fois en utilisant mon circuit Multiuse PCB-X. L'interrupteur et le fil vert dans la photo sont là car je les utilise parfois en débogage. Il ne sont pas normalement requis ni utiles.
Développement sur Multiuse PCB-X

Développement sur Multiuse PCB-X

Développement sur STK525

Développement sur STK525

Développement sur STK525

Développement sur STK525


goto top Retour en haut


Schéma

Ce projet est conçu pour Multiuse PCB-X. Voici donc le schéma de câblage pour cette carte ainsi que des références pour les connecteurs N64 et Gamecube.
Câblage Multiuse PCB-X

Câblage Multiuse PCB-X

Brochages N64 et Gamecube

Brochages N64 et Gamecube



Pour une deuxième manette: Câblez les fils d'alimentation (3.3v, 5v, GND) de la deuxième manette comme pour la première, mais soudez le signal 'Data' à l'emplacement '1' du circuit (en dessous de '0'). (de sorte que chaque manette utilise une entrée 'Data' dédiée). Noubliez pas aussi de configurer l'adaptateur en mode deux joueurs. (Voir Personalités et modes multi-joueurs pour cette procédure)

Pour le schéma du circuit Multiuse PCB-X: SVP visiter la page de Multiuse PCB-X.

goto top Retour en haut


Firmwares et code source

S'il s'agit d'une mise à jour, les firmwares (fichiers .hex) suivants peuvent être programmés dans l'adaptateur via l'outil de gestion graphique, ou à l'aide des outils en ligne de commande.

Si votre circuit est neuf (jamais programmé), il faut utiliser dfu-programmer directement.
# Commandes pour programmer une carte neuve
$ dfu-programmer atmega32u2 erase
$ dfu-programmer atmega32u2 flash fichier.hex
$ dfu-programmer atmega32u2 start

Les fichiers de firmware (.hex) ainsi que le code source sont disponibles ci-dessous. Le source des outils graphiques et en ligne de commande sont également inclus. La license est GPLv3.

Flux RSS pour cette table
Fichier(s)DateDescription
gcn64usb-3.4.0.hex (39.9 KB)
gcn64usb-3.4.0.tar.gz (49.5 KB)
8 Janvier 2017 (Dimanche) Augmentation de performance:
  • Nouvelle requête de communication pour un latency encore plus bas lorsque utilisé avec les plugins raphnetraw.
  • Utilisation plus efficace de la mémoire.
gcn64usb-3.3.2.hex (39.2 KB)
gcn64usb-3.3.2.tar.gz (48.2 KB)
27 Novembre 2016 (Dimanche) Petit correctif:
  • Corrige la fonction d'affichage du type de manette connectée en mode deux joueurs.
gcn64usb-3.3.1.hex (39.1 KB)
gcn64usb-3.3.1.tar.gz (48.6 KB)
2 Novembre 2016 (Mercredi) Ajout du support deux joueurs:
  • Personnalité 2x N64
  • Personnalité 2x Gamecube
  • Accès direct multi-joueur
Versions 3.3.x: Introduction du support pour deux joueurs. Ne pas installer les version précédentes sur les adaptateurs à deux joueurs.
gcn64usb-3.2.1.hex (33.8 KB)
gcn64usb-3.2.1.tar.gz (46.7 KB)
22 Septembre 2016 (Jeudi) Implémentation de personnalités N64-seulement et Gamecube-seulement (Le product ID USB et le nom du produit sont différents)
gcn64usb-3.2.0.hex (33.4 KB)
gcn64usb-3.2.0.tar.gz (46.5 KB)
28 Mai 2016 (Samedi)
  • Correction d'un problème de reconnection en boucle sous MacOS X
  • Changement d'usage HID pour une des gâchettes gamecube (Slider changé pour Z). Fonctionne maintenant correctement avec openEMU.
  • Nom du produit et version changés.
  • Product ID USB mis à jour.
gcn64usb-3.1.1.hex (33.4 KB)
gcn64usb-3.1.1.tar.gz (46.3 KB)
29 Février 2016 (Lundi) Correctif: Corrige le code de vibration pour fonctionner avec x360ce (La vibration démarrait mais ne s'arrêtait jamais)
gcn64usb-3.1.0.hex (33.4 KB)
gcn64usb-3.1.0.tar.gz (46.3 KB)
24 Février 2016 (Mercredi) Nouvelles fonctionalités et corrections:
  • Ajout d'une commande de contrôle de vibration (pour le test de vibration dans l'interface graphique, or pour un contrôle simple de la vibration)
  • Ajustement du «timing» de la communication N64/Gamecube (Corrige un problème avec une manette Mad Catz)
  • Auto-centrage des axes Gamecube lors du branchement
  • Corrige la détection de la manette Wavebird
  • Fiabilité augmentée (corrige un buffer overflow possible en cas de réception de donnés erronée)
gcn64usb-3.0.0.hex (32.9 KB)
5 Octobre 2015 (Lundi) Première version
Ce projet est aussi disponible sur GitHub!
Pour suggérer de nouvelles fonctionalités, rapporter un problème ou contribuer au projet, vous pouvez m'écrire ou utiliser le dépôt GitHub:
https://github.com/raphnet/gc_n64_usb-v3

goto top Retour en haut


Logiciel de gestion

Le logiciel de gestion n'est pas requis pour utiliser l'adaptateur, mais permet de tester la vibration, de faire la mise à jour de l'adaptateur et la lecture/écriture de mempak N64. L'éditeur de mempak intégré supporte les formats .N64 et .MPK. Il est donc possible de télécharger des « cheats » de gamefaqs.org pour certains jeux pour ensuite les utiliser sur un vrai système N64! Le gestionnaire permet également d'exporter et d'importer des sauvegardes («notes») à l'unité.
Écran principal

Écran principal

Éditeur de mempak

Éditeur de mempak



Le processus de mise à jour vous demande de choisir le fichier .hex et fait quelques vérifications pour éviter les erreurs (ex: Mettre un firmware incompatible). Une fois le fichier choisi, il n'y a qu'à appuyer sur "Start update". Si tout se passe bien (surtout ne débranchez rien!) après quelques moments la fenêtre de succès (Update successful) confirmera la mise à jour.
Avant

Avant

Pendant

Pendant

Après

Après


Téléchargement:
Disponible depuis la page Outils pour la 3ième génération des adaptateurs raphnet GC/N64 à USB.

goto top Retour en haut


Outils en ligne de commande

Plusieurs outils en ligne de commande sont disponibles pour manipuler l'adaptateur:
Les outils sont disponibles sur la page Outils pour la 3ième génération des adaptateurs raphnet GC/N64 à USB.

goto top Retour en haut


Manettes supportées

Voici une liste de manettes/adaptateurs testés:
Type Marque/FabricantModèle Status Testé par
Gamecube Nintendo Standard (DOL-003) OK raphnet.net
Gamecube Nintendo Édition Super Smash Bros (DOL-003) OK raphnet.net
Gamecube Nintendo Standard (Importée du Japon, câble long) OK raphnet.net
Gamecube Nintendo Wavebird OK raphnet.net
Gamecube Ascii Gamecube keyboard (joystick part) OK raphnet.net
Gamecube Intec Wireless OK raphnet.net
Gamecube Mad Catz Microcon (item no. 5636) OK raphnet.net
Gamecube ? Playstation to Gamecube adapter OK raphnet.net
Gamecube Hori Hori digital pad for GameCube OK Utilisateur
Gamecube Nyko Adaptateur manette PS2 à Gamecube Ne fonctionne pas Utilisateur
N64 Nintendo Standard OK raphnet.net
N64 Hori Minipad mini 64 OK raphnet.net
N64 TTX ? OK raphnet.net
Notez qu'il y a de fortes chances pour que tout modèle non énuméré ci-dessus fonctionne parfaitement bien. Tenez-moi au courant de toute manette non listée que vous auriez eu la chance de tester.

goto top Retour en haut


Explication du « Latency »

Pour le meilleur contrôle possible du jeu, le délais de transit («latency») qu'introduit l'adaptateur doit être le plus petit possible. Voyons pourquoi les adaptateurs introduisent du latency, et examinons comment il est possible de s'en sortir.

En quelques mots, un adaptateur fonctionne ainsi: Les deux principales causes de latency sont donc les suivantes:
  1. L'intervalle d'interrogation de la manette: Fréquemment cela se fait aux 16ms. Cela corresponds à la réalité des jeux sur console qui lisent souvent l'état de la manette une fois par trame vidéo. Mais dans le contexte de l'adaptateur, cela veut dire que si nous appuyons sur un bouton juste un peu trop tard (ex: 1ms après le poll), l'adaptateur ne s'en rendra compte qu'au prochain cycle, 15 ms plus tard.
  2. L'intervalle de poll USB: Dans le cas d'un périphérique USB low speed, l'intervalle minimum est 10ms. Selon le timing, si l'adaptateur découvre le changement d'état alors que le poll USB vient juste d'avoir lieu, la transmission de l'événement doit attendre le prochain poll.
Voici une représentation visuelle de tout cela:

Le diagramme ci-dessus montre clairement:

Réduire le latency

Les explications donnés ci-dessus suggèrent très naturellement la solution suivante: Les polls de la manette et d'USB doivent avoir lieu le plus souvent possible. Voyons pour chacun: Il faut noter qu'une autre approche pour diminuer le latency causé par les polls USB consiste à synchroniser l'interogation de la manette de sorte que la lecture se termine toujours immédiatement avant le prochain poll USB.

AdaptateurVitesse USBIntervalle manetteUSB pollLatency max.Commentaires
raphnet gcn64usb v3 (L'adaptateur de cette page)Full speed5ms (par défaut)1ms6msSi l'adaptateur est configuré pour interroger la manettes aux 2ms (minimum), le latency maximal ne sera que de 3ms.
raphnet gc/n64 usb v2 (prédécesseur)Low speed4ms5ms[1]14msEn raison de la taille des donnés transmises, deux polls USB sont requis, ce qui explique le 14ms ici plutot que 9ms
Adaptateurs non-raphnet (pour comparer)
Mayflash dual N64 to USBLow speed16ms8ms24ms[2]bInterval = 8ms, intervalle d'interrogation manette vérifié avec un oscilloscope.
Mayflash GC (4x) to USB (en mode PC)Full sped8ms1ms9ms[2]bInterval = 1ms, intervalle d'interrogation manette vérifié avec un oscilloscope.
[1] Bien que l'intervalle minimum officiel pour l'interrogation USB des périphériques dits « Low speed » soit de 10ms, il est possible de tricher et d'utiliser une valeur plus petite. Cela fonctionne.
[2] Le Latency max. affiché pour les adaptateurs non-raphnet prennent pour acquis qu'aucune stratégie de synchronisation des polls de manettes n'est en place. Si c'était le cas, il faudrait soustraire l'intervalle de poll USB (ou une fraction, selon les marges du design) du latency maximal.

goto top Retour en haut


Personalités et modes multi-joueurs

Depuis le firmware version 3.2.1, il existe plusieurs modes (ou personalités) qui permettent à un adaptateur de s'identifier plus précisément (par exemple, si vous n'avez qu'une manette N64, l'adaptateur portera le nom "N64 to USB", plutôt que "GC/N64 to USB").

Depuis le firmware version 3.3.1, il existe également des modes à deux joueurs.

La configuration de la personalité et/ou du mode deux joueurs doit être faite avec l'outil en ligne de commande gcn64ctl.

Instructions:
  1. Installer au préalable l'outil de gestion d'adaptateur. Il s'agit d'une interface graphique, mais des outils en ligne de commande seront également installés. Il y aura un raccourci dans le menu démarrer (ou l'équivalent) permettant d'ouvrir un terminal dans le répertoire des outils.
  2. Brancher l'adaptateur à configurer. Un seul adaptateur doit être présent lors de cette opération.
  3. Exécuter la commande correspondant au mode souhaité.
# Syntaxe pour la configuration d'un adaptateur
gcn64ctl -f --set_mode xx

(où xx sera remplacé par le code numérique approprié)
CodeNomNombre de joueurs
0GC/N64 to USB v??1
1N64 to USB v??1
2Gamecube to USB v??1
16Dual GC/N64 to USB v??2
17Dual N64 to USB v??2
18Dual Gamecube to USB v??2

goto top Retour en haut


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.

goto top Retour en haut


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