Ce projet permet d'utiliser des manettes à l'origine destinées pour la console
Sega Saturn sur un PC par USB. À l'aide du schémas et logiciel fournis sur
cette page, il est possible de fabriquer un adaptateur (en utilisant
les connecteurs d'une rallonge Saturn) ou encore de bâtir le circuit à même
une manette (si l'espace le permet).
La version actuelle du firmware supporte:
Les manettes de base (boutons ABCXYZ, L/R et Start)
La manette analogique
La souris
Le respect du standard USB HID permet
une utilisation immédiate avec la plupart des systèmes d'exploitataion modernes
sans nécessiter l'installation de pilotes. Testé sous Linux, Windows 7 64-bit, MacOS X et la Playstation 3 de Sony.
Voici les périphériques avec lesquels j'ai développé cet adaptateur.
Official Sega Analog MK-80117
'HORIPAD SS'. Model HSS-11
Performance Super Pad 8. Model P-400
Sega 'shuttlemouse' HSS-0102
Fonctionne aussi avec la HSS-0101 et la MK-80116 de Sega.
Si vous avez la chance de tester avec d'autres modèles de manettes,
veuillez m'en informer pour que je puisse les mentionner ici.
L'adaptateur apparaît comme un hybride souris/joystick sous Windows 7 tel
que démontré par les saisies d'écran suivantes:
Photos provenant des utilisateurs:
William Schneider m'a fait parvenir les photos suivantes de son assemblage. Il me confirme
aussi que tout fonctionne bien avec la manette HSS-0101 de Sega, et que le firmware
1.1 fonctionne très bien avec la PS3.
Prototype
Assemblage final
Assemblage final
Sega HSS-0101
Boutons
Les configurations de bouton suivantes sont disponibles. Pour activer une configuration
spécifique, appuyez et maintenez le bouton correspondant, branchez l'adaptateur (ou
allumez le pc/console), puis relâchez le bouton.
SLS (default)
Saturn
USB
PS3
A
2
X
B
3
Circle
C
6
R1
X
1
Square
Y
4
Triangle
Z
5
L1
S
10
Start
L
7
L2
R
8
R2
SLS Alt (hold A)
Saturn
USB
PS3
A
2
X
B
3
Circle
C
6
R1
X
1
Square
Y
4
Triangle
Z
5
L1
S
9
Select
L
7
L2
R
8
R2
VIP (hold B)
Saturn
USB
PS3
A
1
Square
B
2
X
C
3
Circle
X
4
Triangle
Y
5
L1
Z
6
R1
S
9
Select
L
7
L2
R
8
R2
v1.0 (hold C)
Saturn
USB
PS3
A
1
Square
B
2
X
C
3
Circle
X
4
Triangle
Y
5
L1
Z
6
R1
S
7
L2
L
8
R2
R
9
Select
Avec la PS3, les mappings SLS (defaut) et SLS ALt sont généralement les plus
appropriés. On m'informe qu'ils fonctionnent très bien avec (au moins)
Super Street Fighter IV, Tekken 6,
BlazBlue: Continuum Shift, Virtua Fighter 5, Arcana Heart 3, Hard Corps: Uprising,
Soul Calibur, Disgaea 3 et Mortal Kombat 9.
Configuration du « 3D Controller »
La configuration de la manette 3D est parfois difficile à cause des leviers L/R à l'arrière de la manette qui, au repos,
n'occupent pas une position centrée. Le problème se manifeste généralement lors de la configuration des boutons dans
un émulateur, tel Yabuse. En effet, dès qu'une association de bouton est tentée, l'émulateur détecte
que le levier L ou R est actif est lui associe le bouton ou l'axe qui devait être configuré.
Si vous exécutez ce petit outil sous Windows, les données de calibration de la manette seront altérées de manière
à ce que la position de repos de L et R soit vue comme centrée par les jeux, et donc inactive.
Idéalement, les émulateurs ne devraient considérer que les boutons physiques qui deviennent actifs après la sélection
du bouton à configurer. Cela éviterait ce genre de problème...
Schema
Voici le schéma de base. Pour le raccordement avec la manette Saturn, se référer au tableau.
# broche sega
I/O Micro.
Descriptin/ Nom(s)
1
N/A
Alimentation 5 volts / VCC
2
PC2
D1
3
PC3
D0
4
PC5
S0
5
PC4
S1
6
PB5
D5 ou TL (handshake)
7
PC0
D3
8
PC1
D2
9
N/A
GND
J'ai utilisé l'information sur la page suivante comme point de départ: Sega Saturn Pad Info.
Le signal documenté "+5v (Inp)" dans la page donnée ci-dessus est en fait une
sortie logique sur la manette analogique et la souris. Ce signal fait partie du
mécanisme de communication. Ce mécanisme est en fait le même que le multitap pour
genesis utilise tel que documenté ici:
http://www.raphnet.net/divers/documentation/genesis_multitap.txt
Liste des composantes:
Ref
Description
U2
Un micro-contrôleur ATmega8a ou Atmega8. Ne pas utilise la famille ATMEGA8L-*, car l'horloge de 12Mhz dépasserait la limite.
R1
Résistance de 1.5k. Ordinaire au carbone 1/4 watt.
R2, R3
Résistance de 68 ohms. Ordinaire au carbone 1/4 watt.
D2, D3
Diodes Zener de 3.6 volts.
Y1
Crystal de 12 mhz
C2, C3
Condensateurs de 18 pf. Si votre cristal recommande une autre valeur, utilisez la.
C1
Condensateur de 1 uf. Installer près du ATmega8.
J2
Connecteur 2x3 (6 broches), espacement 2.54mm. Pour la programmation du ATmega8.
Pour la connection USB, simplement dénuder un cable USB et souder les fils directement sur le circuit.
USB utilise des couleurs de fils standardisés, mais soyez vigilant, il y a parfois des exceptions.
Couleur
Description
Rouge
+5 volts
Noir
Ground
Vert
D+
Blanc
D-
Programmation et code source
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 micro-contrôleurs possèdent ce qu'on appelle '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 micro-contrôleur 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
Pour ceux qui aimeraient modifier le comportement de l'adaptateur
ou supporter d'autres types de manettes, le code source est disponible
sous la license GPLv2.
Contactez moi à l'addresse
raph@raphnet.net
si vous faites des modifications intéressantes.
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 (ou inventez-en un à vos risques). J'avais acheté les miens chez
mecanique dans le temps où ils
en revendaient car c'était moins cher que de devenir membre du forum des implémenteurs
USB (2000$ US)...
Version v2.0 14 Juillet 2013
Compatibilité améliorée:
Séparation des fonctions souris et joystick. La souris est détectée à la mise sous tension. Règle les problèmes avec Linux et MaxOS X.
Ajout de différents 'mappings' pour être mieux adapté à la PS3. 4 configurations, choisies en maintenant appuyé des boutons lors du branchement USB, sont offertes. Voir la section boutons pour les détails.
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/saturn_usb
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.