Hack64 Wiki
Other Titles
Hack64 Wiki
Other Titles
This is an old revision of the document!
This page documents the binary layout of a sprite file used in the Banjo Kazooie game (based on the n64 rom) . All multi-byte values are stored in big endian.
The sprite file begins with a 16-byte header, followed by a frame offset table, and then the actual frame data.
| Offset | Bytes | Big Endian Value | Description | 
|---|---|---|---|
| 0x00 | 00 01 | 0x0001 | Frame count = 1 | 
| 0x02 | 01 00 | 0x0100 | Format ID = 0x100 | 
| 0x04 | FF FF FF FF | 0xFFFFFFFF | Likely unused or sentinel | 
| 0x08 | 00 BE | 0x00BE = 190 | Possibly a default width? | 
| 0x0A | 00 BE | 0x00BE = 190 | Possibly a default height? | 
| 0x0C | 00 00 00 00 | 0x00000000 | Padding or flags | 
At offset `0x10`, the frame offset table begins.
| Offset | Bytes | Big Endian Value | Description | 
|---|---|---|---|
| 0x10 | 00 00 00 04 | 0x00000004 | Offset to Frame 0: `0x04 + 0x14 = 0x18` | 
The frame offset table contains a single `uint32_t`, pointing to the first frame header. Since there's only one frame, the table is 4 bytes long.
| Offset | Bytes | Big Endian Value | Description | 
|---|---|---|---|
| 0x18 | 00 00 | 0 | X position | 
| 0x1A | 00 00 | 0 | Y position | 
| 0x1C | 03 91 | 0x0391 = 913 | Width in pixels | 
| 0x1E | 00 13 | 0x0013 = 19 | Height in pixels | 
| 0x20 | 00 3E | 0x003E = 62 | Chunk count | 
| 0x22 | 00 00 | — | Unknown or padding | 
More details on chunk data may follow after offset `0x24`.