[DCMOTO] second bouton de manette

Couvre tous les domaines de l'émulation ou de la virtualisation ainsi que les discussions sur les divers outils associés.

Modérateurs : Papy.G, fneck, Carl

Répondre
Bentoc
Messages : 178
Inscription : 14 sept. 2019 13:35
Localisation : Var - France

[DCMOTO] second bouton de manette

Message par Bentoc »

Daniel,

J'ai découvert récemment (mieux vaut tard que jamais ...) qu'il existait des manettes Thomson (MJ90-020) avec deux boutons.

fxrobin a fait un petit programme pour montrer le fonctionnement sur un TO8 :
IMG_20220405_204027.jpg
IMG_20220405_204027.jpg (358.64 Kio) Consulté 6325 fois
Ainsi qu'une vidéo de démo du résultat :


La lecture du registre permet bien de capter les deux boutons.

Serait-il possible de faire évoluer DCMOTO pour prendre en compte ce second bouton ? :D
__sam__
Messages : 7909
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: [DCMOTO] second bouton de manette

Message par __sam__ »

C'est pas standard comme manette (les miennes n'en ont qu'un) et ce bouton n'est pas pris en compte dans l'API en rom pour les joysticks. Est-ce que ca ne serait pas plutôt lié au 2e bouton d'une souris plutôt ?
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Bentoc
Messages : 178
Inscription : 14 sept. 2019 13:35
Localisation : Var - France

Re: [DCMOTO] second bouton de manette

Message par Bentoc »

Bah il y a quand même marqué Thomson sur la manette ;-)
joypad2.jpg
joypad2.jpg (70.46 Kio) Consulté 6309 fois
joypad.jpg
joypad.jpg (79.6 Kio) Consulté 6309 fois
Du coup même si la ROM n'a pas de routine pour y accéder, ça fonctionne bien en lisant E7CD.
Donc si je ne me trompes pas ça donne ça :

Code : Tout sélectionner

   [------] 6 bits convertisseur numerique-analogique 
 11 001100 (0: appuye | 1: relache) 
 ||   ||
 ||   ||_Fire B Joypad1
 ||   |__Fire B Joypad2
 ||
 ||_Fire A Joypad1
 |__Fire A Joypad2
Daniel
Messages : 17286
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [DCMOTO] second bouton de manette

Message par Daniel »

Il faut savoir que la différence entre les manettes NR. MJ90-020 à deux boutons et à un seul bouton est très subtile. L'aspect extérieur est parfaitement identique. La différence est visible uniquement à l'extrémité du connecteur.

connecteurs_manettes.jpg
connecteurs_manettes.jpg (46.49 Kio) Consulté 6292 fois

A gauche une manette avec un seul bouton connecté (celui du socle). Il y a trois trous sans connexion.
A droite une manette avec les deux boutons connectés. Il y a deux trous sans connexion.
Mais ce n'est pas la seule différence. Dans le deuxième modèle, le "commun manette" est relié au "commun manette" de l'ordinateur. Dans le premier modèle le "commun manette" est relié à la masse de l'ordinateur. Je ne connais pas la raison de cette différence, une enquête serait nécessaire pour trouver l'explication. Il y a peut-être des différences de câblage dans les ordinateurs entre la première et la dernière génération.
[Edit] Autre différence : dans le premier modèle le premier (et seul) bouton est celui du socle (celui du manche est inactif). Dans le deuxième modèle le premier bouton est celui du manche, le deuxième est celui du socle.
[Edit2] Autres différences : sur une face du connecteur, près de la sortie du câble, l'inscription TAIWAN est du grand côté (5 broches) de la prise DB9 pour le premier modèle. Elle est du petit côté (4 broches) pour le deuxième modèle. A l'extrémité du connecteur les angles sont plus arrondis dans le premier modèle.


L'émulateur dcmoto gère le deuxième bouton des manettes depuis octobre 2011 :
dcmoto201110.png
dcmoto201110.png (5.92 Kio) Consulté 6292 fois

Code : Tout sélectionner

// Joystick emulation ////////////////////////////////////////////////////////
void Joysemul(int i, int state)
{
 //PA0=0 nord   PA1=0 sud   PA2=0 ouest   PA3=0 est   PB6=0 actionA   PB2=0 actionB
 //PA4=1 nord   PA5=1 sud   PA6=1 ouest   PA7=1 est   PB7=1 actionA   PB3=1 actionB
 int n;
 if(joysticks == 0) return;
 n = 0;
 switch(i)
 {
  case 0: if(joysposition & 0x02) n = 0x01; break; //manette 0 nord
  case 1: if(joysposition & 0x01) n = 0x02; break; //manette 0 sud
  case 2: if(joysposition & 0x08) n = 0x04; break; //manette 0 ouest
  case 3: if(joysposition & 0x04) n = 0x08; break; //manette 0 est
  case 4: if(joysposition & 0x20) n = 0x10; break; //manette 1 nord
  case 5: if(joysposition & 0x10) n = 0x20; break; //manette 1 sud
  case 6: if(joysposition & 0x80) n = 0x40; break; //manette 1 ouest
  case 7: if(joysposition & 0x40) n = 0x80; break; //manette 1 est
  case 8: if(state) joysaction |= 0x40; else joysaction &= 0xbf; break;  //manette 0 bouton A
  case 9: if(state) joysaction |= 0x80; else joysaction &= 0x7f; break;  //manette 1 bouton A
  case 10: if(state) joysaction |= 0x04; else joysaction &= 0xfb; break; //manette 0 bouton B
  case 11: if(state) joysaction |= 0x08; else joysaction &= 0xf7; break; //manette 1 bouton B
 }
 if(n > 0) {if(state) joysposition |= n; else joysposition &= (~n);}
}
Par contre, dans l'émulation des manettes du PC par le clavier, il n'est pas prévu de touche pour simuler le deuxième bouton. Je vais l'ajouter dans la prochaine version.
Dernière modification par Daniel le 22 avr. 2022 21:11, modifié 1 fois.
Daniel
L'obstacle augmente mon ardeur.
__sam__
Messages : 7909
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: [DCMOTO] second bouton de manette

