L'atelier [DIY] Adaptateur de manettes (presque) universel
Reprise du message précédent
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
Sauf erreur de ma part, si tu enlèves le port Amstrad, tu peux mettre le port souris en bout perpendiculairement aux autres et tu gagnes un peu en longueur.
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
apres avoir fait des recherches, j'ai decidé de faire sauter le port amstrad
A l'epoque, bien que cablé, les manette officiel n'avais qu'un seul bouton fire. ça c'est democratisé avec la GX4000.
Voila c'est reglé
A l'epoque, bien que cablé, les manette officiel n'avais qu'un seul bouton fire. ça c'est democratisé avec la GX4000.
Voila c'est reglé
Mon Github ->[/b] github.com/msxlegend
challenge 2013 -> neodream MSX 2013
Concepteur du -> KCX Bluetooth transmitter
Demo Terminator2 T2.zip
Voici l'idée pour la securité
> Le Polyswitch (500mA) : Il est soudé juste après l'arrivée du 5V du connecteur MSX. (Fusible réarmable) de 500mA (ex: MF-MSMF050)
> Les LEDs de contrôle : Une LED (avec sa résistance de 1 ou 2kΩ) derrière chaque sortie de jumper pour confirmer visuellement quel port est "vivant".
> Le Jumper (Sélecteur 1 vers 7) : Il distribue ce 5V vers le port de notre choix.
Avantage : Un port non sélectionné est totalement inerte (pas de court-circuit possible, pas de LED allumée, pas de conflit).
Edité par
MSXlegend
Le 26/02/2026 à 20h50
> Le Polyswitch (500mA) : Il est soudé juste après l'arrivée du 5V du connecteur MSX. (Fusible réarmable) de 500mA (ex: MF-MSMF050)
> Les LEDs de contrôle : Une LED (avec sa résistance de 1 ou 2kΩ) derrière chaque sortie de jumper pour confirmer visuellement quel port est "vivant".
> Le Jumper (Sélecteur 1 vers 7) : Il distribue ce 5V vers le port de notre choix.
Avantage : Un port non sélectionné est totalement inerte (pas de court-circuit possible, pas de LED allumée, pas de conflit).
Edité par
MSXlegend
Le 26/02/2026 à 20h50
Mon Github ->[/b] github.com/msxlegend
challenge 2013 -> neodream MSX 2013
Concepteur du -> KCX Bluetooth transmitter
Demo Terminator2 T2.zip
Bon c'est compliqué mais je pense que je vais enfin pouvoir faire une version de test. Je vais vers l'inconnu concernant la souris par le port ps/2. Le code a été entierement refait !! 
voici mon programme pour l'arduino pro micro (ATmega32U4) 5V 16Mhz
si quelqu'un maitrise l'arduino, peut il m'aider a verifier si mon code est correct?

