When using Windows Vista or later versions of Windows, you might have noticed strange behaviour during the intro of Unreal II: The Awakening. It plays fine until it goes to the "colour tube" part and then all you see is a white screen with music looping. If so, this article will explain why this (and frequent game crashes) is happening and show you the way to solve this problem.

So, why is this happening? In order to answer that, we need to delve into the history of both Windows and Unreal II. Back in 2002 when Unreal II was developed most intensively, the developers wanted to build in a new, exciting music system. The first Unreal had a sort of dynamic music implementation via triggers - if you step on one invisible switch, the music changes. However, that system had its drawbacks - what if you somehow miss the trigger by, say, jumping over it? You would get a totally inappropriate music playing. Plus, there were issues with "boss music" - if there was only one boss, then it was easy - their death acted like a trigger. But what if the boss had henchmen? While Unreal worked around that by implementing Counters (no, not the stall-type, but invisible actors that counts how many times they were triggered and triggers something else when the count is high enough), it wasn't the perfect solution either. For one, you have to count the henchmen manually, and if you add one more, you will break things. Secondly, what if the boss generates said henchmen, like the Araknid Queen? Problems arise.

To counter them, Legend Entertainment took the leading music implementation of that time - DirectMusic - and hooked up the game with it. That also allowed for some really nice features like the bars moving in the intro sequence and correct timing of any music or scene. In fact, it was so powerful that they decided that it was time to make not the music being controlled by the scene, but rather the scene being controlled by the music. Thus Unreal II has very much dynamic music (as Unreal Engine 3 now, but now they are using OpenAL directly).

However, Microsoft had other plans. At the time not many games took advantage of DirectMusic. They decided that maintaining the DirectMusic implementation is not worth the effort, money and developers, especially considering that they were working on the XBox-based XACT as well, and thus by Windows Vista they decided to mark DirectMusic as deprecated, so no more games would be built on it. They also didn't ship some of the needed components with it. The situation did not change in any of the later Windows versions to date.

So what happens when you try to run a game that depends on DirectMusic? You get anomalies. The DirectMusic libraries still exist, but many functions just return instead of doing what they should be doing. Thus when Unreal II asks whether it's time to jump to the Atari scene, the libraries answer with false every time, and so no transition occurs. Furthermore, in some cases where music is important, due to incorrect information sent by the deprecated libraries the game has no choice but to crash. And since the game heavily depends on it, crashes get a lot more frequent.

And now the solution. How does one overcome deprecated libraries? Simple: install working ones! Windows Vista and later use the same format DLLs as earlier Windows versions. And luckily for us, a similar problem appeared and was solved when Windows Server 2003 was released without DirectMusic support. The fix still exists, and has been adapted to be easily applied to any modern Windows version, including 64-bit ones. Just download the correct file, extract it, and read the README for instructions on how to apply the fix and credits.

DirectMusic Fix for 64-bit Windows (alternative mirror)

DirectMusic Fix for 32-bit Windows (alternative mirror)

You can also take a look at the original Windows Server 2003 fix here for reference (although it doesn't include a convenient way to apply the files).