From 72cb30c7c4defe1b9f505f2a2015a89c4560779f Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Fri, 19 Aug 2016 19:59:23 +0200 Subject: [PATCH] Include topspin vehicle data --- OpenRCT2.xcodeproj/project.pbxproj | 26 ++- openrct2.vcxproj | 2 + src/ride/vehicle.c | 14 +- src/ride/vehicle_data.c | 355 +++++++++++++++++++++++++++++ src/ride/vehicle_data.h | 29 +++ 5 files changed, 406 insertions(+), 20 deletions(-) create mode 100644 src/ride/vehicle_data.c create mode 100644 src/ride/vehicle_data.h diff --git a/OpenRCT2.xcodeproj/project.pbxproj b/OpenRCT2.xcodeproj/project.pbxproj index dbdc96ac9a..48073f0808 100644 --- a/OpenRCT2.xcodeproj/project.pbxproj +++ b/OpenRCT2.xcodeproj/project.pbxproj @@ -16,6 +16,7 @@ 008BF72B1CDAA5C30019A2AD /* track_design_save.c in Sources */ = {isa = PBXBuildFile; fileRef = 008BF7271CDAA5C30019A2AD /* track_design_save.c */; }; 008BF72C1CDAA5C30019A2AD /* track_design.c in Sources */ = {isa = PBXBuildFile; fileRef = 008BF7281CDAA5C30019A2AD /* track_design.c */; }; 00EFEE721CF1D80B0035213B /* NetworkKey.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 00EFEE701CF1D80B0035213B /* NetworkKey.cpp */; }; + C612A8991D64825300B634CA /* vehicle_data.c in Sources */ = {isa = PBXBuildFile; fileRef = C612A8971D64825300B634CA /* vehicle_data.c */; }; C61FB7201CF6180C004CE991 /* libssl.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = D45A38BA1CF3006400659A24 /* libssl.dylib */; }; C61FB7211CF618BA004CE991 /* libssl.dylib in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = D45A38BA1CF3006400659A24 /* libssl.dylib */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; C61FB7241CF86356004CE991 /* NetworkUser.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C61FB7221CF86356004CE991 /* NetworkUser.cpp */; }; @@ -391,6 +392,8 @@ 008BF7291CDAA5C30019A2AD /* track_design.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = track_design.h; sourceTree = ""; }; 00EFEE701CF1D80B0035213B /* NetworkKey.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NetworkKey.cpp; sourceTree = ""; usesTabs = 0; }; 00EFEE711CF1D80B0035213B /* NetworkKey.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.h; fileEncoding = 4; path = NetworkKey.h; sourceTree = ""; usesTabs = 0; }; + C612A8971D64825300B634CA /* vehicle_data.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vehicle_data.c; sourceTree = ""; }; + C612A8981D64825300B634CA /* vehicle_data.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vehicle_data.h; sourceTree = ""; }; C61FB7221CF86356004CE991 /* NetworkUser.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NetworkUser.cpp; sourceTree = ""; usesTabs = 0; }; C61FB7231CF86356004CE991 /* NetworkUser.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.h; fileEncoding = 4; path = NetworkUser.h; sourceTree = ""; usesTabs = 0; }; C650B2151CCABBDD00B4D91C /* S4Importer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = S4Importer.cpp; sourceTree = ""; usesTabs = 0; }; @@ -1547,28 +1550,30 @@ C686F8FC1CDBC3B7009F9BFC /* transport */, C686F9021CDBC3B7009F9BFC /* water */, D442716F1CC81B3200D84D28 /* cable_lift.c */, + D44271701CC81B3200D84D28 /* cable_lift.h */, D44271731CC81B3200D84D28 /* ride_data.c */, + D44271741CC81B3200D84D28 /* ride_data.h */, D44271751CC81B3200D84D28 /* ride_ratings.c */, + D44271761CC81B3200D84D28 /* ride_ratings.h */, D44271711CC81B3200D84D28 /* ride.c */, + D44271721CC81B3200D84D28 /* ride.h */, D44271771CC81B3200D84D28 /* station.c */, + D44271781CC81B3200D84D28 /* station.h */, D442717B1CC81B3200D84D28 /* track_data.c */, + D442717C1CC81B3200D84D28 /* track_data.h */, 008BF7261CDAA5C30019A2AD /* track_design_index.c */, 008BF7271CDAA5C30019A2AD /* track_design_save.c */, 008BF7281CDAA5C30019A2AD /* track_design.c */, - D442717D1CC81B3200D84D28 /* track_paint.c */, - D44271791CC81B3200D84D28 /* track.c */, - C686F9561CDBC4C7009F9BFC /* vehicle_paint.c */, - D442717F1CC81B3200D84D28 /* vehicle.c */, - D44271701CC81B3200D84D28 /* cable_lift.h */, - D44271741CC81B3200D84D28 /* ride_data.h */, - D44271761CC81B3200D84D28 /* ride_ratings.h */, - D44271721CC81B3200D84D28 /* ride.h */, - D44271781CC81B3200D84D28 /* station.h */, - D442717C1CC81B3200D84D28 /* track_data.h */, 008BF7291CDAA5C30019A2AD /* track_design.h */, + D442717D1CC81B3200D84D28 /* track_paint.c */, D442717E1CC81B3200D84D28 /* track_paint.h */, + D44271791CC81B3200D84D28 /* track.c */, D442717A1CC81B3200D84D28 /* track.h */, + C612A8971D64825300B634CA /* vehicle_data.c */, + C612A8981D64825300B634CA /* vehicle_data.h */, + C686F9561CDBC4C7009F9BFC /* vehicle_paint.c */, C686F9571CDBC4C7009F9BFC /* vehicle_paint.h */, + D442717F1CC81B3200D84D28 /* vehicle.c */, D44271801CC81B3200D84D28 /* vehicle.h */, ); path = ride; @@ -2427,6 +2432,7 @@ D442722A1CC81B3200D84D28 /* localisation.c in Sources */, D44272731CC81B3200D84D28 /* new_ride.c in Sources */, D442721A1CC81B3200D84D28 /* console.c in Sources */, + C612A8991D64825300B634CA /* vehicle_data.c in Sources */, D44271FB1CC81B3200D84D28 /* ScreenshotCommands.cpp in Sources */, D464FEBB1D31A65300CBABAC /* IStream.cpp in Sources */, D442729E1CC81B3200D84D28 /* fountain.c in Sources */, diff --git a/openrct2.vcxproj b/openrct2.vcxproj index 89e758c22d..aa570a658c 100644 --- a/openrct2.vcxproj +++ b/openrct2.vcxproj @@ -252,6 +252,7 @@ + @@ -493,6 +494,7 @@ + diff --git a/src/ride/vehicle.c b/src/ride/vehicle.c index e46a2222b5..ebebf2d742 100644 --- a/src/ride/vehicle.c +++ b/src/ride/vehicle.c @@ -35,6 +35,7 @@ #include "track.h" #include "track_data.h" #include "vehicle.h" +#include "vehicle_data.h" static void vehicle_update(rct_vehicle *vehicle); @@ -314,13 +315,6 @@ static const sint8 * SwingingTimeToSpriteMaps[] = { SwingingTimeToSpriteMap_11, }; -/** rct2: 0x009A12E0 */ -static const uint8 * TopSpinTimeToSpriteMaps[] = { - RCT2_ADDRESS(0x009A12EC, const uint8), - RCT2_ADDRESS(0x009A1751, const uint8), - RCT2_ADDRESS(0x009A1CC6, const uint8), -}; - /** rct2: 0x0099F0F4 */ static const uint8 * Rotation1TimeToSpriteMaps[] = { RCT2_ADDRESS(0x0099F100, const uint8), @@ -4216,15 +4210,15 @@ static void vehicle_update_top_spin_operating(rct_vehicle* vehicle) { if (RCT2_GLOBAL(0x00F64E34, uint8) == 0) return; - const uint8* edi = TopSpinTimeToSpriteMaps[vehicle->sub_state]; - uint8 al = edi[(vehicle->current_time + 1) * 2]; + const top_spin_time_to_sprite_map * edi = TopSpinTimeToSpriteMaps[vehicle->sub_state]; + uint8 al = edi[vehicle->current_time + 1].arm_rotation; if (al != 0xFF) { vehicle->current_time = vehicle->current_time + 1; if (al != vehicle->vehicle_sprite_type) { vehicle->vehicle_sprite_type = al; vehicle_invalidate(vehicle); } - al = edi[vehicle->current_time * 2 + 1]; + al = edi[vehicle->current_time].bank_rotation; if (al != vehicle->bank_rotation) { vehicle->bank_rotation = al; vehicle_invalidate(vehicle); diff --git a/src/ride/vehicle_data.c b/src/ride/vehicle_data.c new file mode 100644 index 0000000000..69a4306562 --- /dev/null +++ b/src/ride/vehicle_data.c @@ -0,0 +1,355 @@ +#pragma region Copyright (c) 2014-2016 OpenRCT2 Developers +/***************************************************************************** + * OpenRCT2, an open source clone of Roller Coaster Tycoon 2. + * + * OpenRCT2 is the work of many authors, a full list can be found in contributors.md + * For more information, visit https://github.com/OpenRCT2/OpenRCT2 + * + * OpenRCT2 is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * A full copy of the GNU General Public License can be found in licence.txt + *****************************************************************************/ +#pragma endregion + +#include "vehicle_data.h" + +/** rct2: 0x009A12EC */ +static const top_spin_time_to_sprite_map TopSpinTimeToSpriteMap_0[] = { + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 1, 0 }, { 1, 0 }, { 1, 0 }, { 1, 0 }, { 1, 0 }, + { 1, 0 }, { 1, 0 }, { 1, 0 }, { 2, 0 }, { 2, 0 }, { 2, 0 }, { 2, 0 }, + { 2, 0 }, { 2, 0 }, { 2, 0 }, { 3, 0 }, { 3, 0 }, { 3, 0 }, { 3, 0 }, + { 3, 0 }, { 3, 0 }, { 4, 0 }, { 4, 0 }, { 4, 0 }, { 4, 0 }, { 4, 0 }, + { 5, 0 }, { 5, 0 }, { 5, 0 }, { 5, 0 }, { 5, 0 }, { 6, 0 }, { 6, 0 }, + { 6, 0 }, { 6, 0 }, { 6, 0 }, { 7, 0 }, { 7, 0 }, { 7, 0 }, { 7, 0 }, + { 7, 0 }, { 8, 0 }, { 8, 0 }, { 8, 0 }, { 8, 0 }, { 8, 0 }, { 9, 0 }, + { 9, 0 }, { 9, 0 }, { 9, 0 }, { 9, 0 }, { 10, 0 }, { 10, 0 }, { 10, 0 }, + { 10, 0 }, { 10, 0 }, { 11, 0 }, { 11, 0 }, { 11, 0 }, { 11, 0 }, { 11, 0 }, + { 12, 0 }, { 12, 0 }, { 12, 0 }, { 12, 0 }, { 12, 0 }, { 13, 0 }, { 13, 0 }, + { 13, 0 }, { 13, 0 }, { 13, 0 }, { 14, 0 }, { 14, 0 }, { 14, 0 }, { 14, 0 }, + { 14, 0 }, { 15, 0 }, { 15, 0 }, { 15, 0 }, { 15, 0 }, { 15, 0 }, { 16, 0 }, + { 16, 0 }, { 16, 0 }, { 16, 0 }, { 16, 0 }, { 17, 0 }, { 17, 0 }, { 17, 0 }, + { 17, 0 }, { 17, 0 }, { 18, 0 }, { 18, 0 }, { 18, 0 }, { 18, 0 }, { 18, 0 }, + { 19, 0 }, { 19, 0 }, { 19, 0 }, { 19, 0 }, { 19, 0 }, { 20, 0 }, { 20, 0 }, + { 20, 0 }, { 20, 0 }, { 20, 0 }, { 21, 0 }, { 21, 0 }, { 21, 0 }, { 21, 0 }, + { 21, 0 }, { 21, 0 }, { 22, 0 }, { 22, 0 }, { 22, 0 }, { 22, 0 }, { 22, 0 }, + { 22, 0 }, { 22, 0 }, { 23, 0 }, { 23, 0 }, { 23, 0 }, { 23, 0 }, { 23, 0 }, + { 23, 0 }, { 23, 0 }, { 23, 0 }, { 24, 0 }, { 24, 0 }, { 24, 0 }, { 24, 0 }, + { 24, 0 }, { 24, 0 }, { 24, 0 }, { 24, 0 }, { 24, 0 }, { 24, 0 }, { 23, 1 }, + { 23, 1 }, { 23, 1 }, { 23, 1 }, { 23, 1 }, { 23, 1 }, { 23, 1 }, { 23, 1 }, + { 22, 2 }, { 22, 2 }, { 22, 2 }, { 22, 2 }, { 22, 2 }, { 22, 2 }, { 22, 2 }, + { 21, 3 }, { 21, 3 }, { 21, 3 }, { 21, 3 }, { 21, 3 }, { 21, 3 }, { 20, 4 }, + { 20, 4 }, { 20, 4 }, { 20, 4 }, { 20, 4 }, { 19, 5 }, { 19, 5 }, { 19, 5 }, + { 19, 5 }, { 19, 5 }, { 18, 6 }, { 18, 6 }, { 18, 6 }, { 18, 6 }, { 18, 6 }, + { 17, 7 }, { 17, 7 }, { 17, 7 }, { 17, 7 }, { 17, 7 }, { 16, 8 }, { 16, 8 }, + { 16, 8 }, { 16, 8 }, { 16, 8 }, { 15, 9 }, { 15, 9 }, { 15, 9 }, { 15, 9 }, + { 15, 9 }, { 14, 10 }, { 14, 10 }, { 14, 10 }, { 14, 10 }, { 14, 10 }, { 13, 11 }, + { 13, 11 }, { 13, 11 }, { 13, 11 }, { 13, 11 }, { 12, 12 }, { 12, 12 }, { 12, 12 }, + { 12, 12 }, { 12, 12 }, { 11, 13 }, { 11, 13 }, { 11, 13 }, { 11, 13 }, { 11, 13 }, + { 10, 14 }, { 10, 14 }, { 10, 14 }, { 10, 14 }, { 10, 14 }, { 9, 15 }, { 9, 15 }, + { 9, 15 }, { 9, 15 }, { 9, 15 }, { 8, 0 }, { 8, 0 }, { 8, 0 }, { 8, 0 }, + { 8, 0 }, { 7, 0 }, { 7, 0 }, { 7, 0 }, { 7, 0 }, { 7, 0 }, { 6, 0 }, + { 6, 0 }, { 6, 0 }, { 6, 0 }, { 6, 0 }, { 5, 15 }, { 5, 15 }, { 5, 15 }, + { 5, 15 }, { 5, 15 }, { 4, 14 }, { 4, 14 }, { 4, 14 }, { 4, 14 }, { 4, 14 }, + { 3, 13 }, { 3, 13 }, { 3, 13 }, { 3, 13 }, { 3, 13 }, { 2, 12 }, { 2, 12 }, + { 2, 12 }, { 2, 12 }, { 2, 12 }, { 1, 12 }, { 1, 12 }, { 1, 12 }, { 1, 12 }, + { 1, 12 }, { 0, 13 }, { 0, 13 }, { 0, 13 }, { 0, 13 }, { 0, 13 }, { 47, 14 }, + { 47, 14 }, { 47, 14 }, { 47, 14 }, { 47, 14 }, { 46, 15 }, { 46, 15 }, { 46, 15 }, + { 46, 15 }, { 46, 15 }, { 45, 0 }, { 45, 0 }, { 45, 0 }, { 45, 0 }, { 45, 0 }, + { 44, 1 }, { 44, 1 }, { 44, 1 }, { 44, 1 }, { 44, 1 }, { 43, 2 }, { 43, 2 }, + { 43, 2 }, { 43, 2 }, { 43, 2 }, { 42, 3 }, { 42, 3 }, { 42, 3 }, { 42, 3 }, + { 42, 3 }, { 41, 4 }, { 41, 4 }, { 41, 4 }, { 41, 4 }, { 41, 4 }, { 40, 5 }, + { 40, 5 }, { 40, 5 }, { 40, 5 }, { 40, 5 }, { 39, 6 }, { 39, 6 }, { 39, 6 }, + { 39, 6 }, { 39, 6 }, { 38, 7 }, { 38, 7 }, { 38, 7 }, { 38, 7 }, { 38, 7 }, + { 37, 8 }, { 37, 8 }, { 37, 8 }, { 37, 8 }, { 37, 8 }, { 36, 9 }, { 36, 9 }, + { 36, 9 }, { 36, 9 }, { 36, 9 }, { 35, 10 }, { 35, 10 }, { 35, 10 }, { 35, 10 }, + { 35, 10 }, { 34, 11 }, { 34, 11 }, { 34, 11 }, { 34, 11 }, { 34, 11 }, { 33, 12 }, + { 33, 12 }, { 33, 12 }, { 33, 12 }, { 33, 12 }, { 32, 13 }, { 32, 13 }, { 32, 13 }, + { 32, 13 }, { 32, 13 }, { 31, 14 }, { 31, 14 }, { 31, 14 }, { 31, 14 }, { 31, 14 }, + { 30, 15 }, { 30, 15 }, { 30, 15 }, { 30, 15 }, { 30, 15 }, { 29, 0 }, { 29, 0 }, + { 29, 0 }, { 29, 0 }, { 29, 0 }, { 28, 1 }, { 28, 1 }, { 28, 1 }, { 28, 1 }, + { 28, 1 }, { 27, 2 }, { 27, 2 }, { 27, 2 }, { 27, 2 }, { 27, 2 }, { 26, 3 }, + { 26, 3 }, { 26, 3 }, { 26, 3 }, { 26, 3 }, { 25, 3 }, { 25, 3 }, { 25, 3 }, + { 25, 3 }, { 25, 3 }, { 24, 3 }, { 24, 3 }, { 24, 3 }, { 24, 3 }, { 24, 3 }, + { 23, 2 }, { 23, 2 }, { 23, 2 }, { 23, 2 }, { 23, 2 }, { 22, 1 }, { 22, 1 }, + { 22, 1 }, { 22, 1 }, { 22, 1 }, { 22, 1 }, { 21, 0 }, { 21, 0 }, { 21, 0 }, + { 21, 0 }, { 21, 0 }, { 21, 0 }, { 21, 0 }, { 20, 0 }, { 20, 0 }, { 20, 0 }, + { 20, 0 }, { 20, 0 }, { 20, 0 }, { 20, 0 }, { 20, 0 }, { 20, 0 }, { 21, 0 }, + { 21, 0 }, { 21, 0 }, { 21, 0 }, { 21, 0 }, { 21, 0 }, { 21, 0 }, { 22, 0 }, + { 22, 0 }, { 22, 0 }, { 22, 0 }, { 22, 0 }, { 22, 0 }, { 23, 0 }, { 23, 0 }, + { 23, 0 }, { 23, 0 }, { 23, 0 }, { 24, 0 }, { 24, 0 }, { 24, 0 }, { 24, 0 }, + { 24, 0 }, { 25, 0 }, { 25, 0 }, { 25, 0 }, { 25, 0 }, { 25, 0 }, { 26, 0 }, + { 26, 0 }, { 26, 0 }, { 26, 0 }, { 26, 0 }, { 27, 0 }, { 27, 0 }, { 27, 0 }, + { 27, 0 }, { 27, 0 }, { 28, 0 }, { 28, 0 }, { 28, 0 }, { 28, 0 }, { 28, 0 }, + { 29, 0 }, { 29, 0 }, { 29, 0 }, { 29, 0 }, { 29, 0 }, { 30, 0 }, { 30, 0 }, + { 30, 0 }, { 30, 0 }, { 30, 0 }, { 31, 0 }, { 31, 0 }, { 31, 0 }, { 31, 0 }, + { 31, 0 }, { 32, 0 }, { 32, 0 }, { 32, 0 }, { 32, 0 }, { 32, 0 }, { 33, 0 }, + { 33, 0 }, { 33, 0 }, { 33, 0 }, { 33, 0 }, { 34, 0 }, { 34, 0 }, { 34, 0 }, + { 34, 0 }, { 34, 0 }, { 35, 0 }, { 35, 0 }, { 35, 0 }, { 35, 0 }, { 35, 0 }, + { 36, 0 }, { 36, 0 }, { 36, 0 }, { 36, 0 }, { 36, 0 }, { 37, 0 }, { 37, 0 }, + { 37, 0 }, { 37, 0 }, { 37, 0 }, { 38, 0 }, { 38, 0 }, { 38, 0 }, { 38, 0 }, + { 38, 0 }, { 39, 0 }, { 39, 0 }, { 39, 0 }, { 39, 0 }, { 39, 0 }, { 40, 0 }, + { 40, 0 }, { 40, 0 }, { 40, 0 }, { 40, 0 }, { 41, 0 }, { 41, 0 }, { 41, 0 }, + { 41, 0 }, { 41, 0 }, { 42, 0 }, { 42, 0 }, { 42, 0 }, { 42, 0 }, { 42, 0 }, + { 43, 0 }, { 43, 0 }, { 43, 0 }, { 43, 0 }, { 43, 0 }, { 44, 0 }, { 44, 0 }, + { 44, 0 }, { 44, 0 }, { 44, 0 }, { 45, 0 }, { 45, 0 }, { 45, 0 }, { 45, 0 }, + { 45, 0 }, { 46, 0 }, { 46, 0 }, { 46, 0 }, { 46, 0 }, { 46, 0 }, { 47, 0 }, + { 47, 0 }, { 47, 0 }, { 47, 0 }, { 47, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, + { 0xFF }, +}; + +/** rct2: 0x009A1751 */ +static const top_spin_time_to_sprite_map TopSpinTimeToSpriteMap_1[] = { + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 1, 0 }, { 1, 0 }, { 1, 0 }, { 1, 0 }, { 1, 0 }, + { 1, 0 }, { 1, 0 }, { 1, 0 }, { 2, 0 }, { 2, 0 }, { 2, 0 }, { 2, 0 }, + { 2, 0 }, { 2, 0 }, { 2, 0 }, { 3, 0 }, { 3, 0 }, { 3, 0 }, { 3, 0 }, + { 3, 0 }, { 3, 0 }, { 4, 0 }, { 4, 0 }, { 4, 0 }, { 4, 0 }, { 4, 0 }, + { 5, 0 }, { 5, 0 }, { 5, 0 }, { 5, 0 }, { 5, 0 }, { 6, 0 }, { 6, 0 }, + { 6, 0 }, { 6, 0 }, { 6, 0 }, { 7, 0 }, { 7, 0 }, { 7, 0 }, { 7, 0 }, + { 7, 0 }, { 8, 0 }, { 8, 0 }, { 8, 0 }, { 8, 0 }, { 8, 0 }, { 9, 0 }, + { 9, 0 }, { 9, 0 }, { 9, 0 }, { 9, 0 }, { 10, 0 }, { 10, 0 }, { 10, 0 }, + { 10, 0 }, { 10, 0 }, { 11, 0 }, { 11, 0 }, { 11, 0 }, { 11, 0 }, { 11, 0 }, + { 12, 0 }, { 12, 0 }, { 12, 0 }, { 12, 0 }, { 12, 0 }, { 13, 0 }, { 13, 0 }, + { 13, 0 }, { 13, 0 }, { 13, 0 }, { 14, 0 }, { 14, 0 }, { 14, 0 }, { 14, 0 }, + { 14, 0 }, { 15, 0 }, { 15, 0 }, { 15, 0 }, { 15, 0 }, { 15, 0 }, { 16, 0 }, + { 16, 0 }, { 16, 0 }, { 16, 0 }, { 16, 0 }, { 17, 0 }, { 17, 0 }, { 17, 0 }, + { 17, 0 }, { 17, 0 }, { 18, 0 }, { 18, 0 }, { 18, 0 }, { 18, 0 }, { 18, 0 }, + { 19, 0 }, { 19, 0 }, { 19, 0 }, { 19, 0 }, { 19, 0 }, { 20, 0 }, { 20, 0 }, + { 20, 0 }, { 20, 0 }, { 20, 0 }, { 21, 0 }, { 21, 0 }, { 21, 0 }, { 21, 0 }, + { 21, 0 }, { 21, 0 }, { 22, 0 }, { 22, 0 }, { 22, 0 }, { 22, 0 }, { 22, 0 }, + { 22, 0 }, { 22, 0 }, { 23, 0 }, { 23, 0 }, { 23, 0 }, { 23, 0 }, { 23, 0 }, + { 23, 0 }, { 23, 0 }, { 23, 0 }, { 24, 0 }, { 24, 0 }, { 24, 0 }, { 24, 0 }, + { 24, 0 }, { 24, 0 }, { 24, 0 }, { 24, 0 }, { 24, 0 }, { 24, 0 }, { 24, 1 }, + { 24, 1 }, { 24, 1 }, { 24, 1 }, { 24, 1 }, { 24, 1 }, { 24, 1 }, { 24, 2 }, + { 24, 2 }, { 24, 2 }, { 24, 2 }, { 24, 2 }, { 24, 2 }, { 24, 3 }, { 24, 3 }, + { 24, 3 }, { 24, 3 }, { 24, 3 }, { 24, 4 }, { 24, 4 }, { 24, 4 }, { 24, 4 }, + { 24, 4 }, { 24, 5 }, { 24, 5 }, { 24, 5 }, { 24, 5 }, { 24, 5 }, { 24, 6 }, + { 24, 6 }, { 24, 6 }, { 24, 6 }, { 24, 6 }, { 24, 7 }, { 24, 7 }, { 24, 7 }, + { 24, 7 }, { 24, 7 }, { 24, 8 }, { 24, 8 }, { 24, 8 }, { 24, 8 }, { 24, 8 }, + { 24, 9 }, { 24, 9 }, { 24, 9 }, { 24, 9 }, { 24, 9 }, { 24, 10 }, { 24, 10 }, + { 24, 10 }, { 24, 10 }, { 24, 10 }, { 24, 11 }, { 24, 11 }, { 24, 11 }, { 24, 11 }, + { 24, 11 }, { 24, 12 }, { 24, 12 }, { 24, 12 }, { 24, 12 }, { 24, 12 }, { 24, 13 }, + { 24, 13 }, { 24, 13 }, { 24, 13 }, { 24, 13 }, { 24, 14 }, { 24, 14 }, { 24, 14 }, + { 24, 14 }, { 24, 14 }, { 24, 15 }, { 24, 15 }, { 24, 15 }, { 24, 15 }, { 24, 15 }, + { 24, 0 }, { 24, 0 }, { 24, 0 }, { 24, 0 }, { 24, 0 }, { 24, 1 }, { 24, 1 }, + { 24, 1 }, { 24, 1 }, { 24, 1 }, { 24, 2 }, { 24, 2 }, { 24, 2 }, { 24, 2 }, + { 24, 2 }, { 24, 3 }, { 24, 3 }, { 24, 3 }, { 24, 3 }, { 24, 3 }, { 23, 4 }, + { 23, 4 }, { 23, 4 }, { 23, 4 }, { 23, 4 }, { 22, 4 }, { 22, 4 }, { 22, 4 }, + { 22, 4 }, { 22, 4 }, { 21, 4 }, { 21, 4 }, { 21, 4 }, { 21, 4 }, { 21, 4 }, + { 20, 4 }, { 20, 4 }, { 20, 4 }, { 20, 4 }, { 20, 4 }, { 19, 4 }, { 19, 4 }, + { 19, 4 }, { 19, 4 }, { 19, 4 }, { 18, 4 }, { 18, 4 }, { 18, 4 }, { 18, 4 }, + { 18, 4 }, { 17, 4 }, { 17, 4 }, { 17, 4 }, { 17, 4 }, { 17, 4 }, { 16, 4 }, + { 16, 4 }, { 16, 4 }, { 16, 4 }, { 16, 4 }, { 15, 4 }, { 15, 4 }, { 15, 4 }, + { 15, 4 }, { 15, 4 }, { 14, 5 }, { 14, 5 }, { 14, 5 }, { 14, 5 }, { 14, 5 }, + { 13, 6 }, { 13, 6 }, { 13, 6 }, { 13, 6 }, { 13, 6 }, { 12, 7 }, { 12, 7 }, + { 12, 7 }, { 12, 7 }, { 12, 7 }, { 12, 8 }, { 12, 8 }, { 12, 8 }, { 12, 8 }, + { 12, 8 }, { 12, 9 }, { 12, 9 }, { 12, 9 }, { 12, 9 }, { 12, 9 }, { 12, 10 }, + { 12, 10 }, { 12, 10 }, { 12, 10 }, { 12, 10 }, { 12, 11 }, { 12, 11 }, { 12, 11 }, + { 12, 11 }, { 12, 11 }, { 12, 12 }, { 12, 12 }, { 12, 12 }, { 12, 12 }, { 12, 12 }, + { 13, 12 }, { 13, 12 }, { 13, 12 }, { 13, 12 }, { 13, 12 }, { 14, 12 }, { 14, 12 }, + { 14, 12 }, { 14, 12 }, { 14, 12 }, { 15, 12 }, { 15, 12 }, { 15, 12 }, { 15, 12 }, + { 15, 12 }, { 16, 12 }, { 16, 12 }, { 16, 12 }, { 16, 12 }, { 16, 12 }, { 17, 12 }, + { 17, 12 }, { 17, 12 }, { 17, 12 }, { 17, 12 }, { 18, 12 }, { 18, 12 }, { 18, 12 }, + { 18, 12 }, { 18, 12 }, { 19, 12 }, { 19, 12 }, { 19, 12 }, { 19, 12 }, { 19, 12 }, + { 20, 12 }, { 20, 12 }, { 20, 12 }, { 20, 12 }, { 20, 12 }, { 21, 13 }, { 21, 13 }, + { 21, 13 }, { 21, 13 }, { 21, 13 }, { 22, 14 }, { 22, 14 }, { 22, 14 }, { 22, 14 }, + { 22, 14 }, { 23, 15 }, { 23, 15 }, { 23, 15 }, { 23, 15 }, { 23, 15 }, { 24, 0 }, + { 24, 0 }, { 24, 0 }, { 24, 0 }, { 24, 0 }, { 25, 1 }, { 25, 1 }, { 25, 1 }, + { 25, 1 }, { 25, 1 }, { 26, 2 }, { 26, 2 }, { 26, 2 }, { 26, 2 }, { 26, 2 }, + { 27, 3 }, { 27, 3 }, { 27, 3 }, { 27, 3 }, { 27, 3 }, { 28, 4 }, { 28, 4 }, + { 28, 4 }, { 28, 4 }, { 28, 4 }, { 29, 5 }, { 29, 5 }, { 29, 5 }, { 29, 5 }, + { 29, 5 }, { 30, 6 }, { 30, 6 }, { 30, 6 }, { 30, 6 }, { 30, 6 }, { 31, 7 }, + { 31, 7 }, { 31, 7 }, { 31, 7 }, { 31, 7 }, { 32, 8 }, { 32, 8 }, { 32, 8 }, + { 32, 8 }, { 32, 8 }, { 33, 9 }, { 33, 9 }, { 33, 9 }, { 33, 9 }, { 33, 9 }, + { 34, 10 }, { 34, 10 }, { 34, 10 }, { 34, 10 }, { 34, 10 }, { 35, 11 }, { 35, 11 }, + { 35, 11 }, { 35, 11 }, { 35, 11 }, { 36, 12 }, { 36, 12 }, { 36, 12 }, { 36, 12 }, + { 36, 12 }, { 37, 13 }, { 37, 13 }, { 37, 13 }, { 37, 13 }, { 37, 13 }, { 38, 14 }, + { 38, 14 }, { 38, 14 }, { 38, 14 }, { 38, 14 }, { 39, 15 }, { 39, 15 }, { 39, 15 }, + { 39, 15 }, { 39, 15 }, { 40, 0 }, { 40, 0 }, { 40, 0 }, { 40, 0 }, { 40, 0 }, + { 41, 0 }, { 41, 0 }, { 41, 0 }, { 41, 0 }, { 41, 0 }, { 42, 0 }, { 42, 0 }, + { 42, 0 }, { 42, 0 }, { 42, 0 }, { 43, 0 }, { 43, 0 }, { 43, 0 }, { 43, 0 }, + { 43, 0 }, { 44, 0 }, { 44, 0 }, { 44, 0 }, { 44, 0 }, { 44, 0 }, { 45, 0 }, + { 45, 0 }, { 45, 0 }, { 45, 0 }, { 45, 0 }, { 46, 0 }, { 46, 0 }, { 46, 0 }, + { 46, 0 }, { 46, 0 }, { 47, 0 }, { 47, 0 }, { 47, 0 }, { 47, 0 }, { 47, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 1, 15 }, { 1, 15 }, + { 1, 15 }, { 1, 15 }, { 1, 15 }, { 2, 14 }, { 2, 14 }, { 2, 14 }, { 2, 14 }, + { 2, 14 }, { 3, 13 }, { 3, 13 }, { 3, 13 }, { 3, 13 }, { 3, 13 }, { 4, 12 }, + { 4, 12 }, { 4, 12 }, { 4, 12 }, { 4, 12 }, { 5, 11 }, { 5, 11 }, { 5, 11 }, + { 5, 11 }, { 5, 11 }, { 6, 10 }, { 6, 10 }, { 6, 10 }, { 6, 10 }, { 6, 10 }, + { 7, 9 }, { 7, 9 }, { 7, 9 }, { 7, 9 }, { 7, 9 }, { 8, 8 }, { 8, 8 }, + { 8, 8 }, { 8, 8 }, { 8, 8 }, { 9, 7 }, { 9, 7 }, { 9, 7 }, { 9, 7 }, + { 9, 7 }, { 10, 6 }, { 10, 6 }, { 10, 6 }, { 10, 6 }, { 10, 6 }, { 11, 5 }, + { 11, 5 }, { 11, 5 }, { 11, 5 }, { 11, 5 }, { 12, 4 }, { 12, 4 }, { 12, 4 }, + { 12, 4 }, { 12, 4 }, { 13, 3 }, { 13, 3 }, { 13, 3 }, { 13, 3 }, { 13, 3 }, + { 14, 2 }, { 14, 2 }, { 14, 2 }, { 14, 2 }, { 14, 2 }, { 15, 1 }, { 15, 1 }, + { 15, 1 }, { 15, 1 }, { 15, 1 }, { 16, 0 }, { 16, 0 }, { 16, 0 }, { 16, 0 }, + { 16, 0 }, { 17, 0 }, { 17, 0 }, { 17, 0 }, { 17, 0 }, { 17, 0 }, { 17, 0 }, + { 17, 0 }, { 18, 0 }, { 18, 0 }, { 18, 0 }, { 18, 0 }, { 18, 0 }, { 18, 0 }, + { 18, 0 }, { 18, 0 }, { 18, 0 }, { 18, 0 }, { 17, 0 }, { 17, 0 }, { 17, 0 }, + { 17, 0 }, { 17, 0 }, { 17, 0 }, { 17, 0 }, { 16, 0 }, { 16, 0 }, { 16, 0 }, + { 16, 0 }, { 16, 0 }, { 15, 0 }, { 15, 0 }, { 15, 0 }, { 15, 0 }, { 15, 0 }, + { 14, 0 }, { 14, 0 }, { 14, 0 }, { 14, 0 }, { 14, 0 }, { 13, 0 }, { 13, 0 }, + { 13, 0 }, { 13, 0 }, { 13, 0 }, { 12, 0 }, { 12, 0 }, { 12, 0 }, { 12, 0 }, + { 12, 0 }, { 11, 0 }, { 11, 0 }, { 11, 0 }, { 11, 0 }, { 11, 0 }, { 10, 0 }, + { 10, 0 }, { 10, 0 }, { 10, 0 }, { 10, 0 }, { 9, 0 }, { 9, 0 }, { 9, 0 }, + { 9, 0 }, { 9, 0 }, { 8, 0 }, { 8, 0 }, { 8, 0 }, { 8, 0 }, { 8, 0 }, + { 7, 0 }, { 7, 0 }, { 7, 0 }, { 7, 0 }, { 7, 0 }, { 6, 0 }, { 6, 0 }, + { 6, 0 }, { 6, 0 }, { 6, 0 }, { 5, 0 }, { 5, 0 }, { 5, 0 }, { 5, 0 }, + { 5, 0 }, { 4, 0 }, { 4, 0 }, { 4, 0 }, { 4, 0 }, { 4, 0 }, { 3, 0 }, + { 3, 0 }, { 3, 0 }, { 3, 0 }, { 3, 0 }, { 2, 0 }, { 2, 0 }, { 2, 0 }, + { 2, 0 }, { 2, 0 }, { 1, 0 }, { 1, 0 }, { 1, 0 }, { 1, 0 }, { 1, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0xFF }, +}; + +/** rct2: 0x009A1CC6 */ +static const top_spin_time_to_sprite_map TopSpinTimeToSpriteMap_2[] = { + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 1, 0 }, { 1, 0 }, { 1, 0 }, { 1, 0 }, { 1, 0 }, + { 1, 0 }, { 1, 0 }, { 1, 0 }, { 2, 0 }, { 2, 0 }, { 2, 0 }, { 2, 0 }, + { 2, 0 }, { 2, 0 }, { 2, 0 }, { 3, 0 }, { 3, 0 }, { 3, 0 }, { 3, 0 }, + { 3, 0 }, { 3, 0 }, { 4, 0 }, { 4, 0 }, { 4, 0 }, { 4, 0 }, { 4, 0 }, + { 5, 0 }, { 5, 0 }, { 5, 0 }, { 5, 0 }, { 5, 0 }, { 6, 0 }, { 6, 0 }, + { 6, 0 }, { 6, 0 }, { 6, 0 }, { 7, 0 }, { 7, 0 }, { 7, 0 }, { 7, 0 }, + { 7, 0 }, { 8, 0 }, { 8, 0 }, { 8, 0 }, { 8, 0 }, { 8, 0 }, { 9, 0 }, + { 9, 0 }, { 9, 0 }, { 9, 0 }, { 9, 0 }, { 10, 0 }, { 10, 0 }, { 10, 0 }, + { 10, 0 }, { 10, 0 }, { 11, 0 }, { 11, 0 }, { 11, 0 }, { 11, 0 }, { 11, 0 }, + { 12, 0 }, { 12, 0 }, { 12, 0 }, { 12, 0 }, { 12, 0 }, { 13, 0 }, { 13, 0 }, + { 13, 0 }, { 13, 0 }, { 13, 0 }, { 14, 0 }, { 14, 0 }, { 14, 0 }, { 14, 0 }, + { 14, 0 }, { 15, 0 }, { 15, 0 }, { 15, 0 }, { 15, 0 }, { 15, 0 }, { 16, 0 }, + { 16, 0 }, { 16, 0 }, { 16, 0 }, { 16, 0 }, { 17, 0 }, { 17, 0 }, { 17, 0 }, + { 17, 0 }, { 17, 0 }, { 18, 0 }, { 18, 0 }, { 18, 0 }, { 18, 0 }, { 18, 0 }, + { 19, 0 }, { 19, 0 }, { 19, 0 }, { 19, 0 }, { 19, 0 }, { 20, 0 }, { 20, 0 }, + { 20, 0 }, { 20, 0 }, { 20, 0 }, { 21, 0 }, { 21, 0 }, { 21, 0 }, { 21, 0 }, + { 21, 0 }, { 21, 0 }, { 22, 0 }, { 22, 0 }, { 22, 0 }, { 22, 0 }, { 22, 0 }, + { 22, 0 }, { 22, 0 }, { 23, 0 }, { 23, 0 }, { 23, 0 }, { 23, 0 }, { 23, 0 }, + { 23, 0 }, { 23, 0 }, { 23, 0 }, { 24, 0 }, { 24, 0 }, { 24, 0 }, { 24, 0 }, + { 24, 0 }, { 24, 0 }, { 24, 0 }, { 24, 0 }, { 24, 0 }, { 24, 0 }, { 24, 1 }, + { 24, 1 }, { 24, 1 }, { 24, 1 }, { 24, 1 }, { 24, 1 }, { 24, 1 }, { 24, 2 }, + { 24, 2 }, { 24, 2 }, { 24, 2 }, { 24, 2 }, { 24, 2 }, { 24, 3 }, { 24, 3 }, + { 24, 3 }, { 24, 3 }, { 24, 3 }, { 24, 4 }, { 24, 4 }, { 24, 4 }, { 24, 4 }, + { 24, 4 }, { 24, 5 }, { 24, 5 }, { 24, 5 }, { 24, 5 }, { 24, 5 }, { 24, 6 }, + { 24, 6 }, { 24, 6 }, { 24, 6 }, { 24, 6 }, { 24, 7 }, { 24, 7 }, { 24, 7 }, + { 24, 7 }, { 24, 7 }, { 24, 8 }, { 24, 8 }, { 24, 8 }, { 24, 8 }, { 24, 8 }, + { 24, 9 }, { 24, 9 }, { 24, 9 }, { 24, 9 }, { 24, 9 }, { 24, 10 }, { 24, 10 }, + { 24, 10 }, { 24, 10 }, { 24, 10 }, { 24, 11 }, { 24, 11 }, { 24, 11 }, { 24, 11 }, + { 24, 11 }, { 24, 12 }, { 24, 12 }, { 24, 12 }, { 24, 12 }, { 24, 12 }, { 24, 13 }, + { 24, 13 }, { 24, 13 }, { 24, 13 }, { 24, 13 }, { 24, 14 }, { 24, 14 }, { 24, 14 }, + { 24, 14 }, { 24, 14 }, { 24, 15 }, { 24, 15 }, { 24, 15 }, { 24, 15 }, { 24, 15 }, + { 24, 0 }, { 24, 0 }, { 24, 0 }, { 24, 0 }, { 24, 0 }, { 24, 1 }, { 24, 1 }, + { 24, 1 }, { 24, 1 }, { 24, 1 }, { 24, 2 }, { 24, 2 }, { 24, 2 }, { 24, 2 }, + { 24, 2 }, { 24, 3 }, { 24, 3 }, { 24, 3 }, { 24, 3 }, { 24, 3 }, { 23, 4 }, + { 23, 4 }, { 23, 4 }, { 23, 4 }, { 23, 4 }, { 22, 4 }, { 22, 4 }, { 22, 4 }, + { 22, 4 }, { 22, 4 }, { 21, 4 }, { 21, 4 }, { 21, 4 }, { 21, 4 }, { 21, 4 }, + { 20, 4 }, { 20, 4 }, { 20, 4 }, { 20, 4 }, { 20, 4 }, { 19, 4 }, { 19, 4 }, + { 19, 4 }, { 19, 4 }, { 19, 4 }, { 18, 4 }, { 18, 4 }, { 18, 4 }, { 18, 4 }, + { 18, 4 }, { 17, 4 }, { 17, 4 }, { 17, 4 }, { 17, 4 }, { 17, 4 }, { 16, 4 }, + { 16, 4 }, { 16, 4 }, { 16, 4 }, { 16, 4 }, { 15, 4 }, { 15, 4 }, { 15, 4 }, + { 15, 4 }, { 15, 4 }, { 14, 5 }, { 14, 5 }, { 14, 5 }, { 14, 5 }, { 14, 5 }, + { 13, 6 }, { 13, 6 }, { 13, 6 }, { 13, 6 }, { 13, 6 }, { 12, 7 }, { 12, 7 }, + { 12, 7 }, { 12, 7 }, { 12, 7 }, { 12, 8 }, { 12, 8 }, { 12, 8 }, { 12, 8 }, + { 12, 8 }, { 12, 9 }, { 12, 9 }, { 12, 9 }, { 12, 9 }, { 12, 9 }, { 12, 10 }, + { 12, 10 }, { 12, 10 }, { 12, 10 }, { 12, 10 }, { 12, 11 }, { 12, 11 }, { 12, 11 }, + { 12, 11 }, { 12, 11 }, { 12, 12 }, { 12, 12 }, { 12, 12 }, { 12, 12 }, { 12, 12 }, + { 13, 12 }, { 13, 12 }, { 13, 12 }, { 13, 12 }, { 13, 12 }, { 14, 12 }, { 14, 12 }, + { 14, 12 }, { 14, 12 }, { 14, 12 }, { 15, 12 }, { 15, 12 }, { 15, 12 }, { 15, 12 }, + { 15, 12 }, { 16, 12 }, { 16, 12 }, { 16, 12 }, { 16, 12 }, { 16, 12 }, { 17, 12 }, + { 17, 12 }, { 17, 12 }, { 17, 12 }, { 17, 12 }, { 18, 12 }, { 18, 12 }, { 18, 12 }, + { 18, 12 }, { 18, 12 }, { 19, 12 }, { 19, 12 }, { 19, 12 }, { 19, 12 }, { 19, 12 }, + { 20, 12 }, { 20, 12 }, { 20, 12 }, { 20, 12 }, { 20, 12 }, { 21, 13 }, { 21, 13 }, + { 21, 13 }, { 21, 13 }, { 21, 13 }, { 22, 14 }, { 22, 14 }, { 22, 14 }, { 22, 14 }, + { 22, 14 }, { 23, 15 }, { 23, 15 }, { 23, 15 }, { 23, 15 }, { 23, 15 }, { 24, 0 }, + { 24, 0 }, { 24, 0 }, { 24, 0 }, { 24, 0 }, { 25, 1 }, { 25, 1 }, { 25, 1 }, + { 25, 1 }, { 25, 1 }, { 26, 2 }, { 26, 2 }, { 26, 2 }, { 26, 2 }, { 26, 2 }, + { 27, 3 }, { 27, 3 }, { 27, 3 }, { 27, 3 }, { 27, 3 }, { 28, 4 }, { 28, 4 }, + { 28, 4 }, { 28, 4 }, { 28, 4 }, { 29, 5 }, { 29, 5 }, { 29, 5 }, { 29, 5 }, + { 29, 5 }, { 30, 6 }, { 30, 6 }, { 30, 6 }, { 30, 6 }, { 30, 6 }, { 31, 7 }, + { 31, 7 }, { 31, 7 }, { 31, 7 }, { 31, 7 }, { 32, 8 }, { 32, 8 }, { 32, 8 }, + { 32, 8 }, { 32, 8 }, { 33, 9 }, { 33, 9 }, { 33, 9 }, { 33, 9 }, { 33, 9 }, + { 34, 10 }, { 34, 10 }, { 34, 10 }, { 34, 10 }, { 34, 10 }, { 35, 11 }, { 35, 11 }, + { 35, 11 }, { 35, 11 }, { 35, 11 }, { 36, 12 }, { 36, 12 }, { 36, 12 }, { 36, 12 }, + { 36, 12 }, { 37, 13 }, { 37, 13 }, { 37, 13 }, { 37, 13 }, { 37, 13 }, { 38, 14 }, + { 38, 14 }, { 38, 14 }, { 38, 14 }, { 38, 14 }, { 39, 15 }, { 39, 15 }, { 39, 15 }, + { 39, 15 }, { 39, 15 }, { 40, 0 }, { 40, 0 }, { 40, 0 }, { 40, 0 }, { 40, 0 }, + { 41, 0 }, { 41, 0 }, { 41, 0 }, { 41, 0 }, { 41, 0 }, { 42, 0 }, { 42, 0 }, + { 42, 0 }, { 42, 0 }, { 42, 0 }, { 43, 0 }, { 43, 0 }, { 43, 0 }, { 43, 0 }, + { 43, 0 }, { 44, 0 }, { 44, 0 }, { 44, 0 }, { 44, 0 }, { 44, 0 }, { 45, 0 }, + { 45, 0 }, { 45, 0 }, { 45, 0 }, { 45, 0 }, { 46, 0 }, { 46, 0 }, { 46, 0 }, + { 46, 0 }, { 46, 0 }, { 47, 0 }, { 47, 0 }, { 47, 0 }, { 47, 0 }, { 47, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 1, 15 }, { 1, 15 }, + { 1, 15 }, { 1, 15 }, { 1, 15 }, { 2, 14 }, { 2, 14 }, { 2, 14 }, { 2, 14 }, + { 2, 14 }, { 3, 13 }, { 3, 13 }, { 3, 13 }, { 3, 13 }, { 3, 13 }, { 4, 12 }, + { 4, 12 }, { 4, 12 }, { 4, 12 }, { 4, 12 }, { 5, 11 }, { 5, 11 }, { 5, 11 }, + { 5, 11 }, { 5, 11 }, { 6, 10 }, { 6, 10 }, { 6, 10 }, { 6, 10 }, { 6, 10 }, + { 7, 9 }, { 7, 9 }, { 7, 9 }, { 7, 9 }, { 7, 9 }, { 8, 8 }, { 8, 8 }, + { 8, 8 }, { 8, 8 }, { 8, 8 }, { 9, 7 }, { 9, 7 }, { 9, 7 }, { 9, 7 }, + { 9, 7 }, { 10, 6 }, { 10, 6 }, { 10, 6 }, { 10, 6 }, { 10, 6 }, { 11, 5 }, + { 11, 5 }, { 11, 5 }, { 11, 5 }, { 11, 5 }, { 12, 4 }, { 12, 4 }, { 12, 4 }, + { 12, 4 }, { 12, 4 }, { 13, 3 }, { 13, 3 }, { 13, 3 }, { 13, 3 }, { 13, 3 }, + { 14, 2 }, { 14, 2 }, { 14, 2 }, { 14, 2 }, { 14, 2 }, { 15, 1 }, { 15, 1 }, + { 15, 1 }, { 15, 1 }, { 15, 1 }, { 16, 0 }, { 16, 0 }, { 16, 0 }, { 16, 0 }, + { 16, 0 }, { 17, 15 }, { 17, 15 }, { 17, 15 }, { 17, 15 }, { 17, 15 }, { 18, 14 }, + { 18, 14 }, { 18, 14 }, { 18, 14 }, { 18, 14 }, { 19, 13 }, { 19, 13 }, { 19, 13 }, + { 19, 13 }, { 19, 13 }, { 20, 12 }, { 20, 12 }, { 20, 12 }, { 20, 12 }, { 20, 12 }, + { 21, 11 }, { 21, 11 }, { 21, 11 }, { 21, 11 }, { 21, 11 }, { 22, 10 }, { 22, 10 }, + { 22, 10 }, { 22, 10 }, { 22, 10 }, { 23, 9 }, { 23, 9 }, { 23, 9 }, { 23, 9 }, + { 23, 9 }, { 24, 8 }, { 24, 8 }, { 24, 8 }, { 24, 8 }, { 24, 8 }, { 25, 7 }, + { 25, 7 }, { 25, 7 }, { 25, 7 }, { 25, 7 }, { 26, 6 }, { 26, 6 }, { 26, 6 }, + { 26, 6 }, { 26, 6 }, { 27, 5 }, { 27, 5 }, { 27, 5 }, { 27, 5 }, { 27, 5 }, + { 28, 4 }, { 28, 4 }, { 28, 4 }, { 28, 4 }, { 28, 4 }, { 29, 3 }, { 29, 3 }, + { 29, 3 }, { 29, 3 }, { 29, 3 }, { 30, 2 }, { 30, 2 }, { 30, 2 }, { 30, 2 }, + { 30, 2 }, { 31, 1 }, { 31, 1 }, { 31, 1 }, { 31, 1 }, { 31, 1 }, { 32, 0 }, + { 32, 0 }, { 32, 0 }, { 32, 0 }, { 32, 0 }, { 33, 15 }, { 33, 15 }, { 33, 15 }, + { 33, 15 }, { 33, 15 }, { 34, 14 }, { 34, 14 }, { 34, 14 }, { 34, 14 }, { 34, 14 }, + { 35, 13 }, { 35, 13 }, { 35, 13 }, { 35, 13 }, { 35, 13 }, { 36, 12 }, { 36, 12 }, + { 36, 12 }, { 36, 12 }, { 36, 12 }, { 37, 11 }, { 37, 11 }, { 37, 11 }, { 37, 11 }, + { 37, 11 }, { 38, 10 }, { 38, 10 }, { 38, 10 }, { 38, 10 }, { 38, 10 }, { 39, 9 }, + { 39, 9 }, { 39, 9 }, { 39, 9 }, { 39, 9 }, { 40, 8 }, { 40, 8 }, { 40, 8 }, + { 40, 8 }, { 40, 8 }, { 41, 8 }, { 41, 8 }, { 41, 8 }, { 41, 8 }, { 41, 8 }, + { 41, 8 }, { 41, 8 }, { 42, 8 }, { 42, 8 }, { 42, 8 }, { 42, 8 }, { 42, 8 }, + { 42, 8 }, { 42, 8 }, { 42, 8 }, { 42, 8 }, { 42, 8 }, { 41, 8 }, { 41, 8 }, + { 41, 8 }, { 41, 8 }, { 41, 8 }, { 41, 8 }, { 41, 8 }, { 40, 8 }, { 40, 8 }, + { 40, 8 }, { 40, 8 }, { 40, 8 }, { 39, 9 }, { 39, 9 }, { 39, 9 }, { 39, 9 }, + { 39, 9 }, { 38, 10 }, { 38, 10 }, { 38, 10 }, { 38, 10 }, { 38, 10 }, { 37, 11 }, + { 37, 11 }, { 37, 11 }, { 37, 11 }, { 37, 11 }, { 36, 12 }, { 36, 12 }, { 36, 12 }, + { 36, 12 }, { 36, 12 }, { 35, 13 }, { 35, 13 }, { 35, 13 }, { 35, 13 }, { 35, 13 }, + { 34, 14 }, { 34, 14 }, { 34, 14 }, { 34, 14 }, { 34, 14 }, { 33, 15 }, { 33, 15 }, + { 33, 15 }, { 33, 15 }, { 33, 15 }, { 32, 0 }, { 32, 0 }, { 32, 0 }, { 32, 0 }, + { 32, 0 }, { 31, 1 }, { 31, 1 }, { 31, 1 }, { 31, 1 }, { 31, 1 }, { 30, 2 }, + { 30, 2 }, { 30, 2 }, { 30, 2 }, { 30, 2 }, { 29, 3 }, { 29, 3 }, { 29, 3 }, + { 29, 3 }, { 29, 3 }, { 28, 4 }, { 28, 4 }, { 28, 4 }, { 28, 4 }, { 28, 4 }, + { 27, 5 }, { 27, 5 }, { 27, 5 }, { 27, 5 }, { 27, 5 }, { 26, 6 }, { 26, 6 }, + { 26, 6 }, { 26, 6 }, { 26, 6 }, { 25, 7 }, { 25, 7 }, { 25, 7 }, { 25, 7 }, + { 25, 7 }, { 24, 8 }, { 24, 8 }, { 24, 8 }, { 24, 8 }, { 24, 8 }, { 23, 9 }, + { 23, 9 }, { 23, 9 }, { 23, 9 }, { 23, 9 }, { 22, 10 }, { 22, 10 }, { 22, 10 }, + { 22, 10 }, { 22, 10 }, { 21, 11 }, { 21, 11 }, { 21, 11 }, { 21, 11 }, { 21, 11 }, + { 20, 12 }, { 20, 12 }, { 20, 12 }, { 20, 12 }, { 20, 12 }, { 19, 13 }, { 19, 13 }, + { 19, 13 }, { 19, 13 }, { 19, 13 }, { 18, 14 }, { 18, 14 }, { 18, 14 }, { 18, 14 }, + { 18, 14 }, { 17, 15 }, { 17, 15 }, { 17, 15 }, { 17, 15 }, { 17, 15 }, { 16, 0 }, + { 16, 0 }, { 16, 0 }, { 16, 0 }, { 16, 0 }, { 15, 1 }, { 15, 1 }, { 15, 1 }, + { 15, 1 }, { 15, 1 }, { 14, 2 }, { 14, 2 }, { 14, 2 }, { 14, 2 }, { 14, 2 }, + { 13, 3 }, { 13, 3 }, { 13, 3 }, { 13, 3 }, { 13, 3 }, { 12, 2 }, { 12, 2 }, + { 12, 2 }, { 12, 2 }, { 12, 2 }, { 11, 1 }, { 11, 1 }, { 11, 1 }, { 11, 1 }, + { 11, 1 }, { 10, 0 }, { 10, 0 }, { 10, 0 }, { 10, 0 }, { 10, 0 }, { 9, 15 }, + { 9, 15 }, { 9, 15 }, { 9, 15 }, { 9, 15 }, { 8, 14 }, { 8, 14 }, { 8, 14 }, + { 8, 14 }, { 8, 14 }, { 7, 13 }, { 7, 13 }, { 7, 13 }, { 7, 13 }, { 7, 13 }, + { 6, 14 }, { 6, 14 }, { 6, 14 }, { 6, 14 }, { 6, 14 }, { 5, 15 }, { 5, 15 }, + { 5, 15 }, { 5, 15 }, { 5, 15 }, { 4, 0 }, { 4, 0 }, { 4, 0 }, { 4, 0 }, + { 4, 0 }, { 3, 1 }, { 3, 1 }, { 3, 1 }, { 3, 1 }, { 3, 1 }, { 2, 2 }, + { 2, 2 }, { 2, 2 }, { 2, 2 }, { 2, 2 }, { 1, 1 }, { 1, 1 }, { 1, 1 }, + { 1, 1 }, { 1, 1 }, { 1, 1 }, { 1, 1 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, { 0, 0 }, + { 0xFF }, +}; + +/** rct2: 0x009A12E0 */ +const top_spin_time_to_sprite_map * TopSpinTimeToSpriteMaps[] = { + TopSpinTimeToSpriteMap_0, + TopSpinTimeToSpriteMap_1, + TopSpinTimeToSpriteMap_2, +}; diff --git a/src/ride/vehicle_data.h b/src/ride/vehicle_data.h new file mode 100644 index 0000000000..afc1336587 --- /dev/null +++ b/src/ride/vehicle_data.h @@ -0,0 +1,29 @@ +#pragma region Copyright (c) 2014-2016 OpenRCT2 Developers +/***************************************************************************** + * OpenRCT2, an open source clone of Roller Coaster Tycoon 2. + * + * OpenRCT2 is the work of many authors, a full list can be found in contributors.md + * For more information, visit https://github.com/OpenRCT2/OpenRCT2 + * + * OpenRCT2 is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * A full copy of the GNU General Public License can be found in licence.txt + *****************************************************************************/ +#pragma endregion + +#ifndef _VEHICLE_DATA_H +#define _VEHICLE_DATA_H + +#include "../common.h" + +typedef struct top_spin_time_to_sprite_map { + uint8 arm_rotation; + uint8 bank_rotation; +} top_spin_time_to_sprite_map; + +extern const top_spin_time_to_sprite_map * TopSpinTimeToSpriteMaps[]; + +#endif