ValveSoftware / Proton

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

STAR WARS™ Starfighter™ (32350) #384

Open TwoD opened 5 years ago

TwoD commented 5 years ago

Runs great, but make sure to save the keyboard bindings or the in-game menus may not work correctly. System Info

tingvarsson commented 5 years ago

was about to write an issue on the keyboard stuff as it drove me quite mad, thanks for the info @TwoD.

codeman101 commented 5 years ago

Game works but it could use a bit more help because trying to use xbox 360 controller causes automatic spinning to the right when in fighter.

corvusd commented 2 years ago

There are an important issue with the cinematics. Not show the video. Show black or crash the game.

whizse commented 4 months ago

The cause of the black videos is WineD3D lacking support for multisample texture uploads:

015c:fixme:d3d:wined3d_texture_gl_upload_data Not supported for multisample textures.

It can be worked around by disabling multisample textures. Either with regedit for the prefix (HKEY_CURRENT_USER > Software > Wine > Direct3D > MultisampleTextures (DWORD value 0x0)) or by introducing a hack for the game:

diff --git a/dlls/wined3d/wined3d_main.c b/dlls/wined3d/wined3d_main.c
index cbe7f65a841..cf10847c3a5 100644
--- a/dlls/wined3d/wined3d_main.c
+++ b/dlls/wined3d/wined3d_main.c
@@ -491,6 +491,12 @@ static BOOL wined3d_dll_init(HINSTANCE hInstDLL)
         else putenv( "VKD3D_SHADER_DEBUG=none" );
     }

+    /* Fix for black videos in STAR WARS Starfighter */
+    const char *sgi;
+
+    if ((sgi = getenv("SteamGameId")) && !strcmp(sgi, "32350"))
+        wined3d_settings.multisample_textures = 0;
+
     vkd3d_set_log_callback(vkd3d_log_callback);

     return TRUE;

Another, cleaner solution is to use d8vk which seems to support this missing feature.

Note: Only quickly tested with the GOG version. Not sure if disabling multisamplet extures have a negative impact on the graphics or if d8vk have full support for the game.