Manettes de jeu analogiques.
15 sujets de 1 à 15 (sur un total de 15)
-
En lisant le code AROS, coté Poseidon, je remarque que les joysticks analogiques sont gérés… c’est à dire que les valeurs en X et Y sont données entre -128 et 127 et pas simplement des directions codées sur 4 bits.
La lowlevel.library devrait rendre des trucs du genre
0x2000YYXX souris YY= Y; XX= X
0x3000000D joysticks directions
0x4000000D paddles directions
0xe000YYXX joysticks analogiques YY= Y; XX = X.
or ce n’est pas le cas.
Quels jeux utilisent ces subtilités ?
Est-ce que le gameport.device est utilisé, si oui par quels jeux ?
Il s’agit d’une extension de Poseidon et documentée dans libraries/lowlevel_ext.h
Tu remarqueras que les vibrations sont également gérées.
Pour les jeux utilisant cette API analogique, il y a au moins Virtual Grand Prix 2 ainsi que certains jeux SDL (PowerSDL utilisant cette extension pour sa gestion des joysticks analogiques).
L’Amiga gèrant ces manettes depuis toujours, je me suis parfois posé la question : avec quels jeux peut-on les utilisées ?
Ho ho… ça sent la mise à jour ANAIIS avec le support des joysticks analogiques
Amiga 500+, 68010, 2MB chipram, 4MB fastram, IDE68k, HxC Floppy Emulator, Subway USB, Indivision ECS, Rom 3.9
PowerMac 3.5 MorphOS, G4 1.0GHz DP, 1 Go ram, Radeon 9600 128Mo mac, 22" 1680x1050
PowerMac 7.3 MorphOS, G5 2.3GHz DP, 2 Go ram, Radeon 9800 128Mo pc reflashee, 22" 1680x1050@Get27 Soit ça sent bon, soit tu lis dans mes pensées
Mais il y a encore un peu de boulot.
J’arrive à décoder ces satané HIDs, reste à savoir quoi en faire avec l’imput étriqué de l’Amiga.
Je suppose qu’il faut appeler le
SetJoyAttrs(port, TAG_slowmotor, valeur, TAG_DONE) ;
SetJoyAttrs(port, TAG_fastmotor, valeur, TAG_DONE) ;
SetJoyAttrs(port, TAG_motoroff, 0, TAG_DONE) ;
au bon moment ? (me souviens pas de tête le nom des tags )
Mais pour le rumble j’ai une intensité 0..255 et une durée 0..255 pour le moteur à gauche et pour le moteur à droite, soit 4 valeurs à fournir.
Comment convertir une vitesse en intensité/durée, le tout en deux tags ?
Les valeurs X et Y doivent-elles être recadrées entre -128..127 quand les données brutes sont 0..255, 127 étant le point 0 (je suppose que oui… sinon on peut pas trop diriger)
Je n’ai jamais réfléchi ou joué avec les vibrations mais j’imagine que la vitesse est directement liée à l’intensité. Quand à la durée, il me paraitrait logique que tu l’ignores…. puisque c’est l’utilisateur qui start/stop les moteurs. Après un start, ils tournent jusqu’au stop.
Oui aux autres questions.
Et je crois que BoulderDaesh utilise l’API vibration. Ca te fait au moins un truc 68k de test
J’ai testé ceci
http://aminet.net/package/game/jump/boulderdaesh
Ohohoh, je me retrouve en territoire connu d’il y a 29 ans!! (la mine aux diamants,… TO7!!)
Bien que multitâche, il ne semble pas utiliser la lowlevel.library
Par contre le clavier usb fonctionne, donc un jeu de plus compatible avec ANAIIS
D’autres jeux ?
Il faut peut être la lowlevel.library du paquet newlowlevel.lha
http://aminet.net/package/driver/input/NewLowLevel
étrange cette histoire…
Non pas besoin de la newlowlevel de Guido. Je crois qu’il l’a d’ailleurs plus ou moins abandonné. Je viens d’essayer et le jeu fonctionne avec la lowlevel.library de MorphOS et Poseidon.
Qu’essayes-tu de faire ? Ecrire ta propre lowlevel ? Installer un patch compatible avec celui de Poseidon ?
J’essaie de patcher SetJoyPortAttrs et ReadJoyPort pour pouvoir utiliser les spécificités décrites dans libraries/lowlevel_ext.h , donc effectivement comme Poseidon.
Pour les joysticks et gamepads donnant une direction + boutons ça fonctionne bien, mais je n’ai rien pour tester les analogiques (j’ai bien peur de m’être trompé dans les directions, bien que je prenne ces données comme pour les souris, je me retrouve avec une position centrale au repos variant de -1,0 ou +1)
Dans le dernier paquet ANAIIS
http://aminet.net/package/driver/other/anaiis
il y a dans le répertoire bin un programme lowlevel qui teste les souris, joysticks analogiques et tout le toutim. Le fait d’appuyer longtemps sur le bouton du joystick activera le ‘rumble’ de plus en plus intensément.
Il devrait arriver le paquet suivant avec le code source pour ceux que cela intéresse
http://aminet.net/package/driver/other/anaiis_lowlevel
mais apparemment le upload n’a pas marché
15 sujets de 1 à 15 (sur un total de 15)
- Vous devez être connecté pour répondre à ce sujet.
› Forums › AmigaOS, MorphOS et AROS › Développement › Manettes de jeu analogiques.