elishacloud / dxwrapper

Fixes compatibility issues with older games running on Windows 10/11 by wrapping DirectX dlls. Also allows loading custom libraries with the file extension .asi into game processes.
zlib License
1.16k stars 83 forks source link

The ddraw.dll in the game folder is being ignored on Win10 1909 #64

Closed adrianer closed 1 month ago

adrianer commented 4 years ago

The ddraw.dll (together with dxwrapper.dll and dxwrapper.ini) I've placed in the game folder is being ignored on Win10 1909 - at least it seems to have no effect and also no dxwrapper-exename.log file gets created. The same game + dll combination works on a Win7 installation without a problem... Is there a way to make the game "eat it" on the newest Win10?

The game is: The Settlers 3 from GoG

elishacloud commented 4 years ago

The Settlers 3 uses DirectX 6. However, it loads ddraw.dll via COM component. See this thread for more details. With Windows 10 when you load ddraw.dll this way it will always load it from the System32 folder.

The work around is to rename the ddraw.dll in dxwrapper to something else. For this particular game you can use dsound.dll instead. However, when I tested this it appears that dxwrapper has some issues with this game for some reason. I will have to take a look at it later.

nathanielcwm commented 2 years ago

Same issue with Settlers 4. But the log files are created.

ddraw.log dxwrapper-s4_main.log

Seroczynski commented 2 years ago

Seems the issue is also present with Settlers IV Gold Edition from GOG when using Windows 11 Pro 21H2 22000.434.

The Editor does seems to function as expected.

elishacloud commented 1 year ago

If the dxwrapper log file is being created then it means that dxwrapper.dll is being loaded by ddraw.dll or some other stub. But from looking at the log file it looks like there are no settings in the dxwrapper.ini file that are taking effect on the game.

For Settlers 4, it uses Direct3D6, I think. So here are the suggestions:

  1. If you are not seeing the dxwrapper log file then make sure that the ddraw.dll and the dxwrapper.dll files are in the folder where the exe file is located.
  2. Try enableing the EnableDdrawWrapper setting is enabled in the dxwrapper.ini file. If that setting does not exist then add it.
elishacloud commented 1 month ago

Closing issue.