Qemu USB plugin (formerly known as USBqemu-wheel)
#31
@avih yeah its a bug because the dinput handle isnt being shared correctly between the dialog and usb stuff, restarting pcsx2 after config should solve it for now
Reply

Sponsored links

#32
Tried the dinput version some more. Cool, no slowdowns last time Laugh
What the hell is wrong with raw input then??

But in enthusia, car is perpetually in 1st gear. I don't have a clutch pedal so maybe that is it.
Reply
#33
jackun, tried your latest release version too now, it does slow down more than the DI version (I get roughly about 100 fps with the DI version and 50-60 with your version). Also, my wheel does have L3/R3 and D-pad buttons, but your config doesn't let me config them (shown grayed out).

Also, initially it seemed the wheel was not aligned when I started playing. However, after I rotated the wheel to both sides, it seemed to have centered itself properly.

Any chance you two join forces? Smile
Reply
#34
1.7.0 branch? I just tested 1.7.0 to see if usb itself is causing slowdowns, but otherwise it seems there is no need for it. Old qemu code should be enough.
I'll profile the raw input api stuff some and if it sucks too much i think i'll just convert it to use a hidden window and message pump.

Driving Force doesn't have L3/R3? Googled some and Pro seems to have? Have to look at the usb descriptors again. Also only had GT4 to test Tongue

I have been thinking about what to about the d-pad, 'cause rawinput can have only one input currently and momo doesn't have a d-pad. Window messages' version can have N input devices though.
Reply
#35
The Driving force GT does have them. It was introduced together with GT5 prolog, and is the successor of the DFP.

I got the slowdowns with the release version from 3 days ago (currently it's the latest/only dll) here: https://github.com/jackun/USBqemu-wheel/...er/Release
Reply
#36
@avih, thanks for testing! The initial calibration movements are built into the PS2 games and aren't perfect. It depends on initial wheel position and degrees your wheel is set to in control panel. I think it expects centered/200*. I remember this happening on the PS2 too along with subsequent reboots. Running the wheel full left/right usually fixes it.

@jackun, having the readfile/writefile in the same thread as tokenin/tokenout will cause slowdowns. readfile/writefile should have their own thread because they have a waitforsingleobject which might screw with the USBasync, i have had some issues with them hanging in the past anyway.


nothing wrong with rawinput, just need to share the memory between 2 threads, or make sure it doesnt need to wait like with DINPUT.

I would prefer raw passthrough because then GT4 will use extra features (900 degrees+better input resolution) on my logitech wheels without much reverse engineering. That and linux support (PS2 wheels only) might be the only advantage.

I did manage to enable these features with DINPUT, but there was some commands during calibration that weren't parsed and my wheel stayed pegged to one side after initial calibration.
Then, in-game I was able to drive with 900 degrees mode and the FFB fixed itself once on track, but i did not think it was good enough for release.

also there is no clutch support on PS2.. so only X/Y/RZ are usable.

Enthusia has a clutch BUTTON (L2), it is a button only; setting to pressure sensitive (TRIANGLE) with LilyPad it still behaves like digital button.

GT4 has none, but some say the handbrake acts like one if you time it right



I ended up leaving it as DrivingForce descriptor.

This is what the force packet is. Very simple ConstantForce is all that is used by GT4/Enthusia. The rest is feature toggle commands that I ignore.
Code:
struct constantforce_data
{
    uint8_t reportid : 8; //17 or 19?  17 is constantforce
    uint8_t index : 8; //0-255  controller id? always 8
    uint8_t magnitude: 8; //0-255  127 is no torque
    uint8_t pad: 8; //always 128 ??
};
constantforce_data cfd={0};
Reply
#37
@Racer_s, the not-calibrated thing didn't happen with your version, only with jackun's version, but maybe it also happens with your version and I was just lucky to have the wheel centered when I started. Also, I couldn't set the degrees dropdown to anything with your version - it starts empty, and when I choose e.g. 200 deg (or any other value), it shows for a split second, then returns to empty.

Also, how does the DI version work? do you interpret the logitech commands (both ways) and translate them yourself to/from DI?


@jackun, your config dialog kept crashing pcsx2 whenever I pressed the OK button. I was trying to config all the axes and buttons. Also, the DF-GT wheel is backward compatible with the DFP, and GT4 uses it like a DFP with all its features. Does your version pass-through the wheel even if your code doesn't detect a "proper" DFP wheel (the port drop-down list shows "Driving Force GT")?

Also, with your version, I wasn't able to use any d-pad-up button (defined in Lilypad to use KB) - like the wheel or something else was blocking the PS2 from registering the up button, while the DI version both allowed Lilypad KB to be used, and also allowed defining the buttons on the wheel, and both worked.
Reply
#38
Also, just noticed that with the DI version, FF doesn't work with GT3. With jackun's version the wheel does test/move when loading GT3 (probably indicating that FF will work - this doesn't happen with the DI version), however, since I'm unable to configure any buttons with this version, and it also somehow blocks lilypad, I wasn't able to start a game to actually try it.

The crash after trying to setup the buttons is probably easily fixed - maybe it's related to more buttons than expected on the wheel? though I still haven't looked at the code.
Reply
#39
(12-25-2013, 07:29 AM)avih Wrote: @Racer_s, the not-calibrated thing didn't happen with your version, only with jackun's version, but maybe it also happens with your version and I was just lucky to have the wheel centered when I started.

ReadFile/ReadWrite is probably messing with timings.

(12-25-2013, 07:29 AM)avih Wrote: @jackun, your config dialog kept crashing pcsx2 whenever I pressed the OK button.

... was blocking the PS2 from registering the up button...

Maybe file permission error? It should be writing to ini then. Max buttons is 32, but 16 mapped buttons is currently saved (for testing, to reduce clutter in ini).
Hmm, i think it is a rogue axis somewhere (Y probably always giving 128 value or d-pad data is unaligned). If you can, try thet bitfieldtest app and log it file. http://forums.pcsx2.net/Thread-Qemu-USB-...#pid335246


Atleast some FFB commands applied to my MOMO wheel: http://wiibrew.org/wiki/Logitech_USB_steering_wheel
Reply
#40
Quote: and it also somehow blocks lilypad,

Eh, ReadFile reads the buffer and Raw Input API doesn't get anything then aka no WM_INPUT event.

E: hmm maybe not...
Reply




Users browsing this thread: 5 Guest(s)