Jump to content

About This File

Source: https://github.com/narzoul/DDrawCompat

From author:

Quote

Introduction

DDrawCompat is a DirectDraw wrapper aimed at fixing compatibility and performance issues with games based on DirectX 7 and below on newer versions of Windows (Vista/7/8/10). Games using DirectX 8 and above for rendering are not affected as they don't use ddraw.dll.

DDrawCompat does not use any external renderer (such as OpenGL), nor even a newer version of DirectX. It only changes how DirectDraw (and GDI) is used internally. Since older versions of Direct3D (v7 and below) also rely on DirectDraw, DDrawCompat may be useful for those renderers as well.

 

License

Source code is licensed under the Free Public License 1.0.0. See LICENSE.txt in the repository root for details. The same terms apply for the entire repository, not just for the versions in which the license file appears.

Binary releases are licensed under the Microsoft Research Shared Source License Agreement (Non-commercial Use Only). Each release contains the exact terms in license.txt.

Note that DDrawCompat neither comes from, nor is endorsed by Microsoft. Use it at your own risk!

 

Requirements

  • Windows Vista, 7, 8 or 10
  • DirectDraw (comes preinstalled with Windows)

 

Installation

Download the latest binary release from the repository's releases page. Unzip the file and copy the extracted ddraw.dll to any DirectDraw based game's installation directory, next to the main executable file. If the main executable is in a subdirectory of the installation directory, you must put ddraw.dll in the same subdirectory.

If there is already an existing ddraw.dll file there, it is probably another DirectDraw wrapper intended to fix some issues with the game. You can still try to replace it with DDrawCompat's ddraw.dll, but make sure you create a backup of the original DLL first.

Do not attempt to overwrite ddraw.dll in a Windows system directory, it is currently not supported and will not work.

If you put the dll in the correct place, then (assuming the game really uses DirectDraw) every time you launch the game a ddraw.log file should be created in the same directory, containing some basic log messages. If something goes wrong, it is worth checking this log file for possible error messages.

 

Uninstallation

Delete DDrawCompat's ddraw.dll from the game's directory and restore the original ddraw.dll file (if there was any). You can also delete the ddraw.log file.

 

Configuration

DDrawCompat aims to minimize the amount of user configuration required to make games compatible. It currently doesn't have any configuration options. This may change in future versions, if the need arises.

 

Troubleshooting

If some compatibility options are set for the game via the Compatibility tab of the executable's Properties window, try disabling or changing them.

If that doesn't help, advanced users can access additional compatibility options using Microsoft's ACT (Application Compatibility Toolkit). This is not a user guide for ACT, you'll have to look for that elsewhere. However, here are some of the compatibility fixes I found useful:

  • Disable8And16BitD3D: It can help with performance issues in games that use 8 and 16 bit color modes. This fix is available only in the Compatibility Modes listing and not under Compatibility Fixes.
  • DXPrimaryEmulation: Use it with the -DisableMaxWindowedMode parameter. It can help with performance issues. DDrawCompat enables this automatically.
  • ForceSimpleWindow: If you are not using DXPrimaryEmulation and the game is running in full screen mode with visible window borders, then this may help remove the borders.
  • NoGDIHWAcceleration: Despite what the name suggests, this can improve performance. It can be used as an alternative to DXPrimaryEmulation. Usually using both will not provide additional performance benefits.
  • SingleProcAffinity: Old games often have various issues when running on multiple CPU cores. This fix will force a game to run on a single core. DDrawCompat enables this automatically.
  • Win98VersionLie: Some games use different code paths based on the reported OS version or may not run if the version is not recognized. This and other similarly named fixes report the specified fake Windows version to the game and may help with various issues.

 

Development

DDrawCompat is written in C++ using Microsoft Visual Studio Community 2015.

Compilation depends on Detours Express 3.0. It needs to be built first before DDrawCompat can be built. Change the include and library paths as needed if you didn't install/build Detours in the default directory.

The project initially used the Windows 8.1 SDK and WDK, but some commits after the v0.2.1 release it was updated to use the Windows 10 SDK and WDK instead. The exact version required can be checked in the project properties in Visual Studio (General tab / Target Platform Version). Commits using an older platform version can probably still be built with a newer version by retargeting the project to the appropriate SDK.

About

DirectDraw compatibility and performance enhancements for Windows Vista, 7, 8 and 10

Resources

 

License

 

Packages

No packages published

Languages

 
  •  

C++ 100.0%

 


What's New in Version v0.5.2   See changelog

Released

General changes:

  • Fixed incompatibilities with Empire Earth NeoEE mod (#251)
  • Fixed black screen and ClipCursor issues in Mig Alley main menu
  • Fixed main menu issues with WinZMod (#196)
  • Fixed sporadic crashes caused by registry hooks
  • Fixed Dark Earth screen transition effects (#260)
  • Fixed invisible menu buttons after alt-tabbing in Red Alert 2 (#262)
  • Fixed slow loading of Skirmish menu in Red Alert 2 (#288)
  • Fixed broken keyboard input in some games (#254)
  • Fixed a GDI resource leak when NVIDIA overlay is enabled (#282)
  • Fixed video playback issues in Prince of Persia 3D (#273)
  • Fixed Intel Indeo Video codec support on Windows 7 (#274)
  • Fixed display driver timeouts caused by invalid FPU state (#293)
  • Fixed rendering issues caused by custom viewports on AMD GPUs (#290)
  • Fixed sporadic deadlocks in some games when alt-tabbing
  • Fixed handling of invalid alpharef render state value on old Intel drivers (#295)
  • Fixed flashing screen in Glover (#295)
  • Fixed inaccurate cursor clipping in DPI unaware mode
  • Fixed some display issues when using D3D9On12 with a RenderColorDepth setting not matching the application's color depth
  • When ForceD3D9On12 is off, Intel GPUs that use D3D9On12 by default will now try to use igd9trinity32.dll instead
  • Available surface formats now include all DX9 formats (#259)
  • Added support for Steam overlay in fullscreen mode

Updated configuration settings:

  • AltTabFix: merged keepwithmemnp into keepvidmem as a parameter, added noactivateapp option
  • RenderColorDepth: default value changed to 32

New configuration settings:

  • SurfacePatches

 





User Feedback

Recommended Comments

There are no comments to display.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Add a comment...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Found PCGamingWiki useful? Please consider making a Donation or visiting our Patreon.
  • Who's Online   1 Member, 0 Anonymous, 210 Guests (See full list)

  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Member Statistics

    11,366
    Total Members
    3,870
    Most Online
    heavenlea
    Newest Member
    heavenlea
    Joined
×
×
  • Create New...