ValveSoftware / Proton

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

Crystal Project Demo (1760770) #5197

Open Learning5Life opened 3 years ago

Learning5Life commented 3 years ago

Compatibility Report

System Information

I confirm:

Symptoms

Game does not launch with Proton.

Reproduction

Launch the game.

steam-1760770.log

kisak-valve commented 3 years ago

Hello @Learning5Life, Assertion failed: compare_hlsl_types(arg1->data_type, arg2->data_type), file ./dlls/d3dcompiler_43/hlsl.y, line 627 looks like a line of interest from your log.

Learning5Life commented 3 years ago

Thanks for making the changes. I noticed that another game, Sonic CD had a similar error, which was: Assertion failed: compare_hlsl_types(arg1->data_type, arg2->data_type), file ../../../../proton/wine/dlls/d3dcompiler_47/../d3dcompiler_43/hlsl.y, line 627 (https://github.com/ValveSoftware/Proton/issues/455#issuecomment-723479043) The ProtonDB page of Sonic CD stated that to get the game running, this command protontricks 200940 d3dcompiler_43 d3dx9_43 should be entered in. Wonder if it would work for Crystal Project?

Learning5Life commented 3 years ago

I tried running the above protontricks command, but the game still refused to launch.

madewokherd commented 3 years ago

Sounds like you might need d3dcompiler_47 for this one.

Learning5Life commented 3 years ago

Sounds like you might need d3dcompiler_47 for this one.

Thanks for the tip. With d3dcompiler_47, I was able to get to a loading screen, but the game crashed on me when it tried to load audio. Here is the log and a screenshot: Screenshot from 2021-10-06 09-10-26 steam-1760770 with d3d.log

These lines seem interesting (Lines 2082-2130 of the log):

``` Unhandled Exception: System.Exception ---> System.Runtime.InteropServices.COMException at System.Runtime.InteropServices.Marshal.ThrowExceptionForHR (System.Int32 errorCode) [0x0000a] in <373bec4b1e6c428eb4e9ef6a5beee544>:0 at System.__ComObject.CreateIUnknown (System.Type t) [0x00058] in <373bec4b1e6c428eb4e9ef6a5beee544>:0 at Mono.Interop.ComInteropProxy.CreateProxy (System.Type t) [0x00000] in <373bec4b1e6c428eb4e9ef6a5beee544>:0 at System.Runtime.Remoting.RemotingServices.CreateClientProxyForComInterop (System.Type type) [0x00000] in <373bec4b1e6c428eb4e9ef6a5beee544>:0 at System.Runtime.Remoting.Activation.ActivationServices.CreateProxyForType (System.Type type) [0x0003b] in <373bec4b1e6c428eb4e9ef6a5beee544>:0 at (wrapper managed-to-native) System.Object.__icall_wrapper_ves_icall_object_new_specific(intptr) at NAudio.Wave.MediaFoundationResampler.CreateResamplerComObject () [0x00000] in <554b80148c284b99953f098db496ebd4>:0 at NAudio.Wave.MediaFoundationResampler..ctor (NAudio.Wave.IWaveProvider sourceProvider, NAudio.Wave.WaveFormat outputFormat) [0x0004a] in <554b80148c284b99953f098db496ebd4>:0 at Sang.Audio.XNA.XNAEffectManager.LoadSoundEffect (System.IO.Stream inputStream) [0x0003f] in <4b3b7a31e684402e8912528d42b4ba5d>:0 at Sang.Audio.XNA.XNAEffectManager.LoadContent (Microsoft.Xna.Framework.Content.ContentManager content) [0x000b3] in <4b3b7a31e684402e8912528d42b4ba5d>:0 at Sang.Audio.AudioManager.LoadContent (Microsoft.Xna.Framework.Content.ContentManager content) [0x00000] in <4b3b7a31e684402e8912528d42b4ba5d>:0 at Sang.Scene.SceneLoading.b__21_1 () [0x0003e] in <4b3b7a31e684402e8912528d42b4ba5d>:0 at Sang.Common.BGThread.AsyncRun () [0x00000] in <4b3b7a31e684402e8912528d42b4ba5d>:0 --- End of inner exception stack trace --- at Sang.Scene.SceneLoading+LoadingThread.PollIsWorkComplete () [0x0003a] in <4b3b7a31e684402e8912528d42b4ba5d>:0 at Sang.Scene.SceneLoading.LoadContentAsync () [0x00119] in <4b3b7a31e684402e8912528d42b4ba5d>:0 at Sang.Scene.SceneLoading.Update () [0x00184] in <4b3b7a31e684402e8912528d42b4ba5d>:0 at Sang.Scene.SceneManager.Update () [0x0005d] in <4b3b7a31e684402e8912528d42b4ba5d>:0 at Sang.GameMain.Update (Microsoft.Xna.Framework.GameTime gameTime) [0x000a7] in <4b3b7a31e684402e8912528d42b4ba5d>:0 at Microsoft.Xna.Framework.Game.Tick () [0x001fe] in :0 at Microsoft.Xna.Framework.Game.RunLoop () [0x0003c] in :0 at Microsoft.Xna.Framework.Game.Run () [0x00032] in :0 at Sang.Program.Main () [0x00006] in <4b3b7a31e684402e8912528d42b4ba5d>:0 [ERROR] FATAL UNHANDLED EXCEPTION: System.Exception ---> System.Runtime.InteropServices.COMException at System.Runtime.InteropServices.Marshal.ThrowExceptionForHR (System.Int32 errorCode) [0x0000a] in <373bec4b1e6c428eb4e9ef6a5beee544>:0 at System.__ComObject.CreateIUnknown (System.Type t) [0x00058] in <373bec4b1e6c428eb4e9ef6a5beee544>:0 at Mono.Interop.ComInteropProxy.CreateProxy (System.Type t) [0x00000] in <373bec4b1e6c428eb4e9ef6a5beee544>:0 at System.Runtime.Remoting.RemotingServices.CreateClientProxyForComInterop (System.Type type) [0x00000] in <373bec4b1e6c428eb4e9ef6a5beee544>:0 at System.Runtime.Remoting.Activation.ActivationServices.CreateProxyForType (System.Type type) [0x0003b] in <373bec4b1e6c428eb4e9ef6a5beee544>:0 at (wrapper managed-to-native) System.Object.__icall_wrapper_ves_icall_object_new_specific(intptr) at NAudio.Wave.MediaFoundationResampler.CreateResamplerComObject () [0x00000] in <554b80148c284b99953f098db496ebd4>:0 at NAudio.Wave.MediaFoundationResampler..ctor (NAudio.Wave.IWaveProvider sourceProvider, NAudio.Wave.WaveFormat outputFormat) [0x0004a] in <554b80148c284b99953f098db496ebd4>:0 at Sang.Audio.XNA.XNAEffectManager.LoadSoundEffect (System.IO.Stream inputStream) [0x0003f] in <4b3b7a31e684402e8912528d42b4ba5d>:0 at Sang.Audio.XNA.XNAEffectManager.LoadContent (Microsoft.Xna.Framework.Content.ContentManager content) [0x000b3] in <4b3b7a31e684402e8912528d42b4ba5d>:0 at Sang.Audio.AudioManager.LoadContent (Microsoft.Xna.Framework.Content.ContentManager content) [0x00000] in <4b3b7a31e684402e8912528d42b4ba5d>:0 at Sang.Scene.SceneLoading.b__21_1 () [0x0003e] in <4b3b7a31e684402e8912528d42b4ba5d>:0 at Sang.Common.BGThread.AsyncRun () [0x00000] in <4b3b7a31e684402e8912528d42b4ba5d>:0 --- End of inner exception stack trace --- at Sang.Scene.SceneLoading+LoadingThread.PollIsWorkComplete () [0x0003a] in <4b3b7a31e684402e8912528d42b4ba5d>:0 at Sang.Scene.SceneLoading.LoadContentAsync () [0x00119] in <4b3b7a31e684402e8912528d42b4ba5d>:0 at Sang.Scene.SceneLoading.Update () [0x00184] in <4b3b7a31e684402e8912528d42b4ba5d>:0 at Sang.Scene.SceneManager.Update () [0x0005d] in <4b3b7a31e684402e8912528d42b4ba5d>:0 at Sang.GameMain.Update (Microsoft.Xna.Framework.GameTime gameTime) [0x000a7] in <4b3b7a31e684402e8912528d42b4ba5d>:0 at Microsoft.Xna.Framework.Game.Tick () [0x001fe] in :0 at Microsoft.Xna.Framework.Game.RunLoop () [0x0003c] in :0 at Microsoft.Xna.Framework.Game.Run () [0x00032] in :0 at Sang.Program.Main () [0x00006] in <4b3b7a31e684402e8912528d42b4ba5d>:0 ```

madewokherd commented 3 years ago

Looks like it's using a CLSID from media foundation that isn't implemented:

763.620:0104:0174:err:ole:com_get_class_object no class object {f447b69e-1884-4a7e-8055-346f74d6edb3} could be created for context 0x15
[00000174:] EXCEPTION handling: System.Runtime.InteropServices.COMException: 

The library code using it is here: https://github.com/naudio/NAudio/blob/fb35ce8367f30b8bc5ea84e7d2529e172cf4c381/NAudio.Wasapi/MediaFoundationResampler.cs

I think it's using this but I'd have to check headers: https://docs.microsoft.com/en-us/windows/win32/medfound/audioresampler

Learning5Life commented 3 years ago

Replying to https://github.com/ValveSoftware/Proton/issues/5197#issuecomment-938300329

That's unfortunate. Should I report this to the Wine developers? Maybe they can fix this.

kisak-valve commented 2 years ago

Crystal Project (1760770)

Issue transferred from https://github.com/ValveSoftware/Proton/issues/5753. @MadByteDE posted on 2022-04-07T19:19:45:

Compatibility Report

System Information

I confirm:

steam-1760770.log

Symptoms

Reproduction

Workaround

Notes

FNA3D Driver: D3D11
D3D11 Adapter: Radeon RX 5700 / 5700 XT
6546.227:0134:0138:fixme:d3d11:d3d11_device_CheckFormatSupport iface 00AA10D8, format 71, format_support 052C6900 partial-stub!
6546.227:0134:0138:fixme:d3d11:d3d11_device_CheckFormatSupport iface 00AA10D8, format 74, format_support 007EEF40 partial-stub!
6546.227:0134:0138:fixme:d3d11:d3d11_device_CheckFormatSupport iface 00AA10D8, format 77, format_support 007EEF44 partial-stub!
6546.227:0134:0138:fixme:d3d11:d3d11_device_CheckFormatSupport iface 00AA10D8, format 98, format_support 052C6908 partial-stub!
6546.227:0134:0138:fixme:d3d11:d3d11_device_CheckFormatSupport iface 00AA10D8, format 29, format_support 007EEF48 partial-stub!
6546.228:0134:0138:trace:loaddll:build_module Loaded L"C:\\\windows\\\\system32\\\\d3dcompiler_47.dll" at 69D80000: builtin
6546.228:0134:0138:trace:loaddll:build_module Loaded L"C:\\\windows\\\\system32\\\\libvkd3d-shader-1.dll" at 6DF80000: native
Could not get UserDefinedAnnotation! Error Code: 0x80004002
[00000138:] EXCEPTION handling: System.InvalidOperationException: Could not get UserDefinedAnnotation! Error Code: 0x80004002
[00000138:] EXCEPTION handling: Microsoft.Xna.Framework.Graphics.NoSuitableGraphicsDeviceException: Could not get UserDefinedAnnotation! Error Code: 0x80004002

Link to line in FNA method "D3D11_CreateDevice" containing the error check for UserDefinedAnnotation: Github. The check only executes for feature level 11_1.

madewokherd commented 2 years ago

FNA3D Driver: D3D11

FNA3D's D3D11 driver doesn't work with Wine's d3dcompiler (by default, the FNA shipped with Wine Mono will use the OpenGL driver, but it looks like this game ships with its own FNA). I suggest adding FNA3D_FORCE_DRIVER=OpenGL or FNA3D_FORCE_DRIVER=Vulkan to launch options.

MadByteDE commented 2 years ago

FNA3D Driver: D3D11

FNA3D's D3D11 driver doesn't work with Wine's d3dcompiler (by default, the FNA shipped with Wine Mono will use the OpenGL driver, but it looks like this game ships with its own FNA). I suggest adding FNA3D_FORCE_DRIVER=OpenGL or FNA3D_FORCE_DRIVER=Vulkan to launch options.

That works but is just working around the issue and doesn't fix it.

But I've just seen that the issue I encountered might be fixed upstream already by implementing the missing methods if I understand the code correctly. So Proton may just need to be updated for the game to work out of the box.

madewokherd commented 2 years ago

It's not enough, FNA still needs more features from the shader compiler, at least based on other games I tested. Hopefully when it's more mature this will start working and we can switch to the D3D11 driver everywhere.