explaingit

diasurgical/devilution

8,977C++Audience · developerComplexity · 4/5Setup · hard

TLDR

A faithfully reconstructed version of Diablo's original 1996 source code that lets you compile and run the classic game on modern hardware using your own copy of the game's data files.

Mindmap

mindmap
  root((Devilution))
    What it does
      Reconstructed Diablo source
      Drop-in .exe replacement
      Modern hardware support
    How it was made
      PS1 debug symbols
      Hidden PC debug build
      Code reconstruction
    Modding
      Readable C++ source
      No binary injection
      Cut content documented
    Setup
      Legitimate data files required
      Visual C++ on Windows
      MinGW on Linux or Mac
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Compile and run the original Diablo game on modern Windows, Linux, or Mac using legitimate data files from the disc or GoG.

USE CASE 2

Mod Diablo by editing readable C++ source code instead of injecting into an opaque compiled binary.

USE CASE 3

Study 1990s commercial game engine architecture through the reconstructed Diablo codebase.

USE CASE 4

Build new features or bug fixes on top of the clean source code as a foundation for community improvements.

Tech stack

C++Visual C++MinGW

Getting it running

Difficulty · hard Time to first run · 1h+

Requires a legitimate copy of Diablo's data files from the original disc or GoG.com, plus a C++ build toolchain.

In plain English

Devilution is a reconstructed version of the original source code for Diablo, the 1996 action role-playing game by Blizzard. The project exists because the game was abandoned after its sequel came out and became increasingly difficult to run on modern hardware. A developer traced the code back through a series of accidents: a PlayStation port of Diablo made in Japan accidentally had its debug symbol file left in, and a special debug build was hidden inside a file on the PC release. By combining clues from both sources, the project reconstructed what the original code must have looked like. The result is a drop-in replacement for the original game executable. It does not include any game data or art assets from Diablo itself. To actually play the game using Devilution, you need a legitimate copy of Diablo's data files, either from the original disc or from the GoG.com release. Once you have those files and compile the Devilution binary, it replaces the original Diablo.exe and runs the game. One of the stated goals is to keep the code faithful to the original, including its bugs and rough patches, rather than fix everything immediately. This makes it a clean foundation that other developers can build on top of. The project also documents content that was cut or left unfinished before the game shipped, such as features that were planned but removed under time pressure. For people who want to modify the game, having the source code is a significant improvement over the previous situation, where modders had to work by injecting code into a compiled binary they could not fully read. The README includes examples of simple mods, such as adding a health bar above enemies or a redesigned trade screen. Multiplayer works through the original Battle.net service provided by GoG, as well as over local networks. Building the project requires a Windows development environment, instructions are provided for Visual C++ versions ranging from the 1990s tools used in the original development up to Visual Studio 2017, and for MinGW on Linux, Windows, and Mac.

Copy-paste prompts

Prompt 1
How do I build the Devilution binary on Windows using Visual Studio 2017 and point it at my GoG Diablo data files?
Prompt 2
Show me how to write a simple Devilution mod that adds a health bar above enemies in the C++ source code.
Prompt 3
How do I build Devilution on Linux using MinGW and run it with my Diablo data files?
Prompt 4
How do I set up a multiplayer Diablo session using Devilution over a local network?
Open on GitHub → Explain another repo

← diasurgical on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.