On The Rain-Slick Precipice of Darkness
From XentaxWiki
Back to index | Edit this page
Contents |
HHA
Format Type: Archive
Endian Order: Little Endian
Date Posted: 2.6.2008
Format Specifications
File Header
char {4} - ID: 0x4f 0xf3 0x2f 0xac
uint16 {1} - Purpose unknown; always 0
uint16 {1} - Purpose unknown; always 1
uint32 {1} - Size of the string table in bytes. Always a multiple of 16.
uint32 {1} - Number of files in the archive.
File Name Table
char{X} - A list of null terminated strings of varying lengths representing directory and file names.
File Index Table
The index follows immediately after the file name table, so it is located at offset 16 + X where X is the size of the file name table.
// For each file
- uint32 {1} - Offset from start of name table to directory name.
- uint32 {1} - Pointer to file name in the file name table. (Add 16 to this value to obtain an offset from the start of the file).
- uint32 {1} - Compression. 0 = uncompressed 1 = deflate 2 = LZMA.
- uint32 {1} - Absolute offset to the file data. Always a multiple of 16.
- uint32 {1} - Uncompressed file size.
- uint32 {1} - Compressed (stored) file size (excluding padding).
byte {X} - File data
Notes and Comments
This is specification for common.hha and parpg.hha.
LZMA compressed files have 5 byte property data, but omit the (8 byte) original file size. The compresses data is terminated by an LZMA end-of-stream marker.
Thanks to Soultaker on the playgreenhouse.com forums for reversing the compression.
MultiEx BMS Script
Not written yet
Supported by Programs
The C source for Soultaker's HHA extractor http://hell.student.utwente.nl/~maks/hha/hha-0.3-src.tar.gz
32-bit Linux Binary: http://hell.student.utwente.nl/~maks/hha/hha-0.3-linux32.gz
Win32 Executable: http://hell.student.utwente.nl/~maks/hha/hha-0.3-win32.zip
Documentation
None
Games
On The Rain-Slick Precipice of Darkness

