The format was disassembled by Haper (not completely disassembled, adjustments are needed)
Contains all visible map geometry. It contains all vertices with normals and coordinates for textures and indexes for building geometry, as well as synchronization.
Type code Value
1 DWord(4) + DWord(4)
4 Byte(1) + Byte(1) + Byte(1) + Byte(1)
6 Word(2)/32768 + Word(2)/32768
7 (Byte(1)-128)/128 + (Byte(1)-128)/128 + (Byte(1)-128)/128 + (Byte(1)-128)/128
Value Size
Block code 1 Word(2)
Data compression (0 - no, 32768 - yes) 0 Word(2)
Block size (bytes) 4 DWord(4)
Version number (same for all) 13 DWord(4)
Value Size
Block code 9 Word(2)
Data compression (0 - no, 32768 - yes) 0 Word(2)
Block size (bytes) 4 DWord(4)
Number of vertex description blocks - DWord(4)
Vertex description block - -
Value Size
Beginning of a new block 0 DWord(4)
Beginning of the vertex format description 2 DWord(4)
Vertex format - -
End of vertex format description 255 DWord(4)
Beginning of the vertex description 17 DWord(4)
Number of vertices - DWord(4)
Vertexes - -
Value Size
???(always zero) 0 Word(2)
Offset - Word(2)
Type of variables - Word(2)
What the variables describe - Word(2)
At the very beginning of any vertex are the coordinates of its placement, so the vertex format does not include a description of the coordinates. There are only three vertex formats in the 2215 maps:
Value Size
zero 0 Word(2)
Offset 12 Word(2)
Type of variables 4 Word(2)
Normals 3 Word(2)
Light factor(?) ? Word(2)
Offset 16 Word(2)
Type of variables 4 Word(2)
Tangents 6 Word(2)
Texture corrector X coordinate 0/1 Word(2)
Offset 20 Word(2)
Type of variables 4 Word(2)
Bi-Tangents 7 Word(2)
Texture corrector Y coordinate 0/1 Word(2)
Offset 24 Word(2)
Type of variables 7 Word(2)
Texture coordinates 5 Word(2)
Thus, the total length of one vegetation vertex equals 32 bytes.
Value Size
zero 0 Word(2)
Offset 12 Word(2)
Type of variables 4 Word(2)
Normals 3 Word(2)
Light factor(?) ? Word(2)
Offset 16 Word(2)
Type of variables 4 Word(2)
Tangents 6 Word(2)
Texture corrector X coordinate 0/1 Word(2)
Offset 20 Word(2)
Type of variables 4 Word(2)
Bi-Tangents 7 Word(2)
Texture corrector Y coordinate 0/1 Word(2)
Offset 24 Word(2)
Type of variables 1 Word(2)
Texture coordinates 5 Word(2)
zero 0 Word(2)
Offset 32 Word(2)
Type of variables 6 Word(2)
Lightmap coordinates 261 Word(2)
The total length of one brash vertex is 36 bytes.
Value Size
zero 0 Word(2)
Offset 12 Word(2)
Type of variables 4 Word(2)
Normals 3 Word(2)
Light factor(?) ? Word(2)
Offset 16 Word(2)
Type of variables 4 Word(2)
Tangents 6 Word(2)
Texture corrector X coordinate 0/1 Word(2)
Offset 20 Word(2)
Type of variables 4 Word(2)
Bi-Tangents 7 Word(2)
Texture corrector Y coordinate 0/1 Word(2)
Offset 24 Word(2)
Type of variables 4 Word(2)
??? 10 Word(2)
zero 0 Word(2)
Offset 28 Word(2)
Type of variables 1 Word(2)
Texture coordinates 5 Word(2)
The total length of one vertex of an entity is 36 bytes.
Based on this, we get, for example, this view of the vertex:
Value Offset Size
Coordinate X 30.76 0 DWord(4)
Coordinate Z 0.2 4 DWord(4)
Coordinate Y 51.4 8 DWord(4)
Normal at X 127 12 Byte(1)
Normal at Z 255 13 Byte(1)
Normal at Y 127 14 Byte(1)
Light factor(?) 1 15 Byte(1)
Tangent at X 127 16 Byte(1)
Tangent at Z 255 17 Byte(1)
Tangent at Y 255 18 Byte(1)
Texture corrector X coordinate 0 19 Byte(1)
Bi-Tangent at X 0 20 Byte(1)
Bi-Tangent at Z 127 21 Byte(1)
Bi-Tangent at Y 127 22 Byte(1)
Texture corrector Y coordinate 0 23 Byte(1)
Texture coordinate X 3.1802 24 Single(4)
Texture coordinate Y 2.2143 28 Single(4)
Lightmap coordinate X 0.4023 32 ShortSingle(2)
Lightmap coordinate Y 0.000097 34 ShortSingle(2)
Value Size
Block code 10 Word(2)
Data compression (0 - no, 32768 - yes) Word(2)
Block size (bytes) - DWord(4)
Number of index description blocks - DWord(4)
Index description block - -
Value Size
Number of indexes in a block - DWord(4)
Indexes - DWord(4)
Index: Word(2)
The number of indexes must always be a multiple of three, because triangles are constructed using indexes.
(what they synchronize is still a mystery to scientists)
Value Size
Block code 11 Word(2)
Data compression (0 - no, 32768 - yes) 0 Word(2)
Block size (bytes) - DWord(4)
Number of synchronization units - DWord(4)
Synchronization units - -
Value Size
??? 0 DWord(4)
??? 0 DWord(4)
??? 0 DWord(4)
??? 0 DWord(4)
Number of synchronization units - DWord(4)
Synchronization units - -
Value Size
??? DWord(4)
??? Word(2)
??? Word(2)
Source