-
Notifications
You must be signed in to change notification settings - Fork 104
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 is has black textures after alt+tab, try:
- enabling
D3d9to9Ex
. Direct3D9Ex has a better way of handling lost surfaces.
- enabling
- If the game crashes after alt+tab, try:
- enabling
DdrawEmulateSurface
. This preserves the surface memory to fix bugs in some older games.
- enabling
- If the game crashes, try:
- enabling
DdrawEmulateLock
. This emulates surface locks and preserves the locked memory to prevent older games from crashing it they attempt to access the memory even after unlocking it. - enabling
SingleProcAffinity
. Some games are not properly synchronized to run on multiple CPU cores, or simply don't properly handle powerful CPUs. - enabling
DdrawLimitDisplayModeCount
. Some older games cannot handle the large number of display mode options that exist in modern GPUs. - enabling
DdrawLimitTextureFormats
. Some older games cannot handle the large number of texture formats that exist in modern GPUs. - setting
DdrawExtraEmulationSize
to a number between 4000 and 10000. Some games will try and read data beyond the size of the actual surface. - enabling
DdrawKeepAllInterfaceCache
. Some older games try to access interfaces that are released. This option takes more memory but ensures that released interfaces don't get deleted but are reused. - 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. Some games only support 3D rendering and won't work with this feature.
- enabling
- 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. |
|
The game is functional but has some issues. |
|
The game is either not functional at all or unplayable. |
|
The game has not been tested with the latest build and support is 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 |
|
Age of Empires |
|
|
Age of Wonders: Shadow Magic |
|
|
Age of Wonders 2 |
|
|
Alien Nations |
|
|
American Conquest | May require using dsound.dll as the stub |
|
American Conquest: Fight Back | May require using dsound.dll as the stub |
|
Amerzone |
|
|
Anno 1602: Creation of a New World |
|
|
Arcanum Of Steamworks and Magick Obscura |
|
|
Atlantis: The Lost Tales (DirectDraw1) | Recommended to enabling ForceVsyncMode and SingleProcAffinity to fix potential thread dead lock issues |
|
Atlantis 2: Beyond Atlantis |
|
|
Atlantis 3: The New World | Recommended to enable SingleProcAffinity to fix potential thread dead lock issues |
|
Bad Mojo |
|
|
Baldurs Gate 1+2 |
|
|
Balls of Steel | Recommended to use winmm.dll as the stub and to set WinVersionLie to 95
|
|
Blood II: The Chosen | Requires using software renderer (If there are issues select "S3 Virge" video card under Advanced settings) |
|
Caesar 3 | Requires setting DdrawOverrideBitMode to 16 for windowed mode |
|
Call To Power 2 |
|
|
Castle Adventure |
|
|
Chris Sawyer's Locomotion |
|
|
Close Combat 2 |
|
|
Close Combat 3 |
|
|
Close Combat 4 |
|
|
Close Combat 5 |
|
|
Command & Conquer Gold |
|
|
Command & Conquer: Tiberian Sun |
|
|
Command & Conquer: Red Alert |
|
|
Command & Conquer: Red Alert 2 |
|
|
Commandos | May requires using wsock32.dll stub |
|
Commandos 2 |
|
|
Commandos BCD |
|
|
Corsairs Gold | Uses adraw.dll for GOG version |
|
Creatures 2: The Albian Years | Requires setting DdrawOverrideBitMode to 16
|
|
Creatures 3: Exodus | Requires setting DdrawOverrideBitMode to 16
|
|
Cultures |
|
|
Cultures 2 |
|
|
Dark Reign |
|
|
Deadlock II | Requires enabling DdrawReadFromGDI and DdrawWriteToGDI for version 1.2 |
|
Deathtrap Dungeon | Requires using win32.dll as the stub |
|
Deus |
|
|
DOSBox |
|
|
Diablo |
|
|
Diablo Hellfire |
|
|
Diablo Spawn |
|
|
Digger XP |
|
|
Dracula 2 |
|
|
Dune 2000 |
|
|
Europa 1400: Gold Edition |
|
|
Gangsters: Organized Crime | Uses GDI (FlipToGDISurface) |
|
Geneforge Saga 1 |
|
|
Geneforge Saga 2 |
|
|
Geneforge Saga 3 |
|
|
Geneforge Saga 4 |
|
|
God of Nea | Requires setting DdrawOverrideBitMode to 16 |
|
Heroes of Might & Magic 2 | Recommended to enable SingleProcAffinity to fix potential thread dead lock issues |
|
Heroes of Might & Magic 3 |
|
|
Heroes of Might & Magic 4 |
|
|
Icewind Dale: Complete |
|
|
Icewind Dale 2: Complete |
|
|
InkBall | Hangs using GetSurfaceFromDC could not lock surface because it is in device context |
|
Interstate 76 | Recommend setting LimitPerFrameFPS to 29.97 to slow down the game |
|
Interstate 82 |
|
|
Invictus: In the Shadow of Olympus |
|
|
Jagged Alliance 2 |
|
|
Jagged Alliance 2: Unfinished Business |
|
|
Jagged Alliance 2: Wildfire |
|
|
Jazz Jackrabbit 2 |
|
|
Killing Time |
|
|
King's Quest 8 | Requires running in DirectDraw (Software) mode, can be configured by modifying Options.cs and setting this line assignGModeName Software
|
|
Knights and Merchants: The Peasants Rebellion |
|
|
Konung 1 |
|
|
Konung 2 |
|
|
Legal Crime |
|
|
Lionheart: Legacy of the Crusader |
|
|
Majesty Gold HD |
|
|
Mega Man X4 | Requires FullscreenWindowMode
|
|
Metal Gear Solid | Requires disabling Direct3D |
|
Monster Truck Madness 2 | Requires software rendering, need to click through a black screen when starting a race |
|
Moto Racer | Recommended to set LimitPerFrameFPS to 29.97 to slow down menu animation |
|
Moto Racer 2 |
|
|
Myst III: Exile | Requires playing in software mode |
|
Nethergate Resurrection | Requires enabling FullscreenWindowMode to prevent the background from getting cut off on some of the menus |
|
NOX |
|
|
Outlaws + A Handful of Missions |
|
|
Pacific General |
|
|
Patrician 3 |
|
|
Pax Imperia Eminent Domain |
|
|
Pharaoh Gold | Requires setting DdrawOverrideBitMode to 16 for windowed mode |
|
Planescape Torment |
|
|
Police Quest: SWAT 2 |
|
|
Populous: The Beginning |
|
|
Port Royale |
|
|
Port Royale 2 |
|
|
Pro Pinball Big Race USA |
|
|
Pro Pinball Fantastic Journey |
|
|
Rage of Mages |
|
|
Rage of Mages II |
|
|
Railroad Tycoon II |
|
|
Return of TIM |
|
|
Requiem: Avenging Angel |
|
|
Runaway: A Road Adventure |
|
|
Sanitarium |
|
|
Septerra Core |
|
|
Settlers 3 Ultimate |
|
|
SimCity 3000 |
|
|
SimCopter | Recommeneded setting LimitPerFrameFPS to 29.97 to slow down the game so it does not crash |
|
Shadow Watch |
|
|
Shogo | Requires software rendering |
|
Star Wars: Galactic Battlegrounds |
|
|
Star Wars: Jedi Knight Dark Forces 2 | Requires 3D acceleration disabled and if using GOG version requires launching JK directly and bypassing GOG |
|
Star Wars: Jedi Knight Mysteries of the Sith | Requires 3D acceleration disabled and if using GOG version requires launching JK directly and bypassing GOG |
|
Star Wars: X-Wing vs TIE Fighter | Requires Power VR 3D Card to be disabled |
|
StarCraft |
|
|
StarCraft: Broodwars |
|
|
Stronghold |
|
|
Stronghold Crusader |
|
|
Stronghold Crusader Extreme HD |
|
|
Stronghold HD |
|
|
Throne of Darkness |
|
|
TIM Even More Contraptions |
|
|
Tomb Raider 2 | Requires software rendering to be enabled in-game |
|
Total Annihilation |
|
|
Tropico |
|
|
Uprising: Join or Die | Does not work on Windows 11 |
|
Uprising 2: Lead and Destroy | Mission videos flash and show distorted pixels |
|
War Wind |
|
|
War Wind II |
|
|
Warcraft 2 |
|
|
WarGames | Requires "Software Rasterizer" and 'SingleProcAffinity', also recommended setting LimitPerFrameFPS to 29.97 |
|
Warhammer 40K: Chaos Gate | May require using dplayx.dll as the stub |
|
Warhammer 40K: Final Liberation |
|
|
Warhammer 40K: Rites of War |
|
|
Warlords 3: Darklords Rising |
|
|
Warlords Battlecry |
|
|
Warlords Battlecry 2 |
|
|
Warlords Battlecry 3 |
|
|
William’s Pinball Classics | Requires FullscreenWindowMode for videos |
|
WinBolo |
|
|
Wing Commander IV | Does not show video after starting the game, FlipToGDISurface Not Implemented |
|
WinQuake |
|
|
Wizards and Warriors |
|
|
Worms 2 |
|
|
Worms Armageddon |
|
|
Zeus and Poseidon | Requires setting DdrawOverrideBitMode to 16 for windowed mode |
|
Zoo Tycoon |
|
Game | Notes | Support------ |
---|---|---|
Age of Wonders |
|
|
Age of Wonders 2 |
|
|
Arx Fatalis |
|
|
Avernum: Escape From The Pit |
|
|
Avernum 2: Crystal Souls |
|
|
B-17 Flying Fortress: The Mighty 8th |
|
|
Battle Realms Complete |
|
|
Battle Isle: The Andosia War |
|
|
Black & White |
|
|
Blood 2: The Chosen |
|
|
Codemaster's Colin McRae Rally 1 |
|
|
Codemaster's Colin McRae Rally 2 |
|
|
Codename Outbreak | Requires DdrawIntroVideoFix for intro videos |
|
Conquest: Frontier Wars |
|
|
Combat Mission: Beyond Overlord |
|
|
Croc 2 |
|
|
Dark Reign 2 |
|
|
Darkstone |
|
|
Descent 3 |
|
|
Deus Ex Game Of The Year | Recommended to use DdrawLimitDisplayModeCount
|
|
Diablo 2 |
|
|
Disciples 2: Gold Elves |
|
|
Discord Times |
|
|
Divine Divinity |
|
|
Dungeon Keeper |
|
|
Dungeon Keeper 2 |
|
|
Earth 2150 Trilogy: Escape from the Blue Planet |
|
|
Empire Earth Gold |
|
|
Empire Earth: The Art of Conquest |
|
|
Enemy Engaged: Comanche vs Hokum |
|
|
Etherlords |
|
|
Etherlords II |
|
|
Europa 1400: Gold Edition |
|
|
Evolva |
|
|
Evil Islands |
|
|
FA-18E Super Hornet | Alt+Tab doesn't work right. |
|
Fallout Tactics |
|
|
FIFA 99 |
|
|
Gorky 17 |
|
|
Gothic |
|
|
Gothic 2 |
|
|
Hard Time |
|
|
Hitman: Codename 47 |
|
|
Hogs of War |
|
|
King's Quest 8 |
|
|
Knight Rider |
|
|
Knight Rider 2 |
|
|
Legacy of Kain: Soul Reaver | Missing textures in some places. |
|
MechWarrior 4 |
|
|
Midtown Madness |
|
|
Might and Magic VIII: Day of the Destroyer |
|
|
Might and Magic IX |
|
|
Monster Truck Madness 2 |
|
|
Moto Racer |
|
|
Moto Racer 2 |
|
|
Myst III Exile |
|
|
Populous: The Beginning |
|
|
Raymond 2 |
|
|
Redline |
|
|
Return to Krondor | Intro missing when playing in 3D mode. Crashes after exiting the game. |
|
Requiem: Avenging Angel |
|
|
Revenant | Requires disabling in-game "fast surface locks". |
|
Sacred Gold |
|
|
SCP Containment Breach |
|
|
Shogo |
|
|
SimCity 4 |
|
|
SimCity 3000 |
|
|
Simon the Sorcerer 3D |
|
|
Silent Hunter II |
|
|
Speed Busters |
|
|
Star Trek Armada 1 | Requires enabling DdrawReadFromGDI and DdrawWriteToGDI for menu animations to work |
|
Star Trek Starfleet Academy |
|
|
Star Trek Starfleet Command |
|
|
Star Wars Rebellion |
|
|
Star Wars Rogue Squadron 3D |
|
|
Star Wars X-Wing Alliance |
|
|
StarTopia |
|
|
SWAT 3: Tactical Game of the Year Edition |
|
|
The Longest Journey |
|
|
The Nations Gold |
|
|
The Settlers IV Gold |
|
|
The Summoner |
|
|
Tom Clancy's Rainbow Six |
|
|
Tomb Raider 3 |
|
|
Tomb Raider 4 |
|
|
Tomb Raider 5 |
|
|
Tropico |
|
|
Twisted Metal 2 | Recommend setting LimitPerFrameFPS to 59.94 to slow down the game |
|
Ultima IX Ascension |
|
|
Unreal Gold | Recommended to use DdrawLimitDisplayModeCount
|
|
Unreal Tournament GOTY |
|
|
Vampire: The Masquerade |
|
|
WarGames |
|
|
Wizardry 8 |
|
|
Wizards and Warriors |
|
|
X-COM Interceptor |
|
Note: To view the status of the DirectDraw to Direct3D9 Conversion check out the Status Page.