HelixVision

HelixVision

Bang Bang Raciing and DX9 problem games
So I tried Bang Bang Racing ... mostly because it was DX9 and I experienced a crash of Katanga with Mass Effect 3D alternative fix and wanted to see if other DX9 games have this problem. FEAR passed the test, but Bang Bang Racing did not.

Bang Bang Racing crashes Katanga the same way that Mass Effect crashes Katanga when I was using the alternative 3D fix. I assume the problem is the fix. When Katanga crashes, I get a pop up error message that says "Direct3d Create 9ex" ... and some other stuff that I forgot.

The alarming part is that after this crash, when I validate files on HelixVision on Steam, it says it is missing 9 files and re-acquires them. I assume the problem is the 3d fix being old and somehow causes a crash with VR. They work fine in 3D though. They only crash VR / katanga .. both games start fine on desktop and show in anaglyph 3D just fine.

Here is the Katanga error log:

Sunday, February 02, 2020 @ 5:58:06 AM UTC


..Unity Native C++ logging enabled.

..Katanga:CreateSetupMutex--> 0000000000000B00
..Katanga:ReleaseSetupMutex: ReleaseMutex ERROR_NOT_OWNER

..Katanga:DestroySetupMutex<-- 0000000000000B00

Here is the outpug log:


UnloadTime: 1.129100 ms
<b>[SteamVR]</b> Successfully loaded 18 actions from action manifest into SteamVR (D:/SteamLibrary/steamapps/common/HelixVision/Tools/Katanga/actions.json)
<b>[SteamVR]</b> Initialized. Connected to oculus:WMHD314B700NGG
Awake
CreateSetupMutex
RecenterHMD
Set environment state: 4
Sharpening state: 1 sharpness: 1.5
Hint state: 1
Start: Command line arguments: D:\SteamLibrary\steamapps\common\HelixVision\Tools\Katanga\katanga.exe --game-path D:\SteamLibrary\steamapps\common\BangBangRacing\BangBangRacing.exe --game-title Bang Bang Racing --launch-type DX9
CurrentDirectory: D:\SteamLibrary\steamapps\common\HelixVision\Tools\Katanga
Successful hook library Init
Launch type: DX9
Launching: D:\SteamLibrary\steamapps\common\BangBangRacing\BangBangRacing.exe...
Waiting for process: D:\SteamLibrary\steamapps\common\BangBangRacing\BangBangRacing.exe
Launch EndOfFrame
Update
-> GrabSetupMutex, ownMutex=True
PollForSharedSurface handle: 0
<- ReleaseSetupMutex, ownMutex=False
Update
-> GrabSetupMutex, ownMutex=True
PollForSharedSurface handle: 0
<- ReleaseSetupMutex, ownMutex=False
Update

**** repeating lines ****

Update
-> GrabSetupMutex, ownMutex=True
PollForSharedSurface handle: 0
<- ReleaseSetupMutex, ownMutex=False
Update
-> GrabSetupMutex, ownMutex=True
PollForSharedSurface handle: 0
->Found BangBangRacing.exe:14840
LoadAgent
Load GamePlugin
Last hook library error: 0x8007007F
Exception: Could not load D:/SteamLibrary/steamapps/common/HelixVision/Tools/Katanga/katanga_Data/Plugins/GamePlugin.dll: 0x8007007F
at Game+<Launch>c__Iterator0.MoveNext () [0x00000] in <filename unknown>:0
at UnityEngine.SetupCoroutine.InvokeMoveNext (IEnumerator enumerator, IntPtr returnValueAddress) [0x00000] in <filename unknown>:0

(Filename: Line: -1)

<- ReleaseSetupMutex, ownMutex=False
OnApplicationQuit
DestroySetupMutex
Katanga Quit
Setting up 4 worker threads for Enlighten.
Thread -> id: 24ac -> priority: 1
Thread -> id: 1bf8 -> priority: 1
Thread -> id: 2634 -> priority: 1
Thread -> id: 31a4 -> priority: 1
OpenVR Shutdown
< >
Showing 1-5 of 5 comments
Feb 2, 2020 @ 12:31am 
The problem with these DX9 games is that they are using an older version of the HelixMod dlls that doesn't support the required DX9Ex API that HelixVision requires. This was a bug in the original DLLs that Helix fixed after a year or so, but a lot of older fixes still have the old DLLs.

The latest version of HelixMod dll has DX9Ex support, but Helix also changed the syntax of the commands in the DX9Settings.ini file, so you can't just drop in the new dlls and have it work. Helix was a genius on many levels, but his coding has caused us a lot of grief over the years.

For Mass Effect and Portal 2, I manually updated those fixes to use the new syntax, but keep the fixes as they were, including the keys used. It's not super challenging to convert the files, but it is error prone, and HelixMod has the other awesome approach that any syntax errors silently fail, not give you error codes or other feedback. It's... tedious.


I plan to create a converter tool that will automate these DX9 conversions, but it's lower priority than getting the curved screen, and a deeper investigation of the 3D driver version requirements. But it's a lot easier and more fun, so maybe I'll do this after curved screen anyway.

BTW, I just got Bioshock 1 and 2 both working in HelixVision, and they'll show up in the next release.
I'm very interested in getting DX9 games working. Namely Rise of Flight United which works in 3dvision but not Helixvision. Any tips on how I could make this work?
Mar 7, 2021 @ 9:03pm 
Originally posted by Ranged_Archer of annihilation:
I'm very interested in getting DX9 games working. Namely Rise of Flight United which works in 3dvision but not Helixvision. Any tips on how I could make this work?
This will depend upon the game and how they use DX9.

I took a quick look here to test Rise of Flight, and unfortunately I think this is one of the games that does not work with our converting the objects to DX9Ex objects. I get a D3D runtime error at launch. The game works in 3D normally, but we can't get access to the backbuffer without the DX9Ex object. Sorry about that.
The game displays in anaglyph on my monitor when I run it so maybe you could use the front buffer and support anaglyph mode?
I dunno maybe not great but might be worth it if it's easy enough to do.
Mar 8, 2021 @ 11:56pm 
Originally posted by Ranged_Archer of annihilation:
The game displays in anaglyph on my monitor when I run it so maybe you could use the front buffer and support anaglyph mode?
I dunno maybe not great but might be worth it if it's easy enough to do.
That's pretty much what we actually do already, and one of the reasons we put it into anaglyph mode. We capture the backbuffer before it is rendered to red/blue and share that across the process space. The sharing across processes (IPC) requires that we use the DX9Ex objects, which is the crux of the problem. The game runs OK with DX9, but breaks when we upconvert the object to DX9Ex. Even though the DX9Ex is a superset, there are subtle differences that can break DX9 games.

There is a nonzero chance that we revisit this at some point, and use different techniques to share the backbuffer. Like all software, you learn what works by doing it, no way to tell in advance. Assuming we can get there, a future revision will use a different technique that would not require upconverting to DX9Ex. On the radar, but not soon.
< >
Showing 1-5 of 5 comments
Per page: 1530 50