Internal Object  Primer

========================

by Paul Hoad

This is a completely rough draft of the specification for the object format that I am now working on
the idea of giving you this is that people are asking me what to change now they can visualise it
with the openGL view, if you find anything extra out please let me know.

Internal object strcuture
 
 
Header (approx 76 bytes) contains number of verticies (NVerticies) offsets to other parts if files
Scale data now known to be a list of values that can be used for X and Y 

 
 

Some Unknown Data ? its unknown
Texture Cmds A series of commands with different numbers of parameters 
 
0x83 unk,TextureId,Cmd,nbitmaps,nrows, unk..... unk, 
                                            ( Vertex Index List, verticies used for polygons),0
0x3 unk,TextureId,Cmd,nbitmaps,nrows, unk..... unk, ( Vertex Index List, verticies used for polygons),0
0x81 unk..
0x80  unk..
0x8d unk..
Vertex list can have -ve numbers meaning use abs(vertex_index) but reverse direction of flow 

i.e.  FFEF meaning -2 equates to 3->2 from list below 
 
Some objects contain no textures but contain object references so that single objects can 
be made from groups of other objects, possibly how some bush groupings and pit crew is 
put together also hence some of the ? objects in the list! they are not referenced directly 
but via another internal object! 
 
 End of this section marked with a 0x8000 
 
 

Unknown Data seems  to be a list of booleans always true! or so it seems
Points List XYZ data in form   (Xid Yid Z Unk)   Xid and Yid seem to point to either data from Scale data table or to previous X,Y values Z is a read value sometimes negative (tall crane an example with -ve values,the tables here are for the stand)  in this table the code in brackets () is the XYZ code for the data for that point this is created 
from the first 3 number 84 8 0 I have found that anything above x80 means make it -ve then take the 
remainer and subtract and divide by 4  this gives for 84 8 0 -> -1 2 0 which means x = the 1st Scale(-ve) value, 
y = the 2nd scale value(+ve) and a z of zero giving a XYZ for the first point of (-3200,5120,0) simple eh! 
 

now what about these points beginning with (A) I use this to indicate mean ALTERED it should be 
read as this  (for number 4)   8002 0 a00 means    used the third point already defined i.e. ([2] 4 88 0) 
but use a00 as the z value! 
 
 

Vertex List  NVerticies * 4 bytes of the form    0102 0000 0203 0000          (1->2)  (2->3)  these form a list the index of which is referenced by 
                                the texture commands 
 

Unknown block to the end A whole bunch of unknown data thought to be related to drawing performance i.e. how much is draw at what distance!
 

Here are some examples of how we are getting along!
 

Hope this is a start for people

Paul Hoad