Posted December 25, 2015
high rated
Are you having compatibility and performance issues with old DirectDraw/Direct3D games on newer versions of Windows? Me too. Especially since upgrading to Windows 8.1.
I know there are like a dozen existing ddraw.dll wrappers already attempting to fix some of the issues, but I wasn't quite satisfied with the ones I tried. So here's another attempt... feel free to borrow some ideas/code for your own projects. (Thanks for the link, I couldn't post it directly due to too low rep or something)
To install, just copy the ddraw.dll file to the game's directory (next to the .exe file). If there is already a ddraw.dll there, you can try to replace it - it may or may not work, so make a backup first.
To uninstall, just delete the dll (replace it with old one, if there was one).
Don't try to install in your Windows system folders, it won't work.
There are no configuration options and I hope to keep it to a minimum in the future too (assuming I make any future improvements at all).
DDrawCompat is mainly focusing on graphical issues and performance, not on adding fancy new features like windowed mode (see e.g. DxWnd for that).
As it is a DirectDraw wrapper, it's only useful for games using DirectX versions 1 to 7. That includes some older Direct3D renderers.
Please note that I only did testing on Windows 8.1 (with an Nvidia GTX 760), but I'm hopeful it would work on at least Vista and above (maybe with a few adjustments). Windows XP (and below) is not likely to be supported (and I don't intend to change that since it's officially an unsupported OS for a while now).
Obviously, there is absolutely no warranty and I take no responsibility for any potential damages. Use at your own risk.
Below are a list of games I tested (very briefly, mostly the beginning) and some of the related issues that should be fixed (at least on my test system, heheh). Performance improvements should be applicable to all so I won't mention that separately for each.
Arcanum (GOG): the game's main screen was broken for me with the already provided wrapper - it should be ok to replace the existing ddraw.dll (make a backup first!)
Deadlock 2 (GOG): fixed screen going (mostly) black when mouse is moved
Diablo II: Direct3D renderer performance improvement
Divine Divinity (GOG): Direct3D renderer performance improvement
Fallout Classic (GOG): restored missing palette animations (screen fade-out/fade-in effects)
Gorky 17 (GOG): fixed some graphical glitches, some still remain... I still get some black boxes covering the characters but even that seems to be magically fixed after alt-tabbing once (previously alt-tabbing broke the game screen completely)
Icewind Dale 2 (GOG): fixed flickering cursor and hardware mirroring (so-so, software might still be faster, haven't noticed any issues though)
Nox: fixed flashing/corrupted screen when entering the main menu (probably Nvidia specific issue)
Planescape Torment (GOG): fixed hardware mirroring (as in IWD2)
Red Alert: fixed flickering in menus (when not using the already available wrappers)
Sacred Gold (GOG): performance fixes; seems to have trouble alt-tabbing after the main game is entered though
StarCraft: Brood War: fixed broken Battle.net interface - though people say you can get banned (at least on the official servers) for using even DirectDraw wrappers, so beware (I never bothered making an account so I didn't test beyond the login screen; I also don't know whether a potential ban is permanent or just a kick or whatnot)
If you run into issues (which you likely will), don't despair... the project is open source so someone may eventually fix them. :P
For developers:
There should be a ddraw.log file generated next to the dll if it's installed properly, you can possibly find some clues there. Logging is very minimal in the release build though (mostly just some errors logged and only once per session). The debug build however (not included) is VERY verbose, it can generate hundreds of MBs of logs quickly in some cases, watch out. (Logs every hooked function entry/exit among others).
The project was created with Visual Studio 2015. Microsoft's Detours library is the only real external dependency for compilation (maybe some Windows/DirectX SDKs need to be installed too, I don't remember what's already included with VS).
Maybe I'll add some forgotten details later after I had some sleep...
I know there are like a dozen existing ddraw.dll wrappers already attempting to fix some of the issues, but I wasn't quite satisfied with the ones I tried. So here's another attempt... feel free to borrow some ideas/code for your own projects. (Thanks for the link, I couldn't post it directly due to too low rep or something)
To install, just copy the ddraw.dll file to the game's directory (next to the .exe file). If there is already a ddraw.dll there, you can try to replace it - it may or may not work, so make a backup first.
To uninstall, just delete the dll (replace it with old one, if there was one).
Don't try to install in your Windows system folders, it won't work.
There are no configuration options and I hope to keep it to a minimum in the future too (assuming I make any future improvements at all).
DDrawCompat is mainly focusing on graphical issues and performance, not on adding fancy new features like windowed mode (see e.g. DxWnd for that).
As it is a DirectDraw wrapper, it's only useful for games using DirectX versions 1 to 7. That includes some older Direct3D renderers.
Please note that I only did testing on Windows 8.1 (with an Nvidia GTX 760), but I'm hopeful it would work on at least Vista and above (maybe with a few adjustments). Windows XP (and below) is not likely to be supported (and I don't intend to change that since it's officially an unsupported OS for a while now).
Obviously, there is absolutely no warranty and I take no responsibility for any potential damages. Use at your own risk.
Below are a list of games I tested (very briefly, mostly the beginning) and some of the related issues that should be fixed (at least on my test system, heheh). Performance improvements should be applicable to all so I won't mention that separately for each.
Arcanum (GOG): the game's main screen was broken for me with the already provided wrapper - it should be ok to replace the existing ddraw.dll (make a backup first!)
Deadlock 2 (GOG): fixed screen going (mostly) black when mouse is moved
Diablo II: Direct3D renderer performance improvement
Divine Divinity (GOG): Direct3D renderer performance improvement
Fallout Classic (GOG): restored missing palette animations (screen fade-out/fade-in effects)
Gorky 17 (GOG): fixed some graphical glitches, some still remain... I still get some black boxes covering the characters but even that seems to be magically fixed after alt-tabbing once (previously alt-tabbing broke the game screen completely)
Icewind Dale 2 (GOG): fixed flickering cursor and hardware mirroring (so-so, software might still be faster, haven't noticed any issues though)
Nox: fixed flashing/corrupted screen when entering the main menu (probably Nvidia specific issue)
Planescape Torment (GOG): fixed hardware mirroring (as in IWD2)
Red Alert: fixed flickering in menus (when not using the already available wrappers)
Sacred Gold (GOG): performance fixes; seems to have trouble alt-tabbing after the main game is entered though
StarCraft: Brood War: fixed broken Battle.net interface - though people say you can get banned (at least on the official servers) for using even DirectDraw wrappers, so beware (I never bothered making an account so I didn't test beyond the login screen; I also don't know whether a potential ban is permanent or just a kick or whatnot)
If you run into issues (which you likely will), don't despair... the project is open source so someone may eventually fix them. :P
For developers:
There should be a ddraw.log file generated next to the dll if it's installed properly, you can possibly find some clues there. Logging is very minimal in the release build though (mostly just some errors logged and only once per session). The debug build however (not included) is VERY verbose, it can generate hundreds of MBs of logs quickly in some cases, watch out. (Logs every hooked function entry/exit among others).
The project was created with Visual Studio 2015. Microsoft's Detours library is the only real external dependency for compilation (maybe some Windows/DirectX SDKs need to be installed too, I don't remember what's already included with VS).
Maybe I'll add some forgotten details later after I had some sleep...
Post edited December 25, 2015 by narzoul