My wife is huge fan of the Nancy Drew games, so since we've been playing through them, which has been quite fun for both of us. However, some of them are rather old at this point, which occasionally causes some problems. I recently bought Nancy Drew: Secret of the Old Clock on Steam. We played it for a few hours Friday night, then went to play it again yesterday, only to be greeted by the following error:
So it says "DirectDraw" in there. That's an old graphic API in Microsoft's DirectX. It's what the game uses to draw graphics. I'm not sure why setting the display mode would be unsupported or why anything would be different than the night before, but I set out for a solution.
I found a lot of the typical recommendations about trying the game in Windows Compatibility Mode, which is generally good advice but did nothing here. It was recommended to install the older DirectX 9 to make sure the game has access to the APIs it was built for, but I had seemingly every version of DirectX ever made already installed. I even saw some Microsoft MVP say that this was a driver issue and to make sure I installed the latest updates, which...is total nonsense and almost the opposite of what's needed.
The real solution was a tool called dgVoodoo 2, which I was a bit surprised I hadn't heard of before, but it worked very well. Basically, it intercepts all the API calls for the older versions of DirectX and instead calls equivalent new methods of DirectX 12. You just download the tool, copy all the
.dll files from the
MS\x86 folder to where your game's
.exe is installed, and voilà! It works. (Although admittedly with a dgVoodoo2 watermark unless you update the default configuration.)
Note that installing random
.dlls from the Internet is, in general, an absolutely horrible idea, although I believe it's perfectly safe in this case.
I still have no idea why sometimes it worked without it and sometimes it didn't, but it's moot now. In any event, dgVoodoo2 fixed my error, and hopefully it can help you if you're trying to solve some ancient DirectDraw error of your own.