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 12.5.1 - install this to be able to run the toolchain VM and compile your own version of Diablo 1!
VMWare Player 16.1.0 - install this if the older version above does not work


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)