HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
diasurgical
devilution
C++2019–2023
diasurgical / devilution

devilution

Diablo devolved - magic behind the 1996 computer game

9Distinct people
9Mentions
0Explicit recommenders
9KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

Diablo devolved - magic behind the 1996 computer game

GitHub

Where it is used

No documented product use has been verified yet.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

No other repository is repeatedly linked in the same discussions.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 3:03:16 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year9 dated mentions

Observed mentions: 2019-07-03 04:23:39 UTC to 2023-06-18 07:53:11 UTC.

01232019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 3 mentions; 1 submissions, 2 comments20192020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments2021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments20212022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments2023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2023

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC312
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC202
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC101
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC202
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC101

What Hacker News says

9 sources
> As a senior Java / CPP developer This makes me cringe. A "senior" engineer is defined by whatever role a company slots you in. This is compounded by adding programming languages to the mix. > I really wish I had done more embedded and assembly at school. I can't understand it or appreciate it. There is no hardware involved here, per-se. What is there is the 6502 instruction set, plus binary floating point calculations. But the fact it is on the 6502 is only interesting because of the constraints. If you are interested, pick up some tutorials on x86 assembly (or ARM, or whatever you have emulators or real hardware available) and go to town. Actually creating full programs(with syscalls) is a bit involved, but a small ASM function inside C++ (since you mentioned C++) should be perfectly doable (example: https://github.com/diasurgical/devi
Read the rest
lution/blob/master/Source... – you'll notice the Diablo game was not an embedded system either)
In Steve Wozniak's floating point routines for the 6502
To give further background, the Devilution team has primarily relied on these resources: 1. The Japanese Playstation port with debug symbols contained in `DIABPSX.SYM`. (see [1]). Example debug info of the Cathedral dungeon generation algorithm: // address: 0x801259D0 // line start: 612 // line end: 624 void DRLG_L1Floor__Fv() { // register: 19 register int i; // register: 20 register int j; // register: 3 register long rv; } 2. The debug release of the PE executable, which contained assert strings (see [2]). Example assert string: "plr[myplr].InvGrid[i] <= plr[myplr]._pNumInv" 3. The Rich header of the PE executable, which details the exact version of the original compilers and linkers used to build `Diablo.exe` (see [3,4]). Example information recovered from the Rich header of `Diablo.exe`: Id Build
Read the rest
Count Name Description 0 0 155 Unknown [---] Number of imported functions (old) 1 0 229 Import0 [---] Number of imported functions 6 1668 1 Cvtres500 [RES] VS97 (5.0) SP3 cvtres 5.00.1668 2 7303 29 Linker510 [IMP] VS97 (5.0) SP3 link 5.10.7303 3 7303 1 Cvtomf510 VS97 (5.0) SP3 cvtomf 5.10.7303 4 8447 2 Linker600 [LNK] VC++ 6.0 SP3,SP4,SP5,SP6 link 6.00.8447 48 9044 72 Utc12_2_C [---] VC++ 6.0 SP5 Processor Pack 19 9049 12 Linker512 Microsoft LINK 5.12.9049 4. Discovery of the original set of compiler flags used to build `Diablo.exe` (see [5]). Primarily "/O1" was used, but there are also peculiarities such as the use of both Microsoft Visual Studio 6 and Microsoft Visual Code 5 for linking the game. 5. The heartfelt dedication of a team of people. GalaXyHaXz did the initial heavy lifting and succeeded in the tremendous task of getting the decompiled source code of Diablo 1 compiling with the original toolchain. Later on she released the project open source and a community of open source collaborators formed. Most of us have never met in real life prior to joining the project, which stands to show that there is strength in online collaboration that transcend both culture and borders. 6. The Beta release and the Alpha4 release of Diablo 1 has also proved invaluable resources for cross-validation as the compiler optimization level was not set to release mode for these binaries. Interestingly, in the process a number of bugs in the original implementation of Diablo 1 were discovered. These have been documented in the source code of Devilution with `// BUGFIX: foo` comments, and have also been detailed in [6]. To track the progress of the project, the "Binary identical functions" milestone has been used in tandem with an assembly diffing tool developed in Rust (see [7,8]). Anecdotally, it was an incredible moment when we first managed to run the cross-platform port of Diablo 1 (DevilutionX, see [9]) natively on Linux and succeeded in playing a multiplayer game connecting our computers in Korea and Denmark. It is equally thrilling to see the modding and porting community picking up the torch and already succeeding in porting Diablo 1 to Nintendo Switch! The main reason for conducting this bit of software archeology is to preserve the classic title that is Diablo 1, for generations to come. And to revive it for modern hardware platforms and make it more mod-friendly in the age of open source software. Happy coding! - The Devilution Team P.S. the project README explicitly states that to play the game, you still need to have access to the original game assets released on the Diablo 1 CD. To acquire a legal copy, please refer to https://www.gog.com/game/diablo P.P.S. for the verification process, there have been proposals that are both ambitious at a level of PhD research (see [10]) and that made us feel warm and fuzzy <3 In the end, many of the techniques outlined were discussed mostly on a design level, some were included as Proof of Concepts, but most of the work in reverse engineering Diablo 1 was from tender labour of a team that care for Diablo 1 the way you would your firstborn child. [1]: https://github.com/diasurgical/scalpel/blob/master/psx/_dump... [2]: http://diablo1.se/notes/debug.html [3]: https://github.com/diasurgical/devilution/issues/111#issueco... [4]: http://bytepointer.com/articles/the_microsoft_rich_header.ht... [5]: https://github.com/diasurgical/devilution/issues/111 [6]: https://github.com/diasurgical/devilution/issues/64 [7]: https://github.com/diasurgical/devilution/milestone/3 [8]: https://github.com/diasurgical/devilution-comparer [9]: https://github.com/diasurgical/devilutionX [10]: https://github.com/diasurgical/devilution/issues/171
In How Diablo Was Reverse-Engineered Without Source Code [video]

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.