Generic File Format Data Types
This is a generic list of data types encountered in all file formats. Not all of which will be used in a specific file format.
They are listed here, rather than repetitive typing in each of file format's documentation.
Little endian byte order, lsb first for numeric values, text is stored in Big endian byte order.
Type | Description |
---|---|
byte | unsigned 8 bit (1 byte) |
char | signed 8 bit Ascii(utf8) character |
char[] | fixed length string |
tbool | byte (0 = false). |
short | 16 bit signed short (2 bytes) |
ushort | 16 bit unsigned short (2 bytes) |
long | 32 bit signed integer (4 bytes) |
ulong | 32 bit unsigned integer (4 bytes) |
float | 32 bit IEEE-single precision floating point value (4 bytes) |
double | 64 bit IEEE-double precision floating point value (8 bytes) |
asciiz | Null terminated (0x00) variable length ascii string |
asciiz… | zero or more concatenated asciiz strings |
ascii | fixed length ascii string(UTF-8) |
XYPair { ulong x,y; // normally associated with cell sizes }
XYZTriplet { float x,y,z; }
Normally, this structure is associated with positional information.
RGBAColor { byte r,g,b,a; // // 0xFF:FF:FF:FF means 'default' }
LenString { ulong Length; Asciiz Characters[[Length]];// null terminated regardless. };
Length always =strlen(Characters)+1;
This is a pre-calculated convenience to reduce load times (and skip over the variable length block).
This is the transform matrix as used by Microsoft DirectX. Known as row-vector format
In fact, the 'correct' matrix is actually 4 x 4, but the last column always represents 0,0,0,1 thus
M11, M12, M13 (0.0) M21, M22, M23 (0.0) M31, M32, M33 (0.0) M41, M42, M43 (1.0)
And so is never stored. This identical matrix is used for WRP files (both formats) and RTM files.
In this documentation the above matrix is represented as XYZTriplets
struct TransformMatrix { XYZTriplet XYZ[[4]]; };
The last row:
M41..., or XYZ[[3]]...
corresponds to the position of the object.
Pew files hold this data in Column, rather than row, vectors, as per OpenGL. Thus;
Wrp
ABC DEF GHI JKL Pew ADGJ BEHK CFIL
And is repesent structurally as
struct PewTransform { float[[3]][[4]]; };
Note that 'int' is not used in this documentation for the following reasons: