Skip to content

DirectDraw to Direct3D9 Conversion

Elisha Riedlinger edited this page Sep 18, 2024 · 32 revisions

Dd7to9 Introduction

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.

Installation

To use this feature you can do the following:

  1. Download the latest dxwrapper release.
  2. Extract ddraw.dll, dxwrapper.dll and dxwrapper.ini files from the release and copy it to the game folder.
  3. Open the dxwrapper.ini file and enable the Dd7to9 feature.
  4. Disable all application compatibility settings in the application.
  5. Start the game and enjoy.

Troubleshooting

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.
  • If the game crashes after alt+tab, try:
    • enabling the DdrawEmulateSurface. This preserves the surface memory to fix bugs in some older games.
  • 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.
  • 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.
  • 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.
  • If the game runs too fast, try:
    • setting LimitPerFrameFPS to 29.97 or 59.94 or 119.88 (many other values will work, these are just some common ones).
  • If the game runs too slow, try:
    • enabling DdrawAutoFrameSkip.

Table Key

Note Status----
The game is fully functional. #22863a Full
The game is functional but has some issues. #ffcc01 Partial
The game is either not functional at all or unplayable. #f03c15 None
The game has not been tested with the latest build and support is unknown. #afafaf Unknown

Note: Below are the status of games and whether they work with the Dd7to9 DirectDraw to Direct3D9 conversion feature.

Supported 2D Games (DirectDraw)

