HSB Format (Halloween Harry)
HARRY.HSB is the sprite file used by Halloween Harry and holds all of the sprites used by the game. The format is trivial, being a collection of sprite chunks. Each sprite chunk has an 8 byte header followed by raw data.
The file has no signature, however the chunk headers can be parsed and checked to make sure the end of the last chunk aligns perfectly with the end of the file. It is unlikely this would result in incorrect identification of a file.
Each image consists of an eight byte header followed by raw image data, repeated until the end of the file. The image data is for a 256 color sprite, meaning one byte of data per pixel.
|UINT8 unk1||Unknown - unused by game|
|UINT8 unk2||Unknown - unused by game|
|UINT16LE unk3||Unknown - unused by game|
|UINT16LE width||Image width, in pixels|
|UINT16LE height||Image height, in pixels|
|BYTE data[width * height]||Image data in Linear VGA format (raw 8bpp)|
Each map file (found in MAPS.-0) has its own palette data (see the article on the GMF Format for information). This palette is used to draw both the tile art and the sprites for that level.
Colour index 0 is used to denote transparent pixels.
At present only one version of the file is known of length 462,848 bytes containing 467 sprite images.
It is still unknown how the game determines the placement of sprites. I suspect the 'unknown' bytes listed above are used in conjunction with the map file, but I haven't been able to verify that yet.
I was able to extract 467 sprite images from HARRY.HSB. Some of these are 1 pixel high and 1 pixel wide. I don't know the purpose of these 1x1 images yet. These may separate different groups of sprites, or they may simply be slots unused or reserved by the developers.
The following tools are able to work with files in this format.
|Name||Platform||View images in this format?||Convert/export to another file/format?||Import from another file/format?||Access hidden data?||Edit metadata?||Notes|
This file format was reverse engineered by Duckthing. If you find this information helpful in a project you're working on, please give credit where credit is due. (A link back to this wiki would be nice too!)