OpenRCT2/src/openrct2/ride/TrackData.cpp

5469 lines
349 KiB
C++

/*****************************************************************************
* 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 <cstdint>
#include <iterator>
// 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<const rct_preview_track*, TrackElemType::Count> 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<TrackElementDescriptor> _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<rct_preview_track*>(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