King's Quest: Mask of Eternity

Report bugs, errors, problems, etc.
User avatar
NicoDE
Posts: 67
Joined: Fri Aug 24, 2012 9:09 am
Location: Germany
Contact:

King's Quest: Mask of Eternity

Postby NicoDE » Tue Jul 29, 2014 6:56 pm

Hi Zeus,

In the meantime I managed to get the videos and most of the renderer/size switches working with nGlide (v1.03). The root of the problem are WM_SIZE messages that trigger the renderer (re)initialization (well known endless loop). Currently I suppress all WM_SIZE that have not been "requested" by the application. However, If the Glide renderer is used (grSstWinOpen) and later disabled (grSstWinClose), I have unexpected window sizes/parameters in my run-time hack log. Might it be possible that nGlide still hooks and processes some APIs after grSstWinClose?

Best regards
Nico

User avatar
Zeus
Site Admin
Posts: 1472
Joined: Sun Sep 21, 2008 2:51 pm
Contact:

Re: King's Quest: Mask of Eternity

Postby Zeus » Wed Aug 06, 2014 5:23 pm

NicoDE wrote:In the meantime I managed to get the videos and most of the renderer/size switches working with nGlide

Kqmoefix for Wine, right?

NicoDE wrote:Might it be possible that nGlide still hooks and processes some APIs after grSstWinClose?

If you're getting all these messages AFTER grSstWinClose completion and not in between grSstWinOpen/grSstWinClose it's not nGlide/d3d9 stuff. What exactly do you get?

User avatar
NicoDE
Posts: 67
Joined: Fri Aug 24, 2012 9:09 am
Location: Germany
Contact:

Re: King's Quest: Mask of Eternity

Postby NicoDE » Wed Aug 06, 2014 6:16 pm

Yes, kqmoefix. Currently I have no spare time to work on the project (requires some changes to get the logging back). Thanks for the answer, I'll post an update as soon as I have more details.

User avatar
NicoDE
Posts: 67
Joined: Fri Aug 24, 2012 9:09 am
Location: Germany
Contact:

Re: King's Quest: Mask of Eternity

Postby NicoDE » Thu Jan 28, 2016 3:52 pm

Zeus wrote:If you're getting all these messages AFTER grSstWinClose completion and not in between grSstWinOpen/grSstWinClose it's not nGlide/d3d9 stuff. What exactly do you get?

The game receives WM_SIZE while Glide is active, even during the grSstWinOpen call.
The game is doing things in strange order while switching Glide resolutions:
- SetWindowPos with new size
- grSstWinClose
- grSstWinOpen with new size

In the end this results in nested grSstWinOpen calls. The GOG team "solved" this by removing some SetWindowPos caĺls, but not all (e.g. 640x480 to 800x600 and back - required for video playback in DD mode).

The next version of kqmoefix will drop all WM_SIZE messages while grSstWinOpen is called or Glide is active (and for sanity reasons suppresses nested open/close calls). The problem is not specific to nGlide. Now the resolutions and renderers can be switched without problems (besides the fact that DD makes more problems with every new Windows version).


Return to “Problems”

Who is online

Users browsing this forum: Bing [Bot] and 3 guests