It seems that you're using an outdated browser. Some things may not work as they should (or don't work at all).
We suggest you upgrade newer and better browser like: Chrome, Firefox, Internet Explorer or Opera

×
avatar
narzoul: DDrawCompat does not use any external renderer, it only makes adjustments to how DirectDraw (and GDI) is used internally.
OK, that explains it. Because only Windows has DirectX Wine has to translate it to OpenGL and the translation DirectDraw -> OpenGL -> graphics is broken in the second step. There is nothing you could do other than entirely circumvent DirectDraw. Kind of how Glide wrappers map Glide -> OpenGL, I was hoping that would be what you are doing. Oh well, good luck with it then.

avatar
narzoul: Which game is it?
Too many games to list, but I tried your wrapper with Icewind Dale II and Diablo II. There is no flickering in Diablo II when using a Glide wrapper, that's why I was hoping your DD wrapper would be doing something similar.
avatar
HiPhish: OK, that explains it. Because only Windows has DirectX Wine has to translate it to OpenGL and the translation DirectDraw -> OpenGL -> graphics is broken in the second step. There is nothing you could do other than entirely circumvent DirectDraw. Kind of how Glide wrappers map Glide -> OpenGL, I was hoping that would be what you are doing. Oh well, good luck with it then.
Oh, I think I understand now. So OS X does not have its own DirectDraw/Direct3D implementation and it uses Wine's implementation as the system ddraw.dll, correct? So DDrawCompat is wrapping Wine's ddraw.dll in this case.

The situation may not be hopeless if Wine's implementation supports the WaitForVerticalBlank method. I can make a quick experimental test version for you. PM me an e-mail address if you're interested. If it works I'll add it to a future release as an option (I wouldn't like to enable it by default).

Edit: No luck, guess you'll really have to wait for a solution from Wine.
Post edited December 26, 2015 by narzoul
avatar
narzoul: ...
The DirectX frameworks are Microsoft's proprietary technology, so they exist only for Windows. Linux- and OS X users cannot run Windows programs, so Wine is a compatibility layer: it translates on the fly Windows instructions to whatever it is the host OS understands. This includes all of DirectX as well. DirectDraw and Direct3D are implemented using OpenGL and the DirectDraw implementation is flawed.

I don't think that it would matter what you do with DirectDraw, its implementation is broken by default. You can try if you want, but I don't know what exactly is going on under the hood. Here is an explanation of the bug:
https://bugs.winehq.org/show_bug.cgi?id=34166#c4
Any updates ?
bump
avatar
Painted_Doll: Any updates ?
Its releases webpage, it shows the most recent version is v0.2.0b, released Jan 17 2016.

Looks like that's the "official" place to check for updates.

HTH
avatar
Painted_Doll: Any updates ?
Sorry, I wasn't following this thread properly... actually, I was hoping that new posts would show up under "Topics I've participated in", but that doesn't seem to be the case. I added it as a favorite now so I can track it better in the future.

As Martek mentioned, the best place to look for updates is on GitHub. But if there is something in particular you'd like to have fixed and don't want to open an issue there, you can also post it here. Maybe I can put it higher on my TODO list.

Currently I'm working on:
- Better GDI interworking, in particular resolving the remaining glitches in StarCraft's Battle.net menus. Hopefully the fixes for that will be enough to cover most games with similar issues.
- Some games have alt-tabbing problems, mainly the desktop not displaying properly (black screen) after alt-tabbing.
- I've noticed some mouse cursor artifacts in Commandos 1 after upgrading to Windows 10 from 8.1, going to have to look into that (strangely it doesn't seem to affect the expansion).
- The Longest Journey doesn't seem to like being forced to run on a single core for some reason. It runs horribly slow. But I think it's still useful for more games than not, so I'd like to keep it as default... Looks like I'll have to add some sort of configurability in a future update for cases like this.
- Populous 3, while no longer crashing in D3D (for me, anyways), still suffers from misaligned texels (fonts/buttons/sprites and other 2D stuff having graphics artifacts around them). I've read about an "Alternate pixel center" setting that older Catalyst drivers used to have (maybe still have?), perhaps there is a way to implement something similar... meanwhile there are other fixes available for it, at least.
Post edited March 15, 2016 by narzoul
New version (v0.2.1) is now available. Change log is on the Releases page.

From the list in the previous post, as I already mentioned TLJ and Populous 3 can only be fixed via config options, so they're put off for another release (hopefully the next one).
As for Commandos 1, I found the root cause of the mouse artifacts (directly accessing video memory without locking). Unfortunately this will also need some config option for a fix.
The rest should be more or less done for now (potential bugs aside).
avatar
narzoul: New version (v0.2.1) is now available. Change log is on the Releases page.

From the list in the previous post, as I already mentioned TLJ and Populous 3 can only be fixed via config options, so they're put off for another release (hopefully the next one).
As for Commandos 1, I found the root cause of the mouse artifacts (directly accessing video memory without locking). Unfortunately this will also need some config option for a fix.
The rest should be more or less done for now (potential bugs aside).
Thanks for your work on this.

I was actually going to make an issue on github for TLJ, then I forgot about it. But looks like you're already on it. :)
Thank you for your work narzoul. The experimental release 0.2.2 (?) solved the Red Alert 2 annoying ALT+TAB problem. The game performance is excellent and I didn't notice any menu flickering issues.

OS: Windows 10 Pro x64
VGA: Intel HD4000
Hello,

I tested an old DirectX 5-7 game called Nocturne, it uses GDI for rendering the videos, so dgVoodoo 2's DDraw.dll file was a no go (game works fine with it, I can select higher resolution, except I get black screens with sound/audio for the videos.

I tried this DDraw.dll file, videos render/play now and I can still select high resolution.

Thank you :).

Daniel,

P.s: I am also hungarian :)
avatar
narzoul: 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.
avatar
narzoul: (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...
To fix all fonts problems you need to disable Cleartype
low rated
nope , everything works fine with win 10 here
oh i see this topic is and old one
Post edited April 30, 2021 by Orkhepaj
avatar
narzoul: ...
Hi Narzoul.
Your replacement dll makes wonders.
Back in 2019, there was an intermediate version between 0.2.1 and 0.3.0 but it's no longer available on your github. This particular one gave good results with Commandos - BEL (and probably BCD too) as I wrote here. Later ones don't work correctly on it. Maybe you should make it available again ?
Regards.

EDIT : it also gives better results than the 0.3.1 on Total Annihilation and Anno 1602.
Post edited January 21, 2022 by Pouyou-pouyou
avatar
narzoul: ...
avatar
Pouyou-pouyou: Back in 2019, there was an intermediate version between 0.2.1 and 0.3.0 but it's no longer available on your github.
Does this help you?

http://web.archive.org/web/20180603132157/https://github.com/narzoul/DDrawCompat/releases

I was able to download the file under "DDrawCompat - experimental/test release". Can't confirm if that is what you are looking for. You can change the timeline at the top of the page if the one I selected doesn't contain what you need.
Post edited January 21, 2022 by McFirson