Die Hard Trilogy

From ModdingWiki
Jump to navigation Jump to search
Edge of map!
Die Hard Trilogy
Die Hard Trilogy.png
There is no image of a modified version of this game — upload one!
Levels?X mark.svg Not editable
Tiles?X mark.svg Not editable
Sprites?X mark.svg Not editable
Fullscreen?X mark.svg Not editable
Sound?X mark.svg Not editable
Music?X mark.svg Not editable
Text?X mark.svg Not editable
Story/cutscenes?X mark.svg Not editable
UI/menus?X mark.svg Not editable
Demos?Unknown

Die Hard Trilogy is a single player action game in which you incarnate John McClane as seen on the first three installments of the Die Hard series of action movies.

In the first episode Die Hard, a third-person shooter, you are in charge of rescuing hostages in the Nakatomi Plaza building.

The second episode Die Hard 2: Die Harder is presented as an on rails-shooter in which you must stop terrorists who have taken over the Dulles Airport.

In the third episode Die Hard: With a Vengeance, you are tasked of finding and defusing explosive devices throughout a joyride driving taking place in New York City.

File formats

The following file formats are used by this game.

Filename Format Details
AIRPORT.BIN
AQUADUCT.BIN
CENTRALP.BIN
CHINATOW.BIN
CHURCH.BIN
CNT.BIN
DH1CHINE.BIN
DH1MECHR.BIN
DHR1.BIN
HARLEMFI.BIN
HELIDROP.BIN
INTER.BIN
NEWWING.BIN
PLANE.BIN
QUAYSIDE.BIN
RUNWAY.BIN
SNOWCHAS.BIN
SUBWAYFI.BIN
UNDERGRO.BIN
WALLSTRE.BIN
RIFF WAVE Format Game music, located in cdrom:// but also as Audio CD tracks
DH1
DH2
DH3
LOADER
Die Hard Trilogy container Archive storing the game's data files, located in ./data

Die Hard Trilogy container

Each container begins by indicating the number of files it contains :

Data type Description
UINT32LE count Number of files in the container

Then is followed by count structures :

Data type Description
UINT32LE offset Offset in bytes where this file begins in the container
BYTE filename[12] Name of the file (DOS 8.3 style, padded with null-terminated characters)

Note: the last file name will be null and its offset will equal the container size in bytes.

The logic for extracting files from the container is as follows :

  • read the number of files in the container
  • read the structures following (named files[] for this example)
  • write a for loop running from index 0 to count - 1
  • get the beginning offset of the current file from files[index]
  • compute file length by subtracting it to offset of files[index + 1]
  • and so on until index == count - 1

LOADER

File name Description
LOAD.MWF Contains 30 audio samples

Format of audio samples

Monophonic 8-bit unsigned PCM at 11 025 Hz appended with a 36 bytes structure at the end:

Data type Description
UINT32LE unknown1 ! Seems to be always 0
UINT16LE unknown2 ! Seems to be always 1
UINT16LE unknown3 ! Seems to be always 1
UINT32LE freq1 ! Sample rate of this file ?
UINT32LE freq2 ! Sample rate of next file ?
BYTE unknown4[8] ! ???
UINT32LE nextSize ! Size in bytes of the next file in the container
BYTE unknown5[6] ! ???
UINT16LE eof ! Seems to be the EOF indicator (systematically 0x5400)

Credits

Aybe for the containers format.