Skip to content

Installation guide

narzoul edited this page Apr 8, 2021 · 1 revision

In most cases, simply dropping the ddraw.dll file extracted from one of the binary releases into the target executable's directory should be sufficient.

However, sometimes this is not enough, and the game may still use only the system ddraw.dll file, bypassing DDrawCompat entirely. In this case, one of the below methods could help, though not all methods will work for all games.

Method 1: Rename ddraw.dll to dciman32.dll

After copying ddraw.dll next to the target executable file, rename it to dciman32.dll.

This should help in case the game loads ddraw.dll dynamically (via one of the LoadLibrary APIs) and specifies an absolute path to the ddraw.dll file located in the Windows system directory. A known example is the Cossacks series.

This method is supported since v0.3.0 only.

Method 2: Add COM redirection keys for DirectDraw in the registry (for Windows 8/10 only)

Download the Tools/InstallDDrawCOMRedirection.reg file from the repository and execute it. If the confirmation prompt is accepted, this will add some keys to the system registry that enables using a local ddraw.dll file for games that create DirectDraw objects via the Component Object Model (COM) APIs. A known example is Warhammer 40000: Chaos Gate.

Note that this only affects the currently logged in Windows user account, so the .reg file needs to be executed individually by each user that requires it. It will automatically take effect for all COM-based games for the given user.

If you want to remove this fix, download and execute the Tools/UninstallDDrawCOMRedirection.reg file instead (for each affected user account).

Method 3: Rename the target executable file

Simply rename the target executable file to something else, and use that to launch the game. This method can be useful for getting rid of some game-specific built-in Windows compatibility shims that force ddraw.dll to be loaded directly from the Windows system directory. (More specifically, any shim that causes AcSpecfc.dll to be loaded will result in this behavior.) A known example is Gangsters: Organized Crime.

However, this can also cause necessary compatibility shims to be ignored, and may not be applicable if some other launcher requires the file name to be intact.

Method 4: Use an external application manifest

This can be an alternative to the previous method. Download the Tools/game.exe.manifest file from the repository, put it in the target directory, and rename it to match the target executable filename plus an additional .manifest extension (e.g. gangsters.exe.manifest).

Additionally, because Windows caches manifest files, the executable file's last modified timestamp may need to be changed as well. This can be done e.g. via PowerShell (change the executable path as needed):

Get-Item -Path C:\Games\Gangsters\gangsters.exe | % {$_.LastWriteTime = (Get-Date)}