Include track flags

This commit is contained in:
Marijn van der Werf 2016-08-01 21:51:17 +02:00
parent 38b5bba668
commit 6610190e8c
7 changed files with 546 additions and 15 deletions

View File

@ -4180,7 +4180,7 @@ static bool ride_check_track_contains_inversions(rct_xy_element *input, rct_xy_e
track_circuit_iterator_begin(&it, *input);
while (track_circuit_iterator_next(&it)) {
trackType = it.current.element->properties.track.type;
if (RCT2_ADDRESS(0x0099423C, uint16)[trackType] & 0x4000) {
if (TrackFlags[trackType] & TRACK_ELEM_FLAG_4000) {
*output = it.current;
return true;
}
@ -4215,7 +4215,7 @@ static bool ride_check_track_contains_banked(rct_xy_element *input, rct_xy_eleme
track_circuit_iterator_begin(&it, *input);
while (track_circuit_iterator_next(&it)) {
trackType = output->element->properties.track.type;
if (RCT2_ADDRESS(0x0099423C, uint16)[trackType] & 0x8000) {
if (TrackFlags[trackType] & TRACK_ELEM_FLAG_8000) {
*output = it.current;
return true;
}

View File

@ -977,7 +977,7 @@ static money32 track_place(int rideIndex, int type, int originX, int originY, in
}
}
if ((edx_flags & (1 << 0)) && !(enabledTrackPieces & (1ULL << TRACK_LIFT_HILL_STEEP)) && !gCheatsEnableChainLiftOnAllTrack) {
if (RCT2_ADDRESS(0x0099423C, uint16)[type] & 0x400) {
if (TrackFlags[type] & TRACK_ELEM_FLAG_0400) {
gGameCommandErrorText = STR_TOO_STEEP_FOR_LIFT_HILL;
return MONEY32_UNDEFINED;
}
@ -1022,10 +1022,10 @@ static money32 track_place(int rideIndex, int type, int originX, int originY, in
}
}
uint16 *trackFlags = (rideTypeFlags & RIDE_TYPE_FLAG_FLAT_RIDE) ?
RCT2_ADDRESS(0x0099443C, uint16) :
RCT2_ADDRESS(0x0099423C, uint16);
if (trackFlags[type] & 0x100) {
const uint16 *trackFlags = (rideTypeFlags & RIDE_TYPE_FLAG_FLAT_RIDE) ?
FlatTrackFlags :
TrackFlags;
if (trackFlags[type] & TRACK_ELEM_FLAG_0100) {
if ((originZ & 0x0F) != 8) {
gGameCommandErrorText = 954;
return MONEY32_UNDEFINED;
@ -1142,7 +1142,7 @@ static money32 track_place(int rideIndex, int type, int originX, int originY, in
gTrackGroundFlags = bh;
if (rideTypeFlags & RIDE_TYPE_FLAG_FLAT_RIDE) {
if (RCT2_ADDRESS(0x0099443C, uint16)[type] & 0x200) {
if (FlatTrackFlags[type] & TRACK_ELEM_FLAG_0200) {
if (gTrackGroundFlags & TRACK_ELEMENT_LOCATION_IS_UNDERGROUND) {
gGameCommandErrorText = STR_CAN_ONLY_BUILD_THIS_ABOVE_GROUND;
return MONEY32_UNDEFINED;
@ -1150,7 +1150,7 @@ static money32 track_place(int rideIndex, int type, int originX, int originY, in
}
}
else {
if (RCT2_ADDRESS(0x0099423C, uint16)[type] & 0x200) {
if (TrackFlags[type] & TRACK_ELEM_FLAG_0200) {
if (gTrackGroundFlags & TRACK_ELEMENT_LOCATION_IS_UNDERGROUND) {
gGameCommandErrorText = STR_CAN_ONLY_BUILD_THIS_ABOVE_GROUND;
return MONEY32_UNDEFINED;
@ -1159,7 +1159,7 @@ static money32 track_place(int rideIndex, int type, int originX, int originY, in
}
if (rideTypeFlags & RIDE_TYPE_FLAG_FLAT_RIDE) {
if (RCT2_ADDRESS(0x0099443C, uint16)[type] & 1) {
if (FlatTrackFlags[type] & TRACK_ELEM_FLAG_0001) {
if (!(gMapGroundFlags & ELEMENT_IS_UNDERWATER)) {
gGameCommandErrorText = STR_CAN_ONLY_BUILD_THIS_UNDERWATER;
return MONEY32_UNDEFINED;
@ -1167,7 +1167,7 @@ static money32 track_place(int rideIndex, int type, int originX, int originY, in
}
}
else {
if (RCT2_ADDRESS(0x0099423C, uint16)[type] & 1) {
if (TrackFlags[type] & TRACK_ELEM_FLAG_0001) { // No element has this flag
if (gMapGroundFlags & ELEMENT_IS_UNDERWATER) {
gGameCommandErrorText = STR_CAN_ONLY_BUILD_THIS_UNDERWATER;
return MONEY32_UNDEFINED;

View File

@ -184,6 +184,7 @@ enum {
};
enum {
TRACK_ELEM_FLAG_0001 = (1 << 0),
TRACK_ELEM_FLAG_TURN_LEFT = (1 << 1),
TRACK_ELEM_FLAG_TURN_RIGHT = (1 << 2),
TRACK_ELEM_FLAG_TURN_BANKED = (1 << 3),
@ -191,7 +192,14 @@ enum {
TRACK_ELEM_FLAG_DOWN = (1 << 5),
TRACK_ELEM_FLAG_UP = (1 << 6),
TRACK_ELEM_FLAG_INVERSION = (1 << 7),
TRACK_ELEM_FLAG_0100 = (1 << 8),
TRACK_ELEM_FLAG_0200 = (1 << 9),
TRACK_ELEM_FLAG_0400 = (1 << 10),
TRACK_ELEM_FLAG_HELIX = (1 << 11),
TRACK_ELEM_FLAG_1000 = (1 << 12),
TRACK_ELEM_FLAG_2000 = (1 << 13),
TRACK_ELEM_FLAG_4000 = (1 << 14),
TRACK_ELEM_FLAG_8000 = (1 << 15),
};
enum {

View File

@ -32770,3 +32770,523 @@ const uint8 FlatRideTrackSequenceElementAllowedWallEdges[][16] = {
{ 0b1111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0b1111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
};
/** rct2: 0x0099443C */
const uint16 FlatTrackFlags[] = {
TRACK_ELEM_FLAG_1000,
0,
0,
0,
TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_1000,
TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_0400 | TRACK_ELEM_FLAG_1000,
TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_1000,
TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_0400 | TRACK_ELEM_FLAG_1000,
TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_0400 | TRACK_ELEM_FLAG_1000,
TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_1000,
TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_1000,
TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_1000,
TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_1000,
TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_1000,
TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_1000,
TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_1000,
TRACK_ELEM_FLAG_TURN_LEFT,
TRACK_ELEM_FLAG_TURN_RIGHT,
TRACK_ELEM_FLAG_8000,
TRACK_ELEM_FLAG_8000,
TRACK_ELEM_FLAG_8000,
TRACK_ELEM_FLAG_8000,
TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_BANKED | TRACK_ELEM_FLAG_8000,
TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_BANKED | TRACK_ELEM_FLAG_8000,
TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_8000,
TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_8000,
TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_8000,
TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_8000,
TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_8000,
TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_8000,
TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_8000,
TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_8000,
TRACK_ELEM_FLAG_8000,
TRACK_ELEM_FLAG_8000,
TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_1000 | TRACK_ELEM_FLAG_2000,
TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_1000 | TRACK_ELEM_FLAG_2000,
TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_1000 | TRACK_ELEM_FLAG_2000,
TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_1000 | TRACK_ELEM_FLAG_2000,
0,
0,
TRACK_ELEM_FLAG_INVERSION | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_4000,
TRACK_ELEM_FLAG_INVERSION | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_4000,
TRACK_ELEM_FLAG_TURN_LEFT,
TRACK_ELEM_FLAG_TURN_RIGHT,
TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_BANKED | TRACK_ELEM_FLAG_8000,
TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_BANKED | TRACK_ELEM_FLAG_8000,
TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_1000 | TRACK_ELEM_FLAG_2000,
TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_1000 | TRACK_ELEM_FLAG_2000,
TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_1000 | TRACK_ELEM_FLAG_2000,
TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_1000 | TRACK_ELEM_FLAG_2000,
TRACK_ELEM_FLAG_TURN_LEFT,
TRACK_ELEM_FLAG_TURN_RIGHT,
TRACK_ELEM_FLAG_INVERSION | TRACK_ELEM_FLAG_4000,
TRACK_ELEM_FLAG_INVERSION | TRACK_ELEM_FLAG_4000,
TRACK_ELEM_FLAG_4000,
TRACK_ELEM_FLAG_4000,
TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_INVERSION | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_4000,
TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_4000,
TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_INVERSION | TRACK_ELEM_FLAG_4000,
TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_INVERSION | TRACK_ELEM_FLAG_4000,
TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_4000,
TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_4000,
TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0400 | TRACK_ELEM_FLAG_1000,
TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_0400 | TRACK_ELEM_FLAG_1000,
TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_1000,
TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_1000,
0,
0,
0,
TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100,
TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100,
TRACK_ELEM_FLAG_UP,
TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100,
TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100,
TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100,
TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100,
TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100,
TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100,
TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100,
TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100,
TRACK_ELEM_FLAG_DOWN,
TRACK_ELEM_FLAG_TURN_LEFT,
TRACK_ELEM_FLAG_TURN_RIGHT,
0,
0,
TRACK_ELEM_FLAG_TURN_LEFT,
TRACK_ELEM_FLAG_TURN_RIGHT,
TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_8000,
TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_8000,
TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_8000,
TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_8000,
TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_8000,
TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_8000,
TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_8000,
TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_8000,
TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100,
TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100,
TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100,
TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100,
0,
0,
TRACK_ELEM_FLAG_0200,
TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_8000,
TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_8000,
TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_8000,
TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_8000,
TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_HELIX,
TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_HELIX,
TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_HELIX,
TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_HELIX,
TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_8000,
TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_8000,
0,
0,
TRACK_ELEM_FLAG_0200,
TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_8000,
TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_8000,
0,
TRACK_ELEM_FLAG_UP,
TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100,
0,
TRACK_ELEM_FLAG_DOWN,
TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100,
TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100,
TRACK_ELEM_FLAG_UP,
TRACK_ELEM_FLAG_UP,
TRACK_ELEM_FLAG_UP,
TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_1000,
TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100,
TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_1000,
TRACK_ELEM_FLAG_UP,
TRACK_ELEM_FLAG_DOWN,
TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100,
TRACK_ELEM_FLAG_TURN_LEFT,
TRACK_ELEM_FLAG_TURN_RIGHT,
TRACK_ELEM_FLAG_TURN_LEFT,
TRACK_ELEM_FLAG_TURN_RIGHT,
TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_BANKED | TRACK_ELEM_FLAG_8000,
TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_BANKED | TRACK_ELEM_FLAG_8000,
TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_BANKED | TRACK_ELEM_FLAG_8000,
TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_BANKED | TRACK_ELEM_FLAG_8000,
TRACK_ELEM_FLAG_1000,
TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_1000,
TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_0400 | TRACK_ELEM_FLAG_1000,
TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_1000,
TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_0400 | TRACK_ELEM_FLAG_1000,
TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_0400 | TRACK_ELEM_FLAG_1000,
TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_1000,
TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_1000,
TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_1000,
TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_1000,
TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_1000,
TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_1000,
TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_1000,
TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0400 | TRACK_ELEM_FLAG_1000,
TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_0400 | TRACK_ELEM_FLAG_1000,
TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_1000,
TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_1000,
TRACK_ELEM_FLAG_8000,
TRACK_ELEM_FLAG_8000,
TRACK_ELEM_FLAG_8000,
TRACK_ELEM_FLAG_8000,
TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_8000,
TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_8000,
TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_8000,
TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_8000,
TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_8000,
TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_8000,
TRACK_ELEM_FLAG_DOWN,
TRACK_ELEM_FLAG_DOWN,
TRACK_ELEM_FLAG_8000,
TRACK_ELEM_FLAG_8000,
TRACK_ELEM_FLAG_8000,
TRACK_ELEM_FLAG_8000,
TRACK_ELEM_FLAG_INVERSION | TRACK_ELEM_FLAG_4000,
TRACK_ELEM_FLAG_INVERSION | TRACK_ELEM_FLAG_4000,
TRACK_ELEM_FLAG_4000,
TRACK_ELEM_FLAG_4000,
TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_8000,
TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_8000,
TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_8000,
TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_8000,
TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100,
TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_INVERSION | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_4000,
TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_INVERSION | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_4000,
TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_4000,
TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_4000,
TRACK_ELEM_FLAG_INVERSION | TRACK_ELEM_FLAG_4000,
TRACK_ELEM_FLAG_INVERSION | TRACK_ELEM_FLAG_4000,
TRACK_ELEM_FLAG_4000,
TRACK_ELEM_FLAG_4000,
TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_INVERSION | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_4000,
TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_4000,
TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_INVERSION | TRACK_ELEM_FLAG_4000,
TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_INVERSION | TRACK_ELEM_FLAG_4000,
TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_4000,
TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_4000,
0,
0,
TRACK_ELEM_FLAG_INVERSION | TRACK_ELEM_FLAG_4000,
TRACK_ELEM_FLAG_INVERSION | TRACK_ELEM_FLAG_4000,
TRACK_ELEM_FLAG_INVERSION,
TRACK_ELEM_FLAG_INVERSION,
TRACK_ELEM_FLAG_INVERSION,
TRACK_ELEM_FLAG_INVERSION,
TRACK_ELEM_FLAG_INVERSION,
TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_4000,
TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_INVERSION | TRACK_ELEM_FLAG_4000,
TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_4000,
TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_UP,
TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_UP,
0,
0,
0,
TRACK_ELEM_FLAG_DOWN,
TRACK_ELEM_FLAG_DOWN,
0,
TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_8000,
TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_8000,
TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_8000,
TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_8000,
TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_8000,
TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_8000,
TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_8000,
TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_8000,
TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_8000,
TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_8000,
TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_8000,
TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_8000,
TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_8000,
TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_8000,
TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_8000,
TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_8000,
TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_8000,
TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_8000,
TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_8000,
TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_8000,
TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_8000,
TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_8000,
TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_8000,
TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_8000,
TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_8000,
TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_8000,
TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_8000,
TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_8000,
TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_8000,
TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_8000,
TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_8000,
TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_8000,
TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP,
TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP,
TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN,
TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN,
TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_INVERSION | TRACK_ELEM_FLAG_4000,
TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_4000,
TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_INVERSION | TRACK_ELEM_FLAG_4000,
};
/** rct2: 0x0099423C */
const uint16 TrackFlags[] = {
/* TRACK_ELEM_FLAT */ TRACK_ELEM_FLAG_1000,
/* TRACK_ELEM_END_STATION */ 0,
/* TRACK_ELEM_BEGIN_STATION */ 0,
/* TRACK_ELEM_MIDDLE_STATION */ 0,
/* TRACK_ELEM_25_DEG_UP */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_1000,
/* TRACK_ELEM_60_DEG_UP */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_0400 | TRACK_ELEM_FLAG_1000,
/* TRACK_ELEM_FLAT_TO_25_DEG_UP */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_1000,
/* TRACK_ELEM_25_DEG_UP_TO_60_DEG_UP */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_0400 | TRACK_ELEM_FLAG_1000,
/* TRACK_ELEM_60_DEG_UP_TO_25_DEG_UP */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_0400 | TRACK_ELEM_FLAG_1000,
/* TRACK_ELEM_25_DEG_UP_TO_FLAT */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_1000,
/* TRACK_ELEM_25_DEG_DOWN */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_1000,
/* TRACK_ELEM_60_DEG_DOWN */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_1000,
/* TRACK_ELEM_FLAT_TO_25_DEG_DOWN */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_1000,
/* TRACK_ELEM_25_DEG_DOWN_TO_60_DEG_DOWN */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_1000,
/* TRACK_ELEM_60_DEG_DOWN_TO_25_DEG_DOWN */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_1000,
/* TRACK_ELEM_25_DEG_DOWN_TO_FLAT */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_1000,
/* TRACK_ELEM_LEFT_QUARTER_TURN_5_TILES */ TRACK_ELEM_FLAG_TURN_LEFT,
/* TRACK_ELEM_RIGHT_QUARTER_TURN_5_TILES */ TRACK_ELEM_FLAG_TURN_RIGHT,
/* TRACK_ELEM_FLAT_TO_LEFT_BANK */ TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_FLAT_TO_RIGHT_BANK */ TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_LEFT_BANK_TO_FLAT */ TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_RIGHT_BANK_TO_FLAT */ TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_BANKED_LEFT_QUARTER_TURN_5_TILES */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_BANKED | TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_BANKED_RIGHT_QUARTER_TURN_5_TILES */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_BANKED | TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_LEFT_BANK_TO_25_DEG_UP */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_RIGHT_BANK_TO_25_DEG_UP */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_25_DEG_UP_TO_LEFT_BANK */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_25_DEG_UP_TO_RIGHT_BANK */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_LEFT_BANK_TO_25_DEG_DOWN */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_RIGHT_BANK_TO_25_DEG_DOWN */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_25_DEG_DOWN_TO_LEFT_BANK */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_25_DEG_DOWN_TO_RIGHT_BANK */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_LEFT_BANK */ TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_RIGHT_BANK */ TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_LEFT_QUARTER_TURN_5_TILES_25_DEG_UP */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_1000 | TRACK_ELEM_FLAG_2000,
/* TRACK_ELEM_RIGHT_QUARTER_TURN_5_TILES_25_DEG_UP */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_1000 | TRACK_ELEM_FLAG_2000,
/* TRACK_ELEM_LEFT_QUARTER_TURN_5_TILES_25_DEG_DOWN */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_1000 | TRACK_ELEM_FLAG_2000,
/* TRACK_ELEM_RIGHT_QUARTER_TURN_5_TILES_25_DEG_DOWN */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_1000 | TRACK_ELEM_FLAG_2000,
/* TRACK_ELEM_S_BEND_LEFT */ 0,
/* TRACK_ELEM_S_BEND_RIGHT */ 0,
/* TRACK_ELEM_LEFT_VERTICAL_LOOP */ TRACK_ELEM_FLAG_INVERSION | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_4000,
/* TRACK_ELEM_RIGHT_VERTICAL_LOOP */ TRACK_ELEM_FLAG_INVERSION | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_4000,
/* TRACK_ELEM_LEFT_QUARTER_TURN_3_TILES */ TRACK_ELEM_FLAG_TURN_LEFT,
/* TRACK_ELEM_RIGHT_QUARTER_TURN_3_TILES */ TRACK_ELEM_FLAG_TURN_RIGHT,
/* TRACK_ELEM_LEFT_QUARTER_TURN_3_TILES_BANK */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_BANKED | TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_RIGHT_QUARTER_TURN_3_TILES_BANK */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_BANKED | TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_LEFT_QUARTER_TURN_3_TILES_25_DEG_UP */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_1000 | TRACK_ELEM_FLAG_2000,
/* TRACK_ELEM_RIGHT_QUARTER_TURN_3_TILES_25_DEG_UP */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_1000 | TRACK_ELEM_FLAG_2000,
/* TRACK_ELEM_LEFT_QUARTER_TURN_3_TILES_25_DEG_DOWN */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_1000 | TRACK_ELEM_FLAG_2000,
/* TRACK_ELEM_RIGHT_QUARTER_TURN_3_TILES_25_DEG_DOWN */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_1000 | TRACK_ELEM_FLAG_2000,
/* TRACK_ELEM_LEFT_QUARTER_TURN_1_TILE */ TRACK_ELEM_FLAG_TURN_LEFT,
/* TRACK_ELEM_RIGHT_QUARTER_TURN_1_TILE */ TRACK_ELEM_FLAG_TURN_RIGHT,
/* TRACK_ELEM_LEFT_TWIST_DOWN_TO_UP */ TRACK_ELEM_FLAG_INVERSION | TRACK_ELEM_FLAG_4000,
/* TRACK_ELEM_RIGHT_TWIST_DOWN_TO_UP */ TRACK_ELEM_FLAG_INVERSION | TRACK_ELEM_FLAG_4000,
/* TRACK_ELEM_LEFT_TWIST_UP_TO_DOWN */ TRACK_ELEM_FLAG_4000,
/* TRACK_ELEM_RIGHT_TWIST_UP_TO_DOWN */ TRACK_ELEM_FLAG_4000,
/* TRACK_ELEM_HALF_LOOP_UP */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_INVERSION | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_4000,
/* TRACK_ELEM_HALF_LOOP_DOWN */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_4000,
/* TRACK_ELEM_LEFT_CORKSCREW_UP */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_INVERSION | TRACK_ELEM_FLAG_4000,
/* TRACK_ELEM_RIGHT_CORKSCREW_UP */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_INVERSION | TRACK_ELEM_FLAG_4000,
/* TRACK_ELEM_LEFT_CORKSCREW_DOWN */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_4000,
/* TRACK_ELEM_RIGHT_CORKSCREW_DOWN */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_4000,
/* TRACK_ELEM_FLAT_TO_60_DEG_UP */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0400 | TRACK_ELEM_FLAG_1000,
/* TRACK_ELEM_60_DEG_UP_TO_FLAT */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_0400 | TRACK_ELEM_FLAG_1000,
/* TRACK_ELEM_FLAT_TO_60_DEG_DOWN */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_1000,
/* TRACK_ELEM_60_DEG_DOWN_TO_FLAT */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_1000,
/* TRACK_ELEM_TOWER_BASE */ 0,
/* TRACK_ELEM_TOWER_SECTION */ 0,
/* TRACK_ELEM_FLAT_COVERED */ 0,
/* TRACK_ELEM_25_DEG_UP_COVERED */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100,
/* TRACK_ELEM_60_DEG_UP_COVERED */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100,
/* TRACK_ELEM_FLAT_TO_25_DEG_UP_COVERED */ TRACK_ELEM_FLAG_UP,
/* TRACK_ELEM_25_DEG_UP_TO_60_DEG_UP_COVERED */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100,
/* TRACK_ELEM_60_DEG_UP_TO_25_DEG_UP_COVERED */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100,
/* TRACK_ELEM_25_DEG_UP_TO_FLAT_COVERED */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100,
/* TRACK_ELEM_25_DEG_DOWN_COVERED */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100,
/* TRACK_ELEM_60_DEG_DOWN_COVERED */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100,
/* TRACK_ELEM_FLAT_TO_25_DEG_DOWN_COVERED */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100,
/* TRACK_ELEM_25_DEG_DOWN_TO_60_DEG_DOWN_COVERED */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100,
/* TRACK_ELEM_60_DEG_DOWN_TO_25_DEG_DOWN_COVERED */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100,
/* TRACK_ELEM_25_DEG_DOWN_TO_FLAT_COVERED */ TRACK_ELEM_FLAG_DOWN,
/* TRACK_ELEM_LEFT_QUARTER_TURN_5_TILES_COVERED */ TRACK_ELEM_FLAG_TURN_LEFT,
/* TRACK_ELEM_RIGHT_QUARTER_TURN_5_TILES_COVERED */ TRACK_ELEM_FLAG_TURN_RIGHT,
/* TRACK_ELEM_S_BEND_LEFT_COVERED */ 0,
/* TRACK_ELEM_S_BEND_RIGHT_COVERED */ 0,
/* TRACK_ELEM_LEFT_QUARTER_TURN_3_TILES_COVERED */ TRACK_ELEM_FLAG_TURN_LEFT,
/* TRACK_ELEM_RIGHT_QUARTER_TURN_3_TILES_COVERED */ TRACK_ELEM_FLAG_TURN_RIGHT,
/* TRACK_ELEM_LEFT_HALF_BANKED_HELIX_UP_SMALL */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_RIGHT_HALF_BANKED_HELIX_UP_SMALL */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_LEFT_HALF_BANKED_HELIX_DOWN_SMALL */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_RIGHT_HALF_BANKED_HELIX_DOWN_SMALL */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_LEFT_HALF_BANKED_HELIX_UP_LARGE */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_RIGHT_HALF_BANKED_HELIX_UP_LARGE */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_LEFT_HALF_BANKED_HELIX_DOWN_LARGE */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_RIGHT_HALF_BANKED_HELIX_DOWN_LARGE */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_LEFT_QUARTER_TURN_1_TILE_60_DEG_UP */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100,
/* TRACK_ELEM_RIGHT_QUARTER_TURN_1_TILE_60_DEG_UP */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100,
/* TRACK_ELEM_LEFT_QUARTER_TURN_1_TILE_60_DEG_DOWN */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100,
/* TRACK_ELEM_RIGHT_QUARTER_TURN_1_TILE_60_DEG_DOWN */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100,
/* TRACK_ELEM_BRAKES */ 0,
/* TRACK_ELEM_ROTATION_CONTROL_TOGGLE */ 0,
/* TRACK_ELEM_INVERTED_90_DEG_UP_TO_FLAT_QUARTER_LOOP */ TRACK_ELEM_FLAG_0200,
/* TRACK_ELEM_LEFT_QUARTER_BANKED_HELIX_LARGE_UP */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_RIGHT_QUARTER_BANKED_HELIX_LARGE_UP */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_LEFT_QUARTER_BANKED_HELIX_LARGE_DOWN */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_RIGHT_QUARTER_BANKED_HELIX_LARGE_DOWN */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_LEFT_QUARTER_HELIX_LARGE_UP */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_HELIX,
/* TRACK_ELEM_RIGHT_QUARTER_HELIX_LARGE_UP */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_HELIX,
/* TRACK_ELEM_LEFT_QUARTER_HELIX_LARGE_DOWN */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_HELIX,
/* TRACK_ELEM_RIGHT_QUARTER_HELIX_LARGE_DOWN */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_HELIX,
/* TRACK_ELEM_25_DEG_UP_LEFT_BANKED */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_25_DEG_UP_RIGHT_BANKED */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_WATERFALL */ 0,
/* TRACK_ELEM_RAPIDS */ 0,
/* TRACK_ELEM_ON_RIDE_PHOTO */ TRACK_ELEM_FLAG_0200,
/* TRACK_ELEM_25_DEG_DOWN_LEFT_BANKED */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_25_DEG_DOWN_RIGHT_BANKED */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_WATER_SPLASH */ 0,
/* TRACK_ELEM_FLAT_TO_60_DEG_UP_LONG_BASE */ TRACK_ELEM_FLAG_UP,
/* TRACK_ELEM_60_DEG_UP_TO_FLAT_LONG_BASE */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100,
/* TRACK_ELEM_WHIRLPOOL */ 0,
/* TRACK_ELEM_FLAT_TO_60_DEG_DOWN_LONG_BASE */ TRACK_ELEM_FLAG_DOWN,
/* TRACK_ELEM_60_DEG_UP_TO_FLAT_LONG_BASE_122 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100,
/* TRACK_ELEM_CABLE_LIFT_HILL */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100,
/* TRACK_ELEM_REVERSE_WHOA_BELLY_SLOPE */ TRACK_ELEM_FLAG_UP,
/* TRACK_ELEM_REVERSE_WHOA_BELLY_VERTICAL */ TRACK_ELEM_FLAG_UP,
/* TRACK_ELEM_90_DEG_UP */ TRACK_ELEM_FLAG_UP,
/* TRACK_ELEM_90_DEG_DOWN */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_1000,
/* TRACK_ELEM_60_DEG_UP_TO_90_DEG_UP */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100,
/* TRACK_ELEM_90_DEG_DOWN_TO_60_DEG_DOWN */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_1000,
/* TRACK_ELEM_90_DEG_UP_TO_60_DEG_UP */ TRACK_ELEM_FLAG_UP,
/* TRACK_ELEM_60_DEG_DOWN_TO_90_DEG_DOWN */ TRACK_ELEM_FLAG_DOWN,
/* TRACK_ELEM_BRAKE_FOR_DROP */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100,
/* TRACK_ELEM_LEFT_EIGHTH_TO_DIAG */ TRACK_ELEM_FLAG_TURN_LEFT,
/* TRACK_ELEM_RIGHT_EIGHTH_TO_DIAG */ TRACK_ELEM_FLAG_TURN_RIGHT,
/* TRACK_ELEM_LEFT_EIGHTH_TO_ORTHOGONAL */ TRACK_ELEM_FLAG_TURN_LEFT,
/* TRACK_ELEM_RIGHT_EIGHTH_TO_ORTHOGONAL */ TRACK_ELEM_FLAG_TURN_RIGHT,
/* TRACK_ELEM_LEFT_EIGHTH_BANK_TO_DIAG */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_BANKED | TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_RIGHT_EIGHTH_BANK_TO_DIAG */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_BANKED | TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_LEFT_EIGHTH_BANK_TO_ORTHOGONAL */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_BANKED | TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_RIGHT_EIGHTH_BANK_TO_ORTHOGONAL */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_BANKED | TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_DIAG_FLAT */ TRACK_ELEM_FLAG_1000,
/* TRACK_ELEM_DIAG_25_DEG_UP */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_1000,
/* TRACK_ELEM_DIAG_60_DEG_UP */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_0400 | TRACK_ELEM_FLAG_1000,
/* TRACK_ELEM_DIAG_FLAT_TO_25_DEG_UP */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_1000,
/* TRACK_ELEM_DIAG_25_DEG_UP_TO_60_DEG_UP */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_0400 | TRACK_ELEM_FLAG_1000,
/* TRACK_ELEM_DIAG_60_DEG_UP_TO_25_DEG_UP */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_0400 | TRACK_ELEM_FLAG_1000,
/* TRACK_ELEM_DIAG_25_DEG_UP_TO_FLAT */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_1000,
/* TRACK_ELEM_DIAG_25_DEG_DOWN */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_1000,
/* TRACK_ELEM_DIAG_60_DEG_DOWN */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_1000,
/* TRACK_ELEM_DIAG_FLAT_TO_25_DEG_DOWN */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_1000,
/* TRACK_ELEM_DIAG_25_DEG_DOWN_TO_60_DEG_DOWN */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_1000,
/* TRACK_ELEM_DIAG_60_DEG_DOWN_TO_25_DEG_DOWN */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_1000,
/* TRACK_ELEM_DIAG_25_DEG_DOWN_TO_FLAT */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_1000,
/* TRACK_ELEM_DIAG_FLAT_TO_60_DEG_UP */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0400 | TRACK_ELEM_FLAG_1000,
/* TRACK_ELEM_DIAG_60_DEG_UP_TO_FLAT */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_0400 | TRACK_ELEM_FLAG_1000,
/* TRACK_ELEM_DIAG_FLAT_TO_60_DEG_DOWN */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_1000,
/* TRACK_ELEM_DIAG_60_DEG_DOWN_TO_FLAT */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_1000,
/* TRACK_ELEM_DIAG_FLAT_TO_LEFT_BANK */ TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_DIAG_FLAT_TO_RIGHT_BANK */ TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_DIAG_LEFT_BANK_TO_FLAT */ TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_DIAG_RIGHT_BANK_TO_FLAT */ TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_DIAG_LEFT_BANK_TO_25_DEG_UP */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_DIAG_RIGHT_BANK_TO_25_DEG_UP */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_DIAG_25_DEG_UP_TO_LEFT_BANK */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_DIAG_25_DEG_UP_TO_RIGHT_BANK */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_DIAG_LEFT_BANK_TO_25_DEG_DOWN */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_DIAG_RIGHT_BANK_TO_25_DEG_DOWN */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_DIAG_25_DEG_DOWN_TO_LEFT_BANK */ TRACK_ELEM_FLAG_DOWN,
/* TRACK_ELEM_DIAG_25_DEG_DOWN_TO_RIGHT_BANK */ TRACK_ELEM_FLAG_DOWN,
/* TRACK_ELEM_DIAG_LEFT_BANK */ TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_DIAG_RIGHT_BANK */ TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_LOG_FLUME_REVERSER */ TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_SPINNING_TUNNEL */ TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_LEFT_BARREL_ROLL_UP_TO_DOWN */ TRACK_ELEM_FLAG_INVERSION | TRACK_ELEM_FLAG_4000,
/* TRACK_ELEM_RIGHT_BARREL_ROLL_UP_TO_DOWN */ TRACK_ELEM_FLAG_INVERSION | TRACK_ELEM_FLAG_4000,
/* TRACK_ELEM_LEFT_BARREL_ROLL_DOWN_TO_UP */ TRACK_ELEM_FLAG_4000,
/* TRACK_ELEM_RIGHT_BARREL_ROLL_DOWN_TO_UP */ TRACK_ELEM_FLAG_4000,
/* TRACK_ELEM_LEFT_BANK_TO_LEFT_QUARTER_TURN_3_TILES_25_DEG_UP */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_RIGHT_BANK_TO_RIGHT_QUARTER_TURN_3_TILES_25_DEG_UP */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_LEFT_QUARTER_TURN_3_TILES_25_DEG_DOWN_TO_LEFT_BANK */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_RIGHT_QUARTER_TURN_3_TILES_25_DEG_DOWN_TO_RIGHT_BANK */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_POWERED_LIFT */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100,
/* TRACK_ELEM_LEFT_LARGE_HALF_LOOP_UP */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_INVERSION | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_4000,
/* TRACK_ELEM_RIGHT_LARGE_HALF_LOOP_UP */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_INVERSION | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_4000,
/* TRACK_ELEM_RIGHT_LARGE_HALF_LOOP_DOWN */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_4000,
/* TRACK_ELEM_LEFT_LARGE_HALF_LOOP_DOWN */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_4000,
/* TRACK_ELEM_LEFT_FLYER_TWIST_UP */ TRACK_ELEM_FLAG_INVERSION | TRACK_ELEM_FLAG_4000,
/* TRACK_ELEM_RIGHT_FLYER_TWIST_UP */ TRACK_ELEM_FLAG_INVERSION | TRACK_ELEM_FLAG_4000,
/* TRACK_ELEM_LEFT_FLYER_TWIST_DOWN */ TRACK_ELEM_FLAG_4000,
/* TRACK_ELEM_RIGHT_FLYER_TWIST_DOWN */ TRACK_ELEM_FLAG_4000,
/* TRACK_ELEM_FLYER_HALF_LOOP_UP */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_INVERSION | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_4000,
/* TRACK_ELEM_FLYER_HALF_LOOP_DOWN */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_4000,
/* TRACK_ELEM_LEFT_FLYER_CORKSCREW_UP */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_INVERSION | TRACK_ELEM_FLAG_4000,
/* TRACK_ELEM_RIGHT_FLYER_CORKSCREW_UP */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_INVERSION | TRACK_ELEM_FLAG_4000,
/* TRACK_ELEM_LEFT_FLYER_CORKSCREW_DOWN */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_4000,
/* TRACK_ELEM_RIGHT_FLYER_CORKSCREW_DOWN */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_4000,
/* TRACK_ELEM_HEARTLINE_TRANSFER_UP */ 0,
/* TRACK_ELEM_HEARTLINE_TRANSFER_DOWN */ 0,
/* TRACK_ELEM_LEFT_HEARTLINE_ROLL */ TRACK_ELEM_FLAG_INVERSION | TRACK_ELEM_FLAG_4000,
/* TRACK_ELEM_RIGHT_HEARTLINE_ROLL */ TRACK_ELEM_FLAG_INVERSION | TRACK_ELEM_FLAG_4000,
/* TRACK_ELEM_MINI_GOLF_HOLE_A */ TRACK_ELEM_FLAG_INVERSION,
/* TRACK_ELEM_MINI_GOLF_HOLE_B */ TRACK_ELEM_FLAG_INVERSION,
/* TRACK_ELEM_MINI_GOLF_HOLE_C */ TRACK_ELEM_FLAG_INVERSION,
/* TRACK_ELEM_MINI_GOLF_HOLE_D */ TRACK_ELEM_FLAG_INVERSION,
/* TRACK_ELEM_MINI_GOLF_HOLE_E */ TRACK_ELEM_FLAG_INVERSION,
/* TRACK_ELEM_MULTIDIM_INVERTED_FLAT_TO_90_DEG_QUARTER_LOOP_DOWN */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_4000,
/* TRACK_ELEM_90_DEG_TO_INVERTED_FLAT_QUARTER_LOOP_UP */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_INVERSION | TRACK_ELEM_FLAG_4000,
/* TRACK_ELEM_INVERTED_FLAT_TO_90_DEG_QUARTER_LOOP_DOWN */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_4000,
/* TRACK_ELEM_LEFT_CURVED_LIFT_HILL */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_UP,
/* TRACK_ELEM_RIGHT_CURVED_LIFT_HILL */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_UP,
/* TRACK_ELEM_LEFT_REVERSER */ 0,
/* TRACK_ELEM_RIGHT_REVERSER */ 0,
/* TRACK_ELEM_AIR_THRUST_TOP_CAP */ 0,
/* TRACK_ELEM_AIR_THRUST_VERTICAL_DOWN */ TRACK_ELEM_FLAG_DOWN,
/* TRACK_ELEM_AIR_THRUST_VERTICAL_DOWN_TO_LEVEL */ TRACK_ELEM_FLAG_DOWN,
/* TRACK_ELEM_BLOCK_BRAKES */ 0,
/* TRACK_ELEM_LEFT_BANKED_QUARTER_TURN_3_TILE_25_DEG_UP */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_RIGHT_BANKED_QUARTER_TURN_3_TILE_25_DEG_UP */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_LEFT_BANKED_QUARTER_TURN_3_TILE_25_DEG_DOWN */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_RIGHT_BANKED_QUARTER_TURN_3_TILE_25_DEG_DOWN */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_LEFT_BANKED_QUARTER_TURN_5_TILE_25_DEG_UP */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_RIGHT_BANKED_QUARTER_TURN_5_TILE_25_DEG_UP */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_LEFT_BANKED_QUARTER_TURN_5_TILE_25_DEG_DOWN */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_RIGHT_BANKED_QUARTER_TURN_5_TILE_25_DEG_DOWN */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_25_DEG_UP_TO_LEFT_BANKED_25_DEG_UP */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_25_DEG_UP_TO_RIGHT_BANKED_25_DEG_UP */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_LEFT_BANKED_25_DEG_UP_TO_25_DEG_UP */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_RIGHT_BANKED_25_DEG_UP_TO_25_DEG_UP */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_25_DEG_DOWN_TO_LEFT_BANKED_25_DEG_DOWN */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_25_DEG_DOWN_TO_RIGHT_BANKED_25_DEG_DOWN */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_LEFT_BANKED_25_DEG_DOWN_TO_25_DEG_DOWN */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_RIGHT_BANKED_25_DEG_DOWN_TO_25_DEG_DOWN */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_LEFT_BANKED_FLAT_TO_LEFT_BANKED_25_DEG_UP */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_RIGHT_BANKED_FLAT_TO_RIGHT_BANKED_25_DEG_UP */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_LEFT_BANKED_25_DEG_UP_TO_LEFT_BANKED_FLAT */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_RIGHT_BANKED_25_DEG_UP_TO_RIGHT_BANKED_FLAT */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_LEFT_BANKED_FLAT_TO_LEFT_BANKED_25_DEG_DOWN */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_RIGHT_BANKED_FLAT_TO_RIGHT_BANKED_25_DEG_DOWN */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_LEFT_BANKED_25_DEG_DOWN_TO_LEFT_BANKED_FLAT */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_RIGHT_BANKED_25_DEG_DOWN_TO_RIGHT_BANKED_FLAT */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_FLAT_TO_LEFT_BANKED_25_DEG_UP */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_FLAT_TO_RIGHT_BANKED_25_DEG_UP */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_LEFT_BANKED_25_DEG_UP_TO_FLAT */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_RIGHT_BANKED_25_DEG_UP_TO_FLAT */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_FLAT_TO_LEFT_BANKED_25_DEG_DOWN */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_FLAT_TO_RIGHT_BANKED_25_DEG_DOWN */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_LEFT_BANKED_25_DEG_DOWN_TO_FLAT */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_RIGHT_BANKED_25_DEG_DOWN_TO_FLAT */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_LEFT_QUARTER_TURN_1_TILE_90_DEG_UP */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP,
/* TRACK_ELEM_RIGHT_QUARTER_TURN_1_TILE_90_DEG_UP */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP,
/* TRACK_ELEM_LEFT_QUARTER_TURN_1_TILE_90_DEG_DOWN */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN,
/* TRACK_ELEM_RIGHT_QUARTER_TURN_1_TILE_90_DEG_DOWN */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN,
/* TRACK_ELEM_MULTIDIM_90_DEG_UP_TO_INVERTED_FLAT_QUARTER_LOOP */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_INVERSION | TRACK_ELEM_FLAG_4000,
/* TRACK_ELEM_MULTIDIM_FLAT_TO_90_DEG_DOWN_QUARTER_LOOP */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_4000,
/* */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_INVERSION | TRACK_ELEM_FLAG_4000,
};

View File

@ -82,3 +82,6 @@ extern const uint32 TrackHeightMarkerPositions[256];
extern const uint8 TrackSequenceElementAllowedWallEdges[256][16];
extern const uint8 FlatRideTrackSequenceElementAllowedWallEdges[256][16];
extern const uint16 FlatTrackFlags[256];
extern const uint16 TrackFlags[256];

View File

@ -1138,7 +1138,7 @@ static void vehicle_update_measurements(rct_vehicle *vehicle)
}
// ax
uint16 track_flags = RCT2_ADDRESS(0x0099423C, uint16)[track_elem_type];
uint16 track_flags = TrackFlags[track_elem_type];
uint32 testing_flags = ride->testing_flags;
if (testing_flags & RIDE_TESTING_TURN_LEFT &&
@ -7486,7 +7486,7 @@ static bool vehicle_update_track_motion_backwards_get_new_track(rct_vehicle *veh
if (RCT2_GLOBAL(0x00F64E08, sint32) < 0) {
if (vehicle->next_vehicle_on_train == SPRITE_INDEX_NULL) {
trackType = mapElement->properties.track.type;
if (!(RCT2_ADDRESS(0x0099423C, uint16)[trackType] & 0x20)) {
if (!(TrackFlags[trackType] & TRACK_ELEM_FLAG_DOWN)) {
RCT2_GLOBAL(0x00F64E18, uint32) |= VEHICLE_UPDATE_MOTION_TRACK_FLAG_9;
}
}

View File

@ -2642,12 +2642,12 @@ static bool sub_6CA2DF(int *_trackType, int *_trackDirection, int *_rideIndex, i
bool do_loc_6CAF26 = false;
if (!(_enabledRidePieces.a & (1 << 5))) {
if (RCT2_ADDRESS(0x0099423C, uint16)[trackType] & 0x2000) {
if (TrackFlags[trackType] & TRACK_ELEM_FLAG_2000) {
do_loc_6CAF26 = true;
}
}
if (!(RCT2_ADDRESS(0x0099423C, uint16)[trackType] & 0x1000)) {
if (!(TrackFlags[trackType] & TRACK_ELEM_FLAG_1000)) {
do_loc_6CAF26 = true;
}