SNES à PSX: Adaptateur manette SNES vers Playstation

Description du projet

FF7 avec manette SNES

FF7 avec manette SNES

Il y a quelques temps (2013), on m'a contacté et demandé si je pouvais faire un adaptateur permettant d'utiliser des manettes pour SNES avec un Playstation. En fait, la personne voulait pouvoir utiliser une manette de type arcade conçue pour SNES qui lui plaisait beaucoup.

J'avais quelques années auparavant (2007) réalisé le même projet mais j'ignore pourquoi, je ne l'avais jamais reproduit ni publié. Cela n'a donc pas été difficile. Je n'ai eu qu'à faire un peu de ménage dans le code et réviser le schéma de câblage pour l'utilisation avec mon circuit à usage multiple actuel.

Caractéristiques:
  • Supporte les manettes SNES d'origine et la plupart des clones.
  • Se comporte comme une manette digitale pour PSX. Assurez-vous que les jeux cibles n'exigent pas les manettes de type analogue.
  • Deux équivalences de boutons ("mappings"). Le mapping alternatif est activé en gardant le bouton select enfoncé lors de la mise sous tension ou le branchement à la PSX de l'adaptateur.
Un adaptateur pré-assemblé est disponible dans mon magasin en ligne:



« Mappings »

«Mappings»
Bouton SNESType 1 Type 2 Type 3 Type 4 Type 5 Type 6 Type 7
B X O Triangle Carré O X X
Y Carré X O X Triangle Carré Carré
A O R2 X Triangle Carré O O
X Triangle Triangle Carré O X Triangle Triangle
R R1 R1 R1 R1 L1 R2 L1
L L1 Carré L1 L1 R1 L2 R1
Start Start
Select Select
Haut Haut Bas
Bas Bas Haut
Gauche Gauche Droite
Droite Droite Gauche

Sélection du mode:
MappingInstructionsCommentaire
Type 1Actif par défaut.Équivalence naturelle SNES XYAB vers PSX ☓○△□
Type 2Maintenir SELECT à la mise sous tension.Anciennement nommé le mode Quang.
Type 3Maintenir A à la mise sous tension.
Type 4Maintenir B à la mise sous tension.
Type 5Maintenir X à la mise sous tension. Variation. R1/L1 inversés.
Type 6Maintenir Y à la mise sous tension. Comme Type 1, mais avec R2/L2 plutôt que R1/L1.
Type 7Maintenir L à la mise sous tension. Directions inversées pour le maniement d'un stick arcade de la main droite.



Jeux testés

Manette PS1 digitale

Manette PS1 digitale

Pour qu'un jeu fonctionne, il doit supporter les anciennes manettes Digitales (celles sans les deux joysticks).

Jeux PS1 testés et fonctionnels (avec la version 1.2):
Arcade Party Pak, Captain Commando, Chrono Cross (US), CoolBoarders 4 (US), Don Pachi & Do Don Pachi, Ehrgeiz (JP), Einhänder, Final Fantasy Anthology: FFV (US), Final Fantasy Anthology: FFVI (US), Final Fantasy Chronicles: FFIV (US), Final Fantasy Chronicles: Chrono Trigger (US), Final Fantasy Origins (US), Final Fantasy Tactics (US), Final Fantasy VII (JP)(US), Final Fantasy VIII (US), Final Fantaxy IX (US), Gradius Gaiden (JP), Gran Turismo 2 (US), グレイトヒッツ (JP), Harry Potter (US), Hebereke Popoitto, King of Fighters 99, Konami Arcade Classics, Legacy of Kain: Soul Reaver (US), Mega Man (X4, X5, X6, 8), Namco Arcade Museum Volume 1, Namco Arcade Museum Volume 3, Metal Slug, It might be NES, No Fear Downhill Mountain Bike Racing (US), Parasite Eve (US), PS1 menu (US), Puyo Puyo Sun, Puzzle Bobble (whole series), Rollcage (US), R-Type Delta Secret of mana, Smurf Racer! (US), Soulblade, Street Fighter (10 different ones), Tales of Phantasia (JP), Tekken 2, Tomba, Vagrant Story (US), Wild Arms 2 (US),

(Il est évident que bien d'autres jeux fonctionneront. Vos courriels m'indiquant lesquels sont les bienvenus).

Jeux PS1 non-fonctionnels:
Avec le plus récent firmware (v1.2), il n'y a pas de jeux non-fonctionnels connus à ce jour.

Avec le firmware précédent (v1.1), les jeux suivants ne fonctionnaient pas:
Ehrgeiz (JP), Einhander (JP), Rockman X3 (JP), Rollcage (US), Silhouette Mirage (JP), Tales of Phantasia (JP), Tobal 2 (JP), Vagrant Story (US),

