00001
00002
00003
00004
00005
00006
00007
00008
00009
00013 #ifndef ELRAIL_DATA_H
00014 #define ELRAIL_DATA_H
00015
00018 enum TLG {
00019 XEVEN_YEVEN = 0,
00020 XEVEN_YODD = 1,
00021 XODD_YEVEN = 2,
00022 XODD_YODD = 3,
00023 TLG_END
00024 };
00025
00029 enum TileSource {
00030 TS_HOME = 0,
00031 TS_NEIGHBOUR = 1,
00032
00033 TS_END
00034 };
00035
00036 enum {
00037 NUM_TRACKS_AT_PCP = 6
00038 };
00039
00041 static const byte AllowedPPPonPCP[DIAGDIR_END] = {
00042 1 << DIR_N | 1 << DIR_E | 1 << DIR_SE | 1 << DIR_S | 1 << DIR_W | 1 << DIR_NW,
00043 1 << DIR_N | 1 << DIR_NE | 1 << DIR_E | 1 << DIR_S | 1 << DIR_SW | 1 << DIR_W,
00044 1 << DIR_N | 1 << DIR_E | 1 << DIR_SE | 1 << DIR_S | 1 << DIR_W | 1 << DIR_NW,
00045 1 << DIR_N | 1 << DIR_NE | 1 << DIR_E | 1 << DIR_S | 1 << DIR_SW | 1 << DIR_W,
00046 };
00047
00051 static const byte OwnedPPPonPCP[DIAGDIR_END] = {
00052 1 << DIR_SE | 1 << DIR_S | 1 << DIR_SW | 1 << DIR_W,
00053 1 << DIR_N | 1 << DIR_SW | 1 << DIR_W | 1 << DIR_NW,
00054 1 << DIR_N | 1 << DIR_NE | 1 << DIR_E | 1 << DIR_NW,
00055 1 << DIR_NE | 1 << DIR_E | 1 << DIR_SE | 1 << DIR_S
00056 };
00057
00059 static const DiagDirection PCPpositions[TRACK_END][2] = {
00060 {DIAGDIR_NE, DIAGDIR_SW},
00061 {DIAGDIR_SE, DIAGDIR_NW},
00062 {DIAGDIR_NW, DIAGDIR_NE},
00063 {DIAGDIR_SE, DIAGDIR_SW},
00064 {DIAGDIR_SW, DIAGDIR_NW},
00065 {DIAGDIR_NE, DIAGDIR_SE},
00066 };
00067
00068 #define PCP_NOT_ON_TRACK 0xFF
00069
00073 static const byte PreferredPPPofTrackAtPCP[TRACK_END][DIAGDIR_END] = {
00074 {
00075 1 << DIR_NE | 1 << DIR_SE | 1 << DIR_NW,
00076 PCP_NOT_ON_TRACK,
00077 1 << DIR_SE | 1 << DIR_SW | 1 << DIR_NW,
00078 PCP_NOT_ON_TRACK
00079 }, {
00080 PCP_NOT_ON_TRACK,
00081 1 << DIR_NE | 1 << DIR_SE | 1 << DIR_SW,
00082 PCP_NOT_ON_TRACK,
00083 1 << DIR_SW | 1 << DIR_NW | 1 << DIR_NE
00084 }, {
00085 1 << DIR_E | 1 << DIR_N | 1 << DIR_S,
00086 PCP_NOT_ON_TRACK,
00087 PCP_NOT_ON_TRACK,
00088 1 << DIR_W | 1 << DIR_N | 1 << DIR_S
00089 }, {
00090 PCP_NOT_ON_TRACK,
00091 1 << DIR_E | 1 << DIR_N | 1 << DIR_S,
00092 1 << DIR_W | 1 << DIR_N | 1 << DIR_S,
00093 PCP_NOT_ON_TRACK
00094 }, {
00095 PCP_NOT_ON_TRACK,
00096 PCP_NOT_ON_TRACK,
00097 1 << DIR_S | 1 << DIR_E | 1 << DIR_W,
00098 1 << DIR_N | 1 << DIR_E | 1 << DIR_W
00099 }, {
00100 1 << DIR_N | 1 << DIR_E | 1 << DIR_W,
00101 1 << DIR_S | 1 << DIR_E | 1 << DIR_W,
00102 PCP_NOT_ON_TRACK,
00103 PCP_NOT_ON_TRACK
00104 }
00105 };
00106 #undef PCP_NOT_ON_TRACK
00107
00108
00109 #define NUM_IGNORE_GROUPS 3
00110 #define IGNORE_NONE 0xFF
00111
00114 static const byte IgnoredPCP[NUM_IGNORE_GROUPS][TLG_END][DIAGDIR_END] = {
00115 {
00116 {
00117 IGNORE_NONE,
00118 1 << DIR_NE | 1 << DIR_SW,
00119 1 << DIR_NW | 1 << DIR_SE,
00120 IGNORE_NONE
00121 }, {
00122 IGNORE_NONE,
00123 IGNORE_NONE,
00124 1 << DIR_NW | 1 << DIR_SE,
00125 1 << DIR_NE | 1 << DIR_SW
00126 }, {
00127 1 << DIR_NW | 1 << DIR_SE,
00128 1 << DIR_NE | 1 << DIR_SW,
00129 IGNORE_NONE,
00130 IGNORE_NONE
00131 }, {
00132 1 << DIR_NW | 1 << DIR_SE,
00133 IGNORE_NONE,
00134 IGNORE_NONE,
00135 1 << DIR_NE | 1 << DIR_SW
00136 }
00137 },
00138 {
00139 {
00140 1 << DIR_E | 1 << DIR_W,
00141 IGNORE_NONE,
00142 IGNORE_NONE,
00143 1 << DIR_E | 1 << DIR_W
00144 }, {
00145 IGNORE_NONE,
00146 1 << DIR_E | 1 << DIR_W,
00147 1 << DIR_E | 1 << DIR_W,
00148 IGNORE_NONE
00149 }, {
00150 IGNORE_NONE,
00151 1 << DIR_E | 1 << DIR_W,
00152 1 << DIR_E | 1 << DIR_W,
00153 IGNORE_NONE
00154 }, {
00155 1 << DIR_E | 1 << DIR_W,
00156 IGNORE_NONE,
00157 IGNORE_NONE,
00158 1 << DIR_E | 1 << DIR_W
00159 }
00160 },
00161 {
00162 {
00163 1 << DIR_N | 1 << DIR_S,
00164 1 << DIR_N | 1 << DIR_S,
00165 IGNORE_NONE,
00166 IGNORE_NONE
00167 }, {
00168 IGNORE_NONE,
00169 IGNORE_NONE,
00170 1 << DIR_N | 1 << DIR_S,
00171 1 << DIR_N | 1 << DIR_S
00172 }, {
00173 IGNORE_NONE,
00174 IGNORE_NONE,
00175 1 << DIR_N | 1 << DIR_S ,
00176 1 << DIR_N | 1 << DIR_S
00177 }, {
00178 1 << DIR_N | 1 << DIR_S,
00179 1 << DIR_N | 1 << DIR_S,
00180 IGNORE_NONE,
00181 IGNORE_NONE
00182 }
00183 }
00184 };
00185
00186 #undef NO_IGNORE
00187
00189 static const byte DisallowedPPPofTrackAtPCP[TRACK_END][DIAGDIR_END] = {
00190 {1 << DIR_SW | 1 << DIR_NE, 0, 1 << DIR_SW | 1 << DIR_NE, 0 },
00191 {0, 1 << DIR_NW | 1 << DIR_SE, 0, 1 << DIR_NW | 1 << DIR_SE},
00192 {1 << DIR_W | 1 << DIR_E, 0, 0, 1 << DIR_W | 1 << DIR_E },
00193 {0, 1 << DIR_W | 1 << DIR_E, 1 << DIR_W | 1 << DIR_E, 0 },
00194 {0, 0, 1 << DIR_S | 1 << DIR_N, 1 << DIR_N | 1 << DIR_S },
00195 {1 << DIR_S | 1 << DIR_N, 1 << DIR_S | 1 << DIR_N, 0, 0, },
00196 };
00197
00198
00199 static const Track TracksAtPCP[DIAGDIR_END][NUM_TRACKS_AT_PCP] = {
00200 {TRACK_X, TRACK_X, TRACK_UPPER, TRACK_LOWER, TRACK_LEFT, TRACK_RIGHT},
00201 {TRACK_Y, TRACK_Y, TRACK_UPPER, TRACK_LOWER, TRACK_LEFT, TRACK_RIGHT},
00202 {TRACK_X, TRACK_X, TRACK_UPPER, TRACK_LOWER, TRACK_LEFT, TRACK_RIGHT},
00203 {TRACK_Y, TRACK_Y, TRACK_UPPER, TRACK_LOWER, TRACK_LEFT, TRACK_RIGHT},
00204 };
00205
00206
00207
00208 static const TileSource TrackSourceTile[DIAGDIR_END][NUM_TRACKS_AT_PCP] = {
00209 {TS_HOME, TS_NEIGHBOUR, TS_HOME , TS_NEIGHBOUR, TS_NEIGHBOUR, TS_HOME },
00210 {TS_HOME, TS_NEIGHBOUR, TS_NEIGHBOUR, TS_HOME , TS_NEIGHBOUR, TS_HOME },
00211 {TS_HOME, TS_NEIGHBOUR, TS_NEIGHBOUR, TS_HOME , TS_HOME , TS_NEIGHBOUR},
00212 {TS_HOME, TS_NEIGHBOUR, TS_HOME , TS_NEIGHBOUR, TS_HOME , TS_NEIGHBOUR},
00213 };
00214
00215
00216 static const Direction PPPorder[DIAGDIR_END][TLG_END][DIR_END] = {
00217 {
00218 {DIR_NE, DIR_NW, DIR_SE, DIR_SW, DIR_N, DIR_E, DIR_S, DIR_W},
00219 {DIR_NE, DIR_SE, DIR_SW, DIR_NW, DIR_S, DIR_W, DIR_N, DIR_E},
00220 {DIR_SW, DIR_NW, DIR_NE, DIR_SE, DIR_S, DIR_W, DIR_N, DIR_E},
00221 {DIR_SW, DIR_SE, DIR_NE, DIR_NW, DIR_N, DIR_E, DIR_S, DIR_W},
00222 }, {
00223 {DIR_NE, DIR_NW, DIR_SE, DIR_SW, DIR_S, DIR_E, DIR_N, DIR_W},
00224 {DIR_NE, DIR_SE, DIR_SW, DIR_NW, DIR_N, DIR_W, DIR_S, DIR_E},
00225 {DIR_SW, DIR_NW, DIR_NE, DIR_SE, DIR_N, DIR_W, DIR_S, DIR_E},
00226 {DIR_SW, DIR_SE, DIR_NE, DIR_NW, DIR_S, DIR_E, DIR_N, DIR_W},
00227 }, {
00228 {DIR_NE, DIR_NW, DIR_SE, DIR_SW, DIR_S, DIR_W, DIR_N, DIR_E},
00229 {DIR_NE, DIR_SE, DIR_SW, DIR_NW, DIR_N, DIR_E, DIR_S, DIR_W},
00230 {DIR_SW, DIR_NW, DIR_NE, DIR_SE, DIR_N, DIR_E, DIR_S, DIR_W},
00231 {DIR_SW, DIR_SE, DIR_NE, DIR_NW, DIR_S, DIR_W, DIR_N, DIR_E},
00232 }, {
00233 {DIR_NE, DIR_NW, DIR_SE, DIR_SW, DIR_N, DIR_W, DIR_S, DIR_E},
00234 {DIR_NE, DIR_SE, DIR_SW, DIR_NW, DIR_S, DIR_E, DIR_N, DIR_W},
00235 {DIR_SW, DIR_NW, DIR_NE, DIR_SE, DIR_S, DIR_E, DIR_N, DIR_W},
00236 {DIR_SW, DIR_SE, DIR_NE, DIR_NW, DIR_N, DIR_W, DIR_S, DIR_E},
00237 }
00238 };
00239
00240 static const int8 x_pcp_offsets[DIAGDIR_END] = {0, 8, 16, 8};
00241 static const int8 y_pcp_offsets[DIAGDIR_END] = {8, 16, 8, 0};
00242
00243 static const int8 x_ppp_offsets[DIR_END] = {-2, -4, -2, 0, 2, 4, 2, 0};
00244 static const int8 y_ppp_offsets[DIR_END] = {-2, 0, 2, 4, 2, 0, -2, -4};
00245
00249 enum PylonSpriteOffset {
00250 PSO_Y_NE,
00251 PSO_Y_SW,
00252 PSO_X_NW,
00253 PSO_X_SE,
00254 PSO_EW_N,
00255 PSO_EW_S,
00256 PSO_NS_W,
00257 PSO_NS_E,
00258 };
00259
00260
00261 static const uint8 pylon_sprites[] = {
00262 PSO_EW_N,
00263 PSO_Y_NE,
00264 PSO_NS_E,
00265 PSO_X_SE,
00266 PSO_EW_S,
00267 PSO_Y_SW,
00268 PSO_NS_W,
00269 PSO_X_NW,
00270 };
00271
00275 enum WireSpriteOffset {
00276 WSO_X_SHORT,
00277 WSO_Y_SHORT,
00278 WSO_EW_SHORT,
00279 WSO_NS_SHORT,
00280 WSO_X_SHORT_DOWN,
00281 WSO_Y_SHORT_UP,
00282 WSO_X_SHORT_UP,
00283 WSO_Y_SHORT_DOWN,
00284
00285 WSO_X_SW,
00286 WSO_Y_SE,
00287 WSO_EW_E,
00288 WSO_NS_S,
00289 WSO_X_SW_DOWN,
00290 WSO_Y_SE_UP,
00291 WSO_X_SW_UP,
00292 WSO_Y_SE_DOWN,
00293
00294 WSO_X_NE,
00295 WSO_Y_NW,
00296 WSO_EW_W,
00297 WSO_NS_N,
00298 WSO_X_NE_DOWN,
00299 WSO_Y_NW_UP,
00300 WSO_X_NE_UP,
00301 WSO_Y_NW_DOWN,
00302
00303 WSO_ENTRANCE_NE,
00304 WSO_ENTRANCE_SE,
00305 WSO_ENTRANCE_SW,
00306 WSO_ENTRANCE_NW,
00307 };
00308
00309 struct SortableSpriteStruct {
00310 uint8 image_offset;
00311 int8 x_offset;
00312 int8 y_offset;
00313 int8 x_size;
00314 int8 y_size;
00315 int8 z_size;
00316 int8 z_offset;
00317 };
00318
00319 enum {
00321 ELRAIL_ELEVATION = 10,
00323 ELRAIL_ELEVRAISE = ELRAIL_ELEVATION + TILE_HEIGHT
00324 };
00325
00326 static const SortableSpriteStruct CatenarySpriteData[] = {
00327
00328
00329
00330 { WSO_X_SW, 0, 7, 15, 1, 1, ELRAIL_ELEVATION },
00331 { WSO_X_NE, 0, 7, 15, 1, 1, ELRAIL_ELEVATION },
00332 { WSO_X_SHORT, 0, 7, 15, 1, 1, ELRAIL_ELEVATION },
00333
00334
00335
00336 { WSO_X_SW_UP, 0, 7, 15, 8, 1, ELRAIL_ELEVRAISE },
00337 { WSO_X_NE_UP, 0, 7, 15, 8, 1, ELRAIL_ELEVRAISE },
00338 { WSO_X_SHORT_UP, 0, 7, 15, 8, 1, ELRAIL_ELEVRAISE },
00339
00340
00341
00342 { WSO_X_SW_DOWN, 0, 7, 15, 8, 1, ELRAIL_ELEVATION },
00343 { WSO_X_NE_DOWN, 0, 7, 15, 8, 1, ELRAIL_ELEVATION },
00344 { WSO_X_SHORT_DOWN, 0, 7, 15, 8, 1, ELRAIL_ELEVATION },
00345
00346
00347
00348
00349
00350 { WSO_Y_SE, 7, 0, 1, 15, 1, ELRAIL_ELEVATION },
00351 { WSO_Y_NW, 7, 0, 1, 15, 1, ELRAIL_ELEVATION },
00352 { WSO_Y_SHORT, 7, 0, 1, 15, 1, ELRAIL_ELEVATION },
00353
00354
00355
00356 { WSO_Y_SE_UP, 7, 0, 8, 15, 1, ELRAIL_ELEVRAISE },
00357 { WSO_Y_NW_UP, 7, 0, 8, 15, 1, ELRAIL_ELEVRAISE },
00358 { WSO_Y_SHORT_UP, 7, 0, 8, 15, 1, ELRAIL_ELEVRAISE },
00359
00360
00361
00362 { WSO_Y_SE_DOWN, 7, 0, 8, 15, 1, ELRAIL_ELEVATION },
00363 { WSO_Y_NW_DOWN, 7, 0, 8, 15, 1, ELRAIL_ELEVATION },
00364 { WSO_Y_SHORT_DOWN, 7, 0, 8, 15, 1, ELRAIL_ELEVATION },
00365
00366
00367 { WSO_NS_SHORT, 8, 0, 8, 8, 1, ELRAIL_ELEVATION },
00368 { WSO_NS_SHORT, 0, 8, 8, 8, 1, ELRAIL_ELEVATION },
00369
00370 { WSO_NS_N, 8, 0, 8, 8, 1, ELRAIL_ELEVATION },
00371 { WSO_NS_N, 0, 8, 8, 8, 1, ELRAIL_ELEVATION },
00372
00373 { WSO_NS_S, 8, 0, 8, 8, 1, ELRAIL_ELEVATION },
00374 { WSO_NS_S, 0, 8, 8, 8, 1, ELRAIL_ELEVATION },
00375
00376
00377 { WSO_EW_SHORT, 7, 0, 1, 1, 1, ELRAIL_ELEVATION },
00378 { WSO_EW_SHORT, 15, 8, 3, 3, 1, ELRAIL_ELEVATION },
00379
00380 { WSO_EW_W, 7, 0, 1, 1, 1, ELRAIL_ELEVATION },
00381 { WSO_EW_W, 15, 8, 3, 3, 1, ELRAIL_ELEVATION },
00382
00383 { WSO_EW_E, 7, 0, 1, 1, 1, ELRAIL_ELEVATION },
00384 { WSO_EW_E, 15, 8, 3, 3, 1, ELRAIL_ELEVATION }
00385 };
00386
00387 static const SortableSpriteStruct CatenarySpriteData_Depot[] = {
00388 { WSO_ENTRANCE_NE, 0, 7, 15, 1, 1, ELRAIL_ELEVATION },
00389 { WSO_ENTRANCE_SE, 7, 0, 1, 15, 1, ELRAIL_ELEVATION },
00390 { WSO_ENTRANCE_SW, 0, 7, 15, 1, 1, ELRAIL_ELEVATION },
00391 { WSO_ENTRANCE_NW, 7, 0, 1, 15, 1, ELRAIL_ELEVATION }
00392 };
00393
00394 static const SortableSpriteStruct CatenarySpriteData_Tunnel[] = {
00395 { WSO_ENTRANCE_NE, 0, 7, 15, 1, 1, ELRAIL_ELEVATION },
00396 { WSO_ENTRANCE_SE, 7, 0, 1, 15, 1, ELRAIL_ELEVATION },
00397 { WSO_ENTRANCE_SW, 0, 7, 15, 1, 1, ELRAIL_ELEVATION },
00398 { WSO_ENTRANCE_NW, 7, 0, 1, 15, 1, ELRAIL_ELEVATION }
00399 };
00400
00401
00413 enum CatenarySprite {
00414 WIRE_X_FLAT_SW,
00415 WIRE_X_FLAT_NE,
00416 WIRE_X_FLAT_BOTH,
00417
00418 WIRE_X_UP_SW,
00419 WIRE_X_UP_NE,
00420 WIRE_X_UP_BOTH,
00421
00422 WIRE_X_DOWN_SW,
00423 WIRE_X_DOWN_NE,
00424 WIRE_X_DOWN_BOTH,
00425
00426 WIRE_Y_FLAT_SE,
00427 WIRE_Y_FLAT_NW,
00428 WIRE_Y_FLAT_BOTH,
00429
00430 WIRE_Y_UP_SE,
00431 WIRE_Y_UP_NW,
00432 WIRE_Y_UP_BOTH,
00433
00434 WIRE_Y_DOWN_SE,
00435 WIRE_Y_DOWN_NW,
00436 WIRE_Y_DOWN_BOTH,
00437
00438 WIRE_NS_W_BOTH,
00439 WIRE_NS_E_BOTH,
00440
00441 WIRE_NS_W_N,
00442 WIRE_NS_E_N,
00443
00444 WIRE_NS_W_S,
00445 WIRE_NS_E_S,
00446
00447 WIRE_EW_N_BOTH,
00448 WIRE_EW_S_BOTH,
00449
00450 WIRE_EW_N_W,
00451 WIRE_EW_S_W,
00452
00453 WIRE_EW_N_E,
00454 WIRE_EW_S_E,
00455
00456 INVALID_CATENARY = 0xFF
00457 };
00458
00459
00460
00461
00462
00463
00464
00465 static const CatenarySprite Wires[5][TRACK_END][4] = {
00466 {
00467 {INVALID_CATENARY, WIRE_X_FLAT_NE, WIRE_X_FLAT_SW, WIRE_X_FLAT_BOTH},
00468 {INVALID_CATENARY, WIRE_Y_FLAT_SE, WIRE_Y_FLAT_NW, WIRE_Y_FLAT_BOTH},
00469 {INVALID_CATENARY, WIRE_EW_N_W, WIRE_EW_N_E, WIRE_EW_N_BOTH},
00470 {INVALID_CATENARY, WIRE_EW_S_E, WIRE_EW_S_W, WIRE_EW_S_BOTH},
00471 {INVALID_CATENARY, WIRE_NS_W_S, WIRE_NS_W_N, WIRE_NS_W_BOTH},
00472 {INVALID_CATENARY, WIRE_NS_E_N, WIRE_NS_E_S, WIRE_NS_E_BOTH},
00473 }, {
00474 {INVALID_CATENARY, WIRE_X_UP_NE, WIRE_X_UP_SW, WIRE_X_UP_BOTH},
00475 {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
00476 {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
00477 {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
00478 {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
00479 {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
00480 }, {
00481 {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
00482 {INVALID_CATENARY, WIRE_Y_UP_SE, WIRE_Y_UP_NW, WIRE_Y_UP_BOTH},
00483 {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
00484 {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
00485 {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
00486 {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
00487 }, {
00488 {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
00489 {INVALID_CATENARY, WIRE_Y_DOWN_SE, WIRE_Y_DOWN_NW, WIRE_Y_DOWN_BOTH},
00490 {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
00491 {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
00492 {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
00493 {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
00494 }, {
00495 {INVALID_CATENARY, WIRE_X_DOWN_NE, WIRE_X_DOWN_SW, WIRE_X_DOWN_BOTH},
00496 {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
00497 {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
00498 {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
00499 {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
00500 {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
00501 }
00502 };
00503
00504 #endif