So I was a bit bored and decided to look at the games I wanted to play myself that I found problematic. They're both 2D games, and games that would be playable under emulation/virtualization, but I wanted to run them natively and have given up on that in the past.
First was Bungaru WA, an old Japanese freeware game that's really not worth playing. Fullscreen was broken, dgVoodoo fixed that. Then menus worked, with sounds and music and everything but trying to go ingame would crash the game. After some testing I figured out that DxWnd's exception handler (Compat. tab with advanced settings enabled) would make the error go away and make the game entirely playable. The game would kept working even when DxWnd was no longer running, and after the computer was rebooted. Obviously, I'm confused, but I believe there is some condition that causes the error to occur and if you run into that, DxWnd's exception handling will help you.
Second was Nectaris, which is a bit more interesting. Supposedly freeware too. The western (PC release was Japan only) version was known as Military Madness and was a fairly popular turn based strategy game for the PC Engine/Turbografx. It got a Windows release which had some nice features not available in all ports: a map editor, mouse control and the ability to save mid-game. It had two issues on newer Windows versions. One (broken fullscreen) was easy to fix with dgVoodoo. Dialog windows forcing the game windowed until manually set to fullscreen again might seem like a dgVoodoo bug, but it's how the game behaves on Windows 95 too.
The second problem was new to me. Whenever the game tried to play a new midi file, it would freeze for a few seconds. This got infuriating fast. Apparently, it's a known issue with playing midi files through MCI on systems newer than XP, documented here:
http://www.virtualdub.org/blog/pivot/entry.php?id=77
The documentation is lacking why Microsoft implemented this delay, but there's instructions on that page on how to remove it. In case the link dies I followed this advice by Phaeron (talking about editing mciseq.dll):
Phaeron wrote:The code that foxyshadis patched is in the LeaveSeq() function whose disassembly is above — so you are looking for a hex pattern of 68 __ __ __ __ FF 15 __ __ __ __ 6A 04 __ __ __ __ C3. Underscores represent bytes that may be different due to a different base address. The 04 should be patched to 00, and then the PE header checksum at 00000130 should be cleared by patching to 00 00 00 00.
Once I did that, Nectaris started playing back midi instantly, without freezing the game for seconds. I actually found this page first:
https://www.tt-forums.net/viewtopic.php?t=19307
Indicating that Transport Tycoon Deluxe also has this problem. I have to assume other games have this problem too, but I haven't run into any.