Proton
Proton copied to clipboard
Richard Burns Rally
It isn't a Steam game, so I'm filing an official compatibility issue. The last Proton version FFB works (at least on my Logitech G29 wheel) is 6.3-8. However, that version has problem with an obscure dxvk bug that has been fixed since then . Newer Wine versions don't suffer from this, however Force Feedback effects are completely absent then. Wheel itself is recognized, just haptic feedback motors are not.
I would like to say this has been bugging me ever since i have switched to linux! Having the exact same issues, with proton 6.3-8 the ffb effects work well but after about 2 minutes most textures disappear (the weird dxvk bug). With newer versions this does not happen, but the ffb effects are totally gone. Like OP i can bind the wheel and the game notices it has force feedback capabilities (the ffb options menu unlocks in the controls menu), but the effects themselves are just not working. I am also using Logitech G29. I have not found a workaround for this.
+1 to the reports above. Using Latest wine or GE-Proton I do not have force feedback, even though it works with other proton games. I was not able to run the game with older wine versions.
UPDATE: seems all logitech wheels are affected. it is likely its possible due to registry problem
This sounds eerily familiar to BeamNG.drive's FFB issue which didn't work in proton past 6.3-8. Very recent Proton versions allow setting the update type to "Full" see https://github.com/ValveSoftware/Proton/issues/1237#issuecomment-1666583259 . I have no clue whether adjusting FFB output like this is even possible on RBR, I couldn't see a way to do it, however maybe it might lead us closer to a solution?
UPDATE: seems all logitech wheels are affected. it is likely its possible due to registry problem
What registry problem?
I don't know, reportedly there are some steering wheels that have problems even on Windows. RSF provides registry fixes for them: registry.zip
I can only guess that doesn't apply with wine since that doesn't exist in the registry on older wine either. Do those registry keys tell dinput what effects the device is capable of?
I have a hunch that it might be something to do with no axis's being reported to the game. If you open up the ffb tool fedit.exe it can't find any axis on newer versions of wine.
Is the new dinput backend for wine SDL? Does anyone know a way to see how SDL reports the axis and how to change it?
As a little tip: You can update the dxvk version used by proton. I've just copied and overwrite all files from
steamapps/common/Proton 7.0/dist/lib/wine/dxvk/ and
steamapps/common/Proton 7.0/dist/lib64/wine/dxvk/
to thier respective places in steamapps/common/Proton 6.3/
Now FFB works and I saw no trees disappear. Thanks for this issue report.
@AlexanderWKoenig What version of RSF (if any) are you running? The latest one 1.44.9 seems to have a page fault for me in Proton 6.3 . If I use a newer proton it will launch, however FFB is not working.
Click to expand
wineserver: using server-side synchronization.
wine: RLIMIT_NICE is <= 20, unable to use setpriority safely
004c:fixme:virtual:NtQueryVirtualMemory (0xffffffffffffffff,0x229880000,info_class=1000,0x229887008,8,(nil)) Unknown information class
004c:err:ntoskrnl:ZwLoadDriver failed to create driver L"\\Registry\\Machine\\System\\CurrentControlSet\\Services\\nsiproxy": c0000003
0034:fixme:service:scmdatabase_autostart_services Auto-start service L"nsiproxy" failed to start: 87
0188:fixme:heap:GetNumaHighestNodeNumber semi-stub: 00000000006BEFD8
wine: Call from 000000007BC34538 to unimplemented function KERNEL32.dll.GetProcessGroupAffinity, aborting
wine: Unhandled page fault on read access to 000000000000000C at address 0000000001185B94 (thread 0188), starting debugger...
Unhandled exception: page fault on read access to 0x0000000c in 64-bit code (0x0000000001185b94).
Register dump:
rip:0000000001185b94 rsp:00000000006bd170 rbp:00000000006befa0 eflags:00010202 ( R- -- I - - - )
rax:00000000003b0230 rbx:00000000006bd1c0 rcx:0000000000000130 rdx:0000000000000000
rsi:00000000006bee70 rdi:00000000006bdbb0 r8:00000000000003df r9:0000000019930520 r10:0000000000000005
r11:00000000006bd440 r12:0000000000000000 r13:00000000006bd2e8 r14:00000000006befa0 r15:00000000006bdd18
Stack dump:
0x00000000006bd170: 00000000006bdd18 00000000006befa0
0x00000000006bd180: 0000000001285380 000000007b0724d7
0x00000000006bd190: 00000000006bf030 0000000001377ce3
0x00000000006bd1a0: 0000000000000004 00000000006bd470
0x00000000006bd1b0: 00000000006bee70 00000000015b7f20
0x00000000006bd1c0: 0000000000000000 0000000001283ec0
0x00000000006bd1d0: 0000000000000000 00000000012a22aa
0x00000000006bd1e0: 0000000000000000 00000000015b7f20
0x00000000006bd1f0: 00000000006bdbb0 0000000001283e01
0x00000000006bd200: 00000000006bd2e8 00000000006bee70
0x00000000006bd210: 00000000006bdd18 00000000006bd470
0x00000000006bd220: 00000000006be970 0000000001286350
Backtrace:
=>0 0x0000000001185b94 EntryPoint+0xffffffffffffffff() in coreclr (0x00000000006befa0)
1 0x0000000001377ce3 EntryPoint+0xf6262() in coreclr (0x00000000006befa0)
2 0x00000000012a22aa EntryPoint+0x20829() in coreclr (0x00000000006befa0)
3 0x0000000001286350 EntryPoint+0x48cf() in coreclr (0x00000000006bd470)
4 0x0000000001285495 EntryPoint+0x3a14() in coreclr (0x00000000006bd470)
5 0x000000007bc58379 EntryPoint+0xffffffffffffffff() in ntdll (0x00000000006bd470)
6 0x00000000011adf26 EntryPoint+0xffffffffffffffff() in coreclr (0x00000000006bf331)
7 0x000000000125350f EntryPoint+0xffffffffffffffff() in coreclr (0x00000000006bf331)
8 0x00000000012534a5 EntryPoint+0xffffffffffffffff() in coreclr (0x00000000006bf331)
9 0x00000000012533f8 EntryPoint+0xffffffffffffffff() in coreclr (0x00000000006bf331)
10 0x000000000126542a EntryPoint+0xffffffffffffffff() in coreclr (0x00000000006bf331)
11 0x0000000000cb3fa0 EntryPoint+0xffffffffffffffff() in hostpolicy (0x00000000006bf480)
12 0x0000000000cc8878 EntryPoint+0xffffffffffffffff() in hostpolicy (0x00000000006bf7a9)
13 0x0000000000cca6ef EntryPoint+0xffffffffffffffff() in hostpolicy (0x00000000006bf7a9)
14 0x000000018000b720 EntryPoint+0xfffd0def() in hostfxr (0x00000000006bf7a9)
15 0x000000018000e39a EntryPoint+0xfffd3a69() in hostfxr (0x00000000006bf8c9)
16 0x00000001800108d6 EntryPoint+0xfffd5fa5() in hostfxr (0x0000000000000001)
17 0x000000018000ea04 EntryPoint+0xfffd40d3() in hostfxr (0x00000000006bfab1)
18 0x0000000180008473 EntryPoint+0xfffcdb42() in hostfxr (0x0000000000000001)
19 0x0000000140012a80 in rsf_launcher (+0x12a7f) (0x00000000006bfd00)
20 0x0000000140012dfb in rsf_launcher (+0x12dfa) (0x0000000000000001)
21 0x00000001400142a8 in rsf_launcher (+0x142a7) (0x0000000000000000)
22 0x000000007b62c9a9 EntryPoint+0xffffffffffffffff() in kernel32 (0x0000000000000000)
23 0x000000007bc5e5f3 EntryPoint+0xffffffffffffffff() in ntdll (0x0000000000000000)
0x0000000001185b94 EntryPoint+0xffffffffffffffff in coreclr: movl 0x000000000000000c(%rdx),%eax
Modules:
Module Address Debug info Name (36 modules)
PE cb0000- d14000 Export hostpolicy
PE 1120000- 1618000 Export coreclr
PE 7b000000- 7b0d7000 Deferred kernelbase
PE 7b600000- 7b812000 Export kernel32
PE 7bc00000- 7bc9e000 Export ntdll
PE 140000000- 14004d000 Export rsf_launcher
PE 180000000- 180060000 Export hostfxr
PE 1c8db0000- 1c8e3d000 Deferred msvcrt
PE 1cd860000- 1cd868000 Deferred api-ms-win-crt-utility-l1-1-0
PE 1d97a0000- 1d97a7000 Deferred api-ms-win-core-fibers-l1-1-1
PE 21a7e0000- 21a855000 Deferred setupapi
PE 231ae0000- 231b62000 Deferred rpcrt4
PE 23d820000- 23da47000 Deferred user32
PE 241850000- 241857000 Deferred api-ms-win-crt-environment-l1-1-0
PE 262250000- 262259000 Deferred api-ms-win-crt-runtime-l1-1-0
PE 26b4c0000- 26b642000 Deferred gdi32
PE 2739c0000- 273af6000 Deferred oleaut32
PE 28ba60000- 28ba67000 Deferred api-ms-win-crt-time-l1-1-0
PE 2e3540000- 2e3591000 Deferred shlwapi
PE 2e8f10000- 2e9028000 Deferred ole32
PE 2f1fa0000- 2f1fad000 Deferred version
PE 30a2c0000- 30a2c9000 Deferred api-ms-win-crt-stdio-l1-1-0
PE 30c980000- 30c988000 Deferred api-ms-win-core-synch-l1-2-0
PE 3126f0000- 312709000 Deferred shcore
PE 327020000- 327072000 Deferred combase
PE 32a700000- 32a729000 Deferred sechost
PE 330260000- 33029f000 Deferred advapi32
PE 33ea00000- 33ea09000 Deferred api-ms-win-crt-string-l1-1-0
PE 344840000- 344848000 Deferred api-ms-win-crt-filesystem-l1-1-0
PE 350a30000- 350a39000 Deferred api-ms-win-crt-convert-l1-1-0
PE 355100000- 355107000 Deferred api-ms-win-crt-locale-l1-1-0
PE 360a80000- 360a8a000 Deferred api-ms-win-crt-math-l1-1-0
PE 39b510000- 39b518000 Deferred api-ms-win-crt-heap-l1-1-0
PE 3af670000- 3af728000 Deferred ucrtbase
PE 3afd00000- 3afd1a000 Deferred imm32
PE 7f0ede420000- 7f0edecf7000 Deferred shell32
Threads:
process tid prio (all id:s are in hex)
00000030 services.exe
00000034 0
00000038 0
00000044 0
00000048 0
00000060 0
00000114 0
0000012c 0
0000015c 0
00000160 0
0000003c winedevice.exe
00000040 0
0000004c 0
00000050 0
00000054 0
00000058 winedevice.exe
0000005c 0
00000064 0
00000068 0
0000006c 0
00000070 0
00000074 0
00000078 0
0000007c 0
00000080 0
00000084 0
00000088 0
0000008c 0
00000090 0
00000094 0
00000098 0
0000009c 0
000000a0 0
000000a4 0
000000a8 0
000000ac 0
000000b0 0
000000b4 0
000000b8 0
000000bc 0
000000c0 0
000000c4 0
000000c8 0
000000cc 0
000000d0 0
000000d4 0
000000d8 0
000000dc 0
000000e0 0
000000e4 0
000000e8 0
000000ec 0
000000f0 0
000000f4 0
000000f8 0
000000fc 0
00000100 0
00000104 0
00000108 0
0000010c plugplay.exe
00000110 0
00000118 0
0000011c 0
00000120 0
00000124 svchost.exe
00000128 0
00000130 0
00000134 0
00000138 tabtip.exe
0000013c 0
0000017c 0
00000180 0
00000140 explorer.exe
00000144 0
00000148 0
0000014c 0
00000154 rpcss.exe
00000158 0
00000164 0
00000168 0
0000016c 0
00000170 0
00000174 0
00000178 0
00000184 (D) C:\games\Richard Burns Rally\rsf_launcher\RSF_Launcher.exe
00000188 0 <==
0000019c 0
0000018c conhost.exe
00000190 0
System information:
Wine build: wine-6.3
Platform: x86_64
Version: Windows 10
Host system: Linux
Host version: 6.1.64-1-lts
@kevenwyld I used this lutris install script as a base for what to do: https://lutris.net/games/install/23410/view
So I should have 1.02 Patch + FixUps Plugin. The RBR Version I use was from archive.org: https://archive.org/details/richardburnsrally-pc-redump
Tested it yesterday and still works fine. I had to select "detect devices" in the option menu to show the force feedback option.
I am facing the same issue with FFB not working in newer Proton versions. I am playing the vanilla game v1.02 with no mods installed.
It's probably an upstream Wine issue, not Proton-specific, since I primarily use Lutris and the following versions I tried were affected:
- lutris-7.2-2
- Wine 8 from official Debian 12 repos (8.0~repack-4)
- lutris-GE-Proton8-15
- wine-ge-8-22
- wine-ge-8-25
With Wine v<7 (lutris-6.14-4) and DXVK v<2 (v1.10.3, v2 doesn't work with older Wine versions) I am able to play the game with both working FFB (using G25 and the new-lg4ff kernel module) and trees not disappearing.
There's a new DirectInput joystick backend using the improved HID stack to communicate with winebus.sys and host devices. This backend supports force-feedback effects using the standard HID Physical Interface Device reports
In the wine 7 release notes, found at least some reports of grand prix legends no longer working, personally I tested only the rallysimfans release of RBR and also tried to edit the registry files to add my wheel , but only got crashes.
Games that loose FFB for me when going > version 7 are:
- Beam.ng
- Automobilista 1
Maybe the games affected are NOT using HID interfaces and this means the FFB advertisement is not reaching them / they cant enumerate any FFB capable device, no idea how to debug and report this unfortunately.
I'm having the same issue with Fanatec GT DD Pro wheel. Wheel works great with RBR except FFB. With proton below 7 the game doesn't start. I'm using RSF (rallysimfans) version of RBR. FFB works fine in Automobilista 2 and proton experimental.
I was able to get RBR (RSF) working in proton experimental and other proton runners like GE-Proton with force feedback by replacing dinput8.dll with dinput8.dll.so. I learned a lot in the process of figuring that out, and it's quite complicated, but I'll try to summarize. I have detailed but pretty rough, and definitely not comprehensive, instructions in this gist (see disclaimer below about me not knowing what I'm doing)
Basically, in older versions of proton, such as 6.3-8, a dinput8 dll was included with wine which was dynamically linked against your OS version of SDL among other things. This is indicated by the .soon the end. More info on this here. You can verify with ldd
[~/.s/r/s/c/Proton 6.3 ] > ldd ./dist/lib64/wine/dinput8.dll.so
linux-vdso.so.1 (0x00007fff22de6000)
libSDL2-2.0.so.0 => /usr/lib/libSDL2-2.0.so.0 (0x00007f0f4a02a000)
libdl.so.2 => /usr/lib/libdl.so.2 (0x00007f0f4a025000)
libm.so.6 => /usr/lib/libm.so.6 (0x00007f0f49f38000)
libc.so.6 => /usr/lib/libc.so.6 (0x00007f0f49d56000)
/usr/lib64/ld-linux-x86-64.so.2 (0x00007f0f4a2b0000)
[~/.s/r/s/c/Proton 6.3 ] > ldd ./dist/lib/wine/dinput8.dll.so
linux-gate.so.1 (0xf7fab000)
libSDL2-2.0.so.0 => /usr/lib32/libSDL2-2.0.so.0 (0xf7d13000)
libdl.so.2 => /usr/lib32/libdl.so.2 (0xf7d0e000)
libm.so.6 => /usr/lib32/libm.so.6 (0xf7c3a000)
libc.so.6 => /usr/lib32/libc.so.6 (0xf7a00000)
/usr/lib/ld-linux.so.2 (0xf7fad000)
Newer versions of wine/proton only include a native (windows) version of dinput8.dll (not dinput8.dll.so) . I have no clue what the difference is exactly, and I suspect it has more to do with what SDL libraries it depends on than anything else. So this is only a workaround and a thought experiment really...
I grabbed the old version of dinput8.dll.so, dropped it into a modern version of proton, deleted the native versions, and created an override. This made FFB work for me. It might work for other people too but I make no promises because I have no idea what I'm doing.
Anyway, as before, I hope this helps someone narrow down the problem.
I can confirm that using proton 6.3 and manually updating the dxvk dlls works perfectly. I hope this bug is resolved since playing through lutris I can track time, which I like to do. I wasn't able to get an older version of wine to work through lutris.
PS: can also confirm that @kevenwyld 's fix works, and I now have FFB working while playing through lutris. It does involve modifying the runner installation so I selected a wine version that I wasn't using for anything else and dedicated to it.
I can confirm that using proton 6.3 and manually updating the dxvk dlls works perfectly. I hope this bug is resolved since playing through lutris I can track time, which I like to do. I wasn't able to get an older version of wine to work through lutris.
PS: can also confirm that @kevenwyld 's fix works, and I now have FFB working while playing through lutris. It does involve modifying the runner installation so I selected a wine version that I wasn't using for anything else and dedicated to it.
If you rename the folder of that Lutris Runner to something like RBRWine Lutris will pick it up and you can reinstall the other version if you ever need it.
The game tries to change the number of axes of an event. Disallowed by the API but Windows seems to simply ignore this request whereas in Wine it results in the method call failing.
There's longer explanation in the upstream Wine bug 52714 with an attempted workaround/fix attached. The patch applies to Proton too (tested against experimental)
Autocenter is still broken in current Proton but works in upstream Wine. Hopefully it will work again with Proton 9.
Awesome. I tried the patch today. Works great.
Good to hear it's very close to being fully sorted out. I won't be able to test it with Logitech wheel, since I have Thrustmaster TMX now, but I hope it will also work
Autocenter is still broken in current Proton but works in upstream Wine. Hopefully it will work again with Proton 9.
Since Proton 7 there are problems with the steering wheels that in 6 there were not and they have not done anything to solve them by Valve (to my knowledge). Apparently it is not an exclusive problem of this game. Semms that they touched something and since then there are problems.
If somebody wants to try I have compiled Wine 9.7 with the above mentioned patch and for me ffb is working (Thrustmaster T150RS).
Details ---> https://gitlab.com/as400l/wine-rbr
Thanks for this work! I don't understand why this patch is not included on the newest versions of Wine and Proton
@leillo1975 maybe we should reply to that winehq thread confirming that the patch works and for what wheel it works. I am going to do this now. Just remember that it may not work for in-game controller force feedback test. But it works on special stages.
This night I will try it, and then, if it works in my G29, I will post it on https://bugs.winehq.org/show_bug.cgi?id=52714
@leillo1975, ok thx. I just submitted my report there. Fingers crossed :)
Otherwise we will have to keep special Wine version for older games. As far as I know not only RBR is affected.
Thanks for this work! I don't understand why this patch is not included on the newest versions of Wine and Proton
I thought perhaps it was because no one was on the cc list for that bug but I posted on the other big FFB bug and no one has got back yet. They are probably just stretched a bit thin over there.
I wrote the patch in the upstream bug.
Thanks for testing the patch! A couple of points:
-
The type of steering wheel doesn't matter for this particular bug. Wine/Proton rejects the effect offhand and it is never played back by the hardware. There could of course be other, hardware dependent bugs still affecting the game.
-
Knowing if the patch breaks (or fixes) force feedback in other games would be helpful!
My knowledge of force feedback doesn't extend much beyond the "makes steering wheel go brrr" so I can't really push for the patch to be submitted as-is in either Wine or Proton. I'm hoping for a real developer to step in and provide a proper fix.
It works really great with this wine patched build. Thanks again!
@whizse - thanks for writing the patch. It really makes this game soooo much better :) I hope more people will test this in different games. Otherwise we will have to maintain separate branch of wine just for RBR. And compiling wine is a big PITA ! :)
@leillo1975 - thx for reporting !
Using hid-fanatec custom kernel module with a Fanatec CSL DD , RBR will now try to rip my arms of my torso. 😈
Not sure if I can launch steam games without a proper proton build , so unsure if other games will work.