Monday, January 16, 2012

cRPG: Running Diablo 1 on Windows 7

There's a fair amount of scattered, occasionally-conflicting information about running Diablo 1 (the first Diablo game) under Windows 7. (If you found this post, you've probably already seen some of this info.) Here are my experiences.

Out of the Box:
Diablo 1 will install and run under Windows 7. However, the original unpatched version of the game stores multiplayer character files in the WINDOWS directory. This means you have to run the game as Administrator. (Running the game from the CD automatically prompts you to do this.) If you don't, you won't be able to create a new multiplayer character or see any of the multiplayer characters you created during previous sessions. (I haven't messed with single player.)

Connecting to results in a long pause with the message "Searching for the fastest server...", which eventually times out after about 1 minute with a "Could not connect" error message.

It is also not possible to play multiplayer across a LAN using IPX because Windows 7 no longer supports IPX. I installed Windows XP Mode with Virtual PC. While this allows for IPX, it is not a solution because DirectX will not work under XP Mode. This means the game won't even start under virtual XP.

Instead, I went back to Windows 7 and used IPXWrapper. You just need to copy the 3 provided .dll files into your Diablo directory to do this. (This code seems safe. I skimmed the source, which is well-formatted, and I didn't notice anything obviously strange. I haven't had any strange new processes or network connections made since running it, either.)

I was trying to play Diablo between a Windows 7 and a Windows XP machine. Note that IPXWrapper is tunneling IPX over UDP, so you can't play using IPXWrapper with a machine that is natively running IPX. All the machines involved need to be using IPXWrapper. But using IPXWrapper is actually easier than installing and configuring IPX on Windows XP anyway, so this is not a hardship once you know about it.

Having to run Diablo as Administrator annoyed me somewhat. I was also curious if I could get to work. (It is no longer listed even on the Classic site).

Installing the latest patch to 1.09 means Diablo will now save multiplayer characters in the diablo/ game directory. Thus, running as Administrator is no longer required. Also, I could now connect to a server. (I did not bother actually creating an account and logging on, though.)

Bad/Broken Colors:
Patching breaks the color palette, though. This is obvious in the opening Blizzard animation and in the game itself (though the pre-game menus look fine). Some have reported luck with the Compatibility settings, but none of the combos I tried worked for me. (For example, setting the mode to Win98 or earlier meant the game couldn't find the CD-ROM anymore.)

The weird trick some have reported of opening the Windows Screen Resolution settings window and leaving it open in the background also did not fix this for me.

(2014-06 Update: The explorer-based fix below no longer works on my system. However, see Mary's comment on this post about a simple registry fix from Blizzard that solves this problem.)

What did work was: start Diablo, Alt-Tab and open the system Task Manager, and kill explorer.exe. Then Alt-Tab back to a correctly-colored Diablo. (Weird, I know.) When you're done with the game, you can return to the task manager and File -> New Task (Run...) -> explorer.exe again to bring back your task bar, etc.

As reported elsewhere, you can automate all this with a simple batch file. Save the following into a file named diablo.bat in your Diablo game directory:

taskkill /f /im explorer.exe
start explorer.exe

You can now change your start menu shortcut to point to diablo.bat instead of diable.exe. You just have to hit any key in the console window after you quit Diablo bring back explorer. (Annoying side-effect: this closes any open Windows Explorer windows too.)

All told, unless you are running into some of the game bugs fixed by the patch or want access, it's probably easier to just set the original unpatched version to run with Administrator priviledges. Also, if you do patch, all games must be patched to the same level to play over IPX.

On a related sidenote, Diablo 2 runs fine for me out of the box under Windows 7.


Josh M said...

You sir are a gentlemen and a scholar! following your steps I now can play Diablo multiplayer! thank you!

Zach said...

@JoshM: Glad to know it was of use to someone!

TerminalOrbit said...

I found much of what was posted here independently, but with much suffering, since my daughter was waiting to play networked the whole time ;-/ but you have collected everything neatly in one place, and that deserves some kudos!

I am now wondering if you might be so kind as to share with me where the Diablo 1.00 multi-player character save files are stored on Windows 7 by default... I want to switch computers and save backups of my new characters.

Please help, thanks! :-)

Mary Carr said...

Blizzard has created color fix registry entries, available on their FTP:

Look for "d109_x64.reg" for 64-bit operating systems, or "d109_x86.reg" for 32-bit operating systems. All you do is save the .reg file anywhere, double click it and say yes to the prompt. Worked perfect for me on Win 7 x64.

If you want to use the Hellfire mod, you will still need to use the fix mentioned in this blog entry. It's also been determined that even though the Hellfire updater can't be started in a 64-bit environment, you can use a program to extract the updated files from the .exe itself, then manually copying those files over the current files in the C:/SIERRA/HELLFIRE folder. If you look around, you can also find the config file to re-enable multiplayer in the updated version.

benjamin T said...

thanks for the help!
like Mary said, go on google and search "blizzard support" go to the diablo 1 support section, and there should be one that refers to the color problem. download that, and it should work from there on out.

I do have one problem though i was wondering if you might know the answer to.

I'm playing multiplayer with two windows 7 computers over ipx. when playing multiplayer, if we don't play the game for awhile, leave one player in the game and the other player leaves, then when the other player comes back they can't find the game the other player is still in. because of this both people have to exit out of the game and re-enter it(this is a problem because the dungeon levels are restocked with monsters, the map changes everytime, and you also have to redo quests).
any idea how to fix that?

hopefully that isn't too confusing!
thanks for the help!

Zach said...

@TerminalOrbit: The files should be in c:\windows\ If you don't see them, they may be hidden. You can change your view settings in Windows Explorer under Tools -> Folder Options, View.

@benjaminT: Sorry, haven't run into this myself.