diff --git a/src/openrct2/rct2/T6Exporter.cpp b/src/openrct2/rct2/T6Exporter.cpp index 827f30b340..7cf895ab85 100644 --- a/src/openrct2/rct2/T6Exporter.cpp +++ b/src/openrct2/rct2/T6Exporter.cpp @@ -84,11 +84,17 @@ namespace OpenRCT2::RCT2 tempStream.WriteValue(_trackDesign.statistics.maxLateralG / kTD46GForcesMultiplier); if (rtd.specialType == RtdSpecialType::miniGolf) - tempStream.WriteValue(_trackDesign.statistics.holes & kRCT12InversionAndHoleMask); + { + auto numHoles = std::min(31, _trackDesign.statistics.holes); + tempStream.WriteValue(numHoles & kRCT12InversionAndHoleMask); + } else - tempStream.WriteValue(_trackDesign.statistics.inversions & kRCT12InversionAndHoleMask); + { + auto numInversions = std::min(31, _trackDesign.statistics.inversions); + tempStream.WriteValue(numInversions & kRCT12InversionAndHoleMask); + } - tempStream.WriteValue(_trackDesign.statistics.drops & kRCT12RideNumDropsMask); + tempStream.WriteValue(std::min(63, _trackDesign.statistics.drops) & kRCT12RideNumDropsMask); tempStream.WriteValue(_trackDesign.statistics.highestDropHeight); tempStream.WriteValue(_trackDesign.statistics.ratings.excitement / kTD46RatingsMultiplier); tempStream.WriteValue(_trackDesign.statistics.ratings.intensity / kTD46RatingsMultiplier); @@ -114,7 +120,9 @@ namespace OpenRCT2::RCT2 { tempStream.WriteValue(_trackDesign.appearance.vehicleColours[i].Tertiary); } - tempStream.WriteValue(_trackDesign.operation.liftHillSpeed | (_trackDesign.operation.numCircuits << 5)); + auto liftSpeed = std::min(31, _trackDesign.operation.liftHillSpeed); + auto numCircuits = std::min(7, _trackDesign.operation.numCircuits); + tempStream.WriteValue(liftSpeed | (numCircuits << 5)); if (rtd.specialType == RtdSpecialType::maze) {