ValveSoftware / Proton

Compatibility tool for Steam Play based on Wine and additional components
Other
23.72k stars 1.03k forks source link

Revolver360 Re:Actor (313400) #2258

Open michaeltintiuc opened 5 years ago

michaeltintiuc commented 5 years ago

Compatibility Report

System Information

I confirm:

Symptoms

Using protontricks 313400 dotnet452 fixes the launch issue and the game is playable

ghost commented 5 years ago

@kisak-valve This game needs a .NET label too.

flibitijibibo commented 5 years ago

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.

madewokherd commented 5 years ago

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.

madewokherd commented 5 years ago

Stubbing those out gets it further, to a crash in MOJOSHADER_glEffectBeginPass.

flibitijibibo commented 5 years ago

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)

madewokherd commented 5 years ago

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.

madewokherd commented 5 years ago

It still crashes for me in Proton, so it's a fix in upstream Wine or some other difference.

madewokherd commented 5 years ago

I tested in Wine 4.11 and did not get a MojoShader crash. It seems this is caused by Proton somehow.

madewokherd commented 5 years ago

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.

madewokherd commented 4 years ago

The ComputerInfo memory implementation is in Wine Mono 4.9.3. I still haven't finished the bisect for the MojoShader crash.

madewokherd commented 4 years ago

The crash is random.

madewokherd commented 4 years ago

So afaict there's no difference between Proton and Wine 4.11, both just randomly crash in MojoShader sometimes.

flibitijibibo commented 4 years ago

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

flibitijibibo commented 4 years ago

I wasn’t able to crash the game with 4.11-8’s FNA revision. I may have fixed this by accident...?