Skip to content

Instantly share code, notes, and snippets.

@kevenwyld
Last active December 20, 2023 05:50
Show Gist options
  • Save kevenwyld/17e45c8db5da9ead1c02cb1bee685a41 to your computer and use it in GitHub Desktop.
Save kevenwyld/17e45c8db5da9ead1c02cb1bee685a41 to your computer and use it in GitHub Desktop.
Richard Burns Rally with RallySimFans launcher on recent versions of wine

Below are instructions for using a proton runner directly, not inside Lutris or Bottles. Bottles appears to work the same way, but the instructions will be quite different. For example Bottles runners with the flatpak are in $HOME/.var/app/com.usebottles.bottles/data/bottles/runners and many other paths and dxvk packages differ.

  1. Obtain a copy of Proton-6.1-GE-2 from here https://github.com/GloriousEggroll/proton-ge-custom/releases/tag/6.1-GE-2

  2. Obtain a copy of GE-Proton8-25 from here https://github.com/GloriousEggroll/proton-ge-custom/releases/tag/GE-Proton8-25

    • This is the version I tested, probably not the latest version that will work.
    • Turns out VKd3d was split out into a separate package. Game/Launcher starts after GE-Proton7-35. As far as I was able to test RSF will require being run in vulkan mode in versions after this but I didn't extensively test this.
  3. Extract 6.1 to somewhere temporary, we only need to grab a couple of files out of it

  4. Extract 8-25 to somewhere persistent, we will use this as our persistent runner

  5. Copy Proton-6.1-GE-2/dist/lib/wine/dinput8.dll.so to GE-Proton8-25/files/lib/wine/i386-unix/dinput8.dll.so

  6. Copy Proton-6.1-GE-2/dist/lib64/wine/dinput8.dll.so to GE-Proton8-25/files/lib64/wine/x86_64-unix/dinput8.dll.so

  7. Remove GE-Proton8-25/files/lib64/wine/x86_64-windows/dinput8.dll AND GE-Proton8-25/files/lib/wine/i386-windows/dinput8.dll

    • Technically redundant but helps to avoid confusion when setting builtin library overrides, we don't want this one to ever be used over the dynamically linked one
    • There is more information about what .dll vs .dll.so means here. In short, dll.so means it is compiled like a dynamically linked Linux binary. You can run ldd on it just like you would any other binary on Linux. They also depend on other locally installed Linux libraries (see troubleshooting).
  8. Create a prefix somewhere like $HOME/RSF_RBR_wine

  9. Run (and also set up for the first time) the wineprefix. I chose to use a little script.

    • The SDL_VIDEODRIVER option is only necessary if you are on a wayland window manager (sway/hyprland)
    • gamescope is also a wayland window manager workaround.
    • NOTE: This script passes any command line argument to wine with no error checking
    #!/bin/bash
    
    rbr_location=$HOME/.local/share/wineprefixes/RBR2
    wine_location=$HOME/.steam/root/compatibilitytools.d/GE-Proton8-25/files
    
    SDL_VIDEODRIVER=x11 WINEPREFIX="${rbr_location}" gamescope -W 3840 -H 1600 -r 144 "${wine_location}"/bin/wine "$1"
    
    ./rsf_winege8-25_steam.sh winecfg
    
  10. Use winecfg to create a library override for dinput8 to Builtin (Wine)

  11. Use your distribution's package manager to install whatever package provides both the 32bit and 64bit version of libSDL2-2.0.so.0. On arch this is extra/sdl2 and multilib/lib32-sdl2

  12. Install rsf using the latest installer. At the time of this writing that is 1.44.8 .

Troubleshooting

If you see the following, you specified the library as Native (Windows)

01a8:err:module:import_dll Library DINPUT8.dll (which is needed by L"C:\\games\\Richard Burns Rally\\richardburnsrally_sse.exe") not found

If you see the following, you might not have libSDL2-2.0.so.0 installed, see above.

01a8:err:module:import_dll Loading library DINPUT8.dll (which is needed by L"C:\\games\\Richard Burns Rally\\richardburnsrally_sse.exe") failed (error c000007a).

