The Lurker Lounge Forums
Debug Release of Diablo 1 (five days prior to the 1996 release of Diablo 1) - Printable Version

+- The Lurker Lounge Forums (https://www.lurkerlounge.com/forums)
+-- Forum: Lurker Games (https://www.lurkerlounge.com/forums/forum-6.html)
+--- Forum: Diablo (https://www.lurkerlounge.com/forums/forum-15.html)
+--- Thread: Debug Release of Diablo 1 (five days prior to the 1996 release of Diablo 1) (/thread-16351.html)



Debug Release of Diablo 1 (five days prior to the 1996 release of Diablo 1) - mewmew - 07-14-2015

From http://diablo1.se/notes/debug.html

Debug Release of Diablo 1

On the 26th of December 1996, version 1.0 of diablo.exe came into existence. Most people are aware of what happened five days later, as Blizzard released Diablo 1 for the world to see. Less known is what happened five days prior. On the 21st of December 1996, another version of diablo.exe came into existence, namely the debug release of Diablo 1, version 1.0.

Matryoshka Dolls

The debug release of diablo.exe is embedded within the MPQ archive d1221a.mpq, which in turn is embedded within the MPQ archive diabdat.mpq. A custom patch header of 36 bytes has been prepended to the diablo.exe executable.

Once the custom patch header has been removed, the debug release of diablo.exe should begin with the "MZ" signature and have the following SHA1 hash sum: accedfe32775d4a1984451309608c2a2d39ad406.

Assert Strings

One benefit with the debug release is that it contains a range of assert strings, which may give crucial insight into the inner workings of the game. For instance, the following assert strings give insight into the names of global variables, structure fields and enumerates.
  • Code:
    ! Monsters[monst].Anims[anim].CMem
  • Code:
    (uniquetrans << 8) + 4864 < LIGHTSIZE
  • Code:
    (DWORD)monster[nummonsters]._mx < MAXDUNX
  • Code:
    plr[myplr].InvGrid[i] <= plr[myplr]._pNumInv

Furthermore, a set of distinct categories of functionality may be inferred from the source code file names (e.g. "c:\diablo\direct\doom.cpp").
  • appfat.cpp: Fatal application errors.
  • automap.cpp: Automap.
  • capture.cpp: Screenshots.
  • codec.cpp: Encoding and decoding of save files.
  • control.cpp: UI controls.
  • cursor.cpp: Mouse cursor actions.
  • dead.cpp: Dead bodies on ground.
  • debug.cpp: Debug functions.
  • diablo.cpp: Main functions of the game.
  • doom.cpp: The doom quest.
  • drlg_l1.cpp: Dungeon random layout generation of cathedral.
  • drlg_l2.cpp: Dungeon random layout generation of catacombs.
  • drlg_l3.cpp: Dungeon random layout generation of caves.
  • drlg_l4.cpp: Dungeon random layout generation of hell.
  • dthread.cpp: Dungeon thread management.
  • dx.cpp: DirectX initialization.
  • effects.cpp: Sound effects.
  • encrypt.cpp: MPQ encryption.
  • engine.cpp: CEL decoding, PRNG, memory management.
  • error.cpp: Error dialogues used by shrines.
  • gamemenu.cpp: Main game menu (e.g. single player, multi player).
  • gendung.cpp: Dungeon generation utility functions.
  • gmenu.cpp: In-game menu.
  • init.cpp: General initialization.
  • interfac.cpp: Cut-scenes and progress bar interface.
  • inv.cpp: Inventory.
  • items.cpp: Items.
  • lighting.cpp: Lighting effects.
  • loadsave.cpp: Save file handling.
  • minitext.cpp: Medium-sized text rendering.
  • missiles.cpp: Projectiles (e.g. arrow, firebolt).
  • monster.cpp: Monsters.
  • movie.cpp: Movie playing.
  • mpqapi.cpp: MPQ functions.
  • msg.cpp: Network messages.
  • multi.cpp: Multi-player functions.
  • nthread.cpp: Network thread management.
  • objects.cpp: Objects (e.g. door, chest).
  • palette.cpp: Colour palettes.
  • pfile.cpp: Player save file.
  • player.cpp: Players (i.e. character/hero).
  • plrmsg.cpp: Chat messages.
  • portal.cpp: Town portals.
  • quests.cpp: Quests.
  • scrollrt.cpp: Drawing functions.
  • setmaps.cpp: Place objects in quest areas.
  • sound.cpp: Sounds.
  • stores.cpp: Stores (i.e. NPC item sales).
  • sync.cpp: Network synchronization.
  • themes.cpp: Dungeon themes (e.g. paintings on walls, armor stands).
  • tmsg.cpp: Temporary network messages.
  • town.cpp: Town rendering.
  • towners.cpp: Town NPCs.
  • trigs.cpp: Dungeon triggers (e.g. stairways, red portal).
  • wave.cpp: WAVE audio file parsing.



RE: Debug Release of Diablo 1 (five days prior to the 1996 release of Diablo 1) - Bolty - 07-17-2015

I wonder if any original Diablo developers still lurk here (and other Diablo 1 sites) from time to time just to get nostalgia reading things like this.