/***************************************************************************** * Copyright (c) 2014-2020 OpenRCT2 developers * * For a complete list of all authors, please refer to contributors.md * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 * * OpenRCT2 is licensed under the GNU General Public License version 3. *****************************************************************************/ #include "TrackData.h" #include "Track.h" #include "TrackPaint.h" #include #include // clang-format off static constexpr rct_track_coordinates TrackCoordinates[TrackElemType::Count] = { { 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 }; /** rct2: 0x0099BA64 */ static constexpr uint8_t TrackSequenceProperties[][MaxSequencesPerPiece] = { { 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 }, }; #define TRACK_BLOCK_END { 255, 255, 255, 255, 255, {255, 255}, 255 } static constexpr rct_preview_track TrackBlocks000[] = { { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks001[] = { { 0, 0, 0, 0, 0,{ 0b1111, 0 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks002[] = { { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks003[] = { { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks004[] = { { 0, 0, 0, 0, 16, { 0b1111, 0b1100 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks005[] = { { 0, 0, 0, 0, 64, { 0b1111, 0b1100 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks006[] = { { 0, 0, 0, 0, 8, { 0b1111, 0 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks007[] = { { 0, 0, 0, 0, 32, { 0b1111, 0b1100 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks008[] = { { 0, 0, 0, 0, 32, { 0b1111, 0b1100 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks009[] = { { 0, 0, 0, 0, 8, { 0b1111, 0b1100 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks010[] = { { 0, 0, 0, 0, 16, { 0b1111, 0b0011 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks011[] = { { 0, 0, 0, 0, 64, { 0b1111, 0b0011 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks012[] = { { 0, 0, 0, 0, 8, { 0b1111, 0b0011 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks013[] = { { 0, 0, 0, 0, 32, { 0b1111, 0b0011 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks014[] = { { 0, 0, 0, 0, 32, { 0b1111, 0b0011 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks015[] = { { 0, 0, 0, 0, 8, { 0b1111, 0 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks018[] = { { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks019[] = { { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks020[] = { { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks021[] = { { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks024[] = { { 0, 0, 0, 0, 8, { 0b1111, 0 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks025[] = { { 0, 0, 0, 0, 8, { 0b1111, 0 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks026[] = { { 0, 0, 0, 0, 8, { 0b1111, 0b1100 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks027[] = { { 0, 0, 0, 0, 8, { 0b1111, 0b1100 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks028[] = { { 0, 0, 0, 0, 8, { 0b1111, 0b0011 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks029[] = { { 0, 0, 0, 0, 8, { 0b1111, 0b0011 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks030[] = { { 0, 0, 0, 0, 8, { 0b1111, 0 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks031[] = { { 0, 0, 0, 0, 8, { 0b1111, 0 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks032[] = { { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks033[] = { { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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, { 0b0001, 0 }, 0 }, { 5, 0, 0, 120, 0, { 0b0100, 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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, { 0b0010, 0 }, 0 }, { 5, 0, 0, 120, 0, { 0b1000, 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks050[] = { { 0, 0, 0, 0, 0, { 0b0111, 0 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks051[] = { { 0, 0, 0, 0, 0, { 0b1011, 0 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks056[] = { { 0, 0, 0, 0, 32, { 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks057[] = { { 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks062[] = { { 0, 0, 0, 0, 24, { 0b1111, 0 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks063[] = { { 0, 0, 0, 0, 24, { 0b1111, 0b1100 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks064[] = { { 0, 0, 0, 0, 24, { 0b1111, 0b0011 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks065[] = { { 0, 0, 0, 0, 24, { 0b1111, 0 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks068[] = { { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks069[] = { { 0, 0, 0, 0, 16, { 0b1111, 0b1100 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks070[] = { { 0, 0, 0, 0, 64, { 0b1111, 0b1100 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks071[] = { { 0, 0, 0, 0, 8, { 0b1111, 0 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks072[] = { { 0, 0, 0, 0, 32, { 0b1111, 0b1100 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks073[] = { { 0, 0, 0, 0, 32, { 0b1111, 0b1100 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks074[] = { { 0, 0, 0, 0, 8, { 0b1111, 0b1100 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks075[] = { { 0, 0, 0, 0, 16, { 0b1111, 0b0011 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks076[] = { { 0, 0, 0, 0, 64, { 0b1111, 0b0011 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks077[] = { { 0, 0, 0, 0, 8, { 0b1111, 0b0011 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks078[] = { { 0, 0, 0, 0, 32, { 0b1111, 0b0011 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks079[] = { { 0, 0, 0, 0, 32, { 0b1111, 0b0011 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks080[] = { { 0, 0, 0, 0, 8, { 0b1111, 0 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks095[] = { { 0, 0, 0, 0, 64, { 0b1111, 0 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks096[] = { { 0, 0, 0, 0, 64, { 0b1111, 0 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks097[] = { { 0, 0, 0, 0, 64, { 0b1111, 0 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks098[] = { { 0, 0, 0, 0, 64, { 0b1111, 0 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks099[] = { { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks100[] = { { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks101[] = { { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks110[] = { { 0, 0, 0, 0, 16, { 0b1111, 0b1100 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks111[] = { { 0, 0, 0, 0, 16, { 0b1111, 0b1100 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks112[] = { { 0, 0, 0, 0, 16, { 0b1111, 0 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks113[] = { { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks114[] = { { 0, 0, 0, 0, 16, { 0b1111, 0 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks115[] = { { 0, 0, 0, 0, 16, { 0b1111, 0b0011 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks116[] = { { 0, 0, 0, 0, 16, { 0b1111, 0b0011 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks120[] = { { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks125[] = { { 0, 0, 0, 0, 48, { 0b1111, 0 }, 0 }, { 1, 32, 0, 0, 48, { 0b1111, 0 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks129[] = { { 0, 0, 0, 0, 32, { 0b1111, 0b0011 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks130[] = { { 0, 0, 0, 0, 56, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks132[] = { { 0, 0, 0, 0, 24, { 0b1111, 0b0011 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks172[] = { { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks173[] = { { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks182[] = { { 0, 0, 0, 0, 16, { 0b1111, 0b1100 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks185[] = { { 0, 0, 0, -32, 24, { 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks186[] = { { 0, 0, 0, -32, 24, { 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks191[] = { { 0, 0, 0, 0, 32, { 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks192[] = { { 0, 0, 0, 0, 32, { 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks201[] = { { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, { 1, -32, 0, 0, 0, { 0b1111, 0 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks202[] = { { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, { 1, -32, 0, 0, 0, { 0b1111, 0 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks203[] = { { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, { 1, -32, 0, 0, 0, { 0b1111, 0 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks214[] = { { 0, 0, 0, 0, 48, { 0b1111, 0 }, 0 }, { 1, 32, 0, 0, 48, { 0b1111, 0 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks216[] = { { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks225[] = { { 0, 0, 0, 0, 16, { 0b1111, 0b1100 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks226[] = { { 0, 0, 0, 0, 16, { 0b1111, 0b1100 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks227[] = { { 0, 0, 0, 0, 16, { 0b1111, 0b1100 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks228[] = { { 0, 0, 0, 0, 16, { 0b1111, 0b1100 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks229[] = { { 0, 0, 0, 0, 16, { 0b1111, 0b0011 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks230[] = { { 0, 0, 0, 0, 16, { 0b1111, 0b0011 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks231[] = { { 0, 0, 0, 0, 16, { 0b1111, 0b0011 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks232[] = { { 0, 0, 0, 0, 16, { 0b1111, 0b0011 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks233[] = { { 0, 0, 0, 0, 8, { 0b1111, 0 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks234[] = { { 0, 0, 0, 0, 8, { 0b1111, 0 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks235[] = { { 0, 0, 0, 0, 8, { 0b1111, 0b1100 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks236[] = { { 0, 0, 0, 0, 8, { 0b1111, 0b1100 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks237[] = { { 0, 0, 0, 0, 8, { 0b1111, 0b0011 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks238[] = { { 0, 0, 0, 0, 8, { 0b1111, 0b0011 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks239[] = { { 0, 0, 0, 0, 8, { 0b1111, 0 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks240[] = { { 0, 0, 0, 0, 8, { 0b1111, 0 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks241[] = { { 0, 0, 0, 0, 8, { 0b1111, 0 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks242[] = { { 0, 0, 0, 0, 8, { 0b1111, 0 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks243[] = { { 0, 0, 0, 0, 8, { 0b1111, 0b1100 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks244[] = { { 0, 0, 0, 0, 8, { 0b1111, 0b1100 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks245[] = { { 0, 0, 0, 0, 8, { 0b1111, 0b0011 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks246[] = { { 0, 0, 0, 0, 8, { 0b1111, 0b0011 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks247[] = { { 0, 0, 0, 0, 8, { 0b1111, 0 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocks248[] = { { 0, 0, 0, 0, 8, { 0b1111, 0 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocksRotationControlToggle[] = { { 0, 0, 0, 0, 0, { 0b1111, 0b1100 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocksFlatTrack1x1A[] = { { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track TrackBlocksFlatTrack1x1B[] = { { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; static constexpr const rct_preview_track 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 }, TRACK_BLOCK_END }; // 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, }; static constexpr uint8_t TrackPieceLengths[TrackElemType::Count] = { 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::RightLargeHalfLoopDown 100, // TrackElemType::LeftLargeHalfLoopDown 96, // TrackElemType::LeftFlyerTwistUp 96, // TrackElemType::RightFlyerTwistUp 96, // TrackElemType::LeftFlyerTwistDown 96, // TrackElemType::RightFlyerTwistDown 64, // TrackElemType::FlyerHalfLoopUp 64, // TrackElemType::FlyerHalfLoopDown 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 }; // rct2: 0x00998C95 static constexpr track_curve_chain gTrackCurveChain[TrackElemType::Count] = { { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { RideConstructionSpecialPieceSelected | TrackElemType::EndStation, RideConstructionSpecialPieceSelected | TrackElemType::EndStation }, { RideConstructionSpecialPieceSelected | TrackElemType::EndStation, RideConstructionSpecialPieceSelected | TrackElemType::EndStation }, { RideConstructionSpecialPieceSelected | TrackElemType::EndStation, RideConstructionSpecialPieceSelected | TrackElemType::EndStation }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_LEFT, TRACK_CURVE_LEFT }, { TRACK_CURVE_RIGHT, TRACK_CURVE_RIGHT }, { TRACK_CURVE_LEFT, TRACK_CURVE_NONE }, { TRACK_CURVE_RIGHT, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_LEFT }, { TRACK_CURVE_NONE, TRACK_CURVE_RIGHT }, { TRACK_CURVE_LEFT, TRACK_CURVE_LEFT }, { TRACK_CURVE_RIGHT, TRACK_CURVE_RIGHT }, { TRACK_CURVE_NONE, TRACK_CURVE_LEFT }, { TRACK_CURVE_NONE, TRACK_CURVE_RIGHT }, { TRACK_CURVE_LEFT, TRACK_CURVE_NONE }, { TRACK_CURVE_RIGHT, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_LEFT }, { TRACK_CURVE_NONE, TRACK_CURVE_RIGHT }, { TRACK_CURVE_LEFT, TRACK_CURVE_NONE }, { TRACK_CURVE_RIGHT, TRACK_CURVE_NONE }, { TRACK_CURVE_LEFT, TRACK_CURVE_LEFT }, { TRACK_CURVE_RIGHT, TRACK_CURVE_RIGHT }, { TRACK_CURVE_LEFT, TRACK_CURVE_LEFT }, { TRACK_CURVE_RIGHT, TRACK_CURVE_RIGHT }, { TRACK_CURVE_LEFT, TRACK_CURVE_LEFT }, { TRACK_CURVE_RIGHT, TRACK_CURVE_RIGHT }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_LEFT_SMALL, TRACK_CURVE_LEFT_SMALL }, { TRACK_CURVE_RIGHT_SMALL, TRACK_CURVE_RIGHT_SMALL }, { TRACK_CURVE_LEFT_SMALL, TRACK_CURVE_LEFT_SMALL }, { TRACK_CURVE_RIGHT_SMALL, TRACK_CURVE_RIGHT_SMALL }, { TRACK_CURVE_LEFT_SMALL, TRACK_CURVE_LEFT_SMALL }, { TRACK_CURVE_RIGHT_SMALL, TRACK_CURVE_RIGHT_SMALL }, { TRACK_CURVE_LEFT_SMALL, TRACK_CURVE_LEFT_SMALL }, { TRACK_CURVE_RIGHT_SMALL, TRACK_CURVE_RIGHT_SMALL }, { TRACK_CURVE_LEFT_VERY_SMALL, TRACK_CURVE_LEFT_VERY_SMALL }, { TRACK_CURVE_RIGHT_VERY_SMALL, TRACK_CURVE_RIGHT_VERY_SMALL }, { RideConstructionSpecialPieceSelected | TrackElemType::LeftTwistUpToDown, TRACK_CURVE_NONE }, { RideConstructionSpecialPieceSelected | TrackElemType::RightTwistUpToDown, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, RideConstructionSpecialPieceSelected | TrackElemType::LeftTwistDownToUp }, { TRACK_CURVE_NONE, RideConstructionSpecialPieceSelected | TrackElemType::RightTwistDownToUp }, { RideConstructionSpecialPieceSelected | TrackElemType::HalfLoopDown, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, RideConstructionSpecialPieceSelected | TrackElemType::HalfLoopUp }, { RideConstructionSpecialPieceSelected | TrackElemType::RightCorkscrewDown, TRACK_CURVE_NONE }, { RideConstructionSpecialPieceSelected | TrackElemType::LeftCorkscrewDown, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, RideConstructionSpecialPieceSelected | TrackElemType::RightCorkscrewUp }, { TRACK_CURVE_NONE, RideConstructionSpecialPieceSelected | TrackElemType::LeftCorkscrewUp }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { RideConstructionSpecialPieceSelected | TrackElemType::TowerSection, TRACK_CURVE_NONE }, { RideConstructionSpecialPieceSelected | TrackElemType::TowerSection, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_LEFT, TRACK_CURVE_LEFT }, { TRACK_CURVE_RIGHT, TRACK_CURVE_RIGHT }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_LEFT_SMALL, TRACK_CURVE_LEFT_SMALL }, { TRACK_CURVE_RIGHT_SMALL, TRACK_CURVE_RIGHT_SMALL }, { 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 }, { TRACK_CURVE_LEFT_SMALL, TRACK_CURVE_LEFT_SMALL }, { TRACK_CURVE_RIGHT_SMALL, TRACK_CURVE_RIGHT_SMALL }, { TRACK_CURVE_LEFT_SMALL, TRACK_CURVE_LEFT_SMALL }, { TRACK_CURVE_RIGHT_SMALL, TRACK_CURVE_RIGHT_SMALL }, { RideConstructionSpecialPieceSelected | TrackElemType::Brakes, RideConstructionSpecialPieceSelected | TrackElemType::Brakes }, { RideConstructionSpecialPieceSelected | TrackElemType::Booster, RideConstructionSpecialPieceSelected | TrackElemType::Booster }, { TRACK_CURVE_NONE, TRACK_CURVE_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 }, { TRACK_CURVE_LEFT, TRACK_CURVE_LEFT }, { TRACK_CURVE_RIGHT, TRACK_CURVE_RIGHT }, { RideConstructionSpecialPieceSelected | TrackElemType::Waterfall, RideConstructionSpecialPieceSelected | TrackElemType::Waterfall }, { RideConstructionSpecialPieceSelected | TrackElemType::Rapids, RideConstructionSpecialPieceSelected | TrackElemType::Rapids }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_LEFT, TRACK_CURVE_LEFT }, { TRACK_CURVE_RIGHT, TRACK_CURVE_RIGHT }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { RideConstructionSpecialPieceSelected | TrackElemType::ReverseFreefallVertical, TRACK_CURVE_NONE }, { RideConstructionSpecialPieceSelected | TrackElemType::ReverseFreefallVertical, RideConstructionSpecialPieceSelected | TrackElemType::ReverseFreefallVertical }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_LEFT_LARGE, TRACK_CURVE_LEFT_LARGE }, { TRACK_CURVE_RIGHT_LARGE, TRACK_CURVE_RIGHT_LARGE }, { TRACK_CURVE_LEFT_LARGE, TRACK_CURVE_LEFT_LARGE }, { TRACK_CURVE_RIGHT_LARGE, TRACK_CURVE_RIGHT_LARGE }, { TRACK_CURVE_LEFT_LARGE, TRACK_CURVE_LEFT_LARGE }, { TRACK_CURVE_RIGHT_LARGE, TRACK_CURVE_RIGHT_LARGE }, { TRACK_CURVE_LEFT_LARGE, TRACK_CURVE_LEFT_LARGE }, { TRACK_CURVE_RIGHT_LARGE, TRACK_CURVE_RIGHT_LARGE }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_LEFT_LARGE, TRACK_CURVE_NONE }, { TRACK_CURVE_RIGHT_LARGE, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_LEFT_LARGE }, { TRACK_CURVE_NONE, TRACK_CURVE_RIGHT_LARGE }, { TRACK_CURVE_NONE, TRACK_CURVE_LEFT_LARGE }, { TRACK_CURVE_NONE, TRACK_CURVE_RIGHT_LARGE }, { TRACK_CURVE_LEFT_LARGE, TRACK_CURVE_NONE }, { TRACK_CURVE_RIGHT_LARGE, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_LEFT_LARGE }, { TRACK_CURVE_NONE, TRACK_CURVE_RIGHT_LARGE }, { TRACK_CURVE_LEFT_LARGE, TRACK_CURVE_NONE }, { TRACK_CURVE_RIGHT_LARGE, TRACK_CURVE_NONE }, { TRACK_CURVE_LEFT_LARGE, TRACK_CURVE_LEFT_LARGE }, { TRACK_CURVE_RIGHT_LARGE, TRACK_CURVE_RIGHT_LARGE }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { RideConstructionSpecialPieceSelected | TrackElemType::LeftBarrelRollDownToUp, TRACK_CURVE_NONE }, { RideConstructionSpecialPieceSelected | TrackElemType::RightBarrelRollDownToUp, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, RideConstructionSpecialPieceSelected | TrackElemType::LeftBarrelRollUpToDown }, { TRACK_CURVE_NONE, RideConstructionSpecialPieceSelected | TrackElemType::RightBarrelRollUpToDown }, { TRACK_CURVE_LEFT_SMALL, TRACK_CURVE_LEFT_SMALL }, { TRACK_CURVE_RIGHT_SMALL, TRACK_CURVE_RIGHT_SMALL }, { TRACK_CURVE_LEFT_SMALL, TRACK_CURVE_LEFT_SMALL }, { TRACK_CURVE_RIGHT_SMALL, TRACK_CURVE_RIGHT_SMALL }, { RideConstructionSpecialPieceSelected | TrackElemType::PoweredLift, RideConstructionSpecialPieceSelected | TrackElemType::PoweredLift }, { RideConstructionSpecialPieceSelected | TrackElemType::LeftLargeHalfLoopDown, TRACK_CURVE_NONE }, { RideConstructionSpecialPieceSelected | TrackElemType::RightLargeHalfLoopDown, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, RideConstructionSpecialPieceSelected | TrackElemType::RightLargeHalfLoopUp }, { TRACK_CURVE_NONE, RideConstructionSpecialPieceSelected | TrackElemType::LeftLargeHalfLoopUp }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { RideConstructionSpecialPieceSelected | TrackElemType::InvertedFlatToDown90QuarterLoop, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, RideConstructionSpecialPieceSelected | TrackElemType::Up90ToInvertedFlatQuarterLoop }, { RideConstructionSpecialPieceSelected | TrackElemType::LeftCurvedLiftHill, RideConstructionSpecialPieceSelected | TrackElemType::LeftCurvedLiftHill }, { RideConstructionSpecialPieceSelected | TrackElemType::RightCurvedLiftHill, RideConstructionSpecialPieceSelected | TrackElemType::RightCurvedLiftHill }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { RideConstructionSpecialPieceSelected | TrackElemType::AirThrustVerticalDown, RideConstructionSpecialPieceSelected | TrackElemType::ReverseFreefallVertical }, { RideConstructionSpecialPieceSelected | TrackElemType::AirThrustVerticalDown, RideConstructionSpecialPieceSelected | TrackElemType::AirThrustVerticalDown }, { TRACK_CURVE_NONE, RideConstructionSpecialPieceSelected | TrackElemType::AirThrustVerticalDown }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_LEFT_SMALL, TRACK_CURVE_LEFT_SMALL }, { TRACK_CURVE_RIGHT_SMALL, TRACK_CURVE_RIGHT_SMALL }, { TRACK_CURVE_LEFT_SMALL, TRACK_CURVE_LEFT_SMALL }, { TRACK_CURVE_RIGHT_SMALL, TRACK_CURVE_RIGHT_SMALL }, { TRACK_CURVE_LEFT, TRACK_CURVE_LEFT }, { TRACK_CURVE_RIGHT, TRACK_CURVE_RIGHT }, { TRACK_CURVE_LEFT, TRACK_CURVE_LEFT }, { TRACK_CURVE_RIGHT, TRACK_CURVE_RIGHT }, { TRACK_CURVE_LEFT, TRACK_CURVE_NONE }, { TRACK_CURVE_RIGHT, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_LEFT }, { TRACK_CURVE_NONE, TRACK_CURVE_RIGHT }, { TRACK_CURVE_LEFT, TRACK_CURVE_NONE }, { TRACK_CURVE_RIGHT, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_LEFT }, { TRACK_CURVE_NONE, TRACK_CURVE_RIGHT }, { TRACK_CURVE_LEFT, TRACK_CURVE_LEFT }, { TRACK_CURVE_RIGHT, TRACK_CURVE_RIGHT }, { TRACK_CURVE_LEFT, TRACK_CURVE_LEFT }, { TRACK_CURVE_RIGHT, TRACK_CURVE_RIGHT }, { TRACK_CURVE_LEFT, TRACK_CURVE_LEFT }, { TRACK_CURVE_RIGHT, TRACK_CURVE_RIGHT }, { TRACK_CURVE_LEFT, TRACK_CURVE_LEFT }, { TRACK_CURVE_RIGHT, TRACK_CURVE_RIGHT }, { TRACK_CURVE_LEFT, TRACK_CURVE_NONE }, { TRACK_CURVE_RIGHT, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_LEFT }, { TRACK_CURVE_NONE, TRACK_CURVE_RIGHT }, { TRACK_CURVE_LEFT, TRACK_CURVE_NONE }, { TRACK_CURVE_RIGHT, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_LEFT }, { TRACK_CURVE_NONE, TRACK_CURVE_RIGHT }, { TRACK_CURVE_LEFT_SMALL, TRACK_CURVE_LEFT_SMALL }, { TRACK_CURVE_RIGHT_SMALL, TRACK_CURVE_RIGHT_SMALL }, { TRACK_CURVE_LEFT_SMALL, TRACK_CURVE_LEFT_SMALL }, { TRACK_CURVE_RIGHT_SMALL, TRACK_CURVE_RIGHT_SMALL }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, { 65535, 65535 }, // TrackElemType::FlatTrack1x4A { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, // TrackElemType::FlatTrack2x2 { TRACK_CURVE_NONE, TRACK_CURVE_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 }; const track_descriptor gTrackDescriptors[142] = { { true, TRACK_SLOPE_DOWN_60, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_DOWN_60, TRACK_BANK_NONE, TrackElemType::DiagDown60 }, { true, TRACK_SLOPE_DOWN_60, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TrackElemType::DiagDown60ToDown25 }, { true, TRACK_SLOPE_DOWN_60, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TrackElemType::DiagDown60ToFlat }, { true, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_DOWN_60, TRACK_BANK_NONE, TrackElemType::DiagDown25ToDown60 }, { true, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TrackElemType::DiagDown25 }, { true, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TrackElemType::DiagDown25ToLeftBank }, { true, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TrackElemType::DiagDown25ToFlat }, { true, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TrackElemType::DiagDown25ToRightBank }, { true, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TRACK_CURVE_LEFT_LARGE, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TrackElemType::LeftEighthBankToOrthogonal }, { true, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TRACK_CURVE_NONE, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TrackElemType::DiagLeftBankToDown25 }, { true, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TRACK_CURVE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TrackElemType::DiagLeftBank }, { true, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TRACK_CURVE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TrackElemType::DiagLeftBankToFlat }, { true, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TRACK_CURVE_NONE, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TrackElemType::DiagLeftBankToUp25 }, { true, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_CURVE_LEFT_LARGE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TrackElemType::LeftEighthToOrthogonal }, { true, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_DOWN_60, TRACK_BANK_NONE, TrackElemType::DiagFlatToDown60 }, { true, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TrackElemType::DiagFlatToDown25 }, { true, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TrackElemType::DiagFlatToLeftBank }, { true, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TrackElemType::DiagFlat }, { true, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TrackElemType::DiagFlatToRightBank }, { true, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TrackElemType::DiagFlatToUp25 }, { true, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_UP_60, TRACK_BANK_NONE, TrackElemType::DiagFlatToUp60 }, { true, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_CURVE_RIGHT_LARGE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TrackElemType::RightEighthToOrthogonal }, { true, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TRACK_CURVE_NONE, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TrackElemType::DiagRightBankToDown25 }, { true, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TRACK_CURVE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TrackElemType::DiagRightBankToFlat }, { true, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TRACK_CURVE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TrackElemType::DiagRightBank }, { true, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TRACK_CURVE_NONE, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TrackElemType::DiagRightBankToUp25 }, { true, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TRACK_CURVE_RIGHT_LARGE, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TrackElemType::RightEighthBankToOrthogonal }, { true, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TrackElemType::DiagUp25ToLeftBank }, { true, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TrackElemType::DiagUp25ToFlat }, { true, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TrackElemType::DiagUp25ToRightBank }, { true, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TrackElemType::DiagUp25 }, { true, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_UP_60, TRACK_BANK_NONE, TrackElemType::DiagUp25ToUp60 }, { true, TRACK_SLOPE_UP_60, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TrackElemType::DiagUp60ToFlat }, { true, TRACK_SLOPE_UP_60, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TrackElemType::DiagUp60ToUp25 }, { true, TRACK_SLOPE_UP_60, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_UP_60, TRACK_BANK_NONE, TrackElemType::DiagUp60 }, { false, TRACK_SLOPE_DOWN_90, TRACK_BANK_NONE, TRACK_CURVE_LEFT_SMALL, TRACK_SLOPE_DOWN_90, TRACK_BANK_NONE, TrackElemType::LeftQuarterTurn1TileDown90 }, { false, TRACK_SLOPE_DOWN_90, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_DOWN_90, TRACK_BANK_NONE, TrackElemType::Down90 }, { false, TRACK_SLOPE_DOWN_90, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_DOWN_60, TRACK_BANK_NONE, TrackElemType::Down90ToDown60 }, { false, TRACK_SLOPE_DOWN_90, TRACK_BANK_NONE, TRACK_CURVE_RIGHT_SMALL, TRACK_SLOPE_DOWN_90, TRACK_BANK_NONE, TrackElemType::RightQuarterTurn1TileDown90 }, { false, TRACK_SLOPE_DOWN_60, TRACK_BANK_NONE, TRACK_CURVE_LEFT_SMALL, TRACK_SLOPE_DOWN_60, TRACK_BANK_NONE, TrackElemType::LeftQuarterTurn1TileDown60 }, { false, TRACK_SLOPE_DOWN_60, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_DOWN_90, TRACK_BANK_NONE, TrackElemType::Down60ToDown90 }, { false, TRACK_SLOPE_DOWN_60, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_DOWN_60, TRACK_BANK_NONE, TrackElemType::Down60 }, { false, TRACK_SLOPE_DOWN_60, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TrackElemType::Down60ToDown25 }, { false, TRACK_SLOPE_DOWN_60, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TrackElemType::Down60ToFlat }, { false, TRACK_SLOPE_DOWN_60, TRACK_BANK_NONE, TRACK_CURVE_RIGHT_SMALL, TRACK_SLOPE_DOWN_60, TRACK_BANK_NONE, TrackElemType::RightQuarterTurn1TileDown60 }, { false, TRACK_SLOPE_DOWN_25, TRACK_BANK_LEFT, TRACK_CURVE_LEFT_SMALL, TRACK_SLOPE_DOWN_25, TRACK_BANK_LEFT, TrackElemType::LeftBankedQuarterTurn3TileDown25 }, { false, TRACK_SLOPE_DOWN_25, TRACK_BANK_LEFT, TRACK_CURVE_LEFT, TRACK_SLOPE_DOWN_25, TRACK_BANK_LEFT, TrackElemType::LeftBankedQuarterTurn5TileDown25 }, { false, TRACK_SLOPE_DOWN_25, TRACK_BANK_LEFT, TRACK_CURVE_NONE, TRACK_SLOPE_DOWN_25, TRACK_BANK_LEFT, TrackElemType::Down25LeftBanked }, { false, TRACK_SLOPE_DOWN_25, TRACK_BANK_LEFT, TRACK_CURVE_NONE, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TrackElemType::LeftBankedDown25ToDown25 }, { false, TRACK_SLOPE_DOWN_25, TRACK_BANK_LEFT, TRACK_CURVE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TrackElemType::LeftBankedDown25ToLeftBankedFlat }, { false, TRACK_SLOPE_DOWN_25, TRACK_BANK_LEFT, TRACK_CURVE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TrackElemType::LeftBankedDown25ToFlat }, { false, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TRACK_CURVE_LEFT_SMALL, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TrackElemType::LeftQuarterTurn3TilesDown25 }, { false, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TRACK_CURVE_LEFT_SMALL, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TrackElemType::LeftQuarterTurn3TilesDown25ToLeftBank }, { false, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TRACK_CURVE_LEFT, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TrackElemType::LeftQuarterTurn5TilesDown25 }, { false, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_DOWN_60, TRACK_BANK_NONE, TrackElemType::Down25ToDown60 }, { false, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_DOWN_25, TRACK_BANK_LEFT, TrackElemType::Down25ToLeftBankedDown25 }, { false, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TrackElemType::Down25 }, { false, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_DOWN_25, TRACK_BANK_RIGHT, TrackElemType::Down25ToRightBankedDown25 }, { false, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TrackElemType::Down25ToLeftBank }, { false, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TrackElemType::Down25ToFlat }, { false, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TrackElemType::Down25ToRightBank }, { false, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TRACK_CURVE_RIGHT, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TrackElemType::RightQuarterTurn5TilesDown25 }, { false, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TRACK_CURVE_RIGHT_SMALL, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TrackElemType::RightQuarterTurn3TilesDown25ToRightBank }, { false, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TRACK_CURVE_RIGHT_SMALL, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TrackElemType::RightQuarterTurn3TilesDown25 }, { false, TRACK_SLOPE_DOWN_25, TRACK_BANK_RIGHT, TRACK_CURVE_NONE, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TrackElemType::RightBankedDown25ToDown25 }, { false, TRACK_SLOPE_DOWN_25, TRACK_BANK_RIGHT, TRACK_CURVE_NONE, TRACK_SLOPE_DOWN_25, TRACK_BANK_RIGHT, TrackElemType::Down25RightBanked }, { false, TRACK_SLOPE_DOWN_25, TRACK_BANK_RIGHT, TRACK_CURVE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TrackElemType::RightBankedDown25ToFlat }, { false, TRACK_SLOPE_DOWN_25, TRACK_BANK_RIGHT, TRACK_CURVE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TrackElemType::RightBankedDown25ToRightBankedFlat }, { false, TRACK_SLOPE_DOWN_25, TRACK_BANK_RIGHT, TRACK_CURVE_RIGHT, TRACK_SLOPE_DOWN_25, TRACK_BANK_RIGHT, TrackElemType::RightBankedQuarterTurn5TileDown25 }, { false, TRACK_SLOPE_DOWN_25, TRACK_BANK_RIGHT, TRACK_CURVE_RIGHT_SMALL, TRACK_SLOPE_DOWN_25, TRACK_BANK_RIGHT, TrackElemType::RightBankedQuarterTurn3TileDown25 }, { false, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TRACK_CURVE_LEFT_SMALL, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TrackElemType::LeftBankedQuarterTurn3Tiles }, { false, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TRACK_CURVE_LEFT_SMALL, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TrackElemType::LeftBankToLeftQuarterTurn3TilesUp25 }, { false, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TRACK_CURVE_LEFT, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TrackElemType::BankedLeftQuarterTurn5Tiles }, { false, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TRACK_CURVE_LEFT_LARGE, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TrackElemType::LeftEighthBankToDiag }, { false, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TRACK_CURVE_NONE, TRACK_SLOPE_DOWN_25, TRACK_BANK_LEFT, TrackElemType::LeftBankedFlatToLeftBankedDown25 }, { false, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TRACK_CURVE_NONE, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TrackElemType::LeftBankToDown25 }, { false, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TRACK_CURVE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TrackElemType::LeftBank }, { false, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TRACK_CURVE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TrackElemType::LeftBankToFlat }, { false, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TRACK_CURVE_NONE, TRACK_SLOPE_UP_25, TRACK_BANK_LEFT, TrackElemType::LeftBankedFlatToLeftBankedUp25 }, { false, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TRACK_CURVE_NONE, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TrackElemType::LeftBankToUp25 }, { false, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_CURVE_LEFT_SMALL, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TrackElemType::LeftQuarterTurn3Tiles }, { false, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_CURVE_LEFT, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TrackElemType::LeftQuarterTurn5Tiles }, { false, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_CURVE_LEFT_LARGE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TrackElemType::LeftEighthToDiag }, { false, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_DOWN_60, TRACK_BANK_NONE, TrackElemType::FlatToDown60 }, { false, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_DOWN_25, TRACK_BANK_LEFT, TrackElemType::FlatToLeftBankedDown25 }, { false, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TrackElemType::FlatToDown25 }, { false, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_DOWN_25, TRACK_BANK_RIGHT, TrackElemType::FlatToRightBankedDown25 }, { false, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TrackElemType::FlatToLeftBank }, { false, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TrackElemType::Flat }, { false, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_CURVE_LEFT_VERY_SMALL, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TrackElemType::LeftQuarterTurn1Tile }, { false, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_CURVE_RIGHT_VERY_SMALL, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TrackElemType::RightQuarterTurn1Tile }, { false, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TrackElemType::FlatToRightBank }, { false, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_UP_25, TRACK_BANK_LEFT, TrackElemType::FlatToLeftBankedUp25 }, { false, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TrackElemType::FlatToUp25 }, { false, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_UP_25, TRACK_BANK_RIGHT, TrackElemType::FlatToRightBankedUp25 }, { false, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_UP_60, TRACK_BANK_NONE, TrackElemType::FlatToUp60 }, { false, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_CURVE_RIGHT_LARGE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TrackElemType::RightEighthToDiag }, { false, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_CURVE_RIGHT, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TrackElemType::RightQuarterTurn5Tiles }, { false, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_CURVE_RIGHT_SMALL, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TrackElemType::RightQuarterTurn3Tiles }, { false, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TRACK_CURVE_NONE, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TrackElemType::RightBankToDown25 }, { false, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TRACK_CURVE_NONE, TRACK_SLOPE_DOWN_25, TRACK_BANK_RIGHT, TrackElemType::RightBankedFlatToRightBankedDown25 }, { false, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TRACK_CURVE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TrackElemType::RightBankToFlat }, { false, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TRACK_CURVE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TrackElemType::RightBank }, { false, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TRACK_CURVE_NONE, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TrackElemType::RightBankToUp25 }, { false, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TRACK_CURVE_NONE, TRACK_SLOPE_UP_25, TRACK_BANK_RIGHT, TrackElemType::RightBankedFlatToRightBankedUp25 }, { false, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TRACK_CURVE_RIGHT_LARGE, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TrackElemType::RightEighthBankToDiag }, { false, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TRACK_CURVE_RIGHT, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TrackElemType::BankedRightQuarterTurn5Tiles }, { false, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TRACK_CURVE_RIGHT_SMALL, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TrackElemType::RightBankedQuarterTurn3Tiles }, { false, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TRACK_CURVE_RIGHT_SMALL, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TrackElemType::RightBankToRightQuarterTurn3TilesUp25 }, { false, TRACK_SLOPE_UP_25, TRACK_BANK_LEFT, TRACK_CURVE_LEFT_SMALL, TRACK_SLOPE_UP_25, TRACK_BANK_LEFT, TrackElemType::LeftBankedQuarterTurn3TileUp25 }, { false, TRACK_SLOPE_UP_25, TRACK_BANK_LEFT, TRACK_CURVE_LEFT, TRACK_SLOPE_UP_25, TRACK_BANK_LEFT, TrackElemType::LeftBankedQuarterTurn5TileUp25 }, { false, TRACK_SLOPE_UP_25, TRACK_BANK_LEFT, TRACK_CURVE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TrackElemType::LeftBankedUp25ToLeftBankedFlat }, { false, TRACK_SLOPE_UP_25, TRACK_BANK_LEFT, TRACK_CURVE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TrackElemType::LeftBankedUp25ToFlat }, { false, TRACK_SLOPE_UP_25, TRACK_BANK_LEFT, TRACK_CURVE_NONE, TRACK_SLOPE_UP_25, TRACK_BANK_LEFT, TrackElemType::Up25LeftBanked }, { false, TRACK_SLOPE_UP_25, TRACK_BANK_LEFT, TRACK_CURVE_NONE, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TrackElemType::LeftBankedUp25ToUp25 }, { false, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TRACK_CURVE_LEFT_SMALL, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TrackElemType::LeftQuarterTurn3TilesUp25 }, { false, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TRACK_CURVE_LEFT, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TrackElemType::LeftQuarterTurn5TilesUp25 }, { false, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TrackElemType::Up25ToLeftBank }, { false, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TrackElemType::Up25ToFlat }, { false, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TrackElemType::Up25ToRightBank }, { false, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_UP_25, TRACK_BANK_LEFT, TrackElemType::Up25ToLeftBankedUp25 }, { false, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TrackElemType::Up25 }, { false, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_UP_25, TRACK_BANK_RIGHT, TrackElemType::Up25ToRightBankedUp25 }, { false, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_UP_60, TRACK_BANK_NONE, TrackElemType::Up25ToUp60 }, { false, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TRACK_CURVE_RIGHT, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TrackElemType::RightQuarterTurn5TilesUp25 }, { false, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TRACK_CURVE_RIGHT_SMALL, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TrackElemType::RightQuarterTurn3TilesUp25 }, { false, TRACK_SLOPE_UP_25, TRACK_BANK_RIGHT, TRACK_CURVE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TrackElemType::RightBankedUp25ToFlat }, { false, TRACK_SLOPE_UP_25, TRACK_BANK_RIGHT, TRACK_CURVE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TrackElemType::RightBankedUp25ToRightBankedFlat }, { false, TRACK_SLOPE_UP_25, TRACK_BANK_RIGHT, TRACK_CURVE_NONE, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TrackElemType::RightBankedUp25ToUp25 }, { false, TRACK_SLOPE_UP_25, TRACK_BANK_RIGHT, TRACK_CURVE_NONE, TRACK_SLOPE_UP_25, TRACK_BANK_RIGHT, TrackElemType::Up25RightBanked }, { false, TRACK_SLOPE_UP_25, TRACK_BANK_RIGHT, TRACK_CURVE_RIGHT, TRACK_SLOPE_UP_25, TRACK_BANK_RIGHT, TrackElemType::RightBankedQuarterTurn5TileUp25 }, { false, TRACK_SLOPE_UP_25, TRACK_BANK_RIGHT, TRACK_CURVE_RIGHT_SMALL, TRACK_SLOPE_UP_25, TRACK_BANK_RIGHT, TrackElemType::RightBankedQuarterTurn3TileUp25 }, { false, TRACK_SLOPE_UP_60, TRACK_BANK_NONE, TRACK_CURVE_LEFT_SMALL, TRACK_SLOPE_UP_60, TRACK_BANK_NONE, TrackElemType::LeftQuarterTurn1TileUp60 }, { false, TRACK_SLOPE_UP_60, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TrackElemType::Up60ToFlat }, { false, TRACK_SLOPE_UP_60, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TrackElemType::Up60ToUp25 }, { false, TRACK_SLOPE_UP_60, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_UP_60, TRACK_BANK_NONE, TrackElemType::Up60 }, { false, TRACK_SLOPE_UP_60, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_UP_90, TRACK_BANK_NONE, TrackElemType::Up60ToUp90 }, { false, TRACK_SLOPE_UP_60, TRACK_BANK_NONE, TRACK_CURVE_RIGHT_SMALL, TRACK_SLOPE_UP_60, TRACK_BANK_NONE, TrackElemType::RightQuarterTurn1TileUp60 }, { false, TRACK_SLOPE_UP_90, TRACK_BANK_NONE, TRACK_CURVE_LEFT_SMALL, TRACK_SLOPE_UP_90, TRACK_BANK_NONE, TrackElemType::LeftQuarterTurn1TileUp90 }, { false, TRACK_SLOPE_UP_90, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_UP_60, TRACK_BANK_NONE, TrackElemType::Up90ToUp60 }, { false, TRACK_SLOPE_UP_90, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_UP_90, TRACK_BANK_NONE, TrackElemType::Up90 }, { false, TRACK_SLOPE_UP_90, TRACK_BANK_NONE, TRACK_CURVE_RIGHT_SMALL, TRACK_SLOPE_UP_90, TRACK_BANK_NONE, TrackElemType::RightQuarterTurn1TileUp90 }, }; /** rct2: 0x00993D1C */ static constexpr track_type_t AlternativeTrackTypes[TrackElemType::Count] = { 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::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 }; /** rct2: 0x0099DA34 */ static constexpr money32 TrackPricing[TrackElemType::Count] = { 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::InvertedUp90ToFlatQuarterLoopAlias / 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::RightLargeHalfLoopDown 884736, // TrackElemType::LeftLargeHalfLoopDown 221184, // TrackElemType::LeftFlyerTwistUp 221184, // TrackElemType::RightFlyerTwistUp 221184, // TrackElemType::LeftFlyerTwistDown 221184, // TrackElemType::RightFlyerTwistDown 294912, // TrackElemType::FlyerHalfLoopUp 294912, // TrackElemType::FlyerHalfLoopDown 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 }; /** rct2: 0x0099EA1C */ static constexpr track_type_t TrackElementMirrorMap[TrackElemType::Count] = { 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::LeftLargeHalfLoopDown, // TrackElemType::RightLargeHalfLoopDown TrackElemType::RightLargeHalfLoopDown, // TrackElemType::LeftLargeHalfLoopDown TrackElemType::RightFlyerTwistUp, // TrackElemType::LeftFlyerTwistUp TrackElemType::LeftFlyerTwistUp, // TrackElemType::RightFlyerTwistUp TrackElemType::RightFlyerTwistDown, // TrackElemType::LeftFlyerTwistDown TrackElemType::LeftFlyerTwistDown, // TrackElemType::RightFlyerTwistDown TrackElemType::FlyerHalfLoopUp, TrackElemType::FlyerHalfLoopDown, 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 }; /** rct2: 0x00999694 */ static constexpr uint32_t TrackHeightMarkerPositions[TrackElemType::Count] = { (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), // TrackElemType::InvertedUp90ToFlatQuarterLoopAlias / 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::RightLargeHalfLoopDown (1 << 0) | (1 << 6), // TrackElemType::LeftLargeHalfLoopDown (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::FlyerHalfLoopUp (1 << 0) | (1 << 3), // TrackElemType::FlyerHalfLoopDown (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 }; /** rct2: 0x00999A94 */ static constexpr uint8_t TrackSequenceElementAllowedWallEdges[TrackElemType::Count][MaxSequencesPerPiece] = { { 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::RightLargeHalfLoopDown { 0b1000, 0b1000, 0b1001, 0b0011, 0b0010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftLargeHalfLoopDown { 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::FlyerHalfLoopUp { 0, 0b1011, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlyerHalfLoopDown { 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 }; /** rct2: 0x0099423C */ static constexpr uint16_t TrackFlags[TrackElemType::Count] = { /* 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::RightLargeHalfLoopDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, /* TrackElemType::LeftLargeHalfLoopDown */ 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::FlyerHalfLoopUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, /* TrackElemType::FlyerHalfLoopDown */ 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, /* TrackElemType::RightHeartLineRoll */ TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, /* 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, }; // clang-format on /** rct2: 0x00997C9D */ // clang-format off static constexpr rct_trackdefinition TrackDefinitions[TrackElemType::Count] = { // TYPE VANGLE END VANGLE START BANK END BANK START PREVIEW Z OFFSET { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_FLAT { TRACK_STATION_END, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_END_STATION { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_BEGIN_STATION { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_MIDDLE_STATION { TRACK_FLAT, TRACK_SLOPE_UP_25, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_25_DEG_UP { TRACK_FLAT, TRACK_SLOPE_UP_60, TRACK_SLOPE_UP_60, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_60_DEG_UP { TRACK_FLAT, TRACK_SLOPE_UP_25, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_FLAT_TO_25_DEG_UP { TRACK_FLAT, TRACK_SLOPE_UP_60, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_25_DEG_UP_TO_60_DEG_UP { TRACK_FLAT, TRACK_SLOPE_UP_25, TRACK_SLOPE_UP_60, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_60_DEG_UP_TO_25_DEG_UP { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_25_DEG_UP_TO_FLAT { TRACK_FLAT, TRACK_SLOPE_DOWN_25, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_25_DEG_DOWN { TRACK_FLAT, TRACK_SLOPE_DOWN_60, TRACK_SLOPE_DOWN_60, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_60_DEG_DOWN { TRACK_FLAT, TRACK_SLOPE_DOWN_25, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_FLAT_TO_25_DEG_DOWN { TRACK_FLAT, TRACK_SLOPE_DOWN_60, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_25_DEG_DOWN_TO_60_DEG_DOWN { TRACK_FLAT, TRACK_SLOPE_DOWN_25, TRACK_SLOPE_DOWN_60, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_60_DEG_DOWN_TO_25_DEG_DOWN { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_25_DEG_DOWN_TO_FLAT { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_LEFT_QUARTER_TURN_5_TILES { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_RIGHT_QUARTER_TURN_5_TILES { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TRACK_BANK_NONE, 0 }, // ELEM_FLAT_TO_LEFT_BANK { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TRACK_BANK_NONE, 0 }, // ELEM_FLAT_TO_RIGHT_BANK { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_LEFT, 0 }, // ELEM_LEFT_BANK_TO_FLAT { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_RIGHT, 0 }, // ELEM_RIGHT_BANK_TO_FLAT { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TRACK_BANK_LEFT, 0 }, // ELEM_BANKED_LEFT_QUARTER_TURN_5_TILES { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TRACK_BANK_RIGHT, 0 }, // ELEM_BANKED_RIGHT_QUARTER_TURN_5_TILES { TRACK_FLAT, TRACK_SLOPE_UP_25, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_LEFT, 0 }, // ELEM_LEFT_BANK_TO_25_DEG_UP { TRACK_FLAT, TRACK_SLOPE_UP_25, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_RIGHT, 0 }, // ELEM_RIGHT_BANK_TO_25_DEG_UP { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_UP_25, TRACK_BANK_LEFT, TRACK_BANK_NONE, 0 }, // ELEM_25_DEG_UP_TO_LEFT_BANK { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_UP_25, TRACK_BANK_RIGHT, TRACK_BANK_NONE, 0 }, // ELEM_25_DEG_UP_TO_RIGHT_BANK { TRACK_FLAT, TRACK_SLOPE_DOWN_25, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_LEFT, 0 }, // ELEM_LEFT_BANK_TO_25_DEG_DOWN { TRACK_FLAT, TRACK_SLOPE_DOWN_25, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_RIGHT, 0 }, // ELEM_RIGHT_BANK_TO_25_DEG_DOWN { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_DOWN_25, TRACK_BANK_LEFT, TRACK_BANK_NONE, 0 }, // ELEM_25_DEG_DOWN_TO_LEFT_BANK { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_DOWN_25, TRACK_BANK_RIGHT, TRACK_BANK_NONE, 0 }, // ELEM_25_DEG_DOWN_TO_RIGHT_BANK { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TRACK_BANK_LEFT, 0 }, // ELEM_LEFT_BANK { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TRACK_BANK_RIGHT, 0 }, // ELEM_RIGHT_BANK { TRACK_FLAT, TRACK_SLOPE_UP_25, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_LEFT_QUARTER_TURN_5_TILES_25_DEG_UP { TRACK_FLAT, TRACK_SLOPE_UP_25, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_RIGHT_QUARTER_TURN_5_TILES_25_DEG_UP { TRACK_FLAT, TRACK_SLOPE_DOWN_25, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_LEFT_QUARTER_TURN_5_TILES_25_DEG_DOWN { TRACK_FLAT, TRACK_SLOPE_DOWN_25, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_RIGHT_QUARTER_TURN_5_TILES_25_DEG_DOWN { TRACK_S_BEND, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_S_BEND_LEFT { TRACK_S_BEND, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_S_BEND_RIGHT { TRACK_VERTICAL_LOOP, TRACK_SLOPE_DOWN_25, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TRACK_BANK_NONE, -48 }, // ELEM_LEFT_VERTICAL_LOOP { TRACK_VERTICAL_LOOP, TRACK_SLOPE_DOWN_25, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TRACK_BANK_NONE, -48 }, // ELEM_RIGHT_VERTICAL_LOOP { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_LEFT_QUARTER_TURN_3_TILES { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_RIGHT_QUARTER_TURN_3_TILES { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TRACK_BANK_LEFT, 0 }, // ELEM_LEFT_QUARTER_TURN_3_TILES_BANK { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TRACK_BANK_RIGHT, 0 }, // ELEM_RIGHT_QUARTER_TURN_3_TILES_BANK { TRACK_FLAT, TRACK_SLOPE_UP_25, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_LEFT_QUARTER_TURN_3_TILES_25_DEG_UP { TRACK_FLAT, TRACK_SLOPE_UP_25, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_RIGHT_QUARTER_TURN_3_TILES_25_DEG_UP { TRACK_FLAT, TRACK_SLOPE_DOWN_25, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_LEFT_QUARTER_TURN_3_TILES_25_DEG_DOWN { TRACK_FLAT, TRACK_SLOPE_DOWN_25, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_RIGHT_QUARTER_TURN_3_TILES_25_DEG_DOWN { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_LEFT_QUARTER_TURN_1_TILE { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_RIGHT_QUARTER_TURN_1_TILE { TRACK_TWIST, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_UPSIDE_DOWN, TRACK_BANK_NONE, 0 }, // ELEM_LEFT_TWIST_DOWN_TO_UP { TRACK_TWIST, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_UPSIDE_DOWN, TRACK_BANK_NONE, 0 }, // ELEM_RIGHT_TWIST_DOWN_TO_UP { TRACK_TWIST, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_UPSIDE_DOWN, 0 }, // ELEM_LEFT_TWIST_UP_TO_DOWN { TRACK_TWIST, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_UPSIDE_DOWN, 0 }, // ELEM_RIGHT_TWIST_UP_TO_DOWN { TRACK_HALF_LOOP, TRACK_SLOPE_NONE, TRACK_SLOPE_UP_25, TRACK_BANK_UPSIDE_DOWN, TRACK_BANK_NONE, 64 }, // ELEM_HALF_LOOP_UP { TRACK_HALF_LOOP, TRACK_SLOPE_DOWN_25, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_UPSIDE_DOWN, -64 }, // ELEM_HALF_LOOP_DOWN { TRACK_CORKSCREW, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_UPSIDE_DOWN, TRACK_BANK_NONE, 0 }, // ELEM_LEFT_CORKSCREW_UP { TRACK_CORKSCREW, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_UPSIDE_DOWN, TRACK_BANK_NONE, 0 }, // ELEM_RIGHT_CORKSCREW_UP { TRACK_CORKSCREW, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_UPSIDE_DOWN, -32 }, // ELEM_LEFT_CORKSCREW_DOWN { TRACK_CORKSCREW, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_UPSIDE_DOWN, -32 }, // ELEM_RIGHT_CORKSCREW_DOWN { TRACK_FLAT, TRACK_SLOPE_UP_60, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_FLAT_TO_60_DEG_UP { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_UP_60, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_60_DEG_UP_TO_FLAT { TRACK_FLAT, TRACK_SLOPE_DOWN_60, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_FLAT_TO_60_DEG_DOWN { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_DOWN_60, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_60_DEG_DOWN_TO_FLAT { TRACK_TOWER_BASE, TRACK_VANGLE_TOWER, TRACK_VANGLE_TOWER, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_TOWER_BASE { TRACK_TOWER_BASE, TRACK_VANGLE_TOWER, TRACK_VANGLE_TOWER, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_TOWER_SECTION { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_FLAT_COVERED { TRACK_FLAT, TRACK_SLOPE_UP_25, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_25_DEG_UP_COVERED { TRACK_FLAT, TRACK_SLOPE_UP_60, TRACK_SLOPE_UP_60, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_60_DEG_UP_COVERED { TRACK_FLAT, TRACK_SLOPE_UP_25, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_FLAT_TO_25_DEG_UP_COVERED { TRACK_FLAT, TRACK_SLOPE_UP_60, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_25_DEG_UP_TO_60_DEG_UP_COVERED { TRACK_FLAT, TRACK_SLOPE_UP_25, TRACK_SLOPE_UP_60, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_60_DEG_UP_TO_25_DEG_UP_COVERED { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_25_DEG_UP_TO_FLAT_COVERED { TRACK_FLAT, TRACK_SLOPE_DOWN_25, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_25_DEG_DOWN_COVERED { TRACK_FLAT, TRACK_SLOPE_DOWN_60, TRACK_SLOPE_DOWN_60, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_60_DEG_DOWN_COVERED { TRACK_FLAT, TRACK_SLOPE_DOWN_25, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_FLAT_TO_25_DEG_DOWN_COVERED { TRACK_FLAT, TRACK_SLOPE_DOWN_60, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_25_DEG_DOWN_TO_60_DEG_DOWN_COVERED { TRACK_FLAT, TRACK_SLOPE_DOWN_25, TRACK_SLOPE_DOWN_60, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_60_DEG_DOWN_TO_25_DEG_DOWN_COVERED { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_25_DEG_DOWN_TO_FLAT_COVERED { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_LEFT_QUARTER_TURN_5_TILES_COVERED { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_RIGHT_QUARTER_TURN_5_TILES_COVERED { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_S_BEND_LEFT_COVERED { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_S_BEND_RIGHT_COVERED { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_LEFT_QUARTER_TURN_3_TILES_COVERED { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_RIGHT_QUARTER_TURN_3_TILES_COVERED { TRACK_HELIX_SMALL, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TRACK_BANK_LEFT, 0 }, // ELEM_LEFT_HALF_BANKED_HELIX_UP_SMALL { TRACK_HELIX_SMALL, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TRACK_BANK_RIGHT, 0 }, // ELEM_RIGHT_HALF_BANKED_HELIX_UP_SMALL { TRACK_HELIX_SMALL, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TRACK_BANK_LEFT, 0 }, // ELEM_LEFT_HALF_BANKED_HELIX_DOWN_SMALL { TRACK_HELIX_SMALL, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TRACK_BANK_RIGHT, 0 }, // ELEM_RIGHT_HALF_BANKED_HELIX_DOWN_SMALL { TRACK_HELIX_SMALL, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TRACK_BANK_LEFT, 0 }, // ELEM_LEFT_HALF_BANKED_HELIX_UP_LARGE { TRACK_HELIX_SMALL, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TRACK_BANK_RIGHT, 0 }, // ELEM_RIGHT_HALF_BANKED_HELIX_UP_LARGE { TRACK_HELIX_SMALL, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TRACK_BANK_LEFT, 0 }, // ELEM_LEFT_HALF_BANKED_HELIX_DOWN_LARGE { TRACK_HELIX_SMALL, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TRACK_BANK_RIGHT, 0 }, // ELEM_RIGHT_HALF_BANKED_HELIX_DOWN_LARGE { TRACK_FLAT, TRACK_SLOPE_UP_60, TRACK_SLOPE_UP_60, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_LEFT_QUARTER_TURN_1_TILE_60_DEG_UP { TRACK_FLAT, TRACK_SLOPE_UP_60, TRACK_SLOPE_UP_60, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_RIGHT_QUARTER_TURN_1_TILE_60_DEG_UP { TRACK_FLAT, TRACK_SLOPE_DOWN_60, TRACK_SLOPE_DOWN_60, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_LEFT_QUARTER_TURN_1_TILE_60_DEG_DOWN { TRACK_FLAT, TRACK_SLOPE_DOWN_60, TRACK_SLOPE_DOWN_60, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_RIGHT_QUARTER_TURN_1_TILE_60_DEG_DOWN { TRACK_BRAKES, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_BRAKES { TRACK_BOOSTER, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_BOOSTER { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_INVERTED_90_DEG_UP_TO_FLAT_QUARTER_LOOP { TRACK_HELIX_LARGE, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TRACK_BANK_LEFT, 0 }, // ELEM_LEFT_QUARTER_BANKED_HELIX_LARGE_UP { TRACK_HELIX_LARGE, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TRACK_BANK_RIGHT, 0 }, // ELEM_RIGHT_QUARTER_BANKED_HELIX_LARGE_UP { TRACK_HELIX_LARGE, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TRACK_BANK_LEFT, 0 }, // ELEM_LEFT_QUARTER_BANKED_HELIX_LARGE_DOWN { TRACK_HELIX_LARGE, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TRACK_BANK_RIGHT, 0 }, // ELEM_RIGHT_QUARTER_BANKED_HELIX_LARGE_DOWN { TRACK_HELIX_LARGE_UNBANKED, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_LEFT_QUARTER_HELIX_LARGE_UP { TRACK_HELIX_LARGE_UNBANKED, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_RIGHT_QUARTER_HELIX_LARGE_UP { TRACK_HELIX_LARGE_UNBANKED, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_LEFT_QUARTER_HELIX_LARGE_DOWN { TRACK_HELIX_LARGE_UNBANKED, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_RIGHT_QUARTER_HELIX_LARGE_DOWN { TRACK_FLAT, TRACK_SLOPE_UP_25, TRACK_SLOPE_UP_25, TRACK_BANK_LEFT, TRACK_BANK_LEFT, 0 }, // ELEM_25_DEG_UP_LEFT_BANKED { TRACK_FLAT, TRACK_SLOPE_UP_25, TRACK_SLOPE_UP_25, TRACK_BANK_RIGHT, TRACK_BANK_RIGHT, 0 }, // ELEM_25_DEG_UP_RIGHT_BANKED { TRACK_WATERFALL, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_WATERFALL { TRACK_RAPIDS, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_RAPIDS { TRACK_ON_RIDE_PHOTO, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_ON_RIDE_PHOTO { TRACK_FLAT, TRACK_SLOPE_DOWN_25, TRACK_SLOPE_DOWN_25, TRACK_BANK_LEFT, TRACK_BANK_LEFT, 0 }, // ELEM_25_DEG_DOWN_LEFT_BANKED { TRACK_FLAT, TRACK_SLOPE_DOWN_25, TRACK_SLOPE_DOWN_25, TRACK_BANK_RIGHT, TRACK_BANK_RIGHT, 0 }, // ELEM_25_DEG_DOWN_RIGHT_BANKED { TRACK_WATER_SPLASH, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_WATER_SPLASH { TRACK_FLAT, TRACK_SLOPE_UP_60, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_FLAT_TO_60_DEG_UP_LONG_BASE { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_UP_60, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_60_DEG_UP_TO_FLAT_LONG_BASE { TRACK_WHIRLPOOL, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_WHIRLPOOL { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_DOWN_60, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_FLAT_TO_60_DEG_DOWN_LONG_BASE { TRACK_FLAT, TRACK_SLOPE_DOWN_60, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_60_DEG_UP_TO_FLAT_LONG_BASE_122 { TRACK_LIFT_HILL_CABLE, TRACK_SLOPE_DOWN_60, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_CABLE_LIFT_HILL { TRACK_REVERSE_FREEFALL, TRACK_VANGLE_REVERSE_FREEFALL, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_REVERSE_FREEFALL_SLOPE { TRACK_REVERSE_FREEFALL, TRACK_VANGLE_REVERSE_FREEFALL, TRACK_VANGLE_REVERSE_FREEFALL, TRACK_BANK_NONE,TRACK_BANK_NONE, 0 }, // ELEM_REVERSE_FREEFALL_VERTICAL { TRACK_FLAT, TRACK_SLOPE_UP_90, TRACK_SLOPE_UP_90, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_90_DEG_UP { TRACK_FLAT, TRACK_SLOPE_DOWN_90, TRACK_SLOPE_DOWN_90, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_90_DEG_DOWN { TRACK_FLAT, TRACK_SLOPE_UP_90, TRACK_SLOPE_UP_60, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_60_DEG_UP_TO_90_DEG_UP { TRACK_FLAT, TRACK_SLOPE_DOWN_60, TRACK_SLOPE_DOWN_90, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_90_DEG_DOWN_TO_60_DEG_DOWN { TRACK_FLAT, TRACK_SLOPE_UP_60, TRACK_SLOPE_UP_90, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_90_DEG_UP_TO_60_DEG_UP { TRACK_FLAT, TRACK_SLOPE_DOWN_90, TRACK_SLOPE_DOWN_60, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_60_DEG_DOWN_TO_90_DEG_DOWN { TRACK_BRAKE_FOR_DROP, TRACK_SLOPE_DOWN_60, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_BRAKE_FOR_DROP { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_LEFT_EIGHTH_TO_DIAG { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_RIGHT_EIGHTH_TO_DIAG { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_LEFT_EIGHTH_TO_ORTHOGONAL { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_RIGHT_EIGHTH_TO_ORTHOGONAL { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TRACK_BANK_LEFT, 0 }, // ELEM_LEFT_EIGHTH_BANK_TO_DIAG { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TRACK_BANK_RIGHT, 0 }, // ELEM_RIGHT_EIGHTH_BANK_TO_DIAG { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TRACK_BANK_LEFT, 0 }, // ELEM_LEFT_EIGHTH_BANK_TO_ORTHOGONAL { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TRACK_BANK_RIGHT, 0 }, // ELEM_RIGHT_EIGHTH_BANK_TO_ORTHOGONAL { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_DIAG_FLAT { TRACK_FLAT, TRACK_SLOPE_UP_25, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_DIAG_25_DEG_UP { TRACK_FLAT, TRACK_SLOPE_UP_60, TRACK_SLOPE_UP_60, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_DIAG_60_DEG_UP { TRACK_FLAT, TRACK_SLOPE_UP_25, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_DIAG_FLAT_TO_25_DEG_UP { TRACK_FLAT, TRACK_SLOPE_UP_60, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_DIAG_25_DEG_UP_TO_60_DEG_UP { TRACK_FLAT, TRACK_SLOPE_UP_25, TRACK_SLOPE_UP_60, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_DIAG_60_DEG_UP_TO_25_DEG_UP { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_DIAG_25_DEG_UP_TO_FLAT { TRACK_FLAT, TRACK_SLOPE_DOWN_25, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_DIAG_25_DEG_DOWN { TRACK_FLAT, TRACK_SLOPE_DOWN_60, TRACK_SLOPE_DOWN_60, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_DIAG_60_DEG_DOWN { TRACK_FLAT, TRACK_SLOPE_DOWN_25, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_DIAG_FLAT_TO_25_DEG_DOWN { TRACK_FLAT, TRACK_SLOPE_DOWN_60, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_DIAG_25_DEG_DOWN_TO_60_DEG_DOWN { TRACK_FLAT, TRACK_SLOPE_DOWN_25, TRACK_SLOPE_DOWN_60, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_DIAG_60_DEG_DOWN_TO_25_DEG_DOWN { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_DIAG_25_DEG_DOWN_TO_FLAT { TRACK_FLAT, TRACK_SLOPE_UP_60, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_DIAG_FLAT_TO_60_DEG_UP { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_UP_60, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_DIAG_60_DEG_UP_TO_FLAT { TRACK_FLAT, TRACK_SLOPE_DOWN_60, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_DIAG_FLAT_TO_60_DEG_DOWN { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_DOWN_60, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_DIAG_60_DEG_DOWN_TO_FLAT { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TRACK_BANK_NONE, 0 }, // ELEM_DIAG_FLAT_TO_LEFT_BANK { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TRACK_BANK_NONE, 0 }, // ELEM_DIAG_FLAT_TO_RIGHT_BANK { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_LEFT, 0 }, // ELEM_DIAG_LEFT_BANK_TO_FLAT { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_RIGHT, 0 }, // ELEM_DIAG_RIGHT_BANK_TO_FLAT { TRACK_FLAT, TRACK_SLOPE_UP_25, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_LEFT, 0 }, // ELEM_DIAG_LEFT_BANK_TO_25_DEG_UP { TRACK_FLAT, TRACK_SLOPE_UP_25, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_RIGHT, 0 }, // ELEM_DIAG_RIGHT_BANK_TO_25_DEG_UP { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_UP_25, TRACK_BANK_LEFT, TRACK_BANK_NONE, 0 }, // ELEM_DIAG_25_DEG_UP_TO_LEFT_BANK { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_UP_25, TRACK_BANK_RIGHT, TRACK_BANK_NONE, 0 }, // ELEM_DIAG_25_DEG_UP_TO_RIGHT_BANK { TRACK_FLAT, TRACK_SLOPE_DOWN_25, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_LEFT, 0 }, // ELEM_DIAG_LEFT_BANK_TO_25_DEG_DOWN { TRACK_FLAT, TRACK_SLOPE_DOWN_25, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_RIGHT, 0 }, // ELEM_DIAG_RIGHT_BANK_TO_25_DEG_DOWN { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_DOWN_25, TRACK_BANK_LEFT, TRACK_BANK_NONE, 0 }, // ELEM_DIAG_25_DEG_DOWN_TO_LEFT_BANK { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_DOWN_25, TRACK_BANK_RIGHT, TRACK_BANK_NONE, 0 }, // ELEM_DIAG_25_DEG_DOWN_TO_RIGHT_BANK { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TRACK_BANK_LEFT, 0 }, // ELEM_DIAG_LEFT_BANK { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TRACK_BANK_RIGHT, 0 }, // ELEM_DIAG_RIGHT_BANK { TRACK_LOG_FLUME_REVERSER, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_LOG_FLUME_REVERSER { TRACK_SPINNING_TUNNEL, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_SPINNING_TUNNEL { TRACK_BARREL_ROLL, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_UPSIDE_DOWN, TRACK_BANK_NONE, 0 }, // ELEM_LEFT_BARREL_ROLL_UP_TO_DOWN { TRACK_BARREL_ROLL, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_UPSIDE_DOWN, TRACK_BANK_NONE, 0 }, // ELEM_RIGHT_BARREL_ROLL_UP_TO_DOWN { TRACK_BARREL_ROLL, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_UPSIDE_DOWN, 0 }, // ELEM_LEFT_BARREL_ROLL_DOWN_TO_UP { TRACK_BARREL_ROLL, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_UPSIDE_DOWN, 0 }, // ELEM_RIGHT_BARREL_ROLL_DOWN_TO_UP { TRACK_FLAT, TRACK_SLOPE_UP_25, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_LEFT, 0 }, // ELEM_LEFT_BANK_TO_LEFT_QUARTER_TURN_3_TILES_25_DEG_UP { TRACK_FLAT, TRACK_SLOPE_UP_25, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_RIGHT, 0 }, // ELEM_RIGHT_BANK_TO_RIGHT_QUARTER_TURN_3_TILES_25_DEG_UP { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_DOWN_25, TRACK_BANK_LEFT, TRACK_BANK_NONE, 0 }, // ELEM_LEFT_QUARTER_TURN_3_TILES_25_DEG_DOWN_TO_LEFT_BANK { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_DOWN_25, TRACK_BANK_RIGHT, TRACK_BANK_NONE, 0 }, // ELEM_RIGHT_QUARTER_TURN_3_TILES_25_DEG_DOWN_TO_RIGHT_BANK { TRACK_POWERED_LIFT, TRACK_SLOPE_UP_25, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_POWERED_LIFT {TRACK_HALF_LOOP_LARGE, TRACK_SLOPE_NONE, TRACK_SLOPE_UP_25, TRACK_BANK_UPSIDE_DOWN, TRACK_BANK_NONE, 64 }, // ELEM_LEFT_LARGE_HALF_LOOP_UP {TRACK_HALF_LOOP_LARGE, TRACK_SLOPE_NONE, TRACK_SLOPE_UP_25, TRACK_BANK_UPSIDE_DOWN, TRACK_BANK_NONE, 64 }, // ELEM_RIGHT_LARGE_HALF_LOOP_UP {TRACK_HALF_LOOP_LARGE, TRACK_SLOPE_DOWN_25, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_UPSIDE_DOWN, -64 }, // ELEM_RIGHT_LARGE_HALF_LOOP_DOWN {TRACK_HALF_LOOP_LARGE, TRACK_SLOPE_DOWN_25, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_UPSIDE_DOWN, -64 }, // ELEM_LEFT_LARGE_HALF_LOOP_DOWN {TRACK_INLINE_TWIST_UNINVERTED, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_UPSIDE_DOWN, TRACK_BANK_NONE, 0 }, // ELEM_LEFT_FLYER_TWIST_UP {TRACK_INLINE_TWIST_UNINVERTED, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_UPSIDE_DOWN, TRACK_BANK_NONE, 0 }, // ELEM_RIGHT_FLYER_TWIST_UP {TRACK_INLINE_TWIST_INVERTED, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_UPSIDE_DOWN, TRACK_BANK_NONE, 0 }, // ELEM_LEFT_FLYER_TWIST_DOWN {TRACK_INLINE_TWIST_INVERTED, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_UPSIDE_DOWN, TRACK_BANK_NONE, 0 }, // ELEM_RIGHT_FLYER_TWIST_DOWN {TRACK_HALF_LOOP_UNINVERTED, TRACK_SLOPE_NONE, TRACK_SLOPE_UP_25, TRACK_BANK_UPSIDE_DOWN, TRACK_BANK_NONE, 64 }, // ELEM_FLYER_HALF_LOOP_UP {TRACK_HALF_LOOP_INVERTED, TRACK_SLOPE_DOWN_25, TRACK_SLOPE_NONE, TRACK_BANK_UPSIDE_DOWN, TRACK_BANK_NONE, -64 }, // ELEM_FLYER_HALF_LOOP_DOWN {TRACK_CORKSCREW_UNINVERTED, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_UPSIDE_DOWN, TRACK_BANK_NONE, 0 }, // ELEM_LEFT_FLYER_CORKSCREW_UP {TRACK_CORKSCREW_UNINVERTED, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_UPSIDE_DOWN, TRACK_BANK_NONE, 0 }, // ELEM_RIGHT_FLYER_CORKSCREW_UP {TRACK_CORKSCREW_INVERTED, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_UPSIDE_DOWN, TRACK_BANK_NONE, -32 }, // ELEM_LEFT_FLYER_CORKSCREW_DOWN {TRACK_CORKSCREW_INVERTED, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_UPSIDE_DOWN, TRACK_BANK_NONE, -32 }, // ELEM_RIGHT_FLYER_CORKSCREW_DOWN {TRACK_HEARTLINE_TRANSFER, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_HEARTLINE_TRANSFER_UP {TRACK_HEARTLINE_TRANSFER, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_HEARTLINE_TRANSFER_DOWN {TRACK_HEARTLINE_ROLL, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_LEFT_HEARTLINE_ROLL {TRACK_HEARTLINE_ROLL, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_RIGHT_HEARTLINE_ROLL {TRACK_MINI_GOLF_HOLE, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_MINI_GOLF_HOLE_A {TRACK_MINI_GOLF_HOLE, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_MINI_GOLF_HOLE_B {TRACK_MINI_GOLF_HOLE, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_MINI_GOLF_HOLE_C {TRACK_MINI_GOLF_HOLE, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_MINI_GOLF_HOLE_D {TRACK_MINI_GOLF_HOLE, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_MINI_GOLF_HOLE_E {TRACK_QUARTER_LOOP_INVERTED, TRACK_SLOPE_DOWN_90, TRACK_SLOPE_NONE, TRACK_BANK_UPSIDE_DOWN, TRACK_BANK_NONE, 0 }, // ELEM_MULTIDIM_INVERTED_FLAT_TO_90_DEG_QUARTER_LOOP_DOWN {TRACK_QUARTER_LOOP, TRACK_SLOPE_NONE, TRACK_SLOPE_UP_90, TRACK_BANK_UPSIDE_DOWN, TRACK_BANK_NONE, 0 }, // ELEM_90_DEG_TO_INVERTED_FLAT_QUARTER_LOOP_UP {TRACK_QUARTER_LOOP, TRACK_SLOPE_DOWN_90, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_UPSIDE_DOWN, 0 }, // ELEM_INVERTED_FLAT_TO_90_DEG_QUARTER_LOOP_DOWN { TRACK_LIFT_HILL_CURVED, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_LEFT_CURVED_LIFT_HILL { TRACK_LIFT_HILL_CURVED, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_RIGHT_CURVED_LIFT_HILL { TRACK_REVERSER, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_LEFT_REVERSER { TRACK_REVERSER, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_RIGHT_REVERSER { TRACK_SLOPE_TO_FLAT, TRACK_SLOPE_DOWN_90, TRACK_SLOPE_UP_90, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_AIR_THRUST_TOP_CAP { TRACK_SLOPE_TO_FLAT, TRACK_SLOPE_DOWN_90, TRACK_SLOPE_DOWN_90, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_AIR_THRUST_VERTICAL_DOWN { TRACK_SLOPE_TO_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_DOWN_90, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_AIR_THRUST_VERTICAL_DOWN_TO_LEVEL { TRACK_BLOCK_BRAKES, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_BLOCK_BRAKES { TRACK_FLAT, TRACK_SLOPE_UP_25, TRACK_SLOPE_UP_25, TRACK_BANK_LEFT, TRACK_BANK_LEFT, 0 }, // ELEM_LEFT_BANKED_QUARTER_TURN_3_TILE_25_DEG_UP { TRACK_FLAT, TRACK_SLOPE_UP_25, TRACK_SLOPE_UP_25, TRACK_BANK_RIGHT, TRACK_BANK_RIGHT, 0 }, // ELEM_RIGHT_BANKED_QUARTER_TURN_3_TILE_25_DEG_UP { TRACK_FLAT, TRACK_SLOPE_DOWN_25, TRACK_SLOPE_DOWN_25, TRACK_BANK_LEFT, TRACK_BANK_LEFT, 0 }, // ELEM_LEFT_BANKED_QUARTER_TURN_3_TILE_25_DEG_DOWN { TRACK_FLAT, TRACK_SLOPE_DOWN_25, TRACK_SLOPE_DOWN_25, TRACK_BANK_RIGHT, TRACK_BANK_RIGHT, 0 }, // ELEM_RIGHT_BANKED_QUARTER_TURN_3_TILE_25_DEG_DOWN { TRACK_FLAT, TRACK_SLOPE_UP_25, TRACK_SLOPE_UP_25, TRACK_BANK_LEFT, TRACK_BANK_LEFT, 0 }, // ELEM_LEFT_BANKED_QUARTER_TURN_5_TILE_25_DEG_UP { TRACK_FLAT, TRACK_SLOPE_UP_25, TRACK_SLOPE_UP_25, TRACK_BANK_RIGHT, TRACK_BANK_RIGHT, 0 }, // ELEM_RIGHT_BANKED_QUARTER_TURN_5_TILE_25_DEG_UP { TRACK_FLAT, TRACK_SLOPE_DOWN_25, TRACK_SLOPE_DOWN_25, TRACK_BANK_LEFT, TRACK_BANK_LEFT, 0 }, // ELEM_LEFT_BANKED_QUARTER_TURN_5_TILE_25_DEG_DOWN { TRACK_FLAT, TRACK_SLOPE_DOWN_25, TRACK_SLOPE_DOWN_25, TRACK_BANK_RIGHT, TRACK_BANK_RIGHT, 0 }, // ELEM_RIGHT_BANKED_QUARTER_TURN_5_TILE_25_DEG_DOWN { TRACK_FLAT, TRACK_SLOPE_UP_25, TRACK_SLOPE_UP_25, TRACK_BANK_LEFT, TRACK_BANK_NONE, 0 }, // ELEM_25_DEG_UP_TO_LEFT_BANKED_25_DEG_UP { TRACK_FLAT, TRACK_SLOPE_UP_25, TRACK_SLOPE_UP_25, TRACK_BANK_RIGHT, TRACK_BANK_NONE, 0 }, // ELEM_25_DEG_UP_TO_RIGHT_BANKED_25_DEG_UP { TRACK_FLAT, TRACK_SLOPE_UP_25, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TRACK_BANK_LEFT, 0 }, // ELEM_LEFT_BANKED_25_DEG_UP_TO_25_DEG_UP { TRACK_FLAT, TRACK_SLOPE_UP_25, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TRACK_BANK_RIGHT, 0 }, // ELEM_RIGHT_BANKED_25_DEG_UP_TO_25_DEG_UP { TRACK_FLAT, TRACK_SLOPE_DOWN_25, TRACK_SLOPE_DOWN_25, TRACK_BANK_LEFT, TRACK_BANK_NONE, 0 }, // ELEM_25_DEG_DOWN_TO_LEFT_BANKED_25_DEG_DOWN { TRACK_FLAT, TRACK_SLOPE_DOWN_25, TRACK_SLOPE_DOWN_25, TRACK_BANK_RIGHT, TRACK_BANK_NONE, 0 }, // ELEM_25_DEG_DOWN_TO_RIGHT_BANKED_25_DEG_DOWN { TRACK_FLAT, TRACK_SLOPE_DOWN_25, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TRACK_BANK_LEFT, 0 }, // ELEM_LEFT_BANKED_25_DEG_DOWN_TO_25_DEG_DOWN { TRACK_FLAT, TRACK_SLOPE_DOWN_25, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TRACK_BANK_RIGHT, 0 }, // ELEM_RIGHT_BANKED_25_DEG_DOWN_TO_25_DEG_DOWN { TRACK_FLAT, TRACK_SLOPE_UP_25, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TRACK_BANK_LEFT, 0 }, // ELEM_LEFT_BANKED_FLAT_TO_LEFT_BANKED_25_DEG_UP { TRACK_FLAT, TRACK_SLOPE_UP_25, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TRACK_BANK_RIGHT, 0 }, // ELEM_RIGHT_BANKED_FLAT_TO_RIGHT_BANKED_25_DEG_UP { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_UP_25, TRACK_BANK_LEFT, TRACK_BANK_LEFT, 0 }, // ELEM_LEFT_BANKED_25_DEG_UP_TO_LEFT_BANKED_FLAT { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_UP_25, TRACK_BANK_RIGHT, TRACK_BANK_RIGHT, 0 }, // ELEM_RIGHT_BANKED_25_DEG_UP_TO_RIGHT_BANKED_FLAT { TRACK_FLAT, TRACK_SLOPE_DOWN_25, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TRACK_BANK_LEFT, 0 }, // ELEM_LEFT_BANKED_FLAT_TO_LEFT_BANKED_25_DEG_DOWN { TRACK_FLAT, TRACK_SLOPE_DOWN_25, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TRACK_BANK_RIGHT, 0 }, // ELEM_RIGHT_BANKED_FLAT_TO_RIGHT_BANKED_25_DEG_DOWN { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_DOWN_25, TRACK_BANK_LEFT, TRACK_BANK_LEFT, 0 }, // ELEM_LEFT_BANKED_25_DEG_DOWN_TO_LEFT_BANKED_FLAT { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_DOWN_25, TRACK_BANK_RIGHT, TRACK_BANK_RIGHT, 0 }, // ELEM_RIGHT_BANKED_25_DEG_DOWN_TO_RIGHT_BANKED_FLAT { TRACK_FLAT, TRACK_SLOPE_UP_25, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TRACK_BANK_NONE, 0 }, // ELEM_FLAT_TO_LEFT_BANKED_25_DEG_UP { TRACK_FLAT, TRACK_SLOPE_UP_25, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TRACK_BANK_NONE, 0 }, // ELEM_FLAT_TO_RIGHT_BANKED_25_DEG_UP { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TRACK_BANK_LEFT, 0 }, // ELEM_LEFT_BANKED_25_DEG_UP_TO_FLAT { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TRACK_BANK_RIGHT, 0 }, // ELEM_RIGHT_BANKED_25_DEG_UP_TO_FLAT { TRACK_FLAT, TRACK_SLOPE_DOWN_25, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TRACK_BANK_NONE, 0 }, // ELEM_FLAT_TO_LEFT_BANKED_25_DEG_DOWN { TRACK_FLAT, TRACK_SLOPE_DOWN_25, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TRACK_BANK_NONE, 0 }, // ELEM_FLAT_TO_RIGHT_BANKED_25_DEG_DOWN { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TRACK_BANK_LEFT, 0 }, // ELEM_LEFT_BANKED_25_DEG_DOWN_TO_FLAT { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TRACK_BANK_RIGHT, 0 }, // ELEM_RIGHT_BANKED_25_DEG_DOWN_TO_FLAT { TRACK_FLAT, TRACK_SLOPE_UP_90, TRACK_SLOPE_UP_90, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_LEFT_QUARTER_TURN_1_TILE_90_DEG_UP { TRACK_FLAT, TRACK_SLOPE_UP_90, TRACK_SLOPE_UP_90, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_RIGHT_QUARTER_TURN_1_TILE_90_DEG_UP { TRACK_FLAT, TRACK_SLOPE_DOWN_90, TRACK_SLOPE_DOWN_90, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_LEFT_QUARTER_TURN_1_TILE_90_DEG_DOWN { TRACK_FLAT, TRACK_SLOPE_DOWN_90, TRACK_SLOPE_DOWN_90, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_RIGHT_QUARTER_TURN_1_TILE_90_DEG_DOWN { TRACK_QUARTER_LOOP_UNINVERTED,TRACK_SLOPE_NONE, TRACK_SLOPE_UP_90, TRACK_BANK_UPSIDE_DOWN, TRACK_BANK_NONE, 0 }, // ELEM_MULTIDIM_90_DEG_UP_TO_INVERTED_FLAT_QUARTER_LOOP { TRACK_QUARTER_LOOP_UNINVERTED,TRACK_SLOPE_DOWN_90, TRACK_SLOPE_NONE, TRACK_BANK_UPSIDE_DOWN, TRACK_BANK_NONE, 0 }, // ELEM_MULTIDIM_FLAT_TO_90_DEG_DOWN_QUARTER_LOOP { TRACK_QUARTER_LOOP_INVERTED, TRACK_SLOPE_NONE, TRACK_SLOPE_UP_90, TRACK_BANK_UPSIDE_DOWN, TRACK_BANK_NONE, 0 }, // 255 { TRACK_ROTATION_CONTROL_TOGGLE,TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_ROTATION_CONTROL_TOGGLE { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // TrackElemType::FlatTrack1x4A { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // TrackElemType::FlatTrack2x2 { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // TrackElemType::FlatTrack4x4 { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // TrackElemType::FlatTrack2x4 { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // TrackElemType::FlatTrack1x5 { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // TrackElemType::FlatTrack1x1A { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // TrackElemType::FlatTrack1x4B { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // TrackElemType::FlatTrack1x1B { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, -40 }, // TrackElemType::FlatTrack1x4C { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // TrackElemType::FlatTrack3x3 }; // clang-format on constexpr static uint8_t TrackTypeToSpinFunction[TrackElemType::Count] = { NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, L8_SPIN, R8_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, L8_SPIN, R8_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, L8_SPIN, R8_SPIN, L8_SPIN, R8_SPIN, LR_SPIN, RL_SPIN, NO_SPIN, NO_SPIN, L7_SPIN, R7_SPIN, L7_SPIN, R7_SPIN, L7_SPIN, R7_SPIN, L7_SPIN, R7_SPIN, L5_SPIN, R5_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, L8_SPIN, R8_SPIN, LR_SPIN, RL_SPIN, L7_SPIN, R7_SPIN, L7_SPIN, R7_SPIN, L7_SPIN, R7_SPIN, L8_SPIN, R8_SPIN, L8_SPIN, R8_SPIN, L5_SPIN, R5_SPIN, L5_SPIN, R5_SPIN, NO_SPIN, RC_SPIN, NO_SPIN, L8_SPIN, R8_SPIN, L8_SPIN, R8_SPIN, L8_SPIN, R8_SPIN, L8_SPIN, R8_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, SP_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, R5_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, L9_SPIN, R9_SPIN, L9_SPIN, R9_SPIN, L9_SPIN, R9_SPIN, L9_SPIN, R9_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, L7_SPIN, R7_SPIN, L7_SPIN, R7_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, L7_SPIN, R7_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, L7_SPIN, R7_SPIN, L7_SPIN, R7_SPIN, L8_SPIN, R8_SPIN, L8_SPIN, R8_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN }; namespace OpenRCT2 { namespace TrackMetaData { static std::vector _trackElementDescriptors; void Init() { _trackElementDescriptors.clear(); _trackElementDescriptors.reserve(TrackElemType::Count); TrackElementDescriptor desc; for (int i = 0; i < TrackElemType::Count; i++) { desc.AlternativeType = AlternativeTrackTypes[i]; desc.Block = const_cast(TrackBlocks[i]); desc.Coordinates = TrackCoordinates[i]; desc.CurveChain = gTrackCurveChain[i]; desc.Flags = TrackFlags[i]; desc.HeightMarkerPositions = TrackHeightMarkerPositions[i]; desc.MirrorElement = TrackElementMirrorMap[i]; desc.PieceLength = TrackPieceLengths[i]; desc.Price = TrackPricing[i]; desc.Definition = TrackDefinitions[i]; desc.SpinFunction = TrackTypeToSpinFunction[i]; for (uint8_t j = 0; j < MaxSequencesPerPiece; j++) { desc.SequenceElementAllowedWallEdges[j] = TrackSequenceElementAllowedWallEdges[i][j]; desc.SequenceProperties[j] = TrackSequenceProperties[i][j]; } _trackElementDescriptors.push_back(desc); } } const TrackElementDescriptor& GetTrackElementDescriptor(const uint32_t type) { return _trackElementDescriptors[type]; } } // namespace TrackMetaData } // namespace OpenRCT2