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