| Microsoft DirectX 8.1 (C++) | 
The table below shows which words are reserved and must not be used.
| ARRAY | DWORD | UCHAR | 
| BINARY | FLOAT | ULONGLONG | 
| BINARY_RESOURCE | SDWORD | UNICODE | 
| CHAR | STRING | WORD | 
| CSTRING | SWORD | |
| DOUBLE | TEMPLATE | 
The variable-length header is compulsory and must be at the beginning of the data stream. The header contains the following data.
| Type | Required | Size (in bytes) | Value | Description | 
|---|---|---|---|---|
| Magic Number | x | 4 | "xof " | |
| Version Number | x | 2 | "03" | Major version 3 | 
| "02" | Major version 2 | |||
| Format Type | x | 4 | "txt " | Text File | 
| "bin " | Binary file | |||
| "tzip" | MSZip compressed text file | |||
| "bzip" | MSZip compressed binary file | |||
| Float Size | x | "0064" | 64-bit floats | |
| x | "0032" | 32-bit floats | 
The values in the table are delimited by quotes to call attention to the number of characters in each value. Those with 4 bytes contain four characters, those with 2 bytes contain two characters.
Comments are applicable only in text files. Comments can occur anywhere in the data stream. A comment begins with either C++ style double-slashes (//), or a number sign (#). The comment runs to the next new line. The following example shows valid comments.
# This is a comment. // This is another comment.