The following error appears in the log:
[0000018C:] EXCEPTION handling: System.InvalidProgramException: Invalid IL code in :CSteamAchievements.OnUserStatsReceived (CSteamAchievements* modopt(System.Runtime.CompilerServices.IsConst) modopt(System.Runtime.CompilerServices.IsConst),UserStatsReceived_t*): IL_00c4: ldc.i4.s 48
[0000018C:] EXCEPTION handling: System.InvalidProgramException: Invalid IL code in :CSteamAchievements.OnUserStatsReceived (CSteamAchievements* modopt(System.Runtime.CompilerServices.IsConst) modopt(System.Runtime.CompilerServices.IsConst),UserStatsReceived_t*): IL_00c4: ldc.i4.s 48
[0000018C:] EXCEPTION handling: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation.
Unhandled Exception:
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.InvalidProgramException: Invalid IL code in :CSteamAchievements.OnUserStatsReceived (CSteamAchievements* modopt(System.Runtime.CompilerServices.IsConst) modopt(System.Runtime.CompilerServices.IsConst),UserStatsReceived_t*): IL_00c4: ldc.i4.s 48
at (wrapper native-to-managed) .CSteamAchievements.OnUserStatsReceived(CSteamAchievements* modopt(System.Runtime.CompilerServices.IsConst) modopt(System.Runtime.CompilerServices.IsConst),UserStatsReceived_t*)
at .CCallback<CSteamAchievements,UserStatsReceived_t,0>.Run (CCallback<CSteamAchievements,UserStatsReceived_t,0>* , System.Void* pvParam) [0x00000] in <3f08e53e570a454c9906fc5835c6e139>:0
at (wrapper native-to-managed) .CCallback<CSteamAchievements,UserStatsReceived_t,0>.Run(CCallback<CSteamAchievements,UserStatsReceived_t,0>* modopt(System.Runtime.CompilerServices.IsConst) modopt(System.Runtime.CompilerServices.IsConst),void*)
at (wrapper managed-to-native) .SteamAPI_RunCallbacks()
at SteamWrapper.SteamWrapper.Tick () [0x00000] in <3f08e53e570a454c9906fc5835c6e139>:0
at (wrapper managed-to-native) System.Reflection.RuntimeMethodInfo.InternalInvoke(System.Reflection.RuntimeMethodInfo,object,object[],System.Exception&)
at System.Reflection.RuntimeMethodInfo.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x0006a] in :0
--- End of inner exception stack trace ---
at System.Reflection.RuntimeMethodInfo.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00083] in :0
at System.Reflection.MethodBase.Invoke (System.Object obj, System.Object[] parameters) [0x00000] in :0
at EteriumEngine3.SteamWrapper.Tick () [0x00000] in <3610edd168404694b3fe309b6c96fb76>:0
at EteriumEngine3.SpaceShooterGame.Update (Microsoft.Xna.Framework.GameTime _GameTime) [0x0000a] in <8497a7f37b5f4ef0b9d592465e734721>:0
at Microsoft.Xna.Framework.Game.Tick () [0x00103] in <2a509bd9153f43e2a56073000f1bcdc4>:0
at Microsoft.Xna.Framework.SDL2_FNAPlatform.RunLoop (Microsoft.Xna.Framework.Game game) [0x0073b] in <2a509bd9153f43e2a56073000f1bcdc4>:0
at Microsoft.Xna.Framework.Game.Run () [0x0002f] in <2a509bd9153f43e2a56073000f1bcdc4>:0
at EteriumEngine3.Program.Main (System.String[] _Args) [0x000ac] in <8497a7f37b5f4ef0b9d592465e734721>:0
269266.590:0188:018c:trace:mscoree:CorExitProcess (1)
269266.590:0188:018c:trace:mscoree:CLRMetaHost_ExitProcess 1
The only way I can think of for an "ldc" instruction to be invalid is if the method stack size is wrong.
It's not obvious to me what the problem is with the stack size, but I can see that it's also calling a varargs pinvoke method, which isn't currently supported in Mono.
This should be fixed by Wine Mono 6.2.0.
There's currently no Proton release that includes the new Wine Mono, but the MSI can be manually installed for a specific game. @redmcg has a helpful guide here: https://github.com/redmcg/wine-mono/wiki#install-later-version
I've tried with proton-ge-16-1 (that includes wine-mono 6.3.0), and the game now launches, but it freezes when trying to load the interface.
I see several errors like this:
153259.607:010c:0110:fixme:uiautomation:UiaClientsAreListening (): stub
153291.802:010c:0110:fixme:uiautomation:UiaReturnRawElementProvider (00010112, 0, 0, 00000000): stub!
so it seems is using things not implemented in wine mono
Besides, there are some errors:
[00000118:] EXCEPTION handling: System.InvalidOperationException: Invoke or BeginInvoke cannot be called on a control until the window handle has been created.
Nothing extracted yet.
Compatibility Report
System Information
I confirm:
steam-280200.log
Symptoms
The launcher appears, but after clicking Play Etereum, it just closes
Reproduction
Just try to play the game