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.
The following file formats are used by this game.
|RIFF WAVE Format||Game music, located in cdrom:// but also as Audio CD tracks|
|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 :
|UINT32LE count||Number of files in the container|
Then is followed by count structures :
|UINT32LE offset||Offset in bytes where this file begins in the container|
|BYTE filename||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
|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:
|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 ?|
|UINT32LE nextSize||Size in bytes of the next file in the container|
|UINT16LE eof||Seems to be the EOF indicator (systematically 0x5400)|
Aybe for the containers format.