1 /***************************************************************************** 2 * Copyright (c) 2014-2020 OpenRCT2 developers 3 * 4 * For a complete list of all authors, please refer to contributors.md 5 * Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2 6 * 7 * OpenRCT2 is licensed under the GNU General Public License version 3. 8 *****************************************************************************/ 9 10 #include "TrackData.h" 11 12 #include "Track.h" 13 #include "TrackPaint.h" 14 15 #include <cstdint> 16 #include <iterator> 17 18 // clang-format off 19 static constexpr rct_track_coordinates TrackCoordinates[TrackElemType::Count] = { 20 { 0, 0, 0, 0, 0, 0 }, // ELEM_FLAT 21 { 0, 0, 0, 0, 0, 0 }, // ELEM_END_STATION 22 { 0, 0, 0, 0, 0, 0 }, // ELEM_BEGIN_STATION 23 { 0, 0, 0, 0, 0, 0 }, // ELEM_MIDDLE_STATION 24 { 0, 0, 0, 16, 0, 0 }, // ELEM_25_DEG_UP 25 { 0, 0, 0, 64, 0, 0 }, // ELEM_60_DEG_UP 26 { 0, 0, 0, 8, 0, 0 }, // ELEM_FLAT_TO_25_DEG_UP 27 { 0, 0, 0, 32, 0, 0 }, // ELEM_25_DEG_UP_TO_60_DEG_UP 28 { 0, 0, 0, 32, 0, 0 }, // ELEM_60_DEG_UP_TO_25_DEG_UP 29 { 0, 0, 0, 8, 0, 0 }, // ELEM_25_DEG_UP_TO_FLAT 30 { 0, 0, 16, 0, 0, 0 }, // ELEM_25_DEG_DOWN 31 { 0, 0, 64, 0, 0, 0 }, // ELEM_60_DEG_DOWN 32 { 0, 0, 8, 0, 0, 0 }, // ELEM_FLAT_TO_25_DEG_DOWN 33 { 0, 0, 32, 0, 0, 0 }, // ELEM_25_DEG_DOWN_TO_60_DEG_DOWN 34 { 0, 0, 32, 0, 0, 0 }, // ELEM_60_DEG_DOWN_TO_25_DEG_DOWN 35 { 0, 0, 8, 0, 0, 0 }, // ELEM_25_DEG_DOWN_TO_FLAT 36 { 0, 3, 0, 0, -64, -64 }, // ELEM_LEFT_QUARTER_TURN_5_TILES 37 { 0, 1, 0, 0, -64, 64 }, // ELEM_RIGHT_QUARTER_TURN_5_TILES 38 { 0, 0, 0, 0, 0, 0 }, // ELEM_FLAT_TO_LEFT_BANK 39 { 0, 0, 0, 0, 0, 0 }, // ELEM_FLAT_TO_RIGHT_BANK 40 { 0, 0, 0, 0, 0, 0 }, // ELEM_LEFT_BANK_TO_FLAT 41 { 0, 0, 0, 0, 0, 0 }, // ELEM_RIGHT_BANK_TO_FLAT 42 { 0, 3, 0, 0, -64, -64 }, // ELEM_BANKED_LEFT_QUARTER_TURN_5_TILES 43 { 0, 1, 0, 0, -64, 64 }, // ELEM_BANKED_RIGHT_QUARTER_TURN_5_TILES 44 { 0, 0, 0, 8, 0, 0 }, // ELEM_LEFT_BANK_TO_25_DEG_UP 45 { 0, 0, 0, 8, 0, 0 }, // ELEM_RIGHT_BANK_TO_25_DEG_UP 46 { 0, 0, 0, 8, 0, 0 }, // ELEM_25_DEG_UP_TO_LEFT_BANK 47 { 0, 0, 0, 8, 0, 0 }, // ELEM_25_DEG_UP_TO_RIGHT_BANK 48 { 0, 0, 8, 0, 0, 0 }, // ELEM_LEFT_BANK_TO_25_DEG_DOWN 49 { 0, 0, 8, 0, 0, 0 }, // ELEM_RIGHT_BANK_TO_25_DEG_DOWN 50 { 0, 0, 8, 0, 0, 0 }, // ELEM_25_DEG_DOWN_TO_LEFT_BANK 51 { 0, 0, 8, 0, 0, 0 }, // ELEM_25_DEG_DOWN_TO_RIGHT_BANK 52 { 0, 0, 0, 0, 0, 0 }, // ELEM_LEFT_BANK 53 { 0, 0, 0, 0, 0, 0 }, // ELEM_RIGHT_BANK 54 { 0, 3, 0, 64, -64, -64 }, // ELEM_LEFT_QUARTER_TURN_5_TILES_25_DEG_UP 55 { 0, 1, 0, 64, -64, 64 }, // ELEM_RIGHT_QUARTER_TURN_5_TILES_25_DEG_UP 56 { 0, 3, 64, 0, -64, -64 }, // ELEM_LEFT_QUARTER_TURN_5_TILES_25_DEG_DOWN 57 { 0, 1, 64, 0, -64, 64 }, // ELEM_RIGHT_QUARTER_TURN_5_TILES_25_DEG_DOWN 58 { 0, 0, 0, 0, -64, -32 }, // ELEM_S_BEND_LEFT 59 { 0, 0, 0, 0, -64, 32 }, // ELEM_S_BEND_RIGHT 60 { 0, 0, 0, 0, -32, -32 }, // ELEM_LEFT_VERTICAL_LOOP 61 { 0, 0, 0, 0, -32, 32 }, // ELEM_RIGHT_VERTICAL_LOOP 62 { 0, 3, 0, 0, -32, -32 }, // ELEM_LEFT_QUARTER_TURN_3_TILES 63 { 0, 1, 0, 0, -32, 32 }, // ELEM_RIGHT_QUARTER_TURN_3_TILES 64 { 0, 3, 0, 0, -32, -32 }, // ELEM_LEFT_QUARTER_TURN_3_TILES_BANK 65 { 0, 1, 0, 0, -32, 32 }, // ELEM_RIGHT_QUARTER_TURN_3_TILES_BANK 66 { 0, 3, 0, 32, -32, -32 }, // ELEM_LEFT_QUARTER_TURN_3_TILES_25_DEG_UP 67 { 0, 1, 0, 32, -32, 32 }, // ELEM_RIGHT_QUARTER_TURN_3_TILES_25_DEG_UP 68 { 0, 3, 32, 0, -32, -32 }, // ELEM_LEFT_QUARTER_TURN_3_TILES_25_DEG_DOWN 69 { 0, 1, 32, 0, -32, 32 }, // ELEM_RIGHT_QUARTER_TURN_3_TILES_25_DEG_DOWN 70 { 0, 3, 0, 0, 0, 0 }, // ELEM_LEFT_QUARTER_TURN_1_TILE 71 { 0, 1, 0, 0, 0, 0 }, // ELEM_RIGHT_QUARTER_TURN_1_TILE 72 { 0, 0, 0, 16, -64, 0 }, // ELEM_LEFT_TWIST_DOWN_TO_UP 73 { 0, 0, 0, 16, -64, 0 }, // ELEM_RIGHT_TWIST_DOWN_TO_UP 74 { 0, 0, 0, -16, -64, 0 }, // ELEM_LEFT_TWIST_UP_TO_DOWN 75 { 0, 0, 0, -16, -64, 0 }, // ELEM_RIGHT_TWIST_UP_TO_DOWN 76 { 0, 2, 0, 152, -32, 0 }, // ELEM_HALF_LOOP_UP 77 { 0, 2, 0, -152, 32, 0 }, // ELEM_HALF_LOOP_DOWN 78 { 0, 3, 0, 80, -32, -32 }, // ELEM_LEFT_CORKSCREW_UP 79 { 0, 1, 0, 80, -32, 32 }, // ELEM_RIGHT_CORKSCREW_UP 80 { 0, 3, 0, -80, -32, -32 }, // ELEM_LEFT_CORKSCREW_DOWN 81 { 0, 1, 0, -80, -32, 32 }, // ELEM_RIGHT_CORKSCREW_DOWN 82 { 0, 0, 0, 24, 0, 0 }, // ELEM_FLAT_TO_60_DEG_UP 83 { 0, 0, 0, 24, 0, 0 }, // ELEM_60_DEG_UP_TO_FLAT 84 { 0, 0, 24, 0, 0, 0 }, // ELEM_FLAT_TO_60_DEG_DOWN 85 { 0, 0, 24, 0, 0, 0 }, // ELEM_60_DEG_DOWN_TO_FLAT 86 { 0, 0, 0, 96, 32, 0 }, // ELEM_TOWER_BASE 87 { 0, 0, 0, 32, 32, 0 }, // ELEM_TOWER_SECTION 88 { 0, 0, 0, 0, 0, 0 }, // ELEM_FLAT_COVERED 89 { 0, 0, 0, 16, 0, 0 }, // ELEM_25_DEG_UP_COVERED 90 { 0, 0, 0, 64, 0, 0 }, // ELEM_60_DEG_UP_COVERED 91 { 0, 0, 0, 8, 0, 0 }, // ELEM_FLAT_TO_25_DEG_UP_COVERED 92 { 0, 0, 0, 32, 0, 0 }, // ELEM_25_DEG_UP_TO_60_DEG_UP_COVERED 93 { 0, 0, 0, 32, 0, 0 }, // ELEM_60_DEG_UP_TO_25_DEG_UP_COVERED 94 { 0, 0, 0, 8, 0, 0 }, // ELEM_25_DEG_UP_TO_FLAT_COVERED 95 { 0, 0, 16, 0, 0, 0 }, // ELEM_25_DEG_DOWN_COVERED 96 { 0, 0, 64, 0, 0, 0 }, // ELEM_60_DEG_DOWN_COVERED 97 { 0, 0, 8, 0, 0, 0 }, // ELEM_FLAT_TO_25_DEG_DOWN_COVERED 98 { 0, 0, 32, 0, 0, 0 }, // ELEM_25_DEG_DOWN_TO_60_DEG_DOWN_COVERED 99 { 0, 0, 32, 0, 0, 0 }, // ELEM_60_DEG_DOWN_TO_25_DEG_DOWN_COVERED 100 { 0, 0, 8, 0, 0, 0 }, // ELEM_25_DEG_DOWN_TO_FLAT_COVERED 101 { 0, 3, 0, 0, -64, -64 }, // ELEM_LEFT_QUARTER_TURN_5_TILES_COVERED 102 { 0, 1, 0, 0, -64, 64 }, // ELEM_RIGHT_QUARTER_TURN_5_TILES_COVERED 103 { 0, 0, 0, 0, -64, -32 }, // ELEM_S_BEND_LEFT_COVERED 104 { 0, 0, 0, 0, -64, 32 }, // ELEM_S_BEND_RIGHT_COVERED 105 { 0, 3, 0, 0, -32, -32 }, // ELEM_LEFT_QUARTER_TURN_3_TILES_COVERED 106 { 0, 1, 0, 0, -32, 32 }, // ELEM_RIGHT_QUARTER_TURN_3_TILES_COVERED 107 { 0, 2, 0, 16, 0, -96 }, // ELEM_LEFT_HALF_BANKED_HELIX_UP_SMALL 108 { 0, 2, 0, 16, 0, 96 }, // ELEM_RIGHT_HALF_BANKED_HELIX_UP_SMALL 109 { 0, 2, 16, 0, 0, -96 }, // ELEM_LEFT_HALF_BANKED_HELIX_DOWN_SMALL 110 { 0, 2, 16, 0, 0, 96 }, // ELEM_RIGHT_HALF_BANKED_HELIX_DOWN_SMALL 111 { 0, 2, 0, 16, 0, -160 }, // ELEM_LEFT_HALF_BANKED_HELIX_UP_LARGE 112 { 0, 2, 0, 16, 0, 160 }, // ELEM_RIGHT_HALF_BANKED_HELIX_UP_LARGE 113 { 0, 2, 16, 0, 0, -160 }, // ELEM_LEFT_HALF_BANKED_HELIX_DOWN_LARGE 114 { 0, 2, 16, 0, 0, 160 }, // ELEM_RIGHT_HALF_BANKED_HELIX_DOWN_LARGE 115 { 0, 3, 0, 64, 0, 0 }, // ELEM_LEFT_QUARTER_TURN_1_TILE_60_DEG_UP 116 { 0, 1, 0, 64, 0, 0 }, // ELEM_RIGHT_QUARTER_TURN_1_TILE_60_DEG_UP 117 { 0, 3, 64, 0, 0, 0 }, // ELEM_LEFT_QUARTER_TURN_1_TILE_60_DEG_DOWN 118 { 0, 1, 64, 0, 0, 0 }, // ELEM_RIGHT_QUARTER_TURN_1_TILE_60_DEG_DOWN 119 { 0, 0, 0, 0, 0, 0 }, // ELEM_BRAKES 120 { 0, 0, 0, 0, 0, 0 }, // ELEM_ROTATION_CONTROL_TOGGLE 121 { 0, 0, 0, 0, 0, 0 }, // ELEM_INVERTED_90_DEG_UP_TO_FLAT_QUARTER_LOOP 122 { 0, 3, 0, 16, -64, -64 }, // ELEM_LEFT_QUARTER_BANKED_HELIX_LARGE_UP 123 { 0, 1, 0, 16, -64, 64 }, // ELEM_RIGHT_QUARTER_BANKED_HELIX_LARGE_UP 124 { 0, 3, 16, 0, -64, -64 }, // ELEM_LEFT_QUARTER_BANKED_HELIX_LARGE_DOWN 125 { 0, 1, 16, 0, -64, 64 }, // ELEM_RIGHT_QUARTER_BANKED_HELIX_LARGE_DOWN 126 { 0, 3, 0, 16, -64, -64 }, // ELEM_LEFT_QUARTER_HELIX_LARGE_UP 127 { 0, 1, 0, 16, -64, 64 }, // ELEM_RIGHT_QUARTER_HELIX_LARGE_UP 128 { 0, 3, 16, 0, -64, -64 }, // ELEM_LEFT_QUARTER_HELIX_LARGE_DOWN 129 { 0, 1, 16, 0, -64, 64 }, // ELEM_RIGHT_QUARTER_HELIX_LARGE_DOWN 130 { 0, 0, 0, 16, 0, 0 }, // ELEM_25_DEG_UP_LEFT_BANKED 131 { 0, 0, 0, 16, 0, 0 }, // ELEM_25_DEG_UP_RIGHT_BANKED 132 { 0, 0, 0, 0, 0, 0 }, // ELEM_WATERFALL 133 { 0, 0, 0, 0, 0, 0 }, // ELEM_RAPIDS 134 { 0, 0, 0, 0, 0, 0 }, // ELEM_ON_RIDE_PHOTO 135 { 0, 0, 16, 0, 0, 0 }, // ELEM_25_DEG_DOWN_LEFT_BANKED 136 { 0, 0, 16, 0, 0, 0 }, // ELEM_25_DEG_DOWN_RIGHT_BANKED 137 { 0, 0, 16, 16, -128, 0 }, // ELEM_WATER_SPLASH 138 { 0, 0, 0, 88, -96, 0 }, // ELEM_FLAT_TO_60_DEG_UP_LONG_BASE 139 { 0, 0, 0, 88, -96, 0 }, // ELEM_60_DEG_UP_TO_FLAT_LONG_BASE 140 { 0, 0, 0, 0, 0, 0 }, // ELEM_WHIRLPOOL 141 { 0, 0, 88, 0, -96, 0 }, // ELEM_60_DEG_DOWN_TO_FLAT_LONG_BASE 142 { 0, 0, 88, 0, -96, 0 }, // ELEM_FLAT_TO_60_DEG_DOWN_LONG_BASE 143 { 0, 0, 0, -96, -96, 0 }, // ELEM_CABLE_LIFT_HILL 144 { 0, 0, 0, 240, -160, 0 }, // ELEM_REVERSE_FREEFALL_SLOPE 145 { 0, 0, 0, 80, 32, 0 }, // ELEM_REVERSE_FREEFALL_VERTICAL 146 { 0, 0, 0, 32, 32, 0 }, // ELEM_90_DEG_UP 147 { 0, 0, 32, 0, 32, 0 }, // ELEM_90_DEG_DOWN 148 { 0, 0, 0, 56, 32, 0 }, // ELEM_60_DEG_UP_TO_90_DEG_UP 149 { 0, 0, 56, 0, 0, 0 }, // ELEM_90_DEG_DOWN_TO_60_DEG_DOWN 150 { 0, 0, 0, 56, 0, 0 }, // ELEM_90_DEG_UP_TO_60_DEG_UP 151 { 0, 0, 56, 0, 32, 0 }, // ELEM_60_DEG_DOWN_TO_90_DEG_DOWN 152 { 0, 0, 24, 0, 0, 0 }, // ELEM_BRAKE_FOR_DROP 153 { 0, 7, 0, 0, -64, -32 }, // ELEM_LEFT_EIGHTH_TO_DIAG 154 { 0, 4, 0, 0, -64, 32 }, // ELEM_RIGHT_EIGHTH_TO_DIAG 155 { 4, 0, 0, 0, -64, 32 }, // ELEM_LEFT_EIGHTH_TO_ORTHOGONAL 156 { 4, 1, 0, 0, -32, 64 }, // ELEM_RIGHT_EIGHTH_TO_ORTHOGONAL 157 { 0, 7, 0, 0, -64, -32 }, // ELEM_LEFT_EIGHTH_BANK_TO_DIAG 158 { 0, 4, 0, 0, -64, 32 }, // ELEM_RIGHT_EIGHTH_BANK_TO_DIAG 159 { 4, 0, 0, 0, -64, 32 }, // ELEM_LEFT_EIGHTH_BANK_TO_ORTHOGONAL 160 { 4, 1, 0, 0, -32, 64 }, // ELEM_RIGHT_EIGHTH_BANK_TO_ORTHOGONAL 161 { 4, 4, 0, 0, -32, 32 }, // ELEM_DIAG_FLAT 162 { 4, 4, 0, 16, -32, 32 }, // ELEM_DIAG_25_DEG_UP 163 { 4, 4, 0, 64, -32, 32 }, // ELEM_DIAG_60_DEG_UP 164 { 4, 4, 0, 8, -32, 32 }, // ELEM_DIAG_FLAT_TO_25_DEG_UP 165 { 4, 4, 0, 32, -32, 32 }, // ELEM_DIAG_25_DEG_UP_TO_60_DEG_UP 166 { 4, 4, 0, 32, -32, 32 }, // ELEM_DIAG_60_DEG_UP_TO_25_DEG_UP 167 { 4, 4, 0, 8, -32, 32 }, // ELEM_DIAG_25_DEG_UP_TO_FLAT 168 { 4, 4, 16, 0, -32, 32 }, // ELEM_DIAG_25_DEG_DOWN 169 { 4, 4, 64, 0, -32, 32 }, // ELEM_DIAG_60_DEG_DOWN 170 { 4, 4, 8, 0, -32, 32 }, // ELEM_DIAG_FLAT_TO_25_DEG_DOWN 171 { 4, 4, 32, 0, -32, 32 }, // ELEM_DIAG_25_DEG_DOWN_TO_60_DEG_DOWN 172 { 4, 4, 32, 0, -32, 32 }, // ELEM_DIAG_60_DEG_DOWN_TO_25_DEG_DOWN 173 { 4, 4, 8, 0, -32, 32 }, // ELEM_DIAG_25_DEG_DOWN_TO_FLAT 174 { 4, 4, 0, 24, -32, 32 }, // ELEM_DIAG_FLAT_TO_60_DEG_UP 175 { 4, 4, 0, 24, -32, 32 }, // ELEM_DIAG_60_DEG_UP_TO_FLAT 176 { 4, 4, 24, 0, -32, 32 }, // ELEM_DIAG_FLAT_TO_60_DEG_DOWN 177 { 4, 4, 24, 0, -32, 32 }, // ELEM_DIAG_60_DEG_DOWN_TO_FLAT 178 { 4, 4, 0, 0, -32, 32 }, // ELEM_DIAG_FLAT_TO_LEFT_BANK 179 { 4, 4, 0, 0, -32, 32 }, // ELEM_DIAG_FLAT_TO_RIGHT_BANK 180 { 4, 4, 0, 0, -32, 32 }, // ELEM_DIAG_LEFT_BANK_TO_FLAT 181 { 4, 4, 0, 0, -32, 32 }, // ELEM_DIAG_RIGHT_BANK_TO_FLAT 182 { 4, 4, 0, 8, -32, 32 }, // ELEM_DIAG_LEFT_BANK_TO_25_DEG_UP 183 { 4, 4, 0, 8, -32, 32 }, // ELEM_DIAG_RIGHT_BANK_TO_25_DEG_UP 184 { 4, 4, 0, 8, -32, 32 }, // ELEM_DIAG_25_DEG_UP_TO_LEFT_BANK 185 { 4, 4, 0, 8, -32, 32 }, // ELEM_DIAG_25_DEG_UP_TO_RIGHT_BANK 186 { 4, 4, 8, 0, -32, 32 }, // ELEM_DIAG_LEFT_BANK_TO_25_DEG_DOWN 187 { 4, 4, 8, 0, -32, 32 }, // ELEM_DIAG_RIGHT_BANK_TO_25_DEG_DOWN 188 { 4, 4, 8, 0, -32, 32 }, // ELEM_DIAG_25_DEG_DOWN_TO_LEFT_BANK 189 { 4, 4, 8, 0, -32, 32 }, // ELEM_DIAG_25_DEG_DOWN_TO_RIGHT_BANK 190 { 4, 4, 0, 0, -32, 32 }, // ELEM_DIAG_LEFT_BANK 191 { 4, 4, 0, 0, -32, 32 }, // ELEM_DIAG_RIGHT_BANK 192 { 0, 0, 0, 0, 0, 0 }, // ELEM_LOG_FLUME_REVERSER 193 { 0, 0, 0, 0, 0, 0 }, // ELEM_SPINNING_TUNNEL 194 { 0, 0, 0, 32, -64, 0 }, // ELEM_LEFT_BARREL_ROLL_UP_TO_DOWN 195 { 0, 0, 0, 32, -64, 0 }, // ELEM_RIGHT_BARREL_ROLL_UP_TO_DOWN 196 { 0, 0, 0, -32, -64, 0 }, // ELEM_LEFT_BARREL_ROLL_DOWN_TO_UP 197 { 0, 0, 0, -32, -64, 0 }, // ELEM_RIGHT_BARREL_ROLL_DOWN_TO_UP 198 { 0, 3, 0, 24, -32, -32 }, // ELEM_LEFT_BANK_TO_LEFT_QUARTER_TURN_3_TILES_25_DEG_UP 199 { 0, 1, 0, 24, -32, 32 }, // ELEM_RIGHT_BANK_TO_RIGHT_QUARTER_TURN_3_TILES_25_DEG_UP 200 { 0, 3, 24, 0, -32, -32 }, // ELEM_LEFT_QUARTER_TURN_3_TILES_25_DEG_DOWN_TO_LEFT_BANK 201 { 0, 1, 24, 0, -32, 32 }, // ELEM_RIGHT_QUARTER_TURN_3_TILES_25_DEG_DOWN_TO_RIGHT_BANK 202 { 0, 0, 0, 16, 0, 0 }, // ELEM_POWERED_LIFT 203 { 0, 2, 0, 280, -64, -32 }, // ELEM_LEFT_LARGE_HALF_LOOP_UP 204 { 0, 2, 0, 280, -64, 32 }, // ELEM_RIGHT_LARGE_HALF_LOOP_UP 205 { 0, 2, 0, -280, 64, -32 }, // ELEM_RIGHT_LARGE_HALF_LOOP_DOWN 206 { 0, 2, 0, -280, 64, 32 }, // ELEM_LEFT_LARGE_HALF_LOOP_DOWN 207 { 0, 0, 0, -16, -64, 0 }, // ELEM_LEFT_FLYER_TWIST_UP_TO_DOWN 208 { 0, 0, 0, -16, -64, 0 }, // ELEM_RIGHT_FLYER_TWIST_UP_TO_DOWN 209 { 0, 0, 0, 16, -64, 0 }, // ELEM_LEFT_FLYER_TWIST_DOWN_TO_UP 210 { 0, 0, 0, 16, -64, 0 }, // ELEM_RIGHT_FLYER_TWIST_DOWN_TO_UP 211 { 0, 2, 0, 120, -32, 0 }, // ELEM_FLYER_HALF_LOOP_UP 212 { 0, 2, 0, -120, 32, 0 }, // ELEM_FLYER_HALF_LOOP_DOWN 213 { 0, 3, 0, 48, -32, -32 }, // ELEM_LEFT_FLY_CORKSCREW_UP_TO_DOWN 214 { 0, 1, 0, 48, -32, 32 }, // ELEM_RIGHT_FLY_CORKSCREW_UP_TO_DOWN 215 { 0, 3, 0, -48, -32, -32 }, // ELEM_LEFT_FLY_CORKSCREW_DOWN_TO_UP 216 { 0, 1, 0, -48, -32, 32 }, // ELEM_RIGHT_FLY_CORKSCREW_DOWN_TO_UP 217 { 0, 2, 0, 32, 0, 0 }, // ELEM_HEARTLINE_TRANSFER_UP 218 { 0, 2, 0, -32, 0, 0 }, // ELEM_HEARTLINE_TRANSFER_DOWN 219 { 0, 0, 0, 0, -160, 0 }, // ELEM_LEFT_HEARTLINE_ROLL 220 { 0, 0, 0, 0, -160, 0 }, // ELEM_RIGHT_HEARTLINE_ROLL 221 { 0, 0, 0, 0, -32, 0 }, // ELEM_MINI_GOLF_HOLE_A 222 { 0, 0, 0, 0, -32, 0 }, // ELEM_MINI_GOLF_HOLE_B 223 { 0, 0, 0, 0, -32, 0 }, // ELEM_MINI_GOLF_HOLE_C 224 { 0, 1, 0, 0, -32, 32 }, // ELEM_MINI_GOLF_HOLE_D 225 { 0, 3, 0, 0, -32, -32 }, // ELEM_MINI_GOLF_HOLE_E 226 { 0, 2, 0, -96, -96, 0 }, // ELEM_INVERTED_FLAT_TO_90_DEG_DOWN_QUARTER_LOOP 227 { 0, 2, 0, 128, 64, 0 }, // ELEM_90_DEG_UP_QUARTER_LOOP_TO_INVERTED 228 { 0, 2, 0, -128, -96, 0 }, // ELEM_QUARTER_LOOP_INVERT_TO_90_DEG_DOWN 229 { 0, 3, 0, 16, -32, -32 }, // ELEM_LEFT_CURVED_LIFT_HILL 230 { 0, 1, 0, 16, -32, 32 }, // ELEM_RIGHT_CURVED_LIFT_HILL 231 { 0, 0, 0, 0, -64, 0 }, // ELEM_LEFT_REVERSER 232 { 0, 0, 0, 0, -64, 0 }, // ELEM_RIGHT_REVERSER 233 { 0, 0, 0, 0, -32, 0 }, // ELEM_AIR_THRUST_TOP_CAP 234 { 0, 0, 80, 0, 32, 0 }, // ELEM_AIR_THRUST_VERTICAL_DOWN 235 { 0, 0, 240, 0, -160, 0 }, // ELEM_AIR_THRUST_VERTICAL_DOWN_TO_LEVEL 236 { 0, 0, 0, 0, 0, 0 }, // ELEM_BLOCK_BRAKES 237 { 0, 3, 0, 32, -32, -32 }, // ELEM_BANKED_LEFT_QUARTER_TURN_3_TILES_25_DEG_UP 238 { 0, 1, 0, 32, -32, 32 }, // ELEM_BANKED_RIGHT_QUARTER_TURN_3_TILES_25_DEG_UP 239 { 0, 3, 32, 0, -32, -32 }, 240 { 0, 1, 32, 0, -32, 32 }, 241 { 0, 3, 0, 64, -64, -64 }, 242 { 0, 1, 0, 64, -64, 64 }, 243 { 0, 3, 64, 0, -64, -64 }, 244 { 0, 1, 64, 0, -64, 64 }, 245 { 0, 0, 0, 16, 0, 0 }, 246 { 0, 0, 0, 16, 0, 0 }, 247 { 0, 0, 0, 16, 0, 0 }, 248 { 0, 0, 0, 16, 0, 0 }, 249 { 0, 0, 16, 0, 0, 0 }, 250 { 0, 0, 16, 0, 0, 0 }, 251 { 0, 0, 16, 0, 0, 0 }, 252 { 0, 0, 16, 0, 0, 0 }, 253 { 0, 0, 0, 8, 0, 0 }, 254 { 0, 0, 0, 8, 0, 0 }, 255 { 0, 0, 0, 8, 0, 0 }, 256 { 0, 0, 0, 8, 0, 0 }, 257 { 0, 0, 8, 0, 0, 0 }, 258 { 0, 0, 8, 0, 0, 0 }, 259 { 0, 0, 8, 0, 0, 0 }, 260 { 0, 0, 8, 0, 0, 0 }, 261 { 0, 0, 0, 8, 0, 0 }, 262 { 0, 0, 0, 8, 0, 0 }, 263 { 0, 0, 0, 8, 0, 0 }, 264 { 0, 0, 0, 8, 0, 0 }, 265 { 0, 0, 8, 0, 0, 0 }, 266 { 0, 0, 8, 0, 0, 0 }, 267 { 0, 0, 8, 0, 0, 0 }, 268 { 0, 0, 8, 0, 0, 0 }, 269 { 0, 3, 0, 96, 0, 32 }, 270 { 0, 1, 0, 96, 0, -32 }, 271 { 0, 3, 96, 0, 0, 32 }, 272 { 0, 1, 96, 0, 0, -32 }, 273 { 0, 2, 0, 96, 64, 0 }, 274 { 0, 2, 0, -128, -96, 0 }, 275 { 0, 2, 0, 128, 64, 0 }, 276 { 0, 0, 0, 0, 0, 0 }, 277 { 0, 2, 0, 0, 0, 32 }, // TrackElemType::FlatTrack1x4A 278 { 0, 2, 0, 0, 0, 32 }, // TrackElemType::FlatTrack2x2 279 { 0, 2, 0, 0, 0, 32 }, // TrackElemType::FlatTrack4x4 280 { 0, 2, 0, 0, 0, 32 }, // TrackElemType::FlatTrack2x4 281 { 0, 2, 0, 0, 0, 32 }, // TrackElemType::FlatTrack1x5 282 { 0, 2, 0, 0, 0, 32 }, // TrackElemType::FlatTrack1x1A 283 { 0, 2, 0, 0, 0, 32 }, // TrackElemType::FlatTrack1x4B 284 { 0, 2, 0, 0, 0, 32 }, // TrackElemType::FlatTrack1x1B 285 { 0, 2, 0, 0, 0, 32 }, // TrackElemType::FlatTrack1x4C 286 { 0, 0, 0, 96, 32, 0 }, // TrackElemType::FlatTrack3x3 287 }; 288 289 /** rct2: 0x0099BA64 */ 290 static constexpr uint8_t TrackSequenceProperties[][MaxSequencesPerPiece] = { 291 { 0 }, 292 /* 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 }, 293 /* 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 }, 294 /* 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 }, 295 { 0 }, 296 { 0 }, 297 { 0 }, 298 { 0 }, 299 { 0 }, 300 { 0 }, 301 { 0 }, 302 { 0 }, 303 { 0 }, 304 { 0 }, 305 { 0 }, 306 { 0 }, 307 { 0 }, 308 { 0 }, 309 { 0 }, 310 { 0 }, 311 { 0 }, 312 { 0 }, 313 { 0 }, 314 { 0 }, 315 { 0 }, 316 { 0 }, 317 { 0 }, 318 { 0 }, 319 { 0 }, 320 { 0 }, 321 { 0 }, 322 { 0 }, 323 { 0 }, 324 { 0 }, 325 { 0 }, 326 { 0 }, 327 { 0 }, 328 { 0 }, 329 { 0 }, 330 { 0 }, 331 { 0 }, 332 { 0 }, 333 { 0 }, 334 { 0 }, 335 { 0 }, 336 { 0 }, 337 { 0 }, 338 { 0 }, 339 { 0 }, 340 { 0 }, 341 { 0 }, 342 { 0 }, 343 { 0 }, 344 { 0 }, 345 { 0 }, 346 { 0 }, 347 { 0 }, 348 { 0 }, 349 { 0 }, 350 { 0 }, 351 { 0 }, 352 { 0 }, 353 { 0 }, 354 { 0 }, 355 { 0 }, 356 { 0 }, 357 /* 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 }, 358 { 0 }, 359 { 0 }, 360 { 0 }, 361 { 0 }, 362 { 0 }, 363 { 0 }, 364 { 0 }, 365 { 0 }, 366 { 0 }, 367 { 0 }, 368 { 0 }, 369 { 0 }, 370 { 0 }, 371 { 0 }, 372 { 0 }, 373 { 0 }, 374 { 0 }, 375 { 0 }, 376 { 0 }, 377 { 0 }, 378 { 0 }, 379 { 0 }, 380 { 0 }, 381 { 0 }, 382 { 0 }, 383 { 0 }, 384 { 0 }, 385 { 0 }, 386 { 0 }, 387 { 0 }, 388 { 0 }, 389 { 0 }, 390 { 0 }, 391 { 0 }, 392 /* 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 }, 393 { 0 }, 394 { 0 }, 395 { 0 }, 396 { 0 }, 397 { 0 }, 398 { 0 }, 399 { 0 }, 400 { 0 }, 401 { 0 }, 402 { 0 }, 403 { 0 }, 404 { 0 }, 405 { 0 }, 406 { 0 }, 407 { 0 }, 408 { 0 }, 409 { 0 }, 410 { 0 }, 411 { 0 }, 412 { 0 }, 413 { 0 }, 414 { 0 }, 415 { 0 }, 416 { 0 }, 417 { 0 }, 418 { 0 }, 419 { 0 }, 420 { 0 }, 421 { 0 }, 422 { 0 }, 423 { 0 }, 424 { 0 }, 425 { 0 }, 426 { 0 }, 427 { 0 }, 428 { 0 }, 429 { 0 }, 430 { 0 }, 431 { 0 }, 432 { 0 }, 433 { 0 }, 434 { 0 }, 435 { 0 }, 436 { 0 }, 437 { 0 }, 438 { 0 }, 439 { 0 }, 440 { 0 }, 441 { 0 }, 442 { 0 }, 443 { 0 }, 444 { 0 }, 445 { 0 }, 446 { 0 }, 447 { 0 }, 448 { 0 }, 449 { 0 }, 450 { 0 }, 451 { 0 }, 452 { 0 }, 453 { 0 }, 454 { 0 }, 455 { 0 }, 456 { 0 }, 457 { 0 }, 458 { 0 }, 459 { 0 }, 460 { 0 }, 461 { 0 }, 462 { 0 }, 463 { 0 }, 464 /* TrackElemType::SpinningTunnel */ { TRACK_SEQUENCE_FLAG_DISALLOW_DOORS, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, 465 { 0 }, 466 { 0 }, 467 { 0 }, 468 { 0 }, 469 { 0 }, 470 { 0 }, 471 { 0 }, 472 { 0 }, 473 { 0 }, 474 { 0 }, 475 { 0 }, 476 { 0 }, 477 { 0 }, 478 { 0 }, 479 { 0 }, 480 { 0 }, 481 { 0 }, 482 { 0 }, 483 { 0 }, 484 { 0 }, 485 { 0 }, 486 { 0 }, 487 { 0 }, 488 { 0 }, 489 { 0 }, 490 { 0 }, 491 { 0 }, 492 { 0 }, 493 { 0 }, 494 { 0 }, 495 { 0 }, 496 { 0 }, 497 { 0 }, 498 { 0 }, 499 { 0 }, 500 { 0 }, 501 { 0 }, 502 { 0 }, 503 { 0 }, 504 { 0 }, 505 { 0 }, 506 { 0 }, 507 { 0 }, 508 { 0 }, 509 { 0 }, 510 { 0 }, 511 { 0 }, 512 { 0 }, 513 { 0 }, 514 { 0 }, 515 { 0 }, 516 { 0 }, 517 { 0 }, 518 { 0 }, 519 { 0 }, 520 { 0 }, 521 { 0 }, 522 { 0 }, 523 { 0 }, 524 { 0 }, 525 { 0 }, 526 { 0 }, 527 { 0 }, 528 { 0 }, 529 { 0 }, 530 { 0 }, 531 { 0 }, 532 { 0 }, 533 { 0 }, 534 { 0 }, 535 { 0 }, 536 { 0 }, 537 { 0 }, 538 { 0 }, 539 { 0 }, 540 { 0 }, 541 { 0 }, 542 { 0 }, 543 { 0 }, 544 { 0 }, 545 { 0 }, 546 { 0 }, 547 { 0 }, 548 /* 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 }, 549 /* 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 }, 550 /* 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 }, 551 /* 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 }, 552 /* 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 }, 553 /* 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 }, 554 /* 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 }, 555 /* 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 }, 556 /* 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 }, 557 /* 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 }, 558 }; 559 560 #define TRACK_BLOCK_END { 255, 255, 255, 255, 255, {255, 255}, 255 } 561 562 static constexpr rct_preview_track TrackBlocks000[] = { 563 { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, 564 TRACK_BLOCK_END 565 }; 566 567 static constexpr const rct_preview_track TrackBlocks001[] = { 568 { 0, 0, 0, 0, 0,{ 0b1111, 0 }, 0 }, 569 TRACK_BLOCK_END 570 }; 571 572 static constexpr const rct_preview_track TrackBlocks002[] = { 573 { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, 574 TRACK_BLOCK_END 575 }; 576 577 static constexpr const rct_preview_track TrackBlocks003[] = { 578 { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, 579 TRACK_BLOCK_END 580 }; 581 582 static constexpr const rct_preview_track TrackBlocks004[] = { 583 { 0, 0, 0, 0, 16, { 0b1111, 0b1100 }, 0 }, 584 TRACK_BLOCK_END 585 }; 586 587 static constexpr const rct_preview_track TrackBlocks005[] = { 588 { 0, 0, 0, 0, 64, { 0b1111, 0b1100 }, 0 }, 589 TRACK_BLOCK_END 590 }; 591 592 static constexpr const rct_preview_track TrackBlocks006[] = { 593 { 0, 0, 0, 0, 8, { 0b1111, 0 }, 0 }, 594 TRACK_BLOCK_END 595 }; 596 597 static constexpr const rct_preview_track TrackBlocks007[] = { 598 { 0, 0, 0, 0, 32, { 0b1111, 0b1100 }, 0 }, 599 TRACK_BLOCK_END 600 }; 601 602 static constexpr const rct_preview_track TrackBlocks008[] = { 603 { 0, 0, 0, 0, 32, { 0b1111, 0b1100 }, 0 }, 604 TRACK_BLOCK_END 605 }; 606 607 static constexpr const rct_preview_track TrackBlocks009[] = { 608 { 0, 0, 0, 0, 8, { 0b1111, 0b1100 }, 0 }, 609 TRACK_BLOCK_END 610 }; 611 612 static constexpr const rct_preview_track TrackBlocks010[] = { 613 { 0, 0, 0, 0, 16, { 0b1111, 0b0011 }, 0 }, 614 TRACK_BLOCK_END 615 }; 616 617 static constexpr const rct_preview_track TrackBlocks011[] = { 618 { 0, 0, 0, 0, 64, { 0b1111, 0b0011 }, 0 }, 619 TRACK_BLOCK_END 620 }; 621 622 static constexpr const rct_preview_track TrackBlocks012[] = { 623 { 0, 0, 0, 0, 8, { 0b1111, 0b0011 }, 0 }, 624 TRACK_BLOCK_END 625 }; 626 627 static constexpr const rct_preview_track TrackBlocks013[] = { 628 { 0, 0, 0, 0, 32, { 0b1111, 0b0011 }, 0 }, 629 TRACK_BLOCK_END 630 }; 631 632 static constexpr const rct_preview_track TrackBlocks014[] = { 633 { 0, 0, 0, 0, 32, { 0b1111, 0b0011 }, 0 }, 634 TRACK_BLOCK_END 635 }; 636 637 static constexpr const rct_preview_track TrackBlocks015[] = { 638 { 0, 0, 0, 0, 8, { 0b1111, 0 }, 0 }, 639 TRACK_BLOCK_END 640 }; 641 642 static constexpr const rct_preview_track TrackBlocks016[] = { 643 { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, 644 { 1, 0, -32, 0, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 645 { 2, -32, 0, 0, 0, { 0b0111, 0 }, 0 }, 646 { 3, -32, -32, 0, 0, { 0b1101, 0 }, 0 }, 647 { 4, -32, -64, 0, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 648 { 5, -64, -32, 0, 0, { 0b0111, 0 }, 0 }, 649 { 6, -64, -64, 0, 0, { 0b1111, 0 }, 0 }, 650 TRACK_BLOCK_END 651 }; 652 653 static constexpr const rct_preview_track TrackBlocks017[] = { 654 { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, 655 { 1, 0, 32, 0, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 656 { 2, -32, 0, 0, 0, { 0b1011, 0 }, 0 }, 657 { 3, -32, 32, 0, 0, { 0b1110, 0 }, 0 }, 658 { 4, -32, 64, 0, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 659 { 5, -64, 32, 0, 0, { 0b1011, 0 }, 0 }, 660 { 6, -64, 64, 0, 0, { 0b1111, 0 }, 0 }, 661 TRACK_BLOCK_END 662 }; 663 664 static constexpr const rct_preview_track TrackBlocks018[] = { 665 { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, 666 TRACK_BLOCK_END 667 }; 668 669 static constexpr const rct_preview_track TrackBlocks019[] = { 670 { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, 671 TRACK_BLOCK_END 672 }; 673 674 static constexpr const rct_preview_track TrackBlocks020[] = { 675 { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, 676 TRACK_BLOCK_END 677 }; 678 679 static constexpr const rct_preview_track TrackBlocks021[] = { 680 { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, 681 TRACK_BLOCK_END 682 }; 683 684 static constexpr const rct_preview_track TrackBlocks022[] = { 685 { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, 686 { 1, 0, -32, 0, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 687 { 2, -32, 0, 0, 0, { 0b0111, 0 }, 0 }, 688 { 3, -32, -32, 0, 0, { 0b1101, 0 }, 0 }, 689 { 4, -32, -64, 0, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 690 { 5, -64, -32, 0, 0, { 0b0111, 0 }, 0 }, 691 { 6, -64, -64, 0, 0, { 0b1111, 0 }, 0 }, 692 TRACK_BLOCK_END 693 }; 694 695 static constexpr const rct_preview_track TrackBlocks023[] = { 696 { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, 697 { 1, 0, 32, 0, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 698 { 2, -32, 0, 0, 0, { 0b1011, 0 }, 0 }, 699 { 3, -32, 32, 0, 0, { 0b1110, 0 }, 0 }, 700 { 4, -32, 64, 0, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 701 { 5, -64, 32, 0, 0, { 0b1011, 0 }, 0 }, 702 { 6, -64, 64, 0, 0, { 0b1111, 0 }, 0 }, 703 TRACK_BLOCK_END 704 }; 705 706 static constexpr const rct_preview_track TrackBlocks024[] = { 707 { 0, 0, 0, 0, 8, { 0b1111, 0 }, 0 }, 708 TRACK_BLOCK_END 709 }; 710 711 static constexpr const rct_preview_track TrackBlocks025[] = { 712 { 0, 0, 0, 0, 8, { 0b1111, 0 }, 0 }, 713 TRACK_BLOCK_END 714 }; 715 716 static constexpr const rct_preview_track TrackBlocks026[] = { 717 { 0, 0, 0, 0, 8, { 0b1111, 0b1100 }, 0 }, 718 TRACK_BLOCK_END 719 }; 720 721 static constexpr const rct_preview_track TrackBlocks027[] = { 722 { 0, 0, 0, 0, 8, { 0b1111, 0b1100 }, 0 }, 723 TRACK_BLOCK_END 724 }; 725 726 static constexpr const rct_preview_track TrackBlocks028[] = { 727 { 0, 0, 0, 0, 8, { 0b1111, 0b0011 }, 0 }, 728 TRACK_BLOCK_END 729 }; 730 731 static constexpr const rct_preview_track TrackBlocks029[] = { 732 { 0, 0, 0, 0, 8, { 0b1111, 0b0011 }, 0 }, 733 TRACK_BLOCK_END 734 }; 735 736 static constexpr const rct_preview_track TrackBlocks030[] = { 737 { 0, 0, 0, 0, 8, { 0b1111, 0 }, 0 }, 738 TRACK_BLOCK_END 739 }; 740 741 static constexpr const rct_preview_track TrackBlocks031[] = { 742 { 0, 0, 0, 0, 8, { 0b1111, 0 }, 0 }, 743 TRACK_BLOCK_END 744 }; 745 746 static constexpr const rct_preview_track TrackBlocks032[] = { 747 { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, 748 TRACK_BLOCK_END 749 }; 750 751 static constexpr const rct_preview_track TrackBlocks033[] = { 752 { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, 753 TRACK_BLOCK_END 754 }; 755 756 static constexpr const rct_preview_track TrackBlocks034[] = { 757 { 0, 0, 0, 0, 16, { 0b1111, 0b1100 }, 0 }, 758 { 1, 0, -32, 16, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 759 { 2, -32, 0, 16, 16, { 0b0111, 0b0100 }, 0 }, 760 { 3, -32, -32, 24, 16, { 0b1101, 0 }, 0 }, 761 { 4, -32, -64, 48, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 762 { 5, -64, -32, 32, 16, { 0b0111, 0b0100 }, 0 }, 763 { 6, -64, -64, 48, 16, { 0b1111, 0b0110 }, 0 }, 764 TRACK_BLOCK_END 765 }; 766 767 static constexpr const rct_preview_track TrackBlocks035[] = { 768 { 0, 0, 0, 0, 16, { 0b1111, 0b1100 }, 0 }, 769 { 1, 0, 32, 16, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 770 { 2, -32, 0, 16, 16, { 0b1011, 0b1000 }, 0 }, 771 { 3, -32, 32, 24, 16, { 0b1110, 0 }, 0 }, 772 { 4, -32, 64, 48, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 773 { 5, -64, 32, 32, 16, { 0b1011, 0b1000 }, 0 }, 774 { 6, -64, 64, 48, 16, { 0b1111, 0b1001 }, 0 }, 775 TRACK_BLOCK_END 776 }; 777 778 static constexpr const rct_preview_track TrackBlocks036[] = { 779 { 0, 0, 0, 48, 16, { 0b1111, 0b0011 }, 0 }, 780 { 1, 0, -32, 48, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 781 { 2, -32, 0, 32, 16, { 0b0111, 0b0001 }, 0 }, 782 { 3, -32, -32, 24, 16, { 0b1101, 0 }, 0 }, 783 { 4, -32, -64, 16, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 784 { 5, -64, -32, 16, 16, { 0b0111, 0b0001 }, 0 }, 785 { 6, -64, -64, 0, 16, { 0b1111, 0b1001 }, 0 }, 786 TRACK_BLOCK_END 787 }; 788 789 static constexpr const rct_preview_track TrackBlocks037[] = { 790 { 0, 0, 0, 48, 16, { 0b1111, 0b0011 }, 0 }, 791 { 1, 0, 32, 48, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 792 { 2, -32, 0, 32, 16, { 0b1011, 0b0010 }, 0 }, 793 { 3, -32, 32, 24, 16, { 0b1110, 0 }, 0 }, 794 { 4, -32, 64, 16, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 795 { 5, -64, 32, 16, 16, { 0b1011, 0b0010 }, 0 }, 796 { 6, -64, 64, 0, 16, { 0b1111, 0b0110 }, 0 }, 797 TRACK_BLOCK_END 798 }; 799 800 static constexpr const rct_preview_track TrackBlocks038[] = { 801 { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, 802 { 1, -32, 0, 0, 0, { 0b0111, 0 }, 0 }, 803 { 2, -32, -32, 0, 0, { 0b1101, 0 }, 0 }, 804 { 3, -64, -32, 0, 0, { 0b1111, 0 }, 0 }, 805 TRACK_BLOCK_END 806 }; 807 808 static constexpr const rct_preview_track TrackBlocks039[] = { 809 { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, 810 { 1, -32, 0, 0, 0, { 0b1011, 0 }, 0 }, 811 { 2, -32, 32, 0, 0, { 0b1110, 0 }, 0 }, 812 { 3, -64, 32, 0, 0, { 0b1111, 0 }, 0 }, 813 TRACK_BLOCK_END 814 }; 815 816 static constexpr const rct_preview_track TrackBlocks040[] = { 817 { 0, 0, 0, 0, 16, { 0b1111, 0b1100 }, 0 }, 818 { 1, -32, 0, 16, 16, { 0b1111, 0b1100 }, 0 }, 819 { 2, -64, 0, 32, 96, { 0b0010, 0 }, 0 }, 820 { 3, -32, 0, 120, 16, { 0b0110, 0 }, 0 }, 821 { 4, -32, -32, 120, 0, { 0b0001, 0 }, 0 }, 822 { 5, 0, 0, 120, 0, { 0b0100, 0 }, 0 }, 823 { 6, 0, -32, 120, 16, { 0b1001, 0 }, 0 }, 824 { 7, 32, -32, 32, 96, { 0b1000, 0 }, 0 }, 825 { 8, 0, -32, 16, 16, { 0b1111, 0b0011 }, 0 }, 826 { 9, -32, -32, 0, 16, { 0b1111, 0b0011 }, 0 }, 827 TRACK_BLOCK_END 828 }; 829 830 static constexpr const rct_preview_track TrackBlocks041[] = { 831 { 0, 0, 0, 0, 16, { 0b1111, 0b1100 }, 0 }, 832 { 1, -32, 0, 16, 16, { 0b1111, 0b1100 }, 0 }, 833 { 2, -64, 0, 32, 96, { 0b0001, 0 }, 0 }, 834 { 3, -32, 0, 120, 16, { 0b1001, 0 }, 0 }, 835 { 4, -32, 32, 120, 0, { 0b0010, 0 }, 0 }, 836 { 5, 0, 0, 120, 0, { 0b1000, 0 }, 0 }, 837 { 6, 0, 32, 120, 16, { 0b0110, 0 }, 0 }, 838 { 7, 32, 32, 32, 96, { 0b0100, 0 }, 0 }, 839 { 8, 0, 32, 16, 16, { 0b1111, 0b0011 }, 0 }, 840 { 9, -32, 32, 0, 16, { 0b1111, 0b0011 }, 0 }, 841 TRACK_BLOCK_END 842 }; 843 844 static constexpr const rct_preview_track TrackBlocks042[] = { 845 { 0, 0, 0, 0, 0, { 0b0111, 0 }, 0 }, 846 { 1, 0, -32, 0, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 847 { 2, -32, 0, 0, 0, { 0b0010, 0 }, 0 }, 848 { 3, -32, -32, 0, 0, { 0b0111, 0 }, 0 }, 849 TRACK_BLOCK_END 850 }; 851 852 static constexpr const rct_preview_track TrackBlocks043[] = { 853 { 0, 0, 0, 0, 0, { 0b1011, 0 }, 0 }, 854 { 1, 0, 32, 0, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 855 { 2, -32, 0, 0, 0, { 0b0001, 0 }, 0 }, 856 { 3, -32, 32, 0, 0, { 0b1011, 0 }, 0 }, 857 TRACK_BLOCK_END 858 }; 859 860 static constexpr const rct_preview_track TrackBlocks044[] = { 861 { 0, 0, 0, 0, 0, { 0b0111, 0 }, 0 }, 862 { 1, 0, -32, 0, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 863 { 2, -32, 0, 0, 0, { 0b0010, 0 }, 0 }, 864 { 3, -32, -32, 0, 0, { 0b0111, 0 }, 0 }, 865 TRACK_BLOCK_END 866 }; 867 868 static constexpr const rct_preview_track TrackBlocks045[] = { 869 { 0, 0, 0, 0, 0, { 0b1011, 0 }, 0 }, 870 { 1, 0, 32, 0, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 871 { 2, -32, 0, 0, 0, { 0b0001, 0 }, 0 }, 872 { 3, -32, 32, 0, 0, { 0b1011, 0 }, 0 }, 873 TRACK_BLOCK_END 874 }; 875 876 static constexpr const rct_preview_track TrackBlocks046[] = { 877 { 0, 0, 0, 0, 16, { 0b0111, 0b0100 }, 0 }, 878 { 1, 0, -32, 16, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 879 { 2, -32, 0, 16, 0, { 0b0010, 0 }, 0 }, 880 { 3, -32, -32, 16, 16,{ 0b0111, 0b0110 }, 0 }, 881 TRACK_BLOCK_END 882 }; 883 884 static constexpr const rct_preview_track TrackBlocks047[] = { 885 { 0, 0, 0, 0, 16, { 0b1011, 0b1000 }, 0 }, 886 { 1, 0, 32, 16, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 887 { 2, -32, 0, 16, 0, { 0b0001, 0 }, 0 }, 888 { 3, -32, 32, 16, 16,{ 0b1011, 0b1001 }, 0 }, 889 TRACK_BLOCK_END 890 }; 891 892 static constexpr const rct_preview_track TrackBlocks048[] = { 893 { 0, 0, 0, 16, 16,{ 0b0111, 0b0011 }, 0 }, 894 { 1, 0, -32, 16, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 895 { 2, -32, 0, 16, 0, { 0b0010, 0 }, 0 }, 896 { 3, -32, -32, 0, 16, { 0b0111, 0b0001 }, 0 }, 897 TRACK_BLOCK_END 898 }; 899 900 static constexpr const rct_preview_track TrackBlocks049[] = { 901 { 0, 0, 0, 16, 16, { 0b1011, 0b0011 }, 0 }, 902 { 1, 0, 32, 16, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 903 { 2, -32, 0, 16, 0, { 0b0001, 0 }, 0 }, 904 { 3, -32, 32, 0, 16, { 0b1011, 0b0010 }, 0 }, 905 TRACK_BLOCK_END 906 }; 907 908 static constexpr const rct_preview_track TrackBlocks050[] = { 909 { 0, 0, 0, 0, 0, { 0b0111, 0 }, 0 }, 910 TRACK_BLOCK_END 911 }; 912 913 static constexpr const rct_preview_track TrackBlocks051[] = { 914 { 0, 0, 0, 0, 0, { 0b1011, 0 }, 0 }, 915 TRACK_BLOCK_END 916 }; 917 918 static constexpr const rct_preview_track TrackBlocks052[] = { 919 { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, 920 { 1, -32, 0, 0, 16, { 0b1111, 0 }, 0 }, 921 { 2, -64, 0, 16, 0, { 0b1111, 0 }, 0 }, 922 TRACK_BLOCK_END 923 }; 924 925 static constexpr const rct_preview_track TrackBlocks053[] = { 926 { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, 927 { 1, -32, 0, 0, 16, { 0b1111, 0 }, 0 }, 928 { 2, -64, 0, 16, 0, { 0b1111, 0 }, 0 }, 929 TRACK_BLOCK_END 930 }; 931 932 static constexpr const rct_preview_track TrackBlocks054[] = { 933 { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, 934 { 1, -32, 0, -16, 16, { 0b1111, 0 }, 0 }, 935 { 2, -64, 0, -16, 0, { 0b1111, 0 }, 0 }, 936 TRACK_BLOCK_END 937 }; 938 939 static constexpr const rct_preview_track TrackBlocks055[] = { 940 { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, 941 { 1, -32, 0, -16, 16, { 0b1111, 0 }, 0 }, 942 { 2, -64, 0, -16, 0, { 0b1111, 0 }, 0 }, 943 TRACK_BLOCK_END 944 }; 945 946 static constexpr const rct_preview_track TrackBlocks056[] = { 947 { 0, 0, 0, 0, 32, { 0b1111, 0b1100 }, 0 }, 948 { 1, -32, 0, 16, 16, { 0b1111, 0b1100 }, 0 }, 949 { 2, -64, 0, 32, 96,{ 0b0011, 0 }, 0 }, 950 { 3, -32, 0, 120, 16, { 0b1111, 0 }, 0 }, 951 TRACK_BLOCK_END 952 }; 953 954 static constexpr const rct_preview_track TrackBlocks057[] = { 955 { 0, 0, 0, -32, 32, { 0b1111, 0 }, 0 }, 956 { 1, -32, 0, -120, 96,{ 0b0011, 0 }, 0 }, 957 { 2, 0, 0, -136, 16, { 0b1111, 0b1100 }, 0 }, 958 { 3, 32, 0, -152, 16, { 0b1111, 0b1100 }, 0 }, 959 TRACK_BLOCK_END 960 }; 961 962 static constexpr const rct_preview_track TrackBlocks058[] = { 963 { 0, 0, 0, 0, 16, { 0b1111, 0 }, 0 }, 964 { 1, -32, 0, 24, 32, { 0b0111, 0 }, 0 }, 965 { 2, -32, -32, 48, 16, { 0b1111, 0 }, 0 }, 966 TRACK_BLOCK_END 967 }; 968 969 static constexpr const rct_preview_track TrackBlocks059[] = { 970 { 0, 0, 0, 0, 16, { 0b1111, 0 }, 0 }, 971 { 1, -32, 0, 24, 32, { 0b1011, 0 }, 0 }, 972 { 2, -32, 32, 48, 16, { 0b1111, 0 }, 0 }, 973 TRACK_BLOCK_END 974 }; 975 976 static constexpr const rct_preview_track TrackBlocks060[] = { 977 { 0, 0, 0, -32, 16, { 0b1111, 0 }, 0 }, 978 { 1, -32, 0, -56, 32, { 0b0111, 0 }, 0 }, 979 { 2, -32, -32, -80, 16, { 0b1111, 0 }, 0 }, 980 TRACK_BLOCK_END 981 }; 982 983 static constexpr const rct_preview_track TrackBlocks061[] = { 984 { 0, 0, 0, -32, 16, { 0b1111, 0 }, 0 }, 985 { 1, -32, 0, -56, 32, { 0b1011, 0 }, 0 }, 986 { 2, -32, 32, -80, 16, { 0b1111, 0 }, 0 }, 987 TRACK_BLOCK_END 988 }; 989 990 static constexpr const rct_preview_track TrackBlocks062[] = { 991 { 0, 0, 0, 0, 24, { 0b1111, 0 }, 0 }, 992 TRACK_BLOCK_END 993 }; 994 995 static constexpr const rct_preview_track TrackBlocks063[] = { 996 { 0, 0, 0, 0, 24, { 0b1111, 0b1100 }, 0 }, 997 TRACK_BLOCK_END 998 }; 999 1000 static constexpr const rct_preview_track TrackBlocks064[] = { 1001 { 0, 0, 0, 0, 24, { 0b1111, 0b0011 }, 0 }, 1002 TRACK_BLOCK_END 1003 }; 1004 1005 static constexpr const rct_preview_track TrackBlocks065[] = { 1006 { 0, 0, 0, 0, 24, { 0b1111, 0 }, 0 }, 1007 TRACK_BLOCK_END 1008 }; 1009 1010 static constexpr const rct_preview_track TrackBlocks066[] = { 1011 { 0, 0, 0, 0, 64, { 0b1111, 0 }, 0 }, 1012 { 1, -32, -32, 0, 0, { 0b1111, 0 }, 0 }, 1013 { 2, -32, 0, 0, 0, { 0b1111, 0 }, 0 }, 1014 { 3, -32, 32, 0, 0, { 0b1111, 0 }, 0 }, 1015 { 4, 0, -32, 0, 0, { 0b1111, 0 }, 0 }, 1016 { 5, 0, 32, 0, 0, { 0b1111, 0 }, 0 }, 1017 { 6, 32, -32, 0, 0, { 0b1111, 0 }, 0 }, 1018 { 7, 32, 32, 0, 0, { 0b1111, 0 }, 0 }, 1019 { 8, 32, 0, 0, 0, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_1 }, 1020 TRACK_BLOCK_END 1021 }; 1022 1023 static constexpr const rct_preview_track TrackBlocks067[] = { 1024 { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, 1025 { 1, 32, 0, 0, 0, { 0b0000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 | RCT_PREVIEW_TRACK_FLAG_1 }, 1026 TRACK_BLOCK_END 1027 }; 1028 1029 static constexpr const rct_preview_track TrackBlocks068[] = { 1030 { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, 1031 TRACK_BLOCK_END 1032 }; 1033 1034 static constexpr const rct_preview_track TrackBlocks069[] = { 1035 { 0, 0, 0, 0, 16, { 0b1111, 0b1100 }, 0 }, 1036 TRACK_BLOCK_END 1037 }; 1038 1039 static constexpr const rct_preview_track TrackBlocks070[] = { 1040 { 0, 0, 0, 0, 64, { 0b1111, 0b1100 }, 0 }, 1041 TRACK_BLOCK_END 1042 }; 1043 1044 static constexpr const rct_preview_track TrackBlocks071[] = { 1045 { 0, 0, 0, 0, 8, { 0b1111, 0 }, 0 }, 1046 TRACK_BLOCK_END 1047 }; 1048 1049 static constexpr const rct_preview_track TrackBlocks072[] = { 1050 { 0, 0, 0, 0, 32, { 0b1111, 0b1100 }, 0 }, 1051 TRACK_BLOCK_END 1052 }; 1053 1054 static constexpr const rct_preview_track TrackBlocks073[] = { 1055 { 0, 0, 0, 0, 32, { 0b1111, 0b1100 }, 0 }, 1056 TRACK_BLOCK_END 1057 }; 1058 1059 static constexpr const rct_preview_track TrackBlocks074[] = { 1060 { 0, 0, 0, 0, 8, { 0b1111, 0b1100 }, 0 }, 1061 TRACK_BLOCK_END 1062 }; 1063 1064 static constexpr const rct_preview_track TrackBlocks075[] = { 1065 { 0, 0, 0, 0, 16, { 0b1111, 0b0011 }, 0 }, 1066 TRACK_BLOCK_END 1067 }; 1068 1069 static constexpr const rct_preview_track TrackBlocks076[] = { 1070 { 0, 0, 0, 0, 64, { 0b1111, 0b0011 }, 0 }, 1071 TRACK_BLOCK_END 1072 }; 1073 1074 static constexpr const rct_preview_track TrackBlocks077[] = { 1075 { 0, 0, 0, 0, 8, { 0b1111, 0b0011 }, 0 }, 1076 TRACK_BLOCK_END 1077 }; 1078 1079 static constexpr const rct_preview_track TrackBlocks078[] = { 1080 { 0, 0, 0, 0, 32, { 0b1111, 0b0011 }, 0 }, 1081 TRACK_BLOCK_END 1082 }; 1083 1084 static constexpr const rct_preview_track TrackBlocks079[] = { 1085 { 0, 0, 0, 0, 32, { 0b1111, 0b0011 }, 0 }, 1086 TRACK_BLOCK_END 1087 }; 1088 1089 static constexpr const rct_preview_track TrackBlocks080[] = { 1090 { 0, 0, 0, 0, 8, { 0b1111, 0 }, 0 }, 1091 TRACK_BLOCK_END 1092 }; 1093 1094 static constexpr const rct_preview_track TrackBlocks081[] = { 1095 { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, 1096 { 1, 0, -32, 0, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1097 { 2, -32, 0, 0, 0, { 0b0111, 0 }, 0 }, 1098 { 3, -32, -32, 0, 0, { 0b1101, 0 }, 0 }, 1099 { 4, -32, -64, 0, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1100 { 5, -64, -32, 0, 0, { 0b0111, 0 }, 0 }, 1101 { 6, -64, -64, 0, 0, { 0b1111, 0 }, 0 }, 1102 TRACK_BLOCK_END 1103 }; 1104 1105 static constexpr const rct_preview_track TrackBlocks082[] = { 1106 { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, 1107 { 1, 0, 32, 0, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1108 { 2, -32, 0, 0, 0, { 0b1011, 0 }, 0 }, 1109 { 3, -32, 32, 0, 0, { 0b1110, 0 }, 0 }, 1110 { 4, -32, 64, 0, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1111 { 5, -64, 32, 0, 0, { 0b1011, 0 }, 0 }, 1112 { 6, -64, 64, 0, 0, { 0b1111, 0 }, 0 }, 1113 TRACK_BLOCK_END 1114 }; 1115 1116 static constexpr const rct_preview_track TrackBlocks083[] = { 1117 { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, 1118 { 1, -32, 0, 0, 0, { 0b0111, 0 }, 0 }, 1119 { 2, -32, -32, 0, 0, { 0b1101, 0 }, 0 }, 1120 { 3, -64, -32, 0, 0, { 0b1111, 0 }, 0 }, 1121 TRACK_BLOCK_END 1122 }; 1123 1124 static constexpr const rct_preview_track TrackBlocks084[] = { 1125 { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, 1126 { 1, -32, 0, 0, 0, { 0b1011, 0 }, 0 }, 1127 { 2, -32, 32, 0, 0, { 0b1110, 0 }, 0 }, 1128 { 3, -64, 32, 0, 0, { 0b1111, 0 }, 0 }, 1129 TRACK_BLOCK_END 1130 }; 1131 1132 static constexpr const rct_preview_track TrackBlocks085[] = { 1133 { 0, 0, 0, 0, 0, { 0b0111, 0 }, 0 }, 1134 { 1, 0, -32, 0, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1135 { 2, -32, 0, 0, 0, { 0b0010, 0 }, 0 }, 1136 { 3, -32, -32, 0, 0, { 0b0111, 0 }, 0 }, 1137 TRACK_BLOCK_END 1138 }; 1139 1140 static constexpr const rct_preview_track TrackBlocks086[] = { 1141 { 0, 0, 0, 0, 0, { 0b1011, 0 }, 0 }, 1142 { 1, 0, 32, 0, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1143 { 2, -32, 0, 0, 0, { 0b0001, 0 }, 0 }, 1144 { 3, -32, 32, 0, 0, { 0b1011, 0 }, 0 }, 1145 TRACK_BLOCK_END 1146 }; 1147 1148 static constexpr const rct_preview_track TrackBlocks087[] = { 1149 { 0, 0, 0, 0, 0, { 0b0111, 0 }, 0 }, 1150 { 1, 0, -32, 0, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1151 { 2, -32, 0, 0, 4, { 0b0010, 0 }, 0 }, 1152 { 3, -32, -32, 0, 4, { 0b0111, 0 }, 0 }, 1153 { 4, -32, -64, 8, 0, { 0b1011, 0 }, 0 }, 1154 { 5, 0, -64, 8, 0, { 0b0100, 0b0000 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1155 { 6, -32, -96, 8, 4, { 0b0001, 0 }, 0 }, 1156 { 7, 0, -96, 8, 4, { 0b1011, 0 }, 0 }, 1157 TRACK_BLOCK_END 1158 }; 1159 1160 static constexpr const rct_preview_track TrackBlocks088[] = { 1161 { 0, 0, 0, 0, 0, { 0b1011, 0 }, 0 }, 1162 { 1, 0, 32, 0, 0, { 0b0100, 0b0000 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1163 { 2, -32, 0, 0, 4, { 0b0001, 0 }, 0 }, 1164 { 3, -32, 32, 0, 4, { 0b1011, 0 }, 0 }, 1165 { 4, -32, 64, 8, 0, { 0b0111, 0 }, 0 }, 1166 { 5, 0, 64, 8, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1167 { 6, -32, 96, 8, 4, { 0b0010, 0 }, 0 }, 1168 { 7, 0, 96, 8, 4, { 0b0111, 0 }, 0 }, 1169 TRACK_BLOCK_END 1170 }; 1171 1172 static constexpr const rct_preview_track TrackBlocks089[] = { 1173 { 0, 0, 0, 8, 4, { 0b0111, 0 }, 0 }, 1174 { 1, 0, -32, 8, 4, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1175 { 2, -32, 0, 8, 0, { 0b0010, 0 }, 0 }, 1176 { 3, -32, -32, 8, 0, { 0b0111, 0 }, 0 }, 1177 { 4, -32, -64, 0, 4, { 0b1011, 0 }, 0 }, 1178 { 5, 0, -64, 0, 4, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1179 { 6, -32, -96, 0, 0, { 0b0001, 0 }, 0 }, 1180 { 7, 0, -96, 0, 0, { 0b1011, 0 }, 0 }, 1181 TRACK_BLOCK_END 1182 }; 1183 1184 static constexpr const rct_preview_track TrackBlocks090[] = { 1185 { 0, 0, 0, 8, 4, { 0b1011, 0 }, 0 }, 1186 { 1, 0, 32, 8, 4, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1187 { 2, -32, 0, 8, 0, { 0b0001, 0 }, 0 }, 1188 { 3, -32, 32, 8, 0, { 0b1011, 0 }, 0 }, 1189 { 4, -32, 64, 0, 4, { 0b0111, 0 }, 0 }, 1190 { 5, 0, 64, 0, 4, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1191 { 6, -32, 96, 0, 0, { 0b0010, 0 }, 0 }, 1192 { 7, 0, 96, 0, 0, { 0b0111, 0 }, 0 }, 1193 TRACK_BLOCK_END 1194 }; 1195 1196 static constexpr const rct_preview_track TrackBlocks091[] = { 1197 { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, 1198 { 1, 0, -32, 0, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1199 { 2, -32, 0, 0, 0, { 0b0111, 0 }, 0 }, 1200 { 3, -32, -32, 0, 0, { 0b1101, 0 }, 0 }, 1201 { 4, -32, -64, 0, 4, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1202 { 5, -64, -32, 0, 4, { 0b0111, 0 }, 0 }, 1203 { 6, -64, -64, 0, 4, { 0b1111, 0 }, 0 }, 1204 { 7, -64, -96, 8, 0, { 0b1111, 0 }, 0 }, 1205 { 8, -32, -96, 8, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1206 { 9, -64, -128, 8, 0, { 0b1011, 0 }, 0 }, 1207 { 10, -32, -128, 8, 0, { 0b1110, 0 }, 0 }, 1208 { 11, 0, -128, 8, 4, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1209 { 12, -32, -160, 8, 4, { 0b1011, 0 }, 0 }, 1210 { 13, 0, -160, 8, 4, { 0b1111, 0 }, 0 }, 1211 TRACK_BLOCK_END 1212 }; 1213 1214 static constexpr const rct_preview_track TrackBlocks092[] = { 1215 { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, 1216 { 1, 0, 32, 0, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1217 { 2, -32, 0, 0, 0, { 0b1011, 0 }, 0 }, 1218 { 3, -32, 32, 0, 0, { 0b1110, 0 }, 0 }, 1219 { 4, -32, 64, 0, 4, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1220 { 5, -64, 32, 0, 4, { 0b1011, 0 }, 0 }, 1221 { 6, -64, 64, 0, 4, { 0b1111, 0 }, 0 }, 1222 { 7, -64, 96, 8, 0, { 0b1111, 0 }, 0 }, 1223 { 8, -32, 96, 8, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1224 { 9, -64, 128, 8, 0, { 0b0111, 0 }, 0 }, 1225 { 10, -32, 128, 8, 0, { 0b1101, 0 }, 0 }, 1226 { 11, 0, 128, 8, 4, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1227 { 12, -32, 160, 8, 4, { 0b0111, 0 }, 0 }, 1228 { 13, 0, 160, 8, 4, { 0b1111, 0 }, 0 }, 1229 TRACK_BLOCK_END 1230 }; 1231 1232 static constexpr const rct_preview_track TrackBlocks093[] = { 1233 { 0, 0, 0, 8, 4, { 0b1111, 0 }, 0 }, 1234 { 1, 0, -32, 8, 4, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1235 { 2, -32, 0, 8, 4, { 0b0111, 0 }, 0 }, 1236 { 3, -32, -32, 8, 0, { 0b1101, 0 }, 0 }, 1237 { 4, -32, -64, 8, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1238 { 5, -64, -32, 8, 0, { 0b0111, 0 }, 0 }, 1239 { 6, -64, -64, 8, 0, { 0b1111, 0 }, 0 }, 1240 { 7, -64, -96, 0, 4, { 0b1111, 0 }, 0 }, 1241 { 8, -32, -96, 0, 4, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1242 { 9, -64, -128, 0, 4, { 0b1011, 0 }, 0 }, 1243 { 10, -32, -128, 0, 0, { 0b1110, 0 }, 0 }, 1244 { 11, 0, -128, 0, 0, { 0b0100, 0b0000 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1245 { 12, -32, -160, 0, 0, { 0b1011, 0 }, 0 }, 1246 { 13, 0, -160, 0, 0, { 0b1111, 0 }, 0 }, 1247 TRACK_BLOCK_END 1248 }; 1249 1250 static constexpr const rct_preview_track TrackBlocks094[] = { 1251 { 0, 0, 0, 8, 4, { 0b1111, 0 }, 0 }, 1252 { 1, 0, 32, 8, 4, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1253 { 2, -32, 0, 8, 4, { 0b1011, 0 }, 0 }, 1254 { 3, -32, 32, 8, 0, { 0b1110, 0 }, 0 }, 1255 { 4, -32, 64, 8, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1256 { 5, -64, 32, 8, 0, { 0b1011, 0 }, 0 }, 1257 { 6, -64, 64, 8, 0, { 0b1111, 0 }, 0 }, 1258 { 7, -64, 96, 0, 4, { 0b1111, 0 }, 0 }, 1259 { 8, -32, 96, 0, 4, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1260 { 9, -64, 128, 0, 4, { 0b0111, 0 }, 0 }, 1261 { 10, -32, 128, 0, 0, { 0b1101, 0 }, 0 }, 1262 { 11, 0, 128, 0, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1263 { 12, -32, 160, 0, 0, { 0b0111, 0 }, 0 }, 1264 { 13, 0, 160, 0, 0, { 0b1111, 0 }, 0 }, 1265 TRACK_BLOCK_END 1266 }; 1267 1268 static constexpr const rct_preview_track TrackBlocks095[] = { 1269 { 0, 0, 0, 0, 64, { 0b1111, 0 }, 0 }, 1270 TRACK_BLOCK_END 1271 }; 1272 1273 static constexpr const rct_preview_track TrackBlocks096[] = { 1274 { 0, 0, 0, 0, 64, { 0b1111, 0 }, 0 }, 1275 TRACK_BLOCK_END 1276 }; 1277 1278 static constexpr const rct_preview_track TrackBlocks097[] = { 1279 { 0, 0, 0, 0, 64, { 0b1111, 0 }, 0 }, 1280 TRACK_BLOCK_END 1281 }; 1282 1283 static constexpr const rct_preview_track TrackBlocks098[] = { 1284 { 0, 0, 0, 0, 64, { 0b1111, 0 }, 0 }, 1285 TRACK_BLOCK_END 1286 }; 1287 1288 static constexpr const rct_preview_track TrackBlocks099[] = { 1289 { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, 1290 TRACK_BLOCK_END 1291 }; 1292 1293 static constexpr const rct_preview_track TrackBlocks100[] = { 1294 { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, 1295 TRACK_BLOCK_END 1296 }; 1297 1298 static constexpr const rct_preview_track TrackBlocks101[] = { 1299 { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, 1300 TRACK_BLOCK_END 1301 }; 1302 1303 static constexpr const rct_preview_track TrackBlocks102[] = { 1304 { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, 1305 { 1, 0, -32, 0, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1306 { 2, -32, 0, 0, 0, { 0b0111, 0 }, 0 }, 1307 { 3, -32, -32, 0, 0, { 0b1101, 0 }, 0 }, 1308 { 4, -32, -64, 0, 12, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1309 { 5, -64, -32, 0, 12, { 0b0111, 0 }, 0 }, 1310 { 6, -64, -64, 0, 12, { 0b1111, 0 }, 0 }, 1311 TRACK_BLOCK_END 1312 }; 1313 1314 static constexpr const rct_preview_track TrackBlocks103[] = { 1315 { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, 1316 { 1, 0, 32, 0, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1317 { 2, -32, 0, 0, 0, { 0b1011, 0 }, 0 }, 1318 { 3, -32, 32, 0, 0, { 0b1110, 0 }, 0 }, 1319 { 4, -32, 64, 0, 12, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1320 { 5, -64, 32, 0, 12, { 0b1011, 0 }, 0 }, 1321 { 6, -64, 64, 0, 12, { 0b1111, 0 }, 0 }, 1322 TRACK_BLOCK_END 1323 }; 1324 1325 static constexpr const rct_preview_track TrackBlocks104[] = { 1326 { 0, 0, 0, 0, 12, { 0b1111, 0 }, 0 }, 1327 { 1, 0, -32, 0, 12, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1328 { 2, -32, 0, 0, 12, { 0b0111, 0 }, 0 }, 1329 { 3, -32, -32, 0, 0, { 0b1101, 0 }, 0 }, 1330 { 4, -32, -64, 0, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1331 { 5, -64, -32, 0, 0, { 0b0111, 0 }, 0 }, 1332 { 6, -64, -64, 0, 0, { 0b1111, 0 }, 0 }, 1333 TRACK_BLOCK_END 1334 }; 1335 1336 static constexpr const rct_preview_track TrackBlocks105[] = { 1337 { 0, 0, 0, 0, 12, { 0b1111, 0 }, 0 }, 1338 { 1, 0, 32, 0, 12, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1339 { 2, -32, 0, 0, 12, { 0b1011, 0 }, 0 }, 1340 { 3, -32, 32, 0, 0, { 0b1110, 0 }, 0 }, 1341 { 4, -32, 64, 0, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1342 { 5, -64, 32, 0, 0, { 0b1011, 0 }, 0 }, 1343 { 6, -64, 64, 0, 0, { 0b1111, 0 }, 0 }, 1344 TRACK_BLOCK_END 1345 }; 1346 1347 static constexpr const rct_preview_track TrackBlocks106[] = { 1348 { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, 1349 { 1, 0, -32, 0, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1350 { 2, -32, 0, 0, 0, { 0b0111, 0 }, 0 }, 1351 { 3, -32, -32, 0, 0, { 0b1101, 0 }, 0 }, 1352 { 4, -32, -64, 0, 12, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1353 { 5, -64, -32, 0, 12, { 0b0111, 0 }, 0 }, 1354 { 6, -64, -64, 0, 12, { 0b1111, 0 }, 0 }, 1355 TRACK_BLOCK_END 1356 }; 1357 1358 static constexpr const rct_preview_track TrackBlocks107[] = { 1359 { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, 1360 { 1, 0, 32, 0, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1361 { 2, -32, 0, 0, 0, { 0b1011, 0 }, 0 }, 1362 { 3, -32, 32, 0, 0, { 0b1110, 0 }, 0 }, 1363 { 4, -32, 64, 0, 12, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1364 { 5, -64, 32, 0, 12, { 0b1011, 0 }, 0 }, 1365 { 6, -64, 64, 0, 12, { 0b1111, 0 }, 0 }, 1366 TRACK_BLOCK_END 1367 }; 1368 1369 static constexpr const rct_preview_track TrackBlocks108[] = { 1370 { 0, 0, 0, 0, 12, { 0b1111, 0 }, 0 }, 1371 { 1, 0, -32, 0, 12, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1372 { 2, -32, 0, 0, 12, { 0b0111, 0 }, 0 }, 1373 { 3, -32, -32, 0, 0, { 0b1101, 0 }, 0 }, 1374 { 4, -32, -64, 0, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1375 { 5, -64, -32, 0, 0, { 0b0111, 0 }, 0 }, 1376 { 6, -64, -64, 0, 0, { 0b1111, 0 }, 0 }, 1377 TRACK_BLOCK_END 1378 }; 1379 1380 static constexpr const rct_preview_track TrackBlocks109[] = { 1381 { 0, 0, 0, 0, 12, { 0b1111, 0 }, 0 }, 1382 { 1, 0, 32, 0, 12, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1383 { 2, -32, 0, 0, 12, { 0b1011, 0 }, 0 }, 1384 { 3, -32, 32, 0, 0, { 0b1110, 0 }, 0 }, 1385 { 4, -32, 64, 0, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1386 { 5, -64, 32, 0, 0, { 0b1011, 0 }, 0 }, 1387 { 6, -64, 64, 0, 0, { 0b1111, 0 }, 0 }, 1388 TRACK_BLOCK_END 1389 }; 1390 1391 static constexpr const rct_preview_track TrackBlocks110[] = { 1392 { 0, 0, 0, 0, 16, { 0b1111, 0b1100 }, 0 }, 1393 TRACK_BLOCK_END 1394 }; 1395 1396 static constexpr const rct_preview_track TrackBlocks111[] = { 1397 { 0, 0, 0, 0, 16, { 0b1111, 0b1100 }, 0 }, 1398 TRACK_BLOCK_END 1399 }; 1400 1401 static constexpr const rct_preview_track TrackBlocks112[] = { 1402 { 0, 0, 0, 0, 16, { 0b1111, 0 }, 0 }, 1403 TRACK_BLOCK_END 1404 }; 1405 1406 static constexpr const rct_preview_track TrackBlocks113[] = { 1407 { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, 1408 TRACK_BLOCK_END 1409 }; 1410 1411 static constexpr const rct_preview_track TrackBlocks114[] = { 1412 { 0, 0, 0, 0, 16, { 0b1111, 0 }, 0 }, 1413 TRACK_BLOCK_END 1414 }; 1415 1416 static constexpr const rct_preview_track TrackBlocks115[] = { 1417 { 0, 0, 0, 0, 16, { 0b1111, 0b0011 }, 0 }, 1418 TRACK_BLOCK_END 1419 }; 1420 1421 static constexpr const rct_preview_track TrackBlocks116[] = { 1422 { 0, 0, 0, 0, 16, { 0b1111, 0b0011 }, 0 }, 1423 TRACK_BLOCK_END 1424 }; 1425 1426 static constexpr const rct_preview_track TrackBlocks117[] = { 1427 { 0, 0, 0, 0, 16, { 0b1111, 0 }, 0 }, 1428 { 1, -32, 0, 0, 16, { 0b1111, 0 }, 0 }, 1429 { 2, -64, 0, 0, 16, { 0b1111, 0 }, 0 }, 1430 { 3, -96, 0, 0, 16, { 0b1111, 0 }, 0 }, 1431 { 4, -128, 0, 0, 16, { 0b1111, 0 }, 0 }, 1432 TRACK_BLOCK_END 1433 }; 1434 1435 static constexpr const rct_preview_track TrackBlocks118[] = { 1436 { 0, 0, 0, 0, 8, { 0b1111, 0 }, 0 }, 1437 { 1, -32, 0, 0, 16, { 0b1111, 0 }, 0 }, 1438 { 2, -64, 0, 16, 24, { 0b1111, 0 }, 0 }, 1439 { 3, -96, 0, 40, 48, { 0b1111, 0 }, 0 }, 1440 TRACK_BLOCK_END 1441 }; 1442 1443 static constexpr const rct_preview_track TrackBlocks119[] = { 1444 { 0, 0, 0, 0, 48, { 0b1111, 0 }, 0 }, 1445 { 1, -32, 0, 40, 48, { 0b1111, 0 }, 0 }, 1446 { 2, -64, 0, 64, 24, { 0b1111, 0 }, 0 }, 1447 { 3, -96, 0, 80, 8, { 0b1111, 0 }, 0 }, 1448 TRACK_BLOCK_END 1449 }; 1450 1451 static constexpr const rct_preview_track TrackBlocks120[] = { 1452 { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, 1453 TRACK_BLOCK_END 1454 }; 1455 1456 static constexpr const rct_preview_track TrackBlocks121[] = { 1457 { 0, 0, 0, 40, 48, { 0b1111, 0 }, 0 }, 1458 { 1, -32, 0, 16, 24, { 0b1111, 0 }, 0 }, 1459 { 2, -64, 0, 0, 16, { 0b1111, 0 }, 0 }, 1460 { 3, -96, 0, 0, 8, { 0b1111, 0 }, 0 }, 1461 TRACK_BLOCK_END 1462 }; 1463 1464 static constexpr const rct_preview_track TrackBlocks122[] = { 1465 { 0, 0, 0, 80, 8, { 0b1111, 0 }, 0 }, 1466 { 1, -32, 0, 64, 24, { 0b1111, 0 }, 0 }, 1467 { 2, -64, 0, 40, 48, { 0b1111, 0 }, 0 }, 1468 { 3, -96, 0, 0, 48, { 0b1111, 0 }, 0 }, 1469 TRACK_BLOCK_END 1470 }; 1471 1472 static constexpr const rct_preview_track TrackBlocks123[] = { 1473 { 0, 0, 0, 0, 8, { 0b1111, 0b1100 }, 0 }, 1474 { 1, -32, 0, 0, 8, { 0b1111, 0b0011 }, 0 }, 1475 { 2, -64, 0, -32, 32, { 0b1111, 0b0011 }, 0 }, 1476 { 3, -96, 0, -96, 64, { 0b1111, 0b0011 }, 0 }, 1477 TRACK_BLOCK_END 1478 }; 1479 1480 static constexpr const rct_preview_track TrackBlocks124[] = { 1481 { 0, 0, 0, 0, 16, { 0b1111, 0 }, 0 }, 1482 { 1, -32, 0, 0, 32, { 0b1111, 0 }, 0 }, 1483 { 2, -64, 0, 0, 48, { 0b1111, 0 }, 0 }, 1484 { 3, -96, 0, 0, 80, { 0b1111, 0 }, 0 }, 1485 { 4, -128, 0, 0, 160, { 0b1111, 0 }, 0 }, 1486 { 5, -192, 0, 0, 208, { 0b1111, 0 }, 0 }, 1487 { 6, -160, 0, 0, 208, { 0b1111, 0 }, 0 }, 1488 TRACK_BLOCK_END 1489 }; 1490 1491 static constexpr const rct_preview_track TrackBlocks125[] = { 1492 { 0, 0, 0, 0, 48, { 0b1111, 0 }, 0 }, 1493 { 1, 32, 0, 0, 48, { 0b1111, 0 }, 0 }, 1494 TRACK_BLOCK_END 1495 }; 1496 1497 static constexpr const rct_preview_track TrackBlocks126[] = { 1498 { 0, 0, 0, 0, 8, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, 1499 { 1, 32, 0, 0, 0, { 0b0000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 | RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, 1500 TRACK_BLOCK_END 1501 }; 1502 1503 static constexpr const rct_preview_track TrackBlocks127[] = { 1504 { 0, 0, 0, 0, 8, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, 1505 { 1, 32, 0, 0, 0, { 0b0000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 | RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, 1506 TRACK_BLOCK_END 1507 }; 1508 1509 static constexpr const rct_preview_track TrackBlocks128[] = { 1510 { 0, 0, 0, 0, 32, { 0b1111, 0b1100 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, 1511 { 1, 32, 0, 0, 0, { 0b0000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 | RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, 1512 TRACK_BLOCK_END 1513 }; 1514 1515 static constexpr const rct_preview_track TrackBlocks129[] = { 1516 { 0, 0, 0, 0, 32, { 0b1111, 0b0011 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, 1517 TRACK_BLOCK_END 1518 }; 1519 1520 static constexpr const rct_preview_track TrackBlocks130[] = { 1521 { 0, 0, 0, 0, 56, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, 1522 TRACK_BLOCK_END 1523 }; 1524 1525 static constexpr const rct_preview_track TrackBlocks131[] = { 1526 { 0, 0, 0, 0, 56, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, 1527 { 1, 32, 0, 0, 0, { 0b0000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 | RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, 1528 TRACK_BLOCK_END 1529 }; 1530 1531 static constexpr const rct_preview_track TrackBlocks132[] = { 1532 { 0, 0, 0, 0, 24, { 0b1111, 0b0011 }, 0 }, 1533 TRACK_BLOCK_END 1534 }; 1535 1536 static constexpr const rct_preview_track TrackBlocks133[] = { 1537 { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, 1538 { 1, -32, 0, 0, 0, { 0b1111, 0 }, 0 }, 1539 { 2, -32, -32, 0, 0, { 0b1000, 0 }, 0 }, 1540 { 3, -64, 0, 0, 0, { 0b0010, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1541 { 4, -64, -32, 0, 0, { 0b0001, 0 }, 0 }, 1542 TRACK_BLOCK_END 1543 }; 1544 1545 static constexpr const rct_preview_track TrackBlocks134[] = { 1546 { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, 1547 { 1, -32, 0, 0, 0, { 0b1111, 0 }, 0 }, 1548 { 2, -32, 32, 0, 0, { 0b0100, 0 }, 0 }, 1549 { 3, -64, 0, 0, 0, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1550 { 4, -64, 32, 0, 0, { 0b0010, 0 }, 0 }, 1551 TRACK_BLOCK_END 1552 }; 1553 1554 static constexpr const rct_preview_track TrackBlocks135[] = { 1555 { 0, 0, 0, 0, 0, { 0b1101, 0 }, 0 }, 1556 { 1, -32, 0, 0, 0, { 0b0001, 0 }, 0 }, 1557 { 2, 0, 32, 0, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1558 { 3, -32, 32, 0, 0, { 0b1111, 0 }, 0 }, 1559 { 4, -64, 32, 0, 0, { 0b1111, 0 }, 0 }, 1560 TRACK_BLOCK_END 1561 }; 1562 1563 static constexpr const rct_preview_track TrackBlocks136[] = { 1564 { 0, 0, 0, 0, 0, { 0b1101, 0 }, 0 }, 1565 { 1, 0, 32, 0, 0, { 0b0100, 0 }, 0 }, 1566 { 2, -32, 0, 0, 0, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1567 { 3, -32, 32, 0, 0, { 0b1111, 0 }, 0 }, 1568 { 4, -32, 64, 0, 0, { 0b1111, 0 }, 0 }, 1569 TRACK_BLOCK_END 1570 }; 1571 1572 static constexpr const rct_preview_track TrackBlocks137[] = { 1573 { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, 1574 { 1, -32, 0, 0, 0, { 0b1111, 0 }, 0 }, 1575 { 2, -32, -32, 0, 0, { 0b1000, 0 }, 0 }, 1576 { 3, -64, 0, 0, 0, { 0b0010, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1577 { 4, -64, -32, 0, 0, { 0b0001, 0 }, 0 }, 1578 TRACK_BLOCK_END 1579 }; 1580 1581 static constexpr const rct_preview_track TrackBlocks138[] = { 1582 { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, 1583 { 1, -32, 0, 0, 0, { 0b1111, 0 }, 0 }, 1584 { 2, -32, 32, 0, 0, { 0b0100, 0 }, 0 }, 1585 { 3, -64, 0, 0, 0, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1586 { 4, -64, 32, 0, 0, { 0b0010, 0 }, 0 }, 1587 TRACK_BLOCK_END 1588 }; 1589 1590 static constexpr const rct_preview_track TrackBlocks139[] = { 1591 { 0, 0, 0, 0, 0, { 0b1101, 0 }, 0 }, 1592 { 1, -32, 0, 0, 0, { 0b0001, 0 }, 0 }, 1593 { 2, 0, 32, 0, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1594 { 3, -32, 32, 0, 0, { 0b1111, 0 }, 0 }, 1595 { 4, -64, 32, 0, 0, { 0b1111, 0 }, 0 }, 1596 TRACK_BLOCK_END 1597 }; 1598 1599 static constexpr const rct_preview_track TrackBlocks140[] = { 1600 { 0, 0, 0, 0, 0, { 0b1101, 0 }, 0 }, 1601 { 1, 0, 32, 0, 0, { 0b0100, 0 }, 0 }, 1602 { 2, -32, 0, 0, 0, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1603 { 3, -32, 32, 0, 0, { 0b1111, 0 }, 0 }, 1604 { 4, -32, 64, 0, 0, { 0b1111, 0 }, 0 }, 1605 TRACK_BLOCK_END 1606 }; 1607 1608 static constexpr const rct_preview_track TrackBlocks141[] = { 1609 { 0, 0, 0, 0, 0, { 0b1101, 0 }, 0 }, 1610 { 1, 0, 32, 0, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1611 { 2, -32, 0, 0, 0, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1612 { 3, -32, 32, 0, 0, { 0b0010, 0 }, 0 }, 1613 TRACK_BLOCK_END 1614 }; 1615 1616 static constexpr const rct_preview_track TrackBlocks142[] = { 1617 { 0, 0, 0, 0, 16, { 0b1101, 0 }, 0 }, 1618 { 1, 0, 32, 0, 16, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1619 { 2, -32, 0, 0, 16, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1620 { 3, -32, 32, 0, 16, { 0b0010, 0 }, 0 }, 1621 TRACK_BLOCK_END 1622 }; 1623 1624 static constexpr const rct_preview_track TrackBlocks143[] = { 1625 { 0, 0, 0, 0, 64, { 0b1101, 0 }, 0 }, 1626 { 1, 0, 32, 0, 64, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1627 { 2, -32, 0, 0, 64, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1628 { 3, -32, 32, 0, 64, { 0b0010, 0 }, 0 }, 1629 TRACK_BLOCK_END 1630 }; 1631 1632 static constexpr const rct_preview_track TrackBlocks144[] = { 1633 { 0, 0, 0, 0, 8, { 0b1101, 0 }, 0 }, 1634 { 1, 0, 32, 0, 8, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1635 { 2, -32, 0, 0, 8, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1636 { 3, -32, 32, 0, 8, { 0b0010, 0 }, 0 }, 1637 TRACK_BLOCK_END 1638 }; 1639 1640 static constexpr const rct_preview_track TrackBlocks145[] = { 1641 { 0, 0, 0, 0, 32, { 0b1101, 0 }, 0 }, 1642 { 1, 0, 32, 0, 32, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1643 { 2, -32, 0, 0, 32, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1644 { 3, -32, 32, 0, 32, { 0b0010, 0 }, 0 }, 1645 TRACK_BLOCK_END 1646 }; 1647 1648 static constexpr const rct_preview_track TrackBlocks146[] = { 1649 { 0, 0, 0, 0, 32, { 0b1101, 0 }, 0 }, 1650 { 1, 0, 32, 0, 32, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1651 { 2, -32, 0, 0, 32, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1652 { 3, -32, 32, 0, 32, { 0b0010, 0 }, 0 }, 1653 TRACK_BLOCK_END 1654 }; 1655 1656 static constexpr const rct_preview_track TrackBlocks147[] = { 1657 { 0, 0, 0, 0, 8, { 0b1101, 0 }, 0 }, 1658 { 1, 0, 32, 0, 8, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1659 { 2, -32, 0, 0, 8, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1660 { 3, -32, 32, 0, 8, { 0b0010, 0 }, 0 }, 1661 TRACK_BLOCK_END 1662 }; 1663 1664 static constexpr const rct_preview_track TrackBlocks148[] = { 1665 { 0, 0, 0, 0, 16, { 0b1101, 0 }, 0 }, 1666 { 1, 0, 32, 0, 16, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1667 { 2, -32, 0, 0, 16, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1668 { 3, -32, 32, 0, 16, { 0b0010, 0 }, 0 }, 1669 TRACK_BLOCK_END 1670 }; 1671 1672 static constexpr const rct_preview_track TrackBlocks149[] = { 1673 { 0, 0, 0, 0, 64, { 0b1101, 0 }, 0 }, 1674 { 1, 0, 32, 0, 64, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1675 { 2, -32, 0, 0, 64, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1676 { 3, -32, 32, 0, 64, { 0b0010, 0 }, 0 }, 1677 TRACK_BLOCK_END 1678 }; 1679 1680 static constexpr const rct_preview_track TrackBlocks150[] = { 1681 { 0, 0, 0, 0, 8, { 0b1101, 0 }, 0 }, 1682 { 1, 0, 32, 0, 8, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1683 { 2, -32, 0, 0, 8, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1684 { 3, -32, 32, 0, 8, { 0b0010, 0 }, 0 }, 1685 TRACK_BLOCK_END 1686 }; 1687 1688 static constexpr const rct_preview_track TrackBlocks151[] = { 1689 { 0, 0, 0, 0, 32, { 0b1101, 0 }, 0 }, 1690 { 1, 0, 32, 0, 32, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1691 { 2, -32, 0, 0, 32, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1692 { 3, -32, 32, 0, 32, { 0b0010, 0 }, 0 }, 1693 TRACK_BLOCK_END 1694 }; 1695 1696 static constexpr const rct_preview_track TrackBlocks152[] = { 1697 { 0, 0, 0, 0, 32, { 0b1101, 0 }, 0 }, 1698 { 1, 0, 32, 0, 32, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1699 { 2, -32, 0, 0, 32, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1700 { 3, -32, 32, 0, 32, { 0b0010, 0 }, 0 }, 1701 TRACK_BLOCK_END 1702 }; 1703 1704 static constexpr const rct_preview_track TrackBlocks153[] = { 1705 { 0, 0, 0, 0, 8, { 0b1101, 0 }, 0 }, 1706 { 1, 0, 32, 0, 8, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1707 { 2, -32, 0, 0, 8, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1708 { 3, -32, 32, 0, 8, { 0b0010, 0 }, 0 }, 1709 TRACK_BLOCK_END 1710 }; 1711 1712 static constexpr const rct_preview_track TrackBlocks154[] = { 1713 { 0, 0, 0, 0, 24, { 0b1101, 0 }, 0 }, 1714 { 1, 0, 32, 0, 24, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1715 { 2, -32, 0, 0, 24, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1716 { 3, -32, 32, 0, 24, { 0b0010, 0 }, 0 }, 1717 TRACK_BLOCK_END 1718 }; 1719 1720 static constexpr const rct_preview_track TrackBlocks155[] = { 1721 { 0, 0, 0, 0, 24, { 0b1101, 0 }, 0 }, 1722 { 1, 0, 32, 0, 24, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1723 { 2, -32, 0, 0, 24, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1724 { 3, -32, 32, 0, 24, { 0b0010, 0 }, 0 }, 1725 TRACK_BLOCK_END 1726 }; 1727 1728 static constexpr const rct_preview_track TrackBlocks156[] = { 1729 { 0, 0, 0, 0, 24, { 0b1101, 0 }, 0 }, 1730 { 1, 0, 32, 0, 24, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1731 { 2, -32, 0, 0, 24, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1732 { 3, -32, 32, 0, 24, { 0b0010, 0 }, 0 }, 1733 TRACK_BLOCK_END 1734 }; 1735 1736 static constexpr const rct_preview_track TrackBlocks157[] = { 1737 { 0, 0, 0, 0, 24, { 0b1101, 0 }, 0 }, 1738 { 1, 0, 32, 0, 24, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1739 { 2, -32, 0, 0, 24, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1740 { 3, -32, 32, 0, 24, { 0b0010, 0 }, 0 }, 1741 TRACK_BLOCK_END 1742 }; 1743 1744 static constexpr const rct_preview_track TrackBlocks158[] = { 1745 { 0, 0, 0, 0, 0, { 0b1101, 0 }, 0 }, 1746 { 1, 0, 32, 0, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1747 { 2, -32, 0, 0, 0, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1748 { 3, -32, 32, 0, 0, { 0b0010, 0 }, 0 }, 1749 TRACK_BLOCK_END 1750 }; 1751 1752 static constexpr const rct_preview_track TrackBlocks159[] = { 1753 { 0, 0, 0, 0, 0, { 0b1101, 0 }, 0 }, 1754 { 1, 0, 32, 0, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1755 { 2, -32, 0, 0, 0, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1756 { 3, -32, 32, 0, 0, { 0b0010, 0 }, 0 }, 1757 TRACK_BLOCK_END 1758 }; 1759 1760 static constexpr const rct_preview_track TrackBlocks160[] = { 1761 { 0, 0, 0, 0, 0, { 0b1101, 0 }, 0 }, 1762 { 1, 0, 32, 0, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1763 { 2, -32, 0, 0, 0, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1764 { 3, -32, 32, 0, 0, { 0b0010, 0 }, 0 }, 1765 TRACK_BLOCK_END 1766 }; 1767 1768 static constexpr const rct_preview_track TrackBlocks161[] = { 1769 { 0, 0, 0, 0, 0, { 0b1101, 0 }, 0 }, 1770 { 1, 0, 32, 0, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1771 { 2, -32, 0, 0, 0, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1772 { 3, -32, 32, 0, 0, { 0b0010, 0 }, 0 }, 1773 TRACK_BLOCK_END 1774 }; 1775 1776 static constexpr const rct_preview_track TrackBlocks162[] = { 1777 { 0, 0, 0, 0, 8, { 0b1101, 0 }, 0 }, 1778 { 1, 0, 32, 0, 8, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1779 { 2, -32, 0, 0, 8, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1780 { 3, -32, 32, 0, 8, { 0b0010, 0 }, 0 }, 1781 TRACK_BLOCK_END 1782 }; 1783 1784 static constexpr const rct_preview_track TrackBlocks163[] = { 1785 { 0, 0, 0, 0, 8, { 0b1101, 0 }, 0 }, 1786 { 1, 0, 32, 0, 8, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1787 { 2, -32, 0, 0, 8, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1788 { 3, -32, 32, 0, 8, { 0b0010, 0 }, 0 }, 1789 TRACK_BLOCK_END 1790 }; 1791 1792 static constexpr const rct_preview_track TrackBlocks164[] = { 1793 { 0, 0, 0, 0, 8, { 0b1101, 0 }, 0 }, 1794 { 1, 0, 32, 0, 8, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1795 { 2, -32, 0, 0, 8, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1796 { 3, -32, 32, 0, 8, { 0b0010, 0 }, 0 }, 1797 TRACK_BLOCK_END 1798 }; 1799 1800 static constexpr const rct_preview_track TrackBlocks165[] = { 1801 { 0, 0, 0, 0, 8, { 0b1101, 0 }, 0 }, 1802 { 1, 0, 32, 0, 8, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1803 { 2, -32, 0, 0, 8, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1804 { 3, -32, 32, 0, 8, { 0b0010, 0 }, 0 }, 1805 TRACK_BLOCK_END 1806 }; 1807 1808 static constexpr const rct_preview_track TrackBlocks166[] = { 1809 { 0, 0, 0, 0, 8, { 0b1101, 0 }, 0 }, 1810 { 1, 0, 32, 0, 8, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1811 { 2, -32, 0, 0, 8, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1812 { 3, -32, 32, 0, 8, { 0b0010, 0 }, 0 }, 1813 TRACK_BLOCK_END 1814 }; 1815 1816 static constexpr const rct_preview_track TrackBlocks167[] = { 1817 { 0, 0, 0, 0, 8, { 0b1101, 0 }, 0 }, 1818 { 1, 0, 32, 0, 8, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1819 { 2, -32, 0, 0, 8, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1820 { 3, -32, 32, 0, 8, { 0b0010, 0 }, 0 }, 1821 TRACK_BLOCK_END 1822 }; 1823 1824 static constexpr const rct_preview_track TrackBlocks168[] = { 1825 { 0, 0, 0, 0, 8, { 0b1101, 0 }, 0 }, 1826 { 1, 0, 32, 0, 8, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1827 { 2, -32, 0, 0, 8, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1828 { 3, -32, 32, 0, 8, { 0b0010, 0 }, 0 }, 1829 TRACK_BLOCK_END 1830 }; 1831 1832 static constexpr const rct_preview_track TrackBlocks169[] = { 1833 { 0, 0, 0, 0, 8, { 0b1101, 0 }, 0 }, 1834 { 1, 0, 32, 0, 8, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1835 { 2, -32, 0, 0, 8, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1836 { 3, -32, 32, 0, 8, { 0b0010, 0 }, 0 }, 1837 TRACK_BLOCK_END 1838 }; 1839 1840 static constexpr const rct_preview_track TrackBlocks170[] = { 1841 { 0, 0, 0, 0, 0, { 0b1101, 0 }, 0 }, 1842 { 1, 0, 32, 0, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1843 { 2, -32, 0, 0, 0, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1844 { 3, -32, 32, 0, 0, { 0b0010, 0 }, 0 }, 1845 TRACK_BLOCK_END 1846 }; 1847 1848 static constexpr const rct_preview_track TrackBlocks171[] = { 1849 { 0, 0, 0, 0, 0, { 0b1101, 0 }, 0 }, 1850 { 1, 0, 32, 0, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1851 { 2, -32, 0, 0, 0, { 0b0001, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1852 { 3, -32, 32, 0, 0, { 0b0010, 0 }, 0 }, 1853 TRACK_BLOCK_END 1854 }; 1855 1856 static constexpr const rct_preview_track TrackBlocks172[] = { 1857 { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, 1858 TRACK_BLOCK_END 1859 }; 1860 1861 static constexpr const rct_preview_track TrackBlocks173[] = { 1862 { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, 1863 TRACK_BLOCK_END 1864 }; 1865 1866 static constexpr const rct_preview_track TrackBlocks174[] = { 1867 { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, 1868 { 1, -32, 0, 0, 16, { 0b1111, 0 }, 0 }, 1869 { 2, -64, 0, 0, 16, { 0b1111, 0 }, 0 }, 1870 TRACK_BLOCK_END 1871 }; 1872 1873 static constexpr const rct_preview_track TrackBlocks175[] = { 1874 { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, 1875 { 1, -32, 0, 0, 16, { 0b1111, 0 }, 0 }, 1876 { 2, -64, 0, 0, 16, { 0b1111, 0 }, 0 }, 1877 TRACK_BLOCK_END 1878 }; 1879 1880 static constexpr const rct_preview_track TrackBlocks176[] = { 1881 { 0, 0, 0, -32, 16, { 0b1111, 0 }, 0 }, 1882 { 1, -32, 0, -32, 16, { 0b1111, 0 }, 0 }, 1883 { 2, -64, 0, -32, 0, { 0b1111, 0 }, 0 }, 1884 TRACK_BLOCK_END 1885 }; 1886 1887 static constexpr const rct_preview_track TrackBlocks177[] = { 1888 { 0, 0, 0, -32, 16, { 0b1111, 0 }, 0 }, 1889 { 1, -32, 0, -32, 16, { 0b1111, 0 }, 0 }, 1890 { 2, -64, 0, -32, 0, { 0b1111, 0 }, 0 }, 1891 TRACK_BLOCK_END 1892 }; 1893 1894 static constexpr const rct_preview_track TrackBlocks178[] = { 1895 { 0, 0, 0, 0, 0, { 0b0111, 0b0100 }, 0 }, 1896 { 1, 0, -32, 0, 16, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1897 { 2, -32, 0, 0, 16, { 0b0010, 0 }, 0 }, 1898 { 3, -32, -32, 16, 16,{ 0b0111, 0b0110 }, 0 }, 1899 TRACK_BLOCK_END 1900 }; 1901 1902 static constexpr const rct_preview_track TrackBlocks179[] = { 1903 { 0, 0, 0, 0, 16, { 0b1011, 0b1000 }, 0 }, 1904 { 1, 0, 32, 0, 16, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1905 { 2, -32, 0, 0, 16, { 0b0001, 0 }, 0 }, 1906 { 3, -32, 32, 16, 16,{ 0b1011, 0b1001 }, 0 }, 1907 TRACK_BLOCK_END 1908 }; 1909 1910 static constexpr const rct_preview_track TrackBlocks180[] = { 1911 { 0, 0, 0, 16, 16,{ 0b0111, 0b0011 }, 0 }, 1912 { 1, 0, -32, 0, 16, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1913 { 2, -32, 0, 0, 16, { 0b0010, 0 }, 0 }, 1914 { 3, -32, -32, 0, 0, { 0b0111, 0b0001 }, 0 }, 1915 TRACK_BLOCK_END 1916 }; 1917 1918 static constexpr const rct_preview_track TrackBlocks181[] = { 1919 { 0, 0, 0, 16, 16, { 0b1011, 0b0011 }, 0 }, 1920 { 1, 0, 32, 0, 16, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 1921 { 2, -32, 0, 0, 16, { 0b0001, 0 }, 0 }, 1922 { 3, -32, 32, 0, 0, { 0b1011, 0b0010 }, 0 }, 1923 TRACK_BLOCK_END 1924 }; 1925 1926 static constexpr const rct_preview_track TrackBlocks182[] = { 1927 { 0, 0, 0, 0, 16, { 0b1111, 0b1100 }, 0 }, 1928 TRACK_BLOCK_END 1929 }; 1930 1931 static constexpr const rct_preview_track TrackBlocks183[] = { 1932 { 0, 0, 0, 0, 24, { 0b1111, 0b1100 }, 0 }, 1933 { 1, -32, 0, 16, 40, { 0b1111, 0b1100 }, 0 }, 1934 { 2, -64, 0, 32, 56, { 0b1111, 0 }, 0 }, 1935 { 3, -96, 0, 64, 192, { 0b1111, 0 }, 0 }, 1936 { 4, -128, -32, 120, 96, { 0b1111, 0 }, 0 }, 1937 { 5, -96, -32, 64, 192, { 0b1111, 0 }, 0 }, 1938 { 6, -64, -32, 248, 16, { 0b1111, 0 }, 0 }, 1939 TRACK_BLOCK_END 1940 }; 1941 1942 static constexpr const rct_preview_track TrackBlocks184[] = { 1943 { 0, 0, 0, 0, 24, { 0b1111, 0b1100 }, 0 }, 1944 { 1, -32, 0, 16, 40, { 0b1111, 0b1100 }, 0 }, 1945 { 2, -64, 0, 32, 56, { 0b1111, 0 }, 0 }, 1946 { 3, -96, 0, 64, 192, { 0b1111, 0 }, 0 }, 1947 { 4, -128, 32, 120, 96, { 0b1111, 0 }, 0 }, 1948 { 5, -96, 32, 64, 192, { 0b1111, 0 }, 0 }, 1949 { 6, -64, 32, 248, 16, { 0b1111, 0 }, 0 }, 1950 TRACK_BLOCK_END 1951 }; 1952 1953 static constexpr const rct_preview_track TrackBlocks185[] = { 1954 { 0, 0, 0, -32, 24, { 0b1111, 0 }, 0 }, 1955 { 1, -32, 0, -216, 192, { 0b1111, 0 }, 0 }, 1956 { 2, -64, 0, -160, 96, { 0b1111, 0 }, 0 }, 1957 { 3, -32, -32, -216, 192, { 0b1111, 0 }, 0 }, 1958 { 4, 0, -32, -248, 56, { 0b1111, 0 }, 0 }, 1959 { 5, 32, -32, -264, 40, { 0b1111, 0b1100 }, 0 }, 1960 { 6, 64, -32, -280, 24, { 0b1111, 0b1100 }, 0 }, 1961 TRACK_BLOCK_END 1962 }; 1963 1964 static constexpr const rct_preview_track TrackBlocks186[] = { 1965 { 0, 0, 0, -32, 24, { 0b1111, 0 }, 0 }, 1966 { 1, -32, 0, -216, 192, { 0b1111, 0 }, 0 }, 1967 { 2, -64, 0, -160, 96, { 0b1111, 0 }, 0 }, 1968 { 3, -32, 32, -216, 192, { 0b1111, 0 }, 0 }, 1969 { 4, 0, 32, -248, 56, { 0b1111, 0 }, 0 }, 1970 { 5, 32, 32, -264, 40, { 0b1111, 0b1100 }, 0 }, 1971 { 6, 64, 32, -280, 24, { 0b1111, 0b1100 }, 0 }, 1972 TRACK_BLOCK_END 1973 }; 1974 1975 static constexpr const rct_preview_track TrackBlocks187[] = { 1976 { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, 1977 { 1, -32, 0, -16, 16, { 0b1111, 0 }, 0 }, 1978 { 2, -64, 0, -16, 16, { 0b1111, 0 }, 0 }, 1979 TRACK_BLOCK_END 1980 }; 1981 1982 static constexpr const rct_preview_track TrackBlocks188[] = { 1983 { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, 1984 { 1, -32, 0, -16, 16, { 0b1111, 0 }, 0 }, 1985 { 2, -64, 0, -16, 16, { 0b1111, 0 }, 0 }, 1986 TRACK_BLOCK_END 1987 }; 1988 1989 static constexpr const rct_preview_track TrackBlocks189[] = { 1990 { 0, 0, 0, 0, 16, { 0b1111, 0 }, 0 }, 1991 { 1, -32, 0, 0, 16, { 0b1111, 0 }, 0 }, 1992 { 2, -64, 0, 16, 0, { 0b1111, 0 }, 0 }, 1993 TRACK_BLOCK_END 1994 }; 1995 1996 static constexpr const rct_preview_track TrackBlocks190[] = { 1997 { 0, 0, 0, 0, 16, { 0b1111, 0 }, 0 }, 1998 { 1, -32, 0, 0, 16, { 0b1111, 0 }, 0 }, 1999 { 2, -64, 0, 16, 0, { 0b1111, 0 }, 0 }, 2000 TRACK_BLOCK_END 2001 }; 2002 2003 static constexpr const rct_preview_track TrackBlocks191[] = { 2004 { 0, 0, 0, 0, 32, { 0b1111, 0b1100 }, 0 }, 2005 { 1, -32, 0, 16, 16, { 0b1111, 0b1100 }, 0 }, 2006 { 2, -64, 0, 32, 96,{ 0b0011, 0 }, 0 }, 2007 { 3, -32, 0, 120, 16, { 0b1111, 0 }, 0 }, 2008 TRACK_BLOCK_END 2009 }; 2010 2011 static constexpr const rct_preview_track TrackBlocks192[] = { 2012 { 0, 0, 0, 0, 32, { 0b1111, 0 }, 0 }, 2013 { 1, -32, 0, -88, 96,{ 0b0011, 0 }, 0 }, 2014 { 2, 0, 0, -104, 16, { 0b1111, 0b1100 }, 0 }, 2015 { 3, 32, 0, -120, 16, { 0b1111, 0b1100 }, 0 }, 2016 TRACK_BLOCK_END 2017 }; 2018 2019 static constexpr const rct_preview_track TrackBlocks193[] = { 2020 { 0, 0, 0, 0, 16, { 0b1111, 0 }, 0 }, 2021 { 1, -32, 0, 24, 32, { 0b0111, 0 }, 0 }, 2022 { 2, -32, -32, 48, 16, { 0b1111, 0 }, 0 }, 2023 TRACK_BLOCK_END 2024 }; 2025 2026 static constexpr const rct_preview_track TrackBlocks194[] = { 2027 { 0, 0, 0, 0, 16, { 0b1111, 0 }, 0 }, 2028 { 1, -32, 0, 24, 32, { 0b1011, 0 }, 0 }, 2029 { 2, -32, 32, 48, 16, { 0b1111, 0 }, 0 }, 2030 TRACK_BLOCK_END 2031 }; 2032 2033 static constexpr const rct_preview_track TrackBlocks195[] = { 2034 { 0, 0, 0, 0, 16, { 0b1111, 0 }, 0 }, 2035 { 1, -32, 0, -24, 32, { 0b0111, 0 }, 0 }, 2036 { 2, -32, -32, -48, 16, { 0b1111, 0 }, 0 }, 2037 TRACK_BLOCK_END 2038 }; 2039 2040 static constexpr const rct_preview_track TrackBlocks196[] = { 2041 { 0, 0, 0, 0, 16, { 0b1111, 0 }, 0 }, 2042 { 1, -32, 0, -24, 32, { 0b1011, 0 }, 0 }, 2043 { 2, -32, 32, -48, 16, { 0b1111, 0 }, 0 }, 2044 TRACK_BLOCK_END 2045 }; 2046 2047 static constexpr const rct_preview_track TrackBlocks197[] = { 2048 { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, 2049 { 1, -32, 0, 0, 32, { 0b1111, 0 }, 0 }, 2050 { 2, -64, 0, 16, 0, { 0b1111, 0 }, 0 }, 2051 { 3, 0, 0, 32, 0, { 0b1111, 0 }, 0 }, 2052 TRACK_BLOCK_END 2053 }; 2054 2055 static constexpr const rct_preview_track TrackBlocks198[] = { 2056 { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, 2057 { 1, -32, 0, -32, 32, { 0b1111, 0 }, 0 }, 2058 { 2, -64, 0, -16, 0, { 0b1111, 0 }, 0 }, 2059 { 3, 0, 0, -32, 0, { 0b1111, 0 }, 0 }, 2060 TRACK_BLOCK_END 2061 }; 2062 2063 static constexpr const rct_preview_track TrackBlocks199[] = { 2064 { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, 2065 { 1, -32, 0, 0, 0, { 0b1111, 0 }, 0 }, 2066 { 2, -64, 0, 0, 0, { 0b1111, 0 }, 0 }, 2067 { 3, -96, 0, 0, 0, { 0b1111, 0 }, 0 }, 2068 { 4, -128, 0, 0, 0, { 0b1111, 0 }, 0 }, 2069 { 5, -160, 0, 0, 0, { 0b1111, 0 }, 0 }, 2070 TRACK_BLOCK_END 2071 }; 2072 2073 static constexpr const rct_preview_track TrackBlocks200[] = { 2074 { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, 2075 { 1, -32, 0, 0, 0, { 0b1111, 0 }, 0 }, 2076 { 2, -64, 0, 0, 0, { 0b1111, 0 }, 0 }, 2077 { 3, -96, 0, 0, 0, { 0b1111, 0 }, 0 }, 2078 { 4, -128, 0, 0, 0, { 0b1111, 0 }, 0 }, 2079 { 5, -160, 0, 0, 0, { 0b1111, 0 }, 0 }, 2080 TRACK_BLOCK_END 2081 }; 2082 2083 static constexpr const rct_preview_track TrackBlocks201[] = { 2084 { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, 2085 { 1, -32, 0, 0, 0, { 0b1111, 0 }, 0 }, 2086 TRACK_BLOCK_END 2087 }; 2088 2089 static constexpr const rct_preview_track TrackBlocks202[] = { 2090 { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, 2091 { 1, -32, 0, 0, 0, { 0b1111, 0 }, 0 }, 2092 TRACK_BLOCK_END 2093 }; 2094 2095 static constexpr const rct_preview_track TrackBlocks203[] = { 2096 { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, 2097 { 1, -32, 0, 0, 0, { 0b1111, 0 }, 0 }, 2098 TRACK_BLOCK_END 2099 }; 2100 2101 static constexpr const rct_preview_track TrackBlocks204[] = { 2102 { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, 2103 { 1, -32, 0, 0, 0, { 0b1111, 0 }, 0 }, 2104 { 2, -32, 32, 0, 0, { 0b1111, 0 }, 0 }, 2105 TRACK_BLOCK_END 2106 }; 2107 2108 static constexpr const rct_preview_track TrackBlocks205[] = { 2109 { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, 2110 { 1, -32, 0, 0, 0, { 0b1111, 0 }, 0 }, 2111 { 2, -32, -32, 0, 0, { 0b1111, 0 }, 0 }, 2112 TRACK_BLOCK_END 2113 }; 2114 2115 static constexpr const rct_preview_track TrackBlocks206[] = { 2116 { 0, 0, 0, 0, 16, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, 2117 { 1, -32, 0, -40, 32, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, 2118 { 2, -64, 0, -96, 56, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, 2119 { 3, -96, 0, -96, 0, { 0b0000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 | RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, 2120 TRACK_BLOCK_END 2121 }; 2122 2123 static constexpr const rct_preview_track TrackBlocks207[] = { 2124 { 0, 0, 0, 0, 56, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, 2125 { 1, 32, 0, 56, 32, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, 2126 { 2, 64, 0, 96, 16, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, 2127 TRACK_BLOCK_END 2128 }; 2129 2130 static constexpr const rct_preview_track TrackBlocks208[] = { 2131 { 0, 0, 0, -32, 16, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, 2132 { 1, -32, 0, -72, 32, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, 2133 { 2, -64, 0, -128, 56, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, 2134 { 3, -96, 0, -128, 0, { 0b0000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 | RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, 2135 TRACK_BLOCK_END 2136 }; 2137 2138 static constexpr const rct_preview_track TrackBlocks209[] = { 2139 { 0, 0, 0, 0, 0, { 0b0111, 0 }, 0 }, 2140 { 1, 0, -32, 0, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 2141 { 2, -32, 0, 0, 8, { 0b0010, 0 }, 0 }, 2142 { 3, -32, -32, 0, 8, { 0b0111, 0 }, 0 }, 2143 TRACK_BLOCK_END 2144 }; 2145 2146 static constexpr const rct_preview_track TrackBlocks210[] = { 2147 { 0, 0, 0, 0, 0, { 0b1011, 0 }, 0 }, 2148 { 1, 0, 32, 0, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 2149 { 2, -32, 0, 0, 8, { 0b0001, 0 }, 0 }, 2150 { 3, -32, 32, 0, 8, { 0b1011, 0 }, 0 }, 2151 TRACK_BLOCK_END 2152 }; 2153 2154 static constexpr const rct_preview_track TrackBlocks211[] = { 2155 { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, 2156 { 1, 0, -32, 0, 0, { 0b1111, 0 }, 0 }, 2157 { 2, -32, -32, 0, 0, { 0b1111, 0 }, 0 }, 2158 { 3, -64, -32, 0, 0, { 0b1111, 0 }, 0 }, 2159 { 4, -32, 0, 0, 0, { 0b1111, 0 }, 0 }, 2160 { 5, -64, 0, 0, 0, { 0b1111, 0 }, 0 }, 2161 TRACK_BLOCK_END 2162 }; 2163 2164 static constexpr const rct_preview_track TrackBlocks212[] = { 2165 { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, 2166 { 1, 0, 32, 0, 0, { 0b1111, 0 }, 0 }, 2167 { 2, -32, 32, 0, 0, { 0b1111, 0 }, 0 }, 2168 { 3, -64, 32, 0, 0, { 0b1111, 0 }, 0 }, 2169 { 4, -32, 0, 0, 0, { 0b1111, 0 }, 0 }, 2170 { 5, -64, 0, 0, 0, { 0b1111, 0 }, 0 }, 2171 TRACK_BLOCK_END 2172 }; 2173 2174 static constexpr const rct_preview_track TrackBlocks213[] = { 2175 { 0, 0, 0, 0, 32, { 0b1111, 0 }, 0 }, 2176 { 1, 32, 0, 0, 32, { 0b1111, 0 }, 0 }, 2177 { 2, -64, 0, 0, 32, { 0b1111, 0 }, 0 }, 2178 { 3, -32, 0, 0, 32, { 0b1111, 0 }, 0 }, 2179 TRACK_BLOCK_END 2180 }; 2181 2182 static constexpr const rct_preview_track TrackBlocks214[] = { 2183 { 0, 0, 0, 0, 48, { 0b1111, 0 }, 0 }, 2184 { 1, 32, 0, 0, 48, { 0b1111, 0 }, 0 }, 2185 TRACK_BLOCK_END 2186 }; 2187 2188 static constexpr const rct_preview_track TrackBlocks215[] = { 2189 { 0, 0, 0, 0, 208, { 0b1111, 0 }, 0 }, 2190 { 1, 32, 0, 0, 208, { 0b1111, 0 }, 0 }, 2191 { 2, -32, 0, 0, 160, { 0b1111, 0 }, 0 }, 2192 { 3, -64, 0, 0, 80, { 0b1111, 0 }, 0 }, 2193 { 4, -96, 0, 0, 48, { 0b1111, 0 }, 0 }, 2194 { 5, -128, 0, 0, 32, { 0b1111, 0 }, 0 }, 2195 { 6, -160, 0, 0, 16, { 0b1111, 0 }, 0 }, 2196 TRACK_BLOCK_END 2197 }; 2198 2199 static constexpr const rct_preview_track TrackBlocks216[] = { 2200 { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, 2201 TRACK_BLOCK_END 2202 }; 2203 2204 static constexpr const rct_preview_track TrackBlocks217[] = { 2205 { 0, 0, 0, 0, 16, { 0b0111, 0b0100 }, 0 }, 2206 { 1, 0, -32, 16, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 2207 { 2, -32, 0, 16, 0, { 0b0010, 0 }, 0 }, 2208 { 3, -32, -32, 16, 16,{ 0b0111, 0b0110 }, 0 }, 2209 TRACK_BLOCK_END 2210 }; 2211 2212 static constexpr const rct_preview_track TrackBlocks218[] = { 2213 { 0, 0, 0, 0, 16, { 0b1011, 0b1000 }, 0 }, 2214 { 1, 0, 32, 16, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 2215 { 2, -32, 0, 16, 0, { 0b0001, 0 }, 0 }, 2216 { 3, -32, 32, 16, 16,{ 0b1011, 0b1001 }, 0 }, 2217 TRACK_BLOCK_END 2218 }; 2219 2220 static constexpr const rct_preview_track TrackBlocks219[] = { 2221 { 0, 0, 0, 16, 16,{ 0b0111, 0b0011 }, 0 }, 2222 { 1, 0, -32, 16, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 2223 { 2, -32, 0, 16, 0, { 0b0010, 0 }, 0 }, 2224 { 3, -32, -32, 0, 16, { 0b0111, 0b0001 }, 0 }, 2225 TRACK_BLOCK_END 2226 }; 2227 2228 static constexpr const rct_preview_track TrackBlocks220[] = { 2229 { 0, 0, 0, 16, 16, { 0b1011, 0b0011 }, 0 }, 2230 { 1, 0, 32, 16, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 2231 { 2, -32, 0, 16, 0, { 0b0001, 0 }, 0 }, 2232 { 3, -32, 32, 0, 16, { 0b1011, 0b0010 }, 0 }, 2233 TRACK_BLOCK_END 2234 }; 2235 2236 static constexpr const rct_preview_track TrackBlocks221[] = { 2237 { 0, 0, 0, 0, 16, { 0b1111, 0b1100 }, 0 }, 2238 { 1, 0, -32, 16, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 2239 { 2, -32, 0, 16, 16, { 0b0111, 0b0100 }, 0 }, 2240 { 3, -32, -32, 24, 16, { 0b1101, 0 }, 0 }, 2241 { 4, -32, -64, 48, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 2242 { 5, -64, -32, 32, 16, { 0b0111, 0b0100 }, 0 }, 2243 { 6, -64, -64, 48, 16, { 0b1111, 0b0110 }, 0 }, 2244 TRACK_BLOCK_END 2245 }; 2246 2247 static constexpr const rct_preview_track TrackBlocks222[] = { 2248 { 0, 0, 0, 0, 16, { 0b1111, 0b1100 }, 0 }, 2249 { 1, 0, 32, 16, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 2250 { 2, -32, 0, 16, 16, { 0b1011, 0b1000 }, 0 }, 2251 { 3, -32, 32, 24, 16, { 0b1110, 0 }, 0 }, 2252 { 4, -32, 64, 48, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 2253 { 5, -64, 32, 32, 16, { 0b1011, 0b1000 }, 0 }, 2254 { 6, -64, 64, 48, 16, { 0b1111, 0b1001 }, 0 }, 2255 TRACK_BLOCK_END 2256 }; 2257 2258 static constexpr const rct_preview_track TrackBlocks223[] = { 2259 { 0, 0, 0, 48, 16, { 0b1111, 0b0011 }, 0 }, 2260 { 1, 0, -32, 48, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 2261 { 2, -32, 0, 32, 16, { 0b0111, 0b0001 }, 0 }, 2262 { 3, -32, -32, 24, 16, { 0b1101, 0 }, 0 }, 2263 { 4, -32, -64, 16, 0, { 0b1000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 2264 { 5, -64, -32, 16, 16, { 0b0111, 0b0001 }, 0 }, 2265 { 6, -64, -64, 0, 16, { 0b1111, 0b1001 }, 0 }, 2266 TRACK_BLOCK_END 2267 }; 2268 2269 static constexpr const rct_preview_track TrackBlocks224[] = { 2270 { 0, 0, 0, 48, 16, { 0b1111, 0b0011 }, 0 }, 2271 { 1, 0, 32, 48, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 2272 { 2, -32, 0, 32, 16, { 0b1011, 0b0010 }, 0 }, 2273 { 3, -32, 32, 24, 16, { 0b1110, 0 }, 0 }, 2274 { 4, -32, 64, 16, 0, { 0b0100, 0 }, RCT_PREVIEW_TRACK_FLAG_0 }, 2275 { 5, -64, 32, 16, 16, { 0b1011, 0b0010 }, 0 }, 2276 { 6, -64, 64, 0, 16, { 0b1111, 0b0110 }, 0 }, 2277 TRACK_BLOCK_END 2278 }; 2279 2280 static constexpr const rct_preview_track TrackBlocks225[] = { 2281 { 0, 0, 0, 0, 16, { 0b1111, 0b1100 }, 0 }, 2282 TRACK_BLOCK_END 2283 }; 2284 2285 static constexpr const rct_preview_track TrackBlocks226[] = { 2286 { 0, 0, 0, 0, 16, { 0b1111, 0b1100 }, 0 }, 2287 TRACK_BLOCK_END 2288 }; 2289 2290 static constexpr const rct_preview_track TrackBlocks227[] = { 2291 { 0, 0, 0, 0, 16, { 0b1111, 0b1100 }, 0 }, 2292 TRACK_BLOCK_END 2293 }; 2294 2295 static constexpr const rct_preview_track TrackBlocks228[] = { 2296 { 0, 0, 0, 0, 16, { 0b1111, 0b1100 }, 0 }, 2297 TRACK_BLOCK_END 2298 }; 2299 2300 static constexpr const rct_preview_track TrackBlocks229[] = { 2301 { 0, 0, 0, 0, 16, { 0b1111, 0b0011 }, 0 }, 2302 TRACK_BLOCK_END 2303 }; 2304 2305 static constexpr const rct_preview_track TrackBlocks230[] = { 2306 { 0, 0, 0, 0, 16, { 0b1111, 0b0011 }, 0 }, 2307 TRACK_BLOCK_END 2308 }; 2309 2310 static constexpr const rct_preview_track TrackBlocks231[] = { 2311 { 0, 0, 0, 0, 16, { 0b1111, 0b0011 }, 0 }, 2312 TRACK_BLOCK_END 2313 }; 2314 2315 static constexpr const rct_preview_track TrackBlocks232[] = { 2316 { 0, 0, 0, 0, 16, { 0b1111, 0b0011 }, 0 }, 2317 TRACK_BLOCK_END 2318 }; 2319 2320 static constexpr const rct_preview_track TrackBlocks233[] = { 2321 { 0, 0, 0, 0, 8, { 0b1111, 0 }, 0 }, 2322 TRACK_BLOCK_END 2323 }; 2324 2325 static constexpr const rct_preview_track TrackBlocks234[] = { 2326 { 0, 0, 0, 0, 8, { 0b1111, 0 }, 0 }, 2327 TRACK_BLOCK_END 2328 }; 2329 2330 static constexpr const rct_preview_track TrackBlocks235[] = { 2331 { 0, 0, 0, 0, 8, { 0b1111, 0b1100 }, 0 }, 2332 TRACK_BLOCK_END 2333 }; 2334 2335 static constexpr const rct_preview_track TrackBlocks236[] = { 2336 { 0, 0, 0, 0, 8, { 0b1111, 0b1100 }, 0 }, 2337 TRACK_BLOCK_END 2338 }; 2339 2340 static constexpr const rct_preview_track TrackBlocks237[] = { 2341 { 0, 0, 0, 0, 8, { 0b1111, 0b0011 }, 0 }, 2342 TRACK_BLOCK_END 2343 }; 2344 2345 static constexpr const rct_preview_track TrackBlocks238[] = { 2346 { 0, 0, 0, 0, 8, { 0b1111, 0b0011 }, 0 }, 2347 TRACK_BLOCK_END 2348 }; 2349 2350 static constexpr const rct_preview_track TrackBlocks239[] = { 2351 { 0, 0, 0, 0, 8, { 0b1111, 0 }, 0 }, 2352 TRACK_BLOCK_END 2353 }; 2354 2355 static constexpr const rct_preview_track TrackBlocks240[] = { 2356 { 0, 0, 0, 0, 8, { 0b1111, 0 }, 0 }, 2357 TRACK_BLOCK_END 2358 }; 2359 2360 static constexpr const rct_preview_track TrackBlocks241[] = { 2361 { 0, 0, 0, 0, 8, { 0b1111, 0 }, 0 }, 2362 TRACK_BLOCK_END 2363 }; 2364 2365 static constexpr const rct_preview_track TrackBlocks242[] = { 2366 { 0, 0, 0, 0, 8, { 0b1111, 0 }, 0 }, 2367 TRACK_BLOCK_END 2368 }; 2369 2370 static constexpr const rct_preview_track TrackBlocks243[] = { 2371 { 0, 0, 0, 0, 8, { 0b1111, 0b1100 }, 0 }, 2372 TRACK_BLOCK_END 2373 }; 2374 2375 static constexpr const rct_preview_track TrackBlocks244[] = { 2376 { 0, 0, 0, 0, 8, { 0b1111, 0b1100 }, 0 }, 2377 TRACK_BLOCK_END 2378 }; 2379 2380 static constexpr const rct_preview_track TrackBlocks245[] = { 2381 { 0, 0, 0, 0, 8, { 0b1111, 0b0011 }, 0 }, 2382 TRACK_BLOCK_END 2383 }; 2384 2385 static constexpr const rct_preview_track TrackBlocks246[] = { 2386 { 0, 0, 0, 0, 8, { 0b1111, 0b0011 }, 0 }, 2387 TRACK_BLOCK_END 2388 }; 2389 2390 static constexpr const rct_preview_track TrackBlocks247[] = { 2391 { 0, 0, 0, 0, 8, { 0b1111, 0 }, 0 }, 2392 TRACK_BLOCK_END 2393 }; 2394 2395 static constexpr const rct_preview_track TrackBlocks248[] = { 2396 { 0, 0, 0, 0, 8, { 0b1111, 0 }, 0 }, 2397 TRACK_BLOCK_END 2398 }; 2399 2400 static constexpr const rct_preview_track TrackBlocks249[] = { 2401 { 0, 0, 0, 0, 72, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, 2402 { 1, 0, 32, 0, 0, { 0b0000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 | RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, 2403 TRACK_BLOCK_END 2404 }; 2405 2406 static constexpr const rct_preview_track TrackBlocks250[] = { 2407 { 0, 0, 0, 0, 72, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, 2408 { 1, 0, -32, 0, 0, { 0b0000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 | RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, 2409 TRACK_BLOCK_END 2410 }; 2411 2412 static constexpr const rct_preview_track TrackBlocks251[] = { 2413 { 0, 0, 0, 0, 72, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, 2414 { 1, 0, 32, 0, 0, { 0b0000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 | RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, 2415 TRACK_BLOCK_END 2416 }; 2417 2418 static constexpr const rct_preview_track TrackBlocks252[] = { 2419 { 0, 0, 0, 0, 72, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, 2420 { 1, 0, -32, 0, 0, { 0b0000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 | RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, 2421 TRACK_BLOCK_END 2422 }; 2423 2424 static constexpr const rct_preview_track TrackBlocks253[] = { 2425 { 0, 0, 0, 0, 56, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, 2426 { 1, 32, 0, 56, 32, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, 2427 { 2, 64, 0, 96, 16, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, 2428 TRACK_BLOCK_END 2429 }; 2430 2431 static constexpr const rct_preview_track TrackBlocks254[] = { 2432 { 0, 0, 0, -32, 16, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, 2433 { 1, -32, 0, -72, 32, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, 2434 { 2, -64, 0, -128, 56, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, 2435 { 3, -96, 0, -128, 0, { 0b0000, 0 }, RCT_PREVIEW_TRACK_FLAG_0 | RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, 2436 TRACK_BLOCK_END 2437 }; 2438 2439 static constexpr const rct_preview_track TrackBlocks255[] = { 2440 { 0, 0, 0, 32, 56, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, 2441 { 1, 32, 0, 88, 32, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, 2442 { 2, 64, 0, 128, 16, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_IS_VERTICAL }, 2443 TRACK_BLOCK_END 2444 }; 2445 2446 static constexpr const rct_preview_track TrackBlocksRotationControlToggle[] = { 2447 { 0, 0, 0, 0, 0, { 0b1111, 0b1100 }, 0 }, 2448 TRACK_BLOCK_END 2449 }; 2450 2451 static constexpr const rct_preview_track TrackBlocksFlatTrack1x4A[] = { 2452 { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, 2453 { 1, -64, 0, 0, 0, { 0b1111, 0 }, 0 }, 2454 { 2, -32, 0, 0, 0, { 0b1111, 0 }, 0 }, 2455 { 3, 32, 0, 0, 0, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_1 }, 2456 TRACK_BLOCK_END 2457 }; 2458 2459 static constexpr const rct_preview_track TrackBlocksFlatTrack2x2[] = { 2460 { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, 2461 { 1, 0, 32, 0, 0, { 0b1111, 0 }, 0 }, 2462 { 2, 32, 0, 0, 0, { 0b1111, 0 }, 0 }, 2463 { 3, 32, 32, 0, 0, { 0b1111, 0 }, 0 }, 2464 TRACK_BLOCK_END 2465 }; 2466 2467 static constexpr const rct_preview_track TrackBlocksFlatTrack4x4[] = { 2468 { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, 2469 { 1, 0, 32, 0, 0, { 0b1111, 0 }, 0 }, 2470 { 2, 0, 64, 0, 0, { 0b1111, 0 }, 0 }, 2471 { 3, 0, 96, 0, 0, { 0b1111, 0 }, 0 }, 2472 { 4, 32, 0, 0, 0, { 0b1111, 0 }, 0 }, 2473 { 5, 32, 32, 0, 0, { 0b1111, 0 }, 0 }, 2474 { 6, 32, 64, 0, 0, { 0b1111, 0 }, 0 }, 2475 { 7, 32, 96, 0, 0, { 0b1111, 0 }, 0 }, 2476 { 8, 64, 0, 0, 0, { 0b1111, 0 }, 0 }, 2477 { 9, 64, 32, 0, 0, { 0b1111, 0 }, 0 }, 2478 { 10, 64, 64, 0, 0, { 0b1111, 0 }, 0 }, 2479 { 11, 64, 96, 0, 0, { 0b1111, 0 }, 0 }, 2480 { 12, 96, 0, 0, 0, { 0b1111, 0 }, 0 }, 2481 { 13, 96, 32, 0, 0, { 0b1111, 0 }, 0 }, 2482 { 14, 96, 64, 0, 0, { 0b1111, 0 }, 0 }, 2483 { 15, 96, 96, 0, 0, { 0b1111, 0 }, 0 }, 2484 TRACK_BLOCK_END 2485 }; 2486 2487 static constexpr const rct_preview_track TrackBlocksFlatTrack2x4[] = { 2488 { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, 2489 { 1, 0, 32, 0, 0, { 0b1111, 0 }, 0 }, 2490 { 2, 0, 64, 0, 0, { 0b1111, 0 }, 0 }, 2491 { 3, 0, 96, 0, 0, { 0b1111, 0 }, 0 }, 2492 { 4, 32, 0, 0, 0, { 0b1111, 0 }, 0 }, 2493 { 5, 32, 32, 0, 0, { 0b1111, 0 }, 0 }, 2494 { 6, 32, 64, 0, 0, { 0b1111, 0 }, 0 }, 2495 { 7, 32, 96, 0, 0, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_1 }, 2496 TRACK_BLOCK_END 2497 }; 2498 2499 static constexpr const rct_preview_track TrackBlocksFlatTrack1x5[] = { 2500 { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, 2501 { 1, -64, 0, 0, 0, { 0b1111, 0 }, 0 }, 2502 { 2, -32, 0, 0, 0, { 0b1111, 0 }, 0 }, 2503 { 3, 32, 0, 0, 0, { 0b1111, 0 }, 0 }, 2504 { 4, 64, 0, 0, 0, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_1 }, 2505 TRACK_BLOCK_END 2506 }; 2507 2508 static constexpr const rct_preview_track TrackBlocksFlatTrack1x1A[] = { 2509 { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, 2510 TRACK_BLOCK_END 2511 }; 2512 2513 static constexpr const rct_preview_track TrackBlocksFlatTrack1x4B[] = { 2514 { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, 2515 { 1, -64, 0, 0, 0, { 0b1111, 0 }, 0 }, 2516 { 2, -32, 0, 0, 0, { 0b1111, 0 }, 0 }, 2517 { 3, 32, 0, 0, 0, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_1 }, 2518 TRACK_BLOCK_END 2519 }; 2520 2521 static constexpr const rct_preview_track TrackBlocksFlatTrack1x1B[] = { 2522 { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, 2523 TRACK_BLOCK_END 2524 }; 2525 2526 static constexpr const rct_preview_track TrackBlocksFlatTrack1x4C[] = { 2527 { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, 2528 { 1, -64, 0, 0, 0, { 0b1111, 0 }, 0 }, 2529 { 2, -32, 0, 0, 0, { 0b1111, 0 }, 0 }, 2530 { 3, 32, 0, 0, 0, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_1 }, 2531 TRACK_BLOCK_END 2532 }; 2533 2534 static constexpr const rct_preview_track TrackBlocksFlatTrack3x3[] = { 2535 { 0, 0, 0, 0, 0, { 0b1111, 0 }, 0 }, 2536 { 1, -32, -32, 0, 0, { 0b1111, 0 }, 0 }, 2537 { 2, -32, 0, 0, 0, { 0b1111, 0 }, 0 }, 2538 { 3, -32, 32, 0, 0, { 0b1111, 0 }, 0 }, 2539 { 4, 0, -32, 0, 0, { 0b1111, 0 }, 0 }, 2540 { 5, 0, 32, 0, 0, { 0b1111, 0 }, 0 }, 2541 { 6, 32, -32, 0, 0, { 0b1111, 0 }, 0 }, 2542 { 7, 32, 32, 0, 0, { 0b1111, 0 }, 0 }, 2543 { 8, 32, 0, 0, 0, { 0b1111, 0 }, RCT_PREVIEW_TRACK_FLAG_1 }, 2544 TRACK_BLOCK_END 2545 }; 2546 2547 // rct2: 0x00994638 2548 static constexpr std::array<const rct_preview_track*, TrackElemType::Count> TrackBlocks = { 2549 TrackBlocks000, 2550 TrackBlocks001, 2551 TrackBlocks002, 2552 TrackBlocks003, 2553 TrackBlocks004, 2554 TrackBlocks005, 2555 TrackBlocks006, 2556 TrackBlocks007, 2557 TrackBlocks008, 2558 TrackBlocks009, 2559 TrackBlocks010, 2560 TrackBlocks011, 2561 TrackBlocks012, 2562 TrackBlocks013, 2563 TrackBlocks014, 2564 TrackBlocks015, 2565 TrackBlocks016, 2566 TrackBlocks017, 2567 TrackBlocks018, 2568 TrackBlocks019, 2569 TrackBlocks020, 2570 TrackBlocks021, 2571 TrackBlocks022, 2572 TrackBlocks023, 2573 TrackBlocks024, 2574 TrackBlocks025, 2575 TrackBlocks026, 2576 TrackBlocks027, 2577 TrackBlocks028, 2578 TrackBlocks029, 2579 TrackBlocks030, 2580 TrackBlocks031, 2581 TrackBlocks032, 2582 TrackBlocks033, 2583 TrackBlocks034, 2584 TrackBlocks035, 2585 TrackBlocks036, 2586 TrackBlocks037, 2587 TrackBlocks038, 2588 TrackBlocks039, 2589 TrackBlocks040, 2590 TrackBlocks041, 2591 TrackBlocks042, 2592 TrackBlocks043, 2593 TrackBlocks044, 2594 TrackBlocks045, 2595 TrackBlocks046, 2596 TrackBlocks047, 2597 TrackBlocks048, 2598 TrackBlocks049, 2599 TrackBlocks050, 2600 TrackBlocks051, 2601 TrackBlocks052, 2602 TrackBlocks053, 2603 TrackBlocks054, 2604 TrackBlocks055, 2605 TrackBlocks056, 2606 TrackBlocks057, 2607 TrackBlocks058, 2608 TrackBlocks059, 2609 TrackBlocks060, 2610 TrackBlocks061, 2611 TrackBlocks062, 2612 TrackBlocks063, 2613 TrackBlocks064, 2614 TrackBlocks065, 2615 TrackBlocks066, 2616 TrackBlocks067, 2617 TrackBlocks068, 2618 TrackBlocks069, 2619 TrackBlocks070, 2620 TrackBlocks071, 2621 TrackBlocks072, 2622 TrackBlocks073, 2623 TrackBlocks074, 2624 TrackBlocks075, 2625 TrackBlocks076, 2626 TrackBlocks077, 2627 TrackBlocks078, 2628 TrackBlocks079, 2629 TrackBlocks080, 2630 TrackBlocks081, 2631 TrackBlocks082, 2632 TrackBlocks083, 2633 TrackBlocks084, 2634 TrackBlocks085, 2635 TrackBlocks086, 2636 TrackBlocks087, 2637 TrackBlocks088, 2638 TrackBlocks089, 2639 TrackBlocks090, 2640 TrackBlocks091, 2641 TrackBlocks092, 2642 TrackBlocks093, 2643 TrackBlocks094, 2644 TrackBlocks095, 2645 TrackBlocks096, 2646 TrackBlocks097, 2647 TrackBlocks098, 2648 TrackBlocks099, 2649 TrackBlocks100, 2650 TrackBlocks101, 2651 TrackBlocks102, 2652 TrackBlocks103, 2653 TrackBlocks104, 2654 TrackBlocks105, 2655 TrackBlocks106, 2656 TrackBlocks107, 2657 TrackBlocks108, 2658 TrackBlocks109, 2659 TrackBlocks110, 2660 TrackBlocks111, 2661 TrackBlocks112, 2662 TrackBlocks113, 2663 TrackBlocks114, 2664 TrackBlocks115, 2665 TrackBlocks116, 2666 TrackBlocks117, 2667 TrackBlocks118, 2668 TrackBlocks119, 2669 TrackBlocks120, 2670 TrackBlocks121, 2671 TrackBlocks122, 2672 TrackBlocks123, 2673 TrackBlocks124, 2674 TrackBlocks125, 2675 TrackBlocks126, 2676 TrackBlocks127, 2677 TrackBlocks128, 2678 TrackBlocks129, 2679 TrackBlocks130, 2680 TrackBlocks131, 2681 TrackBlocks132, 2682 TrackBlocks133, 2683 TrackBlocks134, 2684 TrackBlocks135, 2685 TrackBlocks136, 2686 TrackBlocks137, 2687 TrackBlocks138, 2688 TrackBlocks139, 2689 TrackBlocks140, 2690 TrackBlocks141, 2691 TrackBlocks142, 2692 TrackBlocks143, 2693 TrackBlocks144, 2694 TrackBlocks145, 2695 TrackBlocks146, 2696 TrackBlocks147, 2697 TrackBlocks148, 2698 TrackBlocks149, 2699 TrackBlocks150, 2700 TrackBlocks151, 2701 TrackBlocks152, 2702 TrackBlocks153, 2703 TrackBlocks154, 2704 TrackBlocks155, 2705 TrackBlocks156, 2706 TrackBlocks157, 2707 TrackBlocks158, 2708 TrackBlocks159, 2709 TrackBlocks160, 2710 TrackBlocks161, 2711 TrackBlocks162, 2712 TrackBlocks163, 2713 TrackBlocks164, 2714 TrackBlocks165, 2715 TrackBlocks166, 2716 TrackBlocks167, 2717 TrackBlocks168, 2718 TrackBlocks169, 2719 TrackBlocks170, 2720 TrackBlocks171, 2721 TrackBlocks172, 2722 TrackBlocks173, 2723 TrackBlocks174, 2724 TrackBlocks175, 2725 TrackBlocks176, 2726 TrackBlocks177, 2727 TrackBlocks178, 2728 TrackBlocks179, 2729 TrackBlocks180, 2730 TrackBlocks181, 2731 TrackBlocks182, 2732 TrackBlocks183, 2733 TrackBlocks184, 2734 TrackBlocks185, 2735 TrackBlocks186, 2736 TrackBlocks187, 2737 TrackBlocks188, 2738 TrackBlocks189, 2739 TrackBlocks190, 2740 TrackBlocks191, 2741 TrackBlocks192, 2742 TrackBlocks193, 2743 TrackBlocks194, 2744 TrackBlocks195, 2745 TrackBlocks196, 2746 TrackBlocks197, 2747 TrackBlocks198, 2748 TrackBlocks199, 2749 TrackBlocks200, 2750 TrackBlocks201, 2751 TrackBlocks202, 2752 TrackBlocks203, 2753 TrackBlocks204, 2754 TrackBlocks205, 2755 TrackBlocks206, 2756 TrackBlocks207, 2757 TrackBlocks208, 2758 TrackBlocks209, 2759 TrackBlocks210, 2760 TrackBlocks211, 2761 TrackBlocks212, 2762 TrackBlocks213, 2763 TrackBlocks214, 2764 TrackBlocks215, 2765 TrackBlocks216, 2766 TrackBlocks217, 2767 TrackBlocks218, 2768 TrackBlocks219, 2769 TrackBlocks220, 2770 TrackBlocks221, 2771 TrackBlocks222, 2772 TrackBlocks223, 2773 TrackBlocks224, 2774 TrackBlocks225, 2775 TrackBlocks226, 2776 TrackBlocks227, 2777 TrackBlocks228, 2778 TrackBlocks229, 2779 TrackBlocks230, 2780 TrackBlocks231, 2781 TrackBlocks232, 2782 TrackBlocks233, 2783 TrackBlocks234, 2784 TrackBlocks235, 2785 TrackBlocks236, 2786 TrackBlocks237, 2787 TrackBlocks238, 2788 TrackBlocks239, 2789 TrackBlocks240, 2790 TrackBlocks241, 2791 TrackBlocks242, 2792 TrackBlocks243, 2793 TrackBlocks244, 2794 TrackBlocks245, 2795 TrackBlocks246, 2796 TrackBlocks247, 2797 TrackBlocks248, 2798 TrackBlocks249, 2799 TrackBlocks250, 2800 TrackBlocks251, 2801 TrackBlocks252, 2802 TrackBlocks253, 2803 TrackBlocks254, 2804 TrackBlocks255, 2805 TrackBlocksRotationControlToggle, 2806 2807 TrackBlocksFlatTrack1x4A, 2808 TrackBlocksFlatTrack2x2, 2809 TrackBlocksFlatTrack4x4, 2810 TrackBlocksFlatTrack2x4, 2811 TrackBlocksFlatTrack1x5, 2812 TrackBlocksFlatTrack1x1A, 2813 TrackBlocksFlatTrack1x4B, 2814 TrackBlocksFlatTrack1x1B, 2815 TrackBlocksFlatTrack1x4C, 2816 TrackBlocksFlatTrack3x3, 2817 }; 2818 2819 static constexpr uint8_t TrackPieceLengths[TrackElemType::Count] = { 2820 32, // TrackElemType::Flat 2821 32, // TrackElemType::EndStation 2822 32, // TrackElemType::BeginStation 2823 32, // TrackElemType::MiddleStation 2824 33, // TrackElemType::Up25 2825 40, // TrackElemType::Up60 2826 32, // TrackElemType::FlatToUp25 2827 34, // TrackElemType::Up25ToUp60 2828 34, // TrackElemType::Up60ToUp25 2829 32, // TrackElemType::Up25ToFlat 2830 33, // TrackElemType::Down25 2831 40, // TrackElemType::Down60 2832 32, // TrackElemType::FlatToDown25 2833 34, // TrackElemType::Down25ToDown60 2834 34, // TrackElemType::Down60ToDown25 2835 32, // TrackElemType::Down25ToFlat 2836 124, // TrackElemType::LeftQuarterTurn5Tiles 2837 124, // TrackElemType::RightQuarterTurn5Tiles 2838 32, // TrackElemType::FlatToLeftBank 2839 32, // TrackElemType::FlatToRightBank 2840 32, // TrackElemType::LeftBankToFlat 2841 32, // TrackElemType::RightBankToFlat 2842 124, // TrackElemType::BankedLeftQuarterTurn5Tiles 2843 124, // TrackElemType::BankedRightQuarterTurn5Tiles 2844 32, // TrackElemType::LeftBankToUp25 2845 32, // TrackElemType::RightBankToUp25 2846 32, // TrackElemType::Up25ToLeftBank 2847 32, // TrackElemType::Up25ToRightBank 2848 32, // TrackElemType::LeftBankToDown25 2849 32, // TrackElemType::RightBankToDown25 2850 32, // TrackElemType::Down25ToLeftBank 2851 32, // TrackElemType::Down25ToRightBank 2852 32, // TrackElemType::LeftBank 2853 32, // TrackElemType::RightBank 2854 130, // TrackElemType::LeftQuarterTurn5TilesUp25 2855 130, // TrackElemType::RightQuarterTurn5TilesUp25 2856 130, // TrackElemType::LeftQuarterTurn5TilesDown25 2857 130, // TrackElemType::RightQuarterTurn5TilesDown25 2858 96, // TrackElemType::SBendLeft 2859 96, // TrackElemType::SBendRight 2860 120, // TrackElemType::LeftVerticalLoop 2861 120, // TrackElemType::RightVerticalLoop 2862 75, // TrackElemType::LeftQuarterTurn3Tiles 2863 75, // TrackElemType::RightQuarterTurn3Tiles 2864 75, // TrackElemType::LeftBankedQuarterTurn3Tiles 2865 75, // TrackElemType::RightBankedQuarterTurn3Tiles 2866 77, // TrackElemType::LeftQuarterTurn3TilesUp25 2867 77, // TrackElemType::RightQuarterTurn3TilesUp25 2868 77, // TrackElemType::LeftQuarterTurn3TilesDown25 2869 77, // TrackElemType::RightQuarterTurn3TilesDown25 2870 24, // TrackElemType::LeftQuarterTurn1Tile 2871 24, // TrackElemType::RightQuarterTurn1Tile 2872 96, // TrackElemType::LeftTwistDownToUp 2873 96, // TrackElemType::RightTwistDownToUp 2874 96, // TrackElemType::LeftTwistUpToDown 2875 96, // TrackElemType::RightTwistUpToDown 2876 60, // TrackElemType::HalfLoopUp 2877 60, // TrackElemType::HalfLoopDown 2878 55, // TrackElemType::LeftCorkscrewUp 2879 55, // TrackElemType::RightCorkscrewUp 2880 55, // TrackElemType::LeftCorkscrewDown 2881 55, // TrackElemType::RightCorkscrewDown 2882 36, // TrackElemType::FlatToUp60 2883 36, // TrackElemType::Up60ToFlat 2884 36, // TrackElemType::FlatToDown60 2885 36, // TrackElemType::Down60ToFlat 2886 32, // TrackElemType::TowerBase 2887 32, // TrackElemType::TowerSection 2888 32, // TrackElemType::FlatCovered 2889 33, // TrackElemType::Up25Covered 2890 40, // TrackElemType::Up60Covered 2891 32, // TrackElemType::FlatToUp25Covered 2892 34, // TrackElemType::Up25ToUp60Covered 2893 34, // TrackElemType::Up60ToUp25Covered 2894 32, // TrackElemType::Up25ToFlatCovered 2895 33, // TrackElemType::Down25Covered 2896 40, // TrackElemType::Down60Covered 2897 32, // TrackElemType::FlatToDown25Covered 2898 34, // TrackElemType::Down25ToDown60Covered 2899 34, // TrackElemType::Down60ToDown25Covered 2900 32, // TrackElemType::Down25ToFlatCovered 2901 124, // TrackElemType::LeftQuarterTurn5TilesCovered 2902 124, // TrackElemType::RightQuarterTurn5TilesCovered 2903 96, // TrackElemType::SBendLeftCovered 2904 96, // TrackElemType::SBendRightCovered 2905 75, // TrackElemType::LeftQuarterTurn3TilesCovered 2906 75, // TrackElemType::RightQuarterTurn3TilesCovered 2907 150, // TrackElemType::LeftHalfBankedHelixUpSmall 2908 150, // TrackElemType::RightHalfBankedHelixUpSmall 2909 150, // TrackElemType::LeftHalfBankedHelixDownSmall 2910 150, // TrackElemType::RightHalfBankedHelixDownSmall 2911 248, // TrackElemType::LeftHalfBankedHelixUpLarge 2912 248, // TrackElemType::RightHalfBankedHelixUpLarge 2913 248, // TrackElemType::LeftHalfBankedHelixDownLarge 2914 248, // TrackElemType::RightHalfBankedHelixDownLarge 2915 64, // TrackElemType::LeftQuarterTurn1TileUp60 2916 64, // TrackElemType::RightQuarterTurn1TileUp60 2917 64, // TrackElemType::LeftQuarterTurn1TileDown60 2918 64, // TrackElemType::RightQuarterTurn1TileDown60 2919 32, // TrackElemType::Brakes 2920 32, // TrackElemType::Booster 2921 32, // TrackElemType::InvertedUp90ToFlatQuarterLoopAlias / Maze 2922 124, // TrackElemType::LeftQuarterBankedHelixLargeUp 2923 124, // TrackElemType::RightQuarterBankedHelixLargeUp 2924 124, // TrackElemType::LeftQuarterBankedHelixLargeDown 2925 124, // TrackElemType::RightQuarterBankedHelixLargeDown 2926 124, // TrackElemType::LeftQuarterHelixLargeUp 2927 124, // TrackElemType::RightQuarterHelixLargeUp 2928 124, // TrackElemType::LeftQuarterHelixLargeDown 2929 124, // TrackElemType::RightQuarterHelixLargeDown 2930 33, // TrackElemType::Up25LeftBanked 2931 33, // TrackElemType::Up25RightBanked 2932 32, // TrackElemType::Waterfall 2933 32, // TrackElemType::Rapids 2934 32, // TrackElemType::OnRidePhoto 2935 33, // TrackElemType::Down25LeftBanked 2936 33, // TrackElemType::Down25RightBanked 2937 128, // TrackElemType::Watersplash 2938 165, // TrackElemType::FlatToUp60LongBase 2939 165, // TrackElemType::Up60ToFlatLongBase 2940 32, // TrackElemType::Whirlpool 2941 165, // TrackElemType::Down60ToFlatLongBase 2942 165, // TrackElemType::FlatToDown60LongBase 2943 138, // TrackElemType::CableLiftHill 2944 32, // TrackElemType::ReverseFreefallSlope 2945 32, // TrackElemType::ReverseFreefallVertical 2946 32, // TrackElemType::Up90 2947 32, // TrackElemType::Down90 2948 32, // TrackElemType::Up60ToUp90 2949 32, // TrackElemType::Down90ToDown60 2950 32, // TrackElemType::Up90ToUp60 2951 32, // TrackElemType::Down60ToDown90 2952 32, // TrackElemType::BrakeForDrop 2953 87, // TrackElemType::LeftEighthToDiag 2954 87, // TrackElemType::RightEighthToDiag 2955 87, // TrackElemType::LeftEighthToOrthogonal 2956 87, // TrackElemType::RightEighthToOrthogonal 2957 87, // TrackElemType::LeftEighthBankToDiag 2958 87, // TrackElemType::RightEighthBankToDiag 2959 87, // TrackElemType::LeftEighthBankToOrthogonal 2960 87, // TrackElemType::RightEighthBankToOrthogonal 2961 45, // TrackElemType::DiagFlat 2962 45, // TrackElemType::DiagUp25 2963 45, // TrackElemType::DiagUp60 2964 45, // TrackElemType::DiagFlatToUp25 2965 45, // TrackElemType::DiagUp25ToUp60 2966 45, // TrackElemType::DiagUp60ToUp25 2967 45, // TrackElemType::DiagUp25ToFlat 2968 45, // TrackElemType::DiagDown25 2969 45, // TrackElemType::DiagDown60 2970 45, // TrackElemType::DiagFlatToDown25 2971 45, // TrackElemType::DiagDown25ToDown60 2972 45, // TrackElemType::DiagDown60ToDown25 2973 45, // TrackElemType::DiagDown25ToFlat 2974 45, // TrackElemType::DiagFlatToUp60 2975 45, // TrackElemType::DiagUp60ToFlat 2976 45, // TrackElemType::DiagFlatToDown60 2977 45, // TrackElemType::DiagDown60ToFlat 2978 45, // TrackElemType::DiagFlatToLeftBank 2979 45, // TrackElemType::DiagFlatToRightBank 2980 45, // TrackElemType::DiagLeftBankToFlat 2981 45, // TrackElemType::DiagRightBankToFlat 2982 45, // TrackElemType::DiagLeftBankToUp25 2983 45, // TrackElemType::DiagRightBankToUp25 2984 45, // TrackElemType::DiagUp25ToLeftBank 2985 45, // TrackElemType::DiagUp25ToRightBank 2986 45, // TrackElemType::DiagLeftBankToDown25 2987 45, // TrackElemType::DiagRightBankToDown25 2988 45, // TrackElemType::DiagDown25ToLeftBank 2989 45, // TrackElemType::DiagDown25ToRightBank 2990 45, // TrackElemType::DiagLeftBank 2991 45, // TrackElemType::DiagRightBank 2992 16, // TrackElemType::LogFlumeReverser 2993 32, // TrackElemType::SpinningTunnel 2994 96, // TrackElemType::LeftBarrelRollUpToDown 2995 96, // TrackElemType::RightBarrelRollUpToDown 2996 96, // TrackElemType::LeftBarrelRollDownToUp 2997 96, // TrackElemType::RightBarrelRollDownToUp 2998 64, // TrackElemType::LeftBankToLeftQuarterTurn3TilesUp25 2999 64, // TrackElemType::RightBankToRightQuarterTurn3TilesUp25 3000 64, // TrackElemType::LeftQuarterTurn3TilesDown25ToLeftBank 3001 64, // TrackElemType::RightQuarterTurn3TilesDown25ToRightBank 3002 32, // TrackElemType::PoweredLift 3003 100, // TrackElemType::LeftLargeHalfLoopUp 3004 100, // TrackElemType::RightLargeHalfLoopUp 3005 100, // TrackElemType::RightLargeHalfLoopDown 3006 100, // TrackElemType::LeftLargeHalfLoopDown 3007 96, // TrackElemType::LeftFlyerTwistUp 3008 96, // TrackElemType::RightFlyerTwistUp 3009 96, // TrackElemType::LeftFlyerTwistDown 3010 96, // TrackElemType::RightFlyerTwistDown 3011 64, // TrackElemType::FlyerHalfLoopUp 3012 64, // TrackElemType::FlyerHalfLoopDown 3013 64, // TrackElemType::LeftFlyerCorkscrewUp 3014 64, // TrackElemType::RightFlyerCorkscrewUp 3015 64, // TrackElemType::LeftFlyerCorkscrewDown 3016 64, // TrackElemType::RightFlyerCorkscrewDown 3017 16, // TrackElemType::HeartLineTransferUp 3018 16, // TrackElemType::HeartLineTransferDown 3019 64, // TrackElemType::LeftHeartLineRoll 3020 64, // TrackElemType::RightHeartLineRoll 3021 32, // TrackElemType::MinigolfHoleA 3022 32, // TrackElemType::MinigolfHoleB 3023 32, // TrackElemType::MinigolfHoleC 3024 32, // TrackElemType::MinigolfHoleD 3025 32, // TrackElemType::MinigolfHoleE 3026 80, // TrackElemType::MultiDimInvertedFlatToDown90QuarterLoop 3027 80, // TrackElemType::Up90ToInvertedFlatQuarterLoop 3028 80, // TrackElemType::InvertedFlatToDown90QuarterLoop 3029 64, // TrackElemType::LeftCurvedLiftHill 3030 64, // TrackElemType::RightCurvedLiftHill 3031 32, // TrackElemType::LeftReverser 3032 32, // TrackElemType::RightReverser 3033 32, // TrackElemType::AirThrustTopCap 3034 32, // TrackElemType::AirThrustVerticalDown 3035 32, // TrackElemType::AirThrustVerticalDownToLevel 3036 32, // TrackElemType::BlockBrakes 3037 32, // TrackElemType::LeftBankedQuarterTurn3TileUp25 3038 32, // TrackElemType::RightBankedQuarterTurn3TileUp25 3039 32, // TrackElemType::LeftBankedQuarterTurn3TileDown25 3040 32, // TrackElemType::RightBankedQuarterTurn3TileDown25 3041 32, // TrackElemType::LeftBankedQuarterTurn5TileUp25 3042 32, // TrackElemType::RightBankedQuarterTurn5TileUp25 3043 32, // TrackElemType::LeftBankedQuarterTurn5TileDown25 3044 32, // TrackElemType::RightBankedQuarterTurn5TileDown25 3045 32, // TrackElemType::Up25ToLeftBankedUp25 3046 32, // TrackElemType::Up25ToRightBankedUp25 3047 32, // TrackElemType::LeftBankedUp25ToUp25 3048 32, // TrackElemType::RightBankedUp25ToUp25 3049 32, // TrackElemType::Down25ToLeftBankedDown25 3050 32, // TrackElemType::Down25ToRightBankedDown25 3051 32, // TrackElemType::LeftBankedDown25ToDown25 3052 32, // TrackElemType::RightBankedDown25ToDown25 3053 32, // TrackElemType::LeftBankedFlatToLeftBankedUp25 3054 32, // TrackElemType::RightBankedFlatToRightBankedUp25 3055 32, // TrackElemType::LeftBankedUp25ToLeftBankedFlat 3056 32, // TrackElemType::RightBankedUp25ToRightBankedFlat 3057 32, // TrackElemType::LeftBankedFlatToLeftBankedDown25 3058 32, // TrackElemType::RightBankedFlatToRightBankedDown25 3059 32, // TrackElemType::LeftBankedDown25ToLeftBankedFlat 3060 32, // TrackElemType::RightBankedDown25ToRightBankedFlat 3061 32, // TrackElemType::FlatToLeftBankedUp25 3062 32, // TrackElemType::FlatToRightBankedUp25 3063 32, // TrackElemType::LeftBankedUp25ToFlat 3064 32, // TrackElemType::RightBankedUp25ToFlat 3065 32, // TrackElemType::FlatToLeftBankedDown25 3066 32, // TrackElemType::FlatToRightBankedDown25 3067 32, // TrackElemType::LeftBankedDown25ToFlat 3068 32, // TrackElemType::RightBankedDown25ToFlat 3069 32, // TrackElemType::LeftQuarterTurn1TileUp90 3070 32, // TrackElemType::RightQuarterTurn1TileUp90 3071 32, // TrackElemType::LeftQuarterTurn1TileDown90 3072 32, // TrackElemType::RightQuarterTurn1TileDown90 3073 80, // TrackElemType::MultiDimUp90ToInvertedFlatQuarterLoop 3074 80, // TrackElemType::MultiDimFlatToDown90QuarterLoop 3075 80, // TrackElemType::MultiDimInvertedUp90ToFlatQuarterLoop 3076 32, // TrackElemType::RotationControlToggle 3077 0, // TrackElemType::FlatTrack1x4A 3078 0, // TrackElemType::FlatTrack2x2 3079 0, // TrackElemType::FlatTrack4x4 3080 0, // TrackElemType::FlatTrack2x4 3081 0, // TrackElemType::FlatTrack1x5 3082 0, // TrackElemType::FlatTrack1x1A 3083 0, // TrackElemType::FlatTrack1x4B 3084 0, // TrackElemType::FlatTrack1x1B 3085 0, // TrackElemType::FlatTrack1x4C 3086 0, // TrackElemType::FlatTrack3x3 3087 }; 3088 3089 // rct2: 0x00998C95 3090 static constexpr track_curve_chain gTrackCurveChain[TrackElemType::Count] = { 3091 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3092 { RideConstructionSpecialPieceSelected | TrackElemType::EndStation, RideConstructionSpecialPieceSelected | TrackElemType::EndStation }, 3093 { RideConstructionSpecialPieceSelected | TrackElemType::EndStation, RideConstructionSpecialPieceSelected | TrackElemType::EndStation }, 3094 { RideConstructionSpecialPieceSelected | TrackElemType::EndStation, RideConstructionSpecialPieceSelected | TrackElemType::EndStation }, 3095 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3096 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3097 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3098 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3099 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3100 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3101 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3102 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3103 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3104 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3105 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3106 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3107 { TRACK_CURVE_LEFT, TRACK_CURVE_LEFT }, 3108 { TRACK_CURVE_RIGHT, TRACK_CURVE_RIGHT }, 3109 { TRACK_CURVE_LEFT, TRACK_CURVE_NONE }, 3110 { TRACK_CURVE_RIGHT, TRACK_CURVE_NONE }, 3111 { TRACK_CURVE_NONE, TRACK_CURVE_LEFT }, 3112 { TRACK_CURVE_NONE, TRACK_CURVE_RIGHT }, 3113 { TRACK_CURVE_LEFT, TRACK_CURVE_LEFT }, 3114 { TRACK_CURVE_RIGHT, TRACK_CURVE_RIGHT }, 3115 { TRACK_CURVE_NONE, TRACK_CURVE_LEFT }, 3116 { TRACK_CURVE_NONE, TRACK_CURVE_RIGHT }, 3117 { TRACK_CURVE_LEFT, TRACK_CURVE_NONE }, 3118 { TRACK_CURVE_RIGHT, TRACK_CURVE_NONE }, 3119 { TRACK_CURVE_NONE, TRACK_CURVE_LEFT }, 3120 { TRACK_CURVE_NONE, TRACK_CURVE_RIGHT }, 3121 { TRACK_CURVE_LEFT, TRACK_CURVE_NONE }, 3122 { TRACK_CURVE_RIGHT, TRACK_CURVE_NONE }, 3123 { TRACK_CURVE_LEFT, TRACK_CURVE_LEFT }, 3124 { TRACK_CURVE_RIGHT, TRACK_CURVE_RIGHT }, 3125 { TRACK_CURVE_LEFT, TRACK_CURVE_LEFT }, 3126 { TRACK_CURVE_RIGHT, TRACK_CURVE_RIGHT }, 3127 { TRACK_CURVE_LEFT, TRACK_CURVE_LEFT }, 3128 { TRACK_CURVE_RIGHT, TRACK_CURVE_RIGHT }, 3129 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3130 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3131 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3132 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3133 { TRACK_CURVE_LEFT_SMALL, TRACK_CURVE_LEFT_SMALL }, 3134 { TRACK_CURVE_RIGHT_SMALL, TRACK_CURVE_RIGHT_SMALL }, 3135 { TRACK_CURVE_LEFT_SMALL, TRACK_CURVE_LEFT_SMALL }, 3136 { TRACK_CURVE_RIGHT_SMALL, TRACK_CURVE_RIGHT_SMALL }, 3137 { TRACK_CURVE_LEFT_SMALL, TRACK_CURVE_LEFT_SMALL }, 3138 { TRACK_CURVE_RIGHT_SMALL, TRACK_CURVE_RIGHT_SMALL }, 3139 { TRACK_CURVE_LEFT_SMALL, TRACK_CURVE_LEFT_SMALL }, 3140 { TRACK_CURVE_RIGHT_SMALL, TRACK_CURVE_RIGHT_SMALL }, 3141 { TRACK_CURVE_LEFT_VERY_SMALL, TRACK_CURVE_LEFT_VERY_SMALL }, 3142 { TRACK_CURVE_RIGHT_VERY_SMALL, TRACK_CURVE_RIGHT_VERY_SMALL }, 3143 { RideConstructionSpecialPieceSelected | TrackElemType::LeftTwistUpToDown, TRACK_CURVE_NONE }, 3144 { RideConstructionSpecialPieceSelected | TrackElemType::RightTwistUpToDown, TRACK_CURVE_NONE }, 3145 { TRACK_CURVE_NONE, RideConstructionSpecialPieceSelected | TrackElemType::LeftTwistDownToUp }, 3146 { TRACK_CURVE_NONE, RideConstructionSpecialPieceSelected | TrackElemType::RightTwistDownToUp }, 3147 { RideConstructionSpecialPieceSelected | TrackElemType::HalfLoopDown, TRACK_CURVE_NONE }, 3148 { TRACK_CURVE_NONE, RideConstructionSpecialPieceSelected | TrackElemType::HalfLoopUp }, 3149 { RideConstructionSpecialPieceSelected | TrackElemType::RightCorkscrewDown, TRACK_CURVE_NONE }, 3150 { RideConstructionSpecialPieceSelected | TrackElemType::LeftCorkscrewDown, TRACK_CURVE_NONE }, 3151 { TRACK_CURVE_NONE, RideConstructionSpecialPieceSelected | TrackElemType::RightCorkscrewUp }, 3152 { TRACK_CURVE_NONE, RideConstructionSpecialPieceSelected | TrackElemType::LeftCorkscrewUp }, 3153 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3154 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3155 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3156 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3157 { RideConstructionSpecialPieceSelected | TrackElemType::TowerSection, TRACK_CURVE_NONE }, 3158 { RideConstructionSpecialPieceSelected | TrackElemType::TowerSection, TRACK_CURVE_NONE }, 3159 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3160 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3161 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3162 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3163 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3164 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3165 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3166 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3167 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3168 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3169 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3170 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3171 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3172 { TRACK_CURVE_LEFT, TRACK_CURVE_LEFT }, 3173 { TRACK_CURVE_RIGHT, TRACK_CURVE_RIGHT }, 3174 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3175 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3176 { TRACK_CURVE_LEFT_SMALL, TRACK_CURVE_LEFT_SMALL }, 3177 { TRACK_CURVE_RIGHT_SMALL, TRACK_CURVE_RIGHT_SMALL }, 3178 { RideConstructionSpecialPieceSelected | TrackElemType::LeftHalfBankedHelixUpSmall, RideConstructionSpecialPieceSelected | TrackElemType::LeftHalfBankedHelixUpSmall }, 3179 { RideConstructionSpecialPieceSelected | TrackElemType::RightHalfBankedHelixUpSmall, RideConstructionSpecialPieceSelected | TrackElemType::RightHalfBankedHelixUpSmall }, 3180 { RideConstructionSpecialPieceSelected | TrackElemType::LeftHalfBankedHelixDownSmall, RideConstructionSpecialPieceSelected | TrackElemType::LeftHalfBankedHelixDownSmall }, 3181 { RideConstructionSpecialPieceSelected | TrackElemType::RightHalfBankedHelixDownSmall, RideConstructionSpecialPieceSelected | TrackElemType::RightHalfBankedHelixDownSmall }, 3182 { RideConstructionSpecialPieceSelected | TrackElemType::LeftHalfBankedHelixUpLarge, RideConstructionSpecialPieceSelected | TrackElemType::LeftHalfBankedHelixUpLarge }, 3183 { RideConstructionSpecialPieceSelected | TrackElemType::RightHalfBankedHelixUpLarge, RideConstructionSpecialPieceSelected | TrackElemType::RightHalfBankedHelixUpLarge }, 3184 { RideConstructionSpecialPieceSelected | TrackElemType::LeftHalfBankedHelixDownLarge, RideConstructionSpecialPieceSelected | TrackElemType::LeftHalfBankedHelixDownLarge }, 3185 { RideConstructionSpecialPieceSelected | TrackElemType::RightHalfBankedHelixDownLarge, RideConstructionSpecialPieceSelected | TrackElemType::RightHalfBankedHelixDownLarge }, 3186 { TRACK_CURVE_LEFT_SMALL, TRACK_CURVE_LEFT_SMALL }, 3187 { TRACK_CURVE_RIGHT_SMALL, TRACK_CURVE_RIGHT_SMALL }, 3188 { TRACK_CURVE_LEFT_SMALL, TRACK_CURVE_LEFT_SMALL }, 3189 { TRACK_CURVE_RIGHT_SMALL, TRACK_CURVE_RIGHT_SMALL }, 3190 { RideConstructionSpecialPieceSelected | TrackElemType::Brakes, RideConstructionSpecialPieceSelected | TrackElemType::Brakes }, 3191 { RideConstructionSpecialPieceSelected | TrackElemType::Booster, RideConstructionSpecialPieceSelected | TrackElemType::Booster }, 3192 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3193 { RideConstructionSpecialPieceSelected | TrackElemType::LeftQuarterBankedHelixLargeUp, RideConstructionSpecialPieceSelected | TrackElemType::LeftQuarterBankedHelixLargeUp }, 3194 { RideConstructionSpecialPieceSelected | TrackElemType::RightQuarterBankedHelixLargeUp, RideConstructionSpecialPieceSelected | TrackElemType::RightQuarterBankedHelixLargeUp }, 3195 { RideConstructionSpecialPieceSelected | TrackElemType::LeftQuarterBankedHelixLargeDown, RideConstructionSpecialPieceSelected | TrackElemType::LeftQuarterBankedHelixLargeDown }, 3196 { RideConstructionSpecialPieceSelected | TrackElemType::RightQuarterBankedHelixLargeDown, RideConstructionSpecialPieceSelected | TrackElemType::RightQuarterBankedHelixLargeDown }, 3197 { RideConstructionSpecialPieceSelected | TrackElemType::LeftQuarterHelixLargeUp, RideConstructionSpecialPieceSelected | TrackElemType::LeftQuarterHelixLargeUp }, 3198 { RideConstructionSpecialPieceSelected | TrackElemType::RightQuarterHelixLargeUp, RideConstructionSpecialPieceSelected | TrackElemType::RightQuarterHelixLargeUp }, 3199 { RideConstructionSpecialPieceSelected | TrackElemType::LeftQuarterHelixLargeDown, RideConstructionSpecialPieceSelected | TrackElemType::LeftQuarterHelixLargeDown }, 3200 { RideConstructionSpecialPieceSelected | TrackElemType::RightQuarterHelixLargeDown, RideConstructionSpecialPieceSelected | TrackElemType::RightQuarterHelixLargeDown }, 3201 { TRACK_CURVE_LEFT, TRACK_CURVE_LEFT }, 3202 { TRACK_CURVE_RIGHT, TRACK_CURVE_RIGHT }, 3203 { RideConstructionSpecialPieceSelected | TrackElemType::Waterfall, RideConstructionSpecialPieceSelected | TrackElemType::Waterfall }, 3204 { RideConstructionSpecialPieceSelected | TrackElemType::Rapids, RideConstructionSpecialPieceSelected | TrackElemType::Rapids }, 3205 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3206 { TRACK_CURVE_LEFT, TRACK_CURVE_LEFT }, 3207 { TRACK_CURVE_RIGHT, TRACK_CURVE_RIGHT }, 3208 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3209 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3210 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3211 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3212 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3213 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3214 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3215 { RideConstructionSpecialPieceSelected | TrackElemType::ReverseFreefallVertical, TRACK_CURVE_NONE }, 3216 { RideConstructionSpecialPieceSelected | TrackElemType::ReverseFreefallVertical, RideConstructionSpecialPieceSelected | TrackElemType::ReverseFreefallVertical }, 3217 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3218 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3219 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3220 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3221 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3222 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3223 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3224 { TRACK_CURVE_LEFT_LARGE, TRACK_CURVE_LEFT_LARGE }, 3225 { TRACK_CURVE_RIGHT_LARGE, TRACK_CURVE_RIGHT_LARGE }, 3226 { TRACK_CURVE_LEFT_LARGE, TRACK_CURVE_LEFT_LARGE }, 3227 { TRACK_CURVE_RIGHT_LARGE, TRACK_CURVE_RIGHT_LARGE }, 3228 { TRACK_CURVE_LEFT_LARGE, TRACK_CURVE_LEFT_LARGE }, 3229 { TRACK_CURVE_RIGHT_LARGE, TRACK_CURVE_RIGHT_LARGE }, 3230 { TRACK_CURVE_LEFT_LARGE, TRACK_CURVE_LEFT_LARGE }, 3231 { TRACK_CURVE_RIGHT_LARGE, TRACK_CURVE_RIGHT_LARGE }, 3232 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3233 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3234 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3235 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3236 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3237 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3238 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3239 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3240 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3241 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3242 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3243 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3244 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3245 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3246 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3247 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3248 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3249 { TRACK_CURVE_LEFT_LARGE, TRACK_CURVE_NONE }, 3250 { TRACK_CURVE_RIGHT_LARGE, TRACK_CURVE_NONE }, 3251 { TRACK_CURVE_NONE, TRACK_CURVE_LEFT_LARGE }, 3252 { TRACK_CURVE_NONE, TRACK_CURVE_RIGHT_LARGE }, 3253 { TRACK_CURVE_NONE, TRACK_CURVE_LEFT_LARGE }, 3254 { TRACK_CURVE_NONE, TRACK_CURVE_RIGHT_LARGE }, 3255 { TRACK_CURVE_LEFT_LARGE, TRACK_CURVE_NONE }, 3256 { TRACK_CURVE_RIGHT_LARGE, TRACK_CURVE_NONE }, 3257 { TRACK_CURVE_NONE, TRACK_CURVE_LEFT_LARGE }, 3258 { TRACK_CURVE_NONE, TRACK_CURVE_RIGHT_LARGE }, 3259 { TRACK_CURVE_LEFT_LARGE, TRACK_CURVE_NONE }, 3260 { TRACK_CURVE_RIGHT_LARGE, TRACK_CURVE_NONE }, 3261 { TRACK_CURVE_LEFT_LARGE, TRACK_CURVE_LEFT_LARGE }, 3262 { TRACK_CURVE_RIGHT_LARGE, TRACK_CURVE_RIGHT_LARGE }, 3263 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3264 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3265 { RideConstructionSpecialPieceSelected | TrackElemType::LeftBarrelRollDownToUp, TRACK_CURVE_NONE }, 3266 { RideConstructionSpecialPieceSelected | TrackElemType::RightBarrelRollDownToUp, TRACK_CURVE_NONE }, 3267 { TRACK_CURVE_NONE, RideConstructionSpecialPieceSelected | TrackElemType::LeftBarrelRollUpToDown }, 3268 { TRACK_CURVE_NONE, RideConstructionSpecialPieceSelected | TrackElemType::RightBarrelRollUpToDown }, 3269 { TRACK_CURVE_LEFT_SMALL, TRACK_CURVE_LEFT_SMALL }, 3270 { TRACK_CURVE_RIGHT_SMALL, TRACK_CURVE_RIGHT_SMALL }, 3271 { TRACK_CURVE_LEFT_SMALL, TRACK_CURVE_LEFT_SMALL }, 3272 { TRACK_CURVE_RIGHT_SMALL, TRACK_CURVE_RIGHT_SMALL }, 3273 { RideConstructionSpecialPieceSelected | TrackElemType::PoweredLift, RideConstructionSpecialPieceSelected | TrackElemType::PoweredLift }, 3274 { RideConstructionSpecialPieceSelected | TrackElemType::LeftLargeHalfLoopDown, TRACK_CURVE_NONE }, 3275 { RideConstructionSpecialPieceSelected | TrackElemType::RightLargeHalfLoopDown, TRACK_CURVE_NONE }, 3276 { TRACK_CURVE_NONE, RideConstructionSpecialPieceSelected | TrackElemType::RightLargeHalfLoopUp }, 3277 { TRACK_CURVE_NONE, RideConstructionSpecialPieceSelected | TrackElemType::LeftLargeHalfLoopUp }, 3278 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3279 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3280 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3281 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3282 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3283 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3284 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3285 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3286 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3287 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3288 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3289 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3290 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3291 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3292 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3293 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3294 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3295 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3296 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3297 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3298 { RideConstructionSpecialPieceSelected | TrackElemType::InvertedFlatToDown90QuarterLoop, TRACK_CURVE_NONE }, 3299 { TRACK_CURVE_NONE, RideConstructionSpecialPieceSelected | TrackElemType::Up90ToInvertedFlatQuarterLoop }, 3300 { RideConstructionSpecialPieceSelected | TrackElemType::LeftCurvedLiftHill, RideConstructionSpecialPieceSelected | TrackElemType::LeftCurvedLiftHill }, 3301 { RideConstructionSpecialPieceSelected | TrackElemType::RightCurvedLiftHill, RideConstructionSpecialPieceSelected | TrackElemType::RightCurvedLiftHill }, 3302 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3303 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3304 { RideConstructionSpecialPieceSelected | TrackElemType::AirThrustVerticalDown, RideConstructionSpecialPieceSelected | TrackElemType::ReverseFreefallVertical }, 3305 { RideConstructionSpecialPieceSelected | TrackElemType::AirThrustVerticalDown, RideConstructionSpecialPieceSelected | TrackElemType::AirThrustVerticalDown }, 3306 { TRACK_CURVE_NONE, RideConstructionSpecialPieceSelected | TrackElemType::AirThrustVerticalDown }, 3307 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3308 { TRACK_CURVE_LEFT_SMALL, TRACK_CURVE_LEFT_SMALL }, 3309 { TRACK_CURVE_RIGHT_SMALL, TRACK_CURVE_RIGHT_SMALL }, 3310 { TRACK_CURVE_LEFT_SMALL, TRACK_CURVE_LEFT_SMALL }, 3311 { TRACK_CURVE_RIGHT_SMALL, TRACK_CURVE_RIGHT_SMALL }, 3312 { TRACK_CURVE_LEFT, TRACK_CURVE_LEFT }, 3313 { TRACK_CURVE_RIGHT, TRACK_CURVE_RIGHT }, 3314 { TRACK_CURVE_LEFT, TRACK_CURVE_LEFT }, 3315 { TRACK_CURVE_RIGHT, TRACK_CURVE_RIGHT }, 3316 { TRACK_CURVE_LEFT, TRACK_CURVE_NONE }, 3317 { TRACK_CURVE_RIGHT, TRACK_CURVE_NONE }, 3318 { TRACK_CURVE_NONE, TRACK_CURVE_LEFT }, 3319 { TRACK_CURVE_NONE, TRACK_CURVE_RIGHT }, 3320 { TRACK_CURVE_LEFT, TRACK_CURVE_NONE }, 3321 { TRACK_CURVE_RIGHT, TRACK_CURVE_NONE }, 3322 { TRACK_CURVE_NONE, TRACK_CURVE_LEFT }, 3323 { TRACK_CURVE_NONE, TRACK_CURVE_RIGHT }, 3324 { TRACK_CURVE_LEFT, TRACK_CURVE_LEFT }, 3325 { TRACK_CURVE_RIGHT, TRACK_CURVE_RIGHT }, 3326 { TRACK_CURVE_LEFT, TRACK_CURVE_LEFT }, 3327 { TRACK_CURVE_RIGHT, TRACK_CURVE_RIGHT }, 3328 { TRACK_CURVE_LEFT, TRACK_CURVE_LEFT }, 3329 { TRACK_CURVE_RIGHT, TRACK_CURVE_RIGHT }, 3330 { TRACK_CURVE_LEFT, TRACK_CURVE_LEFT }, 3331 { TRACK_CURVE_RIGHT, TRACK_CURVE_RIGHT }, 3332 { TRACK_CURVE_LEFT, TRACK_CURVE_NONE }, 3333 { TRACK_CURVE_RIGHT, TRACK_CURVE_NONE }, 3334 { TRACK_CURVE_NONE, TRACK_CURVE_LEFT }, 3335 { TRACK_CURVE_NONE, TRACK_CURVE_RIGHT }, 3336 { TRACK_CURVE_LEFT, TRACK_CURVE_NONE }, 3337 { TRACK_CURVE_RIGHT, TRACK_CURVE_NONE }, 3338 { TRACK_CURVE_NONE, TRACK_CURVE_LEFT }, 3339 { TRACK_CURVE_NONE, TRACK_CURVE_RIGHT }, 3340 { TRACK_CURVE_LEFT_SMALL, TRACK_CURVE_LEFT_SMALL }, 3341 { TRACK_CURVE_RIGHT_SMALL, TRACK_CURVE_RIGHT_SMALL }, 3342 { TRACK_CURVE_LEFT_SMALL, TRACK_CURVE_LEFT_SMALL }, 3343 { TRACK_CURVE_RIGHT_SMALL, TRACK_CURVE_RIGHT_SMALL }, 3344 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3345 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3346 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3347 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, 3348 { 65535, 65535 }, // TrackElemType::FlatTrack1x4A 3349 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, // TrackElemType::FlatTrack2x2 3350 { TRACK_CURVE_NONE, TRACK_CURVE_NONE }, // TrackElemType::FlatTrack4x4 3351 { 65535, 65535 }, // TrackElemType::FlatTrack2x4 3352 { 65535, 65535 }, // TrackElemType::FlatTrack1x5 3353 { 65535, 65535 }, // TrackElemType::FlatTrack1x1A 3354 { 65535, 65535 }, // TrackElemType::FlatTrack1x4B 3355 { 65535, 65535 }, // TrackElemType::FlatTrack1x1B 3356 { 65535, 65535 }, // TrackElemType::FlatTrack1x4C 3357 { 65535, 65535 }, // TrackElemType::FlatTrack3x3 3358 }; 3359 3360 const track_descriptor gTrackDescriptors[142] = { 3361 { true, TRACK_SLOPE_DOWN_60, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_DOWN_60, TRACK_BANK_NONE, TrackElemType::DiagDown60 }, 3362 { true, TRACK_SLOPE_DOWN_60, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TrackElemType::DiagDown60ToDown25 }, 3363 { true, TRACK_SLOPE_DOWN_60, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TrackElemType::DiagDown60ToFlat }, 3364 { true, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_DOWN_60, TRACK_BANK_NONE, TrackElemType::DiagDown25ToDown60 }, 3365 { true, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TrackElemType::DiagDown25 }, 3366 { true, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TrackElemType::DiagDown25ToLeftBank }, 3367 { true, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TrackElemType::DiagDown25ToFlat }, 3368 { true, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TrackElemType::DiagDown25ToRightBank }, 3369 { true, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TRACK_CURVE_LEFT_LARGE, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TrackElemType::LeftEighthBankToOrthogonal }, 3370 { true, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TRACK_CURVE_NONE, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TrackElemType::DiagLeftBankToDown25 }, 3371 { true, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TRACK_CURVE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TrackElemType::DiagLeftBank }, 3372 { true, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TRACK_CURVE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TrackElemType::DiagLeftBankToFlat }, 3373 { true, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TRACK_CURVE_NONE, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TrackElemType::DiagLeftBankToUp25 }, 3374 { true, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_CURVE_LEFT_LARGE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TrackElemType::LeftEighthToOrthogonal }, 3375 { true, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_DOWN_60, TRACK_BANK_NONE, TrackElemType::DiagFlatToDown60 }, 3376 { true, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TrackElemType::DiagFlatToDown25 }, 3377 { true, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TrackElemType::DiagFlatToLeftBank }, 3378 { true, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TrackElemType::DiagFlat }, 3379 { true, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TrackElemType::DiagFlatToRightBank }, 3380 { true, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TrackElemType::DiagFlatToUp25 }, 3381 { true, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_UP_60, TRACK_BANK_NONE, TrackElemType::DiagFlatToUp60 }, 3382 { true, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_CURVE_RIGHT_LARGE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TrackElemType::RightEighthToOrthogonal }, 3383 { true, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TRACK_CURVE_NONE, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TrackElemType::DiagRightBankToDown25 }, 3384 { true, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TRACK_CURVE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TrackElemType::DiagRightBankToFlat }, 3385 { true, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TRACK_CURVE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TrackElemType::DiagRightBank }, 3386 { true, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TRACK_CURVE_NONE, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TrackElemType::DiagRightBankToUp25 }, 3387 { true, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TRACK_CURVE_RIGHT_LARGE, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TrackElemType::RightEighthBankToOrthogonal }, 3388 { true, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TrackElemType::DiagUp25ToLeftBank }, 3389 { true, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TrackElemType::DiagUp25ToFlat }, 3390 { true, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TrackElemType::DiagUp25ToRightBank }, 3391 { true, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TrackElemType::DiagUp25 }, 3392 { true, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_UP_60, TRACK_BANK_NONE, TrackElemType::DiagUp25ToUp60 }, 3393 { true, TRACK_SLOPE_UP_60, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TrackElemType::DiagUp60ToFlat }, 3394 { true, TRACK_SLOPE_UP_60, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TrackElemType::DiagUp60ToUp25 }, 3395 { true, TRACK_SLOPE_UP_60, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_UP_60, TRACK_BANK_NONE, TrackElemType::DiagUp60 }, 3396 { false, TRACK_SLOPE_DOWN_90, TRACK_BANK_NONE, TRACK_CURVE_LEFT_SMALL, TRACK_SLOPE_DOWN_90, TRACK_BANK_NONE, TrackElemType::LeftQuarterTurn1TileDown90 }, 3397 { false, TRACK_SLOPE_DOWN_90, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_DOWN_90, TRACK_BANK_NONE, TrackElemType::Down90 }, 3398 { false, TRACK_SLOPE_DOWN_90, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_DOWN_60, TRACK_BANK_NONE, TrackElemType::Down90ToDown60 }, 3399 { false, TRACK_SLOPE_DOWN_90, TRACK_BANK_NONE, TRACK_CURVE_RIGHT_SMALL, TRACK_SLOPE_DOWN_90, TRACK_BANK_NONE, TrackElemType::RightQuarterTurn1TileDown90 }, 3400 { false, TRACK_SLOPE_DOWN_60, TRACK_BANK_NONE, TRACK_CURVE_LEFT_SMALL, TRACK_SLOPE_DOWN_60, TRACK_BANK_NONE, TrackElemType::LeftQuarterTurn1TileDown60 }, 3401 { false, TRACK_SLOPE_DOWN_60, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_DOWN_90, TRACK_BANK_NONE, TrackElemType::Down60ToDown90 }, 3402 { false, TRACK_SLOPE_DOWN_60, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_DOWN_60, TRACK_BANK_NONE, TrackElemType::Down60 }, 3403 { false, TRACK_SLOPE_DOWN_60, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TrackElemType::Down60ToDown25 }, 3404 { false, TRACK_SLOPE_DOWN_60, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TrackElemType::Down60ToFlat }, 3405 { false, TRACK_SLOPE_DOWN_60, TRACK_BANK_NONE, TRACK_CURVE_RIGHT_SMALL, TRACK_SLOPE_DOWN_60, TRACK_BANK_NONE, TrackElemType::RightQuarterTurn1TileDown60 }, 3406 { false, TRACK_SLOPE_DOWN_25, TRACK_BANK_LEFT, TRACK_CURVE_LEFT_SMALL, TRACK_SLOPE_DOWN_25, TRACK_BANK_LEFT, TrackElemType::LeftBankedQuarterTurn3TileDown25 }, 3407 { false, TRACK_SLOPE_DOWN_25, TRACK_BANK_LEFT, TRACK_CURVE_LEFT, TRACK_SLOPE_DOWN_25, TRACK_BANK_LEFT, TrackElemType::LeftBankedQuarterTurn5TileDown25 }, 3408 { false, TRACK_SLOPE_DOWN_25, TRACK_BANK_LEFT, TRACK_CURVE_NONE, TRACK_SLOPE_DOWN_25, TRACK_BANK_LEFT, TrackElemType::Down25LeftBanked }, 3409 { false, TRACK_SLOPE_DOWN_25, TRACK_BANK_LEFT, TRACK_CURVE_NONE, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TrackElemType::LeftBankedDown25ToDown25 }, 3410 { false, TRACK_SLOPE_DOWN_25, TRACK_BANK_LEFT, TRACK_CURVE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TrackElemType::LeftBankedDown25ToLeftBankedFlat }, 3411 { false, TRACK_SLOPE_DOWN_25, TRACK_BANK_LEFT, TRACK_CURVE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TrackElemType::LeftBankedDown25ToFlat }, 3412 { false, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TRACK_CURVE_LEFT_SMALL, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TrackElemType::LeftQuarterTurn3TilesDown25 }, 3413 { false, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TRACK_CURVE_LEFT_SMALL, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TrackElemType::LeftQuarterTurn3TilesDown25ToLeftBank }, 3414 { false, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TRACK_CURVE_LEFT, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TrackElemType::LeftQuarterTurn5TilesDown25 }, 3415 { false, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_DOWN_60, TRACK_BANK_NONE, TrackElemType::Down25ToDown60 }, 3416 { false, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_DOWN_25, TRACK_BANK_LEFT, TrackElemType::Down25ToLeftBankedDown25 }, 3417 { false, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TrackElemType::Down25 }, 3418 { false, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_DOWN_25, TRACK_BANK_RIGHT, TrackElemType::Down25ToRightBankedDown25 }, 3419 { false, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TrackElemType::Down25ToLeftBank }, 3420 { false, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TrackElemType::Down25ToFlat }, 3421 { false, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TrackElemType::Down25ToRightBank }, 3422 { false, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TRACK_CURVE_RIGHT, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TrackElemType::RightQuarterTurn5TilesDown25 }, 3423 { false, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TRACK_CURVE_RIGHT_SMALL, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TrackElemType::RightQuarterTurn3TilesDown25ToRightBank }, 3424 { false, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TRACK_CURVE_RIGHT_SMALL, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TrackElemType::RightQuarterTurn3TilesDown25 }, 3425 { false, TRACK_SLOPE_DOWN_25, TRACK_BANK_RIGHT, TRACK_CURVE_NONE, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TrackElemType::RightBankedDown25ToDown25 }, 3426 { false, TRACK_SLOPE_DOWN_25, TRACK_BANK_RIGHT, TRACK_CURVE_NONE, TRACK_SLOPE_DOWN_25, TRACK_BANK_RIGHT, TrackElemType::Down25RightBanked }, 3427 { false, TRACK_SLOPE_DOWN_25, TRACK_BANK_RIGHT, TRACK_CURVE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TrackElemType::RightBankedDown25ToFlat }, 3428 { false, TRACK_SLOPE_DOWN_25, TRACK_BANK_RIGHT, TRACK_CURVE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TrackElemType::RightBankedDown25ToRightBankedFlat }, 3429 { false, TRACK_SLOPE_DOWN_25, TRACK_BANK_RIGHT, TRACK_CURVE_RIGHT, TRACK_SLOPE_DOWN_25, TRACK_BANK_RIGHT, TrackElemType::RightBankedQuarterTurn5TileDown25 }, 3430 { false, TRACK_SLOPE_DOWN_25, TRACK_BANK_RIGHT, TRACK_CURVE_RIGHT_SMALL, TRACK_SLOPE_DOWN_25, TRACK_BANK_RIGHT, TrackElemType::RightBankedQuarterTurn3TileDown25 }, 3431 { false, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TRACK_CURVE_LEFT_SMALL, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TrackElemType::LeftBankedQuarterTurn3Tiles }, 3432 { false, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TRACK_CURVE_LEFT_SMALL, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TrackElemType::LeftBankToLeftQuarterTurn3TilesUp25 }, 3433 { false, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TRACK_CURVE_LEFT, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TrackElemType::BankedLeftQuarterTurn5Tiles }, 3434 { false, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TRACK_CURVE_LEFT_LARGE, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TrackElemType::LeftEighthBankToDiag }, 3435 { false, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TRACK_CURVE_NONE, TRACK_SLOPE_DOWN_25, TRACK_BANK_LEFT, TrackElemType::LeftBankedFlatToLeftBankedDown25 }, 3436 { false, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TRACK_CURVE_NONE, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TrackElemType::LeftBankToDown25 }, 3437 { false, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TRACK_CURVE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TrackElemType::LeftBank }, 3438 { false, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TRACK_CURVE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TrackElemType::LeftBankToFlat }, 3439 { false, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TRACK_CURVE_NONE, TRACK_SLOPE_UP_25, TRACK_BANK_LEFT, TrackElemType::LeftBankedFlatToLeftBankedUp25 }, 3440 { false, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TRACK_CURVE_NONE, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TrackElemType::LeftBankToUp25 }, 3441 { false, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_CURVE_LEFT_SMALL, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TrackElemType::LeftQuarterTurn3Tiles }, 3442 { false, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_CURVE_LEFT, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TrackElemType::LeftQuarterTurn5Tiles }, 3443 { false, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_CURVE_LEFT_LARGE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TrackElemType::LeftEighthToDiag }, 3444 { false, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_DOWN_60, TRACK_BANK_NONE, TrackElemType::FlatToDown60 }, 3445 { false, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_DOWN_25, TRACK_BANK_LEFT, TrackElemType::FlatToLeftBankedDown25 }, 3446 { false, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TrackElemType::FlatToDown25 }, 3447 { false, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_DOWN_25, TRACK_BANK_RIGHT, TrackElemType::FlatToRightBankedDown25 }, 3448 { false, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TrackElemType::FlatToLeftBank }, 3449 { false, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TrackElemType::Flat }, 3450 { false, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_CURVE_LEFT_VERY_SMALL, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TrackElemType::LeftQuarterTurn1Tile }, 3451 { false, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_CURVE_RIGHT_VERY_SMALL, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TrackElemType::RightQuarterTurn1Tile }, 3452 { false, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TrackElemType::FlatToRightBank }, 3453 { false, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_UP_25, TRACK_BANK_LEFT, TrackElemType::FlatToLeftBankedUp25 }, 3454 { false, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TrackElemType::FlatToUp25 }, 3455 { false, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_UP_25, TRACK_BANK_RIGHT, TrackElemType::FlatToRightBankedUp25 }, 3456 { false, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_UP_60, TRACK_BANK_NONE, TrackElemType::FlatToUp60 }, 3457 { false, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_CURVE_RIGHT_LARGE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TrackElemType::RightEighthToDiag }, 3458 { false, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_CURVE_RIGHT, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TrackElemType::RightQuarterTurn5Tiles }, 3459 { false, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_CURVE_RIGHT_SMALL, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TrackElemType::RightQuarterTurn3Tiles }, 3460 { false, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TRACK_CURVE_NONE, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TrackElemType::RightBankToDown25 }, 3461 { false, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TRACK_CURVE_NONE, TRACK_SLOPE_DOWN_25, TRACK_BANK_RIGHT, TrackElemType::RightBankedFlatToRightBankedDown25 }, 3462 { false, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TRACK_CURVE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TrackElemType::RightBankToFlat }, 3463 { false, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TRACK_CURVE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TrackElemType::RightBank }, 3464 { false, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TRACK_CURVE_NONE, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TrackElemType::RightBankToUp25 }, 3465 { false, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TRACK_CURVE_NONE, TRACK_SLOPE_UP_25, TRACK_BANK_RIGHT, TrackElemType::RightBankedFlatToRightBankedUp25 }, 3466 { false, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TRACK_CURVE_RIGHT_LARGE, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TrackElemType::RightEighthBankToDiag }, 3467 { false, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TRACK_CURVE_RIGHT, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TrackElemType::BankedRightQuarterTurn5Tiles }, 3468 { false, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TRACK_CURVE_RIGHT_SMALL, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TrackElemType::RightBankedQuarterTurn3Tiles }, 3469 { false, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TRACK_CURVE_RIGHT_SMALL, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TrackElemType::RightBankToRightQuarterTurn3TilesUp25 }, 3470 { false, TRACK_SLOPE_UP_25, TRACK_BANK_LEFT, TRACK_CURVE_LEFT_SMALL, TRACK_SLOPE_UP_25, TRACK_BANK_LEFT, TrackElemType::LeftBankedQuarterTurn3TileUp25 }, 3471 { false, TRACK_SLOPE_UP_25, TRACK_BANK_LEFT, TRACK_CURVE_LEFT, TRACK_SLOPE_UP_25, TRACK_BANK_LEFT, TrackElemType::LeftBankedQuarterTurn5TileUp25 }, 3472 { false, TRACK_SLOPE_UP_25, TRACK_BANK_LEFT, TRACK_CURVE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TrackElemType::LeftBankedUp25ToLeftBankedFlat }, 3473 { false, TRACK_SLOPE_UP_25, TRACK_BANK_LEFT, TRACK_CURVE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TrackElemType::LeftBankedUp25ToFlat }, 3474 { false, TRACK_SLOPE_UP_25, TRACK_BANK_LEFT, TRACK_CURVE_NONE, TRACK_SLOPE_UP_25, TRACK_BANK_LEFT, TrackElemType::Up25LeftBanked }, 3475 { false, TRACK_SLOPE_UP_25, TRACK_BANK_LEFT, TRACK_CURVE_NONE, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TrackElemType::LeftBankedUp25ToUp25 }, 3476 { false, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TRACK_CURVE_LEFT_SMALL, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TrackElemType::LeftQuarterTurn3TilesUp25 }, 3477 { false, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TRACK_CURVE_LEFT, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TrackElemType::LeftQuarterTurn5TilesUp25 }, 3478 { false, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TrackElemType::Up25ToLeftBank }, 3479 { false, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TrackElemType::Up25ToFlat }, 3480 { false, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TrackElemType::Up25ToRightBank }, 3481 { false, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_UP_25, TRACK_BANK_LEFT, TrackElemType::Up25ToLeftBankedUp25 }, 3482 { false, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TrackElemType::Up25 }, 3483 { false, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_UP_25, TRACK_BANK_RIGHT, TrackElemType::Up25ToRightBankedUp25 }, 3484 { false, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_UP_60, TRACK_BANK_NONE, TrackElemType::Up25ToUp60 }, 3485 { false, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TRACK_CURVE_RIGHT, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TrackElemType::RightQuarterTurn5TilesUp25 }, 3486 { false, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TRACK_CURVE_RIGHT_SMALL, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TrackElemType::RightQuarterTurn3TilesUp25 }, 3487 { false, TRACK_SLOPE_UP_25, TRACK_BANK_RIGHT, TRACK_CURVE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TrackElemType::RightBankedUp25ToFlat }, 3488 { false, TRACK_SLOPE_UP_25, TRACK_BANK_RIGHT, TRACK_CURVE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TrackElemType::RightBankedUp25ToRightBankedFlat }, 3489 { false, TRACK_SLOPE_UP_25, TRACK_BANK_RIGHT, TRACK_CURVE_NONE, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TrackElemType::RightBankedUp25ToUp25 }, 3490 { false, TRACK_SLOPE_UP_25, TRACK_BANK_RIGHT, TRACK_CURVE_NONE, TRACK_SLOPE_UP_25, TRACK_BANK_RIGHT, TrackElemType::Up25RightBanked }, 3491 { false, TRACK_SLOPE_UP_25, TRACK_BANK_RIGHT, TRACK_CURVE_RIGHT, TRACK_SLOPE_UP_25, TRACK_BANK_RIGHT, TrackElemType::RightBankedQuarterTurn5TileUp25 }, 3492 { false, TRACK_SLOPE_UP_25, TRACK_BANK_RIGHT, TRACK_CURVE_RIGHT_SMALL, TRACK_SLOPE_UP_25, TRACK_BANK_RIGHT, TrackElemType::RightBankedQuarterTurn3TileUp25 }, 3493 { false, TRACK_SLOPE_UP_60, TRACK_BANK_NONE, TRACK_CURVE_LEFT_SMALL, TRACK_SLOPE_UP_60, TRACK_BANK_NONE, TrackElemType::LeftQuarterTurn1TileUp60 }, 3494 { false, TRACK_SLOPE_UP_60, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TrackElemType::Up60ToFlat }, 3495 { false, TRACK_SLOPE_UP_60, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TrackElemType::Up60ToUp25 }, 3496 { false, TRACK_SLOPE_UP_60, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_UP_60, TRACK_BANK_NONE, TrackElemType::Up60 }, 3497 { false, TRACK_SLOPE_UP_60, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_UP_90, TRACK_BANK_NONE, TrackElemType::Up60ToUp90 }, 3498 { false, TRACK_SLOPE_UP_60, TRACK_BANK_NONE, TRACK_CURVE_RIGHT_SMALL, TRACK_SLOPE_UP_60, TRACK_BANK_NONE, TrackElemType::RightQuarterTurn1TileUp60 }, 3499 { false, TRACK_SLOPE_UP_90, TRACK_BANK_NONE, TRACK_CURVE_LEFT_SMALL, TRACK_SLOPE_UP_90, TRACK_BANK_NONE, TrackElemType::LeftQuarterTurn1TileUp90 }, 3500 { false, TRACK_SLOPE_UP_90, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_UP_60, TRACK_BANK_NONE, TrackElemType::Up90ToUp60 }, 3501 { false, TRACK_SLOPE_UP_90, TRACK_BANK_NONE, TRACK_CURVE_NONE, TRACK_SLOPE_UP_90, TRACK_BANK_NONE, TrackElemType::Up90 }, 3502 { false, TRACK_SLOPE_UP_90, TRACK_BANK_NONE, TRACK_CURVE_RIGHT_SMALL, TRACK_SLOPE_UP_90, TRACK_BANK_NONE, TrackElemType::RightQuarterTurn1TileUp90 }, 3503 }; 3504 3505 /** rct2: 0x00993D1C */ 3506 static constexpr track_type_t AlternativeTrackTypes[TrackElemType::Count] = { 3507 TrackElemType::FlatCovered, // TrackElemType::Flat 3508 TrackElemType::None, 3509 TrackElemType::None, 3510 TrackElemType::None, 3511 TrackElemType::Up25Covered, // TrackElemType::Up25 3512 TrackElemType::Up60Covered, // TrackElemType::Up60 3513 TrackElemType::FlatToUp25Covered, // TrackElemType::FlatToUp25 3514 TrackElemType::Up25ToUp60Covered, // TrackElemType::Up25ToUp60 3515 TrackElemType::Up60ToUp25Covered, // TrackElemType::Up60ToUp25 3516 TrackElemType::Up25ToFlatCovered, // TrackElemType::Up25ToFlat 3517 TrackElemType::Down25Covered, // TrackElemType::Down25 3518 TrackElemType::Down60Covered, // TrackElemType::Down60 3519 TrackElemType::FlatToDown25Covered, // TrackElemType::FlatToDown25 3520 TrackElemType::Down25ToDown60Covered, // TrackElemType::Down25ToDown60 3521 TrackElemType::Down60ToDown25Covered, // TrackElemType::Down60ToDown25 3522 TrackElemType::Down25ToFlatCovered, // TrackElemType::Down25ToFlat 3523 TrackElemType::LeftQuarterTurn5TilesCovered, // TrackElemType::LeftQuarterTurn5Tiles 3524 TrackElemType::RightQuarterTurn5TilesCovered, // TrackElemType::RightQuarterTurn5Tiles 3525 TrackElemType::None, 3526 TrackElemType::None, 3527 TrackElemType::None, 3528 TrackElemType::None, 3529 TrackElemType::None, 3530 TrackElemType::None, 3531 TrackElemType::None, 3532 TrackElemType::None, 3533 TrackElemType::None, 3534 TrackElemType::None, 3535 TrackElemType::None, 3536 TrackElemType::None, 3537 TrackElemType::None, 3538 TrackElemType::None, 3539 TrackElemType::None, 3540 TrackElemType::None, 3541 TrackElemType::None, 3542 TrackElemType::None, 3543 TrackElemType::None, 3544 TrackElemType::None, 3545 TrackElemType::SBendLeftCovered, // TrackElemType::SBendLeft 3546 TrackElemType::SBendRightCovered, // TrackElemType::SBendRight 3547 TrackElemType::None, 3548 TrackElemType::None, 3549 TrackElemType::LeftQuarterTurn3TilesCovered, // TrackElemType::LeftQuarterTurn3Tiles 3550 TrackElemType::RightQuarterTurn3TilesCovered, // TrackElemType::RightQuarterTurn3Tiles 3551 TrackElemType::None, 3552 TrackElemType::None, 3553 TrackElemType::None, 3554 TrackElemType::None, 3555 TrackElemType::None, 3556 TrackElemType::None, 3557 TrackElemType::None, 3558 TrackElemType::None, 3559 TrackElemType::None, 3560 TrackElemType::None, 3561 TrackElemType::None, 3562 TrackElemType::None, 3563 TrackElemType::None, 3564 TrackElemType::None, 3565 TrackElemType::None, 3566 TrackElemType::None, 3567 TrackElemType::None, 3568 TrackElemType::None, 3569 TrackElemType::None, 3570 TrackElemType::None, 3571 TrackElemType::None, 3572 TrackElemType::None, 3573 TrackElemType::None, 3574 TrackElemType::None, 3575 TrackElemType::None, 3576 TrackElemType::None, 3577 TrackElemType::None, 3578 TrackElemType::None, 3579 TrackElemType::None, 3580 TrackElemType::None, 3581 TrackElemType::None, 3582 TrackElemType::None, 3583 TrackElemType::None, 3584 TrackElemType::None, 3585 TrackElemType::None, 3586 TrackElemType::None, 3587 TrackElemType::None, 3588 TrackElemType::None, 3589 TrackElemType::None, 3590 TrackElemType::None, 3591 TrackElemType::None, 3592 TrackElemType::None, 3593 TrackElemType::None, 3594 TrackElemType::None, 3595 TrackElemType::None, 3596 TrackElemType::None, 3597 TrackElemType::None, 3598 TrackElemType::None, 3599 TrackElemType::None, 3600 TrackElemType::None, 3601 TrackElemType::None, 3602 TrackElemType::None, 3603 TrackElemType::None, 3604 TrackElemType::None, 3605 TrackElemType::None, 3606 TrackElemType::None, 3607 TrackElemType::None, 3608 TrackElemType::None, 3609 TrackElemType::None, 3610 TrackElemType::None, 3611 TrackElemType::None, 3612 TrackElemType::None, 3613 TrackElemType::None, 3614 TrackElemType::None, 3615 TrackElemType::None, 3616 TrackElemType::None, 3617 TrackElemType::None, 3618 TrackElemType::None, 3619 TrackElemType::None, 3620 TrackElemType::None, 3621 TrackElemType::None, 3622 TrackElemType::None, 3623 TrackElemType::None, 3624 TrackElemType::None, 3625 TrackElemType::None, 3626 TrackElemType::None, 3627 TrackElemType::None, 3628 TrackElemType::None, 3629 TrackElemType::None, 3630 TrackElemType::None, 3631 TrackElemType::None, 3632 TrackElemType::None, 3633 TrackElemType::None, 3634 TrackElemType::None, 3635 TrackElemType::None, 3636 TrackElemType::None, 3637 TrackElemType::None, 3638 TrackElemType::None, 3639 TrackElemType::None, 3640 TrackElemType::None, 3641 TrackElemType::None, 3642 TrackElemType::None, 3643 TrackElemType::None, 3644 TrackElemType::None, 3645 TrackElemType::None, 3646 TrackElemType::None, 3647 TrackElemType::None, 3648 TrackElemType::None, 3649 TrackElemType::None, 3650 TrackElemType::None, 3651 TrackElemType::None, 3652 TrackElemType::None, 3653 TrackElemType::None, 3654 TrackElemType::None, 3655 TrackElemType::None, 3656 TrackElemType::None, 3657 TrackElemType::None, 3658 TrackElemType::None, 3659 TrackElemType::None, 3660 TrackElemType::None, 3661 TrackElemType::None, 3662 TrackElemType::None, 3663 TrackElemType::None, 3664 TrackElemType::None, 3665 TrackElemType::None, 3666 TrackElemType::None, 3667 TrackElemType::None, 3668 TrackElemType::None, 3669 TrackElemType::None, 3670 TrackElemType::None, 3671 TrackElemType::None, 3672 TrackElemType::None, 3673 TrackElemType::None, 3674 TrackElemType::None, 3675 TrackElemType::None, 3676 TrackElemType::None, 3677 TrackElemType::None, 3678 TrackElemType::None, 3679 TrackElemType::None, 3680 TrackElemType::None, 3681 TrackElemType::None, 3682 TrackElemType::None, 3683 TrackElemType::None, 3684 TrackElemType::None, 3685 TrackElemType::None, 3686 TrackElemType::None, 3687 TrackElemType::None, 3688 TrackElemType::None, 3689 TrackElemType::None, 3690 TrackElemType::None, 3691 TrackElemType::None, 3692 TrackElemType::None, 3693 TrackElemType::None, 3694 TrackElemType::None, 3695 TrackElemType::None, 3696 TrackElemType::None, 3697 TrackElemType::None, 3698 TrackElemType::None, 3699 TrackElemType::None, 3700 TrackElemType::None, 3701 TrackElemType::None, 3702 TrackElemType::None, 3703 TrackElemType::None, 3704 TrackElemType::None, 3705 TrackElemType::None, 3706 TrackElemType::None, 3707 TrackElemType::None, 3708 TrackElemType::None, 3709 TrackElemType::None, 3710 TrackElemType::None, 3711 TrackElemType::None, 3712 TrackElemType::None, 3713 TrackElemType::None, 3714 TrackElemType::None, 3715 TrackElemType::None, 3716 TrackElemType::None, 3717 TrackElemType::None, 3718 TrackElemType::None, 3719 TrackElemType::None, 3720 TrackElemType::None, 3721 TrackElemType::None, 3722 TrackElemType::None, 3723 TrackElemType::None, 3724 TrackElemType::None, 3725 TrackElemType::None, 3726 TrackElemType::None, 3727 TrackElemType::None, 3728 TrackElemType::None, 3729 TrackElemType::None, 3730 TrackElemType::None, 3731 TrackElemType::None, 3732 TrackElemType::None, 3733 TrackElemType::None, 3734 TrackElemType::None, 3735 TrackElemType::None, 3736 TrackElemType::None, 3737 TrackElemType::None, 3738 TrackElemType::None, 3739 TrackElemType::None, 3740 TrackElemType::None, 3741 TrackElemType::None, 3742 TrackElemType::None, 3743 TrackElemType::None, 3744 TrackElemType::None, 3745 TrackElemType::None, 3746 TrackElemType::None, 3747 TrackElemType::None, 3748 TrackElemType::None, 3749 TrackElemType::None, 3750 TrackElemType::None, 3751 TrackElemType::None, 3752 TrackElemType::None, 3753 TrackElemType::None, 3754 TrackElemType::None, 3755 TrackElemType::None, 3756 TrackElemType::None, 3757 TrackElemType::None, 3758 TrackElemType::None, 3759 TrackElemType::None, 3760 TrackElemType::None, 3761 TrackElemType::None, 3762 TrackElemType::None, 3763 TrackElemType::None, 3764 TrackElemType::None, // TrackElemType::FlatTrack1x4A 3765 TrackElemType::None, // TrackElemType::FlatTrack2x2 3766 TrackElemType::None, // TrackElemType::FlatTrack4x4 3767 TrackElemType::None, // TrackElemType::FlatTrack2x4 3768 TrackElemType::None, // TrackElemType::FlatTrack1x5 3769 TrackElemType::None, // TrackElemType::FlatTrack1x1A 3770 TrackElemType::None, // TrackElemType::FlatTrack1x4B 3771 TrackElemType::None, // TrackElemType::FlatTrack1x1B 3772 TrackElemType::None, // TrackElemType::FlatTrack1x4C 3773 TrackElemType::None, // TrackElemType::FlatTrack3x3 3774 }; 3775 3776 /** rct2: 0x0099DA34 */ 3777 static constexpr money32 TrackPricing[TrackElemType::Count] = { 3778 65536, // TrackElemType::Flat 3779 98304, // TrackElemType::EndStation 3780 98304, // TrackElemType::BeginStation 3781 98304, // TrackElemType::MiddleStation 3782 79872, // TrackElemType::Up25 3783 114688, // TrackElemType::Up60 3784 73728, // TrackElemType::FlatToUp25 3785 96256, // TrackElemType::Up25ToUp60 3786 96256, // TrackElemType::Up60ToUp25 3787 73728, // TrackElemType::Up25ToFlat 3788 79872, // TrackElemType::Down25 3789 114688, // TrackElemType::Down60 3790 73728, // TrackElemType::FlatToDown25 3791 96256, // TrackElemType::Down25ToDown60 3792 96256, // TrackElemType::Down60ToDown25 3793 73728, // TrackElemType::Down25ToFlat 3794 257359, // TrackElemType::LeftQuarterTurn5Tiles 3795 257359, // TrackElemType::RightQuarterTurn5Tiles 3796 69632, // TrackElemType::FlatToLeftBank 3797 69632, // TrackElemType::FlatToRightBank 3798 69632, // TrackElemType::LeftBankToFlat 3799 69632, // TrackElemType::RightBankToFlat 3800 273443, // TrackElemType::BankedLeftQuarterTurn5Tiles 3801 273443, // TrackElemType::BankedRightQuarterTurn5Tiles 3802 78336, // TrackElemType::LeftBankToUp25 3803 78336, // TrackElemType::RightBankToUp25 3804 78336, // TrackElemType::Up25ToLeftBank 3805 78336, // TrackElemType::Up25ToRightBank 3806 78336, // TrackElemType::LeftBankToDown25 3807 78336, // TrackElemType::RightBankToDown25 3808 78336, // TrackElemType::Down25ToLeftBank 3809 78336, // TrackElemType::Down25ToRightBank 3810 69632, // TrackElemType::LeftBank 3811 69632, // TrackElemType::RightBank 3812 313656, // TrackElemType::LeftQuarterTurn5TilesUp25 3813 313656, // TrackElemType::RightQuarterTurn5TilesUp25 3814 313656, // TrackElemType::LeftQuarterTurn5TilesDown25 3815 313656, // TrackElemType::RightQuarterTurn5TilesDown25 3816 229376, // TrackElemType::SBendLeft 3817 229376, // TrackElemType::SBendRight 3818 491520, // TrackElemType::LeftVerticalLoop 3819 491520, // TrackElemType::RightVerticalLoop 3820 154415, // TrackElemType::LeftQuarterTurn3Tiles 3821 154415, // TrackElemType::RightQuarterTurn3Tiles 3822 164065, // TrackElemType::LeftBankedQuarterTurn3Tiles 3823 164065, // TrackElemType::RightBankedQuarterTurn3Tiles 3824 270226, // TrackElemType::LeftQuarterTurn3TilesUp25 3825 270226, // TrackElemType::RightQuarterTurn3TilesUp25 3826 270226, // TrackElemType::LeftQuarterTurn3TilesDown25 3827 270226, // TrackElemType::RightQuarterTurn3TilesDown25 3828 51471, // TrackElemType::LeftQuarterTurn1Tile 3829 51471, // TrackElemType::RightQuarterTurn1Tile 3830 212992, // TrackElemType::LeftTwistDownToUp 3831 212992, // TrackElemType::RightTwistDownToUp 3832 212992, // TrackElemType::LeftTwistUpToDown 3833 212992, // TrackElemType::RightTwistUpToDown 3834 294912, // TrackElemType::HalfLoopUp 3835 294912, // TrackElemType::HalfLoopDown 3836 229376, // TrackElemType::LeftCorkscrewUp 3837 229376, // TrackElemType::RightCorkscrewUp 3838 229376, // TrackElemType::LeftCorkscrewDown 3839 229376, // TrackElemType::RightCorkscrewDown 3840 98304, // TrackElemType::FlatToUp60 3841 98304, // TrackElemType::Up60ToFlat 3842 98304, // TrackElemType::FlatToDown60 3843 98304, // TrackElemType::Down60ToFlat 3844 524288, // TrackElemType::TowerBase 3845 65536, // TrackElemType::TowerSection 3846 69632, // TrackElemType::FlatCovered 3847 83968, // TrackElemType::Up25Covered 3848 118784, // TrackElemType::Up60Covered 3849 77824, // TrackElemType::FlatToUp25Covered 3850 100352, // TrackElemType::Up25ToUp60Covered 3851 100352, // TrackElemType::Up60ToUp25Covered 3852 77824, // TrackElemType::Up25ToFlatCovered 3853 83968, // TrackElemType::Down25Covered 3854 118784, // TrackElemType::Down60Covered 3855 77824, // TrackElemType::FlatToDown25Covered 3856 100352, // TrackElemType::Down25ToDown60Covered 3857 100352, // TrackElemType::Down60ToDown25Covered 3858 77824, // TrackElemType::Down25ToFlatCovered 3859 261455, // TrackElemType::LeftQuarterTurn5TilesCovered 3860 261455, // TrackElemType::RightQuarterTurn5TilesCovered 3861 233472, // TrackElemType::SBendLeftCovered 3862 233472, // TrackElemType::SBendRightCovered 3863 158511, // TrackElemType::LeftQuarterTurn3TilesCovered 3864 158511, // TrackElemType::RightQuarterTurn3TilesCovered 3865 328192, // TrackElemType::LeftHalfBankedHelixUpSmall 3866 328192, // TrackElemType::RightHalfBankedHelixUpSmall 3867 328192, // TrackElemType::LeftHalfBankedHelixDownSmall 3868 328192, // TrackElemType::RightHalfBankedHelixDownSmall 3869 547072, // TrackElemType::LeftHalfBankedHelixUpLarge 3870 547072, // TrackElemType::RightHalfBankedHelixUpLarge 3871 547072, // TrackElemType::LeftHalfBankedHelixDownLarge 3872 547072, // TrackElemType::RightHalfBankedHelixDownLarge 3873 126976, // TrackElemType::LeftQuarterTurn1TileUp60 3874 126976, // TrackElemType::RightQuarterTurn1TileUp60 3875 126976, // TrackElemType::LeftQuarterTurn1TileDown60 3876 126976, // TrackElemType::RightQuarterTurn1TileDown60 3877 90112, // TrackElemType::Brakes 3878 77824, // TrackElemType::Booster 3879 65536, // TrackElemType::InvertedUp90ToFlatQuarterLoopAlias / Maze 3880 273539, // TrackElemType::LeftQuarterBankedHelixLargeUp 3881 273539, // TrackElemType::RightQuarterBankedHelixLargeUp 3882 273539, // TrackElemType::LeftQuarterBankedHelixLargeDown 3883 273539, // TrackElemType::RightQuarterBankedHelixLargeDown 3884 273539, // TrackElemType::LeftQuarterHelixLargeUp 3885 273539, // TrackElemType::RightQuarterHelixLargeUp 3886 273539, // TrackElemType::LeftQuarterHelixLargeDown 3887 273539, // TrackElemType::RightQuarterHelixLargeDown 3888 83968, // TrackElemType::Up25LeftBanked 3889 83968, // TrackElemType::Up25RightBanked 3890 143360, // TrackElemType::Waterfall 3891 118784, // TrackElemType::Rapids 3892 196608, // TrackElemType::OnRidePhoto 3893 83968, // TrackElemType::Down25LeftBanked 3894 83968, // TrackElemType::Down25RightBanked 3895 393216, // TrackElemType::Watersplash 3896 376832, // TrackElemType::FlatToUp60LongBase 3897 376832, // TrackElemType::Up60ToFlatLongBase 3898 126976, // TrackElemType::Whirlpool 3899 376832, // TrackElemType::Down60ToFlatLongBase 3900 376832, // TrackElemType::FlatToDown60LongBase 3901 643072, // TrackElemType::CableLiftHill 3902 491520, // TrackElemType::ReverseFreefallSlope 3903 65536, // TrackElemType::ReverseFreefallVertical 3904 69632, // TrackElemType::Up90 3905 69632, // TrackElemType::Down90 3906 114688, // TrackElemType::Up60ToUp90 3907 114688, // TrackElemType::Down90ToDown60 3908 114688, // TrackElemType::Up90ToUp60 3909 114688, // TrackElemType::Down60ToDown90 3910 147456, // TrackElemType::BrakeForDrop 3911 180151, // TrackElemType::LeftEighthToDiag 3912 180151, // TrackElemType::RightEighthToDiag 3913 180151, // TrackElemType::LeftEighthToOrthogonal 3914 180151, // TrackElemType::RightEighthToOrthogonal 3915 190960, // TrackElemType::LeftEighthBankToDiag 3916 190960, // TrackElemType::RightEighthBankToDiag 3917 190960, // TrackElemType::LeftEighthBankToOrthogonal 3918 190960, // TrackElemType::RightEighthBankToOrthogonal 3919 92681, // TrackElemType::DiagFlat 3920 111820, // TrackElemType::DiagUp25 3921 147456, // TrackElemType::DiagUp60 3922 102400, // TrackElemType::DiagFlatToUp25 3923 129024, // TrackElemType::DiagUp25ToUp60 3924 129024, // TrackElemType::DiagUp60ToUp25 3925 102400, // TrackElemType::DiagUp25ToFlat 3926 111820, // TrackElemType::DiagDown25 3927 147456, // TrackElemType::DiagDown60 3928 102400, // TrackElemType::DiagFlatToDown25 3929 129024, // TrackElemType::DiagDown25ToDown60 3930 129024, // TrackElemType::DiagDown60ToDown25 3931 102400, // TrackElemType::DiagDown25ToFlat 3932 107008, // TrackElemType::DiagFlatToUp60 3933 107008, // TrackElemType::DiagUp60ToFlat 3934 107008, // TrackElemType::DiagFlatToDown60 3935 107008, // TrackElemType::DiagDown60ToFlat 3936 96777, // TrackElemType::DiagFlatToLeftBank 3937 96777, // TrackElemType::DiagFlatToRightBank 3938 96777, // TrackElemType::DiagLeftBankToFlat 3939 96777, // TrackElemType::DiagRightBankToFlat 3940 106496, // TrackElemType::DiagLeftBankToUp25 3941 106496, // TrackElemType::DiagRightBankToUp25 3942 106496, // TrackElemType::DiagUp25ToLeftBank 3943 106496, // TrackElemType::DiagUp25ToRightBank 3944 106496, // TrackElemType::DiagLeftBankToDown25 3945 106496, // TrackElemType::DiagRightBankToDown25 3946 106496, // TrackElemType::DiagDown25ToLeftBank 3947 106496, // TrackElemType::DiagDown25ToRightBank 3948 96777, // TrackElemType::DiagLeftBank 3949 96777, // TrackElemType::DiagRightBank 3950 282624, // TrackElemType::LogFlumeReverser 3951 217088, // TrackElemType::SpinningTunnel 3952 221184, // TrackElemType::LeftBarrelRollUpToDown 3953 221184, // TrackElemType::RightBarrelRollUpToDown 3954 221184, // TrackElemType::LeftBarrelRollDownToUp 3955 221184, // TrackElemType::RightBarrelRollDownToUp 3956 270226, // TrackElemType::LeftBankToLeftQuarterTurn3TilesUp25 3957 270226, // TrackElemType::RightBankToRightQuarterTurn3TilesUp25 3958 270226, // TrackElemType::LeftQuarterTurn3TilesDown25ToLeftBank 3959 270226, // TrackElemType::RightQuarterTurn3TilesDown25ToRightBank 3960 96384, // TrackElemType::PoweredLift 3961 884736, // TrackElemType::LeftLargeHalfLoopUp 3962 884736, // TrackElemType::RightLargeHalfLoopUp 3963 884736, // TrackElemType::RightLargeHalfLoopDown 3964 884736, // TrackElemType::LeftLargeHalfLoopDown 3965 221184, // TrackElemType::LeftFlyerTwistUp 3966 221184, // TrackElemType::RightFlyerTwistUp 3967 221184, // TrackElemType::LeftFlyerTwistDown 3968 221184, // TrackElemType::RightFlyerTwistDown 3969 294912, // TrackElemType::FlyerHalfLoopUp 3970 294912, // TrackElemType::FlyerHalfLoopDown 3971 229376, // TrackElemType::LeftFlyerCorkscrewUp 3972 229376, // TrackElemType::RightFlyerCorkscrewUp 3973 229376, // TrackElemType::LeftFlyerCorkscrewDown 3974 229376, // TrackElemType::RightFlyerCorkscrewDown 3975 294912, // TrackElemType::HeartLineTransferUp 3976 294912, // TrackElemType::HeartLineTransferDown 3977 417792, // TrackElemType::LeftHeartLineRoll 3978 417792, // TrackElemType::RightHeartLineRoll 3979 159744, // TrackElemType::MinigolfHoleA 3980 167936, // TrackElemType::MinigolfHoleB 3981 172032, // TrackElemType::MinigolfHoleC 3982 184320, // TrackElemType::MinigolfHoleD 3983 184320, // TrackElemType::MinigolfHoleE 3984 360448, // TrackElemType::MultiDimInvertedFlatToDown90QuarterLoop 3985 360448, // TrackElemType::Up90ToInvertedFlatQuarterLoop 3986 360448, // TrackElemType::InvertedFlatToDown90QuarterLoop 3987 270226, // TrackElemType::LeftCurvedLiftHill 3988 270226, // TrackElemType::RightCurvedLiftHill 3989 393216, // TrackElemType::LeftReverser 3990 393216, // TrackElemType::RightReverser 3991 65536, // TrackElemType::AirThrustTopCap 3992 65536, // TrackElemType::AirThrustVerticalDown 3993 491520, // TrackElemType::AirThrustVerticalDownToLevel 3994 94208, // TrackElemType::BlockBrakes 3995 287115, // TrackElemType::LeftBankedQuarterTurn3TileUp25 3996 287115, // TrackElemType::RightBankedQuarterTurn3TileUp25 3997 287115, // TrackElemType::LeftBankedQuarterTurn3TileDown25 3998 287115, // TrackElemType::RightBankedQuarterTurn3TileDown25 3999 333259, // TrackElemType::LeftBankedQuarterTurn5TileUp25 4000 333259, // TrackElemType::RightBankedQuarterTurn5TileUp25 4001 333259, // TrackElemType::LeftBankedQuarterTurn5TileDown25 4002 333259, // TrackElemType::RightBankedQuarterTurn5TileDown25 4003 83968, // TrackElemType::Up25ToLeftBankedUp25 4004 83968, // TrackElemType::Up25ToRightBankedUp25 4005 83968, // TrackElemType::LeftBankedUp25ToUp25 4006 83968, // TrackElemType::RightBankedUp25ToUp25 4007 83968, // TrackElemType::Down25ToLeftBankedDown25 4008 83968, // TrackElemType::Down25ToRightBankedDown25 4009 83968, // TrackElemType::LeftBankedDown25ToDown25 4010 83968, // TrackElemType::RightBankedDown25ToDown25 4011 77824, // TrackElemType::LeftBankedFlatToLeftBankedUp25 4012 77824, // TrackElemType::RightBankedFlatToRightBankedUp25 4013 77824, // TrackElemType::LeftBankedUp25ToLeftBankedFlat 4014 77824, // TrackElemType::RightBankedUp25ToRightBankedFlat 4015 77824, // TrackElemType::LeftBankedFlatToLeftBankedDown25 4016 77824, // TrackElemType::RightBankedFlatToRightBankedDown25 4017 77824, // TrackElemType::LeftBankedDown25ToLeftBankedFlat 4018 77824, // TrackElemType::RightBankedDown25ToRightBankedFlat 4019 77824, // TrackElemType::FlatToLeftBankedUp25 4020 77824, // TrackElemType::FlatToRightBankedUp25 4021 77824, // TrackElemType::LeftBankedUp25ToFlat 4022 77824, // TrackElemType::RightBankedUp25ToFlat 4023 77824, // TrackElemType::FlatToLeftBankedDown25 4024 77824, // TrackElemType::FlatToRightBankedDown25 4025 77824, // TrackElemType::LeftBankedDown25ToFlat 4026 77824, // TrackElemType::RightBankedDown25ToFlat 4027 151552, // TrackElemType::LeftQuarterTurn1TileUp90 4028 151552, // TrackElemType::RightQuarterTurn1TileUp90 4029 151552, // TrackElemType::LeftQuarterTurn1TileDown90 4030 151552, // TrackElemType::RightQuarterTurn1TileDown90 4031 360448, // TrackElemType::MultiDimUp90ToInvertedFlatQuarterLoop 4032 360448, // TrackElemType::MultiDimFlatToDown90QuarterLoop 4033 360448, // TrackElemType::MultiDimInvertedUp90ToFlatQuarterLoop 4034 77824, // TrackElemType::RotationControlToggle 4035 262144, // TrackElemType::FlatTrack1x4A 4036 262144, // TrackElemType::FlatTrack2x2 4037 1048576,// TrackElemType::FlatTrack4x4 4038 524288, // TrackElemType::FlatTrack2x4 4039 327680, // TrackElemType::FlatTrack1x5 4040 65536, // TrackElemType::FlatTrack1x1A 4041 262144, // TrackElemType::FlatTrack1x4B 4042 65536, // TrackElemType::FlatTrack1x1B 4043 262144, // TrackElemType::FlatTrack1x4C 4044 524288, // TrackElemType::FlatTrack3x3 4045 }; 4046 4047 /** rct2: 0x0099EA1C */ 4048 static constexpr track_type_t TrackElementMirrorMap[TrackElemType::Count] = { 4049 TrackElemType::Flat, 4050 TrackElemType::EndStation, 4051 TrackElemType::BeginStation, 4052 TrackElemType::MiddleStation, 4053 TrackElemType::Up25, 4054 TrackElemType::Up60, 4055 TrackElemType::FlatToUp25, 4056 TrackElemType::Up25ToUp60, 4057 TrackElemType::Up60ToUp25, 4058 TrackElemType::Up25ToFlat, 4059 TrackElemType::Down25, 4060 TrackElemType::Down60, 4061 TrackElemType::FlatToDown25, 4062 TrackElemType::Down25ToDown60, 4063 TrackElemType::Down60ToDown25, 4064 TrackElemType::Down25ToFlat, 4065 TrackElemType::RightQuarterTurn5Tiles, // TrackElemType::LeftQuarterTurn5Tiles 4066 TrackElemType::LeftQuarterTurn5Tiles, // TrackElemType::RightQuarterTurn5Tiles 4067 TrackElemType::FlatToRightBank, // TrackElemType::FlatToLeftBank 4068 TrackElemType::FlatToLeftBank, // TrackElemType::FlatToRightBank 4069 TrackElemType::RightBankToFlat, // TrackElemType::LeftBankToFlat 4070 TrackElemType::LeftBankToFlat, // TrackElemType::RightBankToFlat 4071 TrackElemType::BankedRightQuarterTurn5Tiles, // TrackElemType::BankedLeftQuarterTurn5Tiles 4072 TrackElemType::BankedLeftQuarterTurn5Tiles, // TrackElemType::BankedRightQuarterTurn5Tiles 4073 TrackElemType::RightBankToUp25, // TrackElemType::LeftBankToUp25 4074 TrackElemType::LeftBankToUp25, // TrackElemType::RightBankToUp25 4075 TrackElemType::Up25ToRightBank, // TrackElemType::Up25ToLeftBank 4076 TrackElemType::Up25ToLeftBank, // TrackElemType::Up25ToRightBank 4077 TrackElemType::RightBankToDown25, // TrackElemType::LeftBankToDown25 4078 TrackElemType::LeftBankToDown25, // TrackElemType::RightBankToDown25 4079 TrackElemType::Down25ToRightBank, // TrackElemType::Down25ToLeftBank 4080 TrackElemType::Down25ToLeftBank, // TrackElemType::Down25ToRightBank 4081 TrackElemType::RightBank, // TrackElemType::LeftBank 4082 TrackElemType::LeftBank, // TrackElemType::RightBank 4083 TrackElemType::RightQuarterTurn5TilesUp25, // TrackElemType::LeftQuarterTurn5TilesUp25 4084 TrackElemType::LeftQuarterTurn5TilesUp25, // TrackElemType::RightQuarterTurn5TilesUp25 4085 TrackElemType::RightQuarterTurn5TilesDown25, // TrackElemType::LeftQuarterTurn5TilesDown25 4086 TrackElemType::LeftQuarterTurn5TilesDown25, // TrackElemType::RightQuarterTurn5TilesDown25 4087 TrackElemType::SBendRight, // TrackElemType::SBendLeft 4088 TrackElemType::SBendLeft, // TrackElemType::SBendRight 4089 TrackElemType::RightVerticalLoop, // TrackElemType::LeftVerticalLoop 4090 TrackElemType::LeftVerticalLoop, // TrackElemType::RightVerticalLoop 4091 TrackElemType::RightQuarterTurn3Tiles, // TrackElemType::LeftQuarterTurn3Tiles 4092 TrackElemType::LeftQuarterTurn3Tiles, // TrackElemType::RightQuarterTurn3Tiles 4093 TrackElemType::RightBankedQuarterTurn3Tiles, // TrackElemType::LeftBankedQuarterTurn3Tiles 4094 TrackElemType::LeftBankedQuarterTurn3Tiles, // TrackElemType::RightBankedQuarterTurn3Tiles 4095 TrackElemType::RightQuarterTurn3TilesUp25, // TrackElemType::LeftQuarterTurn3TilesUp25 4096 TrackElemType::LeftQuarterTurn3TilesUp25, // TrackElemType::RightQuarterTurn3TilesUp25 4097 TrackElemType::RightQuarterTurn3TilesDown25, // TrackElemType::LeftQuarterTurn3TilesDown25 4098 TrackElemType::LeftQuarterTurn3TilesDown25, // TrackElemType::RightQuarterTurn3TilesDown25 4099 TrackElemType::RightQuarterTurn1Tile, // TrackElemType::LeftQuarterTurn1Tile 4100 TrackElemType::LeftQuarterTurn1Tile, // TrackElemType::RightQuarterTurn1Tile 4101 TrackElemType::RightTwistDownToUp, // TrackElemType::LeftTwistDownToUp 4102 TrackElemType::LeftTwistDownToUp, // TrackElemType::RightTwistDownToUp 4103 TrackElemType::RightTwistUpToDown, // TrackElemType::LeftTwistUpToDown 4104 TrackElemType::LeftTwistUpToDown, // TrackElemType::RightTwistUpToDown 4105 TrackElemType::HalfLoopUp, 4106 TrackElemType::HalfLoopDown, 4107 TrackElemType::RightCorkscrewUp, // TrackElemType::LeftCorkscrewUp 4108 TrackElemType::LeftCorkscrewUp, // TrackElemType::RightCorkscrewUp 4109 TrackElemType::RightCorkscrewDown, // TrackElemType::LeftCorkscrewDown 4110 TrackElemType::LeftCorkscrewDown, // TrackElemType::RightCorkscrewDown 4111 TrackElemType::FlatToUp60, 4112 TrackElemType::Up60ToFlat, 4113 TrackElemType::FlatToDown60, 4114 TrackElemType::Down60ToFlat, 4115 TrackElemType::TowerBase, 4116 TrackElemType::TowerSection, 4117 TrackElemType::FlatCovered, 4118 TrackElemType::Up25Covered, 4119 TrackElemType::Up60Covered, 4120 TrackElemType::FlatToUp25Covered, 4121 TrackElemType::Up25ToUp60Covered, 4122 TrackElemType::Up60ToUp25Covered, 4123 TrackElemType::Up25ToFlatCovered, 4124 TrackElemType::Down25Covered, 4125 TrackElemType::Down60Covered, 4126 TrackElemType::FlatToDown25Covered, 4127 TrackElemType::Down25ToDown60Covered, 4128 TrackElemType::Down60ToDown25Covered, 4129 TrackElemType::Down25ToFlatCovered, 4130 TrackElemType::RightQuarterTurn5TilesCovered, // TrackElemType::LeftQuarterTurn5TilesCovered 4131 TrackElemType::LeftQuarterTurn5TilesCovered, // TrackElemType::RightQuarterTurn5TilesCovered 4132 TrackElemType::SBendRightCovered, // TrackElemType::SBendLeftCovered 4133 TrackElemType::SBendLeftCovered, // TrackElemType::SBendRightCovered 4134 TrackElemType::RightQuarterTurn3TilesCovered, // TrackElemType::LeftQuarterTurn3TilesCovered 4135 TrackElemType::LeftQuarterTurn3TilesCovered, // TrackElemType::RightQuarterTurn3TilesCovered 4136 TrackElemType::RightHalfBankedHelixUpSmall, // TrackElemType::LeftHalfBankedHelixUpSmall 4137 TrackElemType::LeftHalfBankedHelixUpSmall, // TrackElemType::RightHalfBankedHelixUpSmall 4138 TrackElemType::RightHalfBankedHelixDownSmall, // TrackElemType::LeftHalfBankedHelixDownSmall 4139 TrackElemType::LeftHalfBankedHelixDownSmall, // TrackElemType::RightHalfBankedHelixDownSmall 4140 TrackElemType::RightHalfBankedHelixUpLarge, // TrackElemType::LeftHalfBankedHelixUpLarge 4141 TrackElemType::LeftHalfBankedHelixUpLarge, // TrackElemType::RightHalfBankedHelixUpLarge 4142 TrackElemType::RightHalfBankedHelixDownLarge, // TrackElemType::LeftHalfBankedHelixDownLarge 4143 TrackElemType::LeftHalfBankedHelixDownLarge, // TrackElemType::RightHalfBankedHelixDownLarge 4144 TrackElemType::RightQuarterTurn1TileUp60, // TrackElemType::LeftQuarterTurn1TileUp60 4145 TrackElemType::LeftQuarterTurn1TileUp60, // TrackElemType::RightQuarterTurn1TileUp60 4146 TrackElemType::RightQuarterTurn1TileDown60, // TrackElemType::LeftQuarterTurn1TileDown60 4147 TrackElemType::LeftQuarterTurn1TileDown60, // TrackElemType::RightQuarterTurn1TileDown60 4148 TrackElemType::Brakes, 4149 TrackElemType::Booster, 4150 TrackElemType::Maze, 4151 TrackElemType::RightQuarterBankedHelixLargeUp, // TrackElemType::LeftQuarterBankedHelixLargeUp 4152 TrackElemType::LeftQuarterBankedHelixLargeUp, // TrackElemType::RightQuarterBankedHelixLargeUp 4153 TrackElemType::RightQuarterBankedHelixLargeDown, // TrackElemType::LeftQuarterBankedHelixLargeDown 4154 TrackElemType::LeftQuarterBankedHelixLargeDown, // TrackElemType::RightQuarterBankedHelixLargeDown 4155 TrackElemType::RightQuarterHelixLargeUp, // TrackElemType::LeftQuarterHelixLargeUp 4156 TrackElemType::LeftQuarterHelixLargeUp, // TrackElemType::RightQuarterHelixLargeUp 4157 TrackElemType::RightQuarterHelixLargeDown, // TrackElemType::LeftQuarterHelixLargeDown 4158 TrackElemType::LeftQuarterHelixLargeDown, // TrackElemType::RightQuarterHelixLargeDown 4159 TrackElemType::Up25RightBanked, // TrackElemType::Up25LeftBanked 4160 TrackElemType::Up25LeftBanked, // TrackElemType::Up25RightBanked 4161 TrackElemType::Waterfall, 4162 TrackElemType::Rapids, 4163 TrackElemType::OnRidePhoto, 4164 TrackElemType::Down25RightBanked, // TrackElemType::Down25LeftBanked 4165 TrackElemType::Down25LeftBanked, // TrackElemType::Down25RightBanked 4166 TrackElemType::Watersplash, 4167 TrackElemType::FlatToUp60LongBase, 4168 TrackElemType::Up60ToFlatLongBase, 4169 TrackElemType::Whirlpool, 4170 TrackElemType::Down60ToFlatLongBase, 4171 TrackElemType::FlatToDown60LongBase, 4172 TrackElemType::CableLiftHill, 4173 TrackElemType::ReverseFreefallSlope, 4174 TrackElemType::ReverseFreefallVertical, 4175 TrackElemType::Up90, 4176 TrackElemType::Down90, 4177 TrackElemType::Up60ToUp90, 4178 TrackElemType::Down90ToDown60, 4179 TrackElemType::Up90ToUp60, 4180 TrackElemType::Down60ToDown90, 4181 TrackElemType::BrakeForDrop, 4182 TrackElemType::RightEighthToDiag, // TrackElemType::LeftEighthToDiag 4183 TrackElemType::LeftEighthToDiag, // TrackElemType::RightEighthToDiag 4184 TrackElemType::RightEighthToOrthogonal, // TrackElemType::LeftEighthToOrthogonal 4185 TrackElemType::LeftEighthToOrthogonal, // TrackElemType::RightEighthToOrthogonal 4186 TrackElemType::RightEighthBankToDiag, // TrackElemType::LeftEighthBankToDiag 4187 TrackElemType::LeftEighthBankToDiag, // TrackElemType::RightEighthBankToDiag 4188 TrackElemType::RightEighthBankToOrthogonal, // TrackElemType::LeftEighthBankToOrthogonal 4189 TrackElemType::LeftEighthBankToOrthogonal, // TrackElemType::RightEighthBankToOrthogonal 4190 TrackElemType::DiagFlat, 4191 TrackElemType::DiagUp25, 4192 TrackElemType::DiagUp60, 4193 TrackElemType::DiagFlatToUp25, 4194 TrackElemType::DiagUp25ToUp60, 4195 TrackElemType::DiagUp60ToUp25, 4196 TrackElemType::DiagUp25ToFlat, 4197 TrackElemType::DiagDown25, 4198 TrackElemType::DiagDown60, 4199 TrackElemType::DiagFlatToDown25, 4200 TrackElemType::DiagDown25ToDown60, 4201 TrackElemType::DiagDown60ToDown25, 4202 TrackElemType::DiagDown25ToFlat, 4203 TrackElemType::DiagFlatToUp60, 4204 TrackElemType::DiagUp60ToFlat, 4205 TrackElemType::DiagFlatToDown60, 4206 TrackElemType::DiagDown60ToFlat, 4207 TrackElemType::DiagFlatToRightBank, // TrackElemType::DiagFlatToLeftBank 4208 TrackElemType::DiagFlatToLeftBank, // TrackElemType::DiagFlatToRightBank 4209 TrackElemType::DiagRightBankToFlat, // TrackElemType::DiagLeftBankToFlat 4210 TrackElemType::DiagLeftBankToFlat, // TrackElemType::DiagRightBankToFlat 4211 TrackElemType::DiagRightBankToUp25, // TrackElemType::DiagLeftBankToUp25 4212 TrackElemType::DiagLeftBankToUp25, // TrackElemType::DiagRightBankToUp25 4213 TrackElemType::DiagUp25ToRightBank, // TrackElemType::DiagUp25ToLeftBank 4214 TrackElemType::DiagUp25ToLeftBank, // TrackElemType::DiagUp25ToRightBank 4215 TrackElemType::DiagRightBankToDown25, // TrackElemType::DiagLeftBankToDown25 4216 TrackElemType::DiagLeftBankToDown25, // TrackElemType::DiagRightBankToDown25 4217 TrackElemType::DiagDown25ToRightBank, // TrackElemType::DiagDown25ToLeftBank 4218 TrackElemType::DiagDown25ToLeftBank, // TrackElemType::DiagDown25ToRightBank 4219 TrackElemType::DiagRightBank, // TrackElemType::DiagLeftBank 4220 TrackElemType::DiagLeftBank, // TrackElemType::DiagRightBank 4221 TrackElemType::LogFlumeReverser, 4222 TrackElemType::SpinningTunnel, 4223 TrackElemType::RightBarrelRollUpToDown, // TrackElemType::LeftBarrelRollUpToDown 4224 TrackElemType::LeftBarrelRollUpToDown, // TrackElemType::RightBarrelRollUpToDown 4225 TrackElemType::RightBarrelRollDownToUp, // TrackElemType::LeftBarrelRollDownToUp 4226 TrackElemType::LeftBarrelRollDownToUp, // TrackElemType::RightBarrelRollDownToUp 4227 TrackElemType::RightBankToRightQuarterTurn3TilesUp25, // TrackElemType::LeftBankToLeftQuarterTurn3TilesUp25 4228 TrackElemType::LeftBankToLeftQuarterTurn3TilesUp25, // TrackElemType::RightBankToRightQuarterTurn3TilesUp25 4229 TrackElemType::RightQuarterTurn3TilesDown25ToRightBank, // TrackElemType::LeftQuarterTurn3TilesDown25ToLeftBank 4230 TrackElemType::LeftQuarterTurn3TilesDown25ToLeftBank, // TrackElemType::RightQuarterTurn3TilesDown25ToRightBank 4231 TrackElemType::PoweredLift, 4232 TrackElemType::RightLargeHalfLoopUp, // TrackElemType::LeftLargeHalfLoopUp 4233 TrackElemType::LeftLargeHalfLoopUp, // TrackElemType::RightLargeHalfLoopUp 4234 TrackElemType::LeftLargeHalfLoopDown, // TrackElemType::RightLargeHalfLoopDown 4235 TrackElemType::RightLargeHalfLoopDown, // TrackElemType::LeftLargeHalfLoopDown 4236 TrackElemType::RightFlyerTwistUp, // TrackElemType::LeftFlyerTwistUp 4237 TrackElemType::LeftFlyerTwistUp, // TrackElemType::RightFlyerTwistUp 4238 TrackElemType::RightFlyerTwistDown, // TrackElemType::LeftFlyerTwistDown 4239 TrackElemType::LeftFlyerTwistDown, // TrackElemType::RightFlyerTwistDown 4240 TrackElemType::FlyerHalfLoopUp, 4241 TrackElemType::FlyerHalfLoopDown, 4242 TrackElemType::RightFlyerCorkscrewUp, // TrackElemType::LeftFlyerCorkscrewUp 4243 TrackElemType::LeftFlyerCorkscrewUp, // TrackElemType::RightFlyerCorkscrewUp 4244 TrackElemType::RightFlyerCorkscrewDown, // TrackElemType::LeftFlyerCorkscrewDown 4245 TrackElemType::LeftFlyerCorkscrewDown, // TrackElemType::RightFlyerCorkscrewDown 4246 TrackElemType::HeartLineTransferUp, 4247 TrackElemType::HeartLineTransferDown, 4248 TrackElemType::RightHeartLineRoll, // TrackElemType::LeftHeartLineRoll 4249 TrackElemType::LeftHeartLineRoll, // TrackElemType::RightHeartLineRoll 4250 TrackElemType::MinigolfHoleA, 4251 TrackElemType::MinigolfHoleB, 4252 TrackElemType::MinigolfHoleC, 4253 TrackElemType::MinigolfHoleE, // TrackElemType::MinigolfHoleD 4254 TrackElemType::MinigolfHoleD, // TrackElemType::MinigolfHoleE 4255 TrackElemType::MultiDimInvertedFlatToDown90QuarterLoop, 4256 TrackElemType::Up90ToInvertedFlatQuarterLoop, 4257 TrackElemType::InvertedFlatToDown90QuarterLoop, 4258 TrackElemType::RightCurvedLiftHill, // TrackElemType::LeftCurvedLiftHill 4259 TrackElemType::LeftCurvedLiftHill, // TrackElemType::RightCurvedLiftHill 4260 TrackElemType::RightReverser, // TrackElemType::LeftReverser 4261 TrackElemType::LeftReverser, // TrackElemType::RightReverser 4262 TrackElemType::AirThrustTopCap, 4263 TrackElemType::AirThrustVerticalDown, 4264 TrackElemType::AirThrustVerticalDownToLevel, 4265 TrackElemType::BlockBrakes, 4266 TrackElemType::RightBankedQuarterTurn3TileUp25, // TrackElemType::LeftBankedQuarterTurn3TileUp25 4267 TrackElemType::LeftBankedQuarterTurn3TileUp25, // TrackElemType::RightBankedQuarterTurn3TileUp25 4268 TrackElemType::RightBankedQuarterTurn3TileDown25, // TrackElemType::LeftBankedQuarterTurn3TileDown25 4269 TrackElemType::LeftBankedQuarterTurn3TileDown25, // TrackElemType::RightBankedQuarterTurn3TileDown25 4270 TrackElemType::RightBankedQuarterTurn5TileUp25, // TrackElemType::LeftBankedQuarterTurn5TileUp25 4271 TrackElemType::LeftBankedQuarterTurn5TileUp25, // TrackElemType::RightBankedQuarterTurn5TileUp25 4272 TrackElemType::RightBankedQuarterTurn5TileDown25, // TrackElemType::LeftBankedQuarterTurn5TileDown25 4273 TrackElemType::LeftBankedQuarterTurn5TileDown25, // TrackElemType::RightBankedQuarterTurn5TileDown25 4274 TrackElemType::Up25ToRightBankedUp25, // TrackElemType::Up25ToLeftBankedUp25 4275 TrackElemType::Up25ToLeftBankedUp25, // TrackElemType::Up25ToRightBankedUp25 4276 TrackElemType::RightBankedUp25ToUp25, // TrackElemType::LeftBankedUp25ToUp25 4277 TrackElemType::LeftBankedUp25ToUp25, // TrackElemType::RightBankedUp25ToUp25 4278 TrackElemType::Down25ToRightBankedDown25, // TrackElemType::Down25ToLeftBankedDown25 4279 TrackElemType::Down25ToLeftBankedDown25, // TrackElemType::Down25ToRightBankedDown25 4280 TrackElemType::RightBankedDown25ToDown25, // TrackElemType::LeftBankedDown25ToDown25 4281 TrackElemType::LeftBankedDown25ToDown25, // TrackElemType::RightBankedDown25ToDown25 4282 TrackElemType::RightBankedFlatToRightBankedUp25, // TrackElemType::LeftBankedFlatToLeftBankedUp25 4283 TrackElemType::LeftBankedFlatToLeftBankedUp25, // TrackElemType::RightBankedFlatToRightBankedUp25 4284 TrackElemType::RightBankedUp25ToRightBankedFlat, // TrackElemType::LeftBankedUp25ToLeftBankedFlat 4285 TrackElemType::LeftBankedUp25ToLeftBankedFlat, // TrackElemType::RightBankedUp25ToRightBankedFlat 4286 TrackElemType::RightBankedFlatToRightBankedDown25, // TrackElemType::LeftBankedFlatToLeftBankedDown25 4287 TrackElemType::LeftBankedFlatToLeftBankedDown25, // TrackElemType::RightBankedFlatToRightBankedDown25 4288 TrackElemType::RightBankedDown25ToRightBankedFlat, // TrackElemType::LeftBankedDown25ToLeftBankedFlat 4289 TrackElemType::LeftBankedDown25ToLeftBankedFlat, // TrackElemType::RightBankedDown25ToRightBankedFlat 4290 TrackElemType::FlatToRightBankedUp25, // TrackElemType::FlatToLeftBankedUp25 4291 TrackElemType::FlatToLeftBankedUp25, // TrackElemType::FlatToRightBankedUp25 4292 TrackElemType::RightBankedUp25ToFlat, // TrackElemType::LeftBankedUp25ToFlat 4293 TrackElemType::LeftBankedUp25ToFlat, // TrackElemType::RightBankedUp25ToFlat 4294 TrackElemType::FlatToRightBankedDown25, // TrackElemType::FlatToLeftBankedDown25 4295 TrackElemType::FlatToLeftBankedDown25, // TrackElemType::FlatToRightBankedDown25 4296 TrackElemType::RightBankedDown25ToFlat, // TrackElemType::LeftBankedDown25ToFlat 4297 TrackElemType::LeftBankedDown25ToFlat, // TrackElemType::RightBankedDown25ToFlat 4298 TrackElemType::RightQuarterTurn1TileUp90, // TrackElemType::LeftQuarterTurn1TileUp90 4299 TrackElemType::LeftQuarterTurn1TileUp90, // TrackElemType::RightQuarterTurn1TileUp90 4300 TrackElemType::RightQuarterTurn1TileDown90, // TrackElemType::LeftQuarterTurn1TileDown90 4301 TrackElemType::LeftQuarterTurn1TileDown90, // TrackElemType::RightQuarterTurn1TileDown90 4302 TrackElemType::MultiDimUp90ToInvertedFlatQuarterLoop, 4303 TrackElemType::MultiDimFlatToDown90QuarterLoop, 4304 TrackElemType::MultiDimInvertedUp90ToFlatQuarterLoop, 4305 TrackElemType::RotationControlToggle, 4306 TrackElemType::FlatTrack1x4A, // TrackElemType::FlatTrack1x4A 4307 TrackElemType::FlatTrack2x2, // TrackElemType::FlatTrack2x2 4308 TrackElemType::FlatTrack4x4, // TrackElemType::FlatTrack4x4 4309 TrackElemType::FlatTrack2x4, // TrackElemType::FlatTrack2x4 4310 TrackElemType::FlatTrack1x5, // TrackElemType::FlatTrack1x5 4311 TrackElemType::FlatTrack1x1A, // TrackElemType::FlatTrack1x1A 4312 TrackElemType::FlatTrack1x4B, // TrackElemType::FlatTrack1x4B 4313 TrackElemType::FlatTrack1x1B, // TrackElemType::FlatTrack1x1B 4314 TrackElemType::FlatTrack1x4C, // TrackElemType::FlatTrack1x4C 4315 TrackElemType::FlatTrack3x3, // TrackElemType::FlatTrack3x3 4316 }; 4317 4318 /** rct2: 0x00999694 */ 4319 static constexpr uint32_t TrackHeightMarkerPositions[TrackElemType::Count] = { 4320 (1 << 0), // TrackElemType::Flat 4321 (1 << 0), // TrackElemType::EndStation 4322 (1 << 0), // TrackElemType::BeginStation 4323 (1 << 0), // TrackElemType::MiddleStation 4324 (1 << 0), // TrackElemType::Up25 4325 (1 << 0), // TrackElemType::Up60 4326 (1 << 0), // TrackElemType::FlatToUp25 4327 (1 << 0), // TrackElemType::Up25ToUp60 4328 (1 << 0), // TrackElemType::Up60ToUp25 4329 (1 << 0), // TrackElemType::Up25ToFlat 4330 (1 << 0), // TrackElemType::Down25 4331 (1 << 0), // TrackElemType::Down60 4332 (1 << 0), // TrackElemType::FlatToDown25 4333 (1 << 0), // TrackElemType::Down25ToDown60 4334 (1 << 0), // TrackElemType::Down60ToDown25 4335 (1 << 0), // TrackElemType::Down25ToFlat 4336 (1 << 0) | (1 << 6), // TrackElemType::LeftQuarterTurn5Tiles 4337 (1 << 0) | (1 << 6), // TrackElemType::RightQuarterTurn5Tiles 4338 (1 << 0), // TrackElemType::FlatToLeftBank 4339 (1 << 0), // TrackElemType::FlatToRightBank 4340 (1 << 0), // TrackElemType::LeftBankToFlat 4341 (1 << 0), // TrackElemType::RightBankToFlat 4342 (1 << 0) | (1 << 6), // TrackElemType::BankedLeftQuarterTurn5Tiles 4343 (1 << 0) | (1 << 6), // TrackElemType::BankedRightQuarterTurn5Tiles 4344 (1 << 0), // TrackElemType::LeftBankToUp25 4345 (1 << 0), // TrackElemType::RightBankToUp25 4346 (1 << 0), // TrackElemType::Up25ToLeftBank 4347 (1 << 0), // TrackElemType::Up25ToRightBank 4348 (1 << 0), // TrackElemType::LeftBankToDown25 4349 (1 << 0), // TrackElemType::RightBankToDown25 4350 (1 << 0), // TrackElemType::Down25ToLeftBank 4351 (1 << 0), // TrackElemType::Down25ToRightBank 4352 (1 << 0), // TrackElemType::LeftBank 4353 (1 << 0), // TrackElemType::RightBank 4354 (1 << 0) | (1 << 6), // TrackElemType::LeftQuarterTurn5TilesUp25 4355 (1 << 0) | (1 << 6), // TrackElemType::RightQuarterTurn5TilesUp25 4356 (1 << 0) | (1 << 6), // TrackElemType::LeftQuarterTurn5TilesDown25 4357 (1 << 0) | (1 << 6), // TrackElemType::RightQuarterTurn5TilesDown25 4358 (1 << 0) | (1 << 3), // TrackElemType::SBendLeft 4359 (1 << 0) | (1 << 3), // TrackElemType::SBendRight 4360 (1 << 0) | (1 << 9), // TrackElemType::LeftVerticalLoop 4361 (1 << 0) | (1 << 9), // TrackElemType::RightVerticalLoop 4362 (1 << 0) | (1 << 3), // TrackElemType::LeftQuarterTurn3Tiles 4363 (1 << 0) | (1 << 3), // TrackElemType::RightQuarterTurn3Tiles 4364 (1 << 0) | (1 << 3), // TrackElemType::LeftBankedQuarterTurn3Tiles 4365 (1 << 0) | (1 << 3), // TrackElemType::RightBankedQuarterTurn3Tiles 4366 (1 << 0) | (1 << 3), // TrackElemType::LeftQuarterTurn3TilesUp25 4367 (1 << 0) | (1 << 3), // TrackElemType::RightQuarterTurn3TilesUp25 4368 (1 << 0) | (1 << 3), // TrackElemType::LeftQuarterTurn3TilesDown25 4369 (1 << 0) | (1 << 3), // TrackElemType::RightQuarterTurn3TilesDown25 4370 (1 << 0), // TrackElemType::LeftQuarterTurn1Tile 4371 (1 << 0), // TrackElemType::RightQuarterTurn1Tile 4372 (1 << 0) | (1 << 2), // TrackElemType::LeftTwistDownToUp 4373 (1 << 0) | (1 << 2), // TrackElemType::RightTwistDownToUp 4374 (1 << 0) | (1 << 2), // TrackElemType::LeftTwistUpToDown 4375 (1 << 0) | (1 << 2), // TrackElemType::RightTwistUpToDown 4376 (1 << 0) | (1 << 3), // TrackElemType::HalfLoopUp 4377 (1 << 0) | (1 << 3), // TrackElemType::HalfLoopDown 4378 (1 << 0) | (1 << 2), // TrackElemType::LeftCorkscrewUp 4379 (1 << 0) | (1 << 2), // TrackElemType::RightCorkscrewUp 4380 (1 << 0) | (1 << 2), // TrackElemType::LeftCorkscrewDown 4381 (1 << 0) | (1 << 2), // TrackElemType::RightCorkscrewDown 4382 (1 << 0), // TrackElemType::FlatToUp60 4383 (1 << 0), // TrackElemType::Up60ToFlat 4384 (1 << 0), // TrackElemType::FlatToDown60 4385 (1 << 0), // TrackElemType::Down60ToFlat 4386 (1 << 1) | (1 << 3) | (1 << 6) | (1 << 7), // TrackElemType::TowerBase 4387 (1 << 0), // TrackElemType::TowerSection 4388 (1 << 0), // TrackElemType::FlatCovered 4389 (1 << 0), // TrackElemType::Up25Covered 4390 (1 << 0), // TrackElemType::Up60Covered 4391 (1 << 0), // TrackElemType::FlatToUp25Covered 4392 (1 << 0), // TrackElemType::Up25ToUp60Covered 4393 (1 << 0), // TrackElemType::Up60ToUp25Covered 4394 (1 << 0), // TrackElemType::Up25ToFlatCovered 4395 (1 << 0), // TrackElemType::Down25Covered 4396 (1 << 0), // TrackElemType::Down60Covered 4397 (1 << 0), // TrackElemType::FlatToDown25Covered 4398 (1 << 0), // TrackElemType::Down25ToDown60Covered 4399 (1 << 0), // TrackElemType::Down60ToDown25Covered 4400 (1 << 0), // TrackElemType::Down25ToFlatCovered 4401 (1 << 0) | (1 << 6), // TrackElemType::LeftQuarterTurn5TilesCovered 4402 (1 << 0) | (1 << 6), // TrackElemType::RightQuarterTurn5TilesCovered 4403 (1 << 0) | (1 << 3), // TrackElemType::SBendLeftCovered 4404 (1 << 0) | (1 << 3), // TrackElemType::SBendRightCovered 4405 (1 << 0) | (1 << 3), // TrackElemType::LeftQuarterTurn3TilesCovered 4406 (1 << 0) | (1 << 3), // TrackElemType::RightQuarterTurn3TilesCovered 4407 (1 << 0) | (1 << 7), // TrackElemType::LeftHalfBankedHelixUpSmall 4408 (1 << 0) | (1 << 7), // TrackElemType::RightHalfBankedHelixUpSmall 4409 (1 << 0) | (1 << 7), // TrackElemType::LeftHalfBankedHelixDownSmall 4410 (1 << 0) | (1 << 7), // TrackElemType::RightHalfBankedHelixDownSmall 4411 (1 << 0) | (1 << 13), // TrackElemType::LeftHalfBankedHelixUpLarge 4412 (1 << 0) | (1 << 13), // TrackElemType::RightHalfBankedHelixUpLarge 4413 (1 << 0) | (1 << 13), // TrackElemType::LeftHalfBankedHelixDownLarge 4414 (1 << 0) | (1 << 13), // TrackElemType::RightHalfBankedHelixDownLarge 4415 (1 << 0), // TrackElemType::LeftQuarterTurn1TileUp60 4416 (1 << 0), // TrackElemType::RightQuarterTurn1TileUp60 4417 (1 << 0), // TrackElemType::LeftQuarterTurn1TileDown60 4418 (1 << 0), // TrackElemType::RightQuarterTurn1TileDown60 4419 (1 << 0), // TrackElemType::Brakes 4420 (1 << 0), // TrackElemType::Booster 4421 (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 4422 (1 << 0) | (1 << 6), // TrackElemType::LeftQuarterBankedHelixLargeUp 4423 (1 << 0) | (1 << 6), // TrackElemType::RightQuarterBankedHelixLargeUp 4424 (1 << 0) | (1 << 6), // TrackElemType::LeftQuarterBankedHelixLargeDown 4425 (1 << 0) | (1 << 6), // TrackElemType::RightQuarterBankedHelixLargeDown 4426 (1 << 0) | (1 << 6), // TrackElemType::LeftQuarterHelixLargeUp 4427 (1 << 0) | (1 << 6), // TrackElemType::RightQuarterHelixLargeUp 4428 (1 << 0) | (1 << 6), // TrackElemType::LeftQuarterHelixLargeDown 4429 (1 << 0) | (1 << 6), // TrackElemType::RightQuarterHelixLargeDown 4430 (1 << 0), // TrackElemType::Up25LeftBanked 4431 (1 << 0) | (1 << 3) | (1 << 12) | (1 << 15), // TrackElemType::Up25RightBanked 4432 (1 << 0), // TrackElemType::Waterfall 4433 (1 << 0), // TrackElemType::Rapids 4434 (1 << 0), // TrackElemType::OnRidePhoto 4435 (1 << 0) | (1 << 7), // TrackElemType::Down25LeftBanked 4436 (1 << 0), // TrackElemType::Down25RightBanked 4437 (1 << 0) | (1 << 4), // TrackElemType::Watersplash 4438 (1 << 0) | (1 << 3), // TrackElemType::FlatToUp60LongBase 4439 (1 << 0) | (1 << 3), // TrackElemType::Up60ToFlatLongBase 4440 (1 << 0), // TrackElemType::Whirlpool 4441 (1 << 0) | (1 << 3), // TrackElemType::Down60ToFlatLongBase 4442 (1 << 0) | (1 << 3), // TrackElemType::FlatToUp60LongBase 4443 (1 << 0) | (1 << 3), // TrackElemType::CableLiftHill 4444 (1 << 0) | (1 << 5), // TrackElemType::ReverseFreefallSlope 4445 (1 << 0), // TrackElemType::ReverseFreefallVertical 4446 (1 << 0), // TrackElemType::Up90 4447 (1 << 0), // TrackElemType::Down90 4448 (1 << 0), // TrackElemType::Up60ToUp90 4449 (1 << 0), // TrackElemType::Down90ToDown60 4450 (1 << 0), // TrackElemType::Up90ToUp60 4451 (1 << 0), // TrackElemType::Down60ToDown90 4452 (1 << 0), // TrackElemType::BrakeForDrop 4453 (1 << 0) | (1 << 4), // TrackElemType::LeftEighthToDiag 4454 (1 << 0) | (1 << 4), // TrackElemType::RightEighthToDiag 4455 (1 << 0) | (1 << 4), // TrackElemType::LeftEighthToOrthogonal 4456 (1 << 0) | (1 << 4), // TrackElemType::RightEighthToOrthogonal 4457 (1 << 0) | (1 << 4), // TrackElemType::LeftEighthBankToDiag 4458 (1 << 0) | (1 << 4), // TrackElemType::RightEighthBankToDiag 4459 (1 << 0) | (1 << 4), // TrackElemType::LeftEighthBankToOrthogonal 4460 (1 << 0) | (1 << 4), // TrackElemType::RightEighthBankToOrthogonal 4461 (1 << 0), // TrackElemType::DiagFlat 4462 (1 << 0), // TrackElemType::DiagUp25 4463 (1 << 0), // TrackElemType::DiagUp60 4464 (1 << 0), // TrackElemType::DiagFlatToUp25 4465 (1 << 0), // TrackElemType::DiagUp25ToUp60 4466 (1 << 0), // TrackElemType::DiagUp60ToUp25 4467 (1 << 0), // TrackElemType::DiagUp25ToFlat 4468 (1 << 3), // TrackElemType::DiagDown25 4469 (1 << 3), // TrackElemType::DiagDown60 4470 (1 << 3), // TrackElemType::DiagFlatToDown25 4471 (1 << 3), // TrackElemType::DiagDown25ToDown60 4472 (1 << 3), // TrackElemType::DiagDown60ToDown25 4473 (1 << 3), // TrackElemType::DiagDown25ToFlat 4474 (1 << 0), // TrackElemType::DiagFlatToUp60 4475 (1 << 0), // TrackElemType::DiagUp60ToFlat 4476 (1 << 3), // TrackElemType::DiagFlatToDown60 4477 (1 << 3), // TrackElemType::DiagDown60ToFlat 4478 (1 << 0), // TrackElemType::DiagFlatToLeftBank 4479 (1 << 0), // TrackElemType::DiagFlatToRightBank 4480 (1 << 0), // TrackElemType::DiagLeftBankToFlat 4481 (1 << 0), // TrackElemType::DiagRightBankToFlat 4482 (1 << 0), // TrackElemType::DiagLeftBankToUp25 4483 (1 << 0), // TrackElemType::DiagRightBankToUp25 4484 (1 << 0), // TrackElemType::DiagUp25ToLeftBank 4485 (1 << 0), // TrackElemType::DiagUp25ToRightBank 4486 (1 << 3), // TrackElemType::DiagLeftBankToDown25 4487 (1 << 3), // TrackElemType::DiagRightBankToDown25 4488 (1 << 3), // TrackElemType::DiagDown25ToLeftBank 4489 (1 << 3), // TrackElemType::DiagDown25ToRightBank 4490 (1 << 0), // TrackElemType::DiagLeftBank 4491 (1 << 0), // TrackElemType::DiagRightBank 4492 (1 << 0), // TrackElemType::LogFlumeReverser 4493 (1 << 0), // TrackElemType::SpinningTunnel 4494 (1 << 0) | (1 << 2), // TrackElemType::LeftBarrelRollUpToDown 4495 (1 << 0) | (1 << 2), // TrackElemType::RightBarrelRollUpToDown 4496 (1 << 0) | (1 << 2), // TrackElemType::LeftBarrelRollDownToUp 4497 (1 << 0) | (1 << 2), // TrackElemType::RightBarrelRollDownToUp 4498 (1 << 0) | (1 << 3), // TrackElemType::LeftBankToLeftQuarterTurn3TilesUp25 4499 (1 << 0) | (1 << 3), // TrackElemType::RightBankToRightQuarterTurn3TilesUp25 4500 (1 << 0) | (1 << 3), // TrackElemType::LeftQuarterTurn3TilesDown25ToLeftBank 4501 (1 << 0) | (1 << 3), // TrackElemType::RightQuarterTurn3TilesDown25ToRightBank 4502 (1 << 0), // TrackElemType::PoweredLift 4503 (1 << 0) | (1 << 6), // TrackElemType::LeftLargeHalfLoopUp 4504 (1 << 0) | (1 << 6), // TrackElemType::RightLargeHalfLoopUp 4505 (1 << 0) | (1 << 6), // TrackElemType::RightLargeHalfLoopDown 4506 (1 << 0) | (1 << 6), // TrackElemType::LeftLargeHalfLoopDown 4507 (1 << 0) | (1 << 2), // TrackElemType::LeftFlyerTwistUp 4508 (1 << 0) | (1 << 2), // TrackElemType::RightFlyerTwistUp 4509 (1 << 0) | (1 << 2), // TrackElemType::LeftFlyerTwistDown 4510 (1 << 0) | (1 << 2), // TrackElemType::RightFlyerTwistDown 4511 (1 << 0) | (1 << 3), // TrackElemType::FlyerHalfLoopUp 4512 (1 << 0) | (1 << 3), // TrackElemType::FlyerHalfLoopDown 4513 (1 << 0) | (1 << 2), // TrackElemType::LeftFlyerCorkscrewUp 4514 (1 << 0) | (1 << 2), // TrackElemType::RightFlyerCorkscrewUp 4515 (1 << 0) | (1 << 2), // TrackElemType::LeftFlyerCorkscrewDown 4516 (1 << 0) | (1 << 2), // TrackElemType::RightFlyerCorkscrewDown 4517 (1 << 0) | (1 << 3), // TrackElemType::HeartLineTransferUp 4518 (1 << 0) | (1 << 3), // TrackElemType::HeartLineTransferDown 4519 (1 << 0) | (1 << 5), // TrackElemType::LeftHeartLineRoll 4520 (1 << 0) | (1 << 5), // TrackElemType::RightHeartLineRoll 4521 (1 << 0) | (1 << 1), // TrackElemType::MinigolfHoleA 4522 (1 << 0) | (1 << 1), // TrackElemType::MinigolfHoleB 4523 (1 << 0) | (1 << 1), // TrackElemType::MinigolfHoleC 4524 (1 << 0) | (1 << 2), // TrackElemType::MinigolfHoleD 4525 (1 << 0) | (1 << 2), // TrackElemType::MinigolfHoleE 4526 (1 << 0) | (1 << 2), // TrackElemType::MultiDimInvertedFlatToDown90QuarterLoop 4527 (1 << 0) | (1 << 2), // TrackElemType::Up90ToInvertedFlatQuarterLoop 4528 (1 << 0) | (1 << 2), // TrackElemType::InvertedFlatToDown90QuarterLoop 4529 (1 << 0) | (1 << 3), // TrackElemType::LeftCurvedLiftHill 4530 (1 << 0) | (1 << 3), // TrackElemType::RightCurvedLiftHill 4531 (1 << 0) | (1 << 5), // TrackElemType::LeftReverser 4532 (1 << 0) | (1 << 5), // TrackElemType::RightReverser 4533 (1 << 0) | (1 << 3), // TrackElemType::AirThrustTopCap 4534 (1 << 0), // TrackElemType::AirThrustVerticalDown 4535 (1 << 0) | (1 << 5), // TrackElemType::AirThrustVerticalDownToLevel 4536 (1 << 0), // TrackElemType::BlockBrakes 4537 (1 << 0) | (1 << 3), // TrackElemType::LeftBankedQuarterTurn3TileUp25 4538 (1 << 0) | (1 << 3), // TrackElemType::RightBankedQuarterTurn3TileUp25 4539 (1 << 0) | (1 << 3), // TrackElemType::LeftBankedQuarterTurn3TileDown25 4540 (1 << 0) | (1 << 3), // TrackElemType::RightBankedQuarterTurn3TileDown25 4541 (1 << 0) | (1 << 6), // TrackElemType::LeftBankedQuarterTurn5TileUp25 4542 (1 << 0) | (1 << 6), // TrackElemType::RightBankedQuarterTurn5TileUp25 4543 (1 << 0) | (1 << 6), // TrackElemType::LeftBankedQuarterTurn5TileDown25 4544 (1 << 0) | (1 << 6), // TrackElemType::RightBankedQuarterTurn5TileDown25 4545 (1 << 0), // TrackElemType::Up25ToLeftBankedUp25 4546 (1 << 0), // TrackElemType::Up25ToRightBankedUp25 4547 (1 << 0), // TrackElemType::LeftBankedUp25ToUp25 4548 (1 << 0), // TrackElemType::RightBankedUp25ToUp25 4549 (1 << 0), // TrackElemType::Down25ToLeftBankedDown25 4550 (1 << 0), // TrackElemType::Down25ToRightBankedDown25 4551 (1 << 0), // TrackElemType::LeftBankedDown25ToDown25 4552 (1 << 0), // TrackElemType::RightBankedDown25ToDown25 4553 (1 << 0), // TrackElemType::LeftBankedFlatToLeftBankedUp25 4554 (1 << 0), // TrackElemType::RightBankedFlatToRightBankedUp25 4555 (1 << 0), // TrackElemType::LeftBankedUp25ToLeftBankedFlat 4556 (1 << 0), // TrackElemType::RightBankedUp25ToRightBankedFlat 4557 (1 << 0), // TrackElemType::LeftBankedFlatToLeftBankedDown25 4558 (1 << 0), // TrackElemType::RightBankedFlatToRightBankedDown25 4559 (1 << 0), // TrackElemType::LeftBankedDown25ToLeftBankedFlat 4560 (1 << 0), // TrackElemType::RightBankedDown25ToRightBankedFlat 4561 (1 << 0), // TrackElemType::FlatToLeftBankedUp25 4562 (1 << 0), // TrackElemType::FlatToRightBankedUp25 4563 (1 << 0), // TrackElemType::LeftBankedUp25ToFlat 4564 (1 << 0), // TrackElemType::RightBankedUp25ToFlat 4565 (1 << 0), // TrackElemType::FlatToLeftBankedDown25 4566 (1 << 0), // TrackElemType::FlatToRightBankedDown25 4567 (1 << 0), // TrackElemType::LeftBankedDown25ToFlat 4568 (1 << 0), // TrackElemType::RightBankedDown25ToFlat 4569 (1 << 0), // TrackElemType::LeftQuarterTurn1TileUp90 4570 (1 << 0), // TrackElemType::RightQuarterTurn1TileUp90 4571 (1 << 0), // TrackElemType::LeftQuarterTurn1TileDown90 4572 (1 << 0), // TrackElemType::RightQuarterTurn1TileDown90 4573 (1 << 0) | (1 << 2), // TrackElemType::MultiDimUp90ToInvertedFlatQuarterLoop 4574 (1 << 0) | (1 << 2), // TrackElemType::MultiDimFlatToDown90QuarterLoop 4575 (1 << 0) | (1 << 2), // TrackElemType::MultiDimInvertedUp90ToFlatQuarterLoop 4576 (1 << 0), // TrackElemType::RotationControlToggle 4577 (1 << 0), // TrackElemType::FlatTrack1x4A 4578 (1 << 0), // TrackElemType::FlatTrack2x2 4579 (1 << 0), // TrackElemType::FlatTrack4x4 4580 (1 << 0), // TrackElemType::FlatTrack2x4 4581 (1 << 0), // TrackElemType::FlatTrack1x5 4582 (1 << 0), // TrackElemType::FlatTrack1x1A 4583 (1 << 0), // TrackElemType::FlatTrack1x4B 4584 (1 << 0), // TrackElemType::FlatTrack1x1B 4585 (1 << 0), // TrackElemType::FlatTrack1x4C 4586 (1 << 0), // TrackElemType::FlatTrack3x3 4587 }; 4588 4589 /** rct2: 0x00999A94 */ 4590 static constexpr uint8_t TrackSequenceElementAllowedWallEdges[TrackElemType::Count][MaxSequencesPerPiece] = { 4591 { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Flat 4592 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::EndStation 4593 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::BeginStation 4594 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::MiddleStation 4595 { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Up25 4596 { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Up60 4597 { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlatToUp25 4598 { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Up25ToUp60 4599 { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Up60ToUp25 4600 { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Up25ToFlat 4601 { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Down25 4602 { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Down60 4603 { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlatToDown25 4604 { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Down25ToDown60 4605 { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Down60ToDown25 4606 { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Down25ToFlat 4607 { 0b0010, 0b1100, 0b0011, 0, 0b1100, 0b0011, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftQuarterTurn5Tiles 4608 { 0b1000, 0b0110, 0b1001, 0, 0b0110, 0b1001, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightQuarterTurn5Tiles 4609 { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlatToLeftBank 4610 { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlatToRightBank 4611 { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftBankToFlat 4612 { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightBankToFlat 4613 { 0b0010, 0b1100, 0b0011, 0, 0b1100, 0b0011, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::BankedLeftQuarterTurn5Tiles 4614 { 0b1000, 0b0110, 0b1001, 0, 0b0110, 0b1001, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::BankedRightQuarterTurn5Tiles 4615 { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftBankToUp25 4616 { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightBankToUp25 4617 { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Up25ToLeftBank 4618 { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Up25ToRightBank 4619 { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftBankToDown25 4620 { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightBankToDown25 4621 { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Down25ToLeftBank 4622 { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Down25ToRightBank 4623 { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftBank 4624 { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightBank 4625 { 0b0010, 0b1100, 0b0011, 0, 0b1100, 0b0011, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftQuarterTurn5TilesUp25 4626 { 0b1000, 0b0110, 0b1001, 0, 0b0110, 0b1001, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightQuarterTurn5TilesUp25 4627 { 0b0010, 0b1100, 0b0011, 0, 0b1100, 0b0011, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftQuarterTurn5TilesDown25 4628 { 0b1000, 0b0110, 0b1001, 0, 0b0110, 0b1001, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightQuarterTurn5TilesDown25 4629 { 0b1010, 0b0011, 0b1100, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::SBendLeft 4630 { 0b1010, 0b1001, 0b0110, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::SBendRight 4631 { 0b0010, 0b0010, 0b0011, 0, 0, 0, 0, 0b1100, 0b1000, 0b1000, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftVerticalLoop 4632 { 0b1000, 0b1000, 0b1001, 0, 0, 0, 0, 0b0110, 0b0010, 0b0010, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightVerticalLoop 4633 { 0b0010, 0b1100, 0b0011, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftQuarterTurn3Tiles 4634 { 0b1000, 0b0110, 0b1001, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightQuarterTurn3Tiles 4635 { 0b0010, 0b1100, 0b0011, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftBankedQuarterTurn3Tiles 4636 { 0b1000, 0b0110, 0b1001, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightBankedQuarterTurn3Tiles 4637 { 0b0010, 0b1100, 0b0011, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftQuarterTurn3TilesUp25 4638 { 0b1000, 0b0110, 0b1001, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightQuarterTurn3TilesUp25 4639 { 0b0010, 0b1100, 0b0011, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftQuarterTurn3TilesDown25 4640 { 0b1000, 0b0110, 0b1001, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightQuarterTurn3TilesDown25 4641 { 0b0011, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftQuarterTurn1Tile 4642 { 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightQuarterTurn1Tile 4643 { 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftTwistDownToUp 4644 { 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightTwistDownToUp 4645 { 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftTwistUpToDown 4646 { 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightTwistUpToDown 4647 { 0b1010, 0b1010, 0b1011, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::HalfLoopUp 4648 { 0, 0b1011, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::HalfLoopDown 4649 { 0b1010, 0b0011, 0b0101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftCorkscrewUp 4650 { 0b1010, 0b1001, 0b0101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightCorkscrewUp 4651 { 0b1010, 0b0011, 0b0101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftCorkscrewDown 4652 { 0b1010, 0b1001, 0b0101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightCorkscrewDown 4653 { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlatToUp60 4654 { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Up60ToFlat 4655 { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlatToDown60 4656 { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Down60ToFlat 4657 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::TowerBase 4658 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::TowerSection 4659 { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlatCovered 4660 { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Up25Covered 4661 { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Up60Covered 4662 { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlatToUp25Covered 4663 { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Up25ToUp60Covered 4664 { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Up60ToUp25Covered 4665 { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Up25ToFlatCovered 4666 { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Down25Covered 4667 { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Down60Covered 4668 { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlatToDown25Covered 4669 { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Down25ToDown60Covered 4670 { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Down60ToDown25Covered 4671 { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Down25ToFlatCovered 4672 { 0b0010, 0b1100, 0b0011, 0, 0b1100, 0b0011, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftQuarterTurn5TilesCovered 4673 { 0b1000, 0b0110, 0b1001, 0, 0b0110, 0b1001, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightQuarterTurn5TilesCovered 4674 { 0b1010, 0b0011, 0b1100, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::SBendLeftCovered 4675 { 0b1010, 0b1001, 0b0110, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::SBendRightCovered 4676 { 0b0010, 0b1100, 0b0011, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftQuarterTurn3TilesCovered 4677 { 0b1000, 0b0110, 0b1001, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightQuarterTurn3TilesCovered 4678 { 0b0010, 0b1100, 0b0011, 0b0001, 0b0001, 0b0110, 0b1001, 0b1000, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftHalfBankedHelixUpSmall 4679 { 0b1000, 0b0110, 0b1001, 0b0001, 0b0001, 0b1100, 0b0011, 0b0010, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightHalfBankedHelixUpSmall 4680 { 0b0010, 0b1100, 0b0011, 0b0001, 0b0001, 0b0110, 0b1001, 0b1000, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftHalfBankedHelixDownSmall 4681 { 0b1000, 0b0110, 0b1001, 0b0001, 0b0001, 0b1100, 0b0011, 0b0010, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightHalfBankedHelixDownSmall 4682 { 0b0010, 0b1100, 0b0011, 0, 0b1100, 0b0011, 0b0001, 0b0001, 0b0110, 0b1001, 0, 0b0110, 0b1001, 0b1000, 0, 0 }, // TrackElemType::LeftHalfBankedHelixUpLarge 4683 { 0b1000, 0b0110, 0b1001, 0, 0b0110, 0b1001, 0b0001, 0b0001, 0b1100, 0b0011, 0, 0b1100, 0b0011, 0b0010, 0, 0 }, // TrackElemType::RightHalfBankedHelixUpLarge 4684 { 0b0010, 0b1100, 0b0011, 0, 0b1100, 0b0011, 0b0001, 0b0001, 0b0110, 0b1001, 0, 0b0110, 0b1001, 0b1000, 0, 0 }, // TrackElemType::LeftHalfBankedHelixDownLarge 4685 { 0b1000, 0b0110, 0b1001, 0, 0b0110, 0b1001, 0b0001, 0b0001, 0b1100, 0b0011, 0, 0b1100, 0b0011, 0b0010, 0, 0 }, // TrackElemType::RightHalfBankedHelixDownLarge 4686 { 0b0011, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftQuarterTurn1TileUp60 4687 { 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightQuarterTurn1TileUp60 4688 { 0b0011, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftQuarterTurn1TileDown60 4689 { 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightQuarterTurn1TileDown60 4690 { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Brakes 4691 { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Booster 4692 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::InvertedUp90ToFlatQuarterLoopAlias / Maze 4693 { 0b0010, 0b1100, 0b0011, 0, 0b1100, 0b0011, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftQuarterBankedHelixLargeUp 4694 { 0b1000, 0b0110, 0b1001, 0, 0b0110, 0b1001, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightQuarterBankedHelixLargeUp 4695 { 0b0010, 0b1100, 0b0011, 0, 0b1100, 0b0011, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftQuarterBankedHelixLargeDown 4696 { 0b1000, 0b0110, 0b1001, 0, 0b0110, 0b1001, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightQuarterBankedHelixLargeDown 4697 { 0b0010, 0b1100, 0b0011, 0, 0b1100, 0b0011, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftQuarterHelixLargeUp 4698 { 0b1000, 0b0110, 0b1001, 0, 0b0110, 0b1001, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightQuarterHelixLargeUp 4699 { 0b0010, 0b1100, 0b0011, 0, 0b1100, 0b0011, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftQuarterHelixLargeDown 4700 { 0b1000, 0b0110, 0b1001, 0, 0b0110, 0b1001, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightQuarterHelixLargeDown 4701 { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Up25LeftBanked 4702 { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Up25RightBanked 4703 { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Waterfall 4704 { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Rapids 4705 { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::OnRidePhoto 4706 { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Down25LeftBanked 4707 { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Down25RightBanked 4708 { 0b1010, 0b1010, 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Watersplash 4709 { 0b1010, 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlatToUp60LongBase 4710 { 0b1010, 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Up60ToFlatLongBase 4711 { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Whirlpool 4712 { 0b1010, 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Down60ToFlatLongBase 4713 { 0b1010, 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlatToDown60LongBase 4714 { 0b1010, 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::CableLiftHill 4715 { 0b1010, 0b1010, 0b1010, 0b1010, 0b1010, 0b1011, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::ReverseFreefallSlope 4716 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::ReverseFreefallVertical 4717 { 0b1111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Up90 4718 { 0b1111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Down90 4719 { 0b1011, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Up60ToUp90 4720 { 0b1110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Down90ToDown60 4721 { 0b1011, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Up90ToUp60 4722 { 0b1110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Down60ToDown90 4723 { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::BrakeForDrop 4724 { 0b0010, 0b0010, 0b1000, 0b0011, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftEighthToDiag 4725 { 0b1000, 0b1000, 0b0010, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightEighthToDiag 4726 { 0, 0b1000, 0b0110, 0b0010, 0b0010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftEighthToOrthogonal 4727 { 0, 0b0100, 0b1001, 0b0001, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightEighthToOrthogonal 4728 { 0b0010, 0b0010, 0b1000, 0b0011, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftEighthBankToDiag 4729 { 0b1000, 0b1000, 0b0010, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightEighthBankToDiag 4730 { 0, 0b1000, 0b0110, 0b0010, 0b0010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftEighthBankToOrthogonal 4731 { 0, 0b0100, 0b1001, 0b0001, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightEighthBankToOrthogonal 4732 { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagFlat 4733 { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagUp25 4734 { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagUp60 4735 { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagFlatToUp25 4736 { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagUp25ToUp60 4737 { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagUp60ToUp25 4738 { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagUp25ToFlat 4739 { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagDown25 4740 { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagDown60 4741 { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagFlatToDown25 4742 { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagDown25ToDown60 4743 { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagDown60ToDown25 4744 { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagDown25ToFlat 4745 { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagFlatToUp60 4746 { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagUp60ToFlat 4747 { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagFlatToDown60 4748 { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagDown60ToFlat 4749 { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagFlatToLeftBank 4750 { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagFlatToRightBank 4751 { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagLeftBankToFlat 4752 { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagRightBankToFlat 4753 { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagLeftBankToUp25 4754 { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagRightBankToUp25 4755 { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagUp25ToLeftBank 4756 { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagUp25ToRightBank 4757 { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagLeftBankToDown25 4758 { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagRightBankToDown25 4759 { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagDown25ToLeftBank 4760 { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagDown25ToRightBank 4761 { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagLeftBank 4762 { 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagRightBank 4763 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LogFlumeReverser 4764 { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::SpinningTunnel 4765 { 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftBarrelRollUpToDown 4766 { 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightBarrelRollUpToDown 4767 { 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftBarrelRollDownToUp 4768 { 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightBarrelRollDownToUp 4769 { 0b0010, 0b1100, 0b0011, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftBankToLeftQuarterTurn3TilesUp25 4770 { 0b1000, 0b0110, 0b1001, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightBankToRightQuarterTurn3TilesUp25 4771 { 0b0010, 0b1100, 0b0011, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftQuarterTurn3TilesDown25ToLeftBank 4772 { 0b1000, 0b0110, 0b1001, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightQuarterTurn3TilesDown25ToRightBank 4773 { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::PoweredLift 4774 { 0b1010, 0b1010, 0b0010, 0b0011, 0b1001, 0b1000, 0b1000, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftLargeHalfLoopUp 4775 { 0b1010, 0b1010, 0b1000, 0b1001, 0b0011, 0b0010, 0b0010, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightLargeHalfLoopUp 4776 { 0b0010, 0b0010, 0b0011, 0b1001, 0b1000, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightLargeHalfLoopDown 4777 { 0b1000, 0b1000, 0b1001, 0b0011, 0b0010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftLargeHalfLoopDown 4778 { 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftFlyerTwistUp 4779 { 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightFlyerTwistUp 4780 { 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftFlyerTwistDown 4781 { 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightFlyerTwistDown 4782 { 0b1010, 0b1010, 0b1011, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlyerHalfLoopUp 4783 { 0, 0b1011, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlyerHalfLoopDown 4784 { 0b1010, 0b0011, 0b0101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftFlyerCorkscrewUp 4785 { 0b1010, 0b1001, 0b0101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightFlyerCorkscrewUp 4786 { 0b1010, 0b0011, 0b0101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftFlyerCorkscrewDown 4787 { 0b1010, 0b1001, 0b0101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightFlyerCorkscrewDown 4788 { 0b1010, 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::HeartLineTransferUp 4789 { 0b1010, 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::HeartLineTransferDown 4790 { 0b1010, 0b1010, 0b1010, 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftHeartLineRoll 4791 { 0b1010, 0b1010, 0b1010, 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightHeartLineRoll 4792 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::MinigolfHoleA 4793 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::MinigolfHoleB 4794 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::MinigolfHoleC 4795 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::MinigolfHoleD 4796 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::MinigolfHoleE 4797 { 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::MultiDimInvertedFlatToDown90QuarterLoop 4798 { 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Up90ToInvertedFlatQuarterLoop 4799 { 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::InvertedFlatToDown90QuarterLoop 4800 { 0b0010, 0b1100, 0b0011, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftCurvedLiftHill 4801 { 0b1000, 0b0110, 0b1001, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightCurvedLiftHill 4802 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftReverser 4803 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightReverser 4804 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::AirThrustTopCap 4805 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::AirThrustVerticalDown 4806 { 0b1010, 0b1010, 0b1010, 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::AirThrustVerticalDownToLevel 4807 { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::BlockBrakes 4808 { 0b0010, 0b1100, 0b0011, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftBankedQuarterTurn3TileUp25 4809 { 0b1000, 0b0110, 0b1001, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightBankedQuarterTurn3TileUp25 4810 { 0b0010, 0b1100, 0b0011, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftBankedQuarterTurn3TileDown25 4811 { 0b1000, 0b0110, 0b1001, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightBankedQuarterTurn3TileDown25 4812 { 0b0010, 0b1100, 0b0011, 0, 0b1100, 0b0011, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftBankedQuarterTurn5TileUp25 4813 { 0b1000, 0b0110, 0b1001, 0, 0b0110, 0b1001, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightBankedQuarterTurn5TileUp25 4814 { 0b0010, 0b1100, 0b0011, 0, 0b1100, 0b0011, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftBankedQuarterTurn5TileDown25 4815 { 0b1000, 0b0110, 0b1001, 0, 0b0110, 0b1001, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightBankedQuarterTurn5TileDown25 4816 { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Up25ToLeftBankedUp25 4817 { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Up25ToRightBankedUp25 4818 { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftBankedUp25ToUp25 4819 { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightBankedUp25ToUp25 4820 { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Down25ToLeftBankedDown25 4821 { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::Down25ToRightBankedDown25 4822 { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftBankedDown25ToDown25 4823 { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightBankedDown25ToDown25 4824 { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftBankedFlatToLeftBankedUp25 4825 { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightBankedFlatToRightBankedUp25 4826 { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftBankedUp25ToLeftBankedFlat 4827 { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightBankedUp25ToRightBankedFlat 4828 { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftBankedFlatToLeftBankedDown25 4829 { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightBankedFlatToRightBankedDown25 4830 { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftBankedDown25ToLeftBankedFlat 4831 { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightBankedDown25ToRightBankedFlat 4832 { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlatToLeftBankedUp25 4833 { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlatToRightBankedUp25 4834 { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftBankedUp25ToFlat 4835 { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightBankedUp25ToFlat 4836 { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlatToLeftBankedDown25 4837 { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlatToRightBankedDown25 4838 { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftBankedDown25ToFlat 4839 { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightBankedDown25ToFlat 4840 { 0b1111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftQuarterTurn1TileUp90 4841 { 0b1111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightQuarterTurn1TileUp90 4842 { 0b1111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftQuarterTurn1TileDown90 4843 { 0b1111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightQuarterTurn1TileDown90 4844 { 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::MultiDimUp90ToInvertedFlatQuarterLoop 4845 { 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::MultiDimFlatToDown90QuarterLoop 4846 { 0b1010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::MultiDimInvertedUp90ToFlatQuarterLoop 4847 { 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RotationControlToggle 4848 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlatTrack1x4A 4849 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlatTrack2x2 4850 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlatTrack4x4 4851 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlatTrack2x4 4852 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlatTrack1x5 4853 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlatTrack1x1A 4854 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlatTrack1x4B 4855 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlatTrack1x1B 4856 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlatTrack1x4C 4857 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlatTrack3x3 4858 }; 4859 4860 /** rct2: 0x0099423C */ 4861 static constexpr uint16_t TrackFlags[TrackElemType::Count] = { 4862 /* TrackElemType::Flat */ TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, 4863 /* TrackElemType::EndStation */ 0, 4864 /* TrackElemType::BeginStation */ 0, 4865 /* TrackElemType::MiddleStation */ 0, 4866 /* TrackElemType::Up25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, 4867 /* 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, 4868 /* TrackElemType::FlatToUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, 4869 /* 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, 4870 /* 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, 4871 /* TrackElemType::Up25ToFlat */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, 4872 /* TrackElemType::Down25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, 4873 /* TrackElemType::Down60 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, 4874 /* TrackElemType::FlatToDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, 4875 /* TrackElemType::Down25ToDown60 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, 4876 /* TrackElemType::Down60ToDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, 4877 /* TrackElemType::Down25ToFlat */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, 4878 /* TrackElemType::LeftQuarterTurn5Tiles */ TRACK_ELEM_FLAG_TURN_LEFT, 4879 /* TrackElemType::RightQuarterTurn5Tiles */ TRACK_ELEM_FLAG_TURN_RIGHT, 4880 /* TrackElemType::FlatToLeftBank */ TRACK_ELEM_FLAG_BANKED, 4881 /* TrackElemType::FlatToRightBank */ TRACK_ELEM_FLAG_BANKED, 4882 /* TrackElemType::LeftBankToFlat */ TRACK_ELEM_FLAG_BANKED, 4883 /* TrackElemType::RightBankToFlat */ TRACK_ELEM_FLAG_BANKED, 4884 /* TrackElemType::BankedLeftQuarterTurn5Tiles */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_BANKED | TRACK_ELEM_FLAG_BANKED, 4885 /* TrackElemType::BankedRightQuarterTurn5Tiles */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_BANKED | TRACK_ELEM_FLAG_BANKED, 4886 /* TrackElemType::LeftBankToUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, 4887 /* TrackElemType::RightBankToUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, 4888 /* TrackElemType::Up25ToLeftBank */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, 4889 /* TrackElemType::Up25ToRightBank */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, 4890 /* TrackElemType::LeftBankToDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, 4891 /* TrackElemType::RightBankToDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, 4892 /* TrackElemType::Down25ToLeftBank */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED, 4893 /* TrackElemType::Down25ToRightBank */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED, 4894 /* TrackElemType::LeftBank */ TRACK_ELEM_FLAG_BANKED, 4895 /* TrackElemType::RightBank */ TRACK_ELEM_FLAG_BANKED, 4896 /* 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, 4897 /* 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, 4898 /* 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, 4899 /* 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, 4900 /* TrackElemType::SBendLeft */ 0, 4901 /* TrackElemType::SBendRight */ 0, 4902 /* TrackElemType::LeftVerticalLoop */ TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, 4903 /* TrackElemType::RightVerticalLoop */ TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, 4904 /* TrackElemType::LeftQuarterTurn3Tiles */ TRACK_ELEM_FLAG_TURN_LEFT, 4905 /* TrackElemType::RightQuarterTurn3Tiles */ TRACK_ELEM_FLAG_TURN_RIGHT, 4906 /* TrackElemType::LeftBankedQuarterTurn3Tiles */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_BANKED | TRACK_ELEM_FLAG_BANKED, 4907 /* TrackElemType::RightBankedQuarterTurn3Tiles */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_BANKED | TRACK_ELEM_FLAG_BANKED, 4908 /* 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, 4909 /* 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, 4910 /* 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, 4911 /* 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, 4912 /* TrackElemType::LeftQuarterTurn1Tile */ TRACK_ELEM_FLAG_TURN_LEFT, 4913 /* TrackElemType::RightQuarterTurn1Tile */ TRACK_ELEM_FLAG_TURN_RIGHT, 4914 /* TrackElemType::LeftTwistDownToUp */ TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, 4915 /* TrackElemType::RightTwistDownToUp */ TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, 4916 /* TrackElemType::LeftTwistUpToDown */ TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, 4917 /* TrackElemType::RightTwistUpToDown */ TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, 4918 /* 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, 4919 /* TrackElemType::HalfLoopDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, 4920 /* TrackElemType::LeftCorkscrewUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, 4921 /* TrackElemType::RightCorkscrewUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, 4922 /* TrackElemType::LeftCorkscrewDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, 4923 /* TrackElemType::RightCorkscrewDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, 4924 /* TrackElemType::FlatToUp60 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_IS_STEEP_UP | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, 4925 /* 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, 4926 /* TrackElemType::FlatToDown60 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, 4927 /* TrackElemType::Down60ToFlat */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, 4928 /* TrackElemType::TowerBase */ 0, 4929 /* TrackElemType::TowerSection */ 0, 4930 /* TrackElemType::FlatCovered */ 0, 4931 /* TrackElemType::Up25Covered */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, 4932 /* TrackElemType::Up60Covered */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, 4933 /* TrackElemType::FlatToUp25Covered */ TRACK_ELEM_FLAG_UP, 4934 /* TrackElemType::Up25ToUp60Covered */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, 4935 /* TrackElemType::Up60ToUp25Covered */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, 4936 /* TrackElemType::Up25ToFlatCovered */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, 4937 /* TrackElemType::Down25Covered */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, 4938 /* TrackElemType::Down60Covered */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, 4939 /* TrackElemType::FlatToDown25Covered */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, 4940 /* TrackElemType::Down25ToDown60Covered */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, 4941 /* TrackElemType::Down60ToDown25Covered */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, 4942 /* TrackElemType::Down25ToFlatCovered */ TRACK_ELEM_FLAG_DOWN, 4943 /* TrackElemType::LeftQuarterTurn5TilesCovered */ TRACK_ELEM_FLAG_TURN_LEFT, 4944 /* TrackElemType::RightQuarterTurn5TilesCovered */ TRACK_ELEM_FLAG_TURN_RIGHT, 4945 /* TrackElemType::SBendLeftCovered */ 0, 4946 /* TrackElemType::SBendRightCovered */ 0, 4947 /* TrackElemType::LeftQuarterTurn3TilesCovered */ TRACK_ELEM_FLAG_TURN_LEFT, 4948 /* TrackElemType::RightQuarterTurn3TilesCovered */ TRACK_ELEM_FLAG_TURN_RIGHT, 4949 /* TrackElemType::LeftHalfBankedHelixUpSmall */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_BANKED, 4950 /* TrackElemType::RightHalfBankedHelixUpSmall */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_BANKED, 4951 /* TrackElemType::LeftHalfBankedHelixDownSmall */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_BANKED, 4952 /* TrackElemType::RightHalfBankedHelixDownSmall */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_BANKED, 4953 /* TrackElemType::LeftHalfBankedHelixUpLarge */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_BANKED, 4954 /* TrackElemType::RightHalfBankedHelixUpLarge */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_BANKED, 4955 /* TrackElemType::LeftHalfBankedHelixDownLarge */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_BANKED, 4956 /* TrackElemType::RightHalfBankedHelixDownLarge */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_BANKED, 4957 /* TrackElemType::LeftQuarterTurn1TileUp60 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, 4958 /* TrackElemType::RightQuarterTurn1TileUp60 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, 4959 /* TrackElemType::LeftQuarterTurn1TileDown60 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, 4960 /* TrackElemType::RightQuarterTurn1TileDown60 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, 4961 /* TrackElemType::Brakes */ 0, 4962 /* TrackElemType::Booster */ 0, 4963 /* TrackElemType::InvertedUp90ToFlatQuarterLoopAlias / Maze */ TRACK_ELEM_FLAG_ONLY_ABOVE_GROUND, 4964 /* TrackElemType::LeftQuarterBankedHelixLargeUp */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_BANKED, 4965 /* TrackElemType::RightQuarterBankedHelixLargeUp */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_BANKED, 4966 /* TrackElemType::LeftQuarterBankedHelixLargeDown */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_BANKED, 4967 /* TrackElemType::RightQuarterBankedHelixLargeDown */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_HELIX | TRACK_ELEM_FLAG_BANKED, 4968 /* TrackElemType::LeftQuarterHelixLargeUp */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_HELIX, 4969 /* TrackElemType::RightQuarterHelixLargeUp */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_HELIX, 4970 /* TrackElemType::LeftQuarterHelixLargeDown */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_HELIX, 4971 /* TrackElemType::RightQuarterHelixLargeDown */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_HELIX, 4972 /* TrackElemType::Up25LeftBanked */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, 4973 /* TrackElemType::Up25RightBanked */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, 4974 /* TrackElemType::Waterfall */ 0, 4975 /* TrackElemType::Rapids */ 0, 4976 /* TrackElemType::OnRidePhoto */ 0, 4977 /* TrackElemType::Down25LeftBanked */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, 4978 /* TrackElemType::Down25RightBanked */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, 4979 /* TrackElemType::Watersplash */ 0, 4980 /* TrackElemType::FlatToUp60LongBase */ TRACK_ELEM_FLAG_UP, 4981 /* TrackElemType::Up60ToFlatLongBase */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, 4982 /* TrackElemType::Whirlpool */ 0, 4983 /* TrackElemType::Down60ToFlatLongBase */ TRACK_ELEM_FLAG_DOWN, 4984 /* TrackElemType::FlatToDown60LongBase */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, 4985 /* TrackElemType::CableLiftHill */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, 4986 /* TrackElemType::ReverseFreefallSlope */ TRACK_ELEM_FLAG_UP, 4987 /* TrackElemType::ReverseFreefallVertical */ TRACK_ELEM_FLAG_UP, 4988 /* TrackElemType::Up90 */ TRACK_ELEM_FLAG_UP, 4989 /* TrackElemType::Down90 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, 4990 /* TrackElemType::Up60ToUp90 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, 4991 /* TrackElemType::Down90ToDown60 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, 4992 /* TrackElemType::Up90ToUp60 */ TRACK_ELEM_FLAG_UP, 4993 /* TrackElemType::Down60ToDown90 */ TRACK_ELEM_FLAG_DOWN, 4994 /* TrackElemType::BrakeForDrop */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, 4995 /* TrackElemType::LeftEighthToDiag */ TRACK_ELEM_FLAG_TURN_LEFT, 4996 /* TrackElemType::RightEighthToDiag */ TRACK_ELEM_FLAG_TURN_RIGHT, 4997 /* TrackElemType::LeftEighthToOrthogonal */ TRACK_ELEM_FLAG_TURN_LEFT, 4998 /* TrackElemType::RightEighthToOrthogonal */ TRACK_ELEM_FLAG_TURN_RIGHT, 4999 /* TrackElemType::LeftEighthBankToDiag */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_BANKED | TRACK_ELEM_FLAG_BANKED, 5000 /* TrackElemType::RightEighthBankToDiag */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_BANKED | TRACK_ELEM_FLAG_BANKED, 5001 /* TrackElemType::LeftEighthBankToOrthogonal */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_BANKED | TRACK_ELEM_FLAG_BANKED, 5002 /* TrackElemType::RightEighthBankToOrthogonal */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_BANKED | TRACK_ELEM_FLAG_BANKED, 5003 /* TrackElemType::DiagFlat */ TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, 5004 /* TrackElemType::DiagUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, 5005 /* 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, 5006 /* TrackElemType::DiagFlatToUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, 5007 /* 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, 5008 /* 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, 5009 /* TrackElemType::DiagUp25ToFlat */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, 5010 /* TrackElemType::DiagDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, 5011 /* TrackElemType::DiagDown60 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, 5012 /* TrackElemType::DiagFlatToDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, 5013 /* TrackElemType::DiagDown25ToDown60 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, 5014 /* TrackElemType::DiagDown60ToDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, 5015 /* TrackElemType::DiagDown25ToFlat */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, 5016 /* TrackElemType::DiagFlatToUp60 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_IS_STEEP_UP | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, 5017 /* 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, 5018 /* TrackElemType::DiagFlatToDown60 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, 5019 /* TrackElemType::DiagDown60ToFlat */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_ALLOW_LIFT_HILL, 5020 /* TrackElemType::DiagFlatToLeftBank */ TRACK_ELEM_FLAG_BANKED, 5021 /* TrackElemType::DiagFlatToRightBank */ TRACK_ELEM_FLAG_BANKED, 5022 /* TrackElemType::DiagLeftBankToFlat */ TRACK_ELEM_FLAG_BANKED, 5023 /* TrackElemType::DiagRightBankToFlat */ TRACK_ELEM_FLAG_BANKED, 5024 /* TrackElemType::DiagLeftBankToUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, 5025 /* TrackElemType::DiagRightBankToUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, 5026 /* TrackElemType::DiagUp25ToLeftBank */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, 5027 /* TrackElemType::DiagUp25ToRightBank */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, 5028 /* TrackElemType::DiagLeftBankToDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, 5029 /* TrackElemType::DiagRightBankToDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, 5030 /* TrackElemType::DiagDown25ToLeftBank */ TRACK_ELEM_FLAG_DOWN, 5031 /* TrackElemType::DiagDown25ToRightBank */ TRACK_ELEM_FLAG_DOWN, 5032 /* TrackElemType::DiagLeftBank */ TRACK_ELEM_FLAG_BANKED, 5033 /* TrackElemType::DiagRightBank */ TRACK_ELEM_FLAG_BANKED, 5034 /* TrackElemType::LogFlumeReverser */ TRACK_ELEM_FLAG_BANKED, 5035 /* TrackElemType::SpinningTunnel */ TRACK_ELEM_FLAG_BANKED, 5036 /* TrackElemType::LeftBarrelRollUpToDown */ TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, 5037 /* TrackElemType::RightBarrelRollUpToDown */ TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, 5038 /* TrackElemType::LeftBarrelRollDownToUp */ TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, 5039 /* TrackElemType::RightBarrelRollDownToUp */ TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, 5040 /* TrackElemType::LeftBankToLeftQuarterTurn3TilesUp25 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, 5041 /* TrackElemType::RightBankToRightQuarterTurn3TilesUp25 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, 5042 /* TrackElemType::LeftQuarterTurn3TilesDown25ToLeftBank */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED, 5043 /* TrackElemType::RightQuarterTurn3TilesDown25ToRightBank */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED, 5044 /* TrackElemType::PoweredLift */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT, 5045 /* 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, 5046 /* 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, 5047 /* TrackElemType::RightLargeHalfLoopDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, 5048 /* TrackElemType::LeftLargeHalfLoopDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, 5049 /* TrackElemType::LeftFlyerTwistUp */ TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, 5050 /* TrackElemType::RightFlyerTwistUp */ TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, 5051 /* TrackElemType::LeftFlyerTwistDown */ TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, 5052 /* TrackElemType::RightFlyerTwistDown */ TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, 5053 /* 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, 5054 /* TrackElemType::FlyerHalfLoopDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, 5055 /* TrackElemType::LeftFlyerCorkscrewUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, 5056 /* TrackElemType::RightFlyerCorkscrewUp */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, 5057 /* TrackElemType::LeftFlyerCorkscrewDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, 5058 /* TrackElemType::RightFlyerCorkscrewDown */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, 5059 /* TrackElemType::HeartLineTransferUp */ 0, 5060 /* TrackElemType::HeartLineTransferDown */ 0, 5061 /* TrackElemType::LeftHeartLineRoll */ TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, 5062 /* TrackElemType::RightHeartLineRoll */ TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, 5063 /* TrackElemType::MinigolfHoleA */ TRACK_ELEM_FLAG_IS_GOLF_HOLE, 5064 /* TrackElemType::MinigolfHoleB */ TRACK_ELEM_FLAG_IS_GOLF_HOLE, 5065 /* TrackElemType::MinigolfHoleC */ TRACK_ELEM_FLAG_IS_GOLF_HOLE, 5066 /* TrackElemType::MinigolfHoleD */ TRACK_ELEM_FLAG_IS_GOLF_HOLE, 5067 /* TrackElemType::MinigolfHoleE */ TRACK_ELEM_FLAG_IS_GOLF_HOLE, 5068 /* TrackElemType::MultiDimInvertedFlatToDown90QuarterLoop */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, 5069 /* TrackElemType::Up90ToInvertedFlatQuarterLoop */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, 5070 /* TrackElemType::InvertedFlatToDown90QuarterLoop */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, 5071 /* TrackElemType::LeftCurvedLiftHill */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_UP, 5072 /* TrackElemType::RightCurvedLiftHill */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_UP, 5073 /* TrackElemType::LeftReverser */ 0, 5074 /* TrackElemType::RightReverser */ 0, 5075 /* TrackElemType::AirThrustTopCap */ 0, 5076 /* TrackElemType::AirThrustVerticalDown */ TRACK_ELEM_FLAG_DOWN, 5077 /* TrackElemType::AirThrustVerticalDownToLevel */ TRACK_ELEM_FLAG_DOWN, 5078 /* TrackElemType::BlockBrakes */ 0, 5079 /* 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, 5080 /* 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, 5081 /* 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, 5082 /* 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, 5083 /* 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, 5084 /* 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, 5085 /* 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, 5086 /* 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, 5087 /* TrackElemType::Up25ToLeftBankedUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, 5088 /* TrackElemType::Up25ToRightBankedUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, 5089 /* TrackElemType::LeftBankedUp25ToUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, 5090 /* TrackElemType::RightBankedUp25ToUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, 5091 /* TrackElemType::Down25ToLeftBankedDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, 5092 /* TrackElemType::Down25ToRightBankedDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, 5093 /* TrackElemType::LeftBankedDown25ToDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, 5094 /* TrackElemType::RightBankedDown25ToDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, 5095 /* TrackElemType::LeftBankedFlatToLeftBankedUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, 5096 /* TrackElemType::RightBankedFlatToRightBankedUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, 5097 /* TrackElemType::LeftBankedUp25ToLeftBankedFlat */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, 5098 /* TrackElemType::RightBankedUp25ToRightBankedFlat */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, 5099 /* TrackElemType::LeftBankedFlatToLeftBankedDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, 5100 /* TrackElemType::RightBankedFlatToRightBankedDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, 5101 /* TrackElemType::LeftBankedDown25ToLeftBankedFlat */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED, 5102 /* TrackElemType::RightBankedDown25ToRightBankedFlat */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED, 5103 /* TrackElemType::FlatToLeftBankedUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, 5104 /* TrackElemType::FlatToRightBankedUp25 */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_BANKED, 5105 /* TrackElemType::LeftBankedUp25ToFlat */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, 5106 /* TrackElemType::RightBankedUp25ToFlat */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, 5107 /* TrackElemType::FlatToLeftBankedDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, 5108 /* TrackElemType::FlatToRightBankedDown25 */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT | TRACK_ELEM_FLAG_BANKED, 5109 /* TrackElemType::LeftBankedDown25ToFlat */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED, 5110 /* TrackElemType::RightBankedDown25ToFlat */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_BANKED, 5111 /* TrackElemType::LeftQuarterTurn1TileUp90 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP, 5112 /* TrackElemType::RightQuarterTurn1TileUp90 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP, 5113 /* TrackElemType::LeftQuarterTurn1TileDown90 */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN, 5114 /* TrackElemType::RightQuarterTurn1TileDown90 */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN, 5115 /* TrackElemType::MultiDimUp90ToInvertedFlatQuarterLoop */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, 5116 /* TrackElemType::MultiDimFlatToDown90QuarterLoop */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, 5117 /* TrackElemType::MultiDimInvertedUp90ToFlatQuarterLoop */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, 5118 /* TrackElemType::RotationControlToggle */ 0, 5119 /* TrackElemType::FlatTrack1x4A */ 0, 5120 /* TrackElemType::FlatTrack2x2 */ 0, 5121 /* TrackElemType::FlatTrack4x4 */ 0, 5122 /* TrackElemType::FlatTrack2x4 */ TRACK_ELEM_FLAG_ONLY_ABOVE_GROUND, 5123 /* TrackElemType::FlatTrack1x5 */ 0, 5124 /* TrackElemType::FlatTrack1x1A */ 0, 5125 /* TrackElemType::FlatTrack1x4B */ 0, 5126 /* TrackElemType::FlatTrack1x1B */ 0, 5127 /* TrackElemType::FlatTrack1x4C */ 0, 5128 /* TrackElemType::FlatTrack3x3 */ 0, 5129 }; 5130 // clang-format on 5131 5132 /** rct2: 0x00997C9D */ 5133 // clang-format off 5134 static constexpr rct_trackdefinition TrackDefinitions[TrackElemType::Count] = 5135 { 5136 // TYPE VANGLE END VANGLE START BANK END BANK START PREVIEW Z OFFSET 5137 { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_FLAT 5138 { TRACK_STATION_END, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_END_STATION 5139 { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_BEGIN_STATION 5140 { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_MIDDLE_STATION 5141 { TRACK_FLAT, TRACK_SLOPE_UP_25, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_25_DEG_UP 5142 { TRACK_FLAT, TRACK_SLOPE_UP_60, TRACK_SLOPE_UP_60, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_60_DEG_UP 5143 { TRACK_FLAT, TRACK_SLOPE_UP_25, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_FLAT_TO_25_DEG_UP 5144 { 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 5145 { 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 5146 { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_25_DEG_UP_TO_FLAT 5147 { TRACK_FLAT, TRACK_SLOPE_DOWN_25, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_25_DEG_DOWN 5148 { TRACK_FLAT, TRACK_SLOPE_DOWN_60, TRACK_SLOPE_DOWN_60, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_60_DEG_DOWN 5149 { TRACK_FLAT, TRACK_SLOPE_DOWN_25, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_FLAT_TO_25_DEG_DOWN 5150 { 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 5151 { 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 5152 { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_25_DEG_DOWN_TO_FLAT 5153 { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_LEFT_QUARTER_TURN_5_TILES 5154 { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_RIGHT_QUARTER_TURN_5_TILES 5155 { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TRACK_BANK_NONE, 0 }, // ELEM_FLAT_TO_LEFT_BANK 5156 { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TRACK_BANK_NONE, 0 }, // ELEM_FLAT_TO_RIGHT_BANK 5157 { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_LEFT, 0 }, // ELEM_LEFT_BANK_TO_FLAT 5158 { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_RIGHT, 0 }, // ELEM_RIGHT_BANK_TO_FLAT 5159 { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TRACK_BANK_LEFT, 0 }, // ELEM_BANKED_LEFT_QUARTER_TURN_5_TILES 5160 { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TRACK_BANK_RIGHT, 0 }, // ELEM_BANKED_RIGHT_QUARTER_TURN_5_TILES 5161 { TRACK_FLAT, TRACK_SLOPE_UP_25, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_LEFT, 0 }, // ELEM_LEFT_BANK_TO_25_DEG_UP 5162 { TRACK_FLAT, TRACK_SLOPE_UP_25, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_RIGHT, 0 }, // ELEM_RIGHT_BANK_TO_25_DEG_UP 5163 { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_UP_25, TRACK_BANK_LEFT, TRACK_BANK_NONE, 0 }, // ELEM_25_DEG_UP_TO_LEFT_BANK 5164 { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_UP_25, TRACK_BANK_RIGHT, TRACK_BANK_NONE, 0 }, // ELEM_25_DEG_UP_TO_RIGHT_BANK 5165 { TRACK_FLAT, TRACK_SLOPE_DOWN_25, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_LEFT, 0 }, // ELEM_LEFT_BANK_TO_25_DEG_DOWN 5166 { TRACK_FLAT, TRACK_SLOPE_DOWN_25, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_RIGHT, 0 }, // ELEM_RIGHT_BANK_TO_25_DEG_DOWN 5167 { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_DOWN_25, TRACK_BANK_LEFT, TRACK_BANK_NONE, 0 }, // ELEM_25_DEG_DOWN_TO_LEFT_BANK 5168 { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_DOWN_25, TRACK_BANK_RIGHT, TRACK_BANK_NONE, 0 }, // ELEM_25_DEG_DOWN_TO_RIGHT_BANK 5169 { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TRACK_BANK_LEFT, 0 }, // ELEM_LEFT_BANK 5170 { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TRACK_BANK_RIGHT, 0 }, // ELEM_RIGHT_BANK 5171 { 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 5172 { 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 5173 { 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 5174 { 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 5175 { TRACK_S_BEND, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_S_BEND_LEFT 5176 { TRACK_S_BEND, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_S_BEND_RIGHT 5177 { TRACK_VERTICAL_LOOP, TRACK_SLOPE_DOWN_25, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TRACK_BANK_NONE, -48 }, // ELEM_LEFT_VERTICAL_LOOP 5178 { TRACK_VERTICAL_LOOP, TRACK_SLOPE_DOWN_25, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TRACK_BANK_NONE, -48 }, // ELEM_RIGHT_VERTICAL_LOOP 5179 { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_LEFT_QUARTER_TURN_3_TILES 5180 { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_RIGHT_QUARTER_TURN_3_TILES 5181 { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TRACK_BANK_LEFT, 0 }, // ELEM_LEFT_QUARTER_TURN_3_TILES_BANK 5182 { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TRACK_BANK_RIGHT, 0 }, // ELEM_RIGHT_QUARTER_TURN_3_TILES_BANK 5183 { 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 5184 { 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 5185 { 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 5186 { 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 5187 { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_LEFT_QUARTER_TURN_1_TILE 5188 { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_RIGHT_QUARTER_TURN_1_TILE 5189 { TRACK_TWIST, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_UPSIDE_DOWN, TRACK_BANK_NONE, 0 }, // ELEM_LEFT_TWIST_DOWN_TO_UP 5190 { TRACK_TWIST, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_UPSIDE_DOWN, TRACK_BANK_NONE, 0 }, // ELEM_RIGHT_TWIST_DOWN_TO_UP 5191 { TRACK_TWIST, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_UPSIDE_DOWN, 0 }, // ELEM_LEFT_TWIST_UP_TO_DOWN 5192 { TRACK_TWIST, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_UPSIDE_DOWN, 0 }, // ELEM_RIGHT_TWIST_UP_TO_DOWN 5193 { TRACK_HALF_LOOP, TRACK_SLOPE_NONE, TRACK_SLOPE_UP_25, TRACK_BANK_UPSIDE_DOWN, TRACK_BANK_NONE, 64 }, // ELEM_HALF_LOOP_UP 5194 { TRACK_HALF_LOOP, TRACK_SLOPE_DOWN_25, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_UPSIDE_DOWN, -64 }, // ELEM_HALF_LOOP_DOWN 5195 { TRACK_CORKSCREW, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_UPSIDE_DOWN, TRACK_BANK_NONE, 0 }, // ELEM_LEFT_CORKSCREW_UP 5196 { TRACK_CORKSCREW, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_UPSIDE_DOWN, TRACK_BANK_NONE, 0 }, // ELEM_RIGHT_CORKSCREW_UP 5197 { TRACK_CORKSCREW, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_UPSIDE_DOWN, -32 }, // ELEM_LEFT_CORKSCREW_DOWN 5198 { TRACK_CORKSCREW, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_UPSIDE_DOWN, -32 }, // ELEM_RIGHT_CORKSCREW_DOWN 5199 { TRACK_FLAT, TRACK_SLOPE_UP_60, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_FLAT_TO_60_DEG_UP 5200 { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_UP_60, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_60_DEG_UP_TO_FLAT 5201 { TRACK_FLAT, TRACK_SLOPE_DOWN_60, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_FLAT_TO_60_DEG_DOWN 5202 { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_DOWN_60, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_60_DEG_DOWN_TO_FLAT 5203 { TRACK_TOWER_BASE, TRACK_VANGLE_TOWER, TRACK_VANGLE_TOWER, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_TOWER_BASE 5204 { TRACK_TOWER_BASE, TRACK_VANGLE_TOWER, TRACK_VANGLE_TOWER, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_TOWER_SECTION 5205 { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_FLAT_COVERED 5206 { TRACK_FLAT, TRACK_SLOPE_UP_25, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_25_DEG_UP_COVERED 5207 { TRACK_FLAT, TRACK_SLOPE_UP_60, TRACK_SLOPE_UP_60, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_60_DEG_UP_COVERED 5208 { TRACK_FLAT, TRACK_SLOPE_UP_25, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_FLAT_TO_25_DEG_UP_COVERED 5209 { 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 5210 { 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 5211 { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_25_DEG_UP_TO_FLAT_COVERED 5212 { TRACK_FLAT, TRACK_SLOPE_DOWN_25, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_25_DEG_DOWN_COVERED 5213 { TRACK_FLAT, TRACK_SLOPE_DOWN_60, TRACK_SLOPE_DOWN_60, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_60_DEG_DOWN_COVERED 5214 { TRACK_FLAT, TRACK_SLOPE_DOWN_25, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_FLAT_TO_25_DEG_DOWN_COVERED 5215 { 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 5216 { 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 5217 { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_25_DEG_DOWN_TO_FLAT_COVERED 5218 { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_LEFT_QUARTER_TURN_5_TILES_COVERED 5219 { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_RIGHT_QUARTER_TURN_5_TILES_COVERED 5220 { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_S_BEND_LEFT_COVERED 5221 { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_S_BEND_RIGHT_COVERED 5222 { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_LEFT_QUARTER_TURN_3_TILES_COVERED 5223 { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_RIGHT_QUARTER_TURN_3_TILES_COVERED 5224 { TRACK_HELIX_SMALL, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TRACK_BANK_LEFT, 0 }, // ELEM_LEFT_HALF_BANKED_HELIX_UP_SMALL 5225 { TRACK_HELIX_SMALL, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TRACK_BANK_RIGHT, 0 }, // ELEM_RIGHT_HALF_BANKED_HELIX_UP_SMALL 5226 { TRACK_HELIX_SMALL, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TRACK_BANK_LEFT, 0 }, // ELEM_LEFT_HALF_BANKED_HELIX_DOWN_SMALL 5227 { TRACK_HELIX_SMALL, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TRACK_BANK_RIGHT, 0 }, // ELEM_RIGHT_HALF_BANKED_HELIX_DOWN_SMALL 5228 { TRACK_HELIX_SMALL, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TRACK_BANK_LEFT, 0 }, // ELEM_LEFT_HALF_BANKED_HELIX_UP_LARGE 5229 { TRACK_HELIX_SMALL, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TRACK_BANK_RIGHT, 0 }, // ELEM_RIGHT_HALF_BANKED_HELIX_UP_LARGE 5230 { TRACK_HELIX_SMALL, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TRACK_BANK_LEFT, 0 }, // ELEM_LEFT_HALF_BANKED_HELIX_DOWN_LARGE 5231 { TRACK_HELIX_SMALL, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TRACK_BANK_RIGHT, 0 }, // ELEM_RIGHT_HALF_BANKED_HELIX_DOWN_LARGE 5232 { 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 5233 { 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 5234 { 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 5235 { 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 5236 { TRACK_BRAKES, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_BRAKES 5237 { TRACK_BOOSTER, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_BOOSTER 5238 { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_INVERTED_90_DEG_UP_TO_FLAT_QUARTER_LOOP 5239 { TRACK_HELIX_LARGE, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TRACK_BANK_LEFT, 0 }, // ELEM_LEFT_QUARTER_BANKED_HELIX_LARGE_UP 5240 { TRACK_HELIX_LARGE, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TRACK_BANK_RIGHT, 0 }, // ELEM_RIGHT_QUARTER_BANKED_HELIX_LARGE_UP 5241 { TRACK_HELIX_LARGE, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TRACK_BANK_LEFT, 0 }, // ELEM_LEFT_QUARTER_BANKED_HELIX_LARGE_DOWN 5242 { TRACK_HELIX_LARGE, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TRACK_BANK_RIGHT, 0 }, // ELEM_RIGHT_QUARTER_BANKED_HELIX_LARGE_DOWN 5243 { TRACK_HELIX_LARGE_UNBANKED, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_LEFT_QUARTER_HELIX_LARGE_UP 5244 { TRACK_HELIX_LARGE_UNBANKED, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_RIGHT_QUARTER_HELIX_LARGE_UP 5245 { TRACK_HELIX_LARGE_UNBANKED, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_LEFT_QUARTER_HELIX_LARGE_DOWN 5246 { TRACK_HELIX_LARGE_UNBANKED, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_RIGHT_QUARTER_HELIX_LARGE_DOWN 5247 { TRACK_FLAT, TRACK_SLOPE_UP_25, TRACK_SLOPE_UP_25, TRACK_BANK_LEFT, TRACK_BANK_LEFT, 0 }, // ELEM_25_DEG_UP_LEFT_BANKED 5248 { TRACK_FLAT, TRACK_SLOPE_UP_25, TRACK_SLOPE_UP_25, TRACK_BANK_RIGHT, TRACK_BANK_RIGHT, 0 }, // ELEM_25_DEG_UP_RIGHT_BANKED 5249 { TRACK_WATERFALL, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_WATERFALL 5250 { TRACK_RAPIDS, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_RAPIDS 5251 { TRACK_ON_RIDE_PHOTO, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_ON_RIDE_PHOTO 5252 { TRACK_FLAT, TRACK_SLOPE_DOWN_25, TRACK_SLOPE_DOWN_25, TRACK_BANK_LEFT, TRACK_BANK_LEFT, 0 }, // ELEM_25_DEG_DOWN_LEFT_BANKED 5253 { TRACK_FLAT, TRACK_SLOPE_DOWN_25, TRACK_SLOPE_DOWN_25, TRACK_BANK_RIGHT, TRACK_BANK_RIGHT, 0 }, // ELEM_25_DEG_DOWN_RIGHT_BANKED 5254 { TRACK_WATER_SPLASH, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_WATER_SPLASH 5255 { TRACK_FLAT, TRACK_SLOPE_UP_60, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_FLAT_TO_60_DEG_UP_LONG_BASE 5256 { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_UP_60, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_60_DEG_UP_TO_FLAT_LONG_BASE 5257 { TRACK_WHIRLPOOL, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_WHIRLPOOL 5258 { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_DOWN_60, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_FLAT_TO_60_DEG_DOWN_LONG_BASE 5259 { 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 5260 { TRACK_LIFT_HILL_CABLE, TRACK_SLOPE_DOWN_60, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_CABLE_LIFT_HILL 5261 { TRACK_REVERSE_FREEFALL, TRACK_VANGLE_REVERSE_FREEFALL, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_REVERSE_FREEFALL_SLOPE 5262 { TRACK_REVERSE_FREEFALL, TRACK_VANGLE_REVERSE_FREEFALL, TRACK_VANGLE_REVERSE_FREEFALL, TRACK_BANK_NONE,TRACK_BANK_NONE, 0 }, // ELEM_REVERSE_FREEFALL_VERTICAL 5263 { TRACK_FLAT, TRACK_SLOPE_UP_90, TRACK_SLOPE_UP_90, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_90_DEG_UP 5264 { TRACK_FLAT, TRACK_SLOPE_DOWN_90, TRACK_SLOPE_DOWN_90, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_90_DEG_DOWN 5265 { 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 5266 { 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 5267 { 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 5268 { 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 5269 { TRACK_BRAKE_FOR_DROP, TRACK_SLOPE_DOWN_60, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_BRAKE_FOR_DROP 5270 { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_LEFT_EIGHTH_TO_DIAG 5271 { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_RIGHT_EIGHTH_TO_DIAG 5272 { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_LEFT_EIGHTH_TO_ORTHOGONAL 5273 { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_RIGHT_EIGHTH_TO_ORTHOGONAL 5274 { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TRACK_BANK_LEFT, 0 }, // ELEM_LEFT_EIGHTH_BANK_TO_DIAG 5275 { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TRACK_BANK_RIGHT, 0 }, // ELEM_RIGHT_EIGHTH_BANK_TO_DIAG 5276 { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TRACK_BANK_LEFT, 0 }, // ELEM_LEFT_EIGHTH_BANK_TO_ORTHOGONAL 5277 { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TRACK_BANK_RIGHT, 0 }, // ELEM_RIGHT_EIGHTH_BANK_TO_ORTHOGONAL 5278 { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_DIAG_FLAT 5279 { TRACK_FLAT, TRACK_SLOPE_UP_25, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_DIAG_25_DEG_UP 5280 { TRACK_FLAT, TRACK_SLOPE_UP_60, TRACK_SLOPE_UP_60, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_DIAG_60_DEG_UP 5281 { TRACK_FLAT, TRACK_SLOPE_UP_25, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_DIAG_FLAT_TO_25_DEG_UP 5282 { 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 5283 { 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 5284 { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_DIAG_25_DEG_UP_TO_FLAT 5285 { TRACK_FLAT, TRACK_SLOPE_DOWN_25, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_DIAG_25_DEG_DOWN 5286 { TRACK_FLAT, TRACK_SLOPE_DOWN_60, TRACK_SLOPE_DOWN_60, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_DIAG_60_DEG_DOWN 5287 { TRACK_FLAT, TRACK_SLOPE_DOWN_25, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_DIAG_FLAT_TO_25_DEG_DOWN 5288 { 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 5289 { 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 5290 { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_DIAG_25_DEG_DOWN_TO_FLAT 5291 { TRACK_FLAT, TRACK_SLOPE_UP_60, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_DIAG_FLAT_TO_60_DEG_UP 5292 { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_UP_60, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_DIAG_60_DEG_UP_TO_FLAT 5293 { TRACK_FLAT, TRACK_SLOPE_DOWN_60, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_DIAG_FLAT_TO_60_DEG_DOWN 5294 { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_DOWN_60, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_DIAG_60_DEG_DOWN_TO_FLAT 5295 { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TRACK_BANK_NONE, 0 }, // ELEM_DIAG_FLAT_TO_LEFT_BANK 5296 { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TRACK_BANK_NONE, 0 }, // ELEM_DIAG_FLAT_TO_RIGHT_BANK 5297 { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_LEFT, 0 }, // ELEM_DIAG_LEFT_BANK_TO_FLAT 5298 { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_RIGHT, 0 }, // ELEM_DIAG_RIGHT_BANK_TO_FLAT 5299 { TRACK_FLAT, TRACK_SLOPE_UP_25, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_LEFT, 0 }, // ELEM_DIAG_LEFT_BANK_TO_25_DEG_UP 5300 { TRACK_FLAT, TRACK_SLOPE_UP_25, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_RIGHT, 0 }, // ELEM_DIAG_RIGHT_BANK_TO_25_DEG_UP 5301 { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_UP_25, TRACK_BANK_LEFT, TRACK_BANK_NONE, 0 }, // ELEM_DIAG_25_DEG_UP_TO_LEFT_BANK 5302 { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_UP_25, TRACK_BANK_RIGHT, TRACK_BANK_NONE, 0 }, // ELEM_DIAG_25_DEG_UP_TO_RIGHT_BANK 5303 { TRACK_FLAT, TRACK_SLOPE_DOWN_25, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_LEFT, 0 }, // ELEM_DIAG_LEFT_BANK_TO_25_DEG_DOWN 5304 { TRACK_FLAT, TRACK_SLOPE_DOWN_25, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_RIGHT, 0 }, // ELEM_DIAG_RIGHT_BANK_TO_25_DEG_DOWN 5305 { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_DOWN_25, TRACK_BANK_LEFT, TRACK_BANK_NONE, 0 }, // ELEM_DIAG_25_DEG_DOWN_TO_LEFT_BANK 5306 { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_DOWN_25, TRACK_BANK_RIGHT, TRACK_BANK_NONE, 0 }, // ELEM_DIAG_25_DEG_DOWN_TO_RIGHT_BANK 5307 { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TRACK_BANK_LEFT, 0 }, // ELEM_DIAG_LEFT_BANK 5308 { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TRACK_BANK_RIGHT, 0 }, // ELEM_DIAG_RIGHT_BANK 5309 { TRACK_LOG_FLUME_REVERSER, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_LOG_FLUME_REVERSER 5310 { TRACK_SPINNING_TUNNEL, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_SPINNING_TUNNEL 5311 { TRACK_BARREL_ROLL, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_UPSIDE_DOWN, TRACK_BANK_NONE, 0 }, // ELEM_LEFT_BARREL_ROLL_UP_TO_DOWN 5312 { TRACK_BARREL_ROLL, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_UPSIDE_DOWN, TRACK_BANK_NONE, 0 }, // ELEM_RIGHT_BARREL_ROLL_UP_TO_DOWN 5313 { TRACK_BARREL_ROLL, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_UPSIDE_DOWN, 0 }, // ELEM_LEFT_BARREL_ROLL_DOWN_TO_UP 5314 { TRACK_BARREL_ROLL, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_UPSIDE_DOWN, 0 }, // ELEM_RIGHT_BARREL_ROLL_DOWN_TO_UP 5315 { 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 5316 { 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 5317 { 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 5318 { 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 5319 { TRACK_POWERED_LIFT, TRACK_SLOPE_UP_25, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_POWERED_LIFT 5320 {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 5321 {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 5322 {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 5323 {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 5324 {TRACK_INLINE_TWIST_UNINVERTED, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_UPSIDE_DOWN, TRACK_BANK_NONE, 0 }, // ELEM_LEFT_FLYER_TWIST_UP 5325 {TRACK_INLINE_TWIST_UNINVERTED, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_UPSIDE_DOWN, TRACK_BANK_NONE, 0 }, // ELEM_RIGHT_FLYER_TWIST_UP 5326 {TRACK_INLINE_TWIST_INVERTED, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_UPSIDE_DOWN, TRACK_BANK_NONE, 0 }, // ELEM_LEFT_FLYER_TWIST_DOWN 5327 {TRACK_INLINE_TWIST_INVERTED, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_UPSIDE_DOWN, TRACK_BANK_NONE, 0 }, // ELEM_RIGHT_FLYER_TWIST_DOWN 5328 {TRACK_HALF_LOOP_UNINVERTED, TRACK_SLOPE_NONE, TRACK_SLOPE_UP_25, TRACK_BANK_UPSIDE_DOWN, TRACK_BANK_NONE, 64 }, // ELEM_FLYER_HALF_LOOP_UP 5329 {TRACK_HALF_LOOP_INVERTED, TRACK_SLOPE_DOWN_25, TRACK_SLOPE_NONE, TRACK_BANK_UPSIDE_DOWN, TRACK_BANK_NONE, -64 }, // ELEM_FLYER_HALF_LOOP_DOWN 5330 {TRACK_CORKSCREW_UNINVERTED, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_UPSIDE_DOWN, TRACK_BANK_NONE, 0 }, // ELEM_LEFT_FLYER_CORKSCREW_UP 5331 {TRACK_CORKSCREW_UNINVERTED, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_UPSIDE_DOWN, TRACK_BANK_NONE, 0 }, // ELEM_RIGHT_FLYER_CORKSCREW_UP 5332 {TRACK_CORKSCREW_INVERTED, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_UPSIDE_DOWN, TRACK_BANK_NONE, -32 }, // ELEM_LEFT_FLYER_CORKSCREW_DOWN 5333 {TRACK_CORKSCREW_INVERTED, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_UPSIDE_DOWN, TRACK_BANK_NONE, -32 }, // ELEM_RIGHT_FLYER_CORKSCREW_DOWN 5334 {TRACK_HEARTLINE_TRANSFER, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_HEARTLINE_TRANSFER_UP 5335 {TRACK_HEARTLINE_TRANSFER, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_HEARTLINE_TRANSFER_DOWN 5336 {TRACK_HEARTLINE_ROLL, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_LEFT_HEARTLINE_ROLL 5337 {TRACK_HEARTLINE_ROLL, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_RIGHT_HEARTLINE_ROLL 5338 {TRACK_MINI_GOLF_HOLE, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_MINI_GOLF_HOLE_A 5339 {TRACK_MINI_GOLF_HOLE, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_MINI_GOLF_HOLE_B 5340 {TRACK_MINI_GOLF_HOLE, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_MINI_GOLF_HOLE_C 5341 {TRACK_MINI_GOLF_HOLE, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_MINI_GOLF_HOLE_D 5342 {TRACK_MINI_GOLF_HOLE, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_MINI_GOLF_HOLE_E 5343 {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 5344 {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 5345 {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 5346 { TRACK_LIFT_HILL_CURVED, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_LEFT_CURVED_LIFT_HILL 5347 { TRACK_LIFT_HILL_CURVED, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_RIGHT_CURVED_LIFT_HILL 5348 { TRACK_REVERSER, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_LEFT_REVERSER 5349 { TRACK_REVERSER, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_RIGHT_REVERSER 5350 { TRACK_SLOPE_TO_FLAT, TRACK_SLOPE_DOWN_90, TRACK_SLOPE_UP_90, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_AIR_THRUST_TOP_CAP 5351 { TRACK_SLOPE_TO_FLAT, TRACK_SLOPE_DOWN_90, TRACK_SLOPE_DOWN_90, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_AIR_THRUST_VERTICAL_DOWN 5352 { 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 5353 { TRACK_BLOCK_BRAKES, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_BLOCK_BRAKES 5354 { 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 5355 { 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 5356 { 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 5357 { 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 5358 { 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 5359 { 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 5360 { 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 5361 { 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 5362 { 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 5363 { 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 5364 { 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 5365 { 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 5366 { 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 5367 { 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 5368 { 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 5369 { 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 5370 { 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 5371 { 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 5372 { 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 5373 { 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 5374 { 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 5375 { 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 5376 { 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 5377 { 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 5378 { TRACK_FLAT, TRACK_SLOPE_UP_25, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TRACK_BANK_NONE, 0 }, // ELEM_FLAT_TO_LEFT_BANKED_25_DEG_UP 5379 { TRACK_FLAT, TRACK_SLOPE_UP_25, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TRACK_BANK_NONE, 0 }, // ELEM_FLAT_TO_RIGHT_BANKED_25_DEG_UP 5380 { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TRACK_BANK_LEFT, 0 }, // ELEM_LEFT_BANKED_25_DEG_UP_TO_FLAT 5381 { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TRACK_BANK_RIGHT, 0 }, // ELEM_RIGHT_BANKED_25_DEG_UP_TO_FLAT 5382 { TRACK_FLAT, TRACK_SLOPE_DOWN_25, TRACK_SLOPE_NONE, TRACK_BANK_LEFT, TRACK_BANK_NONE, 0 }, // ELEM_FLAT_TO_LEFT_BANKED_25_DEG_DOWN 5383 { TRACK_FLAT, TRACK_SLOPE_DOWN_25, TRACK_SLOPE_NONE, TRACK_BANK_RIGHT, TRACK_BANK_NONE, 0 }, // ELEM_FLAT_TO_RIGHT_BANKED_25_DEG_DOWN 5384 { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TRACK_BANK_LEFT, 0 }, // ELEM_LEFT_BANKED_25_DEG_DOWN_TO_FLAT 5385 { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TRACK_BANK_RIGHT, 0 }, // ELEM_RIGHT_BANKED_25_DEG_DOWN_TO_FLAT 5386 { 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 5387 { 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 5388 { 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 5389 { 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 5390 { 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 5391 { 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 5392 { TRACK_QUARTER_LOOP_INVERTED, TRACK_SLOPE_NONE, TRACK_SLOPE_UP_90, TRACK_BANK_UPSIDE_DOWN, TRACK_BANK_NONE, 0 }, // 255 5393 { TRACK_ROTATION_CONTROL_TOGGLE,TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // ELEM_ROTATION_CONTROL_TOGGLE 5394 { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // TrackElemType::FlatTrack1x4A 5395 { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // TrackElemType::FlatTrack2x2 5396 { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // TrackElemType::FlatTrack4x4 5397 { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // TrackElemType::FlatTrack2x4 5398 { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // TrackElemType::FlatTrack1x5 5399 { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // TrackElemType::FlatTrack1x1A 5400 { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // TrackElemType::FlatTrack1x4B 5401 { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // TrackElemType::FlatTrack1x1B 5402 { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, -40 }, // TrackElemType::FlatTrack1x4C 5403 { TRACK_FLAT, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // TrackElemType::FlatTrack3x3 5404 }; 5405 // clang-format on 5406 5407 constexpr static uint8_t TrackTypeToSpinFunction[TrackElemType::Count] = { 5408 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, 5409 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, 5410 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, 5411 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, 5412 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, 5413 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, 5414 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, 5415 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, 5416 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, 5417 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, 5418 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, 5419 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, 5420 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, 5421 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, 5422 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, 5423 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, 5424 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, 5425 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, 5426 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, 5427 NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN 5428 }; 5429 5430 namespace OpenRCT2 5431 { 5432 namespace TrackMetaData 5433 { 5434 static std::vector<TrackElementDescriptor> _trackElementDescriptors; Init()5435 void Init() 5436 { 5437 _trackElementDescriptors.clear(); 5438 _trackElementDescriptors.reserve(TrackElemType::Count); 5439 5440 TrackElementDescriptor desc; 5441 for (int i = 0; i < TrackElemType::Count; i++) 5442 { 5443 desc.AlternativeType = AlternativeTrackTypes[i]; 5444 desc.Block = const_cast<rct_preview_track*>(TrackBlocks[i]); 5445 desc.Coordinates = TrackCoordinates[i]; 5446 desc.CurveChain = gTrackCurveChain[i]; 5447 desc.Flags = TrackFlags[i]; 5448 desc.HeightMarkerPositions = TrackHeightMarkerPositions[i]; 5449 desc.MirrorElement = TrackElementMirrorMap[i]; 5450 desc.PieceLength = TrackPieceLengths[i]; 5451 desc.Price = TrackPricing[i]; 5452 desc.Definition = TrackDefinitions[i]; 5453 desc.SpinFunction = TrackTypeToSpinFunction[i]; 5454 5455 for (uint8_t j = 0; j < MaxSequencesPerPiece; j++) 5456 { 5457 desc.SequenceElementAllowedWallEdges[j] = TrackSequenceElementAllowedWallEdges[i][j]; 5458 desc.SequenceProperties[j] = TrackSequenceProperties[i][j]; 5459 } 5460 _trackElementDescriptors.push_back(desc); 5461 } 5462 } GetTrackElementDescriptor(const uint32_t type)5463 const TrackElementDescriptor& GetTrackElementDescriptor(const uint32_t type) 5464 { 5465 return _trackElementDescriptors[type]; 5466 } 5467 } // namespace TrackMetaData 5468 } // namespace OpenRCT2 5469