1 /*
2      PLIB - A Suite of Portable Game Libraries
3      Copyright (C) 1998,2002  Steve Baker
4 
5      This library is free software; you can redistribute it and/or
6      modify it under the terms of the GNU Library General Public
7      License as published by the Free Software Foundation; either
8      version 2 of the License, or (at your option) any later version.
9 
10      This library is distributed in the hope that it will be useful,
11      but WITHOUT ANY WARRANTY; without even the implied warranty of
12      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13      Library General Public License for more details.
14 
15      You should have received a copy of the GNU Library General Public
16      License along with this library; if not, write to the Free Software
17      Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
18 
19      For further information visit http://plib.sourceforge.net
20 
21      $Id: ssgLoadMDL.h 1568 2002-09-02 06:05:49Z sjbaker $
22 */
23 
24 //===========================================================================
25 //
26 // File: fsPalettes.h
27 //
28 // Created: Fri Oct  1 15:34:29 1999
29 //
30 // Author: Thomas Engh Sevaldrud <tse@math.sintef.no>
31 //
32 // Revision: $Id: ssgLoadMDL.h 1568 2002-09-02 06:05:49Z sjbaker $
33 //
34 // Description:
35 //
36 //===========================================================================
37 // Copyright (c) 1999 Thomas E. Sevaldrud <tse@math.sintef.no>
38 //===========================================================================
39 
40 #ifndef _SSGLOADMDL_H
41 #define _SSGLOADMDL_H
42 
43 
44 
45 //===========================================================================
46 // Aircraft color palette. The aircraft in MSFS has
47 // a different palette than the default fs5.pal file.
48 // Entries with (?) means that I am not sure of the
49 // values. Entries with (L), means that the color is
50 // emissive (bright at night).
51 
52 struct acColor
53 {
54    unsigned char r, g, b, emissive;
55 };
56 
57 static const acColor fsAcPalette[53] = {
58     { 0,   0,   0   , 0 },		// Black
59     { 89,  89,  89  , 0 },		// Dark gray
60     { 169, 169, 169 , 0 },		// Gray
61     { 211, 211, 211 , 0 },		// Light gray
62     { 255, 255, 255 , 0 },		// White
63     { 255, 0,   0   , 0 },		// Red
64     { 0,   255, 0   , 0 },		// Green
65     { 0,   0,   255 , 0 },		// Blue
66     { 255, 165, 0   , 0 },              // Orange
67     { 255, 255, 0   , 0 },		// Yellow
68     { 165, 42,  42  , 0 },		// Brown
69     { 210, 180, 140 , 0 },		// Tan
70     { 255, 69,  0   , 0 },		// Rust (?)
71     { 107, 142, 35  , 0 },		// Olive (?)
72     { 0,   87,  112 , 0 },		// Water
73     { 255, 0,   0   , 1 },		// Red (L)
74     { 0,   255, 0   , 1 },		// Green (L)
75     { 0,   0,   255 , 1 },		// Blue (L)
76     { 57,  57,  112 , 1 },              // Aqua (L) (?)
77     { 255, 165, 0   , 1 },              // Orange (L)
78     { 255, 255, 0   , 1 },		// Yellow (L)
79     { 255, 255, 255 , 1 },		// White (L)
80     { 255, 255, 255 , 1 },		// White (L)
81     { 139, 0,   0   , 0 }, 		// Dark red
82     { 0,   100, 0   , 0 },		// Dark green
83     { 0,   0,   139 , 0 },		// Dark blue
84     { 205, 120, 0   , 0 },		// Dark orange
85     { 139, 100, 0   , 0 },		// Dark yellow (?)
86     { 82,  21,  21  , 0 },		// Dark brown (?)
87     { 105, 90,  70  , 0 },		// Dark tan
88     { 128, 35,  0   , 0 },              // Dark rust (?)
89     { 53,  71,  17  , 0 },		// Dark olive (?)
90     { 205, 0,   0   , 0 },		// Medium red
91     { 0,   179, 0   , 0 },		// Medium green
92     { 0,   0,   205 , 0 },		// Medium blue
93     { 255, 140, 0   , 0 },		// Medium orange (?)
94     { 205, 179, 0   , 0 },		// Medium yellow (?)
95     { 120, 32,  32  , 0 },		// Medium brown (?)
96     { 155, 135, 105 , 0 },		// Medium tan (?)
97     { 186, 52,  0   , 0 },		// Medium rust (?)
98     { 80,  106, 25  , 0 },		// Medium olive (?)
99     { 238, 173, 173 , 0 },		// Light red (?)
100     { 144, 238, 144 , 0 },		// Light green
101     { 173, 216, 230 , 0 },		// Light Blue
102     { 255, 162, 68  , 0 },		// Light Orange (?)
103     { 255, 255, 224 , 0 },		// Light Yellow
104     { 255, 130, 58  , 0 },		// Light Brown (?)
105     { 255, 220, 180 , 0 },		// Light Tan (?)
106     { 255, 137, 0   , 0 },		// Light rust (?)
107     { 157, 200, 54  , 0 },		// Light olive (?)
108     { 89,  89,  89  , 1 },		// Dark gray (?) (L)
109     { 169, 169, 169 , 1 },              // Gray (L)
110     { 211, 211, 211 , 1 }		// Light Gray (L)
111 };
112 
113 //===========================================================================
114 // Alternative palette for transparent colors (?)
115 // (same as in fs5.pal?)
116 
117 static const acColor fsAltPalette[113] = {
118     { 0, 0, 0},
119     { 8, 8, 8},
120     { 16, 16, 16},
121     { 24, 24, 24},
122     { 32, 32, 32},
123     { 40, 40, 40},
124     { 48, 48, 48},
125     { 56, 56, 56},
126     { 65, 65, 65},
127     { 73, 73, 73},
128     { 81, 81, 81},
129     { 89, 89, 89},
130     { 97, 97, 97},
131     { 105, 105, 105},
132     { 113, 113, 113},
133     { 121, 121, 121},
134     { 130, 130, 130},
135     { 138, 138, 138},
136     { 146, 146, 146},
137     { 154, 154, 154},
138     { 162, 162, 162},
139     { 170, 170, 170},
140     { 178, 178, 178},
141     { 186, 186, 186},
142     { 195, 195, 195},
143     { 203, 203, 203},
144     { 211, 211, 211},
145     { 219, 219, 219},
146     { 227, 227, 227},
147     { 235, 235, 235},
148     { 247, 247, 247},
149     { 255, 255, 255},
150     { 21, 5, 5},
151     { 42, 10, 10},
152     { 63, 15, 15},
153     { 84, 20, 20},
154     { 105, 25, 25},
155     { 126, 30, 30},
156     { 147, 35, 35},
157     { 168, 40, 40},
158     { 189, 45, 45},
159     { 210, 50, 50},
160     { 231, 55, 55},
161     { 252, 60, 60},
162     { 5, 21, 5},
163     { 10, 42, 10},
164     { 15, 63, 15},
165     { 20, 84, 20},
166     { 25, 105, 25},
167     { 30, 126, 30},
168     { 35, 147, 35},
169     { 40, 168, 40},
170     { 45, 189, 45},
171     { 50, 210, 50},
172     { 55, 231, 55},
173     { 60, 252, 60},
174     { 0, 7, 23},
175     { 0, 15, 40},
176     { 0, 23, 58},
177     { 0, 40, 84},
178     { 0, 64, 104},
179     { 0, 71, 122},
180     { 0, 87, 143},
181     { 0, 99, 156},
182     { 0, 112, 179},
183     { 0, 128, 199},
184     { 0, 143, 215},
185     { 0, 153, 230},
186     { 28, 14, 0},
187     { 56, 28, 0},
188     { 84, 42, 0},
189     { 112, 56, 0},
190     { 140, 70, 0},
191     { 168, 84, 0},
192     { 196, 98, 0},
193     { 224, 112, 0},
194     { 252, 126, 0},
195     { 28, 28, 0},
196     { 56, 56, 0},
197     { 84, 84, 0},
198     { 112, 112, 0},
199     { 140, 140, 0},
200     { 168, 168, 0},
201     { 196, 196, 0},
202     { 224, 224, 0},
203     { 252, 252, 0},
204     { 25, 21, 16},
205     { 50, 42, 32},
206     { 75, 63, 48},
207     { 100, 84, 64},
208     { 125, 105, 80},
209     { 150, 126, 96},
210     { 175, 147, 112},
211     { 200, 168, 128},
212     { 225, 189, 144},
213     { 28, 11, 7},
214     { 56, 22, 14},
215     { 84, 33, 21},
216     { 112, 44, 28},
217     { 140, 55, 35},
218     { 168, 66, 42},
219     { 196, 77, 49},
220     { 224, 88, 56},
221     { 252, 99, 63},
222     { 17, 22, 9},
223     { 34, 44, 18},
224     { 51, 66, 27},
225     { 68, 88, 36},
226     { 85, 110, 45},
227     { 102, 132, 54},
228     { 119, 154, 63},
229     { 136, 176, 72},
230     { 153, 198, 81}
231 };
232 
233 struct _ssgBGLOpCode {
234   unsigned short opcode;
235   const char     *name;
236   int            size;   /* size includes opcode (2 bytes)
237 			    -1 indicates that special treatment is needed
238 			    to find the size */
239 
240 };
241 
242 static const _ssgBGLOpCode opcodes[] = {
243   { 0x00, "BGL_EOF"                             , 2  },
244   { 0x01, "OBSOLETE 0x01"                       , 2  },
245   { 0x02, "BGL_NOOP"                            , 2  },
246   { 0x03, "BGL_CASE"                            , -1 },
247   { 0x04, "RESERVED 0x04"                       , 2  },
248   { 0x05, "BGL_SURFACE - Area"                  , 2  },
249   { 0x06, "BGL_SPNT"                            , 8  },
250   { 0x07, "BGL_CPNT"                            , 8  },
251   { 0x08, "BLG_CLOSURE"                         , 2  },
252   { 0x09, "OBSOLETE 0x09"                       , 2  },
253   { 0x0a, "OBSOLETE 0x0a"                       , 10 },
254   { 0x0b, "OBSOLETE 0x0b"                       , 10 },
255   { 0x0c, "OBSOLETE 0x0c"                       , 2  },
256   { 0x0d, "BGL_JUMP"                            , 4  },
257   { 0x0e, "BGL_DEFRES"                          , 8  },
258   { 0x0f, "BGL_STRRES"                          , 4  },
259   { 0x10, "BGL_CNTRES"                          , 4  },
260   { 0x11, "OBSOLETE 0x11"                       , 10 },
261   { 0x12, "OBSOLETE 0x12"                       , 4  },
262   { 0x13, "OBSOLETE 0x13"                       , 4  },
263   { 0x14, "BGL_SCOLOR"                          , 4  },
264   { 0x15, "BGL_ELEVATION_MAP"                   , -1 },
265   { 0x16, "RESERVED 0x16"                       , -1 },
266   { 0x17, "BGL_TEXTURE_ENABLE"                  , 4  },
267   { 0x18, "BGL_TEXTURE"                         , 24 },
268   { 0x19, "BGL_PALETTE"                         , 16 },
269   { 0x1a, "BGL_RESLIST"                         , -1 },
270   { 0x1b, "BGL_IFIN_BOX_RAW_PLANE"              , 22 },
271   { 0x1c, "BGL_IFIN2"                           , 16 },
272   { 0x1d, "BGL_FACE"                            , -1 },
273   { 0x1e, "BGL_HAZE"                            , 4  },
274   { 0x1f, "RESERVED 0x1f"                       , 4  },
275   { 0x20, "BGL_FACET_TMAP"                      , -1 },
276   { 0x21, "BGL_IFIN3"                           , 22 },
277   { 0x22, "BGL_RETURN - Return"                 , 2  },
278   { 0x23, "BGL_CALL"                            , 4  },
279   { 0x24, "BGL_IFIN1"                           , 10 },
280   { 0x25, "BGL_SEPARATION_PLANE"                , 14 },
281   { 0x26, "BGL_SETWRD"                          , 6  },
282   { 0x27, "OBSOLETE 0x27"                       , -1 },
283   { 0x28, "OBSOLETE 0x28"                       , 10 },
284   { 0x29, "BGL_GRESLIST"                        , -1 },
285   { 0x2a, "BGL_GFACET"                          , -1 },
286   { 0x2b, "BGL_ADDOBJ32"                        , 6  },
287   { 0x2c, "BGL_REJECT"                          , 12 },
288   { 0x2d, "BGL_SCOLOR24"                        , 6  },
289   { 0x2e, "BGL_LCOLOR24"                        , 6  },
290   { 0x2f, "BGL_SCALE"                           , 32 },
291   { 0x30, "OBSOLETE 0x30"                       , 4  },
292   { 0x31, "BGL_RESROW"                          , 18 },
293   { 0x32, "BGL_ADDOBJ - PerspectiveCall"        , 4  },
294   { 0x33, "BGL_INSTANCE - RotatedCall"          , 10 },
295   { 0x34, "BGL_SUPER_SCALE"                     , 10 },
296   { 0x35, "BGL_PNTROW"                          , 16 },
297   { 0x36, "OBSOLETE 0x36"                       , -1 },
298   { 0x37, "BGL_POINT"                           , 8  },
299   { 0x38, "BGL_CONCAVE"                         , 2  },
300   { 0x39, "BGL_IFMSK"                           , 8  },
301   { 0x3a, "BGL_VPOSITION"                       , 12 },
302   { 0x3b, "BGL_VINSTANCE"                       , 6  },
303   { 0x3c, "BGL_POSITION"                        , 28 },
304   { 0x3d, "BGL_SEED"                            , 24 },
305   { 0x3e, "BGL_FACET"                           , -1 },
306   { 0x3f, "BGL_SHADOW_CALL"                     , 4  },
307   { 0x40, "BGL_SHADOW_VPOSITION"                , 12 },
308   { 0x41, "BGL_SHADOW_VICALL"                   , 6  },
309   { 0x42, "BGL_POLYGON_RUNWAY"                  , 40 },
310   { 0x43, "BGL_TEXTURE2"                        , -1 },
311   { 0x44, "BGL_TEXTURE_RUNWAY"                  , 64 }, // 40
312   { 0x45, "OBSOLETE 0x45"                       , 16 },
313   { 0x46, "BGL_POINT_VICALL"                    , 22 },
314   { 0x47, "RESERVED"                            , 4  },
315   { 0x48, "BGL_VAR_SEG"                         , 4  },
316   { 0x49, "BGL_BUILDING"                        , 18 },
317   { 0x4a, "OBSOLETE 0x4A"                       , 22 },
318   { 0x4b, "OBSOLETE 0x4B"                       , -1 },
319   { 0x4c, "BGL_VSCALE"                          , 16 },
320   { 0x4d, "BGL_MOVEL2G"                         , 6  },
321   { 0x4e, "BGL_MOVEG2L"                         , 6  },
322   { 0x4f, "BGL_MOVEWORD"                        , 6  },
323   { 0x50, "BGL_GCOLOR"                          , 4  },
324   { 0x51, "BGL_NEW_LCOLOR"                      , 4  },
325   { 0x52, "BGL_NEW_SCOLOR"                      , 4  },
326   { 0x53, "OBSOLETE 0x53"                       , 4  },
327   { 0x54, "OBSOLETE 0x54"                       , 6  },
328   { 0x55, "BGL_SURFACE_TYPE"                    , 10 },
329   { 0x56, "BGL_SET_WEATHER"                     , 4  },
330   { 0x57, "BGL_SET_WEATHER"                     , 10 },
331   { 0x58, "BLG_TEXTURE_BOUNDS"                  , 10 },
332   { 0x59, "OBSOLETE 0x59"                       , 4  },
333   { 0x5a, "OBSOLETE 0x5a"                       , 4  },
334   { 0x5b, "OBSOLETE 0x5b"                       , 4  },
335   { 0x5c, "OBSOLETE 0x5c"                       , 6  },
336   { 0x5d, "BGL_TEXTURE_REPEAT"                  , 8  },
337   { 0x5e, "OBSOLETE 0x5e"                       , 4  },
338   { 0x5f, "BGL_IFSIZEV"                         , 8  },
339   { 0x60, "BGL_FACE_TMAP"                       , -1 },
340   { 0x61, "RESERVED 0x53"                       , 6  },
341   { 0x62, "BGL_IFVIS"                           , -1 },
342   { 0x63, "BGL_LIBRARY_CALL"                    , 20 },
343   { 0x64, "BGL_LIST"                            , -1 },
344   { 0x65, "BGL_VSCOLOR"                         , 4  },
345   { 0x66, "BGL_VGCOLOR"                         , 4  },
346   { 0x67, "BGL_VLCOLOR"                         , 4  },
347   { 0x68, "OBSOLETE"                            , 8  },
348   { 0x69, "BGL_ROAD_START"                      , 10 },
349   { 0x6a, "BGL_ROAD_CONT"                       , 8  },
350   { 0x6b, "BGL_RIVER_START"                     , 10 },
351   { 0x6c, "BGL_RIVER_CONT"                      , 8  },
352   { 0x6d, "BGL_IFSIZEH"                         , 8  },
353   { 0x6e, "BGL_TAXIWAY_START"                   , 10 },
354   { 0x6f, "BGL_TAXIWAY_CONT"                    , 8  },
355   { 0x70, "BGL_AREA_SENSE"                      , -1 },
356   { 0x71, "BGL_ALTITUDE_SET"                    , 4  },
357   { 0x72, "OBSOLETE 0x72"                       , 20 },
358   { 0x73, "BGL_IFINBOXP"                        , 16 },
359   { 0x74, "BGL_ADDCAT"                          , 6  },
360   { 0x75, "BGL_ADDMNT"                          , 4  },
361   { 0x76, "BGL_BGL - Perspective"               , 2  },
362   { 0x77, "BGL_SCALE_AGL - RefPoint"            , 32 },
363   { 0x78, "BGL_ROAD_CONTW"                      , 10 },
364   { 0x79, "BGL_RIVER_CONTW"                     , 10 },
365   { 0x7a, "BGL_GFACET_TMAP"                     , -1 },
366   { 0x7b, "OBSOLETE 0x7b"                       , -1 },
367   { 0x7c, "BGL_SELECT"                          , 10 },
368   { 0x7d, "BGL_PERSPECTIVE"                     , 2  },
369   { 0x7e, "BGL_SETWRD_GLOBAL"                   , 6  },
370   { 0x7f, "OBSOLETE 0x7f"                       , 2  },
371   { 0x80, "BGL_RESPNT"                          , 4  },
372   { 0x81, "OBSOLETE 0x81"                       , 4  },
373   { 0x82, "OBSOLETE 0x82"                       , 28 },
374   { 0x83, "BGL_RESCALE"                         , 32 },
375   { 0x84, "OBSOLETE 0x84"                       , 8  },
376   { 0x85, "OBSOLETE 0x85"                       , 2  },
377   { 0x86, "OBSOLETE 0x86"                       , 3  },
378   { 0x87, "BGL_FIXED_COLORS"                    , 4  },
379   { 0x88, "BGL_JUMP32"                          , 6  },
380   { 0x89, "BGL_VAR_BASE32"                      , 6  },
381   { 0x8a, "BGL_CALL32"                          , 6  },
382   { 0x8b, "BGL_ADDCAT32"                        , 8  },
383   { 0x8c, "RESERVED 0x8c"                       , 6  },
384   { 0x8d, "RESERVED 0x8d"                       , 6  },
385   { 0x8e, "BGL_VFILE_MARKER"                    , 4  },
386   { 0x8f, "BGL_ALPHA"                           , 6  },
387   { 0x90, "RESERVED 0x90"                       , -1 },
388   { 0x91, "BGL_TEXT"                            , 12 },
389   { 0x92, "OBSOLETE 0x92"                       , 4  },
390   { 0x93, "RESERVED 0x93"                       , 4  },
391   { 0x94, "BGL_CRASH"                           , 12 },
392   { 0x95, "BGL_CRASH_INDIRECT"                  , 10 },
393   { 0x96, "BGL_CRASH_START"                     , 6  },
394   { 0x97, "BGL_CRASH_SPHERE"                    , 6  },
395   { 0x98, "BGL_CRASH_BOX"                       , 22 },
396   { 0x99, "BGL_SET_CRASH"                       , 4  },
397   { 0x9a, "OBSOLETE 0x9a"                       , -1 },
398   { 0x9b, "RESERVED 0x9b"                       , 8  },
399   { 0x9c, "RESERVED 0x9c"                       , 6  },
400   { 0x9d, "RESERVED 0x9d"                       , 14 },
401   { 0x9e, "BGL_INTERPOLATE"                     , 20 },
402   { 0x9f, "BGL_OVERRIDE"                        , 6  },
403   { 0xa0, "BGL_OBJECT"                          , -1 },
404   { 0xa1, "OBSOLETE 0xA1"                       , 10 },
405   { 0xa2, "OBSOLETE 0xA2"                       , 8  },
406   { 0xa3, "OBSOLETE 0xA3"                       , -1 },
407   { 0xa4, "BGL_VALPHA"                          , 4  },
408   { 0xa5, "OBSOLETE 0xA5"                       , 4  },
409   { 0xa6, "OBSOLETE 0xA6"                       , 8  },
410   { 0xa7, "BGL_SPRITE_VCALL"                    , 22 },
411   { 0xa8, "BGL_TEXTURE_ROAD_START"              , 12},
412   { 0xa9, "BGL_IFIN_INSTANCE_BOX_PLANE"         , 22},
413   { 0xaa, "BGL_NEW_RUNWAY"                      , -1 },
414   { 0xab, "RESERVED 0xAB"                       , 38 },
415   { 0xac, "BGL_ZBIAS"                           , 4  },
416   { 0xad, "BGL_ANIMATE"                         , 30 },
417   { 0xae, "BGL_TRANSFORM_END"                   , 2  },
418   { 0xaf, "BGL_TRANSFORM_MATRIX"                , 50 },
419   { 0xb0, "UNKNOWN 0xB0"                        , -1 },
420   { 0xb1, "UNKNOWN 0xB1"                        , -1 },
421   { 0xb2, "BGL_LIGHT"                           , 44 },
422   { 0xb3, "BGL_IFINF1"                          , 14 },
423   { 0xb4, "UNKNOWN 0xB4"                        , -1 },
424   { 0xb5, "UNKNOWN 0xB5"                        , -1 },
425   { 0xb6, "UNKNOWN 0xB6"                        , -1 },
426   { 0xb7, "UNKNOWN 0xB7"                        , -1 },
427   { 0xb8, "UNKNOWN 0xB8"                        , -1 },
428   { 0xb9, "UNKNOWN 0xB9"                        , -1 },
429   { 0xba, "UNKNOWN 0xBA"                        , -1 },
430   { 0xbb, "UNKNOWN 0xBB"                        , -1 },
431   { 0xbc, "UNKNOWN 0xBC"                        , -1 },
432   { 0xbd, "UNKNOWN 0xBD"                        , -1 },
433   { 0xbe, "UNKNOWN 0xBE"                        , -1 },
434   { 0xbf, "UNKNOWN 0xBF"                        , -1 },
435   { 0xc0, "UNKNOWN 0xC0"                        , -1 },
436   { 0xc1, "UNKNOWN 0xC1"                        , -1 },
437   { 0xc2, "UNKNOWN 0xC2"                        , -1 },
438   { 0xc3, "UNKNOWN 0xC3"                        , -1 },
439   { 0xc4, "UNKNOWN 0xC4"                        , -1 },
440   { 0xc5, "UNKNOWN 0xC5"                        , -1 },
441   { 0xc6, "UNKNOWN 0xC6"                        , -1 },
442   { 0xc7, "UNKNOWN 0xC7"                        , -1 },
443   { 0xc8, "UNKNOWN 0xC8"                        , -1 },
444   { 0xc9, "UNKNOWN 0xC9"                        , -1 },
445   { 0xca, "UNKNOWN 0xCA"                        , -1 },
446   { 0xcb, "UNKNOWN 0xCB"                        , -1 },
447   { 0xcc, "UNKNOWN 0xCC"                        , -1 },
448   { 0xcd, "UNKNOWN 0xCD"                        , -1 },
449   { 0xce, "UNKNOWN 0xCE"                        , -1 },
450   { 0xcf, "UNKNOWN 0xCF"                        , -1 },
451   { 0xd0, "UNKNOWN 0xD0"                        , -1 },
452   { 0xd1, "UNKNOWN 0xD1"                        , -1 },
453   { 0xd2, "UNKNOWN 0xD2"                        , -1 },
454   { 0xd3, "UNKNOWN 0xD3"                        , -1 },
455   { 0xd4, "UNKNOWN 0xD4"                        , -1 },
456   { 0xd5, "UNKNOWN 0xD5"                        , -1 },
457   { 0xd6, "UNKNOWN 0xD6"                        , -1 },
458   { 0xd7, "UNKNOWN 0xD7"                        , -1 },
459   { 0xd8, "UNKNOWN 0xD8"                        , -1 },
460   { 0xd9, "UNKNOWN 0xD9"                        , -1 },
461   { 0xda, "UNKNOWN 0xDA"                        , -1 },
462   { 0xdb, "UNKNOWN 0xDB"                        , -1 },
463   { 0xdc, "UNKNOWN 0xDC"                        , -1 },
464   { 0xdd, "UNKNOWN 0xDD"                        , -1 },
465   { 0xde, "UNKNOWN 0xDE"                        , -1 },
466   { 0xdf, "UNKNOWN 0xDF"                        , -1 },
467   { 0xe0, "UNKNOWN 0xE0"                        , -1 },
468   { 0xe1, "UNKNOWN 0xE1"                        , -1 },
469   { 0xe2, "UNKNOWN 0xE2"                        , -1 },
470   { 0xe3, "UNKNOWN 0xE3"                        , -1 },
471   { 0xe4, "UNKNOWN 0xE4"                        , -1 },
472   { 0xe5, "UNKNOWN 0xE5"                        , -1 },
473   { 0xe6, "UNKNOWN 0xE6"                        , -1 },
474   { 0xe7, "UNKNOWN 0xE7"                        , -1 },
475   { 0xe8, "UNKNOWN 0xE8"                        , -1 },
476   { 0xe9, "UNKNOWN 0xE9"                        , -1 },
477   { 0xea, "UNKNOWN 0xEA"                        , -1 },
478   { 0xeb, "UNKNOWN 0xEB"                        , -1 },
479   { 0xec, "UNKNOWN 0xEC"                        , -1 },
480   { 0xed, "UNKNOWN 0xED"                        , -1 },
481   { 0xee, "UNKNOWN 0xEE"                        , -1 },
482   { 0xef, "UNKNOWN 0xEF"                        , -1 },
483   { 0xf0, "UNKNOWN 0xF0"                        , -1 },
484   { 0xf1, "UNKNOWN 0xF1"                        , -1 },
485   { 0xf2, "UNKNOWN 0xF2"                        , -1 },
486   { 0xf3, "UNKNOWN 0xF3"                        , -1 },
487   { 0xf4, "UNKNOWN 0xF4"                        , -1 },
488   { 0xf5, "UNKNOWN 0xF5"                        , -1 },
489   { 0xf6, "UNKNOWN 0xF6"                        , -1 },
490   { 0xf7, "UNKNOWN 0xF7"                        , -1 },
491   { 0xf8, "UNKNOWN 0xF8"                        , -1 },
492   { 0xf9, "UNKNOWN 0xF9"                        , -1 },
493   { 0xfa, "UNKNOWN 0xFA"                        , -1 },
494   { 0xfb, "UNKNOWN 0xFB"                        , -1 },
495   { 0xfc, "UNKNOWN 0xFC"                        , -1 },
496   { 0xfd, "UNKNOWN 0xFD"                        , -1 },
497   { 0xfe, "UNKNOWN 0xFE"                        , -1 },
498   { 0xff, "UNKNOWN 0xFF"                        , -1 }
499 };
500 
501 //===========================================================================
502 
503 #endif // _SSGLOADMDL_H
504 
505