MSX Village forum

La Place des Développeurs Souris sur MSX Comment ça marche ?

aoineko Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/01/2011 à 21h17

Messages: 2184

Le 14/08/2022 à 23h20

Reprise du message précédent

J'obtiens les valeurs inverse de ce à quoi je m'attendais.
Quand je vais vers la droite, j'obtiens des valeurs négatives , et positives vers la gauche.
Pareil, verticalement ( vers le haut et vers le bas).
C'est normal ?


On est toujours ignorant avant de savoir.
Github    
TurboSEB Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 08/08/2010 à 20h57

Messages: 5492

Le 15/08/2022 à 01h38
Les souris sur MSX étant toutes des souris mécanique qui fonctionne avec une boule et deux roues codeuses.

En résumé, c'est le principe de fonctionnement avec une roue codeuse assujettis à un capteur optique qui fonctionne avec des fronts montant et descendant. En suivant la position de la boule de la souris qui guide les 2 roues de celle-ci. Une pour droite/gauche, l'autre pour haut/bas.

kxn1

Principe de fonctionnement mécanique d'une roue codeuse avec les capteurs optiques :
Les capteurs A et B étant décalé d'un demi cycle avec la forme de la roue codeuse.
5vab

Résultat en sortie, dans un sens et dans l'autre :
to6g
Les valeurs du capteur A par rapport au capteur B étant soient + (valeur 1) et- (valeur 0) en fonction du sens de rotation de la roue codeuse . Le mix des 2 données permet de savoir la rotation et le sens de rotation de chaque roue codeuse.

Tout cela associé à un cycle d'horloge, on as donc une succession de fonts montant ou descendant de A et de B suivant la direction de la souris.

Après j'imagine qu'il y a un système de portes logiques pour décodé tout ça (A1, B1, A2 et B2) et pour stabilisé le signal pour la db9 :tea Edité par TurboSEB Le 15/08/2022 à 10h14



MSX 1&2 + Moniteurs+divers (environ 0.70Tonnes)
   
ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5300

Le 15/08/2022 à 08h19
@aoineko: je ne sais pas pourquoi tu cherches midi à 14, la routine que j'ai postée est compatible tout MSX, préserve la led kana, et est parfaitement aux normes.


banniere-ericb59e
Site web    
TurboSEB Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 08/08/2010 à 20h57

Messages: 5492

Le 15/08/2022 à 10h23
Parcequ'il veut savoir comment ça fonctionne et avoir une idée globale de la chose. :tea

Quand tu sais comment fonctionne une voiture électrique, un moteur électrique,..... une tesla n'a rien de magique, c'est même ridicule par rapport au moteur à explosion optimisé. Cette technologie des années 1890 n'est pas une révolution, sauf le couplage avec l'IA.



MSX 1&2 + Moniteurs+divers (environ 0.70Tonnes)
   
aoineko Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/01/2011 à 21h17

Messages: 2184

Le 15/08/2022 à 14h32
ericb59 :
@aoineko: je ne sais pas pourquoi tu cherches midi à 14, la routine que j'ai postée est compatible tout MSX, préserve la led kana, et est parfaitement aux normes.


J'aime bien comprendre ce que j'utilise, mais c'est aussi souvent nécessaire car j'ai besoin d'adapter ce que je trouve à mes besoins.
Par ex., là j'ai rajouté la gestion des boutons et modifié la fonction pour qu'elle prenne le même paramètre d'entré que celle de lecture du joystick pour harmoniser mon module de gestion des inputs.
Mais effectivement, ta version préserve la LED Kana (j'avais pas vu la différence et j'étais partie de celle sur MRC). :top

Sinon, en creusant, j'ai vu que les bits de « Pulse » sont réactivés après la lecture des 2 nibbles (4-bits) de la valeur de déplacement X (donc avant de commencer à lire ceux de Y).
Du coup, je comprends mieux pourquoi il y a une plus longue attente au début de la lecture : c'est pour réinitialiser le périphérique.

Avec ma vision moderne des choses, ça semble fou que pour lire la valeur de déplacement Y par ex., il faut attendre suffisamment longtemps pour que la donnée soit "prête" mais pas trop longtemps pour pas que le périphérique ne se soit réinitialisé ! (il faut entre plus de 140 cycles Z80 et moins de 420)

J'ai encore une question :
Actuellement, j'obtiens des valeurs entre -127 et +127 sur chaque axe.
Est-ce que toutes les souris compatible avec le MSX renvoient des valeurs dans cette même plage ?


On est toujours ignorant avant de savoir.
Github    
TurboSEB Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 08/08/2010 à 20h57

Messages: 5492