Game Notes Support--
Abe's Oddysee Recommended to enable DdrawRemoveInterlacing to remove interlacing #22863a Full
Age of Empires #22863a Full
Age of Wonders: Shadow Magic #22863a Full
Age of Wonders 2 #22863a Full
Alien Nations #22863a Full
American Conquest May require using dsound.dll as the stub #22863a Full
American Conquest: Fight Back May require using dsound.dll as the stub #22863a Full
Amerzone #22863a Full
Anno 1602: Creation of a New World #22863a Full
Arcanum Of Steamworks and Magick Obscura #22863a Full
Atlantis: The Lost Tales (DirectDraw1) #22863a Full
Atlantis 2: Beyond Atlantis #22863a Full
Atlantis 3: The New World May require running with Windows 7 compatibility mode on Windows 11 #22863a Full
Bad Mojo Uses GDI for most of the game #f03c15 None
Baldurs Gate 1+2 #22863a Full
Blood II: The Chosen Requires using software renderer (If there are issues select "S3 Virge" video card under Advanced settings) #22863a Full
Caesar 3 Requires setting DdrawOverrideBitMode to 16 for windowed mode #22863a Full
Call To Power 2 #22863a Full
Castle Adventure #22863a Full
Chris Sawyer's Locomotion #22863a Full
Close Combat 2 #22863a Full
Close Combat 3 #22863a Full
Close Combat 4 #22863a Full
Close Combat 5 #22863a Full
Command & Conquer Gold #22863a Full
Command & Conquer: Tiberian Sun #22863a Full
Command & Conquer: Red Alert #22863a Full
Command & Conquer: Red Alert 2 #22863a Full
Commandos May requires using wsock32.dll stub #22863a Full
Commandos 2 #22863a Full
Commandos BCD #22863a Full
Corsairs Gold Uses adraw.dll for GOG version #22863a Full
Creatures 2: The Albian Years Requires setting DdrawOverrideBitMode to 16 #22863a Full
Creatures 3: Exodus Requires setting DdrawOverrideBitMode to 16 #22863a Full
Cultures #22863a Full
Cultures 2 #22863a Full
Dark Reign #22863a Full
Deadlock II Requires enabling DdrawReadFromGDI and DdrawWriteToGDI for version 1.2 #22863a Full
Deathtrap Dungeon Requires using win32.dll as the stub #22863a Full
Deus #22863a Full
DOSBox #22863a Full
Diablo #22863a Full
Diablo Hellfire #22863a Full
Diablo Spawn #22863a Full
Digger XP #22863a Full
Dracula 2 #22863a Full
Dune 2000 #22863a Full
Europa 1400: Gold Edition #f03c15 None
Gangsters: Organized Crime Uses GDI (FlipToGDISurface) #ffcc01 Partial
Geneforge Saga 1 #22863a Full
Geneforge Saga 2 #22863a Full
Geneforge Saga 3 #22863a Full
Geneforge Saga 4 #22863a Full
God of Nea Requires setting DdrawOverrideBitMode to 16 #22863a Full
Heroes of Might & Magic 3 #22863a 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 #22863a Full
Icewind Dale: Complete #22863a Full
Icewind Dale 2: Complete #22863a Full
InkBall Hangs using GetSurfaceFromDC could not lock surface because it is in device context #f03c15 None
Interstate 76 Recommend setting LimitPerFrameFPS to 29.97 to slow down the game #22863a Full
Interstate 82 Crashes after starting a game #f03c15 None
Invictus: In the Shadow of Olympus #22863a Full
Jagged Alliance 2 #22863a Full
Jagged Alliance 2: Unfinished Business #22863a Full
Jagged Alliance 2: Wildfire #22863a Full
Jazz Jackrabbit 2 #22863a Full
Killing Time #22863a Full
King's Quest 8 Requires running in DirectDraw (Software) mode, can be configured by modifying Options.cs and setting this line assignGModeName Software #22863a Full
Knights and Merchants: The Peasants Rebellion #22863a Full
Konung 1 Recommended enabling FullscreenWindowMode for movies #22863a Full
Konung 2 Recommended enabling FullscreenWindowMode for movies #22863a Full
Legal Crime #22863a Full
Lionheart: Legacy of the Crusader #22863a Full
Majesty Gold HD #22863a Full
Mega Man X4 Requires FullscreenWindowMode #22863a Full
Metal Gear Solid Requires disabling Direct3D #22863a Full
Monster Truck Madness 2 Requires software rendering, need to click through a black screen when starting a race #ffcc01 Partial
Moto Racer Recommended to disbale "DirectX 3D" option disabled and set LimitPerFrameFPS to 29.97 to slow down menu animation #22863a Full
Moto Racer 2 Requires DdrawDisableDirect3DCaps to be set to run in software rendering #22863a Full
Myst III: Exile Requires playing in software mode #22863a Full
Nethergate Resurrection Requires enabling FullscreenWindowMode to prevent the background from getting cut off on some of the menus #22863a Full
NOX #22863a Full
Outlaws + A Handful of Missions #22863a Full
Pacific General #22863a Full
Patrician 3 Recommended to enable DdrawLimitDisplayModeCount #22863a Full
Pax Imperia Eminent Domain #22863a Full
Pharaoh Gold Requires setting DdrawOverrideBitMode to 16 for windowed mode #22863a Full
Planescape Torment #22863a Full
Police Quest: SWAT 2 Does not work on Windows 11 #22863a Full
Populous: The Beginning Requires the non-3D version #22863a Full
Port Royale #f03c15 None
Port Royale 2 #f03c15 None
Pro Pinball Big Race USA #22863a Full
Pro Pinball Fantastic Journey #22863a Full
Rage of Mages #22863a Full
Rage of Mages II #22863a Full
Railroad Tycoon II #22863a Full
Return of TIM #22863a Full
Requiem: Avenging Angel #22863a Full
Runaway: A Road Adventure #22863a Full
Sanitarium #22863a Full
Septerra Core #22863a Full
Settlers 3 Ultimate #22863a Full
SimCity 3000 #22863a Full
SimCopter Recommeneded setting LimitPerFrameFPS to 29.97 to slow down the game so it does not crash #22863a Full
Shadow Watch #22863a Full
Shogo Requires software rendering #22863a Full
Star Wars: Galactic Battlegrounds #22863a Full
Star Wars: Jedi Knight Dark Forces 2 Requires 3D acceleration disabled and if using GOG version requires launching JK directly and bypassing GOG #22863a 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 #22863a Full
Star Wars: X-Wing vs TIE Fighter Requires Power VR 3D Card to be disabled #22863a Full
StarCraft #22863a Full
StarCraft: Broodwars #22863a Full
Stronghold #22863a Full
Stronghold Crusader #22863a Full
Stronghold Crusader Extreme HD #22863a Full
Stronghold HD #22863a Full
Throne of Darkness #22863a Full
TIM Even More Contraptions #22863a Full
Tomb Raider 2 Requires software rendering to be enabled in-game #22863a Full
Total Annihilation #22863a Full
Tropico #22863a Full
Twisted Metal 2 Recommend setting LimitPerFrameFPS to 59.94 to slow down the game #22863a Full
Uprising: Join or Die Does not work on Windows 11 #22863a Full
Uprising 2: Lead and Destroy Mission videos flash and show distorted pixels #22863a Full
War Wind #22863a Full
War Wind II #22863a Full
Warcraft 2 #22863a 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 #22863a Full
Warhammer 40K: Chaos Gate May require using dplayx.dll as the stub #22863a Full
Warhammer 40K: Final Liberation #22863a Full
Warhammer 40K: Rites of War #22863a Full
Warlords 3: Darklords Rising #22863a Full
Warlords Battlecry #22863a Full
Warlords Battlecry 2 #22863a Full
Warlords Battlecry 3 #22863a Full
William’s Pinball Classics Requires FullscreenWindowMode for videos #22863a Full
Wing Commander IV Does not show video after starting the game, FlipToGDISurface Not Implemented #f03c15 None
WinQuake #22863a Full
Wizards and Warriors Recommended to setting LimitPerFrameFPS to 119.88 to slow the game down a bit #22863a Full
Worms 2 #22863a Full
Worms Armageddon #22863a Full
Zeus and Poseidon Requires setting DdrawOverrideBitMode to 16 for windowed mode #22863a Full

