Search This Blog

Wednesday, May 14, 2008

Running Blood 2 on Windows Vista x64

I would like to share my experiences running Blood 2 Chosen and Nightmare Levels on Windows Vista x64. First off the both game installers use 16-bit installer stubs because of which it does not allow you to install the game directly on 64-bit Windows (32-bit Windows should work fine). Anyways, I installed both games and the patches inside Microsoft Virtual PC on Windows XP 32-bit. Then I moved the full game folder out to Windows Vista x64. If you are using 32-bit Windows, you should not face the same problem. To my surprise mostly everything worked out of the box except the music. I cranked the game to it's highest settings and ran it a 1280x960. It looked good for it's standard. But I was missing the music. So I started examining the files. The game uses Microsoft IMA (Interactive Music Architecture - old form of DirectMusic). Then I loaded the game in Dependency Viewer and start profiling it. I found that the Music failed to work due to a missing function "DirectSoundCreate" in the DLL "dslite.dll". Having done some DirectX programming before, I quickly figured that this is a mini version of the DirectSound library. The file that depends on "dslite.dll" is "am18.dll" that you will find in the Blood2 directory. I quickly opened "am18.dll" in a binary editor ("edit.com /72 am18.dll" works good) and binary edited the string "dslite.dll" to "dsound.dll" and saved the file (always remember to be in overwrite mode - this will not change the DLL file size and structure; do not overwrite other parts of the DLL). Then I fired Bood 2 and voila! Everything worked... even the music. :)

Edit:
Find the hacked AM18.dll file here.