Diablo 1 hacking - a fully-built toolchain to add your own features
With the release of the Diablo 1 source code, I spent some time to set up a development environment in which I could compile the source code. Wanting to be as close as possible to the tools used in the 90s by the development team, I opted for the Windows 95-based toolset. It took me a few days to create a VMWare virtual machine running Windows 95, sound drivers, video drivers, and Visual C++ 6.0 with the ability to compile, link, and hit breakpoints in the Diablo 1 source code.

This VM contains everything you need to hack or modify Diablo 1, and to add your own features.

I wrote a "how to start" readme on the desktop of the VM. Moreover, I've included tools for MPQ and image manipulation.

To try it out, I used it to create few small features myself. They're all implemented inside Source\sm_utils\sm_utils.cpp. By looking at all the functions I added, you can find where they're called from to figure out some of the workings of the code base. Here's what I added:
  • Deckard Cain gives you a unique item when you ask him
  • Items display their sell value when mouse-hovered
  • Example of drawing/animating a sprite
  • A toggled insta-kill mode, which instantly kills mouse-hovered monsters


Diablo 1 toolchain VM - download this and run it in VMWare Player to gain access to everything needed to modify Diablo 1. Some knowledge of C is required. Source code is included.
VMWare Player - install this to be able to run the toolchain VM and compile your own version of Diablo 1!


Install log

I'm providing this install log for anyone who wishes to install the toolchain components himself:
  • install (in a new VM) windows 95 and vmware tools
  • install vc++ 6.0 professional (serial 465-6389583) - "typical" installation
    • which installs IE 4.01 SP1 and THEN VC++ 6.0 professional
    • skipped MSDN
  • install msie401sp2 (Internet Explorer 4.01 SP2) (required by MDAC 2.8 SP1)
  • install MDAC 2.8 SP1 (required by vs6sp5)
    • some steps failed (ole and msxml) but overall succeeded
  • install vs6sp5 (service pack 5 for vc++ 6.0) (required by vcpp5)
  • install vcpp5 (vc++ 6.0 Processor Pack)
  • install Microsoft Visual C++ 5.0 Professional (serial 111-1111111) - "typical" installation
  • install VS97SP3 (service pack 3 for Visual C++ 5.0)