Supported 3D Games (Direct3D)

Game Notes Support----
Age of Wonders #ffcc01 Partial
Age of Wonders 2 #ffcc01 Partial
Arx Fatalis #22863a Full
Avernum: Escape From The Pit #22863a Full
Avernum 2: Crystal Souls #22863a Full
B-17 Flying Fortress: The Mighty 8th #afafaf Unknown
Battle Realms Complete #afafaf Unknown
Battle Isle: The Andosia War #afafaf Unknown
Black & White #22863a Full
Blood 2: The Chosen #afafaf Unknown
Codemaster's Colin McRae Rally 1 #f03c15 None
Codemaster's Colin McRae Rally 2 #ffcc01 Partial
Codename Outbreak #afafaf Unknown
Conquest: Frontier Wars #afafaf Unknown
Combat Mission: Beyond Overlord #afafaf Unknown
Croc 2 #afafaf Unknown
Dark Reign 2 #22863a Full
Darkstone #afafaf Unknown
Descent 3 #afafaf Unknown
Deus Ex Game Of The Year Recommended to use DdrawLimitDisplayModeCount #22863a Full
Diablo 2 #f03c15 None
Disciples 2: Gold Elves #22863a Full
Divine Divinity #afafaf Unknown
Dungeon Keeper 2 #22863a Full
Earth 2150 Trilogy: Escape from the Blue Planet #afafaf Unknown
Empire Earth Gold #f03c15 None
Empire Earth: The Art of Conquest #afafaf Unknown
Enemy Engaged: Comanche vs Hokum #afafaf Unknown
Etherlords #afafaf Unknown
Etherlords II #afafaf Unknown
Europa 1400: Gold Edition #afafaf Unknown
Evolva #ffcc01 Partial
Evil Islands #afafaf Unknown
FA-18E Super Hornet #22863a Full
Gorky 17 #afafaf Unknown
Gothic #afafaf Unknown
Gothic 2 #afafaf Unknown
Hard Time #22863a Full
Hitman: Codename 47 #afafaf Unknown
Hogs of War #afafaf Unknown
King's Quest 8 #afafaf Unknown
Knight Rider #afafaf Unknown
Knight Rider 2 #22863a Full
Legacy of Kain: Soul Reaver #afafaf Unknown
MechWarrior 4 #afafaf Unknown
Midtown Madness #22863a Full
Might and Magic VIII: Day of the Destroyer #afafaf Unknown
Might and Magic IX #afafaf Unknown
Monster Truck Madness 2 #afafaf Unknown
Moto Racer #ffcc01 Partial
Moto Racer 2 #f03c15 None
Myst III Exile #afafaf Unknown
Populous: The Beginning #f03c15 None
Raymond 2 #afafaf Unknown
Redline #afafaf Unknown
Return to Krondor #22863a Full
Revenant #afafaf Unknown
Sacred Gold #afafaf Unknown
Shogo #afafaf Unknown
Simon the Sorcerer 3D #afafaf Unknown
Silent Hunter II #afafaf Unknown
Speed Busters #afafaf Unknown
Star Trek Armada 1 #22863a Full
Star Trek Starfleet Academy #afafaf Unknown
Star Trek Starfleet Command #22863a Full
Star Wars Rebellion #afafaf Unknown
Star Wars Rogue Squadron 3D #afafaf Unknown
Star Wars X-Wing Alliance #afafaf Unknown
StarTopia #afafaf Unknown
SWAT 3: Tactical Game of the Year Edition #22863a Full
The Longest Journey #afafaf Unknown
The Nations Gold #afafaf Unknown
The Settlers IV Gold #ffcc01 Partial
The Summoner #afafaf Unknown
Tom Clancy's Rainbow Six #afafaf Unknown
Tomb Raider 3 #afafaf Unknown
Tomb Raider 4 #afafaf Unknown
Tomb Raider 5 #afafaf Unknown
Twisted Metal 2 #afafaf Unknown
Ultima IX Ascension #ffcc01 Partial
Unreal Gold Recommended to use DdrawLimitDisplayModeCount #22863a Full
Unreal Tournament GOTY #afafaf Unknown
Vampire: The Masquerade #ffcc01 Partial
WarGames #ffcc01 Partial
Wizardry 8 #22863a Full
Wizards and Warriors Recommended to setting LimitPerFrameFPS to 119.933 to slow the game down a bit #ffcc01 Partial
X-COM Interceptor #afafaf Unknown

Note: To view the status of the DirectDraw to Direct3D9 Conversion check out the Status Page.