Le 15/08/2022 à 15h21
J'y connais rien en programmation pour éclaircir, mais un différentiel de -127 a +127 soit 255 ça me parle un peu, j'ai souvent vue ce chiffre.
Conversion Analogique Digital
Une pile ?
Peut-être est-ce du à la roue codeuse qui a une certaine "définition", genre 127 trous
Et -255 a +255 ça rentre plus dans la pile !? Edité par TurboSEB Le 15/08/2022 à 15h53



MSX 1&2 + Moniteurs+divers (environ 0.70Tonnes)
   
aoineko Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/01/2011 à 21h17

Messages: 2184

Le 15/08/2022 à 16h04
La valeur est codé sur 8 bits, donc la plage maximale est bien [-127:127].
Par contre, rien n'empêcherait les périphériques de renvoyer une valeur inférieur (dans l'intervalle [-31:31] par ex.).
Ca pourrait se justifier notamment par une gestion de la sensibilité.
Mais je ne sais pas si ça existait sur les souris MSX.


On est toujours ignorant avant de savoir.
Github    
Bastion Rebel Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 21/09/2013 à 07h42

Messages: 1369

Le 15/08/2022 à 17h35
je dis peut etre une conne...e mais -127/+127 se sont des decalages relatif par rapport a la derniere coordonnées donc faire un decalage de 127 c'est monstrueux !!

c'est pour cela que la souris au demarrage est souvent au centre de l'ecran pour ne pas partir avec des coordonnées negative !!


TURBO-R FS-A1ST 512/128ko MSX2+ NMS 8250 F4 /Fix Audio /Ram 1/4Mb VDP9958 VRAM 192ko 2FDD SANYO WAVY PHC35J MSX2 NMS 8280 Ram 4Mb VDP9938 VRAM 192ko 2FDD NMS 8250 128/128ko 2FDD VG8235/39 128/128ko 1FDD SONY HB-F700D MSX1 MC810 32/16k VG 8020 64k HB75F 64k HX-22 64k RS232/ CX5M 32k HB501F EXT : My Exp 4X/[b] MegaFlashSCC 512ko/BERT R2/BEER CF/SUNRISE 2CF/FUNRICE V2.01/MAXIOL/MEGASCSI HDD-CD/SDMSX 1SD/FMPAC SRAM/NMS1205+1160/RS 232 Harukaze/GR8NET/DOS2/ HOMER V2 RAM512ko/Floppy Pack/MAXduino/ROM1664/FM Pak /GR8NET /AMIGA/ PC/ RaspB Pi(B) / ARDUINO
E-mail    
aoineko Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/01/2011 à 21h17

Messages: 2184

Le 15/08/2022 à 19h08
Bastion Rebel :
je dis peut etre une conne...e mais -127/+127 se sont des decalages relatif par rapport a la derniere coordonnées donc faire un decalage de 127 c'est monstrueux !!

Oui, je n'arrive à -127 ou +127 qu'en faisant de grands mouvements sur ma table avec la souris (d'ailleurs Madame me regarde bizarrement :fou).

C'est plus pour savoir si toutes les souris MSX utilisent le même intervalle de valeurs.
Pour le moment, je ne test que via OpenMSX et ma souris PC... donc je sais pas si c'est représentatif du vrai matériel MSX.

En tout cas, j'ai fini la gestion de la souris (j'ai ajouté une gestion de la sensibilité software car j'imagine que les souris de l'époque ne le géré pas coté hardware).

Il me reste à me pencher sur la détection des périphériques branchés sur le General Purpose port (aussi connu sous le nom de Port joystick ^^).


On est toujours ignorant avant de savoir.
Github    
Bastion Rebel Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : Shoutbox

Inscrit le : 21/09/2013 à 07h42

Messages: 1369

Le 15/08/2022 à 20h15
pour info aoineko c'est parti d'ici la fin de la semaine si tous va bien ... ;) ;) ;)


TURBO-R FS-A1ST 512/128ko MSX2+ NMS 8250 F4 /Fix Audio /Ram 1/4Mb VDP9958 VRAM 192ko 2FDD SANYO WAVY PHC35J MSX2 NMS 8280 Ram 4Mb VDP9938 VRAM 192ko 2FDD NMS 8250 128/128ko 2FDD VG8235/39 128/128ko 1FDD SONY HB-F700D MSX1 MC810 32/16k VG 8020 64k HB75F 64k HX-22 64k RS232/ CX5M 32k HB501F EXT : My Exp 4X/[b] MegaFlashSCC 512ko/BERT R2/BEER CF/SUNRISE 2CF/FUNRICE V2.01/MAXIOL/MEGASCSI HDD-CD/SDMSX 1SD/FMPAC SRAM/NMS1205+1160/RS 232 Harukaze/GR8NET/DOS2/ HOMER V2 RAM512ko/Floppy Pack/MAXduino/ROM1664/FM Pak /GR8NET /AMIGA/ PC/ RaspB Pi(B) / ARDUINO
E-mail    
ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5300

