xbox 360 emulation with logitech cordless and dinput joy disable
Stefan Dösinger
stefandoesinger at gmx.at
Wed Jun 13 10:52:03 CDT 2012
Hi,
The patch needs a few improvements before it can be accepted into Wine. I
can't comment on the dinput / xinput specifics of the patch, so this is a non-
exhaustive list of general suggestions.
Concerning the big picture, this patch needs a few discussions about
xinput.dll design. There have been some discussions about that in the past,
and I hope that some dinput devs can help out.
Am Dienstag, 12. Juni 2012, 23:48:53 schrieb Giovanni Ongaro:
> From: root <root at joe.(none)>
Please configure git correctly, see http://wiki.winehq.org/GitWine section
3.3.
Also consider using a non-root user, but that's your personal setup, so not
really my business.
> + if (getenv("LINIXFORCENOJOY") != NULL) return FALSE; /*JoeFix disable
joystick*/
The problem with dinput vs xinput conflicts should probably be solved in a
different manner. That aside, such configurations are usually done via
registry keys. Also comments like /* I changed this here */ are useless, the
git history stores this information anyway.
> + <...> //JoeFix DEAD ZONE
This is a C++ comment and not allowed in Wine. See
http://wiki.winehq.org/SubmittingPatches
> + fdJoy=open("/dev/input/js0",O_RDONLY | O_NONBLOCK);
Xinput.dll should not open joystick devices directy, and definitely not a
hardcoded one. I don't know if there's consensus about how xinput should be
implemented, but basing it on top of dinput might be a start.
A good start would be to write a few tests to test how Windows announces(or
doesn't announce) Xbox gamepads and other gamepads/joysticks to games. My
understanding is that xinput.dll only works for Xbox gamepads. Do those show
up in dinput on Windows?
> +#define DEAD_ZONE 4096
> ...
> + if (e.number == 4) {
> + if (e.value == 1) {
> + FIXME("TRIGGER LEFT PRESSED\n");
> + pState->Gamepad.bLeftTrigger=32767;
> + }
> + else {
> + pState->Gamepad.bLeftTrigger=0;
> + }
> ...
> +#define JOYMAX 30000
> +#define JOYMIN -30000
The hardcoded numbers look questionable. The 4 and 1 are probably specific to
the joystick, the 32767 might have a symbolic name like XINPUT_MAX or
something.
A part of this seems to be needed due to the attempt to emulate an xbox
gamepad with a different device. Personally I'm not opposed to doing that, and
you might need some device specific tricks to pull this off. However, this
needs a more structured approach than hardcoding the values needed for one
specific Logitech device in the code.
Best regards,
Stefan
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
URL: <http://www.winehq.org/pipermail/wine-devel/attachments/20120613/8c8d9794/attachment.pgp>
More information about the wine-devel
mailing list