diff --git a/Track-Data.md b/Track-Data.md index 0263635..1de70cd 100644 --- a/Track-Data.md +++ b/Track-Data.md @@ -2,219 +2,219 @@ 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. -- **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 +- **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▼ +- **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 +- **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 +- **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 +- **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 +- **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° ▲ +- **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 +- **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 +- **D3:** L reverser +- **D4:** R reverser - **D5:** Air Thrust top cap - **D6:** Air Thrust Vertical down - **D7:** Air Thrust vertical down to level @@ -223,7 +223,7 @@ First, there is the ordering of track pieces, which is used everywhere in the ga - **DA:** R ¼ D3 25° ▲ banked - **DB:** L ¼ D3 25° ▼ banked - **DC:** R ¼ D3 25° ▼ banked -- **DD:** L ¼ D5 25° ▲ banked +- **DD:** L ¼ D5 25° ▲ banked - **DE:** R ¼ D5 25° ▲ banked - **DF:** L ¼ D5 25° ▼ banked - **E0:** R ¼ D5 25° ▼ banked @@ -237,8 +237,8 @@ First, there is the ordering of track pieces, which is used everywhere in the ga - **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 +- **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 @@ -327,6 +327,53 @@ More data about each track piece lives in a few different places in the game. Fi ## 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. +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`. +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 0: always set (?) +bit 1: 0 if track piece starts diagonal, 1 if track piece starts orthogonal +bit 2: if 0, right turn +bit 3: if 0, left turn +bit 4 or 5: if either is 1, track starts or finishes downhill +bit 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?