If you want to be sure that all dynamically linked libraries are available you can do so with the ldd command:

ldd "$HOME/.steam/root/compatibilitytools.d/GE-Proton8-25/files/lib/wine/i386-unix/dinput8.dll.so"
	linux-gate.so.1 (0xf7f1c000)
	libSDL2-2.0.so.0 => not found
	libdl.so.2 => /usr/lib32/libdl.so.2 (0xf7e74000)
	libm.so.6 => /usr/lib32/libm.so.6 (0xf7da0000)
	libc.so.6 => /usr/lib32/libc.so.6 (0xf7a00000)
	/usr/lib/ld-linux.so.2 (0xf7f1e000)

Working notes from attempting to figure this out:

Using the following:

Installation:

SDL_VIDEODRIVER=x11 WINEPREFIX="/home/$USER/.local/share/wineprefixes/RBR2" /home/$USER/.steam/root/steamapps/common/Proton\ 6.3/dist/bin/wine ~/downloads/Rallysimfans_Installer.exe

Running winetricks:

SDL_VIDEODRIVER=x11 WINEPREFIX="/home/$USER/.local/share/wineprefixes/RBR2" WINE="/home/$USER/.steam/root/steamapps/common/Proton - Experimental/files/bin/wine" WINESERVER="/home/$USER/.steam/root/steamapps/common/Proton - Experimental/files/bin/wineserver" winetricks

Running the launcher:

SDL_VIDEODRIVER=x11 WINEPREFIX="/home/$USER/.local/share/wineprefixes/RBR2" /home/$USER/.steam/root/steamapps/common/Proton\ -\ Experimental/files/bin/wine "C:/games/Richard Burns Rally/rsf_launcher/RSF_Launcher.exe"

Errors encountered after the above steps:

0208:err:module:import_dll Library libvkd3d-1.dll (which is needed by L"C:\\windows\\system32\\wined3d.dll") not found
0208:err:module:import_dll Library libvkd3d-shader-1.dll (which is needed by L"C:\\windows\\system32\\wined3d.dll") not found
0208:err:module:import_dll Library wined3d.dll (which is needed by L"C:\\windows\\system32\\d3d9.dll") not found
0208:err:module:import_dll Library d3d9.dll (which is needed by L"C:\\games\\Richard Burns Rally\\richardburnsrally_sse.exe") not found
0208:err:module:LdrInitializeThunk Importing dlls for L"C:\\games\\Richard Burns Rally\\richardburnsrally_sse.exe" failed, status c0000135

Sometimes, depending on the runner being used, installing the corefonts package via winetricks is required. The error in this case is as follows. It's a long stack trace but this string should be present

MS.Internal.Shaping.TypefaceMap.MapUnresolvedCharacters(System.Windows.Media.TextFormatting.CharacterBufferRange, System.Globalization.CultureInfo, System.Globalization.CultureInfo, MS.Internal.FontFace.PhysicalFontFamily, Int32 ByRef, MS.Internal.SpanVector, Int32, Int32 ByRef)\n"

Tried installing vkd3d from winetricks which did not have any impact, it also did not provide any of the dlls

Turns out VKd3d was split out into a seperate package. Game/Launcher starts in GE-Proton7-35, which was before that change. Unfortunately there is no FFB in this version, or any version after Proton 6.3-8

SDL_VIDEODRIVER=x11 WINEPREFIX="/home/$USER/.local/share/wineprefixes/RBR2" gamescope -W 3840 -H 1600 -r 144 /home/$USER/.steam/root/compatibilitytools.d/GE-Proton8-25/files/bin/wine "C:/games/Richard Burns Rally/rsf_launcher/RSF_Launcher.exe"

dinput allows the SSE binary to launch in 6.3 but must be removed (winecfg library remove override) for later versions of wine to work.

@radgeRayden
Copy link

Use winecfg to create a library override for dinput8 to Native (Windows) should read "builtin" instead.

@kevenwyld
Copy link
Author

Use winecfg to create a library override for dinput8 to Native (Windows) should read "builtin" instead.

Fixed, thanks @radgeRayden !

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment