Open michaeltintiuc opened 5 years ago
@kisak-valve This game needs a .NET label too.
This one seems to use some really obscure .NET features, some I've never seen before. But, Proton logs should be more productive now, FWIW.
I get a NotImplementedException, in obfuscated code unfortunately, and with no indication in the stack trace of which method is unimplemented. It turns out that it uses the ComputerInfo class from the Visual Basic libraries. It needs all of the "Memory" properties to be implemented.
Stubbing those out gets it further, to a crash in MOJOSHADER_glEffectBeginPass.
A crash there typically means a program failed to link. BeginPass is pretty big so lots of stuff might happen, but usually that's the cause. An apitrace will probably reveal the problem shader on the final glLinkProgram failure (I believe we store errors from GetProgramInfoLog somewhere in mojoshader_opengl.c, but I don't remember of the top of my head)
After doing the real implementation, the game started without crashing. I'm not sure why. Other than implementing those properties, I did a Mono merge, and I was testing in Wine instead of Proton for convenience.
It still crashes for me in Proton, so it's a fix in upstream Wine or some other difference.
I tested in Wine 4.11 and did not get a MojoShader crash. It seems this is caused by Proton somehow.
I can reproduce the crash in Wine from proton's branch, so it's caused by a patch Proton applied on top of Wine. I will try to bisect.
The ComputerInfo memory implementation is in Wine Mono 4.9.3. I still haven't finished the bisect for the MojoShader crash.
The crash is random.
So afaict there's no difference between Proton and Wine 4.11, both just randomly crash in MojoShader sometimes.
Do we have a +relay trace with MojoShader calls? That'll at least give us the stream of shader calls to pin down where it's dying (could be parsing, compiling, constant buffer sets, etc).
Another possibility is an issue in the effect; if we're using the very latest revision then we can dump the effects from here (buf and _len)...
https://github.com/FNA-XNA/MojoShader/blob/fna/mojoshader_effects.c#L838
... and run the binaries through the test util:
https://github.com/FNA-XNA/MojoShader/blob/fna/utils/testparse.c
I wasn’t able to crash the game with 4.11-8’s FNA revision. I may have fixed this by accident...?
Compatibility Report
System Information
I confirm:
Symptoms
Using
protontricks 313400 dotnet452
fixes the launch issue and the game is playable