Fabriquer un paddle pour SMS/MarkIII

Le projet

J'ai récemment acheté le jeu Galactic Protector pour ma SMS japonaise sans savoir qu'un Paddle était requis pour y jouer. Il s'agit du Paddle HPD-200 pour Sega Master Système qui n'a été vendu qu'au Japon à l'époque. Aujourd'hui il est vendu sur un site populaire d'enchères à un prix franchement trop élevé alors j'ai décidé de m'en construire un.

Le paddle HPD-200 de Sega

Le paddle HPD-200 de Sega

Le paddle raphnet.net!

Le paddle raphnet.net!



Caractéristiques:
  • Comportement équivalent au paddle HPD-200 de Sega
  • Compatible avec les systèmes SMS japonais et Sega Mark III
  • Compatible avec les systèmes non-japonais[1]
  • Mode spécial paddle international[2]
  • Circuit simple
[1] Certains jeux japonais supportant le Paddle, si utilisés sur un système SMS ou console Genesis/Megadive via un adaptateur (comme le mien), détectent qu'il s'agit d'une console non-japonaise et s'attendent alors à ce qu'un paddle international soit branché. Comme son fonctionnement est différent, le paddle japonais (HPD-200) ne fonctionne alors pas.

[2] Bien que le paddle international n'ait jamais été vendu par Sega, certains jeux comprennent pourtant du code pour le supporter. Comme ce n'était pas très difficile à faire, j'ai aussi implémenté un mode international.



Photos

J'aurais pu simplement percer deux trous dans une planche de bois et y installer le potentiomètre avec un bouton. Mais puisque j'ai une imprimante 3D, je me suis amusé à faire un boîtier un peu plus élaboré.

Résultat final:
Paddle raphnet.net

Paddle raphnet.net

Paddle raphnet.net

Paddle raphnet.net

Avec Galactic Protector

Avec Galactic Protector

Avec Outrun

Avec Outrun



L'assemblage:



Le concept:
Le concept

Le concept

Le concept

Le concept

Le concept

Le concept

Le bouton

Le bouton

Le bouton installé (coupe)

Le bouton installé (coupe)



Voici les fichiers .STL qui peuvent servir à fabriquer un adaptateur comme le mien:
sms_paddle2_body-main.STL (Pièce pricipale)
sms_paddle2_body-button.STL (Bouton poussoir)
sms_paddle2_body-knob.STL (Bouton rotatif)

Quelques notes concernant ces modèles 3D:
  • Le modèle est conçu pour fonctionner avec un potentiomètre Vishay modèle 657-0-0-203 et une micro-switch Omron D2F-01. Si vous devez utiliser des pièces différentes, comparez leurs dimentions avec ces deux, ou modifiez le modèle avant de l'imprimer.
  • Les crochets du bouton poussoir sont très fragiles. Lors de l'installation, je recommande des les faire chauffer afin de les ramollir. Une fois le bouton en place, redressez-les avant que le plastique redurcisse.
  • Le bouton rotatif s'installe par interférence sur l'axe du potentiomètre. S'il est trop difficile à insérer, agrandir le trou par itération avec des forets de diamètre croissant.



Schéma


Cliquer sur le schéma pour une version plus nette.


Mon circuit à usages multiples multiuse PCB2 se prête très bien à la réalisation de ce projet. Voici un diagramme en illustrant l'utilisation:
Câblage (circuit version 2)

Câblage (circuit version 2)

Câblage (circuit version 1)

Câblage (circuit version 1)



Ce circuit pré-programmé est disponible dans ma boutique en ligne.


Logiciel

Le micro-contrôleur doit bien sûr être programmé pour que ce circuit fonctionne:
Version v1.0
21 février 2015 (Samedi)
Release initial.
Fichier(s):
sms_paddle-1.0.tar.gz (2.3 KB)
sms_paddle-1.0.hex (619 B)
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/sms_paddle


Fonctionnement du paddle

