narzoul / DDrawCompat

DirectDraw and Direct3D 1-7 compatibility, performance and visual enhancements for Windows Vista, 7, 8, 10 and 11
BSD Zero Clause License
925 stars 70 forks source link

Might and Magic IX black screen at night issue #67

Closed Dashiefan101 closed 4 years ago

Dashiefan101 commented 4 years ago

Here is the debug log you requested, however when I start the game now, it won't close or crash on it's own yet is still unresponsive and a black screen. The game wouldn't crash so I had to close it myself so no crash log was created. I did sit and wait for a while and nothing happened. DDrawCompat-lithtech.log

narzoul commented 4 years ago

Thanks! Luckily the issue is quite clear from the logs. The game is trying to set your screen to 800x600 resolution, 3 times in fact, but it fails every time like this:

55b8 16:04:56.207   > ChangeDisplaySettingsExA(null, {800,600,32,0,0}, WND(null), 4, 00000000)
55b8 16:04:57.009   < ChangeDisplaySettingsExA(null, {800,600,32,0,0}, WND(null), 4, 00000000) = fffffffe
55b8 16:05:00.010 < IDirectDraw2Vtbl::SetDisplayMode(008C44DC, 800, 600, 32, 0, 0) = 80004001

If you check all the resolutions that your system reports as supported (see EnumDisplaySettingsExA lines before the failures), then it has all kinds of unusual resolutions even below 640x480. But after 640x480, 1024x768 is the next one, and there is nothing in between, so indeed no 800x600 mode.

In Windows, the lowest selectable resolution for the desktop should also be 800x600. Is that option missing for your desktop resolution too?

I guess this is some kind of display driver issue. You could try updating that. If that doesn't help, maybe you can add it as a custom resolution, if your graphics drivers support that option.

Unfortunately, there is no option in DDrawCompat yet to emulate unsupported resolutions, or to force games to run at a different resolution than what they choose, and I probably won't have time to implement this in the near future. So if you can't conjure up that missing mode somehow, I'm afraid I won't be able to help for now.

I think some other people were able to solve their black screen issue also with dgVoodoo 2, so you could try that also as an alternative. You might be able to force the game to use a different resolution with that.

I assume with GOG's ddraw.dll the game works for you because by default it has "Display mode" configured as "Same as desktop" (see dxcfg.exe).

Edit: Btw, I just noticed that all of your supported resolutions are available at both 40Hz and 60Hz refresh rates. I've never seen a monitor that supports 40Hz (recently at least). Is your laptop connected to a TV or something like that?

Dashiefan101 commented 4 years ago

No, it's a gaming laptop. And the game does run with the default file, yes, but the dark screen at night and underwater are the issue I am trying to fix.

Dashiefan101 commented 4 years ago

I would like to add that I've gotten the game to run using dgVoodoo2, but now there's a frame around the screen that I cannot move my mouse to. In the main menu, I cannot hit the load button and had to hit enter instead. Is there a fix for this? I tested the nighttime issue and got that part fixed. image Here's a screenshot of the lower right corner on my screen, can't move past it. It makes it so I can't talk to the characters.

narzoul commented 4 years ago

I don't know, I don't have such issues with it. It's not my tool, you should ask about it on the Vogons forum: https://www.vogons.org/viewforum.php?f=59

narzoul commented 4 years ago

Well, since I think the issue is with your GPU/monitor drivers and not with DDrawCompat. I will close this for now. In the distant future, I might implement some sort of support for resolutions that are not natively supported by the monitor/drivers.