Message par __sam__ »

Y a t'il des jeux ou des programmes d'époque qui utilisent le bouton du manche ?
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Daniel
Messages : 17286
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [DCMOTO] second bouton de manette

Message par Daniel »

Aucun programme à ma connaissance. Et en plus il est impossible de tester le deuxième bouton avec le BASIC, ni même avec les routines du moniteur.
Les deux premiers modèles de manettes n'avaient qu'un seul bouton, la moitié des derniers modèles n'en avaient aussi qu'un seul.
Les éditeurs auraient eu des réclamations s'ils avaient utilisé les deux boutons, presque personne n'avait le bon modèle.
Daniel
L'obstacle augmente mon ardeur.
Bentoc
Messages : 178
Inscription : 14 sept. 2019 13:35
Localisation : Var - France

Re: [DCMOTO] second bouton de manette

Message par Bentoc »

Désolé Daniel,
Effectivement je me suis basé sur le menu de l'émulation manette par le clavier (ce qui m'a laissé pensé que ce n'était pas géré) et je n'ai pas testé.
Le second bouton fonctionne bien dans DCMOTO avec ma manette 8bitDo M30 en Bluetooth ... mea culpa

En basic on peut lire la valeur du second bouton, le programme est dans mon premier post.
Daniel
Messages : 17286
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [DCMOTO] second bouton de manette

Message par Daniel »

Dans le message précédent, je voulais dire qu'il n'y a pas d'instruction BASIC pour tester le second bouton. Avec des PEEK et des POKE, bien évidemment, on peut tout faire en BASIC, par exemple tester les ports des PIA ou charger du langage machine en RAM et l'exécuter.
Daniel
L'obstacle augmente mon ardeur.
Daniel
Messages : 17286
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [DCMOTO] second bouton de manette

Message par Daniel »

Ajout dans dcmoto de l'émulation du deuxième bouton des manettes par le pavé numérique (touche 0 pour la manette 0, touche 4 pour la manette 1).
Nouvelle version à http://dcmoto.free.fr/emulateur/ (chargez la version de développement 2022.04.23 ou plus récente).

Rappel :
Le deuxième bouton était déjà émulé par la touche ENTREE du clavier avec l'option CTRL-gauche (manette 0) et CTRL-droit (manette 1).
Il était aussi émulé par les joysticks du PC.
Dernière modification par Daniel le 24 avr. 2022 09:07, modifié 1 fois.
Daniel
L'obstacle augmente mon ardeur.
Bentoc
Messages : 178
Inscription : 14 sept. 2019 13:35
Localisation : Var - France

Re: [DCMOTO] second bouton de manette

Message par Bentoc »

merci !
Asic512
Messages : 128
Inscription : 30 juin 2019 21:13

Re: [DCMOTO] second bouton de manette

Message par Asic512 »

La manette Thomson de la vidéo semble n'être qu'un QuickShot I de Spectravideo ripoliné (un tour de Garcimore ? Chacun ses références ...). Je possédais un tel QuickShot I et il me semble bien que les deux boutons avaient le même effet dans les jeux ou dans le basic (sur TO8). J'ignorais en tout cas qu'on pouvait les différencier.
Asic512
Avatar de l’utilisateur
fxrobin
Messages : 102
Inscription : 07 mars 2019 13:51
Localisation : RENNES
Contact :

Re: [DCMOTO] second bouton de manette

Message par fxrobin »

Super, merci Daniel.
Comme Bentoc, n'ayant pas vu d'option pour l'association avec le clavier, je pensais que ce n'était pas supporté.

Le joystick blanc, c'est celui que j'ai eu en 1988 avec mon TO8. A l'époque je n'avais pas compris pourquoi mon second bouton ne faisait rien alors qu'un copain, sur son TO9, avait le même et les deux activaient le "premier bouton".

Mystère résolu, il n'y a plus qu'à faire un truc qui en profite ou alors hacker un jeu existant pour lui rajouter un usage (Slapfight, Turbo Cup, ...)
Fan d'ATARI 2600, de THOMSON MO5-TO8 et d'ATARI ST
Mes articles : https://www.fxjavadevblog.fr/retro-programming/
Membre du groupe wide-dot.
Daniel
Messages : 17286
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [DCMOTO] second bouton de manette

Message par Daniel »

Il y a un petit inconvénient à l'utilisation des deuxièmes boutons : Sur le port B du 6821, ils partagent deux bits avec le CNA.
Si on configure le 6821 pour la sortie son 6 bits les deuxièmes boutons ne fonctionnent plus, et réciproquement.
Daniel
L'obstacle augmente mon ardeur.
Daniel
Messages : 17286
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [DCMOTO] second bouton de manette

Message par Daniel »

C'est amusant cette histoire du deuxième bouton, câblé dans certains modèles et pas câblé dans d'autres.
Il y a une annonce récente d'ebay disant ceci :
Un joystick officiel en boite ( le bouton sur le stick ne fonctionne pas , à nettoyer)
L'acheteur risque de s'épuiser à le nettoyer, car comme il n'est pas câblé il ne fonctionnera jamais :mrgreen: :mrgreen: :mrgreen:
Daniel
L'obstacle augmente mon ardeur.
Répondre