|
||||||||
|
||||||||
| This page is also available in English | ||||||||
| L'idée | [cacher] |
Pour jouer à de bons vieux jeux avec des émulateurs, l'idéal est de le faire avec les manettes
d'origine. À une certaine époque, plusieurs consoles utilisaient des prises de type DB9. Ce
projet vise à supporter ce type de manettes sur un port USB.Pendant plusieurs années, plusieurs personnes dont moi construisaient des adaptateurs fonctionnant sur un port port parallèle. Malheureusement, les ports parallèles sont de plus en plus rare car de nos jours, USB est utilisé pour presque tout. J'ai donc conçu mon propre adaptateur manette DB9 à USB. Les manettes supportés sont les suivantes:
Cependant, à cause de la nature d'USB, l'adaptateur est un peu plus complexe. Note: La solution sur cette page peut aussi être utilisée pour des manettes de NES et SNES. Ce projet est expliqué en détail sur sa propre page. |
| Résumé de la solution | [cacher] |
J'ai construit mon adaptateur en utilisant le microcontrôleur ATmega8 d'Atmel. Ce microcontrôleur
ne supporte pas USB nativement alors j'ai utilisé le pilote USB logiciel-seulement
codé par Objective Development.
Ce pilote permet a un microcontrôleur AVR tel que l'ATmega8 de communiquer en USB avec
un minimum de composantes externes. Grace à cela, l'adaptateur peut être construit
facilement, sans se ruiner.
Selon vos habiletés, vous pouvez construire l'adaptateur sur un 'breadboard' (En français c'est quoi?)
en utilisant des composantes standards ou la version 'montage en surface' en utilisant
le dessin de circuit-imprimé fourni. Je peux vous vendre des circuits-imprimés
pré-assemblés et des micro-controleurs (boitier DIP seulement) pré-programmés.
Au besoin, visitez mon
magasin en ligne (anglais seulement pour l'instant).
Pas besoin de pilotes! Le standard USB définit certaines classes de périphériques. Dans ce project, j'utilise la classe HID (Humain input device) qui permet de communiquer à l'ordinateur de façon générique que le périphérique connecté est un controleur de jeu possédant 2 axes et 2 boutons. Ceci permet au circuit de fonctionner sous plusieurs systèmes d'exploitation automatiquement, en autant que le système en question supporte USB et la classe HID. (J'ai essayé et ça fonctionne sous Win98, Win2K, WinXP et Linux) |
| Shéma | [cacher] |
Voici la veresion moderne du shéma (pour firmware 1.5 et plus):
Voici l'ancienne version du shéma (pour les firmware jusqu'a version 1.4): revE-atari.png sch-revE-atari.pdf Liste de pièces:
Pour la connection USB, vous pouvez simplement dénuder un cable USB et souder les fils directement sur le circuit. USB utilise des couleurs de fils standardisés:
|
| Programmation du microcontrôleur | [cacher] |
Les microcontroleurs sont des composantes qui doivent être programmés pour
qu'elles fassent quelque chose d'utile. Voici donc le fichier .hex qu'il faut programmer
dans le microcontroleur:
Plusieurs microcontroleur possèdent quelque chose qu'on appel 'Fuse bytes'. Dans le cas du ATmega8, il y en a deux: Le 'high byte' et le 'low byte'. Ces deux octets servent à configurer certains paramètres du microcontroleur. Quel type d'horloge? Crystal? Résonateur? Oscillateur RC interne? Permettre la programmation par ISP? Il est très important de configurer les fuse bytes avec les bonnes valeurs. L'utilisation de mauvaises valeurs peut rendre le microcontroleur inutilisable. Pour ce projet, voici les bonnes valeurs: high byte = 0xc9, low byte = 0x9f Pour de l'information sur la programmation d'un AVR, visitez ma page sur la programmation d'AVR |
| Code source | [cacher] |
Pour ceux qui aimeraient modifier le comportement de l'adaptateur
ou supporter d'autres types de manettes, voici le code source. Depuis la
version 1.5, le code est publié sous la license GPLv2. Les version
antérieures était sous la license d'Objective Development, qui est en
fait GPL avec quelques extensions pour couvrir le matériel
(le circuit). Voir le fichier License.txt pour plus d'information.
Contactez moi à l'addresse raph@raphnet.net si vous faites des modifications intéressantes. Modifications apportés au pilote USB d'Objective Development: Le cavalier de sélection de mode SNES/NES affecte le contenu du 'report descriptor'. Pour que ça soit possible, j'ai modifié le pilote USB d'Objective Development. Voici un 'diff' généré à partir du pilote USB contenu dans HIDKeys.2006-03-14: usbdrv-diff Combinaison Vendor ID/Product ID USB: Veuillez ne pas réutiliser ma combinaison VID/PID pour des projets dérivés ou autres. Obtenez-en un vous-même. J'ai acheté les miens chez mecanique, et ça coute beaucoup moins cher que de devenir membre du forum des implémenteurs USB (2000$ US)... |
| Circuit imprimé pour la version 'montage en surface' | [cacher] |
La version montage en surface comporte plusieurs avantages:
Voici une vue composée de la révision C du circuit-imprimé:
Voici comme référence la vue composé de la révision B: snes_nes_usb_pcb_revB.png Voici les fichiers gerber à utiliser pour contruire vos propres circuits imprimés: Révision C: snesusb_revC.zip Révision B: snes_nes_usb_PCB-revB.zip |
| Assemblage de la version 'montage en surface' (rev. C) | [cacher] |
Étape 1: Utilisez la vue composée,
la liste des composantes et le shéma
pour trouver l'endroit ou mettre chaque composantes. Après avoir tout soudé,
inspectez le tout soigneusement pour éviter les ponts de soudures et les soudures
froides. IMPORTANT: Faire un pont de soudure entre PD1 et PD0 (voir shéma).
Étape 2: Utilisez le shéma de gauche approprié pour savoir ou souder les fils
USB, ISP et ceux de la manette. Le cable ISP peut être construit avec un connecteur
2x3 et un morceau de cable plat. Le 'pinout' du shéma suit le standard d'atmel pour
l'ISP des AVR via 6 fils.
Étape 3: Si vous voulez utiliser une manette de NES, fermez JP1 en
faisant un pont de soudure ou en soudant un petit bout de fil. Si vous utilisez une manette
à connecteur DB9 (ex: Atari), fermez JP1 et JP2. Regardez les images à droite pour des exemples.
Étape 4: Branchez le cable ISP et le cable USB. Utilisez un programmeur pour programmer le fichier hex dans l'ATmega8. Ensuite, configurez les 'fuses bytes' (High byte=0xc9, low byte=0x9f) correctement. Étape 5: Essayez l'adaptateur avec un jeu. Si tout fonctionne bien, enlevez le cable ISP si vous ne prévoyez pas mettre à jour le code. Maintenant pour protéger le circuit, utilisez une petite boite ou mettez le à l'intérieur d'une gaine thermo-rétractable. Je vous recommande aussi de mettre un peu de colle chaude par dessus les soudures des fils, pour empêcher les fils de se briser en cet endroit. Étape 6: Amusez-vous! |
| Images et saisies d'écran | [cacher] |
Voici certains joysticks que j'utilise avec cet adaptateur.
Voici la première version de mon adaptateur. Il est construit avec le circuit imprimé revision C, un DB9 male et quelques fils.
|
| Photos provenant des utilisateurs | [cacher] |
| Avertissement | [cacher] |
|
Je ne saurais être tenu responsable pour les dommages
que la mise en oeuvre 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. |
Site codé avec![]() | Dernière mise à jour: 26 Janvier 2008 |