L'atelier [DIY] Adaptateur de manettes (presque) universel
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
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
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
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
* 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
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)
implantation sur mon pcb, week end prochain. demain c'est boulot
Edité par
MSXlegend
Le 23/02/2026 à 00h00
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);
}
#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
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
L'idée d'ajouter un port souris est particulièrement brillante. 
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

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
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

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
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
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
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
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
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
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
un apercu avec le port souris et l'arduino 
seul le port PS/2 n'a pu etres testé en vrai !

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

seul le port PS/2 n'a pu etres testé en vrai !

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
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

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
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.
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

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



