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