-
Notifications
You must be signed in to change notification settings - Fork 120
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.dllanddxwrapper.inifiles from the release and copy it to the game folder. - Open the
dxwrapper.inifile and enable theDd7to9feature. - 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
DdrawExtraEmulationSizeto 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
DdrawOverrideBitModeto 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
LimitPerFrameFPSto29.97or59.94or119.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) | Recommended to enabling ForceVsyncMode and SingleProcAffinity to fix potential thread dead lock issues |
Full |
| Atlantis 2: Beyond Atlantis |
Full |
|
| Atlantis 3: The New World | Recommended to enable SingleProcAffinity to fix potential thread dead lock issues |
Full |
| Bad Mojo |
Full |
|
| Baldurs Gate 1+2 |
Full |
|
| Balls of Steel | Recommended to use winmm.dll as the stub and to set WinVersionLie to 95
|
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 2 | Recommended to enable SingleProcAffinity to fix potential thread dead lock issues |
Full |
| Heroes of Might & Magic 3 |
Full |
|
| Heroes of Might & Magic 4 |
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 |
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 |
|
| 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 |
Full |
|
| Konung 2 |
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 set LimitPerFrameFPS to 29.97 to slow down menu animation |
Full |
| Moto Racer 2 |
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 |
Full |
|
| Pax Imperia Eminent Domain |
Full |
|
| Pharaoh Gold | Requires setting DdrawOverrideBitMode to 16 for windowed mode |
Full |
| Planescape Torment |
Full |
|
| Police Quest: SWAT 2 |
Full |
|
| Populous: The Beginning |
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 |
|
| 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', 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 |
| WinBolo |
Full |
|
| Wing Commander IV | Does not show video after starting the game, FlipToGDISurface Not Implemented |
None |
| WinQuake |
Full |
|
| Wizards and Warriors |
Full |
|
| Worms 2 |
Full |
|
| Worms Armageddon |
Full |
|
| Zeus and Poseidon | Requires setting DdrawOverrideBitMode to 16 for windowed mode |
Full |
| Zoo Tycoon |
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 |
Partial |
|
| Codemaster's Colin McRae Rally 2 |
Full |
|
| Codename Outbreak | Requires DdrawIntroVideoFix for intro videos |
Full |
| 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 |
Unknown |
|
| Disciples 2: Gold Elves |
Full |
|
| Discord Times |
Full |
|
| Divine Divinity |
Unknown |
|
| Dungeon Keeper |
Full |
|
| Dungeon Keeper 2 |
Full |
|
| Earth 2150 Trilogy: Escape from the Blue Planet |
Unknown |
|
| Empire Earth Gold |
Unknown |
|
| Empire Earth: The Art of Conquest |
Unknown |
|
| Enemy Engaged: Comanche vs Hokum |
Unknown |
|
| Etherlords |
Unknown |
|
| Etherlords II |
Unknown |
|
| Europa 1400: Gold Edition |
Unknown |
|
| Evolva |
Full |
|
| Evil Islands |
Unknown |
|
| FA-18E Super Hornet | Alt+Tab doesn't work right. |
Full |
| Fallout Tactics |
Full |
|
| FIFA 99 |
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 | Missing textures in some places. |
Partial |
| 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 |
Full |
|
| Moto Racer 2 |
Full |
|
| Myst III Exile |
Unknown |
|
| Populous: The Beginning |
Full |
|
| Raymond 2 |
Full |
|
| Redline |
Unknown |
|
| Return to Krondor | Intro missing when playing in 3D mode. Crashes after exiting the game. |
Partial |
| Requiem: Avenging Angel |
Full |
|
| Revenant | Requires disabling in-game "fast surface locks". |
Partial |
| Sacred Gold |
Unknown |
|
| SCP Containment Breach |
Full |
|
| Shogo |
Unknown |
|
| SimCity 4 |
Full |
|
| SimCity 3000 |
Full |
|
| Simon the Sorcerer 3D |
Unknown |
|
| Silent Hunter II |
Unknown |
|
| Speed Busters |
Unknown |
|
| Star Trek Armada 1 | Requires enabling DdrawReadFromGDI and DdrawWriteToGDI for menu animations to work |
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 |
Full |
|
| The Settlers IV Gold |
Full |
|
| The Summoner |
Unknown |
|
| Tom Clancy's Rainbow Six |
Unknown |
|
| Tomb Raider 3 |
Full |
|
| Tomb Raider 4 |
Unknown |
|
| Tomb Raider 5 |
Unknown |
|
| Tropico |
Full |
|
| Twisted Metal 2 | Recommend setting LimitPerFrameFPS to 59.94 to slow down the game |
Full |
| 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 |
Full |
|
| X-COM Interceptor |
Unknown |
Note: To view the status of the DirectDraw to Direct3D9 Conversion check out the Status Page.
Full
Partial
None
Unknown