First post, by DivByZero
- Rank
- Newbie
Hi all, sharing a patch here I made for "The Incredible Machine 2". If you're running this game on an ESS1868/1869 device, note that you should also install my Sierra sound driver fix here:
New Sierra audio driver patch - Fix mixer volumes on ESS1868/1869 devices (possibly others too)
No matter what device you're running though, you'll quickly find a bit of an annoying "feature" of this game, which relates to the voice samples on this "talkie" version of the game. Voice samples only play from the CD, and won't work if copied to the local HDD. This would be fine, if it wasn't the case that CD audio tracks are also always used if the CD is inserted, overriding the music driver you select. If you want voice with Adlib/SB/MT-32/GM music (and I prefer the GM version), you're out of luck. Other Sierra titles allow you to use voice files from the CD or the local HDD, as they have a system via the "RESOURCE.CFG" files to specify paths to locate each resource type. This one title however, despite having the familiar RESOURCE.CFG file, does not. The game is hard-coded to only look for voice files (.VOC) from a CD drive. Note, that's specifically a CD drive, regardless of where you installed from. It uses an Int 2F/AX=150Bh "CD-ROM v2.00 - DRIVE CHECK" request to locate drives, and additionally checks that MSCDEX support is available on it.
Restricting support to the CD drive for voice files doesn't appear to be deliberate, it's just because that's what the canned routine they used to search for the CD drive did, and they use that to find the drive letter. This patch changes this behaviour. Instead of finding the CD drive for voice files, after installing this patch the game will now look in the install directory - but the install directory only. This means you NEED to copy the 30MB or so of .VOC files from the CD to your install directory to get voice working after installing this patch, but afterwards, you'll get voice correctly working no matter what music device you use. Voice will also still work correctly if you have CD audio tracks playing. This also massively improves load times, because reading the voice files required the drive to stop CD audio playback and seek to the voice data, play the audio, then seek back again, causing noticeable delays every time voice was activated on real drives. This patch corrects that too, and gives a better experience all round, even if you just want to play using CD audio. Note that if you are running an ESS device, you won't get CD audio playback for music tracks at all unless you install the patch I linked at the start of this post.
Like my other patch, I kept the patch in python since it's transparent and self-documenting. If someone has a question about this 10 years from now, if I just drop an opaque 16-bit binary, that's going to be a PITA. This script on the other hand does everything using a few regex expressions. As a python script, you won't be able to run this from dos, but once the files are patched you just need to transfer them onto your DOS machine.
Anyway, that's about it. Let me know if there are any questions or issues.