iXit / Mesa-3D

Please use official https://gitlab.freedesktop.org/mesa/mesa/ !
https://github.com/iXit/Mesa-3D/wiki
66 stars 13 forks source link

Civilization IV - Beyond the Sword Issues #351

Closed Drek282 closed 3 years ago

Drek282 commented 5 years ago

Civilization IV - Beyond the Sword has always been one of the most demanding d3d9 games out there, and a great one to test with, especially running a monster mod like Ashes of Erebus installed.

  1. There are resource graphics in the city displays that show the resources that city tiles provide. Those aren't displaying properly. I think it uses sprites and where there are multiple sprites, only one of them is displaying.

  2. Performance is choppy. Flying around the map using the cursor keys isn't smooth, as it is with the MS d3d9 dlls.

  3. The backsplash for the loading window isn't displaying. I think it is being rendered behind the window. Not that this happens as well with the MS d3d9 dlls.

axeldavy commented 5 years ago

I played it a few years ago (I love Road to the War mod), and I fixed the visual issues I found.

There's not much we can do about 2. We don't reimplement the d3d9 helper dlls and rely on wine ones. If they are slow, we are slow too.

As for 3., does it work with wined3d ? These kind of issues are not easy to fix.

Could you take a screenshot for 1., such that I know what to look at ?

Drek282 commented 5 years ago

You rock, I had heard you rock, and you do. :)

1. This is what they should look like: should_be This is what they look like with gallium-nine: is

  1. I will try submitting a bug report to wine then, although I don't expect that to go as well as this has. :)

  2. It doesn't work with any wine implementation I have seen so far, other than very inconsistently. Following is a screen of it. It's supposed to have a pretty little splash screen on it, but based on little flashes that you see of the splash, and the fact that it does occasionally display, I think it is being rendered behind the window. It isn't all that important anyway. Strictly cosmetic. loading_window

Drek282 commented 5 years ago
  1. So if gallium-nine uses the wine d3d9 dlls, does that mean it can be used with the MS d3d9 dlls instead?
Drek282 commented 5 years ago

To answer my own question, it appears that running gallium-nine together with the official MS helper dlls fixes issues 1 and 2. So they probably aren't a gallium-nine issue, but an official wine d3d9 issue.

Unless of course I don't have gallium-nine running and I only think I do. But according to ninewinecfg.exe, gallium-nine standalone is funtional.

axeldavy commented 5 years ago
  1. definitely worked last I tried, so it's probably as you say an issue restricted to the wine dlls. It's not necessarily a bug in their dll, they could just use a different path than the MS ones, and we would have a bug there. If it works with wined3d, then it's likely that.

  2. Yes you can. Except d3d9.dll, the d3d9* dlls are helper functions and can work with any d3d9.dll.

Drek282 commented 5 years ago

Well, that's life changing, at least in my little world. Thank you very much. Why is that information so hard to find on google? :)

Drek282 commented 4 years ago

I have another question. If I can use gallium-nine with native d3dx9, does that mean I can also use it with d9vk?

axeldavy commented 4 years ago

No, d9vk, just like wined3d and gallium-nine, replaces the main d3d9.dll. Thus it's either one or the other.

Drek282 commented 4 years ago

Thanks, I guessed that but wasn't sure.

axeldavy commented 4 years ago

I tried again with mesa master, and the game renders perfectly fine. Maybe it was a temporary mesa regression ?

Drek282 commented 4 years ago

I'm running it fine with galliumnine now. It runs perfectly with the following winetricks verbs:

d3dx9 devenum galliumnine msxml3 msxml4 msxml6 vcrun2005 vcrun2010 vcrun2012 vcrun2013 vcrun2015

I'm thinking I may have been missing devenum. But now that I've got the recipe right, it runs better with galliumnine than it does with any of the other options. So thank you.