MSX Village forum

L'atelier [DIY] Adaptateur de manettes (presque) universel

Teriak Membre non connecté

Touriste

Rang

Avatar

Inscrit le : 16/02/2025 à 13h30

Messages: 54

Le 13/02/2026 à 00h10

Reprise du message précédent

Trop bien, ça donne envie !
   
JayBLOOD Membre non connecté

Touriste

Rang

Avatar

Inscrit le : 02/08/2025 à 14h20

Messages: 29

Le 18/02/2026 à 19h13
kawickboy :
Les pads Master System ou GX4000 sont norme atari mais je ne suis pas certain que leur 2e bouton soit utilisable sur MSX.


MSX et CPC, même mappage de boutons sur le DB9, donc oui, cela fonctionne. Master system, non, car même mappage que Megadrive sans le multiplexage des boutons A et Start de cette dernière.


Jay
   
MSXlegend Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 18/06/2010 à 22h42

Messages: 6977

Le 22/02/2026 à 22h11
attention: MSX vs AMstrad

Le Bouton 2 : Sur Amstrad, le deuxième bouton est sur la broche 9. Sur MSX, la broche 9 est la Masse (GND).

Conséquence : Si vous branchez une manette Amstrad directement sur un MSX, appuyer sur le bouton 2 ne fera rien (ou pire, créera un conflit car vous envoyez un signal sur la masse). Sur MSX, le bouton 2 doit être sur la broche 7.

La Masse (GND) : L'Amstrad utilise la broche 8 pour la masse. Le MSX utilise la broche 9.

Conséquence : Sans modification, une manette Amstrad branchée sur MSX ne fonctionnera pas du tout (aucun bouton, aucune direction), car le circuit ne sera jamais fermé.



en realité les tableau est approximatif, il ne faut pas en tenir compte. mes pcb ne sont pas bon et doivent etres debuggé, je suis obligé de refaire le routage

voici le brochage de l'amstrad cpc

MSX >Amstrad CPC
Haut 1>1
Bas 2>2
Gauche 3>3
Droite 4>4
Bouton1 6>6
Bouton2 7>9
Masse 9>8
+5V 5> Inexistant (généralement) Edité par MSXlegend Le 22/02/2026 à 22h26


Mon Github ->[/b] github.com/msxlegend
challenge 2013 -> neodream MSX 2013
Concepteur du -> KCX Bluetooth transmitter
Demo Terminator2 T2.zip
MSXlegend Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 18/06/2010 à 22h42

Messages: 6977

Le 22/02/2026 à 23h34
voici un resumé de l'adaptateur "ultimate MSX)

* Le standard Sega (Master System et Mega Drive via JoyMega).

* Le standard MSX/FM Towns.

* Le standard Atari/Amiga/C64.

* Plus-x Terminator (Laser) NES.

* Le Gunstick MHT (Laser) Master system SEGA

Corrections effectués


Mon Github ->[/b] github.com/msxlegend
challenge 2013 -> neodream MSX 2013
Concepteur du -> KCX Bluetooth transmitter
Demo Terminator2 T2.zip
MSXlegend Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 18/06/2010 à 22h42

Messages: 6977

Le 22/02/2026 à 23h53
Je suis entrain d'etudier un port pour souris (ps2)

