UCyborgs fix is all that is need now! (you still need the Windows Media Source Filter for the 3 games to work). Ford Racing 2 benefits greatly from this. The music no longer skips around anymore. The same goes for Monopoly Tycoon.
Now all three games function fully! Having the offical Windows Media Audio Audio Compression Manager will help enhance overall system compatibility with old games that have audio problems.
To get the ACM working properly AFAIK you need to get an older version of the qasf.dll. Version 6 of the .dll should be fine and works with MT and FR2.
Windows 95 doesn't come with qasf.dll, that's installed when updating DirectX. This observation also doesn't make sense because qasf.dll is part of DirectShow and ACM is a separate beast. Additionally, even on old systems, msaud32.acm was completely optional, its absence would merely prevent software using ACM to decode WMA files.
That's some odd issue on your end. Everything works properly with Windows 10's own qasf.dll here. Maybe you've installed some codec you shouldn't which is causing problems, should never happen on fresh install. InstalledCodec can be used to disable both DirectShow filters and codec drivers. Maybe it can help pin-point the offender.
Speaking of TD6, since it doesn't rely on DirectShow, it doesn't rely on Windows Media Source Filter neither, but merely on its dependencies (they're pulled in by WMAUDSDK.DLL at load-time) Which brings me to another point; your installer fails to make TD6 work because you're installing DLLs in a separate directory and in this case, standard DLL search order rules apply. It could be solved by adding path to the new folder with DLLs to PATH environment variable (setx command with /M parameter).
I suggested this because newest versions of any utility/runtime libraries are usually the best, unless proven they're flawed. And hey, we used those on XP! There is, however, a compatibility issue with Windows 10 version 1809 (Build 17763) and later. Microsoft removed support for querying TCP driver using DeviceIoControl function with control code IOCTL_TCP_QUERY_INFORMATION_EX. strmdll.dll does such a query and it's supposed to handle the failure gracefully, but it doesn't due to a bug, so it crashes the application. I fixed the bug and included the patched DLL in attached ZIP along with the other 2 DLLs that make up Windows Media Source Filter.
Probably, but since you have SP2, you might want to search for dxmasf.dll and msaud32.acm just in case to confirm. If they're present, they should be properly registered as well so you don't have to do anything.
Fairly sure Microsoft has done something similar with DirectMusic, just replacing DLLs that could've provided backwards compatibility with stubs because it's a deprecated feature. There's a patch to fix that too.
On Microsoft Windows Vista, DirectMusic uses only software synthesis. Also, the DirectMusic kernel mode synthesizer that supplies the DirectMusic components with a high-resolution timer has been removed.
Another assumption I made, I don't always look into things the way I should. My first OS was Windows 7, I didn't realise fully that qasf.dll was part of the DirectX components. I have never really used Windows 95/98 so I didn't pick up on that. Thank you once again for clearing up some information that I got wrong.
Yes I know that is a fact, I really should explain all the specifics better and have less assumptions. It was very obvious that the application requires them since if they are not present, the game throws up errors (I forgot).
ALSO on Windows XP the music stutters in Monopoly Tycoon and Ford Racing 2 (fresh installs). So that rules out any codec issue that I have on my end. It is very subtle, you may have not noticed it at all, if you listen to the raw .wma files you can hear no stutter (it is not always consistent in-game).
I know almost nothing about DirectMusic, but games that use it can request an undocumented DirectSound COM interface. Once I identified this and fixed its use in IndirectSound the music in No One Lives Forever 2 started working, and so the existing DirectMusic still does something, as you say. In case it's of interest to anyone reading this (sorry, I know it's off topic from DirectShow), someone from Microsoft told me the following as I was investigating and trying to get information about said undocumented COM interface:
That's interesting. The only thing I can say with absolute certainty, on my end on Windows XP x64 SP2, Ford Racing 2 stutters consistently in menus when you start it, but when you start racing, the issue does not re-occur, neither in-race or when you return to menus. Although that's the very obvious stutter that shows its effects on both sound and graphics. It also refuses to minimize when you alt-tab, I can see parts of other applications' windows flickering beneath. I might try it on plain 32-bit XP at some point.
Those kind of dependencies are actually quite easy to figure out as long as you have access to the system where they're satisfied. With a debugger, it's possible to decipher calls made to CoCreateInstance, then lookup the CLSID of the referenced object by searching registry (HKEY_CLASSES_ROOT\CLSID or HKEY_CLASSES_ROOT\WOW6432Node\CLSID) where it says in which DLL the object is implemented. A trick Dependency Walker doesn't know about.
I barely know what I am doing and all the specifics and I have never developed anything purely by myself. I barely know anything about DirectShow, just that there are .DLL's everywhere and the registry has entries that point to them, and that applications load them.
Thanks, I see that replacing dmscript.dll alone fixes the intro. Maybe DirectMusic brokenness is just sloppiness on MS's part rather than intentional omission. DLLs are still decently sized, bigger than XP versions actually. Some increase is usually due to using a newer compiler, this one should be small though.
The stuttering is coming from the qasf.dll being loaded by the game. DirectShow has support for ASF files, the qasf.dll is used with that file format.
The problem comes from that the newer versions of the QASF.dll tries to intercept calls with DirectShow; DMO wrapper or something (I think, I am not sure).
QASF stands for Quartz (DirectShow) + ASF (Advanced Systems Format).
All of the stuttering can be circumvented when the Windows Media Audio Decoder is registered, the correct version of the qasf.dll is placed with the games' executable and then everything will play smoothly.
I was swapping qasf.dll's often in SysWOW64 (unsafe, I know ? ), so now there should be no need to modify system files.
Often the most simplest solutions are the ones that work, I just didn't try placing the qasf.dll with the game ?
The right version of the qasf.dll is required to be located with the game executable so that the .dll from SysWOW64 is not loaded by the game.
The version of the qasf.dll MUST be: 6.05.3790.3959 (or similar).
For the Windows Media Audio Decoder,
msadds32.ax needs copied from a computer running Windows XP (or earlier) and to be registered through the command-prompt or from a DirectShow filter manager.
Oh, and the game can't be installed to the default path (or the path manually selected) when installing the game. For some reason Monopoly Tycoon is listed in the Windows Game Explorer library, making things difficult. Ford Racing 2 is still having issues though... not sure why
3a8082e126