Skip to content

DirectDraw to Direct3D9 Conversion

Elisha Riedlinger edited this page Sep 18, 2024 · 40 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 setting 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.963 or 59.933 or 119.933 (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

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, and DdrawEmulateSurface to allow alt+tab #22863a Full
Age of Empires Requires FullscreenWindowMode for videos #22863a Full
Age of Wonders: Shadow Magic Only works if Direct3D is disabled, and requires FullscreenWindowMode for certian Nvidia cards #22863a Full
Age of Wonders 2 Only works if Direct3D is disabled, and requires FullscreenWindowMode for certian Nvidia cards #22863a Full
Alien Nations Requires "Hardware Accelerator" option to be disabled #22863a Full
American Conquest Requires FullscreenWindowMode for videos and may require using dsound.dll as the stub #22863a Full
American Conquest: Fight Back Requires FullscreenWindowMode for videos and 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 May require running with Windows 98 compatibility mode on Windows 11 #22863a Full
Atlantis 3: The New World Does not work 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 Many have issues selecting in-game resolutions #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, requires enabling DdrawCreateDeviceEarly and setting DdrawOverrideBitMode to 16 #22863a Full
Commandos 2 #22863a Full
Commandos BCD #22863a Full
Corsairs Gold Uses adraw.dll for GOG version, and requires DdrawWriteToGDI for videos and mouse input #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 #22863a Full
Deathtrap Dungeon Requires using win32.dll as the stub #22863a Full
Deus #22863a Full
DOSBox #22863a Full
Diablo Corrupted images in menu #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 FourCCs and Overlays are not implemented #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 May require changing in-game resolution after starting game, switching between in-game windowed and fullscreen mode does not always work right #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.963 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 ForceExclusiveFullscreen or FullscreenWindowMode for movies #22863a Full
Konung 2 Recommended enabling ForceExclusiveFullscreen or 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 Requires "DirectX 3D" option disabled and recommend setting LimitPerFrameFPS to 29.963 to slow down menu animation #22863a Full
Moto Racer 2 Requires DdrawDisableDirect3DCaps to be set to run in software rendering, and setting DdrawOverrideBitMode to 16 for window mode #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 Requires setting DdrawLimitDisplayModeCount to 145 #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 FourCC and D3DFMT_DXT1 not Implemented #f03c15 None
Port Royale 2 FourCC and D3DFMT_DXT1 not Implemented #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 Requires FullscreenWindowMode for intro movies and setting LimitPerFrameFPS to 29.963 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 Requires FullscreenWindowMode for text input to work #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 Requires DdrawFixByteAlignment to resolve in-game graphical issues #22863a Full
Twisted Metal 2 Recommend setting LimitPerFrameFPS to 59.933 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', 'DDrawCompat' and 'HandleExceptions' to avoid crashes after viewing the map and to remove delay when starting a mission, also recommended enabling EnableVSync and setting LimitPerFrameFPS to 29.963 #22863a Full
Warhammer 40K: Chaos Gate Requires 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.933 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 #ffcc01 Partial
Battle Realms Complete #f03c15 None
Battle Isle: The Andosia War #f03c15 None
Black & White #22863a Full
Blood 2: The Chosen #f03c15 None
Codemaster's Colin McRae Rally 1 #f03c15 None
Codemaster's Colin McRae Rally 2 #ffcc01 Partial
Codename Outbreak #f03c15 None
Conquest: Frontier Wars #f03c15 None
Combat Mission: Beyond Overlord #f03c15 None
Croc 2 #f03c15 None
Dark Reign 2 #22863a Full
Darkstone #f03c15 None
Descent 3 #f03c15 None
Deus Ex Game Of The Year Recommended to use DdrawLimitDisplayModeCount #22863a Full
Diablo 2 #f03c15 None
Disciples 2: Gold Elves #22863a Full
Divine Divinity #f03c15 None
Dungeon Keeper 2 #22863a Full
Earth 2150 Trilogy: Escape from the Blue Planet #f03c15 None
Empire Earth Gold #f03c15 None
Empire Earth: The Art of Conquest #f03c15 None
Enemy Engaged: Comanche vs Hokum #f03c15 None
Etherlords #f03c15 None
Etherlords II #f03c15 None
Europa 1400: Gold Edition #f03c15 None
Evolva #ffcc01 Partial
Evil Islands #f03c15 None
FA-18E Super Hornet #22863a Full
Gorky 17 #f03c15 None
Gothic #f03c15 None
Gothic 2 #f03c15 None
Hard Time #22863a Full
Hitman: Codename 47 #f03c15 None
Hogs of War #f03c15 None
King's Quest 8 #f03c15 None
Knight Rider #f03c15 None
Knight Rider 2 #22863a Full
Legacy of Kain: Soul Reaver #f03c15 None
MechWarrior 4 #f03c15 None
Midtown Madness #22863a Full
Might and Magic VIII: Day of the Destroyer #f03c15 None
Might and Magic IX #f03c15 None
Monster Truck Madness 2 #f03c15 None
Moto Racer #f03c15 None
Moto Racer 2 #f03c15 None
Myst III Exile #f03c15 None
Populous: The Beginning #f03c15 None
Raymond 2 #f03c15 None
Redline #f03c15 None
Return to Krondor #22863a Full
Revenant #f03c15 None
Sacred Gold #f03c15 None
Shogo #f03c15 None
Simon the Sorcerer 3D #f03c15 None
Silent Hunter II #f03c15 None
Speed Busters #f03c15 None
Star Trek Armada 1 #22863a Full
Star Trek Starfleet Academy #f03c15 None
Star Trek Starfleet Command #22863a Full
Star Wars Rebellion #f03c15 None
Star Wars Rogue Squadron 3D #f03c15 None
Star Wars X-Wing Alliance #f03c15 None
StarTopia #f03c15 None
SWAT 3: Tactical Game of the Year Edition #22863a Full
The Longest Journey #f03c15 None
The Nations Gold #f03c15 None
The Settlers IV Gold #ffcc01 Partial
The Summoner #f03c15 None
Tom Clancy's Rainbow Six #f03c15 None
Tomb Raider 3 #f03c15 None
Tomb Raider 4 #f03c15 None
Tomb Raider 5 #f03c15 None
Twisted Metal 2 #f03c15 None
Ultima IX Ascension #ffcc01 Partial
Unreal Gold Recommended to use DdrawLimitDisplayModeCount #22863a Full
Unreal Tournament GOTY #f03c15 None
Vampire: The Masquerade #ffcc01 Partial
WarGames #f03c15 None
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 #f03c15 None

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

Clone this wiki locally