Jeux PS2:
Bien que le menu du PS2 soit fonctionnel, la plupart des jeux PS2 semblent exiger une manette analogique, et ce même lorsqu'ils pourraient parfaitement s'en passer. Notamment: Mega man anniversary collection ne fonctionne pas.
Et pour quelle raison?

Et pour quelle raison?




Schéma et câblage

Voici d'abord le schéma:



Voici quelques explications des signaux:
Playstation
#NomEmplacementCommentaires
1 DATA PB4 Via transistor « Open-collector ». SPI MISO. (Vers le PSX)
2 CMD PB3 SPI MOSI (Provient du PSX)
3 +7.6V Inutilisé
4 GND GND Alimentation en provenance du PSX.
5 +3.3V VCC Alimentation en provenance du PSX.
6 ATT PB2 «Chip select» SPI (Provient du PSX)
7 CLK PB5 SPI SCK (Provient du PSX)
8 N/A
9 ACK PC0 "Open collector" simulé (Vers le PSX)
SNES
NomEmplacementCommentaires
Clock PC5
Latch PC4
Data PC3
Vcc VCC +3.3 volt
Gnd GND

Notes:
  • «Open collector»: Se dit d'une sortie constituée d'un collecteur (ou drain) seulement. Une telle sortie peut «tirer» un signal vers 0 (niveau logique bas) mais ne peut pas le «pousser» à un niveau logique haut (ex: 3.3v). La sortie de donnés SPI (MISO pour «master in slave out») n'est pas «open collector», mais «push pull». J'ai donc recours à un transistor. Un branchement direct empêcherait le port de carte mémoire, qui partage les mêmes signaux, de fonctionner correctement.
  • «Open collector simulé»: Avec l'AVR, technique qui consiste à alterner une broche entre le mode entrée et sortie.
  • Horloge: Le circuit utilise l'oscillateur RC interne au AVR. Pas de cristal requis.
  • Normalement, les manettes SNES fonctionnent sous 5 volt, mais par expérience je sais qu'elles fonctionnent tout de même très bien à 3.3volt. Cela permet un circuit s'alimentant directement à 3.3volt via le Playstation sans régulateur.


Logiciel

Version v1.3
29 juin 2014 (Dimanche)
Ajout de 5 nouveaux « mappings ».
Fichier(s):
snes2ps-1.3.tar.gz (15.9 KB)
snes2ps-1.3.hex (2.7 KB)
Afficher les versions précédentes
Version v1.2
1 juin 2014 (Dimanche)
Correctif de compatibilité
Fichier(s):
snes2ps-1.2.tar.gz (15.6 KB)
snes2ps-1.2.hex (1.8 KB)
Version v1.1
1 mars 2014 (Samedi)
Première publication:
  • Fonctionne en tant que manette Playstation digitale.
  • Deux «mappings» de boutons.
Fichier(s):
snes2ps-1.1.tar.gz (15.3 KB)
snes2ps-1.1.hex (1.8 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/snes2ps
Utilisation des fichiers .hex
Les fichiers .hex sont pour programmer l'Atmega8a. Les "fuses bytes" pour ce projet sont: high_byte=0xd9, low_byte=0xe4.

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

Code source (fichiers .tar.gz):
À moins d'indications contraires, le code source est rendu publique sous la licence GPL v3. Consulter le fichier gpl.txt inclus dans le .tar.gz pour plus d'informations. Le projet se compile avec avr-gcc sous Linux.



Photos

Voici le circuit du prototype que j'avais fabriqué en 2007. Je m'étais servi de mon circuit à usage multiple Multiuse tiny1 pour fabriquer un adaptateur:


Les adaptateurs que je fabrique maintenant (et vends dans mon magasin) sont basés sur mon circuit Multiuse PCB2 qui possède un endroit spécialement prévu pour l'installation du transistor sur la face inférieure.


Attention, ne vous fiez pas aux couleurs des fils dans les photos. Les couleurs changent selon le fournisseur et parfois même selon le lot. Vous devez absolument déterminer le code de couleur utilisé par vos câbles avec un testeur de continuité. Suivre aveuglément les couleurs ici peut possiblement causer des dommages à la console, à la manette SNES et au circuit de l'adaptateur.


Photos des utilisateurs

J'aime bien voir comment les autres s'y prennent pour assembler mes projets. Vous pouvez me faire parvenir des photos de vos montages et je les afficherai ici. Veuillez également m'indiquer si vous souhaitez que j'affiche votre nom/alias et pays. Par défaut je ne mentionnerai que votre prénom.


Références

Le document Playstation.txt que j'ai téléchargé il y a longtemps constitue la principale source d'information ayant rendu ce projet possible.



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.