diff --git a/src/openrct2/ride/TrackData.cpp b/src/openrct2/ride/TrackData.cpp index bcd135bf53..52012088a1 100644 --- a/src/openrct2/ride/TrackData.cpp +++ b/src/openrct2/ride/TrackData.cpp @@ -21,917 +21,917 @@ using namespace OpenRCT2; namespace OpenRCT2::TrackMetaData { // clang-format off - static constexpr TrackCoordinates _trackCoordinates[] = { - { 0, 0, 0, 0, 0, 0 }, // ELEM_FLAT - { 0, 0, 0, 0, 0, 0 }, // ELEM_END_STATION - { 0, 0, 0, 0, 0, 0 }, // ELEM_BEGIN_STATION - { 0, 0, 0, 0, 0, 0 }, // ELEM_MIDDLE_STATION - { 0, 0, 0, 16, 0, 0 }, // ELEM_25_DEG_UP - { 0, 0, 0, 64, 0, 0 }, // ELEM_60_DEG_UP - { 0, 0, 0, 8, 0, 0 }, // ELEM_FLAT_TO_25_DEG_UP - { 0, 0, 0, 32, 0, 0 }, // ELEM_25_DEG_UP_TO_60_DEG_UP - { 0, 0, 0, 32, 0, 0 }, // ELEM_60_DEG_UP_TO_25_DEG_UP - { 0, 0, 0, 8, 0, 0 }, // ELEM_25_DEG_UP_TO_FLAT - { 0, 0, 16, 0, 0, 0 }, // ELEM_25_DEG_DOWN - { 0, 0, 64, 0, 0, 0 }, // ELEM_60_DEG_DOWN - { 0, 0, 8, 0, 0, 0 }, // ELEM_FLAT_TO_25_DEG_DOWN - { 0, 0, 32, 0, 0, 0 }, // ELEM_25_DEG_DOWN_TO_60_DEG_DOWN - { 0, 0, 32, 0, 0, 0 }, // ELEM_60_DEG_DOWN_TO_25_DEG_DOWN - { 0, 0, 8, 0, 0, 0 }, // ELEM_25_DEG_DOWN_TO_FLAT - { 0, 3, 0, 0, -64, -64 }, // ELEM_LEFT_QUARTER_TURN_5_TILES - { 0, 1, 0, 0, -64, 64 }, // ELEM_RIGHT_QUARTER_TURN_5_TILES - { 0, 0, 0, 0, 0, 0 }, // ELEM_FLAT_TO_LEFT_BANK - { 0, 0, 0, 0, 0, 0 }, // ELEM_FLAT_TO_RIGHT_BANK - { 0, 0, 0, 0, 0, 0 }, // ELEM_LEFT_BANK_TO_FLAT - { 0, 0, 0, 0, 0, 0 }, // ELEM_RIGHT_BANK_TO_FLAT - { 0, 3, 0, 0, -64, -64 }, // ELEM_BANKED_LEFT_QUARTER_TURN_5_TILES - { 0, 1, 0, 0, -64, 64 }, // ELEM_BANKED_RIGHT_QUARTER_TURN_5_TILES - { 0, 0, 0, 8, 0, 0 }, // ELEM_LEFT_BANK_TO_25_DEG_UP - { 0, 0, 0, 8, 0, 0 }, // ELEM_RIGHT_BANK_TO_25_DEG_UP - { 0, 0, 0, 8, 0, 0 }, // ELEM_25_DEG_UP_TO_LEFT_BANK - { 0, 0, 0, 8, 0, 0 }, // ELEM_25_DEG_UP_TO_RIGHT_BANK - { 0, 0, 8, 0, 0, 0 }, // ELEM_LEFT_BANK_TO_25_DEG_DOWN - { 0, 0, 8, 0, 0, 0 }, // ELEM_RIGHT_BANK_TO_25_DEG_DOWN - { 0, 0, 8, 0, 0, 0 }, // ELEM_25_DEG_DOWN_TO_LEFT_BANK - { 0, 0, 8, 0, 0, 0 }, // ELEM_25_DEG_DOWN_TO_RIGHT_BANK - { 0, 0, 0, 0, 0, 0 }, // ELEM_LEFT_BANK - { 0, 0, 0, 0, 0, 0 }, // ELEM_RIGHT_BANK - { 0, 3, 0, 64, -64, -64 }, // ELEM_LEFT_QUARTER_TURN_5_TILES_25_DEG_UP - { 0, 1, 0, 64, -64, 64 }, // ELEM_RIGHT_QUARTER_TURN_5_TILES_25_DEG_UP - { 0, 3, 64, 0, -64, -64 }, // ELEM_LEFT_QUARTER_TURN_5_TILES_25_DEG_DOWN - { 0, 1, 64, 0, -64, 64 }, // ELEM_RIGHT_QUARTER_TURN_5_TILES_25_DEG_DOWN - { 0, 0, 0, 0, -64, -32 }, // ELEM_S_BEND_LEFT - { 0, 0, 0, 0, -64, 32 }, // ELEM_S_BEND_RIGHT - { 0, 0, 0, 0, -32, -32 }, // ELEM_LEFT_VERTICAL_LOOP - { 0, 0, 0, 0, -32, 32 }, // ELEM_RIGHT_VERTICAL_LOOP - { 0, 3, 0, 0, -32, -32 }, // ELEM_LEFT_QUARTER_TURN_3_TILES - { 0, 1, 0, 0, -32, 32 }, // ELEM_RIGHT_QUARTER_TURN_3_TILES - { 0, 3, 0, 0, -32, -32 }, // ELEM_LEFT_QUARTER_TURN_3_TILES_BANK - { 0, 1, 0, 0, -32, 32 }, // ELEM_RIGHT_QUARTER_TURN_3_TILES_BANK - { 0, 3, 0, 32, -32, -32 }, // ELEM_LEFT_QUARTER_TURN_3_TILES_25_DEG_UP - { 0, 1, 0, 32, -32, 32 }, // ELEM_RIGHT_QUARTER_TURN_3_TILES_25_DEG_UP - { 0, 3, 32, 0, -32, -32 }, // ELEM_LEFT_QUARTER_TURN_3_TILES_25_DEG_DOWN - { 0, 1, 32, 0, -32, 32 }, // ELEM_RIGHT_QUARTER_TURN_3_TILES_25_DEG_DOWN - { 0, 3, 0, 0, 0, 0 }, // ELEM_LEFT_QUARTER_TURN_1_TILE - { 0, 1, 0, 0, 0, 0 }, // ELEM_RIGHT_QUARTER_TURN_1_TILE - { 0, 0, 0, 16, -64, 0 }, // ELEM_LEFT_TWIST_DOWN_TO_UP - { 0, 0, 0, 16, -64, 0 }, // ELEM_RIGHT_TWIST_DOWN_TO_UP - { 0, 0, 0, -16, -64, 0 }, // ELEM_LEFT_TWIST_UP_TO_DOWN - { 0, 0, 0, -16, -64, 0 }, // ELEM_RIGHT_TWIST_UP_TO_DOWN - { 0, 2, 0, 152, -32, 0 }, // ELEM_HALF_LOOP_UP - { 0, 2, 0, -152, 32, 0 }, // ELEM_HALF_LOOP_DOWN - { 0, 3, 0, 80, -32, -32 }, // ELEM_LEFT_CORKSCREW_UP - { 0, 1, 0, 80, -32, 32 }, // ELEM_RIGHT_CORKSCREW_UP - { 0, 3, 0, -80, -32, -32 }, // ELEM_LEFT_CORKSCREW_DOWN - { 0, 1, 0, -80, -32, 32 }, // ELEM_RIGHT_CORKSCREW_DOWN - { 0, 0, 0, 24, 0, 0 }, // ELEM_FLAT_TO_60_DEG_UP - { 0, 0, 0, 24, 0, 0 }, // ELEM_60_DEG_UP_TO_FLAT - { 0, 0, 24, 0, 0, 0 }, // ELEM_FLAT_TO_60_DEG_DOWN - { 0, 0, 24, 0, 0, 0 }, // ELEM_60_DEG_DOWN_TO_FLAT - { 0, 0, 0, 96, 32, 0 }, // ELEM_TOWER_BASE - { 0, 0, 0, 32, 32, 0 }, // ELEM_TOWER_SECTION - { 0, 0, 0, 0, 0, 0 }, // ELEM_FLAT_COVERED - { 0, 0, 0, 16, 0, 0 }, // ELEM_25_DEG_UP_COVERED - { 0, 0, 0, 64, 0, 0 }, // ELEM_60_DEG_UP_COVERED - { 0, 0, 0, 8, 0, 0 }, // ELEM_FLAT_TO_25_DEG_UP_COVERED - { 0, 0, 0, 32, 0, 0 }, // ELEM_25_DEG_UP_TO_60_DEG_UP_COVERED - { 0, 0, 0, 32, 0, 0 }, // ELEM_60_DEG_UP_TO_25_DEG_UP_COVERED - { 0, 0, 0, 8, 0, 0 }, // ELEM_25_DEG_UP_TO_FLAT_COVERED - { 0, 0, 16, 0, 0, 0 }, // ELEM_25_DEG_DOWN_COVERED - { 0, 0, 64, 0, 0, 0 }, // ELEM_60_DEG_DOWN_COVERED - { 0, 0, 8, 0, 0, 0 }, // ELEM_FLAT_TO_25_DEG_DOWN_COVERED - { 0, 0, 32, 0, 0, 0 }, // ELEM_25_DEG_DOWN_TO_60_DEG_DOWN_COVERED - { 0, 0, 32, 0, 0, 0 }, // ELEM_60_DEG_DOWN_TO_25_DEG_DOWN_COVERED - { 0, 0, 8, 0, 0, 0 }, // ELEM_25_DEG_DOWN_TO_FLAT_COVERED - { 0, 3, 0, 0, -64, -64 }, // ELEM_LEFT_QUARTER_TURN_5_TILES_COVERED - { 0, 1, 0, 0, -64, 64 }, // ELEM_RIGHT_QUARTER_TURN_5_TILES_COVERED - { 0, 0, 0, 0, -64, -32 }, // ELEM_S_BEND_LEFT_COVERED - { 0, 0, 0, 0, -64, 32 }, // ELEM_S_BEND_RIGHT_COVERED - { 0, 3, 0, 0, -32, -32 }, // ELEM_LEFT_QUARTER_TURN_3_TILES_COVERED - { 0, 1, 0, 0, -32, 32 }, // ELEM_RIGHT_QUARTER_TURN_3_TILES_COVERED - { 0, 2, 0, 16, 0, -96 }, // ELEM_LEFT_HALF_BANKED_HELIX_UP_SMALL - { 0, 2, 0, 16, 0, 96 }, // ELEM_RIGHT_HALF_BANKED_HELIX_UP_SMALL - { 0, 2, 16, 0, 0, -96 }, // ELEM_LEFT_HALF_BANKED_HELIX_DOWN_SMALL - { 0, 2, 16, 0, 0, 96 }, // ELEM_RIGHT_HALF_BANKED_HELIX_DOWN_SMALL - { 0, 2, 0, 16, 0, -160 }, // ELEM_LEFT_HALF_BANKED_HELIX_UP_LARGE - { 0, 2, 0, 16, 0, 160 }, // ELEM_RIGHT_HALF_BANKED_HELIX_UP_LARGE - { 0, 2, 16, 0, 0, -160 }, // ELEM_LEFT_HALF_BANKED_HELIX_DOWN_LARGE - { 0, 2, 16, 0, 0, 160 }, // ELEM_RIGHT_HALF_BANKED_HELIX_DOWN_LARGE - { 0, 3, 0, 64, 0, 0 }, // ELEM_LEFT_QUARTER_TURN_1_TILE_60_DEG_UP - { 0, 1, 0, 64, 0, 0 }, // ELEM_RIGHT_QUARTER_TURN_1_TILE_60_DEG_UP - { 0, 3, 64, 0, 0, 0 }, // ELEM_LEFT_QUARTER_TURN_1_TILE_60_DEG_DOWN - { 0, 1, 64, 0, 0, 0 }, // ELEM_RIGHT_QUARTER_TURN_1_TILE_60_DEG_DOWN - { 0, 0, 0, 0, 0, 0 }, // ELEM_BRAKES - { 0, 0, 0, 0, 0, 0 }, // ELEM_ROTATION_CONTROL_TOGGLE - { 0, 0, 0, 0, 0, 0 }, // ELEM_INVERTED_90_DEG_UP_TO_FLAT_QUARTER_LOOP - { 0, 3, 0, 16, -64, -64 }, // ELEM_LEFT_QUARTER_BANKED_HELIX_LARGE_UP - { 0, 1, 0, 16, -64, 64 }, // ELEM_RIGHT_QUARTER_BANKED_HELIX_LARGE_UP - { 0, 3, 16, 0, -64, -64 }, // ELEM_LEFT_QUARTER_BANKED_HELIX_LARGE_DOWN - { 0, 1, 16, 0, -64, 64 }, // ELEM_RIGHT_QUARTER_BANKED_HELIX_LARGE_DOWN - { 0, 3, 0, 16, -64, -64 }, // ELEM_LEFT_QUARTER_HELIX_LARGE_UP - { 0, 1, 0, 16, -64, 64 }, // ELEM_RIGHT_QUARTER_HELIX_LARGE_UP - { 0, 3, 16, 0, -64, -64 }, // ELEM_LEFT_QUARTER_HELIX_LARGE_DOWN - { 0, 1, 16, 0, -64, 64 }, // ELEM_RIGHT_QUARTER_HELIX_LARGE_DOWN - { 0, 0, 0, 16, 0, 0 }, // ELEM_25_DEG_UP_LEFT_BANKED - { 0, 0, 0, 16, 0, 0 }, // ELEM_25_DEG_UP_RIGHT_BANKED - { 0, 0, 0, 0, 0, 0 }, // ELEM_WATERFALL - { 0, 0, 0, 0, 0, 0 }, // ELEM_RAPIDS - { 0, 0, 0, 0, 0, 0 }, // ELEM_ON_RIDE_PHOTO - { 0, 0, 16, 0, 0, 0 }, // ELEM_25_DEG_DOWN_LEFT_BANKED - { 0, 0, 16, 0, 0, 0 }, // ELEM_25_DEG_DOWN_RIGHT_BANKED - { 0, 0, 16, 16, -128, 0 }, // ELEM_WATER_SPLASH - { 0, 0, 0, 88, -96, 0 }, // ELEM_FLAT_TO_60_DEG_UP_LONG_BASE - { 0, 0, 0, 88, -96, 0 }, // ELEM_60_DEG_UP_TO_FLAT_LONG_BASE - { 0, 0, 0, 0, 0, 0 }, // ELEM_WHIRLPOOL - { 0, 0, 88, 0, -96, 0 }, // ELEM_60_DEG_DOWN_TO_FLAT_LONG_BASE - { 0, 0, 88, 0, -96, 0 }, // ELEM_FLAT_TO_60_DEG_DOWN_LONG_BASE - { 0, 0, 0, -96, -96, 0 }, // ELEM_CABLE_LIFT_HILL - { 0, 0, 0, 240, -160, 0 }, // ELEM_REVERSE_FREEFALL_SLOPE - { 0, 0, 0, 80, 32, 0 }, // ELEM_REVERSE_FREEFALL_VERTICAL - { 0, 0, 0, 32, 32, 0 }, // ELEM_90_DEG_UP - { 0, 0, 32, 0, 32, 0 }, // ELEM_90_DEG_DOWN - { 0, 0, 0, 56, 32, 0 }, // ELEM_60_DEG_UP_TO_90_DEG_UP - { 0, 0, 56, 0, 0, 0 }, // ELEM_90_DEG_DOWN_TO_60_DEG_DOWN - { 0, 0, 0, 56, 0, 0 }, // ELEM_90_DEG_UP_TO_60_DEG_UP - { 0, 0, 56, 0, 32, 0 }, // ELEM_60_DEG_DOWN_TO_90_DEG_DOWN - { 0, 0, 24, 0, 0, 0 }, // ELEM_BRAKE_FOR_DROP - { 0, 7, 0, 0, -64, -32 }, // ELEM_LEFT_EIGHTH_TO_DIAG - { 0, 4, 0, 0, -64, 32 }, // ELEM_RIGHT_EIGHTH_TO_DIAG - { 4, 0, 0, 0, -64, 32 }, // ELEM_LEFT_EIGHTH_TO_ORTHOGONAL - { 4, 1, 0, 0, -32, 64 }, // ELEM_RIGHT_EIGHTH_TO_ORTHOGONAL - { 0, 7, 0, 0, -64, -32 }, // ELEM_LEFT_EIGHTH_BANK_TO_DIAG - { 0, 4, 0, 0, -64, 32 }, // ELEM_RIGHT_EIGHTH_BANK_TO_DIAG - { 4, 0, 0, 0, -64, 32 }, // ELEM_LEFT_EIGHTH_BANK_TO_ORTHOGONAL - { 4, 1, 0, 0, -32, 64 }, // ELEM_RIGHT_EIGHTH_BANK_TO_ORTHOGONAL - { 4, 4, 0, 0, -32, 32 }, // ELEM_DIAG_FLAT - { 4, 4, 0, 16, -32, 32 }, // ELEM_DIAG_25_DEG_UP - { 4, 4, 0, 64, -32, 32 }, // ELEM_DIAG_60_DEG_UP - { 4, 4, 0, 8, -32, 32 }, // ELEM_DIAG_FLAT_TO_25_DEG_UP - { 4, 4, 0, 32, -32, 32 }, // ELEM_DIAG_25_DEG_UP_TO_60_DEG_UP - { 4, 4, 0, 32, -32, 32 }, // ELEM_DIAG_60_DEG_UP_TO_25_DEG_UP - { 4, 4, 0, 8, -32, 32 }, // ELEM_DIAG_25_DEG_UP_TO_FLAT - { 4, 4, 16, 0, -32, 32 }, // ELEM_DIAG_25_DEG_DOWN - { 4, 4, 64, 0, -32, 32 }, // ELEM_DIAG_60_DEG_DOWN - { 4, 4, 8, 0, -32, 32 }, // ELEM_DIAG_FLAT_TO_25_DEG_DOWN - { 4, 4, 32, 0, -32, 32 }, // ELEM_DIAG_25_DEG_DOWN_TO_60_DEG_DOWN - { 4, 4, 32, 0, -32, 32 }, // ELEM_DIAG_60_DEG_DOWN_TO_25_DEG_DOWN - { 4, 4, 8, 0, -32, 32 }, // ELEM_DIAG_25_DEG_DOWN_TO_FLAT - { 4, 4, 0, 24, -32, 32 }, // ELEM_DIAG_FLAT_TO_60_DEG_UP - { 4, 4, 0, 24, -32, 32 }, // ELEM_DIAG_60_DEG_UP_TO_FLAT - { 4, 4, 24, 0, -32, 32 }, // ELEM_DIAG_FLAT_TO_60_DEG_DOWN - { 4, 4, 24, 0, -32, 32 }, // ELEM_DIAG_60_DEG_DOWN_TO_FLAT - { 4, 4, 0, 0, -32, 32 }, // ELEM_DIAG_FLAT_TO_LEFT_BANK - { 4, 4, 0, 0, -32, 32 }, // ELEM_DIAG_FLAT_TO_RIGHT_BANK - { 4, 4, 0, 0, -32, 32 }, // ELEM_DIAG_LEFT_BANK_TO_FLAT - { 4, 4, 0, 0, -32, 32 }, // ELEM_DIAG_RIGHT_BANK_TO_FLAT - { 4, 4, 0, 8, -32, 32 }, // ELEM_DIAG_LEFT_BANK_TO_25_DEG_UP - { 4, 4, 0, 8, -32, 32 }, // ELEM_DIAG_RIGHT_BANK_TO_25_DEG_UP - { 4, 4, 0, 8, -32, 32 }, // ELEM_DIAG_25_DEG_UP_TO_LEFT_BANK - { 4, 4, 0, 8, -32, 32 }, // ELEM_DIAG_25_DEG_UP_TO_RIGHT_BANK - { 4, 4, 8, 0, -32, 32 }, // ELEM_DIAG_LEFT_BANK_TO_25_DEG_DOWN - { 4, 4, 8, 0, -32, 32 }, // ELEM_DIAG_RIGHT_BANK_TO_25_DEG_DOWN - { 4, 4, 8, 0, -32, 32 }, // ELEM_DIAG_25_DEG_DOWN_TO_LEFT_BANK - { 4, 4, 8, 0, -32, 32 }, // ELEM_DIAG_25_DEG_DOWN_TO_RIGHT_BANK - { 4, 4, 0, 0, -32, 32 }, // ELEM_DIAG_LEFT_BANK - { 4, 4, 0, 0, -32, 32 }, // ELEM_DIAG_RIGHT_BANK - { 0, 0, 0, 0, 0, 0 }, // ELEM_LOG_FLUME_REVERSER - { 0, 0, 0, 0, 0, 0 }, // ELEM_SPINNING_TUNNEL - { 0, 0, 0, 32, -64, 0 }, // ELEM_LEFT_BARREL_ROLL_UP_TO_DOWN - { 0, 0, 0, 32, -64, 0 }, // ELEM_RIGHT_BARREL_ROLL_UP_TO_DOWN - { 0, 0, 0, -32, -64, 0 }, // ELEM_LEFT_BARREL_ROLL_DOWN_TO_UP - { 0, 0, 0, -32, -64, 0 }, // ELEM_RIGHT_BARREL_ROLL_DOWN_TO_UP - { 0, 3, 0, 24, -32, -32 }, // ELEM_LEFT_BANK_TO_LEFT_QUARTER_TURN_3_TILES_25_DEG_UP - { 0, 1, 0, 24, -32, 32 }, // ELEM_RIGHT_BANK_TO_RIGHT_QUARTER_TURN_3_TILES_25_DEG_UP - { 0, 3, 24, 0, -32, -32 }, // ELEM_LEFT_QUARTER_TURN_3_TILES_25_DEG_DOWN_TO_LEFT_BANK - { 0, 1, 24, 0, -32, 32 }, // ELEM_RIGHT_QUARTER_TURN_3_TILES_25_DEG_DOWN_TO_RIGHT_BANK - { 0, 0, 0, 16, 0, 0 }, // ELEM_POWERED_LIFT - { 0, 2, 0, 280, -64, -32 }, // ELEM_LEFT_LARGE_HALF_LOOP_UP - { 0, 2, 0, 280, -64, 32 }, // ELEM_RIGHT_LARGE_HALF_LOOP_UP - { 0, 2, 0, -280, 64, -32 }, // ELEM_RIGHT_LARGE_HALF_LOOP_DOWN - { 0, 2, 0, -280, 64, 32 }, // ELEM_LEFT_LARGE_HALF_LOOP_DOWN - { 0, 0, 0, -16, -64, 0 }, // ELEM_LEFT_FLYER_TWIST_UP_TO_DOWN - { 0, 0, 0, -16, -64, 0 }, // ELEM_RIGHT_FLYER_TWIST_UP_TO_DOWN - { 0, 0, 0, 16, -64, 0 }, // ELEM_LEFT_FLYER_TWIST_DOWN_TO_UP - { 0, 0, 0, 16, -64, 0 }, // ELEM_RIGHT_FLYER_TWIST_DOWN_TO_UP - { 0, 2, 0, 120, -32, 0 }, // ELEM_FLYER_HALF_LOOP_UP - { 0, 2, 0, -120, 32, 0 }, // ELEM_FLYER_HALF_LOOP_DOWN - { 0, 3, 0, 48, -32, -32 }, // ELEM_LEFT_FLY_CORKSCREW_UP_TO_DOWN - { 0, 1, 0, 48, -32, 32 }, // ELEM_RIGHT_FLY_CORKSCREW_UP_TO_DOWN - { 0, 3, 0, -48, -32, -32 }, // ELEM_LEFT_FLY_CORKSCREW_DOWN_TO_UP - { 0, 1, 0, -48, -32, 32 }, // ELEM_RIGHT_FLY_CORKSCREW_DOWN_TO_UP - { 0, 2, 0, 32, 0, 0 }, // ELEM_HEARTLINE_TRANSFER_UP - { 0, 2, 0, -32, 0, 0 }, // ELEM_HEARTLINE_TRANSFER_DOWN - { 0, 0, 0, 0, -160, 0 }, // ELEM_LEFT_HEARTLINE_ROLL - { 0, 0, 0, 0, -160, 0 }, // ELEM_RIGHT_HEARTLINE_ROLL - { 0, 0, 0, 0, -32, 0 }, // ELEM_MINI_GOLF_HOLE_A - { 0, 0, 0, 0, -32, 0 }, // ELEM_MINI_GOLF_HOLE_B - { 0, 0, 0, 0, -32, 0 }, // ELEM_MINI_GOLF_HOLE_C - { 0, 1, 0, 0, -32, 32 }, // ELEM_MINI_GOLF_HOLE_D - { 0, 3, 0, 0, -32, -32 }, // ELEM_MINI_GOLF_HOLE_E - { 0, 2, 0, -96, -96, 0 }, // ELEM_INVERTED_FLAT_TO_90_DEG_DOWN_QUARTER_LOOP - { 0, 2, 0, 128, 64, 0 }, // ELEM_90_DEG_UP_QUARTER_LOOP_TO_INVERTED - { 0, 2, 0, -128, -96, 0 }, // ELEM_QUARTER_LOOP_INVERT_TO_90_DEG_DOWN - { 0, 3, 0, 16, -32, -32 }, // ELEM_LEFT_CURVED_LIFT_HILL - { 0, 1, 0, 16, -32, 32 }, // ELEM_RIGHT_CURVED_LIFT_HILL - { 0, 0, 0, 0, -64, 0 }, // ELEM_LEFT_REVERSER - { 0, 0, 0, 0, -64, 0 }, // ELEM_RIGHT_REVERSER - { 0, 0, 0, 0, -32, 0 }, // ELEM_AIR_THRUST_TOP_CAP - { 0, 0, 80, 0, 32, 0 }, // ELEM_AIR_THRUST_VERTICAL_DOWN - { 0, 0, 240, 0, -160, 0 }, // ELEM_AIR_THRUST_VERTICAL_DOWN_TO_LEVEL - { 0, 0, 0, 0, 0, 0 }, // ELEM_BLOCK_BRAKES - { 0, 3, 0, 32, -32, -32 }, // ELEM_BANKED_LEFT_QUARTER_TURN_3_TILES_25_DEG_UP - { 0, 1, 0, 32, -32, 32 }, // ELEM_BANKED_RIGHT_QUARTER_TURN_3_TILES_25_DEG_UP - { 0, 3, 32, 0, -32, -32 }, - { 0, 1, 32, 0, -32, 32 }, - { 0, 3, 0, 64, -64, -64 }, - { 0, 1, 0, 64, -64, 64 }, - { 0, 3, 64, 0, -64, -64 }, - { 0, 1, 64, 0, -64, 64 }, - { 0, 0, 0, 16, 0, 0 }, - { 0, 0, 0, 16, 0, 0 }, - { 0, 0, 0, 16, 0, 0 }, - { 0, 0, 0, 16, 0, 0 }, - { 0, 0, 16, 0, 0, 0 }, - { 0, 0, 16, 0, 0, 0 }, - { 0, 0, 16, 0, 0, 0 }, - { 0, 0, 16, 0, 0, 0 }, - { 0, 0, 0, 8, 0, 0 }, - { 0, 0, 0, 8, 0, 0 }, - { 0, 0, 0, 8, 0, 0 }, - { 0, 0, 0, 8, 0, 0 }, - { 0, 0, 8, 0, 0, 0 }, - { 0, 0, 8, 0, 0, 0 }, - { 0, 0, 8, 0, 0, 0 }, - { 0, 0, 8, 0, 0, 0 }, - { 0, 0, 0, 8, 0, 0 }, - { 0, 0, 0, 8, 0, 0 }, - { 0, 0, 0, 8, 0, 0 }, - { 0, 0, 0, 8, 0, 0 }, - { 0, 0, 8, 0, 0, 0 }, - { 0, 0, 8, 0, 0, 0 }, - { 0, 0, 8, 0, 0, 0 }, - { 0, 0, 8, 0, 0, 0 }, - { 0, 3, 0, 96, 0, 32 }, - { 0, 1, 0, 96, 0, -32 }, - { 0, 3, 96, 0, 0, 32 }, - { 0, 1, 96, 0, 0, -32 }, - { 0, 2, 0, 96, 64, 0 }, - { 0, 2, 0, -128, -96, 0 }, - { 0, 2, 0, 128, 64, 0 }, - { 0, 0, 0, 0, 0, 0 }, - { 0, 2, 0, 0, 0, 32 }, // TrackElemType::FlatTrack1x4A - { 0, 2, 0, 0, 0, 32 }, // TrackElemType::FlatTrack2x2 - { 0, 2, 0, 0, 0, 32 }, // TrackElemType::FlatTrack4x4 - { 0, 2, 0, 0, 0, 32 }, // TrackElemType::FlatTrack2x4 - { 0, 2, 0, 0, 0, 32 }, // TrackElemType::FlatTrack1x5 - { 0, 2, 0, 0, 0, 32 }, // TrackElemType::FlatTrack1x1A - { 0, 2, 0, 0, 0, 32 }, // TrackElemType::FlatTrack1x4B - { 0, 2, 0, 0, 0, 32 }, // TrackElemType::FlatTrack1x1B - { 0, 2, 0, 0, 0, 32 }, // TrackElemType::FlatTrack1x4C - { 0, 0, 0, 96, 32, 0 }, // TrackElemType::FlatTrack3x3 - { 0, 3, 0, 112, -64, -64 }, // TrackElemType::LeftCorkscrewUp - { 0, 1, 0, 112, -64, 64 }, // TrackElemType::RightCorkscrewUp - { 0, 3, 0, -112, -64, -64 }, // TrackElemType::LeftCorkscrewDown - { 0, 1, 0, -112, -64, 64 }, // TrackElemType::RightCorkscrewDown - { 0, 2, 0, 216, -32, -32 }, // TrackElemType::LeftMediumHalfLoopUp - { 0, 2, 0, 216, -32, 32 }, // TrackElemType::RightMediumHalfLoopUp - { 0, 2, 0, -216, 32, -32 }, // TrackElemType::LeftMediumHalfLoopDown - { 0, 2, 0, -216, 32, 32 }, // TrackElemType::RightMediumHalfLoopDown - { 0, 0, 0, 56, -64, 0 }, // TrackElemType::LeftZeroGRollUp - { 0, 0, 0, 56, -64, 0 }, // TrackElemType::RightZeroGRollUp - { 0, 0, 0, -56,-64, 0 }, // TrackElemType::LeftZeroGRollDown - { 0, 0, 0, -56,-64, 0 }, // TrackElemType::RightZeroGRollDown - { 0, 0, 0, 152, -96, 0 }, // TrackElemType::LeftLargeZeroGRollUp - { 0, 0, 0, 152, -96, 0 }, // TrackElemType::RightLargeZeroGRollUp - { 0, 0, 0, -152,-96, 0 }, // TrackElemType::LeftLargeZeroGRollDown - { 0, 0, 0, -152,-96, 0 }, // TrackElemType::RightLargeZeroGRollDown - { 0, 2, 0, 248, -64, -32 }, // TrackElemType::LeftFlyerLargeHalfLoopUninvertedUp - { 0, 2, 0, 248, -64, 32 }, // TrackElemType::RightFlyerLargeHalfLoopUninvertedUp - { 0, 2, 0, -248, 64, -32 }, // TrackElemType::LeftFlyerLargeHalfLoopInvertedDown - { 0, 2, 0, -248, 64, 32 }, // TrackElemType::RightFlyerLargeHalfLoopInvertedDown - { 0, 2, 0, 280, -64, -32 }, // TrackElemType::LeftFlyerLargeHalfLoopInvertedUp - { 0, 2, 0, 280, -64, 32 }, // TrackElemType::RightFlyerLargeHalfLoopInvertedUp - { 0, 2, 0, -280, 64, -32 }, // TrackElemType::LeftFlyerLargeHalfLoopUninvertedDown - { 0, 2, 0, -280, 64, 32 }, // TrackElemType::RightFlyerLargeHalfLoopUninvertedDown - { 0, 2, 0, 152, -32, 0 }, // TrackElemType::FlyerHalfLoopInvertedUp - { 0, 2, 0, -152, 32, 0 }, // TrackElemType::FlyerHalfLoopUninvertedDown - { 0, 7, 0, 48, -64, -32 }, // TrackElemType::LeftEighthToDiagUp25 - { 0, 4, 0, 48, -64, 32 }, // TrackElemType::RightEighthToDiagUp25 - { 0, 7, 0,-48, -64, -32 }, // TrackElemType::LeftEighthToDiagDown25 - { 0, 4, 0,-48, -64, 32 }, // TrackElemType::RightEighthToDiagDown25 - { 4, 0, 0, 48, -64, 32 }, // TrackElemType::LeftEighthToOrthogonalUp25 - { 4, 1, 0, 48, -32, 64 }, // TrackElemType::RightEighthToOrthogonalUp25 - { 4, 0, 0,-48, -64, 32 }, // TrackElemType::LeftEighthToOrthogonalDown25 - { 4, 1, 0,-48, -32, 64 }, // TrackElemType::RightEighthToOrthogonalDown25 - { 4, 4, 0, 16, -32, 32 }, // TrackElemType::DiagUp25ToLeftBankedUp25 - { 4, 4, 0, 16, -32, 32 }, // TrackElemType::DiagUp25ToRightBankedUp25 - { 4, 4, 0, 16, -32, 32 }, // TrackElemType::DiagLeftBankedUp25ToUp25 - { 4, 4, 0, 16, -32, 32 }, // TrackElemType::DiagRightBankedUp25ToUp25 - { 4, 4, 16, 0, -32, 32 }, // TrackElemType::DiagDown25ToLeftBankedDown25 - { 4, 4, 16, 0, -32, 32 }, // TrackElemType::DiagDown25ToRightBankedDown25 - { 4, 4, 16, 0, -32, 32 }, // TrackElemType::DiagLeftBankedDown25ToDown25 - { 4, 4, 16, 0, -32, 32 }, // TrackElemType::DiagRightBankedDown25ToDown25 - { 4, 4, 0, 8, -32, 32 }, // TrackElemType::DiagLeftBankedFlatToLeftBankedUp25 - { 4, 4, 0, 8, -32, 32 }, // TrackElemType::DiagRightBankedFlatToRightBankedUp25 - { 4, 4, 0, 8, -32, 32 }, // TrackElemType::DiagLeftBankedUp25ToLeftBankedFlat - { 4, 4, 0, 8, -32, 32 }, // TrackElemType::DiagRightBankedUp25ToRightBankedFlat - { 4, 4, 8, 0, -32, 32 }, // TrackElemType::DiagLeftBankedFlatToLeftBankedDown25 - { 4, 4, 8, 0, -32, 32 }, // TrackElemType::DiagRightBankedFlatToRightBankedDown25 - { 4, 4, 8, 0, -32, 32 }, // TrackElemType::DiagLeftBankedDown25ToLeftBankedFlat - { 4, 4, 8, 0, -32, 32 }, // TrackElemType::DiagRightBankedDown25ToRightBankedFlat - { 4, 4, 0, 8, -32, 32 }, // TrackElemType::DiagFlatToLeftBankedUp25 - { 4, 4, 0, 8, -32, 32 }, // TrackElemType::DiagFlatToRightBankedUp25 - { 4, 4, 0, 8, -32, 32 }, // TrackElemType::DiagLeftBankedUp25ToFlat - { 4, 4, 0, 8, -32, 32 }, // TrackElemType::DiagRightBankedUp25ToFlat - { 4, 4, 8, 0, -32, 32 }, // TrackElemType::DiagFlatToLeftBankedDown25 - { 4, 4, 8, 0, -32, 32 }, // TrackElemType::DiagFlatToRightBankedDown25 - { 4, 4, 8, 0, -32, 32 }, // TrackElemType::DiagLeftBankedDown25ToFlat - { 4, 4, 8, 0, -32, 32 }, // TrackElemType::DiagRightBankedDown25ToFlat - { 4, 4, 0, 16, -32, 32 }, // TrackElemType::DiagUp25LeftBanked - { 4, 4, 0, 16, -32, 32 }, // TrackElemType::DiagUp25RightBanked - { 4, 4, 16, 0, -32, 32 }, // TrackElemType::DiagDown25LeftBanked - { 4, 4, 16, 0, -32, 32 }, // TrackElemType::DiagDown25RightBanked - { 0, 7, 0, 48, -64, -32 }, // TrackElemType::LeftEighthBankToDiagUp25 - { 0, 4, 0, 48, -64, 32 }, // TrackElemType::RightEighthBankToDiagUp25 - { 0, 7, 0,-48, -64, -32 }, // TrackElemType::LeftEighthBankToDiagDown25 - { 0, 4, 0,-48, -64, 32 }, // TrackElemType::RightEighthBankToDiagDown25 - { 4, 0, 0, 48, -64, 32 }, // TrackElemType::LeftEighthBankToOrthogonalUp25 - { 4, 1, 0, 48, -32, 64 }, // TrackElemType::RightEighthBankToOrthogonalUp25 - { 4, 0, 0,-48, -64, 32 }, // TrackElemType::LeftEighthBankToOrthogonalDown25 - { 4, 1, 0,-48, -32, 64 }, // TrackElemType::RightEighthBankToOrthogonalDown25 - { 4, 4, 0, 0, -32, 32 }, // TrackElemType::DiagBrakes - { 4, 4, 0, 0, -32, 32 }, // TrackElemType::DiagBlockBrakes - }; - static_assert(std::size(_trackCoordinates) == TrackElemType::Count); - - /** rct2: 0x0099BA64 */ - static constexpr uint8_t TrackSequenceProperties[][kMaxSequencesPerPiece] = { - { 0 }, - /* TrackElemType::EndStation */ { TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_3 | TRACK_SEQUENCE_FLAG_ORIGIN | TRACK_SEQUENCE_FLAG_DISALLOW_DOORS, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - /* TrackElemType::BeginStation */ { TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_3 | TRACK_SEQUENCE_FLAG_ORIGIN | TRACK_SEQUENCE_FLAG_DISALLOW_DOORS, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - /* TrackElemType::MiddleStation */ { TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_3 | TRACK_SEQUENCE_FLAG_ORIGIN | TRACK_SEQUENCE_FLAG_DISALLOW_DOORS, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - /* TrackElemType::TowerBase */ { TRACK_SEQUENCE_FLAG_ORIGIN, TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_DIRECTION_3, TRACK_SEQUENCE_FLAG_DIRECTION_0, TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_DIRECTION_1, TRACK_SEQUENCE_FLAG_DIRECTION_3, TRACK_SEQUENCE_FLAG_DIRECTION_1, TRACK_SEQUENCE_FLAG_DIRECTION_2 | TRACK_SEQUENCE_FLAG_DIRECTION_3, TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_2, TRACK_SEQUENCE_FLAG_DIRECTION_2, 0, 0, 0, 0, 0, 0, 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - /* TrackElemType::Maze */ { TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_2 | TRACK_SEQUENCE_FLAG_DIRECTION_3 | TRACK_SEQUENCE_FLAG_ORIGIN, TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_2 | TRACK_SEQUENCE_FLAG_DIRECTION_3 | TRACK_SEQUENCE_FLAG_ORIGIN, TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_2 | TRACK_SEQUENCE_FLAG_DIRECTION_3 | TRACK_SEQUENCE_FLAG_ORIGIN, TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_2 | TRACK_SEQUENCE_FLAG_DIRECTION_3 | TRACK_SEQUENCE_FLAG_ORIGIN, TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_2 | TRACK_SEQUENCE_FLAG_DIRECTION_3 | TRACK_SEQUENCE_FLAG_ORIGIN, TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_2 | TRACK_SEQUENCE_FLAG_DIRECTION_3 | TRACK_SEQUENCE_FLAG_ORIGIN, TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_2 | TRACK_SEQUENCE_FLAG_DIRECTION_3 | TRACK_SEQUENCE_FLAG_ORIGIN, TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_2 | TRACK_SEQUENCE_FLAG_DIRECTION_3 | TRACK_SEQUENCE_FLAG_ORIGIN, TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_2 | TRACK_SEQUENCE_FLAG_DIRECTION_3 | TRACK_SEQUENCE_FLAG_ORIGIN, TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_2 | TRACK_SEQUENCE_FLAG_DIRECTION_3 | TRACK_SEQUENCE_FLAG_ORIGIN, TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_2 | TRACK_SEQUENCE_FLAG_DIRECTION_3 | TRACK_SEQUENCE_FLAG_ORIGIN, TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_2 | TRACK_SEQUENCE_FLAG_DIRECTION_3 | TRACK_SEQUENCE_FLAG_ORIGIN, TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_2 | TRACK_SEQUENCE_FLAG_DIRECTION_3 | TRACK_SEQUENCE_FLAG_ORIGIN, TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_2 | TRACK_SEQUENCE_FLAG_DIRECTION_3 | TRACK_SEQUENCE_FLAG_ORIGIN, TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_2 | TRACK_SEQUENCE_FLAG_DIRECTION_3 | TRACK_SEQUENCE_FLAG_ORIGIN, TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_2 | TRACK_SEQUENCE_FLAG_DIRECTION_3 | TRACK_SEQUENCE_FLAG_ORIGIN }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - /* TrackElemType::SpinningTunnel */ { TRACK_SEQUENCE_FLAG_DISALLOW_DOORS, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - { 0 }, - /* TrackElemType::FlatTrack1x4A */ { TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_3 | TRACK_SEQUENCE_FLAG_ORIGIN, 0, TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - /* TrackElemType::FlatTrack2x2 */ { TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_DIRECTION_3 | TRACK_SEQUENCE_FLAG_ORIGIN, TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_DIRECTION_1, TRACK_SEQUENCE_FLAG_DIRECTION_2 | TRACK_SEQUENCE_FLAG_DIRECTION_3, TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - /* TrackElemType::FlatTrack4x4 */ { TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_DIRECTION_3 | TRACK_SEQUENCE_FLAG_ORIGIN, TRACK_SEQUENCE_FLAG_DIRECTION_0, TRACK_SEQUENCE_FLAG_DIRECTION_0, TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_DIRECTION_1, TRACK_SEQUENCE_FLAG_DIRECTION_3, 0, 0, TRACK_SEQUENCE_FLAG_DIRECTION_1, TRACK_SEQUENCE_FLAG_DIRECTION_3, 0, 0, TRACK_SEQUENCE_FLAG_DIRECTION_1, TRACK_SEQUENCE_FLAG_DIRECTION_2 | TRACK_SEQUENCE_FLAG_DIRECTION_3, TRACK_SEQUENCE_FLAG_DIRECTION_2, TRACK_SEQUENCE_FLAG_DIRECTION_2, TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_2 }, - /* TrackElemType::FlatTrack2x4 */ { TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_DIRECTION_3 | TRACK_SEQUENCE_FLAG_ORIGIN, TRACK_SEQUENCE_FLAG_DIRECTION_0, TRACK_SEQUENCE_FLAG_DIRECTION_0, TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_DIRECTION_1, TRACK_SEQUENCE_FLAG_DIRECTION_2 | TRACK_SEQUENCE_FLAG_DIRECTION_3, TRACK_SEQUENCE_FLAG_DIRECTION_2, TRACK_SEQUENCE_FLAG_DIRECTION_2, TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_2, 0, 0, 0, 0, 0, 0, 0, 0 }, - /* TrackElemType::FlatTrack1x5 */ { TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_3 | TRACK_SEQUENCE_FLAG_ORIGIN, 0, TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_3, TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - /* TrackElemType::FlatTrack1x1A */ { TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_ORIGIN | TRACK_SEQUENCE_FLAG_CONNECTS_TO_PATH, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - /* TrackElemType::FlatTrack1x4B */ { TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_ORIGIN, 0, TRACK_SEQUENCE_FLAG_DIRECTION_1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - /* TrackElemType::FlatTrack1x1B */ { TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_2 | TRACK_SEQUENCE_FLAG_DIRECTION_3 | TRACK_SEQUENCE_FLAG_ORIGIN | TRACK_SEQUENCE_FLAG_CONNECTS_TO_PATH, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - /* TrackElemType::FlatTrack1x4C */ { TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_3 | TRACK_SEQUENCE_FLAG_ORIGIN, TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_3, TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_3, TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_2 | TRACK_SEQUENCE_FLAG_DIRECTION_3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - /* TrackElemType::FlatTrack3x3 */ { TRACK_SEQUENCE_FLAG_ORIGIN, TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_DIRECTION_3, TRACK_SEQUENCE_FLAG_DIRECTION_0, TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_DIRECTION_1, TRACK_SEQUENCE_FLAG_DIRECTION_3, TRACK_SEQUENCE_FLAG_DIRECTION_1, TRACK_SEQUENCE_FLAG_DIRECTION_2 | TRACK_SEQUENCE_FLAG_DIRECTION_3, TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_2, TRACK_SEQUENCE_FLAG_DIRECTION_2, 0, 0, 0, 0, 0, 0, 0 }, - { 0 }, // TrackElemType::LeftCorkscrewUp - { 0 }, // TrackElemType::RightCorkscrewUp - { 0 }, // TrackElemType::LeftCorkscrewDown - { 0 }, // TrackElemType::RightCorkscrewDown - { 0 }, // TrackElemType::LeftMediumHalfLoopUp - { 0 }, // TrackElemType::RightMediumHalfLoopUp - { 0 }, // TrackElemType::LeftMediumHalfLoopDown - { 0 }, // TrackElemType::RightMediumHalfLoopDown - { 0 }, // TrackElemType::LeftZeroGRollUp - { 0 }, // TrackElemType::RightZeroGRollUp - { 0 }, // TrackElemType::LeftZeroGRollDown - { 0 }, // TrackElemType::RightZeroGRollDown - { 0 }, // TrackElemType::LeftLargeZeroGRollUp - { 0 }, // TrackElemType::RightLargeZeroGRollUp - { 0 }, // TrackElemType::LeftLargeZeroGRollDown - { 0 }, // TrackElemType::RightLargeZeroGRollDown - - /* LeftFlyerLargeHalfLoopUninvertedUp */ { 0 }, - /* RightFlyerLargeHalfLoopUninvertedUp */ { 0 }, - /* LeftFlyerLargeHalfLoopInvertedDown */ { 0 }, - /* RightFlyerLargeHalfLoopInvertedDown */ { 0 }, - /* LeftFlyerLargeHalfLoopInvertedUp */ { 0 }, - /* RightFlyerLargeHalfLoopInvertedUp */ { 0 }, - /* LeftFlyerLargeHalfLoopUninvertedDown */ { 0 }, - /* RightFlyerLargeHalfLoopUninvertedDown */ { 0 }, - /* FlyerHalfLoopInvertedUp */ { 0 }, - /* FlyerHalfLoopUninvertedUp */ { 0 }, - { 0 }, // TrackElemType::LeftEighthToDiagUp25 - { 0 }, // TrackElemType::RightEighthToDiagUp25 - { 0 }, // TrackElemType::LeftEighthToDiagDown25 - { 0 }, // TrackElemType::RightEighthToDiagDown25 - { 0 }, // TrackElemType::LeftEighthToOrthogonalUp25 - { 0 }, // TrackElemType::RightEighthToOrthogonalUp25 - { 0 }, // TrackElemType::LeftEighthToOrthogonalDown25 - { 0 }, // TrackElemType::RightEighthToOrthogonalDown25 - { 0 }, // TrackElemType::DiagUp25ToLeftBankedUp25 - { 0 }, // TrackElemType::DiagUp25ToRightBankedUp25 - { 0 }, // TrackElemType::DiagLeftBankedUp25ToUp25 - { 0 }, // TrackElemType::DiagRightBankedUp25ToUp25 - { 0 }, // TrackElemType::DiagDown25ToLeftBankedDown25 - { 0 }, // TrackElemType::DiagDown25ToRightBankedDown25 - { 0 }, // TrackElemType::DiagLeftBankedDown25ToDown25 - { 0 }, // TrackElemType::DiagRightBankedDown25ToDown25 - { 0 }, // TrackElemType::DiagLeftBankedFlatToLeftBankedUp25 - { 0 }, // TrackElemType::DiagRightBankedFlatToRightBankedUp25 - { 0 }, // TrackElemType::DiagLeftBankedUp25ToLeftBankedFlat - { 0 }, // TrackElemType::DiagRightBankedUp25ToRightBankedFlat - { 0 }, // TrackElemType::DiagLeftBankedFlatToLeftBankedDown25 - { 0 }, // TrackElemType::DiagRightBankedFlatToRightBankedDown25 - { 0 }, // TrackElemType::DiagLeftBankedDown25ToLeftBankedFlat - { 0 }, // TrackElemType::DiagRightBankedDown25ToRightBankedFlat - { 0 }, // TrackElemType::DiagFlatToLeftBankedUp25 - { 0 }, // TrackElemType::DiagFlatToRightBankedUp25 - { 0 }, // TrackElemType::DiagLeftBankedUp25ToFlat - { 0 }, // TrackElemType::DiagRightBankedUp25ToFlat - { 0 }, // TrackElemType::DiagFlatToLeftBankedDown25 - { 0 }, // TrackElemType::DiagFlatToRightBankedDown25 - { 0 }, // TrackElemType::DiagLeftBankedDown25ToFlat - { 0 }, // TrackElemType::DiagRightBankedDown25ToFlat - { 0 }, // TrackElemType::DiagUp25LeftBanked - { 0 }, // TrackElemType::DiagUp25RightBanked - { 0 }, // TrackElemType::DiagDown25LeftBanked - { 0 }, // TrackElemType::DiagDown25RightBanked - { 0 }, // TrackElemType::LeftEighthBankToDiagUp25 - { 0 }, // TrackElemType::RightEighthBankToDiagUp25 - { 0 }, // TrackElemType::LeftEighthBankToDiagDown25 - { 0 }, // TrackElemType::RightEighthBankToDiagDown25 - { 0 }, // TrackElemType::LeftEighthBankToOrthogonalUp25 - { 0 }, // TrackElemType::RightEighthBankToOrthogonalUp25 - { 0 }, // TrackElemType::LeftEighthBankToOrthogonalDown25 - { 0 }, // TrackElemType::RightEighthBankToOrthogonalDown25 - /* DiagonalBrakes */ { 0 }, - /* DiagonalBlockBrakes */ { 0 }, - }; - static_assert(std::size(TrackSequenceProperties) == TrackElemType::Count); + static constexpr TrackCoordinates _trackCoordinates[] = { + { 0, 0, 0, 0, 0, 0 }, // ELEM_FLAT + { 0, 0, 0, 0, 0, 0 }, // ELEM_END_STATION + { 0, 0, 0, 0, 0, 0 }, // ELEM_BEGIN_STATION + { 0, 0, 0, 0, 0, 0 }, // ELEM_MIDDLE_STATION + { 0, 0, 0, 16, 0, 0 }, // ELEM_25_DEG_UP + { 0, 0, 0, 64, 0, 0 }, // ELEM_60_DEG_UP + { 0, 0, 0, 8, 0, 0 }, // ELEM_FLAT_TO_25_DEG_UP + { 0, 0, 0, 32, 0, 0 }, // ELEM_25_DEG_UP_TO_60_DEG_UP + { 0, 0, 0, 32, 0, 0 }, // ELEM_60_DEG_UP_TO_25_DEG_UP + { 0, 0, 0, 8, 0, 0 }, // ELEM_25_DEG_UP_TO_FLAT + { 0, 0, 16, 0, 0, 0 }, // ELEM_25_DEG_DOWN + { 0, 0, 64, 0, 0, 0 }, // ELEM_60_DEG_DOWN + { 0, 0, 8, 0, 0, 0 }, // ELEM_FLAT_TO_25_DEG_DOWN + { 0, 0, 32, 0, 0, 0 }, // ELEM_25_DEG_DOWN_TO_60_DEG_DOWN + { 0, 0, 32, 0, 0, 0 }, // ELEM_60_DEG_DOWN_TO_25_DEG_DOWN + { 0, 0, 8, 0, 0, 0 }, // ELEM_25_DEG_DOWN_TO_FLAT + { 0, 3, 0, 0, -64, -64 }, // ELEM_LEFT_QUARTER_TURN_5_TILES + { 0, 1, 0, 0, -64, 64 }, // ELEM_RIGHT_QUARTER_TURN_5_TILES + { 0, 0, 0, 0, 0, 0 }, // ELEM_FLAT_TO_LEFT_BANK + { 0, 0, 0, 0, 0, 0 }, // ELEM_FLAT_TO_RIGHT_BANK + { 0, 0, 0, 0, 0, 0 }, // ELEM_LEFT_BANK_TO_FLAT + { 0, 0, 0, 0, 0, 0 }, // ELEM_RIGHT_BANK_TO_FLAT + { 0, 3, 0, 0, -64, -64 }, // ELEM_BANKED_LEFT_QUARTER_TURN_5_TILES + { 0, 1, 0, 0, -64, 64 }, // ELEM_BANKED_RIGHT_QUARTER_TURN_5_TILES + { 0, 0, 0, 8, 0, 0 }, // ELEM_LEFT_BANK_TO_25_DEG_UP + { 0, 0, 0, 8, 0, 0 }, // ELEM_RIGHT_BANK_TO_25_DEG_UP + { 0, 0, 0, 8, 0, 0 }, // ELEM_25_DEG_UP_TO_LEFT_BANK + { 0, 0, 0, 8, 0, 0 }, // ELEM_25_DEG_UP_TO_RIGHT_BANK + { 0, 0, 8, 0, 0, 0 }, // ELEM_LEFT_BANK_TO_25_DEG_DOWN + { 0, 0, 8, 0, 0, 0 }, // ELEM_RIGHT_BANK_TO_25_DEG_DOWN + { 0, 0, 8, 0, 0, 0 }, // ELEM_25_DEG_DOWN_TO_LEFT_BANK + { 0, 0, 8, 0, 0, 0 }, // ELEM_25_DEG_DOWN_TO_RIGHT_BANK + { 0, 0, 0, 0, 0, 0 }, // ELEM_LEFT_BANK + { 0, 0, 0, 0, 0, 0 }, // ELEM_RIGHT_BANK + { 0, 3, 0, 64, -64, -64 }, // ELEM_LEFT_QUARTER_TURN_5_TILES_25_DEG_UP + { 0, 1, 0, 64, -64, 64 }, // ELEM_RIGHT_QUARTER_TURN_5_TILES_25_DEG_UP + { 0, 3, 64, 0, -64, -64 }, // ELEM_LEFT_QUARTER_TURN_5_TILES_25_DEG_DOWN + { 0, 1, 64, 0, -64, 64 }, // ELEM_RIGHT_QUARTER_TURN_5_TILES_25_DEG_DOWN + { 0, 0, 0, 0, -64, -32 }, // ELEM_S_BEND_LEFT + { 0, 0, 0, 0, -64, 32 }, // ELEM_S_BEND_RIGHT + { 0, 0, 0, 0, -32, -32 }, // ELEM_LEFT_VERTICAL_LOOP + { 0, 0, 0, 0, -32, 32 }, // ELEM_RIGHT_VERTICAL_LOOP + { 0, 3, 0, 0, -32, -32 }, // ELEM_LEFT_QUARTER_TURN_3_TILES + { 0, 1, 0, 0, -32, 32 }, // ELEM_RIGHT_QUARTER_TURN_3_TILES + { 0, 3, 0, 0, -32, -32 }, // ELEM_LEFT_QUARTER_TURN_3_TILES_BANK + { 0, 1, 0, 0, -32, 32 }, // ELEM_RIGHT_QUARTER_TURN_3_TILES_BANK + { 0, 3, 0, 32, -32, -32 }, // ELEM_LEFT_QUARTER_TURN_3_TILES_25_DEG_UP + { 0, 1, 0, 32, -32, 32 }, // ELEM_RIGHT_QUARTER_TURN_3_TILES_25_DEG_UP + { 0, 3, 32, 0, -32, -32 }, // ELEM_LEFT_QUARTER_TURN_3_TILES_25_DEG_DOWN + { 0, 1, 32, 0, -32, 32 }, // ELEM_RIGHT_QUARTER_TURN_3_TILES_25_DEG_DOWN + { 0, 3, 0, 0, 0, 0 }, // ELEM_LEFT_QUARTER_TURN_1_TILE + { 0, 1, 0, 0, 0, 0 }, // ELEM_RIGHT_QUARTER_TURN_1_TILE + { 0, 0, 0, 16, -64, 0 }, // ELEM_LEFT_TWIST_DOWN_TO_UP + { 0, 0, 0, 16, -64, 0 }, // ELEM_RIGHT_TWIST_DOWN_TO_UP + { 0, 0, 0, -16, -64, 0 }, // ELEM_LEFT_TWIST_UP_TO_DOWN + { 0, 0, 0, -16, -64, 0 }, // ELEM_RIGHT_TWIST_UP_TO_DOWN + { 0, 2, 0, 152, -32, 0 }, // ELEM_HALF_LOOP_UP + { 0, 2, 0, -152, 32, 0 }, // ELEM_HALF_LOOP_DOWN + { 0, 3, 0, 80, -32, -32 }, // ELEM_LEFT_CORKSCREW_UP + { 0, 1, 0, 80, -32, 32 }, // ELEM_RIGHT_CORKSCREW_UP + { 0, 3, 0, -80, -32, -32 }, // ELEM_LEFT_CORKSCREW_DOWN + { 0, 1, 0, -80, -32, 32 }, // ELEM_RIGHT_CORKSCREW_DOWN + { 0, 0, 0, 24, 0, 0 }, // ELEM_FLAT_TO_60_DEG_UP + { 0, 0, 0, 24, 0, 0 }, // ELEM_60_DEG_UP_TO_FLAT + { 0, 0, 24, 0, 0, 0 }, // ELEM_FLAT_TO_60_DEG_DOWN + { 0, 0, 24, 0, 0, 0 }, // ELEM_60_DEG_DOWN_TO_FLAT + { 0, 0, 0, 96, 32, 0 }, // ELEM_TOWER_BASE + { 0, 0, 0, 32, 32, 0 }, // ELEM_TOWER_SECTION + { 0, 0, 0, 0, 0, 0 }, // ELEM_FLAT_COVERED + { 0, 0, 0, 16, 0, 0 }, // ELEM_25_DEG_UP_COVERED + { 0, 0, 0, 64, 0, 0 }, // ELEM_60_DEG_UP_COVERED + { 0, 0, 0, 8, 0, 0 }, // ELEM_FLAT_TO_25_DEG_UP_COVERED + { 0, 0, 0, 32, 0, 0 }, // ELEM_25_DEG_UP_TO_60_DEG_UP_COVERED + { 0, 0, 0, 32, 0, 0 }, // ELEM_60_DEG_UP_TO_25_DEG_UP_COVERED + { 0, 0, 0, 8, 0, 0 }, // ELEM_25_DEG_UP_TO_FLAT_COVERED + { 0, 0, 16, 0, 0, 0 }, // ELEM_25_DEG_DOWN_COVERED + { 0, 0, 64, 0, 0, 0 }, // ELEM_60_DEG_DOWN_COVERED + { 0, 0, 8, 0, 0, 0 }, // ELEM_FLAT_TO_25_DEG_DOWN_COVERED + { 0, 0, 32, 0, 0, 0 }, // ELEM_25_DEG_DOWN_TO_60_DEG_DOWN_COVERED + { 0, 0, 32, 0, 0, 0 }, // ELEM_60_DEG_DOWN_TO_25_DEG_DOWN_COVERED + { 0, 0, 8, 0, 0, 0 }, // ELEM_25_DEG_DOWN_TO_FLAT_COVERED + { 0, 3, 0, 0, -64, -64 }, // ELEM_LEFT_QUARTER_TURN_5_TILES_COVERED + { 0, 1, 0, 0, -64, 64 }, // ELEM_RIGHT_QUARTER_TURN_5_TILES_COVERED + { 0, 0, 0, 0, -64, -32 }, // ELEM_S_BEND_LEFT_COVERED + { 0, 0, 0, 0, -64, 32 }, // ELEM_S_BEND_RIGHT_COVERED + { 0, 3, 0, 0, -32, -32 }, // ELEM_LEFT_QUARTER_TURN_3_TILES_COVERED + { 0, 1, 0, 0, -32, 32 }, // ELEM_RIGHT_QUARTER_TURN_3_TILES_COVERED + { 0, 2, 0, 16, 0, -96 }, // ELEM_LEFT_HALF_BANKED_HELIX_UP_SMALL + { 0, 2, 0, 16, 0, 96 }, // ELEM_RIGHT_HALF_BANKED_HELIX_UP_SMALL + { 0, 2, 16, 0, 0, -96 }, // ELEM_LEFT_HALF_BANKED_HELIX_DOWN_SMALL + { 0, 2, 16, 0, 0, 96 }, // ELEM_RIGHT_HALF_BANKED_HELIX_DOWN_SMALL + { 0, 2, 0, 16, 0, -160 }, // ELEM_LEFT_HALF_BANKED_HELIX_UP_LARGE + { 0, 2, 0, 16, 0, 160 }, // ELEM_RIGHT_HALF_BANKED_HELIX_UP_LARGE + { 0, 2, 16, 0, 0, -160 }, // ELEM_LEFT_HALF_BANKED_HELIX_DOWN_LARGE + { 0, 2, 16, 0, 0, 160 }, // ELEM_RIGHT_HALF_BANKED_HELIX_DOWN_LARGE + { 0, 3, 0, 64, 0, 0 }, // ELEM_LEFT_QUARTER_TURN_1_TILE_60_DEG_UP + { 0, 1, 0, 64, 0, 0 }, // ELEM_RIGHT_QUARTER_TURN_1_TILE_60_DEG_UP + { 0, 3, 64, 0, 0, 0 }, // ELEM_LEFT_QUARTER_TURN_1_TILE_60_DEG_DOWN + { 0, 1, 64, 0, 0, 0 }, // ELEM_RIGHT_QUARTER_TURN_1_TILE_60_DEG_DOWN + { 0, 0, 0, 0, 0, 0 }, // ELEM_BRAKES + { 0, 0, 0, 0, 0, 0 }, // ELEM_ROTATION_CONTROL_TOGGLE + { 0, 0, 0, 0, 0, 0 }, // ELEM_INVERTED_90_DEG_UP_TO_FLAT_QUARTER_LOOP + { 0, 3, 0, 16, -64, -64 }, // ELEM_LEFT_QUARTER_BANKED_HELIX_LARGE_UP + { 0, 1, 0, 16, -64, 64 }, // ELEM_RIGHT_QUARTER_BANKED_HELIX_LARGE_UP + { 0, 3, 16, 0, -64, -64 }, // ELEM_LEFT_QUARTER_BANKED_HELIX_LARGE_DOWN + { 0, 1, 16, 0, -64, 64 }, // ELEM_RIGHT_QUARTER_BANKED_HELIX_LARGE_DOWN + { 0, 3, 0, 16, -64, -64 }, // ELEM_LEFT_QUARTER_HELIX_LARGE_UP + { 0, 1, 0, 16, -64, 64 }, // ELEM_RIGHT_QUARTER_HELIX_LARGE_UP + { 0, 3, 16, 0, -64, -64 }, // ELEM_LEFT_QUARTER_HELIX_LARGE_DOWN + { 0, 1, 16, 0, -64, 64 }, // ELEM_RIGHT_QUARTER_HELIX_LARGE_DOWN + { 0, 0, 0, 16, 0, 0 }, // ELEM_25_DEG_UP_LEFT_BANKED + { 0, 0, 0, 16, 0, 0 }, // ELEM_25_DEG_UP_RIGHT_BANKED + { 0, 0, 0, 0, 0, 0 }, // ELEM_WATERFALL + { 0, 0, 0, 0, 0, 0 }, // ELEM_RAPIDS + { 0, 0, 0, 0, 0, 0 }, // ELEM_ON_RIDE_PHOTO + { 0, 0, 16, 0, 0, 0 }, // ELEM_25_DEG_DOWN_LEFT_BANKED + { 0, 0, 16, 0, 0, 0 }, // ELEM_25_DEG_DOWN_RIGHT_BANKED + { 0, 0, 16, 16, -128, 0 }, // ELEM_WATER_SPLASH + { 0, 0, 0, 88, -96, 0 }, // ELEM_FLAT_TO_60_DEG_UP_LONG_BASE + { 0, 0, 0, 88, -96, 0 }, // ELEM_60_DEG_UP_TO_FLAT_LONG_BASE + { 0, 0, 0, 0, 0, 0 }, // ELEM_WHIRLPOOL + { 0, 0, 88, 0, -96, 0 }, // ELEM_60_DEG_DOWN_TO_FLAT_LONG_BASE + { 0, 0, 88, 0, -96, 0 }, // ELEM_FLAT_TO_60_DEG_DOWN_LONG_BASE + { 0, 0, 0, -96, -96, 0 }, // ELEM_CABLE_LIFT_HILL + { 0, 0, 0, 240, -160, 0 }, // ELEM_REVERSE_FREEFALL_SLOPE + { 0, 0, 0, 80, 32, 0 }, // ELEM_REVERSE_FREEFALL_VERTICAL + { 0, 0, 0, 32, 32, 0 }, // ELEM_90_DEG_UP + { 0, 0, 32, 0, 32, 0 }, // ELEM_90_DEG_DOWN + { 0, 0, 0, 56, 32, 0 }, // ELEM_60_DEG_UP_TO_90_DEG_UP + { 0, 0, 56, 0, 0, 0 }, // ELEM_90_DEG_DOWN_TO_60_DEG_DOWN + { 0, 0, 0, 56, 0, 0 }, // ELEM_90_DEG_UP_TO_60_DEG_UP + { 0, 0, 56, 0, 32, 0 }, // ELEM_60_DEG_DOWN_TO_90_DEG_DOWN + { 0, 0, 24, 0, 0, 0 }, // ELEM_BRAKE_FOR_DROP + { 0, 7, 0, 0, -64, -32 }, // ELEM_LEFT_EIGHTH_TO_DIAG + { 0, 4, 0, 0, -64, 32 }, // ELEM_RIGHT_EIGHTH_TO_DIAG + { 4, 0, 0, 0, -64, 32 }, // ELEM_LEFT_EIGHTH_TO_ORTHOGONAL + { 4, 1, 0, 0, -32, 64 }, // ELEM_RIGHT_EIGHTH_TO_ORTHOGONAL + { 0, 7, 0, 0, -64, -32 }, // ELEM_LEFT_EIGHTH_BANK_TO_DIAG + { 0, 4, 0, 0, -64, 32 }, // ELEM_RIGHT_EIGHTH_BANK_TO_DIAG + { 4, 0, 0, 0, -64, 32 }, // ELEM_LEFT_EIGHTH_BANK_TO_ORTHOGONAL + { 4, 1, 0, 0, -32, 64 }, // ELEM_RIGHT_EIGHTH_BANK_TO_ORTHOGONAL + { 4, 4, 0, 0, -32, 32 }, // ELEM_DIAG_FLAT + { 4, 4, 0, 16, -32, 32 }, // ELEM_DIAG_25_DEG_UP + { 4, 4, 0, 64, -32, 32 }, // ELEM_DIAG_60_DEG_UP + { 4, 4, 0, 8, -32, 32 }, // ELEM_DIAG_FLAT_TO_25_DEG_UP + { 4, 4, 0, 32, -32, 32 }, // ELEM_DIAG_25_DEG_UP_TO_60_DEG_UP + { 4, 4, 0, 32, -32, 32 }, // ELEM_DIAG_60_DEG_UP_TO_25_DEG_UP + { 4, 4, 0, 8, -32, 32 }, // ELEM_DIAG_25_DEG_UP_TO_FLAT + { 4, 4, 16, 0, -32, 32 }, // ELEM_DIAG_25_DEG_DOWN + { 4, 4, 64, 0, -32, 32 }, // ELEM_DIAG_60_DEG_DOWN + { 4, 4, 8, 0, -32, 32 }, // ELEM_DIAG_FLAT_TO_25_DEG_DOWN + { 4, 4, 32, 0, -32, 32 }, // ELEM_DIAG_25_DEG_DOWN_TO_60_DEG_DOWN + { 4, 4, 32, 0, -32, 32 }, // ELEM_DIAG_60_DEG_DOWN_TO_25_DEG_DOWN + { 4, 4, 8, 0, -32, 32 }, // ELEM_DIAG_25_DEG_DOWN_TO_FLAT + { 4, 4, 0, 24, -32, 32 }, // ELEM_DIAG_FLAT_TO_60_DEG_UP + { 4, 4, 0, 24, -32, 32 }, // ELEM_DIAG_60_DEG_UP_TO_FLAT + { 4, 4, 24, 0, -32, 32 }, // ELEM_DIAG_FLAT_TO_60_DEG_DOWN + { 4, 4, 24, 0, -32, 32 }, // ELEM_DIAG_60_DEG_DOWN_TO_FLAT + { 4, 4, 0, 0, -32, 32 }, // ELEM_DIAG_FLAT_TO_LEFT_BANK + { 4, 4, 0, 0, -32, 32 }, // ELEM_DIAG_FLAT_TO_RIGHT_BANK + { 4, 4, 0, 0, -32, 32 }, // ELEM_DIAG_LEFT_BANK_TO_FLAT + { 4, 4, 0, 0, -32, 32 }, // ELEM_DIAG_RIGHT_BANK_TO_FLAT + { 4, 4, 0, 8, -32, 32 }, // ELEM_DIAG_LEFT_BANK_TO_25_DEG_UP + { 4, 4, 0, 8, -32, 32 }, // ELEM_DIAG_RIGHT_BANK_TO_25_DEG_UP + { 4, 4, 0, 8, -32, 32 }, // ELEM_DIAG_25_DEG_UP_TO_LEFT_BANK + { 4, 4, 0, 8, -32, 32 }, // ELEM_DIAG_25_DEG_UP_TO_RIGHT_BANK + { 4, 4, 8, 0, -32, 32 }, // ELEM_DIAG_LEFT_BANK_TO_25_DEG_DOWN + { 4, 4, 8, 0, -32, 32 }, // ELEM_DIAG_RIGHT_BANK_TO_25_DEG_DOWN + { 4, 4, 8, 0, -32, 32 }, // ELEM_DIAG_25_DEG_DOWN_TO_LEFT_BANK + { 4, 4, 8, 0, -32, 32 }, // ELEM_DIAG_25_DEG_DOWN_TO_RIGHT_BANK + { 4, 4, 0, 0, -32, 32 }, // ELEM_DIAG_LEFT_BANK + { 4, 4, 0, 0, -32, 32 }, // ELEM_DIAG_RIGHT_BANK + { 0, 0, 0, 0, 0, 0 }, // ELEM_LOG_FLUME_REVERSER + { 0, 0, 0, 0, 0, 0 }, // ELEM_SPINNING_TUNNEL + { 0, 0, 0, 32, -64, 0 }, // ELEM_LEFT_BARREL_ROLL_UP_TO_DOWN + { 0, 0, 0, 32, -64, 0 }, // ELEM_RIGHT_BARREL_ROLL_UP_TO_DOWN + { 0, 0, 0, -32, -64, 0 }, // ELEM_LEFT_BARREL_ROLL_DOWN_TO_UP + { 0, 0, 0, -32, -64, 0 }, // ELEM_RIGHT_BARREL_ROLL_DOWN_TO_UP + { 0, 3, 0, 24, -32, -32 }, // ELEM_LEFT_BANK_TO_LEFT_QUARTER_TURN_3_TILES_25_DEG_UP + { 0, 1, 0, 24, -32, 32 }, // ELEM_RIGHT_BANK_TO_RIGHT_QUARTER_TURN_3_TILES_25_DEG_UP + { 0, 3, 24, 0, -32, -32 }, // ELEM_LEFT_QUARTER_TURN_3_TILES_25_DEG_DOWN_TO_LEFT_BANK + { 0, 1, 24, 0, -32, 32 }, // ELEM_RIGHT_QUARTER_TURN_3_TILES_25_DEG_DOWN_TO_RIGHT_BANK + { 0, 0, 0, 16, 0, 0 }, // ELEM_POWERED_LIFT + { 0, 2, 0, 280, -64, -32 }, // ELEM_LEFT_LARGE_HALF_LOOP_UP + { 0, 2, 0, 280, -64, 32 }, // ELEM_RIGHT_LARGE_HALF_LOOP_UP + { 0, 2, 0, -280, 64, -32 }, // ELEM_RIGHT_LARGE_HALF_LOOP_DOWN + { 0, 2, 0, -280, 64, 32 }, // ELEM_LEFT_LARGE_HALF_LOOP_DOWN + { 0, 0, 0, -16, -64, 0 }, // ELEM_LEFT_FLYER_TWIST_UP_TO_DOWN + { 0, 0, 0, -16, -64, 0 }, // ELEM_RIGHT_FLYER_TWIST_UP_TO_DOWN + { 0, 0, 0, 16, -64, 0 }, // ELEM_LEFT_FLYER_TWIST_DOWN_TO_UP + { 0, 0, 0, 16, -64, 0 }, // ELEM_RIGHT_FLYER_TWIST_DOWN_TO_UP + { 0, 2, 0, 120, -32, 0 }, // ELEM_FLYER_HALF_LOOP_UP + { 0, 2, 0, -120, 32, 0 }, // ELEM_FLYER_HALF_LOOP_DOWN + { 0, 3, 0, 48, -32, -32 }, // ELEM_LEFT_FLY_CORKSCREW_UP_TO_DOWN + { 0, 1, 0, 48, -32, 32 }, // ELEM_RIGHT_FLY_CORKSCREW_UP_TO_DOWN + { 0, 3, 0, -48, -32, -32 }, // ELEM_LEFT_FLY_CORKSCREW_DOWN_TO_UP + { 0, 1, 0, -48, -32, 32 }, // ELEM_RIGHT_FLY_CORKSCREW_DOWN_TO_UP + { 0, 2, 0, 32, 0, 0 }, // ELEM_HEARTLINE_TRANSFER_UP + { 0, 2, 0, -32, 0, 0 }, // ELEM_HEARTLINE_TRANSFER_DOWN + { 0, 0, 0, 0, -160, 0 }, // ELEM_LEFT_HEARTLINE_ROLL + { 0, 0, 0, 0, -160, 0 }, // ELEM_RIGHT_HEARTLINE_ROLL + { 0, 0, 0, 0, -32, 0 }, // ELEM_MINI_GOLF_HOLE_A + { 0, 0, 0, 0, -32, 0 }, // ELEM_MINI_GOLF_HOLE_B + { 0, 0, 0, 0, -32, 0 }, // ELEM_MINI_GOLF_HOLE_C + { 0, 1, 0, 0, -32, 32 }, // ELEM_MINI_GOLF_HOLE_D + { 0, 3, 0, 0, -32, -32 }, // ELEM_MINI_GOLF_HOLE_E + { 0, 2, 0, -96, -96, 0 }, // ELEM_INVERTED_FLAT_TO_90_DEG_DOWN_QUARTER_LOOP + { 0, 2, 0, 128, 64, 0 }, // ELEM_90_DEG_UP_QUARTER_LOOP_TO_INVERTED + { 0, 2, 0, -128, -96, 0 }, // ELEM_QUARTER_LOOP_INVERT_TO_90_DEG_DOWN + { 0, 3, 0, 16, -32, -32 }, // ELEM_LEFT_CURVED_LIFT_HILL + { 0, 1, 0, 16, -32, 32 }, // ELEM_RIGHT_CURVED_LIFT_HILL + { 0, 0, 0, 0, -64, 0 }, // ELEM_LEFT_REVERSER + { 0, 0, 0, 0, -64, 0 }, // ELEM_RIGHT_REVERSER + { 0, 0, 0, 0, -32, 0 }, // ELEM_AIR_THRUST_TOP_CAP + { 0, 0, 80, 0, 32, 0 }, // ELEM_AIR_THRUST_VERTICAL_DOWN + { 0, 0, 240, 0, -160, 0 }, // ELEM_AIR_THRUST_VERTICAL_DOWN_TO_LEVEL + { 0, 0, 0, 0, 0, 0 }, // ELEM_BLOCK_BRAKES + { 0, 3, 0, 32, -32, -32 }, // ELEM_BANKED_LEFT_QUARTER_TURN_3_TILES_25_DEG_UP + { 0, 1, 0, 32, -32, 32 }, // ELEM_BANKED_RIGHT_QUARTER_TURN_3_TILES_25_DEG_UP + { 0, 3, 32, 0, -32, -32 }, + { 0, 1, 32, 0, -32, 32 }, + { 0, 3, 0, 64, -64, -64 }, + { 0, 1, 0, 64, -64, 64 }, + { 0, 3, 64, 0, -64, -64 }, + { 0, 1, 64, 0, -64, 64 }, + { 0, 0, 0, 16, 0, 0 }, + { 0, 0, 0, 16, 0, 0 }, + { 0, 0, 0, 16, 0, 0 }, + { 0, 0, 0, 16, 0, 0 }, + { 0, 0, 16, 0, 0, 0 }, + { 0, 0, 16, 0, 0, 0 }, + { 0, 0, 16, 0, 0, 0 }, + { 0, 0, 16, 0, 0, 0 }, + { 0, 0, 0, 8, 0, 0 }, + { 0, 0, 0, 8, 0, 0 }, + { 0, 0, 0, 8, 0, 0 }, + { 0, 0, 0, 8, 0, 0 }, + { 0, 0, 8, 0, 0, 0 }, + { 0, 0, 8, 0, 0, 0 }, + { 0, 0, 8, 0, 0, 0 }, + { 0, 0, 8, 0, 0, 0 }, + { 0, 0, 0, 8, 0, 0 }, + { 0, 0, 0, 8, 0, 0 }, + { 0, 0, 0, 8, 0, 0 }, + { 0, 0, 0, 8, 0, 0 }, + { 0, 0, 8, 0, 0, 0 }, + { 0, 0, 8, 0, 0, 0 }, + { 0, 0, 8, 0, 0, 0 }, + { 0, 0, 8, 0, 0, 0 }, + { 0, 3, 0, 96, 0, 32 }, + { 0, 1, 0, 96, 0, -32 }, + { 0, 3, 96, 0, 0, 32 }, + { 0, 1, 96, 0, 0, -32 }, + { 0, 2, 0, 96, 64, 0 }, + { 0, 2, 0, -128, -96, 0 }, + { 0, 2, 0, 128, 64, 0 }, + { 0, 0, 0, 0, 0, 0 }, + { 0, 2, 0, 0, 0, 32 }, // TrackElemType::FlatTrack1x4A + { 0, 2, 0, 0, 0, 32 }, // TrackElemType::FlatTrack2x2 + { 0, 2, 0, 0, 0, 32 }, // TrackElemType::FlatTrack4x4 + { 0, 2, 0, 0, 0, 32 }, // TrackElemType::FlatTrack2x4 + { 0, 2, 0, 0, 0, 32 }, // TrackElemType::FlatTrack1x5 + { 0, 2, 0, 0, 0, 32 }, // TrackElemType::FlatTrack1x1A + { 0, 2, 0, 0, 0, 32 }, // TrackElemType::FlatTrack1x4B + { 0, 2, 0, 0, 0, 32 }, // TrackElemType::FlatTrack1x1B + { 0, 2, 0, 0, 0, 32 }, // TrackElemType::FlatTrack1x4C + { 0, 0, 0, 96, 32, 0 }, // TrackElemType::FlatTrack3x3 + { 0, 3, 0, 112, -64, -64 }, // TrackElemType::LeftCorkscrewUp + { 0, 1, 0, 112, -64, 64 }, // TrackElemType::RightCorkscrewUp + { 0, 3, 0, -112, -64, -64 }, // TrackElemType::LeftCorkscrewDown + { 0, 1, 0, -112, -64, 64 }, // TrackElemType::RightCorkscrewDown + { 0, 2, 0, 216, -32, -32 }, // TrackElemType::LeftMediumHalfLoopUp + { 0, 2, 0, 216, -32, 32 }, // TrackElemType::RightMediumHalfLoopUp + { 0, 2, 0, -216, 32, -32 }, // TrackElemType::LeftMediumHalfLoopDown + { 0, 2, 0, -216, 32, 32 }, // TrackElemType::RightMediumHalfLoopDown + { 0, 0, 0, 56, -64, 0 }, // TrackElemType::LeftZeroGRollUp + { 0, 0, 0, 56, -64, 0 }, // TrackElemType::RightZeroGRollUp + { 0, 0, 0, -56,-64, 0 }, // TrackElemType::LeftZeroGRollDown + { 0, 0, 0, -56,-64, 0 }, // TrackElemType::RightZeroGRollDown + { 0, 0, 0, 152, -96, 0 }, // TrackElemType::LeftLargeZeroGRollUp + { 0, 0, 0, 152, -96, 0 }, // TrackElemType::RightLargeZeroGRollUp + { 0, 0, 0, -152,-96, 0 }, // TrackElemType::LeftLargeZeroGRollDown + { 0, 0, 0, -152,-96, 0 }, // TrackElemType::RightLargeZeroGRollDown + { 0, 2, 0, 248, -64, -32 }, // TrackElemType::LeftFlyerLargeHalfLoopUninvertedUp + { 0, 2, 0, 248, -64, 32 }, // TrackElemType::RightFlyerLargeHalfLoopUninvertedUp + { 0, 2, 0, -248, 64, -32 }, // TrackElemType::LeftFlyerLargeHalfLoopInvertedDown + { 0, 2, 0, -248, 64, 32 }, // TrackElemType::RightFlyerLargeHalfLoopInvertedDown + { 0, 2, 0, 280, -64, -32 }, // TrackElemType::LeftFlyerLargeHalfLoopInvertedUp + { 0, 2, 0, 280, -64, 32 }, // TrackElemType::RightFlyerLargeHalfLoopInvertedUp + { 0, 2, 0, -280, 64, -32 }, // TrackElemType::LeftFlyerLargeHalfLoopUninvertedDown + { 0, 2, 0, -280, 64, 32 }, // TrackElemType::RightFlyerLargeHalfLoopUninvertedDown + { 0, 2, 0, 152, -32, 0 }, // TrackElemType::FlyerHalfLoopInvertedUp + { 0, 2, 0, -152, 32, 0 }, // TrackElemType::FlyerHalfLoopUninvertedDown + { 0, 7, 0, 48, -64, -32 }, // TrackElemType::LeftEighthToDiagUp25 + { 0, 4, 0, 48, -64, 32 }, // TrackElemType::RightEighthToDiagUp25 + { 0, 7, 0,-48, -64, -32 }, // TrackElemType::LeftEighthToDiagDown25 + { 0, 4, 0,-48, -64, 32 }, // TrackElemType::RightEighthToDiagDown25 + { 4, 0, 0, 48, -64, 32 }, // TrackElemType::LeftEighthToOrthogonalUp25 + { 4, 1, 0, 48, -32, 64 }, // TrackElemType::RightEighthToOrthogonalUp25 + { 4, 0, 0,-48, -64, 32 }, // TrackElemType::LeftEighthToOrthogonalDown25 + { 4, 1, 0,-48, -32, 64 }, // TrackElemType::RightEighthToOrthogonalDown25 + { 4, 4, 0, 16, -32, 32 }, // TrackElemType::DiagUp25ToLeftBankedUp25 + { 4, 4, 0, 16, -32, 32 }, // TrackElemType::DiagUp25ToRightBankedUp25 + { 4, 4, 0, 16, -32, 32 }, // TrackElemType::DiagLeftBankedUp25ToUp25 + { 4, 4, 0, 16, -32, 32 }, // TrackElemType::DiagRightBankedUp25ToUp25 + { 4, 4, 16, 0, -32, 32 }, // TrackElemType::DiagDown25ToLeftBankedDown25 + { 4, 4, 16, 0, -32, 32 }, // TrackElemType::DiagDown25ToRightBankedDown25 + { 4, 4, 16, 0, -32, 32 }, // TrackElemType::DiagLeftBankedDown25ToDown25 + { 4, 4, 16, 0, -32, 32 }, // TrackElemType::DiagRightBankedDown25ToDown25 + { 4, 4, 0, 8, -32, 32 }, // TrackElemType::DiagLeftBankedFlatToLeftBankedUp25 + { 4, 4, 0, 8, -32, 32 }, // TrackElemType::DiagRightBankedFlatToRightBankedUp25 + { 4, 4, 0, 8, -32, 32 }, // TrackElemType::DiagLeftBankedUp25ToLeftBankedFlat + { 4, 4, 0, 8, -32, 32 }, // TrackElemType::DiagRightBankedUp25ToRightBankedFlat + { 4, 4, 8, 0, -32, 32 }, // TrackElemType::DiagLeftBankedFlatToLeftBankedDown25 + { 4, 4, 8, 0, -32, 32 }, // TrackElemType::DiagRightBankedFlatToRightBankedDown25 + { 4, 4, 8, 0, -32, 32 }, // TrackElemType::DiagLeftBankedDown25ToLeftBankedFlat + { 4, 4, 8, 0, -32, 32 }, // TrackElemType::DiagRightBankedDown25ToRightBankedFlat + { 4, 4, 0, 8, -32, 32 }, // TrackElemType::DiagFlatToLeftBankedUp25 + { 4, 4, 0, 8, -32, 32 }, // TrackElemType::DiagFlatToRightBankedUp25 + { 4, 4, 0, 8, -32, 32 }, // TrackElemType::DiagLeftBankedUp25ToFlat + { 4, 4, 0, 8, -32, 32 }, // TrackElemType::DiagRightBankedUp25ToFlat + { 4, 4, 8, 0, -32, 32 }, // TrackElemType::DiagFlatToLeftBankedDown25 + { 4, 4, 8, 0, -32, 32 }, // TrackElemType::DiagFlatToRightBankedDown25 + { 4, 4, 8, 0, -32, 32 }, // TrackElemType::DiagLeftBankedDown25ToFlat + { 4, 4, 8, 0, -32, 32 }, // TrackElemType::DiagRightBankedDown25ToFlat + { 4, 4, 0, 16, -32, 32 }, // TrackElemType::DiagUp25LeftBanked + { 4, 4, 0, 16, -32, 32 }, // TrackElemType::DiagUp25RightBanked + { 4, 4, 16, 0, -32, 32 }, // TrackElemType::DiagDown25LeftBanked + { 4, 4, 16, 0, -32, 32 }, // TrackElemType::DiagDown25RightBanked + { 0, 7, 0, 48, -64, -32 }, // TrackElemType::LeftEighthBankToDiagUp25 + { 0, 4, 0, 48, -64, 32 }, // TrackElemType::RightEighthBankToDiagUp25 + { 0, 7, 0,-48, -64, -32 }, // TrackElemType::LeftEighthBankToDiagDown25 + { 0, 4, 0,-48, -64, 32 }, // TrackElemType::RightEighthBankToDiagDown25 + { 4, 0, 0, 48, -64, 32 }, // TrackElemType::LeftEighthBankToOrthogonalUp25 + { 4, 1, 0, 48, -32, 64 }, // TrackElemType::RightEighthBankToOrthogonalUp25 + { 4, 0, 0,-48, -64, 32 }, // TrackElemType::LeftEighthBankToOrthogonalDown25 + { 4, 1, 0,-48, -32, 64 }, // TrackElemType::RightEighthBankToOrthogonalDown25 + { 4, 4, 0, 0, -32, 32 }, // TrackElemType::DiagBrakes + { 4, 4, 0, 0, -32, 32 }, // TrackElemType::DiagBlockBrakes + }; + static_assert(std::size(_trackCoordinates) == TrackElemType::Count); + + /** rct2: 0x0099BA64 */ + static constexpr uint8_t TrackSequenceProperties[][kMaxSequencesPerPiece] = { + { 0 }, + /* TrackElemType::EndStation */ { TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_3 | TRACK_SEQUENCE_FLAG_ORIGIN | TRACK_SEQUENCE_FLAG_DISALLOW_DOORS, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* TrackElemType::BeginStation */ { TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_3 | TRACK_SEQUENCE_FLAG_ORIGIN | TRACK_SEQUENCE_FLAG_DISALLOW_DOORS, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* TrackElemType::MiddleStation */ { TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_3 | TRACK_SEQUENCE_FLAG_ORIGIN | TRACK_SEQUENCE_FLAG_DISALLOW_DOORS, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + /* TrackElemType::TowerBase */ { TRACK_SEQUENCE_FLAG_ORIGIN, TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_DIRECTION_3, TRACK_SEQUENCE_FLAG_DIRECTION_0, TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_DIRECTION_1, TRACK_SEQUENCE_FLAG_DIRECTION_3, TRACK_SEQUENCE_FLAG_DIRECTION_1, TRACK_SEQUENCE_FLAG_DIRECTION_2 | TRACK_SEQUENCE_FLAG_DIRECTION_3, TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_2, TRACK_SEQUENCE_FLAG_DIRECTION_2, 0, 0, 0, 0, 0, 0, 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + /* TrackElemType::Maze */ { TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_2 | TRACK_SEQUENCE_FLAG_DIRECTION_3 | TRACK_SEQUENCE_FLAG_ORIGIN, TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_2 | TRACK_SEQUENCE_FLAG_DIRECTION_3 | TRACK_SEQUENCE_FLAG_ORIGIN, TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_2 | TRACK_SEQUENCE_FLAG_DIRECTION_3 | TRACK_SEQUENCE_FLAG_ORIGIN, TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_2 | TRACK_SEQUENCE_FLAG_DIRECTION_3 | TRACK_SEQUENCE_FLAG_ORIGIN, TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_2 | TRACK_SEQUENCE_FLAG_DIRECTION_3 | TRACK_SEQUENCE_FLAG_ORIGIN, TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_2 | TRACK_SEQUENCE_FLAG_DIRECTION_3 | TRACK_SEQUENCE_FLAG_ORIGIN, TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_2 | TRACK_SEQUENCE_FLAG_DIRECTION_3 | TRACK_SEQUENCE_FLAG_ORIGIN, TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_2 | TRACK_SEQUENCE_FLAG_DIRECTION_3 | TRACK_SEQUENCE_FLAG_ORIGIN, TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_2 | TRACK_SEQUENCE_FLAG_DIRECTION_3 | TRACK_SEQUENCE_FLAG_ORIGIN, TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_2 | TRACK_SEQUENCE_FLAG_DIRECTION_3 | TRACK_SEQUENCE_FLAG_ORIGIN, TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_2 | TRACK_SEQUENCE_FLAG_DIRECTION_3 | TRACK_SEQUENCE_FLAG_ORIGIN, TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_2 | TRACK_SEQUENCE_FLAG_DIRECTION_3 | TRACK_SEQUENCE_FLAG_ORIGIN, TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_2 | TRACK_SEQUENCE_FLAG_DIRECTION_3 | TRACK_SEQUENCE_FLAG_ORIGIN, TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_2 | TRACK_SEQUENCE_FLAG_DIRECTION_3 | TRACK_SEQUENCE_FLAG_ORIGIN, TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_2 | TRACK_SEQUENCE_FLAG_DIRECTION_3 | TRACK_SEQUENCE_FLAG_ORIGIN, TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_2 | TRACK_SEQUENCE_FLAG_DIRECTION_3 | TRACK_SEQUENCE_FLAG_ORIGIN }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + /* TrackElemType::SpinningTunnel */ { TRACK_SEQUENCE_FLAG_DISALLOW_DOORS, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + { 0 }, + /* TrackElemType::FlatTrack1x4A */ { TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_3 | TRACK_SEQUENCE_FLAG_ORIGIN, 0, TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* TrackElemType::FlatTrack2x2 */ { TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_DIRECTION_3 | TRACK_SEQUENCE_FLAG_ORIGIN, TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_DIRECTION_1, TRACK_SEQUENCE_FLAG_DIRECTION_2 | TRACK_SEQUENCE_FLAG_DIRECTION_3, TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* TrackElemType::FlatTrack4x4 */ { TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_DIRECTION_3 | TRACK_SEQUENCE_FLAG_ORIGIN, TRACK_SEQUENCE_FLAG_DIRECTION_0, TRACK_SEQUENCE_FLAG_DIRECTION_0, TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_DIRECTION_1, TRACK_SEQUENCE_FLAG_DIRECTION_3, 0, 0, TRACK_SEQUENCE_FLAG_DIRECTION_1, TRACK_SEQUENCE_FLAG_DIRECTION_3, 0, 0, TRACK_SEQUENCE_FLAG_DIRECTION_1, TRACK_SEQUENCE_FLAG_DIRECTION_2 | TRACK_SEQUENCE_FLAG_DIRECTION_3, TRACK_SEQUENCE_FLAG_DIRECTION_2, TRACK_SEQUENCE_FLAG_DIRECTION_2, TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_2 }, + /* TrackElemType::FlatTrack2x4 */ { TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_DIRECTION_3 | TRACK_SEQUENCE_FLAG_ORIGIN, TRACK_SEQUENCE_FLAG_DIRECTION_0, TRACK_SEQUENCE_FLAG_DIRECTION_0, TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_DIRECTION_1, TRACK_SEQUENCE_FLAG_DIRECTION_2 | TRACK_SEQUENCE_FLAG_DIRECTION_3, TRACK_SEQUENCE_FLAG_DIRECTION_2, TRACK_SEQUENCE_FLAG_DIRECTION_2, TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_2, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* TrackElemType::FlatTrack1x5 */ { TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_3 | TRACK_SEQUENCE_FLAG_ORIGIN, 0, TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_3, TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* TrackElemType::FlatTrack1x1A */ { TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_ORIGIN | TRACK_SEQUENCE_FLAG_CONNECTS_TO_PATH, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* TrackElemType::FlatTrack1x4B */ { TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_ORIGIN, 0, TRACK_SEQUENCE_FLAG_DIRECTION_1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* TrackElemType::FlatTrack1x1B */ { TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_2 | TRACK_SEQUENCE_FLAG_DIRECTION_3 | TRACK_SEQUENCE_FLAG_ORIGIN | TRACK_SEQUENCE_FLAG_CONNECTS_TO_PATH, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* TrackElemType::FlatTrack1x4C */ { TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_3 | TRACK_SEQUENCE_FLAG_ORIGIN, TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_3, TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_3, TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_2 | TRACK_SEQUENCE_FLAG_DIRECTION_3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + /* TrackElemType::FlatTrack3x3 */ { TRACK_SEQUENCE_FLAG_ORIGIN, TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_DIRECTION_3, TRACK_SEQUENCE_FLAG_DIRECTION_0, TRACK_SEQUENCE_FLAG_DIRECTION_0 | TRACK_SEQUENCE_FLAG_DIRECTION_1, TRACK_SEQUENCE_FLAG_DIRECTION_3, TRACK_SEQUENCE_FLAG_DIRECTION_1, TRACK_SEQUENCE_FLAG_DIRECTION_2 | TRACK_SEQUENCE_FLAG_DIRECTION_3, TRACK_SEQUENCE_FLAG_DIRECTION_1 | TRACK_SEQUENCE_FLAG_DIRECTION_2, TRACK_SEQUENCE_FLAG_DIRECTION_2, 0, 0, 0, 0, 0, 0, 0 }, + { 0 }, // TrackElemType::LeftCorkscrewUp + { 0 }, // TrackElemType::RightCorkscrewUp + { 0 }, // TrackElemType::LeftCorkscrewDown + { 0 }, // TrackElemType::RightCorkscrewDown + { 0 }, // TrackElemType::LeftMediumHalfLoopUp + { 0 }, // TrackElemType::RightMediumHalfLoopUp + { 0 }, // TrackElemType::LeftMediumHalfLoopDown + { 0 }, // TrackElemType::RightMediumHalfLoopDown + { 0 }, // TrackElemType::LeftZeroGRollUp + { 0 }, // TrackElemType::RightZeroGRollUp + { 0 }, // TrackElemType::LeftZeroGRollDown + { 0 }, // TrackElemType::RightZeroGRollDown + { 0 }, // TrackElemType::LeftLargeZeroGRollUp + { 0 }, // TrackElemType::RightLargeZeroGRollUp + { 0 }, // TrackElemType::LeftLargeZeroGRollDown + { 0 }, // TrackElemType::RightLargeZeroGRollDown + + /* LeftFlyerLargeHalfLoopUninvertedUp */ { 0 }, + /* RightFlyerLargeHalfLoopUninvertedUp */ { 0 }, + /* LeftFlyerLargeHalfLoopInvertedDown */ { 0 }, + /* RightFlyerLargeHalfLoopInvertedDown */ { 0 }, + /* LeftFlyerLargeHalfLoopInvertedUp */ { 0 }, + /* RightFlyerLargeHalfLoopInvertedUp */ { 0 }, + /* LeftFlyerLargeHalfLoopUninvertedDown */ { 0 }, + /* RightFlyerLargeHalfLoopUninvertedDown */ { 0 }, + /* FlyerHalfLoopInvertedUp */ { 0 }, + /* FlyerHalfLoopUninvertedUp */ { 0 }, + { 0 }, // TrackElemType::LeftEighthToDiagUp25 + { 0 }, // TrackElemType::RightEighthToDiagUp25 + { 0 }, // TrackElemType::LeftEighthToDiagDown25 + { 0 }, // TrackElemType::RightEighthToDiagDown25 + { 0 }, // TrackElemType::LeftEighthToOrthogonalUp25 + { 0 }, // TrackElemType::RightEighthToOrthogonalUp25 + { 0 }, // TrackElemType::LeftEighthToOrthogonalDown25 + { 0 }, // TrackElemType::RightEighthToOrthogonalDown25 + { 0 }, // TrackElemType::DiagUp25ToLeftBankedUp25 + { 0 }, // TrackElemType::DiagUp25ToRightBankedUp25 + { 0 }, // TrackElemType::DiagLeftBankedUp25ToUp25 + { 0 }, // TrackElemType::DiagRightBankedUp25ToUp25 + { 0 }, // TrackElemType::DiagDown25ToLeftBankedDown25 + { 0 }, // TrackElemType::DiagDown25ToRightBankedDown25 + { 0 }, // TrackElemType::DiagLeftBankedDown25ToDown25 + { 0 }, // TrackElemType::DiagRightBankedDown25ToDown25 + { 0 }, // TrackElemType::DiagLeftBankedFlatToLeftBankedUp25 + { 0 }, // TrackElemType::DiagRightBankedFlatToRightBankedUp25 + { 0 }, // TrackElemType::DiagLeftBankedUp25ToLeftBankedFlat + { 0 }, // TrackElemType::DiagRightBankedUp25ToRightBankedFlat + { 0 }, // TrackElemType::DiagLeftBankedFlatToLeftBankedDown25 + { 0 }, // TrackElemType::DiagRightBankedFlatToRightBankedDown25 + { 0 }, // TrackElemType::DiagLeftBankedDown25ToLeftBankedFlat + { 0 }, // TrackElemType::DiagRightBankedDown25ToRightBankedFlat + { 0 }, // TrackElemType::DiagFlatToLeftBankedUp25 + { 0 }, // TrackElemType::DiagFlatToRightBankedUp25 + { 0 }, // TrackElemType::DiagLeftBankedUp25ToFlat + { 0 }, // TrackElemType::DiagRightBankedUp25ToFlat + { 0 }, // TrackElemType::DiagFlatToLeftBankedDown25 + { 0 }, // TrackElemType::DiagFlatToRightBankedDown25 + { 0 }, // TrackElemType::DiagLeftBankedDown25ToFlat + { 0 }, // TrackElemType::DiagRightBankedDown25ToFlat + { 0 }, // TrackElemType::DiagUp25LeftBanked + { 0 }, // TrackElemType::DiagUp25RightBanked + { 0 }, // TrackElemType::DiagDown25LeftBanked + { 0 }, // TrackElemType::DiagDown25RightBanked + { 0 }, // TrackElemType::LeftEighthBankToDiagUp25 + { 0 }, // TrackElemType::RightEighthBankToDiagUp25 + { 0 }, // TrackElemType::LeftEighthBankToDiagDown25 + { 0 }, // TrackElemType::RightEighthBankToDiagDown25 + { 0 }, // TrackElemType::LeftEighthBankToOrthogonalUp25 + { 0 }, // TrackElemType::RightEighthBankToOrthogonalUp25 + { 0 }, // TrackElemType::LeftEighthBankToOrthogonalDown25 + { 0 }, // TrackElemType::RightEighthBankToOrthogonalDown25 + /* DiagonalBrakes */ { 0 }, + /* DiagonalBlockBrakes */ { 0 }, + }; + static_assert(std::size(TrackSequenceProperties) == TrackElemType::Count); - using WoodenSupportsBySequence = std::array; - static constexpr std::array kTrackSequenceWoodenSupports = { { - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw } }, // TrackElemType::Flat - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw } }, // TrackElemType::EndStation - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw } }, // TrackElemType::BeginStation - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw } }, // TrackElemType::MiddleStation - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25Deg } }, // Up25 - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up60Deg } }, // Up60 - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::FlatToUp25Deg } }, // FlatToUp25 - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25DegToUp60Deg } }, // Up25ToUp60 - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up60DegToUp25Deg } }, // Up60ToUp25 - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25DegToFlat } }, // Up25ToFlat - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25Deg } }, // Down25 - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up60Deg } }, // Down60 - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25DegToFlat } }, // FlatToDown25 - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up60DegToUp25Deg } }, // Down25ToDown60 - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25DegToUp60Deg } }, // Down60ToDown25 - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::FlatToUp25Deg } }, // Down25ToFlat - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::Null }, { WoodenSupportSubType::Corner2 }, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Null }, { WoodenSupportSubType::Corner2 }, { WoodenSupportSubType::NwSe } }, // LeftQuarterTurn5Tiles - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::Null }, { WoodenSupportSubType::Corner2 }, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Null }, { WoodenSupportSubType::Corner2 }, { WoodenSupportSubType::NwSe } }, // RightQuarterTurn5Tiles - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw } }, // FlatToLeftBank - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw } }, // FlatToRightBank - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw } }, // LeftBankToFlat - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw } }, // RightBankToFlat - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::Null }, { WoodenSupportSubType::Corner2 }, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Null }, { WoodenSupportSubType::Corner2 }, { WoodenSupportSubType::NwSe } }, // BankedLeftQuarterTurn5Tiles - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::Null }, { WoodenSupportSubType::Corner2 }, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Null }, { WoodenSupportSubType::Corner2 }, { WoodenSupportSubType::NwSe } }, // BankedRightQuarterTurn5Tiles - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::FlatToUp25Deg } }, // LeftBankToUp25 - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::FlatToUp25Deg } }, // RightBankToUp25 - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25DegToFlat } }, // Up25ToLeftBank - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25DegToFlat } }, // Up25ToRightBank - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25DegToFlat } }, // LeftBankToDown25 - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25DegToFlat } }, // RightBankToDown25 - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25DegToFlat } }, // Down25ToLeftBank - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25DegToFlat } }, // Down25ToRightBank - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw } }, // LeftBank - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw } }, // RightBank - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25Deg }, {}, { WoodenSupportSubType::Corner3 }, { WoodenSupportSubType::Corner1 }, {}, { WoodenSupportSubType::Corner3 }, { WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25Deg } }, // LeftQuarterTurn5TilesUp25 - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25Deg }, {}, { WoodenSupportSubType::Corner2 }, { WoodenSupportSubType::Corner0 }, {}, { WoodenSupportSubType::Corner2 }, { WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25Deg } }, // RightQuarterTurn5TilesUp25 - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25Deg }, {}, { WoodenSupportSubType::Corner2 }, { WoodenSupportSubType::Corner0 }, {}, { WoodenSupportSubType::Corner2 }, { WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25Deg } }, // LeftQuarterTurn5TilesDown25 - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25Deg }, {}, { WoodenSupportSubType::Corner2 }, { WoodenSupportSubType::Corner0 }, {}, { WoodenSupportSubType::Corner2 }, { WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25Deg } }, // RightQuarterTurn5TilesDown25 - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::Corner3 }, { WoodenSupportSubType::Corner1 }, { WoodenSupportSubType::NeSw } }, // SBendLeft - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::Corner2 }, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::NeSw } }, // SBendRight - {}, // LeftVerticalLoop - {}, // RightVerticalLoop - { SequenceWoodenSupport{ WoodenSupportSubType::Corner3 }, {}, {}, { WoodenSupportSubType::Corner3 } }, // LeftQuarterTurn3Tiles - { SequenceWoodenSupport{ WoodenSupportSubType::Corner2 }, {}, {}, { WoodenSupportSubType::Corner2 } }, // RightQuarterTurn3Tiles - { SequenceWoodenSupport{ WoodenSupportSubType::Corner3 }, {}, {}, { WoodenSupportSubType::Corner3 } }, // LeftBankedQuarterTurn3Tiles - { SequenceWoodenSupport{ WoodenSupportSubType::Corner3 }, {}, {}, { WoodenSupportSubType::Corner3 } }, // RightBankedQuarterTurn3Tiles - { SequenceWoodenSupport{ WoodenSupportSubType::Corner3 }, {}, {}, { WoodenSupportSubType::Corner3 } }, // LeftQuarterTurn3TilesUp25 - { SequenceWoodenSupport{ WoodenSupportSubType::Corner3 }, {}, {}, { WoodenSupportSubType::Corner3 } }, // RightQuarterTurn3TilesUp25 - { SequenceWoodenSupport{ WoodenSupportSubType::Corner3 }, {}, {}, { WoodenSupportSubType::Corner3 } }, // LeftQuarterTurn3TilesDown25 - { SequenceWoodenSupport{ WoodenSupportSubType::Corner3 }, {}, {}, { WoodenSupportSubType::Corner3 } }, // RightQuarterTurn3TilesDown25 - { SequenceWoodenSupport{ WoodenSupportSubType::Corner3 } }, // LeftQuarterTurn1Tile - { SequenceWoodenSupport{ WoodenSupportSubType::Corner3 } }, // RightQuarterTurn1Tile - {}, // LeftTwistDownToUp - {}, // RightTwistDownToUp - {}, // LeftTwistUpToDown - {}, // RightTwistUpToDown - {}, // HalfLoopUp - {}, // HalfLoopDown - {}, // LeftCorkscrewUp - {}, // RightCorkscrewUp - {}, // LeftCorkscrewDown - {}, // RightCorkscrewDown - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::FlatToUp60Deg } }, // FlatToUp60 - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up60DegToFlat } }, // Up60ToFlat - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up60DegToFlat } }, // FlatToDown60 - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::FlatToUp60Deg } }, // Down60ToFlat - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw } }, // TowerBase - {}, // TowerSection - {}, // FlatCovered - {}, // Up25Covered - {}, // Up60Covered - {}, // FlatToUp25Covered - {}, // Up25ToUp60Covered - {}, // Up60ToUp25Covered - {}, // Up25ToFlatCovered - {}, // Down25Covered - {}, // Down60Covered - {}, // FlatToDown25Covered - {}, // Down25ToDown60Covered - {}, // Down60ToDown25Covered - {}, // Down25ToFlatCovered - {}, // LeftQuarterTurn5TilesCovered - {}, // RightQuarterTurn5TilesCovered - {}, // SBendLeftCovered - {}, // SBendRightCovered - {}, // LeftQuarterTurn3TilesCovered - {}, // RightQuarterTurn3TilesCovered - { SequenceWoodenSupport{ WoodenSupportSubType::Corner3 }, { WoodenSupportSubType::Corner1 }, {}, { WoodenSupportSubType::Corner3 }, { WoodenSupportSubType::Corner2 }, { WoodenSupportSubType::Corner0 }, {}, { WoodenSupportSubType::Corner2 } }, // LeftHalfBankedHelixUpSmall - { SequenceWoodenSupport{ WoodenSupportSubType::Corner2 }, { WoodenSupportSubType::Corner0 }, {}, { WoodenSupportSubType::Corner2 }, { WoodenSupportSubType::Corner3 }, { WoodenSupportSubType::Corner1 }, {}, { WoodenSupportSubType::Corner3 } }, // RightHalfBankedHelixUpSmall - { SequenceWoodenSupport{ WoodenSupportSubType::Corner2 }, { WoodenSupportSubType::Corner0 }, {}, { WoodenSupportSubType::Corner2 }, { WoodenSupportSubType::Corner3 }, { WoodenSupportSubType::Corner1 }, {}, { WoodenSupportSubType::Corner3 } }, // LeftHalfBankedHelixDownSmall - { SequenceWoodenSupport{ WoodenSupportSubType::Corner3 }, { WoodenSupportSubType::Corner1 }, {}, { WoodenSupportSubType::Corner3 }, { WoodenSupportSubType::Corner2 }, { WoodenSupportSubType::Corner0 }, {}, { WoodenSupportSubType::Corner2 } }, // RightHalfBankedHelixDownSmall - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, {}, { WoodenSupportSubType::Corner3 }, { WoodenSupportSubType::Corner1 }, {}, { WoodenSupportSubType::Corner3 }, { WoodenSupportSubType::NwSe }, { WoodenSupportSubType::NwSe }, {}, { WoodenSupportSubType::Corner2 }, { WoodenSupportSubType::Corner0 }, {}, { WoodenSupportSubType::Corner2 }, { WoodenSupportSubType::NeSw } }, // LeftHalfBankedHelixUpLarge - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, {}, { WoodenSupportSubType::Corner2 }, { WoodenSupportSubType::Corner0 }, {}, { WoodenSupportSubType::Corner2 }, { WoodenSupportSubType::NwSe }, { WoodenSupportSubType::NwSe }, {}, { WoodenSupportSubType::Corner3 }, { WoodenSupportSubType::Corner1 }, {}, { WoodenSupportSubType::Corner3 }, { WoodenSupportSubType::NeSw } }, // RightHalfBankedHelixUpLarge - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, {}, { WoodenSupportSubType::Corner2 }, { WoodenSupportSubType::Corner0 }, {}, { WoodenSupportSubType::Corner2 }, { WoodenSupportSubType::NwSe }, { WoodenSupportSubType::NwSe }, {}, { WoodenSupportSubType::Corner3 }, { WoodenSupportSubType::Corner1 }, {}, { WoodenSupportSubType::Corner3 }, { WoodenSupportSubType::NeSw } }, // LeftHalfBankedHelixDownLarge - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, {}, { WoodenSupportSubType::Corner3 }, { WoodenSupportSubType::Corner1 }, {}, { WoodenSupportSubType::Corner3 }, { WoodenSupportSubType::NwSe }, { WoodenSupportSubType::NwSe }, {}, { WoodenSupportSubType::Corner2 }, { WoodenSupportSubType::Corner0 }, {}, { WoodenSupportSubType::Corner2 }, { WoodenSupportSubType::NeSw } }, // RightHalfBankedHelixDownLarge - { SequenceWoodenSupport{ WoodenSupportSubType::Corner3 } }, // LeftQuarterTurn1TileUp60 - { SequenceWoodenSupport{ WoodenSupportSubType::Corner2 } }, // RightQuarterTurn1TileUp60 - { SequenceWoodenSupport{ WoodenSupportSubType::Corner2 } }, // LeftQuarterTurn1TileDown60 - { SequenceWoodenSupport{ WoodenSupportSubType::Corner3 } }, // RightQuarterTurn1TileDown60 - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw } }, // Brakes - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw } }, // Booster - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw } }, // Maze - {}, // LeftQuarterBankedHelixLargeUp - {}, // RightQuarterBankedHelixLargeUp - {}, // LeftQuarterBankedHelixLargeDown - {}, // RightQuarterBankedHelixLargeDown - {}, // LeftQuarterHelixLargeUp - {}, // RightQuarterHelixLargeUp - {}, // LeftQuarterHelixLargeDown - {}, // RightQuarterHelixLargeDown - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25Deg } }, // Up25LeftBanked - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25Deg } }, // Up25RightBanked - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw } }, // Waterfall - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw } }, // Rapids - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw } }, // OnRidePhoto - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25Deg } }, // Down25LeftBanked - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25Deg } }, // Down25RightBanked - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw } }, // Watersplash - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::FlatToUp60DegLongBaseSeq0 }, SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::FlatToUp60DegLongBaseSeq1 }, SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::FlatToUp60DegLongBaseSeq2 }, SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::FlatToUp60DegLongBaseSeq3 } }, // FlatToUp60LongBase - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up60DegToFlatLongBaseSeq0 }, SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up60DegToFlatLongBaseSeq1 }, SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up60DegToFlatLongBaseSeq2 }, SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up60DegToFlatLongBaseSeq3 } }, // Up60ToFlatLongBase - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw } }, // Whirlpool - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::FlatToUp60DegLongBaseSeq0 }, SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::FlatToUp60DegLongBaseSeq1 }, SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::FlatToUp60DegLongBaseSeq2 }, SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::FlatToUp60DegLongBaseSeq3 } }, // Down60ToFlatLongBase - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up60DegToFlatLongBaseSeq0 }, SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up60DegToFlatLongBaseSeq1 }, SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up60DegToFlatLongBaseSeq2 }, SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up60DegToFlatLongBaseSeq3 } }, // FlatToDown60LongBase - {}, // CableLiftHill - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw } }, // ReverseFreefallSlope - {}, // ReverseFreefallVertical - {}, // Up90 - {}, // Down90 - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw } }, // Up60ToUp90 - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw } }, // Down90ToDown60 - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw } }, // Up90ToUp60 - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw } }, // Down60ToDown90 - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw } }, // BrakeForDrop - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::Corner1 }, { WoodenSupportSubType::Corner3 }, {} }, // LeftEighthToDiag - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // RightEighthToDiag - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // LeftEighthToOrthogonal - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::Corner1 }, { WoodenSupportSubType::Corner3 }, {} }, // RightEighthToOrthogonal - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::Corner1 }, { WoodenSupportSubType::Corner3 }, {} }, // LeftEighthBankToDiag - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // RightEighthBankToDiag - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // LeftEighthBankToOrthogonal - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::Corner1 }, { WoodenSupportSubType::Corner3 }, {} }, // RightEighthBankToOrthogonal - { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagFlat - { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagUp25 - { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagUp60 - { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagFlatToUp25 - { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagUp25ToUp60 - { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagUp60ToUp25 - { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagUp25ToFlat - { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagDown25 - { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagDown60 - { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagFlatToDown25 - { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagDown25ToDown60 - { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagDown60ToDown25 - { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagDown25ToFlat - { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagFlatToUp60 - { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagUp60ToFlat - { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagFlatToDown60 - { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagDown60ToFlat - { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagFlatToLeftBank - { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagFlatToRightBank - { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagLeftBankToFlat - { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagRightBankToFlat - { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagLeftBankToUp25 - { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagRightBankToUp25 - { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagUp25ToLeftBank - { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagUp25ToRightBank - { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagLeftBankToDown25 - { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagRightBankToDown25 - { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagDown25ToLeftBank - { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagDown25ToRightBank - { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagLeftBank - { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagRightBank - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw } }, // LogFlumeReverser - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw } }, // SpinningTunnel - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw } }, // LeftBarrelRollUpToDown - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw } }, // RightBarrelRollUpToDown - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw } }, // LeftBarrelRollDownToUp - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw } }, // RightBarrelRollDownToUp - { SequenceWoodenSupport{ WoodenSupportSubType::Corner3 }, {}, {}, { WoodenSupportSubType::Corner3 } }, // LeftBankToLeftQuarterTurn3TilesUp25 - { SequenceWoodenSupport{ WoodenSupportSubType::Corner2 }, {}, {}, { WoodenSupportSubType::Corner2 } }, // RightBankToRightQuarterTurn3TilesUp25 - { SequenceWoodenSupport{ WoodenSupportSubType::Corner3 }, {}, {}, { WoodenSupportSubType::Corner3 } }, // LeftQuarterTurn3TilesDown25ToLeftBank - { SequenceWoodenSupport{ WoodenSupportSubType::Corner2 }, {}, {}, { WoodenSupportSubType::Corner2 } }, // RightQuarterTurn3TilesDown25ToRightBank - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25Deg } }, // PoweredLift - {}, // LeftLargeHalfLoopUp - {}, // RightLargeHalfLoopUp - {}, // LeftLargeHalfLoopDown - {}, // RightLargeHalfLoopDown - {}, // LeftFlyerTwistUp - {}, // RightFlyerTwistUp - {}, // LeftFlyerTwistDown - {}, // RightFlyerTwistDown - {}, // FlyerHalfLoopUninvertedUp - {}, // FlyerHalfLoopInvertedDown - {}, // LeftFlyerCorkscrewUp - {}, // RightFlyerCorkscrewUp - {}, // LeftFlyerCorkscrewDown - {}, // RightFlyerCorkscrewDown - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::FlatToUp25Deg }, { WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25DegToFlat }, { WoodenSupportSubType::NeSw }, {} }, // HeartLineTransferUp - { SequenceWoodenSupport{}, { WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25DegToFlat }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw, WoodenSupportTransitionType::FlatToUp25Deg } }, // HeartLineTransferDown - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw } }, // LeftHeartLineRoll - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw } }, // RightHeartLineRoll - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw } }, // MinigolfHoleA - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw } }, // MinigolfHoleB - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw } }, // MinigolfHoleC - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NwSe } }, // MinigolfHoleD - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NwSe } }, // MinigolfHoleE - {}, // MultiDimInvertedFlatToDown90QuarterLoop - { SequenceWoodenSupport{}, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw } }, // Up90ToInvertedFlatQuarterLoop - { SequenceWoodenSupport{}, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw } }, // InvertedFlatToDown90QuarterLoop - { SequenceWoodenSupport{ WoodenSupportSubType::Corner3 }, {}, {}, { WoodenSupportSubType::Corner3 } }, // LeftCurvedLiftHill - { SequenceWoodenSupport{ WoodenSupportSubType::Corner3 }, {}, {}, { WoodenSupportSubType::Corner3 } }, // RightCurvedLiftHill - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw } }, // LeftReverser - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw } }, // RightReverser - {}, // AirThrustTopCap - {}, // AirThrustVerticalDown - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw } }, // AirThrustVerticalDownToLevel - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw } }, // BlockBrakes - { SequenceWoodenSupport{ WoodenSupportSubType::Corner3 }, {}, {}, { WoodenSupportSubType::Corner3 } }, // LeftBankedQuarterTurn3TileUp25 - { SequenceWoodenSupport{ WoodenSupportSubType::Corner2 }, {}, {}, { WoodenSupportSubType::Corner2 } }, // RightBankedQuarterTurn3TileUp25 - { SequenceWoodenSupport{ WoodenSupportSubType::Corner2 }, {}, {}, { WoodenSupportSubType::Corner2 } }, // LeftBankedQuarterTurn3TileDown25 - { SequenceWoodenSupport{ WoodenSupportSubType::Corner3 }, {}, {}, { WoodenSupportSubType::Corner3 } }, // RightBankedQuarterTurn3TileDown25 + using WoodenSupportsBySequence = std::array; + static constexpr std::array kTrackSequenceWoodenSupports = { { + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw } }, // TrackElemType::Flat + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw } }, // TrackElemType::EndStation + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw } }, // TrackElemType::BeginStation + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw } }, // TrackElemType::MiddleStation + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25Deg } }, // Up25 + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up60Deg } }, // Up60 + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::FlatToUp25Deg } }, // FlatToUp25 + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25DegToUp60Deg } }, // Up25ToUp60 + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up60DegToUp25Deg } }, // Up60ToUp25 + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25DegToFlat } }, // Up25ToFlat + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25Deg } }, // Down25 + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up60Deg } }, // Down60 + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25DegToFlat } }, // FlatToDown25 + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up60DegToUp25Deg } }, // Down25ToDown60 + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25DegToUp60Deg } }, // Down60ToDown25 + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::FlatToUp25Deg } }, // Down25ToFlat + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::Null }, { WoodenSupportSubType::Corner2 }, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Null }, { WoodenSupportSubType::Corner2 }, { WoodenSupportSubType::NwSe } }, // LeftQuarterTurn5Tiles + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::Null }, { WoodenSupportSubType::Corner2 }, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Null }, { WoodenSupportSubType::Corner2 }, { WoodenSupportSubType::NwSe } }, // RightQuarterTurn5Tiles + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw } }, // FlatToLeftBank + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw } }, // FlatToRightBank + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw } }, // LeftBankToFlat + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw } }, // RightBankToFlat + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::Null }, { WoodenSupportSubType::Corner2 }, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Null }, { WoodenSupportSubType::Corner2 }, { WoodenSupportSubType::NwSe } }, // BankedLeftQuarterTurn5Tiles + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::Null }, { WoodenSupportSubType::Corner2 }, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Null }, { WoodenSupportSubType::Corner2 }, { WoodenSupportSubType::NwSe } }, // BankedRightQuarterTurn5Tiles + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::FlatToUp25Deg } }, // LeftBankToUp25 + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::FlatToUp25Deg } }, // RightBankToUp25 + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25DegToFlat } }, // Up25ToLeftBank + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25DegToFlat } }, // Up25ToRightBank + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25DegToFlat } }, // LeftBankToDown25 + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25DegToFlat } }, // RightBankToDown25 + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25DegToFlat } }, // Down25ToLeftBank + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25DegToFlat } }, // Down25ToRightBank + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw } }, // LeftBank + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw } }, // RightBank + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25Deg }, {}, { WoodenSupportSubType::Corner3 }, { WoodenSupportSubType::Corner1 }, {}, { WoodenSupportSubType::Corner3 }, { WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25Deg } }, // LeftQuarterTurn5TilesUp25 + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25Deg }, {}, { WoodenSupportSubType::Corner2 }, { WoodenSupportSubType::Corner0 }, {}, { WoodenSupportSubType::Corner2 }, { WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25Deg } }, // RightQuarterTurn5TilesUp25 + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25Deg }, {}, { WoodenSupportSubType::Corner2 }, { WoodenSupportSubType::Corner0 }, {}, { WoodenSupportSubType::Corner2 }, { WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25Deg } }, // LeftQuarterTurn5TilesDown25 + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25Deg }, {}, { WoodenSupportSubType::Corner2 }, { WoodenSupportSubType::Corner0 }, {}, { WoodenSupportSubType::Corner2 }, { WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25Deg } }, // RightQuarterTurn5TilesDown25 + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::Corner3 }, { WoodenSupportSubType::Corner1 }, { WoodenSupportSubType::NeSw } }, // SBendLeft + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::Corner2 }, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::NeSw } }, // SBendRight + {}, // LeftVerticalLoop + {}, // RightVerticalLoop + { SequenceWoodenSupport{ WoodenSupportSubType::Corner3 }, {}, {}, { WoodenSupportSubType::Corner3 } }, // LeftQuarterTurn3Tiles + { SequenceWoodenSupport{ WoodenSupportSubType::Corner2 }, {}, {}, { WoodenSupportSubType::Corner2 } }, // RightQuarterTurn3Tiles + { SequenceWoodenSupport{ WoodenSupportSubType::Corner3 }, {}, {}, { WoodenSupportSubType::Corner3 } }, // LeftBankedQuarterTurn3Tiles + { SequenceWoodenSupport{ WoodenSupportSubType::Corner3 }, {}, {}, { WoodenSupportSubType::Corner3 } }, // RightBankedQuarterTurn3Tiles + { SequenceWoodenSupport{ WoodenSupportSubType::Corner3 }, {}, {}, { WoodenSupportSubType::Corner3 } }, // LeftQuarterTurn3TilesUp25 + { SequenceWoodenSupport{ WoodenSupportSubType::Corner3 }, {}, {}, { WoodenSupportSubType::Corner3 } }, // RightQuarterTurn3TilesUp25 + { SequenceWoodenSupport{ WoodenSupportSubType::Corner3 }, {}, {}, { WoodenSupportSubType::Corner3 } }, // LeftQuarterTurn3TilesDown25 + { SequenceWoodenSupport{ WoodenSupportSubType::Corner3 }, {}, {}, { WoodenSupportSubType::Corner3 } }, // RightQuarterTurn3TilesDown25 + { SequenceWoodenSupport{ WoodenSupportSubType::Corner3 } }, // LeftQuarterTurn1Tile + { SequenceWoodenSupport{ WoodenSupportSubType::Corner3 } }, // RightQuarterTurn1Tile + {}, // LeftTwistDownToUp + {}, // RightTwistDownToUp + {}, // LeftTwistUpToDown + {}, // RightTwistUpToDown + {}, // HalfLoopUp + {}, // HalfLoopDown + {}, // LeftCorkscrewUp + {}, // RightCorkscrewUp + {}, // LeftCorkscrewDown + {}, // RightCorkscrewDown + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::FlatToUp60Deg } }, // FlatToUp60 + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up60DegToFlat } }, // Up60ToFlat + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up60DegToFlat } }, // FlatToDown60 + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::FlatToUp60Deg } }, // Down60ToFlat + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw } }, // TowerBase + {}, // TowerSection + {}, // FlatCovered + {}, // Up25Covered + {}, // Up60Covered + {}, // FlatToUp25Covered + {}, // Up25ToUp60Covered + {}, // Up60ToUp25Covered + {}, // Up25ToFlatCovered + {}, // Down25Covered + {}, // Down60Covered + {}, // FlatToDown25Covered + {}, // Down25ToDown60Covered + {}, // Down60ToDown25Covered + {}, // Down25ToFlatCovered + {}, // LeftQuarterTurn5TilesCovered + {}, // RightQuarterTurn5TilesCovered + {}, // SBendLeftCovered + {}, // SBendRightCovered + {}, // LeftQuarterTurn3TilesCovered + {}, // RightQuarterTurn3TilesCovered + { SequenceWoodenSupport{ WoodenSupportSubType::Corner3 }, { WoodenSupportSubType::Corner1 }, {}, { WoodenSupportSubType::Corner3 }, { WoodenSupportSubType::Corner2 }, { WoodenSupportSubType::Corner0 }, {}, { WoodenSupportSubType::Corner2 } }, // LeftHalfBankedHelixUpSmall + { SequenceWoodenSupport{ WoodenSupportSubType::Corner2 }, { WoodenSupportSubType::Corner0 }, {}, { WoodenSupportSubType::Corner2 }, { WoodenSupportSubType::Corner3 }, { WoodenSupportSubType::Corner1 }, {}, { WoodenSupportSubType::Corner3 } }, // RightHalfBankedHelixUpSmall + { SequenceWoodenSupport{ WoodenSupportSubType::Corner2 }, { WoodenSupportSubType::Corner0 }, {}, { WoodenSupportSubType::Corner2 }, { WoodenSupportSubType::Corner3 }, { WoodenSupportSubType::Corner1 }, {}, { WoodenSupportSubType::Corner3 } }, // LeftHalfBankedHelixDownSmall + { SequenceWoodenSupport{ WoodenSupportSubType::Corner3 }, { WoodenSupportSubType::Corner1 }, {}, { WoodenSupportSubType::Corner3 }, { WoodenSupportSubType::Corner2 }, { WoodenSupportSubType::Corner0 }, {}, { WoodenSupportSubType::Corner2 } }, // RightHalfBankedHelixDownSmall + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, {}, { WoodenSupportSubType::Corner3 }, { WoodenSupportSubType::Corner1 }, {}, { WoodenSupportSubType::Corner3 }, { WoodenSupportSubType::NwSe }, { WoodenSupportSubType::NwSe }, {}, { WoodenSupportSubType::Corner2 }, { WoodenSupportSubType::Corner0 }, {}, { WoodenSupportSubType::Corner2 }, { WoodenSupportSubType::NeSw } }, // LeftHalfBankedHelixUpLarge + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, {}, { WoodenSupportSubType::Corner2 }, { WoodenSupportSubType::Corner0 }, {}, { WoodenSupportSubType::Corner2 }, { WoodenSupportSubType::NwSe }, { WoodenSupportSubType::NwSe }, {}, { WoodenSupportSubType::Corner3 }, { WoodenSupportSubType::Corner1 }, {}, { WoodenSupportSubType::Corner3 }, { WoodenSupportSubType::NeSw } }, // RightHalfBankedHelixUpLarge + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, {}, { WoodenSupportSubType::Corner2 }, { WoodenSupportSubType::Corner0 }, {}, { WoodenSupportSubType::Corner2 }, { WoodenSupportSubType::NwSe }, { WoodenSupportSubType::NwSe }, {}, { WoodenSupportSubType::Corner3 }, { WoodenSupportSubType::Corner1 }, {}, { WoodenSupportSubType::Corner3 }, { WoodenSupportSubType::NeSw } }, // LeftHalfBankedHelixDownLarge + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, {}, { WoodenSupportSubType::Corner3 }, { WoodenSupportSubType::Corner1 }, {}, { WoodenSupportSubType::Corner3 }, { WoodenSupportSubType::NwSe }, { WoodenSupportSubType::NwSe }, {}, { WoodenSupportSubType::Corner2 }, { WoodenSupportSubType::Corner0 }, {}, { WoodenSupportSubType::Corner2 }, { WoodenSupportSubType::NeSw } }, // RightHalfBankedHelixDownLarge + { SequenceWoodenSupport{ WoodenSupportSubType::Corner3 } }, // LeftQuarterTurn1TileUp60 + { SequenceWoodenSupport{ WoodenSupportSubType::Corner2 } }, // RightQuarterTurn1TileUp60 + { SequenceWoodenSupport{ WoodenSupportSubType::Corner2 } }, // LeftQuarterTurn1TileDown60 + { SequenceWoodenSupport{ WoodenSupportSubType::Corner3 } }, // RightQuarterTurn1TileDown60 + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw } }, // Brakes + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw } }, // Booster + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw } }, // Maze + {}, // LeftQuarterBankedHelixLargeUp + {}, // RightQuarterBankedHelixLargeUp + {}, // LeftQuarterBankedHelixLargeDown + {}, // RightQuarterBankedHelixLargeDown + {}, // LeftQuarterHelixLargeUp + {}, // RightQuarterHelixLargeUp + {}, // LeftQuarterHelixLargeDown + {}, // RightQuarterHelixLargeDown + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25Deg } }, // Up25LeftBanked + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25Deg } }, // Up25RightBanked + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw } }, // Waterfall + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw } }, // Rapids + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw } }, // OnRidePhoto + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25Deg } }, // Down25LeftBanked + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25Deg } }, // Down25RightBanked + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw } }, // Watersplash + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::FlatToUp60DegLongBaseSeq0 }, SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::FlatToUp60DegLongBaseSeq1 }, SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::FlatToUp60DegLongBaseSeq2 }, SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::FlatToUp60DegLongBaseSeq3 } }, // FlatToUp60LongBase + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up60DegToFlatLongBaseSeq0 }, SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up60DegToFlatLongBaseSeq1 }, SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up60DegToFlatLongBaseSeq2 }, SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up60DegToFlatLongBaseSeq3 } }, // Up60ToFlatLongBase + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw } }, // Whirlpool + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::FlatToUp60DegLongBaseSeq0 }, SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::FlatToUp60DegLongBaseSeq1 }, SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::FlatToUp60DegLongBaseSeq2 }, SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::FlatToUp60DegLongBaseSeq3 } }, // Down60ToFlatLongBase + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up60DegToFlatLongBaseSeq0 }, SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up60DegToFlatLongBaseSeq1 }, SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up60DegToFlatLongBaseSeq2 }, SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up60DegToFlatLongBaseSeq3 } }, // FlatToDown60LongBase + {}, // CableLiftHill + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw } }, // ReverseFreefallSlope + {}, // ReverseFreefallVertical + {}, // Up90 + {}, // Down90 + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw } }, // Up60ToUp90 + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw } }, // Down90ToDown60 + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw } }, // Up90ToUp60 + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw } }, // Down60ToDown90 + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw } }, // BrakeForDrop + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::Corner1 }, { WoodenSupportSubType::Corner3 }, {} }, // LeftEighthToDiag + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // RightEighthToDiag + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // LeftEighthToOrthogonal + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::Corner1 }, { WoodenSupportSubType::Corner3 }, {} }, // RightEighthToOrthogonal + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::Corner1 }, { WoodenSupportSubType::Corner3 }, {} }, // LeftEighthBankToDiag + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // RightEighthBankToDiag + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // LeftEighthBankToOrthogonal + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::Corner1 }, { WoodenSupportSubType::Corner3 }, {} }, // RightEighthBankToOrthogonal + { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagFlat + { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagUp25 + { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagUp60 + { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagFlatToUp25 + { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagUp25ToUp60 + { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagUp60ToUp25 + { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagUp25ToFlat + { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagDown25 + { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagDown60 + { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagFlatToDown25 + { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagDown25ToDown60 + { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagDown60ToDown25 + { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagDown25ToFlat + { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagFlatToUp60 + { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagUp60ToFlat + { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagFlatToDown60 + { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagDown60ToFlat + { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagFlatToLeftBank + { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagFlatToRightBank + { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagLeftBankToFlat + { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagRightBankToFlat + { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagLeftBankToUp25 + { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagRightBankToUp25 + { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagUp25ToLeftBank + { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagUp25ToRightBank + { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagLeftBankToDown25 + { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagRightBankToDown25 + { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagDown25ToLeftBank + { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagDown25ToRightBank + { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagLeftBank + { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagRightBank + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw } }, // LogFlumeReverser + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw } }, // SpinningTunnel + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw } }, // LeftBarrelRollUpToDown + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw } }, // RightBarrelRollUpToDown + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw } }, // LeftBarrelRollDownToUp + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw } }, // RightBarrelRollDownToUp + { SequenceWoodenSupport{ WoodenSupportSubType::Corner3 }, {}, {}, { WoodenSupportSubType::Corner3 } }, // LeftBankToLeftQuarterTurn3TilesUp25 + { SequenceWoodenSupport{ WoodenSupportSubType::Corner2 }, {}, {}, { WoodenSupportSubType::Corner2 } }, // RightBankToRightQuarterTurn3TilesUp25 + { SequenceWoodenSupport{ WoodenSupportSubType::Corner3 }, {}, {}, { WoodenSupportSubType::Corner3 } }, // LeftQuarterTurn3TilesDown25ToLeftBank + { SequenceWoodenSupport{ WoodenSupportSubType::Corner2 }, {}, {}, { WoodenSupportSubType::Corner2 } }, // RightQuarterTurn3TilesDown25ToRightBank + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25Deg } }, // PoweredLift + {}, // LeftLargeHalfLoopUp + {}, // RightLargeHalfLoopUp + {}, // LeftLargeHalfLoopDown + {}, // RightLargeHalfLoopDown + {}, // LeftFlyerTwistUp + {}, // RightFlyerTwistUp + {}, // LeftFlyerTwistDown + {}, // RightFlyerTwistDown + {}, // FlyerHalfLoopUninvertedUp + {}, // FlyerHalfLoopInvertedDown + {}, // LeftFlyerCorkscrewUp + {}, // RightFlyerCorkscrewUp + {}, // LeftFlyerCorkscrewDown + {}, // RightFlyerCorkscrewDown + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::FlatToUp25Deg }, { WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25DegToFlat }, { WoodenSupportSubType::NeSw }, {} }, // HeartLineTransferUp + { SequenceWoodenSupport{}, { WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25DegToFlat }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw, WoodenSupportTransitionType::FlatToUp25Deg } }, // HeartLineTransferDown + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw } }, // LeftHeartLineRoll + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw } }, // RightHeartLineRoll + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw } }, // MinigolfHoleA + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw } }, // MinigolfHoleB + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw } }, // MinigolfHoleC + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NwSe } }, // MinigolfHoleD + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NwSe } }, // MinigolfHoleE + {}, // MultiDimInvertedFlatToDown90QuarterLoop + { SequenceWoodenSupport{}, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw } }, // Up90ToInvertedFlatQuarterLoop + { SequenceWoodenSupport{}, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw } }, // InvertedFlatToDown90QuarterLoop + { SequenceWoodenSupport{ WoodenSupportSubType::Corner3 }, {}, {}, { WoodenSupportSubType::Corner3 } }, // LeftCurvedLiftHill + { SequenceWoodenSupport{ WoodenSupportSubType::Corner3 }, {}, {}, { WoodenSupportSubType::Corner3 } }, // RightCurvedLiftHill + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw } }, // LeftReverser + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw } }, // RightReverser + {}, // AirThrustTopCap + {}, // AirThrustVerticalDown + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw } }, // AirThrustVerticalDownToLevel + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw } }, // BlockBrakes + { SequenceWoodenSupport{ WoodenSupportSubType::Corner3 }, {}, {}, { WoodenSupportSubType::Corner3 } }, // LeftBankedQuarterTurn3TileUp25 + { SequenceWoodenSupport{ WoodenSupportSubType::Corner2 }, {}, {}, { WoodenSupportSubType::Corner2 } }, // RightBankedQuarterTurn3TileUp25 + { SequenceWoodenSupport{ WoodenSupportSubType::Corner2 }, {}, {}, { WoodenSupportSubType::Corner2 } }, // LeftBankedQuarterTurn3TileDown25 + { SequenceWoodenSupport{ WoodenSupportSubType::Corner3 }, {}, {}, { WoodenSupportSubType::Corner3 } }, // RightBankedQuarterTurn3TileDown25 { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, {}, { WoodenSupportSubType::Corner3 }, { WoodenSupportSubType::Corner1 }, {}, {}, { WoodenSupportSubType::Corner3 }, { WoodenSupportSubType::NeSw } }, // LeftBankedQuarterTurn5TileUp25 { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, {}, { WoodenSupportSubType::Corner2 }, { WoodenSupportSubType::Corner0 }, {}, {}, { WoodenSupportSubType::Corner2 }, { WoodenSupportSubType::NeSw } }, // RightBankedQuarterTurn5TileUp25 { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, {}, { WoodenSupportSubType::Corner2 }, { WoodenSupportSubType::Corner0 }, {}, {}, { WoodenSupportSubType::Corner2 }, { WoodenSupportSubType::NeSw } }, // LeftBankedQuarterTurn5TileDown25 @@ -939,6070 +939,6070 @@ namespace OpenRCT2::TrackMetaData { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25Deg } }, // Up25ToLeftBankedUp25 { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25Deg } }, // Up25ToRightBankedUp25 { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25Deg } }, // LeftBankedUp25ToUp25 - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25Deg } }, // RightBankedUp25ToUp25 - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25Deg } }, // Down25ToLeftBankedDown25 - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25Deg } }, // Down25ToRightBankedDown25 - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25Deg } }, // LeftBankedDown25ToDown25 - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25Deg } }, // RightBankedDown25ToDown25 - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::FlatToUp25Deg } }, // LeftBankedFlatToLeftBankedUp25 - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::FlatToUp25Deg } }, // RightBankedFlatToRightBankedUp25 - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25DegToFlat } }, // LeftBankedUp25ToLeftBankedFlat - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25DegToFlat } }, // RightBankedUp25ToRightBankedFlat - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25DegToFlat } }, // LeftBankedFlatToLeftBankedDown25 - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25DegToFlat } }, // RightBankedFlatToRightBankedDown25 - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::FlatToUp25Deg } }, // LeftBankedDown25ToLeftBankedFlat - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::FlatToUp25Deg } }, // RightBankedDown25ToRightBankedFlat - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::FlatToUp25Deg } }, // FlatToLeftBankedUp25 - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::FlatToUp25Deg } }, // FlatToRightBankedUp25 - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25DegToFlat } }, // LeftBankedUp25ToFlat - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25DegToFlat } }, // RightBankedUp25ToFlat - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25DegToFlat } }, // FlatToLeftBankedDown25 - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25DegToFlat } }, // FlatToRightBankedDown25 - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::FlatToUp25Deg } }, // LeftBankedDown25ToFlat - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::FlatToUp25Deg } }, // RightBankedDown25ToFlat - {}, // LeftQuarterTurn1TileUp90 - {}, // RightQuarterTurn1TileUp90 - {}, // LeftQuarterTurn1TileDown90 - {}, // RightQuarterTurn1TileDown90 - {}, // MultiDimUp90ToInvertedFlatQuarterLoop - {}, // MultiDimFlatToDown90QuarterLoop - {}, // MultiDimInvertedUp90ToFlatQuarterLoop - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw } }, // RotationControlToggle - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw } }, // FlatTrack1x4A - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw } }, // FlatTrack2x2 - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw } }, // FlatTrack4x4 - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw } }, // FlatTrack2x4 - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw } }, // FlatTrack1x5 - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw } }, // FlatTrack1x1A - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw } }, // FlatTrack1x4B - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw } }, // FlatTrack1x1B - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw } }, // FlatTrack1x4C - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw } }, // FlatTrack3x3 - {}, // LeftLargeCorkscrewUp - {}, // RightLargeCorkscrewUp - {}, // LeftLargeCorkscrewDown - {}, // RightLargeCorkscrewDown - {}, // LeftMediumHalfLoopUp - {}, // RightMediumHalfLoopUp - {}, // LeftMediumHalfLoopDown - {}, // RightMediumHalfLoopDown - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw } }, // LeftZeroGRollUp - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw } }, // RightZeroGRollUp - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw } }, // LeftZeroGRollDown - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw } }, // RightZeroGRollDown - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw } }, // LeftLargeZeroGRollUp - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw } }, // RightLargeZeroGRollUp - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw } }, // LeftLargeZeroGRollDown - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw } }, // RightLargeZeroGRollDown - {}, // LeftFlyerLargeHalfLoopUninvertedUp - {}, // RightFlyerLargeHalfLoopUninvertedUp - {}, // LeftFlyerLargeHalfLoopInvertedDown - {}, // RightFlyerLargeHalfLoopInvertedDown - {}, // LeftFlyerLargeHalfLoopInvertedUp - {}, // RightFlyerLargeHalfLoopInvertedUp - {}, // LeftFlyerLargeHalfLoopUninvertedDown - {}, // RightFlyerLargeHalfLoopUninvertedDown - {}, // FlyerHalfLoopInvertedUp - {}, // FlyerHalfLoopUninvertedDown - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25Deg }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::Corner1 }, { WoodenSupportSubType::Corner3 }, {} }, // LeftEighthToDiagUp25 - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25Deg }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // RightEighthToDiagUp25 - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25Deg }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::Corner1 }, { WoodenSupportSubType::Corner3 }, {} }, // LeftEighthToDiagDown25 - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25Deg }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // RightEighthToDiagDown25 - { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner2 }, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw } }, // LeftEighthToOrthogonalUp25 - { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, { WoodenSupportSubType::NwSe }, { WoodenSupportSubType::NwSe } }, // RightEighthToOrthogonalUp25 - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25Deg }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // LeftEighthToOrthogonalDown25 - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25Deg }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::Corner1 }, { WoodenSupportSubType::Corner3 }, {} }, // RightEighthToOrthogonalDown25 - { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagUp25ToLeftBankedUp25 - { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagUp25ToRightBankedUp25 - { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagLeftBankedUp25ToUp25 - { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagRightBankedUp25ToUp25 - { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagDown25ToLeftBankedDown25 - { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagDown25ToRightBankedDown25 - { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagLeftBankedDown25ToDown25 - { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagRightBankedDown25ToDown25 - { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagLeftBankedFlatToLeftBankedUp25 - { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagRightBankedFlatToRightBankedUp25 - { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagLeftBankedUp25ToLeftBankedFlat - { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagRightBankedUp25ToRightBankedFlat - { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagLeftBankedFlatToLeftBankedDown25 - { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagRightBankedFlatToRightBankedDown25 - { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagLeftBankedDown25ToLeftBankedFlat - { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagRightBankedDown25ToRightBankedFlat - { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagFlatToLeftBankedUp25 - { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagFlatToRightBankedUp25 - { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagLeftBankedUp25ToFlat - { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagRightBankedUp25ToFlat - { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagFlatToLeftBankedDown25 - { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagFlatToRightBankedDown25 - { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagLeftBankedDown25ToFlat - { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagRightBankedDown25ToFlat - { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagUp25LeftBanked - { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagUp25RightBanked - { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagDown25LeftBanked - { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagDown25RightBanked - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25Deg }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::Corner1 }, { WoodenSupportSubType::Corner3 }, {} }, // LeftEighthBankToDiagUp25 - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25Deg }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // RightEighthBankToDiagUp25 - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25Deg }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::Corner1 }, { WoodenSupportSubType::Corner3 }, {} }, // LeftEighthBankToDiagDown25 - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25Deg }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // RightEighthBankToDiagDown25 - { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner2 }, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw } }, // LeftEighthBankToOrthogonalUp25 - { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, { WoodenSupportSubType::NwSe }, { WoodenSupportSubType::NwSe } }, // RightEighthBankToOrthogonalUp25 - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25Deg }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // LeftEighthBankToOrthogonalDown25 - { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25Deg }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::Corner1 }, { WoodenSupportSubType::Corner3 }, {} }, // RightEighthBankToOrthogonalDown25 - { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagBrakes - { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagBlockBrakes - } }; - - constexpr PreviewTrack kTrackBlockEnd { 255, 255, 255, 255, 255, {255, 255}, 255 }; - - static constexpr PreviewTrack TrackBlocks000[] = { - { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks001[] = { - { 0, 0, 0, 0, 0,{ 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks002[] = { - { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks003[] = { - { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks004[] = { - { 0, 0, 0, 0, 16, { 0b1111, 0b1100 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks005[] = { - { 0, 0, 0, 0, 64, { 0b1111, 0b1100 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks006[] = { - { 0, 0, 0, 0, 8, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks007[] = { - { 0, 0, 0, 0, 32, { 0b1111, 0b1100 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks008[] = { - { 0, 0, 0, 0, 32, { 0b1111, 0b1100 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks009[] = { - { 0, 0, 0, 0, 8, { 0b1111, 0b1100 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks010[] = { - { 0, 0, 0, 0, 16, { 0b1111, 0b0011 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks011[] = { - { 0, 0, 0, 0, 64, { 0b1111, 0b0011 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks012[] = { - { 0, 0, 0, 0, 8, { 0b1111, 0b0011 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks013[] = { - { 0, 0, 0, 0, 32, { 0b1111, 0b0011 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks014[] = { - { 0, 0, 0, 0, 32, { 0b1111, 0b0011 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks015[] = { - { 0, 0, 0, 0, 8, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks016[] = { - { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - { 1, 0, -32, 0, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 2, -32, 0, 0, 0, { 0b0111, 0 }, 0 }, - { 3, -32, -32, 0, 0, { 0b1101, 0 }, 0 }, - { 4, -32, -64, 0, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 5, -64, -32, 0, 0, { 0b0111, 0 }, 0 }, - { 6, -64, -64, 0, 0, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks017[] = { - { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - { 1, 0, 32, 0, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 2, -32, 0, 0, 0, { 0b1011, 0 }, 0 }, - { 3, -32, 32, 0, 0, { 0b1110, 0 }, 0 }, - { 4, -32, 64, 0, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 5, -64, 32, 0, 0, { 0b1011, 0 }, 0 }, - { 6, -64, 64, 0, 0, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks018[] = { - { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks019[] = { - { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks020[] = { - { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks021[] = { - { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks022[] = { - { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - { 1, 0, -32, 0, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 2, -32, 0, 0, 0, { 0b0111, 0 }, 0 }, - { 3, -32, -32, 0, 0, { 0b1101, 0 }, 0 }, - { 4, -32, -64, 0, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 5, -64, -32, 0, 0, { 0b0111, 0 }, 0 }, - { 6, -64, -64, 0, 0, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks023[] = { - { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - { 1, 0, 32, 0, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 2, -32, 0, 0, 0, { 0b1011, 0 }, 0 }, - { 3, -32, 32, 0, 0, { 0b1110, 0 }, 0 }, - { 4, -32, 64, 0, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 5, -64, 32, 0, 0, { 0b1011, 0 }, 0 }, - { 6, -64, 64, 0, 0, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks024[] = { - { 0, 0, 0, 0, 8, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks025[] = { - { 0, 0, 0, 0, 8, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks026[] = { - { 0, 0, 0, 0, 8, { 0b1111, 0b1100 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks027[] = { - { 0, 0, 0, 0, 8, { 0b1111, 0b1100 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks028[] = { - { 0, 0, 0, 0, 8, { 0b1111, 0b0011 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks029[] = { - { 0, 0, 0, 0, 8, { 0b1111, 0b0011 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks030[] = { - { 0, 0, 0, 0, 8, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks031[] = { - { 0, 0, 0, 0, 8, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks032[] = { - { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks033[] = { - { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks034[] = { - { 0, 0, 0, 0, 16, { 0b1111, 0b1100 }, 0 }, - { 1, 0, -32, 16, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 2, -32, 0, 16, 16, { 0b0111, 0b0100 }, 0 }, - { 3, -32, -32, 24, 16, { 0b1101, 0 }, 0 }, - { 4, -32, -64, 48, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 5, -64, -32, 32, 16, { 0b0111, 0b0100 }, 0 }, - { 6, -64, -64, 48, 16, { 0b1111, 0b0110 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks035[] = { - { 0, 0, 0, 0, 16, { 0b1111, 0b1100 }, 0 }, - { 1, 0, 32, 16, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 2, -32, 0, 16, 16, { 0b1011, 0b1000 }, 0 }, - { 3, -32, 32, 24, 16, { 0b1110, 0 }, 0 }, - { 4, -32, 64, 48, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 5, -64, 32, 32, 16, { 0b1011, 0b1000 }, 0 }, - { 6, -64, 64, 48, 16, { 0b1111, 0b1001 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks036[] = { - { 0, 0, 0, 48, 16, { 0b1111, 0b0011 }, 0 }, - { 1, 0, -32, 48, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 2, -32, 0, 32, 16, { 0b0111, 0b0001 }, 0 }, - { 3, -32, -32, 24, 16, { 0b1101, 0 }, 0 }, - { 4, -32, -64, 16, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 5, -64, -32, 16, 16, { 0b0111, 0b0001 }, 0 }, - { 6, -64, -64, 0, 16, { 0b1111, 0b1001 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks037[] = { - { 0, 0, 0, 48, 16, { 0b1111, 0b0011 }, 0 }, - { 1, 0, 32, 48, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 2, -32, 0, 32, 16, { 0b1011, 0b0010 }, 0 }, - { 3, -32, 32, 24, 16, { 0b1110, 0 }, 0 }, - { 4, -32, 64, 16, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 5, -64, 32, 16, 16, { 0b1011, 0b0010 }, 0 }, - { 6, -64, 64, 0, 16, { 0b1111, 0b0110 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks038[] = { - { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - { 1, -32, 0, 0, 0, { 0b0111, 0 }, 0 }, - { 2, -32, -32, 0, 0, { 0b1101, 0 }, 0 }, - { 3, -64, -32, 0, 0, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks039[] = { - { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - { 1, -32, 0, 0, 0, { 0b1011, 0 }, 0 }, - { 2, -32, 32, 0, 0, { 0b1110, 0 }, 0 }, - { 3, -64, 32, 0, 0, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - // LeftVerticalLoop - static constexpr PreviewTrack TrackBlocks040[] = { - { 0, 0, 0, 0, 16, { 0b1111, 0b1100 }, 0 }, - { 1, -32, 0, 16, 16, { 0b1111, 0b1100 }, 0 }, - { 2, -64, 0, 32, 96, { 0b0010, 0 }, 0 }, - { 3, -32, 0, 120, 16, { 0b0110, 0 }, 0 }, - { 4, -32, -32, 120, 0, { 0b0000, 0 }, 0 }, - { 5, 0, 0, 120, 0, { 0b0000, 0 }, 0 }, - { 6, 0, -32, 120, 16, { 0b1001, 0 }, 0 }, - { 7, 32, -32, 32, 96, { 0b1000, 0 }, 0 }, - { 8, 0, -32, 16, 16, { 0b1111, 0b0011 }, 0 }, - { 9, -32, -32, 0, 16, { 0b1111, 0b0011 }, 0 }, - kTrackBlockEnd - }; - - // RightVerticalLoop - static constexpr PreviewTrack TrackBlocks041[] = { - { 0, 0, 0, 0, 16, { 0b1111, 0b1100 }, 0 }, - { 1, -32, 0, 16, 16, { 0b1111, 0b1100 }, 0 }, - { 2, -64, 0, 32, 96, { 0b0001, 0 }, 0 }, - { 3, -32, 0, 120, 16, { 0b1001, 0 }, 0 }, - { 4, -32, 32, 120, 0, { 0b0000, 0 }, 0 }, - { 5, 0, 0, 120, 0, { 0b0000, 0 }, 0 }, - { 6, 0, 32, 120, 16, { 0b0110, 0 }, 0 }, - { 7, 32, 32, 32, 96, { 0b0100, 0 }, 0 }, - { 8, 0, 32, 16, 16, { 0b1111, 0b0011 }, 0 }, - { 9, -32, 32, 0, 16, { 0b1111, 0b0011 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks042[] = { - { 0, 0, 0, 0, 0, { 0b0111, 0 }, 0 }, - { 1, 0, -32, 0, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 2, -32, 0, 0, 0, { 0b0010, 0 }, 0 }, - { 3, -32, -32, 0, 0, { 0b0111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks043[] = { - { 0, 0, 0, 0, 0, { 0b1011, 0 }, 0 }, - { 1, 0, 32, 0, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 2, -32, 0, 0, 0, { 0b0001, 0 }, 0 }, - { 3, -32, 32, 0, 0, { 0b1011, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks044[] = { - { 0, 0, 0, 0, 0, { 0b0111, 0 }, 0 }, - { 1, 0, -32, 0, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 2, -32, 0, 0, 0, { 0b0010, 0 }, 0 }, - { 3, -32, -32, 0, 0, { 0b0111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks045[] = { - { 0, 0, 0, 0, 0, { 0b1011, 0 }, 0 }, - { 1, 0, 32, 0, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 2, -32, 0, 0, 0, { 0b0001, 0 }, 0 }, - { 3, -32, 32, 0, 0, { 0b1011, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks046[] = { - { 0, 0, 0, 0, 16, { 0b0111, 0b0100 }, 0 }, - { 1, 0, -32, 16, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 2, -32, 0, 16, 0, { 0b0010, 0 }, 0 }, - { 3, -32, -32, 16, 16,{ 0b0111, 0b0110 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks047[] = { - { 0, 0, 0, 0, 16, { 0b1011, 0b1000 }, 0 }, - { 1, 0, 32, 16, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 2, -32, 0, 16, 0, { 0b0001, 0 }, 0 }, - { 3, -32, 32, 16, 16,{ 0b1011, 0b1001 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks048[] = { - { 0, 0, 0, 16, 16,{ 0b0111, 0b0011 }, 0 }, - { 1, 0, -32, 16, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 2, -32, 0, 16, 0, { 0b0010, 0 }, 0 }, - { 3, -32, -32, 0, 16, { 0b0111, 0b0001 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks049[] = { - { 0, 0, 0, 16, 16, { 0b1011, 0b0011 }, 0 }, - { 1, 0, 32, 16, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 2, -32, 0, 16, 0, { 0b0001, 0 }, 0 }, - { 3, -32, 32, 0, 16, { 0b1011, 0b0010 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks050[] = { - { 0, 0, 0, 0, 0, { 0b0111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks051[] = { - { 0, 0, 0, 0, 0, { 0b1011, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks052[] = { - { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - { 1, -32, 0, 0, 16, { 0b1111, 0 }, 0 }, - { 2, -64, 0, 16, 0, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks053[] = { - { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - { 1, -32, 0, 0, 16, { 0b1111, 0 }, 0 }, - { 2, -64, 0, 16, 0, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks054[] = { - { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - { 1, -32, 0, -16, 16, { 0b1111, 0 }, 0 }, - { 2, -64, 0, -16, 0, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks055[] = { - { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - { 1, -32, 0, -16, 16, { 0b1111, 0 }, 0 }, - { 2, -64, 0, -16, 0, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - // HalfLoopUp - static constexpr PreviewTrack TrackBlocks056[] = { - { 0, 0, 0, 0, 16, { 0b1111, 0b1100 }, 0 }, - { 1, -32, 0, 16, 16, { 0b1111, 0b1100 }, 0 }, - { 2, -64, 0, 32, 96,{ 0b0011, 0 }, 0 }, - { 3, -32, 0, 120, 16, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - // HalfLoopDown - static constexpr PreviewTrack TrackBlocks057[] = { - { 0, 0, 0, -32, 16, { 0b1111, 0 }, 0 }, - { 1, -32, 0, -120, 96,{ 0b0011, 0 }, 0 }, - { 2, 0, 0, -136, 16, { 0b1111, 0b1100 }, 0 }, - { 3, 32, 0, -152, 16, { 0b1111, 0b1100 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks058[] = { - { 0, 0, 0, 0, 16, { 0b1111, 0 }, 0 }, - { 1, -32, 0, 24, 32, { 0b0111, 0 }, 0 }, - { 2, -32, -32, 48, 16, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks059[] = { - { 0, 0, 0, 0, 16, { 0b1111, 0 }, 0 }, - { 1, -32, 0, 24, 32, { 0b1011, 0 }, 0 }, - { 2, -32, 32, 48, 16, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks060[] = { - { 0, 0, 0, -32, 16, { 0b1111, 0 }, 0 }, - { 1, -32, 0, -56, 32, { 0b0111, 0 }, 0 }, - { 2, -32, -32, -80, 16, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks061[] = { - { 0, 0, 0, -32, 16, { 0b1111, 0 }, 0 }, - { 1, -32, 0, -56, 32, { 0b1011, 0 }, 0 }, - { 2, -32, 32, -80, 16, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks062[] = { - { 0, 0, 0, 0, 24, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks063[] = { - { 0, 0, 0, 0, 24, { 0b1111, 0b1100 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks064[] = { - { 0, 0, 0, 0, 24, { 0b1111, 0b0011 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks065[] = { - { 0, 0, 0, 0, 24, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks066[] = { - { 0, 0, 0, 0, 64, { 0b1111, 0 }, 0 }, - { 1, -32, -32, 0, 0, { 0b1111, 0 }, 0 }, - { 2, -32, 0, 0, 0, { 0b1111, 0 }, 0 }, - { 3, -32, 32, 0, 0, { 0b1111, 0 }, 0 }, - { 4, 0, -32, 0, 0, { 0b1111, 0 }, 0 }, - { 5, 0, 32, 0, 0, { 0b1111, 0 }, 0 }, - { 6, 32, -32, 0, 0, { 0b1111, 0 }, 0 }, - { 7, 32, 32, 0, 0, { 0b1111, 0 }, 0 }, - { 8, 32, 0, 0, 0, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_1 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks067[] = { - { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - { 1, 32, 0, 0, 0, { 0b0000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 | RCT_PREVIEW_TRACK_FLAG_1 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks068[] = { - { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks069[] = { - { 0, 0, 0, 0, 16, { 0b1111, 0b1100 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks070[] = { - { 0, 0, 0, 0, 64, { 0b1111, 0b1100 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks071[] = { - { 0, 0, 0, 0, 8, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks072[] = { - { 0, 0, 0, 0, 32, { 0b1111, 0b1100 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks073[] = { - { 0, 0, 0, 0, 32, { 0b1111, 0b1100 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks074[] = { - { 0, 0, 0, 0, 8, { 0b1111, 0b1100 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks075[] = { - { 0, 0, 0, 0, 16, { 0b1111, 0b0011 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks076[] = { - { 0, 0, 0, 0, 64, { 0b1111, 0b0011 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks077[] = { - { 0, 0, 0, 0, 8, { 0b1111, 0b0011 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks078[] = { - { 0, 0, 0, 0, 32, { 0b1111, 0b0011 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks079[] = { - { 0, 0, 0, 0, 32, { 0b1111, 0b0011 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks080[] = { - { 0, 0, 0, 0, 8, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks081[] = { - { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - { 1, 0, -32, 0, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 2, -32, 0, 0, 0, { 0b0111, 0 }, 0 }, - { 3, -32, -32, 0, 0, { 0b1101, 0 }, 0 }, - { 4, -32, -64, 0, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 5, -64, -32, 0, 0, { 0b0111, 0 }, 0 }, - { 6, -64, -64, 0, 0, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks082[] = { - { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - { 1, 0, 32, 0, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 2, -32, 0, 0, 0, { 0b1011, 0 }, 0 }, - { 3, -32, 32, 0, 0, { 0b1110, 0 }, 0 }, - { 4, -32, 64, 0, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 5, -64, 32, 0, 0, { 0b1011, 0 }, 0 }, - { 6, -64, 64, 0, 0, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks083[] = { - { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - { 1, -32, 0, 0, 0, { 0b0111, 0 }, 0 }, - { 2, -32, -32, 0, 0, { 0b1101, 0 }, 0 }, - { 3, -64, -32, 0, 0, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks084[] = { - { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - { 1, -32, 0, 0, 0, { 0b1011, 0 }, 0 }, - { 2, -32, 32, 0, 0, { 0b1110, 0 }, 0 }, - { 3, -64, 32, 0, 0, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks085[] = { - { 0, 0, 0, 0, 0, { 0b0111, 0 }, 0 }, - { 1, 0, -32, 0, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 2, -32, 0, 0, 0, { 0b0010, 0 }, 0 }, - { 3, -32, -32, 0, 0, { 0b0111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks086[] = { - { 0, 0, 0, 0, 0, { 0b1011, 0 }, 0 }, - { 1, 0, 32, 0, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 2, -32, 0, 0, 0, { 0b0001, 0 }, 0 }, - { 3, -32, 32, 0, 0, { 0b1011, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks087[] = { - { 0, 0, 0, 0, 0, { 0b0111, 0 }, 0 }, - { 1, 0, -32, 0, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 2, -32, 0, 0, 4, { 0b0010, 0 }, 0 }, - { 3, -32, -32, 0, 4, { 0b0111, 0 }, 0 }, - { 4, -32, -64, 8, 0, { 0b1011, 0 }, 0 }, - { 5, 0, -64, 8, 0, { 0b0100, 0b0000 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 6, -32, -96, 8, 4, { 0b0001, 0 }, 0 }, - { 7, 0, -96, 8, 4, { 0b1011, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks088[] = { - { 0, 0, 0, 0, 0, { 0b1011, 0 }, 0 }, - { 1, 0, 32, 0, 0, { 0b0100, 0b0000 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 2, -32, 0, 0, 4, { 0b0001, 0 }, 0 }, - { 3, -32, 32, 0, 4, { 0b1011, 0 }, 0 }, - { 4, -32, 64, 8, 0, { 0b0111, 0 }, 0 }, - { 5, 0, 64, 8, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 6, -32, 96, 8, 4, { 0b0010, 0 }, 0 }, - { 7, 0, 96, 8, 4, { 0b0111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks089[] = { - { 0, 0, 0, 8, 4, { 0b0111, 0 }, 0 }, - { 1, 0, -32, 8, 4, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 2, -32, 0, 8, 0, { 0b0010, 0 }, 0 }, - { 3, -32, -32, 8, 0, { 0b0111, 0 }, 0 }, - { 4, -32, -64, 0, 4, { 0b1011, 0 }, 0 }, - { 5, 0, -64, 0, 4, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 6, -32, -96, 0, 0, { 0b0001, 0 }, 0 }, - { 7, 0, -96, 0, 0, { 0b1011, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks090[] = { - { 0, 0, 0, 8, 4, { 0b1011, 0 }, 0 }, - { 1, 0, 32, 8, 4, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 2, -32, 0, 8, 0, { 0b0001, 0 }, 0 }, - { 3, -32, 32, 8, 0, { 0b1011, 0 }, 0 }, - { 4, -32, 64, 0, 4, { 0b0111, 0 }, 0 }, - { 5, 0, 64, 0, 4, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 6, -32, 96, 0, 0, { 0b0010, 0 }, 0 }, - { 7, 0, 96, 0, 0, { 0b0111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks091[] = { - { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - { 1, 0, -32, 0, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 2, -32, 0, 0, 0, { 0b0111, 0 }, 0 }, - { 3, -32, -32, 0, 0, { 0b1101, 0 }, 0 }, - { 4, -32, -64, 0, 4, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 5, -64, -32, 0, 4, { 0b0111, 0 }, 0 }, - { 6, -64, -64, 0, 4, { 0b1111, 0 }, 0 }, - { 7, -64, -96, 8, 0, { 0b1111, 0 }, 0 }, - { 8, -32, -96, 8, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 9, -64, -128, 8, 0, { 0b1011, 0 }, 0 }, - { 10, -32, -128, 8, 0, { 0b1110, 0 }, 0 }, - { 11, 0, -128, 8, 4, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 12, -32, -160, 8, 4, { 0b1011, 0 }, 0 }, - { 13, 0, -160, 8, 4, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks092[] = { - { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - { 1, 0, 32, 0, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 2, -32, 0, 0, 0, { 0b1011, 0 }, 0 }, - { 3, -32, 32, 0, 0, { 0b1110, 0 }, 0 }, - { 4, -32, 64, 0, 4, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 5, -64, 32, 0, 4, { 0b1011, 0 }, 0 }, - { 6, -64, 64, 0, 4, { 0b1111, 0 }, 0 }, - { 7, -64, 96, 8, 0, { 0b1111, 0 }, 0 }, - { 8, -32, 96, 8, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 9, -64, 128, 8, 0, { 0b0111, 0 }, 0 }, - { 10, -32, 128, 8, 0, { 0b1101, 0 }, 0 }, - { 11, 0, 128, 8, 4, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 12, -32, 160, 8, 4, { 0b0111, 0 }, 0 }, - { 13, 0, 160, 8, 4, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks093[] = { - { 0, 0, 0, 8, 4, { 0b1111, 0 }, 0 }, - { 1, 0, -32, 8, 4, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 2, -32, 0, 8, 4, { 0b0111, 0 }, 0 }, - { 3, -32, -32, 8, 0, { 0b1101, 0 }, 0 }, - { 4, -32, -64, 8, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 5, -64, -32, 8, 0, { 0b0111, 0 }, 0 }, - { 6, -64, -64, 8, 0, { 0b1111, 0 }, 0 }, - { 7, -64, -96, 0, 4, { 0b1111, 0 }, 0 }, - { 8, -32, -96, 0, 4, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 9, -64, -128, 0, 4, { 0b1011, 0 }, 0 }, - { 10, -32, -128, 0, 0, { 0b1110, 0 }, 0 }, - { 11, 0, -128, 0, 0, { 0b0100, 0b0000 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 12, -32, -160, 0, 0, { 0b1011, 0 }, 0 }, - { 13, 0, -160, 0, 0, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks094[] = { - { 0, 0, 0, 8, 4, { 0b1111, 0 }, 0 }, - { 1, 0, 32, 8, 4, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 2, -32, 0, 8, 4, { 0b1011, 0 }, 0 }, - { 3, -32, 32, 8, 0, { 0b1110, 0 }, 0 }, - { 4, -32, 64, 8, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 5, -64, 32, 8, 0, { 0b1011, 0 }, 0 }, - { 6, -64, 64, 8, 0, { 0b1111, 0 }, 0 }, - { 7, -64, 96, 0, 4, { 0b1111, 0 }, 0 }, - { 8, -32, 96, 0, 4, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 9, -64, 128, 0, 4, { 0b0111, 0 }, 0 }, - { 10, -32, 128, 0, 0, { 0b1101, 0 }, 0 }, - { 11, 0, 128, 0, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 12, -32, 160, 0, 0, { 0b0111, 0 }, 0 }, - { 13, 0, 160, 0, 0, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks095[] = { - { 0, 0, 0, 0, 64, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks096[] = { - { 0, 0, 0, 0, 64, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks097[] = { - { 0, 0, 0, 0, 64, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks098[] = { - { 0, 0, 0, 0, 64, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks099[] = { - { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks100[] = { - { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks101[] = { - { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks102[] = { - { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - { 1, 0, -32, 0, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 2, -32, 0, 0, 0, { 0b0111, 0 }, 0 }, - { 3, -32, -32, 0, 0, { 0b1101, 0 }, 0 }, - { 4, -32, -64, 0, 12, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 5, -64, -32, 0, 12, { 0b0111, 0 }, 0 }, - { 6, -64, -64, 0, 12, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks103[] = { - { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - { 1, 0, 32, 0, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 2, -32, 0, 0, 0, { 0b1011, 0 }, 0 }, - { 3, -32, 32, 0, 0, { 0b1110, 0 }, 0 }, - { 4, -32, 64, 0, 12, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 5, -64, 32, 0, 12, { 0b1011, 0 }, 0 }, - { 6, -64, 64, 0, 12, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks104[] = { - { 0, 0, 0, 0, 12, { 0b1111, 0 }, 0 }, - { 1, 0, -32, 0, 12, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 2, -32, 0, 0, 12, { 0b0111, 0 }, 0 }, - { 3, -32, -32, 0, 0, { 0b1101, 0 }, 0 }, - { 4, -32, -64, 0, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 5, -64, -32, 0, 0, { 0b0111, 0 }, 0 }, - { 6, -64, -64, 0, 0, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks105[] = { - { 0, 0, 0, 0, 12, { 0b1111, 0 }, 0 }, - { 1, 0, 32, 0, 12, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 2, -32, 0, 0, 12, { 0b1011, 0 }, 0 }, - { 3, -32, 32, 0, 0, { 0b1110, 0 }, 0 }, - { 4, -32, 64, 0, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 5, -64, 32, 0, 0, { 0b1011, 0 }, 0 }, - { 6, -64, 64, 0, 0, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks106[] = { - { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - { 1, 0, -32, 0, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 2, -32, 0, 0, 0, { 0b0111, 0 }, 0 }, - { 3, -32, -32, 0, 0, { 0b1101, 0 }, 0 }, - { 4, -32, -64, 0, 12, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 5, -64, -32, 0, 12, { 0b0111, 0 }, 0 }, - { 6, -64, -64, 0, 12, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks107[] = { - { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - { 1, 0, 32, 0, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 2, -32, 0, 0, 0, { 0b1011, 0 }, 0 }, - { 3, -32, 32, 0, 0, { 0b1110, 0 }, 0 }, - { 4, -32, 64, 0, 12, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 5, -64, 32, 0, 12, { 0b1011, 0 }, 0 }, - { 6, -64, 64, 0, 12, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks108[] = { - { 0, 0, 0, 0, 12, { 0b1111, 0 }, 0 }, - { 1, 0, -32, 0, 12, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 2, -32, 0, 0, 12, { 0b0111, 0 }, 0 }, - { 3, -32, -32, 0, 0, { 0b1101, 0 }, 0 }, - { 4, -32, -64, 0, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 5, -64, -32, 0, 0, { 0b0111, 0 }, 0 }, - { 6, -64, -64, 0, 0, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks109[] = { - { 0, 0, 0, 0, 12, { 0b1111, 0 }, 0 }, - { 1, 0, 32, 0, 12, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 2, -32, 0, 0, 12, { 0b1011, 0 }, 0 }, - { 3, -32, 32, 0, 0, { 0b1110, 0 }, 0 }, - { 4, -32, 64, 0, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 5, -64, 32, 0, 0, { 0b1011, 0 }, 0 }, - { 6, -64, 64, 0, 0, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks110[] = { - { 0, 0, 0, 0, 16, { 0b1111, 0b1100 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks111[] = { - { 0, 0, 0, 0, 16, { 0b1111, 0b1100 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks112[] = { - { 0, 0, 0, 0, 16, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks113[] = { - { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks114[] = { - { 0, 0, 0, 0, 16, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks115[] = { - { 0, 0, 0, 0, 16, { 0b1111, 0b0011 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks116[] = { - { 0, 0, 0, 0, 16, { 0b1111, 0b0011 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks117[] = { - { 0, 0, 0, 0, 16, { 0b1111, 0 }, 0 }, - { 1, -32, 0, 0, 16, { 0b1111, 0 }, 0 }, - { 2, -64, 0, 0, 16, { 0b1111, 0 }, 0 }, - { 3, -96, 0, 0, 16, { 0b1111, 0 }, 0 }, - { 4, -128, 0, 0, 16, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks118[] = { - { 0, 0, 0, 0, 8, { 0b1111, 0 }, 0 }, - { 1, -32, 0, 0, 16, { 0b1111, 0 }, 0 }, - { 2, -64, 0, 16, 24, { 0b1111, 0 }, 0 }, - { 3, -96, 0, 40, 48, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks119[] = { - { 0, 0, 0, 0, 48, { 0b1111, 0 }, 0 }, - { 1, -32, 0, 40, 48, { 0b1111, 0 }, 0 }, - { 2, -64, 0, 64, 24, { 0b1111, 0 }, 0 }, - { 3, -96, 0, 80, 8, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks120[] = { - { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks121[] = { - { 0, 0, 0, 40, 48, { 0b1111, 0 }, 0 }, - { 1, -32, 0, 16, 24, { 0b1111, 0 }, 0 }, - { 2, -64, 0, 0, 16, { 0b1111, 0 }, 0 }, - { 3, -96, 0, 0, 8, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks122[] = { - { 0, 0, 0, 80, 8, { 0b1111, 0 }, 0 }, - { 1, -32, 0, 64, 24, { 0b1111, 0 }, 0 }, - { 2, -64, 0, 40, 48, { 0b1111, 0 }, 0 }, - { 3, -96, 0, 0, 48, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks123[] = { - { 0, 0, 0, 0, 8, { 0b1111, 0b1100 }, 0 }, - { 1, -32, 0, 0, 8, { 0b1111, 0b0011 }, 0 }, - { 2, -64, 0, -32, 32, { 0b1111, 0b0011 }, 0 }, - { 3, -96, 0, -96, 64, { 0b1111, 0b0011 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks124[] = { - { 0, 0, 0, 0, 16, { 0b1111, 0 }, 0 }, - { 1, -32, 0, 0, 32, { 0b1111, 0 }, 0 }, - { 2, -64, 0, 0, 48, { 0b1111, 0 }, 0 }, - { 3, -96, 0, 0, 80, { 0b1111, 0 }, 0 }, - { 4, -128, 0, 0, 160, { 0b1111, 0 }, 0 }, - { 5, -192, 0, 0, 208, { 0b1111, 0 }, 0 }, - { 6, -160, 0, 0, 208, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks125[] = { - { 0, 0, 0, 0, 48, { 0b1111, 0 }, 0 }, - { 1, 32, 0, 0, 48, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks126[] = { - { 0, 0, 0, 0, 8, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, - { 1, 32, 0, 0, 0, { 0b0000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 | RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks127[] = { - { 0, 0, 0, 0, 8, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, - { 1, 32, 0, 0, 0, { 0b0000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 | RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks128[] = { - { 0, 0, 0, 0, 32, { 0b1111, 0b1100 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, - { 1, 32, 0, 0, 0, { 0b0000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 | RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks129[] = { - { 0, 0, 0, 0, 32, { 0b1111, 0b0011 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks130[] = { - { 0, 0, 0, 0, 56, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks131[] = { - { 0, 0, 0, 0, 56, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, - { 1, 32, 0, 0, 0, { 0b0000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 | RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks132[] = { - { 0, 0, 0, 0, 24, { 0b1111, 0b0011 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks133[] = { - { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - { 1, -32, 0, 0, 0, { 0b1111, 0 }, 0 }, - { 2, -32, -32, 0, 0, { 0b1000, 0 }, 0 }, - { 3, -64, 0, 0, 0, { 0b0010, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 4, -64, -32, 0, 0, { 0b0001, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks134[] = { - { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - { 1, -32, 0, 0, 0, { 0b1111, 0 }, 0 }, - { 2, -32, 32, 0, 0, { 0b0100, 0 }, 0 }, - { 3, -64, 0, 0, 0, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 4, -64, 32, 0, 0, { 0b0010, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks135[] = { - { 0, 0, 0, 0, 0, { 0b1101, 0 }, 0 }, - { 1, -32, 0, 0, 0, { 0b0001, 0 }, 0 }, - { 2, 0, 32, 0, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 3, -32, 32, 0, 0, { 0b1111, 0 }, 0 }, - { 4, -64, 32, 0, 0, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks136[] = { - { 0, 0, 0, 0, 0, { 0b1101, 0 }, 0 }, - { 1, 0, 32, 0, 0, { 0b0100, 0 }, 0 }, - { 2, -32, 0, 0, 0, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 3, -32, 32, 0, 0, { 0b1111, 0 }, 0 }, - { 4, -32, 64, 0, 0, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks137[] = { - { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - { 1, -32, 0, 0, 0, { 0b1111, 0 }, 0 }, - { 2, -32, -32, 0, 0, { 0b1000, 0 }, 0 }, - { 3, -64, 0, 0, 0, { 0b0010, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 4, -64, -32, 0, 0, { 0b0001, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks138[] = { - { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - { 1, -32, 0, 0, 0, { 0b1111, 0 }, 0 }, - { 2, -32, 32, 0, 0, { 0b0100, 0 }, 0 }, - { 3, -64, 0, 0, 0, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 4, -64, 32, 0, 0, { 0b0010, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks139[] = { - { 0, 0, 0, 0, 0, { 0b1101, 0 }, 0 }, - { 1, -32, 0, 0, 0, { 0b0001, 0 }, 0 }, - { 2, 0, 32, 0, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 3, -32, 32, 0, 0, { 0b1111, 0 }, 0 }, - { 4, -64, 32, 0, 0, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks140[] = { - { 0, 0, 0, 0, 0, { 0b1101, 0 }, 0 }, - { 1, 0, 32, 0, 0, { 0b0100, 0 }, 0 }, - { 2, -32, 0, 0, 0, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 3, -32, 32, 0, 0, { 0b1111, 0 }, 0 }, - { 4, -32, 64, 0, 0, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks141[] = { - { 0, 0, 0, 0, 0, { 0b1101, 0 }, 0 }, - { 1, 0, 32, 0, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 2, -32, 0, 0, 0, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 3, -32, 32, 0, 0, { 0b0010, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks142[] = { - { 0, 0, 0, 0, 16, { 0b1101, 0 }, 0 }, - { 1, 0, 32, 0, 16, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 2, -32, 0, 0, 16, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 3, -32, 32, 0, 16, { 0b0010, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks143[] = { - { 0, 0, 0, 0, 64, { 0b1101, 0 }, 0 }, - { 1, 0, 32, 0, 64, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 2, -32, 0, 0, 64, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 3, -32, 32, 0, 64, { 0b0010, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks144[] = { - { 0, 0, 0, 0, 8, { 0b1101, 0 }, 0 }, - { 1, 0, 32, 0, 8, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 2, -32, 0, 0, 8, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 3, -32, 32, 0, 8, { 0b0010, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks145[] = { - { 0, 0, 0, 0, 32, { 0b1101, 0 }, 0 }, - { 1, 0, 32, 0, 32, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 2, -32, 0, 0, 32, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 3, -32, 32, 0, 32, { 0b0010, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks146[] = { - { 0, 0, 0, 0, 32, { 0b1101, 0 }, 0 }, - { 1, 0, 32, 0, 32, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 2, -32, 0, 0, 32, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 3, -32, 32, 0, 32, { 0b0010, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks147[] = { - { 0, 0, 0, 0, 8, { 0b1101, 0 }, 0 }, - { 1, 0, 32, 0, 8, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 2, -32, 0, 0, 8, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 3, -32, 32, 0, 8, { 0b0010, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks148[] = { - { 0, 0, 0, 0, 16, { 0b1101, 0 }, 0 }, - { 1, 0, 32, 0, 16, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 2, -32, 0, 0, 16, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 3, -32, 32, 0, 16, { 0b0010, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks149[] = { - { 0, 0, 0, 0, 64, { 0b1101, 0 }, 0 }, - { 1, 0, 32, 0, 64, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 2, -32, 0, 0, 64, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 3, -32, 32, 0, 64, { 0b0010, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks150[] = { - { 0, 0, 0, 0, 8, { 0b1101, 0 }, 0 }, - { 1, 0, 32, 0, 8, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 2, -32, 0, 0, 8, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 3, -32, 32, 0, 8, { 0b0010, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks151[] = { - { 0, 0, 0, 0, 32, { 0b1101, 0 }, 0 }, - { 1, 0, 32, 0, 32, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 2, -32, 0, 0, 32, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 3, -32, 32, 0, 32, { 0b0010, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks152[] = { - { 0, 0, 0, 0, 32, { 0b1101, 0 }, 0 }, - { 1, 0, 32, 0, 32, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 2, -32, 0, 0, 32, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 3, -32, 32, 0, 32, { 0b0010, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks153[] = { - { 0, 0, 0, 0, 8, { 0b1101, 0 }, 0 }, - { 1, 0, 32, 0, 8, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 2, -32, 0, 0, 8, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 3, -32, 32, 0, 8, { 0b0010, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks154[] = { - { 0, 0, 0, 0, 24, { 0b1101, 0 }, 0 }, - { 1, 0, 32, 0, 24, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 2, -32, 0, 0, 24, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 3, -32, 32, 0, 24, { 0b0010, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks155[] = { - { 0, 0, 0, 0, 24, { 0b1101, 0 }, 0 }, - { 1, 0, 32, 0, 24, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 2, -32, 0, 0, 24, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 3, -32, 32, 0, 24, { 0b0010, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks156[] = { - { 0, 0, 0, 0, 24, { 0b1101, 0 }, 0 }, - { 1, 0, 32, 0, 24, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 2, -32, 0, 0, 24, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 3, -32, 32, 0, 24, { 0b0010, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks157[] = { - { 0, 0, 0, 0, 24, { 0b1101, 0 }, 0 }, - { 1, 0, 32, 0, 24, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 2, -32, 0, 0, 24, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 3, -32, 32, 0, 24, { 0b0010, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks158[] = { - { 0, 0, 0, 0, 0, { 0b1101, 0 }, 0 }, - { 1, 0, 32, 0, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 2, -32, 0, 0, 0, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 3, -32, 32, 0, 0, { 0b0010, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks159[] = { - { 0, 0, 0, 0, 0, { 0b1101, 0 }, 0 }, - { 1, 0, 32, 0, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 2, -32, 0, 0, 0, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 3, -32, 32, 0, 0, { 0b0010, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks160[] = { - { 0, 0, 0, 0, 0, { 0b1101, 0 }, 0 }, - { 1, 0, 32, 0, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 2, -32, 0, 0, 0, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 3, -32, 32, 0, 0, { 0b0010, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks161[] = { - { 0, 0, 0, 0, 0, { 0b1101, 0 }, 0 }, - { 1, 0, 32, 0, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 2, -32, 0, 0, 0, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 3, -32, 32, 0, 0, { 0b0010, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks162[] = { - { 0, 0, 0, 0, 8, { 0b1101, 0 }, 0 }, - { 1, 0, 32, 0, 8, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 2, -32, 0, 0, 8, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 3, -32, 32, 0, 8, { 0b0010, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks163[] = { - { 0, 0, 0, 0, 8, { 0b1101, 0 }, 0 }, - { 1, 0, 32, 0, 8, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 2, -32, 0, 0, 8, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 3, -32, 32, 0, 8, { 0b0010, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks164[] = { - { 0, 0, 0, 0, 8, { 0b1101, 0 }, 0 }, - { 1, 0, 32, 0, 8, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 2, -32, 0, 0, 8, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 3, -32, 32, 0, 8, { 0b0010, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks165[] = { - { 0, 0, 0, 0, 8, { 0b1101, 0 }, 0 }, - { 1, 0, 32, 0, 8, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 2, -32, 0, 0, 8, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 3, -32, 32, 0, 8, { 0b0010, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks166[] = { - { 0, 0, 0, 0, 8, { 0b1101, 0 }, 0 }, - { 1, 0, 32, 0, 8, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 2, -32, 0, 0, 8, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 3, -32, 32, 0, 8, { 0b0010, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks167[] = { - { 0, 0, 0, 0, 8, { 0b1101, 0 }, 0 }, - { 1, 0, 32, 0, 8, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 2, -32, 0, 0, 8, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 3, -32, 32, 0, 8, { 0b0010, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks168[] = { - { 0, 0, 0, 0, 8, { 0b1101, 0 }, 0 }, - { 1, 0, 32, 0, 8, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 2, -32, 0, 0, 8, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 3, -32, 32, 0, 8, { 0b0010, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks169[] = { - { 0, 0, 0, 0, 8, { 0b1101, 0 }, 0 }, - { 1, 0, 32, 0, 8, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 2, -32, 0, 0, 8, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 3, -32, 32, 0, 8, { 0b0010, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks170[] = { - { 0, 0, 0, 0, 0, { 0b1101, 0 }, 0 }, - { 1, 0, 32, 0, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 2, -32, 0, 0, 0, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 3, -32, 32, 0, 0, { 0b0010, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks171[] = { - { 0, 0, 0, 0, 0, { 0b1101, 0 }, 0 }, - { 1, 0, 32, 0, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 2, -32, 0, 0, 0, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 3, -32, 32, 0, 0, { 0b0010, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks172[] = { - { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks173[] = { - { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks174[] = { - { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - { 1, -32, 0, 0, 16, { 0b1111, 0 }, 0 }, - { 2, -64, 0, 0, 16, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks175[] = { - { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - { 1, -32, 0, 0, 16, { 0b1111, 0 }, 0 }, - { 2, -64, 0, 0, 16, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks176[] = { - { 0, 0, 0, -32, 16, { 0b1111, 0 }, 0 }, - { 1, -32, 0, -32, 16, { 0b1111, 0 }, 0 }, - { 2, -64, 0, -32, 0, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks177[] = { - { 0, 0, 0, -32, 16, { 0b1111, 0 }, 0 }, - { 1, -32, 0, -32, 16, { 0b1111, 0 }, 0 }, - { 2, -64, 0, -32, 0, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks178[] = { - { 0, 0, 0, 0, 0, { 0b0111, 0b0100 }, 0 }, - { 1, 0, -32, 0, 16, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 2, -32, 0, 0, 16, { 0b0010, 0 }, 0 }, - { 3, -32, -32, 16, 16,{ 0b0111, 0b0110 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks179[] = { - { 0, 0, 0, 0, 16, { 0b1011, 0b1000 }, 0 }, - { 1, 0, 32, 0, 16, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 2, -32, 0, 0, 16, { 0b0001, 0 }, 0 }, - { 3, -32, 32, 16, 16,{ 0b1011, 0b1001 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks180[] = { - { 0, 0, 0, 16, 16,{ 0b0111, 0b0011 }, 0 }, - { 1, 0, -32, 0, 16, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 2, -32, 0, 0, 16, { 0b0010, 0 }, 0 }, - { 3, -32, -32, 0, 0, { 0b0111, 0b0001 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks181[] = { - { 0, 0, 0, 16, 16, { 0b1011, 0b0011 }, 0 }, - { 1, 0, 32, 0, 16, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 2, -32, 0, 0, 16, { 0b0001, 0 }, 0 }, - { 3, -32, 32, 0, 0, { 0b1011, 0b0010 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks182[] = { - { 0, 0, 0, 0, 16, { 0b1111, 0b1100 }, 0 }, - kTrackBlockEnd - }; - - // LeftLargeHalfLoopUp - static constexpr PreviewTrack TrackBlocks183[] = { - { 0, 0, 0, 0, 24, { 0b1111, 0b1100 }, 0 }, - { 1, -32, 0, 16, 40, { 0b1111, 0b1100 }, 0 }, - { 2, -64, 0, 32, 56, { 0b1111, 0 }, 0 }, - { 3, -96, 0, 64, 192, { 0b1111, 0 }, 0 }, - { 4, -128, -32, 120, 96, { 0b1111, 0 }, 0 }, - { 5, -96, -32, 64, 192, { 0b1111, 0 }, 0 }, - { 6, -64, -32, 248, 16, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - // RightLargeHalfLoopUp - static constexpr PreviewTrack TrackBlocks184[] = { - { 0, 0, 0, 0, 24, { 0b1111, 0b1100 }, 0 }, - { 1, -32, 0, 16, 40, { 0b1111, 0b1100 }, 0 }, - { 2, -64, 0, 32, 56, { 0b1111, 0 }, 0 }, - { 3, -96, 0, 64, 192, { 0b1111, 0 }, 0 }, - { 4, -128, 32, 120, 96, { 0b1111, 0 }, 0 }, - { 5, -96, 32, 64, 192, { 0b1111, 0 }, 0 }, - { 6, -64, 32, 248, 16, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - // LeftLargeHalfLoopDown - static constexpr PreviewTrack TrackBlocks185[] = { - { 0, 0, 0, -32, 16, { 0b1111, 0 }, 0 }, - { 1, -32, 0, -216, 192, { 0b1111, 0 }, 0 }, - { 2, -64, 0, -160, 96, { 0b1111, 0 }, 0 }, - { 3, -32, -32, -216, 192, { 0b1111, 0 }, 0 }, - { 4, 0, -32, -248, 56, { 0b1111, 0 }, 0 }, - { 5, 32, -32, -264, 40, { 0b1111, 0b1100 }, 0 }, - { 6, 64, -32, -280, 24, { 0b1111, 0b1100 }, 0 }, - kTrackBlockEnd - }; - - // RightLargeHalfLoopDown - static constexpr PreviewTrack TrackBlocks186[] = { - { 0, 0, 0, -32, 16, { 0b1111, 0 }, 0 }, - { 1, -32, 0, -216, 192, { 0b1111, 0 }, 0 }, - { 2, -64, 0, -160, 96, { 0b1111, 0 }, 0 }, - { 3, -32, 32, -216, 192, { 0b1111, 0 }, 0 }, - { 4, 0, 32, -248, 56, { 0b1111, 0 }, 0 }, - { 5, 32, 32, -264, 40, { 0b1111, 0b1100 }, 0 }, - { 6, 64, 32, -280, 24, { 0b1111, 0b1100 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks187[] = { - { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - { 1, -32, 0, -16, 16, { 0b1111, 0 }, 0 }, - { 2, -64, 0, -16, 16, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks188[] = { - { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - { 1, -32, 0, -16, 16, { 0b1111, 0 }, 0 }, - { 2, -64, 0, -16, 16, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks189[] = { - { 0, 0, 0, 0, 16, { 0b1111, 0 }, 0 }, - { 1, -32, 0, 0, 16, { 0b1111, 0 }, 0 }, - { 2, -64, 0, 16, 0, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks190[] = { - { 0, 0, 0, 0, 16, { 0b1111, 0 }, 0 }, - { 1, -32, 0, 0, 16, { 0b1111, 0 }, 0 }, - { 2, -64, 0, 16, 0, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - // FlyerHalfLoopUninvertedUp - static constexpr PreviewTrack TrackBlocks191[] = { - { 0, 0, 0, 0, 16, { 0b1111, 0b1100 }, 0 }, - { 1, -32, 0, 16, 16, { 0b1111, 0b1100 }, 0 }, - { 2, -64, 0, 32, 96,{ 0b0011, 0 }, 0 }, - { 3, -32, 0, 120, 16, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - // FlyerHalfLoopInvertedDown - static constexpr PreviewTrack TrackBlocks192[] = { - { 0, 0, 0, 0, 16, { 0b1111, 0 }, 0 }, - { 1, -32, 0, -88, 96,{ 0b0011, 0 }, 0 }, - { 2, 0, 0, -104, 16, { 0b1111, 0b1100 }, 0 }, - { 3, 32, 0, -120, 16, { 0b1111, 0b1100 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks193[] = { - { 0, 0, 0, 0, 16, { 0b1111, 0 }, 0 }, - { 1, -32, 0, 24, 32, { 0b0111, 0 }, 0 }, - { 2, -32, -32, 48, 16, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks194[] = { - { 0, 0, 0, 0, 16, { 0b1111, 0 }, 0 }, - { 1, -32, 0, 24, 32, { 0b1011, 0 }, 0 }, - { 2, -32, 32, 48, 16, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks195[] = { - { 0, 0, 0, 0, 16, { 0b1111, 0 }, 0 }, - { 1, -32, 0, -24, 32, { 0b0111, 0 }, 0 }, - { 2, -32, -32, -48, 16, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks196[] = { - { 0, 0, 0, 0, 16, { 0b1111, 0 }, 0 }, - { 1, -32, 0, -24, 32, { 0b1011, 0 }, 0 }, - { 2, -32, 32, -48, 16, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks197[] = { - { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - { 1, -32, 0, 0, 32, { 0b1111, 0 }, 0 }, - { 2, -64, 0, 16, 0, { 0b1111, 0 }, 0 }, - { 3, 0, 0, 32, 0, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks198[] = { - { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - { 1, -32, 0, -32, 32, { 0b1111, 0 }, 0 }, - { 2, -64, 0, -16, 0, { 0b1111, 0 }, 0 }, - { 3, 0, 0, -32, 0, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks199[] = { - { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - { 1, -32, 0, 0, 0, { 0b1111, 0 }, 0 }, - { 2, -64, 0, 0, 0, { 0b1111, 0 }, 0 }, - { 3, -96, 0, 0, 0, { 0b1111, 0 }, 0 }, - { 4, -128, 0, 0, 0, { 0b1111, 0 }, 0 }, - { 5, -160, 0, 0, 0, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks200[] = { - { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - { 1, -32, 0, 0, 0, { 0b1111, 0 }, 0 }, - { 2, -64, 0, 0, 0, { 0b1111, 0 }, 0 }, - { 3, -96, 0, 0, 0, { 0b1111, 0 }, 0 }, - { 4, -128, 0, 0, 0, { 0b1111, 0 }, 0 }, - { 5, -160, 0, 0, 0, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks201[] = { - { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - { 1, -32, 0, 0, 0, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks202[] = { - { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - { 1, -32, 0, 0, 0, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks203[] = { - { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - { 1, -32, 0, 0, 0, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks204[] = { - { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - { 1, -32, 0, 0, 0, { 0b1111, 0 }, 0 }, - { 2, -32, 32, 0, 0, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks205[] = { - { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - { 1, -32, 0, 0, 0, { 0b1111, 0 }, 0 }, - { 2, -32, -32, 0, 0, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks206[] = { - { 0, 0, 0, 0, 16, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, - { 1, -32, 0, -40, 32, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, - { 2, -64, 0, -96, 56, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, - { 3, -96, 0, -96, 0, { 0b0000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 | RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks207[] = { - { 0, 0, 0, 0, 56, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, - { 1, 32, 0, 56, 32, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, - { 2, 64, 0, 96, 16, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks208[] = { - { 0, 0, 0, -32, 16, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, - { 1, -32, 0, -72, 32, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, - { 2, -64, 0, -128, 56, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, - { 3, -96, 0, -128, 0, { 0b0000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 | RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks209[] = { - { 0, 0, 0, 0, 0, { 0b0111, 0 }, 0 }, - { 1, 0, -32, 0, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 2, -32, 0, 0, 8, { 0b0010, 0 }, 0 }, - { 3, -32, -32, 0, 8, { 0b0111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks210[] = { - { 0, 0, 0, 0, 0, { 0b1011, 0 }, 0 }, - { 1, 0, 32, 0, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 2, -32, 0, 0, 8, { 0b0001, 0 }, 0 }, - { 3, -32, 32, 0, 8, { 0b1011, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks211[] = { - { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - { 1, 0, -32, 0, 0, { 0b1111, 0 }, 0 }, - { 2, -32, -32, 0, 0, { 0b1111, 0 }, 0 }, - { 3, -64, -32, 0, 0, { 0b1111, 0 }, 0 }, - { 4, -32, 0, 0, 0, { 0b1111, 0 }, 0 }, - { 5, -64, 0, 0, 0, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks212[] = { - { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - { 1, 0, 32, 0, 0, { 0b1111, 0 }, 0 }, - { 2, -32, 32, 0, 0, { 0b1111, 0 }, 0 }, - { 3, -64, 32, 0, 0, { 0b1111, 0 }, 0 }, - { 4, -32, 0, 0, 0, { 0b1111, 0 }, 0 }, - { 5, -64, 0, 0, 0, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks213[] = { - { 0, 0, 0, 0, 32, { 0b1111, 0 }, 0 }, - { 1, 32, 0, 0, 32, { 0b1111, 0 }, 0 }, - { 2, -64, 0, 0, 32, { 0b1111, 0 }, 0 }, - { 3, -32, 0, 0, 32, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks214[] = { - { 0, 0, 0, 0, 48, { 0b1111, 0 }, 0 }, - { 1, 32, 0, 0, 48, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks215[] = { - { 0, 0, 0, 0, 208, { 0b1111, 0 }, 0 }, - { 1, 32, 0, 0, 208, { 0b1111, 0 }, 0 }, - { 2, -32, 0, 0, 160, { 0b1111, 0 }, 0 }, - { 3, -64, 0, 0, 80, { 0b1111, 0 }, 0 }, - { 4, -96, 0, 0, 48, { 0b1111, 0 }, 0 }, - { 5, -128, 0, 0, 32, { 0b1111, 0 }, 0 }, - { 6, -160, 0, 0, 16, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks216[] = { - { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks217[] = { - { 0, 0, 0, 0, 16, { 0b0111, 0b0100 }, 0 }, - { 1, 0, -32, 16, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 2, -32, 0, 16, 0, { 0b0010, 0 }, 0 }, - { 3, -32, -32, 16, 16,{ 0b0111, 0b0110 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks218[] = { - { 0, 0, 0, 0, 16, { 0b1011, 0b1000 }, 0 }, - { 1, 0, 32, 16, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 2, -32, 0, 16, 0, { 0b0001, 0 }, 0 }, - { 3, -32, 32, 16, 16,{ 0b1011, 0b1001 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks219[] = { - { 0, 0, 0, 16, 16,{ 0b0111, 0b0011 }, 0 }, - { 1, 0, -32, 16, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 2, -32, 0, 16, 0, { 0b0010, 0 }, 0 }, - { 3, -32, -32, 0, 16, { 0b0111, 0b0001 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks220[] = { - { 0, 0, 0, 16, 16, { 0b1011, 0b0011 }, 0 }, - { 1, 0, 32, 16, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 2, -32, 0, 16, 0, { 0b0001, 0 }, 0 }, - { 3, -32, 32, 0, 16, { 0b1011, 0b0010 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks221[] = { - { 0, 0, 0, 0, 16, { 0b1111, 0b1100 }, 0 }, - { 1, 0, -32, 16, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 2, -32, 0, 16, 16, { 0b0111, 0b0100 }, 0 }, - { 3, -32, -32, 24, 16, { 0b1101, 0 }, 0 }, - { 4, -32, -64, 48, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 5, -64, -32, 32, 16, { 0b0111, 0b0100 }, 0 }, - { 6, -64, -64, 48, 16, { 0b1111, 0b0110 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks222[] = { - { 0, 0, 0, 0, 16, { 0b1111, 0b1100 }, 0 }, - { 1, 0, 32, 16, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 2, -32, 0, 16, 16, { 0b1011, 0b1000 }, 0 }, - { 3, -32, 32, 24, 16, { 0b1110, 0 }, 0 }, - { 4, -32, 64, 48, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 5, -64, 32, 32, 16, { 0b1011, 0b1000 }, 0 }, - { 6, -64, 64, 48, 16, { 0b1111, 0b1001 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks223[] = { - { 0, 0, 0, 48, 16, { 0b1111, 0b0011 }, 0 }, - { 1, 0, -32, 48, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 2, -32, 0, 32, 16, { 0b0111, 0b0001 }, 0 }, - { 3, -32, -32, 24, 16, { 0b1101, 0 }, 0 }, - { 4, -32, -64, 16, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 5, -64, -32, 16, 16, { 0b0111, 0b0001 }, 0 }, - { 6, -64, -64, 0, 16, { 0b1111, 0b1001 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks224[] = { - { 0, 0, 0, 48, 16, { 0b1111, 0b0011 }, 0 }, - { 1, 0, 32, 48, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 2, -32, 0, 32, 16, { 0b1011, 0b0010 }, 0 }, - { 3, -32, 32, 24, 16, { 0b1110, 0 }, 0 }, - { 4, -32, 64, 16, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 5, -64, 32, 16, 16, { 0b1011, 0b0010 }, 0 }, - { 6, -64, 64, 0, 16, { 0b1111, 0b0110 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks225[] = { - { 0, 0, 0, 0, 16, { 0b1111, 0b1100 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks226[] = { - { 0, 0, 0, 0, 16, { 0b1111, 0b1100 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks227[] = { - { 0, 0, 0, 0, 16, { 0b1111, 0b1100 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks228[] = { - { 0, 0, 0, 0, 16, { 0b1111, 0b1100 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks229[] = { - { 0, 0, 0, 0, 16, { 0b1111, 0b0011 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks230[] = { - { 0, 0, 0, 0, 16, { 0b1111, 0b0011 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks231[] = { - { 0, 0, 0, 0, 16, { 0b1111, 0b0011 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks232[] = { - { 0, 0, 0, 0, 16, { 0b1111, 0b0011 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks233[] = { - { 0, 0, 0, 0, 8, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks234[] = { - { 0, 0, 0, 0, 8, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks235[] = { - { 0, 0, 0, 0, 8, { 0b1111, 0b1100 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks236[] = { - { 0, 0, 0, 0, 8, { 0b1111, 0b1100 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks237[] = { - { 0, 0, 0, 0, 8, { 0b1111, 0b0011 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks238[] = { - { 0, 0, 0, 0, 8, { 0b1111, 0b0011 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks239[] = { - { 0, 0, 0, 0, 8, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks240[] = { - { 0, 0, 0, 0, 8, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks241[] = { - { 0, 0, 0, 0, 8, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks242[] = { - { 0, 0, 0, 0, 8, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks243[] = { - { 0, 0, 0, 0, 8, { 0b1111, 0b1100 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks244[] = { - { 0, 0, 0, 0, 8, { 0b1111, 0b1100 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks245[] = { - { 0, 0, 0, 0, 8, { 0b1111, 0b0011 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks246[] = { - { 0, 0, 0, 0, 8, { 0b1111, 0b0011 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks247[] = { - { 0, 0, 0, 0, 8, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks248[] = { - { 0, 0, 0, 0, 8, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks249[] = { - { 0, 0, 0, 0, 72, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, - { 1, 0, 32, 0, 0, { 0b0000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 | RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks250[] = { - { 0, 0, 0, 0, 72, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, - { 1, 0, -32, 0, 0, { 0b0000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 | RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks251[] = { - { 0, 0, 0, 0, 72, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, - { 1, 0, 32, 0, 0, { 0b0000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 | RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks252[] = { - { 0, 0, 0, 0, 72, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, - { 1, 0, -32, 0, 0, { 0b0000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 | RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks253[] = { - { 0, 0, 0, 0, 56, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, - { 1, 32, 0, 56, 32, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, - { 2, 64, 0, 96, 16, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks254[] = { - { 0, 0, 0, -32, 16, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, - { 1, -32, 0, -72, 32, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, - { 2, -64, 0, -128, 56, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, - { 3, -96, 0, -128, 0, { 0b0000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 | RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocks255[] = { - { 0, 0, 0, 32, 56, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, - { 1, 32, 0, 88, 32, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, - { 2, 64, 0, 128, 16, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocksRotationControlToggle[] = { - { 0, 0, 0, 0, 0, { 0b1111, 0b1100 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocksFlatTrack1x4A[] = { - { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - { 1, -64, 0, 0, 0, { 0b1111, 0 }, 0 }, - { 2, -32, 0, 0, 0, { 0b1111, 0 }, 0 }, - { 3, 32, 0, 0, 0, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_1 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocksFlatTrack2x2[] = { - { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - { 1, 0, 32, 0, 0, { 0b1111, 0 }, 0 }, - { 2, 32, 0, 0, 0, { 0b1111, 0 }, 0 }, - { 3, 32, 32, 0, 0, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocksFlatTrack4x4[] = { - { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - { 1, 0, 32, 0, 0, { 0b1111, 0 }, 0 }, - { 2, 0, 64, 0, 0, { 0b1111, 0 }, 0 }, - { 3, 0, 96, 0, 0, { 0b1111, 0 }, 0 }, - { 4, 32, 0, 0, 0, { 0b1111, 0 }, 0 }, - { 5, 32, 32, 0, 0, { 0b1111, 0 }, 0 }, - { 6, 32, 64, 0, 0, { 0b1111, 0 }, 0 }, - { 7, 32, 96, 0, 0, { 0b1111, 0 }, 0 }, - { 8, 64, 0, 0, 0, { 0b1111, 0 }, 0 }, - { 9, 64, 32, 0, 0, { 0b1111, 0 }, 0 }, - { 10, 64, 64, 0, 0, { 0b1111, 0 }, 0 }, - { 11, 64, 96, 0, 0, { 0b1111, 0 }, 0 }, - { 12, 96, 0, 0, 0, { 0b1111, 0 }, 0 }, - { 13, 96, 32, 0, 0, { 0b1111, 0 }, 0 }, - { 14, 96, 64, 0, 0, { 0b1111, 0 }, 0 }, - { 15, 96, 96, 0, 0, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocksFlatTrack2x4[] = { - { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - { 1, 0, 32, 0, 0, { 0b1111, 0 }, 0 }, - { 2, 0, 64, 0, 0, { 0b1111, 0 }, 0 }, - { 3, 0, 96, 0, 0, { 0b1111, 0 }, 0 }, - { 4, 32, 0, 0, 0, { 0b1111, 0 }, 0 }, - { 5, 32, 32, 0, 0, { 0b1111, 0 }, 0 }, - { 6, 32, 64, 0, 0, { 0b1111, 0 }, 0 }, - { 7, 32, 96, 0, 0, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_1 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocksFlatTrack1x5[] = { - { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - { 1, -64, 0, 0, 0, { 0b1111, 0 }, 0 }, - { 2, -32, 0, 0, 0, { 0b1111, 0 }, 0 }, - { 3, 32, 0, 0, 0, { 0b1111, 0 }, 0 }, - { 4, 64, 0, 0, 0, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_1 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocksFlatTrack1x1A[] = { - { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocksFlatTrack1x4B[] = { - { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - { 1, -64, 0, 0, 0, { 0b1111, 0 }, 0 }, - { 2, -32, 0, 0, 0, { 0b1111, 0 }, 0 }, - { 3, 32, 0, 0, 0, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_1 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocksFlatTrack1x1B[] = { - { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocksFlatTrack1x4C[] = { - { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - { 1, -64, 0, 0, 0, { 0b1111, 0 }, 0 }, - { 2, -32, 0, 0, 0, { 0b1111, 0 }, 0 }, - { 3, 32, 0, 0, 0, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_1 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocksFlatTrack3x3[] = { - { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, - { 1, -32, -32, 0, 0, { 0b1111, 0 }, 0 }, - { 2, -32, 0, 0, 0, { 0b1111, 0 }, 0 }, - { 3, -32, 32, 0, 0, { 0b1111, 0 }, 0 }, - { 4, 0, -32, 0, 0, { 0b1111, 0 }, 0 }, - { 5, 0, 32, 0, 0, { 0b1111, 0 }, 0 }, - { 6, 32, -32, 0, 0, { 0b1111, 0 }, 0 }, - { 7, 32, 32, 0, 0, { 0b1111, 0 }, 0 }, - { 8, 32, 0, 0, 0, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_1 }, - kTrackBlockEnd - }; - - - static constexpr PreviewTrack TrackBlocksLeftLargeCorkscrewUp[] = { - { 0, 0, 0, 0, 16, { 0b1111, 0 }, 0 }, - { 1, -32, 0, 8, 32, { 0b1111, 0 }, 0 }, - { 2, -64, 0, 32, 24, { 0b0111, 0 }, 0 }, - { 3, -32, -32, 32, 24, { 0b1000, 0 }, 0 }, - { 4, -64, -32, 48, 40, { 0b1111, 0 }, 0 }, - { 5, -64, -64, 72, 24, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocksRightLargeCorkscrewUp[] = { - { 0, 0, 0 , 0, 16, { 0b1111, 0 }, 0 }, - { 1, -32, 0, 8, 32, { 0b1111, 0 }, 0 }, - { 2, -64, 0, 32, 24, { 0b1011, 0 }, 0 }, - { 3, -32, 32, 32, 24, { 0b0100, 0 }, 0 }, - { 4, -64, 32, 48, 40, { 0b1111, 0 }, 0 }, - { 5, -64, 64, 72, 24, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocksLeftLargeCorkscrewDown[] = { - { 0, 0, 0 , -40, 24, { 0b1111, 0 }, 0 }, - { 1, -32, 0, -64, 40, { 0b1111, 0 }, 0 }, - { 2, -32, -32, -80, 24, { 0b1000, 0 }, 0 }, - { 3, -64, 0, -80, 24, { 0b0111, 0 }, 0 }, - { 4, -64, -32, -104, 32, { 0b1111, 0 }, 0 }, - { 5, -64, -64, -112, 16, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocksRightLargeCorkscrewDown[] = { - { 0, 0, 0 , -40, 24, { 0b1111, 0 }, 0 }, - { 1, -32, 0, -64, 40, { 0b1111, 0 }, 0 }, - { 2, -32, 32, -80, 24, { 0b0100, 0 }, 0 }, - { 3, -64, 0, -80, 24, { 0b1011, 0 }, 0 }, - { 4, -64, 32, -104, 32, { 0b1111, 0 }, 0 }, - { 5, -64, 64, -112, 16, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocksLeftMediumHalfLoopUp[] = { - { 0, 0, 0, 0, 24, { 0b1111, 0 }, 0 }, - { 1, -32, 0, 16, 48, { 0b1111, 0 }, 0 }, - { 2, -64, 0, 56,120, { 0b1111, 0 }, 0 }, - { 3, -64, -32, 56,120, { 0b1111, 0 }, 0 }, - { 4, -32, -32,168, 24, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocksRightMediumHalfLoopUp[] = { - { 0, 0, 0, 0, 24, { 0b1111, 0 }, 0 }, - { 1, -32, 0, 16, 48, { 0b1111, 0 }, 0 }, - { 2, -64, 0, 56,120, { 0b1111, 0 }, 0 }, - { 3, -64, 32, 56,120, { 0b1111, 0 }, 0 }, - { 4, -32, 32,168, 24, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocksLeftMediumHalfLoopDown[] = { - { 0, 0, 0, -48, 24, { 0b1111, 0 }, 0 }, - { 1, -32, 0, -160,120, { 0b1111, 0 }, 0 }, - { 2, -32, -32, -160,120, { 0b1111, 0 }, 0 }, - { 3, 0, -32, -200, 48, { 0b1111, 0 }, 0 }, - { 4, 32, -32, -216, 24, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocksRightMediumHalfLoopDown[] = { - { 0, 0, 0 , -48, 24, { 0b1111, 0 }, 0 }, - { 1, -32, 0, -160, 120, { 0b1111, 0 }, 0 }, - { 2, -32, 32, -160, 120, { 0b1111, 0 }, 0 }, - { 3, 0, 32, -200, 48, { 0b1111, 0 }, 0 }, - { 4, 32, 32, -216, 24, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocksLeftZeroGRollUp[] = { - { 0, 0, 0, 0, 16, { 0b1111, 0 }, 0 }, - { 1, -32, 0, 8, 24, { 0b1111, 0 }, 0 }, - { 2, -64, 0, 24, 16, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocksRightZeroGRollUp[] = { - { 0, 0, 0, 0, 16, { 0b1111, 0 }, 0 }, - { 1, -32, 0, 8, 24, { 0b1111, 0 }, 0 }, - { 2, -64, 0, 24, 16, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocksLeftZeroGRollDown[] = { - { 0, 0, 0, -32, 16, { 0b1111, 0 }, 0 }, - { 1, -32, 0, -48, 24, { 0b1111, 0 }, 0 }, - { 2, -64, 0, -56, 16, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocksRightZeroGRollDown[] = { - { 0, 0, 0 ,-32, 16, { 0b1111, 0 }, 0 }, - { 1, -32, 0, -48, 24, { 0b1111, 0 }, 0 }, - { 2, -64, 0, -56, 16, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - - static constexpr PreviewTrack TrackBlocksLeftLargeZeroGRollUp[] = { - { 0, 0, 0, 0, 64, { 0b1111, 0 }, 0 }, - { 1, -32, 0, 56, 48, { 0b1111, 0 }, 0 }, - { 2, -64, 0, 96, 40, { 0b1111, 0 }, 0 }, - { 3, -96, 0,120, 16, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocksRightLargeZeroGRollUp[] = { - { 0, 0, 0, 0, 64, { 0b1111, 0 }, 0 }, - { 1, -32, 0, 56, 48, { 0b1111, 0 }, 0 }, - { 2, -64, 0, 96, 40, { 0b1111, 0 }, 0 }, - { 3, -96, 0, 120, 16, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocksLeftLargeZeroGRollDown[] = { - { 0, 0, 0, -32, 16, { 0b1111, 0 }, 0 }, - { 1, -32, 0, -56, 40, { 0b1111, 0 }, 0 }, - { 2, -64, 0, -96, 48, { 0b1111, 0 }, 0 }, - { 3, -96, 0, -152, 64, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocksRightLargeZeroGRollDown[] = { - { 0, 0, 0 , -32, 16, { 0b1111, 0 }, 0 }, - { 1, -32, 0, -56, 40, { 0b1111, 0 }, 0 }, - { 2, -64, 0, -96, 48, { 0b1111, 0 }, 0 }, - { 3, -96, 0, -152, 64, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocksLeftFlyerLargeHalfLoopUninvertedUp[] = { - { 0, 0, 0, 0, 24, { 0b1111, 0b1100 }, 0 }, - { 1, -32, 0, 16, 40, { 0b1111, 0b1100 }, 0 }, - { 2, -64, 0, 32, 56, { 0b1111, 0 }, 0 }, - { 3, -96, 0, 64, 192, { 0b1111, 0 }, 0 }, - { 4, -128, -32, 120, 96, { 0b1111, 0 }, 0 }, - { 5, -96, -32, 64, 192, { 0b1111, 0 }, 0 }, - { 6, -64, -32, 248, 16, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocksRightFlyerLargeHalfLoopUninvertedUp[] = { - { 0, 0, 0, 0, 24, { 0b1111, 0b1100 }, 0 }, - { 1, -32, 0, 16, 40, { 0b1111, 0b1100 }, 0 }, - { 2, -64, 0, 32, 56, { 0b1111, 0 }, 0 }, - { 3, -96, 0, 64, 192, { 0b1111, 0 }, 0 }, - { 4, -128, 32, 120, 96, { 0b1111, 0 }, 0 }, - { 5, -96, 32, 64, 192, { 0b1111, 0 }, 0 }, - { 6, -64, 32, 248, 16, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocksLeftFlyerLargeHalfLoopInvertedDown[] = { - { 0, 0, 0, 0, 16, { 0b1111, 0 }, 0 }, - { 1, -32, 0, -184, 192, { 0b1111, 0 }, 0 }, - { 2, -64, 0, -128, 96, { 0b1111, 0 }, 0 }, - { 3, -32, -32, -184, 192, { 0b1111, 0 }, 0 }, - { 4, 0, -32, -216, 56, { 0b1111, 0 }, 0 }, - { 5, 32, -32, -232, 40, { 0b1111, 0b1100 }, 0 }, - { 6, 64, -32, -248, 24, { 0b1111, 0b1100 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocksRightFlyerLargeHalfLoopInvertedDown[] = { - { 0, 0, 0, 0, 16, { 0b1111, 0 }, 0 }, - { 1, -32, 0, -184, 192, { 0b1111, 0 }, 0 }, - { 2, -64, 0, -128, 96, { 0b1111, 0 }, 0 }, - { 3, -32, 32, -184, 192, { 0b1111, 0 }, 0 }, - { 4, 0, 32, -216, 56, { 0b1111, 0 }, 0 }, - { 5, 32, 32, -232, 40, { 0b1111, 0b1100 }, 0 }, - { 6, 64, 32, -248, 24, { 0b1111, 0b1100 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocksLeftFlyerLargeHalfLoopInvertedUp[] = { - { 0, 0, 0, 0, 24, { 0b1111, 0b1100 }, 0 }, - { 1, -32, 0, 16, 40, { 0b1111, 0b1100 }, 0 }, - { 2, -64, 0, 32, 56, { 0b1111, 0 }, 0 }, - { 3, -96, 0, 64, 192, { 0b1111, 0 }, 0 }, - { 4, -128, -32, 120, 96, { 0b1111, 0 }, 0 }, - { 5, -96, -32, 64, 192, { 0b1111, 0 }, 0 }, - { 6, -64, -32, 248, 32, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocksRightFlyerLargeHalfLoopInvertedUp[] = { - { 0, 0, 0, 0, 24, { 0b1111, 0b1100 }, 0 }, - { 1, -32, 0, 16, 40, { 0b1111, 0b1100 }, 0 }, - { 2, -64, 0, 32, 56, { 0b1111, 0 }, 0 }, - { 3, -96, 0, 64, 192, { 0b1111, 0 }, 0 }, - { 4, -128, 32, 120, 96, { 0b1111, 0 }, 0 }, - { 5, -96, 32, 64, 192, { 0b1111, 0 }, 0 }, - { 6, -64, 32, 248, 32, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocksLeftFlyerLargeHalfLoopUninvertedDown[] = { - { 0, 0, 0, -32, 32, { 0b1111, 0 }, 0 }, - { 1, -32, 0, -216, 192, { 0b1111, 0 }, 0 }, - { 2, -64, 0, -160, 96, { 0b1111, 0 }, 0 }, - { 3, -32, -32, -216, 192, { 0b1111, 0 }, 0 }, - { 4, 0, -32, -248, 56, { 0b1111, 0 }, 0 }, - { 5, 32, -32, -264, 40, { 0b1111, 0b1100 }, 0 }, - { 6, 64, -32, -280, 24, { 0b1111, 0b1100 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocksRightFlyerLargeHalfLoopUninvertedDown[] = { - { 0, 0, 0, -32, 32, { 0b1111, 0 }, 0 }, - { 1, -32, 0, -216, 192, { 0b1111, 0 }, 0 }, - { 2, -64, 0, -160, 96, { 0b1111, 0 }, 0 }, - { 3, -32, 32, -216, 192, { 0b1111, 0 }, 0 }, - { 4, 0, 32, -248, 56, { 0b1111, 0 }, 0 }, - { 5, 32, 32, -264, 40, { 0b1111, 0b1100 }, 0 }, - { 6, 64, 32, -280, 24, { 0b1111, 0b1100 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocksFlyerHalfLoopUpInverted[] = { - { 0, 0, 0, 0, 16, { 0b1111, 0b1100 }, 0 }, - { 1, -32, 0, 16, 16, { 0b1111, 0b1100 }, 0 }, - { 2, -64, 0, 32, 96,{ 0b0011, 0 }, 0 }, - { 3, -32, 0, 120, 32, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocksFlyerHalfLoopDownUpright[] = { - { 0, 0, 0, -32, 32, { 0b1111, 0 }, 0 }, - { 1, -32, 0, -120, 96,{ 0b0011, 0 }, 0 }, - { 2, 0, 0, -136, 16, { 0b1111, 0b1100 }, 0 }, - { 3, 32, 0, -152, 16, { 0b1111, 0b1100 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocksLeftEighthToDiagUp25[] = { - { 0, 0, 0, 0, 16, { 0b1111, 0 }, 0 }, - { 1, -32, 0, 16, 32, { 0b1111, 0 }, 0 }, - { 2, -32, -32, 32, 16, { 0b1000, 0 }, 0 }, - { 3, -64, 0, 32, 16, { 0b0010, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 4, -64, -32, 32, 24, { 0b0001, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocksRightEighthToDiagUp25[] = { - { 0, 0, 0, 0, 16, { 0b1111, 0 }, 0 }, - { 1, -32, 0, 16, 32, { 0b1111, 0 }, 0 }, - { 2, -32, 32, 32, 16, { 0b0100, 0 }, 0 }, - { 3, -64, 0, 32, 16, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 4, -64, 32, 32, 24, { 0b0010, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocksLeftEighthToDiagDown25[] = { - { 0, 0, 0, -16, 16, { 0b1111, 0 }, 0 }, - { 1, -32, 0, -32, 16, { 0b1111, 0 }, 0 }, - { 2, -32, -32, -48, 16, { 0b1000, 0 }, 0 }, - { 3, -64, 0, -48, 16, { 0b0010, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 4, -64, -32, -48, 16, { 0b0001, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocksRightEighthToDiagDown25[] = { - { 0, 0, 0, -16, 16, { 0b1111, 0 }, 0 }, - { 1, -32, 0, -32, 16, { 0b1111, 0 }, 0 }, - { 2, -32, 32, -48, 16, { 0b0100, 0 }, 0 }, - { 3, -64, 0, -48, 16, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 4, -64, 32, -48, 16, { 0b0010, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocksLeftEighthToOrthogonalUp25[] = { - { 0, 0, 0, 0, 16, { 0b1101, 0 }, 0 }, - { 1, -32, 0, 0, 16, { 0b0001, 0 }, 0 }, - { 2, 0, 32, 0, 16, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 3, -32, 32, 16, 16, { 0b1111, 0 }, 0 }, - { 4, -64, 32, 32, 16, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocksRightEighthToOrthogonalUp25[] = { - { 0, 0, 0, 0, 16, { 0b1101, 0 }, 0 }, - { 1, 0, 32, 0, 16, { 0b0100, 0 }, 0 }, - { 2, -32, 0, 0, 16, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 3, -32, 32, 16, 16, { 0b1111, 0 }, 0 }, - { 4, -32, 64, 32, 16, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocksLeftEighthToOrthogonalDown25[] = { - { 0, 0, 0, -16, 24, { 0b1101, 0 }, 0 }, - { 1, -32, 0, -16, 16, { 0b0001, 0 }, 0 }, - { 2, 0, 32, -16, 16, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 3, -32, 32, -32, 32, { 0b1111, 0 }, 0 }, - { 4, -64, 32, -48, 16, { 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - static constexpr PreviewTrack TrackBlocksRightEighthToOrthogonalDown25[] = { - { 0, 0, 0, -16, 24, { 0b1101, 0 }, 0 }, - { 1, 0, 32, -16, 16,{ 0b0100, 0 }, 0 }, - { 2, -32, 0, -16, 16,{ 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, - { 3, -32, 32, -32, 32,{ 0b1111, 0 }, 0 }, - { 4, -32, 64, -48, 16,{ 0b1111, 0 }, 0 }, - kTrackBlockEnd - }; - - - // rct2: 0x00994638 - static constexpr std::array TrackBlocks = { - TrackBlocks000, - TrackBlocks001, - TrackBlocks002, - TrackBlocks003, - TrackBlocks004, - TrackBlocks005, - TrackBlocks006, - TrackBlocks007, - TrackBlocks008, - TrackBlocks009, - TrackBlocks010, - TrackBlocks011, - TrackBlocks012, - TrackBlocks013, - TrackBlocks014, - TrackBlocks015, - TrackBlocks016, - TrackBlocks017, - TrackBlocks018, - TrackBlocks019, - TrackBlocks020, - TrackBlocks021, - TrackBlocks022, - TrackBlocks023, - TrackBlocks024, - TrackBlocks025, - TrackBlocks026, - TrackBlocks027, - TrackBlocks028, - TrackBlocks029, - TrackBlocks030, - TrackBlocks031, - TrackBlocks032, - TrackBlocks033, - TrackBlocks034, - TrackBlocks035, - TrackBlocks036, - TrackBlocks037, - TrackBlocks038, - TrackBlocks039, - TrackBlocks040, - TrackBlocks041, - TrackBlocks042, - TrackBlocks043, - TrackBlocks044, - TrackBlocks045, - TrackBlocks046, - TrackBlocks047, - TrackBlocks048, - TrackBlocks049, - TrackBlocks050, - TrackBlocks051, - TrackBlocks052, - TrackBlocks053, - TrackBlocks054, - TrackBlocks055, - TrackBlocks056, - TrackBlocks057, - TrackBlocks058, - TrackBlocks059, - TrackBlocks060, - TrackBlocks061, - TrackBlocks062, - TrackBlocks063, - TrackBlocks064, - TrackBlocks065, - TrackBlocks066, - TrackBlocks067, - TrackBlocks068, - TrackBlocks069, - TrackBlocks070, - TrackBlocks071, - TrackBlocks072, - TrackBlocks073, - TrackBlocks074, - TrackBlocks075, - TrackBlocks076, - TrackBlocks077, - TrackBlocks078, - TrackBlocks079, - TrackBlocks080, - TrackBlocks081, - TrackBlocks082, - TrackBlocks083, - TrackBlocks084, - TrackBlocks085, - TrackBlocks086, - TrackBlocks087, - TrackBlocks088, - TrackBlocks089, - TrackBlocks090, - TrackBlocks091, - TrackBlocks092, - TrackBlocks093, - TrackBlocks094, - TrackBlocks095, - TrackBlocks096, - TrackBlocks097, - TrackBlocks098, - TrackBlocks099, - TrackBlocks100, - TrackBlocks101, - TrackBlocks102, - TrackBlocks103, - TrackBlocks104, - TrackBlocks105, - TrackBlocks106, - TrackBlocks107, - TrackBlocks108, - TrackBlocks109, - TrackBlocks110, - TrackBlocks111, - TrackBlocks112, - TrackBlocks113, - TrackBlocks114, - TrackBlocks115, - TrackBlocks116, - TrackBlocks117, - TrackBlocks118, - TrackBlocks119, - TrackBlocks120, - TrackBlocks121, - TrackBlocks122, - TrackBlocks123, - TrackBlocks124, - TrackBlocks125, - TrackBlocks126, - TrackBlocks127, - TrackBlocks128, - TrackBlocks129, - TrackBlocks130, - TrackBlocks131, - TrackBlocks132, - TrackBlocks133, - TrackBlocks134, - TrackBlocks135, - TrackBlocks136, - TrackBlocks137, - TrackBlocks138, - TrackBlocks139, - TrackBlocks140, - TrackBlocks141, - TrackBlocks142, - TrackBlocks143, - TrackBlocks144, - TrackBlocks145, - TrackBlocks146, - TrackBlocks147, - TrackBlocks148, - TrackBlocks149, - TrackBlocks150, - TrackBlocks151, - TrackBlocks152, - TrackBlocks153, - TrackBlocks154, - TrackBlocks155, - TrackBlocks156, - TrackBlocks157, - TrackBlocks158, - TrackBlocks159, - TrackBlocks160, - TrackBlocks161, - TrackBlocks162, - TrackBlocks163, - TrackBlocks164, - TrackBlocks165, - TrackBlocks166, - TrackBlocks167, - TrackBlocks168, - TrackBlocks169, - TrackBlocks170, - TrackBlocks171, - TrackBlocks172, - TrackBlocks173, - TrackBlocks174, - TrackBlocks175, - TrackBlocks176, - TrackBlocks177, - TrackBlocks178, - TrackBlocks179, - TrackBlocks180, - TrackBlocks181, - TrackBlocks182, - TrackBlocks183, - TrackBlocks184, - TrackBlocks185, - TrackBlocks186, - TrackBlocks187, - TrackBlocks188, - TrackBlocks189, - TrackBlocks190, - TrackBlocks191, - TrackBlocks192, - TrackBlocks193, - TrackBlocks194, - TrackBlocks195, - TrackBlocks196, - TrackBlocks197, - TrackBlocks198, - TrackBlocks199, - TrackBlocks200, - TrackBlocks201, - TrackBlocks202, - TrackBlocks203, - TrackBlocks204, - TrackBlocks205, - TrackBlocks206, - TrackBlocks207, - TrackBlocks208, - TrackBlocks209, - TrackBlocks210, - TrackBlocks211, - TrackBlocks212, - TrackBlocks213, - TrackBlocks214, - TrackBlocks215, - TrackBlocks216, - TrackBlocks217, - TrackBlocks218, - TrackBlocks219, - TrackBlocks220, - TrackBlocks221, - TrackBlocks222, - TrackBlocks223, - TrackBlocks224, - TrackBlocks225, - TrackBlocks226, - TrackBlocks227, - TrackBlocks228, - TrackBlocks229, - TrackBlocks230, - TrackBlocks231, - TrackBlocks232, - TrackBlocks233, - TrackBlocks234, - TrackBlocks235, - TrackBlocks236, - TrackBlocks237, - TrackBlocks238, - TrackBlocks239, - TrackBlocks240, - TrackBlocks241, - TrackBlocks242, - TrackBlocks243, - TrackBlocks244, - TrackBlocks245, - TrackBlocks246, - TrackBlocks247, - TrackBlocks248, - TrackBlocks249, - TrackBlocks250, - TrackBlocks251, - TrackBlocks252, - TrackBlocks253, - TrackBlocks254, - TrackBlocks255, - TrackBlocksRotationControlToggle, - - TrackBlocksFlatTrack1x4A, - TrackBlocksFlatTrack2x2, - TrackBlocksFlatTrack4x4, - TrackBlocksFlatTrack2x4, - TrackBlocksFlatTrack1x5, - TrackBlocksFlatTrack1x1A, - TrackBlocksFlatTrack1x4B, - TrackBlocksFlatTrack1x1B, - TrackBlocksFlatTrack1x4C, - TrackBlocksFlatTrack3x3, - TrackBlocksLeftLargeCorkscrewUp, - TrackBlocksRightLargeCorkscrewUp, - TrackBlocksLeftLargeCorkscrewDown, - TrackBlocksRightLargeCorkscrewDown, - TrackBlocksLeftMediumHalfLoopUp, - TrackBlocksRightMediumHalfLoopUp, - TrackBlocksLeftMediumHalfLoopDown, - TrackBlocksRightMediumHalfLoopDown, - TrackBlocksLeftZeroGRollUp, - TrackBlocksRightZeroGRollUp, - TrackBlocksLeftZeroGRollDown, - TrackBlocksRightZeroGRollDown, - TrackBlocksLeftLargeZeroGRollUp, - TrackBlocksRightLargeZeroGRollUp, - TrackBlocksLeftLargeZeroGRollDown, - TrackBlocksRightLargeZeroGRollDown, - - TrackBlocksLeftFlyerLargeHalfLoopUninvertedUp, // LeftFlyerLargeHalfLoopUninvertedUp - TrackBlocksRightFlyerLargeHalfLoopUninvertedUp, // RightFlyerLargeHalfLoopUninvertedUp - TrackBlocksLeftFlyerLargeHalfLoopInvertedDown, // LeftFlyerLargeHalfLoopInvertedDown - TrackBlocksRightFlyerLargeHalfLoopInvertedDown, // RightFlyerLargeHalfLoopInvertedDown - TrackBlocksLeftFlyerLargeHalfLoopInvertedUp, // TrackElemType::LeftFlyerLargeHalfLoopInvertedUp - TrackBlocksRightFlyerLargeHalfLoopInvertedUp, // TrackElemType::RightFlyerLargeHalfLoopInvertedUp - TrackBlocksLeftFlyerLargeHalfLoopUninvertedDown, // TrackElemType::LeftFlyerLargeHalfLoopUninvertedDown - TrackBlocksRightFlyerLargeHalfLoopUninvertedDown, // TrackElemType::RightFlyerLargeHalfLoopUninvertedDown - TrackBlocksFlyerHalfLoopUpInverted, // TrackElemType::FlyerHalfLoopInvertedUp - TrackBlocksFlyerHalfLoopDownUpright, // TrackElemType::FlyerHalfLoopUninvertedDown - TrackBlocksLeftEighthToDiagUp25, // TrackElemType::LeftEighthToDiagUp25 - TrackBlocksRightEighthToDiagUp25, // TrackElemType::RightEighthToDiagUp25 - TrackBlocksLeftEighthToDiagDown25, // TrackElemType::LeftEighthToDiagDown25 - TrackBlocksRightEighthToDiagDown25, // TrackElemType::RightEighthToDiagDown25 - TrackBlocksLeftEighthToOrthogonalUp25, // TrackElemType::LeftEighthToOrthogonalUp25 - TrackBlocksRightEighthToOrthogonalUp25, // TrackElemType::RightEighthToOrthogonalUp25 - TrackBlocksLeftEighthToOrthogonalDown25, // TrackElemType::LeftEighthToOrthogonalDown25 - TrackBlocksRightEighthToOrthogonalDown25, // TrackElemType::RightEighthToOrthogonalDown25 - TrackBlocks142, // TrackElemType::DiagUp25ToLeftBankedUp25 - TrackBlocks142, // TrackElemType::DiagUp25ToRightBankedUp25 - TrackBlocks142, // TrackElemType::DiagLeftBankedUp25ToUp25 - TrackBlocks142, // TrackElemType::DiagRightBankedUp25ToUp25 - TrackBlocks148, // TrackElemType::DiagDown25ToLeftBankedDown25 - TrackBlocks148, // TrackElemType::DiagDown25ToRightBankedDown25 - TrackBlocks148, // TrackElemType::DiagLeftBankedDown25ToDown25 - TrackBlocks148, // TrackElemType::DiagRightBankedDown25ToDown25 - TrackBlocks144, // TrackElemType::DiagLeftBankedFlatToLeftBankedUp25 - TrackBlocks144, // TrackElemType::DiagRightBankedFlatToRightBankedUp25 - TrackBlocks147, // TrackElemType::DiagLeftBankedUp25ToLeftBankedFlat - TrackBlocks147, // TrackElemType::DiagRightBankedUp25ToRightBankedFlat - TrackBlocks150, // TrackElemType::DiagLeftBankedFlatToLeftBankedDown25 - TrackBlocks150, // TrackElemType::DiagRightBankedFlatToRightBankedDown25 - TrackBlocks153, // TrackElemType::DiagLeftBankedDown25ToLeftBankedFlat - TrackBlocks153, // TrackElemType::DiagRightBankedDown25ToRightBankedFlat - TrackBlocks144, // TrackElemType::DiagFlatToLeftBankedUp25 - TrackBlocks144, // TrackElemType::DiagFlatToRightBankedUp25 - TrackBlocks147, // TrackElemType::DiagLeftBankedUp25ToFlat - TrackBlocks147, // TrackElemType::DiagRightBankedUp25ToFlat - TrackBlocks150, // TrackElemType::DiagFlatToLeftBankedDown25 - TrackBlocks150, // TrackElemType::DiagFlatToRightBankedDown25 - TrackBlocks153, // TrackElemType::DiagLeftBankedDown25ToFlat - TrackBlocks153, // TrackElemType::DiagRightBankedDown25ToFlat - TrackBlocks142, // TrackElemType::DiagUp25LeftBanked - TrackBlocks142, // TrackElemType::DiagUp25RightBanked - TrackBlocks148, // TrackElemType::DiagDown25LeftBanked - TrackBlocks148, // TrackElemType::DiagDown25RightBanked - TrackBlocksLeftEighthToDiagUp25, // TrackElemType::LeftEighthBankToDiagUp25 - TrackBlocksRightEighthToDiagUp25, // TrackElemType::RightEighthBankToDiagUp25 - TrackBlocksLeftEighthToDiagDown25, // TrackElemType::LeftEighthBankToDiagDown25 - TrackBlocksRightEighthToDiagDown25, // TrackElemType::RightEighthBankToDiagDown25 - TrackBlocksLeftEighthToOrthogonalUp25, // TrackElemType::LeftEighthBankToOrthogonalUp25 - TrackBlocksRightEighthToOrthogonalUp25, // TrackElemType::RightEighthBankToOrthogonalUp25 - TrackBlocksLeftEighthToOrthogonalDown25, // TrackElemType::LeftEighthBankToOrthogonalDown25 - TrackBlocksRightEighthToOrthogonalDown25, // TrackElemType::RightEighthBankToOrthogonalDown25 - TrackBlocks141, // TrackElemType::DiagBrakes - TrackBlocks141, // TrackElemType::DiagBlockBrakes - }; - - static constexpr uint8_t TrackPieceLengths[] = { - 32, // TrackElemType::Flat - 32, // TrackElemType::EndStation - 32, // TrackElemType::BeginStation - 32, // TrackElemType::MiddleStation - 33, // TrackElemType::Up25 - 40, // TrackElemType::Up60 - 32, // TrackElemType::FlatToUp25 - 34, // TrackElemType::Up25ToUp60 - 34, // TrackElemType::Up60ToUp25 - 32, // TrackElemType::Up25ToFlat - 33, // TrackElemType::Down25 - 40, // TrackElemType::Down60 - 32, // TrackElemType::FlatToDown25 - 34, // TrackElemType::Down25ToDown60 - 34, // TrackElemType::Down60ToDown25 - 32, // TrackElemType::Down25ToFlat - 124, // TrackElemType::LeftQuarterTurn5Tiles - 124, // TrackElemType::RightQuarterTurn5Tiles - 32, // TrackElemType::FlatToLeftBank - 32, // TrackElemType::FlatToRightBank - 32, // TrackElemType::LeftBankToFlat - 32, // TrackElemType::RightBankToFlat - 124, // TrackElemType::BankedLeftQuarterTurn5Tiles - 124, // TrackElemType::BankedRightQuarterTurn5Tiles - 32, // TrackElemType::LeftBankToUp25 - 32, // TrackElemType::RightBankToUp25 - 32, // TrackElemType::Up25ToLeftBank - 32, // TrackElemType::Up25ToRightBank - 32, // TrackElemType::LeftBankToDown25 - 32, // TrackElemType::RightBankToDown25 - 32, // TrackElemType::Down25ToLeftBank - 32, // TrackElemType::Down25ToRightBank - 32, // TrackElemType::LeftBank - 32, // TrackElemType::RightBank - 130, // TrackElemType::LeftQuarterTurn5TilesUp25 - 130, // TrackElemType::RightQuarterTurn5TilesUp25 - 130, // TrackElemType::LeftQuarterTurn5TilesDown25 - 130, // TrackElemType::RightQuarterTurn5TilesDown25 - 96, // TrackElemType::SBendLeft - 96, // TrackElemType::SBendRight - 120, // TrackElemType::LeftVerticalLoop - 120, // TrackElemType::RightVerticalLoop - 75, // TrackElemType::LeftQuarterTurn3Tiles - 75, // TrackElemType::RightQuarterTurn3Tiles - 75, // TrackElemType::LeftBankedQuarterTurn3Tiles - 75, // TrackElemType::RightBankedQuarterTurn3Tiles - 77, // TrackElemType::LeftQuarterTurn3TilesUp25 - 77, // TrackElemType::RightQuarterTurn3TilesUp25 - 77, // TrackElemType::LeftQuarterTurn3TilesDown25 - 77, // TrackElemType::RightQuarterTurn3TilesDown25 - 24, // TrackElemType::LeftQuarterTurn1Tile - 24, // TrackElemType::RightQuarterTurn1Tile - 96, // TrackElemType::LeftTwistDownToUp - 96, // TrackElemType::RightTwistDownToUp - 96, // TrackElemType::LeftTwistUpToDown - 96, // TrackElemType::RightTwistUpToDown - 60, // TrackElemType::HalfLoopUp - 60, // TrackElemType::HalfLoopDown - 55, // TrackElemType::LeftCorkscrewUp - 55, // TrackElemType::RightCorkscrewUp - 55, // TrackElemType::LeftCorkscrewDown - 55, // TrackElemType::RightCorkscrewDown - 36, // TrackElemType::FlatToUp60 - 36, // TrackElemType::Up60ToFlat - 36, // TrackElemType::FlatToDown60 - 36, // TrackElemType::Down60ToFlat - 32, // TrackElemType::TowerBase - 32, // TrackElemType::TowerSection - 32, // TrackElemType::FlatCovered - 33, // TrackElemType::Up25Covered - 40, // TrackElemType::Up60Covered - 32, // TrackElemType::FlatToUp25Covered - 34, // TrackElemType::Up25ToUp60Covered - 34, // TrackElemType::Up60ToUp25Covered - 32, // TrackElemType::Up25ToFlatCovered - 33, // TrackElemType::Down25Covered - 40, // TrackElemType::Down60Covered - 32, // TrackElemType::FlatToDown25Covered - 34, // TrackElemType::Down25ToDown60Covered - 34, // TrackElemType::Down60ToDown25Covered - 32, // TrackElemType::Down25ToFlatCovered - 124, // TrackElemType::LeftQuarterTurn5TilesCovered - 124, // TrackElemType::RightQuarterTurn5TilesCovered - 96, // TrackElemType::SBendLeftCovered - 96, // TrackElemType::SBendRightCovered - 75, // TrackElemType::LeftQuarterTurn3TilesCovered - 75, // TrackElemType::RightQuarterTurn3TilesCovered - 150, // TrackElemType::LeftHalfBankedHelixUpSmall - 150, // TrackElemType::RightHalfBankedHelixUpSmall - 150, // TrackElemType::LeftHalfBankedHelixDownSmall - 150, // TrackElemType::RightHalfBankedHelixDownSmall - 248, // TrackElemType::LeftHalfBankedHelixUpLarge - 248, // TrackElemType::RightHalfBankedHelixUpLarge - 248, // TrackElemType::LeftHalfBankedHelixDownLarge - 248, // TrackElemType::RightHalfBankedHelixDownLarge - 64, // TrackElemType::LeftQuarterTurn1TileUp60 - 64, // TrackElemType::RightQuarterTurn1TileUp60 - 64, // TrackElemType::LeftQuarterTurn1TileDown60 - 64, // TrackElemType::RightQuarterTurn1TileDown60 - 32, // TrackElemType::Brakes - 32, // TrackElemType::Booster - 32, // TrackElemType::InvertedUp90ToFlatQuarterLoopAlias / Maze - 124, // TrackElemType::LeftQuarterBankedHelixLargeUp - 124, // TrackElemType::RightQuarterBankedHelixLargeUp - 124, // TrackElemType::LeftQuarterBankedHelixLargeDown - 124, // TrackElemType::RightQuarterBankedHelixLargeDown - 124, // TrackElemType::LeftQuarterHelixLargeUp - 124, // TrackElemType::RightQuarterHelixLargeUp - 124, // TrackElemType::LeftQuarterHelixLargeDown - 124, // TrackElemType::RightQuarterHelixLargeDown - 33, // TrackElemType::Up25LeftBanked - 33, // TrackElemType::Up25RightBanked - 32, // TrackElemType::Waterfall - 32, // TrackElemType::Rapids - 32, // TrackElemType::OnRidePhoto - 33, // TrackElemType::Down25LeftBanked - 33, // TrackElemType::Down25RightBanked - 128, // TrackElemType::Watersplash - 165, // TrackElemType::FlatToUp60LongBase - 165, // TrackElemType::Up60ToFlatLongBase - 32, // TrackElemType::Whirlpool - 165, // TrackElemType::Down60ToFlatLongBase - 165, // TrackElemType::FlatToDown60LongBase - 138, // TrackElemType::CableLiftHill - 32, // TrackElemType::ReverseFreefallSlope - 32, // TrackElemType::ReverseFreefallVertical - 32, // TrackElemType::Up90 - 32, // TrackElemType::Down90 - 32, // TrackElemType::Up60ToUp90 - 32, // TrackElemType::Down90ToDown60 - 32, // TrackElemType::Up90ToUp60 - 32, // TrackElemType::Down60ToDown90 - 32, // TrackElemType::BrakeForDrop - 87, // TrackElemType::LeftEighthToDiag - 87, // TrackElemType::RightEighthToDiag - 87, // TrackElemType::LeftEighthToOrthogonal - 87, // TrackElemType::RightEighthToOrthogonal - 87, // TrackElemType::LeftEighthBankToDiag - 87, // TrackElemType::RightEighthBankToDiag - 87, // TrackElemType::LeftEighthBankToOrthogonal - 87, // TrackElemType::RightEighthBankToOrthogonal - 45, // TrackElemType::DiagFlat - 45, // TrackElemType::DiagUp25 - 45, // TrackElemType::DiagUp60 - 45, // TrackElemType::DiagFlatToUp25 - 45, // TrackElemType::DiagUp25ToUp60 - 45, // TrackElemType::DiagUp60ToUp25 - 45, // TrackElemType::DiagUp25ToFlat - 45, // TrackElemType::DiagDown25 - 45, // TrackElemType::DiagDown60 - 45, // TrackElemType::DiagFlatToDown25 - 45, // TrackElemType::DiagDown25ToDown60 - 45, // TrackElemType::DiagDown60ToDown25 - 45, // TrackElemType::DiagDown25ToFlat - 45, // TrackElemType::DiagFlatToUp60 - 45, // TrackElemType::DiagUp60ToFlat - 45, // TrackElemType::DiagFlatToDown60 - 45, // TrackElemType::DiagDown60ToFlat - 45, // TrackElemType::DiagFlatToLeftBank - 45, // TrackElemType::DiagFlatToRightBank - 45, // TrackElemType::DiagLeftBankToFlat - 45, // TrackElemType::DiagRightBankToFlat - 45, // TrackElemType::DiagLeftBankToUp25 - 45, // TrackElemType::DiagRightBankToUp25 - 45, // TrackElemType::DiagUp25ToLeftBank - 45, // TrackElemType::DiagUp25ToRightBank - 45, // TrackElemType::DiagLeftBankToDown25 - 45, // TrackElemType::DiagRightBankToDown25 - 45, // TrackElemType::DiagDown25ToLeftBank - 45, // TrackElemType::DiagDown25ToRightBank - 45, // TrackElemType::DiagLeftBank - 45, // TrackElemType::DiagRightBank - 16, // TrackElemType::LogFlumeReverser - 32, // TrackElemType::SpinningTunnel - 96, // TrackElemType::LeftBarrelRollUpToDown - 96, // TrackElemType::RightBarrelRollUpToDown - 96, // TrackElemType::LeftBarrelRollDownToUp - 96, // TrackElemType::RightBarrelRollDownToUp - 64, // TrackElemType::LeftBankToLeftQuarterTurn3TilesUp25 - 64, // TrackElemType::RightBankToRightQuarterTurn3TilesUp25 - 64, // TrackElemType::LeftQuarterTurn3TilesDown25ToLeftBank - 64, // TrackElemType::RightQuarterTurn3TilesDown25ToRightBank - 32, // TrackElemType::PoweredLift - 100, // TrackElemType::LeftLargeHalfLoopUp - 100, // TrackElemType::RightLargeHalfLoopUp - 100, // TrackElemType::LeftLargeHalfLoopDown - 100, // TrackElemType::RightLargeHalfLoopDown - 96, // TrackElemType::LeftFlyerTwistUp - 96, // TrackElemType::RightFlyerTwistUp - 96, // TrackElemType::LeftFlyerTwistDown - 96, // TrackElemType::RightFlyerTwistDown - 64, // TrackElemType::FlyerHalfLoopUninvertedUp - 64, // TrackElemType::FlyerHalfLoopInvertedDown - 64, // TrackElemType::LeftFlyerCorkscrewUp - 64, // TrackElemType::RightFlyerCorkscrewUp - 64, // TrackElemType::LeftFlyerCorkscrewDown - 64, // TrackElemType::RightFlyerCorkscrewDown - 16, // TrackElemType::HeartLineTransferUp - 16, // TrackElemType::HeartLineTransferDown - 64, // TrackElemType::LeftHeartLineRoll - 64, // TrackElemType::RightHeartLineRoll - 32, // TrackElemType::MinigolfHoleA - 32, // TrackElemType::MinigolfHoleB - 32, // TrackElemType::MinigolfHoleC - 32, // TrackElemType::MinigolfHoleD - 32, // TrackElemType::MinigolfHoleE - 80, // TrackElemType::MultiDimInvertedFlatToDown90QuarterLoop - 80, // TrackElemType::Up90ToInvertedFlatQuarterLoop - 80, // TrackElemType::InvertedFlatToDown90QuarterLoop - 64, // TrackElemType::LeftCurvedLiftHill - 64, // TrackElemType::RightCurvedLiftHill - 32, // TrackElemType::LeftReverser - 32, // TrackElemType::RightReverser - 32, // TrackElemType::AirThrustTopCap - 32, // TrackElemType::AirThrustVerticalDown - 32, // TrackElemType::AirThrustVerticalDownToLevel - 32, // TrackElemType::BlockBrakes - 32, // TrackElemType::LeftBankedQuarterTurn3TileUp25 - 32, // TrackElemType::RightBankedQuarterTurn3TileUp25 - 32, // TrackElemType::LeftBankedQuarterTurn3TileDown25 - 32, // TrackElemType::RightBankedQuarterTurn3TileDown25 - 32, // TrackElemType::LeftBankedQuarterTurn5TileUp25 - 32, // TrackElemType::RightBankedQuarterTurn5TileUp25 - 32, // TrackElemType::LeftBankedQuarterTurn5TileDown25 - 32, // TrackElemType::RightBankedQuarterTurn5TileDown25 - 32, // TrackElemType::Up25ToLeftBankedUp25 - 32, // TrackElemType::Up25ToRightBankedUp25 - 32, // TrackElemType::LeftBankedUp25ToUp25 - 32, // TrackElemType::RightBankedUp25ToUp25 - 32, // TrackElemType::Down25ToLeftBankedDown25 - 32, // TrackElemType::Down25ToRightBankedDown25 - 32, // TrackElemType::LeftBankedDown25ToDown25 - 32, // TrackElemType::RightBankedDown25ToDown25 - 32, // TrackElemType::LeftBankedFlatToLeftBankedUp25 - 32, // TrackElemType::RightBankedFlatToRightBankedUp25 - 32, // TrackElemType::LeftBankedUp25ToLeftBankedFlat - 32, // TrackElemType::RightBankedUp25ToRightBankedFlat - 32, // TrackElemType::LeftBankedFlatToLeftBankedDown25 - 32, // TrackElemType::RightBankedFlatToRightBankedDown25 - 32, // TrackElemType::LeftBankedDown25ToLeftBankedFlat - 32, // TrackElemType::RightBankedDown25ToRightBankedFlat - 32, // TrackElemType::FlatToLeftBankedUp25 - 32, // TrackElemType::FlatToRightBankedUp25 - 32, // TrackElemType::LeftBankedUp25ToFlat - 32, // TrackElemType::RightBankedUp25ToFlat - 32, // TrackElemType::FlatToLeftBankedDown25 - 32, // TrackElemType::FlatToRightBankedDown25 - 32, // TrackElemType::LeftBankedDown25ToFlat - 32, // TrackElemType::RightBankedDown25ToFlat - 32, // TrackElemType::LeftQuarterTurn1TileUp90 - 32, // TrackElemType::RightQuarterTurn1TileUp90 - 32, // TrackElemType::LeftQuarterTurn1TileDown90 - 32, // TrackElemType::RightQuarterTurn1TileDown90 - 80, // TrackElemType::MultiDimUp90ToInvertedFlatQuarterLoop - 80, // TrackElemType::MultiDimFlatToDown90QuarterLoop - 80, // TrackElemType::MultiDimInvertedUp90ToFlatQuarterLoop - 32, // TrackElemType::RotationControlToggle - 0, // TrackElemType::FlatTrack1x4A - 0, // TrackElemType::FlatTrack2x2 - 0, // TrackElemType::FlatTrack4x4 - 0, // TrackElemType::FlatTrack2x4 - 0, // TrackElemType::FlatTrack1x5 - 0, // TrackElemType::FlatTrack1x1A - 0, // TrackElemType::FlatTrack1x4B - 0, // TrackElemType::FlatTrack1x1B - 0, // TrackElemType::FlatTrack1x4C - 0, // TrackElemType::FlatTrack3x3 - 96, // TrackElemType::LeftCorkscrewUp - 96, // TrackElemType::RightCorkscrewUp - 96, // TrackElemType::LeftCorkscrewDown - 96, // TrackElemType::RightCorkscrewDown - 80, // TrackElemType::LeftMediumHalfLoopUp - 80, // TrackElemType::RightMediumHalfLoopUp - 80, // TrackElemType::LeftMediumHalfLoopDown - 80, // TrackElemType::RightMediumHalfLoopDown - 96, // TrackElemType::LeftZeroGRollUp - 96, // TrackElemType::RightZeroGRollUp - 96, // TrackElemType::LeftZeroGRollDown - 96, // TrackElemType::RightZeroGRollDown - 165, // TrackElemType::LeftLargeZeroGRollUp - 165, // TrackElemType::RightLargeZeroGRollUp - 165, // TrackElemType::LeftLargeZeroGRollDown - 165, // TrackElemType::RightLargeZeroGRollDown - 100, // TrackElemType::LeftFlyerLargeHalfLoopUninvertedUp - 100, // TrackElemType::RightFlyerLargeHalfLoopUninvertedUp - 100, // TrackElemType::LeftFlyerLargeHalfLoopInvertedDown - 100, // TrackElemType::RightFlyerLargeHalfLoopInvertedDown - 100, // TrackElemType::LeftFlyerLargeHalfLoopInvertedUp - 100, // TrackElemType::RightFlyerLargeHalfLoopInvertedUp - 100, // TrackElemType::LeftFlyerLargeHalfLoopUninvertedDown - 100, // TrackElemType::RightFlyerLargeHalfLoopUninvertedDown - 64, // TrackElemType::FlyerHalfLoopInvertedUp - 64, // TrackElemType::FlyerHalfLoopUninvertedDown - 92, // TrackElemType::LeftEighthToDiagUp25 - 92, // TrackElemType::RightEighthToDiagUp25 - 92, // TrackElemType::LeftEighthToDiagDown25 - 92, // TrackElemType::RightEighthToDiagDown25 - 92, // TrackElemType::LeftEighthToOrthogonalUp25 - 92, // TrackElemType::RightEighthToOrthogonalUp25 - 92, // TrackElemType::LeftEighthToOrthogonalDown25 - 92, // TrackElemType::RightEighthToOrthogonalDown25 - 45, // TrackElemType::DiagUp25ToLeftBankedUp25 - 45, // TrackElemType::DiagUp25ToRightBankedUp25 - 45, // TrackElemType::DiagLeftBankedUp25ToUp25 - 45, // TrackElemType::DiagRightBankedUp25ToUp25 - 45, // TrackElemType::DiagDown25ToLeftBankedDown25 - 45, // TrackElemType::DiagDown25ToRightBankedDown25 - 45, // TrackElemType::DiagLeftBankedDown25ToDown25 - 45, // TrackElemType::DiagRightBankedDown25ToDown25 - 45, // TrackElemType::DiagLeftBankedFlatToLeftBankedUp25 - 45, // TrackElemType::DiagRightBankedFlatToRightBankedUp25 - 45, // TrackElemType::DiagLeftBankedUp25ToLeftBankedFlat - 45, // TrackElemType::DiagRightBankedUp25ToRightBankedFlat - 45, // TrackElemType::DiagLeftBankedFlatToLeftBankedDown25 - 45, // TrackElemType::DiagRightBankedFlatToRightBankedDown25 - 45, // TrackElemType::DiagLeftBankedDown25ToLeftBankedFlat - 45, // TrackElemType::DiagRightBankedDown25ToRightBankedFlat - 45, // TrackElemType::DiagFlatToLeftBankedUp25 - 45, // TrackElemType::DiagFlatToRightBankedUp25 - 45, // TrackElemType::DiagLeftBankedUp25ToFlat - 45, // TrackElemType::DiagRightBankedUp25ToFlat - 45, // TrackElemType::DiagFlatToLeftBankedDown25 - 45, // TrackElemType::DiagFlatToRightBankedDown25 - 45, // TrackElemType::DiagLeftBankedDown25ToFlat - 45, // TrackElemType::DiagRightBankedDown25ToFlat - 45, // TrackElemType::DiagUp25LeftBanked - 45, // TrackElemType::DiagUp25RightBanked - 45, // TrackElemType::DiagDown25LeftBanked - 45, // TrackElemType::DiagDown25RightBanked - 92, // TrackElemType::LeftEighthBankToDiagUp25 - 92, // TrackElemType::RightEighthBankToDiagUp25 - 92, // TrackElemType::LeftEighthBankToDiagDown25 - 92, // TrackElemType::RightEighthBankToDiagDown25 - 92, // TrackElemType::LeftEighthBankToOrthogonalUp25 - 92, // TrackElemType::RightEighthBankToOrthogonalUp25 - 92, // TrackElemType::LeftEighthBankToOrthogonalDown25 - 92, // TrackElemType::RightEighthBankToOrthogonalDown25 - 45, // TrackElemType::DiagBrakes - 45, // TrackElemType::DiagBlockBrakes - }; - static_assert(std::size(TrackPieceLengths) == TrackElemType::Count); - - // rct2: 0x00998C95 - static constexpr TrackCurveChain gTrackCurveChain[] = { - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { RideConstructionSpecialPieceSelected | TrackElemType::EndStation, RideConstructionSpecialPieceSelected | TrackElemType::EndStation }, - { RideConstructionSpecialPieceSelected | TrackElemType::EndStation, RideConstructionSpecialPieceSelected | TrackElemType::EndStation }, - { RideConstructionSpecialPieceSelected | TrackElemType::EndStation, RideConstructionSpecialPieceSelected | TrackElemType::EndStation }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::Left), EnumValue(TrackCurve::Left) }, - { EnumValue(TrackCurve::Right), EnumValue(TrackCurve::Right) }, - { EnumValue(TrackCurve::Left), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::Right), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::Left) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::Right) }, - { EnumValue(TrackCurve::Left), EnumValue(TrackCurve::Left) }, - { EnumValue(TrackCurve::Right), EnumValue(TrackCurve::Right) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::Left) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::Right) }, - { EnumValue(TrackCurve::Left), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::Right), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::Left) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::Right) }, - { EnumValue(TrackCurve::Left), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::Right), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::Left), EnumValue(TrackCurve::Left) }, - { EnumValue(TrackCurve::Right), EnumValue(TrackCurve::Right) }, - { EnumValue(TrackCurve::Left), EnumValue(TrackCurve::Left) }, - { EnumValue(TrackCurve::Right), EnumValue(TrackCurve::Right) }, - { EnumValue(TrackCurve::Left), EnumValue(TrackCurve::Left) }, - { EnumValue(TrackCurve::Right), EnumValue(TrackCurve::Right) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::LeftSmall), EnumValue(TrackCurve::LeftSmall) }, - { EnumValue(TrackCurve::RightSmall), EnumValue(TrackCurve::RightSmall) }, - { EnumValue(TrackCurve::LeftSmall), EnumValue(TrackCurve::LeftSmall) }, - { EnumValue(TrackCurve::RightSmall), EnumValue(TrackCurve::RightSmall) }, - { EnumValue(TrackCurve::LeftSmall), EnumValue(TrackCurve::LeftSmall) }, - { EnumValue(TrackCurve::RightSmall), EnumValue(TrackCurve::RightSmall) }, - { EnumValue(TrackCurve::LeftSmall), EnumValue(TrackCurve::LeftSmall) }, - { EnumValue(TrackCurve::RightSmall), EnumValue(TrackCurve::RightSmall) }, - { EnumValue(TrackCurve::LeftVerySmall), EnumValue(TrackCurve::LeftVerySmall) }, - { EnumValue(TrackCurve::RightVerySmall), EnumValue(TrackCurve::RightVerySmall) }, - { RideConstructionSpecialPieceSelected | TrackElemType::LeftTwistUpToDown, EnumValue(TrackCurve::None) }, - { RideConstructionSpecialPieceSelected | TrackElemType::RightTwistUpToDown, EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), RideConstructionSpecialPieceSelected | TrackElemType::LeftTwistDownToUp }, - { EnumValue(TrackCurve::None), RideConstructionSpecialPieceSelected | TrackElemType::RightTwistDownToUp }, - { RideConstructionSpecialPieceSelected | TrackElemType::HalfLoopDown, EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), RideConstructionSpecialPieceSelected | TrackElemType::HalfLoopUp }, - { RideConstructionSpecialPieceSelected | TrackElemType::RightCorkscrewDown, EnumValue(TrackCurve::None) }, - { RideConstructionSpecialPieceSelected | TrackElemType::LeftCorkscrewDown, EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), RideConstructionSpecialPieceSelected | TrackElemType::RightCorkscrewUp }, - { EnumValue(TrackCurve::None), RideConstructionSpecialPieceSelected | TrackElemType::LeftCorkscrewUp }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { RideConstructionSpecialPieceSelected | TrackElemType::TowerSection, EnumValue(TrackCurve::None) }, - { RideConstructionSpecialPieceSelected | TrackElemType::TowerSection, EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::Left), EnumValue(TrackCurve::Left) }, - { EnumValue(TrackCurve::Right), EnumValue(TrackCurve::Right) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::LeftSmall), EnumValue(TrackCurve::LeftSmall) }, - { EnumValue(TrackCurve::RightSmall), EnumValue(TrackCurve::RightSmall) }, - { RideConstructionSpecialPieceSelected | TrackElemType::LeftHalfBankedHelixUpSmall, RideConstructionSpecialPieceSelected | TrackElemType::LeftHalfBankedHelixUpSmall }, - { RideConstructionSpecialPieceSelected | TrackElemType::RightHalfBankedHelixUpSmall, RideConstructionSpecialPieceSelected | TrackElemType::RightHalfBankedHelixUpSmall }, - { RideConstructionSpecialPieceSelected | TrackElemType::LeftHalfBankedHelixDownSmall, RideConstructionSpecialPieceSelected | TrackElemType::LeftHalfBankedHelixDownSmall }, - { RideConstructionSpecialPieceSelected | TrackElemType::RightHalfBankedHelixDownSmall, RideConstructionSpecialPieceSelected | TrackElemType::RightHalfBankedHelixDownSmall }, - { RideConstructionSpecialPieceSelected | TrackElemType::LeftHalfBankedHelixUpLarge, RideConstructionSpecialPieceSelected | TrackElemType::LeftHalfBankedHelixUpLarge }, - { RideConstructionSpecialPieceSelected | TrackElemType::RightHalfBankedHelixUpLarge, RideConstructionSpecialPieceSelected | TrackElemType::RightHalfBankedHelixUpLarge }, - { RideConstructionSpecialPieceSelected | TrackElemType::LeftHalfBankedHelixDownLarge, RideConstructionSpecialPieceSelected | TrackElemType::LeftHalfBankedHelixDownLarge }, - { RideConstructionSpecialPieceSelected | TrackElemType::RightHalfBankedHelixDownLarge, RideConstructionSpecialPieceSelected | TrackElemType::RightHalfBankedHelixDownLarge }, - { EnumValue(TrackCurve::LeftSmall), EnumValue(TrackCurve::LeftSmall) }, - { EnumValue(TrackCurve::RightSmall), EnumValue(TrackCurve::RightSmall) }, - { EnumValue(TrackCurve::LeftSmall), EnumValue(TrackCurve::LeftSmall) }, - { EnumValue(TrackCurve::RightSmall), EnumValue(TrackCurve::RightSmall) }, - { RideConstructionSpecialPieceSelected | TrackElemType::Brakes, RideConstructionSpecialPieceSelected | TrackElemType::Brakes }, - { RideConstructionSpecialPieceSelected | TrackElemType::Booster, RideConstructionSpecialPieceSelected | TrackElemType::Booster }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { RideConstructionSpecialPieceSelected | TrackElemType::LeftQuarterBankedHelixLargeUp, RideConstructionSpecialPieceSelected | TrackElemType::LeftQuarterBankedHelixLargeUp }, - { RideConstructionSpecialPieceSelected | TrackElemType::RightQuarterBankedHelixLargeUp, RideConstructionSpecialPieceSelected | TrackElemType::RightQuarterBankedHelixLargeUp }, - { RideConstructionSpecialPieceSelected | TrackElemType::LeftQuarterBankedHelixLargeDown, RideConstructionSpecialPieceSelected | TrackElemType::LeftQuarterBankedHelixLargeDown }, - { RideConstructionSpecialPieceSelected | TrackElemType::RightQuarterBankedHelixLargeDown, RideConstructionSpecialPieceSelected | TrackElemType::RightQuarterBankedHelixLargeDown }, - { RideConstructionSpecialPieceSelected | TrackElemType::LeftQuarterHelixLargeUp, RideConstructionSpecialPieceSelected | TrackElemType::LeftQuarterHelixLargeUp }, - { RideConstructionSpecialPieceSelected | TrackElemType::RightQuarterHelixLargeUp, RideConstructionSpecialPieceSelected | TrackElemType::RightQuarterHelixLargeUp }, - { RideConstructionSpecialPieceSelected | TrackElemType::LeftQuarterHelixLargeDown, RideConstructionSpecialPieceSelected | TrackElemType::LeftQuarterHelixLargeDown }, - { RideConstructionSpecialPieceSelected | TrackElemType::RightQuarterHelixLargeDown, RideConstructionSpecialPieceSelected | TrackElemType::RightQuarterHelixLargeDown }, - { EnumValue(TrackCurve::Left), EnumValue(TrackCurve::Left) }, - { EnumValue(TrackCurve::Right), EnumValue(TrackCurve::Right) }, - { RideConstructionSpecialPieceSelected | TrackElemType::Waterfall, RideConstructionSpecialPieceSelected | TrackElemType::Waterfall }, - { RideConstructionSpecialPieceSelected | TrackElemType::Rapids, RideConstructionSpecialPieceSelected | TrackElemType::Rapids }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::Left), EnumValue(TrackCurve::Left) }, - { EnumValue(TrackCurve::Right), EnumValue(TrackCurve::Right) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { RideConstructionSpecialPieceSelected | TrackElemType::ReverseFreefallVertical, EnumValue(TrackCurve::None) }, - { RideConstructionSpecialPieceSelected | TrackElemType::ReverseFreefallVertical, RideConstructionSpecialPieceSelected | TrackElemType::ReverseFreefallVertical }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::LeftLarge), EnumValue(TrackCurve::LeftLarge) }, - { EnumValue(TrackCurve::RightLarge), EnumValue(TrackCurve::RightLarge) }, - { EnumValue(TrackCurve::LeftLarge), EnumValue(TrackCurve::LeftLarge) }, - { EnumValue(TrackCurve::RightLarge), EnumValue(TrackCurve::RightLarge) }, - { EnumValue(TrackCurve::LeftLarge), EnumValue(TrackCurve::LeftLarge) }, - { EnumValue(TrackCurve::RightLarge), EnumValue(TrackCurve::RightLarge) }, - { EnumValue(TrackCurve::LeftLarge), EnumValue(TrackCurve::LeftLarge) }, - { EnumValue(TrackCurve::RightLarge), EnumValue(TrackCurve::RightLarge) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::LeftLarge), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::RightLarge), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::LeftLarge) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::RightLarge) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::LeftLarge) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::RightLarge) }, - { EnumValue(TrackCurve::LeftLarge), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::RightLarge), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::LeftLarge) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::RightLarge) }, - { EnumValue(TrackCurve::LeftLarge), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::RightLarge), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::LeftLarge), EnumValue(TrackCurve::LeftLarge) }, - { EnumValue(TrackCurve::RightLarge), EnumValue(TrackCurve::RightLarge) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { RideConstructionSpecialPieceSelected | TrackElemType::LeftBarrelRollDownToUp, EnumValue(TrackCurve::None) }, - { RideConstructionSpecialPieceSelected | TrackElemType::RightBarrelRollDownToUp, EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), RideConstructionSpecialPieceSelected | TrackElemType::LeftBarrelRollUpToDown }, - { EnumValue(TrackCurve::None), RideConstructionSpecialPieceSelected | TrackElemType::RightBarrelRollUpToDown }, - { EnumValue(TrackCurve::LeftSmall), EnumValue(TrackCurve::LeftSmall) }, - { EnumValue(TrackCurve::RightSmall), EnumValue(TrackCurve::RightSmall) }, - { EnumValue(TrackCurve::LeftSmall), EnumValue(TrackCurve::LeftSmall) }, - { EnumValue(TrackCurve::RightSmall), EnumValue(TrackCurve::RightSmall) }, - { RideConstructionSpecialPieceSelected | TrackElemType::PoweredLift, RideConstructionSpecialPieceSelected | TrackElemType::PoweredLift }, - { RideConstructionSpecialPieceSelected | TrackElemType::RightLargeHalfLoopDown, EnumValue(TrackCurve::None) }, - { RideConstructionSpecialPieceSelected | TrackElemType::LeftLargeHalfLoopDown, EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), RideConstructionSpecialPieceSelected | TrackElemType::RightLargeHalfLoopUp }, - { EnumValue(TrackCurve::None), RideConstructionSpecialPieceSelected | TrackElemType::LeftLargeHalfLoopUp }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { RideConstructionSpecialPieceSelected | TrackElemType::InvertedFlatToDown90QuarterLoop, EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), RideConstructionSpecialPieceSelected | TrackElemType::Up90ToInvertedFlatQuarterLoop }, - { RideConstructionSpecialPieceSelected | TrackElemType::LeftCurvedLiftHill, RideConstructionSpecialPieceSelected | TrackElemType::LeftCurvedLiftHill }, - { RideConstructionSpecialPieceSelected | TrackElemType::RightCurvedLiftHill, RideConstructionSpecialPieceSelected | TrackElemType::RightCurvedLiftHill }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { RideConstructionSpecialPieceSelected | TrackElemType::AirThrustVerticalDown, RideConstructionSpecialPieceSelected | TrackElemType::ReverseFreefallVertical }, - { RideConstructionSpecialPieceSelected | TrackElemType::AirThrustVerticalDown, RideConstructionSpecialPieceSelected | TrackElemType::AirThrustVerticalDown }, - { EnumValue(TrackCurve::None), RideConstructionSpecialPieceSelected | TrackElemType::AirThrustVerticalDown }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::LeftSmall), EnumValue(TrackCurve::LeftSmall) }, - { EnumValue(TrackCurve::RightSmall), EnumValue(TrackCurve::RightSmall) }, - { EnumValue(TrackCurve::LeftSmall), EnumValue(TrackCurve::LeftSmall) }, - { EnumValue(TrackCurve::RightSmall), EnumValue(TrackCurve::RightSmall) }, - { EnumValue(TrackCurve::Left), EnumValue(TrackCurve::Left) }, - { EnumValue(TrackCurve::Right), EnumValue(TrackCurve::Right) }, - { EnumValue(TrackCurve::Left), EnumValue(TrackCurve::Left) }, - { EnumValue(TrackCurve::Right), EnumValue(TrackCurve::Right) }, - { EnumValue(TrackCurve::Left), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::Right), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::Left) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::Right) }, - { EnumValue(TrackCurve::Left), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::Right), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::Left) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::Right) }, - { EnumValue(TrackCurve::Left), EnumValue(TrackCurve::Left) }, - { EnumValue(TrackCurve::Right), EnumValue(TrackCurve::Right) }, - { EnumValue(TrackCurve::Left), EnumValue(TrackCurve::Left) }, - { EnumValue(TrackCurve::Right), EnumValue(TrackCurve::Right) }, - { EnumValue(TrackCurve::Left), EnumValue(TrackCurve::Left) }, - { EnumValue(TrackCurve::Right), EnumValue(TrackCurve::Right) }, - { EnumValue(TrackCurve::Left), EnumValue(TrackCurve::Left) }, - { EnumValue(TrackCurve::Right), EnumValue(TrackCurve::Right) }, - { EnumValue(TrackCurve::Left), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::Right), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::Left) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::Right) }, - { EnumValue(TrackCurve::Left), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::Right), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::Left) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::Right) }, - { EnumValue(TrackCurve::LeftSmall), EnumValue(TrackCurve::LeftSmall) }, - { EnumValue(TrackCurve::RightSmall), EnumValue(TrackCurve::RightSmall) }, - { EnumValue(TrackCurve::LeftSmall), EnumValue(TrackCurve::LeftSmall) }, - { EnumValue(TrackCurve::RightSmall), EnumValue(TrackCurve::RightSmall) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, - { 65535, 65535 }, // TrackElemType::FlatTrack1x4A - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, // TrackElemType::FlatTrack2x2 - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, // TrackElemType::FlatTrack4x4 - { 65535, 65535 }, // TrackElemType::FlatTrack2x4 - { 65535, 65535 }, // TrackElemType::FlatTrack1x5 - { 65535, 65535 }, // TrackElemType::FlatTrack1x1A - { 65535, 65535 }, // TrackElemType::FlatTrack1x4B - { 65535, 65535 }, // TrackElemType::FlatTrack1x1B - { 65535, 65535 }, // TrackElemType::FlatTrack1x4C - { 65535, 65535 }, // TrackElemType::FlatTrack3x3 - { RideConstructionSpecialPieceSelected | TrackElemType::RightLargeCorkscrewDown, EnumValue(TrackCurve::None) }, // TrackElemType::LeftLargeCorkscrewUp - { RideConstructionSpecialPieceSelected | TrackElemType::LeftLargeCorkscrewDown, EnumValue(TrackCurve::None) }, // TrackElemType::RightLargeCorkscrewUp - { EnumValue(TrackCurve::None), RideConstructionSpecialPieceSelected | TrackElemType::RightLargeCorkscrewUp }, // TrackElemType::LeftLargeCorkscrewDown - { EnumValue(TrackCurve::None), RideConstructionSpecialPieceSelected | TrackElemType::LeftLargeCorkscrewUp }, // TrackElemType::RightCorkscrewDown - { RideConstructionSpecialPieceSelected | TrackElemType::RightMediumHalfLoopDown, EnumValue(TrackCurve::None) }, // TrackElemType::LeftMediumHalfLoopUp - { RideConstructionSpecialPieceSelected | TrackElemType::LeftMediumHalfLoopDown, EnumValue(TrackCurve::None) }, // TrackElemType::RightMediumHalfLoopUp - { EnumValue(TrackCurve::None), RideConstructionSpecialPieceSelected | TrackElemType::RightMediumHalfLoopUp }, // TrackElemType::LeftMediumHalfLoopDown - { EnumValue(TrackCurve::None), RideConstructionSpecialPieceSelected | TrackElemType::LeftMediumHalfLoopUp }, // TrackElemType::RightMediumHalfLoopDown - { RideConstructionSpecialPieceSelected | TrackElemType::LeftZeroGRollDown, EnumValue(TrackCurve::None) }, // TrackElemType::LeftZeroGRollUp - { RideConstructionSpecialPieceSelected | TrackElemType::RightZeroGRollDown, EnumValue(TrackCurve::None) }, // TrackElemType::RightZeroGRollUp - { EnumValue(TrackCurve::None), RideConstructionSpecialPieceSelected | TrackElemType::LeftZeroGRollUp }, // TrackElemType::LeftZeroGRollDown - { EnumValue(TrackCurve::None), RideConstructionSpecialPieceSelected | TrackElemType::RightZeroGRollUp }, // TrackElemType::RightZeroGRollDown - { RideConstructionSpecialPieceSelected | TrackElemType::LeftLargeZeroGRollDown, EnumValue(TrackCurve::None) }, // TrackElemType::LeftLargeZeroGRollUp - { RideConstructionSpecialPieceSelected | TrackElemType::RightLargeZeroGRollDown, EnumValue(TrackCurve::None) }, // TrackElemType::RightLargeZeroGRollUp - { EnumValue(TrackCurve::None), RideConstructionSpecialPieceSelected | TrackElemType::LeftLargeZeroGRollUp }, // TrackElemType::LeftLargeZeroGRollDown - { EnumValue(TrackCurve::None), RideConstructionSpecialPieceSelected | TrackElemType::RightLargeZeroGRollUp }, // TrackElemType::RightLargeZeroGRollDown - { RideConstructionSpecialPieceSelected | TrackElemType::RightFlyerLargeHalfLoopInvertedDown, EnumValue(TrackCurve::None) }, // LeftFlyerLargeHalfLoopUninvertedUp - { RideConstructionSpecialPieceSelected | TrackElemType::LeftFlyerLargeHalfLoopInvertedDown, EnumValue(TrackCurve::None) }, // RightFlyerLargeHalfLoopUninvertedUp - { EnumValue(TrackCurve::None), RideConstructionSpecialPieceSelected | TrackElemType::RightFlyerLargeHalfLoopUninvertedUp }, // LeftFlyerLargeHalfLoopInvertedDown - { EnumValue(TrackCurve::None), RideConstructionSpecialPieceSelected | TrackElemType::LeftFlyerLargeHalfLoopUninvertedUp }, // RightFlyerLargeHalfLoopInvertedDown - { RideConstructionSpecialPieceSelected | TrackElemType::RightFlyerLargeHalfLoopUninvertedDown, EnumValue(TrackCurve::None) }, // LeftFlyerLargeHalfLoopInvertedUp - { RideConstructionSpecialPieceSelected | TrackElemType::LeftFlyerLargeHalfLoopUninvertedDown, EnumValue(TrackCurve::None) }, // RightFlyerLargeHalfLoopInvertedUp - { EnumValue(TrackCurve::None), RideConstructionSpecialPieceSelected | TrackElemType::RightFlyerLargeHalfLoopInvertedUp }, // LeftFlyerLargeHalfLoopUninvertedDown - { EnumValue(TrackCurve::None), RideConstructionSpecialPieceSelected | TrackElemType::LeftFlyerLargeHalfLoopInvertedUp }, // RightFlyerLargeHalfLoopUninvertedDown - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, // FlyerHalfLoopInvertedUp - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, // FlyerHalfLoopUninvertedUp - { EnumValue(TrackCurve::LeftLarge), EnumValue(TrackCurve::LeftLarge) }, // TrackElemType::LeftEighthToDiagUp25 - { EnumValue(TrackCurve::RightLarge), EnumValue(TrackCurve::RightLarge) }, // TrackElemType::RightEighthToDiagUp25 - { EnumValue(TrackCurve::LeftLarge), EnumValue(TrackCurve::LeftLarge) }, // TrackElemType::LeftEighthToDiagDown25 - { EnumValue(TrackCurve::RightLarge), EnumValue(TrackCurve::RightLarge) }, // TrackElemType::RightEighthToDiagDown25 - { EnumValue(TrackCurve::LeftLarge), EnumValue(TrackCurve::LeftLarge) }, // TrackElemType::LeftEighthToOrthogonalUp25 - { EnumValue(TrackCurve::RightLarge), EnumValue(TrackCurve::RightLarge) }, // TrackElemType::RightEighthToOrthogonalUp25 - { EnumValue(TrackCurve::LeftLarge), EnumValue(TrackCurve::LeftLarge) }, // TrackElemType::LeftEighthToOrthogonalDown25 - { EnumValue(TrackCurve::RightLarge), EnumValue(TrackCurve::RightLarge) }, // TrackElemType::RightEighthToOrthogonalDown25 - { EnumValue(TrackCurve::LeftLarge), EnumValue(TrackCurve::LeftLarge) }, // TrackElemType::DiagUp25ToLeftBankedUp25 - { EnumValue(TrackCurve::RightLarge), EnumValue(TrackCurve::RightLarge) }, // TrackElemType::DiagUp25ToRightBankedUp25 - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, // TrackElemType::DiagLeftBankedUp25ToUp25 - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, // TrackElemType::DiagRightBankedUp25ToUp25 - { EnumValue(TrackCurve::LeftLarge), EnumValue(TrackCurve::LeftLarge) }, // TrackElemType::DiagDown25ToLeftBankedDown25 - { EnumValue(TrackCurve::RightLarge), EnumValue(TrackCurve::RightLarge) }, // TrackElemType::DiagDown25ToRightBankedDown25 - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, // TrackElemType::DiagLeftBankedDown25ToDown25 - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, // TrackElemType::DiagRightBankedDown25ToDown25 - { EnumValue(TrackCurve::LeftLarge), EnumValue(TrackCurve::LeftLarge) }, // TrackElemType::DiagLeftBankedFlatToLeftBankedUp25 - { EnumValue(TrackCurve::RightLarge), EnumValue(TrackCurve::RightLarge) }, // TrackElemType::DiagRightBankedFlatToRightBankedUp25 - { EnumValue(TrackCurve::LeftLarge), EnumValue(TrackCurve::LeftLarge) }, // TrackElemType::DiagLeftBankedUp25ToLeftBankedFlat - { EnumValue(TrackCurve::RightLarge), EnumValue(TrackCurve::RightLarge) }, // TrackElemType::DiagRightBankedUp25ToRightBankedFlat - { EnumValue(TrackCurve::LeftLarge), EnumValue(TrackCurve::LeftLarge) }, // TrackElemType::DiagLeftBankedFlatToLeftBankedDown25 - { EnumValue(TrackCurve::RightLarge), EnumValue(TrackCurve::RightLarge) }, // TrackElemType::DiagRightBankedFlatToRightBankedDown25 - { EnumValue(TrackCurve::LeftLarge), EnumValue(TrackCurve::LeftLarge) }, // TrackElemType::DiagLeftBankedDown25ToLeftBankedFlat - { EnumValue(TrackCurve::RightLarge), EnumValue(TrackCurve::RightLarge) }, // TrackElemType::DiagRightBankedDown25ToRightBankedFlat - { EnumValue(TrackCurve::LeftLarge), EnumValue(TrackCurve::LeftLarge) }, // TrackElemType::DiagFlatToLeftBankedUp25 - { EnumValue(TrackCurve::RightLarge), EnumValue(TrackCurve::RightLarge) }, // TrackElemType::DiagFlatToRightBankedUp25 - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, // TrackElemType::DiagLeftBankedUp25ToFlat - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, // TrackElemType::DiagRightBankedUp25ToFlat - { EnumValue(TrackCurve::LeftLarge), EnumValue(TrackCurve::LeftLarge) }, // TrackElemType::DiagFlatToLeftBankedDown25 - { EnumValue(TrackCurve::RightLarge), EnumValue(TrackCurve::RightLarge) }, // TrackElemType::DiagFlatToRightBankedDown25 - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, // TrackElemType::DiagLeftBankedDown25ToFlat - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, // TrackElemType::DiagRightBankedDown25ToFlat - { EnumValue(TrackCurve::LeftLarge), EnumValue(TrackCurve::LeftLarge) }, // TrackElemType::DiagUp25LeftBanked - { EnumValue(TrackCurve::RightLarge), EnumValue(TrackCurve::RightLarge) }, // TrackElemType::DiagUp25RightBanked - { EnumValue(TrackCurve::LeftLarge), EnumValue(TrackCurve::LeftLarge) }, // TrackElemType::DiagDown25LeftBanked - { EnumValue(TrackCurve::RightLarge), EnumValue(TrackCurve::RightLarge) }, // TrackElemType::DiagDown25RightBanked - { EnumValue(TrackCurve::LeftLarge), EnumValue(TrackCurve::LeftLarge) }, // TrackElemType::LeftEighthBankToDiagUp25 - { EnumValue(TrackCurve::RightLarge), EnumValue(TrackCurve::RightLarge) }, // TrackElemType::RightEighthBankToDiagUp25 - { EnumValue(TrackCurve::LeftLarge), EnumValue(TrackCurve::LeftLarge) }, // TrackElemType::LeftEighthBankToDiagDown25 - { EnumValue(TrackCurve::RightLarge), EnumValue(TrackCurve::RightLarge) }, // TrackElemType::RightEighthBankToDiagDown25 - { EnumValue(TrackCurve::LeftLarge), EnumValue(TrackCurve::LeftLarge) }, // TrackElemType::LeftEighthBankToOrthogonalUp25 - { EnumValue(TrackCurve::RightLarge), EnumValue(TrackCurve::RightLarge) }, // TrackElemType::RightEighthBankToOrthogonalUp25 - { EnumValue(TrackCurve::LeftLarge), EnumValue(TrackCurve::LeftLarge) }, // TrackElemType::LeftEighthBankToOrthogonalDown25 - { EnumValue(TrackCurve::RightLarge), EnumValue(TrackCurve::RightLarge) }, // TrackElemType::RightEighthBankToOrthogonalDown25 - { RideConstructionSpecialPieceSelected | TrackElemType::DiagBrakes, RideConstructionSpecialPieceSelected | TrackElemType::DiagBrakes }, // TrackElemType::DiagBrakes - { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, // TrackElemType::DiagBlockBrakes - }; - static_assert(std::size(gTrackCurveChain) == TrackElemType::Count); - - const TrackDescriptor gTrackDescriptors[186] = { - { true, TrackPitch::Down60, TrackRoll::None, TrackCurve::None, TrackPitch::Down60, TrackRoll::None, TrackElemType::DiagDown60 }, - { true, TrackPitch::Down60, TrackRoll::None, TrackCurve::None, TrackPitch::Down25, TrackRoll::None, TrackElemType::DiagDown60ToDown25 }, - { true, TrackPitch::Down60, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::DiagDown60ToFlat }, - { true, TrackPitch::Down25, TrackRoll::None, TrackCurve::None, TrackPitch::Down60, TrackRoll::None, TrackElemType::DiagDown25ToDown60 }, - { true, TrackPitch::Down25, TrackRoll::None, TrackCurve::None, TrackPitch::Down25, TrackRoll::None, TrackElemType::DiagDown25 }, - { true, TrackPitch::Down25, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::Left, TrackElemType::DiagDown25ToLeftBank }, - { true, TrackPitch::Down25, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::DiagDown25ToFlat }, - { true, TrackPitch::Down25, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::Right, TrackElemType::DiagDown25ToRightBank }, - { true, TrackPitch::None, TrackRoll::Left, TrackCurve::LeftLarge, TrackPitch::None, TrackRoll::Left, TrackElemType::LeftEighthBankToOrthogonal }, - { true, TrackPitch::None, TrackRoll::Left, TrackCurve::None, TrackPitch::Down25, TrackRoll::None, TrackElemType::DiagLeftBankToDown25 }, - { true, TrackPitch::None, TrackRoll::Left, TrackCurve::None, TrackPitch::None, TrackRoll::Left, TrackElemType::DiagLeftBank }, - { true, TrackPitch::None, TrackRoll::Left, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::DiagLeftBankToFlat }, - { true, TrackPitch::None, TrackRoll::Left, TrackCurve::None, TrackPitch::Up25, TrackRoll::None, TrackElemType::DiagLeftBankToUp25 }, - { true, TrackPitch::None, TrackRoll::None, TrackCurve::LeftLarge, TrackPitch::None, TrackRoll::None, TrackElemType::LeftEighthToOrthogonal }, - { true, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Down60, TrackRoll::None, TrackElemType::DiagFlatToDown60 }, - { true, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Down25, TrackRoll::None, TrackElemType::DiagFlatToDown25 }, - { true, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::Left, TrackElemType::DiagFlatToLeftBank }, - { true, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::DiagFlat }, - { true, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::Right, TrackElemType::DiagFlatToRightBank }, - { true, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Up25, TrackRoll::None, TrackElemType::DiagFlatToUp25 }, - { true, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Up60, TrackRoll::None, TrackElemType::DiagFlatToUp60 }, - { true, TrackPitch::None, TrackRoll::None, TrackCurve::RightLarge, TrackPitch::None, TrackRoll::None, TrackElemType::RightEighthToOrthogonal }, - { true, TrackPitch::None, TrackRoll::Right, TrackCurve::None, TrackPitch::Down25, TrackRoll::None, TrackElemType::DiagRightBankToDown25 }, - { true, TrackPitch::None, TrackRoll::Right, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::DiagRightBankToFlat }, - { true, TrackPitch::None, TrackRoll::Right, TrackCurve::None, TrackPitch::None, TrackRoll::Right, TrackElemType::DiagRightBank }, - { true, TrackPitch::None, TrackRoll::Right, TrackCurve::None, TrackPitch::Up25, TrackRoll::None, TrackElemType::DiagRightBankToUp25 }, - { true, TrackPitch::None, TrackRoll::Right, TrackCurve::RightLarge, TrackPitch::None, TrackRoll::Right, TrackElemType::RightEighthBankToOrthogonal }, - { true, TrackPitch::Up25, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::Left, TrackElemType::DiagUp25ToLeftBank }, - { true, TrackPitch::Up25, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::DiagUp25ToFlat }, - { true, TrackPitch::Up25, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::Right, TrackElemType::DiagUp25ToRightBank }, - { true, TrackPitch::Up25, TrackRoll::None, TrackCurve::None, TrackPitch::Up25, TrackRoll::None, TrackElemType::DiagUp25 }, - { true, TrackPitch::Up25, TrackRoll::None, TrackCurve::None, TrackPitch::Up60, TrackRoll::None, TrackElemType::DiagUp25ToUp60 }, - { true, TrackPitch::Up60, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::DiagUp60ToFlat }, - { true, TrackPitch::Up60, TrackRoll::None, TrackCurve::None, TrackPitch::Up25, TrackRoll::None, TrackElemType::DiagUp60ToUp25 }, - { true, TrackPitch::Up60, TrackRoll::None, TrackCurve::None, TrackPitch::Up60, TrackRoll::None, TrackElemType::DiagUp60 }, - { false, TrackPitch::Down90, TrackRoll::None, TrackCurve::LeftSmall, TrackPitch::Down90, TrackRoll::None, TrackElemType::LeftQuarterTurn1TileDown90 }, - { false, TrackPitch::Down90, TrackRoll::None, TrackCurve::None, TrackPitch::Down90, TrackRoll::None, TrackElemType::Down90 }, - { false, TrackPitch::Down90, TrackRoll::None, TrackCurve::None, TrackPitch::Down60, TrackRoll::None, TrackElemType::Down90ToDown60 }, - { false, TrackPitch::Down90, TrackRoll::None, TrackCurve::RightSmall, TrackPitch::Down90, TrackRoll::None, TrackElemType::RightQuarterTurn1TileDown90 }, - { false, TrackPitch::Down60, TrackRoll::None, TrackCurve::LeftSmall, TrackPitch::Down60, TrackRoll::None, TrackElemType::LeftQuarterTurn1TileDown60 }, - { false, TrackPitch::Down60, TrackRoll::None, TrackCurve::None, TrackPitch::Down90, TrackRoll::None, TrackElemType::Down60ToDown90 }, - { false, TrackPitch::Down60, TrackRoll::None, TrackCurve::None, TrackPitch::Down60, TrackRoll::None, TrackElemType::Down60 }, - { false, TrackPitch::Down60, TrackRoll::None, TrackCurve::None, TrackPitch::Down25, TrackRoll::None, TrackElemType::Down60ToDown25 }, - { false, TrackPitch::Down60, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::Down60ToFlat }, - { false, TrackPitch::Down60, TrackRoll::None, TrackCurve::RightSmall, TrackPitch::Down60, TrackRoll::None, TrackElemType::RightQuarterTurn1TileDown60 }, - { false, TrackPitch::Down25, TrackRoll::Left, TrackCurve::LeftSmall, TrackPitch::Down25, TrackRoll::Left, TrackElemType::LeftBankedQuarterTurn3TileDown25 }, - { false, TrackPitch::Down25, TrackRoll::Left, TrackCurve::Left, TrackPitch::Down25, TrackRoll::Left, TrackElemType::LeftBankedQuarterTurn5TileDown25 }, - { false, TrackPitch::Down25, TrackRoll::Left, TrackCurve::None, TrackPitch::Down25, TrackRoll::Left, TrackElemType::Down25LeftBanked }, - { false, TrackPitch::Down25, TrackRoll::Left, TrackCurve::None, TrackPitch::Down25, TrackRoll::None, TrackElemType::LeftBankedDown25ToDown25 }, - { false, TrackPitch::Down25, TrackRoll::Left, TrackCurve::None, TrackPitch::None, TrackRoll::Left, TrackElemType::LeftBankedDown25ToLeftBankedFlat }, - { false, TrackPitch::Down25, TrackRoll::Left, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::LeftBankedDown25ToFlat }, - { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::LeftSmall, TrackPitch::Down25, TrackRoll::None, TrackElemType::LeftQuarterTurn3TilesDown25 }, - { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::LeftSmall, TrackPitch::None, TrackRoll::Left, TrackElemType::LeftQuarterTurn3TilesDown25ToLeftBank }, - { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::Left, TrackPitch::Down25, TrackRoll::None, TrackElemType::LeftQuarterTurn5TilesDown25 }, - { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::None, TrackPitch::Down60, TrackRoll::None, TrackElemType::Down25ToDown60 }, - { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::None, TrackPitch::Down25, TrackRoll::Left, TrackElemType::Down25ToLeftBankedDown25 }, - { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::None, TrackPitch::Down25, TrackRoll::None, TrackElemType::Down25 }, - { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::None, TrackPitch::Down25, TrackRoll::Right, TrackElemType::Down25ToRightBankedDown25 }, - { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::Left, TrackElemType::Down25ToLeftBank }, - { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::Down25ToFlat }, - { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::Right, TrackElemType::Down25ToRightBank }, - { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::Right, TrackPitch::Down25, TrackRoll::None, TrackElemType::RightQuarterTurn5TilesDown25 }, - { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::RightSmall, TrackPitch::None, TrackRoll::Right, TrackElemType::RightQuarterTurn3TilesDown25ToRightBank }, - { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::RightSmall, TrackPitch::Down25, TrackRoll::None, TrackElemType::RightQuarterTurn3TilesDown25 }, - { false, TrackPitch::Down25, TrackRoll::Right, TrackCurve::None, TrackPitch::Down25, TrackRoll::None, TrackElemType::RightBankedDown25ToDown25 }, - { false, TrackPitch::Down25, TrackRoll::Right, TrackCurve::None, TrackPitch::Down25, TrackRoll::Right, TrackElemType::Down25RightBanked }, - { false, TrackPitch::Down25, TrackRoll::Right, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::RightBankedDown25ToFlat }, - { false, TrackPitch::Down25, TrackRoll::Right, TrackCurve::None, TrackPitch::None, TrackRoll::Right, TrackElemType::RightBankedDown25ToRightBankedFlat }, - { false, TrackPitch::Down25, TrackRoll::Right, TrackCurve::Right, TrackPitch::Down25, TrackRoll::Right, TrackElemType::RightBankedQuarterTurn5TileDown25 }, - { false, TrackPitch::Down25, TrackRoll::Right, TrackCurve::RightSmall, TrackPitch::Down25, TrackRoll::Right, TrackElemType::RightBankedQuarterTurn3TileDown25 }, - { false, TrackPitch::None, TrackRoll::Left, TrackCurve::LeftSmall, TrackPitch::None, TrackRoll::Left, TrackElemType::LeftBankedQuarterTurn3Tiles }, - { false, TrackPitch::None, TrackRoll::Left, TrackCurve::LeftSmall, TrackPitch::Up25, TrackRoll::None, TrackElemType::LeftBankToLeftQuarterTurn3TilesUp25 }, - { false, TrackPitch::None, TrackRoll::Left, TrackCurve::Left, TrackPitch::None, TrackRoll::Left, TrackElemType::BankedLeftQuarterTurn5Tiles }, - { false, TrackPitch::None, TrackRoll::Left, TrackCurve::LeftLarge, TrackPitch::None, TrackRoll::Left, TrackElemType::LeftEighthBankToDiag }, - { false, TrackPitch::None, TrackRoll::Left, TrackCurve::None, TrackPitch::Down25, TrackRoll::Left, TrackElemType::LeftBankedFlatToLeftBankedDown25 }, - { false, TrackPitch::None, TrackRoll::Left, TrackCurve::None, TrackPitch::Down25, TrackRoll::None, TrackElemType::LeftBankToDown25 }, - { false, TrackPitch::None, TrackRoll::Left, TrackCurve::None, TrackPitch::None, TrackRoll::Left, TrackElemType::LeftBank }, - { false, TrackPitch::None, TrackRoll::Left, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::LeftBankToFlat }, - { false, TrackPitch::None, TrackRoll::Left, TrackCurve::None, TrackPitch::Up25, TrackRoll::Left, TrackElemType::LeftBankedFlatToLeftBankedUp25 }, - { false, TrackPitch::None, TrackRoll::Left, TrackCurve::None, TrackPitch::Up25, TrackRoll::None, TrackElemType::LeftBankToUp25 }, - { false, TrackPitch::None, TrackRoll::None, TrackCurve::LeftSmall, TrackPitch::None, TrackRoll::None, TrackElemType::LeftQuarterTurn3Tiles }, - { false, TrackPitch::None, TrackRoll::None, TrackCurve::Left, TrackPitch::None, TrackRoll::None, TrackElemType::LeftQuarterTurn5Tiles }, - { false, TrackPitch::None, TrackRoll::None, TrackCurve::LeftLarge, TrackPitch::None, TrackRoll::None, TrackElemType::LeftEighthToDiag }, - { false, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Down60, TrackRoll::None, TrackElemType::FlatToDown60 }, - { false, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Down25, TrackRoll::Left, TrackElemType::FlatToLeftBankedDown25 }, - { false, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Down25, TrackRoll::None, TrackElemType::FlatToDown25 }, - { false, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Down25, TrackRoll::Right, TrackElemType::FlatToRightBankedDown25 }, - { false, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::Left, TrackElemType::FlatToLeftBank }, - { false, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::Flat }, - { false, TrackPitch::None, TrackRoll::None, TrackCurve::LeftVerySmall, TrackPitch::None, TrackRoll::None, TrackElemType::LeftQuarterTurn1Tile }, - { false, TrackPitch::None, TrackRoll::None, TrackCurve::RightVerySmall, TrackPitch::None, TrackRoll::None, TrackElemType::RightQuarterTurn1Tile }, - { false, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::Right, TrackElemType::FlatToRightBank }, - { false, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Up25, TrackRoll::Left, TrackElemType::FlatToLeftBankedUp25 }, - { false, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Up25, TrackRoll::None, TrackElemType::FlatToUp25 }, - { false, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Up25, TrackRoll::Right, TrackElemType::FlatToRightBankedUp25 }, - { false, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Up60, TrackRoll::None, TrackElemType::FlatToUp60 }, - { false, TrackPitch::None, TrackRoll::None, TrackCurve::RightLarge, TrackPitch::None, TrackRoll::None, TrackElemType::RightEighthToDiag }, - { false, TrackPitch::None, TrackRoll::None, TrackCurve::Right, TrackPitch::None, TrackRoll::None, TrackElemType::RightQuarterTurn5Tiles }, - { false, TrackPitch::None, TrackRoll::None, TrackCurve::RightSmall, TrackPitch::None, TrackRoll::None, TrackElemType::RightQuarterTurn3Tiles }, - { false, TrackPitch::None, TrackRoll::Right, TrackCurve::None, TrackPitch::Down25, TrackRoll::None, TrackElemType::RightBankToDown25 }, - { false, TrackPitch::None, TrackRoll::Right, TrackCurve::None, TrackPitch::Down25, TrackRoll::Right, TrackElemType::RightBankedFlatToRightBankedDown25 }, - { false, TrackPitch::None, TrackRoll::Right, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::RightBankToFlat }, - { false, TrackPitch::None, TrackRoll::Right, TrackCurve::None, TrackPitch::None, TrackRoll::Right, TrackElemType::RightBank }, - { false, TrackPitch::None, TrackRoll::Right, TrackCurve::None, TrackPitch::Up25, TrackRoll::None, TrackElemType::RightBankToUp25 }, - { false, TrackPitch::None, TrackRoll::Right, TrackCurve::None, TrackPitch::Up25, TrackRoll::Right, TrackElemType::RightBankedFlatToRightBankedUp25 }, - { false, TrackPitch::None, TrackRoll::Right, TrackCurve::RightLarge, TrackPitch::None, TrackRoll::Right, TrackElemType::RightEighthBankToDiag }, - { false, TrackPitch::None, TrackRoll::Right, TrackCurve::Right, TrackPitch::None, TrackRoll::Right, TrackElemType::BankedRightQuarterTurn5Tiles }, - { false, TrackPitch::None, TrackRoll::Right, TrackCurve::RightSmall, TrackPitch::None, TrackRoll::Right, TrackElemType::RightBankedQuarterTurn3Tiles }, - { false, TrackPitch::None, TrackRoll::Right, TrackCurve::RightSmall, TrackPitch::Up25, TrackRoll::None, TrackElemType::RightBankToRightQuarterTurn3TilesUp25 }, - { false, TrackPitch::Up25, TrackRoll::Left, TrackCurve::LeftSmall, TrackPitch::Up25, TrackRoll::Left, TrackElemType::LeftBankedQuarterTurn3TileUp25 }, - { false, TrackPitch::Up25, TrackRoll::Left, TrackCurve::Left, TrackPitch::Up25, TrackRoll::Left, TrackElemType::LeftBankedQuarterTurn5TileUp25 }, - { false, TrackPitch::Up25, TrackRoll::Left, TrackCurve::None, TrackPitch::None, TrackRoll::Left, TrackElemType::LeftBankedUp25ToLeftBankedFlat }, - { false, TrackPitch::Up25, TrackRoll::Left, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::LeftBankedUp25ToFlat }, - { false, TrackPitch::Up25, TrackRoll::Left, TrackCurve::None, TrackPitch::Up25, TrackRoll::Left, TrackElemType::Up25LeftBanked }, - { false, TrackPitch::Up25, TrackRoll::Left, TrackCurve::None, TrackPitch::Up25, TrackRoll::None, TrackElemType::LeftBankedUp25ToUp25 }, - { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::LeftSmall, TrackPitch::Up25, TrackRoll::None, TrackElemType::LeftQuarterTurn3TilesUp25 }, - { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::Left, TrackPitch::Up25, TrackRoll::None, TrackElemType::LeftQuarterTurn5TilesUp25 }, - { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::Left, TrackElemType::Up25ToLeftBank }, - { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::Up25ToFlat }, - { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::Right, TrackElemType::Up25ToRightBank }, - { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::None, TrackPitch::Up25, TrackRoll::Left, TrackElemType::Up25ToLeftBankedUp25 }, - { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::None, TrackPitch::Up25, TrackRoll::None, TrackElemType::Up25 }, - { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::None, TrackPitch::Up25, TrackRoll::Right, TrackElemType::Up25ToRightBankedUp25 }, - { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::None, TrackPitch::Up60, TrackRoll::None, TrackElemType::Up25ToUp60 }, - { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::Right, TrackPitch::Up25, TrackRoll::None, TrackElemType::RightQuarterTurn5TilesUp25 }, - { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::RightSmall, TrackPitch::Up25, TrackRoll::None, TrackElemType::RightQuarterTurn3TilesUp25 }, - { false, TrackPitch::Up25, TrackRoll::Right, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::RightBankedUp25ToFlat }, - { false, TrackPitch::Up25, TrackRoll::Right, TrackCurve::None, TrackPitch::None, TrackRoll::Right, TrackElemType::RightBankedUp25ToRightBankedFlat }, - { false, TrackPitch::Up25, TrackRoll::Right, TrackCurve::None, TrackPitch::Up25, TrackRoll::None, TrackElemType::RightBankedUp25ToUp25 }, - { false, TrackPitch::Up25, TrackRoll::Right, TrackCurve::None, TrackPitch::Up25, TrackRoll::Right, TrackElemType::Up25RightBanked }, - { false, TrackPitch::Up25, TrackRoll::Right, TrackCurve::Right, TrackPitch::Up25, TrackRoll::Right, TrackElemType::RightBankedQuarterTurn5TileUp25 }, - { false, TrackPitch::Up25, TrackRoll::Right, TrackCurve::RightSmall, TrackPitch::Up25, TrackRoll::Right, TrackElemType::RightBankedQuarterTurn3TileUp25 }, - { false, TrackPitch::Up60, TrackRoll::None, TrackCurve::LeftSmall, TrackPitch::Up60, TrackRoll::None, TrackElemType::LeftQuarterTurn1TileUp60 }, - { false, TrackPitch::Up60, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::Up60ToFlat }, - { false, TrackPitch::Up60, TrackRoll::None, TrackCurve::None, TrackPitch::Up25, TrackRoll::None, TrackElemType::Up60ToUp25 }, - { false, TrackPitch::Up60, TrackRoll::None, TrackCurve::None, TrackPitch::Up60, TrackRoll::None, TrackElemType::Up60 }, - { false, TrackPitch::Up60, TrackRoll::None, TrackCurve::None, TrackPitch::Up90, TrackRoll::None, TrackElemType::Up60ToUp90 }, - { false, TrackPitch::Up60, TrackRoll::None, TrackCurve::RightSmall, TrackPitch::Up60, TrackRoll::None, TrackElemType::RightQuarterTurn1TileUp60 }, - { false, TrackPitch::Up90, TrackRoll::None, TrackCurve::LeftSmall, TrackPitch::Up90, TrackRoll::None, TrackElemType::LeftQuarterTurn1TileUp90 }, - { false, TrackPitch::Up90, TrackRoll::None, TrackCurve::None, TrackPitch::Up60, TrackRoll::None, TrackElemType::Up90ToUp60 }, - { false, TrackPitch::Up90, TrackRoll::None, TrackCurve::None, TrackPitch::Up90, TrackRoll::None, TrackElemType::Up90 }, - { false, TrackPitch::Up90, TrackRoll::None, TrackCurve::RightSmall, TrackPitch::Up90, TrackRoll::None, TrackElemType::RightQuarterTurn1TileUp90 }, - { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::LeftLarge, TrackPitch::Up25, TrackRoll::None, TrackElemType::LeftEighthToDiagUp25 }, // TrackElemType::LeftEighthToDiagUp25 - { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::RightLarge, TrackPitch::Up25, TrackRoll::None, TrackElemType::RightEighthToDiagUp25 }, // TrackElemType::RightEighthToDiagUp25 - { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::LeftLarge, TrackPitch::Down25, TrackRoll::None, TrackElemType::LeftEighthToDiagDown25 }, // TrackElemType::LeftEighthToDiagDown25 - { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::RightLarge, TrackPitch::Down25, TrackRoll::None, TrackElemType::RightEighthToDiagDown25 }, // TrackElemType::RightEighthToDiagDown25 - { true, TrackPitch::Up25, TrackRoll::None, TrackCurve::LeftLarge, TrackPitch::Up25, TrackRoll::None, TrackElemType::LeftEighthToOrthogonalUp25 }, // TrackElemType::LeftEighthToOrthogonalUp25 - { true, TrackPitch::Up25, TrackRoll::None, TrackCurve::RightLarge, TrackPitch::Up25, TrackRoll::None, TrackElemType::RightEighthToOrthogonalUp25 }, // TrackElemType::RightEighthToOrthogonalUp25 - { true, TrackPitch::Down25, TrackRoll::None, TrackCurve::LeftLarge, TrackPitch::Down25, TrackRoll::None, TrackElemType::LeftEighthToOrthogonalDown25 }, // TrackElemType::LeftEighthToOrthogonalDown25 - { true, TrackPitch::Down25, TrackRoll::None, TrackCurve::RightLarge, TrackPitch::Down25, TrackRoll::None, TrackElemType::RightEighthToOrthogonalDown25 }, // TrackElemType::RightEighthToOrthogonalDown25 - { true, TrackPitch::Up25, TrackRoll::None, TrackCurve::None, TrackPitch::Up25, TrackRoll::Left, TrackElemType::DiagUp25ToLeftBankedUp25 }, // TrackElemType::DiagUp25ToLeftBankedUp25 - { true, TrackPitch::Up25, TrackRoll::None, TrackCurve::None, TrackPitch::Up25, TrackRoll::Right, TrackElemType::DiagUp25ToRightBankedUp25 }, // TrackElemType::DiagUp25ToRightBankedUp25 - { true, TrackPitch::Up25, TrackRoll::Left, TrackCurve::None, TrackPitch::Up25, TrackRoll::None, TrackElemType::DiagLeftBankedUp25ToUp25 }, // TrackElemType::DiagLeftBankedUp25ToUp25 - { true, TrackPitch::Up25, TrackRoll::Right, TrackCurve::None, TrackPitch::Up25, TrackRoll::None, TrackElemType::DiagRightBankedUp25ToUp25 }, // TrackElemType::DiagRightBankedUp25ToUp25 - { true, TrackPitch::Down25, TrackRoll::None, TrackCurve::None, TrackPitch::Down25, TrackRoll::Left, TrackElemType::DiagDown25ToLeftBankedDown25 }, // TrackElemType::DiagDown25ToLeftBankedDown25 - { true, TrackPitch::Down25, TrackRoll::None, TrackCurve::None, TrackPitch::Down25, TrackRoll::Right, TrackElemType::DiagDown25ToRightBankedDown25 }, // TrackElemType::DiagDown25ToRightBankedDown25 - { true, TrackPitch::Down25, TrackRoll::Left, TrackCurve::None, TrackPitch::Down25, TrackRoll::None, TrackElemType::DiagLeftBankedDown25ToDown25 }, // TrackElemType::DiagLeftBankedDown25ToDown25 - { true, TrackPitch::Down25, TrackRoll::Right, TrackCurve::None, TrackPitch::Down25, TrackRoll::None, TrackElemType::DiagRightBankedDown25ToDown25 }, // TrackElemType::DiagRightBankedDown25ToDown25 - { true, TrackPitch::None, TrackRoll::Left, TrackCurve::None, TrackPitch::Up25, TrackRoll::Left, TrackElemType::DiagLeftBankedFlatToLeftBankedUp25 }, // TrackElemType::DiagLeftBankedFlatToLeftBankedUp25 - { true, TrackPitch::None, TrackRoll::Right, TrackCurve::None, TrackPitch::Up25, TrackRoll::Right, TrackElemType::DiagRightBankedFlatToRightBankedUp25 }, // TrackElemType::DiagRightBankedFlatToRightBankedUp25 - { true, TrackPitch::Up25, TrackRoll::Left, TrackCurve::None, TrackPitch::None, TrackRoll::Left, TrackElemType::DiagLeftBankedUp25ToLeftBankedFlat }, // TrackElemType::DiagLeftBankedUp25ToLeftBankedFlat - { true, TrackPitch::Up25, TrackRoll::Right, TrackCurve::None, TrackPitch::None, TrackRoll::Right, TrackElemType::DiagRightBankedUp25ToRightBankedFlat }, // TrackElemType::DiagRightBankedUp25ToRightBankedFlat - { true, TrackPitch::None, TrackRoll::Left, TrackCurve::None, TrackPitch::Down25, TrackRoll::Left, TrackElemType::DiagLeftBankedFlatToLeftBankedDown25 }, // TrackElemType::DiagLeftBankedFlatToLeftBankedDown25 - { true, TrackPitch::None, TrackRoll::Right, TrackCurve::None, TrackPitch::Down25, TrackRoll::Right, TrackElemType::DiagRightBankedFlatToRightBankedDown25 }, // TrackElemType::DiagRightBankedFlatToRightBankedDown25 - { true, TrackPitch::Down25, TrackRoll::Left, TrackCurve::None, TrackPitch::None, TrackRoll::Left, TrackElemType::DiagLeftBankedDown25ToLeftBankedFlat }, // TrackElemType::DiagLeftBankedDown25ToLeftBankedFlat - { true, TrackPitch::Down25, TrackRoll::Right, TrackCurve::None, TrackPitch::None, TrackRoll::Right, TrackElemType::DiagRightBankedDown25ToRightBankedFlat }, // TrackElemType::DiagRightBankedDown25ToRightBankedFlat - { true, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Up25, TrackRoll::Left, TrackElemType::DiagFlatToLeftBankedUp25 }, // TrackElemType::DiagFlatToLeftBankedUp25 - { true, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Up25, TrackRoll::Right, TrackElemType::DiagFlatToRightBankedUp25 }, // TrackElemType::DiagFlatToRightBankedUp25 - { true, TrackPitch::Up25, TrackRoll::Left, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::DiagLeftBankedUp25ToFlat }, // TrackElemType::DiagLeftBankedUp25ToFlat - { true, TrackPitch::Up25, TrackRoll::Right, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::DiagRightBankedUp25ToFlat }, // TrackElemType::DiagRightBankedUp25ToFlat - { true, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Down25, TrackRoll::Left, TrackElemType::DiagFlatToLeftBankedDown25 }, // TrackElemType::DiagFlatToLeftBankedDown25 - { true, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Down25, TrackRoll::Right, TrackElemType::DiagFlatToRightBankedDown25 }, // TrackElemType::DiagFlatToRightBankedDown25 - { true, TrackPitch::Down25, TrackRoll::Left, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::DiagLeftBankedDown25ToFlat }, // TrackElemType::DiagLeftBankedDown25ToFlat - { true, TrackPitch::Down25, TrackRoll::Right, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::DiagRightBankedDown25ToFlat }, // TrackElemType::DiagRightBankedDown25ToFlat - { true, TrackPitch::Up25, TrackRoll::Left, TrackCurve::None, TrackPitch::Up25, TrackRoll::Left, TrackElemType::DiagUp25LeftBanked }, // TrackElemType::Up25LeftBanked - { true, TrackPitch::Up25, TrackRoll::Right, TrackCurve::None, TrackPitch::Up25, TrackRoll::Right, TrackElemType::DiagUp25RightBanked }, // TrackElemType::Up25RightBanked - { true, TrackPitch::Down25, TrackRoll::Left, TrackCurve::None, TrackPitch::Down25, TrackRoll::Left, TrackElemType::DiagDown25LeftBanked }, // TrackElemType::Down25LeftBanked - { true, TrackPitch::Down25, TrackRoll::Right, TrackCurve::None, TrackPitch::Down25, TrackRoll::Right, TrackElemType::DiagDown25RightBanked }, // TrackElemType::Down25RightBanked - { false, TrackPitch::Up25, TrackRoll::Left, TrackCurve::LeftLarge, TrackPitch::Up25, TrackRoll::Left, TrackElemType::LeftEighthBankToDiagUp25 }, // TrackElemType::LeftEighthBankToDiagUp25 - { false, TrackPitch::Up25, TrackRoll::Right, TrackCurve::RightLarge, TrackPitch::Up25, TrackRoll::Right, TrackElemType::RightEighthBankToDiagUp25 }, // TrackElemType::RightEighthBankToDiagUp25 - { false, TrackPitch::Down25, TrackRoll::Left, TrackCurve::LeftLarge, TrackPitch::Down25, TrackRoll::Left, TrackElemType::LeftEighthBankToDiagDown25 }, // TrackElemType::LeftEighthBankToDiagDown25 - { false, TrackPitch::Down25, TrackRoll::Right, TrackCurve::RightLarge, TrackPitch::Down25, TrackRoll::Right, TrackElemType::RightEighthBankToDiagDown25 }, // TrackElemType::RightEighthBankToDiagDown25 - { true, TrackPitch::Up25, TrackRoll::Left, TrackCurve::LeftLarge, TrackPitch::Up25, TrackRoll::Left, TrackElemType::LeftEighthBankToOrthogonalUp25 }, // TrackElemType::LeftEighthBankToOrthogonalUp25 - { true, TrackPitch::Up25, TrackRoll::Right, TrackCurve::RightLarge, TrackPitch::Up25, TrackRoll::Right, TrackElemType::RightEighthBankToOrthogonalUp25 }, // TrackElemType::RightEighthBankToOrthogonalUp25 - { true, TrackPitch::Down25, TrackRoll::Left, TrackCurve::LeftLarge, TrackPitch::Down25, TrackRoll::Left, TrackElemType::LeftEighthBankToOrthogonalDown25 }, // TrackElemType::LeftEighthBankToOrthogonalDown25 - { true, TrackPitch::Down25, TrackRoll::Right, TrackCurve::RightLarge, TrackPitch::Down25, TrackRoll::Right, TrackElemType::RightEighthBankToOrthogonalDown25 }, // TrackElemType::RightEighthBankToOrthogonalDown25 - }; - - /** rct2: 0x00993D1C */ - static constexpr track_type_t AlternativeTrackTypes[] = { - TrackElemType::FlatCovered, // TrackElemType::Flat - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::Up25Covered, // TrackElemType::Up25 - TrackElemType::Up60Covered, // TrackElemType::Up60 - TrackElemType::FlatToUp25Covered, // TrackElemType::FlatToUp25 - TrackElemType::Up25ToUp60Covered, // TrackElemType::Up25ToUp60 - TrackElemType::Up60ToUp25Covered, // TrackElemType::Up60ToUp25 - TrackElemType::Up25ToFlatCovered, // TrackElemType::Up25ToFlat - TrackElemType::Down25Covered, // TrackElemType::Down25 - TrackElemType::Down60Covered, // TrackElemType::Down60 - TrackElemType::FlatToDown25Covered, // TrackElemType::FlatToDown25 - TrackElemType::Down25ToDown60Covered, // TrackElemType::Down25ToDown60 - TrackElemType::Down60ToDown25Covered, // TrackElemType::Down60ToDown25 - TrackElemType::Down25ToFlatCovered, // TrackElemType::Down25ToFlat - TrackElemType::LeftQuarterTurn5TilesCovered, // TrackElemType::LeftQuarterTurn5Tiles - TrackElemType::RightQuarterTurn5TilesCovered, // TrackElemType::RightQuarterTurn5Tiles - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::SBendLeftCovered, // TrackElemType::SBendLeft - TrackElemType::SBendRightCovered, // TrackElemType::SBendRight - TrackElemType::None, - TrackElemType::None, - TrackElemType::LeftQuarterTurn3TilesCovered, // TrackElemType::LeftQuarterTurn3Tiles - TrackElemType::RightQuarterTurn3TilesCovered, // TrackElemType::RightQuarterTurn3Tiles - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, - TrackElemType::None, // TrackElemType::FlatTrack1x4A - TrackElemType::None, // TrackElemType::FlatTrack2x2 - TrackElemType::None, // TrackElemType::FlatTrack4x4 - TrackElemType::None, // TrackElemType::FlatTrack2x4 - TrackElemType::None, // TrackElemType::FlatTrack1x5 - TrackElemType::None, // TrackElemType::FlatTrack1x1A - TrackElemType::None, // TrackElemType::FlatTrack1x4B - TrackElemType::None, // TrackElemType::FlatTrack1x1B - TrackElemType::None, // TrackElemType::FlatTrack1x4C - TrackElemType::None, // TrackElemType::FlatTrack3x3 - TrackElemType::None, // TrackElemType::LeftLargeCorkscrewUp - TrackElemType::None, // TrackElemType::RightLargeCorkscrewUp - TrackElemType::None, // TrackElemType::LeftLargeCorkscrewDown - TrackElemType::None, // TrackElemType::RightCorkscrewDown - TrackElemType::None, // TrackElemType::LeftMediumHalfLoopUp - TrackElemType::None, // TrackElemType::RightMediumHalfLoopUp - TrackElemType::None, // TrackElemType::LeftMediumHalfLoopDown - TrackElemType::None, // TrackElemType::RightMediumHalfLoopDown - TrackElemType::None, // TrackElemType::LeftZeroGRollUp - TrackElemType::None, // TrackElemType::RightZeroGRollUp - TrackElemType::None, // TrackElemType::LeftZeroGRollDown - TrackElemType::None, // TrackElemType::RightZeroGRollDown - TrackElemType::None, // TrackElemType::LeftLargeZeroGRollUp - TrackElemType::None, // TrackElemType::RightLargeZeroGRollUp - TrackElemType::None, // TrackElemType::LeftLargeZeroGRollDown - TrackElemType::None, // TrackElemType::RightLargeZeroGRollDown - TrackElemType::None, // LeftFlyerLargeHalfLoopUninvertedUp - TrackElemType::None, // RightFlyerLargeHalfLoopUninvertedUp - TrackElemType::None, // LeftFlyerLargeHalfLoopInvertedDown - TrackElemType::None, // RightFlyerLargeHalfLoopInvertedDown - TrackElemType::None, // FlyerHalfLoopInvertedUp - TrackElemType::None, // FlyerHalfLoopUninvertedDown - TrackElemType::None, // TrackElemType::LeftEighthToDiagUp25 - TrackElemType::None, // TrackElemType::RightEighthToDiagUp25 - TrackElemType::None, // TrackElemType::LeftEighthToDiagDown25 - TrackElemType::None, // TrackElemType::RightEighthToDiagDown25 - TrackElemType::None, // TrackElemType::LeftEighthToOrthogonalUp25 - TrackElemType::None, // TrackElemType::RightEighthToOrthogonalUp25 - TrackElemType::None, // TrackElemType::LeftEighthToOrthogonalDown25 - TrackElemType::None, // TrackElemType::RightEighthToOrthogonalDown25 - TrackElemType::None, // TrackElemType::DiagUp25ToLeftBankedUp25 - TrackElemType::None, // TrackElemType::DiagUp25ToRightBankedUp25 - TrackElemType::None, // TrackElemType::DiagLeftBankedUp25ToUp25 - TrackElemType::None, // TrackElemType::DiagRightBankedUp25ToUp25 - TrackElemType::None, // TrackElemType::DiagDown25ToLeftBankedDown25 - TrackElemType::None, // TrackElemType::DiagDown25ToRightBankedDown25 - TrackElemType::None, // TrackElemType::DiagLeftBankedDown25ToDown25 - TrackElemType::None, // TrackElemType::DiagRightBankedDown25ToDown25 - TrackElemType::None, // TrackElemType::DiagLeftBankedFlatToLeftBankedUp25 - TrackElemType::None, // TrackElemType::DiagRightBankedFlatToRightBankedUp25 - TrackElemType::None, // TrackElemType::DiagLeftBankedUp25ToLeftBankedFlat - TrackElemType::None, // TrackElemType::DiagRightBankedUp25ToRightBankedFlat - TrackElemType::None, // TrackElemType::DiagLeftBankedFlatToLeftBankedDown25 - TrackElemType::None, // TrackElemType::DiagRightBankedFlatToRightBankedDown25 - TrackElemType::None, // TrackElemType::DiagLeftBankedDown25ToLeftBankedFlat - TrackElemType::None, // TrackElemType::DiagRightBankedDown25ToRightBankedFlat - TrackElemType::None, // TrackElemType::DiagFlatToLeftBankedUp25 - TrackElemType::None, // TrackElemType::DiagFlatToRightBankedUp25 - TrackElemType::None, // TrackElemType::DiagLeftBankedUp25ToFlat - TrackElemType::None, // TrackElemType::DiagRightBankedUp25ToFlat - TrackElemType::None, // TrackElemType::DiagFlatToLeftBankedDown25 - TrackElemType::None, // TrackElemType::DiagFlatToRightBankedDown25 - TrackElemType::None, // TrackElemType::DiagLeftBankedDown25ToFlat - TrackElemType::None, // TrackElemType::DiagRightBankedDown25ToFlat - TrackElemType::None, // TrackElemType::DiagUp25LeftBanked - TrackElemType::None, // TrackElemType::DiagUp25RightBanked - TrackElemType::None, // TrackElemType::DiagDown25LeftBanked - TrackElemType::None, // TrackElemType::DiagDown25RightBanked - TrackElemType::None, // TrackElemType::LeftEighthBankToDiagUp25 - TrackElemType::None, // TrackElemType::RightEighthBankToDiagUp25 - TrackElemType::None, // TrackElemType::LeftEighthBankToDiagDown25 - TrackElemType::None, // TrackElemType::RightEighthBankToDiagDown25 - TrackElemType::None, // TrackElemType::LeftEighthBankToOrthogonalUp25 - TrackElemType::None, // TrackElemType::RightEighthBankToOrthogonalUp25 - TrackElemType::None, // TrackElemType::LeftEighthBankToOrthogonalDown25 - TrackElemType::None, // TrackElemType::RightEighthBankToOrthogonalDown25 - TrackElemType::None, // TrackElemType::DiagBrakes - TrackElemType::None, // TrackElemType::DiagBlockBrakes - }; - static_assert(std::size(AlternativeTrackTypes) == TrackElemType::Count); - - /** rct2: 0x0099DA34 */ - static constexpr money64 TrackPricing[] = { - 65536, // TrackElemType::Flat - 98304, // TrackElemType::EndStation - 98304, // TrackElemType::BeginStation - 98304, // TrackElemType::MiddleStation - 79872, // TrackElemType::Up25 - 114688, // TrackElemType::Up60 - 73728, // TrackElemType::FlatToUp25 - 96256, // TrackElemType::Up25ToUp60 - 96256, // TrackElemType::Up60ToUp25 - 73728, // TrackElemType::Up25ToFlat - 79872, // TrackElemType::Down25 - 114688, // TrackElemType::Down60 - 73728, // TrackElemType::FlatToDown25 - 96256, // TrackElemType::Down25ToDown60 - 96256, // TrackElemType::Down60ToDown25 - 73728, // TrackElemType::Down25ToFlat - 257359, // TrackElemType::LeftQuarterTurn5Tiles - 257359, // TrackElemType::RightQuarterTurn5Tiles - 69632, // TrackElemType::FlatToLeftBank - 69632, // TrackElemType::FlatToRightBank - 69632, // TrackElemType::LeftBankToFlat - 69632, // TrackElemType::RightBankToFlat - 273443, // TrackElemType::BankedLeftQuarterTurn5Tiles - 273443, // TrackElemType::BankedRightQuarterTurn5Tiles - 78336, // TrackElemType::LeftBankToUp25 - 78336, // TrackElemType::RightBankToUp25 - 78336, // TrackElemType::Up25ToLeftBank - 78336, // TrackElemType::Up25ToRightBank - 78336, // TrackElemType::LeftBankToDown25 - 78336, // TrackElemType::RightBankToDown25 - 78336, // TrackElemType::Down25ToLeftBank - 78336, // TrackElemType::Down25ToRightBank - 69632, // TrackElemType::LeftBank - 69632, // TrackElemType::RightBank - 313656, // TrackElemType::LeftQuarterTurn5TilesUp25 - 313656, // TrackElemType::RightQuarterTurn5TilesUp25 - 313656, // TrackElemType::LeftQuarterTurn5TilesDown25 - 313656, // TrackElemType::RightQuarterTurn5TilesDown25 - 229376, // TrackElemType::SBendLeft - 229376, // TrackElemType::SBendRight - 491520, // TrackElemType::LeftVerticalLoop - 491520, // TrackElemType::RightVerticalLoop - 154415, // TrackElemType::LeftQuarterTurn3Tiles - 154415, // TrackElemType::RightQuarterTurn3Tiles - 164065, // TrackElemType::LeftBankedQuarterTurn3Tiles - 164065, // TrackElemType::RightBankedQuarterTurn3Tiles - 270226, // TrackElemType::LeftQuarterTurn3TilesUp25 - 270226, // TrackElemType::RightQuarterTurn3TilesUp25 - 270226, // TrackElemType::LeftQuarterTurn3TilesDown25 - 270226, // TrackElemType::RightQuarterTurn3TilesDown25 - 51471, // TrackElemType::LeftQuarterTurn1Tile - 51471, // TrackElemType::RightQuarterTurn1Tile - 212992, // TrackElemType::LeftTwistDownToUp - 212992, // TrackElemType::RightTwistDownToUp - 212992, // TrackElemType::LeftTwistUpToDown - 212992, // TrackElemType::RightTwistUpToDown - 294912, // TrackElemType::HalfLoopUp - 294912, // TrackElemType::HalfLoopDown - 229376, // TrackElemType::LeftCorkscrewUp - 229376, // TrackElemType::RightCorkscrewUp - 229376, // TrackElemType::LeftCorkscrewDown - 229376, // TrackElemType::RightCorkscrewDown - 98304, // TrackElemType::FlatToUp60 - 98304, // TrackElemType::Up60ToFlat - 98304, // TrackElemType::FlatToDown60 - 98304, // TrackElemType::Down60ToFlat - 524288, // TrackElemType::TowerBase - 65536, // TrackElemType::TowerSection - 69632, // TrackElemType::FlatCovered - 83968, // TrackElemType::Up25Covered - 118784, // TrackElemType::Up60Covered - 77824, // TrackElemType::FlatToUp25Covered - 100352, // TrackElemType::Up25ToUp60Covered - 100352, // TrackElemType::Up60ToUp25Covered - 77824, // TrackElemType::Up25ToFlatCovered - 83968, // TrackElemType::Down25Covered - 118784, // TrackElemType::Down60Covered - 77824, // TrackElemType::FlatToDown25Covered - 100352, // TrackElemType::Down25ToDown60Covered - 100352, // TrackElemType::Down60ToDown25Covered - 77824, // TrackElemType::Down25ToFlatCovered - 261455, // TrackElemType::LeftQuarterTurn5TilesCovered - 261455, // TrackElemType::RightQuarterTurn5TilesCovered - 233472, // TrackElemType::SBendLeftCovered - 233472, // TrackElemType::SBendRightCovered - 158511, // TrackElemType::LeftQuarterTurn3TilesCovered - 158511, // TrackElemType::RightQuarterTurn3TilesCovered - 328192, // TrackElemType::LeftHalfBankedHelixUpSmall - 328192, // TrackElemType::RightHalfBankedHelixUpSmall - 328192, // TrackElemType::LeftHalfBankedHelixDownSmall - 328192, // TrackElemType::RightHalfBankedHelixDownSmall - 547072, // TrackElemType::LeftHalfBankedHelixUpLarge - 547072, // TrackElemType::RightHalfBankedHelixUpLarge - 547072, // TrackElemType::LeftHalfBankedHelixDownLarge - 547072, // TrackElemType::RightHalfBankedHelixDownLarge - 126976, // TrackElemType::LeftQuarterTurn1TileUp60 - 126976, // TrackElemType::RightQuarterTurn1TileUp60 - 126976, // TrackElemType::LeftQuarterTurn1TileDown60 - 126976, // TrackElemType::RightQuarterTurn1TileDown60 - 90112, // TrackElemType::Brakes - 77824, // TrackElemType::Booster - 65536, // TrackElemType::Maze - 273539, // TrackElemType::LeftQuarterBankedHelixLargeUp - 273539, // TrackElemType::RightQuarterBankedHelixLargeUp - 273539, // TrackElemType::LeftQuarterBankedHelixLargeDown - 273539, // TrackElemType::RightQuarterBankedHelixLargeDown - 273539, // TrackElemType::LeftQuarterHelixLargeUp - 273539, // TrackElemType::RightQuarterHelixLargeUp - 273539, // TrackElemType::LeftQuarterHelixLargeDown - 273539, // TrackElemType::RightQuarterHelixLargeDown - 83968, // TrackElemType::Up25LeftBanked - 83968, // TrackElemType::Up25RightBanked - 143360, // TrackElemType::Waterfall - 118784, // TrackElemType::Rapids - 196608, // TrackElemType::OnRidePhoto - 83968, // TrackElemType::Down25LeftBanked - 83968, // TrackElemType::Down25RightBanked - 393216, // TrackElemType::Watersplash - 376832, // TrackElemType::FlatToUp60LongBase - 376832, // TrackElemType::Up60ToFlatLongBase - 126976, // TrackElemType::Whirlpool - 376832, // TrackElemType::Down60ToFlatLongBase - 376832, // TrackElemType::FlatToDown60LongBase - 643072, // TrackElemType::CableLiftHill - 491520, // TrackElemType::ReverseFreefallSlope - 65536, // TrackElemType::ReverseFreefallVertical - 69632, // TrackElemType::Up90 - 69632, // TrackElemType::Down90 - 114688, // TrackElemType::Up60ToUp90 - 114688, // TrackElemType::Down90ToDown60 - 114688, // TrackElemType::Up90ToUp60 - 114688, // TrackElemType::Down60ToDown90 - 147456, // TrackElemType::BrakeForDrop - 180151, // TrackElemType::LeftEighthToDiag - 180151, // TrackElemType::RightEighthToDiag - 180151, // TrackElemType::LeftEighthToOrthogonal - 180151, // TrackElemType::RightEighthToOrthogonal - 190960, // TrackElemType::LeftEighthBankToDiag - 190960, // TrackElemType::RightEighthBankToDiag - 190960, // TrackElemType::LeftEighthBankToOrthogonal - 190960, // TrackElemType::RightEighthBankToOrthogonal - 92681, // TrackElemType::DiagFlat - 111820, // TrackElemType::DiagUp25 - 147456, // TrackElemType::DiagUp60 - 102400, // TrackElemType::DiagFlatToUp25 - 129024, // TrackElemType::DiagUp25ToUp60 - 129024, // TrackElemType::DiagUp60ToUp25 - 102400, // TrackElemType::DiagUp25ToFlat - 111820, // TrackElemType::DiagDown25 - 147456, // TrackElemType::DiagDown60 - 102400, // TrackElemType::DiagFlatToDown25 - 129024, // TrackElemType::DiagDown25ToDown60 - 129024, // TrackElemType::DiagDown60ToDown25 - 102400, // TrackElemType::DiagDown25ToFlat - 107008, // TrackElemType::DiagFlatToUp60 - 107008, // TrackElemType::DiagUp60ToFlat - 107008, // TrackElemType::DiagFlatToDown60 - 107008, // TrackElemType::DiagDown60ToFlat - 96777, // TrackElemType::DiagFlatToLeftBank - 96777, // TrackElemType::DiagFlatToRightBank - 96777, // TrackElemType::DiagLeftBankToFlat - 96777, // TrackElemType::DiagRightBankToFlat - 106496, // TrackElemType::DiagLeftBankToUp25 - 106496, // TrackElemType::DiagRightBankToUp25 - 106496, // TrackElemType::DiagUp25ToLeftBank - 106496, // TrackElemType::DiagUp25ToRightBank - 106496, // TrackElemType::DiagLeftBankToDown25 - 106496, // TrackElemType::DiagRightBankToDown25 - 106496, // TrackElemType::DiagDown25ToLeftBank - 106496, // TrackElemType::DiagDown25ToRightBank - 96777, // TrackElemType::DiagLeftBank - 96777, // TrackElemType::DiagRightBank - 282624, // TrackElemType::LogFlumeReverser - 217088, // TrackElemType::SpinningTunnel - 221184, // TrackElemType::LeftBarrelRollUpToDown - 221184, // TrackElemType::RightBarrelRollUpToDown - 221184, // TrackElemType::LeftBarrelRollDownToUp - 221184, // TrackElemType::RightBarrelRollDownToUp - 270226, // TrackElemType::LeftBankToLeftQuarterTurn3TilesUp25 - 270226, // TrackElemType::RightBankToRightQuarterTurn3TilesUp25 - 270226, // TrackElemType::LeftQuarterTurn3TilesDown25ToLeftBank - 270226, // TrackElemType::RightQuarterTurn3TilesDown25ToRightBank - 96384, // TrackElemType::PoweredLift - 884736, // TrackElemType::LeftLargeHalfLoopUp - 884736, // TrackElemType::RightLargeHalfLoopUp - 884736, // TrackElemType::LeftLargeHalfLoopDown - 884736, // TrackElemType::RightLargeHalfLoopDown - 221184, // TrackElemType::LeftFlyerTwistUp - 221184, // TrackElemType::RightFlyerTwistUp - 221184, // TrackElemType::LeftFlyerTwistDown - 221184, // TrackElemType::RightFlyerTwistDown - 294912, // TrackElemType::FlyerHalfLoopUninvertedUp - 294912, // TrackElemType::FlyerHalfLoopInvertedDown - 229376, // TrackElemType::LeftFlyerCorkscrewUp - 229376, // TrackElemType::RightFlyerCorkscrewUp - 229376, // TrackElemType::LeftFlyerCorkscrewDown - 229376, // TrackElemType::RightFlyerCorkscrewDown - 294912, // TrackElemType::HeartLineTransferUp - 294912, // TrackElemType::HeartLineTransferDown - 417792, // TrackElemType::LeftHeartLineRoll - 417792, // TrackElemType::RightHeartLineRoll - 159744, // TrackElemType::MinigolfHoleA - 167936, // TrackElemType::MinigolfHoleB - 172032, // TrackElemType::MinigolfHoleC - 184320, // TrackElemType::MinigolfHoleD - 184320, // TrackElemType::MinigolfHoleE - 360448, // TrackElemType::MultiDimInvertedFlatToDown90QuarterLoop - 360448, // TrackElemType::Up90ToInvertedFlatQuarterLoop - 360448, // TrackElemType::InvertedFlatToDown90QuarterLoop - 270226, // TrackElemType::LeftCurvedLiftHill - 270226, // TrackElemType::RightCurvedLiftHill - 393216, // TrackElemType::LeftReverser - 393216, // TrackElemType::RightReverser - 65536, // TrackElemType::AirThrustTopCap - 65536, // TrackElemType::AirThrustVerticalDown - 491520, // TrackElemType::AirThrustVerticalDownToLevel - 94208, // TrackElemType::BlockBrakes - 287115, // TrackElemType::LeftBankedQuarterTurn3TileUp25 - 287115, // TrackElemType::RightBankedQuarterTurn3TileUp25 - 287115, // TrackElemType::LeftBankedQuarterTurn3TileDown25 - 287115, // TrackElemType::RightBankedQuarterTurn3TileDown25 - 333259, // TrackElemType::LeftBankedQuarterTurn5TileUp25 - 333259, // TrackElemType::RightBankedQuarterTurn5TileUp25 - 333259, // TrackElemType::LeftBankedQuarterTurn5TileDown25 - 333259, // TrackElemType::RightBankedQuarterTurn5TileDown25 - 83968, // TrackElemType::Up25ToLeftBankedUp25 - 83968, // TrackElemType::Up25ToRightBankedUp25 - 83968, // TrackElemType::LeftBankedUp25ToUp25 - 83968, // TrackElemType::RightBankedUp25ToUp25 - 83968, // TrackElemType::Down25ToLeftBankedDown25 - 83968, // TrackElemType::Down25ToRightBankedDown25 - 83968, // TrackElemType::LeftBankedDown25ToDown25 - 83968, // TrackElemType::RightBankedDown25ToDown25 - 77824, // TrackElemType::LeftBankedFlatToLeftBankedUp25 - 77824, // TrackElemType::RightBankedFlatToRightBankedUp25 - 77824, // TrackElemType::LeftBankedUp25ToLeftBankedFlat - 77824, // TrackElemType::RightBankedUp25ToRightBankedFlat - 77824, // TrackElemType::LeftBankedFlatToLeftBankedDown25 - 77824, // TrackElemType::RightBankedFlatToRightBankedDown25 - 77824, // TrackElemType::LeftBankedDown25ToLeftBankedFlat - 77824, // TrackElemType::RightBankedDown25ToRightBankedFlat - 77824, // TrackElemType::FlatToLeftBankedUp25 - 77824, // TrackElemType::FlatToRightBankedUp25 - 77824, // TrackElemType::LeftBankedUp25ToFlat - 77824, // TrackElemType::RightBankedUp25ToFlat - 77824, // TrackElemType::FlatToLeftBankedDown25 - 77824, // TrackElemType::FlatToRightBankedDown25 - 77824, // TrackElemType::LeftBankedDown25ToFlat - 77824, // TrackElemType::RightBankedDown25ToFlat - 151552, // TrackElemType::LeftQuarterTurn1TileUp90 - 151552, // TrackElemType::RightQuarterTurn1TileUp90 - 151552, // TrackElemType::LeftQuarterTurn1TileDown90 - 151552, // TrackElemType::RightQuarterTurn1TileDown90 - 360448, // TrackElemType::MultiDimUp90ToInvertedFlatQuarterLoop - 360448, // TrackElemType::MultiDimFlatToDown90QuarterLoop - 360448, // TrackElemType::MultiDimInvertedUp90ToFlatQuarterLoop - 77824, // TrackElemType::RotationControlToggle - 262144, // TrackElemType::FlatTrack1x4A - 262144, // TrackElemType::FlatTrack2x2 - 1048576,// TrackElemType::FlatTrack4x4 - 524288, // TrackElemType::FlatTrack2x4 - 327680, // TrackElemType::FlatTrack1x5 - 65536, // TrackElemType::FlatTrack1x1A - 262144, // TrackElemType::FlatTrack1x4B - 65536, // TrackElemType::FlatTrack1x1B - 262144, // TrackElemType::FlatTrack1x4C - 524288, // TrackElemType::FlatTrack3x3 - 360448, // TrackElemType::LeftLargeCorkscrewUp - 360448, // TrackElemType::RightLargeCorkscrewUp - 360448, // TrackElemType::LeftLargeCorkscrewDown - 360448, // TrackElemType::RightCorkscrewDown - 589824, // TrackElemType::LeftMediumHalfLoopUp - 589824, // TrackElemType::RightMediumHalfLoopUp - 589824, // TrackElemType::LeftMediumHalfLoopDown - 589824, // TrackElemType::RightMediumHalfLoopDown - 229376, // TrackElemType::LeftZeroGRollUp - 229376, // TrackElemType::RightZeroGRollUp - 229376, // TrackElemType::LeftZeroGRollDown - 229376, // TrackElemType::RightZeroGRollDown - 425984, // TrackElemType::LeftLargeZeroGRollUp - 425984, // TrackElemType::RightLargeZeroGRollUp - 425984, // TrackElemType::LeftLargeZeroGRollDown - 425984, // TrackElemType::RightLargeZeroGRollDown - 884736, // TrackElemType::LeftFlyerLargeHalfLoopUninvertedUp - 884736, // TrackElemType::RightFlyerLargeHalfLoopUninvertedUp - 884736, // TrackElemType::LeftFlyerLargeHalfLoopInvertedDown - 884736, // TrackElemType::RightFlyerLargeHalfLoopInvertedDown - 884736, // TrackElemType::LeftFlyerLargeHalfLoopInvertedUp - 884736, // TrackElemType::RightFlyerLargeHalfLoopInvertedUp - 884736, // TrackElemType::LeftFlyerLargeHalfLoopUninvertedDown - 884736, // TrackElemType::RightFlyerLargeHalfLoopUninvertedDown - 294912, // TrackElemType::FlyerHalfLoopInvertedUp - 294912, // TrackElemType::FlyerHalfLoopUninvertedDown - 219559, // TrackElemType::LeftEighthToDiagUp25 - 219559, // TrackElemType::RightEighthToDiagUp25 - 219559, // TrackElemType::LeftEighthToDiagDown25 - 219559, // TrackElemType::RightEighthToDiagDown25 - 219559, // TrackElemType::LeftEighthToOrthogonalUp25 - 219559, // TrackElemType::RightEighthToOrthogonalUp25 - 219559, // TrackElemType::LeftEighthToOrthogonalDown25 - 219559, // TrackElemType::RightEighthToOrthogonalDown25 - 118809, // TrackElemType::DiagUp25ToLeftBankedUp25 - 118809, // TrackElemType::DiagUp25ToRightBankedUp25 - 118809, // TrackElemType::DiagLeftBankedUp25ToUp25 - 118809, // TrackElemType::DiagRightBankedUp25ToUp25 - 118809, // TrackElemType::DiagDown25ToLeftBankedDown25 - 118809, // TrackElemType::DiagDown25ToRightBankedDown25 - 118809, // TrackElemType::DiagLeftBankedDown25ToDown25 - 118809, // TrackElemType::DiagRightBankedDown25ToDown25 - 108800, // TrackElemType::DiagLeftBankedFlatToLeftBankedUp25 - 108800, // TrackElemType::DiagRightBankedFlatToRightBankedUp25 - 108800, // TrackElemType::DiagLeftBankedUp25ToLeftBankedFlat - 108800, // TrackElemType::DiagRightBankedUp25ToRightBankedFlat - 108800, // TrackElemType::DiagLeftBankedFlatToLeftBankedDown25 - 108800, // TrackElemType::DiagRightBankedFlatToRightBankedDown25 - 108800, // TrackElemType::DiagLeftBankedDown25ToLeftBankedFlat - 108800, // TrackElemType::DiagRightBankedDown25ToRightBankedFlat - 108800, // TrackElemType::DiagFlatToLeftBankedUp25 - 108800, // TrackElemType::DiagFlatToRightBankedUp25 - 108800, // TrackElemType::DiagLeftBankedUp25ToFlat - 108800, // TrackElemType::DiagRightBankedUp25ToFlat - 108800, // TrackElemType::DiagFlatToLeftBankedDown25 - 108800, // TrackElemType::DiagFlatToRightBankedDown25 - 108800, // TrackElemType::DiagLeftBankedDown25ToFlat - 108800, // TrackElemType::DiagRightBankedDown25ToFlat - 118809, // TrackElemType::DiagUp25LeftBanked - 118809, // TrackElemType::DiagUp25RightBanked - 118809, // TrackElemType::DiagDown25LeftBanked - 118809, // TrackElemType::DiagDown25RightBanked - 233281, // TrackElemType::LeftEighthBankToDiagUp25 - 233281, // TrackElemType::RightEighthBankToDiagUp25 - 233281, // TrackElemType::LeftEighthBankToDiagDown25 - 233281, // TrackElemType::RightEighthBankToDiagDown25 - 233281, // TrackElemType::LeftEighthBankToOrthogonalUp25 - 233281, // TrackElemType::RightEighthBankToOrthogonalUp25 - 233281, // TrackElemType::LeftEighthBankToOrthogonalDown25 - 233281, // TrackElemType::RightEighthBankToOrthogonalDown25 - 123456, // TrackElemType::DiagBrakes - 123456, // TrackElemType::DiagBlockBrakes - }; - - - - static_assert(std::size(TrackPricing) == TrackElemType::Count); - - /** rct2: 0x0099EA1C */ - static constexpr track_type_t TrackElementMirrorMap[] = { - TrackElemType::Flat, - TrackElemType::EndStation, - TrackElemType::BeginStation, - TrackElemType::MiddleStation, - TrackElemType::Up25, - TrackElemType::Up60, - TrackElemType::FlatToUp25, - TrackElemType::Up25ToUp60, - TrackElemType::Up60ToUp25, - TrackElemType::Up25ToFlat, - TrackElemType::Down25, - TrackElemType::Down60, - TrackElemType::FlatToDown25, - TrackElemType::Down25ToDown60, - TrackElemType::Down60ToDown25, - TrackElemType::Down25ToFlat, - TrackElemType::RightQuarterTurn5Tiles, // TrackElemType::LeftQuarterTurn5Tiles - TrackElemType::LeftQuarterTurn5Tiles, // TrackElemType::RightQuarterTurn5Tiles - TrackElemType::FlatToRightBank, // TrackElemType::FlatToLeftBank - TrackElemType::FlatToLeftBank, // TrackElemType::FlatToRightBank - TrackElemType::RightBankToFlat, // TrackElemType::LeftBankToFlat - TrackElemType::LeftBankToFlat, // TrackElemType::RightBankToFlat - TrackElemType::BankedRightQuarterTurn5Tiles, // TrackElemType::BankedLeftQuarterTurn5Tiles - TrackElemType::BankedLeftQuarterTurn5Tiles, // TrackElemType::BankedRightQuarterTurn5Tiles - TrackElemType::RightBankToUp25, // TrackElemType::LeftBankToUp25 - TrackElemType::LeftBankToUp25, // TrackElemType::RightBankToUp25 - TrackElemType::Up25ToRightBank, // TrackElemType::Up25ToLeftBank - TrackElemType::Up25ToLeftBank, // TrackElemType::Up25ToRightBank - TrackElemType::RightBankToDown25, // TrackElemType::LeftBankToDown25 - TrackElemType::LeftBankToDown25, // TrackElemType::RightBankToDown25 - TrackElemType::Down25ToRightBank, // TrackElemType::Down25ToLeftBank - TrackElemType::Down25ToLeftBank, // TrackElemType::Down25ToRightBank - TrackElemType::RightBank, // TrackElemType::LeftBank - TrackElemType::LeftBank, // TrackElemType::RightBank - TrackElemType::RightQuarterTurn5TilesUp25, // TrackElemType::LeftQuarterTurn5TilesUp25 - TrackElemType::LeftQuarterTurn5TilesUp25, // TrackElemType::RightQuarterTurn5TilesUp25 - TrackElemType::RightQuarterTurn5TilesDown25, // TrackElemType::LeftQuarterTurn5TilesDown25 - TrackElemType::LeftQuarterTurn5TilesDown25, // TrackElemType::RightQuarterTurn5TilesDown25 - TrackElemType::SBendRight, // TrackElemType::SBendLeft - TrackElemType::SBendLeft, // TrackElemType::SBendRight - TrackElemType::RightVerticalLoop, // TrackElemType::LeftVerticalLoop - TrackElemType::LeftVerticalLoop, // TrackElemType::RightVerticalLoop - TrackElemType::RightQuarterTurn3Tiles, // TrackElemType::LeftQuarterTurn3Tiles - TrackElemType::LeftQuarterTurn3Tiles, // TrackElemType::RightQuarterTurn3Tiles - TrackElemType::RightBankedQuarterTurn3Tiles, // TrackElemType::LeftBankedQuarterTurn3Tiles - TrackElemType::LeftBankedQuarterTurn3Tiles, // TrackElemType::RightBankedQuarterTurn3Tiles - TrackElemType::RightQuarterTurn3TilesUp25, // TrackElemType::LeftQuarterTurn3TilesUp25 - TrackElemType::LeftQuarterTurn3TilesUp25, // TrackElemType::RightQuarterTurn3TilesUp25 - TrackElemType::RightQuarterTurn3TilesDown25, // TrackElemType::LeftQuarterTurn3TilesDown25 - TrackElemType::LeftQuarterTurn3TilesDown25, // TrackElemType::RightQuarterTurn3TilesDown25 - TrackElemType::RightQuarterTurn1Tile, // TrackElemType::LeftQuarterTurn1Tile - TrackElemType::LeftQuarterTurn1Tile, // TrackElemType::RightQuarterTurn1Tile - TrackElemType::RightTwistDownToUp, // TrackElemType::LeftTwistDownToUp - TrackElemType::LeftTwistDownToUp, // TrackElemType::RightTwistDownToUp - TrackElemType::RightTwistUpToDown, // TrackElemType::LeftTwistUpToDown - TrackElemType::LeftTwistUpToDown, // TrackElemType::RightTwistUpToDown - TrackElemType::HalfLoopUp, - TrackElemType::HalfLoopDown, - TrackElemType::RightCorkscrewUp, // TrackElemType::LeftCorkscrewUp - TrackElemType::LeftCorkscrewUp, // TrackElemType::RightCorkscrewUp - TrackElemType::RightCorkscrewDown, // TrackElemType::LeftCorkscrewDown - TrackElemType::LeftCorkscrewDown, // TrackElemType::RightCorkscrewDown - TrackElemType::FlatToUp60, - TrackElemType::Up60ToFlat, - TrackElemType::FlatToDown60, - TrackElemType::Down60ToFlat, - TrackElemType::TowerBase, - TrackElemType::TowerSection, - TrackElemType::FlatCovered, - TrackElemType::Up25Covered, - TrackElemType::Up60Covered, - TrackElemType::FlatToUp25Covered, - TrackElemType::Up25ToUp60Covered, - TrackElemType::Up60ToUp25Covered, - TrackElemType::Up25ToFlatCovered, - TrackElemType::Down25Covered, - TrackElemType::Down60Covered, - TrackElemType::FlatToDown25Covered, - TrackElemType::Down25ToDown60Covered, - TrackElemType::Down60ToDown25Covered, - TrackElemType::Down25ToFlatCovered, - TrackElemType::RightQuarterTurn5TilesCovered, // TrackElemType::LeftQuarterTurn5TilesCovered - TrackElemType::LeftQuarterTurn5TilesCovered, // TrackElemType::RightQuarterTurn5TilesCovered - TrackElemType::SBendRightCovered, // TrackElemType::SBendLeftCovered - TrackElemType::SBendLeftCovered, // TrackElemType::SBendRightCovered - TrackElemType::RightQuarterTurn3TilesCovered, // TrackElemType::LeftQuarterTurn3TilesCovered - TrackElemType::LeftQuarterTurn3TilesCovered, // TrackElemType::RightQuarterTurn3TilesCovered - TrackElemType::RightHalfBankedHelixUpSmall, // TrackElemType::LeftHalfBankedHelixUpSmall - TrackElemType::LeftHalfBankedHelixUpSmall, // TrackElemType::RightHalfBankedHelixUpSmall - TrackElemType::RightHalfBankedHelixDownSmall, // TrackElemType::LeftHalfBankedHelixDownSmall - TrackElemType::LeftHalfBankedHelixDownSmall, // TrackElemType::RightHalfBankedHelixDownSmall - TrackElemType::RightHalfBankedHelixUpLarge, // TrackElemType::LeftHalfBankedHelixUpLarge - TrackElemType::LeftHalfBankedHelixUpLarge, // TrackElemType::RightHalfBankedHelixUpLarge - TrackElemType::RightHalfBankedHelixDownLarge, // TrackElemType::LeftHalfBankedHelixDownLarge - TrackElemType::LeftHalfBankedHelixDownLarge, // TrackElemType::RightHalfBankedHelixDownLarge - TrackElemType::RightQuarterTurn1TileUp60, // TrackElemType::LeftQuarterTurn1TileUp60 - TrackElemType::LeftQuarterTurn1TileUp60, // TrackElemType::RightQuarterTurn1TileUp60 - TrackElemType::RightQuarterTurn1TileDown60, // TrackElemType::LeftQuarterTurn1TileDown60 - TrackElemType::LeftQuarterTurn1TileDown60, // TrackElemType::RightQuarterTurn1TileDown60 - TrackElemType::Brakes, - TrackElemType::Booster, - TrackElemType::Maze, - TrackElemType::RightQuarterBankedHelixLargeUp, // TrackElemType::LeftQuarterBankedHelixLargeUp - TrackElemType::LeftQuarterBankedHelixLargeUp, // TrackElemType::RightQuarterBankedHelixLargeUp - TrackElemType::RightQuarterBankedHelixLargeDown, // TrackElemType::LeftQuarterBankedHelixLargeDown - TrackElemType::LeftQuarterBankedHelixLargeDown, // TrackElemType::RightQuarterBankedHelixLargeDown - TrackElemType::RightQuarterHelixLargeUp, // TrackElemType::LeftQuarterHelixLargeUp - TrackElemType::LeftQuarterHelixLargeUp, // TrackElemType::RightQuarterHelixLargeUp - TrackElemType::RightQuarterHelixLargeDown, // TrackElemType::LeftQuarterHelixLargeDown - TrackElemType::LeftQuarterHelixLargeDown, // TrackElemType::RightQuarterHelixLargeDown - TrackElemType::Up25RightBanked, // TrackElemType::Up25LeftBanked - TrackElemType::Up25LeftBanked, // TrackElemType::Up25RightBanked - TrackElemType::Waterfall, - TrackElemType::Rapids, - TrackElemType::OnRidePhoto, - TrackElemType::Down25RightBanked, // TrackElemType::Down25LeftBanked - TrackElemType::Down25LeftBanked, // TrackElemType::Down25RightBanked - TrackElemType::Watersplash, - TrackElemType::FlatToUp60LongBase, - TrackElemType::Up60ToFlatLongBase, - TrackElemType::Whirlpool, - TrackElemType::Down60ToFlatLongBase, - TrackElemType::FlatToDown60LongBase, - TrackElemType::CableLiftHill, - TrackElemType::ReverseFreefallSlope, - TrackElemType::ReverseFreefallVertical, - TrackElemType::Up90, - TrackElemType::Down90, - TrackElemType::Up60ToUp90, - TrackElemType::Down90ToDown60, - TrackElemType::Up90ToUp60, - TrackElemType::Down60ToDown90, - TrackElemType::BrakeForDrop, - TrackElemType::RightEighthToDiag, // TrackElemType::LeftEighthToDiag - TrackElemType::LeftEighthToDiag, // TrackElemType::RightEighthToDiag - TrackElemType::RightEighthToOrthogonal, // TrackElemType::LeftEighthToOrthogonal - TrackElemType::LeftEighthToOrthogonal, // TrackElemType::RightEighthToOrthogonal - TrackElemType::RightEighthBankToDiag, // TrackElemType::LeftEighthBankToDiag - TrackElemType::LeftEighthBankToDiag, // TrackElemType::RightEighthBankToDiag - TrackElemType::RightEighthBankToOrthogonal, // TrackElemType::LeftEighthBankToOrthogonal - TrackElemType::LeftEighthBankToOrthogonal, // TrackElemType::RightEighthBankToOrthogonal - TrackElemType::DiagFlat, - TrackElemType::DiagUp25, - TrackElemType::DiagUp60, - TrackElemType::DiagFlatToUp25, - TrackElemType::DiagUp25ToUp60, - TrackElemType::DiagUp60ToUp25, - TrackElemType::DiagUp25ToFlat, - TrackElemType::DiagDown25, - TrackElemType::DiagDown60, - TrackElemType::DiagFlatToDown25, - TrackElemType::DiagDown25ToDown60, - TrackElemType::DiagDown60ToDown25, - TrackElemType::DiagDown25ToFlat, - TrackElemType::DiagFlatToUp60, - TrackElemType::DiagUp60ToFlat, - TrackElemType::DiagFlatToDown60, - TrackElemType::DiagDown60ToFlat, - TrackElemType::DiagFlatToRightBank, // TrackElemType::DiagFlatToLeftBank - TrackElemType::DiagFlatToLeftBank, // TrackElemType::DiagFlatToRightBank - TrackElemType::DiagRightBankToFlat, // TrackElemType::DiagLeftBankToFlat - TrackElemType::DiagLeftBankToFlat, // TrackElemType::DiagRightBankToFlat - TrackElemType::DiagRightBankToUp25, // TrackElemType::DiagLeftBankToUp25 - TrackElemType::DiagLeftBankToUp25, // TrackElemType::DiagRightBankToUp25 - TrackElemType::DiagUp25ToRightBank, // TrackElemType::DiagUp25ToLeftBank - TrackElemType::DiagUp25ToLeftBank, // TrackElemType::DiagUp25ToRightBank - TrackElemType::DiagRightBankToDown25, // TrackElemType::DiagLeftBankToDown25 - TrackElemType::DiagLeftBankToDown25, // TrackElemType::DiagRightBankToDown25 - TrackElemType::DiagDown25ToRightBank, // TrackElemType::DiagDown25ToLeftBank - TrackElemType::DiagDown25ToLeftBank, // TrackElemType::DiagDown25ToRightBank - TrackElemType::DiagRightBank, // TrackElemType::DiagLeftBank - TrackElemType::DiagLeftBank, // TrackElemType::DiagRightBank - TrackElemType::LogFlumeReverser, - TrackElemType::SpinningTunnel, - TrackElemType::RightBarrelRollUpToDown, // TrackElemType::LeftBarrelRollUpToDown - TrackElemType::LeftBarrelRollUpToDown, // TrackElemType::RightBarrelRollUpToDown - TrackElemType::RightBarrelRollDownToUp, // TrackElemType::LeftBarrelRollDownToUp - TrackElemType::LeftBarrelRollDownToUp, // TrackElemType::RightBarrelRollDownToUp - TrackElemType::RightBankToRightQuarterTurn3TilesUp25, // TrackElemType::LeftBankToLeftQuarterTurn3TilesUp25 - TrackElemType::LeftBankToLeftQuarterTurn3TilesUp25, // TrackElemType::RightBankToRightQuarterTurn3TilesUp25 - TrackElemType::RightQuarterTurn3TilesDown25ToRightBank, // TrackElemType::LeftQuarterTurn3TilesDown25ToLeftBank - TrackElemType::LeftQuarterTurn3TilesDown25ToLeftBank, // TrackElemType::RightQuarterTurn3TilesDown25ToRightBank - TrackElemType::PoweredLift, - TrackElemType::RightLargeHalfLoopUp, // TrackElemType::LeftLargeHalfLoopUp - TrackElemType::LeftLargeHalfLoopUp, // TrackElemType::RightLargeHalfLoopUp - TrackElemType::RightLargeHalfLoopDown, // TrackElemType::LeftLargeHalfLoopDown - TrackElemType::LeftLargeHalfLoopDown, // TrackElemType::RightLargeHalfLoopDown - TrackElemType::RightFlyerTwistUp, // TrackElemType::LeftFlyerTwistUp - TrackElemType::LeftFlyerTwistUp, // TrackElemType::RightFlyerTwistUp - TrackElemType::RightFlyerTwistDown, // TrackElemType::LeftFlyerTwistDown - TrackElemType::LeftFlyerTwistDown, // TrackElemType::RightFlyerTwistDown - TrackElemType::FlyerHalfLoopUninvertedUp, - TrackElemType::FlyerHalfLoopInvertedDown, - TrackElemType::RightFlyerCorkscrewUp, // TrackElemType::LeftFlyerCorkscrewUp - TrackElemType::LeftFlyerCorkscrewUp, // TrackElemType::RightFlyerCorkscrewUp - TrackElemType::RightFlyerCorkscrewDown, // TrackElemType::LeftFlyerCorkscrewDown - TrackElemType::LeftFlyerCorkscrewDown, // TrackElemType::RightFlyerCorkscrewDown - TrackElemType::HeartLineTransferUp, - TrackElemType::HeartLineTransferDown, - TrackElemType::RightHeartLineRoll, // TrackElemType::LeftHeartLineRoll - TrackElemType::LeftHeartLineRoll, // TrackElemType::RightHeartLineRoll - TrackElemType::MinigolfHoleA, - TrackElemType::MinigolfHoleB, - TrackElemType::MinigolfHoleC, - TrackElemType::MinigolfHoleE, // TrackElemType::MinigolfHoleD - TrackElemType::MinigolfHoleD, // TrackElemType::MinigolfHoleE - TrackElemType::MultiDimInvertedFlatToDown90QuarterLoop, - TrackElemType::Up90ToInvertedFlatQuarterLoop, - TrackElemType::InvertedFlatToDown90QuarterLoop, - TrackElemType::RightCurvedLiftHill, // TrackElemType::LeftCurvedLiftHill - TrackElemType::LeftCurvedLiftHill, // TrackElemType::RightCurvedLiftHill - TrackElemType::RightReverser, // TrackElemType::LeftReverser - TrackElemType::LeftReverser, // TrackElemType::RightReverser - TrackElemType::AirThrustTopCap, - TrackElemType::AirThrustVerticalDown, - TrackElemType::AirThrustVerticalDownToLevel, - TrackElemType::BlockBrakes, - TrackElemType::RightBankedQuarterTurn3TileUp25, // TrackElemType::LeftBankedQuarterTurn3TileUp25 - TrackElemType::LeftBankedQuarterTurn3TileUp25, // TrackElemType::RightBankedQuarterTurn3TileUp25 - TrackElemType::RightBankedQuarterTurn3TileDown25, // TrackElemType::LeftBankedQuarterTurn3TileDown25 - TrackElemType::LeftBankedQuarterTurn3TileDown25, // TrackElemType::RightBankedQuarterTurn3TileDown25 - TrackElemType::RightBankedQuarterTurn5TileUp25, // TrackElemType::LeftBankedQuarterTurn5TileUp25 - TrackElemType::LeftBankedQuarterTurn5TileUp25, // TrackElemType::RightBankedQuarterTurn5TileUp25 - TrackElemType::RightBankedQuarterTurn5TileDown25, // TrackElemType::LeftBankedQuarterTurn5TileDown25 - TrackElemType::LeftBankedQuarterTurn5TileDown25, // TrackElemType::RightBankedQuarterTurn5TileDown25 - TrackElemType::Up25ToRightBankedUp25, // TrackElemType::Up25ToLeftBankedUp25 - TrackElemType::Up25ToLeftBankedUp25, // TrackElemType::Up25ToRightBankedUp25 - TrackElemType::RightBankedUp25ToUp25, // TrackElemType::LeftBankedUp25ToUp25 - TrackElemType::LeftBankedUp25ToUp25, // TrackElemType::RightBankedUp25ToUp25 - TrackElemType::Down25ToRightBankedDown25, // TrackElemType::Down25ToLeftBankedDown25 - TrackElemType::Down25ToLeftBankedDown25, // TrackElemType::Down25ToRightBankedDown25 - TrackElemType::RightBankedDown25ToDown25, // TrackElemType::LeftBankedDown25ToDown25 - TrackElemType::LeftBankedDown25ToDown25, // TrackElemType::RightBankedDown25ToDown25 - TrackElemType::RightBankedFlatToRightBankedUp25, // TrackElemType::LeftBankedFlatToLeftBankedUp25 - TrackElemType::LeftBankedFlatToLeftBankedUp25, // TrackElemType::RightBankedFlatToRightBankedUp25 - TrackElemType::RightBankedUp25ToRightBankedFlat, // TrackElemType::LeftBankedUp25ToLeftBankedFlat - TrackElemType::LeftBankedUp25ToLeftBankedFlat, // TrackElemType::RightBankedUp25ToRightBankedFlat - TrackElemType::RightBankedFlatToRightBankedDown25, // TrackElemType::LeftBankedFlatToLeftBankedDown25 - TrackElemType::LeftBankedFlatToLeftBankedDown25, // TrackElemType::RightBankedFlatToRightBankedDown25 - TrackElemType::RightBankedDown25ToRightBankedFlat, // TrackElemType::LeftBankedDown25ToLeftBankedFlat - TrackElemType::LeftBankedDown25ToLeftBankedFlat, // TrackElemType::RightBankedDown25ToRightBankedFlat - TrackElemType::FlatToRightBankedUp25, // TrackElemType::FlatToLeftBankedUp25 - TrackElemType::FlatToLeftBankedUp25, // TrackElemType::FlatToRightBankedUp25 - TrackElemType::RightBankedUp25ToFlat, // TrackElemType::LeftBankedUp25ToFlat - TrackElemType::LeftBankedUp25ToFlat, // TrackElemType::RightBankedUp25ToFlat - TrackElemType::FlatToRightBankedDown25, // TrackElemType::FlatToLeftBankedDown25 - TrackElemType::FlatToLeftBankedDown25, // TrackElemType::FlatToRightBankedDown25 - TrackElemType::RightBankedDown25ToFlat, // TrackElemType::LeftBankedDown25ToFlat - TrackElemType::LeftBankedDown25ToFlat, // TrackElemType::RightBankedDown25ToFlat - TrackElemType::RightQuarterTurn1TileUp90, // TrackElemType::LeftQuarterTurn1TileUp90 - TrackElemType::LeftQuarterTurn1TileUp90, // TrackElemType::RightQuarterTurn1TileUp90 - TrackElemType::RightQuarterTurn1TileDown90, // TrackElemType::LeftQuarterTurn1TileDown90 - TrackElemType::LeftQuarterTurn1TileDown90, // TrackElemType::RightQuarterTurn1TileDown90 - TrackElemType::MultiDimUp90ToInvertedFlatQuarterLoop, - TrackElemType::MultiDimFlatToDown90QuarterLoop, - TrackElemType::MultiDimInvertedUp90ToFlatQuarterLoop, - TrackElemType::RotationControlToggle, - TrackElemType::FlatTrack1x4A, // TrackElemType::FlatTrack1x4A - TrackElemType::FlatTrack2x2, // TrackElemType::FlatTrack2x2 - TrackElemType::FlatTrack4x4, // TrackElemType::FlatTrack4x4 - TrackElemType::FlatTrack2x4, // TrackElemType::FlatTrack2x4 - TrackElemType::FlatTrack1x5, // TrackElemType::FlatTrack1x5 - TrackElemType::FlatTrack1x1A, // TrackElemType::FlatTrack1x1A - TrackElemType::FlatTrack1x4B, // TrackElemType::FlatTrack1x4B - TrackElemType::FlatTrack1x1B, // TrackElemType::FlatTrack1x1B - TrackElemType::FlatTrack1x4C, // TrackElemType::FlatTrack1x4C - TrackElemType::FlatTrack3x3, // TrackElemType::FlatTrack3x3 - TrackElemType::RightLargeCorkscrewUp, // TrackElemType::LeftLargeCorkscrewUp - TrackElemType::LeftLargeCorkscrewUp, // TrackElemType::RightLargeCorkscrewUp - TrackElemType::RightLargeCorkscrewDown, // TrackElemType::LeftLargeCorkscrewDown - TrackElemType::LeftLargeCorkscrewDown, // TrackElemType::RightLargeCorkscrewDown - TrackElemType::RightMediumHalfLoopUp, // TrackElemType::LeftMediumHalfLoopUp - TrackElemType::LeftMediumHalfLoopUp, // TrackElemType::RightMediumHalfLoopUp - TrackElemType::RightMediumHalfLoopDown, // TrackElemType::LeftMediumHalfLoopDown - TrackElemType::LeftMediumHalfLoopDown, // TrackElemType::RightMediumHalfLoopDown - TrackElemType::RightZeroGRollUp, // TrackElemType::LeftZeroGRollUp - TrackElemType::LeftZeroGRollUp, // TrackElemType::RightZeroGRollUp - TrackElemType::RightZeroGRollDown, // TrackElemType::LeftZeroGRollDown - TrackElemType::LeftZeroGRollDown, // TrackElemType::RightZeroGRollDown - TrackElemType::RightLargeZeroGRollUp, // TrackElemType::LeftLargeZeroGRollUp - TrackElemType::LeftLargeZeroGRollUp, // TrackElemType::RightLargeZeroGRollUp - TrackElemType::RightLargeZeroGRollDown, // TrackElemType::LeftLargeZeroGRollDown - TrackElemType::LeftLargeZeroGRollDown, // TrackElemType::RightLargeZeroGRollDown - TrackElemType::RightFlyerLargeHalfLoopUninvertedUp, // TrackElemType::LeftFlyerLargeHalfLoopUninvertedUp - TrackElemType::LeftFlyerLargeHalfLoopUninvertedUp, // TrackElemType::RightFlyerLargeHalfLoopUninvertedUp - TrackElemType::RightFlyerLargeHalfLoopInvertedDown, // TrackElemType::LeftFlyerLargeHalfLoopInvertedDown - TrackElemType::LeftFlyerLargeHalfLoopInvertedDown, // TrackElemType::RightFlyerLargeHalfLoopInvertedDown - TrackElemType::RightFlyerLargeHalfLoopInvertedUp, // TrackElemType::LeftFlyerLargeHalfLoopInvertedUp - TrackElemType::LeftFlyerLargeHalfLoopInvertedUp, // TrackElemType::RightFlyerLargeHalfLoopInvertedUp - TrackElemType::RightFlyerLargeHalfLoopUninvertedDown, // TrackElemType::LeftFlyerLargeHalfLoopUninvertedDown - TrackElemType::LeftFlyerLargeHalfLoopUninvertedDown, // TrackElemType::RightFlyerLargeHalfLoopUninvertedDown - TrackElemType::FlyerHalfLoopInvertedUp, - TrackElemType::FlyerHalfLoopUninvertedDown, - TrackElemType::RightEighthToDiagUp25, // TrackElemType::LeftEighthToDiagUp25 - TrackElemType::LeftEighthToDiagUp25, // TrackElemType::RightEighthToDiagUp25 - TrackElemType::RightEighthToDiagDown25, // TrackElemType::LeftEighthToDiagDown25 - TrackElemType::LeftEighthToDiagDown25, // TrackElemType::RightEighthToDiagDown25 - TrackElemType::RightEighthToOrthogonalUp25, // TrackElemType::LeftEighthToOrthogonalUp25 - TrackElemType::LeftEighthToOrthogonalUp25, // TrackElemType::RightEighthToOrthogonalUp25 - TrackElemType::RightEighthToOrthogonalDown25, // TrackElemType::LeftEighthToOrthogonalDown25 - TrackElemType::LeftEighthToOrthogonalDown25, // TrackElemType::RightEighthToOrthogonalDown25 - TrackElemType::DiagUp25ToRightBankedUp25, // TrackElemType::DiagUp25ToRightBankedUp25 - TrackElemType::DiagUp25ToLeftBankedUp25, // TrackElemType::DiagUp25ToLeftBankedUp25 - TrackElemType::DiagRightBankedUp25ToUp25, // TrackElemType::DiagRightBankedUp25ToUp25 - TrackElemType::DiagLeftBankedUp25ToUp25, // TrackElemType::DiagLeftBankedUp25ToUp25 - TrackElemType::DiagDown25ToRightBankedDown25, // TrackElemType::DiagDown25ToRightBankedDown25 - TrackElemType::DiagDown25ToLeftBankedDown25, // TrackElemType::DiagDown25ToLeftBankedDown25 - TrackElemType::DiagRightBankedDown25ToDown25, // TrackElemType::DiagRightBankedDown25ToDown25 - TrackElemType::DiagLeftBankedDown25ToDown25, // TrackElemType::DiagLeftBankedDown25ToDown25 - TrackElemType::DiagRightBankedFlatToRightBankedUp25, // TrackElemType::DiagRightBankedFlatToRightBankedUp25 - TrackElemType::DiagLeftBankedFlatToLeftBankedUp25, // TrackElemType::DiagLeftBankedFlatToLeftBankedUp25 - TrackElemType::DiagRightBankedUp25ToRightBankedFlat, // TrackElemType::DiagRightBankedUp25ToRightBankedFlat - TrackElemType::DiagLeftBankedUp25ToLeftBankedFlat, // TrackElemType::DiagLeftBankedUp25ToLeftBankedFlat - TrackElemType::DiagRightBankedFlatToRightBankedDown25,// TrackElemType::DiagRightBankedFlatToRightBankedDown25 - TrackElemType::DiagLeftBankedFlatToLeftBankedDown25, // TrackElemType::DiagLeftBankedFlatToLeftBankedDown25 - TrackElemType::DiagRightBankedDown25ToRightBankedFlat,// TrackElemType::DiagRightBankedDown25ToRightBankedFlat - TrackElemType::DiagLeftBankedDown25ToLeftBankedFlat, // TrackElemType::DiagLeftBankedDown25ToLeftBankedFlat - TrackElemType::DiagFlatToRightBankedUp25, // TrackElemType::DiagFlatToRightBankedUp25 - TrackElemType::DiagFlatToLeftBankedUp25, // TrackElemType::DiagFlatToLeftBankedUp25 - TrackElemType::DiagRightBankedUp25ToFlat, // TrackElemType::DiagRightBankedUp25ToFlat - TrackElemType::DiagLeftBankedUp25ToFlat, // TrackElemType::DiagLeftBankedUp25ToFlat - TrackElemType::DiagFlatToRightBankedDown25, // TrackElemType::DiagFlatToRightBankedDown25 - TrackElemType::DiagFlatToLeftBankedDown25, // TrackElemType::DiagFlatToLeftBankedDown25 - TrackElemType::DiagRightBankedDown25ToFlat, // TrackElemType::DiagRightBankedDown25ToFlat - TrackElemType::DiagLeftBankedDown25ToFlat, // TrackElemType::DiagLeftBankedDown25ToFlat - TrackElemType::DiagUp25RightBanked, // TrackElemType::DiagUp25RightBanked - TrackElemType::DiagUp25LeftBanked, // TrackElemType::DiagUp25LeftBanked - TrackElemType::DiagDown25RightBanked, // TrackElemType::DiagDown25RightBanked - TrackElemType::DiagDown25LeftBanked, // TrackElemType::DiagDown25LeftBanked - TrackElemType::RightEighthBankToDiagUp25, // TrackElemType::RightEighthBankToDiagUp25 - TrackElemType::LeftEighthBankToDiagUp25, // TrackElemType::LeftEighthBankToDiagUp25 - TrackElemType::RightEighthBankToDiagDown25, // TrackElemType::RightEighthBankToDiagDown25 - TrackElemType::LeftEighthBankToDiagDown25, // TrackElemType::LeftEighthBankToDiagDown25 - TrackElemType::RightEighthBankToOrthogonalUp25, // TrackElemType::RightEighthBankToOrthogonalUp25 - TrackElemType::LeftEighthBankToOrthogonalUp25, // TrackElemType::LeftEighthBankToOrthogonalUp25 - TrackElemType::RightEighthBankToOrthogonalDown25, // TrackElemType::RightEighthBankToOrthogonalDown25 - TrackElemType::LeftEighthBankToOrthogonalDown25, // TrackElemType::LeftEighthBankToOrthogonalDown25 - TrackElemType::DiagBrakes, - TrackElemType::DiagBlockBrakes, - }; - static_assert(std::size(TrackElementMirrorMap) == TrackElemType::Count); - - /** rct2: 0x00999694 */ - static constexpr uint32_t TrackHeightMarkerPositions[] = { - (1 << 0), // TrackElemType::Flat - (1 << 0), // TrackElemType::EndStation - (1 << 0), // TrackElemType::BeginStation - (1 << 0), // TrackElemType::MiddleStation - (1 << 0), // TrackElemType::Up25 - (1 << 0), // TrackElemType::Up60 - (1 << 0), // TrackElemType::FlatToUp25 - (1 << 0), // TrackElemType::Up25ToUp60 - (1 << 0), // TrackElemType::Up60ToUp25 - (1 << 0), // TrackElemType::Up25ToFlat - (1 << 0), // TrackElemType::Down25 - (1 << 0), // TrackElemType::Down60 - (1 << 0), // TrackElemType::FlatToDown25 - (1 << 0), // TrackElemType::Down25ToDown60 - (1 << 0), // TrackElemType::Down60ToDown25 - (1 << 0), // TrackElemType::Down25ToFlat - (1 << 0) | (1 << 6), // TrackElemType::LeftQuarterTurn5Tiles - (1 << 0) | (1 << 6), // TrackElemType::RightQuarterTurn5Tiles - (1 << 0), // TrackElemType::FlatToLeftBank - (1 << 0), // TrackElemType::FlatToRightBank - (1 << 0), // TrackElemType::LeftBankToFlat - (1 << 0), // TrackElemType::RightBankToFlat - (1 << 0) | (1 << 6), // TrackElemType::BankedLeftQuarterTurn5Tiles - (1 << 0) | (1 << 6), // TrackElemType::BankedRightQuarterTurn5Tiles - (1 << 0), // TrackElemType::LeftBankToUp25 - (1 << 0), // TrackElemType::RightBankToUp25 - (1 << 0), // TrackElemType::Up25ToLeftBank - (1 << 0), // TrackElemType::Up25ToRightBank - (1 << 0), // TrackElemType::LeftBankToDown25 - (1 << 0), // TrackElemType::RightBankToDown25 - (1 << 0), // TrackElemType::Down25ToLeftBank - (1 << 0), // TrackElemType::Down25ToRightBank - (1 << 0), // TrackElemType::LeftBank - (1 << 0), // TrackElemType::RightBank - (1 << 0) | (1 << 6), // TrackElemType::LeftQuarterTurn5TilesUp25 - (1 << 0) | (1 << 6), // TrackElemType::RightQuarterTurn5TilesUp25 - (1 << 0) | (1 << 6), // TrackElemType::LeftQuarterTurn5TilesDown25 - (1 << 0) | (1 << 6), // TrackElemType::RightQuarterTurn5TilesDown25 - (1 << 0) | (1 << 3), // TrackElemType::SBendLeft - (1 << 0) | (1 << 3), // TrackElemType::SBendRight - (1 << 0) | (1 << 9), // TrackElemType::LeftVerticalLoop - (1 << 0) | (1 << 9), // TrackElemType::RightVerticalLoop - (1 << 0) | (1 << 3), // TrackElemType::LeftQuarterTurn3Tiles - (1 << 0) | (1 << 3), // TrackElemType::RightQuarterTurn3Tiles - (1 << 0) | (1 << 3), // TrackElemType::LeftBankedQuarterTurn3Tiles - (1 << 0) | (1 << 3), // TrackElemType::RightBankedQuarterTurn3Tiles - (1 << 0) | (1 << 3), // TrackElemType::LeftQuarterTurn3TilesUp25 - (1 << 0) | (1 << 3), // TrackElemType::RightQuarterTurn3TilesUp25 - (1 << 0) | (1 << 3), // TrackElemType::LeftQuarterTurn3TilesDown25 - (1 << 0) | (1 << 3), // TrackElemType::RightQuarterTurn3TilesDown25 - (1 << 0), // TrackElemType::LeftQuarterTurn1Tile - (1 << 0), // TrackElemType::RightQuarterTurn1Tile - (1 << 0) | (1 << 2), // TrackElemType::LeftTwistDownToUp - (1 << 0) | (1 << 2), // TrackElemType::RightTwistDownToUp - (1 << 0) | (1 << 2), // TrackElemType::LeftTwistUpToDown - (1 << 0) | (1 << 2), // TrackElemType::RightTwistUpToDown - (1 << 0) | (1 << 3), // TrackElemType::HalfLoopUp - (1 << 0) | (1 << 3), // TrackElemType::HalfLoopDown - (1 << 0) | (1 << 2), // TrackElemType::LeftCorkscrewUp - (1 << 0) | (1 << 2), // TrackElemType::RightCorkscrewUp - (1 << 0) | (1 << 2), // TrackElemType::LeftCorkscrewDown - (1 << 0) | (1 << 2), // TrackElemType::RightCorkscrewDown - (1 << 0), // TrackElemType::FlatToUp60 - (1 << 0), // TrackElemType::Up60ToFlat - (1 << 0), // TrackElemType::FlatToDown60 - (1 << 0), // TrackElemType::Down60ToFlat - (1 << 1) | (1 << 3) | (1 << 6) | (1 << 7), // TrackElemType::TowerBase - (1 << 0), // TrackElemType::TowerSection - (1 << 0), // TrackElemType::FlatCovered - (1 << 0), // TrackElemType::Up25Covered - (1 << 0), // TrackElemType::Up60Covered - (1 << 0), // TrackElemType::FlatToUp25Covered - (1 << 0), // TrackElemType::Up25ToUp60Covered - (1 << 0), // TrackElemType::Up60ToUp25Covered - (1 << 0), // TrackElemType::Up25ToFlatCovered - (1 << 0), // TrackElemType::Down25Covered - (1 << 0), // TrackElemType::Down60Covered - (1 << 0), // TrackElemType::FlatToDown25Covered - (1 << 0), // TrackElemType::Down25ToDown60Covered - (1 << 0), // TrackElemType::Down60ToDown25Covered - (1 << 0), // TrackElemType::Down25ToFlatCovered - (1 << 0) | (1 << 6), // TrackElemType::LeftQuarterTurn5TilesCovered - (1 << 0) | (1 << 6), // TrackElemType::RightQuarterTurn5TilesCovered - (1 << 0) | (1 << 3), // TrackElemType::SBendLeftCovered - (1 << 0) | (1 << 3), // TrackElemType::SBendRightCovered - (1 << 0) | (1 << 3), // TrackElemType::LeftQuarterTurn3TilesCovered - (1 << 0) | (1 << 3), // TrackElemType::RightQuarterTurn3TilesCovered - (1 << 0) | (1 << 7), // TrackElemType::LeftHalfBankedHelixUpSmall - (1 << 0) | (1 << 7), // TrackElemType::RightHalfBankedHelixUpSmall - (1 << 0) | (1 << 7), // TrackElemType::LeftHalfBankedHelixDownSmall - (1 << 0) | (1 << 7), // TrackElemType::RightHalfBankedHelixDownSmall - (1 << 0) | (1 << 13), // TrackElemType::LeftHalfBankedHelixUpLarge - (1 << 0) | (1 << 13), // TrackElemType::RightHalfBankedHelixUpLarge - (1 << 0) | (1 << 13), // TrackElemType::LeftHalfBankedHelixDownLarge - (1 << 0) | (1 << 13), // TrackElemType::RightHalfBankedHelixDownLarge - (1 << 0), // TrackElemType::LeftQuarterTurn1TileUp60 - (1 << 0), // TrackElemType::RightQuarterTurn1TileUp60 - (1 << 0), // TrackElemType::LeftQuarterTurn1TileDown60 - (1 << 0), // TrackElemType::RightQuarterTurn1TileDown60 - (1 << 0), // TrackElemType::Brakes - (1 << 0), // TrackElemType::Booster - (1 << 0) | (1 << 1) | (1 << 2) | (1 << 3) | (1 << 4) | (1 << 5) | (1 << 6) | (1 << 7) | (1 << 8) | (1 << 9) | (1 << 10) | (1 << 11) | (1 << 12) | (1 << 13) | (1 << 14) | (1 << 15), // Maze - (1 << 0) | (1 << 6), // TrackElemType::LeftQuarterBankedHelixLargeUp - (1 << 0) | (1 << 6), // TrackElemType::RightQuarterBankedHelixLargeUp - (1 << 0) | (1 << 6), // TrackElemType::LeftQuarterBankedHelixLargeDown - (1 << 0) | (1 << 6), // TrackElemType::RightQuarterBankedHelixLargeDown - (1 << 0) | (1 << 6), // TrackElemType::LeftQuarterHelixLargeUp - (1 << 0) | (1 << 6), // TrackElemType::RightQuarterHelixLargeUp - (1 << 0) | (1 << 6), // TrackElemType::LeftQuarterHelixLargeDown - (1 << 0) | (1 << 6), // TrackElemType::RightQuarterHelixLargeDown - (1 << 0), // TrackElemType::Up25LeftBanked - (1 << 0) | (1 << 3) | (1 << 12) | (1 << 15), // TrackElemType::Up25RightBanked - (1 << 0), // TrackElemType::Waterfall - (1 << 0), // TrackElemType::Rapids - (1 << 0), // TrackElemType::OnRidePhoto - (1 << 0) | (1 << 7), // TrackElemType::Down25LeftBanked - (1 << 0), // TrackElemType::Down25RightBanked - (1 << 0) | (1 << 4), // TrackElemType::Watersplash - (1 << 0) | (1 << 3), // TrackElemType::FlatToUp60LongBase - (1 << 0) | (1 << 3), // TrackElemType::Up60ToFlatLongBase - (1 << 0), // TrackElemType::Whirlpool - (1 << 0) | (1 << 3), // TrackElemType::Down60ToFlatLongBase - (1 << 0) | (1 << 3), // TrackElemType::FlatToUp60LongBase - (1 << 0) | (1 << 3), // TrackElemType::CableLiftHill - (1 << 0) | (1 << 5), // TrackElemType::ReverseFreefallSlope - (1 << 0), // TrackElemType::ReverseFreefallVertical - (1 << 0), // TrackElemType::Up90 - (1 << 0), // TrackElemType::Down90 - (1 << 0), // TrackElemType::Up60ToUp90 - (1 << 0), // TrackElemType::Down90ToDown60 - (1 << 0), // TrackElemType::Up90ToUp60 - (1 << 0), // TrackElemType::Down60ToDown90 - (1 << 0), // TrackElemType::BrakeForDrop - (1 << 0) | (1 << 4), // TrackElemType::LeftEighthToDiag - (1 << 0) | (1 << 4), // TrackElemType::RightEighthToDiag - (1 << 0) | (1 << 4), // TrackElemType::LeftEighthToOrthogonal - (1 << 0) | (1 << 4), // TrackElemType::RightEighthToOrthogonal - (1 << 0) | (1 << 4), // TrackElemType::LeftEighthBankToDiag - (1 << 0) | (1 << 4), // TrackElemType::RightEighthBankToDiag - (1 << 0) | (1 << 4), // TrackElemType::LeftEighthBankToOrthogonal - (1 << 0) | (1 << 4), // TrackElemType::RightEighthBankToOrthogonal - (1 << 0), // TrackElemType::DiagFlat - (1 << 0), // TrackElemType::DiagUp25 - (1 << 0), // TrackElemType::DiagUp60 - (1 << 0), // TrackElemType::DiagFlatToUp25 - (1 << 0), // TrackElemType::DiagUp25ToUp60 - (1 << 0), // TrackElemType::DiagUp60ToUp25 - (1 << 0), // TrackElemType::DiagUp25ToFlat - (1 << 3), // TrackElemType::DiagDown25 - (1 << 3), // TrackElemType::DiagDown60 - (1 << 3), // TrackElemType::DiagFlatToDown25 - (1 << 3), // TrackElemType::DiagDown25ToDown60 - (1 << 3), // TrackElemType::DiagDown60ToDown25 - (1 << 3), // TrackElemType::DiagDown25ToFlat - (1 << 0), // TrackElemType::DiagFlatToUp60 - (1 << 0), // TrackElemType::DiagUp60ToFlat - (1 << 3), // TrackElemType::DiagFlatToDown60 - (1 << 3), // TrackElemType::DiagDown60ToFlat - (1 << 0), // TrackElemType::DiagFlatToLeftBank - (1 << 0), // TrackElemType::DiagFlatToRightBank - (1 << 0), // TrackElemType::DiagLeftBankToFlat - (1 << 0), // TrackElemType::DiagRightBankToFlat - (1 << 0), // TrackElemType::DiagLeftBankToUp25 - (1 << 0), // TrackElemType::DiagRightBankToUp25 - (1 << 0), // TrackElemType::DiagUp25ToLeftBank - (1 << 0), // TrackElemType::DiagUp25ToRightBank - (1 << 3), // TrackElemType::DiagLeftBankToDown25 - (1 << 3), // TrackElemType::DiagRightBankToDown25 - (1 << 3), // TrackElemType::DiagDown25ToLeftBank - (1 << 3), // TrackElemType::DiagDown25ToRightBank - (1 << 0), // TrackElemType::DiagLeftBank - (1 << 0), // TrackElemType::DiagRightBank - (1 << 0), // TrackElemType::LogFlumeReverser - (1 << 0), // TrackElemType::SpinningTunnel - (1 << 0) | (1 << 2), // TrackElemType::LeftBarrelRollUpToDown - (1 << 0) | (1 << 2), // TrackElemType::RightBarrelRollUpToDown - (1 << 0) | (1 << 2), // TrackElemType::LeftBarrelRollDownToUp - (1 << 0) | (1 << 2), // TrackElemType::RightBarrelRollDownToUp - (1 << 0) | (1 << 3), // TrackElemType::LeftBankToLeftQuarterTurn3TilesUp25 - (1 << 0) | (1 << 3), // TrackElemType::RightBankToRightQuarterTurn3TilesUp25 - (1 << 0) | (1 << 3), // TrackElemType::LeftQuarterTurn3TilesDown25ToLeftBank - (1 << 0) | (1 << 3), // TrackElemType::RightQuarterTurn3TilesDown25ToRightBank - (1 << 0), // TrackElemType::PoweredLift - (1 << 0) | (1 << 6), // TrackElemType::LeftLargeHalfLoopUp - (1 << 0) | (1 << 6), // TrackElemType::RightLargeHalfLoopUp - (1 << 0) | (1 << 6), // TrackElemType::LeftLargeHalfLoopDown - (1 << 0) | (1 << 6), // TrackElemType::RightLargeHalfLoopDown - (1 << 0) | (1 << 2), // TrackElemType::LeftFlyerTwistUp - (1 << 0) | (1 << 2), // TrackElemType::RightFlyerTwistUp - (1 << 0) | (1 << 2), // TrackElemType::LeftFlyerTwistDown - (1 << 0) | (1 << 2), // TrackElemType::RightFlyerTwistDown - (1 << 0) | (1 << 3), // TrackElemType::FlyerHalfLoopUninvertedUp - (1 << 0) | (1 << 3), // TrackElemType::FlyerHalfLoopInvertedDown - (1 << 0) | (1 << 2), // TrackElemType::LeftFlyerCorkscrewUp - (1 << 0) | (1 << 2), // TrackElemType::RightFlyerCorkscrewUp - (1 << 0) | (1 << 2), // TrackElemType::LeftFlyerCorkscrewDown - (1 << 0) | (1 << 2), // TrackElemType::RightFlyerCorkscrewDown - (1 << 0) | (1 << 3), // TrackElemType::HeartLineTransferUp - (1 << 0) | (1 << 3), // TrackElemType::HeartLineTransferDown - (1 << 0) | (1 << 5), // TrackElemType::LeftHeartLineRoll - (1 << 0) | (1 << 5), // TrackElemType::RightHeartLineRoll - (1 << 0) | (1 << 1), // TrackElemType::MinigolfHoleA - (1 << 0) | (1 << 1), // TrackElemType::MinigolfHoleB - (1 << 0) | (1 << 1), // TrackElemType::MinigolfHoleC - (1 << 0) | (1 << 2), // TrackElemType::MinigolfHoleD - (1 << 0) | (1 << 2), // TrackElemType::MinigolfHoleE - (1 << 0) | (1 << 2), // TrackElemType::MultiDimInvertedFlatToDown90QuarterLoop - (1 << 0) | (1 << 2), // TrackElemType::Up90ToInvertedFlatQuarterLoop - (1 << 0) | (1 << 2), // TrackElemType::InvertedFlatToDown90QuarterLoop - (1 << 0) | (1 << 3), // TrackElemType::LeftCurvedLiftHill - (1 << 0) | (1 << 3), // TrackElemType::RightCurvedLiftHill - (1 << 0) | (1 << 5), // TrackElemType::LeftReverser - (1 << 0) | (1 << 5), // TrackElemType::RightReverser - (1 << 0) | (1 << 3), // TrackElemType::AirThrustTopCap - (1 << 0), // TrackElemType::AirThrustVerticalDown - (1 << 0) | (1 << 5), // TrackElemType::AirThrustVerticalDownToLevel - (1 << 0), // TrackElemType::BlockBrakes - (1 << 0) | (1 << 3), // TrackElemType::LeftBankedQuarterTurn3TileUp25 - (1 << 0) | (1 << 3), // TrackElemType::RightBankedQuarterTurn3TileUp25 - (1 << 0) | (1 << 3), // TrackElemType::LeftBankedQuarterTurn3TileDown25 - (1 << 0) | (1 << 3), // TrackElemType::RightBankedQuarterTurn3TileDown25 - (1 << 0) | (1 << 6), // TrackElemType::LeftBankedQuarterTurn5TileUp25 - (1 << 0) | (1 << 6), // TrackElemType::RightBankedQuarterTurn5TileUp25 - (1 << 0) | (1 << 6), // TrackElemType::LeftBankedQuarterTurn5TileDown25 - (1 << 0) | (1 << 6), // TrackElemType::RightBankedQuarterTurn5TileDown25 - (1 << 0), // TrackElemType::Up25ToLeftBankedUp25 - (1 << 0), // TrackElemType::Up25ToRightBankedUp25 - (1 << 0), // TrackElemType::LeftBankedUp25ToUp25 - (1 << 0), // TrackElemType::RightBankedUp25ToUp25 - (1 << 0), // TrackElemType::Down25ToLeftBankedDown25 - (1 << 0), // TrackElemType::Down25ToRightBankedDown25 - (1 << 0), // TrackElemType::LeftBankedDown25ToDown25 - (1 << 0), // TrackElemType::RightBankedDown25ToDown25 - (1 << 0), // TrackElemType::LeftBankedFlatToLeftBankedUp25 - (1 << 0), // TrackElemType::RightBankedFlatToRightBankedUp25 - (1 << 0), // TrackElemType::LeftBankedUp25ToLeftBankedFlat - (1 << 0), // TrackElemType::RightBankedUp25ToRightBankedFlat - (1 << 0), // TrackElemType::LeftBankedFlatToLeftBankedDown25 - (1 << 0), // TrackElemType::RightBankedFlatToRightBankedDown25 - (1 << 0), // TrackElemType::LeftBankedDown25ToLeftBankedFlat - (1 << 0), // TrackElemType::RightBankedDown25ToRightBankedFlat - (1 << 0), // TrackElemType::FlatToLeftBankedUp25 - (1 << 0), // TrackElemType::FlatToRightBankedUp25 - (1 << 0), // TrackElemType::LeftBankedUp25ToFlat - (1 << 0), // TrackElemType::RightBankedUp25ToFlat - (1 << 0), // TrackElemType::FlatToLeftBankedDown25 - (1 << 0), // TrackElemType::FlatToRightBankedDown25 - (1 << 0), // TrackElemType::LeftBankedDown25ToFlat - (1 << 0), // TrackElemType::RightBankedDown25ToFlat - (1 << 0), // TrackElemType::LeftQuarterTurn1TileUp90 - (1 << 0), // TrackElemType::RightQuarterTurn1TileUp90 - (1 << 0), // TrackElemType::LeftQuarterTurn1TileDown90 - (1 << 0), // TrackElemType::RightQuarterTurn1TileDown90 - (1 << 0) | (1 << 2), // TrackElemType::MultiDimUp90ToInvertedFlatQuarterLoop - (1 << 0) | (1 << 2), // TrackElemType::MultiDimFlatToDown90QuarterLoop - (1 << 0) | (1 << 2), // TrackElemType::MultiDimInvertedUp90ToFlatQuarterLoop - (1 << 0), // TrackElemType::RotationControlToggle - (1 << 0), // TrackElemType::FlatTrack1x4A - (1 << 0), // TrackElemType::FlatTrack2x2 - (1 << 0), // TrackElemType::FlatTrack4x4 - (1 << 0), // TrackElemType::FlatTrack2x4 - (1 << 0), // TrackElemType::FlatTrack1x5 - (1 << 0), // TrackElemType::FlatTrack1x1A - (1 << 0), // TrackElemType::FlatTrack1x4B - (1 << 0), // TrackElemType::FlatTrack1x1B - (1 << 0), // TrackElemType::FlatTrack1x4C - (1 << 0), // TrackElemType::FlatTrack3x3 - (1 << 0) | (1 << 5), // TrackElemType::LeftLargeCorkscrewUp - (1 << 0) | (1 << 5), // TrackElemType::RightLargeCorkscrewUp - (1 << 0) | (1 << 5), // TrackElemType::LeftLargeCorkscrewDown - (1 << 0) | (1 << 5), // TrackElemType::RightLargeCorkscrewDown - (1 << 0) | (1 << 4), // TrackElemType::LeftMediumHalfLoopUp - (1 << 0) | (1 << 4), // TrackElemType::RightMediumHalfLoopUp - (1 << 0) | (1 << 4), // TrackElemType::LeftMediumHalfLoopDown - (1 << 0) | (1 << 4), // TrackElemType::RightMediumHalfLoopDown - (1 << 0) | (1 << 2), // TrackElemType::LeftZeroGRollUp - (1 << 0) | (1 << 2), // TrackElemType::RightZeroGRollUp - (1 << 0) | (1 << 2), // TrackElemType::LeftZeroGRollDown - (1 << 0) | (1 << 2), // TrackElemType::RightZeroGRollDown - (1 << 0) | (1 << 3), // TrackElemType::LeftLargeZeroGRollUp - (1 << 0) | (1 << 3), // TrackElemType::RightLargeZeroGRollUp - (1 << 0) | (1 << 3), // TrackElemType::LeftLargeZeroGRollDown - (1 << 0) | (1 << 3), // TrackElemType::RightLargeZeroGRollDown - (1 << 0) | (1 << 6), // TrackElemType::LeftFlyerLargeHalfLoopUninvertedUp - (1 << 0) | (1 << 6), // TrackElemType::RightFlyerLargeHalfLoopUninvertedUp - (1 << 0) | (1 << 6), // TrackElemType::LeftFlyerLargeHalfLoopInvertedDown - (1 << 0) | (1 << 6), // TrackElemType::RightFlyerLargeHalfLoopInvertedDown - (1 << 0) | (1 << 6), // TrackElemType::LeftFlyerLargeHalfLoopInvertedUp - (1 << 0) | (1 << 6), // TrackElemType::RightFlyerLargeHalfLoopInvertedUp - (1 << 0) | (1 << 6), // TrackElemType::LeftFlyerLargeHalfLoopUninvertedDown - (1 << 0) | (1 << 6), // TrackElemType::RightFlyerLargeHalfLoopUninvertedDown - (1 << 0) | (1 << 3), // TrackElemType::FlyerHalfLoopInvertedUp - (1 << 0) | (1 << 3), // TrackElemType::FlyerHalfLoopUninvertedDown - (1 << 0) | (1 << 4), // TrackElemType::LeftEighthToDiagUp25 - (1 << 0) | (1 << 4), // TrackElemType::RightEighthToDiagUp25 - (1 << 0) | (1 << 4), // TrackElemType::LeftEighthToDiagDown25 - (1 << 0) | (1 << 4), // TrackElemType::RightEighthToDiagDown25 - (1 << 0) | (1 << 4), // TrackElemType::LeftEighthToOrthogonalUp25 - (1 << 0) | (1 << 4), // TrackElemType::RightEighthToOrthogonalUp25 - (1 << 0) | (1 << 4), // TrackElemType::LeftEighthToOrthogonalDown25 - (1 << 0) | (1 << 4), // TrackElemType::RightEighthToOrthogonalDown25 - (1 << 0), // TrackElemType::DiagUp25ToRightBankedUp25 - (1 << 0), // TrackElemType::DiagUp25ToLeftBankedUp25 - (1 << 0), // TrackElemType::DiagRightBankedUp25ToUp25 - (1 << 0), // TrackElemType::DiagLeftBankedUp25ToUp25 - (1 << 0), // TrackElemType::DiagDown25ToRightBankedDown25 - (1 << 0), // TrackElemType::DiagDown25ToLeftBankedDown25 - (1 << 0), // TrackElemType::DiagRightBankedDown25ToDown25 - (1 << 0), // TrackElemType::DiagLeftBankedDown25ToDown25 - (1 << 0), // TrackElemType::DiagRightBankedFlatToRightBankedUp25 - (1 << 0), // TrackElemType::DiagLeftBankedFlatToLeftBankedUp25 - (1 << 0), // TrackElemType::DiagRightBankedUp25ToRightBankedFlat - (1 << 0), // TrackElemType::DiagLeftBankedUp25ToLeftBankedFlat - (1 << 0), // TrackElemType::DiagRightBankedFlatToRightBankedDown25 - (1 << 0), // TrackElemType::DiagLeftBankedFlatToLeftBankedDown25 - (1 << 0), // TrackElemType::DiagRightBankedDown25ToRightBankedFlat - (1 << 0), // TrackElemType::DiagLeftBankedDown25ToLeftBankedFlat - (1 << 0), // TrackElemType::DiagFlatToRightBankedUp25 - (1 << 0), // TrackElemType::DiagFlatToLeftBankedUp25 - (1 << 0), // TrackElemType::DiagRightBankedUp25ToFlat - (1 << 0), // TrackElemType::DiagLeftBankedUp25ToFlat - (1 << 0), // TrackElemType::DiagFlatToRightBankedDown25 - (1 << 0), // TrackElemType::DiagFlatToLeftBankedDown25 - (1 << 0), // TrackElemType::DiagRightBankedDown25ToFlat - (1 << 0), // TrackElemType::DiagLeftBankedDown25ToFlat - (1 << 0), // TrackElemType::DiagUp25RightBanked - (1 << 0), // TrackElemType::DiagUp25LeftBanked - (1 << 0), // TrackElemType::DiagDown25RightBanked - (1 << 0), // TrackElemType::DiagDown25LeftBanked - (1 << 0) | (1 << 4), // TrackElemType::RightEighthBankToDiagUp25 - (1 << 0) | (1 << 4), // TrackElemType::LeftEighthBankToDiagUp25 - (1 << 0) | (1 << 4), // TrackElemType::RightEighthBankToDiagDown25 - (1 << 0) | (1 << 4), // TrackElemType::LeftEighthBankToDiagDown25 - (1 << 0) | (1 << 4), // TrackElemType::RightEighthBankToOrthogonalUp25 - (1 << 0) | (1 << 4), // TrackElemType::LeftEighthBankToOrthogonalUp25 - (1 << 0) | (1 << 4), // TrackElemType::RightEighthBankToOrthogonalDown25 - (1 << 0) | (1 << 4), // TrackElemType::LeftEighthBankToOrthogonalDown25 - (1 << 0), // TrackElemType::DiagBrakes - (1 << 0), // TrackElemType::DiagBlockBrakes - }; - static_assert(std::size(TrackHeightMarkerPositions) == TrackElemType::Count); - - /** rct2: 0x00999A94 */ - static constexpr uint8_t TrackSequenceElementAllowedWallEdges[][kMaxSequencesPerPiece] = { - { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Flat - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::EndStation - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::BeginStation - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::MiddleStation - { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Up25 - { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Up60 - { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlatToUp25 - { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Up25ToUp60 - { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Up60ToUp25 - { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Up25ToFlat - { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Down25 - { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Down60 - { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlatToDown25 - { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Down25ToDown60 - { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Down60ToDown25 - { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Down25ToFlat - { 0b0010, 0b1100, 0b0011, 0, 0b1100, 0b0011, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftQuarterTurn5Tiles - { 0b1000, 0b0110, 0b1001, 0, 0b0110, 0b1001, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightQuarterTurn5Tiles - { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlatToLeftBank - { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlatToRightBank - { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftBankToFlat - { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightBankToFlat - { 0b0010, 0b1100, 0b0011, 0, 0b1100, 0b0011, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::BankedLeftQuarterTurn5Tiles - { 0b1000, 0b0110, 0b1001, 0, 0b0110, 0b1001, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::BankedRightQuarterTurn5Tiles - { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftBankToUp25 - { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightBankToUp25 - { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Up25ToLeftBank - { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Up25ToRightBank - { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftBankToDown25 - { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightBankToDown25 - { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Down25ToLeftBank - { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Down25ToRightBank - { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftBank - { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightBank - { 0b0010, 0b1100, 0b0011, 0, 0b1100, 0b0011, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftQuarterTurn5TilesUp25 - { 0b1000, 0b0110, 0b1001, 0, 0b0110, 0b1001, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightQuarterTurn5TilesUp25 - { 0b0010, 0b1100, 0b0011, 0, 0b1100, 0b0011, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftQuarterTurn5TilesDown25 - { 0b1000, 0b0110, 0b1001, 0, 0b0110, 0b1001, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightQuarterTurn5TilesDown25 - { 0b1010, 0b0011, 0b1100, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::SBendLeft - { 0b1010, 0b1001, 0b0110, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::SBendRight - { 0b0010, 0b0010, 0b0011, 0, 0, 0, 0, 0b1100, 0b1000, 0b1000, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftVerticalLoop - { 0b1000, 0b1000, 0b1001, 0, 0, 0, 0, 0b0110, 0b0010, 0b0010, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightVerticalLoop - { 0b0010, 0b1100, 0b0011, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftQuarterTurn3Tiles - { 0b1000, 0b0110, 0b1001, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightQuarterTurn3Tiles - { 0b0010, 0b1100, 0b0011, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftBankedQuarterTurn3Tiles - { 0b1000, 0b0110, 0b1001, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightBankedQuarterTurn3Tiles - { 0b0010, 0b1100, 0b0011, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftQuarterTurn3TilesUp25 - { 0b1000, 0b0110, 0b1001, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightQuarterTurn3TilesUp25 - { 0b0010, 0b1100, 0b0011, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftQuarterTurn3TilesDown25 - { 0b1000, 0b0110, 0b1001, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightQuarterTurn3TilesDown25 - { 0b0011, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftQuarterTurn1Tile - { 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightQuarterTurn1Tile - { 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftTwistDownToUp - { 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightTwistDownToUp - { 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftTwistUpToDown - { 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightTwistUpToDown - { 0b1010, 0b1010, 0b1011, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::HalfLoopUp - { 0, 0b1011, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::HalfLoopDown - { 0b1010, 0b0011, 0b0101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftCorkscrewUp - { 0b1010, 0b1001, 0b0101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightCorkscrewUp - { 0b1010, 0b0011, 0b0101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftCorkscrewDown - { 0b1010, 0b1001, 0b0101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightCorkscrewDown - { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlatToUp60 - { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Up60ToFlat - { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlatToDown60 - { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Down60ToFlat - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::TowerBase - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::TowerSection - { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlatCovered - { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Up25Covered - { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Up60Covered - { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlatToUp25Covered - { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Up25ToUp60Covered - { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Up60ToUp25Covered - { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Up25ToFlatCovered - { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Down25Covered - { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Down60Covered - { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlatToDown25Covered - { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Down25ToDown60Covered - { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Down60ToDown25Covered - { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Down25ToFlatCovered - { 0b0010, 0b1100, 0b0011, 0, 0b1100, 0b0011, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftQuarterTurn5TilesCovered - { 0b1000, 0b0110, 0b1001, 0, 0b0110, 0b1001, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightQuarterTurn5TilesCovered - { 0b1010, 0b0011, 0b1100, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::SBendLeftCovered - { 0b1010, 0b1001, 0b0110, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::SBendRightCovered - { 0b0010, 0b1100, 0b0011, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftQuarterTurn3TilesCovered - { 0b1000, 0b0110, 0b1001, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightQuarterTurn3TilesCovered - { 0b0010, 0b1100, 0b0011, 0b0001, 0b0001, 0b0110, 0b1001, 0b1000, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftHalfBankedHelixUpSmall - { 0b1000, 0b0110, 0b1001, 0b0001, 0b0001, 0b1100, 0b0011, 0b0010, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightHalfBankedHelixUpSmall - { 0b0010, 0b1100, 0b0011, 0b0001, 0b0001, 0b0110, 0b1001, 0b1000, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftHalfBankedHelixDownSmall - { 0b1000, 0b0110, 0b1001, 0b0001, 0b0001, 0b1100, 0b0011, 0b0010, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightHalfBankedHelixDownSmall - { 0b0010, 0b1100, 0b0011, 0, 0b1100, 0b0011, 0b0001, 0b0001, 0b0110, 0b1001, 0, 0b0110, 0b1001, 0b1000, 0, 0 }, // TrackElemType::LeftHalfBankedHelixUpLarge - { 0b1000, 0b0110, 0b1001, 0, 0b0110, 0b1001, 0b0001, 0b0001, 0b1100, 0b0011, 0, 0b1100, 0b0011, 0b0010, 0, 0 }, // TrackElemType::RightHalfBankedHelixUpLarge - { 0b0010, 0b1100, 0b0011, 0, 0b1100, 0b0011, 0b0001, 0b0001, 0b0110, 0b1001, 0, 0b0110, 0b1001, 0b1000, 0, 0 }, // TrackElemType::LeftHalfBankedHelixDownLarge - { 0b1000, 0b0110, 0b1001, 0, 0b0110, 0b1001, 0b0001, 0b0001, 0b1100, 0b0011, 0, 0b1100, 0b0011, 0b0010, 0, 0 }, // TrackElemType::RightHalfBankedHelixDownLarge - { 0b0011, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftQuarterTurn1TileUp60 - { 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightQuarterTurn1TileUp60 - { 0b0011, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftQuarterTurn1TileDown60 - { 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightQuarterTurn1TileDown60 - { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Brakes - { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Booster - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::InvertedUp90ToFlatQuarterLoopAlias / Maze - { 0b0010, 0b1100, 0b0011, 0, 0b1100, 0b0011, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftQuarterBankedHelixLargeUp - { 0b1000, 0b0110, 0b1001, 0, 0b0110, 0b1001, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightQuarterBankedHelixLargeUp - { 0b0010, 0b1100, 0b0011, 0, 0b1100, 0b0011, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftQuarterBankedHelixLargeDown - { 0b1000, 0b0110, 0b1001, 0, 0b0110, 0b1001, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightQuarterBankedHelixLargeDown - { 0b0010, 0b1100, 0b0011, 0, 0b1100, 0b0011, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftQuarterHelixLargeUp - { 0b1000, 0b0110, 0b1001, 0, 0b0110, 0b1001, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightQuarterHelixLargeUp - { 0b0010, 0b1100, 0b0011, 0, 0b1100, 0b0011, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftQuarterHelixLargeDown - { 0b1000, 0b0110, 0b1001, 0, 0b0110, 0b1001, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightQuarterHelixLargeDown - { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Up25LeftBanked - { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Up25RightBanked - { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Waterfall - { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Rapids - { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::OnRidePhoto - { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Down25LeftBanked - { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Down25RightBanked - { 0b1010, 0b1010, 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Watersplash - { 0b1010, 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlatToUp60LongBase - { 0b1010, 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Up60ToFlatLongBase - { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Whirlpool - { 0b1010, 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Down60ToFlatLongBase - { 0b1010, 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlatToDown60LongBase - { 0b1010, 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::CableLiftHill - { 0b1010, 0b1010, 0b1010, 0b1010, 0b1010, 0b1011, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::ReverseFreefallSlope - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::ReverseFreefallVertical - { 0b1111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Up90 - { 0b1111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Down90 - { 0b1011, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Up60ToUp90 - { 0b1110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Down90ToDown60 - { 0b1011, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Up90ToUp60 - { 0b1110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Down60ToDown90 - { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::BrakeForDrop - { 0b0010, 0b0010, 0b1000, 0b0011, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftEighthToDiag - { 0b1000, 0b1000, 0b0010, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightEighthToDiag - { 0, 0b1000, 0b0110, 0b0010, 0b0010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftEighthToOrthogonal - { 0, 0b0100, 0b1001, 0b0001, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightEighthToOrthogonal - { 0b0010, 0b0010, 0b1000, 0b0011, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftEighthBankToDiag - { 0b1000, 0b1000, 0b0010, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightEighthBankToDiag - { 0, 0b1000, 0b0110, 0b0010, 0b0010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftEighthBankToOrthogonal - { 0, 0b0100, 0b1001, 0b0001, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightEighthBankToOrthogonal - { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagFlat - { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagUp25 - { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagUp60 - { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagFlatToUp25 - { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagUp25ToUp60 - { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagUp60ToUp25 - { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagUp25ToFlat - { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagDown25 - { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagDown60 - { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagFlatToDown25 - { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagDown25ToDown60 - { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagDown60ToDown25 - { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagDown25ToFlat - { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagFlatToUp60 - { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagUp60ToFlat - { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagFlatToDown60 - { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagDown60ToFlat - { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagFlatToLeftBank - { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagFlatToRightBank - { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagLeftBankToFlat - { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagRightBankToFlat - { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagLeftBankToUp25 - { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagRightBankToUp25 - { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagUp25ToLeftBank - { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagUp25ToRightBank - { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagLeftBankToDown25 - { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagRightBankToDown25 - { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagDown25ToLeftBank - { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagDown25ToRightBank - { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagLeftBank - { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagRightBank - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LogFlumeReverser - { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::SpinningTunnel - { 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftBarrelRollUpToDown - { 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightBarrelRollUpToDown - { 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftBarrelRollDownToUp - { 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightBarrelRollDownToUp - { 0b0010, 0b1100, 0b0011, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftBankToLeftQuarterTurn3TilesUp25 - { 0b1000, 0b0110, 0b1001, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightBankToRightQuarterTurn3TilesUp25 - { 0b0010, 0b1100, 0b0011, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftQuarterTurn3TilesDown25ToLeftBank - { 0b1000, 0b0110, 0b1001, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightQuarterTurn3TilesDown25ToRightBank - { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::PoweredLift - { 0b1010, 0b1010, 0b0010, 0b0011, 0b1001, 0b1000, 0b1000, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftLargeHalfLoopUp - { 0b1010, 0b1010, 0b1000, 0b1001, 0b0011, 0b0010, 0b0010, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightLargeHalfLoopUp - { 0b0010, 0b0010, 0b0011, 0b1001, 0b1000, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftLargeHalfLoopDown - { 0b1000, 0b1000, 0b1001, 0b0011, 0b0010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightLargeHalfLoopDown - { 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftFlyerTwistUp - { 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightFlyerTwistUp - { 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftFlyerTwistDown - { 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightFlyerTwistDown - { 0b1010, 0b1010, 0b1011, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlyerHalfLoopUninvertedUp - { 0, 0b1011, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlyerHalfLoopInvertedDown - { 0b1010, 0b0011, 0b0101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftFlyerCorkscrewUp - { 0b1010, 0b1001, 0b0101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightFlyerCorkscrewUp - { 0b1010, 0b0011, 0b0101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftFlyerCorkscrewDown - { 0b1010, 0b1001, 0b0101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightFlyerCorkscrewDown - { 0b1010, 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::HeartLineTransferUp - { 0b1010, 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::HeartLineTransferDown - { 0b1010, 0b1010, 0b1010, 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftHeartLineRoll - { 0b1010, 0b1010, 0b1010, 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightHeartLineRoll - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::MinigolfHoleA - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::MinigolfHoleB - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::MinigolfHoleC - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::MinigolfHoleD - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::MinigolfHoleE - { 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::MultiDimInvertedFlatToDown90QuarterLoop - { 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Up90ToInvertedFlatQuarterLoop - { 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::InvertedFlatToDown90QuarterLoop - { 0b0010, 0b1100, 0b0011, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftCurvedLiftHill - { 0b1000, 0b0110, 0b1001, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightCurvedLiftHill - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftReverser - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightReverser - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::AirThrustTopCap - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::AirThrustVerticalDown - { 0b1010, 0b1010, 0b1010, 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::AirThrustVerticalDownToLevel - { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::BlockBrakes - { 0b0010, 0b1100, 0b0011, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftBankedQuarterTurn3TileUp25 - { 0b1000, 0b0110, 0b1001, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightBankedQuarterTurn3TileUp25 - { 0b0010, 0b1100, 0b0011, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftBankedQuarterTurn3TileDown25 - { 0b1000, 0b0110, 0b1001, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightBankedQuarterTurn3TileDown25 - { 0b0010, 0b1100, 0b0011, 0, 0b1100, 0b0011, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftBankedQuarterTurn5TileUp25 - { 0b1000, 0b0110, 0b1001, 0, 0b0110, 0b1001, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightBankedQuarterTurn5TileUp25 - { 0b0010, 0b1100, 0b0011, 0, 0b1100, 0b0011, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftBankedQuarterTurn5TileDown25 - { 0b1000, 0b0110, 0b1001, 0, 0b0110, 0b1001, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightBankedQuarterTurn5TileDown25 - { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Up25ToLeftBankedUp25 - { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Up25ToRightBankedUp25 - { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftBankedUp25ToUp25 - { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightBankedUp25ToUp25 - { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Down25ToLeftBankedDown25 - { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Down25ToRightBankedDown25 - { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftBankedDown25ToDown25 - { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightBankedDown25ToDown25 - { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftBankedFlatToLeftBankedUp25 - { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightBankedFlatToRightBankedUp25 - { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftBankedUp25ToLeftBankedFlat - { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightBankedUp25ToRightBankedFlat - { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftBankedFlatToLeftBankedDown25 - { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightBankedFlatToRightBankedDown25 - { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftBankedDown25ToLeftBankedFlat - { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightBankedDown25ToRightBankedFlat - { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlatToLeftBankedUp25 - { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlatToRightBankedUp25 - { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftBankedUp25ToFlat - { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightBankedUp25ToFlat - { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlatToLeftBankedDown25 - { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlatToRightBankedDown25 - { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftBankedDown25ToFlat - { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightBankedDown25ToFlat - { 0b1111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftQuarterTurn1TileUp90 - { 0b1111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightQuarterTurn1TileUp90 - { 0b1111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftQuarterTurn1TileDown90 - { 0b1111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightQuarterTurn1TileDown90 - { 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::MultiDimUp90ToInvertedFlatQuarterLoop - { 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::MultiDimFlatToDown90QuarterLoop - { 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::MultiDimInvertedUp90ToFlatQuarterLoop - { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RotationControlToggle - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlatTrack1x4A - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlatTrack2x2 - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlatTrack4x4 - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlatTrack2x4 - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlatTrack1x5 - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlatTrack1x1A - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlatTrack1x4B - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlatTrack1x1B - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlatTrack1x4C - { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlatTrack3x3 - { 0b1010, 0b0010, 0b0011, 0b1100, 0b0001, 0b0101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftLargeCorkscrewUp - { 0b1010, 0b1000, 0b1001, 0b0110, 0b0001, 0b0101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightLargeCorkscrewUp - { 0b1010, 0b0010, 0b1100, 0b0011, 0b0001, 0b0101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftLargeCorkscrewDown - { 0b1010, 0b1000, 0b0110, 0b1001, 0b0001, 0b0101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightLargeCorkscrewDown - { 0b1010, 0b0010, 0b0011, 0b1001, 0b1000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftMediumHalfLoopUp - { 0b1010, 0b1000, 0b1001, 0b0011, 0b0010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightMediumHalfLoopUp - { 0b0010, 0b0011, 0b1001, 0b1000, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftMediumHalfLoopDown - { 0b1000, 0b1001, 0b0011, 0b0010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightMediumHalfLoopDown - { 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftZeroGRollUp - { 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightZeroGRollUp - { 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftZeroGRollDown - { 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightZeroGRollDown - { 0b1010, 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftLargeZeroGRollUp - { 0b1010, 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightLargeZeroGRollUp - { 0b1010, 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftLargeZeroGRollDown - { 0b1010, 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightLargeZeroGRollDown - - { 0b1010, 0b1010, 0b0010, 0b0011, 0b1001, 0b1000, 0b1000, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftFlyerLargeHalfLoopUninvertedUp - { 0b1010, 0b1010, 0b1000, 0b1001, 0b0011, 0b0010, 0b0010, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightFlyerLargeHalfLoopUninvertedUp - { 0b0010, 0b0010, 0b0011, 0b1001, 0b1000, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftFlyerLargeHalfLoopInvertedDown - { 0b1000, 0b1000, 0b1001, 0b0011, 0b0010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightFlyerLargeHalfLoopInvertedDown - { 0b1010, 0b1010, 0b0010, 0b0011, 0b1001, 0b1000, 0b1000, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftFlyerLargeHalfLoopInvertedUp - { 0b1010, 0b1010, 0b1000, 0b1001, 0b0011, 0b0010, 0b0010, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightFlyerLargeHalfLoopInvertedUp - { 0b0010, 0b0010, 0b0011, 0b1001, 0b1000, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftFlyerLargeHalfLoopUninvertedDown - { 0b1000, 0b1000, 0b1001, 0b0011, 0b0010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightFlyerLargeHalfLoopUninvertedDown - { 0b1010, 0b1010, 0b1011, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlyerHalfLoopInvertedUp - { 0, 0b1011, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlyerHalfLoopUninvertedDown - { 0b0010, 0b0010, 0b1000, 0b0011, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftEighthToDiagUp25 - { 0b1000, 0b1000, 0b0010, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightEighthToDiagUp25 - { 0b0010, 0b0010, 0b1000, 0b0011, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftEighthToDiagDown25 - { 0b1000, 0b1000, 0b0010, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightEighthToDiagDown25 - { 0, 0b1000, 0b0110, 0b0010, 0b0010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftEighthToOrthogonalUp25 - { 0, 0b0100, 0b1001, 0b0001, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightEighthToOrthogonalUp25 - { 0, 0b1000, 0b0110, 0b0010, 0b0010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftEighthToOrthogonalDown25 - { 0, 0b0100, 0b1001, 0b0001, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightEighthToOrthogonalDown25 - { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagUp25ToLeftBankedUp25 - { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagUp25ToRightBankedUp25 - { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagLeftBankedUp25ToUp25 - { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagRightBankedUp25ToUp25 - { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagDown25ToLeftBankedDown25 - { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagDown25ToRightBankedDown25 - { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagLeftBankedDown25ToDown25 - { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagRightBankedDown25ToDown25 - { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagLeftBankedFlatToLeftBankedUp25 - { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagRightBankedFlatToRightBankedUp25 - { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagLeftBankedUp25ToLeftBankedFlat - { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagRightBankedUp25ToRightBankedFlat - { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagLeftBankedFlatToLeftBankedDown25 - { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagRightBankedFlatToRightBankedDown25 - { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagLeftBankedDown25ToLeftBankedFlat - { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagRightBankedDown25ToRightBankedFlat - { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagFlatToLeftBankedUp25 - { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagFlatToRightBankedUp25 - { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagLeftBankedUp25ToFlat - { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagRightBankedUp25ToFlat - { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagFlatToLeftBankedDown25 - { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagFlatToRightBankedDown25 - { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagLeftBankedDown25ToFlat - { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagRightBankedDown25ToFlat - { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagUp25LeftBanked - { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagUp25RightBanked - { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagDown25LeftBanked - { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagDown25RightBanked - { 0b0010, 0b0010, 0b1000, 0b0011, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftEighthBankToDiagUp25 - { 0b1000, 0b1000, 0b0010, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightEighthBankToDiagUp25 - { 0b0010, 0b0010, 0b1000, 0b0011, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftEighthBankToDiagDown25 - { 0b1000, 0b1000, 0b0010, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightEighthBankToDiagDown25 - { 0, 0b1000, 0b0110, 0b0010, 0b0010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftEighthBankToOrthogonalUp25 - { 0, 0b0100, 0b1001, 0b0001, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightEighthBankToOrthogonalUp25 - { 0, 0b1000, 0b0110, 0b0010, 0b0010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftEighthBankToOrthogonalDown25 - { 0, 0b0100, 0b1001, 0b0001, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightEighthBankToOrthogonalDown25 - { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagBrakes - { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagBlockBrakes - }; - - - - static_assert(std::size(TrackSequenceElementAllowedWallEdges) == TrackElemType::Count); - - /** rct2: 0x0099423C */ - static constexpr uint32_t TrackFlags[] = { - /* TrackElemType::Flat */ TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::EndStation */ 0, - /* TrackElemType::BeginStation */ 0, - /* TrackElemType::MiddleStation */ 0, - /* TrackElemType::Up25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::Up60 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_IS_STEEP_UP | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::FlatToUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::Up25ToUp60 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_IS_STEEP_UP | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::Up60ToUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_IS_STEEP_UP | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::Up25ToFlat */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::Down25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::Down60 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::FlatToDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::Down25ToDown60 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::Down60ToDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::Down25ToFlat */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::LeftQuarterTurn5Tiles */ TRACK_ELEM_FLAG_TURN_LEFT, - /* TrackElemType::RightQuarterTurn5Tiles */ TRACK_ELEM_FLAG_TURN_RIGHT, - /* TrackElemType::FlatToLeftBank */ TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::FlatToRightBank */ TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::LeftBankToFlat */ TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::RightBankToFlat */ TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::BankedLeftQuarterTurn5Tiles */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_BANKED | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::BankedRightQuarterTurn5Tiles */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_BANKED | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::LeftBankToUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::RightBankToUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::Up25ToLeftBank */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::Up25ToRightBank */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::LeftBankToDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::RightBankToDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::Down25ToLeftBank */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::Down25ToRightBank */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::LeftBank */ TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::RightBank */ TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::LeftQuarterTurn5TilesUp25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, - /* TrackElemType::RightQuarterTurn5TilesUp25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, - /* TrackElemType::LeftQuarterTurn5TilesDown25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, - /* TrackElemType::RightQuarterTurn5TilesDown25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, - /* TrackElemType::SBendLeft */ 0, - /* TrackElemType::SBendRight */ 0, - /* TrackElemType::LeftVerticalLoop */ TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::RightVerticalLoop */ TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::LeftQuarterTurn3Tiles */ TRACK_ELEM_FLAG_TURN_LEFT, - /* TrackElemType::RightQuarterTurn3Tiles */ TRACK_ELEM_FLAG_TURN_RIGHT, - /* TrackElemType::LeftBankedQuarterTurn3Tiles */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_BANKED | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::RightBankedQuarterTurn3Tiles */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_BANKED | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::LeftQuarterTurn3TilesUp25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, - /* TrackElemType::RightQuarterTurn3TilesUp25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, - /* TrackElemType::LeftQuarterTurn3TilesDown25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, - /* TrackElemType::RightQuarterTurn3TilesDown25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, - /* TrackElemType::LeftQuarterTurn1Tile */ TRACK_ELEM_FLAG_TURN_LEFT, - /* TrackElemType::RightQuarterTurn1Tile */ TRACK_ELEM_FLAG_TURN_RIGHT, - /* TrackElemType::LeftTwistDownToUp */ TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::RightTwistDownToUp */ TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::LeftTwistUpToDown */ TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::RightTwistUpToDown */ TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::HalfLoopUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::HalfLoopDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::LeftCorkscrewUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::RightCorkscrewUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::LeftCorkscrewDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::RightCorkscrewDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::FlatToUp60 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_IS_STEEP_UP | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::Up60ToFlat */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_IS_STEEP_UP | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::FlatToDown60 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::Down60ToFlat */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::TowerBase */ 0, - /* TrackElemType::TowerSection */ 0, - /* TrackElemType::FlatCovered */ 0, - /* TrackElemType::Up25Covered */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::Up60Covered */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::FlatToUp25Covered */ TRACK_ELEM_FLAG_UP, - /* TrackElemType::Up25ToUp60Covered */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::Up60ToUp25Covered */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::Up25ToFlatCovered */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::Down25Covered */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::Down60Covered */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::FlatToDown25Covered */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::Down25ToDown60Covered */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::Down60ToDown25Covered */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::Down25ToFlatCovered */ TRACK_ELEM_FLAG_DOWN, - /* TrackElemType::LeftQuarterTurn5TilesCovered */ TRACK_ELEM_FLAG_TURN_LEFT, - /* TrackElemType::RightQuarterTurn5TilesCovered */ TRACK_ELEM_FLAG_TURN_RIGHT, - /* TrackElemType::SBendLeftCovered */ 0, - /* TrackElemType::SBendRightCovered */ 0, - /* TrackElemType::LeftQuarterTurn3TilesCovered */ TRACK_ELEM_FLAG_TURN_LEFT, - /* TrackElemType::RightQuarterTurn3TilesCovered */ TRACK_ELEM_FLAG_TURN_RIGHT, - /* TrackElemType::LeftHalfBankedHelixUpSmall */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::RightHalfBankedHelixUpSmall */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::LeftHalfBankedHelixDownSmall */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::RightHalfBankedHelixDownSmall */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::LeftHalfBankedHelixUpLarge */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::RightHalfBankedHelixUpLarge */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::LeftHalfBankedHelixDownLarge */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::RightHalfBankedHelixDownLarge */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::LeftQuarterTurn1TileUp60 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::RightQuarterTurn1TileUp60 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::LeftQuarterTurn1TileDown60 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::RightQuarterTurn1TileDown60 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::Brakes */ 0, - /* TrackElemType::Booster */ 0, - /* TrackElemType::InvertedUp90ToFlatQuarterLoopAlias / Maze */ TRACK_ELEM_FLAG_ONLY_ABOVE_GROUND, - /* TrackElemType::LeftQuarterBankedHelixLargeUp */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::RightQuarterBankedHelixLargeUp */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::LeftQuarterBankedHelixLargeDown */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::RightQuarterBankedHelixLargeDown */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::LeftQuarterHelixLargeUp */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_HELIX, - /* TrackElemType::RightQuarterHelixLargeUp */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_HELIX, - /* TrackElemType::LeftQuarterHelixLargeDown */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_HELIX, - /* TrackElemType::RightQuarterHelixLargeDown */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_HELIX, - /* TrackElemType::Up25LeftBanked */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::Up25RightBanked */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::Waterfall */ 0, - /* TrackElemType::Rapids */ 0, - /* TrackElemType::OnRidePhoto */ 0, - /* TrackElemType::Down25LeftBanked */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::Down25RightBanked */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::Watersplash */ 0, - /* TrackElemType::FlatToUp60LongBase */ TRACK_ELEM_FLAG_UP, - /* TrackElemType::Up60ToFlatLongBase */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::Whirlpool */ 0, - /* TrackElemType::Down60ToFlatLongBase */ TRACK_ELEM_FLAG_DOWN, - /* TrackElemType::FlatToDown60LongBase */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::CableLiftHill */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::ReverseFreefallSlope */ TRACK_ELEM_FLAG_UP, - /* TrackElemType::ReverseFreefallVertical */ TRACK_ELEM_FLAG_UP, - /* TrackElemType::Up90 */ TRACK_ELEM_FLAG_UP, - /* TrackElemType::Down90 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::Up60ToUp90 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::Down90ToDown60 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::Up90ToUp60 */ TRACK_ELEM_FLAG_UP, - /* TrackElemType::Down60ToDown90 */ TRACK_ELEM_FLAG_DOWN, - /* TrackElemType::BrakeForDrop */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::LeftEighthToDiag */ TRACK_ELEM_FLAG_TURN_LEFT, - /* TrackElemType::RightEighthToDiag */ TRACK_ELEM_FLAG_TURN_RIGHT, - /* TrackElemType::LeftEighthToOrthogonal */ TRACK_ELEM_FLAG_TURN_LEFT, - /* TrackElemType::RightEighthToOrthogonal */ TRACK_ELEM_FLAG_TURN_RIGHT, - /* TrackElemType::LeftEighthBankToDiag */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_BANKED | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::RightEighthBankToDiag */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_BANKED | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::LeftEighthBankToOrthogonal */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_BANKED | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::RightEighthBankToOrthogonal */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_BANKED | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::DiagFlat */ TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::DiagUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::DiagUp60 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_IS_STEEP_UP | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::DiagFlatToUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::DiagUp25ToUp60 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_IS_STEEP_UP | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::DiagUp60ToUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_IS_STEEP_UP | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::DiagUp25ToFlat */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::DiagDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::DiagDown60 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::DiagFlatToDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::DiagDown25ToDown60 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::DiagDown60ToDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::DiagDown25ToFlat */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::DiagFlatToUp60 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_IS_STEEP_UP | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::DiagUp60ToFlat */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_IS_STEEP_UP | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::DiagFlatToDown60 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::DiagDown60ToFlat */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, - /* TrackElemType::DiagFlatToLeftBank */ TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::DiagFlatToRightBank */ TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::DiagLeftBankToFlat */ TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::DiagRightBankToFlat */ TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::DiagLeftBankToUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::DiagRightBankToUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::DiagUp25ToLeftBank */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::DiagUp25ToRightBank */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::DiagLeftBankToDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::DiagRightBankToDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::DiagDown25ToLeftBank */ TRACK_ELEM_FLAG_DOWN, - /* TrackElemType::DiagDown25ToRightBank */ TRACK_ELEM_FLAG_DOWN, - /* TrackElemType::DiagLeftBank */ TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::DiagRightBank */ TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::LogFlumeReverser */ TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::SpinningTunnel */ TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::LeftBarrelRollUpToDown */ TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::RightBarrelRollUpToDown */ TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::LeftBarrelRollDownToUp */ TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::RightBarrelRollDownToUp */ TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::LeftBankToLeftQuarterTurn3TilesUp25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::RightBankToRightQuarterTurn3TilesUp25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::LeftQuarterTurn3TilesDown25ToLeftBank */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::RightQuarterTurn3TilesDown25ToRightBank */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::PoweredLift */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::LeftLargeHalfLoopUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::RightLargeHalfLoopUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::LeftLargeHalfLoopDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::RightLargeHalfLoopDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::LeftFlyerTwistUp */ TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::RightFlyerTwistUp */ TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::LeftFlyerTwistDown */ TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::RightFlyerTwistDown */ TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::FlyerHalfLoopUninvertedUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::FlyerHalfLoopInvertedDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::LeftFlyerCorkscrewUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::RightFlyerCorkscrewUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::LeftFlyerCorkscrewDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::RightFlyerCorkscrewDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::HeartLineTransferUp */ 0, - /* TrackElemType::HeartLineTransferDown */ 0, - /* TrackElemType::LeftHeartLineRoll */ TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL | TRACK_ELEM_FLAG_CAN_BE_PARTLY_UNDERGROUND, - /* TrackElemType::RightHeartLineRoll */ TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL | TRACK_ELEM_FLAG_CAN_BE_PARTLY_UNDERGROUND, - /* TrackElemType::MinigolfHoleA */ TRACK_ELEM_FLAG_IS_GOLF_HOLE, - /* TrackElemType::MinigolfHoleB */ TRACK_ELEM_FLAG_IS_GOLF_HOLE, - /* TrackElemType::MinigolfHoleC */ TRACK_ELEM_FLAG_IS_GOLF_HOLE, - /* TrackElemType::MinigolfHoleD */ TRACK_ELEM_FLAG_IS_GOLF_HOLE, - /* TrackElemType::MinigolfHoleE */ TRACK_ELEM_FLAG_IS_GOLF_HOLE, - /* TrackElemType::MultiDimInvertedFlatToDown90QuarterLoop */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::Up90ToInvertedFlatQuarterLoop */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::InvertedFlatToDown90QuarterLoop */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::LeftCurvedLiftHill */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_UP, - /* TrackElemType::RightCurvedLiftHill */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_UP, - /* TrackElemType::LeftReverser */ 0, - /* TrackElemType::RightReverser */ 0, - /* TrackElemType::AirThrustTopCap */ 0, - /* TrackElemType::AirThrustVerticalDown */ TRACK_ELEM_FLAG_DOWN, - /* TrackElemType::AirThrustVerticalDownToLevel */ TRACK_ELEM_FLAG_DOWN, - /* TrackElemType::BlockBrakes */ 0, - /* TrackElemType::LeftBankedQuarterTurn3TileUp25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::RightBankedQuarterTurn3TileUp25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::LeftBankedQuarterTurn3TileDown25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::RightBankedQuarterTurn3TileDown25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::LeftBankedQuarterTurn5TileUp25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::RightBankedQuarterTurn5TileUp25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::LeftBankedQuarterTurn5TileDown25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::RightBankedQuarterTurn5TileDown25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::Up25ToLeftBankedUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::Up25ToRightBankedUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::LeftBankedUp25ToUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::RightBankedUp25ToUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::Down25ToLeftBankedDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::Down25ToRightBankedDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::LeftBankedDown25ToDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::RightBankedDown25ToDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::LeftBankedFlatToLeftBankedUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::RightBankedFlatToRightBankedUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::LeftBankedUp25ToLeftBankedFlat */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::RightBankedUp25ToRightBankedFlat */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::LeftBankedFlatToLeftBankedDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::RightBankedFlatToRightBankedDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::LeftBankedDown25ToLeftBankedFlat */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::RightBankedDown25ToRightBankedFlat */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::FlatToLeftBankedUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::FlatToRightBankedUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::LeftBankedUp25ToFlat */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::RightBankedUp25ToFlat */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::FlatToLeftBankedDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::FlatToRightBankedDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::LeftBankedDown25ToFlat */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::RightBankedDown25ToFlat */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::LeftQuarterTurn1TileUp90 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP, - /* TrackElemType::RightQuarterTurn1TileUp90 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP, - /* TrackElemType::LeftQuarterTurn1TileDown90 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN, - /* TrackElemType::RightQuarterTurn1TileDown90 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN, - /* TrackElemType::MultiDimUp90ToInvertedFlatQuarterLoop */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::MultiDimFlatToDown90QuarterLoop */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::MultiDimInvertedUp90ToFlatQuarterLoop */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::RotationControlToggle */ 0, - /* TrackElemType::FlatTrack1x4A */ 0, - /* TrackElemType::FlatTrack2x2 */ 0, - /* TrackElemType::FlatTrack4x4 */ 0, - /* TrackElemType::FlatTrack2x4 */ TRACK_ELEM_FLAG_ONLY_ABOVE_GROUND, - /* TrackElemType::FlatTrack1x5 */ 0, - /* TrackElemType::FlatTrack1x1A */ 0, - /* TrackElemType::FlatTrack1x4B */ 0, - /* TrackElemType::FlatTrack1x1B */ 0, - /* TrackElemType::FlatTrack1x4C */ 0, - /* TrackElemType::FlatTrack3x3 */ 0, - /* TrackElemType::LeftLargeCorkscrewUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::RightLargeCorkscrewUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::LeftLargeCorkscrewDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::RightLargeCorkscrewDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::LeftMediumHalfLoopUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::RightMediumHalfLoopUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::LeftMediumHalfLoopDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::RightMediumHalfLoopDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::LeftZeroGRollUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::RightZeroGRollUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::LeftZeroGRollDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::RightZeroGRollDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::LeftLargeZeroGRollUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::RightLargeZeroGRollUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::LeftLargeZeroGRollDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::RightLargeZeroGRollDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::LeftFlyerLargeHalfLoopUninvertedUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::RightFlyerLargeHalfLoopUninvertedUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::LeftFlyerLargeHalfLoopInvertedDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::RightFlyerLargeHalfLoopInvertedDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TrackElemType::LeftFlyerLargeHalfLoopInvertedUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::RightFlyerLargeHalfLoopInvertedUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::LeftFlyerLargeHalfLoopUninvertedDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION, - /* TrackElemType::RightFlyerLargeHalfLoopUninvertedDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION, - /* TrackElemType::FlyerHalfLoopInvertedUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::FlyerHalfLoopUnivertedDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION, - /* TrackElemType::LeftEighthToDiagUp25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, - /* TrackElemType::RightEighthToDiagUp25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, - /* TrackElemType::LeftEighthToDiagDown25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, - /* TrackElemType::RightEighthToDiagDown25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, - /* TrackElemType::LeftEighthToOrthogonalUp25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, - /* TrackElemType::RightEighthToOrthogonalUp25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, - /* TrackElemType::LeftEighthToOrthogonalDown25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, - /* TrackElemType::RightEighthToOrthogonalDown25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, - /* TrackElemType::DiagUp25ToLeftBankedUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::DiagUp25ToRightBankedUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::DiagLeftBankedUp25ToUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::DiagRightBankedUp25ToUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::DiagDown25ToLeftBankedDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::DiagDown25ToRightBankedDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::DiagLeftBankedDown25ToDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::DiagRightBankedDown25ToDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::DiagLeftBankedFlatToLeftBankedUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::DiagRightBankedFlatToRightBankedUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::DiagLeftBankedUp25ToLeftBankedFlat */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::DiagRightBankedUp25ToRightBankedFlat */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::DiagLeftBankedFlatToLeftBankedDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::DiagRightBankedFlatToRightBankedDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::DiagLeftBankedDown25ToLeftBankedFlat */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::DiagRightBankedDown25ToRightBankedFlat */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::DiagFlatToLeftBankedUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::DiagFlatToRightBankedUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::DiagLeftBankedUp25ToFlat */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::DiagRightBankedUp25ToFlat */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::DiagFlatToLeftBankedDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::DiagFlatToRightBankedDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::DiagLeftBankedDown25ToFlat */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::DiagRightBankedDown25ToFlat */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED, - /* TrackElemType::Up25LeftBanked */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::Up25RightBanked */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::Down25LeftBanked */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::Down25RightBanked */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, - /* TrackElemType::LeftEighthBankToDiagUp25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, - /* TrackElemType::RightEighthBankToDiagUp25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, - /* TrackElemType::LeftEighthBankToDiagDown25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, - /* TrackElemType::RightEighthBankToDiagDown25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, - /* TrackElemType::LeftEighthBankToOrthogonalUp25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, - /* TrackElemType::RightEighthBankToOrthogonalUp25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, - /* TrackElemType::LeftEighthBankToOrthogonalDown25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, - /* TrackElemType::RightEighthBankToOrthogonalDown25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, - /* TrackElemType::DiagBrakes */ 0, - /* TrackElemType::DiagBlockBrakes */ 0, - }; - static_assert(std::size(TrackFlags) == TrackElemType::Count); + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25Deg } }, // RightBankedUp25ToUp25 + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25Deg } }, // Down25ToLeftBankedDown25 + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25Deg } }, // Down25ToRightBankedDown25 + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25Deg } }, // LeftBankedDown25ToDown25 + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25Deg } }, // RightBankedDown25ToDown25 + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::FlatToUp25Deg } }, // LeftBankedFlatToLeftBankedUp25 + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::FlatToUp25Deg } }, // RightBankedFlatToRightBankedUp25 + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25DegToFlat } }, // LeftBankedUp25ToLeftBankedFlat + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25DegToFlat } }, // RightBankedUp25ToRightBankedFlat + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25DegToFlat } }, // LeftBankedFlatToLeftBankedDown25 + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25DegToFlat } }, // RightBankedFlatToRightBankedDown25 + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::FlatToUp25Deg } }, // LeftBankedDown25ToLeftBankedFlat + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::FlatToUp25Deg } }, // RightBankedDown25ToRightBankedFlat + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::FlatToUp25Deg } }, // FlatToLeftBankedUp25 + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::FlatToUp25Deg } }, // FlatToRightBankedUp25 + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25DegToFlat } }, // LeftBankedUp25ToFlat + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25DegToFlat } }, // RightBankedUp25ToFlat + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25DegToFlat } }, // FlatToLeftBankedDown25 + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25DegToFlat } }, // FlatToRightBankedDown25 + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::FlatToUp25Deg } }, // LeftBankedDown25ToFlat + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::FlatToUp25Deg } }, // RightBankedDown25ToFlat + {}, // LeftQuarterTurn1TileUp90 + {}, // RightQuarterTurn1TileUp90 + {}, // LeftQuarterTurn1TileDown90 + {}, // RightQuarterTurn1TileDown90 + {}, // MultiDimUp90ToInvertedFlatQuarterLoop + {}, // MultiDimFlatToDown90QuarterLoop + {}, // MultiDimInvertedUp90ToFlatQuarterLoop + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw } }, // RotationControlToggle + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw } }, // FlatTrack1x4A + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw } }, // FlatTrack2x2 + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw } }, // FlatTrack4x4 + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw } }, // FlatTrack2x4 + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw } }, // FlatTrack1x5 + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw } }, // FlatTrack1x1A + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw } }, // FlatTrack1x4B + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw } }, // FlatTrack1x1B + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw } }, // FlatTrack1x4C + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw } }, // FlatTrack3x3 + {}, // LeftLargeCorkscrewUp + {}, // RightLargeCorkscrewUp + {}, // LeftLargeCorkscrewDown + {}, // RightLargeCorkscrewDown + {}, // LeftMediumHalfLoopUp + {}, // RightMediumHalfLoopUp + {}, // LeftMediumHalfLoopDown + {}, // RightMediumHalfLoopDown + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw } }, // LeftZeroGRollUp + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw } }, // RightZeroGRollUp + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw } }, // LeftZeroGRollDown + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw } }, // RightZeroGRollDown + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw } }, // LeftLargeZeroGRollUp + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw } }, // RightLargeZeroGRollUp + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw } }, // LeftLargeZeroGRollDown + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw } }, // RightLargeZeroGRollDown + {}, // LeftFlyerLargeHalfLoopUninvertedUp + {}, // RightFlyerLargeHalfLoopUninvertedUp + {}, // LeftFlyerLargeHalfLoopInvertedDown + {}, // RightFlyerLargeHalfLoopInvertedDown + {}, // LeftFlyerLargeHalfLoopInvertedUp + {}, // RightFlyerLargeHalfLoopInvertedUp + {}, // LeftFlyerLargeHalfLoopUninvertedDown + {}, // RightFlyerLargeHalfLoopUninvertedDown + {}, // FlyerHalfLoopInvertedUp + {}, // FlyerHalfLoopUninvertedDown + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25Deg }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::Corner1 }, { WoodenSupportSubType::Corner3 }, {} }, // LeftEighthToDiagUp25 + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25Deg }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // RightEighthToDiagUp25 + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25Deg }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::Corner1 }, { WoodenSupportSubType::Corner3 }, {} }, // LeftEighthToDiagDown25 + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25Deg }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // RightEighthToDiagDown25 + { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner2 }, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw } }, // LeftEighthToOrthogonalUp25 + { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, { WoodenSupportSubType::NwSe }, { WoodenSupportSubType::NwSe } }, // RightEighthToOrthogonalUp25 + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25Deg }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // LeftEighthToOrthogonalDown25 + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25Deg }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::Corner1 }, { WoodenSupportSubType::Corner3 }, {} }, // RightEighthToOrthogonalDown25 + { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagUp25ToLeftBankedUp25 + { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagUp25ToRightBankedUp25 + { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagLeftBankedUp25ToUp25 + { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagRightBankedUp25ToUp25 + { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagDown25ToLeftBankedDown25 + { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagDown25ToRightBankedDown25 + { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagLeftBankedDown25ToDown25 + { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagRightBankedDown25ToDown25 + { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagLeftBankedFlatToLeftBankedUp25 + { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagRightBankedFlatToRightBankedUp25 + { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagLeftBankedUp25ToLeftBankedFlat + { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagRightBankedUp25ToRightBankedFlat + { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagLeftBankedFlatToLeftBankedDown25 + { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagRightBankedFlatToRightBankedDown25 + { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagLeftBankedDown25ToLeftBankedFlat + { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagRightBankedDown25ToRightBankedFlat + { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagFlatToLeftBankedUp25 + { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagFlatToRightBankedUp25 + { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagLeftBankedUp25ToFlat + { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagRightBankedUp25ToFlat + { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagFlatToLeftBankedDown25 + { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagFlatToRightBankedDown25 + { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagLeftBankedDown25ToFlat + { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagRightBankedDown25ToFlat + { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagUp25LeftBanked + { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagUp25RightBanked + { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagDown25LeftBanked + { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagDown25RightBanked + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25Deg }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::Corner1 }, { WoodenSupportSubType::Corner3 }, {} }, // LeftEighthBankToDiagUp25 + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25Deg }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // RightEighthBankToDiagUp25 + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25Deg }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::Corner1 }, { WoodenSupportSubType::Corner3 }, {} }, // LeftEighthBankToDiagDown25 + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25Deg }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // RightEighthBankToDiagDown25 + { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner2 }, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::NeSw } }, // LeftEighthBankToOrthogonalUp25 + { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, { WoodenSupportSubType::NwSe }, { WoodenSupportSubType::NwSe } }, // RightEighthBankToOrthogonalUp25 + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25Deg }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // LeftEighthBankToOrthogonalDown25 + { SequenceWoodenSupport{ WoodenSupportSubType::NeSw, WoodenSupportTransitionType::Up25Deg }, { WoodenSupportSubType::NeSw }, { WoodenSupportSubType::Corner1 }, { WoodenSupportSubType::Corner3 }, {} }, // RightEighthBankToOrthogonalDown25 + { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagBrakes + { SequenceWoodenSupport{}, { WoodenSupportSubType::Corner0 }, { WoodenSupportSubType::Corner2 }, {} }, // DiagBlockBrakes + } }; + + constexpr PreviewTrack kTrackBlockEnd { 255, 255, 255, 255, 255, {255, 255}, 255 }; + + static constexpr PreviewTrack TrackBlocks000[] = { + { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks001[] = { + { 0, 0, 0, 0, 0,{ 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks002[] = { + { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks003[] = { + { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks004[] = { + { 0, 0, 0, 0, 16, { 0b1111, 0b1100 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks005[] = { + { 0, 0, 0, 0, 64, { 0b1111, 0b1100 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks006[] = { + { 0, 0, 0, 0, 8, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks007[] = { + { 0, 0, 0, 0, 32, { 0b1111, 0b1100 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks008[] = { + { 0, 0, 0, 0, 32, { 0b1111, 0b1100 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks009[] = { + { 0, 0, 0, 0, 8, { 0b1111, 0b1100 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks010[] = { + { 0, 0, 0, 0, 16, { 0b1111, 0b0011 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks011[] = { + { 0, 0, 0, 0, 64, { 0b1111, 0b0011 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks012[] = { + { 0, 0, 0, 0, 8, { 0b1111, 0b0011 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks013[] = { + { 0, 0, 0, 0, 32, { 0b1111, 0b0011 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks014[] = { + { 0, 0, 0, 0, 32, { 0b1111, 0b0011 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks015[] = { + { 0, 0, 0, 0, 8, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks016[] = { + { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, + { 1, 0, -32, 0, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 2, -32, 0, 0, 0, { 0b0111, 0 }, 0 }, + { 3, -32, -32, 0, 0, { 0b1101, 0 }, 0 }, + { 4, -32, -64, 0, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 5, -64, -32, 0, 0, { 0b0111, 0 }, 0 }, + { 6, -64, -64, 0, 0, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks017[] = { + { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, + { 1, 0, 32, 0, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 2, -32, 0, 0, 0, { 0b1011, 0 }, 0 }, + { 3, -32, 32, 0, 0, { 0b1110, 0 }, 0 }, + { 4, -32, 64, 0, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 5, -64, 32, 0, 0, { 0b1011, 0 }, 0 }, + { 6, -64, 64, 0, 0, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks018[] = { + { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks019[] = { + { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks020[] = { + { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks021[] = { + { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks022[] = { + { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, + { 1, 0, -32, 0, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 2, -32, 0, 0, 0, { 0b0111, 0 }, 0 }, + { 3, -32, -32, 0, 0, { 0b1101, 0 }, 0 }, + { 4, -32, -64, 0, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 5, -64, -32, 0, 0, { 0b0111, 0 }, 0 }, + { 6, -64, -64, 0, 0, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks023[] = { + { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, + { 1, 0, 32, 0, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 2, -32, 0, 0, 0, { 0b1011, 0 }, 0 }, + { 3, -32, 32, 0, 0, { 0b1110, 0 }, 0 }, + { 4, -32, 64, 0, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 5, -64, 32, 0, 0, { 0b1011, 0 }, 0 }, + { 6, -64, 64, 0, 0, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks024[] = { + { 0, 0, 0, 0, 8, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks025[] = { + { 0, 0, 0, 0, 8, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks026[] = { + { 0, 0, 0, 0, 8, { 0b1111, 0b1100 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks027[] = { + { 0, 0, 0, 0, 8, { 0b1111, 0b1100 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks028[] = { + { 0, 0, 0, 0, 8, { 0b1111, 0b0011 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks029[] = { + { 0, 0, 0, 0, 8, { 0b1111, 0b0011 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks030[] = { + { 0, 0, 0, 0, 8, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks031[] = { + { 0, 0, 0, 0, 8, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks032[] = { + { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks033[] = { + { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks034[] = { + { 0, 0, 0, 0, 16, { 0b1111, 0b1100 }, 0 }, + { 1, 0, -32, 16, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 2, -32, 0, 16, 16, { 0b0111, 0b0100 }, 0 }, + { 3, -32, -32, 24, 16, { 0b1101, 0 }, 0 }, + { 4, -32, -64, 48, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 5, -64, -32, 32, 16, { 0b0111, 0b0100 }, 0 }, + { 6, -64, -64, 48, 16, { 0b1111, 0b0110 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks035[] = { + { 0, 0, 0, 0, 16, { 0b1111, 0b1100 }, 0 }, + { 1, 0, 32, 16, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 2, -32, 0, 16, 16, { 0b1011, 0b1000 }, 0 }, + { 3, -32, 32, 24, 16, { 0b1110, 0 }, 0 }, + { 4, -32, 64, 48, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 5, -64, 32, 32, 16, { 0b1011, 0b1000 }, 0 }, + { 6, -64, 64, 48, 16, { 0b1111, 0b1001 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks036[] = { + { 0, 0, 0, 48, 16, { 0b1111, 0b0011 }, 0 }, + { 1, 0, -32, 48, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 2, -32, 0, 32, 16, { 0b0111, 0b0001 }, 0 }, + { 3, -32, -32, 24, 16, { 0b1101, 0 }, 0 }, + { 4, -32, -64, 16, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 5, -64, -32, 16, 16, { 0b0111, 0b0001 }, 0 }, + { 6, -64, -64, 0, 16, { 0b1111, 0b1001 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks037[] = { + { 0, 0, 0, 48, 16, { 0b1111, 0b0011 }, 0 }, + { 1, 0, 32, 48, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 2, -32, 0, 32, 16, { 0b1011, 0b0010 }, 0 }, + { 3, -32, 32, 24, 16, { 0b1110, 0 }, 0 }, + { 4, -32, 64, 16, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 5, -64, 32, 16, 16, { 0b1011, 0b0010 }, 0 }, + { 6, -64, 64, 0, 16, { 0b1111, 0b0110 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks038[] = { + { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, + { 1, -32, 0, 0, 0, { 0b0111, 0 }, 0 }, + { 2, -32, -32, 0, 0, { 0b1101, 0 }, 0 }, + { 3, -64, -32, 0, 0, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks039[] = { + { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, + { 1, -32, 0, 0, 0, { 0b1011, 0 }, 0 }, + { 2, -32, 32, 0, 0, { 0b1110, 0 }, 0 }, + { 3, -64, 32, 0, 0, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + // LeftVerticalLoop + static constexpr PreviewTrack TrackBlocks040[] = { + { 0, 0, 0, 0, 16, { 0b1111, 0b1100 }, 0 }, + { 1, -32, 0, 16, 16, { 0b1111, 0b1100 }, 0 }, + { 2, -64, 0, 32, 96, { 0b0010, 0 }, 0 }, + { 3, -32, 0, 120, 16, { 0b0110, 0 }, 0 }, + { 4, -32, -32, 120, 0, { 0b0000, 0 }, 0 }, + { 5, 0, 0, 120, 0, { 0b0000, 0 }, 0 }, + { 6, 0, -32, 120, 16, { 0b1001, 0 }, 0 }, + { 7, 32, -32, 32, 96, { 0b1000, 0 }, 0 }, + { 8, 0, -32, 16, 16, { 0b1111, 0b0011 }, 0 }, + { 9, -32, -32, 0, 16, { 0b1111, 0b0011 }, 0 }, + kTrackBlockEnd + }; + + // RightVerticalLoop + static constexpr PreviewTrack TrackBlocks041[] = { + { 0, 0, 0, 0, 16, { 0b1111, 0b1100 }, 0 }, + { 1, -32, 0, 16, 16, { 0b1111, 0b1100 }, 0 }, + { 2, -64, 0, 32, 96, { 0b0001, 0 }, 0 }, + { 3, -32, 0, 120, 16, { 0b1001, 0 }, 0 }, + { 4, -32, 32, 120, 0, { 0b0000, 0 }, 0 }, + { 5, 0, 0, 120, 0, { 0b0000, 0 }, 0 }, + { 6, 0, 32, 120, 16, { 0b0110, 0 }, 0 }, + { 7, 32, 32, 32, 96, { 0b0100, 0 }, 0 }, + { 8, 0, 32, 16, 16, { 0b1111, 0b0011 }, 0 }, + { 9, -32, 32, 0, 16, { 0b1111, 0b0011 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks042[] = { + { 0, 0, 0, 0, 0, { 0b0111, 0 }, 0 }, + { 1, 0, -32, 0, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 2, -32, 0, 0, 0, { 0b0010, 0 }, 0 }, + { 3, -32, -32, 0, 0, { 0b0111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks043[] = { + { 0, 0, 0, 0, 0, { 0b1011, 0 }, 0 }, + { 1, 0, 32, 0, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 2, -32, 0, 0, 0, { 0b0001, 0 }, 0 }, + { 3, -32, 32, 0, 0, { 0b1011, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks044[] = { + { 0, 0, 0, 0, 0, { 0b0111, 0 }, 0 }, + { 1, 0, -32, 0, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 2, -32, 0, 0, 0, { 0b0010, 0 }, 0 }, + { 3, -32, -32, 0, 0, { 0b0111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks045[] = { + { 0, 0, 0, 0, 0, { 0b1011, 0 }, 0 }, + { 1, 0, 32, 0, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 2, -32, 0, 0, 0, { 0b0001, 0 }, 0 }, + { 3, -32, 32, 0, 0, { 0b1011, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks046[] = { + { 0, 0, 0, 0, 16, { 0b0111, 0b0100 }, 0 }, + { 1, 0, -32, 16, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 2, -32, 0, 16, 0, { 0b0010, 0 }, 0 }, + { 3, -32, -32, 16, 16,{ 0b0111, 0b0110 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks047[] = { + { 0, 0, 0, 0, 16, { 0b1011, 0b1000 }, 0 }, + { 1, 0, 32, 16, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 2, -32, 0, 16, 0, { 0b0001, 0 }, 0 }, + { 3, -32, 32, 16, 16,{ 0b1011, 0b1001 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks048[] = { + { 0, 0, 0, 16, 16,{ 0b0111, 0b0011 }, 0 }, + { 1, 0, -32, 16, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 2, -32, 0, 16, 0, { 0b0010, 0 }, 0 }, + { 3, -32, -32, 0, 16, { 0b0111, 0b0001 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks049[] = { + { 0, 0, 0, 16, 16, { 0b1011, 0b0011 }, 0 }, + { 1, 0, 32, 16, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 2, -32, 0, 16, 0, { 0b0001, 0 }, 0 }, + { 3, -32, 32, 0, 16, { 0b1011, 0b0010 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks050[] = { + { 0, 0, 0, 0, 0, { 0b0111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks051[] = { + { 0, 0, 0, 0, 0, { 0b1011, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks052[] = { + { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, + { 1, -32, 0, 0, 16, { 0b1111, 0 }, 0 }, + { 2, -64, 0, 16, 0, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks053[] = { + { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, + { 1, -32, 0, 0, 16, { 0b1111, 0 }, 0 }, + { 2, -64, 0, 16, 0, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks054[] = { + { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, + { 1, -32, 0, -16, 16, { 0b1111, 0 }, 0 }, + { 2, -64, 0, -16, 0, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks055[] = { + { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, + { 1, -32, 0, -16, 16, { 0b1111, 0 }, 0 }, + { 2, -64, 0, -16, 0, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + // HalfLoopUp + static constexpr PreviewTrack TrackBlocks056[] = { + { 0, 0, 0, 0, 16, { 0b1111, 0b1100 }, 0 }, + { 1, -32, 0, 16, 16, { 0b1111, 0b1100 }, 0 }, + { 2, -64, 0, 32, 96,{ 0b0011, 0 }, 0 }, + { 3, -32, 0, 120, 16, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + // HalfLoopDown + static constexpr PreviewTrack TrackBlocks057[] = { + { 0, 0, 0, -32, 16, { 0b1111, 0 }, 0 }, + { 1, -32, 0, -120, 96,{ 0b0011, 0 }, 0 }, + { 2, 0, 0, -136, 16, { 0b1111, 0b1100 }, 0 }, + { 3, 32, 0, -152, 16, { 0b1111, 0b1100 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks058[] = { + { 0, 0, 0, 0, 16, { 0b1111, 0 }, 0 }, + { 1, -32, 0, 24, 32, { 0b0111, 0 }, 0 }, + { 2, -32, -32, 48, 16, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks059[] = { + { 0, 0, 0, 0, 16, { 0b1111, 0 }, 0 }, + { 1, -32, 0, 24, 32, { 0b1011, 0 }, 0 }, + { 2, -32, 32, 48, 16, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks060[] = { + { 0, 0, 0, -32, 16, { 0b1111, 0 }, 0 }, + { 1, -32, 0, -56, 32, { 0b0111, 0 }, 0 }, + { 2, -32, -32, -80, 16, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks061[] = { + { 0, 0, 0, -32, 16, { 0b1111, 0 }, 0 }, + { 1, -32, 0, -56, 32, { 0b1011, 0 }, 0 }, + { 2, -32, 32, -80, 16, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks062[] = { + { 0, 0, 0, 0, 24, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks063[] = { + { 0, 0, 0, 0, 24, { 0b1111, 0b1100 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks064[] = { + { 0, 0, 0, 0, 24, { 0b1111, 0b0011 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks065[] = { + { 0, 0, 0, 0, 24, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks066[] = { + { 0, 0, 0, 0, 64, { 0b1111, 0 }, 0 }, + { 1, -32, -32, 0, 0, { 0b1111, 0 }, 0 }, + { 2, -32, 0, 0, 0, { 0b1111, 0 }, 0 }, + { 3, -32, 32, 0, 0, { 0b1111, 0 }, 0 }, + { 4, 0, -32, 0, 0, { 0b1111, 0 }, 0 }, + { 5, 0, 32, 0, 0, { 0b1111, 0 }, 0 }, + { 6, 32, -32, 0, 0, { 0b1111, 0 }, 0 }, + { 7, 32, 32, 0, 0, { 0b1111, 0 }, 0 }, + { 8, 32, 0, 0, 0, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_1 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks067[] = { + { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, + { 1, 32, 0, 0, 0, { 0b0000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 | RCT_PREVIEW_TRACK_FLAG_1 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks068[] = { + { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks069[] = { + { 0, 0, 0, 0, 16, { 0b1111, 0b1100 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks070[] = { + { 0, 0, 0, 0, 64, { 0b1111, 0b1100 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks071[] = { + { 0, 0, 0, 0, 8, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks072[] = { + { 0, 0, 0, 0, 32, { 0b1111, 0b1100 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks073[] = { + { 0, 0, 0, 0, 32, { 0b1111, 0b1100 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks074[] = { + { 0, 0, 0, 0, 8, { 0b1111, 0b1100 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks075[] = { + { 0, 0, 0, 0, 16, { 0b1111, 0b0011 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks076[] = { + { 0, 0, 0, 0, 64, { 0b1111, 0b0011 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks077[] = { + { 0, 0, 0, 0, 8, { 0b1111, 0b0011 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks078[] = { + { 0, 0, 0, 0, 32, { 0b1111, 0b0011 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks079[] = { + { 0, 0, 0, 0, 32, { 0b1111, 0b0011 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks080[] = { + { 0, 0, 0, 0, 8, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks081[] = { + { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, + { 1, 0, -32, 0, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 2, -32, 0, 0, 0, { 0b0111, 0 }, 0 }, + { 3, -32, -32, 0, 0, { 0b1101, 0 }, 0 }, + { 4, -32, -64, 0, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 5, -64, -32, 0, 0, { 0b0111, 0 }, 0 }, + { 6, -64, -64, 0, 0, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks082[] = { + { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, + { 1, 0, 32, 0, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 2, -32, 0, 0, 0, { 0b1011, 0 }, 0 }, + { 3, -32, 32, 0, 0, { 0b1110, 0 }, 0 }, + { 4, -32, 64, 0, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 5, -64, 32, 0, 0, { 0b1011, 0 }, 0 }, + { 6, -64, 64, 0, 0, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks083[] = { + { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, + { 1, -32, 0, 0, 0, { 0b0111, 0 }, 0 }, + { 2, -32, -32, 0, 0, { 0b1101, 0 }, 0 }, + { 3, -64, -32, 0, 0, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks084[] = { + { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, + { 1, -32, 0, 0, 0, { 0b1011, 0 }, 0 }, + { 2, -32, 32, 0, 0, { 0b1110, 0 }, 0 }, + { 3, -64, 32, 0, 0, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks085[] = { + { 0, 0, 0, 0, 0, { 0b0111, 0 }, 0 }, + { 1, 0, -32, 0, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 2, -32, 0, 0, 0, { 0b0010, 0 }, 0 }, + { 3, -32, -32, 0, 0, { 0b0111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks086[] = { + { 0, 0, 0, 0, 0, { 0b1011, 0 }, 0 }, + { 1, 0, 32, 0, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 2, -32, 0, 0, 0, { 0b0001, 0 }, 0 }, + { 3, -32, 32, 0, 0, { 0b1011, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks087[] = { + { 0, 0, 0, 0, 0, { 0b0111, 0 }, 0 }, + { 1, 0, -32, 0, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 2, -32, 0, 0, 4, { 0b0010, 0 }, 0 }, + { 3, -32, -32, 0, 4, { 0b0111, 0 }, 0 }, + { 4, -32, -64, 8, 0, { 0b1011, 0 }, 0 }, + { 5, 0, -64, 8, 0, { 0b0100, 0b0000 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 6, -32, -96, 8, 4, { 0b0001, 0 }, 0 }, + { 7, 0, -96, 8, 4, { 0b1011, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks088[] = { + { 0, 0, 0, 0, 0, { 0b1011, 0 }, 0 }, + { 1, 0, 32, 0, 0, { 0b0100, 0b0000 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 2, -32, 0, 0, 4, { 0b0001, 0 }, 0 }, + { 3, -32, 32, 0, 4, { 0b1011, 0 }, 0 }, + { 4, -32, 64, 8, 0, { 0b0111, 0 }, 0 }, + { 5, 0, 64, 8, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 6, -32, 96, 8, 4, { 0b0010, 0 }, 0 }, + { 7, 0, 96, 8, 4, { 0b0111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks089[] = { + { 0, 0, 0, 8, 4, { 0b0111, 0 }, 0 }, + { 1, 0, -32, 8, 4, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 2, -32, 0, 8, 0, { 0b0010, 0 }, 0 }, + { 3, -32, -32, 8, 0, { 0b0111, 0 }, 0 }, + { 4, -32, -64, 0, 4, { 0b1011, 0 }, 0 }, + { 5, 0, -64, 0, 4, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 6, -32, -96, 0, 0, { 0b0001, 0 }, 0 }, + { 7, 0, -96, 0, 0, { 0b1011, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks090[] = { + { 0, 0, 0, 8, 4, { 0b1011, 0 }, 0 }, + { 1, 0, 32, 8, 4, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 2, -32, 0, 8, 0, { 0b0001, 0 }, 0 }, + { 3, -32, 32, 8, 0, { 0b1011, 0 }, 0 }, + { 4, -32, 64, 0, 4, { 0b0111, 0 }, 0 }, + { 5, 0, 64, 0, 4, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 6, -32, 96, 0, 0, { 0b0010, 0 }, 0 }, + { 7, 0, 96, 0, 0, { 0b0111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks091[] = { + { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, + { 1, 0, -32, 0, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 2, -32, 0, 0, 0, { 0b0111, 0 }, 0 }, + { 3, -32, -32, 0, 0, { 0b1101, 0 }, 0 }, + { 4, -32, -64, 0, 4, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 5, -64, -32, 0, 4, { 0b0111, 0 }, 0 }, + { 6, -64, -64, 0, 4, { 0b1111, 0 }, 0 }, + { 7, -64, -96, 8, 0, { 0b1111, 0 }, 0 }, + { 8, -32, -96, 8, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 9, -64, -128, 8, 0, { 0b1011, 0 }, 0 }, + { 10, -32, -128, 8, 0, { 0b1110, 0 }, 0 }, + { 11, 0, -128, 8, 4, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 12, -32, -160, 8, 4, { 0b1011, 0 }, 0 }, + { 13, 0, -160, 8, 4, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks092[] = { + { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, + { 1, 0, 32, 0, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 2, -32, 0, 0, 0, { 0b1011, 0 }, 0 }, + { 3, -32, 32, 0, 0, { 0b1110, 0 }, 0 }, + { 4, -32, 64, 0, 4, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 5, -64, 32, 0, 4, { 0b1011, 0 }, 0 }, + { 6, -64, 64, 0, 4, { 0b1111, 0 }, 0 }, + { 7, -64, 96, 8, 0, { 0b1111, 0 }, 0 }, + { 8, -32, 96, 8, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 9, -64, 128, 8, 0, { 0b0111, 0 }, 0 }, + { 10, -32, 128, 8, 0, { 0b1101, 0 }, 0 }, + { 11, 0, 128, 8, 4, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 12, -32, 160, 8, 4, { 0b0111, 0 }, 0 }, + { 13, 0, 160, 8, 4, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks093[] = { + { 0, 0, 0, 8, 4, { 0b1111, 0 }, 0 }, + { 1, 0, -32, 8, 4, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 2, -32, 0, 8, 4, { 0b0111, 0 }, 0 }, + { 3, -32, -32, 8, 0, { 0b1101, 0 }, 0 }, + { 4, -32, -64, 8, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 5, -64, -32, 8, 0, { 0b0111, 0 }, 0 }, + { 6, -64, -64, 8, 0, { 0b1111, 0 }, 0 }, + { 7, -64, -96, 0, 4, { 0b1111, 0 }, 0 }, + { 8, -32, -96, 0, 4, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 9, -64, -128, 0, 4, { 0b1011, 0 }, 0 }, + { 10, -32, -128, 0, 0, { 0b1110, 0 }, 0 }, + { 11, 0, -128, 0, 0, { 0b0100, 0b0000 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 12, -32, -160, 0, 0, { 0b1011, 0 }, 0 }, + { 13, 0, -160, 0, 0, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks094[] = { + { 0, 0, 0, 8, 4, { 0b1111, 0 }, 0 }, + { 1, 0, 32, 8, 4, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 2, -32, 0, 8, 4, { 0b1011, 0 }, 0 }, + { 3, -32, 32, 8, 0, { 0b1110, 0 }, 0 }, + { 4, -32, 64, 8, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 5, -64, 32, 8, 0, { 0b1011, 0 }, 0 }, + { 6, -64, 64, 8, 0, { 0b1111, 0 }, 0 }, + { 7, -64, 96, 0, 4, { 0b1111, 0 }, 0 }, + { 8, -32, 96, 0, 4, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 9, -64, 128, 0, 4, { 0b0111, 0 }, 0 }, + { 10, -32, 128, 0, 0, { 0b1101, 0 }, 0 }, + { 11, 0, 128, 0, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 12, -32, 160, 0, 0, { 0b0111, 0 }, 0 }, + { 13, 0, 160, 0, 0, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks095[] = { + { 0, 0, 0, 0, 64, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks096[] = { + { 0, 0, 0, 0, 64, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks097[] = { + { 0, 0, 0, 0, 64, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks098[] = { + { 0, 0, 0, 0, 64, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks099[] = { + { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks100[] = { + { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks101[] = { + { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks102[] = { + { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, + { 1, 0, -32, 0, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 2, -32, 0, 0, 0, { 0b0111, 0 }, 0 }, + { 3, -32, -32, 0, 0, { 0b1101, 0 }, 0 }, + { 4, -32, -64, 0, 12, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 5, -64, -32, 0, 12, { 0b0111, 0 }, 0 }, + { 6, -64, -64, 0, 12, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks103[] = { + { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, + { 1, 0, 32, 0, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 2, -32, 0, 0, 0, { 0b1011, 0 }, 0 }, + { 3, -32, 32, 0, 0, { 0b1110, 0 }, 0 }, + { 4, -32, 64, 0, 12, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 5, -64, 32, 0, 12, { 0b1011, 0 }, 0 }, + { 6, -64, 64, 0, 12, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks104[] = { + { 0, 0, 0, 0, 12, { 0b1111, 0 }, 0 }, + { 1, 0, -32, 0, 12, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 2, -32, 0, 0, 12, { 0b0111, 0 }, 0 }, + { 3, -32, -32, 0, 0, { 0b1101, 0 }, 0 }, + { 4, -32, -64, 0, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 5, -64, -32, 0, 0, { 0b0111, 0 }, 0 }, + { 6, -64, -64, 0, 0, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks105[] = { + { 0, 0, 0, 0, 12, { 0b1111, 0 }, 0 }, + { 1, 0, 32, 0, 12, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 2, -32, 0, 0, 12, { 0b1011, 0 }, 0 }, + { 3, -32, 32, 0, 0, { 0b1110, 0 }, 0 }, + { 4, -32, 64, 0, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 5, -64, 32, 0, 0, { 0b1011, 0 }, 0 }, + { 6, -64, 64, 0, 0, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks106[] = { + { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, + { 1, 0, -32, 0, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 2, -32, 0, 0, 0, { 0b0111, 0 }, 0 }, + { 3, -32, -32, 0, 0, { 0b1101, 0 }, 0 }, + { 4, -32, -64, 0, 12, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 5, -64, -32, 0, 12, { 0b0111, 0 }, 0 }, + { 6, -64, -64, 0, 12, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks107[] = { + { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, + { 1, 0, 32, 0, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 2, -32, 0, 0, 0, { 0b1011, 0 }, 0 }, + { 3, -32, 32, 0, 0, { 0b1110, 0 }, 0 }, + { 4, -32, 64, 0, 12, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 5, -64, 32, 0, 12, { 0b1011, 0 }, 0 }, + { 6, -64, 64, 0, 12, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks108[] = { + { 0, 0, 0, 0, 12, { 0b1111, 0 }, 0 }, + { 1, 0, -32, 0, 12, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 2, -32, 0, 0, 12, { 0b0111, 0 }, 0 }, + { 3, -32, -32, 0, 0, { 0b1101, 0 }, 0 }, + { 4, -32, -64, 0, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 5, -64, -32, 0, 0, { 0b0111, 0 }, 0 }, + { 6, -64, -64, 0, 0, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks109[] = { + { 0, 0, 0, 0, 12, { 0b1111, 0 }, 0 }, + { 1, 0, 32, 0, 12, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 2, -32, 0, 0, 12, { 0b1011, 0 }, 0 }, + { 3, -32, 32, 0, 0, { 0b1110, 0 }, 0 }, + { 4, -32, 64, 0, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 5, -64, 32, 0, 0, { 0b1011, 0 }, 0 }, + { 6, -64, 64, 0, 0, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks110[] = { + { 0, 0, 0, 0, 16, { 0b1111, 0b1100 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks111[] = { + { 0, 0, 0, 0, 16, { 0b1111, 0b1100 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks112[] = { + { 0, 0, 0, 0, 16, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks113[] = { + { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks114[] = { + { 0, 0, 0, 0, 16, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks115[] = { + { 0, 0, 0, 0, 16, { 0b1111, 0b0011 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks116[] = { + { 0, 0, 0, 0, 16, { 0b1111, 0b0011 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks117[] = { + { 0, 0, 0, 0, 16, { 0b1111, 0 }, 0 }, + { 1, -32, 0, 0, 16, { 0b1111, 0 }, 0 }, + { 2, -64, 0, 0, 16, { 0b1111, 0 }, 0 }, + { 3, -96, 0, 0, 16, { 0b1111, 0 }, 0 }, + { 4, -128, 0, 0, 16, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks118[] = { + { 0, 0, 0, 0, 8, { 0b1111, 0 }, 0 }, + { 1, -32, 0, 0, 16, { 0b1111, 0 }, 0 }, + { 2, -64, 0, 16, 24, { 0b1111, 0 }, 0 }, + { 3, -96, 0, 40, 48, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks119[] = { + { 0, 0, 0, 0, 48, { 0b1111, 0 }, 0 }, + { 1, -32, 0, 40, 48, { 0b1111, 0 }, 0 }, + { 2, -64, 0, 64, 24, { 0b1111, 0 }, 0 }, + { 3, -96, 0, 80, 8, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks120[] = { + { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks121[] = { + { 0, 0, 0, 40, 48, { 0b1111, 0 }, 0 }, + { 1, -32, 0, 16, 24, { 0b1111, 0 }, 0 }, + { 2, -64, 0, 0, 16, { 0b1111, 0 }, 0 }, + { 3, -96, 0, 0, 8, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks122[] = { + { 0, 0, 0, 80, 8, { 0b1111, 0 }, 0 }, + { 1, -32, 0, 64, 24, { 0b1111, 0 }, 0 }, + { 2, -64, 0, 40, 48, { 0b1111, 0 }, 0 }, + { 3, -96, 0, 0, 48, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks123[] = { + { 0, 0, 0, 0, 8, { 0b1111, 0b1100 }, 0 }, + { 1, -32, 0, 0, 8, { 0b1111, 0b0011 }, 0 }, + { 2, -64, 0, -32, 32, { 0b1111, 0b0011 }, 0 }, + { 3, -96, 0, -96, 64, { 0b1111, 0b0011 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks124[] = { + { 0, 0, 0, 0, 16, { 0b1111, 0 }, 0 }, + { 1, -32, 0, 0, 32, { 0b1111, 0 }, 0 }, + { 2, -64, 0, 0, 48, { 0b1111, 0 }, 0 }, + { 3, -96, 0, 0, 80, { 0b1111, 0 }, 0 }, + { 4, -128, 0, 0, 160, { 0b1111, 0 }, 0 }, + { 5, -192, 0, 0, 208, { 0b1111, 0 }, 0 }, + { 6, -160, 0, 0, 208, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks125[] = { + { 0, 0, 0, 0, 48, { 0b1111, 0 }, 0 }, + { 1, 32, 0, 0, 48, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks126[] = { + { 0, 0, 0, 0, 8, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, + { 1, 32, 0, 0, 0, { 0b0000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 | RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks127[] = { + { 0, 0, 0, 0, 8, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, + { 1, 32, 0, 0, 0, { 0b0000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 | RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks128[] = { + { 0, 0, 0, 0, 32, { 0b1111, 0b1100 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, + { 1, 32, 0, 0, 0, { 0b0000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 | RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks129[] = { + { 0, 0, 0, 0, 32, { 0b1111, 0b0011 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks130[] = { + { 0, 0, 0, 0, 56, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks131[] = { + { 0, 0, 0, 0, 56, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, + { 1, 32, 0, 0, 0, { 0b0000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 | RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks132[] = { + { 0, 0, 0, 0, 24, { 0b1111, 0b0011 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks133[] = { + { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, + { 1, -32, 0, 0, 0, { 0b1111, 0 }, 0 }, + { 2, -32, -32, 0, 0, { 0b1000, 0 }, 0 }, + { 3, -64, 0, 0, 0, { 0b0010, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 4, -64, -32, 0, 0, { 0b0001, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks134[] = { + { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, + { 1, -32, 0, 0, 0, { 0b1111, 0 }, 0 }, + { 2, -32, 32, 0, 0, { 0b0100, 0 }, 0 }, + { 3, -64, 0, 0, 0, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 4, -64, 32, 0, 0, { 0b0010, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks135[] = { + { 0, 0, 0, 0, 0, { 0b1101, 0 }, 0 }, + { 1, -32, 0, 0, 0, { 0b0001, 0 }, 0 }, + { 2, 0, 32, 0, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 3, -32, 32, 0, 0, { 0b1111, 0 }, 0 }, + { 4, -64, 32, 0, 0, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks136[] = { + { 0, 0, 0, 0, 0, { 0b1101, 0 }, 0 }, + { 1, 0, 32, 0, 0, { 0b0100, 0 }, 0 }, + { 2, -32, 0, 0, 0, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 3, -32, 32, 0, 0, { 0b1111, 0 }, 0 }, + { 4, -32, 64, 0, 0, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks137[] = { + { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, + { 1, -32, 0, 0, 0, { 0b1111, 0 }, 0 }, + { 2, -32, -32, 0, 0, { 0b1000, 0 }, 0 }, + { 3, -64, 0, 0, 0, { 0b0010, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 4, -64, -32, 0, 0, { 0b0001, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks138[] = { + { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, + { 1, -32, 0, 0, 0, { 0b1111, 0 }, 0 }, + { 2, -32, 32, 0, 0, { 0b0100, 0 }, 0 }, + { 3, -64, 0, 0, 0, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 4, -64, 32, 0, 0, { 0b0010, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks139[] = { + { 0, 0, 0, 0, 0, { 0b1101, 0 }, 0 }, + { 1, -32, 0, 0, 0, { 0b0001, 0 }, 0 }, + { 2, 0, 32, 0, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 3, -32, 32, 0, 0, { 0b1111, 0 }, 0 }, + { 4, -64, 32, 0, 0, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks140[] = { + { 0, 0, 0, 0, 0, { 0b1101, 0 }, 0 }, + { 1, 0, 32, 0, 0, { 0b0100, 0 }, 0 }, + { 2, -32, 0, 0, 0, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 3, -32, 32, 0, 0, { 0b1111, 0 }, 0 }, + { 4, -32, 64, 0, 0, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks141[] = { + { 0, 0, 0, 0, 0, { 0b1101, 0 }, 0 }, + { 1, 0, 32, 0, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 2, -32, 0, 0, 0, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 3, -32, 32, 0, 0, { 0b0010, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks142[] = { + { 0, 0, 0, 0, 16, { 0b1101, 0 }, 0 }, + { 1, 0, 32, 0, 16, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 2, -32, 0, 0, 16, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 3, -32, 32, 0, 16, { 0b0010, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks143[] = { + { 0, 0, 0, 0, 64, { 0b1101, 0 }, 0 }, + { 1, 0, 32, 0, 64, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 2, -32, 0, 0, 64, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 3, -32, 32, 0, 64, { 0b0010, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks144[] = { + { 0, 0, 0, 0, 8, { 0b1101, 0 }, 0 }, + { 1, 0, 32, 0, 8, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 2, -32, 0, 0, 8, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 3, -32, 32, 0, 8, { 0b0010, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks145[] = { + { 0, 0, 0, 0, 32, { 0b1101, 0 }, 0 }, + { 1, 0, 32, 0, 32, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 2, -32, 0, 0, 32, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 3, -32, 32, 0, 32, { 0b0010, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks146[] = { + { 0, 0, 0, 0, 32, { 0b1101, 0 }, 0 }, + { 1, 0, 32, 0, 32, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 2, -32, 0, 0, 32, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 3, -32, 32, 0, 32, { 0b0010, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks147[] = { + { 0, 0, 0, 0, 8, { 0b1101, 0 }, 0 }, + { 1, 0, 32, 0, 8, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 2, -32, 0, 0, 8, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 3, -32, 32, 0, 8, { 0b0010, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks148[] = { + { 0, 0, 0, 0, 16, { 0b1101, 0 }, 0 }, + { 1, 0, 32, 0, 16, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 2, -32, 0, 0, 16, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 3, -32, 32, 0, 16, { 0b0010, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks149[] = { + { 0, 0, 0, 0, 64, { 0b1101, 0 }, 0 }, + { 1, 0, 32, 0, 64, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 2, -32, 0, 0, 64, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 3, -32, 32, 0, 64, { 0b0010, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks150[] = { + { 0, 0, 0, 0, 8, { 0b1101, 0 }, 0 }, + { 1, 0, 32, 0, 8, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 2, -32, 0, 0, 8, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 3, -32, 32, 0, 8, { 0b0010, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks151[] = { + { 0, 0, 0, 0, 32, { 0b1101, 0 }, 0 }, + { 1, 0, 32, 0, 32, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 2, -32, 0, 0, 32, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 3, -32, 32, 0, 32, { 0b0010, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks152[] = { + { 0, 0, 0, 0, 32, { 0b1101, 0 }, 0 }, + { 1, 0, 32, 0, 32, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 2, -32, 0, 0, 32, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 3, -32, 32, 0, 32, { 0b0010, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks153[] = { + { 0, 0, 0, 0, 8, { 0b1101, 0 }, 0 }, + { 1, 0, 32, 0, 8, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 2, -32, 0, 0, 8, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 3, -32, 32, 0, 8, { 0b0010, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks154[] = { + { 0, 0, 0, 0, 24, { 0b1101, 0 }, 0 }, + { 1, 0, 32, 0, 24, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 2, -32, 0, 0, 24, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 3, -32, 32, 0, 24, { 0b0010, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks155[] = { + { 0, 0, 0, 0, 24, { 0b1101, 0 }, 0 }, + { 1, 0, 32, 0, 24, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 2, -32, 0, 0, 24, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 3, -32, 32, 0, 24, { 0b0010, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks156[] = { + { 0, 0, 0, 0, 24, { 0b1101, 0 }, 0 }, + { 1, 0, 32, 0, 24, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 2, -32, 0, 0, 24, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 3, -32, 32, 0, 24, { 0b0010, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks157[] = { + { 0, 0, 0, 0, 24, { 0b1101, 0 }, 0 }, + { 1, 0, 32, 0, 24, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 2, -32, 0, 0, 24, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 3, -32, 32, 0, 24, { 0b0010, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks158[] = { + { 0, 0, 0, 0, 0, { 0b1101, 0 }, 0 }, + { 1, 0, 32, 0, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 2, -32, 0, 0, 0, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 3, -32, 32, 0, 0, { 0b0010, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks159[] = { + { 0, 0, 0, 0, 0, { 0b1101, 0 }, 0 }, + { 1, 0, 32, 0, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 2, -32, 0, 0, 0, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 3, -32, 32, 0, 0, { 0b0010, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks160[] = { + { 0, 0, 0, 0, 0, { 0b1101, 0 }, 0 }, + { 1, 0, 32, 0, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 2, -32, 0, 0, 0, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 3, -32, 32, 0, 0, { 0b0010, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks161[] = { + { 0, 0, 0, 0, 0, { 0b1101, 0 }, 0 }, + { 1, 0, 32, 0, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 2, -32, 0, 0, 0, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 3, -32, 32, 0, 0, { 0b0010, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks162[] = { + { 0, 0, 0, 0, 8, { 0b1101, 0 }, 0 }, + { 1, 0, 32, 0, 8, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 2, -32, 0, 0, 8, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 3, -32, 32, 0, 8, { 0b0010, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks163[] = { + { 0, 0, 0, 0, 8, { 0b1101, 0 }, 0 }, + { 1, 0, 32, 0, 8, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 2, -32, 0, 0, 8, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 3, -32, 32, 0, 8, { 0b0010, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks164[] = { + { 0, 0, 0, 0, 8, { 0b1101, 0 }, 0 }, + { 1, 0, 32, 0, 8, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 2, -32, 0, 0, 8, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 3, -32, 32, 0, 8, { 0b0010, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks165[] = { + { 0, 0, 0, 0, 8, { 0b1101, 0 }, 0 }, + { 1, 0, 32, 0, 8, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 2, -32, 0, 0, 8, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 3, -32, 32, 0, 8, { 0b0010, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks166[] = { + { 0, 0, 0, 0, 8, { 0b1101, 0 }, 0 }, + { 1, 0, 32, 0, 8, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 2, -32, 0, 0, 8, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 3, -32, 32, 0, 8, { 0b0010, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks167[] = { + { 0, 0, 0, 0, 8, { 0b1101, 0 }, 0 }, + { 1, 0, 32, 0, 8, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 2, -32, 0, 0, 8, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 3, -32, 32, 0, 8, { 0b0010, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks168[] = { + { 0, 0, 0, 0, 8, { 0b1101, 0 }, 0 }, + { 1, 0, 32, 0, 8, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 2, -32, 0, 0, 8, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 3, -32, 32, 0, 8, { 0b0010, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks169[] = { + { 0, 0, 0, 0, 8, { 0b1101, 0 }, 0 }, + { 1, 0, 32, 0, 8, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 2, -32, 0, 0, 8, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 3, -32, 32, 0, 8, { 0b0010, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks170[] = { + { 0, 0, 0, 0, 0, { 0b1101, 0 }, 0 }, + { 1, 0, 32, 0, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 2, -32, 0, 0, 0, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 3, -32, 32, 0, 0, { 0b0010, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks171[] = { + { 0, 0, 0, 0, 0, { 0b1101, 0 }, 0 }, + { 1, 0, 32, 0, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 2, -32, 0, 0, 0, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 3, -32, 32, 0, 0, { 0b0010, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks172[] = { + { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks173[] = { + { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks174[] = { + { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, + { 1, -32, 0, 0, 16, { 0b1111, 0 }, 0 }, + { 2, -64, 0, 0, 16, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks175[] = { + { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, + { 1, -32, 0, 0, 16, { 0b1111, 0 }, 0 }, + { 2, -64, 0, 0, 16, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks176[] = { + { 0, 0, 0, -32, 16, { 0b1111, 0 }, 0 }, + { 1, -32, 0, -32, 16, { 0b1111, 0 }, 0 }, + { 2, -64, 0, -32, 0, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks177[] = { + { 0, 0, 0, -32, 16, { 0b1111, 0 }, 0 }, + { 1, -32, 0, -32, 16, { 0b1111, 0 }, 0 }, + { 2, -64, 0, -32, 0, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks178[] = { + { 0, 0, 0, 0, 0, { 0b0111, 0b0100 }, 0 }, + { 1, 0, -32, 0, 16, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 2, -32, 0, 0, 16, { 0b0010, 0 }, 0 }, + { 3, -32, -32, 16, 16,{ 0b0111, 0b0110 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks179[] = { + { 0, 0, 0, 0, 16, { 0b1011, 0b1000 }, 0 }, + { 1, 0, 32, 0, 16, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 2, -32, 0, 0, 16, { 0b0001, 0 }, 0 }, + { 3, -32, 32, 16, 16,{ 0b1011, 0b1001 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks180[] = { + { 0, 0, 0, 16, 16,{ 0b0111, 0b0011 }, 0 }, + { 1, 0, -32, 0, 16, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 2, -32, 0, 0, 16, { 0b0010, 0 }, 0 }, + { 3, -32, -32, 0, 0, { 0b0111, 0b0001 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks181[] = { + { 0, 0, 0, 16, 16, { 0b1011, 0b0011 }, 0 }, + { 1, 0, 32, 0, 16, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 2, -32, 0, 0, 16, { 0b0001, 0 }, 0 }, + { 3, -32, 32, 0, 0, { 0b1011, 0b0010 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks182[] = { + { 0, 0, 0, 0, 16, { 0b1111, 0b1100 }, 0 }, + kTrackBlockEnd + }; + + // LeftLargeHalfLoopUp + static constexpr PreviewTrack TrackBlocks183[] = { + { 0, 0, 0, 0, 24, { 0b1111, 0b1100 }, 0 }, + { 1, -32, 0, 16, 40, { 0b1111, 0b1100 }, 0 }, + { 2, -64, 0, 32, 56, { 0b1111, 0 }, 0 }, + { 3, -96, 0, 64, 192, { 0b1111, 0 }, 0 }, + { 4, -128, -32, 120, 96, { 0b1111, 0 }, 0 }, + { 5, -96, -32, 64, 192, { 0b1111, 0 }, 0 }, + { 6, -64, -32, 248, 16, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + // RightLargeHalfLoopUp + static constexpr PreviewTrack TrackBlocks184[] = { + { 0, 0, 0, 0, 24, { 0b1111, 0b1100 }, 0 }, + { 1, -32, 0, 16, 40, { 0b1111, 0b1100 }, 0 }, + { 2, -64, 0, 32, 56, { 0b1111, 0 }, 0 }, + { 3, -96, 0, 64, 192, { 0b1111, 0 }, 0 }, + { 4, -128, 32, 120, 96, { 0b1111, 0 }, 0 }, + { 5, -96, 32, 64, 192, { 0b1111, 0 }, 0 }, + { 6, -64, 32, 248, 16, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + // LeftLargeHalfLoopDown + static constexpr PreviewTrack TrackBlocks185[] = { + { 0, 0, 0, -32, 16, { 0b1111, 0 }, 0 }, + { 1, -32, 0, -216, 192, { 0b1111, 0 }, 0 }, + { 2, -64, 0, -160, 96, { 0b1111, 0 }, 0 }, + { 3, -32, -32, -216, 192, { 0b1111, 0 }, 0 }, + { 4, 0, -32, -248, 56, { 0b1111, 0 }, 0 }, + { 5, 32, -32, -264, 40, { 0b1111, 0b1100 }, 0 }, + { 6, 64, -32, -280, 24, { 0b1111, 0b1100 }, 0 }, + kTrackBlockEnd + }; + + // RightLargeHalfLoopDown + static constexpr PreviewTrack TrackBlocks186[] = { + { 0, 0, 0, -32, 16, { 0b1111, 0 }, 0 }, + { 1, -32, 0, -216, 192, { 0b1111, 0 }, 0 }, + { 2, -64, 0, -160, 96, { 0b1111, 0 }, 0 }, + { 3, -32, 32, -216, 192, { 0b1111, 0 }, 0 }, + { 4, 0, 32, -248, 56, { 0b1111, 0 }, 0 }, + { 5, 32, 32, -264, 40, { 0b1111, 0b1100 }, 0 }, + { 6, 64, 32, -280, 24, { 0b1111, 0b1100 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks187[] = { + { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, + { 1, -32, 0, -16, 16, { 0b1111, 0 }, 0 }, + { 2, -64, 0, -16, 16, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks188[] = { + { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, + { 1, -32, 0, -16, 16, { 0b1111, 0 }, 0 }, + { 2, -64, 0, -16, 16, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks189[] = { + { 0, 0, 0, 0, 16, { 0b1111, 0 }, 0 }, + { 1, -32, 0, 0, 16, { 0b1111, 0 }, 0 }, + { 2, -64, 0, 16, 0, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks190[] = { + { 0, 0, 0, 0, 16, { 0b1111, 0 }, 0 }, + { 1, -32, 0, 0, 16, { 0b1111, 0 }, 0 }, + { 2, -64, 0, 16, 0, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + // FlyerHalfLoopUninvertedUp + static constexpr PreviewTrack TrackBlocks191[] = { + { 0, 0, 0, 0, 16, { 0b1111, 0b1100 }, 0 }, + { 1, -32, 0, 16, 16, { 0b1111, 0b1100 }, 0 }, + { 2, -64, 0, 32, 96,{ 0b0011, 0 }, 0 }, + { 3, -32, 0, 120, 16, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + // FlyerHalfLoopInvertedDown + static constexpr PreviewTrack TrackBlocks192[] = { + { 0, 0, 0, 0, 16, { 0b1111, 0 }, 0 }, + { 1, -32, 0, -88, 96,{ 0b0011, 0 }, 0 }, + { 2, 0, 0, -104, 16, { 0b1111, 0b1100 }, 0 }, + { 3, 32, 0, -120, 16, { 0b1111, 0b1100 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks193[] = { + { 0, 0, 0, 0, 16, { 0b1111, 0 }, 0 }, + { 1, -32, 0, 24, 32, { 0b0111, 0 }, 0 }, + { 2, -32, -32, 48, 16, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks194[] = { + { 0, 0, 0, 0, 16, { 0b1111, 0 }, 0 }, + { 1, -32, 0, 24, 32, { 0b1011, 0 }, 0 }, + { 2, -32, 32, 48, 16, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks195[] = { + { 0, 0, 0, 0, 16, { 0b1111, 0 }, 0 }, + { 1, -32, 0, -24, 32, { 0b0111, 0 }, 0 }, + { 2, -32, -32, -48, 16, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks196[] = { + { 0, 0, 0, 0, 16, { 0b1111, 0 }, 0 }, + { 1, -32, 0, -24, 32, { 0b1011, 0 }, 0 }, + { 2, -32, 32, -48, 16, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks197[] = { + { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, + { 1, -32, 0, 0, 32, { 0b1111, 0 }, 0 }, + { 2, -64, 0, 16, 0, { 0b1111, 0 }, 0 }, + { 3, 0, 0, 32, 0, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks198[] = { + { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, + { 1, -32, 0, -32, 32, { 0b1111, 0 }, 0 }, + { 2, -64, 0, -16, 0, { 0b1111, 0 }, 0 }, + { 3, 0, 0, -32, 0, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks199[] = { + { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, + { 1, -32, 0, 0, 0, { 0b1111, 0 }, 0 }, + { 2, -64, 0, 0, 0, { 0b1111, 0 }, 0 }, + { 3, -96, 0, 0, 0, { 0b1111, 0 }, 0 }, + { 4, -128, 0, 0, 0, { 0b1111, 0 }, 0 }, + { 5, -160, 0, 0, 0, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks200[] = { + { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, + { 1, -32, 0, 0, 0, { 0b1111, 0 }, 0 }, + { 2, -64, 0, 0, 0, { 0b1111, 0 }, 0 }, + { 3, -96, 0, 0, 0, { 0b1111, 0 }, 0 }, + { 4, -128, 0, 0, 0, { 0b1111, 0 }, 0 }, + { 5, -160, 0, 0, 0, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks201[] = { + { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, + { 1, -32, 0, 0, 0, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks202[] = { + { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, + { 1, -32, 0, 0, 0, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks203[] = { + { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, + { 1, -32, 0, 0, 0, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks204[] = { + { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, + { 1, -32, 0, 0, 0, { 0b1111, 0 }, 0 }, + { 2, -32, 32, 0, 0, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks205[] = { + { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, + { 1, -32, 0, 0, 0, { 0b1111, 0 }, 0 }, + { 2, -32, -32, 0, 0, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks206[] = { + { 0, 0, 0, 0, 16, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, + { 1, -32, 0, -40, 32, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, + { 2, -64, 0, -96, 56, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, + { 3, -96, 0, -96, 0, { 0b0000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 | RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks207[] = { + { 0, 0, 0, 0, 56, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, + { 1, 32, 0, 56, 32, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, + { 2, 64, 0, 96, 16, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks208[] = { + { 0, 0, 0, -32, 16, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, + { 1, -32, 0, -72, 32, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, + { 2, -64, 0, -128, 56, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, + { 3, -96, 0, -128, 0, { 0b0000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 | RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks209[] = { + { 0, 0, 0, 0, 0, { 0b0111, 0 }, 0 }, + { 1, 0, -32, 0, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 2, -32, 0, 0, 8, { 0b0010, 0 }, 0 }, + { 3, -32, -32, 0, 8, { 0b0111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks210[] = { + { 0, 0, 0, 0, 0, { 0b1011, 0 }, 0 }, + { 1, 0, 32, 0, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 2, -32, 0, 0, 8, { 0b0001, 0 }, 0 }, + { 3, -32, 32, 0, 8, { 0b1011, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks211[] = { + { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, + { 1, 0, -32, 0, 0, { 0b1111, 0 }, 0 }, + { 2, -32, -32, 0, 0, { 0b1111, 0 }, 0 }, + { 3, -64, -32, 0, 0, { 0b1111, 0 }, 0 }, + { 4, -32, 0, 0, 0, { 0b1111, 0 }, 0 }, + { 5, -64, 0, 0, 0, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks212[] = { + { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, + { 1, 0, 32, 0, 0, { 0b1111, 0 }, 0 }, + { 2, -32, 32, 0, 0, { 0b1111, 0 }, 0 }, + { 3, -64, 32, 0, 0, { 0b1111, 0 }, 0 }, + { 4, -32, 0, 0, 0, { 0b1111, 0 }, 0 }, + { 5, -64, 0, 0, 0, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks213[] = { + { 0, 0, 0, 0, 32, { 0b1111, 0 }, 0 }, + { 1, 32, 0, 0, 32, { 0b1111, 0 }, 0 }, + { 2, -64, 0, 0, 32, { 0b1111, 0 }, 0 }, + { 3, -32, 0, 0, 32, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks214[] = { + { 0, 0, 0, 0, 48, { 0b1111, 0 }, 0 }, + { 1, 32, 0, 0, 48, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks215[] = { + { 0, 0, 0, 0, 208, { 0b1111, 0 }, 0 }, + { 1, 32, 0, 0, 208, { 0b1111, 0 }, 0 }, + { 2, -32, 0, 0, 160, { 0b1111, 0 }, 0 }, + { 3, -64, 0, 0, 80, { 0b1111, 0 }, 0 }, + { 4, -96, 0, 0, 48, { 0b1111, 0 }, 0 }, + { 5, -128, 0, 0, 32, { 0b1111, 0 }, 0 }, + { 6, -160, 0, 0, 16, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks216[] = { + { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks217[] = { + { 0, 0, 0, 0, 16, { 0b0111, 0b0100 }, 0 }, + { 1, 0, -32, 16, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 2, -32, 0, 16, 0, { 0b0010, 0 }, 0 }, + { 3, -32, -32, 16, 16,{ 0b0111, 0b0110 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks218[] = { + { 0, 0, 0, 0, 16, { 0b1011, 0b1000 }, 0 }, + { 1, 0, 32, 16, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 2, -32, 0, 16, 0, { 0b0001, 0 }, 0 }, + { 3, -32, 32, 16, 16,{ 0b1011, 0b1001 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks219[] = { + { 0, 0, 0, 16, 16,{ 0b0111, 0b0011 }, 0 }, + { 1, 0, -32, 16, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 2, -32, 0, 16, 0, { 0b0010, 0 }, 0 }, + { 3, -32, -32, 0, 16, { 0b0111, 0b0001 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks220[] = { + { 0, 0, 0, 16, 16, { 0b1011, 0b0011 }, 0 }, + { 1, 0, 32, 16, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 2, -32, 0, 16, 0, { 0b0001, 0 }, 0 }, + { 3, -32, 32, 0, 16, { 0b1011, 0b0010 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks221[] = { + { 0, 0, 0, 0, 16, { 0b1111, 0b1100 }, 0 }, + { 1, 0, -32, 16, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 2, -32, 0, 16, 16, { 0b0111, 0b0100 }, 0 }, + { 3, -32, -32, 24, 16, { 0b1101, 0 }, 0 }, + { 4, -32, -64, 48, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 5, -64, -32, 32, 16, { 0b0111, 0b0100 }, 0 }, + { 6, -64, -64, 48, 16, { 0b1111, 0b0110 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks222[] = { + { 0, 0, 0, 0, 16, { 0b1111, 0b1100 }, 0 }, + { 1, 0, 32, 16, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 2, -32, 0, 16, 16, { 0b1011, 0b1000 }, 0 }, + { 3, -32, 32, 24, 16, { 0b1110, 0 }, 0 }, + { 4, -32, 64, 48, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 5, -64, 32, 32, 16, { 0b1011, 0b1000 }, 0 }, + { 6, -64, 64, 48, 16, { 0b1111, 0b1001 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks223[] = { + { 0, 0, 0, 48, 16, { 0b1111, 0b0011 }, 0 }, + { 1, 0, -32, 48, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 2, -32, 0, 32, 16, { 0b0111, 0b0001 }, 0 }, + { 3, -32, -32, 24, 16, { 0b1101, 0 }, 0 }, + { 4, -32, -64, 16, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 5, -64, -32, 16, 16, { 0b0111, 0b0001 }, 0 }, + { 6, -64, -64, 0, 16, { 0b1111, 0b1001 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks224[] = { + { 0, 0, 0, 48, 16, { 0b1111, 0b0011 }, 0 }, + { 1, 0, 32, 48, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 2, -32, 0, 32, 16, { 0b1011, 0b0010 }, 0 }, + { 3, -32, 32, 24, 16, { 0b1110, 0 }, 0 }, + { 4, -32, 64, 16, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 5, -64, 32, 16, 16, { 0b1011, 0b0010 }, 0 }, + { 6, -64, 64, 0, 16, { 0b1111, 0b0110 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks225[] = { + { 0, 0, 0, 0, 16, { 0b1111, 0b1100 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks226[] = { + { 0, 0, 0, 0, 16, { 0b1111, 0b1100 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks227[] = { + { 0, 0, 0, 0, 16, { 0b1111, 0b1100 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks228[] = { + { 0, 0, 0, 0, 16, { 0b1111, 0b1100 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks229[] = { + { 0, 0, 0, 0, 16, { 0b1111, 0b0011 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks230[] = { + { 0, 0, 0, 0, 16, { 0b1111, 0b0011 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks231[] = { + { 0, 0, 0, 0, 16, { 0b1111, 0b0011 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks232[] = { + { 0, 0, 0, 0, 16, { 0b1111, 0b0011 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks233[] = { + { 0, 0, 0, 0, 8, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks234[] = { + { 0, 0, 0, 0, 8, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks235[] = { + { 0, 0, 0, 0, 8, { 0b1111, 0b1100 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks236[] = { + { 0, 0, 0, 0, 8, { 0b1111, 0b1100 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks237[] = { + { 0, 0, 0, 0, 8, { 0b1111, 0b0011 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks238[] = { + { 0, 0, 0, 0, 8, { 0b1111, 0b0011 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks239[] = { + { 0, 0, 0, 0, 8, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks240[] = { + { 0, 0, 0, 0, 8, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks241[] = { + { 0, 0, 0, 0, 8, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks242[] = { + { 0, 0, 0, 0, 8, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks243[] = { + { 0, 0, 0, 0, 8, { 0b1111, 0b1100 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks244[] = { + { 0, 0, 0, 0, 8, { 0b1111, 0b1100 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks245[] = { + { 0, 0, 0, 0, 8, { 0b1111, 0b0011 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks246[] = { + { 0, 0, 0, 0, 8, { 0b1111, 0b0011 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks247[] = { + { 0, 0, 0, 0, 8, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks248[] = { + { 0, 0, 0, 0, 8, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks249[] = { + { 0, 0, 0, 0, 72, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, + { 1, 0, 32, 0, 0, { 0b0000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 | RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks250[] = { + { 0, 0, 0, 0, 72, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, + { 1, 0, -32, 0, 0, { 0b0000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 | RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks251[] = { + { 0, 0, 0, 0, 72, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, + { 1, 0, 32, 0, 0, { 0b0000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 | RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks252[] = { + { 0, 0, 0, 0, 72, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, + { 1, 0, -32, 0, 0, { 0b0000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 | RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks253[] = { + { 0, 0, 0, 0, 56, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, + { 1, 32, 0, 56, 32, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, + { 2, 64, 0, 96, 16, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks254[] = { + { 0, 0, 0, -32, 16, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, + { 1, -32, 0, -72, 32, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, + { 2, -64, 0, -128, 56, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, + { 3, -96, 0, -128, 0, { 0b0000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 | RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocks255[] = { + { 0, 0, 0, 32, 56, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, + { 1, 32, 0, 88, 32, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, + { 2, 64, 0, 128, 16, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocksRotationControlToggle[] = { + { 0, 0, 0, 0, 0, { 0b1111, 0b1100 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocksFlatTrack1x4A[] = { + { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, + { 1, -64, 0, 0, 0, { 0b1111, 0 }, 0 }, + { 2, -32, 0, 0, 0, { 0b1111, 0 }, 0 }, + { 3, 32, 0, 0, 0, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_1 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocksFlatTrack2x2[] = { + { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, + { 1, 0, 32, 0, 0, { 0b1111, 0 }, 0 }, + { 2, 32, 0, 0, 0, { 0b1111, 0 }, 0 }, + { 3, 32, 32, 0, 0, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocksFlatTrack4x4[] = { + { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, + { 1, 0, 32, 0, 0, { 0b1111, 0 }, 0 }, + { 2, 0, 64, 0, 0, { 0b1111, 0 }, 0 }, + { 3, 0, 96, 0, 0, { 0b1111, 0 }, 0 }, + { 4, 32, 0, 0, 0, { 0b1111, 0 }, 0 }, + { 5, 32, 32, 0, 0, { 0b1111, 0 }, 0 }, + { 6, 32, 64, 0, 0, { 0b1111, 0 }, 0 }, + { 7, 32, 96, 0, 0, { 0b1111, 0 }, 0 }, + { 8, 64, 0, 0, 0, { 0b1111, 0 }, 0 }, + { 9, 64, 32, 0, 0, { 0b1111, 0 }, 0 }, + { 10, 64, 64, 0, 0, { 0b1111, 0 }, 0 }, + { 11, 64, 96, 0, 0, { 0b1111, 0 }, 0 }, + { 12, 96, 0, 0, 0, { 0b1111, 0 }, 0 }, + { 13, 96, 32, 0, 0, { 0b1111, 0 }, 0 }, + { 14, 96, 64, 0, 0, { 0b1111, 0 }, 0 }, + { 15, 96, 96, 0, 0, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocksFlatTrack2x4[] = { + { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, + { 1, 0, 32, 0, 0, { 0b1111, 0 }, 0 }, + { 2, 0, 64, 0, 0, { 0b1111, 0 }, 0 }, + { 3, 0, 96, 0, 0, { 0b1111, 0 }, 0 }, + { 4, 32, 0, 0, 0, { 0b1111, 0 }, 0 }, + { 5, 32, 32, 0, 0, { 0b1111, 0 }, 0 }, + { 6, 32, 64, 0, 0, { 0b1111, 0 }, 0 }, + { 7, 32, 96, 0, 0, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_1 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocksFlatTrack1x5[] = { + { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, + { 1, -64, 0, 0, 0, { 0b1111, 0 }, 0 }, + { 2, -32, 0, 0, 0, { 0b1111, 0 }, 0 }, + { 3, 32, 0, 0, 0, { 0b1111, 0 }, 0 }, + { 4, 64, 0, 0, 0, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_1 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocksFlatTrack1x1A[] = { + { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocksFlatTrack1x4B[] = { + { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, + { 1, -64, 0, 0, 0, { 0b1111, 0 }, 0 }, + { 2, -32, 0, 0, 0, { 0b1111, 0 }, 0 }, + { 3, 32, 0, 0, 0, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_1 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocksFlatTrack1x1B[] = { + { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocksFlatTrack1x4C[] = { + { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, + { 1, -64, 0, 0, 0, { 0b1111, 0 }, 0 }, + { 2, -32, 0, 0, 0, { 0b1111, 0 }, 0 }, + { 3, 32, 0, 0, 0, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_1 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocksFlatTrack3x3[] = { + { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, + { 1, -32, -32, 0, 0, { 0b1111, 0 }, 0 }, + { 2, -32, 0, 0, 0, { 0b1111, 0 }, 0 }, + { 3, -32, 32, 0, 0, { 0b1111, 0 }, 0 }, + { 4, 0, -32, 0, 0, { 0b1111, 0 }, 0 }, + { 5, 0, 32, 0, 0, { 0b1111, 0 }, 0 }, + { 6, 32, -32, 0, 0, { 0b1111, 0 }, 0 }, + { 7, 32, 32, 0, 0, { 0b1111, 0 }, 0 }, + { 8, 32, 0, 0, 0, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_1 }, + kTrackBlockEnd + }; + + + static constexpr PreviewTrack TrackBlocksLeftLargeCorkscrewUp[] = { + { 0, 0, 0, 0, 16, { 0b1111, 0 }, 0 }, + { 1, -32, 0, 8, 32, { 0b1111, 0 }, 0 }, + { 2, -64, 0, 32, 24, { 0b0111, 0 }, 0 }, + { 3, -32, -32, 32, 24, { 0b1000, 0 }, 0 }, + { 4, -64, -32, 48, 40, { 0b1111, 0 }, 0 }, + { 5, -64, -64, 72, 24, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocksRightLargeCorkscrewUp[] = { + { 0, 0, 0 , 0, 16, { 0b1111, 0 }, 0 }, + { 1, -32, 0, 8, 32, { 0b1111, 0 }, 0 }, + { 2, -64, 0, 32, 24, { 0b1011, 0 }, 0 }, + { 3, -32, 32, 32, 24, { 0b0100, 0 }, 0 }, + { 4, -64, 32, 48, 40, { 0b1111, 0 }, 0 }, + { 5, -64, 64, 72, 24, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocksLeftLargeCorkscrewDown[] = { + { 0, 0, 0 , -40, 24, { 0b1111, 0 }, 0 }, + { 1, -32, 0, -64, 40, { 0b1111, 0 }, 0 }, + { 2, -32, -32, -80, 24, { 0b1000, 0 }, 0 }, + { 3, -64, 0, -80, 24, { 0b0111, 0 }, 0 }, + { 4, -64, -32, -104, 32, { 0b1111, 0 }, 0 }, + { 5, -64, -64, -112, 16, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocksRightLargeCorkscrewDown[] = { + { 0, 0, 0 , -40, 24, { 0b1111, 0 }, 0 }, + { 1, -32, 0, -64, 40, { 0b1111, 0 }, 0 }, + { 2, -32, 32, -80, 24, { 0b0100, 0 }, 0 }, + { 3, -64, 0, -80, 24, { 0b1011, 0 }, 0 }, + { 4, -64, 32, -104, 32, { 0b1111, 0 }, 0 }, + { 5, -64, 64, -112, 16, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocksLeftMediumHalfLoopUp[] = { + { 0, 0, 0, 0, 24, { 0b1111, 0 }, 0 }, + { 1, -32, 0, 16, 48, { 0b1111, 0 }, 0 }, + { 2, -64, 0, 56,120, { 0b1111, 0 }, 0 }, + { 3, -64, -32, 56,120, { 0b1111, 0 }, 0 }, + { 4, -32, -32,168, 24, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocksRightMediumHalfLoopUp[] = { + { 0, 0, 0, 0, 24, { 0b1111, 0 }, 0 }, + { 1, -32, 0, 16, 48, { 0b1111, 0 }, 0 }, + { 2, -64, 0, 56,120, { 0b1111, 0 }, 0 }, + { 3, -64, 32, 56,120, { 0b1111, 0 }, 0 }, + { 4, -32, 32,168, 24, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocksLeftMediumHalfLoopDown[] = { + { 0, 0, 0, -48, 24, { 0b1111, 0 }, 0 }, + { 1, -32, 0, -160,120, { 0b1111, 0 }, 0 }, + { 2, -32, -32, -160,120, { 0b1111, 0 }, 0 }, + { 3, 0, -32, -200, 48, { 0b1111, 0 }, 0 }, + { 4, 32, -32, -216, 24, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocksRightMediumHalfLoopDown[] = { + { 0, 0, 0 , -48, 24, { 0b1111, 0 }, 0 }, + { 1, -32, 0, -160, 120, { 0b1111, 0 }, 0 }, + { 2, -32, 32, -160, 120, { 0b1111, 0 }, 0 }, + { 3, 0, 32, -200, 48, { 0b1111, 0 }, 0 }, + { 4, 32, 32, -216, 24, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocksLeftZeroGRollUp[] = { + { 0, 0, 0, 0, 16, { 0b1111, 0 }, 0 }, + { 1, -32, 0, 8, 24, { 0b1111, 0 }, 0 }, + { 2, -64, 0, 24, 16, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocksRightZeroGRollUp[] = { + { 0, 0, 0, 0, 16, { 0b1111, 0 }, 0 }, + { 1, -32, 0, 8, 24, { 0b1111, 0 }, 0 }, + { 2, -64, 0, 24, 16, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocksLeftZeroGRollDown[] = { + { 0, 0, 0, -32, 16, { 0b1111, 0 }, 0 }, + { 1, -32, 0, -48, 24, { 0b1111, 0 }, 0 }, + { 2, -64, 0, -56, 16, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocksRightZeroGRollDown[] = { + { 0, 0, 0 ,-32, 16, { 0b1111, 0 }, 0 }, + { 1, -32, 0, -48, 24, { 0b1111, 0 }, 0 }, + { 2, -64, 0, -56, 16, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + + static constexpr PreviewTrack TrackBlocksLeftLargeZeroGRollUp[] = { + { 0, 0, 0, 0, 64, { 0b1111, 0 }, 0 }, + { 1, -32, 0, 56, 48, { 0b1111, 0 }, 0 }, + { 2, -64, 0, 96, 40, { 0b1111, 0 }, 0 }, + { 3, -96, 0,120, 16, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocksRightLargeZeroGRollUp[] = { + { 0, 0, 0, 0, 64, { 0b1111, 0 }, 0 }, + { 1, -32, 0, 56, 48, { 0b1111, 0 }, 0 }, + { 2, -64, 0, 96, 40, { 0b1111, 0 }, 0 }, + { 3, -96, 0, 120, 16, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocksLeftLargeZeroGRollDown[] = { + { 0, 0, 0, -32, 16, { 0b1111, 0 }, 0 }, + { 1, -32, 0, -56, 40, { 0b1111, 0 }, 0 }, + { 2, -64, 0, -96, 48, { 0b1111, 0 }, 0 }, + { 3, -96, 0, -152, 64, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocksRightLargeZeroGRollDown[] = { + { 0, 0, 0 , -32, 16, { 0b1111, 0 }, 0 }, + { 1, -32, 0, -56, 40, { 0b1111, 0 }, 0 }, + { 2, -64, 0, -96, 48, { 0b1111, 0 }, 0 }, + { 3, -96, 0, -152, 64, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocksLeftFlyerLargeHalfLoopUninvertedUp[] = { + { 0, 0, 0, 0, 24, { 0b1111, 0b1100 }, 0 }, + { 1, -32, 0, 16, 40, { 0b1111, 0b1100 }, 0 }, + { 2, -64, 0, 32, 56, { 0b1111, 0 }, 0 }, + { 3, -96, 0, 64, 192, { 0b1111, 0 }, 0 }, + { 4, -128, -32, 120, 96, { 0b1111, 0 }, 0 }, + { 5, -96, -32, 64, 192, { 0b1111, 0 }, 0 }, + { 6, -64, -32, 248, 16, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocksRightFlyerLargeHalfLoopUninvertedUp[] = { + { 0, 0, 0, 0, 24, { 0b1111, 0b1100 }, 0 }, + { 1, -32, 0, 16, 40, { 0b1111, 0b1100 }, 0 }, + { 2, -64, 0, 32, 56, { 0b1111, 0 }, 0 }, + { 3, -96, 0, 64, 192, { 0b1111, 0 }, 0 }, + { 4, -128, 32, 120, 96, { 0b1111, 0 }, 0 }, + { 5, -96, 32, 64, 192, { 0b1111, 0 }, 0 }, + { 6, -64, 32, 248, 16, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocksLeftFlyerLargeHalfLoopInvertedDown[] = { + { 0, 0, 0, 0, 16, { 0b1111, 0 }, 0 }, + { 1, -32, 0, -184, 192, { 0b1111, 0 }, 0 }, + { 2, -64, 0, -128, 96, { 0b1111, 0 }, 0 }, + { 3, -32, -32, -184, 192, { 0b1111, 0 }, 0 }, + { 4, 0, -32, -216, 56, { 0b1111, 0 }, 0 }, + { 5, 32, -32, -232, 40, { 0b1111, 0b1100 }, 0 }, + { 6, 64, -32, -248, 24, { 0b1111, 0b1100 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocksRightFlyerLargeHalfLoopInvertedDown[] = { + { 0, 0, 0, 0, 16, { 0b1111, 0 }, 0 }, + { 1, -32, 0, -184, 192, { 0b1111, 0 }, 0 }, + { 2, -64, 0, -128, 96, { 0b1111, 0 }, 0 }, + { 3, -32, 32, -184, 192, { 0b1111, 0 }, 0 }, + { 4, 0, 32, -216, 56, { 0b1111, 0 }, 0 }, + { 5, 32, 32, -232, 40, { 0b1111, 0b1100 }, 0 }, + { 6, 64, 32, -248, 24, { 0b1111, 0b1100 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocksLeftFlyerLargeHalfLoopInvertedUp[] = { + { 0, 0, 0, 0, 24, { 0b1111, 0b1100 }, 0 }, + { 1, -32, 0, 16, 40, { 0b1111, 0b1100 }, 0 }, + { 2, -64, 0, 32, 56, { 0b1111, 0 }, 0 }, + { 3, -96, 0, 64, 192, { 0b1111, 0 }, 0 }, + { 4, -128, -32, 120, 96, { 0b1111, 0 }, 0 }, + { 5, -96, -32, 64, 192, { 0b1111, 0 }, 0 }, + { 6, -64, -32, 248, 32, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocksRightFlyerLargeHalfLoopInvertedUp[] = { + { 0, 0, 0, 0, 24, { 0b1111, 0b1100 }, 0 }, + { 1, -32, 0, 16, 40, { 0b1111, 0b1100 }, 0 }, + { 2, -64, 0, 32, 56, { 0b1111, 0 }, 0 }, + { 3, -96, 0, 64, 192, { 0b1111, 0 }, 0 }, + { 4, -128, 32, 120, 96, { 0b1111, 0 }, 0 }, + { 5, -96, 32, 64, 192, { 0b1111, 0 }, 0 }, + { 6, -64, 32, 248, 32, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocksLeftFlyerLargeHalfLoopUninvertedDown[] = { + { 0, 0, 0, -32, 32, { 0b1111, 0 }, 0 }, + { 1, -32, 0, -216, 192, { 0b1111, 0 }, 0 }, + { 2, -64, 0, -160, 96, { 0b1111, 0 }, 0 }, + { 3, -32, -32, -216, 192, { 0b1111, 0 }, 0 }, + { 4, 0, -32, -248, 56, { 0b1111, 0 }, 0 }, + { 5, 32, -32, -264, 40, { 0b1111, 0b1100 }, 0 }, + { 6, 64, -32, -280, 24, { 0b1111, 0b1100 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocksRightFlyerLargeHalfLoopUninvertedDown[] = { + { 0, 0, 0, -32, 32, { 0b1111, 0 }, 0 }, + { 1, -32, 0, -216, 192, { 0b1111, 0 }, 0 }, + { 2, -64, 0, -160, 96, { 0b1111, 0 }, 0 }, + { 3, -32, 32, -216, 192, { 0b1111, 0 }, 0 }, + { 4, 0, 32, -248, 56, { 0b1111, 0 }, 0 }, + { 5, 32, 32, -264, 40, { 0b1111, 0b1100 }, 0 }, + { 6, 64, 32, -280, 24, { 0b1111, 0b1100 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocksFlyerHalfLoopUpInverted[] = { + { 0, 0, 0, 0, 16, { 0b1111, 0b1100 }, 0 }, + { 1, -32, 0, 16, 16, { 0b1111, 0b1100 }, 0 }, + { 2, -64, 0, 32, 96,{ 0b0011, 0 }, 0 }, + { 3, -32, 0, 120, 32, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocksFlyerHalfLoopDownUpright[] = { + { 0, 0, 0, -32, 32, { 0b1111, 0 }, 0 }, + { 1, -32, 0, -120, 96,{ 0b0011, 0 }, 0 }, + { 2, 0, 0, -136, 16, { 0b1111, 0b1100 }, 0 }, + { 3, 32, 0, -152, 16, { 0b1111, 0b1100 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocksLeftEighthToDiagUp25[] = { + { 0, 0, 0, 0, 16, { 0b1111, 0 }, 0 }, + { 1, -32, 0, 16, 32, { 0b1111, 0 }, 0 }, + { 2, -32, -32, 32, 16, { 0b1000, 0 }, 0 }, + { 3, -64, 0, 32, 16, { 0b0010, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 4, -64, -32, 32, 24, { 0b0001, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocksRightEighthToDiagUp25[] = { + { 0, 0, 0, 0, 16, { 0b1111, 0 }, 0 }, + { 1, -32, 0, 16, 32, { 0b1111, 0 }, 0 }, + { 2, -32, 32, 32, 16, { 0b0100, 0 }, 0 }, + { 3, -64, 0, 32, 16, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 4, -64, 32, 32, 24, { 0b0010, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocksLeftEighthToDiagDown25[] = { + { 0, 0, 0, -16, 16, { 0b1111, 0 }, 0 }, + { 1, -32, 0, -32, 16, { 0b1111, 0 }, 0 }, + { 2, -32, -32, -48, 16, { 0b1000, 0 }, 0 }, + { 3, -64, 0, -48, 16, { 0b0010, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 4, -64, -32, -48, 16, { 0b0001, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocksRightEighthToDiagDown25[] = { + { 0, 0, 0, -16, 16, { 0b1111, 0 }, 0 }, + { 1, -32, 0, -32, 16, { 0b1111, 0 }, 0 }, + { 2, -32, 32, -48, 16, { 0b0100, 0 }, 0 }, + { 3, -64, 0, -48, 16, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 4, -64, 32, -48, 16, { 0b0010, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocksLeftEighthToOrthogonalUp25[] = { + { 0, 0, 0, 0, 16, { 0b1101, 0 }, 0 }, + { 1, -32, 0, 0, 16, { 0b0001, 0 }, 0 }, + { 2, 0, 32, 0, 16, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 3, -32, 32, 16, 16, { 0b1111, 0 }, 0 }, + { 4, -64, 32, 32, 16, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocksRightEighthToOrthogonalUp25[] = { + { 0, 0, 0, 0, 16, { 0b1101, 0 }, 0 }, + { 1, 0, 32, 0, 16, { 0b0100, 0 }, 0 }, + { 2, -32, 0, 0, 16, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 3, -32, 32, 16, 16, { 0b1111, 0 }, 0 }, + { 4, -32, 64, 32, 16, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocksLeftEighthToOrthogonalDown25[] = { + { 0, 0, 0, -16, 24, { 0b1101, 0 }, 0 }, + { 1, -32, 0, -16, 16, { 0b0001, 0 }, 0 }, + { 2, 0, 32, -16, 16, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 3, -32, 32, -32, 32, { 0b1111, 0 }, 0 }, + { 4, -64, 32, -48, 16, { 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + static constexpr PreviewTrack TrackBlocksRightEighthToOrthogonalDown25[] = { + { 0, 0, 0, -16, 24, { 0b1101, 0 }, 0 }, + { 1, 0, 32, -16, 16,{ 0b0100, 0 }, 0 }, + { 2, -32, 0, -16, 16,{ 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, + { 3, -32, 32, -32, 32,{ 0b1111, 0 }, 0 }, + { 4, -32, 64, -48, 16,{ 0b1111, 0 }, 0 }, + kTrackBlockEnd + }; + + + // rct2: 0x00994638 + static constexpr std::array TrackBlocks = { + TrackBlocks000, + TrackBlocks001, + TrackBlocks002, + TrackBlocks003, + TrackBlocks004, + TrackBlocks005, + TrackBlocks006, + TrackBlocks007, + TrackBlocks008, + TrackBlocks009, + TrackBlocks010, + TrackBlocks011, + TrackBlocks012, + TrackBlocks013, + TrackBlocks014, + TrackBlocks015, + TrackBlocks016, + TrackBlocks017, + TrackBlocks018, + TrackBlocks019, + TrackBlocks020, + TrackBlocks021, + TrackBlocks022, + TrackBlocks023, + TrackBlocks024, + TrackBlocks025, + TrackBlocks026, + TrackBlocks027, + TrackBlocks028, + TrackBlocks029, + TrackBlocks030, + TrackBlocks031, + TrackBlocks032, + TrackBlocks033, + TrackBlocks034, + TrackBlocks035, + TrackBlocks036, + TrackBlocks037, + TrackBlocks038, + TrackBlocks039, + TrackBlocks040, + TrackBlocks041, + TrackBlocks042, + TrackBlocks043, + TrackBlocks044, + TrackBlocks045, + TrackBlocks046, + TrackBlocks047, + TrackBlocks048, + TrackBlocks049, + TrackBlocks050, + TrackBlocks051, + TrackBlocks052, + TrackBlocks053, + TrackBlocks054, + TrackBlocks055, + TrackBlocks056, + TrackBlocks057, + TrackBlocks058, + TrackBlocks059, + TrackBlocks060, + TrackBlocks061, + TrackBlocks062, + TrackBlocks063, + TrackBlocks064, + TrackBlocks065, + TrackBlocks066, + TrackBlocks067, + TrackBlocks068, + TrackBlocks069, + TrackBlocks070, + TrackBlocks071, + TrackBlocks072, + TrackBlocks073, + TrackBlocks074, + TrackBlocks075, + TrackBlocks076, + TrackBlocks077, + TrackBlocks078, + TrackBlocks079, + TrackBlocks080, + TrackBlocks081, + TrackBlocks082, + TrackBlocks083, + TrackBlocks084, + TrackBlocks085, + TrackBlocks086, + TrackBlocks087, + TrackBlocks088, + TrackBlocks089, + TrackBlocks090, + TrackBlocks091, + TrackBlocks092, + TrackBlocks093, + TrackBlocks094, + TrackBlocks095, + TrackBlocks096, + TrackBlocks097, + TrackBlocks098, + TrackBlocks099, + TrackBlocks100, + TrackBlocks101, + TrackBlocks102, + TrackBlocks103, + TrackBlocks104, + TrackBlocks105, + TrackBlocks106, + TrackBlocks107, + TrackBlocks108, + TrackBlocks109, + TrackBlocks110, + TrackBlocks111, + TrackBlocks112, + TrackBlocks113, + TrackBlocks114, + TrackBlocks115, + TrackBlocks116, + TrackBlocks117, + TrackBlocks118, + TrackBlocks119, + TrackBlocks120, + TrackBlocks121, + TrackBlocks122, + TrackBlocks123, + TrackBlocks124, + TrackBlocks125, + TrackBlocks126, + TrackBlocks127, + TrackBlocks128, + TrackBlocks129, + TrackBlocks130, + TrackBlocks131, + TrackBlocks132, + TrackBlocks133, + TrackBlocks134, + TrackBlocks135, + TrackBlocks136, + TrackBlocks137, + TrackBlocks138, + TrackBlocks139, + TrackBlocks140, + TrackBlocks141, + TrackBlocks142, + TrackBlocks143, + TrackBlocks144, + TrackBlocks145, + TrackBlocks146, + TrackBlocks147, + TrackBlocks148, + TrackBlocks149, + TrackBlocks150, + TrackBlocks151, + TrackBlocks152, + TrackBlocks153, + TrackBlocks154, + TrackBlocks155, + TrackBlocks156, + TrackBlocks157, + TrackBlocks158, + TrackBlocks159, + TrackBlocks160, + TrackBlocks161, + TrackBlocks162, + TrackBlocks163, + TrackBlocks164, + TrackBlocks165, + TrackBlocks166, + TrackBlocks167, + TrackBlocks168, + TrackBlocks169, + TrackBlocks170, + TrackBlocks171, + TrackBlocks172, + TrackBlocks173, + TrackBlocks174, + TrackBlocks175, + TrackBlocks176, + TrackBlocks177, + TrackBlocks178, + TrackBlocks179, + TrackBlocks180, + TrackBlocks181, + TrackBlocks182, + TrackBlocks183, + TrackBlocks184, + TrackBlocks185, + TrackBlocks186, + TrackBlocks187, + TrackBlocks188, + TrackBlocks189, + TrackBlocks190, + TrackBlocks191, + TrackBlocks192, + TrackBlocks193, + TrackBlocks194, + TrackBlocks195, + TrackBlocks196, + TrackBlocks197, + TrackBlocks198, + TrackBlocks199, + TrackBlocks200, + TrackBlocks201, + TrackBlocks202, + TrackBlocks203, + TrackBlocks204, + TrackBlocks205, + TrackBlocks206, + TrackBlocks207, + TrackBlocks208, + TrackBlocks209, + TrackBlocks210, + TrackBlocks211, + TrackBlocks212, + TrackBlocks213, + TrackBlocks214, + TrackBlocks215, + TrackBlocks216, + TrackBlocks217, + TrackBlocks218, + TrackBlocks219, + TrackBlocks220, + TrackBlocks221, + TrackBlocks222, + TrackBlocks223, + TrackBlocks224, + TrackBlocks225, + TrackBlocks226, + TrackBlocks227, + TrackBlocks228, + TrackBlocks229, + TrackBlocks230, + TrackBlocks231, + TrackBlocks232, + TrackBlocks233, + TrackBlocks234, + TrackBlocks235, + TrackBlocks236, + TrackBlocks237, + TrackBlocks238, + TrackBlocks239, + TrackBlocks240, + TrackBlocks241, + TrackBlocks242, + TrackBlocks243, + TrackBlocks244, + TrackBlocks245, + TrackBlocks246, + TrackBlocks247, + TrackBlocks248, + TrackBlocks249, + TrackBlocks250, + TrackBlocks251, + TrackBlocks252, + TrackBlocks253, + TrackBlocks254, + TrackBlocks255, + TrackBlocksRotationControlToggle, + + TrackBlocksFlatTrack1x4A, + TrackBlocksFlatTrack2x2, + TrackBlocksFlatTrack4x4, + TrackBlocksFlatTrack2x4, + TrackBlocksFlatTrack1x5, + TrackBlocksFlatTrack1x1A, + TrackBlocksFlatTrack1x4B, + TrackBlocksFlatTrack1x1B, + TrackBlocksFlatTrack1x4C, + TrackBlocksFlatTrack3x3, + TrackBlocksLeftLargeCorkscrewUp, + TrackBlocksRightLargeCorkscrewUp, + TrackBlocksLeftLargeCorkscrewDown, + TrackBlocksRightLargeCorkscrewDown, + TrackBlocksLeftMediumHalfLoopUp, + TrackBlocksRightMediumHalfLoopUp, + TrackBlocksLeftMediumHalfLoopDown, + TrackBlocksRightMediumHalfLoopDown, + TrackBlocksLeftZeroGRollUp, + TrackBlocksRightZeroGRollUp, + TrackBlocksLeftZeroGRollDown, + TrackBlocksRightZeroGRollDown, + TrackBlocksLeftLargeZeroGRollUp, + TrackBlocksRightLargeZeroGRollUp, + TrackBlocksLeftLargeZeroGRollDown, + TrackBlocksRightLargeZeroGRollDown, + + TrackBlocksLeftFlyerLargeHalfLoopUninvertedUp, // LeftFlyerLargeHalfLoopUninvertedUp + TrackBlocksRightFlyerLargeHalfLoopUninvertedUp, // RightFlyerLargeHalfLoopUninvertedUp + TrackBlocksLeftFlyerLargeHalfLoopInvertedDown, // LeftFlyerLargeHalfLoopInvertedDown + TrackBlocksRightFlyerLargeHalfLoopInvertedDown, // RightFlyerLargeHalfLoopInvertedDown + TrackBlocksLeftFlyerLargeHalfLoopInvertedUp, // TrackElemType::LeftFlyerLargeHalfLoopInvertedUp + TrackBlocksRightFlyerLargeHalfLoopInvertedUp, // TrackElemType::RightFlyerLargeHalfLoopInvertedUp + TrackBlocksLeftFlyerLargeHalfLoopUninvertedDown, // TrackElemType::LeftFlyerLargeHalfLoopUninvertedDown + TrackBlocksRightFlyerLargeHalfLoopUninvertedDown, // TrackElemType::RightFlyerLargeHalfLoopUninvertedDown + TrackBlocksFlyerHalfLoopUpInverted, // TrackElemType::FlyerHalfLoopInvertedUp + TrackBlocksFlyerHalfLoopDownUpright, // TrackElemType::FlyerHalfLoopUninvertedDown + TrackBlocksLeftEighthToDiagUp25, // TrackElemType::LeftEighthToDiagUp25 + TrackBlocksRightEighthToDiagUp25, // TrackElemType::RightEighthToDiagUp25 + TrackBlocksLeftEighthToDiagDown25, // TrackElemType::LeftEighthToDiagDown25 + TrackBlocksRightEighthToDiagDown25, // TrackElemType::RightEighthToDiagDown25 + TrackBlocksLeftEighthToOrthogonalUp25, // TrackElemType::LeftEighthToOrthogonalUp25 + TrackBlocksRightEighthToOrthogonalUp25, // TrackElemType::RightEighthToOrthogonalUp25 + TrackBlocksLeftEighthToOrthogonalDown25, // TrackElemType::LeftEighthToOrthogonalDown25 + TrackBlocksRightEighthToOrthogonalDown25, // TrackElemType::RightEighthToOrthogonalDown25 + TrackBlocks142, // TrackElemType::DiagUp25ToLeftBankedUp25 + TrackBlocks142, // TrackElemType::DiagUp25ToRightBankedUp25 + TrackBlocks142, // TrackElemType::DiagLeftBankedUp25ToUp25 + TrackBlocks142, // TrackElemType::DiagRightBankedUp25ToUp25 + TrackBlocks148, // TrackElemType::DiagDown25ToLeftBankedDown25 + TrackBlocks148, // TrackElemType::DiagDown25ToRightBankedDown25 + TrackBlocks148, // TrackElemType::DiagLeftBankedDown25ToDown25 + TrackBlocks148, // TrackElemType::DiagRightBankedDown25ToDown25 + TrackBlocks144, // TrackElemType::DiagLeftBankedFlatToLeftBankedUp25 + TrackBlocks144, // TrackElemType::DiagRightBankedFlatToRightBankedUp25 + TrackBlocks147, // TrackElemType::DiagLeftBankedUp25ToLeftBankedFlat + TrackBlocks147, // TrackElemType::DiagRightBankedUp25ToRightBankedFlat + TrackBlocks150, // TrackElemType::DiagLeftBankedFlatToLeftBankedDown25 + TrackBlocks150, // TrackElemType::DiagRightBankedFlatToRightBankedDown25 + TrackBlocks153, // TrackElemType::DiagLeftBankedDown25ToLeftBankedFlat + TrackBlocks153, // TrackElemType::DiagRightBankedDown25ToRightBankedFlat + TrackBlocks144, // TrackElemType::DiagFlatToLeftBankedUp25 + TrackBlocks144, // TrackElemType::DiagFlatToRightBankedUp25 + TrackBlocks147, // TrackElemType::DiagLeftBankedUp25ToFlat + TrackBlocks147, // TrackElemType::DiagRightBankedUp25ToFlat + TrackBlocks150, // TrackElemType::DiagFlatToLeftBankedDown25 + TrackBlocks150, // TrackElemType::DiagFlatToRightBankedDown25 + TrackBlocks153, // TrackElemType::DiagLeftBankedDown25ToFlat + TrackBlocks153, // TrackElemType::DiagRightBankedDown25ToFlat + TrackBlocks142, // TrackElemType::DiagUp25LeftBanked + TrackBlocks142, // TrackElemType::DiagUp25RightBanked + TrackBlocks148, // TrackElemType::DiagDown25LeftBanked + TrackBlocks148, // TrackElemType::DiagDown25RightBanked + TrackBlocksLeftEighthToDiagUp25, // TrackElemType::LeftEighthBankToDiagUp25 + TrackBlocksRightEighthToDiagUp25, // TrackElemType::RightEighthBankToDiagUp25 + TrackBlocksLeftEighthToDiagDown25, // TrackElemType::LeftEighthBankToDiagDown25 + TrackBlocksRightEighthToDiagDown25, // TrackElemType::RightEighthBankToDiagDown25 + TrackBlocksLeftEighthToOrthogonalUp25, // TrackElemType::LeftEighthBankToOrthogonalUp25 + TrackBlocksRightEighthToOrthogonalUp25, // TrackElemType::RightEighthBankToOrthogonalUp25 + TrackBlocksLeftEighthToOrthogonalDown25, // TrackElemType::LeftEighthBankToOrthogonalDown25 + TrackBlocksRightEighthToOrthogonalDown25, // TrackElemType::RightEighthBankToOrthogonalDown25 + TrackBlocks141, // TrackElemType::DiagBrakes + TrackBlocks141, // TrackElemType::DiagBlockBrakes + }; + + static constexpr uint8_t TrackPieceLengths[] = { + 32, // TrackElemType::Flat + 32, // TrackElemType::EndStation + 32, // TrackElemType::BeginStation + 32, // TrackElemType::MiddleStation + 33, // TrackElemType::Up25 + 40, // TrackElemType::Up60 + 32, // TrackElemType::FlatToUp25 + 34, // TrackElemType::Up25ToUp60 + 34, // TrackElemType::Up60ToUp25 + 32, // TrackElemType::Up25ToFlat + 33, // TrackElemType::Down25 + 40, // TrackElemType::Down60 + 32, // TrackElemType::FlatToDown25 + 34, // TrackElemType::Down25ToDown60 + 34, // TrackElemType::Down60ToDown25 + 32, // TrackElemType::Down25ToFlat + 124, // TrackElemType::LeftQuarterTurn5Tiles + 124, // TrackElemType::RightQuarterTurn5Tiles + 32, // TrackElemType::FlatToLeftBank + 32, // TrackElemType::FlatToRightBank + 32, // TrackElemType::LeftBankToFlat + 32, // TrackElemType::RightBankToFlat + 124, // TrackElemType::BankedLeftQuarterTurn5Tiles + 124, // TrackElemType::BankedRightQuarterTurn5Tiles + 32, // TrackElemType::LeftBankToUp25 + 32, // TrackElemType::RightBankToUp25 + 32, // TrackElemType::Up25ToLeftBank + 32, // TrackElemType::Up25ToRightBank + 32, // TrackElemType::LeftBankToDown25 + 32, // TrackElemType::RightBankToDown25 + 32, // TrackElemType::Down25ToLeftBank + 32, // TrackElemType::Down25ToRightBank + 32, // TrackElemType::LeftBank + 32, // TrackElemType::RightBank + 130, // TrackElemType::LeftQuarterTurn5TilesUp25 + 130, // TrackElemType::RightQuarterTurn5TilesUp25 + 130, // TrackElemType::LeftQuarterTurn5TilesDown25 + 130, // TrackElemType::RightQuarterTurn5TilesDown25 + 96, // TrackElemType::SBendLeft + 96, // TrackElemType::SBendRight + 120, // TrackElemType::LeftVerticalLoop + 120, // TrackElemType::RightVerticalLoop + 75, // TrackElemType::LeftQuarterTurn3Tiles + 75, // TrackElemType::RightQuarterTurn3Tiles + 75, // TrackElemType::LeftBankedQuarterTurn3Tiles + 75, // TrackElemType::RightBankedQuarterTurn3Tiles + 77, // TrackElemType::LeftQuarterTurn3TilesUp25 + 77, // TrackElemType::RightQuarterTurn3TilesUp25 + 77, // TrackElemType::LeftQuarterTurn3TilesDown25 + 77, // TrackElemType::RightQuarterTurn3TilesDown25 + 24, // TrackElemType::LeftQuarterTurn1Tile + 24, // TrackElemType::RightQuarterTurn1Tile + 96, // TrackElemType::LeftTwistDownToUp + 96, // TrackElemType::RightTwistDownToUp + 96, // TrackElemType::LeftTwistUpToDown + 96, // TrackElemType::RightTwistUpToDown + 60, // TrackElemType::HalfLoopUp + 60, // TrackElemType::HalfLoopDown + 55, // TrackElemType::LeftCorkscrewUp + 55, // TrackElemType::RightCorkscrewUp + 55, // TrackElemType::LeftCorkscrewDown + 55, // TrackElemType::RightCorkscrewDown + 36, // TrackElemType::FlatToUp60 + 36, // TrackElemType::Up60ToFlat + 36, // TrackElemType::FlatToDown60 + 36, // TrackElemType::Down60ToFlat + 32, // TrackElemType::TowerBase + 32, // TrackElemType::TowerSection + 32, // TrackElemType::FlatCovered + 33, // TrackElemType::Up25Covered + 40, // TrackElemType::Up60Covered + 32, // TrackElemType::FlatToUp25Covered + 34, // TrackElemType::Up25ToUp60Covered + 34, // TrackElemType::Up60ToUp25Covered + 32, // TrackElemType::Up25ToFlatCovered + 33, // TrackElemType::Down25Covered + 40, // TrackElemType::Down60Covered + 32, // TrackElemType::FlatToDown25Covered + 34, // TrackElemType::Down25ToDown60Covered + 34, // TrackElemType::Down60ToDown25Covered + 32, // TrackElemType::Down25ToFlatCovered + 124, // TrackElemType::LeftQuarterTurn5TilesCovered + 124, // TrackElemType::RightQuarterTurn5TilesCovered + 96, // TrackElemType::SBendLeftCovered + 96, // TrackElemType::SBendRightCovered + 75, // TrackElemType::LeftQuarterTurn3TilesCovered + 75, // TrackElemType::RightQuarterTurn3TilesCovered + 150, // TrackElemType::LeftHalfBankedHelixUpSmall + 150, // TrackElemType::RightHalfBankedHelixUpSmall + 150, // TrackElemType::LeftHalfBankedHelixDownSmall + 150, // TrackElemType::RightHalfBankedHelixDownSmall + 248, // TrackElemType::LeftHalfBankedHelixUpLarge + 248, // TrackElemType::RightHalfBankedHelixUpLarge + 248, // TrackElemType::LeftHalfBankedHelixDownLarge + 248, // TrackElemType::RightHalfBankedHelixDownLarge + 64, // TrackElemType::LeftQuarterTurn1TileUp60 + 64, // TrackElemType::RightQuarterTurn1TileUp60 + 64, // TrackElemType::LeftQuarterTurn1TileDown60 + 64, // TrackElemType::RightQuarterTurn1TileDown60 + 32, // TrackElemType::Brakes + 32, // TrackElemType::Booster + 32, // TrackElemType::InvertedUp90ToFlatQuarterLoopAlias / Maze + 124, // TrackElemType::LeftQuarterBankedHelixLargeUp + 124, // TrackElemType::RightQuarterBankedHelixLargeUp + 124, // TrackElemType::LeftQuarterBankedHelixLargeDown + 124, // TrackElemType::RightQuarterBankedHelixLargeDown + 124, // TrackElemType::LeftQuarterHelixLargeUp + 124, // TrackElemType::RightQuarterHelixLargeUp + 124, // TrackElemType::LeftQuarterHelixLargeDown + 124, // TrackElemType::RightQuarterHelixLargeDown + 33, // TrackElemType::Up25LeftBanked + 33, // TrackElemType::Up25RightBanked + 32, // TrackElemType::Waterfall + 32, // TrackElemType::Rapids + 32, // TrackElemType::OnRidePhoto + 33, // TrackElemType::Down25LeftBanked + 33, // TrackElemType::Down25RightBanked + 128, // TrackElemType::Watersplash + 165, // TrackElemType::FlatToUp60LongBase + 165, // TrackElemType::Up60ToFlatLongBase + 32, // TrackElemType::Whirlpool + 165, // TrackElemType::Down60ToFlatLongBase + 165, // TrackElemType::FlatToDown60LongBase + 138, // TrackElemType::CableLiftHill + 32, // TrackElemType::ReverseFreefallSlope + 32, // TrackElemType::ReverseFreefallVertical + 32, // TrackElemType::Up90 + 32, // TrackElemType::Down90 + 32, // TrackElemType::Up60ToUp90 + 32, // TrackElemType::Down90ToDown60 + 32, // TrackElemType::Up90ToUp60 + 32, // TrackElemType::Down60ToDown90 + 32, // TrackElemType::BrakeForDrop + 87, // TrackElemType::LeftEighthToDiag + 87, // TrackElemType::RightEighthToDiag + 87, // TrackElemType::LeftEighthToOrthogonal + 87, // TrackElemType::RightEighthToOrthogonal + 87, // TrackElemType::LeftEighthBankToDiag + 87, // TrackElemType::RightEighthBankToDiag + 87, // TrackElemType::LeftEighthBankToOrthogonal + 87, // TrackElemType::RightEighthBankToOrthogonal + 45, // TrackElemType::DiagFlat + 45, // TrackElemType::DiagUp25 + 45, // TrackElemType::DiagUp60 + 45, // TrackElemType::DiagFlatToUp25 + 45, // TrackElemType::DiagUp25ToUp60 + 45, // TrackElemType::DiagUp60ToUp25 + 45, // TrackElemType::DiagUp25ToFlat + 45, // TrackElemType::DiagDown25 + 45, // TrackElemType::DiagDown60 + 45, // TrackElemType::DiagFlatToDown25 + 45, // TrackElemType::DiagDown25ToDown60 + 45, // TrackElemType::DiagDown60ToDown25 + 45, // TrackElemType::DiagDown25ToFlat + 45, // TrackElemType::DiagFlatToUp60 + 45, // TrackElemType::DiagUp60ToFlat + 45, // TrackElemType::DiagFlatToDown60 + 45, // TrackElemType::DiagDown60ToFlat + 45, // TrackElemType::DiagFlatToLeftBank + 45, // TrackElemType::DiagFlatToRightBank + 45, // TrackElemType::DiagLeftBankToFlat + 45, // TrackElemType::DiagRightBankToFlat + 45, // TrackElemType::DiagLeftBankToUp25 + 45, // TrackElemType::DiagRightBankToUp25 + 45, // TrackElemType::DiagUp25ToLeftBank + 45, // TrackElemType::DiagUp25ToRightBank + 45, // TrackElemType::DiagLeftBankToDown25 + 45, // TrackElemType::DiagRightBankToDown25 + 45, // TrackElemType::DiagDown25ToLeftBank + 45, // TrackElemType::DiagDown25ToRightBank + 45, // TrackElemType::DiagLeftBank + 45, // TrackElemType::DiagRightBank + 16, // TrackElemType::LogFlumeReverser + 32, // TrackElemType::SpinningTunnel + 96, // TrackElemType::LeftBarrelRollUpToDown + 96, // TrackElemType::RightBarrelRollUpToDown + 96, // TrackElemType::LeftBarrelRollDownToUp + 96, // TrackElemType::RightBarrelRollDownToUp + 64, // TrackElemType::LeftBankToLeftQuarterTurn3TilesUp25 + 64, // TrackElemType::RightBankToRightQuarterTurn3TilesUp25 + 64, // TrackElemType::LeftQuarterTurn3TilesDown25ToLeftBank + 64, // TrackElemType::RightQuarterTurn3TilesDown25ToRightBank + 32, // TrackElemType::PoweredLift + 100, // TrackElemType::LeftLargeHalfLoopUp + 100, // TrackElemType::RightLargeHalfLoopUp + 100, // TrackElemType::LeftLargeHalfLoopDown + 100, // TrackElemType::RightLargeHalfLoopDown + 96, // TrackElemType::LeftFlyerTwistUp + 96, // TrackElemType::RightFlyerTwistUp + 96, // TrackElemType::LeftFlyerTwistDown + 96, // TrackElemType::RightFlyerTwistDown + 64, // TrackElemType::FlyerHalfLoopUninvertedUp + 64, // TrackElemType::FlyerHalfLoopInvertedDown + 64, // TrackElemType::LeftFlyerCorkscrewUp + 64, // TrackElemType::RightFlyerCorkscrewUp + 64, // TrackElemType::LeftFlyerCorkscrewDown + 64, // TrackElemType::RightFlyerCorkscrewDown + 16, // TrackElemType::HeartLineTransferUp + 16, // TrackElemType::HeartLineTransferDown + 64, // TrackElemType::LeftHeartLineRoll + 64, // TrackElemType::RightHeartLineRoll + 32, // TrackElemType::MinigolfHoleA + 32, // TrackElemType::MinigolfHoleB + 32, // TrackElemType::MinigolfHoleC + 32, // TrackElemType::MinigolfHoleD + 32, // TrackElemType::MinigolfHoleE + 80, // TrackElemType::MultiDimInvertedFlatToDown90QuarterLoop + 80, // TrackElemType::Up90ToInvertedFlatQuarterLoop + 80, // TrackElemType::InvertedFlatToDown90QuarterLoop + 64, // TrackElemType::LeftCurvedLiftHill + 64, // TrackElemType::RightCurvedLiftHill + 32, // TrackElemType::LeftReverser + 32, // TrackElemType::RightReverser + 32, // TrackElemType::AirThrustTopCap + 32, // TrackElemType::AirThrustVerticalDown + 32, // TrackElemType::AirThrustVerticalDownToLevel + 32, // TrackElemType::BlockBrakes + 32, // TrackElemType::LeftBankedQuarterTurn3TileUp25 + 32, // TrackElemType::RightBankedQuarterTurn3TileUp25 + 32, // TrackElemType::LeftBankedQuarterTurn3TileDown25 + 32, // TrackElemType::RightBankedQuarterTurn3TileDown25 + 32, // TrackElemType::LeftBankedQuarterTurn5TileUp25 + 32, // TrackElemType::RightBankedQuarterTurn5TileUp25 + 32, // TrackElemType::LeftBankedQuarterTurn5TileDown25 + 32, // TrackElemType::RightBankedQuarterTurn5TileDown25 + 32, // TrackElemType::Up25ToLeftBankedUp25 + 32, // TrackElemType::Up25ToRightBankedUp25 + 32, // TrackElemType::LeftBankedUp25ToUp25 + 32, // TrackElemType::RightBankedUp25ToUp25 + 32, // TrackElemType::Down25ToLeftBankedDown25 + 32, // TrackElemType::Down25ToRightBankedDown25 + 32, // TrackElemType::LeftBankedDown25ToDown25 + 32, // TrackElemType::RightBankedDown25ToDown25 + 32, // TrackElemType::LeftBankedFlatToLeftBankedUp25 + 32, // TrackElemType::RightBankedFlatToRightBankedUp25 + 32, // TrackElemType::LeftBankedUp25ToLeftBankedFlat + 32, // TrackElemType::RightBankedUp25ToRightBankedFlat + 32, // TrackElemType::LeftBankedFlatToLeftBankedDown25 + 32, // TrackElemType::RightBankedFlatToRightBankedDown25 + 32, // TrackElemType::LeftBankedDown25ToLeftBankedFlat + 32, // TrackElemType::RightBankedDown25ToRightBankedFlat + 32, // TrackElemType::FlatToLeftBankedUp25 + 32, // TrackElemType::FlatToRightBankedUp25 + 32, // TrackElemType::LeftBankedUp25ToFlat + 32, // TrackElemType::RightBankedUp25ToFlat + 32, // TrackElemType::FlatToLeftBankedDown25 + 32, // TrackElemType::FlatToRightBankedDown25 + 32, // TrackElemType::LeftBankedDown25ToFlat + 32, // TrackElemType::RightBankedDown25ToFlat + 32, // TrackElemType::LeftQuarterTurn1TileUp90 + 32, // TrackElemType::RightQuarterTurn1TileUp90 + 32, // TrackElemType::LeftQuarterTurn1TileDown90 + 32, // TrackElemType::RightQuarterTurn1TileDown90 + 80, // TrackElemType::MultiDimUp90ToInvertedFlatQuarterLoop + 80, // TrackElemType::MultiDimFlatToDown90QuarterLoop + 80, // TrackElemType::MultiDimInvertedUp90ToFlatQuarterLoop + 32, // TrackElemType::RotationControlToggle + 0, // TrackElemType::FlatTrack1x4A + 0, // TrackElemType::FlatTrack2x2 + 0, // TrackElemType::FlatTrack4x4 + 0, // TrackElemType::FlatTrack2x4 + 0, // TrackElemType::FlatTrack1x5 + 0, // TrackElemType::FlatTrack1x1A + 0, // TrackElemType::FlatTrack1x4B + 0, // TrackElemType::FlatTrack1x1B + 0, // TrackElemType::FlatTrack1x4C + 0, // TrackElemType::FlatTrack3x3 + 96, // TrackElemType::LeftCorkscrewUp + 96, // TrackElemType::RightCorkscrewUp + 96, // TrackElemType::LeftCorkscrewDown + 96, // TrackElemType::RightCorkscrewDown + 80, // TrackElemType::LeftMediumHalfLoopUp + 80, // TrackElemType::RightMediumHalfLoopUp + 80, // TrackElemType::LeftMediumHalfLoopDown + 80, // TrackElemType::RightMediumHalfLoopDown + 96, // TrackElemType::LeftZeroGRollUp + 96, // TrackElemType::RightZeroGRollUp + 96, // TrackElemType::LeftZeroGRollDown + 96, // TrackElemType::RightZeroGRollDown + 165, // TrackElemType::LeftLargeZeroGRollUp + 165, // TrackElemType::RightLargeZeroGRollUp + 165, // TrackElemType::LeftLargeZeroGRollDown + 165, // TrackElemType::RightLargeZeroGRollDown + 100, // TrackElemType::LeftFlyerLargeHalfLoopUninvertedUp + 100, // TrackElemType::RightFlyerLargeHalfLoopUninvertedUp + 100, // TrackElemType::LeftFlyerLargeHalfLoopInvertedDown + 100, // TrackElemType::RightFlyerLargeHalfLoopInvertedDown + 100, // TrackElemType::LeftFlyerLargeHalfLoopInvertedUp + 100, // TrackElemType::RightFlyerLargeHalfLoopInvertedUp + 100, // TrackElemType::LeftFlyerLargeHalfLoopUninvertedDown + 100, // TrackElemType::RightFlyerLargeHalfLoopUninvertedDown + 64, // TrackElemType::FlyerHalfLoopInvertedUp + 64, // TrackElemType::FlyerHalfLoopUninvertedDown + 92, // TrackElemType::LeftEighthToDiagUp25 + 92, // TrackElemType::RightEighthToDiagUp25 + 92, // TrackElemType::LeftEighthToDiagDown25 + 92, // TrackElemType::RightEighthToDiagDown25 + 92, // TrackElemType::LeftEighthToOrthogonalUp25 + 92, // TrackElemType::RightEighthToOrthogonalUp25 + 92, // TrackElemType::LeftEighthToOrthogonalDown25 + 92, // TrackElemType::RightEighthToOrthogonalDown25 + 45, // TrackElemType::DiagUp25ToLeftBankedUp25 + 45, // TrackElemType::DiagUp25ToRightBankedUp25 + 45, // TrackElemType::DiagLeftBankedUp25ToUp25 + 45, // TrackElemType::DiagRightBankedUp25ToUp25 + 45, // TrackElemType::DiagDown25ToLeftBankedDown25 + 45, // TrackElemType::DiagDown25ToRightBankedDown25 + 45, // TrackElemType::DiagLeftBankedDown25ToDown25 + 45, // TrackElemType::DiagRightBankedDown25ToDown25 + 45, // TrackElemType::DiagLeftBankedFlatToLeftBankedUp25 + 45, // TrackElemType::DiagRightBankedFlatToRightBankedUp25 + 45, // TrackElemType::DiagLeftBankedUp25ToLeftBankedFlat + 45, // TrackElemType::DiagRightBankedUp25ToRightBankedFlat + 45, // TrackElemType::DiagLeftBankedFlatToLeftBankedDown25 + 45, // TrackElemType::DiagRightBankedFlatToRightBankedDown25 + 45, // TrackElemType::DiagLeftBankedDown25ToLeftBankedFlat + 45, // TrackElemType::DiagRightBankedDown25ToRightBankedFlat + 45, // TrackElemType::DiagFlatToLeftBankedUp25 + 45, // TrackElemType::DiagFlatToRightBankedUp25 + 45, // TrackElemType::DiagLeftBankedUp25ToFlat + 45, // TrackElemType::DiagRightBankedUp25ToFlat + 45, // TrackElemType::DiagFlatToLeftBankedDown25 + 45, // TrackElemType::DiagFlatToRightBankedDown25 + 45, // TrackElemType::DiagLeftBankedDown25ToFlat + 45, // TrackElemType::DiagRightBankedDown25ToFlat + 45, // TrackElemType::DiagUp25LeftBanked + 45, // TrackElemType::DiagUp25RightBanked + 45, // TrackElemType::DiagDown25LeftBanked + 45, // TrackElemType::DiagDown25RightBanked + 92, // TrackElemType::LeftEighthBankToDiagUp25 + 92, // TrackElemType::RightEighthBankToDiagUp25 + 92, // TrackElemType::LeftEighthBankToDiagDown25 + 92, // TrackElemType::RightEighthBankToDiagDown25 + 92, // TrackElemType::LeftEighthBankToOrthogonalUp25 + 92, // TrackElemType::RightEighthBankToOrthogonalUp25 + 92, // TrackElemType::LeftEighthBankToOrthogonalDown25 + 92, // TrackElemType::RightEighthBankToOrthogonalDown25 + 45, // TrackElemType::DiagBrakes + 45, // TrackElemType::DiagBlockBrakes + }; + static_assert(std::size(TrackPieceLengths) == TrackElemType::Count); + + // rct2: 0x00998C95 + static constexpr TrackCurveChain gTrackCurveChain[] = { + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { RideConstructionSpecialPieceSelected | TrackElemType::EndStation, RideConstructionSpecialPieceSelected | TrackElemType::EndStation }, + { RideConstructionSpecialPieceSelected | TrackElemType::EndStation, RideConstructionSpecialPieceSelected | TrackElemType::EndStation }, + { RideConstructionSpecialPieceSelected | TrackElemType::EndStation, RideConstructionSpecialPieceSelected | TrackElemType::EndStation }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::Left), EnumValue(TrackCurve::Left) }, + { EnumValue(TrackCurve::Right), EnumValue(TrackCurve::Right) }, + { EnumValue(TrackCurve::Left), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::Right), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::Left) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::Right) }, + { EnumValue(TrackCurve::Left), EnumValue(TrackCurve::Left) }, + { EnumValue(TrackCurve::Right), EnumValue(TrackCurve::Right) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::Left) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::Right) }, + { EnumValue(TrackCurve::Left), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::Right), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::Left) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::Right) }, + { EnumValue(TrackCurve::Left), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::Right), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::Left), EnumValue(TrackCurve::Left) }, + { EnumValue(TrackCurve::Right), EnumValue(TrackCurve::Right) }, + { EnumValue(TrackCurve::Left), EnumValue(TrackCurve::Left) }, + { EnumValue(TrackCurve::Right), EnumValue(TrackCurve::Right) }, + { EnumValue(TrackCurve::Left), EnumValue(TrackCurve::Left) }, + { EnumValue(TrackCurve::Right), EnumValue(TrackCurve::Right) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::LeftSmall), EnumValue(TrackCurve::LeftSmall) }, + { EnumValue(TrackCurve::RightSmall), EnumValue(TrackCurve::RightSmall) }, + { EnumValue(TrackCurve::LeftSmall), EnumValue(TrackCurve::LeftSmall) }, + { EnumValue(TrackCurve::RightSmall), EnumValue(TrackCurve::RightSmall) }, + { EnumValue(TrackCurve::LeftSmall), EnumValue(TrackCurve::LeftSmall) }, + { EnumValue(TrackCurve::RightSmall), EnumValue(TrackCurve::RightSmall) }, + { EnumValue(TrackCurve::LeftSmall), EnumValue(TrackCurve::LeftSmall) }, + { EnumValue(TrackCurve::RightSmall), EnumValue(TrackCurve::RightSmall) }, + { EnumValue(TrackCurve::LeftVerySmall), EnumValue(TrackCurve::LeftVerySmall) }, + { EnumValue(TrackCurve::RightVerySmall), EnumValue(TrackCurve::RightVerySmall) }, + { RideConstructionSpecialPieceSelected | TrackElemType::LeftTwistUpToDown, EnumValue(TrackCurve::None) }, + { RideConstructionSpecialPieceSelected | TrackElemType::RightTwistUpToDown, EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), RideConstructionSpecialPieceSelected | TrackElemType::LeftTwistDownToUp }, + { EnumValue(TrackCurve::None), RideConstructionSpecialPieceSelected | TrackElemType::RightTwistDownToUp }, + { RideConstructionSpecialPieceSelected | TrackElemType::HalfLoopDown, EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), RideConstructionSpecialPieceSelected | TrackElemType::HalfLoopUp }, + { RideConstructionSpecialPieceSelected | TrackElemType::RightCorkscrewDown, EnumValue(TrackCurve::None) }, + { RideConstructionSpecialPieceSelected | TrackElemType::LeftCorkscrewDown, EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), RideConstructionSpecialPieceSelected | TrackElemType::RightCorkscrewUp }, + { EnumValue(TrackCurve::None), RideConstructionSpecialPieceSelected | TrackElemType::LeftCorkscrewUp }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { RideConstructionSpecialPieceSelected | TrackElemType::TowerSection, EnumValue(TrackCurve::None) }, + { RideConstructionSpecialPieceSelected | TrackElemType::TowerSection, EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::Left), EnumValue(TrackCurve::Left) }, + { EnumValue(TrackCurve::Right), EnumValue(TrackCurve::Right) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::LeftSmall), EnumValue(TrackCurve::LeftSmall) }, + { EnumValue(TrackCurve::RightSmall), EnumValue(TrackCurve::RightSmall) }, + { RideConstructionSpecialPieceSelected | TrackElemType::LeftHalfBankedHelixUpSmall, RideConstructionSpecialPieceSelected | TrackElemType::LeftHalfBankedHelixUpSmall }, + { RideConstructionSpecialPieceSelected | TrackElemType::RightHalfBankedHelixUpSmall, RideConstructionSpecialPieceSelected | TrackElemType::RightHalfBankedHelixUpSmall }, + { RideConstructionSpecialPieceSelected | TrackElemType::LeftHalfBankedHelixDownSmall, RideConstructionSpecialPieceSelected | TrackElemType::LeftHalfBankedHelixDownSmall }, + { RideConstructionSpecialPieceSelected | TrackElemType::RightHalfBankedHelixDownSmall, RideConstructionSpecialPieceSelected | TrackElemType::RightHalfBankedHelixDownSmall }, + { RideConstructionSpecialPieceSelected | TrackElemType::LeftHalfBankedHelixUpLarge, RideConstructionSpecialPieceSelected | TrackElemType::LeftHalfBankedHelixUpLarge }, + { RideConstructionSpecialPieceSelected | TrackElemType::RightHalfBankedHelixUpLarge, RideConstructionSpecialPieceSelected | TrackElemType::RightHalfBankedHelixUpLarge }, + { RideConstructionSpecialPieceSelected | TrackElemType::LeftHalfBankedHelixDownLarge, RideConstructionSpecialPieceSelected | TrackElemType::LeftHalfBankedHelixDownLarge }, + { RideConstructionSpecialPieceSelected | TrackElemType::RightHalfBankedHelixDownLarge, RideConstructionSpecialPieceSelected | TrackElemType::RightHalfBankedHelixDownLarge }, + { EnumValue(TrackCurve::LeftSmall), EnumValue(TrackCurve::LeftSmall) }, + { EnumValue(TrackCurve::RightSmall), EnumValue(TrackCurve::RightSmall) }, + { EnumValue(TrackCurve::LeftSmall), EnumValue(TrackCurve::LeftSmall) }, + { EnumValue(TrackCurve::RightSmall), EnumValue(TrackCurve::RightSmall) }, + { RideConstructionSpecialPieceSelected | TrackElemType::Brakes, RideConstructionSpecialPieceSelected | TrackElemType::Brakes }, + { RideConstructionSpecialPieceSelected | TrackElemType::Booster, RideConstructionSpecialPieceSelected | TrackElemType::Booster }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { RideConstructionSpecialPieceSelected | TrackElemType::LeftQuarterBankedHelixLargeUp, RideConstructionSpecialPieceSelected | TrackElemType::LeftQuarterBankedHelixLargeUp }, + { RideConstructionSpecialPieceSelected | TrackElemType::RightQuarterBankedHelixLargeUp, RideConstructionSpecialPieceSelected | TrackElemType::RightQuarterBankedHelixLargeUp }, + { RideConstructionSpecialPieceSelected | TrackElemType::LeftQuarterBankedHelixLargeDown, RideConstructionSpecialPieceSelected | TrackElemType::LeftQuarterBankedHelixLargeDown }, + { RideConstructionSpecialPieceSelected | TrackElemType::RightQuarterBankedHelixLargeDown, RideConstructionSpecialPieceSelected | TrackElemType::RightQuarterBankedHelixLargeDown }, + { RideConstructionSpecialPieceSelected | TrackElemType::LeftQuarterHelixLargeUp, RideConstructionSpecialPieceSelected | TrackElemType::LeftQuarterHelixLargeUp }, + { RideConstructionSpecialPieceSelected | TrackElemType::RightQuarterHelixLargeUp, RideConstructionSpecialPieceSelected | TrackElemType::RightQuarterHelixLargeUp }, + { RideConstructionSpecialPieceSelected | TrackElemType::LeftQuarterHelixLargeDown, RideConstructionSpecialPieceSelected | TrackElemType::LeftQuarterHelixLargeDown }, + { RideConstructionSpecialPieceSelected | TrackElemType::RightQuarterHelixLargeDown, RideConstructionSpecialPieceSelected | TrackElemType::RightQuarterHelixLargeDown }, + { EnumValue(TrackCurve::Left), EnumValue(TrackCurve::Left) }, + { EnumValue(TrackCurve::Right), EnumValue(TrackCurve::Right) }, + { RideConstructionSpecialPieceSelected | TrackElemType::Waterfall, RideConstructionSpecialPieceSelected | TrackElemType::Waterfall }, + { RideConstructionSpecialPieceSelected | TrackElemType::Rapids, RideConstructionSpecialPieceSelected | TrackElemType::Rapids }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::Left), EnumValue(TrackCurve::Left) }, + { EnumValue(TrackCurve::Right), EnumValue(TrackCurve::Right) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { RideConstructionSpecialPieceSelected | TrackElemType::ReverseFreefallVertical, EnumValue(TrackCurve::None) }, + { RideConstructionSpecialPieceSelected | TrackElemType::ReverseFreefallVertical, RideConstructionSpecialPieceSelected | TrackElemType::ReverseFreefallVertical }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::LeftLarge), EnumValue(TrackCurve::LeftLarge) }, + { EnumValue(TrackCurve::RightLarge), EnumValue(TrackCurve::RightLarge) }, + { EnumValue(TrackCurve::LeftLarge), EnumValue(TrackCurve::LeftLarge) }, + { EnumValue(TrackCurve::RightLarge), EnumValue(TrackCurve::RightLarge) }, + { EnumValue(TrackCurve::LeftLarge), EnumValue(TrackCurve::LeftLarge) }, + { EnumValue(TrackCurve::RightLarge), EnumValue(TrackCurve::RightLarge) }, + { EnumValue(TrackCurve::LeftLarge), EnumValue(TrackCurve::LeftLarge) }, + { EnumValue(TrackCurve::RightLarge), EnumValue(TrackCurve::RightLarge) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::LeftLarge), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::RightLarge), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::LeftLarge) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::RightLarge) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::LeftLarge) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::RightLarge) }, + { EnumValue(TrackCurve::LeftLarge), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::RightLarge), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::LeftLarge) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::RightLarge) }, + { EnumValue(TrackCurve::LeftLarge), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::RightLarge), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::LeftLarge), EnumValue(TrackCurve::LeftLarge) }, + { EnumValue(TrackCurve::RightLarge), EnumValue(TrackCurve::RightLarge) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { RideConstructionSpecialPieceSelected | TrackElemType::LeftBarrelRollDownToUp, EnumValue(TrackCurve::None) }, + { RideConstructionSpecialPieceSelected | TrackElemType::RightBarrelRollDownToUp, EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), RideConstructionSpecialPieceSelected | TrackElemType::LeftBarrelRollUpToDown }, + { EnumValue(TrackCurve::None), RideConstructionSpecialPieceSelected | TrackElemType::RightBarrelRollUpToDown }, + { EnumValue(TrackCurve::LeftSmall), EnumValue(TrackCurve::LeftSmall) }, + { EnumValue(TrackCurve::RightSmall), EnumValue(TrackCurve::RightSmall) }, + { EnumValue(TrackCurve::LeftSmall), EnumValue(TrackCurve::LeftSmall) }, + { EnumValue(TrackCurve::RightSmall), EnumValue(TrackCurve::RightSmall) }, + { RideConstructionSpecialPieceSelected | TrackElemType::PoweredLift, RideConstructionSpecialPieceSelected | TrackElemType::PoweredLift }, + { RideConstructionSpecialPieceSelected | TrackElemType::RightLargeHalfLoopDown, EnumValue(TrackCurve::None) }, + { RideConstructionSpecialPieceSelected | TrackElemType::LeftLargeHalfLoopDown, EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), RideConstructionSpecialPieceSelected | TrackElemType::RightLargeHalfLoopUp }, + { EnumValue(TrackCurve::None), RideConstructionSpecialPieceSelected | TrackElemType::LeftLargeHalfLoopUp }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { RideConstructionSpecialPieceSelected | TrackElemType::InvertedFlatToDown90QuarterLoop, EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), RideConstructionSpecialPieceSelected | TrackElemType::Up90ToInvertedFlatQuarterLoop }, + { RideConstructionSpecialPieceSelected | TrackElemType::LeftCurvedLiftHill, RideConstructionSpecialPieceSelected | TrackElemType::LeftCurvedLiftHill }, + { RideConstructionSpecialPieceSelected | TrackElemType::RightCurvedLiftHill, RideConstructionSpecialPieceSelected | TrackElemType::RightCurvedLiftHill }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { RideConstructionSpecialPieceSelected | TrackElemType::AirThrustVerticalDown, RideConstructionSpecialPieceSelected | TrackElemType::ReverseFreefallVertical }, + { RideConstructionSpecialPieceSelected | TrackElemType::AirThrustVerticalDown, RideConstructionSpecialPieceSelected | TrackElemType::AirThrustVerticalDown }, + { EnumValue(TrackCurve::None), RideConstructionSpecialPieceSelected | TrackElemType::AirThrustVerticalDown }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::LeftSmall), EnumValue(TrackCurve::LeftSmall) }, + { EnumValue(TrackCurve::RightSmall), EnumValue(TrackCurve::RightSmall) }, + { EnumValue(TrackCurve::LeftSmall), EnumValue(TrackCurve::LeftSmall) }, + { EnumValue(TrackCurve::RightSmall), EnumValue(TrackCurve::RightSmall) }, + { EnumValue(TrackCurve::Left), EnumValue(TrackCurve::Left) }, + { EnumValue(TrackCurve::Right), EnumValue(TrackCurve::Right) }, + { EnumValue(TrackCurve::Left), EnumValue(TrackCurve::Left) }, + { EnumValue(TrackCurve::Right), EnumValue(TrackCurve::Right) }, + { EnumValue(TrackCurve::Left), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::Right), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::Left) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::Right) }, + { EnumValue(TrackCurve::Left), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::Right), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::Left) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::Right) }, + { EnumValue(TrackCurve::Left), EnumValue(TrackCurve::Left) }, + { EnumValue(TrackCurve::Right), EnumValue(TrackCurve::Right) }, + { EnumValue(TrackCurve::Left), EnumValue(TrackCurve::Left) }, + { EnumValue(TrackCurve::Right), EnumValue(TrackCurve::Right) }, + { EnumValue(TrackCurve::Left), EnumValue(TrackCurve::Left) }, + { EnumValue(TrackCurve::Right), EnumValue(TrackCurve::Right) }, + { EnumValue(TrackCurve::Left), EnumValue(TrackCurve::Left) }, + { EnumValue(TrackCurve::Right), EnumValue(TrackCurve::Right) }, + { EnumValue(TrackCurve::Left), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::Right), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::Left) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::Right) }, + { EnumValue(TrackCurve::Left), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::Right), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::Left) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::Right) }, + { EnumValue(TrackCurve::LeftSmall), EnumValue(TrackCurve::LeftSmall) }, + { EnumValue(TrackCurve::RightSmall), EnumValue(TrackCurve::RightSmall) }, + { EnumValue(TrackCurve::LeftSmall), EnumValue(TrackCurve::LeftSmall) }, + { EnumValue(TrackCurve::RightSmall), EnumValue(TrackCurve::RightSmall) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, + { 65535, 65535 }, // TrackElemType::FlatTrack1x4A + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, // TrackElemType::FlatTrack2x2 + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, // TrackElemType::FlatTrack4x4 + { 65535, 65535 }, // TrackElemType::FlatTrack2x4 + { 65535, 65535 }, // TrackElemType::FlatTrack1x5 + { 65535, 65535 }, // TrackElemType::FlatTrack1x1A + { 65535, 65535 }, // TrackElemType::FlatTrack1x4B + { 65535, 65535 }, // TrackElemType::FlatTrack1x1B + { 65535, 65535 }, // TrackElemType::FlatTrack1x4C + { 65535, 65535 }, // TrackElemType::FlatTrack3x3 + { RideConstructionSpecialPieceSelected | TrackElemType::RightLargeCorkscrewDown, EnumValue(TrackCurve::None) }, // TrackElemType::LeftLargeCorkscrewUp + { RideConstructionSpecialPieceSelected | TrackElemType::LeftLargeCorkscrewDown, EnumValue(TrackCurve::None) }, // TrackElemType::RightLargeCorkscrewUp + { EnumValue(TrackCurve::None), RideConstructionSpecialPieceSelected | TrackElemType::RightLargeCorkscrewUp }, // TrackElemType::LeftLargeCorkscrewDown + { EnumValue(TrackCurve::None), RideConstructionSpecialPieceSelected | TrackElemType::LeftLargeCorkscrewUp }, // TrackElemType::RightCorkscrewDown + { RideConstructionSpecialPieceSelected | TrackElemType::RightMediumHalfLoopDown, EnumValue(TrackCurve::None) }, // TrackElemType::LeftMediumHalfLoopUp + { RideConstructionSpecialPieceSelected | TrackElemType::LeftMediumHalfLoopDown, EnumValue(TrackCurve::None) }, // TrackElemType::RightMediumHalfLoopUp + { EnumValue(TrackCurve::None), RideConstructionSpecialPieceSelected | TrackElemType::RightMediumHalfLoopUp }, // TrackElemType::LeftMediumHalfLoopDown + { EnumValue(TrackCurve::None), RideConstructionSpecialPieceSelected | TrackElemType::LeftMediumHalfLoopUp }, // TrackElemType::RightMediumHalfLoopDown + { RideConstructionSpecialPieceSelected | TrackElemType::LeftZeroGRollDown, EnumValue(TrackCurve::None) }, // TrackElemType::LeftZeroGRollUp + { RideConstructionSpecialPieceSelected | TrackElemType::RightZeroGRollDown, EnumValue(TrackCurve::None) }, // TrackElemType::RightZeroGRollUp + { EnumValue(TrackCurve::None), RideConstructionSpecialPieceSelected | TrackElemType::LeftZeroGRollUp }, // TrackElemType::LeftZeroGRollDown + { EnumValue(TrackCurve::None), RideConstructionSpecialPieceSelected | TrackElemType::RightZeroGRollUp }, // TrackElemType::RightZeroGRollDown + { RideConstructionSpecialPieceSelected | TrackElemType::LeftLargeZeroGRollDown, EnumValue(TrackCurve::None) }, // TrackElemType::LeftLargeZeroGRollUp + { RideConstructionSpecialPieceSelected | TrackElemType::RightLargeZeroGRollDown, EnumValue(TrackCurve::None) }, // TrackElemType::RightLargeZeroGRollUp + { EnumValue(TrackCurve::None), RideConstructionSpecialPieceSelected | TrackElemType::LeftLargeZeroGRollUp }, // TrackElemType::LeftLargeZeroGRollDown + { EnumValue(TrackCurve::None), RideConstructionSpecialPieceSelected | TrackElemType::RightLargeZeroGRollUp }, // TrackElemType::RightLargeZeroGRollDown + { RideConstructionSpecialPieceSelected | TrackElemType::RightFlyerLargeHalfLoopInvertedDown, EnumValue(TrackCurve::None) }, // LeftFlyerLargeHalfLoopUninvertedUp + { RideConstructionSpecialPieceSelected | TrackElemType::LeftFlyerLargeHalfLoopInvertedDown, EnumValue(TrackCurve::None) }, // RightFlyerLargeHalfLoopUninvertedUp + { EnumValue(TrackCurve::None), RideConstructionSpecialPieceSelected | TrackElemType::RightFlyerLargeHalfLoopUninvertedUp }, // LeftFlyerLargeHalfLoopInvertedDown + { EnumValue(TrackCurve::None), RideConstructionSpecialPieceSelected | TrackElemType::LeftFlyerLargeHalfLoopUninvertedUp }, // RightFlyerLargeHalfLoopInvertedDown + { RideConstructionSpecialPieceSelected | TrackElemType::RightFlyerLargeHalfLoopUninvertedDown, EnumValue(TrackCurve::None) }, // LeftFlyerLargeHalfLoopInvertedUp + { RideConstructionSpecialPieceSelected | TrackElemType::LeftFlyerLargeHalfLoopUninvertedDown, EnumValue(TrackCurve::None) }, // RightFlyerLargeHalfLoopInvertedUp + { EnumValue(TrackCurve::None), RideConstructionSpecialPieceSelected | TrackElemType::RightFlyerLargeHalfLoopInvertedUp }, // LeftFlyerLargeHalfLoopUninvertedDown + { EnumValue(TrackCurve::None), RideConstructionSpecialPieceSelected | TrackElemType::LeftFlyerLargeHalfLoopInvertedUp }, // RightFlyerLargeHalfLoopUninvertedDown + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, // FlyerHalfLoopInvertedUp + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, // FlyerHalfLoopUninvertedUp + { EnumValue(TrackCurve::LeftLarge), EnumValue(TrackCurve::LeftLarge) }, // TrackElemType::LeftEighthToDiagUp25 + { EnumValue(TrackCurve::RightLarge), EnumValue(TrackCurve::RightLarge) }, // TrackElemType::RightEighthToDiagUp25 + { EnumValue(TrackCurve::LeftLarge), EnumValue(TrackCurve::LeftLarge) }, // TrackElemType::LeftEighthToDiagDown25 + { EnumValue(TrackCurve::RightLarge), EnumValue(TrackCurve::RightLarge) }, // TrackElemType::RightEighthToDiagDown25 + { EnumValue(TrackCurve::LeftLarge), EnumValue(TrackCurve::LeftLarge) }, // TrackElemType::LeftEighthToOrthogonalUp25 + { EnumValue(TrackCurve::RightLarge), EnumValue(TrackCurve::RightLarge) }, // TrackElemType::RightEighthToOrthogonalUp25 + { EnumValue(TrackCurve::LeftLarge), EnumValue(TrackCurve::LeftLarge) }, // TrackElemType::LeftEighthToOrthogonalDown25 + { EnumValue(TrackCurve::RightLarge), EnumValue(TrackCurve::RightLarge) }, // TrackElemType::RightEighthToOrthogonalDown25 + { EnumValue(TrackCurve::LeftLarge), EnumValue(TrackCurve::LeftLarge) }, // TrackElemType::DiagUp25ToLeftBankedUp25 + { EnumValue(TrackCurve::RightLarge), EnumValue(TrackCurve::RightLarge) }, // TrackElemType::DiagUp25ToRightBankedUp25 + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, // TrackElemType::DiagLeftBankedUp25ToUp25 + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, // TrackElemType::DiagRightBankedUp25ToUp25 + { EnumValue(TrackCurve::LeftLarge), EnumValue(TrackCurve::LeftLarge) }, // TrackElemType::DiagDown25ToLeftBankedDown25 + { EnumValue(TrackCurve::RightLarge), EnumValue(TrackCurve::RightLarge) }, // TrackElemType::DiagDown25ToRightBankedDown25 + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, // TrackElemType::DiagLeftBankedDown25ToDown25 + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, // TrackElemType::DiagRightBankedDown25ToDown25 + { EnumValue(TrackCurve::LeftLarge), EnumValue(TrackCurve::LeftLarge) }, // TrackElemType::DiagLeftBankedFlatToLeftBankedUp25 + { EnumValue(TrackCurve::RightLarge), EnumValue(TrackCurve::RightLarge) }, // TrackElemType::DiagRightBankedFlatToRightBankedUp25 + { EnumValue(TrackCurve::LeftLarge), EnumValue(TrackCurve::LeftLarge) }, // TrackElemType::DiagLeftBankedUp25ToLeftBankedFlat + { EnumValue(TrackCurve::RightLarge), EnumValue(TrackCurve::RightLarge) }, // TrackElemType::DiagRightBankedUp25ToRightBankedFlat + { EnumValue(TrackCurve::LeftLarge), EnumValue(TrackCurve::LeftLarge) }, // TrackElemType::DiagLeftBankedFlatToLeftBankedDown25 + { EnumValue(TrackCurve::RightLarge), EnumValue(TrackCurve::RightLarge) }, // TrackElemType::DiagRightBankedFlatToRightBankedDown25 + { EnumValue(TrackCurve::LeftLarge), EnumValue(TrackCurve::LeftLarge) }, // TrackElemType::DiagLeftBankedDown25ToLeftBankedFlat + { EnumValue(TrackCurve::RightLarge), EnumValue(TrackCurve::RightLarge) }, // TrackElemType::DiagRightBankedDown25ToRightBankedFlat + { EnumValue(TrackCurve::LeftLarge), EnumValue(TrackCurve::LeftLarge) }, // TrackElemType::DiagFlatToLeftBankedUp25 + { EnumValue(TrackCurve::RightLarge), EnumValue(TrackCurve::RightLarge) }, // TrackElemType::DiagFlatToRightBankedUp25 + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, // TrackElemType::DiagLeftBankedUp25ToFlat + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, // TrackElemType::DiagRightBankedUp25ToFlat + { EnumValue(TrackCurve::LeftLarge), EnumValue(TrackCurve::LeftLarge) }, // TrackElemType::DiagFlatToLeftBankedDown25 + { EnumValue(TrackCurve::RightLarge), EnumValue(TrackCurve::RightLarge) }, // TrackElemType::DiagFlatToRightBankedDown25 + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, // TrackElemType::DiagLeftBankedDown25ToFlat + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, // TrackElemType::DiagRightBankedDown25ToFlat + { EnumValue(TrackCurve::LeftLarge), EnumValue(TrackCurve::LeftLarge) }, // TrackElemType::DiagUp25LeftBanked + { EnumValue(TrackCurve::RightLarge), EnumValue(TrackCurve::RightLarge) }, // TrackElemType::DiagUp25RightBanked + { EnumValue(TrackCurve::LeftLarge), EnumValue(TrackCurve::LeftLarge) }, // TrackElemType::DiagDown25LeftBanked + { EnumValue(TrackCurve::RightLarge), EnumValue(TrackCurve::RightLarge) }, // TrackElemType::DiagDown25RightBanked + { EnumValue(TrackCurve::LeftLarge), EnumValue(TrackCurve::LeftLarge) }, // TrackElemType::LeftEighthBankToDiagUp25 + { EnumValue(TrackCurve::RightLarge), EnumValue(TrackCurve::RightLarge) }, // TrackElemType::RightEighthBankToDiagUp25 + { EnumValue(TrackCurve::LeftLarge), EnumValue(TrackCurve::LeftLarge) }, // TrackElemType::LeftEighthBankToDiagDown25 + { EnumValue(TrackCurve::RightLarge), EnumValue(TrackCurve::RightLarge) }, // TrackElemType::RightEighthBankToDiagDown25 + { EnumValue(TrackCurve::LeftLarge), EnumValue(TrackCurve::LeftLarge) }, // TrackElemType::LeftEighthBankToOrthogonalUp25 + { EnumValue(TrackCurve::RightLarge), EnumValue(TrackCurve::RightLarge) }, // TrackElemType::RightEighthBankToOrthogonalUp25 + { EnumValue(TrackCurve::LeftLarge), EnumValue(TrackCurve::LeftLarge) }, // TrackElemType::LeftEighthBankToOrthogonalDown25 + { EnumValue(TrackCurve::RightLarge), EnumValue(TrackCurve::RightLarge) }, // TrackElemType::RightEighthBankToOrthogonalDown25 + { RideConstructionSpecialPieceSelected | TrackElemType::DiagBrakes, RideConstructionSpecialPieceSelected | TrackElemType::DiagBrakes }, // TrackElemType::DiagBrakes + { EnumValue(TrackCurve::None), EnumValue(TrackCurve::None) }, // TrackElemType::DiagBlockBrakes + }; + static_assert(std::size(gTrackCurveChain) == TrackElemType::Count); + + const TrackDescriptor gTrackDescriptors[186] = { + { true, TrackPitch::Down60, TrackRoll::None, TrackCurve::None, TrackPitch::Down60, TrackRoll::None, TrackElemType::DiagDown60 }, + { true, TrackPitch::Down60, TrackRoll::None, TrackCurve::None, TrackPitch::Down25, TrackRoll::None, TrackElemType::DiagDown60ToDown25 }, + { true, TrackPitch::Down60, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::DiagDown60ToFlat }, + { true, TrackPitch::Down25, TrackRoll::None, TrackCurve::None, TrackPitch::Down60, TrackRoll::None, TrackElemType::DiagDown25ToDown60 }, + { true, TrackPitch::Down25, TrackRoll::None, TrackCurve::None, TrackPitch::Down25, TrackRoll::None, TrackElemType::DiagDown25 }, + { true, TrackPitch::Down25, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::Left, TrackElemType::DiagDown25ToLeftBank }, + { true, TrackPitch::Down25, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::DiagDown25ToFlat }, + { true, TrackPitch::Down25, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::Right, TrackElemType::DiagDown25ToRightBank }, + { true, TrackPitch::None, TrackRoll::Left, TrackCurve::LeftLarge, TrackPitch::None, TrackRoll::Left, TrackElemType::LeftEighthBankToOrthogonal }, + { true, TrackPitch::None, TrackRoll::Left, TrackCurve::None, TrackPitch::Down25, TrackRoll::None, TrackElemType::DiagLeftBankToDown25 }, + { true, TrackPitch::None, TrackRoll::Left, TrackCurve::None, TrackPitch::None, TrackRoll::Left, TrackElemType::DiagLeftBank }, + { true, TrackPitch::None, TrackRoll::Left, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::DiagLeftBankToFlat }, + { true, TrackPitch::None, TrackRoll::Left, TrackCurve::None, TrackPitch::Up25, TrackRoll::None, TrackElemType::DiagLeftBankToUp25 }, + { true, TrackPitch::None, TrackRoll::None, TrackCurve::LeftLarge, TrackPitch::None, TrackRoll::None, TrackElemType::LeftEighthToOrthogonal }, + { true, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Down60, TrackRoll::None, TrackElemType::DiagFlatToDown60 }, + { true, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Down25, TrackRoll::None, TrackElemType::DiagFlatToDown25 }, + { true, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::Left, TrackElemType::DiagFlatToLeftBank }, + { true, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::DiagFlat }, + { true, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::Right, TrackElemType::DiagFlatToRightBank }, + { true, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Up25, TrackRoll::None, TrackElemType::DiagFlatToUp25 }, + { true, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Up60, TrackRoll::None, TrackElemType::DiagFlatToUp60 }, + { true, TrackPitch::None, TrackRoll::None, TrackCurve::RightLarge, TrackPitch::None, TrackRoll::None, TrackElemType::RightEighthToOrthogonal }, + { true, TrackPitch::None, TrackRoll::Right, TrackCurve::None, TrackPitch::Down25, TrackRoll::None, TrackElemType::DiagRightBankToDown25 }, + { true, TrackPitch::None, TrackRoll::Right, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::DiagRightBankToFlat }, + { true, TrackPitch::None, TrackRoll::Right, TrackCurve::None, TrackPitch::None, TrackRoll::Right, TrackElemType::DiagRightBank }, + { true, TrackPitch::None, TrackRoll::Right, TrackCurve::None, TrackPitch::Up25, TrackRoll::None, TrackElemType::DiagRightBankToUp25 }, + { true, TrackPitch::None, TrackRoll::Right, TrackCurve::RightLarge, TrackPitch::None, TrackRoll::Right, TrackElemType::RightEighthBankToOrthogonal }, + { true, TrackPitch::Up25, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::Left, TrackElemType::DiagUp25ToLeftBank }, + { true, TrackPitch::Up25, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::DiagUp25ToFlat }, + { true, TrackPitch::Up25, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::Right, TrackElemType::DiagUp25ToRightBank }, + { true, TrackPitch::Up25, TrackRoll::None, TrackCurve::None, TrackPitch::Up25, TrackRoll::None, TrackElemType::DiagUp25 }, + { true, TrackPitch::Up25, TrackRoll::None, TrackCurve::None, TrackPitch::Up60, TrackRoll::None, TrackElemType::DiagUp25ToUp60 }, + { true, TrackPitch::Up60, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::DiagUp60ToFlat }, + { true, TrackPitch::Up60, TrackRoll::None, TrackCurve::None, TrackPitch::Up25, TrackRoll::None, TrackElemType::DiagUp60ToUp25 }, + { true, TrackPitch::Up60, TrackRoll::None, TrackCurve::None, TrackPitch::Up60, TrackRoll::None, TrackElemType::DiagUp60 }, + { false, TrackPitch::Down90, TrackRoll::None, TrackCurve::LeftSmall, TrackPitch::Down90, TrackRoll::None, TrackElemType::LeftQuarterTurn1TileDown90 }, + { false, TrackPitch::Down90, TrackRoll::None, TrackCurve::None, TrackPitch::Down90, TrackRoll::None, TrackElemType::Down90 }, + { false, TrackPitch::Down90, TrackRoll::None, TrackCurve::None, TrackPitch::Down60, TrackRoll::None, TrackElemType::Down90ToDown60 }, + { false, TrackPitch::Down90, TrackRoll::None, TrackCurve::RightSmall, TrackPitch::Down90, TrackRoll::None, TrackElemType::RightQuarterTurn1TileDown90 }, + { false, TrackPitch::Down60, TrackRoll::None, TrackCurve::LeftSmall, TrackPitch::Down60, TrackRoll::None, TrackElemType::LeftQuarterTurn1TileDown60 }, + { false, TrackPitch::Down60, TrackRoll::None, TrackCurve::None, TrackPitch::Down90, TrackRoll::None, TrackElemType::Down60ToDown90 }, + { false, TrackPitch::Down60, TrackRoll::None, TrackCurve::None, TrackPitch::Down60, TrackRoll::None, TrackElemType::Down60 }, + { false, TrackPitch::Down60, TrackRoll::None, TrackCurve::None, TrackPitch::Down25, TrackRoll::None, TrackElemType::Down60ToDown25 }, + { false, TrackPitch::Down60, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::Down60ToFlat }, + { false, TrackPitch::Down60, TrackRoll::None, TrackCurve::RightSmall, TrackPitch::Down60, TrackRoll::None, TrackElemType::RightQuarterTurn1TileDown60 }, + { false, TrackPitch::Down25, TrackRoll::Left, TrackCurve::LeftSmall, TrackPitch::Down25, TrackRoll::Left, TrackElemType::LeftBankedQuarterTurn3TileDown25 }, + { false, TrackPitch::Down25, TrackRoll::Left, TrackCurve::Left, TrackPitch::Down25, TrackRoll::Left, TrackElemType::LeftBankedQuarterTurn5TileDown25 }, + { false, TrackPitch::Down25, TrackRoll::Left, TrackCurve::None, TrackPitch::Down25, TrackRoll::Left, TrackElemType::Down25LeftBanked }, + { false, TrackPitch::Down25, TrackRoll::Left, TrackCurve::None, TrackPitch::Down25, TrackRoll::None, TrackElemType::LeftBankedDown25ToDown25 }, + { false, TrackPitch::Down25, TrackRoll::Left, TrackCurve::None, TrackPitch::None, TrackRoll::Left, TrackElemType::LeftBankedDown25ToLeftBankedFlat }, + { false, TrackPitch::Down25, TrackRoll::Left, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::LeftBankedDown25ToFlat }, + { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::LeftSmall, TrackPitch::Down25, TrackRoll::None, TrackElemType::LeftQuarterTurn3TilesDown25 }, + { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::LeftSmall, TrackPitch::None, TrackRoll::Left, TrackElemType::LeftQuarterTurn3TilesDown25ToLeftBank }, + { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::Left, TrackPitch::Down25, TrackRoll::None, TrackElemType::LeftQuarterTurn5TilesDown25 }, + { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::None, TrackPitch::Down60, TrackRoll::None, TrackElemType::Down25ToDown60 }, + { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::None, TrackPitch::Down25, TrackRoll::Left, TrackElemType::Down25ToLeftBankedDown25 }, + { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::None, TrackPitch::Down25, TrackRoll::None, TrackElemType::Down25 }, + { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::None, TrackPitch::Down25, TrackRoll::Right, TrackElemType::Down25ToRightBankedDown25 }, + { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::Left, TrackElemType::Down25ToLeftBank }, + { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::Down25ToFlat }, + { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::Right, TrackElemType::Down25ToRightBank }, + { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::Right, TrackPitch::Down25, TrackRoll::None, TrackElemType::RightQuarterTurn5TilesDown25 }, + { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::RightSmall, TrackPitch::None, TrackRoll::Right, TrackElemType::RightQuarterTurn3TilesDown25ToRightBank }, + { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::RightSmall, TrackPitch::Down25, TrackRoll::None, TrackElemType::RightQuarterTurn3TilesDown25 }, + { false, TrackPitch::Down25, TrackRoll::Right, TrackCurve::None, TrackPitch::Down25, TrackRoll::None, TrackElemType::RightBankedDown25ToDown25 }, + { false, TrackPitch::Down25, TrackRoll::Right, TrackCurve::None, TrackPitch::Down25, TrackRoll::Right, TrackElemType::Down25RightBanked }, + { false, TrackPitch::Down25, TrackRoll::Right, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::RightBankedDown25ToFlat }, + { false, TrackPitch::Down25, TrackRoll::Right, TrackCurve::None, TrackPitch::None, TrackRoll::Right, TrackElemType::RightBankedDown25ToRightBankedFlat }, + { false, TrackPitch::Down25, TrackRoll::Right, TrackCurve::Right, TrackPitch::Down25, TrackRoll::Right, TrackElemType::RightBankedQuarterTurn5TileDown25 }, + { false, TrackPitch::Down25, TrackRoll::Right, TrackCurve::RightSmall, TrackPitch::Down25, TrackRoll::Right, TrackElemType::RightBankedQuarterTurn3TileDown25 }, + { false, TrackPitch::None, TrackRoll::Left, TrackCurve::LeftSmall, TrackPitch::None, TrackRoll::Left, TrackElemType::LeftBankedQuarterTurn3Tiles }, + { false, TrackPitch::None, TrackRoll::Left, TrackCurve::LeftSmall, TrackPitch::Up25, TrackRoll::None, TrackElemType::LeftBankToLeftQuarterTurn3TilesUp25 }, + { false, TrackPitch::None, TrackRoll::Left, TrackCurve::Left, TrackPitch::None, TrackRoll::Left, TrackElemType::BankedLeftQuarterTurn5Tiles }, + { false, TrackPitch::None, TrackRoll::Left, TrackCurve::LeftLarge, TrackPitch::None, TrackRoll::Left, TrackElemType::LeftEighthBankToDiag }, + { false, TrackPitch::None, TrackRoll::Left, TrackCurve::None, TrackPitch::Down25, TrackRoll::Left, TrackElemType::LeftBankedFlatToLeftBankedDown25 }, + { false, TrackPitch::None, TrackRoll::Left, TrackCurve::None, TrackPitch::Down25, TrackRoll::None, TrackElemType::LeftBankToDown25 }, + { false, TrackPitch::None, TrackRoll::Left, TrackCurve::None, TrackPitch::None, TrackRoll::Left, TrackElemType::LeftBank }, + { false, TrackPitch::None, TrackRoll::Left, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::LeftBankToFlat }, + { false, TrackPitch::None, TrackRoll::Left, TrackCurve::None, TrackPitch::Up25, TrackRoll::Left, TrackElemType::LeftBankedFlatToLeftBankedUp25 }, + { false, TrackPitch::None, TrackRoll::Left, TrackCurve::None, TrackPitch::Up25, TrackRoll::None, TrackElemType::LeftBankToUp25 }, + { false, TrackPitch::None, TrackRoll::None, TrackCurve::LeftSmall, TrackPitch::None, TrackRoll::None, TrackElemType::LeftQuarterTurn3Tiles }, + { false, TrackPitch::None, TrackRoll::None, TrackCurve::Left, TrackPitch::None, TrackRoll::None, TrackElemType::LeftQuarterTurn5Tiles }, + { false, TrackPitch::None, TrackRoll::None, TrackCurve::LeftLarge, TrackPitch::None, TrackRoll::None, TrackElemType::LeftEighthToDiag }, + { false, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Down60, TrackRoll::None, TrackElemType::FlatToDown60 }, + { false, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Down25, TrackRoll::Left, TrackElemType::FlatToLeftBankedDown25 }, + { false, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Down25, TrackRoll::None, TrackElemType::FlatToDown25 }, + { false, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Down25, TrackRoll::Right, TrackElemType::FlatToRightBankedDown25 }, + { false, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::Left, TrackElemType::FlatToLeftBank }, + { false, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::Flat }, + { false, TrackPitch::None, TrackRoll::None, TrackCurve::LeftVerySmall, TrackPitch::None, TrackRoll::None, TrackElemType::LeftQuarterTurn1Tile }, + { false, TrackPitch::None, TrackRoll::None, TrackCurve::RightVerySmall, TrackPitch::None, TrackRoll::None, TrackElemType::RightQuarterTurn1Tile }, + { false, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::Right, TrackElemType::FlatToRightBank }, + { false, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Up25, TrackRoll::Left, TrackElemType::FlatToLeftBankedUp25 }, + { false, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Up25, TrackRoll::None, TrackElemType::FlatToUp25 }, + { false, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Up25, TrackRoll::Right, TrackElemType::FlatToRightBankedUp25 }, + { false, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Up60, TrackRoll::None, TrackElemType::FlatToUp60 }, + { false, TrackPitch::None, TrackRoll::None, TrackCurve::RightLarge, TrackPitch::None, TrackRoll::None, TrackElemType::RightEighthToDiag }, + { false, TrackPitch::None, TrackRoll::None, TrackCurve::Right, TrackPitch::None, TrackRoll::None, TrackElemType::RightQuarterTurn5Tiles }, + { false, TrackPitch::None, TrackRoll::None, TrackCurve::RightSmall, TrackPitch::None, TrackRoll::None, TrackElemType::RightQuarterTurn3Tiles }, + { false, TrackPitch::None, TrackRoll::Right, TrackCurve::None, TrackPitch::Down25, TrackRoll::None, TrackElemType::RightBankToDown25 }, + { false, TrackPitch::None, TrackRoll::Right, TrackCurve::None, TrackPitch::Down25, TrackRoll::Right, TrackElemType::RightBankedFlatToRightBankedDown25 }, + { false, TrackPitch::None, TrackRoll::Right, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::RightBankToFlat }, + { false, TrackPitch::None, TrackRoll::Right, TrackCurve::None, TrackPitch::None, TrackRoll::Right, TrackElemType::RightBank }, + { false, TrackPitch::None, TrackRoll::Right, TrackCurve::None, TrackPitch::Up25, TrackRoll::None, TrackElemType::RightBankToUp25 }, + { false, TrackPitch::None, TrackRoll::Right, TrackCurve::None, TrackPitch::Up25, TrackRoll::Right, TrackElemType::RightBankedFlatToRightBankedUp25 }, + { false, TrackPitch::None, TrackRoll::Right, TrackCurve::RightLarge, TrackPitch::None, TrackRoll::Right, TrackElemType::RightEighthBankToDiag }, + { false, TrackPitch::None, TrackRoll::Right, TrackCurve::Right, TrackPitch::None, TrackRoll::Right, TrackElemType::BankedRightQuarterTurn5Tiles }, + { false, TrackPitch::None, TrackRoll::Right, TrackCurve::RightSmall, TrackPitch::None, TrackRoll::Right, TrackElemType::RightBankedQuarterTurn3Tiles }, + { false, TrackPitch::None, TrackRoll::Right, TrackCurve::RightSmall, TrackPitch::Up25, TrackRoll::None, TrackElemType::RightBankToRightQuarterTurn3TilesUp25 }, + { false, TrackPitch::Up25, TrackRoll::Left, TrackCurve::LeftSmall, TrackPitch::Up25, TrackRoll::Left, TrackElemType::LeftBankedQuarterTurn3TileUp25 }, + { false, TrackPitch::Up25, TrackRoll::Left, TrackCurve::Left, TrackPitch::Up25, TrackRoll::Left, TrackElemType::LeftBankedQuarterTurn5TileUp25 }, + { false, TrackPitch::Up25, TrackRoll::Left, TrackCurve::None, TrackPitch::None, TrackRoll::Left, TrackElemType::LeftBankedUp25ToLeftBankedFlat }, + { false, TrackPitch::Up25, TrackRoll::Left, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::LeftBankedUp25ToFlat }, + { false, TrackPitch::Up25, TrackRoll::Left, TrackCurve::None, TrackPitch::Up25, TrackRoll::Left, TrackElemType::Up25LeftBanked }, + { false, TrackPitch::Up25, TrackRoll::Left, TrackCurve::None, TrackPitch::Up25, TrackRoll::None, TrackElemType::LeftBankedUp25ToUp25 }, + { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::LeftSmall, TrackPitch::Up25, TrackRoll::None, TrackElemType::LeftQuarterTurn3TilesUp25 }, + { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::Left, TrackPitch::Up25, TrackRoll::None, TrackElemType::LeftQuarterTurn5TilesUp25 }, + { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::Left, TrackElemType::Up25ToLeftBank }, + { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::Up25ToFlat }, + { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::Right, TrackElemType::Up25ToRightBank }, + { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::None, TrackPitch::Up25, TrackRoll::Left, TrackElemType::Up25ToLeftBankedUp25 }, + { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::None, TrackPitch::Up25, TrackRoll::None, TrackElemType::Up25 }, + { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::None, TrackPitch::Up25, TrackRoll::Right, TrackElemType::Up25ToRightBankedUp25 }, + { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::None, TrackPitch::Up60, TrackRoll::None, TrackElemType::Up25ToUp60 }, + { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::Right, TrackPitch::Up25, TrackRoll::None, TrackElemType::RightQuarterTurn5TilesUp25 }, + { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::RightSmall, TrackPitch::Up25, TrackRoll::None, TrackElemType::RightQuarterTurn3TilesUp25 }, + { false, TrackPitch::Up25, TrackRoll::Right, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::RightBankedUp25ToFlat }, + { false, TrackPitch::Up25, TrackRoll::Right, TrackCurve::None, TrackPitch::None, TrackRoll::Right, TrackElemType::RightBankedUp25ToRightBankedFlat }, + { false, TrackPitch::Up25, TrackRoll::Right, TrackCurve::None, TrackPitch::Up25, TrackRoll::None, TrackElemType::RightBankedUp25ToUp25 }, + { false, TrackPitch::Up25, TrackRoll::Right, TrackCurve::None, TrackPitch::Up25, TrackRoll::Right, TrackElemType::Up25RightBanked }, + { false, TrackPitch::Up25, TrackRoll::Right, TrackCurve::Right, TrackPitch::Up25, TrackRoll::Right, TrackElemType::RightBankedQuarterTurn5TileUp25 }, + { false, TrackPitch::Up25, TrackRoll::Right, TrackCurve::RightSmall, TrackPitch::Up25, TrackRoll::Right, TrackElemType::RightBankedQuarterTurn3TileUp25 }, + { false, TrackPitch::Up60, TrackRoll::None, TrackCurve::LeftSmall, TrackPitch::Up60, TrackRoll::None, TrackElemType::LeftQuarterTurn1TileUp60 }, + { false, TrackPitch::Up60, TrackRoll::None, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::Up60ToFlat }, + { false, TrackPitch::Up60, TrackRoll::None, TrackCurve::None, TrackPitch::Up25, TrackRoll::None, TrackElemType::Up60ToUp25 }, + { false, TrackPitch::Up60, TrackRoll::None, TrackCurve::None, TrackPitch::Up60, TrackRoll::None, TrackElemType::Up60 }, + { false, TrackPitch::Up60, TrackRoll::None, TrackCurve::None, TrackPitch::Up90, TrackRoll::None, TrackElemType::Up60ToUp90 }, + { false, TrackPitch::Up60, TrackRoll::None, TrackCurve::RightSmall, TrackPitch::Up60, TrackRoll::None, TrackElemType::RightQuarterTurn1TileUp60 }, + { false, TrackPitch::Up90, TrackRoll::None, TrackCurve::LeftSmall, TrackPitch::Up90, TrackRoll::None, TrackElemType::LeftQuarterTurn1TileUp90 }, + { false, TrackPitch::Up90, TrackRoll::None, TrackCurve::None, TrackPitch::Up60, TrackRoll::None, TrackElemType::Up90ToUp60 }, + { false, TrackPitch::Up90, TrackRoll::None, TrackCurve::None, TrackPitch::Up90, TrackRoll::None, TrackElemType::Up90 }, + { false, TrackPitch::Up90, TrackRoll::None, TrackCurve::RightSmall, TrackPitch::Up90, TrackRoll::None, TrackElemType::RightQuarterTurn1TileUp90 }, + { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::LeftLarge, TrackPitch::Up25, TrackRoll::None, TrackElemType::LeftEighthToDiagUp25 }, // TrackElemType::LeftEighthToDiagUp25 + { false, TrackPitch::Up25, TrackRoll::None, TrackCurve::RightLarge, TrackPitch::Up25, TrackRoll::None, TrackElemType::RightEighthToDiagUp25 }, // TrackElemType::RightEighthToDiagUp25 + { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::LeftLarge, TrackPitch::Down25, TrackRoll::None, TrackElemType::LeftEighthToDiagDown25 }, // TrackElemType::LeftEighthToDiagDown25 + { false, TrackPitch::Down25, TrackRoll::None, TrackCurve::RightLarge, TrackPitch::Down25, TrackRoll::None, TrackElemType::RightEighthToDiagDown25 }, // TrackElemType::RightEighthToDiagDown25 + { true, TrackPitch::Up25, TrackRoll::None, TrackCurve::LeftLarge, TrackPitch::Up25, TrackRoll::None, TrackElemType::LeftEighthToOrthogonalUp25 }, // TrackElemType::LeftEighthToOrthogonalUp25 + { true, TrackPitch::Up25, TrackRoll::None, TrackCurve::RightLarge, TrackPitch::Up25, TrackRoll::None, TrackElemType::RightEighthToOrthogonalUp25 }, // TrackElemType::RightEighthToOrthogonalUp25 + { true, TrackPitch::Down25, TrackRoll::None, TrackCurve::LeftLarge, TrackPitch::Down25, TrackRoll::None, TrackElemType::LeftEighthToOrthogonalDown25 }, // TrackElemType::LeftEighthToOrthogonalDown25 + { true, TrackPitch::Down25, TrackRoll::None, TrackCurve::RightLarge, TrackPitch::Down25, TrackRoll::None, TrackElemType::RightEighthToOrthogonalDown25 }, // TrackElemType::RightEighthToOrthogonalDown25 + { true, TrackPitch::Up25, TrackRoll::None, TrackCurve::None, TrackPitch::Up25, TrackRoll::Left, TrackElemType::DiagUp25ToLeftBankedUp25 }, // TrackElemType::DiagUp25ToLeftBankedUp25 + { true, TrackPitch::Up25, TrackRoll::None, TrackCurve::None, TrackPitch::Up25, TrackRoll::Right, TrackElemType::DiagUp25ToRightBankedUp25 }, // TrackElemType::DiagUp25ToRightBankedUp25 + { true, TrackPitch::Up25, TrackRoll::Left, TrackCurve::None, TrackPitch::Up25, TrackRoll::None, TrackElemType::DiagLeftBankedUp25ToUp25 }, // TrackElemType::DiagLeftBankedUp25ToUp25 + { true, TrackPitch::Up25, TrackRoll::Right, TrackCurve::None, TrackPitch::Up25, TrackRoll::None, TrackElemType::DiagRightBankedUp25ToUp25 }, // TrackElemType::DiagRightBankedUp25ToUp25 + { true, TrackPitch::Down25, TrackRoll::None, TrackCurve::None, TrackPitch::Down25, TrackRoll::Left, TrackElemType::DiagDown25ToLeftBankedDown25 }, // TrackElemType::DiagDown25ToLeftBankedDown25 + { true, TrackPitch::Down25, TrackRoll::None, TrackCurve::None, TrackPitch::Down25, TrackRoll::Right, TrackElemType::DiagDown25ToRightBankedDown25 }, // TrackElemType::DiagDown25ToRightBankedDown25 + { true, TrackPitch::Down25, TrackRoll::Left, TrackCurve::None, TrackPitch::Down25, TrackRoll::None, TrackElemType::DiagLeftBankedDown25ToDown25 }, // TrackElemType::DiagLeftBankedDown25ToDown25 + { true, TrackPitch::Down25, TrackRoll::Right, TrackCurve::None, TrackPitch::Down25, TrackRoll::None, TrackElemType::DiagRightBankedDown25ToDown25 }, // TrackElemType::DiagRightBankedDown25ToDown25 + { true, TrackPitch::None, TrackRoll::Left, TrackCurve::None, TrackPitch::Up25, TrackRoll::Left, TrackElemType::DiagLeftBankedFlatToLeftBankedUp25 }, // TrackElemType::DiagLeftBankedFlatToLeftBankedUp25 + { true, TrackPitch::None, TrackRoll::Right, TrackCurve::None, TrackPitch::Up25, TrackRoll::Right, TrackElemType::DiagRightBankedFlatToRightBankedUp25 }, // TrackElemType::DiagRightBankedFlatToRightBankedUp25 + { true, TrackPitch::Up25, TrackRoll::Left, TrackCurve::None, TrackPitch::None, TrackRoll::Left, TrackElemType::DiagLeftBankedUp25ToLeftBankedFlat }, // TrackElemType::DiagLeftBankedUp25ToLeftBankedFlat + { true, TrackPitch::Up25, TrackRoll::Right, TrackCurve::None, TrackPitch::None, TrackRoll::Right, TrackElemType::DiagRightBankedUp25ToRightBankedFlat }, // TrackElemType::DiagRightBankedUp25ToRightBankedFlat + { true, TrackPitch::None, TrackRoll::Left, TrackCurve::None, TrackPitch::Down25, TrackRoll::Left, TrackElemType::DiagLeftBankedFlatToLeftBankedDown25 }, // TrackElemType::DiagLeftBankedFlatToLeftBankedDown25 + { true, TrackPitch::None, TrackRoll::Right, TrackCurve::None, TrackPitch::Down25, TrackRoll::Right, TrackElemType::DiagRightBankedFlatToRightBankedDown25 }, // TrackElemType::DiagRightBankedFlatToRightBankedDown25 + { true, TrackPitch::Down25, TrackRoll::Left, TrackCurve::None, TrackPitch::None, TrackRoll::Left, TrackElemType::DiagLeftBankedDown25ToLeftBankedFlat }, // TrackElemType::DiagLeftBankedDown25ToLeftBankedFlat + { true, TrackPitch::Down25, TrackRoll::Right, TrackCurve::None, TrackPitch::None, TrackRoll::Right, TrackElemType::DiagRightBankedDown25ToRightBankedFlat }, // TrackElemType::DiagRightBankedDown25ToRightBankedFlat + { true, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Up25, TrackRoll::Left, TrackElemType::DiagFlatToLeftBankedUp25 }, // TrackElemType::DiagFlatToLeftBankedUp25 + { true, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Up25, TrackRoll::Right, TrackElemType::DiagFlatToRightBankedUp25 }, // TrackElemType::DiagFlatToRightBankedUp25 + { true, TrackPitch::Up25, TrackRoll::Left, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::DiagLeftBankedUp25ToFlat }, // TrackElemType::DiagLeftBankedUp25ToFlat + { true, TrackPitch::Up25, TrackRoll::Right, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::DiagRightBankedUp25ToFlat }, // TrackElemType::DiagRightBankedUp25ToFlat + { true, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Down25, TrackRoll::Left, TrackElemType::DiagFlatToLeftBankedDown25 }, // TrackElemType::DiagFlatToLeftBankedDown25 + { true, TrackPitch::None, TrackRoll::None, TrackCurve::None, TrackPitch::Down25, TrackRoll::Right, TrackElemType::DiagFlatToRightBankedDown25 }, // TrackElemType::DiagFlatToRightBankedDown25 + { true, TrackPitch::Down25, TrackRoll::Left, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::DiagLeftBankedDown25ToFlat }, // TrackElemType::DiagLeftBankedDown25ToFlat + { true, TrackPitch::Down25, TrackRoll::Right, TrackCurve::None, TrackPitch::None, TrackRoll::None, TrackElemType::DiagRightBankedDown25ToFlat }, // TrackElemType::DiagRightBankedDown25ToFlat + { true, TrackPitch::Up25, TrackRoll::Left, TrackCurve::None, TrackPitch::Up25, TrackRoll::Left, TrackElemType::DiagUp25LeftBanked }, // TrackElemType::Up25LeftBanked + { true, TrackPitch::Up25, TrackRoll::Right, TrackCurve::None, TrackPitch::Up25, TrackRoll::Right, TrackElemType::DiagUp25RightBanked }, // TrackElemType::Up25RightBanked + { true, TrackPitch::Down25, TrackRoll::Left, TrackCurve::None, TrackPitch::Down25, TrackRoll::Left, TrackElemType::DiagDown25LeftBanked }, // TrackElemType::Down25LeftBanked + { true, TrackPitch::Down25, TrackRoll::Right, TrackCurve::None, TrackPitch::Down25, TrackRoll::Right, TrackElemType::DiagDown25RightBanked }, // TrackElemType::Down25RightBanked + { false, TrackPitch::Up25, TrackRoll::Left, TrackCurve::LeftLarge, TrackPitch::Up25, TrackRoll::Left, TrackElemType::LeftEighthBankToDiagUp25 }, // TrackElemType::LeftEighthBankToDiagUp25 + { false, TrackPitch::Up25, TrackRoll::Right, TrackCurve::RightLarge, TrackPitch::Up25, TrackRoll::Right, TrackElemType::RightEighthBankToDiagUp25 }, // TrackElemType::RightEighthBankToDiagUp25 + { false, TrackPitch::Down25, TrackRoll::Left, TrackCurve::LeftLarge, TrackPitch::Down25, TrackRoll::Left, TrackElemType::LeftEighthBankToDiagDown25 }, // TrackElemType::LeftEighthBankToDiagDown25 + { false, TrackPitch::Down25, TrackRoll::Right, TrackCurve::RightLarge, TrackPitch::Down25, TrackRoll::Right, TrackElemType::RightEighthBankToDiagDown25 }, // TrackElemType::RightEighthBankToDiagDown25 + { true, TrackPitch::Up25, TrackRoll::Left, TrackCurve::LeftLarge, TrackPitch::Up25, TrackRoll::Left, TrackElemType::LeftEighthBankToOrthogonalUp25 }, // TrackElemType::LeftEighthBankToOrthogonalUp25 + { true, TrackPitch::Up25, TrackRoll::Right, TrackCurve::RightLarge, TrackPitch::Up25, TrackRoll::Right, TrackElemType::RightEighthBankToOrthogonalUp25 }, // TrackElemType::RightEighthBankToOrthogonalUp25 + { true, TrackPitch::Down25, TrackRoll::Left, TrackCurve::LeftLarge, TrackPitch::Down25, TrackRoll::Left, TrackElemType::LeftEighthBankToOrthogonalDown25 }, // TrackElemType::LeftEighthBankToOrthogonalDown25 + { true, TrackPitch::Down25, TrackRoll::Right, TrackCurve::RightLarge, TrackPitch::Down25, TrackRoll::Right, TrackElemType::RightEighthBankToOrthogonalDown25 }, // TrackElemType::RightEighthBankToOrthogonalDown25 + }; + + /** rct2: 0x00993D1C */ + static constexpr track_type_t AlternativeTrackTypes[] = { + TrackElemType::FlatCovered, // TrackElemType::Flat + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::Up25Covered, // TrackElemType::Up25 + TrackElemType::Up60Covered, // TrackElemType::Up60 + TrackElemType::FlatToUp25Covered, // TrackElemType::FlatToUp25 + TrackElemType::Up25ToUp60Covered, // TrackElemType::Up25ToUp60 + TrackElemType::Up60ToUp25Covered, // TrackElemType::Up60ToUp25 + TrackElemType::Up25ToFlatCovered, // TrackElemType::Up25ToFlat + TrackElemType::Down25Covered, // TrackElemType::Down25 + TrackElemType::Down60Covered, // TrackElemType::Down60 + TrackElemType::FlatToDown25Covered, // TrackElemType::FlatToDown25 + TrackElemType::Down25ToDown60Covered, // TrackElemType::Down25ToDown60 + TrackElemType::Down60ToDown25Covered, // TrackElemType::Down60ToDown25 + TrackElemType::Down25ToFlatCovered, // TrackElemType::Down25ToFlat + TrackElemType::LeftQuarterTurn5TilesCovered, // TrackElemType::LeftQuarterTurn5Tiles + TrackElemType::RightQuarterTurn5TilesCovered, // TrackElemType::RightQuarterTurn5Tiles + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::SBendLeftCovered, // TrackElemType::SBendLeft + TrackElemType::SBendRightCovered, // TrackElemType::SBendRight + TrackElemType::None, + TrackElemType::None, + TrackElemType::LeftQuarterTurn3TilesCovered, // TrackElemType::LeftQuarterTurn3Tiles + TrackElemType::RightQuarterTurn3TilesCovered, // TrackElemType::RightQuarterTurn3Tiles + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, + TrackElemType::None, // TrackElemType::FlatTrack1x4A + TrackElemType::None, // TrackElemType::FlatTrack2x2 + TrackElemType::None, // TrackElemType::FlatTrack4x4 + TrackElemType::None, // TrackElemType::FlatTrack2x4 + TrackElemType::None, // TrackElemType::FlatTrack1x5 + TrackElemType::None, // TrackElemType::FlatTrack1x1A + TrackElemType::None, // TrackElemType::FlatTrack1x4B + TrackElemType::None, // TrackElemType::FlatTrack1x1B + TrackElemType::None, // TrackElemType::FlatTrack1x4C + TrackElemType::None, // TrackElemType::FlatTrack3x3 + TrackElemType::None, // TrackElemType::LeftLargeCorkscrewUp + TrackElemType::None, // TrackElemType::RightLargeCorkscrewUp + TrackElemType::None, // TrackElemType::LeftLargeCorkscrewDown + TrackElemType::None, // TrackElemType::RightCorkscrewDown + TrackElemType::None, // TrackElemType::LeftMediumHalfLoopUp + TrackElemType::None, // TrackElemType::RightMediumHalfLoopUp + TrackElemType::None, // TrackElemType::LeftMediumHalfLoopDown + TrackElemType::None, // TrackElemType::RightMediumHalfLoopDown + TrackElemType::None, // TrackElemType::LeftZeroGRollUp + TrackElemType::None, // TrackElemType::RightZeroGRollUp + TrackElemType::None, // TrackElemType::LeftZeroGRollDown + TrackElemType::None, // TrackElemType::RightZeroGRollDown + TrackElemType::None, // TrackElemType::LeftLargeZeroGRollUp + TrackElemType::None, // TrackElemType::RightLargeZeroGRollUp + TrackElemType::None, // TrackElemType::LeftLargeZeroGRollDown + TrackElemType::None, // TrackElemType::RightLargeZeroGRollDown + TrackElemType::None, // LeftFlyerLargeHalfLoopUninvertedUp + TrackElemType::None, // RightFlyerLargeHalfLoopUninvertedUp + TrackElemType::None, // LeftFlyerLargeHalfLoopInvertedDown + TrackElemType::None, // RightFlyerLargeHalfLoopInvertedDown + TrackElemType::None, // FlyerHalfLoopInvertedUp + TrackElemType::None, // FlyerHalfLoopUninvertedDown + TrackElemType::None, // TrackElemType::LeftEighthToDiagUp25 + TrackElemType::None, // TrackElemType::RightEighthToDiagUp25 + TrackElemType::None, // TrackElemType::LeftEighthToDiagDown25 + TrackElemType::None, // TrackElemType::RightEighthToDiagDown25 + TrackElemType::None, // TrackElemType::LeftEighthToOrthogonalUp25 + TrackElemType::None, // TrackElemType::RightEighthToOrthogonalUp25 + TrackElemType::None, // TrackElemType::LeftEighthToOrthogonalDown25 + TrackElemType::None, // TrackElemType::RightEighthToOrthogonalDown25 + TrackElemType::None, // TrackElemType::DiagUp25ToLeftBankedUp25 + TrackElemType::None, // TrackElemType::DiagUp25ToRightBankedUp25 + TrackElemType::None, // TrackElemType::DiagLeftBankedUp25ToUp25 + TrackElemType::None, // TrackElemType::DiagRightBankedUp25ToUp25 + TrackElemType::None, // TrackElemType::DiagDown25ToLeftBankedDown25 + TrackElemType::None, // TrackElemType::DiagDown25ToRightBankedDown25 + TrackElemType::None, // TrackElemType::DiagLeftBankedDown25ToDown25 + TrackElemType::None, // TrackElemType::DiagRightBankedDown25ToDown25 + TrackElemType::None, // TrackElemType::DiagLeftBankedFlatToLeftBankedUp25 + TrackElemType::None, // TrackElemType::DiagRightBankedFlatToRightBankedUp25 + TrackElemType::None, // TrackElemType::DiagLeftBankedUp25ToLeftBankedFlat + TrackElemType::None, // TrackElemType::DiagRightBankedUp25ToRightBankedFlat + TrackElemType::None, // TrackElemType::DiagLeftBankedFlatToLeftBankedDown25 + TrackElemType::None, // TrackElemType::DiagRightBankedFlatToRightBankedDown25 + TrackElemType::None, // TrackElemType::DiagLeftBankedDown25ToLeftBankedFlat + TrackElemType::None, // TrackElemType::DiagRightBankedDown25ToRightBankedFlat + TrackElemType::None, // TrackElemType::DiagFlatToLeftBankedUp25 + TrackElemType::None, // TrackElemType::DiagFlatToRightBankedUp25 + TrackElemType::None, // TrackElemType::DiagLeftBankedUp25ToFlat + TrackElemType::None, // TrackElemType::DiagRightBankedUp25ToFlat + TrackElemType::None, // TrackElemType::DiagFlatToLeftBankedDown25 + TrackElemType::None, // TrackElemType::DiagFlatToRightBankedDown25 + TrackElemType::None, // TrackElemType::DiagLeftBankedDown25ToFlat + TrackElemType::None, // TrackElemType::DiagRightBankedDown25ToFlat + TrackElemType::None, // TrackElemType::DiagUp25LeftBanked + TrackElemType::None, // TrackElemType::DiagUp25RightBanked + TrackElemType::None, // TrackElemType::DiagDown25LeftBanked + TrackElemType::None, // TrackElemType::DiagDown25RightBanked + TrackElemType::None, // TrackElemType::LeftEighthBankToDiagUp25 + TrackElemType::None, // TrackElemType::RightEighthBankToDiagUp25 + TrackElemType::None, // TrackElemType::LeftEighthBankToDiagDown25 + TrackElemType::None, // TrackElemType::RightEighthBankToDiagDown25 + TrackElemType::None, // TrackElemType::LeftEighthBankToOrthogonalUp25 + TrackElemType::None, // TrackElemType::RightEighthBankToOrthogonalUp25 + TrackElemType::None, // TrackElemType::LeftEighthBankToOrthogonalDown25 + TrackElemType::None, // TrackElemType::RightEighthBankToOrthogonalDown25 + TrackElemType::None, // TrackElemType::DiagBrakes + TrackElemType::None, // TrackElemType::DiagBlockBrakes + }; + static_assert(std::size(AlternativeTrackTypes) == TrackElemType::Count); + + /** rct2: 0x0099DA34 */ + static constexpr money64 TrackPricing[] = { + 65536, // TrackElemType::Flat + 98304, // TrackElemType::EndStation + 98304, // TrackElemType::BeginStation + 98304, // TrackElemType::MiddleStation + 79872, // TrackElemType::Up25 + 114688, // TrackElemType::Up60 + 73728, // TrackElemType::FlatToUp25 + 96256, // TrackElemType::Up25ToUp60 + 96256, // TrackElemType::Up60ToUp25 + 73728, // TrackElemType::Up25ToFlat + 79872, // TrackElemType::Down25 + 114688, // TrackElemType::Down60 + 73728, // TrackElemType::FlatToDown25 + 96256, // TrackElemType::Down25ToDown60 + 96256, // TrackElemType::Down60ToDown25 + 73728, // TrackElemType::Down25ToFlat + 257359, // TrackElemType::LeftQuarterTurn5Tiles + 257359, // TrackElemType::RightQuarterTurn5Tiles + 69632, // TrackElemType::FlatToLeftBank + 69632, // TrackElemType::FlatToRightBank + 69632, // TrackElemType::LeftBankToFlat + 69632, // TrackElemType::RightBankToFlat + 273443, // TrackElemType::BankedLeftQuarterTurn5Tiles + 273443, // TrackElemType::BankedRightQuarterTurn5Tiles + 78336, // TrackElemType::LeftBankToUp25 + 78336, // TrackElemType::RightBankToUp25 + 78336, // TrackElemType::Up25ToLeftBank + 78336, // TrackElemType::Up25ToRightBank + 78336, // TrackElemType::LeftBankToDown25 + 78336, // TrackElemType::RightBankToDown25 + 78336, // TrackElemType::Down25ToLeftBank + 78336, // TrackElemType::Down25ToRightBank + 69632, // TrackElemType::LeftBank + 69632, // TrackElemType::RightBank + 313656, // TrackElemType::LeftQuarterTurn5TilesUp25 + 313656, // TrackElemType::RightQuarterTurn5TilesUp25 + 313656, // TrackElemType::LeftQuarterTurn5TilesDown25 + 313656, // TrackElemType::RightQuarterTurn5TilesDown25 + 229376, // TrackElemType::SBendLeft + 229376, // TrackElemType::SBendRight + 491520, // TrackElemType::LeftVerticalLoop + 491520, // TrackElemType::RightVerticalLoop + 154415, // TrackElemType::LeftQuarterTurn3Tiles + 154415, // TrackElemType::RightQuarterTurn3Tiles + 164065, // TrackElemType::LeftBankedQuarterTurn3Tiles + 164065, // TrackElemType::RightBankedQuarterTurn3Tiles + 270226, // TrackElemType::LeftQuarterTurn3TilesUp25 + 270226, // TrackElemType::RightQuarterTurn3TilesUp25 + 270226, // TrackElemType::LeftQuarterTurn3TilesDown25 + 270226, // TrackElemType::RightQuarterTurn3TilesDown25 + 51471, // TrackElemType::LeftQuarterTurn1Tile + 51471, // TrackElemType::RightQuarterTurn1Tile + 212992, // TrackElemType::LeftTwistDownToUp + 212992, // TrackElemType::RightTwistDownToUp + 212992, // TrackElemType::LeftTwistUpToDown + 212992, // TrackElemType::RightTwistUpToDown + 294912, // TrackElemType::HalfLoopUp + 294912, // TrackElemType::HalfLoopDown + 229376, // TrackElemType::LeftCorkscrewUp + 229376, // TrackElemType::RightCorkscrewUp + 229376, // TrackElemType::LeftCorkscrewDown + 229376, // TrackElemType::RightCorkscrewDown + 98304, // TrackElemType::FlatToUp60 + 98304, // TrackElemType::Up60ToFlat + 98304, // TrackElemType::FlatToDown60 + 98304, // TrackElemType::Down60ToFlat + 524288, // TrackElemType::TowerBase + 65536, // TrackElemType::TowerSection + 69632, // TrackElemType::FlatCovered + 83968, // TrackElemType::Up25Covered + 118784, // TrackElemType::Up60Covered + 77824, // TrackElemType::FlatToUp25Covered + 100352, // TrackElemType::Up25ToUp60Covered + 100352, // TrackElemType::Up60ToUp25Covered + 77824, // TrackElemType::Up25ToFlatCovered + 83968, // TrackElemType::Down25Covered + 118784, // TrackElemType::Down60Covered + 77824, // TrackElemType::FlatToDown25Covered + 100352, // TrackElemType::Down25ToDown60Covered + 100352, // TrackElemType::Down60ToDown25Covered + 77824, // TrackElemType::Down25ToFlatCovered + 261455, // TrackElemType::LeftQuarterTurn5TilesCovered + 261455, // TrackElemType::RightQuarterTurn5TilesCovered + 233472, // TrackElemType::SBendLeftCovered + 233472, // TrackElemType::SBendRightCovered + 158511, // TrackElemType::LeftQuarterTurn3TilesCovered + 158511, // TrackElemType::RightQuarterTurn3TilesCovered + 328192, // TrackElemType::LeftHalfBankedHelixUpSmall + 328192, // TrackElemType::RightHalfBankedHelixUpSmall + 328192, // TrackElemType::LeftHalfBankedHelixDownSmall + 328192, // TrackElemType::RightHalfBankedHelixDownSmall + 547072, // TrackElemType::LeftHalfBankedHelixUpLarge + 547072, // TrackElemType::RightHalfBankedHelixUpLarge + 547072, // TrackElemType::LeftHalfBankedHelixDownLarge + 547072, // TrackElemType::RightHalfBankedHelixDownLarge + 126976, // TrackElemType::LeftQuarterTurn1TileUp60 + 126976, // TrackElemType::RightQuarterTurn1TileUp60 + 126976, // TrackElemType::LeftQuarterTurn1TileDown60 + 126976, // TrackElemType::RightQuarterTurn1TileDown60 + 90112, // TrackElemType::Brakes + 77824, // TrackElemType::Booster + 65536, // TrackElemType::Maze + 273539, // TrackElemType::LeftQuarterBankedHelixLargeUp + 273539, // TrackElemType::RightQuarterBankedHelixLargeUp + 273539, // TrackElemType::LeftQuarterBankedHelixLargeDown + 273539, // TrackElemType::RightQuarterBankedHelixLargeDown + 273539, // TrackElemType::LeftQuarterHelixLargeUp + 273539, // TrackElemType::RightQuarterHelixLargeUp + 273539, // TrackElemType::LeftQuarterHelixLargeDown + 273539, // TrackElemType::RightQuarterHelixLargeDown + 83968, // TrackElemType::Up25LeftBanked + 83968, // TrackElemType::Up25RightBanked + 143360, // TrackElemType::Waterfall + 118784, // TrackElemType::Rapids + 196608, // TrackElemType::OnRidePhoto + 83968, // TrackElemType::Down25LeftBanked + 83968, // TrackElemType::Down25RightBanked + 393216, // TrackElemType::Watersplash + 376832, // TrackElemType::FlatToUp60LongBase + 376832, // TrackElemType::Up60ToFlatLongBase + 126976, // TrackElemType::Whirlpool + 376832, // TrackElemType::Down60ToFlatLongBase + 376832, // TrackElemType::FlatToDown60LongBase + 643072, // TrackElemType::CableLiftHill + 491520, // TrackElemType::ReverseFreefallSlope + 65536, // TrackElemType::ReverseFreefallVertical + 69632, // TrackElemType::Up90 + 69632, // TrackElemType::Down90 + 114688, // TrackElemType::Up60ToUp90 + 114688, // TrackElemType::Down90ToDown60 + 114688, // TrackElemType::Up90ToUp60 + 114688, // TrackElemType::Down60ToDown90 + 147456, // TrackElemType::BrakeForDrop + 180151, // TrackElemType::LeftEighthToDiag + 180151, // TrackElemType::RightEighthToDiag + 180151, // TrackElemType::LeftEighthToOrthogonal + 180151, // TrackElemType::RightEighthToOrthogonal + 190960, // TrackElemType::LeftEighthBankToDiag + 190960, // TrackElemType::RightEighthBankToDiag + 190960, // TrackElemType::LeftEighthBankToOrthogonal + 190960, // TrackElemType::RightEighthBankToOrthogonal + 92681, // TrackElemType::DiagFlat + 111820, // TrackElemType::DiagUp25 + 147456, // TrackElemType::DiagUp60 + 102400, // TrackElemType::DiagFlatToUp25 + 129024, // TrackElemType::DiagUp25ToUp60 + 129024, // TrackElemType::DiagUp60ToUp25 + 102400, // TrackElemType::DiagUp25ToFlat + 111820, // TrackElemType::DiagDown25 + 147456, // TrackElemType::DiagDown60 + 102400, // TrackElemType::DiagFlatToDown25 + 129024, // TrackElemType::DiagDown25ToDown60 + 129024, // TrackElemType::DiagDown60ToDown25 + 102400, // TrackElemType::DiagDown25ToFlat + 107008, // TrackElemType::DiagFlatToUp60 + 107008, // TrackElemType::DiagUp60ToFlat + 107008, // TrackElemType::DiagFlatToDown60 + 107008, // TrackElemType::DiagDown60ToFlat + 96777, // TrackElemType::DiagFlatToLeftBank + 96777, // TrackElemType::DiagFlatToRightBank + 96777, // TrackElemType::DiagLeftBankToFlat + 96777, // TrackElemType::DiagRightBankToFlat + 106496, // TrackElemType::DiagLeftBankToUp25 + 106496, // TrackElemType::DiagRightBankToUp25 + 106496, // TrackElemType::DiagUp25ToLeftBank + 106496, // TrackElemType::DiagUp25ToRightBank + 106496, // TrackElemType::DiagLeftBankToDown25 + 106496, // TrackElemType::DiagRightBankToDown25 + 106496, // TrackElemType::DiagDown25ToLeftBank + 106496, // TrackElemType::DiagDown25ToRightBank + 96777, // TrackElemType::DiagLeftBank + 96777, // TrackElemType::DiagRightBank + 282624, // TrackElemType::LogFlumeReverser + 217088, // TrackElemType::SpinningTunnel + 221184, // TrackElemType::LeftBarrelRollUpToDown + 221184, // TrackElemType::RightBarrelRollUpToDown + 221184, // TrackElemType::LeftBarrelRollDownToUp + 221184, // TrackElemType::RightBarrelRollDownToUp + 270226, // TrackElemType::LeftBankToLeftQuarterTurn3TilesUp25 + 270226, // TrackElemType::RightBankToRightQuarterTurn3TilesUp25 + 270226, // TrackElemType::LeftQuarterTurn3TilesDown25ToLeftBank + 270226, // TrackElemType::RightQuarterTurn3TilesDown25ToRightBank + 96384, // TrackElemType::PoweredLift + 884736, // TrackElemType::LeftLargeHalfLoopUp + 884736, // TrackElemType::RightLargeHalfLoopUp + 884736, // TrackElemType::LeftLargeHalfLoopDown + 884736, // TrackElemType::RightLargeHalfLoopDown + 221184, // TrackElemType::LeftFlyerTwistUp + 221184, // TrackElemType::RightFlyerTwistUp + 221184, // TrackElemType::LeftFlyerTwistDown + 221184, // TrackElemType::RightFlyerTwistDown + 294912, // TrackElemType::FlyerHalfLoopUninvertedUp + 294912, // TrackElemType::FlyerHalfLoopInvertedDown + 229376, // TrackElemType::LeftFlyerCorkscrewUp + 229376, // TrackElemType::RightFlyerCorkscrewUp + 229376, // TrackElemType::LeftFlyerCorkscrewDown + 229376, // TrackElemType::RightFlyerCorkscrewDown + 294912, // TrackElemType::HeartLineTransferUp + 294912, // TrackElemType::HeartLineTransferDown + 417792, // TrackElemType::LeftHeartLineRoll + 417792, // TrackElemType::RightHeartLineRoll + 159744, // TrackElemType::MinigolfHoleA + 167936, // TrackElemType::MinigolfHoleB + 172032, // TrackElemType::MinigolfHoleC + 184320, // TrackElemType::MinigolfHoleD + 184320, // TrackElemType::MinigolfHoleE + 360448, // TrackElemType::MultiDimInvertedFlatToDown90QuarterLoop + 360448, // TrackElemType::Up90ToInvertedFlatQuarterLoop + 360448, // TrackElemType::InvertedFlatToDown90QuarterLoop + 270226, // TrackElemType::LeftCurvedLiftHill + 270226, // TrackElemType::RightCurvedLiftHill + 393216, // TrackElemType::LeftReverser + 393216, // TrackElemType::RightReverser + 65536, // TrackElemType::AirThrustTopCap + 65536, // TrackElemType::AirThrustVerticalDown + 491520, // TrackElemType::AirThrustVerticalDownToLevel + 94208, // TrackElemType::BlockBrakes + 287115, // TrackElemType::LeftBankedQuarterTurn3TileUp25 + 287115, // TrackElemType::RightBankedQuarterTurn3TileUp25 + 287115, // TrackElemType::LeftBankedQuarterTurn3TileDown25 + 287115, // TrackElemType::RightBankedQuarterTurn3TileDown25 + 333259, // TrackElemType::LeftBankedQuarterTurn5TileUp25 + 333259, // TrackElemType::RightBankedQuarterTurn5TileUp25 + 333259, // TrackElemType::LeftBankedQuarterTurn5TileDown25 + 333259, // TrackElemType::RightBankedQuarterTurn5TileDown25 + 83968, // TrackElemType::Up25ToLeftBankedUp25 + 83968, // TrackElemType::Up25ToRightBankedUp25 + 83968, // TrackElemType::LeftBankedUp25ToUp25 + 83968, // TrackElemType::RightBankedUp25ToUp25 + 83968, // TrackElemType::Down25ToLeftBankedDown25 + 83968, // TrackElemType::Down25ToRightBankedDown25 + 83968, // TrackElemType::LeftBankedDown25ToDown25 + 83968, // TrackElemType::RightBankedDown25ToDown25 + 77824, // TrackElemType::LeftBankedFlatToLeftBankedUp25 + 77824, // TrackElemType::RightBankedFlatToRightBankedUp25 + 77824, // TrackElemType::LeftBankedUp25ToLeftBankedFlat + 77824, // TrackElemType::RightBankedUp25ToRightBankedFlat + 77824, // TrackElemType::LeftBankedFlatToLeftBankedDown25 + 77824, // TrackElemType::RightBankedFlatToRightBankedDown25 + 77824, // TrackElemType::LeftBankedDown25ToLeftBankedFlat + 77824, // TrackElemType::RightBankedDown25ToRightBankedFlat + 77824, // TrackElemType::FlatToLeftBankedUp25 + 77824, // TrackElemType::FlatToRightBankedUp25 + 77824, // TrackElemType::LeftBankedUp25ToFlat + 77824, // TrackElemType::RightBankedUp25ToFlat + 77824, // TrackElemType::FlatToLeftBankedDown25 + 77824, // TrackElemType::FlatToRightBankedDown25 + 77824, // TrackElemType::LeftBankedDown25ToFlat + 77824, // TrackElemType::RightBankedDown25ToFlat + 151552, // TrackElemType::LeftQuarterTurn1TileUp90 + 151552, // TrackElemType::RightQuarterTurn1TileUp90 + 151552, // TrackElemType::LeftQuarterTurn1TileDown90 + 151552, // TrackElemType::RightQuarterTurn1TileDown90 + 360448, // TrackElemType::MultiDimUp90ToInvertedFlatQuarterLoop + 360448, // TrackElemType::MultiDimFlatToDown90QuarterLoop + 360448, // TrackElemType::MultiDimInvertedUp90ToFlatQuarterLoop + 77824, // TrackElemType::RotationControlToggle + 262144, // TrackElemType::FlatTrack1x4A + 262144, // TrackElemType::FlatTrack2x2 + 1048576,// TrackElemType::FlatTrack4x4 + 524288, // TrackElemType::FlatTrack2x4 + 327680, // TrackElemType::FlatTrack1x5 + 65536, // TrackElemType::FlatTrack1x1A + 262144, // TrackElemType::FlatTrack1x4B + 65536, // TrackElemType::FlatTrack1x1B + 262144, // TrackElemType::FlatTrack1x4C + 524288, // TrackElemType::FlatTrack3x3 + 360448, // TrackElemType::LeftLargeCorkscrewUp + 360448, // TrackElemType::RightLargeCorkscrewUp + 360448, // TrackElemType::LeftLargeCorkscrewDown + 360448, // TrackElemType::RightCorkscrewDown + 589824, // TrackElemType::LeftMediumHalfLoopUp + 589824, // TrackElemType::RightMediumHalfLoopUp + 589824, // TrackElemType::LeftMediumHalfLoopDown + 589824, // TrackElemType::RightMediumHalfLoopDown + 229376, // TrackElemType::LeftZeroGRollUp + 229376, // TrackElemType::RightZeroGRollUp + 229376, // TrackElemType::LeftZeroGRollDown + 229376, // TrackElemType::RightZeroGRollDown + 425984, // TrackElemType::LeftLargeZeroGRollUp + 425984, // TrackElemType::RightLargeZeroGRollUp + 425984, // TrackElemType::LeftLargeZeroGRollDown + 425984, // TrackElemType::RightLargeZeroGRollDown + 884736, // TrackElemType::LeftFlyerLargeHalfLoopUninvertedUp + 884736, // TrackElemType::RightFlyerLargeHalfLoopUninvertedUp + 884736, // TrackElemType::LeftFlyerLargeHalfLoopInvertedDown + 884736, // TrackElemType::RightFlyerLargeHalfLoopInvertedDown + 884736, // TrackElemType::LeftFlyerLargeHalfLoopInvertedUp + 884736, // TrackElemType::RightFlyerLargeHalfLoopInvertedUp + 884736, // TrackElemType::LeftFlyerLargeHalfLoopUninvertedDown + 884736, // TrackElemType::RightFlyerLargeHalfLoopUninvertedDown + 294912, // TrackElemType::FlyerHalfLoopInvertedUp + 294912, // TrackElemType::FlyerHalfLoopUninvertedDown + 219559, // TrackElemType::LeftEighthToDiagUp25 + 219559, // TrackElemType::RightEighthToDiagUp25 + 219559, // TrackElemType::LeftEighthToDiagDown25 + 219559, // TrackElemType::RightEighthToDiagDown25 + 219559, // TrackElemType::LeftEighthToOrthogonalUp25 + 219559, // TrackElemType::RightEighthToOrthogonalUp25 + 219559, // TrackElemType::LeftEighthToOrthogonalDown25 + 219559, // TrackElemType::RightEighthToOrthogonalDown25 + 118809, // TrackElemType::DiagUp25ToLeftBankedUp25 + 118809, // TrackElemType::DiagUp25ToRightBankedUp25 + 118809, // TrackElemType::DiagLeftBankedUp25ToUp25 + 118809, // TrackElemType::DiagRightBankedUp25ToUp25 + 118809, // TrackElemType::DiagDown25ToLeftBankedDown25 + 118809, // TrackElemType::DiagDown25ToRightBankedDown25 + 118809, // TrackElemType::DiagLeftBankedDown25ToDown25 + 118809, // TrackElemType::DiagRightBankedDown25ToDown25 + 108800, // TrackElemType::DiagLeftBankedFlatToLeftBankedUp25 + 108800, // TrackElemType::DiagRightBankedFlatToRightBankedUp25 + 108800, // TrackElemType::DiagLeftBankedUp25ToLeftBankedFlat + 108800, // TrackElemType::DiagRightBankedUp25ToRightBankedFlat + 108800, // TrackElemType::DiagLeftBankedFlatToLeftBankedDown25 + 108800, // TrackElemType::DiagRightBankedFlatToRightBankedDown25 + 108800, // TrackElemType::DiagLeftBankedDown25ToLeftBankedFlat + 108800, // TrackElemType::DiagRightBankedDown25ToRightBankedFlat + 108800, // TrackElemType::DiagFlatToLeftBankedUp25 + 108800, // TrackElemType::DiagFlatToRightBankedUp25 + 108800, // TrackElemType::DiagLeftBankedUp25ToFlat + 108800, // TrackElemType::DiagRightBankedUp25ToFlat + 108800, // TrackElemType::DiagFlatToLeftBankedDown25 + 108800, // TrackElemType::DiagFlatToRightBankedDown25 + 108800, // TrackElemType::DiagLeftBankedDown25ToFlat + 108800, // TrackElemType::DiagRightBankedDown25ToFlat + 118809, // TrackElemType::DiagUp25LeftBanked + 118809, // TrackElemType::DiagUp25RightBanked + 118809, // TrackElemType::DiagDown25LeftBanked + 118809, // TrackElemType::DiagDown25RightBanked + 233281, // TrackElemType::LeftEighthBankToDiagUp25 + 233281, // TrackElemType::RightEighthBankToDiagUp25 + 233281, // TrackElemType::LeftEighthBankToDiagDown25 + 233281, // TrackElemType::RightEighthBankToDiagDown25 + 233281, // TrackElemType::LeftEighthBankToOrthogonalUp25 + 233281, // TrackElemType::RightEighthBankToOrthogonalUp25 + 233281, // TrackElemType::LeftEighthBankToOrthogonalDown25 + 233281, // TrackElemType::RightEighthBankToOrthogonalDown25 + 123456, // TrackElemType::DiagBrakes + 123456, // TrackElemType::DiagBlockBrakes + }; + + + + static_assert(std::size(TrackPricing) == TrackElemType::Count); + + /** rct2: 0x0099EA1C */ + static constexpr track_type_t TrackElementMirrorMap[] = { + TrackElemType::Flat, + TrackElemType::EndStation, + TrackElemType::BeginStation, + TrackElemType::MiddleStation, + TrackElemType::Up25, + TrackElemType::Up60, + TrackElemType::FlatToUp25, + TrackElemType::Up25ToUp60, + TrackElemType::Up60ToUp25, + TrackElemType::Up25ToFlat, + TrackElemType::Down25, + TrackElemType::Down60, + TrackElemType::FlatToDown25, + TrackElemType::Down25ToDown60, + TrackElemType::Down60ToDown25, + TrackElemType::Down25ToFlat, + TrackElemType::RightQuarterTurn5Tiles, // TrackElemType::LeftQuarterTurn5Tiles + TrackElemType::LeftQuarterTurn5Tiles, // TrackElemType::RightQuarterTurn5Tiles + TrackElemType::FlatToRightBank, // TrackElemType::FlatToLeftBank + TrackElemType::FlatToLeftBank, // TrackElemType::FlatToRightBank + TrackElemType::RightBankToFlat, // TrackElemType::LeftBankToFlat + TrackElemType::LeftBankToFlat, // TrackElemType::RightBankToFlat + TrackElemType::BankedRightQuarterTurn5Tiles, // TrackElemType::BankedLeftQuarterTurn5Tiles + TrackElemType::BankedLeftQuarterTurn5Tiles, // TrackElemType::BankedRightQuarterTurn5Tiles + TrackElemType::RightBankToUp25, // TrackElemType::LeftBankToUp25 + TrackElemType::LeftBankToUp25, // TrackElemType::RightBankToUp25 + TrackElemType::Up25ToRightBank, // TrackElemType::Up25ToLeftBank + TrackElemType::Up25ToLeftBank, // TrackElemType::Up25ToRightBank + TrackElemType::RightBankToDown25, // TrackElemType::LeftBankToDown25 + TrackElemType::LeftBankToDown25, // TrackElemType::RightBankToDown25 + TrackElemType::Down25ToRightBank, // TrackElemType::Down25ToLeftBank + TrackElemType::Down25ToLeftBank, // TrackElemType::Down25ToRightBank + TrackElemType::RightBank, // TrackElemType::LeftBank + TrackElemType::LeftBank, // TrackElemType::RightBank + TrackElemType::RightQuarterTurn5TilesUp25, // TrackElemType::LeftQuarterTurn5TilesUp25 + TrackElemType::LeftQuarterTurn5TilesUp25, // TrackElemType::RightQuarterTurn5TilesUp25 + TrackElemType::RightQuarterTurn5TilesDown25, // TrackElemType::LeftQuarterTurn5TilesDown25 + TrackElemType::LeftQuarterTurn5TilesDown25, // TrackElemType::RightQuarterTurn5TilesDown25 + TrackElemType::SBendRight, // TrackElemType::SBendLeft + TrackElemType::SBendLeft, // TrackElemType::SBendRight + TrackElemType::RightVerticalLoop, // TrackElemType::LeftVerticalLoop + TrackElemType::LeftVerticalLoop, // TrackElemType::RightVerticalLoop + TrackElemType::RightQuarterTurn3Tiles, // TrackElemType::LeftQuarterTurn3Tiles + TrackElemType::LeftQuarterTurn3Tiles, // TrackElemType::RightQuarterTurn3Tiles + TrackElemType::RightBankedQuarterTurn3Tiles, // TrackElemType::LeftBankedQuarterTurn3Tiles + TrackElemType::LeftBankedQuarterTurn3Tiles, // TrackElemType::RightBankedQuarterTurn3Tiles + TrackElemType::RightQuarterTurn3TilesUp25, // TrackElemType::LeftQuarterTurn3TilesUp25 + TrackElemType::LeftQuarterTurn3TilesUp25, // TrackElemType::RightQuarterTurn3TilesUp25 + TrackElemType::RightQuarterTurn3TilesDown25, // TrackElemType::LeftQuarterTurn3TilesDown25 + TrackElemType::LeftQuarterTurn3TilesDown25, // TrackElemType::RightQuarterTurn3TilesDown25 + TrackElemType::RightQuarterTurn1Tile, // TrackElemType::LeftQuarterTurn1Tile + TrackElemType::LeftQuarterTurn1Tile, // TrackElemType::RightQuarterTurn1Tile + TrackElemType::RightTwistDownToUp, // TrackElemType::LeftTwistDownToUp + TrackElemType::LeftTwistDownToUp, // TrackElemType::RightTwistDownToUp + TrackElemType::RightTwistUpToDown, // TrackElemType::LeftTwistUpToDown + TrackElemType::LeftTwistUpToDown, // TrackElemType::RightTwistUpToDown + TrackElemType::HalfLoopUp, + TrackElemType::HalfLoopDown, + TrackElemType::RightCorkscrewUp, // TrackElemType::LeftCorkscrewUp + TrackElemType::LeftCorkscrewUp, // TrackElemType::RightCorkscrewUp + TrackElemType::RightCorkscrewDown, // TrackElemType::LeftCorkscrewDown + TrackElemType::LeftCorkscrewDown, // TrackElemType::RightCorkscrewDown + TrackElemType::FlatToUp60, + TrackElemType::Up60ToFlat, + TrackElemType::FlatToDown60, + TrackElemType::Down60ToFlat, + TrackElemType::TowerBase, + TrackElemType::TowerSection, + TrackElemType::FlatCovered, + TrackElemType::Up25Covered, + TrackElemType::Up60Covered, + TrackElemType::FlatToUp25Covered, + TrackElemType::Up25ToUp60Covered, + TrackElemType::Up60ToUp25Covered, + TrackElemType::Up25ToFlatCovered, + TrackElemType::Down25Covered, + TrackElemType::Down60Covered, + TrackElemType::FlatToDown25Covered, + TrackElemType::Down25ToDown60Covered, + TrackElemType::Down60ToDown25Covered, + TrackElemType::Down25ToFlatCovered, + TrackElemType::RightQuarterTurn5TilesCovered, // TrackElemType::LeftQuarterTurn5TilesCovered + TrackElemType::LeftQuarterTurn5TilesCovered, // TrackElemType::RightQuarterTurn5TilesCovered + TrackElemType::SBendRightCovered, // TrackElemType::SBendLeftCovered + TrackElemType::SBendLeftCovered, // TrackElemType::SBendRightCovered + TrackElemType::RightQuarterTurn3TilesCovered, // TrackElemType::LeftQuarterTurn3TilesCovered + TrackElemType::LeftQuarterTurn3TilesCovered, // TrackElemType::RightQuarterTurn3TilesCovered + TrackElemType::RightHalfBankedHelixUpSmall, // TrackElemType::LeftHalfBankedHelixUpSmall + TrackElemType::LeftHalfBankedHelixUpSmall, // TrackElemType::RightHalfBankedHelixUpSmall + TrackElemType::RightHalfBankedHelixDownSmall, // TrackElemType::LeftHalfBankedHelixDownSmall + TrackElemType::LeftHalfBankedHelixDownSmall, // TrackElemType::RightHalfBankedHelixDownSmall + TrackElemType::RightHalfBankedHelixUpLarge, // TrackElemType::LeftHalfBankedHelixUpLarge + TrackElemType::LeftHalfBankedHelixUpLarge, // TrackElemType::RightHalfBankedHelixUpLarge + TrackElemType::RightHalfBankedHelixDownLarge, // TrackElemType::LeftHalfBankedHelixDownLarge + TrackElemType::LeftHalfBankedHelixDownLarge, // TrackElemType::RightHalfBankedHelixDownLarge + TrackElemType::RightQuarterTurn1TileUp60, // TrackElemType::LeftQuarterTurn1TileUp60 + TrackElemType::LeftQuarterTurn1TileUp60, // TrackElemType::RightQuarterTurn1TileUp60 + TrackElemType::RightQuarterTurn1TileDown60, // TrackElemType::LeftQuarterTurn1TileDown60 + TrackElemType::LeftQuarterTurn1TileDown60, // TrackElemType::RightQuarterTurn1TileDown60 + TrackElemType::Brakes, + TrackElemType::Booster, + TrackElemType::Maze, + TrackElemType::RightQuarterBankedHelixLargeUp, // TrackElemType::LeftQuarterBankedHelixLargeUp + TrackElemType::LeftQuarterBankedHelixLargeUp, // TrackElemType::RightQuarterBankedHelixLargeUp + TrackElemType::RightQuarterBankedHelixLargeDown, // TrackElemType::LeftQuarterBankedHelixLargeDown + TrackElemType::LeftQuarterBankedHelixLargeDown, // TrackElemType::RightQuarterBankedHelixLargeDown + TrackElemType::RightQuarterHelixLargeUp, // TrackElemType::LeftQuarterHelixLargeUp + TrackElemType::LeftQuarterHelixLargeUp, // TrackElemType::RightQuarterHelixLargeUp + TrackElemType::RightQuarterHelixLargeDown, // TrackElemType::LeftQuarterHelixLargeDown + TrackElemType::LeftQuarterHelixLargeDown, // TrackElemType::RightQuarterHelixLargeDown + TrackElemType::Up25RightBanked, // TrackElemType::Up25LeftBanked + TrackElemType::Up25LeftBanked, // TrackElemType::Up25RightBanked + TrackElemType::Waterfall, + TrackElemType::Rapids, + TrackElemType::OnRidePhoto, + TrackElemType::Down25RightBanked, // TrackElemType::Down25LeftBanked + TrackElemType::Down25LeftBanked, // TrackElemType::Down25RightBanked + TrackElemType::Watersplash, + TrackElemType::FlatToUp60LongBase, + TrackElemType::Up60ToFlatLongBase, + TrackElemType::Whirlpool, + TrackElemType::Down60ToFlatLongBase, + TrackElemType::FlatToDown60LongBase, + TrackElemType::CableLiftHill, + TrackElemType::ReverseFreefallSlope, + TrackElemType::ReverseFreefallVertical, + TrackElemType::Up90, + TrackElemType::Down90, + TrackElemType::Up60ToUp90, + TrackElemType::Down90ToDown60, + TrackElemType::Up90ToUp60, + TrackElemType::Down60ToDown90, + TrackElemType::BrakeForDrop, + TrackElemType::RightEighthToDiag, // TrackElemType::LeftEighthToDiag + TrackElemType::LeftEighthToDiag, // TrackElemType::RightEighthToDiag + TrackElemType::RightEighthToOrthogonal, // TrackElemType::LeftEighthToOrthogonal + TrackElemType::LeftEighthToOrthogonal, // TrackElemType::RightEighthToOrthogonal + TrackElemType::RightEighthBankToDiag, // TrackElemType::LeftEighthBankToDiag + TrackElemType::LeftEighthBankToDiag, // TrackElemType::RightEighthBankToDiag + TrackElemType::RightEighthBankToOrthogonal, // TrackElemType::LeftEighthBankToOrthogonal + TrackElemType::LeftEighthBankToOrthogonal, // TrackElemType::RightEighthBankToOrthogonal + TrackElemType::DiagFlat, + TrackElemType::DiagUp25, + TrackElemType::DiagUp60, + TrackElemType::DiagFlatToUp25, + TrackElemType::DiagUp25ToUp60, + TrackElemType::DiagUp60ToUp25, + TrackElemType::DiagUp25ToFlat, + TrackElemType::DiagDown25, + TrackElemType::DiagDown60, + TrackElemType::DiagFlatToDown25, + TrackElemType::DiagDown25ToDown60, + TrackElemType::DiagDown60ToDown25, + TrackElemType::DiagDown25ToFlat, + TrackElemType::DiagFlatToUp60, + TrackElemType::DiagUp60ToFlat, + TrackElemType::DiagFlatToDown60, + TrackElemType::DiagDown60ToFlat, + TrackElemType::DiagFlatToRightBank, // TrackElemType::DiagFlatToLeftBank + TrackElemType::DiagFlatToLeftBank, // TrackElemType::DiagFlatToRightBank + TrackElemType::DiagRightBankToFlat, // TrackElemType::DiagLeftBankToFlat + TrackElemType::DiagLeftBankToFlat, // TrackElemType::DiagRightBankToFlat + TrackElemType::DiagRightBankToUp25, // TrackElemType::DiagLeftBankToUp25 + TrackElemType::DiagLeftBankToUp25, // TrackElemType::DiagRightBankToUp25 + TrackElemType::DiagUp25ToRightBank, // TrackElemType::DiagUp25ToLeftBank + TrackElemType::DiagUp25ToLeftBank, // TrackElemType::DiagUp25ToRightBank + TrackElemType::DiagRightBankToDown25, // TrackElemType::DiagLeftBankToDown25 + TrackElemType::DiagLeftBankToDown25, // TrackElemType::DiagRightBankToDown25 + TrackElemType::DiagDown25ToRightBank, // TrackElemType::DiagDown25ToLeftBank + TrackElemType::DiagDown25ToLeftBank, // TrackElemType::DiagDown25ToRightBank + TrackElemType::DiagRightBank, // TrackElemType::DiagLeftBank + TrackElemType::DiagLeftBank, // TrackElemType::DiagRightBank + TrackElemType::LogFlumeReverser, + TrackElemType::SpinningTunnel, + TrackElemType::RightBarrelRollUpToDown, // TrackElemType::LeftBarrelRollUpToDown + TrackElemType::LeftBarrelRollUpToDown, // TrackElemType::RightBarrelRollUpToDown + TrackElemType::RightBarrelRollDownToUp, // TrackElemType::LeftBarrelRollDownToUp + TrackElemType::LeftBarrelRollDownToUp, // TrackElemType::RightBarrelRollDownToUp + TrackElemType::RightBankToRightQuarterTurn3TilesUp25, // TrackElemType::LeftBankToLeftQuarterTurn3TilesUp25 + TrackElemType::LeftBankToLeftQuarterTurn3TilesUp25, // TrackElemType::RightBankToRightQuarterTurn3TilesUp25 + TrackElemType::RightQuarterTurn3TilesDown25ToRightBank, // TrackElemType::LeftQuarterTurn3TilesDown25ToLeftBank + TrackElemType::LeftQuarterTurn3TilesDown25ToLeftBank, // TrackElemType::RightQuarterTurn3TilesDown25ToRightBank + TrackElemType::PoweredLift, + TrackElemType::RightLargeHalfLoopUp, // TrackElemType::LeftLargeHalfLoopUp + TrackElemType::LeftLargeHalfLoopUp, // TrackElemType::RightLargeHalfLoopUp + TrackElemType::RightLargeHalfLoopDown, // TrackElemType::LeftLargeHalfLoopDown + TrackElemType::LeftLargeHalfLoopDown, // TrackElemType::RightLargeHalfLoopDown + TrackElemType::RightFlyerTwistUp, // TrackElemType::LeftFlyerTwistUp + TrackElemType::LeftFlyerTwistUp, // TrackElemType::RightFlyerTwistUp + TrackElemType::RightFlyerTwistDown, // TrackElemType::LeftFlyerTwistDown + TrackElemType::LeftFlyerTwistDown, // TrackElemType::RightFlyerTwistDown + TrackElemType::FlyerHalfLoopUninvertedUp, + TrackElemType::FlyerHalfLoopInvertedDown, + TrackElemType::RightFlyerCorkscrewUp, // TrackElemType::LeftFlyerCorkscrewUp + TrackElemType::LeftFlyerCorkscrewUp, // TrackElemType::RightFlyerCorkscrewUp + TrackElemType::RightFlyerCorkscrewDown, // TrackElemType::LeftFlyerCorkscrewDown + TrackElemType::LeftFlyerCorkscrewDown, // TrackElemType::RightFlyerCorkscrewDown + TrackElemType::HeartLineTransferUp, + TrackElemType::HeartLineTransferDown, + TrackElemType::RightHeartLineRoll, // TrackElemType::LeftHeartLineRoll + TrackElemType::LeftHeartLineRoll, // TrackElemType::RightHeartLineRoll + TrackElemType::MinigolfHoleA, + TrackElemType::MinigolfHoleB, + TrackElemType::MinigolfHoleC, + TrackElemType::MinigolfHoleE, // TrackElemType::MinigolfHoleD + TrackElemType::MinigolfHoleD, // TrackElemType::MinigolfHoleE + TrackElemType::MultiDimInvertedFlatToDown90QuarterLoop, + TrackElemType::Up90ToInvertedFlatQuarterLoop, + TrackElemType::InvertedFlatToDown90QuarterLoop, + TrackElemType::RightCurvedLiftHill, // TrackElemType::LeftCurvedLiftHill + TrackElemType::LeftCurvedLiftHill, // TrackElemType::RightCurvedLiftHill + TrackElemType::RightReverser, // TrackElemType::LeftReverser + TrackElemType::LeftReverser, // TrackElemType::RightReverser + TrackElemType::AirThrustTopCap, + TrackElemType::AirThrustVerticalDown, + TrackElemType::AirThrustVerticalDownToLevel, + TrackElemType::BlockBrakes, + TrackElemType::RightBankedQuarterTurn3TileUp25, // TrackElemType::LeftBankedQuarterTurn3TileUp25 + TrackElemType::LeftBankedQuarterTurn3TileUp25, // TrackElemType::RightBankedQuarterTurn3TileUp25 + TrackElemType::RightBankedQuarterTurn3TileDown25, // TrackElemType::LeftBankedQuarterTurn3TileDown25 + TrackElemType::LeftBankedQuarterTurn3TileDown25, // TrackElemType::RightBankedQuarterTurn3TileDown25 + TrackElemType::RightBankedQuarterTurn5TileUp25, // TrackElemType::LeftBankedQuarterTurn5TileUp25 + TrackElemType::LeftBankedQuarterTurn5TileUp25, // TrackElemType::RightBankedQuarterTurn5TileUp25 + TrackElemType::RightBankedQuarterTurn5TileDown25, // TrackElemType::LeftBankedQuarterTurn5TileDown25 + TrackElemType::LeftBankedQuarterTurn5TileDown25, // TrackElemType::RightBankedQuarterTurn5TileDown25 + TrackElemType::Up25ToRightBankedUp25, // TrackElemType::Up25ToLeftBankedUp25 + TrackElemType::Up25ToLeftBankedUp25, // TrackElemType::Up25ToRightBankedUp25 + TrackElemType::RightBankedUp25ToUp25, // TrackElemType::LeftBankedUp25ToUp25 + TrackElemType::LeftBankedUp25ToUp25, // TrackElemType::RightBankedUp25ToUp25 + TrackElemType::Down25ToRightBankedDown25, // TrackElemType::Down25ToLeftBankedDown25 + TrackElemType::Down25ToLeftBankedDown25, // TrackElemType::Down25ToRightBankedDown25 + TrackElemType::RightBankedDown25ToDown25, // TrackElemType::LeftBankedDown25ToDown25 + TrackElemType::LeftBankedDown25ToDown25, // TrackElemType::RightBankedDown25ToDown25 + TrackElemType::RightBankedFlatToRightBankedUp25, // TrackElemType::LeftBankedFlatToLeftBankedUp25 + TrackElemType::LeftBankedFlatToLeftBankedUp25, // TrackElemType::RightBankedFlatToRightBankedUp25 + TrackElemType::RightBankedUp25ToRightBankedFlat, // TrackElemType::LeftBankedUp25ToLeftBankedFlat + TrackElemType::LeftBankedUp25ToLeftBankedFlat, // TrackElemType::RightBankedUp25ToRightBankedFlat + TrackElemType::RightBankedFlatToRightBankedDown25, // TrackElemType::LeftBankedFlatToLeftBankedDown25 + TrackElemType::LeftBankedFlatToLeftBankedDown25, // TrackElemType::RightBankedFlatToRightBankedDown25 + TrackElemType::RightBankedDown25ToRightBankedFlat, // TrackElemType::LeftBankedDown25ToLeftBankedFlat + TrackElemType::LeftBankedDown25ToLeftBankedFlat, // TrackElemType::RightBankedDown25ToRightBankedFlat + TrackElemType::FlatToRightBankedUp25, // TrackElemType::FlatToLeftBankedUp25 + TrackElemType::FlatToLeftBankedUp25, // TrackElemType::FlatToRightBankedUp25 + TrackElemType::RightBankedUp25ToFlat, // TrackElemType::LeftBankedUp25ToFlat + TrackElemType::LeftBankedUp25ToFlat, // TrackElemType::RightBankedUp25ToFlat + TrackElemType::FlatToRightBankedDown25, // TrackElemType::FlatToLeftBankedDown25 + TrackElemType::FlatToLeftBankedDown25, // TrackElemType::FlatToRightBankedDown25 + TrackElemType::RightBankedDown25ToFlat, // TrackElemType::LeftBankedDown25ToFlat + TrackElemType::LeftBankedDown25ToFlat, // TrackElemType::RightBankedDown25ToFlat + TrackElemType::RightQuarterTurn1TileUp90, // TrackElemType::LeftQuarterTurn1TileUp90 + TrackElemType::LeftQuarterTurn1TileUp90, // TrackElemType::RightQuarterTurn1TileUp90 + TrackElemType::RightQuarterTurn1TileDown90, // TrackElemType::LeftQuarterTurn1TileDown90 + TrackElemType::LeftQuarterTurn1TileDown90, // TrackElemType::RightQuarterTurn1TileDown90 + TrackElemType::MultiDimUp90ToInvertedFlatQuarterLoop, + TrackElemType::MultiDimFlatToDown90QuarterLoop, + TrackElemType::MultiDimInvertedUp90ToFlatQuarterLoop, + TrackElemType::RotationControlToggle, + TrackElemType::FlatTrack1x4A, // TrackElemType::FlatTrack1x4A + TrackElemType::FlatTrack2x2, // TrackElemType::FlatTrack2x2 + TrackElemType::FlatTrack4x4, // TrackElemType::FlatTrack4x4 + TrackElemType::FlatTrack2x4, // TrackElemType::FlatTrack2x4 + TrackElemType::FlatTrack1x5, // TrackElemType::FlatTrack1x5 + TrackElemType::FlatTrack1x1A, // TrackElemType::FlatTrack1x1A + TrackElemType::FlatTrack1x4B, // TrackElemType::FlatTrack1x4B + TrackElemType::FlatTrack1x1B, // TrackElemType::FlatTrack1x1B + TrackElemType::FlatTrack1x4C, // TrackElemType::FlatTrack1x4C + TrackElemType::FlatTrack3x3, // TrackElemType::FlatTrack3x3 + TrackElemType::RightLargeCorkscrewUp, // TrackElemType::LeftLargeCorkscrewUp + TrackElemType::LeftLargeCorkscrewUp, // TrackElemType::RightLargeCorkscrewUp + TrackElemType::RightLargeCorkscrewDown, // TrackElemType::LeftLargeCorkscrewDown + TrackElemType::LeftLargeCorkscrewDown, // TrackElemType::RightLargeCorkscrewDown + TrackElemType::RightMediumHalfLoopUp, // TrackElemType::LeftMediumHalfLoopUp + TrackElemType::LeftMediumHalfLoopUp, // TrackElemType::RightMediumHalfLoopUp + TrackElemType::RightMediumHalfLoopDown, // TrackElemType::LeftMediumHalfLoopDown + TrackElemType::LeftMediumHalfLoopDown, // TrackElemType::RightMediumHalfLoopDown + TrackElemType::RightZeroGRollUp, // TrackElemType::LeftZeroGRollUp + TrackElemType::LeftZeroGRollUp, // TrackElemType::RightZeroGRollUp + TrackElemType::RightZeroGRollDown, // TrackElemType::LeftZeroGRollDown + TrackElemType::LeftZeroGRollDown, // TrackElemType::RightZeroGRollDown + TrackElemType::RightLargeZeroGRollUp, // TrackElemType::LeftLargeZeroGRollUp + TrackElemType::LeftLargeZeroGRollUp, // TrackElemType::RightLargeZeroGRollUp + TrackElemType::RightLargeZeroGRollDown, // TrackElemType::LeftLargeZeroGRollDown + TrackElemType::LeftLargeZeroGRollDown, // TrackElemType::RightLargeZeroGRollDown + TrackElemType::RightFlyerLargeHalfLoopUninvertedUp, // TrackElemType::LeftFlyerLargeHalfLoopUninvertedUp + TrackElemType::LeftFlyerLargeHalfLoopUninvertedUp, // TrackElemType::RightFlyerLargeHalfLoopUninvertedUp + TrackElemType::RightFlyerLargeHalfLoopInvertedDown, // TrackElemType::LeftFlyerLargeHalfLoopInvertedDown + TrackElemType::LeftFlyerLargeHalfLoopInvertedDown, // TrackElemType::RightFlyerLargeHalfLoopInvertedDown + TrackElemType::RightFlyerLargeHalfLoopInvertedUp, // TrackElemType::LeftFlyerLargeHalfLoopInvertedUp + TrackElemType::LeftFlyerLargeHalfLoopInvertedUp, // TrackElemType::RightFlyerLargeHalfLoopInvertedUp + TrackElemType::RightFlyerLargeHalfLoopUninvertedDown, // TrackElemType::LeftFlyerLargeHalfLoopUninvertedDown + TrackElemType::LeftFlyerLargeHalfLoopUninvertedDown, // TrackElemType::RightFlyerLargeHalfLoopUninvertedDown + TrackElemType::FlyerHalfLoopInvertedUp, + TrackElemType::FlyerHalfLoopUninvertedDown, + TrackElemType::RightEighthToDiagUp25, // TrackElemType::LeftEighthToDiagUp25 + TrackElemType::LeftEighthToDiagUp25, // TrackElemType::RightEighthToDiagUp25 + TrackElemType::RightEighthToDiagDown25, // TrackElemType::LeftEighthToDiagDown25 + TrackElemType::LeftEighthToDiagDown25, // TrackElemType::RightEighthToDiagDown25 + TrackElemType::RightEighthToOrthogonalUp25, // TrackElemType::LeftEighthToOrthogonalUp25 + TrackElemType::LeftEighthToOrthogonalUp25, // TrackElemType::RightEighthToOrthogonalUp25 + TrackElemType::RightEighthToOrthogonalDown25, // TrackElemType::LeftEighthToOrthogonalDown25 + TrackElemType::LeftEighthToOrthogonalDown25, // TrackElemType::RightEighthToOrthogonalDown25 + TrackElemType::DiagUp25ToRightBankedUp25, // TrackElemType::DiagUp25ToRightBankedUp25 + TrackElemType::DiagUp25ToLeftBankedUp25, // TrackElemType::DiagUp25ToLeftBankedUp25 + TrackElemType::DiagRightBankedUp25ToUp25, // TrackElemType::DiagRightBankedUp25ToUp25 + TrackElemType::DiagLeftBankedUp25ToUp25, // TrackElemType::DiagLeftBankedUp25ToUp25 + TrackElemType::DiagDown25ToRightBankedDown25, // TrackElemType::DiagDown25ToRightBankedDown25 + TrackElemType::DiagDown25ToLeftBankedDown25, // TrackElemType::DiagDown25ToLeftBankedDown25 + TrackElemType::DiagRightBankedDown25ToDown25, // TrackElemType::DiagRightBankedDown25ToDown25 + TrackElemType::DiagLeftBankedDown25ToDown25, // TrackElemType::DiagLeftBankedDown25ToDown25 + TrackElemType::DiagRightBankedFlatToRightBankedUp25, // TrackElemType::DiagRightBankedFlatToRightBankedUp25 + TrackElemType::DiagLeftBankedFlatToLeftBankedUp25, // TrackElemType::DiagLeftBankedFlatToLeftBankedUp25 + TrackElemType::DiagRightBankedUp25ToRightBankedFlat, // TrackElemType::DiagRightBankedUp25ToRightBankedFlat + TrackElemType::DiagLeftBankedUp25ToLeftBankedFlat, // TrackElemType::DiagLeftBankedUp25ToLeftBankedFlat + TrackElemType::DiagRightBankedFlatToRightBankedDown25,// TrackElemType::DiagRightBankedFlatToRightBankedDown25 + TrackElemType::DiagLeftBankedFlatToLeftBankedDown25, // TrackElemType::DiagLeftBankedFlatToLeftBankedDown25 + TrackElemType::DiagRightBankedDown25ToRightBankedFlat,// TrackElemType::DiagRightBankedDown25ToRightBankedFlat + TrackElemType::DiagLeftBankedDown25ToLeftBankedFlat, // TrackElemType::DiagLeftBankedDown25ToLeftBankedFlat + TrackElemType::DiagFlatToRightBankedUp25, // TrackElemType::DiagFlatToRightBankedUp25 + TrackElemType::DiagFlatToLeftBankedUp25, // TrackElemType::DiagFlatToLeftBankedUp25 + TrackElemType::DiagRightBankedUp25ToFlat, // TrackElemType::DiagRightBankedUp25ToFlat + TrackElemType::DiagLeftBankedUp25ToFlat, // TrackElemType::DiagLeftBankedUp25ToFlat + TrackElemType::DiagFlatToRightBankedDown25, // TrackElemType::DiagFlatToRightBankedDown25 + TrackElemType::DiagFlatToLeftBankedDown25, // TrackElemType::DiagFlatToLeftBankedDown25 + TrackElemType::DiagRightBankedDown25ToFlat, // TrackElemType::DiagRightBankedDown25ToFlat + TrackElemType::DiagLeftBankedDown25ToFlat, // TrackElemType::DiagLeftBankedDown25ToFlat + TrackElemType::DiagUp25RightBanked, // TrackElemType::DiagUp25RightBanked + TrackElemType::DiagUp25LeftBanked, // TrackElemType::DiagUp25LeftBanked + TrackElemType::DiagDown25RightBanked, // TrackElemType::DiagDown25RightBanked + TrackElemType::DiagDown25LeftBanked, // TrackElemType::DiagDown25LeftBanked + TrackElemType::RightEighthBankToDiagUp25, // TrackElemType::RightEighthBankToDiagUp25 + TrackElemType::LeftEighthBankToDiagUp25, // TrackElemType::LeftEighthBankToDiagUp25 + TrackElemType::RightEighthBankToDiagDown25, // TrackElemType::RightEighthBankToDiagDown25 + TrackElemType::LeftEighthBankToDiagDown25, // TrackElemType::LeftEighthBankToDiagDown25 + TrackElemType::RightEighthBankToOrthogonalUp25, // TrackElemType::RightEighthBankToOrthogonalUp25 + TrackElemType::LeftEighthBankToOrthogonalUp25, // TrackElemType::LeftEighthBankToOrthogonalUp25 + TrackElemType::RightEighthBankToOrthogonalDown25, // TrackElemType::RightEighthBankToOrthogonalDown25 + TrackElemType::LeftEighthBankToOrthogonalDown25, // TrackElemType::LeftEighthBankToOrthogonalDown25 + TrackElemType::DiagBrakes, + TrackElemType::DiagBlockBrakes, + }; + static_assert(std::size(TrackElementMirrorMap) == TrackElemType::Count); + + /** rct2: 0x00999694 */ + static constexpr uint32_t TrackHeightMarkerPositions[] = { + (1 << 0), // TrackElemType::Flat + (1 << 0), // TrackElemType::EndStation + (1 << 0), // TrackElemType::BeginStation + (1 << 0), // TrackElemType::MiddleStation + (1 << 0), // TrackElemType::Up25 + (1 << 0), // TrackElemType::Up60 + (1 << 0), // TrackElemType::FlatToUp25 + (1 << 0), // TrackElemType::Up25ToUp60 + (1 << 0), // TrackElemType::Up60ToUp25 + (1 << 0), // TrackElemType::Up25ToFlat + (1 << 0), // TrackElemType::Down25 + (1 << 0), // TrackElemType::Down60 + (1 << 0), // TrackElemType::FlatToDown25 + (1 << 0), // TrackElemType::Down25ToDown60 + (1 << 0), // TrackElemType::Down60ToDown25 + (1 << 0), // TrackElemType::Down25ToFlat + (1 << 0) | (1 << 6), // TrackElemType::LeftQuarterTurn5Tiles + (1 << 0) | (1 << 6), // TrackElemType::RightQuarterTurn5Tiles + (1 << 0), // TrackElemType::FlatToLeftBank + (1 << 0), // TrackElemType::FlatToRightBank + (1 << 0), // TrackElemType::LeftBankToFlat + (1 << 0), // TrackElemType::RightBankToFlat + (1 << 0) | (1 << 6), // TrackElemType::BankedLeftQuarterTurn5Tiles + (1 << 0) | (1 << 6), // TrackElemType::BankedRightQuarterTurn5Tiles + (1 << 0), // TrackElemType::LeftBankToUp25 + (1 << 0), // TrackElemType::RightBankToUp25 + (1 << 0), // TrackElemType::Up25ToLeftBank + (1 << 0), // TrackElemType::Up25ToRightBank + (1 << 0), // TrackElemType::LeftBankToDown25 + (1 << 0), // TrackElemType::RightBankToDown25 + (1 << 0), // TrackElemType::Down25ToLeftBank + (1 << 0), // TrackElemType::Down25ToRightBank + (1 << 0), // TrackElemType::LeftBank + (1 << 0), // TrackElemType::RightBank + (1 << 0) | (1 << 6), // TrackElemType::LeftQuarterTurn5TilesUp25 + (1 << 0) | (1 << 6), // TrackElemType::RightQuarterTurn5TilesUp25 + (1 << 0) | (1 << 6), // TrackElemType::LeftQuarterTurn5TilesDown25 + (1 << 0) | (1 << 6), // TrackElemType::RightQuarterTurn5TilesDown25 + (1 << 0) | (1 << 3), // TrackElemType::SBendLeft + (1 << 0) | (1 << 3), // TrackElemType::SBendRight + (1 << 0) | (1 << 9), // TrackElemType::LeftVerticalLoop + (1 << 0) | (1 << 9), // TrackElemType::RightVerticalLoop + (1 << 0) | (1 << 3), // TrackElemType::LeftQuarterTurn3Tiles + (1 << 0) | (1 << 3), // TrackElemType::RightQuarterTurn3Tiles + (1 << 0) | (1 << 3), // TrackElemType::LeftBankedQuarterTurn3Tiles + (1 << 0) | (1 << 3), // TrackElemType::RightBankedQuarterTurn3Tiles + (1 << 0) | (1 << 3), // TrackElemType::LeftQuarterTurn3TilesUp25 + (1 << 0) | (1 << 3), // TrackElemType::RightQuarterTurn3TilesUp25 + (1 << 0) | (1 << 3), // TrackElemType::LeftQuarterTurn3TilesDown25 + (1 << 0) | (1 << 3), // TrackElemType::RightQuarterTurn3TilesDown25 + (1 << 0), // TrackElemType::LeftQuarterTurn1Tile + (1 << 0), // TrackElemType::RightQuarterTurn1Tile + (1 << 0) | (1 << 2), // TrackElemType::LeftTwistDownToUp + (1 << 0) | (1 << 2), // TrackElemType::RightTwistDownToUp + (1 << 0) | (1 << 2), // TrackElemType::LeftTwistUpToDown + (1 << 0) | (1 << 2), // TrackElemType::RightTwistUpToDown + (1 << 0) | (1 << 3), // TrackElemType::HalfLoopUp + (1 << 0) | (1 << 3), // TrackElemType::HalfLoopDown + (1 << 0) | (1 << 2), // TrackElemType::LeftCorkscrewUp + (1 << 0) | (1 << 2), // TrackElemType::RightCorkscrewUp + (1 << 0) | (1 << 2), // TrackElemType::LeftCorkscrewDown + (1 << 0) | (1 << 2), // TrackElemType::RightCorkscrewDown + (1 << 0), // TrackElemType::FlatToUp60 + (1 << 0), // TrackElemType::Up60ToFlat + (1 << 0), // TrackElemType::FlatToDown60 + (1 << 0), // TrackElemType::Down60ToFlat + (1 << 1) | (1 << 3) | (1 << 6) | (1 << 7), // TrackElemType::TowerBase + (1 << 0), // TrackElemType::TowerSection + (1 << 0), // TrackElemType::FlatCovered + (1 << 0), // TrackElemType::Up25Covered + (1 << 0), // TrackElemType::Up60Covered + (1 << 0), // TrackElemType::FlatToUp25Covered + (1 << 0), // TrackElemType::Up25ToUp60Covered + (1 << 0), // TrackElemType::Up60ToUp25Covered + (1 << 0), // TrackElemType::Up25ToFlatCovered + (1 << 0), // TrackElemType::Down25Covered + (1 << 0), // TrackElemType::Down60Covered + (1 << 0), // TrackElemType::FlatToDown25Covered + (1 << 0), // TrackElemType::Down25ToDown60Covered + (1 << 0), // TrackElemType::Down60ToDown25Covered + (1 << 0), // TrackElemType::Down25ToFlatCovered + (1 << 0) | (1 << 6), // TrackElemType::LeftQuarterTurn5TilesCovered + (1 << 0) | (1 << 6), // TrackElemType::RightQuarterTurn5TilesCovered + (1 << 0) | (1 << 3), // TrackElemType::SBendLeftCovered + (1 << 0) | (1 << 3), // TrackElemType::SBendRightCovered + (1 << 0) | (1 << 3), // TrackElemType::LeftQuarterTurn3TilesCovered + (1 << 0) | (1 << 3), // TrackElemType::RightQuarterTurn3TilesCovered + (1 << 0) | (1 << 7), // TrackElemType::LeftHalfBankedHelixUpSmall + (1 << 0) | (1 << 7), // TrackElemType::RightHalfBankedHelixUpSmall + (1 << 0) | (1 << 7), // TrackElemType::LeftHalfBankedHelixDownSmall + (1 << 0) | (1 << 7), // TrackElemType::RightHalfBankedHelixDownSmall + (1 << 0) | (1 << 13), // TrackElemType::LeftHalfBankedHelixUpLarge + (1 << 0) | (1 << 13), // TrackElemType::RightHalfBankedHelixUpLarge + (1 << 0) | (1 << 13), // TrackElemType::LeftHalfBankedHelixDownLarge + (1 << 0) | (1 << 13), // TrackElemType::RightHalfBankedHelixDownLarge + (1 << 0), // TrackElemType::LeftQuarterTurn1TileUp60 + (1 << 0), // TrackElemType::RightQuarterTurn1TileUp60 + (1 << 0), // TrackElemType::LeftQuarterTurn1TileDown60 + (1 << 0), // TrackElemType::RightQuarterTurn1TileDown60 + (1 << 0), // TrackElemType::Brakes + (1 << 0), // TrackElemType::Booster + (1 << 0) | (1 << 1) | (1 << 2) | (1 << 3) | (1 << 4) | (1 << 5) | (1 << 6) | (1 << 7) | (1 << 8) | (1 << 9) | (1 << 10) | (1 << 11) | (1 << 12) | (1 << 13) | (1 << 14) | (1 << 15), // Maze + (1 << 0) | (1 << 6), // TrackElemType::LeftQuarterBankedHelixLargeUp + (1 << 0) | (1 << 6), // TrackElemType::RightQuarterBankedHelixLargeUp + (1 << 0) | (1 << 6), // TrackElemType::LeftQuarterBankedHelixLargeDown + (1 << 0) | (1 << 6), // TrackElemType::RightQuarterBankedHelixLargeDown + (1 << 0) | (1 << 6), // TrackElemType::LeftQuarterHelixLargeUp + (1 << 0) | (1 << 6), // TrackElemType::RightQuarterHelixLargeUp + (1 << 0) | (1 << 6), // TrackElemType::LeftQuarterHelixLargeDown + (1 << 0) | (1 << 6), // TrackElemType::RightQuarterHelixLargeDown + (1 << 0), // TrackElemType::Up25LeftBanked + (1 << 0) | (1 << 3) | (1 << 12) | (1 << 15), // TrackElemType::Up25RightBanked + (1 << 0), // TrackElemType::Waterfall + (1 << 0), // TrackElemType::Rapids + (1 << 0), // TrackElemType::OnRidePhoto + (1 << 0) | (1 << 7), // TrackElemType::Down25LeftBanked + (1 << 0), // TrackElemType::Down25RightBanked + (1 << 0) | (1 << 4), // TrackElemType::Watersplash + (1 << 0) | (1 << 3), // TrackElemType::FlatToUp60LongBase + (1 << 0) | (1 << 3), // TrackElemType::Up60ToFlatLongBase + (1 << 0), // TrackElemType::Whirlpool + (1 << 0) | (1 << 3), // TrackElemType::Down60ToFlatLongBase + (1 << 0) | (1 << 3), // TrackElemType::FlatToUp60LongBase + (1 << 0) | (1 << 3), // TrackElemType::CableLiftHill + (1 << 0) | (1 << 5), // TrackElemType::ReverseFreefallSlope + (1 << 0), // TrackElemType::ReverseFreefallVertical + (1 << 0), // TrackElemType::Up90 + (1 << 0), // TrackElemType::Down90 + (1 << 0), // TrackElemType::Up60ToUp90 + (1 << 0), // TrackElemType::Down90ToDown60 + (1 << 0), // TrackElemType::Up90ToUp60 + (1 << 0), // TrackElemType::Down60ToDown90 + (1 << 0), // TrackElemType::BrakeForDrop + (1 << 0) | (1 << 4), // TrackElemType::LeftEighthToDiag + (1 << 0) | (1 << 4), // TrackElemType::RightEighthToDiag + (1 << 0) | (1 << 4), // TrackElemType::LeftEighthToOrthogonal + (1 << 0) | (1 << 4), // TrackElemType::RightEighthToOrthogonal + (1 << 0) | (1 << 4), // TrackElemType::LeftEighthBankToDiag + (1 << 0) | (1 << 4), // TrackElemType::RightEighthBankToDiag + (1 << 0) | (1 << 4), // TrackElemType::LeftEighthBankToOrthogonal + (1 << 0) | (1 << 4), // TrackElemType::RightEighthBankToOrthogonal + (1 << 0), // TrackElemType::DiagFlat + (1 << 0), // TrackElemType::DiagUp25 + (1 << 0), // TrackElemType::DiagUp60 + (1 << 0), // TrackElemType::DiagFlatToUp25 + (1 << 0), // TrackElemType::DiagUp25ToUp60 + (1 << 0), // TrackElemType::DiagUp60ToUp25 + (1 << 0), // TrackElemType::DiagUp25ToFlat + (1 << 3), // TrackElemType::DiagDown25 + (1 << 3), // TrackElemType::DiagDown60 + (1 << 3), // TrackElemType::DiagFlatToDown25 + (1 << 3), // TrackElemType::DiagDown25ToDown60 + (1 << 3), // TrackElemType::DiagDown60ToDown25 + (1 << 3), // TrackElemType::DiagDown25ToFlat + (1 << 0), // TrackElemType::DiagFlatToUp60 + (1 << 0), // TrackElemType::DiagUp60ToFlat + (1 << 3), // TrackElemType::DiagFlatToDown60 + (1 << 3), // TrackElemType::DiagDown60ToFlat + (1 << 0), // TrackElemType::DiagFlatToLeftBank + (1 << 0), // TrackElemType::DiagFlatToRightBank + (1 << 0), // TrackElemType::DiagLeftBankToFlat + (1 << 0), // TrackElemType::DiagRightBankToFlat + (1 << 0), // TrackElemType::DiagLeftBankToUp25 + (1 << 0), // TrackElemType::DiagRightBankToUp25 + (1 << 0), // TrackElemType::DiagUp25ToLeftBank + (1 << 0), // TrackElemType::DiagUp25ToRightBank + (1 << 3), // TrackElemType::DiagLeftBankToDown25 + (1 << 3), // TrackElemType::DiagRightBankToDown25 + (1 << 3), // TrackElemType::DiagDown25ToLeftBank + (1 << 3), // TrackElemType::DiagDown25ToRightBank + (1 << 0), // TrackElemType::DiagLeftBank + (1 << 0), // TrackElemType::DiagRightBank + (1 << 0), // TrackElemType::LogFlumeReverser + (1 << 0), // TrackElemType::SpinningTunnel + (1 << 0) | (1 << 2), // TrackElemType::LeftBarrelRollUpToDown + (1 << 0) | (1 << 2), // TrackElemType::RightBarrelRollUpToDown + (1 << 0) | (1 << 2), // TrackElemType::LeftBarrelRollDownToUp + (1 << 0) | (1 << 2), // TrackElemType::RightBarrelRollDownToUp + (1 << 0) | (1 << 3), // TrackElemType::LeftBankToLeftQuarterTurn3TilesUp25 + (1 << 0) | (1 << 3), // TrackElemType::RightBankToRightQuarterTurn3TilesUp25 + (1 << 0) | (1 << 3), // TrackElemType::LeftQuarterTurn3TilesDown25ToLeftBank + (1 << 0) | (1 << 3), // TrackElemType::RightQuarterTurn3TilesDown25ToRightBank + (1 << 0), // TrackElemType::PoweredLift + (1 << 0) | (1 << 6), // TrackElemType::LeftLargeHalfLoopUp + (1 << 0) | (1 << 6), // TrackElemType::RightLargeHalfLoopUp + (1 << 0) | (1 << 6), // TrackElemType::LeftLargeHalfLoopDown + (1 << 0) | (1 << 6), // TrackElemType::RightLargeHalfLoopDown + (1 << 0) | (1 << 2), // TrackElemType::LeftFlyerTwistUp + (1 << 0) | (1 << 2), // TrackElemType::RightFlyerTwistUp + (1 << 0) | (1 << 2), // TrackElemType::LeftFlyerTwistDown + (1 << 0) | (1 << 2), // TrackElemType::RightFlyerTwistDown + (1 << 0) | (1 << 3), // TrackElemType::FlyerHalfLoopUninvertedUp + (1 << 0) | (1 << 3), // TrackElemType::FlyerHalfLoopInvertedDown + (1 << 0) | (1 << 2), // TrackElemType::LeftFlyerCorkscrewUp + (1 << 0) | (1 << 2), // TrackElemType::RightFlyerCorkscrewUp + (1 << 0) | (1 << 2), // TrackElemType::LeftFlyerCorkscrewDown + (1 << 0) | (1 << 2), // TrackElemType::RightFlyerCorkscrewDown + (1 << 0) | (1 << 3), // TrackElemType::HeartLineTransferUp + (1 << 0) | (1 << 3), // TrackElemType::HeartLineTransferDown + (1 << 0) | (1 << 5), // TrackElemType::LeftHeartLineRoll + (1 << 0) | (1 << 5), // TrackElemType::RightHeartLineRoll + (1 << 0) | (1 << 1), // TrackElemType::MinigolfHoleA + (1 << 0) | (1 << 1), // TrackElemType::MinigolfHoleB + (1 << 0) | (1 << 1), // TrackElemType::MinigolfHoleC + (1 << 0) | (1 << 2), // TrackElemType::MinigolfHoleD + (1 << 0) | (1 << 2), // TrackElemType::MinigolfHoleE + (1 << 0) | (1 << 2), // TrackElemType::MultiDimInvertedFlatToDown90QuarterLoop + (1 << 0) | (1 << 2), // TrackElemType::Up90ToInvertedFlatQuarterLoop + (1 << 0) | (1 << 2), // TrackElemType::InvertedFlatToDown90QuarterLoop + (1 << 0) | (1 << 3), // TrackElemType::LeftCurvedLiftHill + (1 << 0) | (1 << 3), // TrackElemType::RightCurvedLiftHill + (1 << 0) | (1 << 5), // TrackElemType::LeftReverser + (1 << 0) | (1 << 5), // TrackElemType::RightReverser + (1 << 0) | (1 << 3), // TrackElemType::AirThrustTopCap + (1 << 0), // TrackElemType::AirThrustVerticalDown + (1 << 0) | (1 << 5), // TrackElemType::AirThrustVerticalDownToLevel + (1 << 0), // TrackElemType::BlockBrakes + (1 << 0) | (1 << 3), // TrackElemType::LeftBankedQuarterTurn3TileUp25 + (1 << 0) | (1 << 3), // TrackElemType::RightBankedQuarterTurn3TileUp25 + (1 << 0) | (1 << 3), // TrackElemType::LeftBankedQuarterTurn3TileDown25 + (1 << 0) | (1 << 3), // TrackElemType::RightBankedQuarterTurn3TileDown25 + (1 << 0) | (1 << 6), // TrackElemType::LeftBankedQuarterTurn5TileUp25 + (1 << 0) | (1 << 6), // TrackElemType::RightBankedQuarterTurn5TileUp25 + (1 << 0) | (1 << 6), // TrackElemType::LeftBankedQuarterTurn5TileDown25 + (1 << 0) | (1 << 6), // TrackElemType::RightBankedQuarterTurn5TileDown25 + (1 << 0), // TrackElemType::Up25ToLeftBankedUp25 + (1 << 0), // TrackElemType::Up25ToRightBankedUp25 + (1 << 0), // TrackElemType::LeftBankedUp25ToUp25 + (1 << 0), // TrackElemType::RightBankedUp25ToUp25 + (1 << 0), // TrackElemType::Down25ToLeftBankedDown25 + (1 << 0), // TrackElemType::Down25ToRightBankedDown25 + (1 << 0), // TrackElemType::LeftBankedDown25ToDown25 + (1 << 0), // TrackElemType::RightBankedDown25ToDown25 + (1 << 0), // TrackElemType::LeftBankedFlatToLeftBankedUp25 + (1 << 0), // TrackElemType::RightBankedFlatToRightBankedUp25 + (1 << 0), // TrackElemType::LeftBankedUp25ToLeftBankedFlat + (1 << 0), // TrackElemType::RightBankedUp25ToRightBankedFlat + (1 << 0), // TrackElemType::LeftBankedFlatToLeftBankedDown25 + (1 << 0), // TrackElemType::RightBankedFlatToRightBankedDown25 + (1 << 0), // TrackElemType::LeftBankedDown25ToLeftBankedFlat + (1 << 0), // TrackElemType::RightBankedDown25ToRightBankedFlat + (1 << 0), // TrackElemType::FlatToLeftBankedUp25 + (1 << 0), // TrackElemType::FlatToRightBankedUp25 + (1 << 0), // TrackElemType::LeftBankedUp25ToFlat + (1 << 0), // TrackElemType::RightBankedUp25ToFlat + (1 << 0), // TrackElemType::FlatToLeftBankedDown25 + (1 << 0), // TrackElemType::FlatToRightBankedDown25 + (1 << 0), // TrackElemType::LeftBankedDown25ToFlat + (1 << 0), // TrackElemType::RightBankedDown25ToFlat + (1 << 0), // TrackElemType::LeftQuarterTurn1TileUp90 + (1 << 0), // TrackElemType::RightQuarterTurn1TileUp90 + (1 << 0), // TrackElemType::LeftQuarterTurn1TileDown90 + (1 << 0), // TrackElemType::RightQuarterTurn1TileDown90 + (1 << 0) | (1 << 2), // TrackElemType::MultiDimUp90ToInvertedFlatQuarterLoop + (1 << 0) | (1 << 2), // TrackElemType::MultiDimFlatToDown90QuarterLoop + (1 << 0) | (1 << 2), // TrackElemType::MultiDimInvertedUp90ToFlatQuarterLoop + (1 << 0), // TrackElemType::RotationControlToggle + (1 << 0), // TrackElemType::FlatTrack1x4A + (1 << 0), // TrackElemType::FlatTrack2x2 + (1 << 0), // TrackElemType::FlatTrack4x4 + (1 << 0), // TrackElemType::FlatTrack2x4 + (1 << 0), // TrackElemType::FlatTrack1x5 + (1 << 0), // TrackElemType::FlatTrack1x1A + (1 << 0), // TrackElemType::FlatTrack1x4B + (1 << 0), // TrackElemType::FlatTrack1x1B + (1 << 0), // TrackElemType::FlatTrack1x4C + (1 << 0), // TrackElemType::FlatTrack3x3 + (1 << 0) | (1 << 5), // TrackElemType::LeftLargeCorkscrewUp + (1 << 0) | (1 << 5), // TrackElemType::RightLargeCorkscrewUp + (1 << 0) | (1 << 5), // TrackElemType::LeftLargeCorkscrewDown + (1 << 0) | (1 << 5), // TrackElemType::RightLargeCorkscrewDown + (1 << 0) | (1 << 4), // TrackElemType::LeftMediumHalfLoopUp + (1 << 0) | (1 << 4), // TrackElemType::RightMediumHalfLoopUp + (1 << 0) | (1 << 4), // TrackElemType::LeftMediumHalfLoopDown + (1 << 0) | (1 << 4), // TrackElemType::RightMediumHalfLoopDown + (1 << 0) | (1 << 2), // TrackElemType::LeftZeroGRollUp + (1 << 0) | (1 << 2), // TrackElemType::RightZeroGRollUp + (1 << 0) | (1 << 2), // TrackElemType::LeftZeroGRollDown + (1 << 0) | (1 << 2), // TrackElemType::RightZeroGRollDown + (1 << 0) | (1 << 3), // TrackElemType::LeftLargeZeroGRollUp + (1 << 0) | (1 << 3), // TrackElemType::RightLargeZeroGRollUp + (1 << 0) | (1 << 3), // TrackElemType::LeftLargeZeroGRollDown + (1 << 0) | (1 << 3), // TrackElemType::RightLargeZeroGRollDown + (1 << 0) | (1 << 6), // TrackElemType::LeftFlyerLargeHalfLoopUninvertedUp + (1 << 0) | (1 << 6), // TrackElemType::RightFlyerLargeHalfLoopUninvertedUp + (1 << 0) | (1 << 6), // TrackElemType::LeftFlyerLargeHalfLoopInvertedDown + (1 << 0) | (1 << 6), // TrackElemType::RightFlyerLargeHalfLoopInvertedDown + (1 << 0) | (1 << 6), // TrackElemType::LeftFlyerLargeHalfLoopInvertedUp + (1 << 0) | (1 << 6), // TrackElemType::RightFlyerLargeHalfLoopInvertedUp + (1 << 0) | (1 << 6), // TrackElemType::LeftFlyerLargeHalfLoopUninvertedDown + (1 << 0) | (1 << 6), // TrackElemType::RightFlyerLargeHalfLoopUninvertedDown + (1 << 0) | (1 << 3), // TrackElemType::FlyerHalfLoopInvertedUp + (1 << 0) | (1 << 3), // TrackElemType::FlyerHalfLoopUninvertedDown + (1 << 0) | (1 << 4), // TrackElemType::LeftEighthToDiagUp25 + (1 << 0) | (1 << 4), // TrackElemType::RightEighthToDiagUp25 + (1 << 0) | (1 << 4), // TrackElemType::LeftEighthToDiagDown25 + (1 << 0) | (1 << 4), // TrackElemType::RightEighthToDiagDown25 + (1 << 0) | (1 << 4), // TrackElemType::LeftEighthToOrthogonalUp25 + (1 << 0) | (1 << 4), // TrackElemType::RightEighthToOrthogonalUp25 + (1 << 0) | (1 << 4), // TrackElemType::LeftEighthToOrthogonalDown25 + (1 << 0) | (1 << 4), // TrackElemType::RightEighthToOrthogonalDown25 + (1 << 0), // TrackElemType::DiagUp25ToRightBankedUp25 + (1 << 0), // TrackElemType::DiagUp25ToLeftBankedUp25 + (1 << 0), // TrackElemType::DiagRightBankedUp25ToUp25 + (1 << 0), // TrackElemType::DiagLeftBankedUp25ToUp25 + (1 << 0), // TrackElemType::DiagDown25ToRightBankedDown25 + (1 << 0), // TrackElemType::DiagDown25ToLeftBankedDown25 + (1 << 0), // TrackElemType::DiagRightBankedDown25ToDown25 + (1 << 0), // TrackElemType::DiagLeftBankedDown25ToDown25 + (1 << 0), // TrackElemType::DiagRightBankedFlatToRightBankedUp25 + (1 << 0), // TrackElemType::DiagLeftBankedFlatToLeftBankedUp25 + (1 << 0), // TrackElemType::DiagRightBankedUp25ToRightBankedFlat + (1 << 0), // TrackElemType::DiagLeftBankedUp25ToLeftBankedFlat + (1 << 0), // TrackElemType::DiagRightBankedFlatToRightBankedDown25 + (1 << 0), // TrackElemType::DiagLeftBankedFlatToLeftBankedDown25 + (1 << 0), // TrackElemType::DiagRightBankedDown25ToRightBankedFlat + (1 << 0), // TrackElemType::DiagLeftBankedDown25ToLeftBankedFlat + (1 << 0), // TrackElemType::DiagFlatToRightBankedUp25 + (1 << 0), // TrackElemType::DiagFlatToLeftBankedUp25 + (1 << 0), // TrackElemType::DiagRightBankedUp25ToFlat + (1 << 0), // TrackElemType::DiagLeftBankedUp25ToFlat + (1 << 0), // TrackElemType::DiagFlatToRightBankedDown25 + (1 << 0), // TrackElemType::DiagFlatToLeftBankedDown25 + (1 << 0), // TrackElemType::DiagRightBankedDown25ToFlat + (1 << 0), // TrackElemType::DiagLeftBankedDown25ToFlat + (1 << 0), // TrackElemType::DiagUp25RightBanked + (1 << 0), // TrackElemType::DiagUp25LeftBanked + (1 << 0), // TrackElemType::DiagDown25RightBanked + (1 << 0), // TrackElemType::DiagDown25LeftBanked + (1 << 0) | (1 << 4), // TrackElemType::RightEighthBankToDiagUp25 + (1 << 0) | (1 << 4), // TrackElemType::LeftEighthBankToDiagUp25 + (1 << 0) | (1 << 4), // TrackElemType::RightEighthBankToDiagDown25 + (1 << 0) | (1 << 4), // TrackElemType::LeftEighthBankToDiagDown25 + (1 << 0) | (1 << 4), // TrackElemType::RightEighthBankToOrthogonalUp25 + (1 << 0) | (1 << 4), // TrackElemType::LeftEighthBankToOrthogonalUp25 + (1 << 0) | (1 << 4), // TrackElemType::RightEighthBankToOrthogonalDown25 + (1 << 0) | (1 << 4), // TrackElemType::LeftEighthBankToOrthogonalDown25 + (1 << 0), // TrackElemType::DiagBrakes + (1 << 0), // TrackElemType::DiagBlockBrakes + }; + static_assert(std::size(TrackHeightMarkerPositions) == TrackElemType::Count); + + /** rct2: 0x00999A94 */ + static constexpr uint8_t TrackSequenceElementAllowedWallEdges[][kMaxSequencesPerPiece] = { + { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Flat + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::EndStation + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::BeginStation + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::MiddleStation + { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Up25 + { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Up60 + { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlatToUp25 + { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Up25ToUp60 + { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Up60ToUp25 + { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Up25ToFlat + { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Down25 + { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Down60 + { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlatToDown25 + { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Down25ToDown60 + { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Down60ToDown25 + { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Down25ToFlat + { 0b0010, 0b1100, 0b0011, 0, 0b1100, 0b0011, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftQuarterTurn5Tiles + { 0b1000, 0b0110, 0b1001, 0, 0b0110, 0b1001, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightQuarterTurn5Tiles + { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlatToLeftBank + { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlatToRightBank + { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftBankToFlat + { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightBankToFlat + { 0b0010, 0b1100, 0b0011, 0, 0b1100, 0b0011, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::BankedLeftQuarterTurn5Tiles + { 0b1000, 0b0110, 0b1001, 0, 0b0110, 0b1001, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::BankedRightQuarterTurn5Tiles + { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftBankToUp25 + { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightBankToUp25 + { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Up25ToLeftBank + { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Up25ToRightBank + { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftBankToDown25 + { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightBankToDown25 + { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Down25ToLeftBank + { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Down25ToRightBank + { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftBank + { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightBank + { 0b0010, 0b1100, 0b0011, 0, 0b1100, 0b0011, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftQuarterTurn5TilesUp25 + { 0b1000, 0b0110, 0b1001, 0, 0b0110, 0b1001, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightQuarterTurn5TilesUp25 + { 0b0010, 0b1100, 0b0011, 0, 0b1100, 0b0011, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftQuarterTurn5TilesDown25 + { 0b1000, 0b0110, 0b1001, 0, 0b0110, 0b1001, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightQuarterTurn5TilesDown25 + { 0b1010, 0b0011, 0b1100, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::SBendLeft + { 0b1010, 0b1001, 0b0110, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::SBendRight + { 0b0010, 0b0010, 0b0011, 0, 0, 0, 0, 0b1100, 0b1000, 0b1000, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftVerticalLoop + { 0b1000, 0b1000, 0b1001, 0, 0, 0, 0, 0b0110, 0b0010, 0b0010, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightVerticalLoop + { 0b0010, 0b1100, 0b0011, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftQuarterTurn3Tiles + { 0b1000, 0b0110, 0b1001, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightQuarterTurn3Tiles + { 0b0010, 0b1100, 0b0011, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftBankedQuarterTurn3Tiles + { 0b1000, 0b0110, 0b1001, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightBankedQuarterTurn3Tiles + { 0b0010, 0b1100, 0b0011, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftQuarterTurn3TilesUp25 + { 0b1000, 0b0110, 0b1001, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightQuarterTurn3TilesUp25 + { 0b0010, 0b1100, 0b0011, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftQuarterTurn3TilesDown25 + { 0b1000, 0b0110, 0b1001, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightQuarterTurn3TilesDown25 + { 0b0011, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftQuarterTurn1Tile + { 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightQuarterTurn1Tile + { 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftTwistDownToUp + { 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightTwistDownToUp + { 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftTwistUpToDown + { 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightTwistUpToDown + { 0b1010, 0b1010, 0b1011, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::HalfLoopUp + { 0, 0b1011, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::HalfLoopDown + { 0b1010, 0b0011, 0b0101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftCorkscrewUp + { 0b1010, 0b1001, 0b0101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightCorkscrewUp + { 0b1010, 0b0011, 0b0101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftCorkscrewDown + { 0b1010, 0b1001, 0b0101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightCorkscrewDown + { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlatToUp60 + { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Up60ToFlat + { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlatToDown60 + { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Down60ToFlat + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::TowerBase + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::TowerSection + { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlatCovered + { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Up25Covered + { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Up60Covered + { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlatToUp25Covered + { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Up25ToUp60Covered + { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Up60ToUp25Covered + { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Up25ToFlatCovered + { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Down25Covered + { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Down60Covered + { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlatToDown25Covered + { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Down25ToDown60Covered + { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Down60ToDown25Covered + { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Down25ToFlatCovered + { 0b0010, 0b1100, 0b0011, 0, 0b1100, 0b0011, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftQuarterTurn5TilesCovered + { 0b1000, 0b0110, 0b1001, 0, 0b0110, 0b1001, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightQuarterTurn5TilesCovered + { 0b1010, 0b0011, 0b1100, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::SBendLeftCovered + { 0b1010, 0b1001, 0b0110, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::SBendRightCovered + { 0b0010, 0b1100, 0b0011, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftQuarterTurn3TilesCovered + { 0b1000, 0b0110, 0b1001, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightQuarterTurn3TilesCovered + { 0b0010, 0b1100, 0b0011, 0b0001, 0b0001, 0b0110, 0b1001, 0b1000, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftHalfBankedHelixUpSmall + { 0b1000, 0b0110, 0b1001, 0b0001, 0b0001, 0b1100, 0b0011, 0b0010, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightHalfBankedHelixUpSmall + { 0b0010, 0b1100, 0b0011, 0b0001, 0b0001, 0b0110, 0b1001, 0b1000, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftHalfBankedHelixDownSmall + { 0b1000, 0b0110, 0b1001, 0b0001, 0b0001, 0b1100, 0b0011, 0b0010, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightHalfBankedHelixDownSmall + { 0b0010, 0b1100, 0b0011, 0, 0b1100, 0b0011, 0b0001, 0b0001, 0b0110, 0b1001, 0, 0b0110, 0b1001, 0b1000, 0, 0 }, // TrackElemType::LeftHalfBankedHelixUpLarge + { 0b1000, 0b0110, 0b1001, 0, 0b0110, 0b1001, 0b0001, 0b0001, 0b1100, 0b0011, 0, 0b1100, 0b0011, 0b0010, 0, 0 }, // TrackElemType::RightHalfBankedHelixUpLarge + { 0b0010, 0b1100, 0b0011, 0, 0b1100, 0b0011, 0b0001, 0b0001, 0b0110, 0b1001, 0, 0b0110, 0b1001, 0b1000, 0, 0 }, // TrackElemType::LeftHalfBankedHelixDownLarge + { 0b1000, 0b0110, 0b1001, 0, 0b0110, 0b1001, 0b0001, 0b0001, 0b1100, 0b0011, 0, 0b1100, 0b0011, 0b0010, 0, 0 }, // TrackElemType::RightHalfBankedHelixDownLarge + { 0b0011, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftQuarterTurn1TileUp60 + { 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightQuarterTurn1TileUp60 + { 0b0011, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftQuarterTurn1TileDown60 + { 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightQuarterTurn1TileDown60 + { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Brakes + { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Booster + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::InvertedUp90ToFlatQuarterLoopAlias / Maze + { 0b0010, 0b1100, 0b0011, 0, 0b1100, 0b0011, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftQuarterBankedHelixLargeUp + { 0b1000, 0b0110, 0b1001, 0, 0b0110, 0b1001, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightQuarterBankedHelixLargeUp + { 0b0010, 0b1100, 0b0011, 0, 0b1100, 0b0011, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftQuarterBankedHelixLargeDown + { 0b1000, 0b0110, 0b1001, 0, 0b0110, 0b1001, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightQuarterBankedHelixLargeDown + { 0b0010, 0b1100, 0b0011, 0, 0b1100, 0b0011, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftQuarterHelixLargeUp + { 0b1000, 0b0110, 0b1001, 0, 0b0110, 0b1001, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightQuarterHelixLargeUp + { 0b0010, 0b1100, 0b0011, 0, 0b1100, 0b0011, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftQuarterHelixLargeDown + { 0b1000, 0b0110, 0b1001, 0, 0b0110, 0b1001, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightQuarterHelixLargeDown + { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Up25LeftBanked + { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Up25RightBanked + { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Waterfall + { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Rapids + { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::OnRidePhoto + { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Down25LeftBanked + { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Down25RightBanked + { 0b1010, 0b1010, 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Watersplash + { 0b1010, 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlatToUp60LongBase + { 0b1010, 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Up60ToFlatLongBase + { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Whirlpool + { 0b1010, 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Down60ToFlatLongBase + { 0b1010, 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlatToDown60LongBase + { 0b1010, 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::CableLiftHill + { 0b1010, 0b1010, 0b1010, 0b1010, 0b1010, 0b1011, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::ReverseFreefallSlope + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::ReverseFreefallVertical + { 0b1111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Up90 + { 0b1111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Down90 + { 0b1011, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Up60ToUp90 + { 0b1110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Down90ToDown60 + { 0b1011, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Up90ToUp60 + { 0b1110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Down60ToDown90 + { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::BrakeForDrop + { 0b0010, 0b0010, 0b1000, 0b0011, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftEighthToDiag + { 0b1000, 0b1000, 0b0010, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightEighthToDiag + { 0, 0b1000, 0b0110, 0b0010, 0b0010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftEighthToOrthogonal + { 0, 0b0100, 0b1001, 0b0001, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightEighthToOrthogonal + { 0b0010, 0b0010, 0b1000, 0b0011, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftEighthBankToDiag + { 0b1000, 0b1000, 0b0010, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightEighthBankToDiag + { 0, 0b1000, 0b0110, 0b0010, 0b0010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftEighthBankToOrthogonal + { 0, 0b0100, 0b1001, 0b0001, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightEighthBankToOrthogonal + { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagFlat + { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagUp25 + { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagUp60 + { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagFlatToUp25 + { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagUp25ToUp60 + { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagUp60ToUp25 + { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagUp25ToFlat + { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagDown25 + { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagDown60 + { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagFlatToDown25 + { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagDown25ToDown60 + { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagDown60ToDown25 + { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagDown25ToFlat + { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagFlatToUp60 + { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagUp60ToFlat + { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagFlatToDown60 + { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagDown60ToFlat + { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagFlatToLeftBank + { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagFlatToRightBank + { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagLeftBankToFlat + { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagRightBankToFlat + { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagLeftBankToUp25 + { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagRightBankToUp25 + { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagUp25ToLeftBank + { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagUp25ToRightBank + { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagLeftBankToDown25 + { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagRightBankToDown25 + { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagDown25ToLeftBank + { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagDown25ToRightBank + { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagLeftBank + { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagRightBank + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LogFlumeReverser + { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::SpinningTunnel + { 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftBarrelRollUpToDown + { 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightBarrelRollUpToDown + { 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftBarrelRollDownToUp + { 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightBarrelRollDownToUp + { 0b0010, 0b1100, 0b0011, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftBankToLeftQuarterTurn3TilesUp25 + { 0b1000, 0b0110, 0b1001, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightBankToRightQuarterTurn3TilesUp25 + { 0b0010, 0b1100, 0b0011, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftQuarterTurn3TilesDown25ToLeftBank + { 0b1000, 0b0110, 0b1001, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightQuarterTurn3TilesDown25ToRightBank + { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::PoweredLift + { 0b1010, 0b1010, 0b0010, 0b0011, 0b1001, 0b1000, 0b1000, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftLargeHalfLoopUp + { 0b1010, 0b1010, 0b1000, 0b1001, 0b0011, 0b0010, 0b0010, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightLargeHalfLoopUp + { 0b0010, 0b0010, 0b0011, 0b1001, 0b1000, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftLargeHalfLoopDown + { 0b1000, 0b1000, 0b1001, 0b0011, 0b0010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightLargeHalfLoopDown + { 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftFlyerTwistUp + { 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightFlyerTwistUp + { 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftFlyerTwistDown + { 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightFlyerTwistDown + { 0b1010, 0b1010, 0b1011, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlyerHalfLoopUninvertedUp + { 0, 0b1011, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlyerHalfLoopInvertedDown + { 0b1010, 0b0011, 0b0101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftFlyerCorkscrewUp + { 0b1010, 0b1001, 0b0101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightFlyerCorkscrewUp + { 0b1010, 0b0011, 0b0101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftFlyerCorkscrewDown + { 0b1010, 0b1001, 0b0101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightFlyerCorkscrewDown + { 0b1010, 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::HeartLineTransferUp + { 0b1010, 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::HeartLineTransferDown + { 0b1010, 0b1010, 0b1010, 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftHeartLineRoll + { 0b1010, 0b1010, 0b1010, 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightHeartLineRoll + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::MinigolfHoleA + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::MinigolfHoleB + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::MinigolfHoleC + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::MinigolfHoleD + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::MinigolfHoleE + { 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::MultiDimInvertedFlatToDown90QuarterLoop + { 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Up90ToInvertedFlatQuarterLoop + { 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::InvertedFlatToDown90QuarterLoop + { 0b0010, 0b1100, 0b0011, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftCurvedLiftHill + { 0b1000, 0b0110, 0b1001, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightCurvedLiftHill + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftReverser + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightReverser + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::AirThrustTopCap + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::AirThrustVerticalDown + { 0b1010, 0b1010, 0b1010, 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::AirThrustVerticalDownToLevel + { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::BlockBrakes + { 0b0010, 0b1100, 0b0011, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftBankedQuarterTurn3TileUp25 + { 0b1000, 0b0110, 0b1001, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightBankedQuarterTurn3TileUp25 + { 0b0010, 0b1100, 0b0011, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftBankedQuarterTurn3TileDown25 + { 0b1000, 0b0110, 0b1001, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightBankedQuarterTurn3TileDown25 + { 0b0010, 0b1100, 0b0011, 0, 0b1100, 0b0011, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftBankedQuarterTurn5TileUp25 + { 0b1000, 0b0110, 0b1001, 0, 0b0110, 0b1001, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightBankedQuarterTurn5TileUp25 + { 0b0010, 0b1100, 0b0011, 0, 0b1100, 0b0011, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftBankedQuarterTurn5TileDown25 + { 0b1000, 0b0110, 0b1001, 0, 0b0110, 0b1001, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightBankedQuarterTurn5TileDown25 + { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Up25ToLeftBankedUp25 + { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Up25ToRightBankedUp25 + { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftBankedUp25ToUp25 + { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightBankedUp25ToUp25 + { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Down25ToLeftBankedDown25 + { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Down25ToRightBankedDown25 + { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftBankedDown25ToDown25 + { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightBankedDown25ToDown25 + { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftBankedFlatToLeftBankedUp25 + { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightBankedFlatToRightBankedUp25 + { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftBankedUp25ToLeftBankedFlat + { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightBankedUp25ToRightBankedFlat + { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftBankedFlatToLeftBankedDown25 + { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightBankedFlatToRightBankedDown25 + { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftBankedDown25ToLeftBankedFlat + { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightBankedDown25ToRightBankedFlat + { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlatToLeftBankedUp25 + { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlatToRightBankedUp25 + { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftBankedUp25ToFlat + { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightBankedUp25ToFlat + { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlatToLeftBankedDown25 + { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlatToRightBankedDown25 + { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftBankedDown25ToFlat + { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightBankedDown25ToFlat + { 0b1111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftQuarterTurn1TileUp90 + { 0b1111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightQuarterTurn1TileUp90 + { 0b1111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftQuarterTurn1TileDown90 + { 0b1111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightQuarterTurn1TileDown90 + { 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::MultiDimUp90ToInvertedFlatQuarterLoop + { 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::MultiDimFlatToDown90QuarterLoop + { 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::MultiDimInvertedUp90ToFlatQuarterLoop + { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RotationControlToggle + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlatTrack1x4A + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlatTrack2x2 + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlatTrack4x4 + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlatTrack2x4 + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlatTrack1x5 + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlatTrack1x1A + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlatTrack1x4B + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlatTrack1x1B + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlatTrack1x4C + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlatTrack3x3 + { 0b1010, 0b0010, 0b0011, 0b1100, 0b0001, 0b0101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftLargeCorkscrewUp + { 0b1010, 0b1000, 0b1001, 0b0110, 0b0001, 0b0101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightLargeCorkscrewUp + { 0b1010, 0b0010, 0b1100, 0b0011, 0b0001, 0b0101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftLargeCorkscrewDown + { 0b1010, 0b1000, 0b0110, 0b1001, 0b0001, 0b0101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightLargeCorkscrewDown + { 0b1010, 0b0010, 0b0011, 0b1001, 0b1000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftMediumHalfLoopUp + { 0b1010, 0b1000, 0b1001, 0b0011, 0b0010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightMediumHalfLoopUp + { 0b0010, 0b0011, 0b1001, 0b1000, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftMediumHalfLoopDown + { 0b1000, 0b1001, 0b0011, 0b0010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightMediumHalfLoopDown + { 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftZeroGRollUp + { 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightZeroGRollUp + { 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftZeroGRollDown + { 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightZeroGRollDown + { 0b1010, 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftLargeZeroGRollUp + { 0b1010, 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightLargeZeroGRollUp + { 0b1010, 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftLargeZeroGRollDown + { 0b1010, 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightLargeZeroGRollDown + + { 0b1010, 0b1010, 0b0010, 0b0011, 0b1001, 0b1000, 0b1000, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftFlyerLargeHalfLoopUninvertedUp + { 0b1010, 0b1010, 0b1000, 0b1001, 0b0011, 0b0010, 0b0010, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightFlyerLargeHalfLoopUninvertedUp + { 0b0010, 0b0010, 0b0011, 0b1001, 0b1000, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftFlyerLargeHalfLoopInvertedDown + { 0b1000, 0b1000, 0b1001, 0b0011, 0b0010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightFlyerLargeHalfLoopInvertedDown + { 0b1010, 0b1010, 0b0010, 0b0011, 0b1001, 0b1000, 0b1000, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftFlyerLargeHalfLoopInvertedUp + { 0b1010, 0b1010, 0b1000, 0b1001, 0b0011, 0b0010, 0b0010, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightFlyerLargeHalfLoopInvertedUp + { 0b0010, 0b0010, 0b0011, 0b1001, 0b1000, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftFlyerLargeHalfLoopUninvertedDown + { 0b1000, 0b1000, 0b1001, 0b0011, 0b0010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightFlyerLargeHalfLoopUninvertedDown + { 0b1010, 0b1010, 0b1011, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlyerHalfLoopInvertedUp + { 0, 0b1011, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlyerHalfLoopUninvertedDown + { 0b0010, 0b0010, 0b1000, 0b0011, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftEighthToDiagUp25 + { 0b1000, 0b1000, 0b0010, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightEighthToDiagUp25 + { 0b0010, 0b0010, 0b1000, 0b0011, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftEighthToDiagDown25 + { 0b1000, 0b1000, 0b0010, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightEighthToDiagDown25 + { 0, 0b1000, 0b0110, 0b0010, 0b0010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftEighthToOrthogonalUp25 + { 0, 0b0100, 0b1001, 0b0001, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightEighthToOrthogonalUp25 + { 0, 0b1000, 0b0110, 0b0010, 0b0010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftEighthToOrthogonalDown25 + { 0, 0b0100, 0b1001, 0b0001, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightEighthToOrthogonalDown25 + { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagUp25ToLeftBankedUp25 + { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagUp25ToRightBankedUp25 + { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagLeftBankedUp25ToUp25 + { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagRightBankedUp25ToUp25 + { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagDown25ToLeftBankedDown25 + { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagDown25ToRightBankedDown25 + { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagLeftBankedDown25ToDown25 + { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagRightBankedDown25ToDown25 + { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagLeftBankedFlatToLeftBankedUp25 + { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagRightBankedFlatToRightBankedUp25 + { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagLeftBankedUp25ToLeftBankedFlat + { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagRightBankedUp25ToRightBankedFlat + { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagLeftBankedFlatToLeftBankedDown25 + { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagRightBankedFlatToRightBankedDown25 + { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagLeftBankedDown25ToLeftBankedFlat + { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagRightBankedDown25ToRightBankedFlat + { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagFlatToLeftBankedUp25 + { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagFlatToRightBankedUp25 + { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagLeftBankedUp25ToFlat + { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagRightBankedUp25ToFlat + { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagFlatToLeftBankedDown25 + { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagFlatToRightBankedDown25 + { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagLeftBankedDown25ToFlat + { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagRightBankedDown25ToFlat + { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagUp25LeftBanked + { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagUp25RightBanked + { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagDown25LeftBanked + { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagDown25RightBanked + { 0b0010, 0b0010, 0b1000, 0b0011, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftEighthBankToDiagUp25 + { 0b1000, 0b1000, 0b0010, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightEighthBankToDiagUp25 + { 0b0010, 0b0010, 0b1000, 0b0011, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftEighthBankToDiagDown25 + { 0b1000, 0b1000, 0b0010, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightEighthBankToDiagDown25 + { 0, 0b1000, 0b0110, 0b0010, 0b0010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftEighthBankToOrthogonalUp25 + { 0, 0b0100, 0b1001, 0b0001, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightEighthBankToOrthogonalUp25 + { 0, 0b1000, 0b0110, 0b0010, 0b0010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftEighthBankToOrthogonalDown25 + { 0, 0b0100, 0b1001, 0b0001, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightEighthBankToOrthogonalDown25 + { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagBrakes + { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagBlockBrakes + }; + + + + static_assert(std::size(TrackSequenceElementAllowedWallEdges) == TrackElemType::Count); + + /** rct2: 0x0099423C */ + static constexpr uint32_t TrackFlags[] = { + /* TrackElemType::Flat */ TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, + /* TrackElemType::EndStation */ 0, + /* TrackElemType::BeginStation */ 0, + /* TrackElemType::MiddleStation */ 0, + /* TrackElemType::Up25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, + /* TrackElemType::Up60 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_IS_STEEP_UP | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, + /* TrackElemType::FlatToUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, + /* TrackElemType::Up25ToUp60 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_IS_STEEP_UP | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, + /* TrackElemType::Up60ToUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_IS_STEEP_UP | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, + /* TrackElemType::Up25ToFlat */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, + /* TrackElemType::Down25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, + /* TrackElemType::Down60 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, + /* TrackElemType::FlatToDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, + /* TrackElemType::Down25ToDown60 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, + /* TrackElemType::Down60ToDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, + /* TrackElemType::Down25ToFlat */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, + /* TrackElemType::LeftQuarterTurn5Tiles */ TRACK_ELEM_FLAG_TURN_LEFT, + /* TrackElemType::RightQuarterTurn5Tiles */ TRACK_ELEM_FLAG_TURN_RIGHT, + /* TrackElemType::FlatToLeftBank */ TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::FlatToRightBank */ TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::LeftBankToFlat */ TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::RightBankToFlat */ TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::BankedLeftQuarterTurn5Tiles */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_BANKED | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::BankedRightQuarterTurn5Tiles */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_BANKED | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::LeftBankToUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::RightBankToUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::Up25ToLeftBank */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::Up25ToRightBank */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::LeftBankToDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::RightBankToDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::Down25ToLeftBank */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::Down25ToRightBank */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::LeftBank */ TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::RightBank */ TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::LeftQuarterTurn5TilesUp25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, + /* TrackElemType::RightQuarterTurn5TilesUp25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, + /* TrackElemType::LeftQuarterTurn5TilesDown25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, + /* TrackElemType::RightQuarterTurn5TilesDown25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, + /* TrackElemType::SBendLeft */ 0, + /* TrackElemType::SBendRight */ 0, + /* TrackElemType::LeftVerticalLoop */ TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::RightVerticalLoop */ TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::LeftQuarterTurn3Tiles */ TRACK_ELEM_FLAG_TURN_LEFT, + /* TrackElemType::RightQuarterTurn3Tiles */ TRACK_ELEM_FLAG_TURN_RIGHT, + /* TrackElemType::LeftBankedQuarterTurn3Tiles */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_BANKED | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::RightBankedQuarterTurn3Tiles */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_BANKED | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::LeftQuarterTurn3TilesUp25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, + /* TrackElemType::RightQuarterTurn3TilesUp25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, + /* TrackElemType::LeftQuarterTurn3TilesDown25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, + /* TrackElemType::RightQuarterTurn3TilesDown25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, + /* TrackElemType::LeftQuarterTurn1Tile */ TRACK_ELEM_FLAG_TURN_LEFT, + /* TrackElemType::RightQuarterTurn1Tile */ TRACK_ELEM_FLAG_TURN_RIGHT, + /* TrackElemType::LeftTwistDownToUp */ TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::RightTwistDownToUp */ TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::LeftTwistUpToDown */ TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::RightTwistUpToDown */ TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::HalfLoopUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::HalfLoopDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::LeftCorkscrewUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::RightCorkscrewUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::LeftCorkscrewDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::RightCorkscrewDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::FlatToUp60 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_IS_STEEP_UP | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, + /* TrackElemType::Up60ToFlat */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_IS_STEEP_UP | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, + /* TrackElemType::FlatToDown60 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, + /* TrackElemType::Down60ToFlat */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, + /* TrackElemType::TowerBase */ 0, + /* TrackElemType::TowerSection */ 0, + /* TrackElemType::FlatCovered */ 0, + /* TrackElemType::Up25Covered */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::Up60Covered */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::FlatToUp25Covered */ TRACK_ELEM_FLAG_UP, + /* TrackElemType::Up25ToUp60Covered */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::Up60ToUp25Covered */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::Up25ToFlatCovered */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::Down25Covered */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::Down60Covered */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::FlatToDown25Covered */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::Down25ToDown60Covered */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::Down60ToDown25Covered */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::Down25ToFlatCovered */ TRACK_ELEM_FLAG_DOWN, + /* TrackElemType::LeftQuarterTurn5TilesCovered */ TRACK_ELEM_FLAG_TURN_LEFT, + /* TrackElemType::RightQuarterTurn5TilesCovered */ TRACK_ELEM_FLAG_TURN_RIGHT, + /* TrackElemType::SBendLeftCovered */ 0, + /* TrackElemType::SBendRightCovered */ 0, + /* TrackElemType::LeftQuarterTurn3TilesCovered */ TRACK_ELEM_FLAG_TURN_LEFT, + /* TrackElemType::RightQuarterTurn3TilesCovered */ TRACK_ELEM_FLAG_TURN_RIGHT, + /* TrackElemType::LeftHalfBankedHelixUpSmall */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::RightHalfBankedHelixUpSmall */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::LeftHalfBankedHelixDownSmall */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::RightHalfBankedHelixDownSmall */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::LeftHalfBankedHelixUpLarge */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::RightHalfBankedHelixUpLarge */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::LeftHalfBankedHelixDownLarge */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::RightHalfBankedHelixDownLarge */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::LeftQuarterTurn1TileUp60 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::RightQuarterTurn1TileUp60 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::LeftQuarterTurn1TileDown60 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::RightQuarterTurn1TileDown60 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::Brakes */ 0, + /* TrackElemType::Booster */ 0, + /* TrackElemType::InvertedUp90ToFlatQuarterLoopAlias / Maze */ TRACK_ELEM_FLAG_ONLY_ABOVE_GROUND, + /* TrackElemType::LeftQuarterBankedHelixLargeUp */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::RightQuarterBankedHelixLargeUp */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::LeftQuarterBankedHelixLargeDown */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::RightQuarterBankedHelixLargeDown */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::LeftQuarterHelixLargeUp */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_HELIX, + /* TrackElemType::RightQuarterHelixLargeUp */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_HELIX, + /* TrackElemType::LeftQuarterHelixLargeDown */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_HELIX, + /* TrackElemType::RightQuarterHelixLargeDown */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_HELIX, + /* TrackElemType::Up25LeftBanked */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::Up25RightBanked */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::Waterfall */ 0, + /* TrackElemType::Rapids */ 0, + /* TrackElemType::OnRidePhoto */ 0, + /* TrackElemType::Down25LeftBanked */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::Down25RightBanked */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::Watersplash */ 0, + /* TrackElemType::FlatToUp60LongBase */ TRACK_ELEM_FLAG_UP, + /* TrackElemType::Up60ToFlatLongBase */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::Whirlpool */ 0, + /* TrackElemType::Down60ToFlatLongBase */ TRACK_ELEM_FLAG_DOWN, + /* TrackElemType::FlatToDown60LongBase */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::CableLiftHill */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::ReverseFreefallSlope */ TRACK_ELEM_FLAG_UP, + /* TrackElemType::ReverseFreefallVertical */ TRACK_ELEM_FLAG_UP, + /* TrackElemType::Up90 */ TRACK_ELEM_FLAG_UP, + /* TrackElemType::Down90 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, + /* TrackElemType::Up60ToUp90 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::Down90ToDown60 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, + /* TrackElemType::Up90ToUp60 */ TRACK_ELEM_FLAG_UP, + /* TrackElemType::Down60ToDown90 */ TRACK_ELEM_FLAG_DOWN, + /* TrackElemType::BrakeForDrop */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::LeftEighthToDiag */ TRACK_ELEM_FLAG_TURN_LEFT, + /* TrackElemType::RightEighthToDiag */ TRACK_ELEM_FLAG_TURN_RIGHT, + /* TrackElemType::LeftEighthToOrthogonal */ TRACK_ELEM_FLAG_TURN_LEFT, + /* TrackElemType::RightEighthToOrthogonal */ TRACK_ELEM_FLAG_TURN_RIGHT, + /* TrackElemType::LeftEighthBankToDiag */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_BANKED | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::RightEighthBankToDiag */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_BANKED | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::LeftEighthBankToOrthogonal */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_BANKED | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::RightEighthBankToOrthogonal */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_BANKED | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::DiagFlat */ TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, + /* TrackElemType::DiagUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, + /* TrackElemType::DiagUp60 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_IS_STEEP_UP | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, + /* TrackElemType::DiagFlatToUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, + /* TrackElemType::DiagUp25ToUp60 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_IS_STEEP_UP | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, + /* TrackElemType::DiagUp60ToUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_IS_STEEP_UP | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, + /* TrackElemType::DiagUp25ToFlat */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, + /* TrackElemType::DiagDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, + /* TrackElemType::DiagDown60 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, + /* TrackElemType::DiagFlatToDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, + /* TrackElemType::DiagDown25ToDown60 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, + /* TrackElemType::DiagDown60ToDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, + /* TrackElemType::DiagDown25ToFlat */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, + /* TrackElemType::DiagFlatToUp60 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_IS_STEEP_UP | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, + /* TrackElemType::DiagUp60ToFlat */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_IS_STEEP_UP | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, + /* TrackElemType::DiagFlatToDown60 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, + /* TrackElemType::DiagDown60ToFlat */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, + /* TrackElemType::DiagFlatToLeftBank */ TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::DiagFlatToRightBank */ TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::DiagLeftBankToFlat */ TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::DiagRightBankToFlat */ TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::DiagLeftBankToUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::DiagRightBankToUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::DiagUp25ToLeftBank */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::DiagUp25ToRightBank */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::DiagLeftBankToDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::DiagRightBankToDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::DiagDown25ToLeftBank */ TRACK_ELEM_FLAG_DOWN, + /* TrackElemType::DiagDown25ToRightBank */ TRACK_ELEM_FLAG_DOWN, + /* TrackElemType::DiagLeftBank */ TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::DiagRightBank */ TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::LogFlumeReverser */ TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::SpinningTunnel */ TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::LeftBarrelRollUpToDown */ TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::RightBarrelRollUpToDown */ TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::LeftBarrelRollDownToUp */ TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::RightBarrelRollDownToUp */ TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::LeftBankToLeftQuarterTurn3TilesUp25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::RightBankToRightQuarterTurn3TilesUp25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::LeftQuarterTurn3TilesDown25ToLeftBank */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::RightQuarterTurn3TilesDown25ToRightBank */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::PoweredLift */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::LeftLargeHalfLoopUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::RightLargeHalfLoopUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::LeftLargeHalfLoopDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::RightLargeHalfLoopDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::LeftFlyerTwistUp */ TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::RightFlyerTwistUp */ TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::LeftFlyerTwistDown */ TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::RightFlyerTwistDown */ TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::FlyerHalfLoopUninvertedUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::FlyerHalfLoopInvertedDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::LeftFlyerCorkscrewUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::RightFlyerCorkscrewUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::LeftFlyerCorkscrewDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::RightFlyerCorkscrewDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::HeartLineTransferUp */ 0, + /* TrackElemType::HeartLineTransferDown */ 0, + /* TrackElemType::LeftHeartLineRoll */ TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL | TRACK_ELEM_FLAG_CAN_BE_PARTLY_UNDERGROUND, + /* TrackElemType::RightHeartLineRoll */ TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL | TRACK_ELEM_FLAG_CAN_BE_PARTLY_UNDERGROUND, + /* TrackElemType::MinigolfHoleA */ TRACK_ELEM_FLAG_IS_GOLF_HOLE, + /* TrackElemType::MinigolfHoleB */ TRACK_ELEM_FLAG_IS_GOLF_HOLE, + /* TrackElemType::MinigolfHoleC */ TRACK_ELEM_FLAG_IS_GOLF_HOLE, + /* TrackElemType::MinigolfHoleD */ TRACK_ELEM_FLAG_IS_GOLF_HOLE, + /* TrackElemType::MinigolfHoleE */ TRACK_ELEM_FLAG_IS_GOLF_HOLE, + /* TrackElemType::MultiDimInvertedFlatToDown90QuarterLoop */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::Up90ToInvertedFlatQuarterLoop */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::InvertedFlatToDown90QuarterLoop */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::LeftCurvedLiftHill */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_UP, + /* TrackElemType::RightCurvedLiftHill */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_UP, + /* TrackElemType::LeftReverser */ 0, + /* TrackElemType::RightReverser */ 0, + /* TrackElemType::AirThrustTopCap */ 0, + /* TrackElemType::AirThrustVerticalDown */ TRACK_ELEM_FLAG_DOWN, + /* TrackElemType::AirThrustVerticalDownToLevel */ TRACK_ELEM_FLAG_DOWN, + /* TrackElemType::BlockBrakes */ 0, + /* TrackElemType::LeftBankedQuarterTurn3TileUp25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::RightBankedQuarterTurn3TileUp25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::LeftBankedQuarterTurn3TileDown25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::RightBankedQuarterTurn3TileDown25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::LeftBankedQuarterTurn5TileUp25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::RightBankedQuarterTurn5TileUp25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::LeftBankedQuarterTurn5TileDown25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::RightBankedQuarterTurn5TileDown25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::Up25ToLeftBankedUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::Up25ToRightBankedUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::LeftBankedUp25ToUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::RightBankedUp25ToUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::Down25ToLeftBankedDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::Down25ToRightBankedDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::LeftBankedDown25ToDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::RightBankedDown25ToDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::LeftBankedFlatToLeftBankedUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::RightBankedFlatToRightBankedUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::LeftBankedUp25ToLeftBankedFlat */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::RightBankedUp25ToRightBankedFlat */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::LeftBankedFlatToLeftBankedDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::RightBankedFlatToRightBankedDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::LeftBankedDown25ToLeftBankedFlat */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::RightBankedDown25ToRightBankedFlat */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::FlatToLeftBankedUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::FlatToRightBankedUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::LeftBankedUp25ToFlat */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::RightBankedUp25ToFlat */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::FlatToLeftBankedDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::FlatToRightBankedDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::LeftBankedDown25ToFlat */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::RightBankedDown25ToFlat */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::LeftQuarterTurn1TileUp90 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP, + /* TrackElemType::RightQuarterTurn1TileUp90 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP, + /* TrackElemType::LeftQuarterTurn1TileDown90 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN, + /* TrackElemType::RightQuarterTurn1TileDown90 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN, + /* TrackElemType::MultiDimUp90ToInvertedFlatQuarterLoop */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::MultiDimFlatToDown90QuarterLoop */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::MultiDimInvertedUp90ToFlatQuarterLoop */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::RotationControlToggle */ 0, + /* TrackElemType::FlatTrack1x4A */ 0, + /* TrackElemType::FlatTrack2x2 */ 0, + /* TrackElemType::FlatTrack4x4 */ 0, + /* TrackElemType::FlatTrack2x4 */ TRACK_ELEM_FLAG_ONLY_ABOVE_GROUND, + /* TrackElemType::FlatTrack1x5 */ 0, + /* TrackElemType::FlatTrack1x1A */ 0, + /* TrackElemType::FlatTrack1x4B */ 0, + /* TrackElemType::FlatTrack1x1B */ 0, + /* TrackElemType::FlatTrack1x4C */ 0, + /* TrackElemType::FlatTrack3x3 */ 0, + /* TrackElemType::LeftLargeCorkscrewUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::RightLargeCorkscrewUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::LeftLargeCorkscrewDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::RightLargeCorkscrewDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::LeftMediumHalfLoopUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::RightMediumHalfLoopUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::LeftMediumHalfLoopDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::RightMediumHalfLoopDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::LeftZeroGRollUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::RightZeroGRollUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::LeftZeroGRollDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::RightZeroGRollDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::LeftLargeZeroGRollUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::RightLargeZeroGRollUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::LeftLargeZeroGRollDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::RightLargeZeroGRollDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::LeftFlyerLargeHalfLoopUninvertedUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::RightFlyerLargeHalfLoopUninvertedUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::LeftFlyerLargeHalfLoopInvertedDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::RightFlyerLargeHalfLoopInvertedDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, + /* TrackElemType::LeftFlyerLargeHalfLoopInvertedUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::RightFlyerLargeHalfLoopInvertedUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::LeftFlyerLargeHalfLoopUninvertedDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION, + /* TrackElemType::RightFlyerLargeHalfLoopUninvertedDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION, + /* TrackElemType::FlyerHalfLoopInvertedUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::FlyerHalfLoopUnivertedDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION, + /* TrackElemType::LeftEighthToDiagUp25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, + /* TrackElemType::RightEighthToDiagUp25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, + /* TrackElemType::LeftEighthToDiagDown25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, + /* TrackElemType::RightEighthToDiagDown25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, + /* TrackElemType::LeftEighthToOrthogonalUp25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, + /* TrackElemType::RightEighthToOrthogonalUp25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, + /* TrackElemType::LeftEighthToOrthogonalDown25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, + /* TrackElemType::RightEighthToOrthogonalDown25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, + /* TrackElemType::DiagUp25ToLeftBankedUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::DiagUp25ToRightBankedUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::DiagLeftBankedUp25ToUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::DiagRightBankedUp25ToUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::DiagDown25ToLeftBankedDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::DiagDown25ToRightBankedDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::DiagLeftBankedDown25ToDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::DiagRightBankedDown25ToDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::DiagLeftBankedFlatToLeftBankedUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::DiagRightBankedFlatToRightBankedUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::DiagLeftBankedUp25ToLeftBankedFlat */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::DiagRightBankedUp25ToRightBankedFlat */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::DiagLeftBankedFlatToLeftBankedDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::DiagRightBankedFlatToRightBankedDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::DiagLeftBankedDown25ToLeftBankedFlat */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::DiagRightBankedDown25ToRightBankedFlat */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::DiagFlatToLeftBankedUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::DiagFlatToRightBankedUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::DiagLeftBankedUp25ToFlat */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::DiagRightBankedUp25ToFlat */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::DiagFlatToLeftBankedDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::DiagFlatToRightBankedDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::DiagLeftBankedDown25ToFlat */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::DiagRightBankedDown25ToFlat */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED, + /* TrackElemType::Up25LeftBanked */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::Up25RightBanked */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::Down25LeftBanked */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::Down25RightBanked */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, + /* TrackElemType::LeftEighthBankToDiagUp25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, + /* TrackElemType::RightEighthBankToDiagUp25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, + /* TrackElemType::LeftEighthBankToDiagDown25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, + /* TrackElemType::RightEighthBankToDiagDown25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, + /* TrackElemType::LeftEighthBankToOrthogonalUp25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, + /* TrackElemType::RightEighthBankToOrthogonalUp25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, + /* TrackElemType::LeftEighthBankToOrthogonalDown25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, + /* TrackElemType::RightEighthBankToOrthogonalDown25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT, + /* TrackElemType::DiagBrakes */ 0, + /* TrackElemType::DiagBlockBrakes */ 0, + }; + static_assert(std::size(TrackFlags) == TrackElemType::Count); // clang-format on /** rct2: 0x00997C9D */ // clang-format off - static constexpr TrackDefinition TrackDefinitions[] = - { - // TYPE VANGLE END VANGLE START BANK END BANK START PREVIEW Z OFFSET - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_FLAT - { TrackGroup::stationEnd, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_END_STATION - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_BEGIN_STATION - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_MIDDLE_STATION - { TrackGroup::flat, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_25_DEG_UP - { TrackGroup::flat, TrackPitch::Up60, TrackPitch::Up60, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_60_DEG_UP - { TrackGroup::flat, TrackPitch::Up25, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_FLAT_TO_25_DEG_UP - { TrackGroup::flat, TrackPitch::Up60, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_25_DEG_UP_TO_60_DEG_UP - { TrackGroup::flat, TrackPitch::Up25, TrackPitch::Up60, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_60_DEG_UP_TO_25_DEG_UP - { TrackGroup::flat, TrackPitch::None, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_25_DEG_UP_TO_FLAT - { TrackGroup::flat, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_25_DEG_DOWN - { TrackGroup::flat, TrackPitch::Down60, TrackPitch::Down60, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_60_DEG_DOWN - { TrackGroup::flat, TrackPitch::Down25, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_FLAT_TO_25_DEG_DOWN - { TrackGroup::flat, TrackPitch::Down60, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_25_DEG_DOWN_TO_60_DEG_DOWN - { TrackGroup::flat, TrackPitch::Down25, TrackPitch::Down60, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_60_DEG_DOWN_TO_25_DEG_DOWN - { TrackGroup::flat, TrackPitch::None, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_25_DEG_DOWN_TO_FLAT - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_LEFT_QUARTER_TURN_5_TILES - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_RIGHT_QUARTER_TURN_5_TILES - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::Left, TrackRoll::None, 0 }, // ELEM_FLAT_TO_LEFT_BANK - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::Right, TrackRoll::None, 0 }, // ELEM_FLAT_TO_RIGHT_BANK - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::Left, 0 }, // ELEM_LEFT_BANK_TO_FLAT - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::Right, 0 }, // ELEM_RIGHT_BANK_TO_FLAT - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // ELEM_BANKED_LEFT_QUARTER_TURN_5_TILES - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // ELEM_BANKED_RIGHT_QUARTER_TURN_5_TILES - { TrackGroup::flat, TrackPitch::Up25, TrackPitch::None, TrackRoll::None, TrackRoll::Left, 0 }, // ELEM_LEFT_BANK_TO_25_DEG_UP - { TrackGroup::flat, TrackPitch::Up25, TrackPitch::None, TrackRoll::None, TrackRoll::Right, 0 }, // ELEM_RIGHT_BANK_TO_25_DEG_UP - { TrackGroup::flat, TrackPitch::None, TrackPitch::Up25, TrackRoll::Left, TrackRoll::None, 0 }, // ELEM_25_DEG_UP_TO_LEFT_BANK - { TrackGroup::flat, TrackPitch::None, TrackPitch::Up25, TrackRoll::Right, TrackRoll::None, 0 }, // ELEM_25_DEG_UP_TO_RIGHT_BANK - { TrackGroup::flat, TrackPitch::Down25, TrackPitch::None, TrackRoll::None, TrackRoll::Left, 0 }, // ELEM_LEFT_BANK_TO_25_DEG_DOWN - { TrackGroup::flat, TrackPitch::Down25, TrackPitch::None, TrackRoll::None, TrackRoll::Right, 0 }, // ELEM_RIGHT_BANK_TO_25_DEG_DOWN - { TrackGroup::flat, TrackPitch::None, TrackPitch::Down25, TrackRoll::Left, TrackRoll::None, 0 }, // ELEM_25_DEG_DOWN_TO_LEFT_BANK - { TrackGroup::flat, TrackPitch::None, TrackPitch::Down25, TrackRoll::Right, TrackRoll::None, 0 }, // ELEM_25_DEG_DOWN_TO_RIGHT_BANK - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // ELEM_LEFT_BANK - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // ELEM_RIGHT_BANK - { TrackGroup::flat, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_LEFT_QUARTER_TURN_5_TILES_25_DEG_UP - { TrackGroup::flat, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_RIGHT_QUARTER_TURN_5_TILES_25_DEG_UP - { TrackGroup::flat, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_LEFT_QUARTER_TURN_5_TILES_25_DEG_DOWN - { TrackGroup::flat, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_RIGHT_QUARTER_TURN_5_TILES_25_DEG_DOWN - { TrackGroup::sBend, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_S_BEND_LEFT - { TrackGroup::sBend, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_S_BEND_RIGHT - { TrackGroup::verticalLoop, TrackPitch::Down25, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, -48 }, // ELEM_LEFT_VERTICAL_LOOP - { TrackGroup::verticalLoop, TrackPitch::Down25, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, -48 }, // ELEM_RIGHT_VERTICAL_LOOP - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_LEFT_QUARTER_TURN_3_TILES - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_RIGHT_QUARTER_TURN_3_TILES - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // ELEM_LEFT_QUARTER_TURN_3_TILES_BANK - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // ELEM_RIGHT_QUARTER_TURN_3_TILES_BANK - { TrackGroup::flat, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_LEFT_QUARTER_TURN_3_TILES_25_DEG_UP - { TrackGroup::flat, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_RIGHT_QUARTER_TURN_3_TILES_25_DEG_UP - { TrackGroup::flat, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_LEFT_QUARTER_TURN_3_TILES_25_DEG_DOWN - { TrackGroup::flat, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_RIGHT_QUARTER_TURN_3_TILES_25_DEG_DOWN - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_LEFT_QUARTER_TURN_1_TILE - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_RIGHT_QUARTER_TURN_1_TILE - { TrackGroup::twist, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // ELEM_LEFT_TWIST_DOWN_TO_UP - { TrackGroup::twist, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // ELEM_RIGHT_TWIST_DOWN_TO_UP - { TrackGroup::twist, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, 0 }, // ELEM_LEFT_TWIST_UP_TO_DOWN - { TrackGroup::twist, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, 0 }, // ELEM_RIGHT_TWIST_UP_TO_DOWN - { TrackGroup::halfLoop, TrackPitch::None, TrackPitch::Up25, TrackRoll::UpsideDown, TrackRoll::None, 64 }, // ELEM_HALF_LOOP_UP - { TrackGroup::halfLoop, TrackPitch::Down25, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, -64 }, // ELEM_HALF_LOOP_DOWN - { TrackGroup::corkscrew, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // ELEM_LEFT_CORKSCREW_UP - { TrackGroup::corkscrew, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // ELEM_RIGHT_CORKSCREW_UP - { TrackGroup::corkscrew, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, -32 }, // ELEM_LEFT_CORKSCREW_DOWN - { TrackGroup::corkscrew, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, -32 }, // ELEM_RIGHT_CORKSCREW_DOWN - { TrackGroup::flat, TrackPitch::Up60, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_FLAT_TO_60_DEG_UP - { TrackGroup::flat, TrackPitch::None, TrackPitch::Up60, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_60_DEG_UP_TO_FLAT - { TrackGroup::flat, TrackPitch::Down60, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_FLAT_TO_60_DEG_DOWN - { TrackGroup::flat, TrackPitch::None, TrackPitch::Down60, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_60_DEG_DOWN_TO_FLAT - { TrackGroup::tower, TrackPitch::Tower, TrackPitch::Tower, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_TOWER_BASE - { TrackGroup::tower, TrackPitch::Tower, TrackPitch::Tower, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_TOWER_SECTION - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_FLAT_COVERED - { TrackGroup::flat, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_25_DEG_UP_COVERED - { TrackGroup::flat, TrackPitch::Up60, TrackPitch::Up60, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_60_DEG_UP_COVERED - { TrackGroup::flat, TrackPitch::Up25, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_FLAT_TO_25_DEG_UP_COVERED - { TrackGroup::flat, TrackPitch::Up60, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_25_DEG_UP_TO_60_DEG_UP_COVERED - { TrackGroup::flat, TrackPitch::Up25, TrackPitch::Up60, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_60_DEG_UP_TO_25_DEG_UP_COVERED - { TrackGroup::flat, TrackPitch::None, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_25_DEG_UP_TO_FLAT_COVERED - { TrackGroup::flat, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_25_DEG_DOWN_COVERED - { TrackGroup::flat, TrackPitch::Down60, TrackPitch::Down60, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_60_DEG_DOWN_COVERED - { TrackGroup::flat, TrackPitch::Down25, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_FLAT_TO_25_DEG_DOWN_COVERED - { TrackGroup::flat, TrackPitch::Down60, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_25_DEG_DOWN_TO_60_DEG_DOWN_COVERED - { TrackGroup::flat, TrackPitch::Down25, TrackPitch::Down60, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_60_DEG_DOWN_TO_25_DEG_DOWN_COVERED - { TrackGroup::flat, TrackPitch::None, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_25_DEG_DOWN_TO_FLAT_COVERED - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_LEFT_QUARTER_TURN_5_TILES_COVERED - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_RIGHT_QUARTER_TURN_5_TILES_COVERED - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_S_BEND_LEFT_COVERED - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_S_BEND_RIGHT_COVERED - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_LEFT_QUARTER_TURN_3_TILES_COVERED - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_RIGHT_QUARTER_TURN_3_TILES_COVERED - { TrackGroup::helixUpBankedHalf, TrackPitch::None, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // ELEM_LEFT_HALF_BANKED_HELIX_UP_SMALL - { TrackGroup::helixUpBankedHalf, TrackPitch::None, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // ELEM_RIGHT_HALF_BANKED_HELIX_UP_SMALL - { TrackGroup::helixDownBankedHalf, TrackPitch::None, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // ELEM_LEFT_HALF_BANKED_HELIX_DOWN_SMALL - { TrackGroup::helixDownBankedHalf, TrackPitch::None, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // ELEM_RIGHT_HALF_BANKED_HELIX_DOWN_SMALL - { TrackGroup::helixUpBankedHalf, TrackPitch::None, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // ELEM_LEFT_HALF_BANKED_HELIX_UP_LARGE - { TrackGroup::helixUpBankedHalf, TrackPitch::None, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // ELEM_RIGHT_HALF_BANKED_HELIX_UP_LARGE - { TrackGroup::helixDownBankedHalf, TrackPitch::None, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // ELEM_LEFT_HALF_BANKED_HELIX_DOWN_LARGE - { TrackGroup::helixDownBankedHalf, TrackPitch::None, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // ELEM_RIGHT_HALF_BANKED_HELIX_DOWN_LARGE - { TrackGroup::flat, TrackPitch::Up60, TrackPitch::Up60, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_LEFT_QUARTER_TURN_1_TILE_60_DEG_UP - { TrackGroup::flat, TrackPitch::Up60, TrackPitch::Up60, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_RIGHT_QUARTER_TURN_1_TILE_60_DEG_UP - { TrackGroup::flat, TrackPitch::Down60, TrackPitch::Down60, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_LEFT_QUARTER_TURN_1_TILE_60_DEG_DOWN - { TrackGroup::flat, TrackPitch::Down60, TrackPitch::Down60, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_RIGHT_QUARTER_TURN_1_TILE_60_DEG_DOWN - { TrackGroup::brakes, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_BRAKES - { TrackGroup::booster, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_BOOSTER - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::Maze - { TrackGroup::helixUpBankedQuarter, TrackPitch::None, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // ELEM_LEFT_QUARTER_BANKED_HELIX_LARGE_UP - { TrackGroup::helixUpBankedQuarter, TrackPitch::None, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // ELEM_RIGHT_QUARTER_BANKED_HELIX_LARGE_UP - { TrackGroup::helixDownBankedQuarter, TrackPitch::None, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // ELEM_LEFT_QUARTER_BANKED_HELIX_LARGE_DOWN - { TrackGroup::helixDownBankedQuarter, TrackPitch::None, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // ELEM_RIGHT_QUARTER_BANKED_HELIX_LARGE_DOWN - { TrackGroup::helixUpUnbankedQuarter, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_LEFT_QUARTER_HELIX_LARGE_UP - { TrackGroup::helixUpUnbankedQuarter, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_RIGHT_QUARTER_HELIX_LARGE_UP - { TrackGroup::helixDownUnbankedQuarter, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_LEFT_QUARTER_HELIX_LARGE_DOWN - { TrackGroup::helixDownUnbankedQuarter, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_RIGHT_QUARTER_HELIX_LARGE_DOWN - { TrackGroup::flat, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Left, TrackRoll::Left, 0 }, // ELEM_25_DEG_UP_LEFT_BANKED - { TrackGroup::flat, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Right, TrackRoll::Right, 0 }, // ELEM_25_DEG_UP_RIGHT_BANKED - { TrackGroup::waterfall, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_WATERFALL - { TrackGroup::rapids, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_RAPIDS - { TrackGroup::onridePhoto, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_ON_RIDE_PHOTO - { TrackGroup::flat, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Left, TrackRoll::Left, 0 }, // ELEM_25_DEG_DOWN_LEFT_BANKED - { TrackGroup::flat, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Right, TrackRoll::Right, 0 }, // ELEM_25_DEG_DOWN_RIGHT_BANKED - { TrackGroup::waterSplash, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_WATER_SPLASH - { TrackGroup::flat, TrackPitch::Up60, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_FLAT_TO_60_DEG_UP_LONG_BASE - { TrackGroup::flat, TrackPitch::None, TrackPitch::Up60, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_60_DEG_UP_TO_FLAT_LONG_BASE - { TrackGroup::whirlpool, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_WHIRLPOOL - { TrackGroup::flat, TrackPitch::None, TrackPitch::Down60, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_FLAT_TO_60_DEG_DOWN_LONG_BASE - { TrackGroup::flat, TrackPitch::Down60, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_60_DEG_UP_TO_FLAT_LONG_BASE_122 - { TrackGroup::liftHillCable, TrackPitch::Down60, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_CABLE_LIFT_HILL - { TrackGroup::reverseFreefall, TrackPitch::ReverseFreefall, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_REVERSE_FREEFALL_SLOPE - { TrackGroup::reverseFreefall, TrackPitch::ReverseFreefall, TrackPitch::ReverseFreefall, TrackRoll::None,TrackRoll::None, 0 }, // ELEM_REVERSE_FREEFALL_VERTICAL - { TrackGroup::flat, TrackPitch::Up90, TrackPitch::Up90, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_90_DEG_UP - { TrackGroup::flat, TrackPitch::Down90, TrackPitch::Down90, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_90_DEG_DOWN - { TrackGroup::flat, TrackPitch::Up90, TrackPitch::Up60, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_60_DEG_UP_TO_90_DEG_UP - { TrackGroup::flat, TrackPitch::Down60, TrackPitch::Down90, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_90_DEG_DOWN_TO_60_DEG_DOWN - { TrackGroup::flat, TrackPitch::Up60, TrackPitch::Up90, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_90_DEG_UP_TO_60_DEG_UP - { TrackGroup::flat, TrackPitch::Down90, TrackPitch::Down60, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_60_DEG_DOWN_TO_90_DEG_DOWN - { TrackGroup::brakeForDrop, TrackPitch::Down60, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_BRAKE_FOR_DROP - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_LEFT_EIGHTH_TO_DIAG - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_RIGHT_EIGHTH_TO_DIAG - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_LEFT_EIGHTH_TO_ORTHOGONAL - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_RIGHT_EIGHTH_TO_ORTHOGONAL - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // ELEM_LEFT_EIGHTH_BANK_TO_DIAG - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // ELEM_RIGHT_EIGHTH_BANK_TO_DIAG - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // ELEM_LEFT_EIGHTH_BANK_TO_ORTHOGONAL - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // ELEM_RIGHT_EIGHTH_BANK_TO_ORTHOGONAL - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_DIAG_FLAT - { TrackGroup::flat, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_DIAG_25_DEG_UP - { TrackGroup::flat, TrackPitch::Up60, TrackPitch::Up60, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_DIAG_60_DEG_UP - { TrackGroup::flat, TrackPitch::Up25, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_DIAG_FLAT_TO_25_DEG_UP - { TrackGroup::flat, TrackPitch::Up60, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_DIAG_25_DEG_UP_TO_60_DEG_UP - { TrackGroup::flat, TrackPitch::Up25, TrackPitch::Up60, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_DIAG_60_DEG_UP_TO_25_DEG_UP - { TrackGroup::flat, TrackPitch::None, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_DIAG_25_DEG_UP_TO_FLAT - { TrackGroup::flat, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_DIAG_25_DEG_DOWN - { TrackGroup::flat, TrackPitch::Down60, TrackPitch::Down60, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_DIAG_60_DEG_DOWN - { TrackGroup::flat, TrackPitch::Down25, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_DIAG_FLAT_TO_25_DEG_DOWN - { TrackGroup::flat, TrackPitch::Down60, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_DIAG_25_DEG_DOWN_TO_60_DEG_DOWN - { TrackGroup::flat, TrackPitch::Down25, TrackPitch::Down60, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_DIAG_60_DEG_DOWN_TO_25_DEG_DOWN - { TrackGroup::flat, TrackPitch::None, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_DIAG_25_DEG_DOWN_TO_FLAT - { TrackGroup::flat, TrackPitch::Up60, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_DIAG_FLAT_TO_60_DEG_UP - { TrackGroup::flat, TrackPitch::None, TrackPitch::Up60, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_DIAG_60_DEG_UP_TO_FLAT - { TrackGroup::flat, TrackPitch::Down60, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_DIAG_FLAT_TO_60_DEG_DOWN - { TrackGroup::flat, TrackPitch::None, TrackPitch::Down60, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_DIAG_60_DEG_DOWN_TO_FLAT - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::Left, TrackRoll::None, 0 }, // ELEM_DIAG_FLAT_TO_LEFT_BANK - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::Right, TrackRoll::None, 0 }, // ELEM_DIAG_FLAT_TO_RIGHT_BANK - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::Left, 0 }, // ELEM_DIAG_LEFT_BANK_TO_FLAT - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::Right, 0 }, // ELEM_DIAG_RIGHT_BANK_TO_FLAT - { TrackGroup::flat, TrackPitch::Up25, TrackPitch::None, TrackRoll::None, TrackRoll::Left, 0 }, // ELEM_DIAG_LEFT_BANK_TO_25_DEG_UP - { TrackGroup::flat, TrackPitch::Up25, TrackPitch::None, TrackRoll::None, TrackRoll::Right, 0 }, // ELEM_DIAG_RIGHT_BANK_TO_25_DEG_UP - { TrackGroup::flat, TrackPitch::None, TrackPitch::Up25, TrackRoll::Left, TrackRoll::None, 0 }, // ELEM_DIAG_25_DEG_UP_TO_LEFT_BANK - { TrackGroup::flat, TrackPitch::None, TrackPitch::Up25, TrackRoll::Right, TrackRoll::None, 0 }, // ELEM_DIAG_25_DEG_UP_TO_RIGHT_BANK - { TrackGroup::flat, TrackPitch::Down25, TrackPitch::None, TrackRoll::None, TrackRoll::Left, 0 }, // ELEM_DIAG_LEFT_BANK_TO_25_DEG_DOWN - { TrackGroup::flat, TrackPitch::Down25, TrackPitch::None, TrackRoll::None, TrackRoll::Right, 0 }, // ELEM_DIAG_RIGHT_BANK_TO_25_DEG_DOWN - { TrackGroup::flat, TrackPitch::None, TrackPitch::Down25, TrackRoll::Left, TrackRoll::None, 0 }, // ELEM_DIAG_25_DEG_DOWN_TO_LEFT_BANK - { TrackGroup::flat, TrackPitch::None, TrackPitch::Down25, TrackRoll::Right, TrackRoll::None, 0 }, // ELEM_DIAG_25_DEG_DOWN_TO_RIGHT_BANK - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // ELEM_DIAG_LEFT_BANK - { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // ELEM_DIAG_RIGHT_BANK - { TrackGroup::logFlumeReverser, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_LOG_FLUME_REVERSER - { TrackGroup::spinningTunnel, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_SPINNING_TUNNEL - { TrackGroup::barrelRoll, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // ELEM_LEFT_BARREL_ROLL_UP_TO_DOWN - { TrackGroup::barrelRoll, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // ELEM_RIGHT_BARREL_ROLL_UP_TO_DOWN - { TrackGroup::barrelRoll, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, 0 }, // ELEM_LEFT_BARREL_ROLL_DOWN_TO_UP - { TrackGroup::barrelRoll, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, 0 }, // ELEM_RIGHT_BARREL_ROLL_DOWN_TO_UP - { TrackGroup::flat, TrackPitch::Up25, TrackPitch::None, TrackRoll::None, TrackRoll::Left, 0 }, // ELEM_LEFT_BANK_TO_LEFT_QUARTER_TURN_3_TILES_25_DEG_UP - { TrackGroup::flat, TrackPitch::Up25, TrackPitch::None, TrackRoll::None, TrackRoll::Right, 0 }, // ELEM_RIGHT_BANK_TO_RIGHT_QUARTER_TURN_3_TILES_25_DEG_UP - { TrackGroup::flat, TrackPitch::None, TrackPitch::Down25, TrackRoll::Left, TrackRoll::None, 0 }, // ELEM_LEFT_QUARTER_TURN_3_TILES_25_DEG_DOWN_TO_LEFT_BANK - { TrackGroup::flat, TrackPitch::None, TrackPitch::Down25, TrackRoll::Right, TrackRoll::None, 0 }, // ELEM_RIGHT_QUARTER_TURN_3_TILES_25_DEG_DOWN_TO_RIGHT_BANK - { TrackGroup::poweredLift, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_POWERED_LIFT - {TrackGroup::halfLoopLarge, TrackPitch::None, TrackPitch::Up25, TrackRoll::UpsideDown, TrackRoll::None, 64 }, // ELEM_LEFT_LARGE_HALF_LOOP_UP - {TrackGroup::halfLoopLarge, TrackPitch::None, TrackPitch::Up25, TrackRoll::UpsideDown, TrackRoll::None, 64 }, // ELEM_RIGHT_LARGE_HALF_LOOP_UP - {TrackGroup::halfLoopLarge, TrackPitch::Down25, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, -64 }, // ELEM_RIGHT_LARGE_HALF_LOOP_DOWN - {TrackGroup::halfLoopLarge, TrackPitch::Down25, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, -64 }, // ELEM_LEFT_LARGE_HALF_LOOP_DOWN - {TrackGroup::inlineTwistUninverted, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // ELEM_LEFT_FLYER_TWIST_UP - {TrackGroup::inlineTwistUninverted, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // ELEM_RIGHT_FLYER_TWIST_UP - {TrackGroup::inlineTwistInverted, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // ELEM_LEFT_FLYER_TWIST_DOWN - {TrackGroup::inlineTwistInverted, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // ELEM_RIGHT_FLYER_TWIST_DOWN - {TrackGroup::flyingHalfLoopUninvertedUp, TrackPitch::None, TrackPitch::Up25, TrackRoll::UpsideDown, TrackRoll::None, 64 }, // ELEM_FLYER_HALF_LOOP_UP - {TrackGroup::flyingHalfLoopInvertedDown, TrackPitch::Down25, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, -64 }, // ELEM_FLYER_HALF_LOOP_DOWN - {TrackGroup::corkscrewUninverted, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // ELEM_LEFT_FLYER_CORKSCREW_UP - {TrackGroup::corkscrewUninverted, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // ELEM_RIGHT_FLYER_CORKSCREW_UP - {TrackGroup::corkscrewInverted, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, -32 }, // ELEM_LEFT_FLYER_CORKSCREW_DOWN - {TrackGroup::corkscrewInverted, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, -32 }, // ELEM_RIGHT_FLYER_CORKSCREW_DOWN - {TrackGroup::heartlineTransfer, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_HEARTLINE_TRANSFER_UP - {TrackGroup::heartlineTransfer, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_HEARTLINE_TRANSFER_DOWN - {TrackGroup::heartlineRoll, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_LEFT_HEARTLINE_ROLL - {TrackGroup::heartlineRoll, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_RIGHT_HEARTLINE_ROLL - {TrackGroup::miniGolfHole, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_MINI_GOLF_HOLE_A - {TrackGroup::miniGolfHole, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_MINI_GOLF_HOLE_B - {TrackGroup::miniGolfHole, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_MINI_GOLF_HOLE_C - {TrackGroup::miniGolfHole, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_MINI_GOLF_HOLE_D - {TrackGroup::miniGolfHole, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_MINI_GOLF_HOLE_E - { TrackGroup::quarterLoopInvertedDown, TrackPitch::Down90, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // ELEM_MULTIDIM_INVERTED_FLAT_TO_90_DEG_QUARTER_LOOP_DOWN - { TrackGroup::quarterLoop, TrackPitch::None, TrackPitch::Up90, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // ELEM_90_DEG_TO_INVERTED_FLAT_QUARTER_LOOP_UP - { TrackGroup::quarterLoop, TrackPitch::Down90, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, 0 }, // ELEM_INVERTED_FLAT_TO_90_DEG_QUARTER_LOOP_DOWN - { TrackGroup::liftHillCurved, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_LEFT_CURVED_LIFT_HILL - { TrackGroup::liftHillCurved, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_RIGHT_CURVED_LIFT_HILL - { TrackGroup::reverser, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_LEFT_REVERSER - { TrackGroup::reverser, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_RIGHT_REVERSER - { TrackGroup::slopeToFlat, TrackPitch::Down90, TrackPitch::Up90, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_AIR_THRUST_TOP_CAP - { TrackGroup::slopeToFlat, TrackPitch::Down90, TrackPitch::Down90, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_AIR_THRUST_VERTICAL_DOWN - { TrackGroup::slopeToFlat, TrackPitch::None, TrackPitch::Down90, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_AIR_THRUST_VERTICAL_DOWN_TO_LEVEL - { TrackGroup::blockBrakes, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_BLOCK_BRAKES - { TrackGroup::flat, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Left, TrackRoll::Left, 0 }, // ELEM_LEFT_BANKED_QUARTER_TURN_3_TILE_25_DEG_UP - { TrackGroup::flat, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Right, TrackRoll::Right, 0 }, // ELEM_RIGHT_BANKED_QUARTER_TURN_3_TILE_25_DEG_UP - { TrackGroup::flat, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Left, TrackRoll::Left, 0 }, // ELEM_LEFT_BANKED_QUARTER_TURN_3_TILE_25_DEG_DOWN - { TrackGroup::flat, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Right, TrackRoll::Right, 0 }, // ELEM_RIGHT_BANKED_QUARTER_TURN_3_TILE_25_DEG_DOWN - { TrackGroup::flat, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Left, TrackRoll::Left, 0 }, // ELEM_LEFT_BANKED_QUARTER_TURN_5_TILE_25_DEG_UP - { TrackGroup::flat, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Right, TrackRoll::Right, 0 }, // ELEM_RIGHT_BANKED_QUARTER_TURN_5_TILE_25_DEG_UP - { TrackGroup::flat, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Left, TrackRoll::Left, 0 }, // ELEM_LEFT_BANKED_QUARTER_TURN_5_TILE_25_DEG_DOWN - { TrackGroup::flat, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Right, TrackRoll::Right, 0 }, // ELEM_RIGHT_BANKED_QUARTER_TURN_5_TILE_25_DEG_DOWN - { TrackGroup::flat, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Left, TrackRoll::None, 0 }, // ELEM_25_DEG_UP_TO_LEFT_BANKED_25_DEG_UP - { TrackGroup::flat, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Right, TrackRoll::None, 0 }, // ELEM_25_DEG_UP_TO_RIGHT_BANKED_25_DEG_UP - { TrackGroup::flat, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::Left, 0 }, // ELEM_LEFT_BANKED_25_DEG_UP_TO_25_DEG_UP - { TrackGroup::flat, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::Right, 0 }, // ELEM_RIGHT_BANKED_25_DEG_UP_TO_25_DEG_UP - { TrackGroup::flat, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Left, TrackRoll::None, 0 }, // ELEM_25_DEG_DOWN_TO_LEFT_BANKED_25_DEG_DOWN - { TrackGroup::flat, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Right, TrackRoll::None, 0 }, // ELEM_25_DEG_DOWN_TO_RIGHT_BANKED_25_DEG_DOWN - { TrackGroup::flat, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::Left, 0 }, // ELEM_LEFT_BANKED_25_DEG_DOWN_TO_25_DEG_DOWN - { TrackGroup::flat, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::Right, 0 }, // ELEM_RIGHT_BANKED_25_DEG_DOWN_TO_25_DEG_DOWN - { TrackGroup::flat, TrackPitch::Up25, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // ELEM_LEFT_BANKED_FLAT_TO_LEFT_BANKED_25_DEG_UP - { TrackGroup::flat, TrackPitch::Up25, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // ELEM_RIGHT_BANKED_FLAT_TO_RIGHT_BANKED_25_DEG_UP - { TrackGroup::flat, TrackPitch::None, TrackPitch::Up25, TrackRoll::Left, TrackRoll::Left, 0 }, // ELEM_LEFT_BANKED_25_DEG_UP_TO_LEFT_BANKED_FLAT - { TrackGroup::flat, TrackPitch::None, TrackPitch::Up25, TrackRoll::Right, TrackRoll::Right, 0 }, // ELEM_RIGHT_BANKED_25_DEG_UP_TO_RIGHT_BANKED_FLAT - { TrackGroup::flat, TrackPitch::Down25, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // ELEM_LEFT_BANKED_FLAT_TO_LEFT_BANKED_25_DEG_DOWN - { TrackGroup::flat, TrackPitch::Down25, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // ELEM_RIGHT_BANKED_FLAT_TO_RIGHT_BANKED_25_DEG_DOWN - { TrackGroup::flat, TrackPitch::None, TrackPitch::Down25, TrackRoll::Left, TrackRoll::Left, 0 }, // ELEM_LEFT_BANKED_25_DEG_DOWN_TO_LEFT_BANKED_FLAT - { TrackGroup::flat, TrackPitch::None, TrackPitch::Down25, TrackRoll::Right, TrackRoll::Right, 0 }, // ELEM_RIGHT_BANKED_25_DEG_DOWN_TO_RIGHT_BANKED_FLAT - { TrackGroup::flat, TrackPitch::Up25, TrackPitch::None, TrackRoll::Left, TrackRoll::None, 0 }, // ELEM_FLAT_TO_LEFT_BANKED_25_DEG_UP - { TrackGroup::flat, TrackPitch::Up25, TrackPitch::None, TrackRoll::Right, TrackRoll::None, 0 }, // ELEM_FLAT_TO_RIGHT_BANKED_25_DEG_UP - { TrackGroup::flat, TrackPitch::None, TrackPitch::Up25, TrackRoll::None, TrackRoll::Left, 0 }, // ELEM_LEFT_BANKED_25_DEG_UP_TO_FLAT - { TrackGroup::flat, TrackPitch::None, TrackPitch::Up25, TrackRoll::None, TrackRoll::Right, 0 }, // ELEM_RIGHT_BANKED_25_DEG_UP_TO_FLAT - { TrackGroup::flat, TrackPitch::Down25, TrackPitch::None, TrackRoll::Left, TrackRoll::None, 0 }, // ELEM_FLAT_TO_LEFT_BANKED_25_DEG_DOWN - { TrackGroup::flat, TrackPitch::Down25, TrackPitch::None, TrackRoll::Right, TrackRoll::None, 0 }, // ELEM_FLAT_TO_RIGHT_BANKED_25_DEG_DOWN - { TrackGroup::flat, TrackPitch::None, TrackPitch::Down25, TrackRoll::None, TrackRoll::Left, 0 }, // ELEM_LEFT_BANKED_25_DEG_DOWN_TO_FLAT - { TrackGroup::flat, TrackPitch::None, TrackPitch::Down25, TrackRoll::None, TrackRoll::Right, 0 }, // ELEM_RIGHT_BANKED_25_DEG_DOWN_TO_FLAT - { TrackGroup::flat, TrackPitch::Up90, TrackPitch::Up90, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_LEFT_QUARTER_TURN_1_TILE_90_DEG_UP - { TrackGroup::flat, TrackPitch::Up90, TrackPitch::Up90, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_RIGHT_QUARTER_TURN_1_TILE_90_DEG_UP - { TrackGroup::flat, TrackPitch::Down90, TrackPitch::Down90, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_LEFT_QUARTER_TURN_1_TILE_90_DEG_DOWN - { TrackGroup::flat, TrackPitch::Down90, TrackPitch::Down90, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_RIGHT_QUARTER_TURN_1_TILE_90_DEG_DOWN - { TrackGroup::quarterLoopUninvertedUp, TrackPitch::None, TrackPitch::Up90, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // ELEM_MULTIDIM_90_DEG_UP_TO_INVERTED_FLAT_QUARTER_LOOP - { TrackGroup::quarterLoopUninvertedDown, TrackPitch::Down90, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // ELEM_MULTIDIM_FLAT_TO_90_DEG_DOWN_QUARTER_LOOP - { TrackGroup::quarterLoopInvertedUp, TrackPitch::None, TrackPitch::Up90, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // ELEM_MULTIDIM_INVERTED_FLAT_TO_90_DEG_UP_QUARTER_LOOP - { TrackGroup::rotationControlToggle,TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_ROTATION_CONTROL_TOGGLE - { TrackGroup::flatRideBase, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::FlatTrack1x4A - { TrackGroup::flatRideBase, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::FlatTrack2x2 - { TrackGroup::flatRideBase, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::FlatTrack4x4 - { TrackGroup::flatRideBase, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::FlatTrack2x4 - { TrackGroup::flatRideBase, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::FlatTrack1x5 - { TrackGroup::flatRideBase, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::FlatTrack1x1A - { TrackGroup::flatRideBase, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::FlatTrack1x4B - { TrackGroup::flatRideBase, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::FlatTrack1x1B - { TrackGroup::flatRideBase, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, -40 }, // TrackElemType::FlatTrack1x4C - { TrackGroup::flatRideBase, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::FlatTrack3x3 - { TrackGroup::corkscrewLarge, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 32 }, // TrackElemType::LeftLargeCorkscrewUp - { TrackGroup::corkscrewLarge, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 32 }, // TrackElemType::RightLargeCorkscrewUp - { TrackGroup::corkscrewLarge, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, -32 }, // TrackElemType::LeftLargeCorkscrewDown - { TrackGroup::corkscrewLarge, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, -32 }, // TrackElemType::RightLargeCorkscrewDown - { TrackGroup::halfLoopMedium, TrackPitch::None, TrackPitch::Up25, TrackRoll::UpsideDown, TrackRoll::None, 64 }, // TrackElemType::LeftMediumHalfLoopUp - { TrackGroup::halfLoopMedium, TrackPitch::None, TrackPitch::Up25, TrackRoll::UpsideDown, TrackRoll::None, 64 }, // TrackElemType::RightMediumHalfLoopUp - { TrackGroup::halfLoopMedium, TrackPitch::Down25, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, -64 }, // TrackElemType::LeftMediumHalfLoopDown - { TrackGroup::halfLoopMedium, TrackPitch::Down25, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, -64 }, // TrackElemType::RightMediumHalfLoopDown - { TrackGroup::zeroGRoll, TrackPitch::None, TrackPitch::Up25, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // TrackElemType::LeftZeroGRollUp - { TrackGroup::zeroGRoll, TrackPitch::None, TrackPitch::Up25, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // TrackElemType::RightZeroGRollUp - { TrackGroup::zeroGRoll, TrackPitch::Down25, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, 0 }, // TrackElemType::LeftZeroGRollDown - { TrackGroup::zeroGRoll, TrackPitch::Down25, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, 0 }, // TrackElemType::RightZeroGRollDown - { TrackGroup::zeroGRollLarge, TrackPitch::None, TrackPitch::Up60, TrackRoll::UpsideDown, TrackRoll::None, 64 }, // TrackElemType::LeftLargeZeroGRollUp - { TrackGroup::zeroGRollLarge, TrackPitch::None, TrackPitch::Up60, TrackRoll::UpsideDown, TrackRoll::None, 64 }, // TrackElemType::RightLargeZeroGRollUp - { TrackGroup::zeroGRollLarge, TrackPitch::Down60, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, -64 }, // TrackElemType::LeftLargeZeroGRollDown - { TrackGroup::zeroGRollLarge, TrackPitch::Down60, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, -64 }, // TrackElemType::RightLargeZeroGRollDown - { TrackGroup::flyingLargeHalfLoopUninvertedUp, TrackPitch::None, TrackPitch::Up25, TrackRoll::UpsideDown, TrackRoll::None, 64 }, // TrackElemType::LeftFlyerLargeHalfLoopUninvertedUp - { TrackGroup::flyingLargeHalfLoopUninvertedUp, TrackPitch::None, TrackPitch::Up25, TrackRoll::UpsideDown, TrackRoll::None, 64 }, // TrackElemType::RightFlyerLargeHalfLoopUninvertedUp - { TrackGroup::flyingLargeHalfLoopInvertedDown, TrackPitch::Down25, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, -64 }, // TrackElemType::LeftFlyerLargeHalfLoopInvertedDown - { TrackGroup::flyingLargeHalfLoopInvertedDown, TrackPitch::Down25, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, -64 }, // TrackElemType::RightFlyerLargeHalfLoopInvertedDown - { TrackGroup::flyingLargeHalfLoopInvertedUp, TrackPitch::None, TrackPitch::Up25, TrackRoll::UpsideDown, TrackRoll::None, 64 }, // TrackElemType::LeftFlyerLargeHalfLoopInvertedUp - { TrackGroup::flyingLargeHalfLoopInvertedUp, TrackPitch::None, TrackPitch::Up25, TrackRoll::UpsideDown, TrackRoll::None, 64 }, // TrackElemType::RightFlyerLargeHalfLoopInvertedUp - { TrackGroup::flyingLargeHalfLoopUninvertedDown, TrackPitch::Down25, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, -64 }, // TrackElemType::LeftFlyerLargeHalfLoopUninvertedDown - { TrackGroup::flyingLargeHalfLoopUninvertedDown, TrackPitch::Down25, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, -64 }, // TrackElemType::RightFlyerLargeHalfLoopUninvertedDown - { TrackGroup::flyingHalfLoopInvertedUp, TrackPitch::None, TrackPitch::Up25, TrackRoll::UpsideDown, TrackRoll::None, 64 }, // TrackElemType::FlyerHalfLoopInvertedUp - { TrackGroup::flyingHalfLoopUninvertedDown, TrackPitch::Down25, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, -64 }, // TrackElemType::FlyerHalfLoopUninvertedDown - { TrackGroup::slopeCurveLarge, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 16 }, // TrackElemType::LeftEighthToDiagUp25 - { TrackGroup::slopeCurveLarge, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 16 }, // TrackElemType::RightEighthToDiagUp25 - { TrackGroup::slopeCurveLarge, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, -16 }, // TrackElemType::LeftEighthToDiagDown25 - { TrackGroup::slopeCurveLarge, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, -16 }, // TrackElemType::RightEighthToDiagDown25 - { TrackGroup::slopeCurveLarge, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 16 }, // TrackElemType::LeftEighthToOrthogonalUp25 - { TrackGroup::slopeCurveLarge, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 16 }, // TrackElemType::RightEighthToOrthogonalUp25 - { TrackGroup::slopeCurveLarge, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, -16 }, // TrackElemType::LeftEighthToOrthogonalDown25 - { TrackGroup::slopeCurveLarge, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, -16 }, // TrackElemType::RightEighthToOrthogonalDown25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Left, TrackRoll::None, 0 }, // TrackElemType::DiagUp25ToLeftBankedUp25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Right, TrackRoll::None, 0 }, // TrackElemType::DiagUp25ToRightBankedUp25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::Left, 0 }, // TrackElemType::DiagLeftBankedUp25ToUp25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::Right, 0 }, // TrackElemType::DiagRightBankedUp25ToUp25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Left, TrackRoll::None, 0 }, // TrackElemType::DiagDown25ToLeftBankedDown25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Right, TrackRoll::None, 0 }, // TrackElemType::DiagDown25ToRightBankedDown25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::Left, 0 }, // TrackElemType::DiagLeftBankedDown25ToDown25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::Right, 0 }, // TrackElemType::DiagRightBankedDown25ToDown25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::DiagLeftBankedFlatToLeftBankedUp25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::DiagRightBankedFlatToRightBankedUp25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::None, TrackPitch::Up25, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::DiagLeftBankedUp25ToLeftBankedFlat - { TrackGroup::slopeCurveLargeBanked, TrackPitch::None, TrackPitch::Up25, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::DiagRightBankedUp25ToRightBankedFlat - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::DiagLeftBankedFlatToLeftBankedDown25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::DiagRightBankedFlatToRightBankedDown25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::None, TrackPitch::Down25, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::DiagLeftBankedDown25ToLeftBankedFlat - { TrackGroup::slopeCurveLargeBanked, TrackPitch::None, TrackPitch::Down25, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::DiagRightBankedDown25ToRightBankedFlat - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::None, TrackRoll::Left, TrackRoll::None, 0 }, // TrackElemType::DiagFlatToLeftBankedUp25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::None, TrackRoll::Right, TrackRoll::None, 0 }, // TrackElemType::DiagFlatToRightBankedUp25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::None, TrackPitch::Up25, TrackRoll::None, TrackRoll::Left, 0 }, // TrackElemType::DiagLeftBankedUp25ToFlat - { TrackGroup::slopeCurveLargeBanked, TrackPitch::None, TrackPitch::Up25, TrackRoll::None, TrackRoll::Right, 0 }, // TrackElemType::DiagRightBankedUp25ToFlat - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::None, TrackRoll::Left, TrackRoll::None, 0 }, // TrackElemType::DiagFlatToLeftBankedDown25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::None, TrackRoll::Right, TrackRoll::None, 0 }, // TrackElemType::DiagFlatToRightBankedDown25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::None, TrackPitch::Down25, TrackRoll::None, TrackRoll::Left, 0 }, // TrackElemType::DiagLeftBankedDown25ToFlat - { TrackGroup::slopeCurveLargeBanked, TrackPitch::None, TrackPitch::Down25, TrackRoll::None, TrackRoll::Right, 0 }, // TrackElemType::DiagRightBankedDown25ToFlat - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::Up25LeftBanked - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::Up25RightBanked - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::Down25LeftBanked - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::Down25RightBanked - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Left, TrackRoll::Left, 16 }, // TrackElemType::LeftEighthBankToDiagUp25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Right, TrackRoll::Right, 16 }, // TrackElemType::RightEighthBankToDiagUp25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Left, TrackRoll::Left, -16 }, // TrackElemType::LeftEighthBankToDiagDown25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Right, TrackRoll::Right, -16 }, // TrackElemType::RightEighthBankToDiagDown25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Left, TrackRoll::Left, 16 }, // TrackElemType::LeftEighthBankToOrthogonalUp25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Right, TrackRoll::Right, 16 }, // TrackElemType::RightEighthBankToOrthogonalUp25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Left, TrackRoll::Left, -16 }, // TrackElemType::LeftEighthBankToOrthogonalDown25 - { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Right, TrackRoll::Right, -16 }, // TrackElemType::RightEighthBankToOrthogonalDown25 - { TrackGroup::diagBrakes, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::DiagBrakes - { TrackGroup::diagBlockBrakes, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::DiagBlockBrakes - }; - static_assert(std::size(TrackDefinitions) == TrackElemType::Count); + static constexpr TrackDefinition TrackDefinitions[] = + { + // TYPE VANGLE END VANGLE START BANK END BANK START PREVIEW Z OFFSET + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_FLAT + { TrackGroup::stationEnd, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_END_STATION + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_BEGIN_STATION + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_MIDDLE_STATION + { TrackGroup::flat, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_25_DEG_UP + { TrackGroup::flat, TrackPitch::Up60, TrackPitch::Up60, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_60_DEG_UP + { TrackGroup::flat, TrackPitch::Up25, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_FLAT_TO_25_DEG_UP + { TrackGroup::flat, TrackPitch::Up60, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_25_DEG_UP_TO_60_DEG_UP + { TrackGroup::flat, TrackPitch::Up25, TrackPitch::Up60, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_60_DEG_UP_TO_25_DEG_UP + { TrackGroup::flat, TrackPitch::None, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_25_DEG_UP_TO_FLAT + { TrackGroup::flat, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_25_DEG_DOWN + { TrackGroup::flat, TrackPitch::Down60, TrackPitch::Down60, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_60_DEG_DOWN + { TrackGroup::flat, TrackPitch::Down25, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_FLAT_TO_25_DEG_DOWN + { TrackGroup::flat, TrackPitch::Down60, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_25_DEG_DOWN_TO_60_DEG_DOWN + { TrackGroup::flat, TrackPitch::Down25, TrackPitch::Down60, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_60_DEG_DOWN_TO_25_DEG_DOWN + { TrackGroup::flat, TrackPitch::None, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_25_DEG_DOWN_TO_FLAT + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_LEFT_QUARTER_TURN_5_TILES + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_RIGHT_QUARTER_TURN_5_TILES + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::Left, TrackRoll::None, 0 }, // ELEM_FLAT_TO_LEFT_BANK + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::Right, TrackRoll::None, 0 }, // ELEM_FLAT_TO_RIGHT_BANK + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::Left, 0 }, // ELEM_LEFT_BANK_TO_FLAT + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::Right, 0 }, // ELEM_RIGHT_BANK_TO_FLAT + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // ELEM_BANKED_LEFT_QUARTER_TURN_5_TILES + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // ELEM_BANKED_RIGHT_QUARTER_TURN_5_TILES + { TrackGroup::flat, TrackPitch::Up25, TrackPitch::None, TrackRoll::None, TrackRoll::Left, 0 }, // ELEM_LEFT_BANK_TO_25_DEG_UP + { TrackGroup::flat, TrackPitch::Up25, TrackPitch::None, TrackRoll::None, TrackRoll::Right, 0 }, // ELEM_RIGHT_BANK_TO_25_DEG_UP + { TrackGroup::flat, TrackPitch::None, TrackPitch::Up25, TrackRoll::Left, TrackRoll::None, 0 }, // ELEM_25_DEG_UP_TO_LEFT_BANK + { TrackGroup::flat, TrackPitch::None, TrackPitch::Up25, TrackRoll::Right, TrackRoll::None, 0 }, // ELEM_25_DEG_UP_TO_RIGHT_BANK + { TrackGroup::flat, TrackPitch::Down25, TrackPitch::None, TrackRoll::None, TrackRoll::Left, 0 }, // ELEM_LEFT_BANK_TO_25_DEG_DOWN + { TrackGroup::flat, TrackPitch::Down25, TrackPitch::None, TrackRoll::None, TrackRoll::Right, 0 }, // ELEM_RIGHT_BANK_TO_25_DEG_DOWN + { TrackGroup::flat, TrackPitch::None, TrackPitch::Down25, TrackRoll::Left, TrackRoll::None, 0 }, // ELEM_25_DEG_DOWN_TO_LEFT_BANK + { TrackGroup::flat, TrackPitch::None, TrackPitch::Down25, TrackRoll::Right, TrackRoll::None, 0 }, // ELEM_25_DEG_DOWN_TO_RIGHT_BANK + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // ELEM_LEFT_BANK + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // ELEM_RIGHT_BANK + { TrackGroup::flat, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_LEFT_QUARTER_TURN_5_TILES_25_DEG_UP + { TrackGroup::flat, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_RIGHT_QUARTER_TURN_5_TILES_25_DEG_UP + { TrackGroup::flat, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_LEFT_QUARTER_TURN_5_TILES_25_DEG_DOWN + { TrackGroup::flat, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_RIGHT_QUARTER_TURN_5_TILES_25_DEG_DOWN + { TrackGroup::sBend, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_S_BEND_LEFT + { TrackGroup::sBend, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_S_BEND_RIGHT + { TrackGroup::verticalLoop, TrackPitch::Down25, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, -48 }, // ELEM_LEFT_VERTICAL_LOOP + { TrackGroup::verticalLoop, TrackPitch::Down25, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, -48 }, // ELEM_RIGHT_VERTICAL_LOOP + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_LEFT_QUARTER_TURN_3_TILES + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_RIGHT_QUARTER_TURN_3_TILES + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // ELEM_LEFT_QUARTER_TURN_3_TILES_BANK + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // ELEM_RIGHT_QUARTER_TURN_3_TILES_BANK + { TrackGroup::flat, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_LEFT_QUARTER_TURN_3_TILES_25_DEG_UP + { TrackGroup::flat, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_RIGHT_QUARTER_TURN_3_TILES_25_DEG_UP + { TrackGroup::flat, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_LEFT_QUARTER_TURN_3_TILES_25_DEG_DOWN + { TrackGroup::flat, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_RIGHT_QUARTER_TURN_3_TILES_25_DEG_DOWN + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_LEFT_QUARTER_TURN_1_TILE + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_RIGHT_QUARTER_TURN_1_TILE + { TrackGroup::twist, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // ELEM_LEFT_TWIST_DOWN_TO_UP + { TrackGroup::twist, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // ELEM_RIGHT_TWIST_DOWN_TO_UP + { TrackGroup::twist, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, 0 }, // ELEM_LEFT_TWIST_UP_TO_DOWN + { TrackGroup::twist, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, 0 }, // ELEM_RIGHT_TWIST_UP_TO_DOWN + { TrackGroup::halfLoop, TrackPitch::None, TrackPitch::Up25, TrackRoll::UpsideDown, TrackRoll::None, 64 }, // ELEM_HALF_LOOP_UP + { TrackGroup::halfLoop, TrackPitch::Down25, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, -64 }, // ELEM_HALF_LOOP_DOWN + { TrackGroup::corkscrew, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // ELEM_LEFT_CORKSCREW_UP + { TrackGroup::corkscrew, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // ELEM_RIGHT_CORKSCREW_UP + { TrackGroup::corkscrew, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, -32 }, // ELEM_LEFT_CORKSCREW_DOWN + { TrackGroup::corkscrew, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, -32 }, // ELEM_RIGHT_CORKSCREW_DOWN + { TrackGroup::flat, TrackPitch::Up60, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_FLAT_TO_60_DEG_UP + { TrackGroup::flat, TrackPitch::None, TrackPitch::Up60, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_60_DEG_UP_TO_FLAT + { TrackGroup::flat, TrackPitch::Down60, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_FLAT_TO_60_DEG_DOWN + { TrackGroup::flat, TrackPitch::None, TrackPitch::Down60, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_60_DEG_DOWN_TO_FLAT + { TrackGroup::tower, TrackPitch::Tower, TrackPitch::Tower, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_TOWER_BASE + { TrackGroup::tower, TrackPitch::Tower, TrackPitch::Tower, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_TOWER_SECTION + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_FLAT_COVERED + { TrackGroup::flat, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_25_DEG_UP_COVERED + { TrackGroup::flat, TrackPitch::Up60, TrackPitch::Up60, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_60_DEG_UP_COVERED + { TrackGroup::flat, TrackPitch::Up25, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_FLAT_TO_25_DEG_UP_COVERED + { TrackGroup::flat, TrackPitch::Up60, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_25_DEG_UP_TO_60_DEG_UP_COVERED + { TrackGroup::flat, TrackPitch::Up25, TrackPitch::Up60, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_60_DEG_UP_TO_25_DEG_UP_COVERED + { TrackGroup::flat, TrackPitch::None, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_25_DEG_UP_TO_FLAT_COVERED + { TrackGroup::flat, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_25_DEG_DOWN_COVERED + { TrackGroup::flat, TrackPitch::Down60, TrackPitch::Down60, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_60_DEG_DOWN_COVERED + { TrackGroup::flat, TrackPitch::Down25, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_FLAT_TO_25_DEG_DOWN_COVERED + { TrackGroup::flat, TrackPitch::Down60, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_25_DEG_DOWN_TO_60_DEG_DOWN_COVERED + { TrackGroup::flat, TrackPitch::Down25, TrackPitch::Down60, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_60_DEG_DOWN_TO_25_DEG_DOWN_COVERED + { TrackGroup::flat, TrackPitch::None, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_25_DEG_DOWN_TO_FLAT_COVERED + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_LEFT_QUARTER_TURN_5_TILES_COVERED + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_RIGHT_QUARTER_TURN_5_TILES_COVERED + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_S_BEND_LEFT_COVERED + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_S_BEND_RIGHT_COVERED + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_LEFT_QUARTER_TURN_3_TILES_COVERED + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_RIGHT_QUARTER_TURN_3_TILES_COVERED + { TrackGroup::helixUpBankedHalf, TrackPitch::None, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // ELEM_LEFT_HALF_BANKED_HELIX_UP_SMALL + { TrackGroup::helixUpBankedHalf, TrackPitch::None, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // ELEM_RIGHT_HALF_BANKED_HELIX_UP_SMALL + { TrackGroup::helixDownBankedHalf, TrackPitch::None, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // ELEM_LEFT_HALF_BANKED_HELIX_DOWN_SMALL + { TrackGroup::helixDownBankedHalf, TrackPitch::None, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // ELEM_RIGHT_HALF_BANKED_HELIX_DOWN_SMALL + { TrackGroup::helixUpBankedHalf, TrackPitch::None, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // ELEM_LEFT_HALF_BANKED_HELIX_UP_LARGE + { TrackGroup::helixUpBankedHalf, TrackPitch::None, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // ELEM_RIGHT_HALF_BANKED_HELIX_UP_LARGE + { TrackGroup::helixDownBankedHalf, TrackPitch::None, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // ELEM_LEFT_HALF_BANKED_HELIX_DOWN_LARGE + { TrackGroup::helixDownBankedHalf, TrackPitch::None, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // ELEM_RIGHT_HALF_BANKED_HELIX_DOWN_LARGE + { TrackGroup::flat, TrackPitch::Up60, TrackPitch::Up60, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_LEFT_QUARTER_TURN_1_TILE_60_DEG_UP + { TrackGroup::flat, TrackPitch::Up60, TrackPitch::Up60, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_RIGHT_QUARTER_TURN_1_TILE_60_DEG_UP + { TrackGroup::flat, TrackPitch::Down60, TrackPitch::Down60, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_LEFT_QUARTER_TURN_1_TILE_60_DEG_DOWN + { TrackGroup::flat, TrackPitch::Down60, TrackPitch::Down60, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_RIGHT_QUARTER_TURN_1_TILE_60_DEG_DOWN + { TrackGroup::brakes, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_BRAKES + { TrackGroup::booster, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_BOOSTER + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::Maze + { TrackGroup::helixUpBankedQuarter, TrackPitch::None, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // ELEM_LEFT_QUARTER_BANKED_HELIX_LARGE_UP + { TrackGroup::helixUpBankedQuarter, TrackPitch::None, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // ELEM_RIGHT_QUARTER_BANKED_HELIX_LARGE_UP + { TrackGroup::helixDownBankedQuarter, TrackPitch::None, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // ELEM_LEFT_QUARTER_BANKED_HELIX_LARGE_DOWN + { TrackGroup::helixDownBankedQuarter, TrackPitch::None, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // ELEM_RIGHT_QUARTER_BANKED_HELIX_LARGE_DOWN + { TrackGroup::helixUpUnbankedQuarter, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_LEFT_QUARTER_HELIX_LARGE_UP + { TrackGroup::helixUpUnbankedQuarter, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_RIGHT_QUARTER_HELIX_LARGE_UP + { TrackGroup::helixDownUnbankedQuarter, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_LEFT_QUARTER_HELIX_LARGE_DOWN + { TrackGroup::helixDownUnbankedQuarter, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_RIGHT_QUARTER_HELIX_LARGE_DOWN + { TrackGroup::flat, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Left, TrackRoll::Left, 0 }, // ELEM_25_DEG_UP_LEFT_BANKED + { TrackGroup::flat, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Right, TrackRoll::Right, 0 }, // ELEM_25_DEG_UP_RIGHT_BANKED + { TrackGroup::waterfall, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_WATERFALL + { TrackGroup::rapids, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_RAPIDS + { TrackGroup::onridePhoto, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_ON_RIDE_PHOTO + { TrackGroup::flat, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Left, TrackRoll::Left, 0 }, // ELEM_25_DEG_DOWN_LEFT_BANKED + { TrackGroup::flat, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Right, TrackRoll::Right, 0 }, // ELEM_25_DEG_DOWN_RIGHT_BANKED + { TrackGroup::waterSplash, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_WATER_SPLASH + { TrackGroup::flat, TrackPitch::Up60, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_FLAT_TO_60_DEG_UP_LONG_BASE + { TrackGroup::flat, TrackPitch::None, TrackPitch::Up60, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_60_DEG_UP_TO_FLAT_LONG_BASE + { TrackGroup::whirlpool, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_WHIRLPOOL + { TrackGroup::flat, TrackPitch::None, TrackPitch::Down60, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_FLAT_TO_60_DEG_DOWN_LONG_BASE + { TrackGroup::flat, TrackPitch::Down60, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_60_DEG_UP_TO_FLAT_LONG_BASE_122 + { TrackGroup::liftHillCable, TrackPitch::Down60, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_CABLE_LIFT_HILL + { TrackGroup::reverseFreefall, TrackPitch::ReverseFreefall, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_REVERSE_FREEFALL_SLOPE + { TrackGroup::reverseFreefall, TrackPitch::ReverseFreefall, TrackPitch::ReverseFreefall, TrackRoll::None,TrackRoll::None, 0 }, // ELEM_REVERSE_FREEFALL_VERTICAL + { TrackGroup::flat, TrackPitch::Up90, TrackPitch::Up90, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_90_DEG_UP + { TrackGroup::flat, TrackPitch::Down90, TrackPitch::Down90, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_90_DEG_DOWN + { TrackGroup::flat, TrackPitch::Up90, TrackPitch::Up60, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_60_DEG_UP_TO_90_DEG_UP + { TrackGroup::flat, TrackPitch::Down60, TrackPitch::Down90, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_90_DEG_DOWN_TO_60_DEG_DOWN + { TrackGroup::flat, TrackPitch::Up60, TrackPitch::Up90, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_90_DEG_UP_TO_60_DEG_UP + { TrackGroup::flat, TrackPitch::Down90, TrackPitch::Down60, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_60_DEG_DOWN_TO_90_DEG_DOWN + { TrackGroup::brakeForDrop, TrackPitch::Down60, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_BRAKE_FOR_DROP + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_LEFT_EIGHTH_TO_DIAG + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_RIGHT_EIGHTH_TO_DIAG + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_LEFT_EIGHTH_TO_ORTHOGONAL + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_RIGHT_EIGHTH_TO_ORTHOGONAL + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // ELEM_LEFT_EIGHTH_BANK_TO_DIAG + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // ELEM_RIGHT_EIGHTH_BANK_TO_DIAG + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // ELEM_LEFT_EIGHTH_BANK_TO_ORTHOGONAL + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // ELEM_RIGHT_EIGHTH_BANK_TO_ORTHOGONAL + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_DIAG_FLAT + { TrackGroup::flat, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_DIAG_25_DEG_UP + { TrackGroup::flat, TrackPitch::Up60, TrackPitch::Up60, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_DIAG_60_DEG_UP + { TrackGroup::flat, TrackPitch::Up25, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_DIAG_FLAT_TO_25_DEG_UP + { TrackGroup::flat, TrackPitch::Up60, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_DIAG_25_DEG_UP_TO_60_DEG_UP + { TrackGroup::flat, TrackPitch::Up25, TrackPitch::Up60, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_DIAG_60_DEG_UP_TO_25_DEG_UP + { TrackGroup::flat, TrackPitch::None, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_DIAG_25_DEG_UP_TO_FLAT + { TrackGroup::flat, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_DIAG_25_DEG_DOWN + { TrackGroup::flat, TrackPitch::Down60, TrackPitch::Down60, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_DIAG_60_DEG_DOWN + { TrackGroup::flat, TrackPitch::Down25, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_DIAG_FLAT_TO_25_DEG_DOWN + { TrackGroup::flat, TrackPitch::Down60, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_DIAG_25_DEG_DOWN_TO_60_DEG_DOWN + { TrackGroup::flat, TrackPitch::Down25, TrackPitch::Down60, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_DIAG_60_DEG_DOWN_TO_25_DEG_DOWN + { TrackGroup::flat, TrackPitch::None, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_DIAG_25_DEG_DOWN_TO_FLAT + { TrackGroup::flat, TrackPitch::Up60, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_DIAG_FLAT_TO_60_DEG_UP + { TrackGroup::flat, TrackPitch::None, TrackPitch::Up60, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_DIAG_60_DEG_UP_TO_FLAT + { TrackGroup::flat, TrackPitch::Down60, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_DIAG_FLAT_TO_60_DEG_DOWN + { TrackGroup::flat, TrackPitch::None, TrackPitch::Down60, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_DIAG_60_DEG_DOWN_TO_FLAT + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::Left, TrackRoll::None, 0 }, // ELEM_DIAG_FLAT_TO_LEFT_BANK + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::Right, TrackRoll::None, 0 }, // ELEM_DIAG_FLAT_TO_RIGHT_BANK + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::Left, 0 }, // ELEM_DIAG_LEFT_BANK_TO_FLAT + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::Right, 0 }, // ELEM_DIAG_RIGHT_BANK_TO_FLAT + { TrackGroup::flat, TrackPitch::Up25, TrackPitch::None, TrackRoll::None, TrackRoll::Left, 0 }, // ELEM_DIAG_LEFT_BANK_TO_25_DEG_UP + { TrackGroup::flat, TrackPitch::Up25, TrackPitch::None, TrackRoll::None, TrackRoll::Right, 0 }, // ELEM_DIAG_RIGHT_BANK_TO_25_DEG_UP + { TrackGroup::flat, TrackPitch::None, TrackPitch::Up25, TrackRoll::Left, TrackRoll::None, 0 }, // ELEM_DIAG_25_DEG_UP_TO_LEFT_BANK + { TrackGroup::flat, TrackPitch::None, TrackPitch::Up25, TrackRoll::Right, TrackRoll::None, 0 }, // ELEM_DIAG_25_DEG_UP_TO_RIGHT_BANK + { TrackGroup::flat, TrackPitch::Down25, TrackPitch::None, TrackRoll::None, TrackRoll::Left, 0 }, // ELEM_DIAG_LEFT_BANK_TO_25_DEG_DOWN + { TrackGroup::flat, TrackPitch::Down25, TrackPitch::None, TrackRoll::None, TrackRoll::Right, 0 }, // ELEM_DIAG_RIGHT_BANK_TO_25_DEG_DOWN + { TrackGroup::flat, TrackPitch::None, TrackPitch::Down25, TrackRoll::Left, TrackRoll::None, 0 }, // ELEM_DIAG_25_DEG_DOWN_TO_LEFT_BANK + { TrackGroup::flat, TrackPitch::None, TrackPitch::Down25, TrackRoll::Right, TrackRoll::None, 0 }, // ELEM_DIAG_25_DEG_DOWN_TO_RIGHT_BANK + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // ELEM_DIAG_LEFT_BANK + { TrackGroup::flat, TrackPitch::None, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // ELEM_DIAG_RIGHT_BANK + { TrackGroup::logFlumeReverser, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_LOG_FLUME_REVERSER + { TrackGroup::spinningTunnel, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_SPINNING_TUNNEL + { TrackGroup::barrelRoll, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // ELEM_LEFT_BARREL_ROLL_UP_TO_DOWN + { TrackGroup::barrelRoll, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // ELEM_RIGHT_BARREL_ROLL_UP_TO_DOWN + { TrackGroup::barrelRoll, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, 0 }, // ELEM_LEFT_BARREL_ROLL_DOWN_TO_UP + { TrackGroup::barrelRoll, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, 0 }, // ELEM_RIGHT_BARREL_ROLL_DOWN_TO_UP + { TrackGroup::flat, TrackPitch::Up25, TrackPitch::None, TrackRoll::None, TrackRoll::Left, 0 }, // ELEM_LEFT_BANK_TO_LEFT_QUARTER_TURN_3_TILES_25_DEG_UP + { TrackGroup::flat, TrackPitch::Up25, TrackPitch::None, TrackRoll::None, TrackRoll::Right, 0 }, // ELEM_RIGHT_BANK_TO_RIGHT_QUARTER_TURN_3_TILES_25_DEG_UP + { TrackGroup::flat, TrackPitch::None, TrackPitch::Down25, TrackRoll::Left, TrackRoll::None, 0 }, // ELEM_LEFT_QUARTER_TURN_3_TILES_25_DEG_DOWN_TO_LEFT_BANK + { TrackGroup::flat, TrackPitch::None, TrackPitch::Down25, TrackRoll::Right, TrackRoll::None, 0 }, // ELEM_RIGHT_QUARTER_TURN_3_TILES_25_DEG_DOWN_TO_RIGHT_BANK + { TrackGroup::poweredLift, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_POWERED_LIFT + {TrackGroup::halfLoopLarge, TrackPitch::None, TrackPitch::Up25, TrackRoll::UpsideDown, TrackRoll::None, 64 }, // ELEM_LEFT_LARGE_HALF_LOOP_UP + {TrackGroup::halfLoopLarge, TrackPitch::None, TrackPitch::Up25, TrackRoll::UpsideDown, TrackRoll::None, 64 }, // ELEM_RIGHT_LARGE_HALF_LOOP_UP + {TrackGroup::halfLoopLarge, TrackPitch::Down25, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, -64 }, // ELEM_RIGHT_LARGE_HALF_LOOP_DOWN + {TrackGroup::halfLoopLarge, TrackPitch::Down25, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, -64 }, // ELEM_LEFT_LARGE_HALF_LOOP_DOWN + {TrackGroup::inlineTwistUninverted, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // ELEM_LEFT_FLYER_TWIST_UP + {TrackGroup::inlineTwistUninverted, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // ELEM_RIGHT_FLYER_TWIST_UP + {TrackGroup::inlineTwistInverted, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // ELEM_LEFT_FLYER_TWIST_DOWN + {TrackGroup::inlineTwistInverted, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // ELEM_RIGHT_FLYER_TWIST_DOWN + {TrackGroup::flyingHalfLoopUninvertedUp, TrackPitch::None, TrackPitch::Up25, TrackRoll::UpsideDown, TrackRoll::None, 64 }, // ELEM_FLYER_HALF_LOOP_UP + {TrackGroup::flyingHalfLoopInvertedDown, TrackPitch::Down25, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, -64 }, // ELEM_FLYER_HALF_LOOP_DOWN + {TrackGroup::corkscrewUninverted, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // ELEM_LEFT_FLYER_CORKSCREW_UP + {TrackGroup::corkscrewUninverted, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // ELEM_RIGHT_FLYER_CORKSCREW_UP + {TrackGroup::corkscrewInverted, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, -32 }, // ELEM_LEFT_FLYER_CORKSCREW_DOWN + {TrackGroup::corkscrewInverted, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, -32 }, // ELEM_RIGHT_FLYER_CORKSCREW_DOWN + {TrackGroup::heartlineTransfer, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_HEARTLINE_TRANSFER_UP + {TrackGroup::heartlineTransfer, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_HEARTLINE_TRANSFER_DOWN + {TrackGroup::heartlineRoll, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_LEFT_HEARTLINE_ROLL + {TrackGroup::heartlineRoll, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_RIGHT_HEARTLINE_ROLL + {TrackGroup::miniGolfHole, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_MINI_GOLF_HOLE_A + {TrackGroup::miniGolfHole, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_MINI_GOLF_HOLE_B + {TrackGroup::miniGolfHole, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_MINI_GOLF_HOLE_C + {TrackGroup::miniGolfHole, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_MINI_GOLF_HOLE_D + {TrackGroup::miniGolfHole, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_MINI_GOLF_HOLE_E + { TrackGroup::quarterLoopInvertedDown, TrackPitch::Down90, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // ELEM_MULTIDIM_INVERTED_FLAT_TO_90_DEG_QUARTER_LOOP_DOWN + { TrackGroup::quarterLoop, TrackPitch::None, TrackPitch::Up90, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // ELEM_90_DEG_TO_INVERTED_FLAT_QUARTER_LOOP_UP + { TrackGroup::quarterLoop, TrackPitch::Down90, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, 0 }, // ELEM_INVERTED_FLAT_TO_90_DEG_QUARTER_LOOP_DOWN + { TrackGroup::liftHillCurved, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_LEFT_CURVED_LIFT_HILL + { TrackGroup::liftHillCurved, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_RIGHT_CURVED_LIFT_HILL + { TrackGroup::reverser, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_LEFT_REVERSER + { TrackGroup::reverser, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_RIGHT_REVERSER + { TrackGroup::slopeToFlat, TrackPitch::Down90, TrackPitch::Up90, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_AIR_THRUST_TOP_CAP + { TrackGroup::slopeToFlat, TrackPitch::Down90, TrackPitch::Down90, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_AIR_THRUST_VERTICAL_DOWN + { TrackGroup::slopeToFlat, TrackPitch::None, TrackPitch::Down90, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_AIR_THRUST_VERTICAL_DOWN_TO_LEVEL + { TrackGroup::blockBrakes, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_BLOCK_BRAKES + { TrackGroup::flat, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Left, TrackRoll::Left, 0 }, // ELEM_LEFT_BANKED_QUARTER_TURN_3_TILE_25_DEG_UP + { TrackGroup::flat, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Right, TrackRoll::Right, 0 }, // ELEM_RIGHT_BANKED_QUARTER_TURN_3_TILE_25_DEG_UP + { TrackGroup::flat, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Left, TrackRoll::Left, 0 }, // ELEM_LEFT_BANKED_QUARTER_TURN_3_TILE_25_DEG_DOWN + { TrackGroup::flat, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Right, TrackRoll::Right, 0 }, // ELEM_RIGHT_BANKED_QUARTER_TURN_3_TILE_25_DEG_DOWN + { TrackGroup::flat, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Left, TrackRoll::Left, 0 }, // ELEM_LEFT_BANKED_QUARTER_TURN_5_TILE_25_DEG_UP + { TrackGroup::flat, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Right, TrackRoll::Right, 0 }, // ELEM_RIGHT_BANKED_QUARTER_TURN_5_TILE_25_DEG_UP + { TrackGroup::flat, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Left, TrackRoll::Left, 0 }, // ELEM_LEFT_BANKED_QUARTER_TURN_5_TILE_25_DEG_DOWN + { TrackGroup::flat, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Right, TrackRoll::Right, 0 }, // ELEM_RIGHT_BANKED_QUARTER_TURN_5_TILE_25_DEG_DOWN + { TrackGroup::flat, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Left, TrackRoll::None, 0 }, // ELEM_25_DEG_UP_TO_LEFT_BANKED_25_DEG_UP + { TrackGroup::flat, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Right, TrackRoll::None, 0 }, // ELEM_25_DEG_UP_TO_RIGHT_BANKED_25_DEG_UP + { TrackGroup::flat, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::Left, 0 }, // ELEM_LEFT_BANKED_25_DEG_UP_TO_25_DEG_UP + { TrackGroup::flat, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::Right, 0 }, // ELEM_RIGHT_BANKED_25_DEG_UP_TO_25_DEG_UP + { TrackGroup::flat, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Left, TrackRoll::None, 0 }, // ELEM_25_DEG_DOWN_TO_LEFT_BANKED_25_DEG_DOWN + { TrackGroup::flat, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Right, TrackRoll::None, 0 }, // ELEM_25_DEG_DOWN_TO_RIGHT_BANKED_25_DEG_DOWN + { TrackGroup::flat, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::Left, 0 }, // ELEM_LEFT_BANKED_25_DEG_DOWN_TO_25_DEG_DOWN + { TrackGroup::flat, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::Right, 0 }, // ELEM_RIGHT_BANKED_25_DEG_DOWN_TO_25_DEG_DOWN + { TrackGroup::flat, TrackPitch::Up25, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // ELEM_LEFT_BANKED_FLAT_TO_LEFT_BANKED_25_DEG_UP + { TrackGroup::flat, TrackPitch::Up25, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // ELEM_RIGHT_BANKED_FLAT_TO_RIGHT_BANKED_25_DEG_UP + { TrackGroup::flat, TrackPitch::None, TrackPitch::Up25, TrackRoll::Left, TrackRoll::Left, 0 }, // ELEM_LEFT_BANKED_25_DEG_UP_TO_LEFT_BANKED_FLAT + { TrackGroup::flat, TrackPitch::None, TrackPitch::Up25, TrackRoll::Right, TrackRoll::Right, 0 }, // ELEM_RIGHT_BANKED_25_DEG_UP_TO_RIGHT_BANKED_FLAT + { TrackGroup::flat, TrackPitch::Down25, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // ELEM_LEFT_BANKED_FLAT_TO_LEFT_BANKED_25_DEG_DOWN + { TrackGroup::flat, TrackPitch::Down25, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // ELEM_RIGHT_BANKED_FLAT_TO_RIGHT_BANKED_25_DEG_DOWN + { TrackGroup::flat, TrackPitch::None, TrackPitch::Down25, TrackRoll::Left, TrackRoll::Left, 0 }, // ELEM_LEFT_BANKED_25_DEG_DOWN_TO_LEFT_BANKED_FLAT + { TrackGroup::flat, TrackPitch::None, TrackPitch::Down25, TrackRoll::Right, TrackRoll::Right, 0 }, // ELEM_RIGHT_BANKED_25_DEG_DOWN_TO_RIGHT_BANKED_FLAT + { TrackGroup::flat, TrackPitch::Up25, TrackPitch::None, TrackRoll::Left, TrackRoll::None, 0 }, // ELEM_FLAT_TO_LEFT_BANKED_25_DEG_UP + { TrackGroup::flat, TrackPitch::Up25, TrackPitch::None, TrackRoll::Right, TrackRoll::None, 0 }, // ELEM_FLAT_TO_RIGHT_BANKED_25_DEG_UP + { TrackGroup::flat, TrackPitch::None, TrackPitch::Up25, TrackRoll::None, TrackRoll::Left, 0 }, // ELEM_LEFT_BANKED_25_DEG_UP_TO_FLAT + { TrackGroup::flat, TrackPitch::None, TrackPitch::Up25, TrackRoll::None, TrackRoll::Right, 0 }, // ELEM_RIGHT_BANKED_25_DEG_UP_TO_FLAT + { TrackGroup::flat, TrackPitch::Down25, TrackPitch::None, TrackRoll::Left, TrackRoll::None, 0 }, // ELEM_FLAT_TO_LEFT_BANKED_25_DEG_DOWN + { TrackGroup::flat, TrackPitch::Down25, TrackPitch::None, TrackRoll::Right, TrackRoll::None, 0 }, // ELEM_FLAT_TO_RIGHT_BANKED_25_DEG_DOWN + { TrackGroup::flat, TrackPitch::None, TrackPitch::Down25, TrackRoll::None, TrackRoll::Left, 0 }, // ELEM_LEFT_BANKED_25_DEG_DOWN_TO_FLAT + { TrackGroup::flat, TrackPitch::None, TrackPitch::Down25, TrackRoll::None, TrackRoll::Right, 0 }, // ELEM_RIGHT_BANKED_25_DEG_DOWN_TO_FLAT + { TrackGroup::flat, TrackPitch::Up90, TrackPitch::Up90, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_LEFT_QUARTER_TURN_1_TILE_90_DEG_UP + { TrackGroup::flat, TrackPitch::Up90, TrackPitch::Up90, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_RIGHT_QUARTER_TURN_1_TILE_90_DEG_UP + { TrackGroup::flat, TrackPitch::Down90, TrackPitch::Down90, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_LEFT_QUARTER_TURN_1_TILE_90_DEG_DOWN + { TrackGroup::flat, TrackPitch::Down90, TrackPitch::Down90, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_RIGHT_QUARTER_TURN_1_TILE_90_DEG_DOWN + { TrackGroup::quarterLoopUninvertedUp, TrackPitch::None, TrackPitch::Up90, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // ELEM_MULTIDIM_90_DEG_UP_TO_INVERTED_FLAT_QUARTER_LOOP + { TrackGroup::quarterLoopUninvertedDown, TrackPitch::Down90, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // ELEM_MULTIDIM_FLAT_TO_90_DEG_DOWN_QUARTER_LOOP + { TrackGroup::quarterLoopInvertedUp, TrackPitch::None, TrackPitch::Up90, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // ELEM_MULTIDIM_INVERTED_FLAT_TO_90_DEG_UP_QUARTER_LOOP + { TrackGroup::rotationControlToggle,TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // ELEM_ROTATION_CONTROL_TOGGLE + { TrackGroup::flatRideBase, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::FlatTrack1x4A + { TrackGroup::flatRideBase, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::FlatTrack2x2 + { TrackGroup::flatRideBase, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::FlatTrack4x4 + { TrackGroup::flatRideBase, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::FlatTrack2x4 + { TrackGroup::flatRideBase, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::FlatTrack1x5 + { TrackGroup::flatRideBase, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::FlatTrack1x1A + { TrackGroup::flatRideBase, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::FlatTrack1x4B + { TrackGroup::flatRideBase, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::FlatTrack1x1B + { TrackGroup::flatRideBase, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, -40 }, // TrackElemType::FlatTrack1x4C + { TrackGroup::flatRideBase, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::FlatTrack3x3 + { TrackGroup::corkscrewLarge, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 32 }, // TrackElemType::LeftLargeCorkscrewUp + { TrackGroup::corkscrewLarge, TrackPitch::None, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, 32 }, // TrackElemType::RightLargeCorkscrewUp + { TrackGroup::corkscrewLarge, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, -32 }, // TrackElemType::LeftLargeCorkscrewDown + { TrackGroup::corkscrewLarge, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, -32 }, // TrackElemType::RightLargeCorkscrewDown + { TrackGroup::halfLoopMedium, TrackPitch::None, TrackPitch::Up25, TrackRoll::UpsideDown, TrackRoll::None, 64 }, // TrackElemType::LeftMediumHalfLoopUp + { TrackGroup::halfLoopMedium, TrackPitch::None, TrackPitch::Up25, TrackRoll::UpsideDown, TrackRoll::None, 64 }, // TrackElemType::RightMediumHalfLoopUp + { TrackGroup::halfLoopMedium, TrackPitch::Down25, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, -64 }, // TrackElemType::LeftMediumHalfLoopDown + { TrackGroup::halfLoopMedium, TrackPitch::Down25, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, -64 }, // TrackElemType::RightMediumHalfLoopDown + { TrackGroup::zeroGRoll, TrackPitch::None, TrackPitch::Up25, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // TrackElemType::LeftZeroGRollUp + { TrackGroup::zeroGRoll, TrackPitch::None, TrackPitch::Up25, TrackRoll::UpsideDown, TrackRoll::None, 0 }, // TrackElemType::RightZeroGRollUp + { TrackGroup::zeroGRoll, TrackPitch::Down25, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, 0 }, // TrackElemType::LeftZeroGRollDown + { TrackGroup::zeroGRoll, TrackPitch::Down25, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, 0 }, // TrackElemType::RightZeroGRollDown + { TrackGroup::zeroGRollLarge, TrackPitch::None, TrackPitch::Up60, TrackRoll::UpsideDown, TrackRoll::None, 64 }, // TrackElemType::LeftLargeZeroGRollUp + { TrackGroup::zeroGRollLarge, TrackPitch::None, TrackPitch::Up60, TrackRoll::UpsideDown, TrackRoll::None, 64 }, // TrackElemType::RightLargeZeroGRollUp + { TrackGroup::zeroGRollLarge, TrackPitch::Down60, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, -64 }, // TrackElemType::LeftLargeZeroGRollDown + { TrackGroup::zeroGRollLarge, TrackPitch::Down60, TrackPitch::None, TrackRoll::None, TrackRoll::UpsideDown, -64 }, // TrackElemType::RightLargeZeroGRollDown + { TrackGroup::flyingLargeHalfLoopUninvertedUp, TrackPitch::None, TrackPitch::Up25, TrackRoll::UpsideDown, TrackRoll::None, 64 }, // TrackElemType::LeftFlyerLargeHalfLoopUninvertedUp + { TrackGroup::flyingLargeHalfLoopUninvertedUp, TrackPitch::None, TrackPitch::Up25, TrackRoll::UpsideDown, TrackRoll::None, 64 }, // TrackElemType::RightFlyerLargeHalfLoopUninvertedUp + { TrackGroup::flyingLargeHalfLoopInvertedDown, TrackPitch::Down25, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, -64 }, // TrackElemType::LeftFlyerLargeHalfLoopInvertedDown + { TrackGroup::flyingLargeHalfLoopInvertedDown, TrackPitch::Down25, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, -64 }, // TrackElemType::RightFlyerLargeHalfLoopInvertedDown + { TrackGroup::flyingLargeHalfLoopInvertedUp, TrackPitch::None, TrackPitch::Up25, TrackRoll::UpsideDown, TrackRoll::None, 64 }, // TrackElemType::LeftFlyerLargeHalfLoopInvertedUp + { TrackGroup::flyingLargeHalfLoopInvertedUp, TrackPitch::None, TrackPitch::Up25, TrackRoll::UpsideDown, TrackRoll::None, 64 }, // TrackElemType::RightFlyerLargeHalfLoopInvertedUp + { TrackGroup::flyingLargeHalfLoopUninvertedDown, TrackPitch::Down25, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, -64 }, // TrackElemType::LeftFlyerLargeHalfLoopUninvertedDown + { TrackGroup::flyingLargeHalfLoopUninvertedDown, TrackPitch::Down25, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, -64 }, // TrackElemType::RightFlyerLargeHalfLoopUninvertedDown + { TrackGroup::flyingHalfLoopInvertedUp, TrackPitch::None, TrackPitch::Up25, TrackRoll::UpsideDown, TrackRoll::None, 64 }, // TrackElemType::FlyerHalfLoopInvertedUp + { TrackGroup::flyingHalfLoopUninvertedDown, TrackPitch::Down25, TrackPitch::None, TrackRoll::UpsideDown, TrackRoll::None, -64 }, // TrackElemType::FlyerHalfLoopUninvertedDown + { TrackGroup::slopeCurveLarge, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 16 }, // TrackElemType::LeftEighthToDiagUp25 + { TrackGroup::slopeCurveLarge, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 16 }, // TrackElemType::RightEighthToDiagUp25 + { TrackGroup::slopeCurveLarge, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, -16 }, // TrackElemType::LeftEighthToDiagDown25 + { TrackGroup::slopeCurveLarge, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, -16 }, // TrackElemType::RightEighthToDiagDown25 + { TrackGroup::slopeCurveLarge, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 16 }, // TrackElemType::LeftEighthToOrthogonalUp25 + { TrackGroup::slopeCurveLarge, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::None, 16 }, // TrackElemType::RightEighthToOrthogonalUp25 + { TrackGroup::slopeCurveLarge, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, -16 }, // TrackElemType::LeftEighthToOrthogonalDown25 + { TrackGroup::slopeCurveLarge, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::None, -16 }, // TrackElemType::RightEighthToOrthogonalDown25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Left, TrackRoll::None, 0 }, // TrackElemType::DiagUp25ToLeftBankedUp25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Right, TrackRoll::None, 0 }, // TrackElemType::DiagUp25ToRightBankedUp25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::Left, 0 }, // TrackElemType::DiagLeftBankedUp25ToUp25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::None, TrackRoll::Right, 0 }, // TrackElemType::DiagRightBankedUp25ToUp25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Left, TrackRoll::None, 0 }, // TrackElemType::DiagDown25ToLeftBankedDown25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Right, TrackRoll::None, 0 }, // TrackElemType::DiagDown25ToRightBankedDown25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::Left, 0 }, // TrackElemType::DiagLeftBankedDown25ToDown25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::None, TrackRoll::Right, 0 }, // TrackElemType::DiagRightBankedDown25ToDown25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::DiagLeftBankedFlatToLeftBankedUp25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::DiagRightBankedFlatToRightBankedUp25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::None, TrackPitch::Up25, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::DiagLeftBankedUp25ToLeftBankedFlat + { TrackGroup::slopeCurveLargeBanked, TrackPitch::None, TrackPitch::Up25, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::DiagRightBankedUp25ToRightBankedFlat + { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::None, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::DiagLeftBankedFlatToLeftBankedDown25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::None, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::DiagRightBankedFlatToRightBankedDown25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::None, TrackPitch::Down25, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::DiagLeftBankedDown25ToLeftBankedFlat + { TrackGroup::slopeCurveLargeBanked, TrackPitch::None, TrackPitch::Down25, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::DiagRightBankedDown25ToRightBankedFlat + { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::None, TrackRoll::Left, TrackRoll::None, 0 }, // TrackElemType::DiagFlatToLeftBankedUp25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::None, TrackRoll::Right, TrackRoll::None, 0 }, // TrackElemType::DiagFlatToRightBankedUp25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::None, TrackPitch::Up25, TrackRoll::None, TrackRoll::Left, 0 }, // TrackElemType::DiagLeftBankedUp25ToFlat + { TrackGroup::slopeCurveLargeBanked, TrackPitch::None, TrackPitch::Up25, TrackRoll::None, TrackRoll::Right, 0 }, // TrackElemType::DiagRightBankedUp25ToFlat + { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::None, TrackRoll::Left, TrackRoll::None, 0 }, // TrackElemType::DiagFlatToLeftBankedDown25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::None, TrackRoll::Right, TrackRoll::None, 0 }, // TrackElemType::DiagFlatToRightBankedDown25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::None, TrackPitch::Down25, TrackRoll::None, TrackRoll::Left, 0 }, // TrackElemType::DiagLeftBankedDown25ToFlat + { TrackGroup::slopeCurveLargeBanked, TrackPitch::None, TrackPitch::Down25, TrackRoll::None, TrackRoll::Right, 0 }, // TrackElemType::DiagRightBankedDown25ToFlat + { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::Up25LeftBanked + { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::Up25RightBanked + { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Left, TrackRoll::Left, 0 }, // TrackElemType::Down25LeftBanked + { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Right, TrackRoll::Right, 0 }, // TrackElemType::Down25RightBanked + { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Left, TrackRoll::Left, 16 }, // TrackElemType::LeftEighthBankToDiagUp25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Right, TrackRoll::Right, 16 }, // TrackElemType::RightEighthBankToDiagUp25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Left, TrackRoll::Left, -16 }, // TrackElemType::LeftEighthBankToDiagDown25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Right, TrackRoll::Right, -16 }, // TrackElemType::RightEighthBankToDiagDown25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Left, TrackRoll::Left, 16 }, // TrackElemType::LeftEighthBankToOrthogonalUp25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::Up25, TrackPitch::Up25, TrackRoll::Right, TrackRoll::Right, 16 }, // TrackElemType::RightEighthBankToOrthogonalUp25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Left, TrackRoll::Left, -16 }, // TrackElemType::LeftEighthBankToOrthogonalDown25 + { TrackGroup::slopeCurveLargeBanked, TrackPitch::Down25, TrackPitch::Down25, TrackRoll::Right, TrackRoll::Right, -16 }, // TrackElemType::RightEighthBankToOrthogonalDown25 + { TrackGroup::diagBrakes, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::DiagBrakes + { TrackGroup::diagBlockBrakes, TrackPitch::None, TrackPitch::None, TrackRoll::None, TrackRoll::None, 0 }, // TrackElemType::DiagBlockBrakes + }; + static_assert(std::size(TrackDefinitions) == TrackElemType::Count); // clang-format on