Fix missing track data (#20687)

* Fix missing track data

* Increase network version
This commit is contained in:
X123M3-256 2023-08-06 10:28:08 +01:00 committed by GitHub
parent 8f491eb0e4
commit 6119b343e6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 180 additions and 174 deletions

View File

@ -43,7 +43,7 @@
// It is used for making sure only compatible builds get connected, even within
// single OpenRCT2 version.
#define NETWORK_STREAM_VERSION "14"
#define NETWORK_STREAM_VERSION "15"
#define NETWORK_STREAM_ID OPENRCT2_VERSION "-" NETWORK_STREAM_VERSION

View File

@ -3640,50 +3640,50 @@ static constexpr uint8_t TrackPieceLengths[] = {
100, // TrackElemType::RightFlyerLargeHalfLoopUninvertedDown
64, // TrackElemType::FlyerHalfLoopInvertedUp
64, // TrackElemType::FlyerHalfLoopUninvertedDown
64, // TrackElemType::LeftEighthToDiagUp25
64, // TrackElemType::RightEighthToDiagUp25
64, // TrackElemType::LeftEighthToDiagDown25
64, // TrackElemType::RightEighthToDiagDown25
64, // TrackElemType::LeftEighthToOrthogonalUp25
64, // TrackElemType::RightEighthToOrthogonalUp25
64, // TrackElemType::LeftEighthToOrthogonalDown25
64, // TrackElemType::RightEighthToOrthogonalDown25
64, // TrackElemType::DiagUp25ToLeftBankedUp25
64, // TrackElemType::DiagUp25ToRightBankedUp25
64, // TrackElemType::DiagLeftBankedUp25ToUp25
64, // TrackElemType::DiagRightBankedUp25ToUp25
64, // TrackElemType::DiagDown25ToLeftBankedDown25
64, // TrackElemType::DiagDown25ToRightBankedDown25
64, // TrackElemType::DiagLeftBankedDown25ToDown25
64, // TrackElemType::DiagRightBankedDown25ToDown25
64, // TrackElemType::DiagLeftBankedFlatToLeftBankedUp25
64, // TrackElemType::DiagRightBankedFlatToRightBankedUp25
64, // TrackElemType::DiagLeftBankedUp25ToLeftBankedFlat
64, // TrackElemType::DiagRightBankedUp25ToRightBankedFlat
64, // TrackElemType::DiagLeftBankedFlatToLeftBankedDown25
64, // TrackElemType::DiagRightBankedFlatToRightBankedDown25
64, // TrackElemType::DiagLeftBankedDown25ToLeftBankedFlat
64, // TrackElemType::DiagRightBankedDown25ToRightBankedFlat
64, // TrackElemType::DiagFlatToLeftBankedUp25
64, // TrackElemType::DiagFlatToRightBankedUp25
64, // TrackElemType::DiagLeftBankedUp25ToFlat
64, // TrackElemType::DiagRightBankedUp25ToFlat
64, // TrackElemType::DiagFlatToLeftBankedDown25
64, // TrackElemType::DiagFlatToRightBankedDown25
64, // TrackElemType::DiagLeftBankedDown25ToFlat
64, // TrackElemType::DiagRightBankedDown25ToFlat
64, // TrackElemType::DiagUp25LeftBanked
64, // TrackElemType::DiagUp25RightBanked
64, // TrackElemType::DiagDown25LeftBanked
64, // TrackElemType::DiagDown25RightBanked
64, // TrackElemType::LeftEighthBankToDiagUp25
64, // TrackElemType::RightEighthBankToDiagUp25
64, // TrackElemType::LeftEighthBankToDiagDown25
64, // TrackElemType::RightEighthBankToDiagDown25
64, // TrackElemType::LeftEighthBankToOrthogonalUp25
64, // TrackElemType::RightEighthBankToOrthogonalUp25
64, // TrackElemType::LeftEighthBankToOrthogonalDown25
64, // TrackElemType::RightEighthBankToOrthogonalDown25
92, // TrackElemType::LeftEighthToDiagUp25
92, // TrackElemType::RightEighthToDiagUp25
92, // TrackElemType::LeftEighthToDiagDown25
92, // TrackElemType::RightEighthToDiagDown25
92, // TrackElemType::LeftEighthToOrthogonalUp25
92, // TrackElemType::RightEighthToOrthogonalUp25
92, // TrackElemType::LeftEighthToOrthogonalDown25
92, // TrackElemType::RightEighthToOrthogonalDown25
45, // TrackElemType::DiagUp25ToLeftBankedUp25
45, // TrackElemType::DiagUp25ToRightBankedUp25
45, // TrackElemType::DiagLeftBankedUp25ToUp25
45, // TrackElemType::DiagRightBankedUp25ToUp25
45, // TrackElemType::DiagDown25ToLeftBankedDown25
45, // TrackElemType::DiagDown25ToRightBankedDown25
45, // TrackElemType::DiagLeftBankedDown25ToDown25
45, // TrackElemType::DiagRightBankedDown25ToDown25
45, // TrackElemType::DiagLeftBankedFlatToLeftBankedUp25
45, // TrackElemType::DiagRightBankedFlatToRightBankedUp25
45, // TrackElemType::DiagLeftBankedUp25ToLeftBankedFlat
45, // TrackElemType::DiagRightBankedUp25ToRightBankedFlat
45, // TrackElemType::DiagLeftBankedFlatToLeftBankedDown25
45, // TrackElemType::DiagRightBankedFlatToRightBankedDown25
45, // TrackElemType::DiagLeftBankedDown25ToLeftBankedFlat
45, // TrackElemType::DiagRightBankedDown25ToRightBankedFlat
45, // TrackElemType::DiagFlatToLeftBankedUp25
45, // TrackElemType::DiagFlatToRightBankedUp25
45, // TrackElemType::DiagLeftBankedUp25ToFlat
45, // TrackElemType::DiagRightBankedUp25ToFlat
45, // TrackElemType::DiagFlatToLeftBankedDown25
45, // TrackElemType::DiagFlatToRightBankedDown25
45, // TrackElemType::DiagLeftBankedDown25ToFlat
45, // TrackElemType::DiagRightBankedDown25ToFlat
45, // TrackElemType::DiagUp25LeftBanked
45, // TrackElemType::DiagUp25RightBanked
45, // TrackElemType::DiagDown25LeftBanked
45, // TrackElemType::DiagDown25RightBanked
92, // TrackElemType::LeftEighthBankToDiagUp25
92, // TrackElemType::RightEighthBankToDiagUp25
92, // TrackElemType::LeftEighthBankToDiagDown25
92, // TrackElemType::RightEighthBankToDiagDown25
92, // TrackElemType::LeftEighthBankToOrthogonalUp25
92, // TrackElemType::RightEighthBankToOrthogonalUp25
92, // TrackElemType::LeftEighthBankToOrthogonalDown25
92, // TrackElemType::RightEighthBankToOrthogonalDown25
};
static_assert(std::size(TrackPieceLengths) == TrackElemType::Count);
@ -4855,51 +4855,54 @@ static constexpr money64 TrackPricing[] = {
884736, // TrackElemType::RightFlyerLargeHalfLoopUninvertedDown
294912, // TrackElemType::FlyerHalfLoopInvertedUp
294912, // TrackElemType::FlyerHalfLoopUninvertedDown
294912, // TrackElemType::LeftEighthToDiagUp25
294912, // TrackElemType::RightEighthToDiagUp25
294912, // TrackElemType::LeftEighthToDiagDown25
294912, // TrackElemType::RightEighthToDiagDown25
294912, // TrackElemType::LeftEighthToOrthogonalUp25
294912, // TrackElemType::RightEighthToOrthogonalUp25
294912, // TrackElemType::LeftEighthToOrthogonalDown25
294912, // TrackElemType::RightEighthToOrthogonalDown25
294912, // TrackElemType::DiagUp25ToLeftBankedUp25
294912, // TrackElemType::DiagUp25ToRightBankedUp25
294912, // TrackElemType::DiagLeftBankedUp25ToUp25
294912, // TrackElemType::DiagRightBankedUp25ToUp25
294912, // TrackElemType::DiagDown25ToLeftBankedDown25
294912, // TrackElemType::DiagDown25ToRightBankedDown25
294912, // TrackElemType::DiagLeftBankedDown25ToDown25
294912, // TrackElemType::DiagRightBankedDown25ToDown25
294912, // TrackElemType::DiagLeftBankedFlatToLeftBankedUp25
294912, // TrackElemType::DiagRightBankedFlatToRightBankedUp25
294912, // TrackElemType::DiagLeftBankedUp25ToLeftBankedFlat
294912, // TrackElemType::DiagRightBankedUp25ToRightBankedFlat
294912, // TrackElemType::DiagLeftBankedFlatToLeftBankedDown25
294912, // TrackElemType::DiagRightBankedFlatToRightBankedDown25
294912, // TrackElemType::DiagLeftBankedDown25ToLeftBankedFlat
294912, // TrackElemType::DiagRightBankedDown25ToRightBankedFlat
294912, // TrackElemType::DiagFlatToLeftBankedUp25
294912, // TrackElemType::DiagFlatToRightBankedUp25
294912, // TrackElemType::DiagLeftBankedUp25ToFlat
294912, // TrackElemType::DiagRightBankedUp25ToFlat
294912, // TrackElemType::DiagFlatToLeftBankedDown25
294912, // TrackElemType::DiagFlatToRightBankedDown25
294912, // TrackElemType::DiagLeftBankedDown25ToFlat
294912, // TrackElemType::DiagRightBankedDown25ToFlat
294912, // TrackElemType::DiagUp25LeftBanked
294912, // TrackElemType::DiagUp25RightBanked
294912, // TrackElemType::DiagDown25LeftBanked
294912, // TrackElemType::DiagDown25RightBanked
294912, // TrackElemType::LeftEighthBankToDiagUp25
294912, // TrackElemType::RightEighthBankToDiagUp25
294912, // TrackElemType::LeftEighthBankToDiagDown25
294912, // TrackElemType::RightEighthBankToDiagDown25
294912, // TrackElemType::LeftEighthBankToOrthogonalUp25
294912, // TrackElemType::RightEighthBankToOrthogonalUp25
294912, // TrackElemType::LeftEighthBankToOrthogonalDown25
294912, // TrackElemType::RightEighthBankToOrthogonalDown25
219559, // TrackElemType::LeftEighthToDiagUp25
219559, // TrackElemType::RightEighthToDiagUp25
219559, // TrackElemType::LeftEighthToDiagDown25
219559, // TrackElemType::RightEighthToDiagDown25
219559, // TrackElemType::LeftEighthToOrthogonalUp25
219559, // TrackElemType::RightEighthToOrthogonalUp25
219559, // TrackElemType::LeftEighthToOrthogonalDown25
219559, // TrackElemType::RightEighthToOrthogonalDown25
118809, // TrackElemType::DiagUp25ToLeftBankedUp25
118809, // TrackElemType::DiagUp25ToRightBankedUp25
118809, // TrackElemType::DiagLeftBankedUp25ToUp25
118809, // TrackElemType::DiagRightBankedUp25ToUp25
118809, // TrackElemType::DiagDown25ToLeftBankedDown25
118809, // TrackElemType::DiagDown25ToRightBankedDown25
118809, // TrackElemType::DiagLeftBankedDown25ToDown25
118809, // TrackElemType::DiagRightBankedDown25ToDown25
108800, // TrackElemType::DiagLeftBankedFlatToLeftBankedUp25
108800, // TrackElemType::DiagRightBankedFlatToRightBankedUp25
108800, // TrackElemType::DiagLeftBankedUp25ToLeftBankedFlat
108800, // TrackElemType::DiagRightBankedUp25ToRightBankedFlat
108800, // TrackElemType::DiagLeftBankedFlatToLeftBankedDown25
108800, // TrackElemType::DiagRightBankedFlatToRightBankedDown25
108800, // TrackElemType::DiagLeftBankedDown25ToLeftBankedFlat
108800, // TrackElemType::DiagRightBankedDown25ToRightBankedFlat
108800, // TrackElemType::DiagFlatToLeftBankedUp25
108800, // TrackElemType::DiagFlatToRightBankedUp25
108800, // TrackElemType::DiagLeftBankedUp25ToFlat
108800, // TrackElemType::DiagRightBankedUp25ToFlat
108800, // TrackElemType::DiagFlatToLeftBankedDown25
108800, // TrackElemType::DiagFlatToRightBankedDown25
108800, // TrackElemType::DiagLeftBankedDown25ToFlat
108800, // TrackElemType::DiagRightBankedDown25ToFlat
118809, // TrackElemType::DiagUp25LeftBanked
118809, // TrackElemType::DiagUp25RightBanked
118809, // TrackElemType::DiagDown25LeftBanked
118809, // TrackElemType::DiagDown25RightBanked
233281, // TrackElemType::LeftEighthBankToDiagUp25
233281, // TrackElemType::RightEighthBankToDiagUp25
233281, // TrackElemType::LeftEighthBankToDiagDown25
233281, // TrackElemType::RightEighthBankToDiagDown25
233281, // TrackElemType::LeftEighthBankToOrthogonalUp25
233281, // TrackElemType::RightEighthBankToOrthogonalUp25
233281, // TrackElemType::LeftEighthBankToOrthogonalDown25
233281, // TrackElemType::RightEighthBankToOrthogonalDown25
};
static_assert(std::size(TrackPricing) == TrackElemType::Count);
/** rct2: 0x0099EA1C */
@ -5539,14 +5542,14 @@ static constexpr uint32_t TrackHeightMarkerPositions[] = {
(1 << 0) | (1 << 6), // TrackElemType::RightFlyerLargeHalfLoopUninvertedDown
(1 << 0) | (1 << 3), // TrackElemType::FlyerHalfLoopInvertedUp
(1 << 0) | (1 << 3), // TrackElemType::FlyerHalfLoopUninvertedDown
(1 << 0), // TrackElemType::LeftEighthToDiagUp25
(1 << 0), // TrackElemType::RightEighthToDiagUp25
(1 << 0), // TrackElemType::LeftEighthToDiagDown25
(1 << 0), // TrackElemType::RightEighthToDiagDown25
(1 << 0), // TrackElemType::LeftEighthToOrthogonalUp25
(1 << 0), // TrackElemType::RightEighthToOrthogonalUp25
(1 << 0), // TrackElemType::LeftEighthToOrthogonalDown25
(1 << 0), // TrackElemType::RightEighthToOrthogonalDown25
(1 << 0) | (1 << 4), // TrackElemType::LeftEighthToDiagUp25
(1 << 0) | (1 << 4), // TrackElemType::RightEighthToDiagUp25
(1 << 0) | (1 << 4), // TrackElemType::LeftEighthToDiagDown25
(1 << 0) | (1 << 4), // TrackElemType::RightEighthToDiagDown25
(1 << 0) | (1 << 4), // TrackElemType::LeftEighthToOrthogonalUp25
(1 << 0) | (1 << 4), // TrackElemType::RightEighthToOrthogonalUp25
(1 << 0) | (1 << 4), // TrackElemType::LeftEighthToOrthogonalDown25
(1 << 0) | (1 << 4), // TrackElemType::RightEighthToOrthogonalDown25
(1 << 0), // TrackElemType::DiagUp25ToRightBankedUp25
(1 << 0), // TrackElemType::DiagUp25ToLeftBankedUp25
(1 << 0), // TrackElemType::DiagRightBankedUp25ToUp25
@ -5575,14 +5578,14 @@ static constexpr uint32_t TrackHeightMarkerPositions[] = {
(1 << 0), // TrackElemType::DiagUp25LeftBanked
(1 << 0), // TrackElemType::DiagDown25RightBanked
(1 << 0), // TrackElemType::DiagDown25LeftBanked
(1 << 0), // TrackElemType::RightEighthBankToDiagUp25
(1 << 0), // TrackElemType::LeftEighthBankToDiagUp25
(1 << 0), // TrackElemType::RightEighthBankToDiagDown25
(1 << 0), // TrackElemType::LeftEighthBankToDiagDown25
(1 << 0), // TrackElemType::RightEighthBankToOrthogonalUp25
(1 << 0), // TrackElemType::LeftEighthBankToOrthogonalUp25
(1 << 0), // TrackElemType::RightEighthBankToOrthogonalDown25
(1 << 0), // TrackElemType::LeftEighthBankToOrthogonalDown25
(1 << 0) | (1 << 4), // TrackElemType::RightEighthBankToDiagUp25
(1 << 0) | (1 << 4), // TrackElemType::LeftEighthBankToDiagUp25
(1 << 0) | (1 << 4), // TrackElemType::RightEighthBankToDiagDown25
(1 << 0) | (1 << 4), // TrackElemType::LeftEighthBankToDiagDown25
(1 << 0) | (1 << 4), // TrackElemType::RightEighthBankToOrthogonalUp25
(1 << 0) | (1 << 4), // TrackElemType::LeftEighthBankToOrthogonalUp25
(1 << 0) | (1 << 4), // TrackElemType::RightEighthBankToOrthogonalDown25
(1 << 0) | (1 << 4), // TrackElemType::LeftEighthBankToOrthogonalDown25
};
static_assert(std::size(TrackHeightMarkerPositions) == TrackElemType::Count);
@ -5882,51 +5885,54 @@ static constexpr uint8_t TrackSequenceElementAllowedWallEdges[][MaxSequencesPerP
{ 0b1000, 0b1000, 0b1001, 0b0011, 0b0010, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightFlyerLargeHalfLoopUninvertedDown
{ 0b1010, 0b1010, 0b1011, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlyerHalfLoopInvertedUp
{ 0, 0b1011, 0b1010, 0b1010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::FlyerHalfLoopUninvertedDown
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftEighthToDiagUp25
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightEighthToDiagUp25
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftEighthToDiagDown25
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightEighthToDiagDown25
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftEighthToOrthogonalUp25
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightEighthToOrthogonalUp25
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftEighthToOrthogonalDown25
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightEighthToOrthogonalDown25
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagUp25ToRightBankedUp25
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagUp25ToLeftBankedUp25
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagRightBankedUp25ToUp25
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagLeftBankedUp25ToUp25
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagDown25ToRightBankedDown25
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagDown25ToLeftBankedDown25
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagRightBankedDown25ToDown25
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagLeftBankedDown25ToDown25
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagRightBankedFlatToRightBankedUp25
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagLeftBankedFlatToLeftBankedUp25
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagRightBankedUp25ToRightBankedFlat
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagLeftBankedUp25ToLeftBankedFlat
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagRightBankedFlatToRightBankedDown25
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagLeftBankedFlatToLeftBankedDown25
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagRightBankedDown25ToRightBankedFlat
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagLeftBankedDown25ToLeftBankedFlat
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagFlatToRightBankedUp25
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagFlatToLeftBankedUp25
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagRightBankedUp25ToFlat
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagLeftBankedUp25ToFlat
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagFlatToRightBankedDown25
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagFlatToLeftBankedDown25
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagRightBankedDown25ToFlat
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagLeftBankedDown25ToFlat
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagUp25RightBanked
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagUp25LeftBanked
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagDown25RightBanked
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagDown25LeftBanked
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightEighthBankToDiagUp25
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftEighthBankToDiagUp25
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightEighthBankToDiagDown25
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftEighthBankToDiagDown25
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightEighthBankToOrthogonalUp25
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftEighthBankToOrthogonalUp25
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightEighthBankToOrthogonalDown25
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftEighthBankToOrthogonalDown25
{ 0b0010, 0b0010, 0b1000, 0b0011, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftEighthToDiagUp25
{ 0b1000, 0b1000, 0b0010, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightEighthToDiagUp25
{ 0b0010, 0b0010, 0b1000, 0b0011, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftEighthToDiagDown25
{ 0b1000, 0b1000, 0b0010, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightEighthToDiagDown25
{ 0, 0b1000, 0b0110, 0b0010, 0b0010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftEighthToOrthogonalUp25
{ 0, 0b0100, 0b1001, 0b0001, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightEighthToOrthogonalUp25
{ 0, 0b1000, 0b0110, 0b0010, 0b0010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftEighthToOrthogonalDown25
{ 0, 0b0100, 0b1001, 0b0001, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightEighthToOrthogonalDown25
{ 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagUp25ToLeftBankedUp25
{ 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagUp25ToRightBankedUp25
{ 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagLeftBankedUp25ToUp25
{ 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagRightBankedUp25ToUp25
{ 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagDown25ToLeftBankedDown25
{ 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagDown25ToRightBankedDown25
{ 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagLeftBankedDown25ToDown25
{ 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagRightBankedDown25ToDown25
{ 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagLeftBankedFlatToLeftBankedUp25
{ 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagRightBankedFlatToRightBankedUp25
{ 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagLeftBankedUp25ToLeftBankedFlat
{ 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagRightBankedUp25ToRightBankedFlat
{ 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagLeftBankedFlatToLeftBankedDown25
{ 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagRightBankedFlatToRightBankedDown25
{ 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagLeftBankedDown25ToLeftBankedFlat
{ 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagRightBankedDown25ToRightBankedFlat
{ 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagFlatToLeftBankedUp25
{ 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagFlatToRightBankedUp25
{ 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagLeftBankedUp25ToFlat
{ 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagRightBankedUp25ToFlat
{ 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagFlatToLeftBankedDown25
{ 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagFlatToRightBankedDown25
{ 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagLeftBankedDown25ToFlat
{ 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagRightBankedDown25ToFlat
{ 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagUp25LeftBanked
{ 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagUp25RightBanked
{ 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagDown25LeftBanked
{ 0, 0b0110, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::DiagDown25RightBanked
{ 0b0010, 0b0010, 0b1000, 0b0011, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftEighthBankToDiagUp25
{ 0b1000, 0b1000, 0b0010, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightEighthBankToDiagUp25
{ 0b0010, 0b0010, 0b1000, 0b0011, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftEighthBankToDiagDown25
{ 0b1000, 0b1000, 0b0010, 0b1001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightEighthBankToDiagDown25
{ 0, 0b1000, 0b0110, 0b0010, 0b0010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftEighthBankToOrthogonalUp25
{ 0, 0b0100, 0b1001, 0b0001, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightEighthBankToOrthogonalUp25
{ 0, 0b1000, 0b0110, 0b0010, 0b0010, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::LeftEighthBankToOrthogonalDown25
{ 0, 0b0100, 0b1001, 0b0001, 0b0001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, // TrackElemType::RightEighthBankToOrthogonalDown25
};
static_assert(std::size(TrackSequenceElementAllowedWallEdges) == TrackElemType::Count);
/** rct2: 0x0099423C */
@ -6544,8 +6550,8 @@ static constexpr TrackDefinition TrackDefinitions[] =
{ TRACK_FLAT_RIDE_BASE, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // TrackElemType::FlatTrack1x1B
{ TRACK_FLAT_RIDE_BASE, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, -40 }, // TrackElemType::FlatTrack1x4C
{ TRACK_FLAT_RIDE_BASE, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // TrackElemType::FlatTrack3x3
{ TRACK_CORKSCREW_LARGE, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_UPSIDE_DOWN, TRACK_BANK_NONE, 0 }, // TrackElemType::LeftLargeCorkscrewUp
{ TRACK_CORKSCREW_LARGE, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_UPSIDE_DOWN, TRACK_BANK_NONE, 0 }, // TrackElemType::RightLargeCorkscrewUp
{ TRACK_CORKSCREW_LARGE, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_UPSIDE_DOWN, TRACK_BANK_NONE, 32 }, // TrackElemType::LeftLargeCorkscrewUp
{ TRACK_CORKSCREW_LARGE, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_UPSIDE_DOWN, TRACK_BANK_NONE, 32 }, // TrackElemType::RightLargeCorkscrewUp
{ TRACK_CORKSCREW_LARGE, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_UPSIDE_DOWN, -32 }, // TrackElemType::LeftLargeCorkscrewDown
{ TRACK_CORKSCREW_LARGE, TRACK_SLOPE_NONE, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_UPSIDE_DOWN, -32 }, // TrackElemType::RightLargeCorkscrewDown
{ TRACK_HALF_LOOP_MEDIUM, TRACK_SLOPE_NONE, TRACK_SLOPE_UP_25, TRACK_BANK_UPSIDE_DOWN, TRACK_BANK_NONE, 64 }, // TrackElemType::LeftMediumHalfLoopUp
@ -6556,10 +6562,10 @@ static constexpr TrackDefinition TrackDefinitions[] =
{ TRACK_ZERO_G_ROLL, TRACK_SLOPE_NONE, TRACK_SLOPE_UP_25, TRACK_BANK_UPSIDE_DOWN, TRACK_BANK_NONE, 0 }, // TrackElemType::RightZeroGRollUp
{ TRACK_ZERO_G_ROLL, TRACK_SLOPE_DOWN_25, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_UPSIDE_DOWN, 0 }, // TrackElemType::LeftZeroGRollDown
{ TRACK_ZERO_G_ROLL, TRACK_SLOPE_DOWN_25, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_UPSIDE_DOWN, 0 }, // TrackElemType::RightZeroGRollDown
{ TRACK_ZERO_G_ROLL_LARGE, TRACK_SLOPE_NONE, TRACK_SLOPE_UP_60, TRACK_BANK_UPSIDE_DOWN, TRACK_BANK_NONE, 0 }, // TrackElemType::LeftLargeZeroGRollUp
{ TRACK_ZERO_G_ROLL_LARGE, TRACK_SLOPE_NONE, TRACK_SLOPE_UP_60, TRACK_BANK_UPSIDE_DOWN, TRACK_BANK_NONE, 0 }, // TrackElemType::RightLargeZeroGRollUp
{ TRACK_ZERO_G_ROLL_LARGE, TRACK_SLOPE_DOWN_60, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_UPSIDE_DOWN, 0 }, // TrackElemType::LeftLargeZeroGRollDown
{ TRACK_ZERO_G_ROLL_LARGE, TRACK_SLOPE_DOWN_60, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_UPSIDE_DOWN, 0 }, // TrackElemType::RightLargeZeroGRollDown
{ TRACK_ZERO_G_ROLL_LARGE, TRACK_SLOPE_NONE, TRACK_SLOPE_UP_60, TRACK_BANK_UPSIDE_DOWN, TRACK_BANK_NONE, 64 }, // TrackElemType::LeftLargeZeroGRollUp
{ TRACK_ZERO_G_ROLL_LARGE, TRACK_SLOPE_NONE, TRACK_SLOPE_UP_60, TRACK_BANK_UPSIDE_DOWN, TRACK_BANK_NONE, 64 }, // TrackElemType::RightLargeZeroGRollUp
{ TRACK_ZERO_G_ROLL_LARGE, TRACK_SLOPE_DOWN_60, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_UPSIDE_DOWN, -64 }, // TrackElemType::LeftLargeZeroGRollDown
{ TRACK_ZERO_G_ROLL_LARGE, TRACK_SLOPE_DOWN_60, TRACK_SLOPE_NONE, TRACK_BANK_NONE, TRACK_BANK_UPSIDE_DOWN, -64 }, // TrackElemType::RightLargeZeroGRollDown
{ TRACK_FLYING_LARGE_HALF_LOOP_UNINVERTED_UP, TRACK_SLOPE_NONE, TRACK_SLOPE_UP_25, TRACK_BANK_UPSIDE_DOWN, TRACK_BANK_NONE, 64 }, // TrackElemType::LeftFlyerLargeHalfLoopUninvertedUp
{ TRACK_FLYING_LARGE_HALF_LOOP_UNINVERTED_UP, TRACK_SLOPE_NONE, TRACK_SLOPE_UP_25, TRACK_BANK_UPSIDE_DOWN, TRACK_BANK_NONE, 64 }, // TrackElemType::RightFlyerLargeHalfLoopUninvertedUp
{ TRACK_FLYING_LARGE_HALF_LOOP_INVERTED_DOWN, TRACK_SLOPE_DOWN_25, TRACK_SLOPE_NONE, TRACK_BANK_UPSIDE_DOWN, TRACK_BANK_NONE, -64 }, // TrackElemType::LeftFlyerLargeHalfLoopInvertedDown
@ -6570,14 +6576,14 @@ static constexpr TrackDefinition TrackDefinitions[] =
{ TRACK_FLYING_LARGE_HALF_LOOP_UNINVERTED_DOWN, TRACK_SLOPE_DOWN_25, TRACK_SLOPE_NONE, TRACK_BANK_UPSIDE_DOWN, TRACK_BANK_NONE, -64 }, // TrackElemType::RightFlyerLargeHalfLoopUninvertedDown
{ TRACK_FLYING_HALF_LOOP_INVERTED_UP, TRACK_SLOPE_NONE, TRACK_SLOPE_UP_25, TRACK_BANK_UPSIDE_DOWN, TRACK_BANK_NONE, 64 }, // TrackElemType::FlyerHalfLoopInvertedUp
{ TRACK_FLYING_HALF_LOOP_UNINVERTED_DOWN, TRACK_SLOPE_DOWN_25, TRACK_SLOPE_NONE, TRACK_BANK_UPSIDE_DOWN, TRACK_BANK_NONE, -64 }, // TrackElemType::FlyerHalfLoopUninvertedDown
{ TRACK_SLOPE_CURVE_LARGE, TRACK_SLOPE_UP_25, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // TrackElemType::LeftEighthToDiagUp25
{ TRACK_SLOPE_CURVE_LARGE, TRACK_SLOPE_UP_25, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // TrackElemType::RightEighthToDiagUp25
{ TRACK_SLOPE_CURVE_LARGE, TRACK_SLOPE_DOWN_25, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // TrackElemType::LeftEighthToDiagDown25
{ TRACK_SLOPE_CURVE_LARGE, TRACK_SLOPE_DOWN_25, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // TrackElemType::RightEighthToDiagDown25
{ TRACK_SLOPE_CURVE_LARGE, TRACK_SLOPE_UP_25, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // TrackElemType::LeftEighthToOrthogonalUp25
{ TRACK_SLOPE_CURVE_LARGE, TRACK_SLOPE_UP_25, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // TrackElemType::RightEighthToOrthogonalUp25
{ TRACK_SLOPE_CURVE_LARGE, TRACK_SLOPE_DOWN_25, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // TrackElemType::LeftEighthToOrthogonalDown25
{ TRACK_SLOPE_CURVE_LARGE, TRACK_SLOPE_DOWN_25, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TRACK_BANK_NONE, 0 }, // TrackElemType::RightEighthToOrthogonalDown25
{ TRACK_SLOPE_CURVE_LARGE, TRACK_SLOPE_UP_25, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TRACK_BANK_NONE, 16 }, // TrackElemType::LeftEighthToDiagUp25
{ TRACK_SLOPE_CURVE_LARGE, TRACK_SLOPE_UP_25, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TRACK_BANK_NONE, 16 }, // TrackElemType::RightEighthToDiagUp25
{ TRACK_SLOPE_CURVE_LARGE, TRACK_SLOPE_DOWN_25, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TRACK_BANK_NONE, -16 }, // TrackElemType::LeftEighthToDiagDown25
{ TRACK_SLOPE_CURVE_LARGE, TRACK_SLOPE_DOWN_25, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TRACK_BANK_NONE, -16 }, // TrackElemType::RightEighthToDiagDown25
{ TRACK_SLOPE_CURVE_LARGE, TRACK_SLOPE_UP_25, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TRACK_BANK_NONE, 16 }, // TrackElemType::LeftEighthToOrthogonalUp25
{ TRACK_SLOPE_CURVE_LARGE, TRACK_SLOPE_UP_25, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TRACK_BANK_NONE, 16 }, // TrackElemType::RightEighthToOrthogonalUp25
{ TRACK_SLOPE_CURVE_LARGE, TRACK_SLOPE_DOWN_25, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TRACK_BANK_NONE, -16 }, // TrackElemType::LeftEighthToOrthogonalDown25
{ TRACK_SLOPE_CURVE_LARGE, TRACK_SLOPE_DOWN_25, TRACK_SLOPE_DOWN_25, TRACK_BANK_NONE, TRACK_BANK_NONE, -16 }, // TrackElemType::RightEighthToOrthogonalDown25
{ TRACK_SLOPE_CURVE_LARGE_BANKED, TRACK_SLOPE_UP_25, TRACK_SLOPE_UP_25, TRACK_BANK_LEFT, TRACK_BANK_NONE, 0 }, // TrackElemType::DiagUp25ToLeftBankedUp25
{ TRACK_SLOPE_CURVE_LARGE_BANKED, TRACK_SLOPE_UP_25, TRACK_SLOPE_UP_25, TRACK_BANK_RIGHT, TRACK_BANK_NONE, 0 }, // TrackElemType::DiagUp25ToRightBankedUp25
{ TRACK_SLOPE_CURVE_LARGE_BANKED, TRACK_SLOPE_UP_25, TRACK_SLOPE_UP_25, TRACK_BANK_NONE, TRACK_BANK_LEFT, 0 }, // TrackElemType::DiagLeftBankedUp25ToUp25
@ -6606,14 +6612,14 @@ static constexpr TrackDefinition TrackDefinitions[] =
{ TRACK_SLOPE_CURVE_LARGE_BANKED, TRACK_SLOPE_UP_25, TRACK_SLOPE_UP_25, TRACK_BANK_RIGHT, TRACK_BANK_RIGHT, 0 }, // TrackElemType::Up25RightBanked
{ TRACK_SLOPE_CURVE_LARGE_BANKED, TRACK_SLOPE_DOWN_25, TRACK_SLOPE_DOWN_25, TRACK_BANK_LEFT, TRACK_BANK_LEFT, 0 }, // TrackElemType::Down25LeftBanked
{ TRACK_SLOPE_CURVE_LARGE_BANKED, TRACK_SLOPE_DOWN_25, TRACK_SLOPE_DOWN_25, TRACK_BANK_RIGHT, TRACK_BANK_RIGHT, 0 }, // TrackElemType::Down25RightBanked
{ TRACK_SLOPE_CURVE_LARGE_BANKED, TRACK_SLOPE_UP_25, TRACK_SLOPE_UP_25, TRACK_BANK_LEFT, TRACK_BANK_LEFT, 0 }, // TrackElemType::LeftEighthBankToDiagUp25
{ TRACK_SLOPE_CURVE_LARGE_BANKED, TRACK_SLOPE_UP_25, TRACK_SLOPE_UP_25, TRACK_BANK_RIGHT, TRACK_BANK_RIGHT, 0 }, // TrackElemType::RightEighthBankToDiagUp25
{ TRACK_SLOPE_CURVE_LARGE_BANKED, TRACK_SLOPE_DOWN_25, TRACK_SLOPE_DOWN_25, TRACK_BANK_LEFT, TRACK_BANK_LEFT, 0 }, // TrackElemType::LeftEighthBankToDiagDown25
{ TRACK_SLOPE_CURVE_LARGE_BANKED, TRACK_SLOPE_DOWN_25, TRACK_SLOPE_DOWN_25, TRACK_BANK_RIGHT, TRACK_BANK_RIGHT, 0 }, // TrackElemType::RightEighthBankToDiagDown25
{ TRACK_SLOPE_CURVE_LARGE_BANKED, TRACK_SLOPE_UP_25, TRACK_SLOPE_UP_25, TRACK_BANK_LEFT, TRACK_BANK_LEFT, 0 }, // TrackElemType::LeftEighthBankToOrthogonalUp25
{ TRACK_SLOPE_CURVE_LARGE_BANKED, TRACK_SLOPE_UP_25, TRACK_SLOPE_UP_25, TRACK_BANK_RIGHT, TRACK_BANK_RIGHT, 0 }, // TrackElemType::RightEighthBankToOrthogonalUp25
{ TRACK_SLOPE_CURVE_LARGE_BANKED, TRACK_SLOPE_DOWN_25, TRACK_SLOPE_DOWN_25, TRACK_BANK_LEFT, TRACK_BANK_LEFT, 0 }, // TrackElemType::LeftEighthBankToOrthogonalDown25
{ TRACK_SLOPE_CURVE_LARGE_BANKED, TRACK_SLOPE_DOWN_25, TRACK_SLOPE_DOWN_25, TRACK_BANK_RIGHT, TRACK_BANK_RIGHT, 0 }, // TrackElemType::RightEighthBankToOrthogonalDown25
{ TRACK_SLOPE_CURVE_LARGE_BANKED, TRACK_SLOPE_UP_25, TRACK_SLOPE_UP_25, TRACK_BANK_LEFT, TRACK_BANK_LEFT, 16 }, // TrackElemType::LeftEighthBankToDiagUp25
{ TRACK_SLOPE_CURVE_LARGE_BANKED, TRACK_SLOPE_UP_25, TRACK_SLOPE_UP_25, TRACK_BANK_RIGHT, TRACK_BANK_RIGHT, 16 }, // TrackElemType::RightEighthBankToDiagUp25
{ TRACK_SLOPE_CURVE_LARGE_BANKED, TRACK_SLOPE_DOWN_25, TRACK_SLOPE_DOWN_25, TRACK_BANK_LEFT, TRACK_BANK_LEFT, -16 }, // TrackElemType::LeftEighthBankToDiagDown25
{ TRACK_SLOPE_CURVE_LARGE_BANKED, TRACK_SLOPE_DOWN_25, TRACK_SLOPE_DOWN_25, TRACK_BANK_RIGHT, TRACK_BANK_RIGHT, -16 }, // TrackElemType::RightEighthBankToDiagDown25
{ TRACK_SLOPE_CURVE_LARGE_BANKED, TRACK_SLOPE_UP_25, TRACK_SLOPE_UP_25, TRACK_BANK_LEFT, TRACK_BANK_LEFT, 16 }, // TrackElemType::LeftEighthBankToOrthogonalUp25
{ TRACK_SLOPE_CURVE_LARGE_BANKED, TRACK_SLOPE_UP_25, TRACK_SLOPE_UP_25, TRACK_BANK_RIGHT, TRACK_BANK_RIGHT, 16 }, // TrackElemType::RightEighthBankToOrthogonalUp25
{ TRACK_SLOPE_CURVE_LARGE_BANKED, TRACK_SLOPE_DOWN_25, TRACK_SLOPE_DOWN_25, TRACK_BANK_LEFT, TRACK_BANK_LEFT, -16 }, // TrackElemType::LeftEighthBankToOrthogonalDown25
{ TRACK_SLOPE_CURVE_LARGE_BANKED, TRACK_SLOPE_DOWN_25, TRACK_SLOPE_DOWN_25, TRACK_BANK_RIGHT, TRACK_BANK_RIGHT, -16 }, // TrackElemType::RightEighthBankToOrthogonalDown25
};
static_assert(std::size(TrackDefinitions) == TrackElemType::Count);
@ -6642,10 +6648,10 @@ constexpr static uint8_t TrackTypeToSpinFunction[] = {
NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN,
NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN,
NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN,
NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, L9_SPIN, R9_SPIN, L9_SPIN, R9_SPIN, L9_SPIN, R9_SPIN,
L9_SPIN, R9_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN,
NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN,
NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN,
NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN,
NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN,
NO_SPIN, NO_SPIN, NO_SPIN, NO_SPIN, L9_SPIN, R9_SPIN, L9_SPIN, R9_SPIN, L9_SPIN, R9_SPIN, L9_SPIN, R9_SPIN,
};
static_assert(std::size(TrackTypeToSpinFunction) == TrackElemType::Count);