-
Notifications
You must be signed in to change notification settings - Fork 22
Description
For now, my intention with creating this issue is to document the available DirectInput Escape commands. In the future, it would be good to have them implemented in wine to provide better user experience.
The DirectInput API provides a way to execute hardware specific commands. These are the IDirectInputDevice8::Escape and IDirectInputEffect::Escape methods.
To collect them (and many other DInput related information) I made a tool called DInput Detour, that's what I used to debug RaceRoom Racing Experience in issue #39 and discovered these commands.
So far, not so much effort went into figuring out what these do and what other commands are available. They are presented as RRRE used them.
If anyone wants to figure out the commands or create an experimental implementation in Wine, I’m definitely open to it.
Command 0x1004
Description
Get the current range of the wheel
The returned value is the current range of the wheel in degrees. 900° in the example.
Logs
sent pesc: dwSize: 40, dwCommand: 0x1004, lpvInBuffer: { null }, cbInBuffer 0, lpvOutBuffer: { 00 00 00 00 }, cbOutBuffer: 4
recvd pesc: dwSize: 40, dwCommand: 0x1004, lpvInBuffer: { null }, cbInBuffer 0, lpvOutBuffer: { 84 03 00 00 }, cbOutBuffer: 4
Command 0x1005
Description
Set the range of the wheel
Sent value is the range of the wheel in degrees. 450° in the example.
Logs
sent pesc: dwSize: 40, dwCommand: 0x1005, lpvInBuffer: { c2 01 00 00 }, cbInBuffer 4, lpvOutBuffer: { null }, cbOutBuffer: 0
recvd pesc: dwSize: 40, dwCommand: 0x1005, lpvInBuffer: { c2 01 00 00 }, cbInBuffer 4, lpvOutBuffer: { null }, cbOutBuffer: 0
Command 0x1009
Description
Get the maximum supported range of the wheel
The returned value is the maximum range in degrees supported by the wheel. 1080° in the example
Logs
sent pesc: dwSize: 40, dwCommand: 0x1009, lpvInBuffer: { null }, cbInBuffer 0, lpvOutBuffer: { 00 00 00 00 }, cbOutBuffer: 4
recvd pesc: dwSize: 40, dwCommand: 0x1009, lpvInBuffer: { null }, cbInBuffer 0, lpvOutBuffer: { 38 04 00 00 }, cbOutBuffer: 4
Command 0x1015
Description
Almost certain that this sets (at least) the global Based on the wheel's feeling in RRRE it's the damper force strength in percent. 40% in the example
Logs
sent pesc: dwSize: 40, dwCommand: 0x1015, lpvInBuffer: { null }, cbInBuffer 0, lpvOutBuffer: { 00 00 00 00 }, cbOutBuffer: 4
recvd pesc: dwSize: 40, dwCommand: 0x1015, lpvInBuffer: { null }, cbInBuffer 0, lpvOutBuffer: { 28 00 00 00 }, cbOutBuffer: 4
Command 0x1023
Description
No idea
Logs
sent pesc: dwSize: 40, dwCommand: 0x1023, lpvInBuffer: { null }, cbInBuffer 0, lpvOutBuffer: { null }, cbOutBuffer: 0
recvd pesc: dwSize: 40, dwCommand: 0x1023, lpvInBuffer: { null }, cbInBuffer 0, lpvOutBuffer: { null }, cbOutBuffer: 0
Command 0x101f
Description
No clue, maybe some sort of status information
Logs
sent pesc: dwSize: 40, dwCommand: 0x101f, lpvInBuffer: { null }, cbInBuffer 0, lpvOutBuffer: { 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 }, cbOutBuffer: 20
recvd pesc: dwSize: 40, dwCommand: 0x101f, lpvInBuffer: { null }, cbInBuffer 0, lpvOutBuffer: { 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 }, cbOutBuffer: 20