La position du bouton tournant du paddle est codée sous 8 bits et comporte donc 256 positions. La transmission de cette valeur vers la console est faite en deux blocs de 4 bits (nibbles). Ce sont les quatre fils servant normalement pour les quatre boutons directionnels qui sont utilisés (broches 1 à 4 du connecteur).

Paddle HPD-200

Le paddle HPD-200 de sega indique à la console quel jeu de 4 bits est présentement appliqué via la broche 9 du connecteur qui correspond normalement au bouton 2. Lorsque le signal est bas, ce sont les bits de poids faible (0 à 3) qui sont transmit et ce sont donc les bits de poids fort (4 à 7) qui sont transmit lorsque ce signal est haut. Pour chaque échantillon, le paddle semble transmettre les bits de poids faible avant les bits de poids fort. Le signal sortant sur la broche 9 a une fréquence de 8 kHz.


Voici une capture plus récente alors que je vérifiais les timings:

Paddle international

Pour le paddle international, c'est un peu différent. C'est la console qui sélectionne le jeu de bits spécifique via la broche 7 du connecteur. Le paddle réagit en mettant le jeu de bits demandé sur les broches 1 à 4 et en mettant la broche 9 au même état. Selon mes observations, le paddle doit rafraîchir la valeur à transmettre au front descendant de la borche 7. (Sinon lors de certains mouvements on observes des soubresauts)

(Note: Ce graphique est représentatif de ce que mon firmware fait, ce qui n'est pas nécessairement conforme au design prévu par Sega. Il n'existe pas à ma connaissance de périphérique sur lequel je puisse me baser.)
Voici quelques photos d'un paddle HPD-200 que j'ai temporairement eu chez moi il y a quelques années:




Jeux testés

Jeu Console Mode Résultat
Galactic protector (JP) SMS Japonaise HPD-200 Ok
Galactic protector (JP) Genesis nord-américainPaddle international Ok
Outrun (US) SMS Japonaise via adaptateur HPD-200 Ok
Megumi rescue Japanese SMS HPD-200 Ok
Woody Pop / ウッディポップ (JP)Japanese SMS HPD-200 Ok
Woody Pop / ウッディポップ (JP)Genesis Nord-américain + adaptateur MarkIII + Card catcher Paddle international Ok
DONKEY.SMS (Homebrew) SMS Japonaise et Genesis HPD-200 Ok
SMS-A-Sketch (Homebrew)SMS Japonaise et Genesis HPD-200 Ok
Megumi rescue Everdrive + SMS Australienne HPD-200! Ok
Super racing Everdrive + SMS Australienne N/A Ne fonctionne pas
Contactez-moi si vous testez d'autre jeux, et n'oubliez pas de spécifier la région du jeu, la région de la console utilisée et la nature de tout adaptateur ou modifications de console impliqués s'il y a lieu.


Photos proventant des utilisateurs

C'est un réel plaisir pour moi de voir comment les autres s'y prennent pour mettre en œuvre mes projets! Faites moi 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.
2016-06-06: Kyle, d'Australie, m'a envoyé ces photos d'un paddle qu'il a bâti en utilisant une rallonge DB9 et un boîtier de manette USB NES!



2018-09-13: Sam m'a fait parvenir ces photos de France et explique:
A défaut d'être très esthétique, le paddle fonctionne à merveille sur ma MegaDrive 1 japonaise via la conjonction d'un adaptateur "PowerBase Mini" et d'une cartouche "Master Everdrive X7".




Références

#DescriptionAdresse
1 Cette discussion où le code de lecture du paddle HPD-200 vs. le paddle international est décortiqué m'a appris pratiquement tout ce qu'il me manquait pour pouvoir réaliser ce projet. http://www.smspower.org/forums/6783-OneMoreTimePaddleControlPlusPaddleDetectionRegionDetection
2 De l'information générale sur le Paddle ainsi qu'une liste de jeux s'en servant. http://segaretro.org/Paddle_Control
3 Relire le code de mon projet Genesis/Atari/SMS à USB qui supporte depuis longtemps le paddle HPD-200 m'a sauvé un certain temps. http://www.raphnet.net/electronique/atari_usb/index.php


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.