voici mon programme pour l'arduino pro micro (ATmega32U4) 5V 16Mhz
si quelqu'un maitrise l'arduino, peut il m'aider a verifier si mon code est correct?
Code C++ Souris pour MSX :
/* * ==========================================================
* PROJET : Adaptateur SOURIS ps/2 pour MSX
* AUTEUR : MSXLegend
* VERSION : 1.0 (2026)
* CARTE : Arduino Pro Micro (ATmega32U4) 5V / 16MHz
* ==========================================================
* CORRESPONDANCE PHYSIQUE (Pattes 1-24) :
* ---------------------------------------
* [5] -> Data Souris PS/2 | [10] -> MSX Pin 4 (DROITE)
* [6] -> Clock Souris PS/2 | [11] -> MSX Pin 8 (STROBE)
* [7] -> MSX Pin 1 (HAUT) | [12] -> MSX Pin 6 (BOUTON 1)
* [8] -> MSX Pin 2 (BAS) | [13] -> MSX Pin 7 (BOUTON 2)
* [9] -> MSX Pin 3 (GAUCHE) | [21] -> VCC (+5V MSX)
* ==========================================================
*/
#include <PS2Mouse.h>
// --- CONFIGURATION LOGICIELLE DES PINS ---
// (Les numéros ci-dessous correspondent aux labels D2, D3, etc. de l'IDE)
#define MOUSE_DATA 2 // Patte physique 5
#define MOUSE_CLK 3 // Patte physique 6
const int MSX_UP = 4; // Patte physique 7
const int MSX_DOWN = 5; // Patte physique 8
const int MSX_LEFT = 6; // Patte physique 9
const int MSX_RIGHT = 7; // Patte physique 10
const int MSX_STROBE = 8; // Patte physique 11
const int MSX_BTN1 = 9; // Patte physique 12
const int MSX_BTN2 = 10; // Patte physique 13
PS2Mouse mouse(MOUSE_CLK, MOUSE_DATA);
void setup() {
Serial.begin(9600);
// Signature MSXLegend au démarrage
Serial.println(F("================================"));
Serial.println(F(" MSX MOUSE ADAPTER v1.0 "));
Serial.println(F(" By MSXLegend - 2026 "));
Serial.println(F("================================"));
// Initialisation sécurisée en entrées (Haute Impédance)
int outputs[] = {MSX_UP, MSX_DOWN, MSX_LEFT, MSX_RIGHT, MSX_BTN1, MSX_BTN2};
for(int i=0; i<6; i++) {
pinMode(outputs[i], INPUT);
}
pinMode(MSX_STROBE, INPUT);
mouse.begin();
}
void loop() {
MouseData data;
mouse.getData(&data);
// 1. Gestion immédiate des boutons
sendToMsx(MSX_BTN1, data.left);
sendToMsx(MSX_BTN2, data.right);
// 2. Protocole Quadrature MSX (Synchro sur Pin 8 / Strobe)
// Le MSX demande les données en 4 étapes (Nibbles)
while(digitalRead(MSX_STROBE) == LOW);
sendNibble(data.x >> 4);
while(digitalRead(MSX_STROBE) == HIGH);
sendNibble(data.x & 0x0F);
while(digitalRead(MSX_STROBE) == LOW);
sendNibble(data.y >> 4);
while(digitalRead(MSX_STROBE) == HIGH);
sendNibble(data.y & 0x0F);
}
// Envoie 4 bits sur les lignes de direction (H, B, G, D)
void sendNibble(uint8_t n) {
sendToMsx(MSX_UP, n & 0x01);
sendToMsx(MSX_DOWN, n & 0x02);
sendToMsx(MSX_LEFT, n & 0x04);
sendToMsx(MSX_RIGHT, n & 0x08);
}
// Fonction de pilotage propre pour le port MSX
void sendToMsx(int pin, bool active) {
if (active) {
pinMode(pin, OUTPUT);
digitalWrite(pin, LOW); // Tire la ligne à 0V (état actif sur MSX)
} else {
pinMode(pin, INPUT); // Laisse la ligne flotter (état repos)
}
}
Edité par
MSXlegend
Le 28/03/2026 à 18h31
/* * ==========================================================
* PROJET : Adaptateur SOURIS ps/2 pour MSX
* AUTEUR : MSXLegend
* VERSION : 1.0 (2026)
* CARTE : Arduino Pro Micro (ATmega32U4) 5V / 16MHz
* ==========================================================
* CORRESPONDANCE PHYSIQUE (Pattes 1-24) :
* ---------------------------------------
* [5] -> Data Souris PS/2 | [10] -> MSX Pin 4 (DROITE)
* [6] -> Clock Souris PS/2 | [11] -> MSX Pin 8 (STROBE)
* [7] -> MSX Pin 1 (HAUT) | [12] -> MSX Pin 6 (BOUTON 1)
* [8] -> MSX Pin 2 (BAS) | [13] -> MSX Pin 7 (BOUTON 2)
* [9] -> MSX Pin 3 (GAUCHE) | [21] -> VCC (+5V MSX)
* ==========================================================
*/
#include <PS2Mouse.h>
// --- CONFIGURATION LOGICIELLE DES PINS ---
// (Les numéros ci-dessous correspondent aux labels D2, D3, etc. de l'IDE)
#define MOUSE_DATA 2 // Patte physique 5
#define MOUSE_CLK 3 // Patte physique 6
const int MSX_UP = 4; // Patte physique 7
const int MSX_DOWN = 5; // Patte physique 8
const int MSX_LEFT = 6; // Patte physique 9
const int MSX_RIGHT = 7; // Patte physique 10
const int MSX_STROBE = 8; // Patte physique 11
const int MSX_BTN1 = 9; // Patte physique 12
const int MSX_BTN2 = 10; // Patte physique 13
PS2Mouse mouse(MOUSE_CLK, MOUSE_DATA);
void setup() {
Serial.begin(9600);
// Signature MSXLegend au démarrage
Serial.println(F("================================"));
Serial.println(F(" MSX MOUSE ADAPTER v1.0 "));
Serial.println(F(" By MSXLegend - 2026 "));
Serial.println(F("================================"));
// Initialisation sécurisée en entrées (Haute Impédance)
int outputs[] = {MSX_UP, MSX_DOWN, MSX_LEFT, MSX_RIGHT, MSX_BTN1, MSX_BTN2};
for(int i=0; i<6; i++) {
pinMode(outputs[i], INPUT);
}
pinMode(MSX_STROBE, INPUT);
mouse.begin();
}
void loop() {
MouseData data;
mouse.getData(&data);
// 1. Gestion immédiate des boutons
sendToMsx(MSX_BTN1, data.left);
sendToMsx(MSX_BTN2, data.right);
// 2. Protocole Quadrature MSX (Synchro sur Pin 8 / Strobe)
// Le MSX demande les données en 4 étapes (Nibbles)
while(digitalRead(MSX_STROBE) == LOW);
sendNibble(data.x >> 4);
while(digitalRead(MSX_STROBE) == HIGH);
sendNibble(data.x & 0x0F);
while(digitalRead(MSX_STROBE) == LOW);
sendNibble(data.y >> 4);
while(digitalRead(MSX_STROBE) == HIGH);
sendNibble(data.y & 0x0F);
}
// Envoie 4 bits sur les lignes de direction (H, B, G, D)
void sendNibble(uint8_t n) {
sendToMsx(MSX_UP, n & 0x01);
sendToMsx(MSX_DOWN, n & 0x02);
sendToMsx(MSX_LEFT, n & 0x04);
sendToMsx(MSX_RIGHT, n & 0x08);
}
// Fonction de pilotage propre pour le port MSX
void sendToMsx(int pin, bool active) {
if (active) {
pinMode(pin, OUTPUT);
digitalWrite(pin, LOW); // Tire la ligne à 0V (état actif sur MSX)
} else {
pinMode(pin, INPUT); // Laisse la ligne flotter (état repos)
}
}
Mon Github ->[/b] github.com/msxlegend
challenge 2013 -> neodream MSX 2013
Concepteur du -> KCX Bluetooth transmitter
Demo Terminator2 T2.zip
Grace a Bastion Rebel, je vais pouvoir ajouter un port USB pour les souris optiques enciennes generations
Edité par
MSXlegend
Le 16/04/2026 à 17h08
Edité par
MSXlegend
Le 16/04/2026 à 17h08
Mon Github ->[/b] github.com/msxlegend
challenge 2013 -> neodream MSX 2013
Concepteur du -> KCX Bluetooth transmitter
Demo Terminator2 T2.zip
je ferais ça apres les essais. c'est la V3, les 2 autres ont échoué, j'ai voulu aller trop vite 

Une fois que tout sera validé et assemblé, le plus simple sera que je t'envoie un modèle complet (PCB assemblé). Je t'enverrai également les cotes principales (position des trous, etc.).
Edité par
MSXlegend
Le 16/04/2026 à 19h40


Une fois que tout sera validé et assemblé, le plus simple sera que je t'envoie un modèle complet (PCB assemblé). Je t'enverrai également les cotes principales (position des trous, etc.).
Edité par
MSXlegend
Le 16/04/2026 à 19h40
Mon Github ->[/b] github.com/msxlegend
challenge 2013 -> neodream MSX 2013
Concepteur du -> KCX Bluetooth transmitter
Demo Terminator2 T2.zip
Je reconnais qu'avec l'ajout du port souris, ce gadget devient indispensable. Surtout si on peut avoir un boitier.
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
c'est du travail d'equipe
Mon Github ->[/b] github.com/msxlegend
challenge 2013 -> neodream MSX 2013
Concepteur du -> KCX Bluetooth transmitter
Demo Terminator2 T2.zip
Je vais avoir du maille ce week end. PCB recu, je suis pressé de tester la souris. juste une erreur, j'ai sous estimé la taille du module arduino pro micro qui viens deborder sur la connectique USB 

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

