Yet another WC4 victim, please help

Badger8th

Petty Officer
That's great news :) Glad to know it's finally working for you!

The extra logs do shed some light on the issue, thanks for posting them! As I suspected from the previous test runs, dxmci was failing when instancing the DirectShow Filter Graph Manager. This is the very first step of the process to get a movie playing and, up until now, i would have said it probably had no chance of failing :p

This means that the issue is somehow related to DirectShow core and that the older dwrap and dxmci DLLs were fine.

Getting a bit more technical, the line of code in question is:
Code:
CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC,IID_IGraphBuilder, (void **)&pGB))
And, the relevant line on the log that tells us this has failed is:
Code:
[00270365  +998ms] Filter Graph NOT BUILT!! hr = 80070003
The returned error code apparently means ERROR_PATH_NOT_FOUND, which really boggles the mind a bit, since at this point we are only dependent on core DirectShow DLLs (movie files and codecs don't get into the picture until later).

So, my best guess at this point is: there's something about the compatibility flags set on the WC4 GOG EXE that break core DirectShow behavior on your machine, for some unknown reason. Fortunately, integrating the win2k fix on the GOG EXE allows the game to run without any compatibility flags (avoiding the VirtualProtect error), working around the issue.

Badger8th, if you're still willing to do a bit of experimentation, could you try making a copy of the new wc4dvdgog-win2k-patched.exe and renaming it into wc4dvd.exe? Basically this will leave us with two EXEs with the exact same content but with different names and different compatibility settings. If running wc4dvd.exe still fails and wc4dvdgog-win2k-patched.exe succeeds, that will confirm that it's the compatibility settings that are getting in the way.

Thanks for your patience on this! :)

Okay, I'll give it a shot.

I renamed it to Wc4dvd.exe and it starts doing the error again. Weird. But I guess that confirms your theory.
 

HCl

WC EXE archaeologist
Great, thanks for testing this! That confirms that compatibility mode is the origin of your problem, as strange as it may seem. Lesson i've learned here: compatibility mode is good, but avoiding it at all if possible is better :)

If this comes up again in the future, we'll be able to point people to the wc4gog_1.0.2_test1.zip package on this thread as a solution, with the recommendation that people run the included alternate GOG EXE. Maybe the CIC staff can make an update on this at some point. In the meantime, i'll update my site with this info.

Thanks!
 
Last edited by a moderator:

ChrisReid

Super Soaker Collector / Administrator
Great job again HCl, you're a genius! I can mark it down for a possible update in the future. If you or anyone has time to summarize what all has occurred in the last couple pages of threads here and under what circumstances the latest patch would be useful, it would make our processing of the update much easier. :)
 

HCl

WC EXE archaeologist
Thanks Chris :) Here's a summary of issue and fix:

This package (wc4gog_1.0.2_test1.zip) fixes a rare issue in WC4 GOG that causes movie playback to fail even when all codecs are correctly installed. The core DirectShow Filter Graph Manager fails to initialize when any compatibility mode is set on the wc4dvd exe. The symptoms are:

- A test render with CCCP Insurgent completes successfully, without revealing any problems.
- You still get the "Missing Movie" error when running WC4. Additionally, no wc4_graph.log is generated.

We haven't determined exactly why this happens, whether it's due to some third-party software installed or not, but as we experimented around we were able to confirm that the cause was indeed related to the use of compatibility mode flags. This was a problem, since WC4 GOG needs Win98 compatibility to run.

In order to work around this, I integrated the WC4 win2k fix into the WC4 GOG EXE, allowing WC4 GOG to run without compatibility flags. Also the GOG dxmci was also tweaked a bit, mostly to remove the logic that forced the use of mpeg2dec if registered, (so what you see on CCCP Insurgent should be the exact same filters dxmci uses) and add extra debug messages. These should make troubleshooting easier in the future.

Anyone having a problem with WC4 GOG fitting the above symptoms should download this package and run the new EXE (wc4dvdgog-win2k-patched.exe) without applying any compatibility flags. That should fix it. The DLLs included in this package also include the improvements introduced in the previous update (configuration of alternate rendering modes via renderer.cfg and videoRenderer.cfg, to work around other potential issues).
 
Last edited by a moderator:

HCl

WC EXE archaeologist
Hey Gulikoza,

The sources of the modified dxmci were uploaded into my site some time back, they currently can be found here (*).

Just to clarify, the main changes that were made to your excellent dxmci were mostly in order to fix a few issues people were having, as well as making dxmci cooperate better with a DirectDraw wrapper we're using (source also included), which in turn fixes a few WC4 bugs (such as palette issues in Win Vista and up). There are some small comments in dxmci.cpp, above your original notice.

Anyway, let me need if you need anything else!

(*) That zip is lacking a few debug messages added on the last build, but nothing else. Still, if you want, i'll post a new version of the sources once I am home for the weekend.
 
Top