Le 16/08/2022 à 08h01
aponeko :
Il me reste à me pencher sur la détection des périphériques branchés sur le General Purpose port (aussi connu sous le nom de Port joystick


A mon sens c'est quelque chose de totalement inutile, car ce n'est pas fiable.
Aucun logiciel officiel que j'ai utilisé de chez Sony ou bien Philips n'a jamais fait de détection automatique. Il a toujours été indiqué textuellement à l'utilisateur de brancher sa souris dans le port A ou B. De plus on voit très vite que la souris n'est pas dans le bon port car, quand c'est le cas le pointeur se barre vite fait dans les coins.

Après tu peux toujours l'intégrer, les routines sont déjà prêtes...


banniere-ericb59e
Site web    
aoineko Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/01/2011 à 21h17

Messages: 2184

Le 16/08/2022 à 09h00
J'sais pas si tu as vu sur MRC, mais il y a eu une grosse discussion au sujet du MSX-HID. Je pensais (comme d'autres à priori) qu'il s'agissait d'un protocole officiel. Il me semblait donc normal de l'implémenter dans MSXgl.

Au final, il s'agit d'une méthode empirique qui ne fonctionne que si le périphérique est en position neutre. Ce qui n'empêche pas que les résultats soient pertinents.

Je ne vais pas suivre le protocole MSX--HID à la lettre, mais ça me semble intéressant d'avoir quand même une fonction de détection. Au programmeur de l'utiliser ou pas, mais ça semble facile à faire et je vois quelques cas utiles (par ex., pour un jeu qui supporte plusieurs types de périphérique, ça peut permettre de sélectionner par défaut celui qui est branché).


On est toujours ignorant avant de savoir.
Github    
TurboSEB Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 08/08/2010 à 20h57

Messages: 5492

Le 16/08/2022 à 09h25
Questions que je me pose :

J'ai bien compris en voyant les differents liens, que le port A et le port B, ne sont pas identique, le port B est "orienté" souris.

- Le fait d'appuyer sur le bouton de la souris au démarrage, qui a priori est un simple interrupteur, comme sur une manette. Le fait de faire cette manipulation influ donc sur le bios et l'interprétation du port B et ce qui y est branché ou c'est interne à la souris ?

- si interpretation du bios au boot, serait elle identique si c'est une manette branché sur laquelle on appuie sur le bouton au boot ou y'a t'il une routine qui detect la souris?

-Est-ce équivalent sur le port À ?

- Est-ce équivalent sur un Msx1 ou seulement sur le Msx2 ?

C'est vrai que l'on trouve des souris surtout sur Msx2, mais le Trackball qui est une souris inverser, ça existait déjà sur Msx1.
Edité par TurboSEB Le 16/08/2022 à 09h28



MSX 1&2 + Moniteurs+divers (environ 0.70Tonnes)
   
aoineko Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/01/2011 à 21h17

Messages: 2184

Le 16/08/2022 à 09h45
D'après les infos récoltées ces derniers jours, il me semble que :
- Le BIOS du MSX1 ne gère pas du tout la souris/trackball.
- Le BIOS du MSX2 sait détecter un joystick, une souris et un trackball sur les deux ports génériques (appelés ports joysticks).
- Si on appuis sur le bouton gauche de la souris/trackball au démarrage, le BIOS (MSX2) va l'interpreter comme un joystick (il va convertir les coordonnées de déplacement en direction).


On est toujours ignorant avant de savoir.
Github    
ericb59 Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 17/04/2012 à 10h25

Messages: 5300

Le 16/08/2022 à 13h34
aoineko :
Je pensais (comme d'autres à priori) qu'il s'agissait d'un protocole officiel.

Les vieux qui ont un peut de bouteille dans le MSX savent que l'autodetection n'a jamais existé sur MSX (en son temps).


banniere-ericb59e
Site web    
TurboSEB Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++ Groupe : Shoutbox

Inscrit le : 08/08/2010 à 20h57

Messages: 5492

Le 16/08/2022 à 14h08
aoineko :

- Si on appuis sur le bouton gauche de la souris/trackball au démarrage, le BIOS (MSX2) va l'interpreter comme un joystick (il va convertir les coordonnées de déplacement en direction).


Je sais que c'est une solution trop facile pour toi et que ton but est une solution logiciel :oups.... mais en indiquant cette manipulation à faire à l'écran ou sur une notice, ça serait faisable :D

Tu sais... des fois... faut savoir être faignant dans la vie :lol Edité par TurboSEB Le 16/08/2022 à 16h37



MSX 1&2 + Moniteurs+divers (environ 0.70Tonnes)
   
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie