View Single Post
  #8  
Old 07-07-2013, 12:48 AM
BrassEm's Avatar
BrassEm BrassEm is offline
Approved Member
 
Join Date: Oct 2007
Location: Australia
Posts: 56
Default

Thanks, but have tried that already. The VRinsight yoke and Razer Nostromo alway hog first listings, shuffling everything up the order. Only by removing the drivers (And my settings for these devices) can I get the order as needed for 1946.

There needs to be some programming with the interface to get this problem sorted. Which is what I am hoping Artist is going to be doing. Or TD will address.

Came across this on another forum. For reference...

Quote:
Maybe I can shed some light on what's going on. First a little history.
The first implementation that was used to get joystick data was called
WinMM. It is very old, Windows 95 and previous. With the coming of DirectX
there was a new way of getting device data, DirectInput. DirectInput
supported the WinMM functions so that older games would still work. In WinMM
you could only have up to 16 devices at a time. Each device would get an ID
number and games would access controller data by this ID number. DirectInput
does not use these ID's unless the game is using the old WinMM interfaces.
It assigns each device it finds a unique GUID and applications get device
data by accessing this GUID. DirectInput will theoretically handle as many
devices as the system can physically handle. I have had 48 devices connected
to a system at once.
In Windows XP the decision was made to only expose to the user what
device was at ID1. This was due to the fact that ID configuration was one of
the biggest areas of confusion by users and most game developers had stopped
using WinMM. Game makers that used WinMM would just take whatever device was
at ID1 and almost always only supported one device. This is why we changed
the Game Controllers control to only expose the Preferred Device, the device
to be set at ID1. From what you wrote it seems you are under the impression
that the order the devices are listed on the main page of the control applet
is the ID order. This isn't the case. When DirectInput runs it calls a
function that finds all the devices attached to the system. Each discovered
device gets a GUID that it can use later to access the device. The devices
are listed in the control applet in the order the system happened to
discover them and has nothing to do with the devices WinMM ID#. When the
developers write the game it is entirely up to them when they stop asking
DirectInput for devices, or devices on ID#'s. Most stop after finding the
first device. Some will give you the option of choosing a single device in
the games options, and a few will allow you to use all the devices attached
to the system.
Now the games. Based on what you describe, and having not debugged the
games, this is what is most likely going on. The game NASCAR 2003 is quite
recent as the name implies. Chances are they are using the DirectInput
device interfaces. They are also making all controllers available to the
game and not quitting after finding the first one. Your other game, Sports
Car GT was released in April 1999. My guess is that they are also using the
DirectInput interfaces. This would explain why it doesn't matter what ID you
set the devices to you always get the shifter, you could only make the game
see the change if it was using WinMM, but unlike the NASCAR 2003 game they
are just enumerating and using the first device that DirectInput returns and
stopping. The only way this can be fixed is to see if you can get the system
to expose the device you want first, but even if you did that chances are
real good that you wouldn't have access to the shifter.

I know this doesn't fix you, but should at least explain what is happening.
Let me know if you have any questions abou this.

Joshua Smith
DirectInput and OpenGL Test Labs
Microsoft
-----
__________________
i7-3930K@3.2Ghz&H100liquid|ASUSP9X79Deluxe&GTX680/OC|32GBGSkillPC2400|2TBRaid0|Antec1200&1200WTruePo wer|ASUSGV278H-3D|SBX-FiT-Pro|TurtlebeachDPX21|Win7-64U|G-15&G-25|TrackIR5|MSFFB2|CHPROThrottle|SaitekPedals|VRin sightFMyoke-modified,MCPIIBoeingcombo&CDUII|GoFlightThrottle|A rduinoUno&MegaI/F's|SAASseat.

Last edited by BrassEm; 07-07-2013 at 01:04 AM. Reason: Added info.
Reply With Quote