# elrail_data.h

Go to the documentation of this file.

    00001 /* $Id: elrail_data.h 11054 2007-09-07 21:11:12Z rubidium $ */
    00005 #ifndef ELRAIL_DATA_H
    00006 #define ELRAIL_DATA_H
    00007
    00010 enum TLG {
    00011   XEVEN_YEVEN = 0,
    00012   XEVEN_YODD  = 1,
    00013   XODD_YEVEN  = 2,
    00014   XODD_YODD   = 3,
    00015   TLG_END
    00016 };
    00017
    00021 enum TileSource {
    00022   TS_HOME      = 0,
    00023   TS_NEIGHBOUR = 1,
    00024
    00025   TS_END
    00026 };
    00027
    00028 enum {
    00029   NUM_TRACKS_AT_PCP = 6
    00030 };
    00031
    00033 static byte AllowedPPPonPCP[DIAGDIR_END] = {
    00034   1 << DIR_N | 1 << DIR_E  | 1 << DIR_SE | 1 << DIR_S | 1 << DIR_W  | 1 << DIR_NW,
    00035   1 << DIR_N | 1 << DIR_NE | 1 << DIR_E  | 1 << DIR_S | 1 << DIR_SW | 1 << DIR_W,
    00036   1 << DIR_N | 1 << DIR_E  | 1 << DIR_SE | 1 << DIR_S | 1 << DIR_W  | 1 << DIR_NW,
    00037   1 << DIR_N | 1 << DIR_NE | 1 << DIR_E  | 1 << DIR_S | 1 << DIR_SW | 1 << DIR_W,
    00038 };
    00039
    00043 static byte OwnedPPPonPCP[DIAGDIR_END] = {
    00044   1 << DIR_SE | 1 << DIR_S  | 1 << DIR_SW | 1 << DIR_W,
    00045   1 << DIR_N  | 1 << DIR_SW | 1 << DIR_W  | 1 << DIR_NW,
    00046   1 << DIR_N  | 1 << DIR_NE | 1 << DIR_E  | 1 << DIR_NW,
    00047   1 << DIR_NE | 1 << DIR_E  | 1 << DIR_SE | 1 << DIR_S
    00048 };
    00049
    00051 static const DiagDirection PCPpositions[TRACK_END][2] = {
    00052   {DIAGDIR_NE, DIAGDIR_SW}, /* X */
    00053   {DIAGDIR_SE, DIAGDIR_NW}, /* Y */
    00054   {DIAGDIR_NW, DIAGDIR_NE}, /* UPPER */
    00055   {DIAGDIR_SE, DIAGDIR_SW}, /* LOWER */
    00056   {DIAGDIR_SW, DIAGDIR_NW}, /* LEFT */
    00057   {DIAGDIR_NE, DIAGDIR_SE}, /* RIGHT */
    00058 };
    00059
    00060 #define PCP_NOT_ON_TRACK 0xFF
    00061
    00065 static byte PreferredPPPofTrackAtPCP[TRACK_END][DIAGDIR_END] = {
    00066   {    /* X */
    00067     1 << DIR_NE | 1 << DIR_SE | 1 << DIR_NW, /* NE */
    00068     PCP_NOT_ON_TRACK,                        /* SE */
    00069     1 << DIR_SE | 1 << DIR_SW | 1 << DIR_NW, /* SW */
    00070     PCP_NOT_ON_TRACK                         /* NE */
    00071   }, { /* Y */
    00072     PCP_NOT_ON_TRACK,
    00073     1 << DIR_NE | 1 << DIR_SE | 1 << DIR_SW,
    00074     PCP_NOT_ON_TRACK,
    00075     1 << DIR_SW | 1 << DIR_NW | 1 << DIR_NE
    00076   }, { /* UPPER */
    00077     1 << DIR_E | 1 << DIR_N | 1 << DIR_S,
    00078     PCP_NOT_ON_TRACK,
    00079     PCP_NOT_ON_TRACK,
    00080     1 << DIR_W | 1 << DIR_N | 1 << DIR_S
    00081   }, { /* LOWER */
    00082     PCP_NOT_ON_TRACK,
    00083     1 << DIR_E | 1 << DIR_N | 1 << DIR_S,
    00084     1 << DIR_W | 1 << DIR_N | 1 << DIR_S,
    00085     PCP_NOT_ON_TRACK
    00086   }, { /* LEFT */
    00087     PCP_NOT_ON_TRACK,
    00088     PCP_NOT_ON_TRACK,
    00089     1 << DIR_S | 1 << DIR_E | 1 << DIR_W,
    00090     1 << DIR_N | 1 << DIR_E | 1 << DIR_W
    00091   }, { /* RIGHT */
    00092     1 << DIR_N | 1 << DIR_E | 1 << DIR_W,
    00093     1 << DIR_S | 1 << DIR_E | 1 << DIR_W,
    00094     PCP_NOT_ON_TRACK,
    00095     PCP_NOT_ON_TRACK
    00096   }
    00097 };
    00098 #undef PCP_NOT_ON_TRACK
    00099
    00100
    00101 #define NUM_IGNORE_GROUPS 3
    00102 #define IGNORE_NONE 0xFF
    00103
    00106 static byte IgnoredPCP[NUM_IGNORE_GROUPS][TLG_END][DIAGDIR_END] = {
    00107   {   /* Ignore group 1, X and Y tracks */
    00108     {     /* X even, Y even */
    00109       IGNORE_NONE,
    00110       1 << DIR_NE | 1 << DIR_SW,
    00111       1 << DIR_NW | 1 << DIR_SE,
    00112       IGNORE_NONE
    00113     }, { /* X even, Y odd  */
    00114       IGNORE_NONE,
    00115       IGNORE_NONE,
    00116       1 << DIR_NW | 1 << DIR_SE,
    00117       1 << DIR_NE | 1 << DIR_SW
    00118     }, { /* X odd,  Y even */
    00119       1 << DIR_NW | 1 << DIR_SE,
    00120       1 << DIR_NE | 1 << DIR_SW,
    00121       IGNORE_NONE,
    00122       IGNORE_NONE
    00123     }, { /* X odd,  Y odd  */
    00124       1 << DIR_NW | 1 << DIR_SE,
    00125       IGNORE_NONE,
    00126       IGNORE_NONE,
    00127       1 << DIR_NE | 1 << DIR_SW
    00128     }
    00129   },
    00130   {   /* Ignore group 2, LEFT and RIGHT tracks */
    00131     {
    00132       1 << DIR_E | 1 << DIR_W,
    00133       IGNORE_NONE,
    00134       IGNORE_NONE,
    00135       1 << DIR_E | 1 << DIR_W
    00136     }, {
    00137       IGNORE_NONE,
    00138       1 << DIR_E | 1 << DIR_W,
    00139       1 << DIR_E | 1 << DIR_W,
    00140       IGNORE_NONE
    00141     }, {
    00142       IGNORE_NONE,
    00143       1 << DIR_E | 1 << DIR_W,
    00144       1 << DIR_E | 1 << DIR_W,
    00145       IGNORE_NONE
    00146     }, {
    00147       1 << DIR_E | 1 << DIR_W,
    00148       IGNORE_NONE,
    00149       IGNORE_NONE,
    00150       1 << DIR_E | 1 << DIR_W
    00151     }
    00152   },
    00153   {   /* Ignore group 3, UPPER and LOWER tracks */
    00154     {
    00155       1 << DIR_N | 1 << DIR_S,
    00156       1 << DIR_N | 1 << DIR_S,
    00157       IGNORE_NONE,
    00158       IGNORE_NONE
    00159     }, {
    00160       IGNORE_NONE,
    00161       IGNORE_NONE,
    00162       1 << DIR_N | 1 << DIR_S,
    00163       1 << DIR_N | 1 << DIR_S
    00164     }, {
    00165       IGNORE_NONE,
    00166       IGNORE_NONE,
    00167       1 << DIR_N | 1 << DIR_S ,
    00168       1 << DIR_N | 1 << DIR_S
    00169     }, {
    00170       1 << DIR_N | 1 << DIR_S,
    00171       1 << DIR_N | 1 << DIR_S,
    00172       IGNORE_NONE,
    00173       IGNORE_NONE
    00174     }
    00175   }
    00176 };
    00177
    00178 #undef NO_IGNORE
    00179
    00181 static byte DisallowedPPPofTrackAtPCP[TRACK_END][DIAGDIR_END] = {
    00182   {1 << DIR_SW | 1 << DIR_NE, 0,           1 << DIR_SW | 1 << DIR_NE, 0          }, /* X */
    00183   {0,           1 << DIR_NW | 1 << DIR_SE, 0,           1 << DIR_NW | 1 << DIR_SE}, /* Y */
    00184   {1 << DIR_W | 1 << DIR_E,  0,           0,           1 << DIR_W | 1 << DIR_E }, /* UPPER */
    00185   {0,           1 << DIR_W | 1 << DIR_E,  1 << DIR_W | 1 << DIR_E,  0          }, /* LOWER */
    00186   {0,           0,           1 << DIR_S | 1 << DIR_N,  1 << DIR_N | 1 << DIR_S }, /* LEFT */
    00187   {1 << DIR_S | 1 << DIR_N,  1 << DIR_S | 1 << DIR_N,  0,           0,         }, /* RIGHT */
    00188 };
    00189
    00190 /* This array stores which track bits can meet at a tile edge */
    00191 static const Track TracksAtPCP[DIAGDIR_END][NUM_TRACKS_AT_PCP] = {
    00192   {TRACK_X, TRACK_X, TRACK_UPPER, TRACK_LOWER, TRACK_LEFT, TRACK_RIGHT},
    00193   {TRACK_Y, TRACK_Y, TRACK_UPPER, TRACK_LOWER, TRACK_LEFT, TRACK_RIGHT},
    00194   {TRACK_X, TRACK_X, TRACK_UPPER, TRACK_LOWER, TRACK_LEFT, TRACK_RIGHT},
    00195   {TRACK_Y, TRACK_Y, TRACK_UPPER, TRACK_LOWER, TRACK_LEFT, TRACK_RIGHT},
    00196 };
    00197
    00198 /* takes each of the 6 track bits from the array above and
    00199  * assigns it to the home tile or neighbour tile */
    00200 static const TileSource TrackSourceTile[DIAGDIR_END][NUM_TRACKS_AT_PCP] = {
    00201   {TS_HOME, TS_NEIGHBOUR, TS_HOME     , TS_NEIGHBOUR, TS_NEIGHBOUR, TS_HOME     },
    00202   {TS_HOME, TS_NEIGHBOUR, TS_NEIGHBOUR, TS_HOME     , TS_NEIGHBOUR, TS_HOME     },
    00203   {TS_HOME, TS_NEIGHBOUR, TS_NEIGHBOUR, TS_HOME     , TS_HOME     , TS_NEIGHBOUR},
    00204   {TS_HOME, TS_NEIGHBOUR, TS_HOME     , TS_NEIGHBOUR, TS_HOME     , TS_NEIGHBOUR},
    00205 };
    00206
    00207 /* Several PPPs maybe exist, here they are sorted in order of preference. */
    00208 static const Direction PPPorder[DIAGDIR_END][TLG_END][DIR_END] = {    /*  X  -  Y  */
    00209   {   /* PCP 0 */
    00210     {DIR_NE, DIR_NW, DIR_SE, DIR_SW, DIR_N, DIR_E, DIR_S, DIR_W}, /* evn - evn */
    00211     {DIR_NE, DIR_SE, DIR_SW, DIR_NW, DIR_S, DIR_W, DIR_N, DIR_E}, /* evn - odd */
    00212     {DIR_SW, DIR_NW, DIR_NE, DIR_SE, DIR_S, DIR_W, DIR_N, DIR_E}, /* odd - evn */
    00213     {DIR_SW, DIR_SE, DIR_NE, DIR_NW, DIR_N, DIR_E, DIR_S, DIR_W}, /* odd - odd */
    00214   }, {/* PCP 1 */
    00215     {DIR_NE, DIR_NW, DIR_SE, DIR_SW, DIR_S, DIR_E, DIR_N, DIR_W}, /* evn - evn */
    00216     {DIR_NE, DIR_SE, DIR_SW, DIR_NW, DIR_N, DIR_W, DIR_S, DIR_E}, /* evn - odd */
    00217     {DIR_SW, DIR_NW, DIR_NE, DIR_SE, DIR_N, DIR_W, DIR_S, DIR_E}, /* odd - evn */
    00218     {DIR_SW, DIR_SE, DIR_NE, DIR_NW, DIR_S, DIR_E, DIR_N, DIR_W}, /* odd - odd */
    00219   }, {/* PCP 2 */
    00220     {DIR_NE, DIR_NW, DIR_SE, DIR_SW, DIR_S, DIR_W, DIR_N, DIR_E}, /* evn - evn */
    00221     {DIR_NE, DIR_SE, DIR_SW, DIR_NW, DIR_N, DIR_E, DIR_S, DIR_W}, /* evn - odd */
    00222     {DIR_SW, DIR_NW, DIR_NE, DIR_SE, DIR_N, DIR_E, DIR_S, DIR_W}, /* odd - evn */
    00223     {DIR_SW, DIR_SE, DIR_NE, DIR_NW, DIR_S, DIR_W, DIR_N, DIR_E}, /* odd - odd */
    00224   }, {/* PCP 3 */
    00225     {DIR_NE, DIR_NW, DIR_SE, DIR_SW, DIR_N, DIR_W, DIR_S, DIR_E}, /* evn - evn */
    00226     {DIR_NE, DIR_SE, DIR_SW, DIR_NW, DIR_S, DIR_E, DIR_N, DIR_W}, /* evn - odd */
    00227     {DIR_SW, DIR_NW, DIR_NE, DIR_SE, DIR_S, DIR_E, DIR_N, DIR_W}, /* odd - evn */
    00228     {DIR_SW, DIR_SE, DIR_NE, DIR_NW, DIR_N, DIR_W, DIR_S, DIR_E}, /* odd - odd */
    00229   }
    00230 };
    00231 /* Geometric placement of the PCP relative to the tile origin */
    00232 static const int8 x_pcp_offsets[DIAGDIR_END] = {0,  8, 16, 8};
    00233 static const int8 y_pcp_offsets[DIAGDIR_END] = {8, 16,  8, 0};
    00234 /* Geometric placement of the PPP relative to the PCP*/
    00235 static const int8 x_ppp_offsets[DIR_END] = {-2, -4, -2,  0,  2,  4,  2,  0};
    00236 static const int8 y_ppp_offsets[DIR_END] = {-2,  0,  2,  4,  2,  0, -2, -4};
    00237 /* The type of pylon to draw at each PPP */
    00238 static const SpriteID pylon_sprites[] = {
    00239   SPR_PYLON_EW_N,
    00240   SPR_PYLON_Y_NE,
    00241   SPR_PYLON_NS_E,
    00242   SPR_PYLON_X_SE,
    00243   SPR_PYLON_EW_S,
    00244   SPR_PYLON_Y_SW,
    00245   SPR_PYLON_NS_W,
    00246   SPR_PYLON_X_NW
    00247 };
    00248
    00249 struct SortableSpriteStruct {
    00250   SpriteID image;
    00251   int8 x_offset;
    00252   int8 y_offset;
    00253   int8 x_size;
    00254   int8 y_size;
    00255   int8 z_size;
    00256   int8 z_offset;
    00257 };
    00258
    00259 enum {
    00261   ELRAIL_ELEVATION = 10,
    00263   ELRAIL_ELEVRAISE = ELRAIL_ELEVATION + TILE_HEIGHT
    00264 };
    00265
    00266 static const SortableSpriteStruct CatenarySpriteData[] = {
    00267 /* X direction */
    00268   /* Flat tiles: */
    00269     /* Wires */
    00270   { SPR_WIRE_X_SW,          0,  7, 15,  1,  1, ELRAIL_ELEVATION },
    00271   { SPR_WIRE_X_NE,          0,  7, 15,  1,  1, ELRAIL_ELEVATION },
    00272   { SPR_WIRE_X_SHORT,       0,  7, 15,  1,  1, ELRAIL_ELEVATION },
    00273
    00274   /* "up" tiles */
    00275     /* Wires */
    00276   { SPR_WIRE_X_SW_UP,       0,  7, 15,  8,  1, ELRAIL_ELEVRAISE },
    00277   { SPR_WIRE_X_NE_UP,       0,  7, 15,  8,  1, ELRAIL_ELEVRAISE },
    00278   { SPR_WIRE_X_SHORT_UP,    0,  7, 15,  8,  1, ELRAIL_ELEVRAISE },
    00279
    00280   /* "down" tiles */
    00281     /* Wires */
    00282   { SPR_WIRE_X_SW_DOWN,     0,  7, 15,  8,  1, ELRAIL_ELEVATION },
    00283   { SPR_WIRE_X_NE_DOWN,     0,  7, 15,  8,  1, ELRAIL_ELEVATION },
    00284   { SPR_WIRE_X_SHORT_DOWN,  0,  7, 15,  8,  1, ELRAIL_ELEVATION },
    00285
    00286
    00287 /* Y direction */
    00288   /* Flat tiles: */
    00289     /* Wires */
    00290   { SPR_WIRE_Y_SE,          7,  0,  1, 15,  1, ELRAIL_ELEVATION },
    00291   { SPR_WIRE_Y_NW,          7,  0,  1, 15,  1, ELRAIL_ELEVATION },
    00292   { SPR_WIRE_Y_SHORT,       7,  0,  1, 15,  1, ELRAIL_ELEVATION },
    00293
    00294   /* "up" tiles */
    00295     /* Wires */
    00296   { SPR_WIRE_Y_SE_UP,       7,  0,  8, 15,  1, ELRAIL_ELEVRAISE },
    00297   { SPR_WIRE_Y_NW_UP,       7,  0,  8, 15,  1, ELRAIL_ELEVRAISE },
    00298   { SPR_WIRE_Y_SHORT_UP,    7,  0,  8, 15,  1, ELRAIL_ELEVRAISE },
    00299
    00300   /* "down" tiles */
    00301     /* Wires */
    00302   { SPR_WIRE_Y_SE_DOWN,     7,  0,  8, 15,  1, ELRAIL_ELEVATION },
    00303   { SPR_WIRE_Y_NW_DOWN,     7,  0,  8, 15,  1, ELRAIL_ELEVATION },
    00304   { SPR_WIRE_Y_SHORT_DOWN,  7,  0,  8, 15,  1, ELRAIL_ELEVATION },
    00305
    00306 /* NS Direction */
    00307   { SPR_WIRE_NS_SHORT,      8,  0,  8,  8,  1, ELRAIL_ELEVATION },
    00308   { SPR_WIRE_NS_SHORT,      0,  8,  8,  8,  1, ELRAIL_ELEVATION },
    00309
    00310   { SPR_WIRE_NS_N,          8,  0,  8,  8,  1, ELRAIL_ELEVATION },
    00311   { SPR_WIRE_NS_N,          0,  8,  8,  8,  1, ELRAIL_ELEVATION },
    00312
    00313   { SPR_WIRE_NS_S,          8,  0,  8,  8,  1, ELRAIL_ELEVATION },
    00314   { SPR_WIRE_NS_S,          0,  8,  8,  8,  1, ELRAIL_ELEVATION },
    00315
    00316 /* EW Direction */
    00317   { SPR_WIRE_EW_SHORT,      7,  0,  1,  1,  1, ELRAIL_ELEVATION },
    00318   { SPR_WIRE_EW_SHORT,     15,  8,  3,  3,  1, ELRAIL_ELEVATION },
    00319
    00320   { SPR_WIRE_EW_W,          7,  0,  1,  1,  1, ELRAIL_ELEVATION },
    00321   { SPR_WIRE_EW_W,         15,  8,  3,  3,  1, ELRAIL_ELEVATION },
    00322
    00323   { SPR_WIRE_EW_E,          7,  0,  1,  1,  1, ELRAIL_ELEVATION },
    00324   { SPR_WIRE_EW_E,         15,  8,  3,  3,  1, ELRAIL_ELEVATION }
    00325 };
    00326
    00327 static const SortableSpriteStruct CatenarySpriteData_Depot[] = {
    00328   { SPR_WIRE_DEPOT_NE,      0,  7, 15,  1,  1, ELRAIL_ELEVATION },
    00329   { SPR_WIRE_DEPOT_SE,      7,  0,  1, 15,  1, ELRAIL_ELEVATION },
    00330   { SPR_WIRE_DEPOT_SW,      0,  7, 15,  1,  1, ELRAIL_ELEVATION },
    00331   { SPR_WIRE_DEPOT_NW,      7,  0,  1, 15,  1, ELRAIL_ELEVATION }
    00332 };
    00333
    00334 static const SortableSpriteStruct CatenarySpriteData_Tunnel[] = {
    00335   { SPR_WIRE_TUNNEL_NE,      0,  7, 15,  1,  1, ELRAIL_ELEVATION },
    00336   { SPR_WIRE_TUNNEL_SE,      7,  0,  1, 15,  1, ELRAIL_ELEVATION },
    00337   { SPR_WIRE_TUNNEL_SW,      0,  7, 15,  1,  1, ELRAIL_ELEVATION },
    00338   { SPR_WIRE_TUNNEL_NW,      7,  0,  1, 15,  1, ELRAIL_ELEVATION }
    00339 };
    00340
    00341
    00353 enum CatenarySprite {
    00354   WIRE_X_FLAT_SW,
    00355   WIRE_X_FLAT_NE,
    00356   WIRE_X_FLAT_BOTH,
    00357
    00358   WIRE_X_UP_SW,
    00359   WIRE_X_UP_NE,
    00360   WIRE_X_UP_BOTH,
    00361
    00362   WIRE_X_DOWN_SW,
    00363   WIRE_X_DOWN_NE,
    00364   WIRE_X_DOWN_BOTH,
    00365
    00366   WIRE_Y_FLAT_SE,
    00367   WIRE_Y_FLAT_NW,
    00368   WIRE_Y_FLAT_BOTH,
    00369
    00370   WIRE_Y_UP_SE,
    00371   WIRE_Y_UP_NW,
    00372   WIRE_Y_UP_BOTH,
    00373
    00374   WIRE_Y_DOWN_SE,
    00375   WIRE_Y_DOWN_NW,
    00376   WIRE_Y_DOWN_BOTH,
    00377
    00378   WIRE_NS_W_BOTH,
    00379   WIRE_NS_E_BOTH,
    00380
    00381   WIRE_NS_W_N,
    00382   WIRE_NS_E_N,
    00383
    00384   WIRE_NS_W_S,
    00385   WIRE_NS_E_S,
    00386
    00387   WIRE_EW_N_BOTH,
    00388   WIRE_EW_S_BOTH,
    00389
    00390   WIRE_EW_N_W,
    00391   WIRE_EW_S_W,
    00392
    00393   WIRE_EW_N_E,
    00394   WIRE_EW_S_E,
    00395
    00396   INVALID_CATENARY = 0xFF
    00397 };
    00398
    00399 /* Selects a Wire (with white and grey ends) depending on whether:
    00400  * a) none (should never happen)
    00401  * b) the first
    00402  * c) the second
    00403  * d) both
    00404  * PCP exists.*/
    00405 static const CatenarySprite Wires[5][TRACK_END][4] = {
    00406   { /* Tileh == 0 */
    00407     {INVALID_CATENARY, WIRE_X_FLAT_NE,   WIRE_X_FLAT_SW,   WIRE_X_FLAT_BOTH},
    00408     {INVALID_CATENARY, WIRE_Y_FLAT_SE,   WIRE_Y_FLAT_NW,   WIRE_Y_FLAT_BOTH},
    00409     {INVALID_CATENARY, WIRE_EW_N_W,      WIRE_EW_N_E,      WIRE_EW_N_BOTH},
    00410     {INVALID_CATENARY, WIRE_EW_S_E,      WIRE_EW_S_W,      WIRE_EW_S_BOTH},
    00411     {INVALID_CATENARY, WIRE_NS_W_S,      WIRE_NS_W_N,      WIRE_NS_W_BOTH},
    00412     {INVALID_CATENARY, WIRE_NS_E_N,      WIRE_NS_E_S,      WIRE_NS_E_BOTH},
    00413   }, { /* Tileh == 3 */
    00414     {INVALID_CATENARY, WIRE_X_UP_NE,     WIRE_X_UP_SW,     WIRE_X_UP_BOTH},
    00415     {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
    00416     {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
    00417     {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
    00418     {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
    00419     {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
    00420   }, { /* Tileh == 6 */
    00421     {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
    00422     {INVALID_CATENARY, WIRE_Y_UP_SE,     WIRE_Y_UP_NW,     WIRE_Y_UP_BOTH},
    00423     {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
    00424     {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
    00425     {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
    00426     {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
    00427   }, { /* Tileh == 9 */
    00428     {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
    00429     {INVALID_CATENARY, WIRE_Y_DOWN_SE,   WIRE_Y_DOWN_NW,   WIRE_Y_DOWN_BOTH},
    00430     {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
    00431     {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
    00432     {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
    00433     {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
    00434   }, { /* Tileh == 12 */
    00435     {INVALID_CATENARY, WIRE_X_DOWN_NE,   WIRE_X_DOWN_SW,   WIRE_X_DOWN_BOTH},
    00436     {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
    00437     {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
    00438     {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
    00439     {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
    00440     {INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY, INVALID_CATENARY},
    00441   }
    00442 };
    00443
    00444 #endif /* ELRAIL_DATA_H */