samuelgr/Xidi

V-Rally: Multiplayer Championship Edition won't detect the controller

Closed this issue · 8 comments

Furthermore, the game won't launch with Hookshot.

Xidi v4.0.0, Windows 10 21H1 x64, 8Bitdo SN30 Pro+

Xidi_DInput_VRdirectx.exe_7544.log
Xidi_WinMM__HookshotLauncher_VRdirectx.exe_8084.log
Xidi_HookModule__HookshotLauncher_VRdirectx.exe_8084.log

It doesn't look like this game needs Hookshot. What happens if you use the DInput (not DInput8 and not WinMM) form of Xidi by itself?

No detection.
Xidi_DInput_VRdirectx.exe_5672.log

Also without Xidi this game detects triggers as analogs (Throttle Up & Throttle Down).

In the log I see lines like this:

[06/12/2022 00:07:57] [I] Invoked function Xidi::VirtualDirectInputDevice<0>::SetProperty() on Xidi virtual controller 1, result = 0x80004001, property = DIPROP_AUTOCENTER, value = { dwData = 1 }.

Right after that the game bails on the specific virtual controller in question and moves to the next one. The game is trying to enable autocentering (DIPROP_AUTOCENTER being set to a value of DIPROPAUTOCENTER_ON, which maps to 1), and Xidi is rejecting it with code 0x80004001 (which maps to DIERR_UNSUPPORTED).

I suspect that the fix for this, at least in part, is to make Xidi silently support these types properties even if Xidi doesn't actually use them for anything.

Please give this development version a try. It contains e14bd44 which should fix the issue, assuming its root cause is related to the autocenter property. If the problem is not resolved please post the log obtained from this development version.

Xidi-v4.0.2-dev.1.0+e14bd446.zip

It certainly got further along this time now that the autocenter property is "supported" by Xidi. In any event, there were a few other game-specific issues (bugs in the game's code, even) that were preventing the Xidi virtual controller from working:

  • The game tries to poll virtual controllers, even though they don't require polling. Normally games should accept the documented return code DI_NOEFFECT as a way of indicating success, but this particular game insists on DI_OK. Since polling is a no-op, 13523a2 changes DI_NOEFFECT to DI_OK for polling attempts.

  • Even without Xidi, the game has issues getting in-game input from the correct controller when multiple controllers are plugged in. Since Xidi currently always presents 4 controllers to the game, naturally this presents a problem. This is an implementation issue with the game, not a bug in Xidi. Nevertheless, 8d3357c adds a workaround.

Please give this revised development version a try and use the following as your Xidi.ini configuration file.

[Workarounds]
MaxVirtualControllerCount = 1

Xidi-v4.0.2-dev.4.0+8d3357c5.zip

Thanks for fixing this issue!

VRally

Fixed in v4.0.2 but please use this configuration file to invoke the workarounds needed to make Xidi work with this game.