Dxvk: [d3d9] Star Wars - Republic Commando crashes when starting a new game

Created on 9 Feb 2020  路  9Comments  路  Source: doitsujin/dxvk

This does not happen with WineD3D, of course, hence the bug report.

The intro videos have to be skipped because they get stuck while playing, but that's a Wine problem. Skipping them gets you on the main menu both with DXVK ...

menu_dxvk

... and WineD3D.

menu_WineD3D

But starting a new game works only with WineD3D.

new_game_WineD3D

Being an Unreal Engine 2 title, I've used d3d8to9 to patch it into DXVK and later into WineD3D, to confirm it works with the latter. To be honest, I was rather surprised when it crashed, and delayed reporting this until I was sure it wasn't something I did wrong, because all the other Unreal Engine 2 titles I've run this way so far performed admirably (Unreal Tournament 2004, Advent Rising).

To add insult to injury, I'm unable to get an apitrace with WineD3D, since the process makes the game crash right from the start. I was able, however, to get an apitrace with DXVK - I hope it will prove sufficient to shed some light on the matter.

Software information

Star Wars - Republic Commando (GOG version)

System information

  • GPU: GeForce GTX 1070
  • Driver: 440.59.0
  • Wine version: 5.1 Staging
  • DXVK version: v1.5.4

Apitrace file(s)

SWRepublicCommando_dxvk.trace.tar.xz

Log files

Most helpful comment

I already discussed this on Discord with Josh but I'll just drop it here too for the sake of documentation.

The game tries to create a texture with the format L6V5U5, which DXVK (and most D3D9 drivers apparently) doesn't support.

IDirect3DDevice9::CreateTexture(this = 0x839fdf8, Width = 512, Height = 512, Levels = 4, Usage = 0x0, Format = D3DFMT_L6V5U5, Pool = D3DPOOL_MANAGED, ppTexture = &0x85750d8, pSharedHandle = NULL) = D3D_OK

While it should be possible to make that work, I think it's pretty low priority for now given that it doesnt work on Windows drivers either and that a workaround (the mod I posted earlier) exists.

All 9 comments

So, 20 minutes later I had the great idea to set every graphical setting to rock bottom low just for the kicks and try again. Sure enough, starting a new game worked.

I narrowed it down to an in-game setting called: Bumpmapping Quality. If it's set to Low, things start working.

Here's an apitrace of the first few moments of a new game: SWRepublicCommando_dxvk_low_bumpmap.trace.tar.xz

I narrowed it down to an in-game setting called: Bumpmapping Quality. If it's set to Low, things start working.

That's a game bug that also makes it crash on Windows. There's a mod that fixes it. https://www.moddb.com/mods/star-wars-republic-commando-graphics-fix/downloads/star-wars-republic-commando-graphics-fix

I narrowed it down to an in-game setting called: Bumpmapping Quality. If it's set to Low, things start working.

That's a game bug that also makes it crash on Windows. There's a mod that fixes it. https://www.moddb.com/mods/star-wars-republic-commando-graphics-fix/downloads/star-wars-republic-commando-graphics-fix

Interesting... but it does work with WineD3D. I played it on Windows years ago and don't remember this issue, but that could just be a bug in my memory :). I'll try the fix with DXVK and report back, thanks for the link.

Bumpmapping on high on WineD3D works?

Bumpmapping on high on WineD3D works?

Weirdly, yes. The screenshot's above.

In any case, the mod fix shared by K0bin works like a charm with the added side-effect of chipping in support for 1080p/4K among other things, so I'm not one to complain.

You can mark this as a game-specific bug and close it.... unless you really want to investigate it further. Though if it's present in Windows as well, as per K0bin's feedback, I don't think it's worth the effort.

I'd be interested in fixing it, I think I have an idea what the problem is...

I already discussed this on Discord with Josh but I'll just drop it here too for the sake of documentation.

The game tries to create a texture with the format L6V5U5, which DXVK (and most D3D9 drivers apparently) doesn't support.

IDirect3DDevice9::CreateTexture(this = 0x839fdf8, Width = 512, Height = 512, Levels = 4, Usage = 0x0, Format = D3DFMT_L6V5U5, Pool = D3DPOOL_MANAGED, ppTexture = &0x85750d8, pSharedHandle = NULL) = D3D_OK

While it should be possible to make that work, I think it's pretty low priority for now given that it doesnt work on Windows drivers either and that a workaround (the mod I posted earlier) exists.

This should be fixed in master. Can someone re-test.

This should be fixed in master. Can someone re-test.

I've retested and it works. Thanks a lot!

Was this page helpful?
0 / 5 - 0 ratings

Related issues

mozo78 picture mozo78  路  56Comments

buscher picture buscher  路  79Comments

oscarbg picture oscarbg  路  51Comments

oangelo picture oangelo  路  53Comments

doitsujin picture doitsujin  路  65Comments