Opcode Mnemonics

Immediately following the opcode in the HSF will be the arguments, if any, to that specific opcode.  These are listed in the operands list of each opcode definition.  In the documentation this list is formatted as a list of comma separated datatypes, in the HSF stream the opcodes and their operands are packed without any spaces or commas between them.

Some opcodes are expected to be used in ordered pairs, examples of these include TKE_Start_Compression/TKE_Stop_Compression and TKE_Start_User_Data/TKE_Stop_User_Data.  Not using these opcodes as ordered pairs will result in corrupt HSF streams.

Below is a table containing the definitions of the different datatypes.  Depending on the context datatypes can be signed or unsigned.

Byte  Single byte of binary data.  This is often used for character strings.

Short/Word 

short integer (two bytes) of binary memory, stored in little-endian format.
Int/Long  integer (four bytes) of binary memory, stored in little-endian format.
Float  Floating point value stored in little endian format.
Point  An array of 3 floats.
Variable  Miscellaneous formats, often used for bitmasks. Specific details given for each usage in the appropriate opcode.
A common case is to read 1 byte, and if the appropriate bit is set, one or more additional bytes specify additional more-significant bits. Other usage includes different choices based on previous data.

Arrays

Arrays are specified by (count)x in front of the base type. The count maybe an expression based on a previous operand value.

Optional Fields

The presence of some data may be dependent on previous data elements. Square brackets ([ ]) will surround those data elements. The field and/or object description will indicate the dependency.

top_level:4