djavul

module
v0.0.0-...-7f142c4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 22, 2019 License: Unlicense

README

djavul

GoDoc

Preservation project for an all time classic, Diablo 1.

Note, djavul requires an original copy of diablo.exe and diabdat.mpq. None of the Diablo 1 game assets are provided by this project.

Project aim and objectives

The aim of this project is to provide an open source reference re-implementation of the Diablo 1 game engine.

To achieve this aim, the following objectives have been identified.

  1. Develop an understanding of the inner workings of the Diablo 1 game engine (subproject notes).
  2. Convert the original game assets to file formats with open specifications (subproject formats).
  3. Provide a framework of extensive test cases for comparing the re-implementation against the original Diablo 1 game engine.
  4. Split the engine into self-contained modules that may be validated and verified independently.
  5. Implement a set of tools around these modules which through interaction provide the functionality of the original Diablo 1 game engine.
  6. Validate that - given a deterministic seed - the re-implementation achieve pixel perfection, by mirroring the mouse and keyboard input and comparing the graphic and audio output against the original Diablo 1 game.

Design

For an overview of the key idea behind this project, refer to the design documentation.

Installation

For installation and run instructions, refer to the respective documentation:

Progress

2018-05-12
  • Interact with the Diablo 1 game engine from Python script.

Screenshot from 2018-05-12

2018-03-30
  • Running the Djavul frontend (djavul-frontend.exe) on a Windows 7 host system (left) and the Djavul backend (djavul.exe) on the same system using a modified version of DiabloPatch (right).

Screenshot from 2018-03-30

2018-03-25
  • Running the Djavul frontend (djavul-frontend) on a Linux host system (left) and the Djavul backend (djavul.exe) on a Windows XP VirtualBox guest (right).

Screenshot from 2018-03-25

2017-12-23
  • Decode legacy Diablo 1 save files.
2017-12-22
  • Play sounds using Beep.

Screenshot from 2017-12-22

2017-12-21
  • Forward mouse and keyboard input from Djavul frontend to Diablo 1 game engine (also referred to as the Djavul backend).

Screenshot from 2017-12-21

2017-12-16
  • Render control panel.

Screenshot from 2017-12-16

2017-11-24
  • Correct rendering of Tristram.

Screenshot from 2017-11-24

2017-11-22
  • Mirror output using Pixel.

Screenshot from 2017-11-22

2017-11-13
  • Dungeon generation of Cathedral.

Directories

Path Synopsis
cmd
djavul-frontend
The djavul tool is a graphical front-end to the Diablo 1 game engine.
The djavul tool is a graphical front-end to the Diablo 1 game engine.
l1
The l1 tool provides dynamic random level generation of Cathedral maps.
The l1 tool provides dynamic random level generation of Cathedral maps.
sv
The sv tool decodes Diablo 1 save files.
The sv tool decodes Diablo 1 save files.
d1
automap
Package automap provides access to a mini-map of the game.
Package automap provides access to a mini-map of the game.
control
Package control implements handling of the control panel.
Package control implements handling of the control panel.
diablo
Package diablo implements top-level functions of the Diablo 1 game.
Package diablo implements top-level functions of the Diablo 1 game.
engine
Package engine implements image decoding, PRNG and memory management utility functions.
Package engine implements image decoding, PRNG and memory management utility functions.
gendung
Package gendung implements dungeon generation utility functions.
Package gendung implements dungeon generation utility functions.
init
Package init implements initialization functions for the game.
Package init implements initialization functions for the game.
inv
Package inv implements inventory functions.
Package inv implements inventory functions.
l1
Package l1 implements dynamic random level generation of Cathedral maps.
Package l1 implements dynamic random level generation of Cathedral maps.
lighting
Package lighting implements light effect functions.
Package lighting implements light effect functions.
multi
Package multi implements multiplayer functions.
Package multi implements multiplayer functions.
quests
Package quests implements quest functions.
Package quests implements quest functions.
scrollrt
Package scrollrt implements rendering.
Package scrollrt implements rendering.
sha1
Package sha1 implements a non-standard compliant SHA-1 hash algorithm, as used by Diablo 1.
Package sha1 implements a non-standard compliant SHA-1 hash algorithm, as used by Diablo 1.
sound
Package sound implements sound playback.
Package sound implements sound playback.
track
Package track implements tracking of continued walk actions.
Package track implements tracking of continued walk actions.
world
Package world implements rendering of the game world.
Package world implements rendering of the game world.
internal
assets
Package assets provides utility functions for handling game assets.
Package assets provides utility functions for handling game assets.
parse
Package parse provides access to the data of the diablo.exe exectuable.
Package parse provides access to the data of the diablo.exe exectuable.
types
Package types describes the data types used in Diablo 1.
Package types describes the data types used in Diablo 1.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL