Skip to content
Margen67 edited this page Sep 18, 2021 · 6 revisions

Data about track pieces lives in a few places in RCT2.

First, there is the ordering of track pieces, which is used everywhere in the game; you might see a comparison to 72h to check if a track piece is an on-ride photo for example. Here is the list. The first two digits are the hex numbers corresponding to the order.

Hex Description
00 flat
01 end station
02 begin station
03 middle station
04 25° ▲
05 60° ▲
06 flat to 25° ▲
07 25° ▲ to 60° ▲
08 60° ▲ to 25° ▲
09 25° ▲ to flat
0A 25° ▼
0B 60° ▼
0C flat to 25° ▼
0D 25° ▼ to 60° ▼
0E 60° ▼ to 25° ▼
0F 25° ▼ to flat
10 L ¼ D5
11 R ¼ D5
12 flat to L bank
13 flat to R bank
14 L bank to flat
15 R bank to flat
16 L ¼ D5 bank
17 R ¼ D5 bank
18 L bank to 25° ▲
19 R bank to 25° ▲
1A 25° ▲ to L bank
1B 25° ▲ to R bank
1C L bank to 25° ▼
1D R bank to 25° ▼
1E 25° ▼ to L bank
1F 25° ▼ to R bank
20 L bank
21 R bank
22 L ¼ D5 25° ▲
23 R ¼ D5 25° ▲
24 L ¼ D5 25° ▼
25 R ¼ D5 25° ▼
26 L "S" bend
27 R "S" bend
28 L vertical loop
29 R vertical loop
2A L ¼ D3
2B R ¼ D3
2C L ¼ D3 bank
2D R ¼ D3 bank
2E L ¼ D3 25° ▲
2F R ¼ D3 25° ▲
30 L ¼ D3 25° ▼
31 R ¼ D3 25° ▼
32 L ¼ D1
33 R ¼ D1
34 L twist ▼ to ▲
35 R twist ▼ to ▲
36 L twist ▲ to ▼
37 R twist ▲ to ▼
38 ½ loop ▲
39 ½ loop ▼
3A L corkscrew ▲
3B R corkscrew ▲
3C L corkscrew ▼
3D R corkscrew ▼
3E flat to 60° ▲
3F 60° ▲ to flat
40 flat to 60° ▼
41 60° ▼ to flat
42 tower base
43 tower section
44 flat covered
45 25° ▲ covered
46 60° ▲ covered
47 flat to 25° ▲ covered
48 25° ▲ to 60° ▲ covered
49 60° ▲ to 25° ▲ covered
4A 25° ▲ to flat covered
4B 25° ▼ covered
4C 60° ▼ covered
4D flat to 25° ▼ covered
4E 25° ▼ to 60° ▼ covered
4F 60° ▼ to 25° ▼ covered
50 25° ▼ to flat covered
51 L ¼ D5 covered
52 R ¼ D5 covered
53 L "S" bend covered
54 R "S" bend covered
55 L ¼ D3 covered
56 R ¼ D3 covered
57 L ½ banked helix ▲ small
58 R ½ banked helix ▲ small
59 L ½ banked helix ▼ small
5A R ½ banked helix ▼ small
5B L ½ banked helix ▲ large
5C R ½ banked helix ▲ large
5D L ½ banked helix ▼ large
5E R ½ banked helix ▼ large
5F L ¼ D1 60° ▲
60 R ¼ D1 60° ▲
61 L ¼ D1 60° ▼
62 R ¼ D1 60° ▼
63 brakes
64 booster RCT2: Rotation control toggle (Spinning Wild Mouse)
65 {reserved}RCT2: inverted 90° ▲ to flat quarter loop (multidim)
66 L ¼ banked helix large▲
67 R ¼ banked helix large▲
68 L ¼ banked helix large▼
69 R ¼ banked helix large▼
6A L ¼ helix large▲
6B R ¼ helix large▲
6C L ¼ helix large▼
6D R ¼ helix large▼
6E {ride base: 2 X 2} RCT2: 25° ▲ L banked
6F {ride base: 4 X 4} RCT2: 25° ▲ R banked
70 waterfall
71 rapids
72 on ride photo
73 {reserved}RCT2: 25° ▼ L banked
74 {ride base: 1 X 5}RCT2: 25° ▼ R banked
75 watersplash
76 {shop/stall} RCT2: flat to 60° ▲ - long base
77 {ride base: 1 X 2} RCT2: 60° ▲ to flat - long base
78 whirlpool
79 {info kiosk}RCT2: 60° ▼ to flat - long base
7A {ride base: 1 X 4}RCT2: flat to 60° ▼ - long base
7B {ride base: 3 X 3}RCT2: Cable Lift Hill
7C reverse whoa belly slope
7D reverse whoa belly vertical
7E 90° ▲
7F 90° ▼
80 60° ▲ to 90° ▲
81 90° ▼ to 60° ▼
82 90° ▲ to 60° ▲
83 60° ▼ to 90° ▼
84 brake for drop
85 L 1/8 OTD
86 R 1/8 OTD
87 L 1/8 DTO
88 R 1/8 DTO
89 L 1/8 bank OTD
8A R 1/8 bank OTD
8B L 1/8 bank DTO
8C R 1/8 bank DTO
8D Diag flat
8E Diag 25° ▲
8F Diag 60° ▲
90 Diag flat to 25° ▲
91 Diag 25° ▲ to 60° ▲
92 Diag 60° ▲ to 25° ▲
93 Diag 25° ▲ to flat
94 Diag 25° ▼
95 Diag60° ▼
96 Diag flat to 25° ▼
97 Diag 25° ▼ to 60° ▼
98 Diag 60° ▼ to 25° ▼
99 Diag 25° ▼ to flat
9A Diag flat to 60° ▲
9B Diag 60° ▲ to flat
9C Diag flat to 60° ▼
9D Diag 60° ▼ to flat
9E Diag flat to L bank
9F Diag flat to R bank
A0 Diag L bank to flat
A1 Diag R bank to flat
A2 Diag L bank to 25° ▲
A3 Diag R bank to 25° ▲
A4 Diag 25° ▲ to L bank
A5 Diag 25° ▲ to R bank
A6 Diag L bank to 25° ▼
A7 Diag R bank to 25° ▼
A8 Diag 25° ▼ to L bank
A9 Diag 25° ▼ to R bank
AA Diag L bank
AB Diag R bank
AC Log flume reverser
AD spinning tunnel
AE L barrel roll ▲ to ▼
AF R barrel roll ▲ to ▼
B0 L barrel roll ▼ to ▲
B1 R barrel roll ▼ to ▲
B2 L bank to L ¼ D3 25° ▲
B3 R bank to R ¼ D3 25° ▲
B4 L ¼ D3 25° ▼ to L bank
B5 R ¼ D3 25° ▼ to R bank
B6 powered lift
B7 L large ½ loop ▲
B8 R large ½ loop ▲
B9 R large ½ loop ▼
BA L large ½ loop ▼
BB L flyer twist ▲ to ▼
BC R flyer twist ▲ to ▼
BD L flyer twist ▼ to ▲
BE R flyer twist ▼ to ▲
BF flyer ½ loop ▲
C0 flyer ½ loop ▼
C1 L fly corkscrw ▲ to ▼
C2 R fly corkscrw ▲ to ▼
C3 L fly corkscrw ▼ to ▲
C4 R fly corkscrew ▼ to ▲
C5 heartline transfer up
C6 heartline transfer down
C7 L heartline roll
C8 R heartline roll
C9 mini golf hole A
CA mini golf hole B
CB mini golf hole C
CC mini golf hole D
CD RCT2: mini golf hole E
CE RCT2: inverted flat to 90° ▼ quarter loop (multidim)
CF RCT2: Quarter loop 90° ▲ to invert
D0 RCT2: Quarter loop invert to 90° ▼
D1 RCT2: L curved lift hill
D2 RCT2: R curved lift hill
D3 L reverser
D4 R reverser
D5 Air Thrust top cap
D6 Air Thrust Vertical down
D7 Air Thrust vertical down to level
D8 Block Brakes
D9 L ¼ D3 25° ▲ banked
DA R ¼ D3 25° ▲ banked
DB L ¼ D3 25° ▼ banked
DC R ¼ D3 25° ▼ banked
DD L ¼ D5 25° ▲ banked
DE R ¼ D5 25° ▲ banked
DF L ¼ D5 25° ▼ banked
E0 R ¼ D5 25° ▼ banked
E1 25° ▲ to L bank 25° ▲
E2 25° ▲ to R bank 25° ▲
E3 L bank 25° ▲ to 25° ▲
E4 R bank 25° ▲ to 25° ▲
E5 25° ▼ to L bank 25° ▼
E6 25° ▼ to R bank 25° ▼
E7 L bank 25° ▼ to 25° ▼
E8 R bank 25° ▼ to 25° ▼
E9 L bank to L bank 25° ▲
EA R bank to R bank 25° ▲
EB L bank 25° ▲ to L bank flat
EC R bank 25° ▲ to R bank flat
ED L bank to L bank 25° ▼
EE R bank to R bank 25° ▼
EF L bank 25° ▼ to L bank flat
F0 R bank 25° ▼ to R bank flat
F1 flat to L bank 25° ▲
F2 flat to R bank 25° ▲
F3 L bank 25° ▲ to flat
F4 R bank 25° ▲ to flat
F5 flat to L bank 25° ▼
F6 flat to R bank 25° ▼
F7 L bank 25° ▼ to flat
F8 R bank 25° ▼ to flat
F9 L ¼ D1 90° ▲
FA R ¼ D1 90° ▲
FB L ¼ D1 90° ▼
FC R ¼ D1 90° ▼
FD 90° ▲ to inverted flat quarter loop (multidim)
FE flat to 90° ▼ quarter loop (multidim)
FF END OF TRACK

More data about each track piece lives in a few different places in the game. First, starting at 0x997C9D series of 8 byte structs containing information about the starting and ending slope of track pieces, and the starting and ending bank of track pieces. For each of those 8 byte structs, here's some more information about what these pieces mean. For example, if you see the decimal value 18 in the first column, this means the track piece is a half loop.

byte 0
Decimal Description
2 end station
7 vertical loop
13 s bend
17 twist
18 half loop
19 corkscrew
20 tower base
21 small helix
22 large helix
23 unbanked large helix
24 brakes
26 on ride photo
27 water splash
29 barrel roll
30 powered lift
31 half loop
33 log flume reverser
36 whoa belly
43 lift hill
46 spinning tunnel
47 rotation control toggle
52 rapids (rct2 only)
152 waterfall/whirlpool
172 brake for drop

byte 1

Decimal Description
2 ends at 25 degree up
4 ends at 60 degree up
6 ends at 25 degree down
8 ends at 60 degree down
10 90 degree up (tower, whoa belly)
18 90 degree down
byte 2
Decimal Description
2 starts at 25 degree up
4 starts at 60 degree up
6 starts at 25 degree down
8 starts at 60 degree down
10 90 degree up (also tower, whoa belly)
18 90 degree down
byte 3
Decimal Description
2 ends with left bank
4 ends with right bank
15 ends upside down
byte 4
Decimal Description
2 starts with L bank
4 starts with R bank
15 starts upside down
byte 5
Decimal Description
64 half loop up
192 half loop down
208 something relating to vertical loops. same for both L and R
224 corkscrew down

Height/Direction Change Data

Data about the height and direction change of track pieces is stored in 11-byte structs, beginning at 0x994e34. However, the structs here do not map 1:1 with track pieces. Instead, use the lookup table beginning at 0x994a38 to determine which struct corresponds to your given track piece.

There are two lookup tables, one at 0x994a38 and one at 0x994632. I am not sure yet which one is used in which situations, though it depends on whether a flag is set at bit 20 of the ride struct beginning at 0x97CF40.

Here's the breakdown of those 11 byte structs

bytes 0-4

all empty, as far as I can tell

byte 5

contains flags relating to helixes and loops

byte 6

255 if a loop piece that ends going downward, else 0

byte 7

These seem to track the height change required by the piece. 16 represents a height change of 1 unit, but there are also 8 and 12 represented. check byte 8 for the direction.

Some of this is confusing; a helix up piece should have at least some height change but instead is 0 in the code. Bit 3 set means "helix down"

byte 8
bit Description
0 always set (?)
1 0 if track piece starts diagonal, 1 if track piece starts orthogonal
2 if 0, right turn
3 if 0, left turn
4 or 5 if either is 1, track starts or finishes downhill
6 or 7 if either is 1, track starts or finishes uphill

So a flat track piece with no turns would be 15.

byte 9

4 if the track piece starts or ends at a 90 degree angle. 0 otherwise.

byte 10

is either 1 or 255, 1 if a turn?

Clone this wiki locally