Turok+Evolution

Turok Evolution is the 2002 re-release of the first-person shooter series set in an alternate world with dinosaurs. The Data file which consists of all data and sound (but not movies) is about 1.8 gigabytes in size. This game uses numerous text headers. All Meshes begin with the text: ACTOR_MESH followed by the file's name with path: Data\Actors\Allies\Suspendedcity\troop\mil_bb_allytroop_model.atf for example.

A model from the PC version of the game. In the PC version the files are all separate, and not in archives. Note the normals in the upper right of the "Sabertooth"



In header region at the beginning of each mesh, there appears to be a list of assets and types associated with the mesh, of which MOEG appears frequently, and may be related to the internal MOEG files Ice Age DOTD uses.

.atf files are one of the mesh file formats the game uses. It is used mostly for level terrain and static meshes such as weapons. The main portion of these file is composed of chunks. Each Chunk is composed of 3 sections, The First section are texture coordinate data. .mtf is another (but simpler) mesh format the game uses. ATF files: The start of the first section is signified by: 00 00 00 20 50 50 50 50 03 01 00 01 04 C0 XX 74 Where the XX (which stays the same in each chunk) stands for how many vertexes are in the chunk, and the 04 means it is section 1. There are 2 four-bit floats representing the xTEX,yTEX texture coordinates for each vertex. The second section begins right after the last float in section 1, it starts with: 03 01 00 01 05 C0 X X 6C Where the XX is the same as before and the 05 means it is section 2. In this section there are 16 bytes for each vertex. The first 3 floats are the xNOR,yNOR,zNOR coordinates of the Normals (normals are used to calculate light reflection), followed by a weight that is usually 00 00 80 3f, which is hex for 1.00. The third section begins right after the last float in section 2, it starts with: 03 01 00 01 06 C0 X X 6C Where the XX is the same as before and the 06 means it is section 3. Like section 2, there are 16 bytes for each vertex. The first 3 are xVER,yVER,ZVER which are the coordinates for the vertexes themselves. The last four bytes are a 4 byte integer that appears to increase compared with the previous 4 byte integer for the last vertex preceding it.

MTF Files: These files are used mostly for dynamic meshes such as Dinosaurs and humans. The meshes start at 10 00 00 00 XX ?? ?? ?? 78 56 34 12 ?? ?? ?? ?? Where XX is the number of Vertexes and is also the number of Normals. 78 56 34 12 is just the header of each subsection. Subsections occur either right after each other or after a 16 byte gap Each section has XX amount of the following one right after each other: XVER YVER ZVER ?? ?? ?? ?? XNRM YNRM ZNRM ?? ?? ?? ??

PC Version:
Use the script below to convert most of the ATF files from the PC version into .3ds files with UV coords. The PC Version of the game uses slightly different file formats but keeps the extensions more or less the same. ATF Files In the PC Version ATF files are dynamic meshes such as Players or Dinosaurs.

The first 4Bytes in each ATF file, #Headers signifies the number of Headings/Subheadings in each file, with pointers to each data segment. Each header is reversed text in capital letters, for example ENOB, Is BONE. The general format of the headers is in 24Byte headers as follows:

{4ByteTextString 1ByteType 00 00 00 (1ByteCount 00 00 00) (1ByteSubCount 00 00 00) 4ByteOffset 4ByteSize}

Should the text in red be deleted? It sounds Speculative? Example of a file, by inspection: The very first BYTE in each ATF file is the amount of text headers in the file and each text header is 24 bytes long (including the first byte) with the text portion portion reversed for example ENOB, is BONE. After that are two Time Stamps, possibly the when the master models began to be compiled and were they finished compiling.

Sometime after the Time Stamps there is more data. Then there is a list of the texture paths starting from the "Fake" directory Y:\Data There is one texture for each submesh, for example the Sabre-Tooth Tiger, has a Body mesh and texture and ones for the Head, and Face. The textures in the PC version appear to be bitmaps. Right after texture list are texture weights for each texture though most appear to be equal to the value 1 (00 00 80 3f) and it would not be surprising if this is never changed for any texture in the Game: Each section is 80BYTES long.

00 00 00 00 4byteTEX# FF FF FF FF....... 00 00 80 3f.....

TEX# starts counting at 00 for one texture and 01 for the second texture ect.

Then there is some more texture information but it only uses bytes and not floating points: It is 24 bytes long for each Texture:

01 00 00 00 4byteTEX# FF FF FF FF ......

Then right after that there is a 4byte "SUBMESH" followed by that many of sections of the 4bye text length and then the text name of each part of the mesh. TEXTLENGHTH, MESHNAME, TEXTLENGTH, MESH NAME. Then for each submesh there are some weights: Each section is 20Bytes long:

00 00 00 00 Weight 00 00 00 00, 01 00 00 00, 4BYTESUBMESH

After that there appears to be 16 more Bytes followed by an unknown section, that is what the first 4byte is in length: LENGTH ......... FF FF FF FF FF FF FF FF (end).

Right after that there is an unknown 4byte followed by the length of the meta data (plus the 4bytes it self):

Unknown, METALENGTH.......

Then right after that there is the 4byte number of Vertexes. With 50 bytes per vertex:
 * 1) Vertexes

The format is: verX, verY, verZ, normX, normY, normZ, 1texX, 1texY, 6BYTEUNKNOWN, (00 00 80 3F), 8BYTEUNKNOWN.

After the Vertexes is the Face List which works a little differently than most Face Lists:

Every Face In the List is Connected to the previous two vertexes and the two vertexes after the list. This is similar to Polystrips but it with a list, and not just every vertex in counting order. Also each different SubMesh is separated in the face list by "FF FF". This shows the beginning of the 50 byte Vertex array in the Saber Tooth Tiger model file.

MTF Files:
Buildings, grass and other terrain are stored in MTF files.

In each submesh within the file the Vertexes are stored in 44Byte arrays:

verX, verY, verZ, normX, normY, normZ, FF FF FF FF, 1texX, 1texY, 2texX, 2texY

Following the vertexes is the sequential face list: ver1, ver1, ver1...

Where all of the vertexes are connected to the two vertexes right before and the two right after it.