just to show how that will look FE models in plain text and how similar they are to a scripted pioneer model a rather simple one:
Object [B]#15:Interplanetary Shuttle[/B]
Vertex count 32; Vertices:
#0/00h: 1, 50, 25, 31 - type z, y, x vectors for vertices first is type of vertice, there are diiferent ones, some are common (1) for creating a polygon, other are just to control a bezier line e.g.. vertices are all mirrored along x axis thats why they are listed only once and numbered here only as even numbers, this is 1:1 in pioneer to use except you will need most odd to, three of them you will need for a triangle (of course) and so on you can have this way special bezier curve sufaces which have many sides
#2/02h: 1, -68, 25, 31
#4/04h: 1, 75, 0, 37
#6/06h: 1, -75, 0, 37
#8/08h: 1, 68, -12, 31
#10/0Ah: 1, -68, -12, 31
#12/0Ch: 1, 51, 23, 28
#14/0Eh: 1, 66, 8, 32
#16/10h: 1, -65, 12, 34
#18/12h: 1, 52, 12, -34
#20/14h: 1, 25, -12, 18
#22/16h: 1, 25, -25, 31
#24/18h: 1, -25, -12, 18
#26/1Ah: 1, -25, -25, 31
#28/1Ch: 1, 50, -25, 31
#30/1Eh: 1, -50, -25, 31
Normal count 22
Normals:
# 2: ( 0 127 0), type 0 - they mark the visibility direction for planes
# 4: ( 89 89 0), type 0
# 6: ( 0 30 123), type 2
# 8: (-123 30 0), type 2
# 10: ( 113 -56 0), type 4
# 12: ( 0 -56 113), type 4
# 14: (-113 -56 0), type 6
# 16: ( 0 -127 0), type 8
# 18: ( 127 0 0), type 20
# 20: ( 0 -123 30), type 20
Scale 6 - logically this scales the object, strangewisely vertex spacing is in whole feet allready i guess
Scale2 0 - this is the zoom factor, 0 that's why you can zoom into the shuttle
Radius 75 - another scaling factor, could be for collision check?
Primitives 17 - number of polys you can say, dunno why?
Dot color: 060606h = RGB(6,6,6) - this is just the color that represents the object when it's to far to see, medium grey
Unknown_1 8 - now some even theunis wasn't to shure about
Unknown_2 19200
Unknown_3 7680
Collision data at 49F384h - it's somekind of a pointer, some points i guess to the text that comments the model
Specifications:
Main thrust: 2725 (5.00g) - self explanatory
Reverse thrust: -1635 (-3.00g)
Gun mountings: 0
Scoop mounting: 0
Mass (fully laden): 8
Capacity (no drive): 4
Price: ¢14
Scale: 40 - similar to bounding radius in pioneer used to limit the size for the equipment window
Description: 400Bh "Interplanetary Shuttle" - this points to the objects name in the names table
Crew: 1
Missiles: 0
Drive fitted: Interplanetary Drive (integral)
Destruction bonus: 256 - the elite points you get for a kill 256 = 1 point don't ask me why not simply 1, ok you could give part points this way, guess i haven't seen any
Gun 1/x: 400 [0190h] - the gun vectors
Gun 1/y: 100 [0064h]
Gun 1/z: 480 [01E0h]
Gun 2/x: 100 [0064h]
Gun 2/y: 60 [003Ch]
Gun 2/z: 30 [001Eh]
Gun 3/x: 320 [0140h]
Gun 3/y: 50 [0032h]
Gun 3/z: 12 [000Ch]
Gun 4/x: 3 [0003h]
Gun 4/y: 0 [0000h]
Gun 4/z: 75 [004Bh]
Mesh written out (147 commands):
FFE6 ; Cmd 6 [7]: 2047 - this is somekind of a "blind" command you wont need for a pioneer model
001A 2444 8200 2401 2440 2420 2042 2103 2242 2123 ; SetColor(GLOBAL[2], - this is the color definition table similar to pioneers set_color command
UNLIT | COLOR_GRAY, - a prefixed one
UNLIT | RGB(4,0,1), - colors in frontier have only a max val of 6 i guess 7 & 8 are reserved
UNLIT | RGB(4,4,0),
UNLIT | RGB(4,2,0),
UNLIT | RGB(0,4,2),
UNLIT | RGB(1,0,3),
UNLIT | RGB(2,4,2),
UNLIT | RGB(1,2,3))
0004 5009 090A 0B08 0010 ; Square(LOCALCOLOUR | Texture_Metal_Black_0, 10,11,9,8, Normal(16)) - now the first poly gets drawn, a square for the bottom, corners of the square are v10 v11 v9 v8 from the top table, plus the visibility dir from normals table it's not needet to do it this way in pioneer visibilty is given by winding order to know which side is the transparent (culled) one of a single sidet poly
080B 03E8 ; if (DISTANCE > 1000) goto L82 - frontier works with linefeeds this is somewhat the level of detail in fe
054B 01F4 ; if (DISTANCE > 500) goto L62 - you can see farer as -> go to line
0011 5009 1614 0214 0200 0000 0000 ; Cone(LOCALCOLOUR | Texture_Metal_Black_0, Vertex(20), Vertex(22), Radius(20), Normal(2), COLOR_BLACK, Radius(0), Normal(2), COLOR_BLACK) - another draw command called cone but draws a cylinder here, one vertical from the landing sledge of the shuttle.
0011 5009 1A18 0214 0200 0000 0000 ; Cone(LOCALCOLOUR | Texture_Metal_Black_0, Vertex(24), Vertex(26), Radius(20), Normal(2), COLOR_BLACK, Radius(0), Normal(2), COLOR_BLACK) - four such cylinders for all 4 "legs"
0011 5009 1E1C 0212 0200 0000 0000 ; Cone(LOCALCOLOUR | Texture_Metal_Black_0, Vertex(28), Vertex(30), Radius(18), Normal(2), COLOR_BLACK, Radius(0), Normal(2), COLOR_BLACK) - the first horizontal cylinder of the sledge
0011 5009 1715 0215 0200 0000 0000 ; Cone(LOCALCOLOUR | Texture_Metal_Black_0, Vertex(21), Vertex(23), Radius(21), Normal(2), COLOR_BLACK, Radius(0), Normal(2), COLOR_BLACK)
0011 5009 1B19 0215 0200 0000 0000 ; Cone(LOCALCOLOUR | Texture_Metal_Black_0, Vertex(25), Vertex(27), Radius(21), Normal(2), COLOR_BLACK, Radius(0), Normal(2), COLOR_BLACK)
0011 5009 1F1D 0213 0200 0000 0000 ; Cone(LOCALCOLOUR | Texture_Metal_Black_0, Vertex(29), Vertex(31), Radius(19), Normal(2), COLOR_BLACK, Radius(0), Normal(2), COLOR_BLACK) - second horizontal
L62: 024C 01F4 ; if (DISTANCE < 500) goto L82 - again the lod if sequence far away object won't have e.g. a sledge remember one was pointing to line 62 above if true landing gear is not drawn full therefore it becomes this simple lines
0002 5009 1416 ; Line(LOCALCOLOUR | Texture_Metal_Black_0, 22,20)
0002 5009 181A ; Line(LOCALCOLOUR | Texture_Metal_Black_0, 26,24)
0002 5009 1C1E ; Line(LOCALCOLOUR | Texture_Metal_Black_0, 30,28)
0002 5009 1517 ; Line(LOCALCOLOUR | Texture_Metal_Black_0, 23,21)
0002 5009 191B ; Line(LOCALCOLOUR | Texture_Metal_Black_0, 27,25)
0002 5009 1D1F ; Line(LOCALCOLOUR | Texture_Metal_Black_0, 31,29)
when very far away all landing gear drawing is left away >1000 was pointing to line 82 one line in the hex data is just a word long, 0x0000 the following commands drawing the body
L82: 0004 5009 0102 0300 0002 ; Square(LOCALCOLOUR | Texture_Metal_Black_0, 2,3,1,0, Normal(2)) - top
0004 5009 0104 0500 0004 ; Square(LOCALCOLOUR | Texture_Metal_Black_0, 4,5,1,0, Normal(4)) - front
00AB 05DC ; if (DISTANCE > 1500) goto L99- this means draw no window above distance 1500
0004 0000 0D0E 0F0C 0004 ; Square(COLOR_BLACK, 14,15,13,12, Normal(4)) - window
L99: 0008 5009 0402 0600 0006 ; Square(LOCALCOLOUR | Texture_Metal_Black_0, 4,2,6,0, Normal(6)); - the upper right side
; Square(LOCALCOLOUR | Texture_Metal_Black_0, 5,3,7,1, Normal(7))-the upper left side, i guess the data is gone lost while transcribe
024B 036A ; if (DISTANCE > 874) goto L124 - a if sequence to make text only visible above lod
191C 0000 ; Rotate -- default 0000 - rotation of text, flow to
833C FD44 ; Rotate -- default FD44- rotation of text, facing to
000A 0000 0606 4610 3016 ; Text(COLOR_BLACK, Normal(6), Vertex(16), Scale(6), VECTOR_FONT, 3016h)- text command, 000A means is text is reg#
191C 0040 ; Rotate -- default 0040
833C FD44 ; Rotate -- default FD44
000A 0000 0607 4612 3016 ; Text(COLOR_BLACK, Normal(7), Vertex(18), Scale(6), VECTOR_FONT, 3016h)
the left four polys for lower right / left side and lower front / back
L124: 0004 5009 0306 0702 0008 ; Square(LOCALCOLOUR | Texture_Metal_Black_0, 6,7,3,2, Normal(8))
0004 5009 0508 0904 000A ; Square(LOCALCOLOUR | Texture_Metal_Black_0, 8,9,5,4, Normal(10))
0008 5009 0806 0A04 000C ; Square(LOCALCOLOUR | Texture_Metal_Black_0, 8,6,10,4, Normal(12));
; Square(LOCALCOLOUR | Texture_Metal_Black_0, 9,7,11,5, Normal(13))
0004 5009 070A 0B06 000E ; Square(LOCALCOLOUR | Texture_Metal_Black_0, 10,11,7,6, Normal(14))
0000 ; End
End of mesh - that's it
Extra data words: 0C84 3E80
you see a easy thing to port to pioneer, it's almost the same