The Riddle of Master Lu HAS
From XentaxWiki
Contents
HAS + HAG
- Format Type : Archive
- Endian Order : Little Endian
Format Specifications
// *.has File
- uint32 {4} - Number of Entries
- // for each file
- char {33} - File Name (zero-terminated)
- byte {1} - Section ID
- byte {1} - Entry Type
- uint32 {4} - File Offset
- uint32 {4} - File Size
- uint32 {4} - Entry Offset
- char {33} - File Name (zero-terminated)
- // until *.has file ends
- char {33} - Section Name (zero-terminated)
- byte {1} - Section ID
- char {33} - Section Name (zero-terminated)
// *.hag File
- // for each file
- byte {X} - File Data
- byte {X} - File Data
MultiEx BMS Script
Not written yet.
Notes and Comments
- The *.has file contains the directory, a number of *.hag files contain the data.
- The Section ID of each file entry determines which *.hag file the current file is located in.
- The list of *.hag files can be found at the end of the *.has file in a list consisting of the name of the *.hag file (without the extension) and its Section ID.
- The Entry Type field determines whether this entry is "live" or not -- a deleted (empty) entry will have a zero Entry Type value.
- The Entry Offset contains an offset value within the *.has file. In a "normal" case, this value is identical to the offset of the entry itself. Sometimes, however, this value may point to a different entry (which then usually contains the same file name, but a different File Offset or File Size). This may even be chained several times. The reason for this is not yet known, but a guess would be that the game files are internally addressed by their position in the resource table and these values work as a sort of "redirector".
- Some of the extracted files may not have a file extension. They can be of one of the following types nonetheless.