nike4613 / BeatSaber-IPA-Reloaded

A Unity mod injector built for Beat Saber.
https://nike4613.github.io/BeatSaber-IPA-Reloaded/
Other
180 stars 28 forks source link

BSIPA breaks controller Vibration on Beat Saber 1.3.0 #19

Closed Idlebawb closed 4 years ago

Idlebawb commented 5 years ago

Hi, sadly I didn't dodge the new Beat Saber update well enough. So after updating I have no vibration - only a tiny bit when clicking with the trigger. My testing led me to believe, that its BSIPA.

My Setup: HTC Vive + Valve Index Controllers Windows 10 x64 1903 (German)

When I do a clean install without any mods, my vibration works. Then I only install BSIPA through mod assistant - no other mods at all. I start the game and vibration is gone.

latest.log

nike4613 commented 5 years ago

Have you tried verifying? BSIPA can't seem to grab the game version from the game files. They may be corrupted somethow.

Idlebawb commented 5 years ago

I didn't verify. I guessed that a clean install would get me a working set of files. I also clean installed at least 5 times for testing. Also at what point would you want me to verify?

Install -> Run -> Install BSIPA -> Verify? Install -> Run -> Install BSIPA -> Run -> Verify?

I just verified my current installation and it downloaded 800kb for whatever reason, but it didn't change anything.

I also forgot to mention that vibration starts working again when I uninstall BSIPA through mod assistant.

Also where does it get the game version from? The BeatSaberVersion.txt exists in the game root and it says 1.3.0

And at this point in the process:

[DEBUG @ 22:50:31 | IPA/Loader] Applying anti-yeet patch [WARNING @ 22:50:31 | IPA/LibraryLoader] Could not add DLL directory [WARNING @ 22:50:31 | IPA/LibraryLoader] System.ComponentModel.Win32Exception (0x80004005): Das System kann den angegebenen Pfad nicht finden. [WARNING @ 22:50:31 | IPA/LibraryLoader] Could not add DLL directory [WARNING @ 22:50:31 | IPA/LibraryLoader] System.ComponentModel.Win32Exception (0x80004005): Falscher Parameter. [DEBUG @ 22:50:31 | IPA] GameVersion set early to 1.3.0

The Warnings say 'System cannot find specified path' and 'wrong parameter'. Which path / file is it even looking for?

nike4613 commented 5 years ago

Don't worry about those warnings, they are relating to setting the DLL load path. When those calls error, its basically a no-op.

It tries to get the game version from Beat Saber_Data/globalgamemanagers, which is where Unity stores them.

This is a bug that I'm seeing other people also have, and I am looking into it. It seems likely that it is related to DLL issues still (ugh), but hopefully I can find a way to make it behave.

Simber1 commented 5 years ago

I'm having the same issue with Vive controller. If there's anything thing logs wise you need to help I can, just let me know.

ryanpowers commented 5 years ago

I am also experiencing this issue with Samsung Odyssey+ and WMR controllers. Fresh install had vibration working, install only BSIPA and it stops working. There is a thread on the steam discussion forum of people with similar issues.

If there is any testing I can do or specific logs to provide, please let me know.

Simber1 commented 5 years ago

The work around I've been told is to use 3.13.0 for the time being, also delete the DLL that the BSIPA drops in the games root folder and disable auto update in the config,

Idlebawb commented 5 years ago

I've been told that any openvr.dll or steamvr.dll in a folder in your windows path environment variable can cause this issue.

I've had an old installation of iracing with an openvr.dll. I removed it from the path and also deleted the whole thing, cause I dont need it anymore. Now my vibration is back.

ryanpowers commented 5 years ago

Interesting. I also have iRacing installed, though I actively use it. I will take a look and see if I can get haptics back while still having iRacing work in VR.

Simber1 commented 5 years ago

I too have iRacing installed, we might be onto something here.

OrangeinSYR commented 5 years ago

I also have iracing and can’t get vibrations with mods can I ask where to go and what to delete for me to fix this issue?

ryanpowers commented 5 years ago

I can confirm that vibration works if I navigate to C:\Program Files (x86)\iRacing and do the following:

I can also confirm, however, that the iRacing sim (not the UI) will not launch unless you undo these.

I checked with Process Explorer and found that Beat Saber was using those two files from iRacing's program folder until I renamed them, then it used the versions in Beat Saber/Beat Saber_Data/Plugins. Vibration worked at that point.

Not sure how to find a way to be able to have vibration in Beat Saber as well as be able to use iRacing.

ryanpowers commented 5 years ago

Can further confirm that removing iRacing's directory from PATH and D3DGEARPATH (not sure if just PATH is sufficient) allows vibration to work in Beat Saber and iRacing still works in VR (using its own version of the DLL).

ryanpowers commented 4 years ago

A new iRacing update is supposed to address the PATH issue and specifically mentions Beat Saber picking up it's OpenVR DLLs. I recommend that this issue be closed.

nike4613 commented 4 years ago

Has it been tested to have been fixed?

ryanpowers commented 4 years ago

I have not personally verified that the PATH issue is gone with this update. The issue described here turned out to not be a BSIPA issue, but an iRacing issue. I have verified that removing iRacing from PATH corrects the issue on multiple occasions (it continues adding itself).

nike4613 commented 4 years ago

Alright, well I'm going to leave this open until it is confirmed to be fixed.

ryanpowers commented 4 years ago

I have tested with BS 1.6.0 and BSIPA 1.13.2, along with the latest iRacing. Having previously cleaned iRacing up from PATH, and having played a race in VR with it on the latest iRacing patch, Beat Saber no longer picks up the iRacing version of the DLLs.

Shadnix-was-taken commented 4 years ago

Can confirm that the latest iRacing updates haven't readded the iRacing install dir to PATH. I can't confirm if the updater would clean up existing installations or not.

nike4613 commented 4 years ago

In that case, as it seems to be at least mostly fixed on iRacing's side, I'll close this.

Naverritus commented 2 years ago

This has long been closed but this can still happen for any openvr_api.dll found in PATH, so here is a quick way to check for it on Windows: In the command prompt type where openvr_api.dll and it should return any instances of the file found within the PATH locations. Then you can rename the offending file, delete it or remove the location from the PATH list (removing from PATH is probably the safest but be aware that this can also create issues with the program that uses this file). After that the haptics should work normally again. I'm not sure how BSIPA looks for it but it should probably point to the file path directly since this will be a recurring issue for future users.

nike4613 commented 2 years ago

BSIPA doesn't actually perform any lookups; it just configures the Windows DLL search path to use the PATH environment variable as a means of allowing native libraries to be loaded from Libs/Native without breaking Oculus builds of the game, which seem to require PATH be part of the DLL search path. I have seen related issues with native libs loading an incorrect MSVCRT as well, which I assume to be more or less the same issue.

Oculus may have changed at some point to not require PATH to be searched anymore, and if that's the case, all of these problems can be fixed with no issue. Unfortunately, I don't have a way of testing this. If anyone does, contact me and we can probably resolve this permanently.