Die Hard Trilogy
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.