Recherche wrapper XInput -> DirectInput

Un titre compliqué pour un besoin simple.
J’ai récemment fait l’acquisition d’un pad XBox 360 Wireless avec son petit récepteur PC et je dois dire que c’est de la belle ouvrage (sauf le D-Pad, mais on ne peux pas tout avoir).

Le pad fonctionne nickel avec les jeux prévus pour (Geometry Wars, Lost Planet, on parle de jeux PC toujours hein), par contre dès qu’ils s’agit de jeux plus anciens c’est la catastrophe: sticks droit et gauche intervertis dans Devil May Cry 3, stick droit et gachettes non reconnues dans GTA San Andreas… C’est rageant.

D’après ce que j’ai pu trouver sur les forums, ces problèmes sont dus à l’utilisations par le driver Microsoft de la nouvelle API XInput en lieu et place de DirectInput, API encore utilisée par la majorités des jeux PC. Et visiblement la compatibilité ascendante n’a pas l’air d’avoir été une préocupation majeure pour MS cette fois-ci.

Du coup je cherche un utilitaire qui serait capable de faire le pont entre ces deux API, histoire de pour voir utiliser mon pad sur autre chose que des portage de jeux XBox 360. :slight_smile:

Hmmm , j’ai souvent entendu parler de Joy2Key pour tout ce qui etait de trucs en rapport avec les joypads sur PC (notamment pour les bindings foireux de certains jeux). C’est une piste a creuser en attendant qu’un master es-pad 360 vienne livrer son secret de moine zen

En speed la, jettes un oeil sur xbcd :slight_smile:

Ravine> J’utilise déjà Joytokey pour les émulateurs par exemple, et il fait très bien le boulôt. Mais il ne peut mapper que sur le clavier ou la souris, il ne peux pas mapper un stick analogique sur un autre stick analogique.

Ana-I> XBCD est très exactement l’exemple de ce dont j’ai besoin. Sauf qu’il ne marche pas avec la version wireless du pad 360. :slight_smile:

Sur ce coup MS l’a joué à la Logitech: « comment gacher un excellent hardware avec des pilotes pourris ».

Arf, pas cool, j’ai dit ca un peu au pif, dommage que ca marche pas avec la version wireless :confused:

Je vois pas pourquoi ca marcherait pas avec la version wireless cela dit, pou windows c’est pareil. Ou alors leur wrappeur est ecrit bizzarement…

XBCD n’est pas un wrapper, c’est un pilote alternatif pour pad XBox 360 (qui permet entre autre de chosir “sur quoi” on mappe les sticks).
Une adaptation au wireless avait été tentée mais apparement les auteurs se sont cassé les dents dessus.

C’est possible de rediriger un les output d’un stick et des gachettes depuis XInput vers un input DirectInput via un petit programme XNA par exemple ? (pour faire vraiment un wrapper ce coup-ci)

Parce que autant lire l’état du stick je sais faire (merci l’API simplissime de XNA), autant “simuler” les inputs correspondants vers un programme DirectInput je ne sais pas du tout comment m’y prendre.

Ca doit etre effectivement possible, reste a voir comment faire, je jetterais un oeil demain.

hmmm, est ce que ceci t’aiderai ? http://sourceforge.net/projects/xnadirectinput/ (ou alors c’est l’inverse de ce que tu recherches ?)

Oui c’est exactement l’inverse. Mais ça peut être intéressant à regarder quand même, merci. :slight_smile:

Si tu as quelques skills C# et/ou XNA, tu peu toujours faire un programme qui en fonction de l’entrée de ton pad, va te faire des sendkeys ou un truc similaire plus globales (si ca existe au niveau de windows). Sachant que la v 1.1 de XNA avait un souci de focus et prenait en compte l’input pc meme si elle etait pas possesseuses du focus.

Ayant été dans la même situation que toi il y à quelque mois j’ai finalement trouvé Xpadder qui te permet de configurer tes boutons comme tu veux , en tout cas moi je n’ai pas encore trouver de jeu/programme qui m’ai résisté :slight_smile:

Malheureusement le problème n’est pas les boutons mais les sticks analogiques.
XPadder mappe aussi les sticks analogiques ?

Oui , de même que les gachettes ^^

Edit :Pour mapper le stick gauche sur le stick droit fait passer l’axe de X/Y à Rx/Ry

J’ai testé XPadder en profondeur. C’est vraiment très bien fait, ça remplace avantageusement Joytokey, mais ça ne permet pas de remapper les sticks. Donc ça ne change malheureusement rien à mon problème. :slight_smile:

XPadder transforme les input du pad en input clavier ou souris, mais pas en input DirectInput. Donc même si on peut mapper n’importe quel stick sur n’importe quelle touche clavier ou sur la souris, on perd complètement la partie analogique.
Encore une fois XPadder est très chouette (il affiche les inputs DirectInput et XInput en même temps, c’est très pratique), mais il n’est pas (encore ?) capable de simuler un autre pad. Chose que XBCD permet (mais lui c’est un driver et il ne marche pas en wireless).

Je suis vraiment dégoutté de voir à quel point Microsoft a bâclé l’écriture de ces drivers. Il suffirait de si peu pour que ce pads fonctionne correctement avec la plupart des jeux…

Bizarre … je suis pourtant quasi sur que tu peut faire ce que tu veux c’est dans le menu déroulant que je montre dans cette image il faut jouer sur le Rx/Ry

Enfin doué comme je suis j’ai peut être pas bien pigé ce que tu voulais faire ^^. T’as pas de pot quand même , le mien m’a jamais posé de problèmes …

J’ai bien essayé cette manip, mais ça ne modifie que l’axe en entrée.
Pour simplifier: je cherche à ce que les jeux “voient” mon pad 360 comme un pad DirectInput avec les sticks au bon endroit.
En passant par XPadder, le jeu ne “voit” en fait que des touches clavier ou une souris, jamais un pad.

Désolé … Bonne chance alors :slight_smile:

On peut raler et tout hein mais c’est pas baclé, c’est fait expres et c’est donc reflechi et intentionel… maintenant c’est pas a moi d’aller expliquer pourquoi si ca a pas deja ete fait ailleurs…

Oui vu que ça a l’air de ne pas être trop difficile techniquement (estimation a vue de pif, hein, je me trompe peut-être) je suppose qu’il y a eu une décision réfléchie derrière. Mais bon, je n’avait pas trop envie de tomber dans les accusations de « complot » et le MS-bashing.

<spéculations ON>
J’imagine que MS table sur le fait que le pad X360 est assez répandu sur PC et qu’en flinguant une partie de la compatibilité avec DirectInput ils forcent plus ou moins l’adoption de XInput (ce qui est bien sauf quand on est coincé pour les vieux jeux).
<spéculations OFF>

Tu dois savoir ça Glop: il est possible de simuler programatiquement (ailleurs qu’au niveau des drivers) un pad DirectInput ? Genre j’écoute un des sticks de mon pad et je le renvoie sur un autre stick d’un pad virtuel.
(et là en posant ma question je suis en train de me dire que probablement pas :slight_smile: )