This is a block-level storage format used as a container for other file formats, most notably BTDB.
Byte[4] | Signature "SBSF" |
Uint32 | Header Size |
Uint32 | Block Size |
Uint32[5] | Reserved |
Byte[*] | User Header |
Byte[*] | Blocks |
Header Size is the number of bytes from the start of the file upto the User Blocks area.
Other file formats that use this as a base will reference their User Header and Blocks areas. The User Header starts 0x20 bytes into the file. The Blocks start HeaderSize bytes into the file.
The Blocks are referenced by their Block ID. The offset of each block is calculated as follows:
Uint32 offset = HeaderSize + BlockID * BlockSize;