Mortal Kombat 1 DOS Sound Blaster Fix

Devoted players know that several different releases of the first Mortal Kombat where made for the PC-DOS platform (an in-depth discussion of the versions and their differences is available in a separate article).

The final two floppy releases by Ultratech and Virgin fixed most of the bugs. One such bug is related to the Sound Blaster driver – SBLASTER.DRV. The old version, 1,568 bytes long, which has been used in the early releases, apparently has a bug that can cause a hard crash on some systems / sound cards. I have not seen any official documentation on the issue, but I could reproduce this crash pretty consistently on a K6-II system with a Creative AWE64. Usually it would happen within 2-3 minutes of running the attract mode. However, with an SBPro-compatible Yamaha Audician 32, the crash would not be reproduced on the same system. I also could never trigger the crash under DOSBox.

With the updated SBLASTER.DRV in the new versions (1,584 bytes long), this crash seems to be fixed, regardless of the audio hardware. Unfortunately, a different issue is introduced: now in certain configurations, there is a chance that when the game is started, it would fail to properly initialize the digital effects, and many of them would be corrupt or missing. One or several restarts of the game may be required to get the effects working properly.

Like the previous bug, this one also depends on configuration, and occurs both on real hardware and in DOSBox. While I did not find a configuration that was “safe” from it, in some it was worse than in others. It happened in more than 50% of the runs in DOSBox, but on my K6-II/AWE64 setup, only about 1 in 4 / 1 in 5 runs was bad.

The easiest way to know is by the gong at the start of the player select screen. If it’s missing, or sounds distorted – you’ve hit the bug. In some cases, the bug even leads to a system (or emulator) crash within a few seconds. If run in DOSBox, the error displayed in the status window is “DMA segbound wrapping (read)“.

The conclusion is that, unfortunately, for the floppy releases of Mortal Kombat, there is not a single good issue-free version of SBLASTER.DRV. Some systems will be more prone to the old version bug, whereas others may suffer more from the new version bug.

If you want to play the newer releases (as most would), but your system is prone to the new version bug (and not to the old version bug), there is a way to force the game to use the old SBLASTER.DRV, since they appear to be binary-compatible. Normally, if you try to take data files from a different version, the game complains and does not run. However, the integrity check only seems to test the file size and does not run any complex checksumming. Since the new driver is longer, there is a trivial solution: zero-padding. Take the old SBLASTER.DRV, open it with a hex editor that has an insert mode, and add 16 zeros at the end of the file to bring it to 1,584 bytes. The game will now accept this driver, which is free of the SFX corruption bug.

If you don’t have the tools, or don’t feel comfortable using them, you can just get the modified version here.

If for some reason you want to do the reverse (using the new driver with an old version of the game), there is no solution that I know of. Thus, if you play the old betas for nostalgic purposes, and your system is affected by the old version bug, the best I can recommend is to use Adlib instead of Sound Blaster. This way you still get the music, and some sound effects, with no crashes.

Remarks

  1. These bugs are not related to the Adlib / Sound Blaster initialization bug which happens on fast CPUs. That bug is present in both the old and the new versions of the driver. However, it is less of an issue, since it only occurs when you try to configure the audio device. If you bypass it during the configuration (e.g., by temporary slowing down the CPU), it will not happen until you try to change the audio device again.
  2. The final CD release of MK1 (which came a full two years after the floppy versions, and featured a complete revamp of the game audio) still includes the SBLASTER.DRV, but does not use it in any way, instead utilizing the Miles Design Audio Interface Library configured via the SETSOUND program. This release does not have any game-breaking audio bugs that I know of.
Advertisement

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s