ValveSoftware / Proton

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

The Misadventures of P.B. Winterbottom (40930) #2058

Open flibitijibibo opened 5 years ago

flibitijibibo commented 5 years ago

Compatibility Report

System Information

I confirm:

steam-40930.log

Symptoms

Winterbottom has two paths, a D3D10 path and a D3D9 path. With the current Proton build, the game picks D3D10 but immediately hits a snag with Effects:

wine: Call from 0x7b43c6bd to unimplemented function d3dx10_43.dll.D3DX10CreateEffectFromResourceW, aborting

This is unimplemented in both Wine and DXVK. AFAIK D3D9 should work just fine, as the Effects for 9 are just SpriteBatch-like shaders and Wine's current implementation should be able to handle it. (And if not, this may be a good time to look at my implementation in MojoShader...)

Note that the game uses XACT for audio; this is known to work with FAudio but may not work with stock Wine.

Reproduction

  1. Boot game
  2. Wait
  3. Read logs
flibitijibibo commented 5 years ago

After applying #2107, it does indeed look like Wine's d3dcompiler can't compile fx_2_0:

376373.176:0008:0009:fixme:d3dcompiler:compile_shader Compilation target "fx_2_0" not yet supported
376373.177:0008:0009:fixme:d3dx:d3dx9_effect_init Failed to parse effect, hr 0x8876086c.
376373.177:0008:0009:fixme:d3dcompiler:compile_shader Compilation target "fx_2_0" not yet supported
376373.177:0008:0009:fixme:d3dx:d3dx9_effect_init Failed to parse effect, hr 0x8876086c.

This can be fixed by using the redist, but yeah... I have my own parser but not my own compiler!

EDIT: This game boots after PROTON_NO_D3D10=1 and using protontricks to install d3dx9 and d3dx10 (and xact if you're not using upstream FAudio). This would probably get installed by the game's bundled DX redist but it appears to not work... this was before Steam automated that, I think.

flibitijibibo commented 5 years ago

3.16-6 includes the latest FAudio, this at least takes care of audio when DXSetup fails but we still have to figure out why the installer fails. Once that's fixed and PROTON_NO_D3D10 is in, this game should be ready to go.

flibitijibibo commented 5 years ago

PROTON_NO_D3D10 is in 3.16-7. DXSetup is the last thing on the TODO.