-
Notifications
You must be signed in to change notification settings - Fork 109
DirectDraw to Direct3D9 Conversion
Over the past couple of years I have been working on creating a feature to be able to convert ddraw's DirectDraw/Direct3D to Direct3D 9 (d3d9). The goal of this project is to fix compatibility issues with older games that use ddraw, as well allowing these games to use newer tools that require Direct3D 9 or higher.
The feature is built in dxwrapper and is called Dd7to9
. So far most of the DirectDraw APIs have been implemented, while only a handfull of the Direct3D APIs have been implemented.
Note: To view the status of the DirectDraw to Direct3D9 Conversion check out the Status Page.
To use this feature you can do the following:
- Download the latest dxwrapper release.
- Extract
ddraw.dll
,dxwrapper.dll
anddxwrapper.ini
files from the release and copy it to the game folder. - Open the
dxwrapper.ini
file and enable theDd7to9
feature. - Disable all application compatibility setting in the application.
- Start the game and enjoy.
If you run into issues try the following things:
- If the game is running in a window and graphics look messed up, try:
- disable in-game windowed mode and use fullscreen.
Dd7to9
does not fully support in-game windowed mode for many games. - enabling
FullscreenWindowMode
. Some older games may not have a fullscreen option, using this option may override the game and set it to fullscreen.
- disable in-game windowed mode and use fullscreen.
- If the movies/videos are not showing up or just displaying as black, try:
- enabling
FullscreenWindowMode
. Some older games use a mixture of GDI and ddraw. With Direct3D 9 a surface can only be shared with GDI when using windowed mode.
- enabling
- If the game crashes after alt+tab, try:
- enabling the
DdrawEmulateSurface
. This preserves the surface memory to fix bugs in some older games.
- enabling the
- If the game crashes, try:
- enabling the
DdrawEmulateSurface
. This preserves the surface memory to fix bugs in some older games. - enabling the
SingleProcAffinity
. Some games are not properly synchronized to run on multiple CPU cores, or simply don't properly handle powerful CPUs. - setting
DdrawLimitDisplayModeCount
to a value between 32 and 145. Some older games cannot handle a large number of display mode options. - enabling the
HandleExceptions
. This option tries to fix several common exceptions, such as the divide by zero exception in old games that were trying to calculate the CPU speed. - running the game with administrator rights. Some older games require admin rights to function properly.
- making sure you are using the software rendering and not 3D rendering, if the game supports it. Currently this only works with the 2D APIs. Some games only support 3D rendering and won't work with this feature.
- enabling the
Game | Notes | Support |
---|---|---|
Abe's Oddysee | Requires DdrawEmulateSurface to allow alt+tab |
Full |
Age of Wonders: Shadow Magic | Only works if Direct3D is disabled | Full |
Age of Wonders 2 | Only works if Direct3D is disabled | Full |
Alien Nations | Requires "Hardware Accelerator" option to be disabled | Full |
Anno 1602: Creation of a New World | Full | |
Arcanum Of Steamworks and Magick Obscura | Full | |
Atlantis: The Lost Tales (DirectDraw1) | Textures on faces missing | Partial |
Atlantis 2: Beyond Atlantis | Full | |
Atlantis 3: The New World | May require running with admin rights on some systems | Full |
Caesar 3 | Requires UseNativeResolution
|
Full |
Call To Power 2 | Intro video just shows black screen | Partial |
Castle Adventure | Full | |
Chris Sawyer's Locomotion | Full | |
Close Combat 2 | Full | |
Close Combat 3 | Full | |
Close Combat 4 | Full | |
Close Combat 5 | Full | |
Command & Conquer Gold | Full | |
Command & Conquer: Tiberian Sun | Full | |
Command & Conquer: Red Alert | Full | |
Command & Conquer: Red Alert 2 | Full | |
Commandos 2 | Full | |
Commandos BCD | Full | |
Creatures 2: The Albian Years | Requires enabling DdrawWriteToGDI and setting DdrawOverrideBitMode to 16
|
Full |
Creatures 3: Exodus | Requires enabling DdrawWriteToGDI and setting DdrawOverrideBitMode to 16
|
Full |
Dark Reign | Full | |
Deus | Full | |
DOSBox | Full | |
Diablo | Corrupted images in menu, requires DdrawEmulateSurface to prevent crashing on some systems |
Full |
Diablo Hellfire | Recommended to enable DdrawEmulateSurface
|
Full |
Diablo Spawn | Recommended to enable DdrawEmulateSurface
|
Full |
Digger XP | Full | |
Dune 2000 | Requires FullscreenWindowMode for mouse cursor to work |
Full |
Geneforge Saga 1 | Full | |
Geneforge Saga 2 | Full | |
Geneforge Saga 3 | Full | |
Geneforge Saga 4 | Full | |
Heroes of Might & Magic 3 | Full | |
Heroes of Might & Magic 4 | Requires fullscreen mode in game settings | Full |
Invictus: In the Shadow of Olympus | Full | |
Jagged Alliance 2 | Full | |
Jagged Alliance 2: Unfinished Business | Full | |
Jagged Alliance 2: Wildfire | Full | |
Jazz Jackrabbit 2 | Full | |
King's Quest 8 | Requires running in DirectDraw (Software) mode, can be configured by modifying Options.cs and setting this line assignGModeName Software
|
Full |
Konung 1 | Requires FullscreenWindowMode for movies |
Full |
Konung 2 | Requires FullscreenWindowMode for movies |
Full |
Lionheart: Legacy of the Crusader | Full | |
Majesty Gold HD | Requires windowed mode to be disabled in the MajXPrefs under %userprofile%\Documents\My Games\MajestyHD\
|
Full |
Metal Gear Solid | Full | |
Moto Racer | Requires "DirectX 3D" option disabled and EnableVSync enabled to slow down menu animation |
Full |
Moto Racer 2 | Full | |
Nethergate Resurrection | Part of the background is cut off on some of the menus when starting a new game | Partial |
Outlaws + A Handful of Missions | Full | |
Pacific General | Full | |
Patrician 3 | Requires running in Windows 7 compatibility mode with admin rights and setting DdrawLimitDisplayModeCount to 145
|
Full |
Pax Imperia Eminent Domain | Full | |
Populous: The Beginning | Requires the non-3D version and DdrawEmulateSurface , videos are not clear |
Partial |
Pro Pinball Big Race USA | Full | |
Pro Pinball Fantastic Journey | Full | |
Rage of Mages | Full | |
Rage of Mages II | Full | |
Return of TIM | Full | |
Runaway: A Road Adventure | Full | |
Septerra Core | Recommended to enable DdrawEmulateSurface
|
Full |
SimCity 3000 | Landscape is missing items | Partial |
SimCopter | Requires FullscreenWindowMode for intro movies |
Full |
Shogo | Requires software rendering and DdrawEmulateSurface
|
Full |
Star Wars: Galactic Battlegrounds | Full | |
Star Wars: Jedi Knight Dark Forces 2 | Requires 3D acceleration disabled and if using GOG version requires launching JK directly and bypassing GOG | Full |
Star Wars: Jedi Knight Mysteries of the Sith | Requires 3D acceleration disabled and if using GOG version requires launching JK directly and bypassing GOG | Full |
Star Wars: X-Wing vs TIE Fighter | Requires Power VR 3D Card to be disabled |
Full |
StarCraft | Full | |
StarCraft: Broodwars | Full | |
Stronghold | Note: if display looks messed up in the game try changing the resolution. | Full |
Stronghold Crusader | Note: if display looks messed up in the game try changing the resolution. | Full |
Stronghold Crusader Extreme HD | Note: if display looks messed up in the game try changing the resolution. | Full |
Stronghold HD | Note: if display looks messed up in the game try changing the resolution. | Full |
Throne of Darkness | Full | |
TIM Even More Contraptions | Full | |
Total Annihilation | Full | |
War Wind | Full | |
War Wind II | Minor corruption in the intro video | Full |
Warcraft 2 | Full | |
WarGames | Requires "Software Rasterizer" and SingleProcAffinity
|
Full |
Warhammer 40K: Final Liberation | Requires DdrawEmulateSurface
|
Full |
Warhammer 40K: Rites of War | Full | |
Warlords Battlecry | Full | |
Warlords Battlecry 2 | Full | |
Warlords Battlecry 3 | Crashes when clicking More Info
|
Partial |
WinQuake | Does not work with in-game windowed mode | Full |
Worms 2 | Full | |
Worms Armageddon | Full | |
Zeus and Poseidon | Requires UseNativeResolution
|
Partial |
Note: To view the status of the DirectDraw to Direct3D9 conversion check out the Status Page.