While working on FF for Heat, I was puzzled by the incredible amount of time
the MS wheel took to do force feedback (IIRC it was something like 10-20
milliseconds to update the wheel force) compared to less than one
millisecond for Logitech et al. The original (slow) MS wheel used the MIDI
port, to which I initially attributed the slowdown, but when I tested a USB
wheel and found it just as slow I was pretty amazed.
I posted a question to the DirectX group, and got a response a long time
later (well after we shipped) from someone in the MS DirectInput group (not
the Sidewinder group); it seems like the problem is that when you send a
force feedback command to a wheel, the DirectX interface is supposed to wait
for it to complete, which involves sending a USB packet to the wheel, and
then waiting for a reply...
The conjecture was that the Logitech drivers were being more clever and
perhaps spawning another thread to wait for the reply and let the computer
go off and do work while waiting... the MS guy said they were trying to add
an "asynchronous" call to DirectInput so that the game could just send a
command and not have to hang around for it's return. Perhaps the MS drivers
were sticking to the "letter of the law" of DirectInput, while Logitech was
playing "fast and loose", but who knows. It's possible that there is
something about the firmware for the MS device that requires the slow
interlocking access, but I really suspect that it could be fixed with
drivers.
In theory the games could "work around" this problem by using a seperate
thread for force feedback, but the problem is who knows how robust calling
DirectX from multiple threads will be--I think nobody wants to be the first
to use a particular code path, especially one that could expose all kinds of
*** synchronization problems in DirectX, just to speed up one steering
wheel which has already been "tarred and feathered" as a slow wheel. (I
think there was at least one other "slow" wheel but I forget which one it
was; definitely both Logitech and ACT labs had fast FF times circa a year
ago)
The next time I work on another PC product I may try the multi-threaded
approach if they haven't fixed their drivers by then. As I recall the MS
wheel had a pretty nice feel, and it would be a shame not to be able to
utilize it properly... but maybe in the mean time someone could get on the
Sidewinder driver guys to speed up the existing programs ;)
But anyways, a non-FF USB controller is _much_ faster than a gameport
device, unless the drivers are really broken. If you look up how the
gameport works on PC's, you will understand why! There are some dedicated
"digital" gameport cards that speed this up, but those are pretty uncommon
these days.
-Dave
> Thx all for your reply's....:-)
> Nice to know that we can get answers for our questions here...:)
> I'm glad the USB-thing was just a MS-annoyment....:-(
> I will take an extra look at the Guillemot thing and the LWFF....
> If I not just order a TSW2....i believe they will be present at:
> >> Next week I visit Cebit in Hannover/Germany...maybe I should take a
real
> >> look there for every wheel in the world...and become more confused...
> So I will get a close look and maybe "hands-on" there...
> --
> Med venlig hilsen / Best regards
> DK-2700 Bronshoj - Denmark