-
Notifications
You must be signed in to change notification settings - Fork 90
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 and, while many of the Direct3D APIs have been implemented, the Direct3D support is still limited.
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 settings in the application.
- Start the game and enjoy.
If you run into issues try the following things:
- 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. - enabling
DdrawDisableDirect3DCaps
. Some games will auto-switch to Direct3D and disabling the caps can allow them to use software rendering, which is needed for some games. - 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
- If the game graphics looks messed up, try:
- setting
DdrawOverrideBitMode
to a value of 16. Some older games the display mode to be set to 16-bit colors. - enabling
DdrawDisableDirect3DCaps
. Some games will auto-switch to Direct3D and disabling the caps can allow them to use software rendering, which is needed for some games.
- setting
- If in-game text is not working, 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 runs too fast, try:
- setting
LimitPerFrameFPS
to29.97
or59.94
or119.88
(many other values will work, these are just some common ones).
- setting
- If the game runs too slow, try:
- enabling
DdrawAutoFrameSkip
.
- enabling
Note | Status---- |
---|---|
The game is fully functional. | Full |
The game is functional but has some issues. | Partial |
The game is either not functional at all or unplayable. | None |
The game has not been tested with the latest build and support is unknown. | Unknown |
Note: Below are the status of games and whether they work with the Dd7to9
DirectDraw to Direct3D9 conversion feature.
Game | Notes | Support-- |
---|---|---|
Abe's Oddysee | Recommended to enable DdrawRemoveInterlacing to remove interlacing |
Full |
Age of Empires | Full | |
Age of Wonders: Shadow Magic | Full | |
Age of Wonders 2 | Full | |
Alien Nations | Full | |
American Conquest | May require using dsound.dll as the stub |
Full |
American Conquest: Fight Back | May require using dsound.dll as the stub |
Full |
Amerzone | Full | |
Anno 1602: Creation of a New World | Full | |
Arcanum Of Steamworks and Magick Obscura | Full | |
Atlantis: The Lost Tales (DirectDraw1) | Full | |
Atlantis 2: Beyond Atlantis | Full | |
Atlantis 3: The New World | May require running with Windows 7 compatibility mode on Windows 11 | Full |
Bad Mojo | Uses GDI for most of the game | None |
Baldurs Gate 1+2 | Full | |
Blood II: The Chosen | Requires using software renderer (If there are issues select "S3 Virge" video card under Advanced settings) | Full |
Caesar 3 | Requires setting DdrawOverrideBitMode to 16 for windowed mode |
Full |
Call To Power 2 | Full | |
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 | May requires using wsock32.dll stub | Full |
Commandos 2 | Full | |
Commandos BCD | Full | |
Corsairs Gold | Uses adraw.dll for GOG version | Full |
Creatures 2: The Albian Years | Requires setting DdrawOverrideBitMode to 16
|
Full |
Creatures 3: Exodus | Requires setting DdrawOverrideBitMode to 16
|
Full |
Cultures | Full | |
Cultures 2 | Full | |
Dark Reign | Full | |
Deadlock II | Requires enabling DdrawReadFromGDI and DdrawWriteToGDI for version 1.2 |
Full |
Deathtrap Dungeon | Requires using win32.dll as the stub |
Full |
Deus | Full | |
DOSBox | Full | |
Diablo | Full | |
Diablo Hellfire | Full | |
Diablo Spawn | Full | |
Digger XP | Full | |
Dracula 2 | Full | |
Dune 2000 | Full | |
Europa 1400: Gold Edition | None | |
Gangsters: Organized Crime | Uses GDI (FlipToGDISurface) | Partial |
Geneforge Saga 1 | Full | |
Geneforge Saga 2 | Full | |
Geneforge Saga 3 | Full | |
Geneforge Saga 4 | Full | |
God of Nea | Requires setting DdrawOverrideBitMode to 16 |
Full |
Heroes of Might & Magic 3 | Full | |
Heroes of Might & Magic 4 | Switching between in-game windowed and fullscreen mode does not always work right and may require you to restart the game | Full |
Icewind Dale: Complete | Full | |
Icewind Dale 2: Complete | Full | |
InkBall | Hangs using GetSurfaceFromDC could not lock surface because it is in device context | None |
Interstate 76 | Recommend setting LimitPerFrameFPS to 29.97 to slow down the game |
Full |
Interstate 82 | Crashes after starting a game | None |
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 | |
Killing Time | 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 |
Knights and Merchants: The Peasants Rebellion | Full | |
Konung 1 | Recommended enabling FullscreenWindowMode for movies |
Full |
Konung 2 | Recommended enabling FullscreenWindowMode for movies |
Full |
Legal Crime | Full | |
Lionheart: Legacy of the Crusader | Full | |
Majesty Gold HD | Full | |
Mega Man X4 | Requires FullscreenWindowMode
|
Full |
Metal Gear Solid | Requires disabling Direct3D | Full |
Monster Truck Madness 2 | Requires software rendering, need to click through a black screen when starting a race | Partial |
Moto Racer | Recommended to disbale "DirectX 3D" option disabled and set LimitPerFrameFPS to 29.97 to slow down menu animation |
Full |
Moto Racer 2 | Requires DdrawDisableDirect3DCaps to be set to run in software rendering |
Full |
Myst III: Exile | Requires playing in software mode | Full |
Nethergate Resurrection | Requires enabling FullscreenWindowMode to prevent the background from getting cut off on some of the menus |
Full |
NOX | Full | |
Outlaws + A Handful of Missions | Full | |
Pacific General | Full | |
Patrician 3 | Recommended to enable DdrawLimitDisplayModeCount
|
Full |
Pax Imperia Eminent Domain | Full | |
Pharaoh Gold | Requires setting DdrawOverrideBitMode to 16 for windowed mode |
Full |
Planescape Torment | Full | |
Police Quest: SWAT 2 | Does not work on Windows 11 | Full |
Populous: The Beginning | Requires the non-3D version | Full |
Port Royale | None | |
Port Royale 2 | None | |
Pro Pinball Big Race USA | Full | |
Pro Pinball Fantastic Journey | Full | |
Rage of Mages | Full | |
Rage of Mages II | Full | |
Railroad Tycoon II | Full | |
Return of TIM | Full | |
Requiem: Avenging Angel | Full | |
Runaway: A Road Adventure | Full | |
Sanitarium | Full | |
Septerra Core | Full | |
Settlers 3 Ultimate | Full | |
SimCity 3000 | Full | |
SimCopter | Recommeneded setting LimitPerFrameFPS to 29.97 to slow down the game so it does not crash |
Full |
Shadow Watch | Full | |
Shogo | Requires software rendering | 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 | Full | |
Stronghold Crusader | Full | |
Stronghold Crusader Extreme HD | Full | |
Stronghold HD | Full | |
Throne of Darkness | Full | |
TIM Even More Contraptions | Full | |
Tomb Raider 2 | Requires software rendering to be enabled in-game | Full |
Total Annihilation | Full | |
Tropico | Full | |
Twisted Metal 2 | Recommend setting LimitPerFrameFPS to 59.94 to slow down the game |
Full |
Uprising: Join or Die | Does not work on Windows 11 | Full |
Uprising 2: Lead and Destroy | Mission videos flash and show distorted pixels | Full |
War Wind | Full | |
War Wind II | Full | |
Warcraft 2 | Full | |
WarGames | Requires "Software Rasterizer" and 'SingleProcAffinity' and 'HandleExceptions' to avoid crashes after viewing the map and to remove delay when starting a mission, also recommended setting LimitPerFrameFPS to 29.97 |
Full |
Warhammer 40K: Chaos Gate | May require using dplayx.dll as the stub |
Full |
Warhammer 40K: Final Liberation | Full | |
Warhammer 40K: Rites of War | Full | |
Warlords 3: Darklords Rising | Full | |
Warlords Battlecry | Full | |
Warlords Battlecry 2 | Full | |
Warlords Battlecry 3 | Full | |
William’s Pinball Classics | Requires FullscreenWindowMode for videos |
Full |
Wing Commander IV | Does not show video after starting the game, FlipToGDISurface Not Implemented | None |
WinQuake | Full | |
Wizards and Warriors | Recommended to setting LimitPerFrameFPS to 119.88 to slow the game down a bit |
Full |
Worms 2 | Full | |
Worms Armageddon | Full | |
Zeus and Poseidon | Requires setting DdrawOverrideBitMode to 16 for windowed mode |
Full |
Game | Notes | Support---- |
---|---|---|
Age of Wonders | Partial | |
Age of Wonders 2 | Partial | |
Arx Fatalis | Full | |
Avernum: Escape From The Pit | Full | |
Avernum 2: Crystal Souls | Full | |
B-17 Flying Fortress: The Mighty 8th | Unknown | |
Battle Realms Complete | Unknown | |
Battle Isle: The Andosia War | Unknown | |
Black & White | Full | |
Blood 2: The Chosen | Unknown | |
Codemaster's Colin McRae Rally 1 | None | |
Codemaster's Colin McRae Rally 2 | Partial | |
Codename Outbreak | Unknown | |
Conquest: Frontier Wars | Unknown | |
Combat Mission: Beyond Overlord | Unknown | |
Croc 2 | Unknown | |
Dark Reign 2 | Full | |
Darkstone | Unknown | |
Descent 3 | Unknown | |
Deus Ex Game Of The Year | Recommended to use DdrawLimitDisplayModeCount
|
Full |
Diablo 2 | None | |
Disciples 2: Gold Elves | Full | |
Divine Divinity | Unknown | |
Dungeon Keeper 2 | Full | |
Earth 2150 Trilogy: Escape from the Blue Planet | Unknown | |
Empire Earth Gold | None | |
Empire Earth: The Art of Conquest | Unknown | |
Enemy Engaged: Comanche vs Hokum | Unknown | |
Etherlords | Unknown | |
Etherlords II | Unknown | |
Europa 1400: Gold Edition | Unknown | |
Evolva | Partial | |
Evil Islands | Unknown | |
FA-18E Super Hornet | Full | |
Gorky 17 | Unknown | |
Gothic | Unknown | |
Gothic 2 | Unknown | |
Hard Time | Full | |
Hitman: Codename 47 | Unknown | |
Hogs of War | Unknown | |
King's Quest 8 | Unknown | |
Knight Rider | Unknown | |
Knight Rider 2 | Full | |
Legacy of Kain: Soul Reaver | Unknown | |
MechWarrior 4 | Unknown | |
Midtown Madness | Full | |
Might and Magic VIII: Day of the Destroyer | Unknown | |
Might and Magic IX | Unknown | |
Monster Truck Madness 2 | Unknown | |
Moto Racer | Partial | |
Moto Racer 2 | None | |
Myst III Exile | Unknown | |
Populous: The Beginning | None | |
Raymond 2 | Unknown | |
Redline | Unknown | |
Return to Krondor | Full | |
Revenant | Unknown | |
Sacred Gold | Unknown | |
Shogo | Unknown | |
Simon the Sorcerer 3D | Unknown | |
Silent Hunter II | Unknown | |
Speed Busters | Unknown | |
Star Trek Armada 1 | Full | |
Star Trek Starfleet Academy | Unknown | |
Star Trek Starfleet Command | Full | |
Star Wars Rebellion | Unknown | |
Star Wars Rogue Squadron 3D | Unknown | |
Star Wars X-Wing Alliance | Unknown | |
StarTopia | Unknown | |
SWAT 3: Tactical Game of the Year Edition | Full | |
The Longest Journey | Unknown | |
The Nations Gold | Unknown | |
The Settlers IV Gold | Partial | |
The Summoner | Unknown | |
Tom Clancy's Rainbow Six | Unknown | |
Tomb Raider 3 | Unknown | |
Tomb Raider 4 | Unknown | |
Tomb Raider 5 | Unknown | |
Twisted Metal 2 | Unknown | |
Ultima IX Ascension | Partial | |
Unreal Gold | Recommended to use DdrawLimitDisplayModeCount
|
Full |
Unreal Tournament GOTY | Unknown | |
Vampire: The Masquerade | Partial | |
WarGames | Partial | |
Wizardry 8 | Full | |
Wizards and Warriors | Recommended to setting LimitPerFrameFPS to 119.933 to slow the game down a bit |
Partial |
X-COM Interceptor | Unknown |
Note: To view the status of the DirectDraw to Direct3D9 Conversion check out the Status Page.