HelixVision

HelixVision

How to start unlisted game
I have a unlisted game where the game engine is unknown. NV Stereo3d works when started normally (no fix), but I was not able to make it run within Katanga to show in VR. Also earlier attempts to hook it with Migoto or Tridef failed so far. It might be a DX game though, because I see a Redist Jun2010 folder within the game root. Because game starts trough a launcher exe, its difficult to set up too.

What are the minimum information for HelixVision to start a game in Katanga when I manually add a game to the list? Unfortunately the automatic setup gives me only the AppID (444140), but fails on every other information.

I created a entry with exe name, appid, root path, no fix and set engine to empty, with unknown render API. Because the game runs out-of-the-box on its own, I want to just start it (in VR). Is it possible?
Originally posted by Bo3b:
If you are sure that it is a DX9Ex game, that can work with a late attachment of the Katanga app. So you can launch game, get it set up, then switch out and launch Katanga via a shortcut with command line params, and it will connect and work.

On the command line params, you would set the params like:
--game-path="W:\SteamLibrary\steamapps\common\gamepath\game.exe"
--launch-type DX9Ex

As the two required pieces.

For reference, the other command line params are:
--game-title="game name" (just for naming on screen)
--waitfor-exe="game.exe" (specify a double launch exe, or past a launcher)
--wait-time=10 (specified in seconds, waits to look for named exe)
--launch-type=DX11Exe (type of hooking, can also be:
Epic, Steam, DX9, DX9Ex, DirectModeDX11, DirectModeDX9Ex

--epic-appid=flowers (some strange name or hex strings to specify EGS launch)
--steam-path="c:\program\path to steam.exe"
--steam-appid=3344 (steam AppId when launching via steam and not exe)


If the game is a DX9 game, that requires a first-instruction hook, and the wait-time or shortcut approaches won't work, because it's too late to set up the needed hooks.

If you think it's DX9Ex, the shortcut/command line params would be worth experimenting with.

If you post the logs here, I can take a look and let you know what Katanga is seeing.

%appdata%\..\LocalLow\Katanga\Katanga\output_log.txt
%appdata%\..\LocalLow\Katanga\Katanga\katanga.log
< >
Showing 1-9 of 9 comments
Feb 28, 2021 @ 4:37pm 
Getting a game to start in VR is possible in some cases, but depends on a lot of different variables. If it's working in 3D Vision already, that's a key element.

Run the MSI Afterburner, and see what it reports as the DirectX API. If it's DX11 it will likely connect in VR without problems. DX9 is more problematic, but can work. OpenGL will work easily as well.

You need the DirectX spec in order to set the flag in the HelixVision profile. That flag tells the Katanga/mirror app what API to try, and how to connect, so it's critical to getting it into VR.

Start with those pieces and let me know what you run into and we can try to get this working.
Nice tipp with Afterburner, did not realize that it shows the DX API. So my game is using DX9E. I set the render target in HelixVision and now the Katanga window and the game launcher start up when I click on 'play in VR'.

The problem is now as expected to overcome the launcher app. Katanga shows only grey screen... I had the same problem with Diablo III, where a start parameter must be used to directly go into the game, instead of starting the launcher first. There HelixVision worked, but for this game I don't know any start parameters.

Any tricks or options I could try? HelixVision would need to somehow hook once the game goes fulllscreen... I guess thats how its already doing, but somewhere it goes wrong? Can I enable a log output that tells me whats going on?
Mar 1, 2021 @ 4:42pm 
Does the launcher exit after it is run? If so, you can set it as the StartAdditionalExe parameter, and tick the WaitForExit box. In the GameLauncherExe you would put whatever the actual running exe name will be.


If that doesn't work, and the game is a DX9Ex, you can possibly use the waitFor= parameter. In that special launch case, it can wait around for the final .exe to arrive, and if you set it something like 20 seconds, then you have time to launch the real game out of the launcher.

You can find the profile folder, and edit the info.in. In the VR section you add a waitTime=20 for a 20 second wait before it will look for the named exe. See BlackMesa profile as an example.
Thank you for these tipps. I'll try out the 'waitTime' parameter.
The launcher and game are the same exe, just that a windows dialog with game settings opens first and game starts with a click on 'play' button there. So I can't make use of the waitForExe I guess
Mar 3, 2021 @ 6:00pm 
Originally posted by Laiden:
Thank you for these tipps. I'll try out the 'waitTime' parameter.
The launcher and game are the same exe, just that a windows dialog with game settings opens first and game starts with a click on 'play' button there. So I can't make use of the waitForExe I guess
Might still work. Games are totally bizarre how they do things, so worth experimenting. If it's an actual double launch, it will work. If it's just a dialog, it won't, but if that's the case then the connection would still be valid.

Also worth experimenting with running by Exe instead of the Steam launch. Direct launch by exe might bypass their launcher.
No luck so far :(
It is possible to run even multiple instances of the game with changed exe names too, so I tried all kinds of combinations of tool.exe, starting method, waitForExit, waitTime parameters but Katanga never gets farther than the 'Launching game...' screen.

There is also the problem, that the game exe comes up after few seconds, but the launcher UI becomes visible only after about 90s while S3D is enabled. By the way, the waitTime value is in seconds or ms? Is that a maximum time like a timeout or is it a delay where it does noting until the time passed? For me it did not seem to have any effect, the Katanga window always opens shortly after the launching exe was started.

Was hoping it could find the right window similar to how OpenBroadcastStudio does. For it to work, must the game be executed from HelixVision process or can Helix attach to an already running game window (like OBS)?

So far, the only thing that works for me is either playing with my 3DTV or in VirtualDesktop in Anaglyph mode, its 3D but the colors aren't right, thats why I don't like that mode. And the TV is in another room and has ugly resolution in stereo...
The author of this thread has indicated that this post answers the original topic.
Mar 6, 2021 @ 3:46pm 
If you are sure that it is a DX9Ex game, that can work with a late attachment of the Katanga app. So you can launch game, get it set up, then switch out and launch Katanga via a shortcut with command line params, and it will connect and work.

On the command line params, you would set the params like:
--game-path="W:\SteamLibrary\steamapps\common\gamepath\game.exe"
--launch-type DX9Ex

As the two required pieces.

For reference, the other command line params are:
--game-title="game name" (just for naming on screen)
--waitfor-exe="game.exe" (specify a double launch exe, or past a launcher)
--wait-time=10 (specified in seconds, waits to look for named exe)
--launch-type=DX11Exe (type of hooking, can also be:
Epic, Steam, DX9, DX9Ex, DirectModeDX11, DirectModeDX9Ex

--epic-appid=flowers (some strange name or hex strings to specify EGS launch)
--steam-path="c:\program\path to steam.exe"
--steam-appid=3344 (steam AppId when launching via steam and not exe)


If the game is a DX9 game, that requires a first-instruction hook, and the wait-time or shortcut approaches won't work, because it's too late to set up the needed hooks.

If you think it's DX9Ex, the shortcut/command line params would be worth experimenting with.

If you post the logs here, I can take a look and let you know what Katanga is seeing.

%appdata%\..\LocalLow\Katanga\Katanga\output_log.txt
%appdata%\..\LocalLow\Katanga\Katanga\katanga.log
Alright, thats exactly what had in mind and explains why waitForExe did not work with Dx9. Dx9Ex was not listed in FixEditor and so I had the impression it would be the same as Dx9.

With that method it had to work I thought and tried again. Something happend, but still could not get past the 'launching game...' By "something" I mean that I could not alt-tab out of the game anymore, once katanka attempt to hook DX9Ex.

By the way, if somebody wants to use the shortcut method, the parameter arguments must be seperated by space without the equal character. Like so:
target:
E:\Steam\steamapps\common\HelixVision\Tools\Katanga\katanga.exe --game-path B:\SteamLibrary\steamapps\common\root\game.exe --game-title name --launch-type DX9Ex

By now I lost hope and come to think that this game won't let itself get hooked. Unless theres other issues that prevent it to happen, like my secondary integrated graphics maybe? The primary gfx (GTX1070) was detected correctly though.

Anyways, I post logs in case they contain useful hints. To me it looks like it went as its suppose to, except the NOT OWNER error at the end. I'm pretty sure that my game is a Dx9Ex, not only because Afterburner said so, but when I set launch-type to DX9 i see
GamePlugin::Hooked_Direct3DCreate9 - SDK: 32
GamePlugin::HookCreateDevice
Returned IDirect3D9Ex: 0AE233B0

in the Katanga log output instead.

#Katanga
Sunday, March 07, 2021 @ 1:23:29 PM UTC ..Unity Native C++ logging enabled. ..Katanga:CreateSetupMutex--> 0000000000000B18 GamePlugin C++ logging enabled. GamePlugin::OnLoad called GamePlugin: OpenMutex called: 00000E88 GamePlugin: Mapped file created: 06BC0000, val: 0x0 GamePlugin::OnHookAdded called [Hook: D3D9.DLL!Direct3DCreate9Ex @ 0x5DD64390 / Chain:1] IDirect3D9Ex->CreateDevice result: 0, device9Ex: 1C9055C0, device9: 1C9055C0 Successfully hooked IDirect3DDevice9Ex::Present ..Katanga:OpenFileMappedIPC Mapped file created: 000001E900020000, val: 0x0 GamePlugin::OnHookRemoved called [Hook: D3D9.DLL!Direct3DCreate9Ex @ 0x5DD64390 / Chain:1] GamePlugin::OnUnLoad called GamePlugin: Unmap file for 00001184 GamePlugin: ReleaseMutex for 00000E88 GamePlugin: ReleaseMutex err:0x120 GamePlugin: CloseHandle for 00000E88, err:0x120 GamePlugin C++ log closed. ..Katanga:ReleaseSetupMutex: ReleaseMutex ERROR_NOT_OWNER ..Katanga:DestroySetupMutex<-- 0000000000000B18

#output
Initialize engine version: 2017.4.26f1 (3b349d10f010) GfxDevice: creating device client; threaded=1 Direct3D: Version: Direct3D 11.0 [level 11.1] Renderer: NVIDIA GeForce GTX 1070 (ID=0x1b81) Vendor: NVIDIA VRAM: 8088 MB Driver: 27.21.14.5206 Begin MonoManager ReloadAssembly - Completed reload, in 0.027 seconds <RI> Initializing input. <RI> Input initialized. <RI> Initialized touch support. OpenVR initialized! The referenced script on this Behaviour (Game Object '_Stats') is missing! (Filename: Line: 1758) UnloadTime: 0.608400 ms <b>[SteamVR]</b> Successfully loaded 22 actions from action manifest into SteamVR (E:/Steam/steamapps/common/HelixVision/Tools/Katanga/actions.json) <b>[SteamVR]</b> Initialized. Connected to lighthouse:LHR-FD33DBA4 Awake CreateSetupMutex RecenterHMD UpdateCurve state: 0.2300002 Set environment state: 2 Sharpening state: 0 sharpness: 1.5 Hint state: 0 Start: Command line arguments: E:\Steam\steamapps\common\HelixVision\Tools\Katanga\katanga.exe --game-path B:\SteamLibrary\steamapps\common\Sonicomi\Launcher.exe --game-title Sonicomi --launch-type DX9Ex --waitfor-exe Sonicomi_Steam.exe --wait-time 1 --game-path: B:\SteamLibrary\steamapps\common\Sonicomi\Launcher.exe --game-title: Sonicomi --launch-type: DX9Ex --waitfor-exe: Sonicomi_Steam.exe --wait-time: 1 CurrentDirectory: E:\Steam\steamapps\common\HelixVision\Tools\Katanga Successful hook library Init Launch type: DX9Ex for Game: Sonicomi_Steam.exe Start game with game exe path: B:\SteamLibrary\steamapps\common\Sonicomi\Launcher.exe launchArguments: Waiting 1s for process: Sonicomi_Steam.exe Launch EndOfFrame WaitForGame...Sonicomi_Steam.exe ->Found Sonicomi_Steam.exe:1884 GetGameProcess...Sonicomi_Steam.exe LoadAgent Load GamePlugin Successfully loaded E:/Steam/steamapps/common/HelixVision/Tools/Katanga/katanga_Data/Plugins/GamePlugin.dll Hook the D3D9.DLL!Direct3DCreate9Ex... Restored Working Directory to: E:\Steam\steamapps\common\HelixVision\Tools\Katanga Game has exited. OnApplicationQuit DestroySetupMutex Katanga Quit Katanga Quit Setting up 4 worker threads for Enlighten. Thread -> id: 3664 -> priority: 1 Thread -> id: 3668 -> priority: 1 Thread -> id: 3670 -> priority: 1 Thread -> id: 366c -> priority: 1 OpenVR Shutdown
Mar 7, 2021 @ 9:23pm 
Those logs look pretty much OK. However, there is no response on the hook to DX9Ex->Present, which suggests that it either is not actually DX9Ex or it's not the correct exe.

Some games do weird double level object creation as a way to implement copy/modding protection. I don't know if that's happening here, but our hook is never called. Afterburner would run into the same problem- and report only on what it can see, not necessarily what the game is using.

I'm sorry, but I'm out of ideas on this one. Maybe try using the normal DX9 path, and post the logs from that. I'm looking for it reporting that it found the backbuffer and prints the dimensions.

Would also be worth checking if other modders have any suggestions on this game in particular.
< >
Showing 1-9 of 9 comments
Per page: 1530 50