Je vais donc partir sur un Arduino Pro Micro ATmega32U4 - 45mm x 18mm (c'est la version qui se programme en usb)

voici le firmware complet et optimisé (y a plus qu'a ) :

#include <PS2Mouse.h>

// --- CONFIGURATION DES PINS ---
#define MOUSE_DATA 2 // Vers Pin 1 de la prise PS/2
#define MOUSE_CLOCK 3 // Vers Pin 5 de la prise PS/2

// Sorties vers le port MSX (Connecteur DE-9 Mâle)
#define MSX_UP 4 // Pin 1 MSX
#define MSX_DOWN 5 // Pin 2 MSX
#define MSX_LEFT 6 // Pin 3 MSX
#define MSX_RIGHT 7 // Pin 4 MSX
#define MSX_STROBE 8 // Pin 8 MSX (ENTRÉE du signal du MSX)
#define MSX_BTN1 9 // Pin 6 MSX (Bouton Gauche)
#define MSX_BTN2 10 // Pin 7 MSX (Bouton Droit)

PS2Mouse mouse(MOUSE_CLOCK, MOUSE_DATA);

void setup() {
mouse.initialize();

pinMode(MSX_UP, OUTPUT);
pinMode(MSX_DOWN, OUTPUT);
pinMode(MSX_LEFT, OUTPUT);
pinMode(MSX_RIGHT, OUTPUT);
pinMode(MSX_BTN1, OUTPUT);
pinMode(MSX_BTN2, OUTPUT);
pinMode(MSX_STROBE, INPUT_PULLUP);

// Initialisation : État HAUT (repos sur MSX)
digitalWrite(MSX_UP, HIGH);
digitalWrite(MSX_DOWN, HIGH);
digitalWrite(MSX_LEFT, HIGH);
digitalWrite(MSX_RIGHT, HIGH);
digitalWrite(MSX_BTN1, HIGH);
digitalWrite(MSX_BTN2, HIGH);
}

void loop() {
int8_t x, y;
uint8_t buttons;

// Lecture de la souris PS/2
MouseData data;
mouse.report(&data);
x = data.x;
y = data.y;
buttons = data.buttons;

// 1. Gestion des boutons (Logique inversée pour le MSX)
digitalWrite(MSX_BTN1, (buttons & 0x01) ? LOW : HIGH);
digitalWrite(MSX_BTN2, (buttons & 0x02) ? LOW : HIGH);

// 2. Protocole MSX Mouse (Quadrature via Strobe)
// On attend que le MSX demande les données sur la Pin 8
while(digitalRead(MSX_STROBE) == LOW); // Phase 1
sendNibble(x >> 4); // Envoi les 4 bits de poids fort de X

while(digitalRead(MSX_STROBE) == HIGH); // Phase 2
sendNibble(x & 0x0F); // Envoi les 4 bits de poids faible de X

while(digitalRead(MSX_STROBE) == LOW); // Phase 3
sendNibble(y >> 4); // Envoi les 4 bits de poids fort de Y

while(digitalRead(MSX_STROBE) == HIGH); // Phase 4
sendNibble(y & 0x0F); // Envoi les 4 bits de poids faible de Y
}

// Fonction pour envoyer 4 bits sur les lignes de direction
void sendNibble(uint8_t nibble) {
digitalWrite(MSX_UP, (nibble & 0x01) ? LOW : HIGH);
digitalWrite(MSX_DOWN, (nibble & 0x02) ? LOW : HIGH);
digitalWrite(MSX_LEFT, (nibble & 0x04) ? LOW : HIGH);
digitalWrite(MSX_RIGHT, (nibble & 0x08) ? LOW : HIGH);
}


implantation sur mon pcb, week end prochain. demain c'est boulot :sick Edité par MSXlegend Le 23/02/2026 à 00h00


Mon Github ->[/b] github.com/msxlegend
challenge 2013 -> neodream MSX 2013
Concepteur du -> KCX Bluetooth transmitter
Demo Terminator2 T2.zip
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 11172

Le 23/02/2026 à 10h00
tu peux ajouter le PAD de la GX 4000 de chez Amstrad qui est entièrement compatible avec une manette MSX


:noel
Site web    
chiourme Membre non connecté

Touriste

Rang

Avatar

Inscrit le : 18/12/2025 à 10h30

Messages: 25

Le 23/02/2026 à 10h33
Les manettes GX4000 fonctionnent sur un MSX.Les boutons de tirs sont inversés(comparé avec un Joy Card ARVEL) Edité par chiourme Le 23/02/2026 à 11h12
   
DataPro Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 14/06/2011 à 10h12

Messages: 1092

Le 23/02/2026 à 12h34
L'idée d'ajouter un port souris est particulièrement brillante. :tchin
Si je peux ajouter une remarque, j’estime que le port manette spécifique Amstrad est superflu. Je possède une collection importante de joysticks (une cinquantaine), et les modèles réellement spécifiques à l’Amstrad sont rares.
À ma connaissance, seuls les joysticks Amsoft/Amstrad JY‑1 et JY‑2 sont véritablement dédiés au CPC. Quand on connaît leur piètre qualité, je pense qu’aucun MSXien n’en utilisera sur sa machine.

Comme l'a fait remarquer Jipé, la manette Amstrad GX4000/CPC+ se branche directement sur le port MSX/FM-Towns.

Est-il possible d'ajouter des diodes de protection sur le 5V si l'utilisateur se trompe de port ? Edité par DataPro Le 23/02/2026 à 12h55


MSX1: Yeno DPC-64 - Sanyo PHC-28S - Sanyo PHC-28L - Canon V20 - Sony HB-75F - Yeno MX-64
MSX2: Panasonic FS-A1F 128Ko RAM 128 Ko VRAM / Gotek/ I/O Expander / Carnivore 2 ~8Mb FlashROM~1024Ko RAM~IDE~FM-PAC(MSX Music)~SCC+ / Wozblaster
          Philips NMS 8255Azerty 128Ko RAM 128 Ko VRAM
   
MSXlegend Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 18/06/2010 à 22h42

Messages: 6977

Le 23/02/2026 à 14h59
Jipe :
tu peux ajouter le PAD de la GX 4000 de chez Amstrad qui est entièrement compatible avec une manette MSX

Je valide, merci :tchin

DataPro :
Est-il possible d'ajouter des diodes de protection sur le 5V si l'utilisateur se trompe de port ?

ça va etres obligatoire, je vais voir comment faire . Mais oui il faut imperativement proteger le msx du mauais retour 5v


Mon Github ->[/b] github.com/msxlegend
challenge 2013 -> neodream MSX 2013
Concepteur du -> KCX Bluetooth transmitter
Demo Terminator2 T2.zip
MSXlegend Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 18/06/2010 à 22h42

Messages: 6977

Le 23/02/2026 à 15h07
Attention, fm town et master system sont quasi identique, mais il ne faut pas cabler pin 8. je les ai donc mis a part.

Pour la gx4000, le cablage du pin8 ne pose pas de probleme, je l ajoute donc sur le port msx que j'ai mi en plus

on aura donc
-Amstrad
-Master system/fm town
-MSX/GX4000/X68000
-C64/cd32/VIC-20/Amiga/ATARI ST*/ZX Spectrum (Kempston)
-Megadrive 3 ou 6 boutons (Joymega)
-MHT Gunstick (SEGA)
-PLUS-X Terminator (NES)
-Souris PS/2

Je crois qu'on couvre 99% des manettes. il me reste la souris a ajouter, et ce n'est pas le plus simple mais j'y arriverais.

Encore un peu de patience, c'est pour bientot :)

Edit: je vais ajouter des LED temoin (ou de diagnostique), donc 4 pour le curseur et 2 pour les boutons. chacune relié a sa resistance de 1K et relié sur son pin , ça ne devrait pas perturber le signal. Vous en dites quoi ? Edité par MSXlegend Le 23/02/2026 à 15h25


Mon Github ->[/b] github.com/msxlegend
challenge 2013 -> neodream MSX 2013
Concepteur du -> KCX Bluetooth transmitter
Demo Terminator2 T2.zip
JayBLOOD Membre non connecté

Touriste

Rang

Avatar

Inscrit le : 02/08/2025 à 14h20

Messages: 29

Le 23/02/2026 à 18h11
Superbe! Quand cela sera prêt, j'espere pouvoir t'en acheter un. :)


Jay
   
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 11172

Le 23/02/2026 à 18h31
les leds témoins je ne pense pas que ce soit une bonne idée a moins de mettre des cd4066 en tampon pour activer les entrées du MSX

il en faut 2 car il y a 4 portes dans une puce et la ça va devenir une usine a gaz juste pour faire joli :siffle :siffle


:noel
Site web    
MSXlegend Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 18/06/2010 à 22h42

Messages: 6977

Le 23/02/2026 à 20h57
non je voulais dire mettre des LED temoins sur le port msx avec une resistance pour chaque led (peut etre 2k) ça ne devrait pas géner les signaux.

Reliés comme ça:
port1 (up) -> LED -> 2K -> 5v
port2 (bas) -> LED ->2K -> 5v
etc...

tu en pense quoi? Edité par MSXlegend Le 24/02/2026 à 21h52


Mon Github ->[/b] github.com/msxlegend
challenge 2013 -> neodream MSX 2013
Concepteur du -> KCX Bluetooth transmitter
Demo Terminator2 T2.zip
MSXlegend Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 18/06/2010 à 22h42

Messages: 6977

Le 23/02/2026 à 21h00
un apercu avec le port souris et l'arduino :)
seul le port PS/2 n'a pu etres testé en vrai !

visu_3d_23_02_2026_20_36_17

Il ne manque plus que des diode de protection bien placé (5v)
LED non fait. routage non fait


Mon Github ->[/b] github.com/msxlegend
challenge 2013 -> neodream MSX 2013
Concepteur du -> KCX Bluetooth transmitter
Demo Terminator2 T2.zip
MSXlegend Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 18/06/2010 à 22h42

Messages: 6977

Le 23/02/2026 à 22h17
Shema de principe

ps2_shema_de_principe

je pense que j'ai tout ce qu'il faut. il me reste les diodes Edité par MSXlegend Le 23/02/2026 à 22h33


Mon Github ->[/b] github.com/msxlegend
challenge 2013 -> neodream MSX 2013
Concepteur du -> KCX Bluetooth transmitter
Demo Terminator2 T2.zip
MSXlegend Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 18/06/2010 à 22h42

Messages: 6977

Le 24/02/2026 à 16h57
DataPro :
j’estime que le port manette spécifique Amstrad est superflu. J
Comme l'a fait remarquer Jipé, la manette Amstrad GX4000/CPC+ se branche directement sur le port MSX/FM-Towns.


de toute facon, si je l enleve, j'ai un vide :lol
a moin de trouver autre chose, je vais laisser mais tu as parfaitement raison ;)


Mon Github ->[/b] github.com/msxlegend
challenge 2013 -> neodream MSX 2013
Concepteur du -> KCX Bluetooth transmitter
Demo Terminator2 T2.zip
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie