Page 1 sur 2
userlib Joypad (pour gérer plusieurs joysticks)
Publié : mar. 15/août/2006 18:07
par Dr. Dri
J'ai pas mal galéré pour trouver de la doc mais j'ai finalement réussi à m'en sortir avec DirectX 7 pour faire une lib qui gère plusieurs joysticks à la fois.
Pourquoi j'ai fait ca alors que Flype nous a déjà pondu une super lib qui fait la même chose ? Parce qu'elle ne reconnait pas tous mes joystick... en fait mes manettes de PS2 (avec adaptateur USB) sont reconnues mais considérées comme débranchées. DirectX n'a pas de problème de ce côté là...
La grande différence avec la lib de Flype c'est que la mienne ressemble davantage à la lib Joystick de PB... Avec des fonctions en plus (le minimum vital) mais beaucoup moins de possibilités que celles offertes par JoystickEx. Sinon, InitJoystick() échoue si aucun Joystick n'est branché,
ce n'est pas le cas d'InitJoypad()
Désormais la lib est disponible en téléchargement ^^
Signalez les bugs si vous en avez svp.

Joypad.zip
Dri
Publié : mar. 15/août/2006 18:35
par Backup
j'ai un trusmaster 360 modena
les 12 boutons possibles sont bien pris en charge
les 2 mini joystyick aussi
(c'est une manette PC qui ressemble a celle des playstations)
par contre j'ai jamais pu faire bouger le curseur rouge avec la lettre "Z"
dessous (celui de gauche)
cela ne corresponds a rien sur ma manette
sinon chapeau bas !! (tu gere le retour de force ? )
Publié : mar. 15/août/2006 18:50
par Dr. Dri
Dobro a écrit :tu gere le retour de force ?
non, pour la simple raison qe je n'y ai pas pensé... je vais me documenter là dessus
Dri
Publié : mer. 16/août/2006 4:28
par garzul
Testé avec un joystick Sidewinder :
http://www.comparestoreprices.co.uk/ima ... winder.jpg
Tout fonctionne nickel à par la molette

Par contre j'ai pas trop compris à quoi sert le champ Z/RZ & POV niveau joystick.
Publié : mer. 16/août/2006 8:57
par Dr. Dri
Dans une manette de PS2, les Axes Z et la Rotation sur Z correspondent respectivement à l'axe horizontal et vertical du joystick de droite (pour le joystick de gauche ce sont les axes X et Y)
Pour la molette il s'agit surement du "slider", je vais donc ajouter le support du slider... de toute manière ce n'étais qu'un programme de test qui semble bien fonctionner ^^
Dri
Publié : mer. 16/août/2006 10:20
par Flype
Oui çà fonctionne bien.
Je confirme pour ma manette Saitek qui ressemble à une manette PS1.
Par contre 'Z' ne réagit pas alors qu'avec le panneau de config ou JoystickEx çà fonctionne.
C'est super que tu ai fais çà Dri - via DirectX -
car je rappelle que JoystickEx utilise la winmm.lib de windows.
Or la winmm.lib ne sait pas gérer le retour de force.
Donc à mon avis ta lib devra savoir le faire à terme.
Par contre, tu dis que InitJoystick() ( cf. JoystickEx ) échoue si aucun joystick n'est branché. Si je comprends bien tu veux dire que si on démarre le jeu sans manette et qu'on la branche pendant que le jeu ai démarré alors elle sera pas reconnue en cours de route ?
Il doit bien y avoir un moyen de corriger çà... Je verrais un de ces 4...
Publié : mer. 16/août/2006 10:22
par Flype
j'espère simplement que tu fournira le source...
une telle lib doit pouvoir être maintenue dans la durée.
Publié : mer. 16/août/2006 10:56
par Dr. Dri
Flype a écrit :Par contre 'Z' ne réagit pas alors qu'avec le panneau de config ou JoystickEx çà fonctionne.
dans la doc de DirectX 8 ils disent que DirectX 7 peut reconnaître le Z en tant que "slider" selon les pilotes.
Flype a écrit :Par contre, tu dis que InitJoystick() ( cf. JoystickEx ) échoue si aucun joystick n'est branché. Si je comprends bien tu veux dire que si on démarre le jeu sans manette et qu'on la branche pendant que le jeu ai démarré alors elle sera pas reconnue en cours de route ?
Il doit bien y avoir un moyen de corriger çà... Je verrais un de ces 4...
Justement, je n'ai pas ce problème avec ma lib, dans la mesure où il est possible de lister à tout moment les joysticks branchés.
Flype a écrit :j'espère simplement que tu fournira le source...
une telle lib doit pouvoir être maintenue dans la durée.
Bien entendu, je l'ai mis en forme d'ailleurs et je l'ai compilée avec Tailbite (y'avait des trucs à modifier)
J'ai ajouté la gestion des "sliders" et de tous les "points de vue" (POV)
Y'a le "Joypad Viewer" qui fera office d'exemple
Y manque plus que le chm, je ferais ca ce soir en rentrant et ce sera dispo à télécharger...
Sinon pour le retour de force ca devrait pas poser de probleme (excepté le fait que les effets soient TRES variés)
J'attends qu'un ami rentre de vacances pour lui emprunter son volant et pouvoir faire mes tests moi-même. (je testerais aussi avec le vibreur de mes manettes de PS2)
Dri

Publié : mer. 16/août/2006 12:13
par wolfjeremy
Moi j'ai une manete xbox 360 sans fil, j'ai le fil usb de recharge, j'ai tester en le branchant sur l'usb de mon pc, mais il n'y a pas de driver sur le web pour la manete sans fil via le cordon de recharge, donc je sais pas la faire aller
Il n'y a pas moyen de l'utiliser sans les driver windows ?
Publié : jeu. 17/août/2006 2:59
par Dr. Dri
Sans pilote ton ordi ne peut pas "piloter" ton périphérique donc c'est normal que ca ne fonctionne pas...
Sinon j'ai enfin compilé la lib (y'avait encore des modifs à faire pour les params optionnels...) mais le fichier d'aide est buggé. Je regarderais plus tard ce qui ne va pas...
Je remercie ceux qui ont testé (z'ont pas tous posté ici =) et je demanderais à Flype de vérifier si avec sa manette l'axe Z est bien remplacé par un des deux sliders... Et pour garzul, m^me question, est-ce que ta molette est un des deux sliders ?
Prochaine étape, le retour de force ^^
[edit]
la lib n'était pas la bonne dans le zip, c'est corrigé (les params optionels ne marchaient pas, au moins pour JoypadPOV)
Dri

Publié : jeu. 17/août/2006 23:53
par Flype
alors, après test de la dernière lib :
déjà moi j'ai cette manette (enfin presque) :
sur celle ci :
Les boutons : tous OK
POV, c'est la croix (le pad)
Slider0, c'est la croix aussi.
Slider1, stick de gauche ? pas reconnu.
Slider2, stick de droite ? pas reconnu.
- JoypadPOV(j) retourne :
-1
000
045
090
135
180
225
270
315
- JoypadSlider(j, 0) retourne :
-1
00000
04500
09000
13500
18000
22500
27000
31500
- JoypadSlider(j, 1) :
toujours -1.
Publié : ven. 18/août/2006 0:50
par Dr. Dri
merci pour tes infos, je pensais pas que les sliders aussi retournaient des valeurs en degrés * 100, je corrigerais la fonction et la doc
ton axe z manquant correspond donc bien à un slider ?
sinon tu as testés les rotations sur X Y Z ?
de mon côté j'ai arrangé le fonctionnement interne de la lib (ca change rien du tout à l'utilisation). au lieu de lister les joypads avec une liste chainée, je les liste avec un tableau (plus de problème d'élément courant, risqué avec les threads... et aussi plus rapide d'accès ^^)
j'ai regardé pour le retour de force et franchement ca ne va pas être simple à gérer... enfin bon je ne désespère pas pour si peu
Dri
Publié : jeu. 24/août/2006 10:18
par Anonyme
Mon post est inutile, mais je tiens à t'encourager, car j'aimerais beaucoup avoir accès au retour de force

Publié : jeu. 24/août/2006 12:35
par wolfjeremy
Publié : mer. 08/nov./2006 12:58
par Anonyme
Est ce toujours d'actualitée ?
pour ma part , j'utilise ce joystick pour les jeux aériens :
Avec ta lib , le slider ne fonctionne pas ( bouton gris a gauche, à la base du joystick) , as tu regarder le force feedback ? j'ai essayé, mais je ne bite pas grand chose à ton code ^^
je demande cela , car, je fait mumuse avec le moteur de Tmyke, & ta lib, ca serais cool quelle se standardise non ?
@++