From 2e319c4dd6b7a4cd40b622b7ddd681acbfe77429 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Janiszewski?= Date: Sat, 30 Jul 2016 13:17:59 +0200 Subject: [PATCH 01/13] Fix CMake flags setup --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 405abc5e32..2bb0da725b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -80,7 +80,7 @@ if (FORCE64) set(TARGET_M "-m64") set(OBJ_FORMAT "elf64-x86-64") set(LINKER_SCRIPT "ld_script_x86_64.xc") - list(APPEND CMAKE_C_FLAGS "-Wno-error=pointer-to-int-cast -Wno-error=int-to-pointer-cast") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-error=pointer-to-int-cast -Wno-error=int-to-pointer-cast") else () set(TARGET_M "-m32") set(OBJ_FORMAT "elf32-i386") From e6575f09ea719bd4ec0de433a0c3bd673c2eb5f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Janiszewski?= Date: Sat, 30 Jul 2016 13:18:47 +0200 Subject: [PATCH 02/13] Integrate scrolling text position offsets --- src/drawing/scrolling_text.c | 198 ++++++++++++++++++++++++++++++++++- 1 file changed, 193 insertions(+), 5 deletions(-) diff --git a/src/drawing/scrolling_text.c b/src/drawing/scrolling_text.c index d47520ba47..db2a4b16f5 100644 --- a/src/drawing/scrolling_text.c +++ b/src/drawing/scrolling_text.c @@ -37,8 +37,8 @@ assert_struct_size(rct_draw_scroll_text, 0xA12); rct_draw_scroll_text *gDrawScrollTextList = RCT2_ADDRESS(RCT2_ADDRESS_DRAW_SCROLL_LIST, rct_draw_scroll_text); uint8 *gCharacterBitmaps = RCT2_ADDRESS(RCT2_ADDRESS_CHARACTER_BITMAP, uint8); -void scrolling_text_set_bitmap_for_sprite(utf8 *text, int scroll, uint8 *bitmap, sint16 *scrollPositionOffsets); -void scrolling_text_set_bitmap_for_ttf(utf8 *text, int scroll, uint8 *bitmap, sint16 *scrollPositionOffsets); +void scrolling_text_set_bitmap_for_sprite(utf8 *text, int scroll, uint8 *bitmap, const sint16 *scrollPositionOffsets); +void scrolling_text_set_bitmap_for_ttf(utf8 *text, int scroll, uint8 *bitmap, const sint16 *scrollPositionOffsets); void scrolling_text_initialise_bitmaps() { @@ -130,6 +130,194 @@ static void scrolling_text_format(utf8 *dst, rct_draw_scroll_text *scrollText) extern bool TempForScrollText; +static const sint16 _scrollpos0[] = { + 803, 804, 741, 742, 679, 680, 617, 618, 555, 556, 493, 494, 431, 432, 369, 370, 307, 308, 245, 246, 183, 184, + 121, 122, + -1 +}; +static const sint16 _scrollpos1[] = { + 69, 70, 135, 136, 201, 202, 267, 268, 333, 334, 399, 400, 465, 466, 531, 532, 597, 598, 663, 664, 729, 730, 795, + 796, -1 +}; +static const sint16 _scrollpos2[] = { + 76, 77, 142, 143, 208, 209, 274, 275, 340, 341, 406, 407, 472, 473, 538, 539, 604, 605, 670, 671, 672, 609, 610, + 547, 548, + 485, 486, 423, 424, 361, 362, 299, 300, 237, 238, 175, 176, 113, 114, -1 +}; +static const sint16 _scrollpos3[] = { + 16, 81, 82, 147, 212, 213, 278, 343, 344, 409, 410, 475, 476, 541, 542, 607, 608, 673, 674, 739, 740, 805, 806, + 871, 872, 937, 938, 939, 1004, 1005, 1006, 1071, 1072, -1 +}; +static const sint16 _scrollpos4[] = { + 1103, 1104, 1041, 1042, 1043, 980, 981, 982, 919, 920, 857, 858, 795, 796, 733, 734, 671, 672, 609, 610, 547, + 548, 485, 486, 423, 424, 361, 298, 299, 236, 173, 174, 111, 48, -1 +}; +static const sint16 _scrollpos5[] = { + 772, 773, 710, 711, 648, 649, 586, 587, 524, 525, 462, 463, 400, 401, 338, 339, 276, 277, 214, 215, 152, 153, + 90, 91, -1 +}; +static const sint16 _scrollpos6[] = { + 100, 101, 166, 167, 232, 233, 298, 299, 364, 365, 430, 431, 496, 497, 562, 563, 628, 629, 694, 695, 760, 761, + 826, 827, -1 +}; +static const sint16 _scrollpos7[] = { + 712, 713, 650, 651, 588, 589, 526, 527, 464, 465, 402, 403, 340, 341, 278, 279, 216, 217, 154, 155, 92, 93, -1 +}; +static const sint16 _scrollpos8[] = { + 164, 165, 230, 231, 296, 297, 362, 363, 428, 429, 494, 495, 560, 561, 626, 627, 692, 693, 758, 759, -1 +}; +static const sint16 _scrollpos9[] = { + 587, 588, 589, 590, 591, 528, 529, 466, 467, 468, 405, 406, 343, 280, 281, 218, 219, 156, 93, -1 +}; +static const sint16 _scrollpos10[] = { + 98, 163, 228, 229, 294, 295, 360, 425, 426, 491, 492, 493, 558, 559, 624, 625, 626, 627, 628, -1 +}; +static const sint16 _scrollpos11[] = { + 654, 591, 592, 529, 530, 467, 468, 405, 406, 343, 344, 281, 282, 219, 220, 157, 158, 95, 96, 33, 34, -1 +}; +static const sint16 _scrollpos12[] = { + 97, 162, 163, 228, 229, 294, 295, 360, 361, 426, 427, 492, 493, 558, 559, 624, 625, 690, 691, 756, 757, -1 +}; +static const sint16 _scrollpos13[] = { + 716, 653, 654, 591, 592, 529, 530, 467, 468, 405, 406, 343, 344, 281, 282, 219, 220, 157, 158, 95, -1 +}; +static const sint16 _scrollpos14[] = { + 97, 162, 163, 228, 229, 294, 295, 360, 361, 426, 427, 492, 493, 558, 559, 624, 625, 690, 691, 756, 757, -1 +}; +static const sint16 _scrollpos15[] = { + 650, 651, 588, 589, 526, 527, 464, 465, 402, 403, 340, 341, 278, 279, 216, 217, 154, 155, 92, 93, 30, 31, -1 +}; +static const sint16 _scrollpos16[] = { + 33, 34, 99, 100, 165, 166, 231, 232, 297, 298, 363, 364, 429, 430, 495, 496, 561, 562, 627, 628, 693, 694, -1 +}; +static const sint16 _scrollpos17[] = { + 710, 711, 648, 649, 586, 587, 524, 525, 462, 463, 400, 401, 338, 339, 276, 277, 214, 215, 152, 153, 90, 91, 28, + 29, -1 +}; +static const sint16 _scrollpos18[] = { + 34, 35, 100, 101, 166, 167, 232, 233, 298, 299, 364, 365, 430, 431, 496, 497, 562, 563, 628, 629, 694, 695, 760, + 761, -1 +}; +static const sint16 _scrollpos19[] = { + 77, 78, 143, 144, 209, 210, 275, 276, 341, 342, 407, 408, 473, 474, 539, 540, 605, 606, 671, 672, 673, 610, 611, + 548, 549, 486, 487, 424, 425, 362, 363, 300, 301, 238, 239, 176, 177, 114, 115, -1 +}; +static const sint16 _scrollpos20[] = { + 76, 205, 270, 335, 400, 465, 466, 531, 532, 597, 598, 599, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, + 674, 675, 676, 677, 678, 615, 616, 617, 554, 555, 492, 493, 430, 367, 304, 241, -1 +}; +static const sint16 _scrollpos21[] = { + 76, 77, 142, 143, 208, 209, 274, 275, 340, 341, 406, 407, 472, 473, 538, 539, 604, 605, 670, 671, 672, 609, 610, + 547, 548, 485, 486, 423, 424, 361, 362, 299, 300, 237, 238, 175, 176, 113, -1 +}; +static const sint16 _scrollpos22[] = { + 80, 81, 146, 147, 212, 213, 278, 279, 344, 345, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, + 359, 360, 297, 298, 235, 236, 173, 174, 111, 112, -1 +}; +static const sint16 _scrollpos23[] = { + 79, 144, 145, 210, 275, 340, 341, 342, 407, 408, 409, 410, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, + 421, 422, 423, 424, 361, 362, 363, 300, 237, 238, 175, 112, -1 +}; +static const sint16 _scrollpos24[] = { + 584, 585, 522, 523, 460, 461, 398, 399, 336, 337, 274, 275, 212, 213, 150, 151, 88, 89, 26, 27, -1 +}; +static const sint16 _scrollpos25[] = { + 36, 37, 102, 103, 168, 169, 234, 235, 300, 301, 366, 367, 432, 433, 498, 499, 564, 565, 630, 631, -1 +}; +static const sint16 _scrollpos26[] = { + 836, 837, 774, 775, 712, 713, 650, 651, 588, 589, 526, 527, 464, 465, 402, 403, 340, 341, 278, 279, 216, 217, + 154, 155, 92, 93, 30, 31, -1 +}; +static const sint16 _scrollpos27[] = { + 32, 33, 98, 99, 164, 165, 230, 231, 296, 297, 362, 363, 428, 429, 494, 495, 560, 561, 626, 627, 692, 693, 758, + 759, 824, 825, 890, 891, -1 +}; +static const sint16 _scrollpos28[] = { + 838, 839, 776, 777, 714, 715, 652, 653, 590, 591, 528, 529, 466, 467, 404, 405, 342, 343, 280, 281, 218, 219, + 156, 157, 94, 95, 32, 33, -1 +}; +static const sint16 _scrollpos29[] = { + 30, 31, 96, 97, 162, 163, 228, 229, 294, 295, 360, 361, 426, 427, 492, 493, 558, 559, 624, 625, 690, 691, 756, + 757, 822, 823, 888, 889, -1 +}; +static const sint16 _scrollpos30[] = { + 1922, 1923, 1860, 1861, 1798, 1799, 1736, 1737, 1674, 1675, 1612, 1613, 1550, 1551, 1488, 1489, 1426, 1427, + 1364, 1365, 1302, 1303, 1240, 1241, 1178, 1179, 1116, 1117, 1054, 1055, 992, 993, 930, 931, 868, 869, 806, + 807, 744, 745, 682, 683, 620, 621, 558, 559, 496, 497, 434, 435, 372, 373, 310, 311, 248, 249, 186, 187, 124, + 125, 62, -1 +}; +static const sint16 _scrollpos31[] = { + 1, 66, 67, 132, 133, 198, 199, 264, 265, 330, 331, 396, 397, 462, 463, 528, 529, 594, 595, 660, 661, 726, 727, + 792, 793, 858, 859, 924, 925, 990, 991, 1056, 1057, 1122, 1123, 1188, 1189, 1254, 1255, 1320, + 1321, 1386, 1387, 1452, 1453, 1518, 1519, 1584, 1585, 1650, 1651, 1716, 1717, 1782, 1783, 1848, 1849, 1914, + 1915, 1980, 1981, -1 +}; +static const sint16 _scrollpos32[] = { + 12, 77, 78, 143, 144, 209, 210, 275, 276, 341, 342, 407, 408, 473, 474, 539, 540, 605, 606, 671, 672, 737, 738, + 803, 804, 869, 870, 935, 936, 1001, 1002, 1067, 1068, 1133, 1134, 1199, 1200, 1265, 1266, -1 +}; +static const sint16 _scrollpos33[] = { + 1292, 1293, 1230, 1231, 1168, 1169, 1106, 1107, 1044, 1045, 982, 983, 920, 921, 858, 859, 796, 797, 734, 735, + 672, 673, 610, 611, 548, 549, 486, 487, 424, 425, 362, 363, 300, 301, 238, 239, 176, 177, 114, 115, -1 +}; +static const sint16 _scrollpos34[] = { + 898, 899, 836, 837, 774, 775, 712, 713, 650, 651, 588, 589, 526, 527, 464, 465, 402, 403, 340, 341, 278, 279, + 216, 217, 154, 155, 92, 93, 30, -1 +}; +static const sint16 _scrollpos35[] = { + 33, 34, 99, 100, 165, 166, 231, 232, 297, 298, 363, 364, 429, 430, 495, 496, 561, 562, 627, 628, 693, 694, 759, + 760, 825, 826, 891, 892, 957, -1 +}; +static const sint16 _scrollpos36[] = { + 4, 69, 134, 199, 200, 265, 330, 331, 396, 397, 462, 463, 528, 529, 594, 595, 660, 661, 662, 727, 728, 729, 794, + 795, 796, 797, 798, -1 +}; +static const sint16 _scrollpos37[] = { + 864, 801, 802, 803, 804, 741, 742, 743, 680, 681, 682, 619, 620, 557, 558, 495, 496, 433, 434, 371, 372, 309, + 246, 247, 184, 121, 58, -1 +}; + +static const sint16* _scrollPositions[38] = { + _scrollpos0, + _scrollpos1, + _scrollpos2, + _scrollpos3, + _scrollpos4, + _scrollpos5, + _scrollpos6, + _scrollpos7, + _scrollpos8, + _scrollpos9, + _scrollpos10, + _scrollpos11, + _scrollpos12, + _scrollpos13, + _scrollpos14, + _scrollpos15, + _scrollpos16, + _scrollpos17, + _scrollpos18, + _scrollpos19, + _scrollpos20, + _scrollpos21, + _scrollpos22, + _scrollpos23, + _scrollpos24, + _scrollpos25, + _scrollpos26, + _scrollpos27, + _scrollpos28, + _scrollpos29, + _scrollpos30, + _scrollpos31, + _scrollpos32, + _scrollpos33, + _scrollpos34, + _scrollpos35, + _scrollpos36, + _scrollpos37, +}; + /** * * rct2: 0x006C42D9 @@ -170,7 +358,7 @@ int scrolling_text_setup(rct_string_id stringId, uint16 scroll, uint16 scrolling utf8 scrollString[256]; scrolling_text_format(scrollString, scrollText); - sint16* scrollingModePositions = RCT2_ADDRESS(RCT2_ADDRESS_SCROLLING_MODE_POSITIONS, sint16*)[scrollingMode]; + const sint16* scrollingModePositions = _scrollPositions[scrollingMode]; memset(scrollText->bitmap, 0, 320 * 8); if (gUseTrueTypeFont) { @@ -184,7 +372,7 @@ int scrolling_text_setup(rct_string_id stringId, uint16 scroll, uint16 scrolling return imageId; } -void scrolling_text_set_bitmap_for_sprite(utf8 *text, int scroll, uint8 *bitmap, sint16 *scrollPositionOffsets) +void scrolling_text_set_bitmap_for_sprite(utf8 *text, int scroll, uint8 *bitmap, const sint16 *scrollPositionOffsets) { uint8 characterColour = scrolling_text_get_colour(gCommonFormatArgs[7]); @@ -233,7 +421,7 @@ void scrolling_text_set_bitmap_for_sprite(utf8 *text, int scroll, uint8 *bitmap, } } -void scrolling_text_set_bitmap_for_ttf(utf8 *text, int scroll, uint8 *bitmap, sint16 *scrollPositionOffsets) +void scrolling_text_set_bitmap_for_ttf(utf8 *text, int scroll, uint8 *bitmap, const sint16 *scrollPositionOffsets) { TTFFontDescriptor *fontDesc = ttf_get_font_from_sprite_base(FONT_SPRITE_BASE_TINY); if (fontDesc->font == NULL) { From ddb72b6f225df768d6ad76fb6d94b9c72cdc1595 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Janiszewski?= Date: Sat, 30 Jul 2016 13:19:07 +0200 Subject: [PATCH 03/13] Fix sprite pointers for 64 bit builds --- src/drawing/sprite.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/drawing/sprite.c b/src/drawing/sprite.c index 6400f91ecd..65c002f3a6 100644 --- a/src/drawing/sprite.c +++ b/src/drawing/sprite.c @@ -160,7 +160,7 @@ int gfx_load_g2() // Fix entry data offsets for (i = 0; i < g2.header.num_entries; i++) - g2.elements[i].offset += (int)g2.data; + g2.elements[i].offset += (uintptr_t)g2.data; // Successful return 1; @@ -563,7 +563,7 @@ void FASTCALL gfx_draw_sprite_palette_set_software(rct_drawpixelinfo *dpi, int i source_pointer = g1_source->offset; uint8* new_source_pointer_start = malloc(total_no_pixels); uint8* new_source_pointer = new_source_pointer_start;// 0x9E3D28; - int ebx, ecx; + intptr_t ebx, ecx; while (total_no_pixels>0){ sint8 no_pixels = *source_pointer; if (no_pixels >= 0){ @@ -582,8 +582,8 @@ void FASTCALL gfx_draw_sprite_palette_set_software(rct_drawpixelinfo *dpi, int i eax = (eax & 0xFF00) + *(source_pointer+1); total_no_pixels -= ecx; source_pointer += 2; - ebx = (uint32)new_source_pointer - eax; - eax = (uint32)source_pointer; + ebx = (uintptr_t)new_source_pointer - eax; + eax = (uintptr_t)source_pointer; source_pointer = (uint8*)ebx; ebx = eax; eax = 0; From b16b6814aa3a2b4ee6685bf3fff4600a806b1987 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Janiszewski?= Date: Sat, 30 Jul 2016 14:13:04 +0200 Subject: [PATCH 04/13] Fix pointer types for 64 bit builds --- src/drawing/drawing.c | 2 +- src/game.c | 8 ++++---- src/input.c | 4 +--- src/interface/viewport.c | 9 +++++---- src/scenario.c | 6 +++--- 5 files changed, 14 insertions(+), 15 deletions(-) diff --git a/src/drawing/drawing.c b/src/drawing/drawing.c index 2d371cad0a..9e57d3a475 100644 --- a/src/drawing/drawing.c +++ b/src/drawing/drawing.c @@ -144,7 +144,7 @@ void load_palette(){ uint32 palette = 0x5FC; - if ((sint32)water_type != -1){ + if ((intptr_t)water_type != -1){ palette = water_type->image_id; } diff --git a/src/game.c b/src/game.c index 81afd664ea..c942d398cd 100644 --- a/src/game.c +++ b/src/game.c @@ -142,7 +142,7 @@ void update_palette_effects() // change palette to lighter colour during lightning int palette = 1532; - if ((sint32)water_type != -1) { + if ((intptr_t)water_type != -1) { palette = water_type->image_id; } rct_g1_element g1_element = g1Elements[palette]; @@ -161,7 +161,7 @@ void update_palette_effects() // change palette back to normal after lightning int palette = 1532; - if ((sint32)water_type != -1) { + if ((intptr_t)water_type != -1) { palette = water_type->image_id; } @@ -188,7 +188,7 @@ void update_palette_effects() uint32 j = gPaletteEffectFrame; j = (((uint16)((~j / 2) * 128) * 15) >> 16); int p = 1533; - if ((sint32)water_type != -1) { + if ((intptr_t)water_type != -1) { p = water_type->var_06; } rct_g1_element g1_element = g1Elements[q + p]; @@ -207,7 +207,7 @@ void update_palette_effects() } p = 1536; - if ((sint32)water_type != -1) { + if ((intptr_t)water_type != -1) { p = water_type->var_0A; } g1_element = g1Elements[q + p]; diff --git a/src/input.c b/src/input.c index a9c9df6451..a68afe5d7e 100644 --- a/src/input.c +++ b/src/input.c @@ -1062,7 +1062,7 @@ void process_mouse_over(int x, int y) int widgetId; int cursorId; - int ebx, esi, edi, ebp; + int ebx, edi; cursorId = CURSOR_ARROW; set_map_tooltip_format_arg(0, rct_string_id, STR_NONE); @@ -1087,13 +1087,11 @@ void process_mouse_over(int x, int y) gCurrentToolWidget.window_classification, gCurrentToolWidget.window_number ); - ebp = (int)subWindow; if (subWindow == NULL) break; ebx = 0; edi = cursorId; - esi = (int)subWindow; // Window event WE_UNKNOWN_0E was called here, but no windows actually implemented a handler and // its not known what it was for cursorId = edi; diff --git a/src/interface/viewport.c b/src/interface/viewport.c index 249e4ac758..ed8b54b427 100644 --- a/src/interface/viewport.c +++ b/src/interface/viewport.c @@ -1244,7 +1244,8 @@ static bool sub_679074(rct_drawpixelinfo *dpi, int imageId, sint16 x, sint16 y) uint8 *source_pointer = image->offset; uint8 *new_source_pointer_start = malloc(total_no_pixels); uint8 *new_source_pointer = (*&new_source_pointer_start);// 0x9E3D28; - int ebx1, ecx; + intptr_t ebx1; + int ecx; while (total_no_pixels > 0) { sint8 no_pixels = *source_pointer; if (no_pixels >= 0) { @@ -1263,8 +1264,8 @@ static bool sub_679074(rct_drawpixelinfo *dpi, int imageId, sint16 x, sint16 y) eax = (eax & 0xFF00) + *(source_pointer + 1); total_no_pixels -= ecx; source_pointer += 2; - ebx1 = (uint32) new_source_pointer - eax; - eax = (uint32) source_pointer; + ebx1 = (uintptr_t) new_source_pointer - eax; + eax = (uintptr_t) source_pointer; source_pointer = (uint8 *) ebx1; ebx1 = eax; eax = 0; @@ -1273,7 +1274,7 @@ static bool sub_679074(rct_drawpixelinfo *dpi, int imageId, sint16 x, sint16 y) source_pointer = (uint8 *) ebx1; } - bool output = sub_679236_679662_679B0D_679FF1(ebx, image, new_source_pointer_start + (uint32) offset); + bool output = sub_679236_679662_679B0D_679FF1(ebx, image, new_source_pointer_start + (uintptr_t) offset); free(new_source_pointer_start); return output; diff --git a/src/scenario.c b/src/scenario.c index 450868f1c9..c45a44bdd9 100644 --- a/src/scenario.c +++ b/src/scenario.c @@ -218,7 +218,7 @@ void scenario_begin() } } else { rct_stex_entry* stex = g_stexEntries[0]; - if ((int)stex != -1) { + if ((intptr_t)stex != -1) { char *buffer = (char*)RCT2_ADDRESS_COMMON_STRING_FORMAT_BUFFER; // Set localised park name @@ -453,7 +453,7 @@ static void scenario_week_update() rct_water_type* water_type = (rct_water_type*)object_entry_groups[OBJECT_TYPE_WATER].chunks[0]; - if (month <= MONTH_APRIL && (sint32)water_type != -1 && water_type->var_0E & 1) { + if (month <= MONTH_APRIL && (intptr_t)water_type != -1 && water_type->var_0E & 1) { // 100 attempts at finding some water to create a few ducks at for (int i = 0; i < 100; i++) { if (scenario_create_ducks()) @@ -666,7 +666,7 @@ int scenario_prepare_for_save() s6Info->entry.flags = 255; rct_stex_entry* stex = g_stexEntries[0]; - if ((int)stex != 0xFFFFFFFF) { + if ((intptr_t)stex != -1) { format_string(buffer, stex->scenario_name, NULL); safe_strcpy(s6Info->name, buffer, sizeof(s6Info->name)); From a40b3c63af6b7454d08ae2ebd725d1aeb2693b63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Janiszewski?= Date: Sat, 30 Jul 2016 18:41:59 +0200 Subject: [PATCH 05/13] Convert loadsave dialog to new string format --- src/interface/window.h | 2 +- src/windows/loadsave.c | 15 +++++++-------- src/windows/text_input.c | 2 +- 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/src/interface/window.h b/src/interface/window.h index 1802060697..3b2fe2683d 100644 --- a/src/interface/window.h +++ b/src/interface/window.h @@ -686,7 +686,7 @@ void window_themes_open(); void window_title_editor_open(int tab); void window_title_command_editor_open(int command, bool insert); void window_tile_inspector_open(); -void window_text_input_open(rct_window* call_w, int call_widget, rct_string_id title, rct_string_id description, rct_string_id existing_text, uint32 existing_args, int maxLength); +void window_text_input_open(rct_window* call_w, int call_widget, rct_string_id title, rct_string_id description, rct_string_id existing_text, uintptr_t existing_args, int maxLength); void window_text_input_raw_open(rct_window* call_w, int call_widget, rct_string_id title, rct_string_id description, utf8string existing_text, int maxLength); rct_window *window_mapgen_open(); rct_window *window_loadsave_open(int type, char *defaultName); diff --git a/src/windows/loadsave.c b/src/windows/loadsave.c index bff202fb51..f6ebb3d2f6 100644 --- a/src/windows/loadsave.c +++ b/src/windows/loadsave.c @@ -289,7 +289,7 @@ static void window_loadsave_mouseup(rct_window *w, int widgetIndex) w->no_list_items = _listItemsCount; break; case WIDX_NEW: - window_text_input_open(w, WIDX_NEW, STR_NONE, STR_FILEBROWSER_NAME_PROMPT, STR_STRING, (uint32)&_defaultName, 64); + window_text_input_open(w, WIDX_NEW, STR_NONE, STR_FILEBROWSER_NAME_PROMPT, STR_STRING, (uintptr_t)&_defaultName, 64); break; case WIDX_BROWSE: if (browse(isSave, path)) @@ -477,12 +477,10 @@ static void window_loadsave_paint(rct_window *w, rct_drawpixelinfo *dpi) static void window_loadsave_scrollpaint(rct_window *w, rct_drawpixelinfo *dpi, int scrollIndex) { int i, y; - rct_string_id stringId, templateStringId = STR_PLACEHOLDER; - char *templateString; + rct_string_id stringId; gfx_fill_rect(dpi, dpi->x, dpi->y, dpi->x + dpi->width - 1, dpi->y + dpi->height - 1, ColourMapA[w->colours[1]].mid_light); - templateString = (char*)language_get_string(templateStringId); for (i = 0; i < w->no_list_items; i++) { y = i * 10; if (y > dpi->y + dpi->height) @@ -497,8 +495,9 @@ static void window_loadsave_scrollpaint(rct_window *w, rct_drawpixelinfo *dpi, i gfx_fill_rect(dpi, 0, y, 800, y + 9, 0x2000031); } - strcpy(templateString, _listItems[i].name); - gfx_draw_string_left(dpi, stringId, &templateStringId, 0, 0, y - 1); + set_format_arg(0, rct_string_id, STR_STRING); + set_format_arg(2, char*, _listItems[i].name); + gfx_draw_string_left(dpi, stringId, gCommonFormatArgs, 0, 0, y - 1); } } @@ -682,8 +681,8 @@ static void window_loadsave_select(rct_window *w, const char *path) if (_stricmp(extension, ".sv6") != 0 && _stricmp(extension, ".sc6") != 0) strcat(newName, ".sv6"); if (title_sequence_save_exists(gCurrentTitleSequence, newName)) { - set_format_arg(0, uint32, (uint32)&_listItems[w->selected_list_item].name); - window_text_input_open(w, WIDX_SCROLL, STR_FILEBROWSER_RENAME_SAVE_TITLE, STR_ERROR_EXISTING_NAME, STR_STRING, (uint32)_listItems[w->selected_list_item].name, TITLE_SEQUENCE_MAX_SAVE_LENGTH - 1); + set_format_arg(0, uint32, (intptr_t)&_listItems[w->selected_list_item].name); + window_text_input_open(w, WIDX_SCROLL, STR_FILEBROWSER_RENAME_SAVE_TITLE, STR_ERROR_EXISTING_NAME, STR_STRING, (uintptr_t)_listItems[w->selected_list_item].name, TITLE_SEQUENCE_MAX_SAVE_LENGTH - 1); } else { title_sequence_add_save(gCurrentTitleSequence, path, newName); diff --git a/src/windows/text_input.c b/src/windows/text_input.c index 2ba90d2882..8c0c7d1897 100644 --- a/src/windows/text_input.c +++ b/src/windows/text_input.c @@ -96,7 +96,7 @@ rct_windownumber calling_number = 0; int calling_widget = 0; int _maxInputLength; -void window_text_input_open(rct_window* call_w, int call_widget, rct_string_id title, rct_string_id description, rct_string_id existing_text, uint32 existing_args, int maxLength) +void window_text_input_open(rct_window* call_w, int call_widget, rct_string_id title, rct_string_id description, rct_string_id existing_text, uintptr_t existing_args, int maxLength) { _maxInputLength = maxLength; From a71e60bed5073a40e1876450a3fa334d5bf12378 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Janiszewski?= Date: Sat, 30 Jul 2016 20:49:07 +0200 Subject: [PATCH 06/13] Make window_start_textbox accept pointer argument --- src/interface/window.c | 2 +- src/interface/window.h | 2 +- src/windows/editor_object_selection.c | 2 +- src/windows/server_list.c | 2 +- src/windows/server_start.c | 6 +++--- src/windows/title_command_editor.c | 6 +++--- 6 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/interface/window.c b/src/interface/window.c index 2fc1a323f7..e5dfb0cb6f 100644 --- a/src/interface/window.c +++ b/src/interface/window.c @@ -2508,7 +2508,7 @@ void textinput_cancel() } } -void window_start_textbox(rct_window *call_w, int call_widget, rct_string_id existing_text, uint32 existing_args, int maxLength) +void window_start_textbox(rct_window *call_w, int call_widget, rct_string_id existing_text, char * existing_args, int maxLength) { if (gUsingWidgetTextBox) window_cancel_textbox(); diff --git a/src/interface/window.h b/src/interface/window.h index 3b2fe2683d..1372267d61 100644 --- a/src/interface/window.h +++ b/src/interface/window.h @@ -748,7 +748,7 @@ void textinput_cancel(); void window_move_and_snap(rct_window *w, int newWindowX, int newWindowY, int snapProximity); int window_can_resize(rct_window *w); -void window_start_textbox(rct_window *call_w, int call_widget, rct_string_id existing_text, uint32 existing_args, int maxLength); +void window_start_textbox(rct_window *call_w, int call_widget, rct_string_id existing_text, char *existing_args, int maxLength); void window_cancel_textbox(); void window_update_textbox_caret(); void window_update_textbox(); diff --git a/src/windows/editor_object_selection.c b/src/windows/editor_object_selection.c index ef6a0833a2..80e8954c88 100644 --- a/src/windows/editor_object_selection.c +++ b/src/windows/editor_object_selection.c @@ -846,7 +846,7 @@ static void window_editor_object_selection_mouseup(rct_window *w, int widgetInde break; case WIDX_FILTER_STRING_BUTTON: //window_text_input_open(w, widgetIndex, STR_OBJECT_SEARCH, STR_OBJECT_SEARCH_DESC, STR_STRING, (uint32)_filter_string, 40); - window_start_textbox(w, widgetIndex, STR_STRING, (uint32)_filter_string, 40); + window_start_textbox(w, widgetIndex, STR_STRING, _filter_string, 40); break; case WIDX_FILTER_CLEAR_BUTTON: memset(_filter_string, 0, sizeof(_filter_string)); diff --git a/src/windows/server_list.c b/src/windows/server_list.c index 69dc1c8c09..fb16c361ac 100644 --- a/src/windows/server_list.c +++ b/src/windows/server_list.c @@ -210,7 +210,7 @@ static void window_server_list_mouseup(rct_window *w, int widgetIndex) window_close(w); break; case WIDX_PLAYER_NAME_INPUT: - window_start_textbox(w, widgetIndex, STR_STRING, (uint32)_playerName, 63); + window_start_textbox(w, widgetIndex, STR_STRING, _playerName, 63); break; case WIDX_LIST:{ int serverIndex = w->selected_list_item; diff --git a/src/windows/server_start.c b/src/windows/server_start.c index 4b0f230d11..a72a453d9f 100644 --- a/src/windows/server_start.c +++ b/src/windows/server_start.c @@ -173,13 +173,13 @@ static void window_server_start_mouseup(rct_window *w, int widgetIndex) window_close(w); break; case WIDX_PORT_INPUT: - window_start_textbox(w, widgetIndex, STR_STRING, (uint32)_port, 6); + window_start_textbox(w, widgetIndex, STR_STRING, _port, 6); break; case WIDX_NAME_INPUT: - window_start_textbox(w, widgetIndex, STR_STRING, (uint32)_name, 64); + window_start_textbox(w, widgetIndex, STR_STRING, _name, 64); break; case WIDX_PASSWORD_INPUT: - window_start_textbox(w, widgetIndex, STR_STRING, (uint32)_password, 32); + window_start_textbox(w, widgetIndex, STR_STRING, _password, 32); break; case WIDX_MAXPLAYERS_INCREASE: if (gConfigNetwork.maxplayers < 255) { diff --git a/src/windows/title_command_editor.c b/src/windows/title_command_editor.c index 1044279f19..bb93b9b15f 100644 --- a/src/windows/title_command_editor.c +++ b/src/windows/title_command_editor.c @@ -258,13 +258,13 @@ static void window_title_command_editor_mouseup(rct_window *w, int widgetIndex) window_close(w); break; case WIDX_TEXTBOX_FULL: - window_start_textbox(w, widgetIndex, STR_STRING, (uint32)textbox1Buffer, 4); + window_start_textbox(w, widgetIndex, STR_STRING, textbox1Buffer, 4); break; case WIDX_TEXTBOX_X: - window_start_textbox(w, widgetIndex, STR_STRING, (uint32)textbox1Buffer, 4); + window_start_textbox(w, widgetIndex, STR_STRING, textbox1Buffer, 4); break; case WIDX_TEXTBOX_Y: - window_start_textbox(w, widgetIndex, STR_STRING, (uint32)textbox2Buffer, 4); + window_start_textbox(w, widgetIndex, STR_STRING, textbox2Buffer, 4); break; case WIDX_GET: if (command.command == TITLE_SCRIPT_LOCATION) { From 09a20524a5658c6a2e59d081d318156eb9f5c9d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Janiszewski?= Date: Sat, 30 Jul 2016 22:04:32 +0200 Subject: [PATCH 07/13] Integrate gRideProperties --- src/ride/ride.c | 94 +++++++++++++++++++++++++++++++++ src/ride/ride.h | 10 ++++ src/ride/track.c | 2 +- src/ride/track_design.c | 2 +- src/ride/vehicle.c | 2 +- src/windows/ride.c | 8 +-- src/windows/ride_construction.c | 2 +- 7 files changed, 112 insertions(+), 8 deletions(-) diff --git a/src/ride/ride.c b/src/ride/ride.c index 7ddbed6d0d..aae9d50941 100644 --- a/src/ride/ride.c +++ b/src/ride/ride.c @@ -124,6 +124,100 @@ uint8 gTypeToRideEntryIndexMap[TYPE_TO_RIDE_ENTRY_SLOTS]; #pragma endregion +const rct_ride_properties gRideProperties[91] = { + { 0xdc1046b7, 10, 27, 30, 17 }, + { 0xdc1046b7, 7, 27, 0, 0 }, + { 0xdc1046b7, 0, 0, 0, 0 }, + { 0xdc1046b7, 7, 27, 0, 0 }, + { 0xdc1046b7, 0, 0, 0, 0 }, + { 0xd4004214, 0, 0, 0, 0 }, + { 0xd4004217, 0, 0, 0, 0 }, + { 0xdc1046b5, 0, 0, 0, 0 }, + { 0x9c004845, 0, 0, 0, 0 }, + { 0x9c1046b5, 0, 0, 0, 0 }, + { 0xdc1046b7, 0, 0, 0, 0 }, + { 0x94104227, 0, 0, 0, 0 }, + { 0x9414430f, 10, 40, 0, 0 }, + { 0x9c1046b7, 0, 0, 0, 0 }, + { 0x9404410f, 0, 0, 0, 0 }, + { 0xdc1046b7, 10, 27, 26, 18 }, + { 0x9c1056b7, 0, 0, 0, 0 }, + { 0xdc1046b7, 0, 0, 0, 0 }, + { 0x94004005, 1, 4, 0, 0 }, + { 0xdc1046b7, 10, 12, 30, 25 }, + { 0x1044280c, 1, 16, 0, 0 }, + { 0xca90f, 1, 5, 0, 0 }, + { 0x94140805, 1, 10, 0, 0 }, + { 0x94104637, 0, 0, 0, 0 }, + { 0x94144635, 0, 0, 0, 0 }, + { 0x40c890f, 20, 180, 0, 0 }, + { 0x40dc10d, 7, 25, 0, 0 }, + { 0x40dc10f, 7, 15, 0, 0 }, + { 0x8ea908, 0, 0, 0, 0 }, + { 0x8ea908, 0, 0, 0, 0 }, + { 0x10ea908, 0, 0, 0, 0 }, + { 0x10ea908, 0, 0, 0, 0 }, + { 0xea909, 0, 0, 0, 0 }, + { 0x40dc108, 4, 25, 0, 0 }, + { 0xea909, 0, 0, 0, 0 }, + { 0xea909, 0, 0, 0, 0 }, + { 0x26ea908, 4, 4, 0, 0 }, + { 0x40d8109, 1, 3, 0, 0 }, + { 0x40dc108, 0, 0, 0, 0 }, + { 0x44dc108, 0, 0, 0, 0 }, + { 0x40dc10f, 0, 0, 0, 0 }, + { 0x40c8908, 0, 0, 0, 0 }, + { 0x9c1046a7, 7, 30, 30, 40 }, + { 0xb404410d, 0, 0, 0, 0 }, + { 0xdc1046b7, 10, 27, 26, 18 }, + { 0xea908, 0, 0, 0, 0 }, + { 0x40dc108, 3, 6, 0, 0 }, + { 0x4dc108, 0, 0, 0, 0 }, + { 0x6ea908, 8, 8, 0, 0 }, + { 0x44dc108, 0, 0, 0, 0 }, + { 0x941046a7, 0, 0, 0, 0 }, + { 0xdc1046b7, 10, 27, 30, 17 }, + { 0xdc1046b7, 0, 0, 0, 0 }, + { 0xdc1046b7, 0, 0, 0, 0 }, + { 0x9c1046b7, 0, 0, 0, 0 }, + { 0xdc1046b7, 10, 27, 30, 25 }, + { 0xdc1046b7, 10, 27, 30, 25 }, + { 0xdc1046b7, 10, 27, 30, 25 }, + { 0xdc1046b7, 10, 27, 30, 25 }, + { 0x9c1046b7, 0, 0, 0, 0 }, + { 0x94104637, 0, 0, 0, 0 }, + { 0x94104227, 0, 0, 0, 0 }, + { 0xdc1046b7, 10, 27, 30, 25 }, + { 0xd4004217, 0, 0, 0, 0 }, + { 0xdc1046b7, 10, 27, 30, 25 }, + { 0x9c1046b7, 0, 0, 0, 0 }, + { 0x9c1046b7, 10, 27, 30, 25 }, + { 0x90000807, 0, 0, 0, 0 }, + { 0xdc1046b7, 10, 27, 30, 17 }, + { 0x9414430f, 0, 0, 0, 0 }, + { 0x40c890b, 20, 180, 0, 0 }, + { 0x4dc108, 0, 0, 0, 0 }, + { 0x94104a27, 0, 0, 0, 0 }, + { 0xdc1046b7, 7, 27, 0, 0 }, + { 0xdc1056b7, 0, 0, 0, 0 }, + { 0x9c1046a7, 30, 50, 30, 40 }, + { 0x9c1046b7, 0, 0, 0, 0 }, + { 0x40dc10f, 7, 15, 0, 0 }, + { 0x94104057, 0, 0, 0, 0 }, + { 0x94104237, 0, 0, 0, 0 }, + { 0x8ea908, 0, 0, 0, 0 }, + { 0x41dc108, 10, 20, 0, 0 }, + { 0x10ea908, 0, 0, 0, 0 }, + { 0x8ea908, 0, 0, 0, 0 }, + { 0x10ea908, 0, 0, 0, 0 }, + { 0xdc1046b7, 10, 27, 30, 25 }, + { 0x9c1046b7, 10, 33, 30, 25 }, + { 0xdc1046b7, 0, 0, 0, 0 }, + { 0xdc1046b7, 0, 0, 0, 0 }, + { 0x9c1046b7, 0, 0, 0, 0 }, + { 0xdc1046b7, 10, 31, 26, 18 }, +}; + static const int RideInspectionInterval[] = { 10, 20, 30, 45, 60, 120, 0, 0 }; diff --git a/src/ride/ride.h b/src/ride/ride.h index 8f069fc633..8c786f57ed 100644 --- a/src/ride/ride.h +++ b/src/ride/ride.h @@ -883,6 +883,16 @@ enum { RIDE_SETTING_RIDE_TYPE, }; +typedef struct rct_ride_properties { + uint32 flags; + uint8 minValue; + uint8 maxValue; + uint8 maxBrakesSpeed; + uint8 accelaration; +} rct_ride_properties; + +extern const rct_ride_properties gRideProperties[91]; + #define MAX_RIDES 255 #define MAX_RIDE_MEASUREMENTS 8 diff --git a/src/ride/track.c b/src/ride/track.c index 8ddd3789bc..a14dbda557 100644 --- a/src/ride/track.c +++ b/src/ride/track.c @@ -622,7 +622,7 @@ static money32 track_place(int rideIndex, int type, int originX, int originY, in enabledTrackPieces |= rideEntry->enabledTrackPiecesB & gResearchedTrackTypesB[ride->type]; enabledTrackPieces <<= 32; enabledTrackPieces |= rideEntry->enabledTrackPiecesA & gResearchedTrackTypesA[ride->type]; - uint32 rideTypeFlags = RCT2_GLOBAL(RCT2_ADDRESS_RIDE_FLAGS + (ride->type * 8), uint32); + uint32 rideTypeFlags = gRideProperties[ride->type].flags; RCT2_GLOBAL(0x00F44068, uint32) = rideTypeFlags; if ((ride->lifecycle_flags & RIDE_LIFECYCLE_INDESTRUCTIBLE_TRACK) && type == 1) { diff --git a/src/ride/track_design.c b/src/ride/track_design.c index b8ef17a695..a99a1110f2 100644 --- a/src/ride/track_design.c +++ b/src/ride/track_design.c @@ -260,7 +260,7 @@ static rct_track_td6 *track_design_open_from_buffer(uint8 *src, size_t srcLength td6->var_50 = min( td6->var_50, - RCT2_GLOBAL(RCT2_ADDRESS_RIDE_FLAGS + 5 + (td6->type * 8), uint8) + gRideProperties[td6->type].maxValue ); // Set the element helper pointers diff --git a/src/ride/vehicle.c b/src/ride/vehicle.c index e218442651..0621deff3a 100644 --- a/src/ride/vehicle.c +++ b/src/ride/vehicle.c @@ -7201,7 +7201,7 @@ loc_6DAEB9: if ((trackType == TRACK_ELEM_FLAT && ride->type == RIDE_TYPE_REVERSE_FREEFALL_COASTER) || (trackType == TRACK_ELEM_POWERED_LIFT) ) { - vehicle->acceleration = RCT2_GLOBAL(RCT2_ADDRESS_RIDE_FLAGS + (ride->type * 8) + 7, uint8) << 16; + vehicle->acceleration = gRideProperties[ride->type].accelaration << 16; } if (trackType == TRACK_ELEM_BRAKE_FOR_DROP) { if (!vehicle->is_child) { diff --git a/src/windows/ride.c b/src/windows/ride.c index d0346e78ba..5fea45ad9f 100644 --- a/src/windows/ride.c +++ b/src/windows/ride.c @@ -3136,8 +3136,8 @@ static void window_ride_mode_tweak_increase(rct_window *w) { rct_ride *ride = get_ride(w->number); - uint8 maxValue = RCT2_GLOBAL(RCT2_ADDRESS_RIDE_FLAGS + (ride->type * 8) + 5, uint8); - uint8 minValue = gCheatsFastLiftHill ? 0 : RCT2_GLOBAL(RCT2_ADDRESS_RIDE_FLAGS + (ride->type * 8) + 4, uint8); + uint8 maxValue = gRideProperties[ride->type].maxValue; + uint8 minValue = gCheatsFastLiftHill ? 0 : gRideProperties[ride->type].minValue; if (ride->mode == RIDE_MODE_MAZE) { // Allow 64 people in mazes under non-cheat settings. The old maximum of 16 was too little for even moderately big mazes. maxValue = 64; @@ -3159,8 +3159,8 @@ static void window_ride_mode_tweak_decrease(rct_window *w) { rct_ride *ride = get_ride(w->number); - uint8 maxValue = RCT2_GLOBAL(RCT2_ADDRESS_RIDE_FLAGS + (ride->type * 8) + 5, uint8); - uint8 minValue = gCheatsFastLiftHill ? 0 : RCT2_GLOBAL(RCT2_ADDRESS_RIDE_FLAGS + (ride->type * 8) + 4, uint8); + uint8 maxValue = gRideProperties[ride->type].maxValue; + uint8 minValue = gCheatsFastLiftHill ? 0 : gRideProperties[ride->type].minValue; if (ride->mode == RIDE_MODE_MAZE) { // Allow 64 people in mazes under non-cheat settings. The old maximum of 16 was too little for even moderately big mazes. maxValue = 64; diff --git a/src/windows/ride_construction.c b/src/windows/ride_construction.c index 279361f211..aba6911387 100644 --- a/src/windows/ride_construction.c +++ b/src/windows/ride_construction.c @@ -1511,7 +1511,7 @@ static void window_ride_construction_mousedown(int widgetIndex, rct_window *w, r uint8 maxBrakesSpeed = 30; if (RCT2_GLOBAL(0x00F440D3, uint8) != 1) { brakesSpeedPtr = (uint8*)0x00F440CE; - maxBrakesSpeed = RCT2_GLOBAL(RCT2_ADDRESS_RIDE_FLAGS + 6 + (ride->type * 8), uint8); + maxBrakesSpeed = gRideProperties[ride->type].maxBrakesSpeed; } uint8 brakesSpeed = *brakesSpeedPtr + 2; if (brakesSpeed <= maxBrakesSpeed) { From 2b85801fc33409a3af04ea66b21f3aaafdbdd475 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Janiszewski?= Date: Sun, 31 Jul 2016 10:34:32 +0200 Subject: [PATCH 08/13] Integrate 97e1bc --- src/peep/peep.c | 192 ++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 177 insertions(+), 15 deletions(-) diff --git a/src/peep/peep.c b/src/peep/peep.c index c18494d462..8b824c1579 100644 --- a/src/peep/peep.c +++ b/src/peep/peep.c @@ -350,6 +350,168 @@ static const ride_rating NauseaMaximumThresholds[] = { 300, 600, 800, 1000 }; +// Has to use signed types +static const rct_xy16 _97e1bc_21[64] = { + { 56, 8 }, + { 8, 8 }, + { 8, 32 }, + { 32, 32 }, + { 8, 8 }, + { 8, 8 }, + { 8, 32 }, + { 32, 32 }, + { 8, 32 }, + { 8, 32 }, + { 8, 32 }, + { 32, 32 }, + { 8, 56 }, + { 8, 32 }, + { 8, 32 }, + { 32, 32 }, + { 56, 24 }, + { 32, 24 }, + { 32, 24 }, + { 32, 0 }, + { 56, -24 }, + { 56, 24 }, + { 32, 24 }, + { 32, 0 }, + { 8, 24 }, + { 32, 24 }, + { 32, 24 }, + { 32, 0 }, + { 32, 24 }, + { 32, 24 }, + { 32, 24 }, + { 32, 0 }, + { 24, 0 }, + { 24, 0 }, + { 24, 0 }, + { 0, 0 }, + { 24, -24 }, + { 24, 0 }, + { 24, 0 }, + { 0, 0 }, + { -24, -24 }, + { 24, -24 }, + { 24, 0 }, + { 0, 0 }, + { 24, 24 }, + { 24, 0 }, + { 24, 0 }, + { 0, 0 }, + { 24, 8 }, + { 0, 8 }, + { 0, 8 }, + { 0, 32 }, + { 0, 8 }, + { 0, 8 }, + { 0, 8 }, + { 0, 32 }, + { -24, 8 }, + { 0, 8 }, + { 0, 8 }, + { 0, 32 }, + { -24, 56 }, + { -24, 8 }, + { 0, 8 }, + { 0, 32 }, +}; + +static const rct_xy16 * _97e1bc[91] = { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + _97e1bc_21, // RIDE_TYPE_SPIRAL_SLIDE + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, +}; + int peep_get_staff_count() { uint16 spriteIndex; @@ -2163,10 +2325,10 @@ static void peep_update_ride_sub_state_1(rct_peep* peep){ x *= 32; y *= 32; - sint8* edx = peep->var_37 * 2 + RCT2_ADDRESS(0x97E1BC, sint8*)[ride->type]; + const rct_xy16 edx = _97e1bc[ride->type][peep->var_37]; - x += edx[0]; - y += edx[1]; + x += edx.x; + y += edx.y; peep->destination_x = x; peep->destination_y = y; @@ -3071,10 +3233,10 @@ static void peep_update_ride_sub_state_14(rct_peep* peep){ x *= 32; y *= 32; - sint8* edx = peep->var_37 * 2 + RCT2_ADDRESS(0x97E1BC, sint8*)[ride->type]; - x += edx[0]; - y += edx[1]; + const rct_xy16 edx = _97e1bc[ride->type][peep->var_37]; + x += edx.x; + y += edx.y; peep->destination_x = x; peep->destination_y = y; @@ -3089,10 +3251,10 @@ static void peep_update_ride_sub_state_14(rct_peep* peep){ x *= 32; y *= 32; - sint8* edx = peep->var_37 * 2 + RCT2_ADDRESS(0x97E1BC, sint8*)[ride->type]; - x += edx[0]; - y += edx[1]; + const rct_xy16 edx = _97e1bc[ride->type][peep->var_37]; + x += edx.x; + y += edx.y; peep->destination_x = x; peep->destination_y = y; @@ -3175,10 +3337,10 @@ static void peep_update_ride_sub_state_15(rct_peep* peep){ x *= 32; y *= 32; - sint8* edx = peep->var_37 * 2 + RCT2_ADDRESS(0x97E1BC, sint8*)[ride->type]; - x += edx[0]; - y += edx[1]; + const rct_xy16 edx = _97e1bc[ride->type][peep->var_37]; + x += edx.x; + y += edx.y; peep->destination_x = x; peep->destination_y = y; @@ -3213,10 +3375,10 @@ static void peep_update_ride_sub_state_16(rct_peep* peep){ x *= 32; y *= 32; - sint8* edx = peep->var_37 * 2 + RCT2_ADDRESS(0x97E1BC, sint8*)[ride->type]; - x += edx[0]; - y += edx[1]; + const rct_xy16 edx = _97e1bc[ride->type][peep->var_37]; + x += edx.x; + y += edx.y; peep->destination_x = x; peep->destination_y = y; From ec8ac1a80583edf21216ba0638034e018808a802 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Janiszewski?= Date: Sun, 31 Jul 2016 11:42:14 +0200 Subject: [PATCH 09/13] Change the way scrolling text positions are stored --- src/drawing/scrolling_text.c | 1214 ++++++++++++++++++++++++++++++++-- 1 file changed, 1144 insertions(+), 70 deletions(-) diff --git a/src/drawing/scrolling_text.c b/src/drawing/scrolling_text.c index db2a4b16f5..dd85d6e27d 100644 --- a/src/drawing/scrolling_text.c +++ b/src/drawing/scrolling_text.c @@ -130,151 +130,1225 @@ static void scrolling_text_format(utf8 *dst, rct_draw_scroll_text *scrollText) extern bool TempForScrollText; +#define SCROLL_POS(x, y) ((y * 64) + x) + static const sint16 _scrollpos0[] = { - 803, 804, 741, 742, 679, 680, 617, 618, 555, 556, 493, 494, 431, 432, 369, 370, 307, 308, 245, 246, 183, 184, - 121, 122, - -1 + SCROLL_POS( 35, 12 ), + SCROLL_POS( 36, 12 ), + SCROLL_POS( 37, 11 ), + SCROLL_POS( 38, 11 ), + SCROLL_POS( 39, 10 ), + SCROLL_POS( 40, 10 ), + SCROLL_POS( 41, 9 ), + SCROLL_POS( 42, 9 ), + SCROLL_POS( 43, 8 ), + SCROLL_POS( 44, 8 ), + SCROLL_POS( 45, 7 ), + SCROLL_POS( 46, 7 ), + SCROLL_POS( 47, 6 ), + SCROLL_POS( 48, 6 ), + SCROLL_POS( 49, 5 ), + SCROLL_POS( 50, 5 ), + SCROLL_POS( 51, 4 ), + SCROLL_POS( 52, 4 ), + SCROLL_POS( 53, 3 ), + SCROLL_POS( 54, 3 ), + SCROLL_POS( 55, 2 ), + SCROLL_POS( 56, 2 ), + SCROLL_POS( 57, 1 ), + SCROLL_POS( 58, 1 ), + -1, }; static const sint16 _scrollpos1[] = { - 69, 70, 135, 136, 201, 202, 267, 268, 333, 334, 399, 400, 465, 466, 531, 532, 597, 598, 663, 664, 729, 730, 795, - 796, -1 + SCROLL_POS( 5, 1 ), + SCROLL_POS( 6, 1 ), + SCROLL_POS( 7, 2 ), + SCROLL_POS( 8, 2 ), + SCROLL_POS( 9, 3 ), + SCROLL_POS( 10, 3 ), + SCROLL_POS( 11, 4 ), + SCROLL_POS( 12, 4 ), + SCROLL_POS( 13, 5 ), + SCROLL_POS( 14, 5 ), + SCROLL_POS( 15, 6 ), + SCROLL_POS( 16, 6 ), + SCROLL_POS( 17, 7 ), + SCROLL_POS( 18, 7 ), + SCROLL_POS( 19, 8 ), + SCROLL_POS( 20, 8 ), + SCROLL_POS( 21, 9 ), + SCROLL_POS( 22, 9 ), + SCROLL_POS( 23, 10 ), + SCROLL_POS( 24, 10 ), + SCROLL_POS( 25, 11 ), + SCROLL_POS( 26, 11 ), + SCROLL_POS( 27, 12 ), + SCROLL_POS( 28, 12 ), + -1, }; static const sint16 _scrollpos2[] = { - 76, 77, 142, 143, 208, 209, 274, 275, 340, 341, 406, 407, 472, 473, 538, 539, 604, 605, 670, 671, 672, 609, 610, - 547, 548, - 485, 486, 423, 424, 361, 362, 299, 300, 237, 238, 175, 176, 113, 114, -1 + SCROLL_POS( 12, 1 ), + SCROLL_POS( 13, 1 ), + SCROLL_POS( 14, 2 ), + SCROLL_POS( 15, 2 ), + SCROLL_POS( 16, 3 ), + SCROLL_POS( 17, 3 ), + SCROLL_POS( 18, 4 ), + SCROLL_POS( 19, 4 ), + SCROLL_POS( 20, 5 ), + SCROLL_POS( 21, 5 ), + SCROLL_POS( 22, 6 ), + SCROLL_POS( 23, 6 ), + SCROLL_POS( 24, 7 ), + SCROLL_POS( 25, 7 ), + SCROLL_POS( 26, 8 ), + SCROLL_POS( 27, 8 ), + SCROLL_POS( 28, 9 ), + SCROLL_POS( 29, 9 ), + SCROLL_POS( 30, 10 ), + SCROLL_POS( 31, 10 ), + SCROLL_POS( 32, 10 ), + SCROLL_POS( 33, 9 ), + SCROLL_POS( 34, 9 ), + SCROLL_POS( 35, 8 ), + SCROLL_POS( 36, 8 ), + SCROLL_POS( 37, 7 ), + SCROLL_POS( 38, 7 ), + SCROLL_POS( 39, 6 ), + SCROLL_POS( 40, 6 ), + SCROLL_POS( 41, 5 ), + SCROLL_POS( 42, 5 ), + SCROLL_POS( 43, 4 ), + SCROLL_POS( 44, 4 ), + SCROLL_POS( 45, 3 ), + SCROLL_POS( 46, 3 ), + SCROLL_POS( 47, 2 ), + SCROLL_POS( 48, 2 ), + SCROLL_POS( 49, 1 ), + SCROLL_POS( 50, 1 ), + -1, }; static const sint16 _scrollpos3[] = { - 16, 81, 82, 147, 212, 213, 278, 343, 344, 409, 410, 475, 476, 541, 542, 607, 608, 673, 674, 739, 740, 805, 806, - 871, 872, 937, 938, 939, 1004, 1005, 1006, 1071, 1072, -1 + SCROLL_POS( 16, 0 ), + SCROLL_POS( 17, 1 ), + SCROLL_POS( 18, 1 ), + SCROLL_POS( 19, 2 ), + SCROLL_POS( 20, 3 ), + SCROLL_POS( 21, 3 ), + SCROLL_POS( 22, 4 ), + SCROLL_POS( 23, 5 ), + SCROLL_POS( 24, 5 ), + SCROLL_POS( 25, 6 ), + SCROLL_POS( 26, 6 ), + SCROLL_POS( 27, 7 ), + SCROLL_POS( 28, 7 ), + SCROLL_POS( 29, 8 ), + SCROLL_POS( 30, 8 ), + SCROLL_POS( 31, 9 ), + SCROLL_POS( 32, 9 ), + SCROLL_POS( 33, 10 ), + SCROLL_POS( 34, 10 ), + SCROLL_POS( 35, 11 ), + SCROLL_POS( 36, 11 ), + SCROLL_POS( 37, 12 ), + SCROLL_POS( 38, 12 ), + SCROLL_POS( 39, 13 ), + SCROLL_POS( 40, 13 ), + SCROLL_POS( 41, 14 ), + SCROLL_POS( 42, 14 ), + SCROLL_POS( 43, 14 ), + SCROLL_POS( 44, 15 ), + SCROLL_POS( 45, 15 ), + SCROLL_POS( 46, 15 ), + SCROLL_POS( 47, 16 ), + SCROLL_POS( 48, 16 ), + -1, }; static const sint16 _scrollpos4[] = { - 1103, 1104, 1041, 1042, 1043, 980, 981, 982, 919, 920, 857, 858, 795, 796, 733, 734, 671, 672, 609, 610, 547, - 548, 485, 486, 423, 424, 361, 298, 299, 236, 173, 174, 111, 48, -1 + SCROLL_POS( 15, 17 ), + SCROLL_POS( 16, 17 ), + SCROLL_POS( 17, 16 ), + SCROLL_POS( 18, 16 ), + SCROLL_POS( 19, 16 ), + SCROLL_POS( 20, 15 ), + SCROLL_POS( 21, 15 ), + SCROLL_POS( 22, 15 ), + SCROLL_POS( 23, 14 ), + SCROLL_POS( 24, 14 ), + SCROLL_POS( 25, 13 ), + SCROLL_POS( 26, 13 ), + SCROLL_POS( 27, 12 ), + SCROLL_POS( 28, 12 ), + SCROLL_POS( 29, 11 ), + SCROLL_POS( 30, 11 ), + SCROLL_POS( 31, 10 ), + SCROLL_POS( 32, 10 ), + SCROLL_POS( 33, 9 ), + SCROLL_POS( 34, 9 ), + SCROLL_POS( 35, 8 ), + SCROLL_POS( 36, 8 ), + SCROLL_POS( 37, 7 ), + SCROLL_POS( 38, 7 ), + SCROLL_POS( 39, 6 ), + SCROLL_POS( 40, 6 ), + SCROLL_POS( 41, 5 ), + SCROLL_POS( 42, 4 ), + SCROLL_POS( 43, 4 ), + SCROLL_POS( 44, 3 ), + SCROLL_POS( 45, 2 ), + SCROLL_POS( 46, 2 ), + SCROLL_POS( 47, 1 ), + SCROLL_POS( 48, 0 ), + -1, }; static const sint16 _scrollpos5[] = { - 772, 773, 710, 711, 648, 649, 586, 587, 524, 525, 462, 463, 400, 401, 338, 339, 276, 277, 214, 215, 152, 153, - 90, 91, -1 + SCROLL_POS( 4, 12 ), + SCROLL_POS( 5, 12 ), + SCROLL_POS( 6, 11 ), + SCROLL_POS( 7, 11 ), + SCROLL_POS( 8, 10 ), + SCROLL_POS( 9, 10 ), + SCROLL_POS( 10, 9 ), + SCROLL_POS( 11, 9 ), + SCROLL_POS( 12, 8 ), + SCROLL_POS( 13, 8 ), + SCROLL_POS( 14, 7 ), + SCROLL_POS( 15, 7 ), + SCROLL_POS( 16, 6 ), + SCROLL_POS( 17, 6 ), + SCROLL_POS( 18, 5 ), + SCROLL_POS( 19, 5 ), + SCROLL_POS( 20, 4 ), + SCROLL_POS( 21, 4 ), + SCROLL_POS( 22, 3 ), + SCROLL_POS( 23, 3 ), + SCROLL_POS( 24, 2 ), + SCROLL_POS( 25, 2 ), + SCROLL_POS( 26, 1 ), + SCROLL_POS( 27, 1 ), + -1, }; static const sint16 _scrollpos6[] = { - 100, 101, 166, 167, 232, 233, 298, 299, 364, 365, 430, 431, 496, 497, 562, 563, 628, 629, 694, 695, 760, 761, - 826, 827, -1 + SCROLL_POS( 36, 1 ), + SCROLL_POS( 37, 1 ), + SCROLL_POS( 38, 2 ), + SCROLL_POS( 39, 2 ), + SCROLL_POS( 40, 3 ), + SCROLL_POS( 41, 3 ), + SCROLL_POS( 42, 4 ), + SCROLL_POS( 43, 4 ), + SCROLL_POS( 44, 5 ), + SCROLL_POS( 45, 5 ), + SCROLL_POS( 46, 6 ), + SCROLL_POS( 47, 6 ), + SCROLL_POS( 48, 7 ), + SCROLL_POS( 49, 7 ), + SCROLL_POS( 50, 8 ), + SCROLL_POS( 51, 8 ), + SCROLL_POS( 52, 9 ), + SCROLL_POS( 53, 9 ), + SCROLL_POS( 54, 10 ), + SCROLL_POS( 55, 10 ), + SCROLL_POS( 56, 11 ), + SCROLL_POS( 57, 11 ), + SCROLL_POS( 58, 12 ), + SCROLL_POS( 59, 12 ), + -1, }; static const sint16 _scrollpos7[] = { - 712, 713, 650, 651, 588, 589, 526, 527, 464, 465, 402, 403, 340, 341, 278, 279, 216, 217, 154, 155, 92, 93, -1 + SCROLL_POS( 8, 11 ), + SCROLL_POS( 9, 11 ), + SCROLL_POS( 10, 10 ), + SCROLL_POS( 11, 10 ), + SCROLL_POS( 12, 9 ), + SCROLL_POS( 13, 9 ), + SCROLL_POS( 14, 8 ), + SCROLL_POS( 15, 8 ), + SCROLL_POS( 16, 7 ), + SCROLL_POS( 17, 7 ), + SCROLL_POS( 18, 6 ), + SCROLL_POS( 19, 6 ), + SCROLL_POS( 20, 5 ), + SCROLL_POS( 21, 5 ), + SCROLL_POS( 22, 4 ), + SCROLL_POS( 23, 4 ), + SCROLL_POS( 24, 3 ), + SCROLL_POS( 25, 3 ), + SCROLL_POS( 26, 2 ), + SCROLL_POS( 27, 2 ), + SCROLL_POS( 28, 1 ), + SCROLL_POS( 29, 1 ), + -1, }; static const sint16 _scrollpos8[] = { - 164, 165, 230, 231, 296, 297, 362, 363, 428, 429, 494, 495, 560, 561, 626, 627, 692, 693, 758, 759, -1 + SCROLL_POS( 36, 2 ), + SCROLL_POS( 37, 2 ), + SCROLL_POS( 38, 3 ), + SCROLL_POS( 39, 3 ), + SCROLL_POS( 40, 4 ), + SCROLL_POS( 41, 4 ), + SCROLL_POS( 42, 5 ), + SCROLL_POS( 43, 5 ), + SCROLL_POS( 44, 6 ), + SCROLL_POS( 45, 6 ), + SCROLL_POS( 46, 7 ), + SCROLL_POS( 47, 7 ), + SCROLL_POS( 48, 8 ), + SCROLL_POS( 49, 8 ), + SCROLL_POS( 50, 9 ), + SCROLL_POS( 51, 9 ), + SCROLL_POS( 52, 10 ), + SCROLL_POS( 53, 10 ), + SCROLL_POS( 54, 11 ), + SCROLL_POS( 55, 11 ), + -1, }; static const sint16 _scrollpos9[] = { - 587, 588, 589, 590, 591, 528, 529, 466, 467, 468, 405, 406, 343, 280, 281, 218, 219, 156, 93, -1 + SCROLL_POS( 11, 9 ), + SCROLL_POS( 12, 9 ), + SCROLL_POS( 13, 9 ), + SCROLL_POS( 14, 9 ), + SCROLL_POS( 15, 9 ), + SCROLL_POS( 16, 8 ), + SCROLL_POS( 17, 8 ), + SCROLL_POS( 18, 7 ), + SCROLL_POS( 19, 7 ), + SCROLL_POS( 20, 7 ), + SCROLL_POS( 21, 6 ), + SCROLL_POS( 22, 6 ), + SCROLL_POS( 23, 5 ), + SCROLL_POS( 24, 4 ), + SCROLL_POS( 25, 4 ), + SCROLL_POS( 26, 3 ), + SCROLL_POS( 27, 3 ), + SCROLL_POS( 28, 2 ), + SCROLL_POS( 29, 1 ), + -1, }; static const sint16 _scrollpos10[] = { - 98, 163, 228, 229, 294, 295, 360, 425, 426, 491, 492, 493, 558, 559, 624, 625, 626, 627, 628, -1 + SCROLL_POS( 34, 1 ), + SCROLL_POS( 35, 2 ), + SCROLL_POS( 36, 3 ), + SCROLL_POS( 37, 3 ), + SCROLL_POS( 38, 4 ), + SCROLL_POS( 39, 4 ), + SCROLL_POS( 40, 5 ), + SCROLL_POS( 41, 6 ), + SCROLL_POS( 42, 6 ), + SCROLL_POS( 43, 7 ), + SCROLL_POS( 44, 7 ), + SCROLL_POS( 45, 7 ), + SCROLL_POS( 46, 8 ), + SCROLL_POS( 47, 8 ), + SCROLL_POS( 48, 9 ), + SCROLL_POS( 49, 9 ), + SCROLL_POS( 50, 9 ), + SCROLL_POS( 51, 9 ), + SCROLL_POS( 52, 9 ), + -1, }; static const sint16 _scrollpos11[] = { - 654, 591, 592, 529, 530, 467, 468, 405, 406, 343, 344, 281, 282, 219, 220, 157, 158, 95, 96, 33, 34, -1 + SCROLL_POS( 14, 10 ), + SCROLL_POS( 15, 9 ), + SCROLL_POS( 16, 9 ), + SCROLL_POS( 17, 8 ), + SCROLL_POS( 18, 8 ), + SCROLL_POS( 19, 7 ), + SCROLL_POS( 20, 7 ), + SCROLL_POS( 21, 6 ), + SCROLL_POS( 22, 6 ), + SCROLL_POS( 23, 5 ), + SCROLL_POS( 24, 5 ), + SCROLL_POS( 25, 4 ), + SCROLL_POS( 26, 4 ), + SCROLL_POS( 27, 3 ), + SCROLL_POS( 28, 3 ), + SCROLL_POS( 29, 2 ), + SCROLL_POS( 30, 2 ), + SCROLL_POS( 31, 1 ), + SCROLL_POS( 32, 1 ), + SCROLL_POS( 33, 0 ), + SCROLL_POS( 34, 0 ), + -1, }; static const sint16 _scrollpos12[] = { - 97, 162, 163, 228, 229, 294, 295, 360, 361, 426, 427, 492, 493, 558, 559, 624, 625, 690, 691, 756, 757, -1 + SCROLL_POS( 33, 1 ), + SCROLL_POS( 34, 2 ), + SCROLL_POS( 35, 2 ), + SCROLL_POS( 36, 3 ), + SCROLL_POS( 37, 3 ), + SCROLL_POS( 38, 4 ), + SCROLL_POS( 39, 4 ), + SCROLL_POS( 40, 5 ), + SCROLL_POS( 41, 5 ), + SCROLL_POS( 42, 6 ), + SCROLL_POS( 43, 6 ), + SCROLL_POS( 44, 7 ), + SCROLL_POS( 45, 7 ), + SCROLL_POS( 46, 8 ), + SCROLL_POS( 47, 8 ), + SCROLL_POS( 48, 9 ), + SCROLL_POS( 49, 9 ), + SCROLL_POS( 50, 10 ), + SCROLL_POS( 51, 10 ), + SCROLL_POS( 52, 11 ), + SCROLL_POS( 53, 11 ), + -1, }; static const sint16 _scrollpos13[] = { - 716, 653, 654, 591, 592, 529, 530, 467, 468, 405, 406, 343, 344, 281, 282, 219, 220, 157, 158, 95, -1 + SCROLL_POS( 12, 11 ), + SCROLL_POS( 13, 10 ), + SCROLL_POS( 14, 10 ), + SCROLL_POS( 15, 9 ), + SCROLL_POS( 16, 9 ), + SCROLL_POS( 17, 8 ), + SCROLL_POS( 18, 8 ), + SCROLL_POS( 19, 7 ), + SCROLL_POS( 20, 7 ), + SCROLL_POS( 21, 6 ), + SCROLL_POS( 22, 6 ), + SCROLL_POS( 23, 5 ), + SCROLL_POS( 24, 5 ), + SCROLL_POS( 25, 4 ), + SCROLL_POS( 26, 4 ), + SCROLL_POS( 27, 3 ), + SCROLL_POS( 28, 3 ), + SCROLL_POS( 29, 2 ), + SCROLL_POS( 30, 2 ), + SCROLL_POS( 31, 1 ), + -1, }; static const sint16 _scrollpos14[] = { - 97, 162, 163, 228, 229, 294, 295, 360, 361, 426, 427, 492, 493, 558, 559, 624, 625, 690, 691, 756, 757, -1 + SCROLL_POS( 33, 1 ), + SCROLL_POS( 34, 2 ), + SCROLL_POS( 35, 2 ), + SCROLL_POS( 36, 3 ), + SCROLL_POS( 37, 3 ), + SCROLL_POS( 38, 4 ), + SCROLL_POS( 39, 4 ), + SCROLL_POS( 40, 5 ), + SCROLL_POS( 41, 5 ), + SCROLL_POS( 42, 6 ), + SCROLL_POS( 43, 6 ), + SCROLL_POS( 44, 7 ), + SCROLL_POS( 45, 7 ), + SCROLL_POS( 46, 8 ), + SCROLL_POS( 47, 8 ), + SCROLL_POS( 48, 9 ), + SCROLL_POS( 49, 9 ), + SCROLL_POS( 50, 10 ), + SCROLL_POS( 51, 10 ), + SCROLL_POS( 52, 11 ), + SCROLL_POS( 53, 11 ), + -1, }; static const sint16 _scrollpos15[] = { - 650, 651, 588, 589, 526, 527, 464, 465, 402, 403, 340, 341, 278, 279, 216, 217, 154, 155, 92, 93, 30, 31, -1 + SCROLL_POS( 10, 10 ), + SCROLL_POS( 11, 10 ), + SCROLL_POS( 12, 9 ), + SCROLL_POS( 13, 9 ), + SCROLL_POS( 14, 8 ), + SCROLL_POS( 15, 8 ), + SCROLL_POS( 16, 7 ), + SCROLL_POS( 17, 7 ), + SCROLL_POS( 18, 6 ), + SCROLL_POS( 19, 6 ), + SCROLL_POS( 20, 5 ), + SCROLL_POS( 21, 5 ), + SCROLL_POS( 22, 4 ), + SCROLL_POS( 23, 4 ), + SCROLL_POS( 24, 3 ), + SCROLL_POS( 25, 3 ), + SCROLL_POS( 26, 2 ), + SCROLL_POS( 27, 2 ), + SCROLL_POS( 28, 1 ), + SCROLL_POS( 29, 1 ), + SCROLL_POS( 30, 0 ), + SCROLL_POS( 31, 0 ), + -1, }; static const sint16 _scrollpos16[] = { - 33, 34, 99, 100, 165, 166, 231, 232, 297, 298, 363, 364, 429, 430, 495, 496, 561, 562, 627, 628, 693, 694, -1 + SCROLL_POS( 33, 0 ), + SCROLL_POS( 34, 0 ), + SCROLL_POS( 35, 1 ), + SCROLL_POS( 36, 1 ), + SCROLL_POS( 37, 2 ), + SCROLL_POS( 38, 2 ), + SCROLL_POS( 39, 3 ), + SCROLL_POS( 40, 3 ), + SCROLL_POS( 41, 4 ), + SCROLL_POS( 42, 4 ), + SCROLL_POS( 43, 5 ), + SCROLL_POS( 44, 5 ), + SCROLL_POS( 45, 6 ), + SCROLL_POS( 46, 6 ), + SCROLL_POS( 47, 7 ), + SCROLL_POS( 48, 7 ), + SCROLL_POS( 49, 8 ), + SCROLL_POS( 50, 8 ), + SCROLL_POS( 51, 9 ), + SCROLL_POS( 52, 9 ), + SCROLL_POS( 53, 10 ), + SCROLL_POS( 54, 10 ), + -1, }; static const sint16 _scrollpos17[] = { - 710, 711, 648, 649, 586, 587, 524, 525, 462, 463, 400, 401, 338, 339, 276, 277, 214, 215, 152, 153, 90, 91, 28, - 29, -1 + SCROLL_POS( 6, 11 ), + SCROLL_POS( 7, 11 ), + SCROLL_POS( 8, 10 ), + SCROLL_POS( 9, 10 ), + SCROLL_POS( 10, 9 ), + SCROLL_POS( 11, 9 ), + SCROLL_POS( 12, 8 ), + SCROLL_POS( 13, 8 ), + SCROLL_POS( 14, 7 ), + SCROLL_POS( 15, 7 ), + SCROLL_POS( 16, 6 ), + SCROLL_POS( 17, 6 ), + SCROLL_POS( 18, 5 ), + SCROLL_POS( 19, 5 ), + SCROLL_POS( 20, 4 ), + SCROLL_POS( 21, 4 ), + SCROLL_POS( 22, 3 ), + SCROLL_POS( 23, 3 ), + SCROLL_POS( 24, 2 ), + SCROLL_POS( 25, 2 ), + SCROLL_POS( 26, 1 ), + SCROLL_POS( 27, 1 ), + SCROLL_POS( 28, 0 ), + SCROLL_POS( 29, 0 ), + -1, }; static const sint16 _scrollpos18[] = { - 34, 35, 100, 101, 166, 167, 232, 233, 298, 299, 364, 365, 430, 431, 496, 497, 562, 563, 628, 629, 694, 695, 760, - 761, -1 + SCROLL_POS( 34, 0 ), + SCROLL_POS( 35, 0 ), + SCROLL_POS( 36, 1 ), + SCROLL_POS( 37, 1 ), + SCROLL_POS( 38, 2 ), + SCROLL_POS( 39, 2 ), + SCROLL_POS( 40, 3 ), + SCROLL_POS( 41, 3 ), + SCROLL_POS( 42, 4 ), + SCROLL_POS( 43, 4 ), + SCROLL_POS( 44, 5 ), + SCROLL_POS( 45, 5 ), + SCROLL_POS( 46, 6 ), + SCROLL_POS( 47, 6 ), + SCROLL_POS( 48, 7 ), + SCROLL_POS( 49, 7 ), + SCROLL_POS( 50, 8 ), + SCROLL_POS( 51, 8 ), + SCROLL_POS( 52, 9 ), + SCROLL_POS( 53, 9 ), + SCROLL_POS( 54, 10 ), + SCROLL_POS( 55, 10 ), + SCROLL_POS( 56, 11 ), + SCROLL_POS( 57, 11 ), + -1, }; static const sint16 _scrollpos19[] = { - 77, 78, 143, 144, 209, 210, 275, 276, 341, 342, 407, 408, 473, 474, 539, 540, 605, 606, 671, 672, 673, 610, 611, - 548, 549, 486, 487, 424, 425, 362, 363, 300, 301, 238, 239, 176, 177, 114, 115, -1 + SCROLL_POS( 13, 1 ), + SCROLL_POS( 14, 1 ), + SCROLL_POS( 15, 2 ), + SCROLL_POS( 16, 2 ), + SCROLL_POS( 17, 3 ), + SCROLL_POS( 18, 3 ), + SCROLL_POS( 19, 4 ), + SCROLL_POS( 20, 4 ), + SCROLL_POS( 21, 5 ), + SCROLL_POS( 22, 5 ), + SCROLL_POS( 23, 6 ), + SCROLL_POS( 24, 6 ), + SCROLL_POS( 25, 7 ), + SCROLL_POS( 26, 7 ), + SCROLL_POS( 27, 8 ), + SCROLL_POS( 28, 8 ), + SCROLL_POS( 29, 9 ), + SCROLL_POS( 30, 9 ), + SCROLL_POS( 31, 10 ), + SCROLL_POS( 32, 10 ), + SCROLL_POS( 33, 10 ), + SCROLL_POS( 34, 9 ), + SCROLL_POS( 35, 9 ), + SCROLL_POS( 36, 8 ), + SCROLL_POS( 37, 8 ), + SCROLL_POS( 38, 7 ), + SCROLL_POS( 39, 7 ), + SCROLL_POS( 40, 6 ), + SCROLL_POS( 41, 6 ), + SCROLL_POS( 42, 5 ), + SCROLL_POS( 43, 5 ), + SCROLL_POS( 44, 4 ), + SCROLL_POS( 45, 4 ), + SCROLL_POS( 46, 3 ), + SCROLL_POS( 47, 3 ), + SCROLL_POS( 48, 2 ), + SCROLL_POS( 49, 2 ), + SCROLL_POS( 50, 1 ), + SCROLL_POS( 51, 1 ), + -1, }; static const sint16 _scrollpos20[] = { - 76, 205, 270, 335, 400, 465, 466, 531, 532, 597, 598, 599, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, - 674, 675, 676, 677, 678, 615, 616, 617, 554, 555, 492, 493, 430, 367, 304, 241, -1 + SCROLL_POS( 12, 1 ), + SCROLL_POS( 13, 3 ), + SCROLL_POS( 14, 4 ), + SCROLL_POS( 15, 5 ), + SCROLL_POS( 16, 6 ), + SCROLL_POS( 17, 7 ), + SCROLL_POS( 18, 7 ), + SCROLL_POS( 19, 8 ), + SCROLL_POS( 20, 8 ), + SCROLL_POS( 21, 9 ), + SCROLL_POS( 22, 9 ), + SCROLL_POS( 23, 9 ), + SCROLL_POS( 24, 10 ), + SCROLL_POS( 25, 10 ), + SCROLL_POS( 26, 10 ), + SCROLL_POS( 27, 10 ), + SCROLL_POS( 28, 10 ), + SCROLL_POS( 29, 10 ), + SCROLL_POS( 30, 10 ), + SCROLL_POS( 31, 10 ), + SCROLL_POS( 32, 10 ), + SCROLL_POS( 33, 10 ), + SCROLL_POS( 34, 10 ), + SCROLL_POS( 35, 10 ), + SCROLL_POS( 36, 10 ), + SCROLL_POS( 37, 10 ), + SCROLL_POS( 38, 10 ), + SCROLL_POS( 39, 9 ), + SCROLL_POS( 40, 9 ), + SCROLL_POS( 41, 9 ), + SCROLL_POS( 42, 8 ), + SCROLL_POS( 43, 8 ), + SCROLL_POS( 44, 7 ), + SCROLL_POS( 45, 7 ), + SCROLL_POS( 46, 6 ), + SCROLL_POS( 47, 5 ), + SCROLL_POS( 48, 4 ), + SCROLL_POS( 49, 3 ), + -1, }; static const sint16 _scrollpos21[] = { - 76, 77, 142, 143, 208, 209, 274, 275, 340, 341, 406, 407, 472, 473, 538, 539, 604, 605, 670, 671, 672, 609, 610, - 547, 548, 485, 486, 423, 424, 361, 362, 299, 300, 237, 238, 175, 176, 113, -1 + SCROLL_POS( 12, 1 ), + SCROLL_POS( 13, 1 ), + SCROLL_POS( 14, 2 ), + SCROLL_POS( 15, 2 ), + SCROLL_POS( 16, 3 ), + SCROLL_POS( 17, 3 ), + SCROLL_POS( 18, 4 ), + SCROLL_POS( 19, 4 ), + SCROLL_POS( 20, 5 ), + SCROLL_POS( 21, 5 ), + SCROLL_POS( 22, 6 ), + SCROLL_POS( 23, 6 ), + SCROLL_POS( 24, 7 ), + SCROLL_POS( 25, 7 ), + SCROLL_POS( 26, 8 ), + SCROLL_POS( 27, 8 ), + SCROLL_POS( 28, 9 ), + SCROLL_POS( 29, 9 ), + SCROLL_POS( 30, 10 ), + SCROLL_POS( 31, 10 ), + SCROLL_POS( 32, 10 ), + SCROLL_POS( 33, 9 ), + SCROLL_POS( 34, 9 ), + SCROLL_POS( 35, 8 ), + SCROLL_POS( 36, 8 ), + SCROLL_POS( 37, 7 ), + SCROLL_POS( 38, 7 ), + SCROLL_POS( 39, 6 ), + SCROLL_POS( 40, 6 ), + SCROLL_POS( 41, 5 ), + SCROLL_POS( 42, 5 ), + SCROLL_POS( 43, 4 ), + SCROLL_POS( 44, 4 ), + SCROLL_POS( 45, 3 ), + SCROLL_POS( 46, 3 ), + SCROLL_POS( 47, 2 ), + SCROLL_POS( 48, 2 ), + SCROLL_POS( 49, 1 ), + -1, }; static const sint16 _scrollpos22[] = { - 80, 81, 146, 147, 212, 213, 278, 279, 344, 345, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, - 359, 360, 297, 298, 235, 236, 173, 174, 111, 112, -1 + SCROLL_POS( 16, 1 ), + SCROLL_POS( 17, 1 ), + SCROLL_POS( 18, 2 ), + SCROLL_POS( 19, 2 ), + SCROLL_POS( 20, 3 ), + SCROLL_POS( 21, 3 ), + SCROLL_POS( 22, 4 ), + SCROLL_POS( 23, 4 ), + SCROLL_POS( 24, 5 ), + SCROLL_POS( 25, 5 ), + SCROLL_POS( 26, 6 ), + SCROLL_POS( 27, 6 ), + SCROLL_POS( 28, 6 ), + SCROLL_POS( 29, 6 ), + SCROLL_POS( 30, 6 ), + SCROLL_POS( 31, 6 ), + SCROLL_POS( 32, 6 ), + SCROLL_POS( 33, 6 ), + SCROLL_POS( 34, 6 ), + SCROLL_POS( 35, 6 ), + SCROLL_POS( 36, 6 ), + SCROLL_POS( 37, 6 ), + SCROLL_POS( 38, 6 ), + SCROLL_POS( 39, 5 ), + SCROLL_POS( 40, 5 ), + SCROLL_POS( 41, 4 ), + SCROLL_POS( 42, 4 ), + SCROLL_POS( 43, 3 ), + SCROLL_POS( 44, 3 ), + SCROLL_POS( 45, 2 ), + SCROLL_POS( 46, 2 ), + SCROLL_POS( 47, 1 ), + SCROLL_POS( 48, 1 ), + -1, }; static const sint16 _scrollpos23[] = { - 79, 144, 145, 210, 275, 340, 341, 342, 407, 408, 409, 410, 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, - 421, 422, 423, 424, 361, 362, 363, 300, 237, 238, 175, 112, -1 + SCROLL_POS( 15, 1 ), + SCROLL_POS( 16, 2 ), + SCROLL_POS( 17, 2 ), + SCROLL_POS( 18, 3 ), + SCROLL_POS( 19, 4 ), + SCROLL_POS( 20, 5 ), + SCROLL_POS( 21, 5 ), + SCROLL_POS( 22, 5 ), + SCROLL_POS( 23, 6 ), + SCROLL_POS( 24, 6 ), + SCROLL_POS( 25, 6 ), + SCROLL_POS( 26, 6 ), + SCROLL_POS( 27, 7 ), + SCROLL_POS( 28, 7 ), + SCROLL_POS( 29, 7 ), + SCROLL_POS( 30, 7 ), + SCROLL_POS( 31, 7 ), + SCROLL_POS( 32, 7 ), + SCROLL_POS( 33, 7 ), + SCROLL_POS( 34, 7 ), + SCROLL_POS( 35, 7 ), + SCROLL_POS( 36, 7 ), + SCROLL_POS( 37, 6 ), + SCROLL_POS( 38, 6 ), + SCROLL_POS( 39, 6 ), + SCROLL_POS( 40, 6 ), + SCROLL_POS( 41, 5 ), + SCROLL_POS( 42, 5 ), + SCROLL_POS( 43, 5 ), + SCROLL_POS( 44, 4 ), + SCROLL_POS( 45, 3 ), + SCROLL_POS( 46, 3 ), + SCROLL_POS( 47, 2 ), + SCROLL_POS( 48, 1 ), + -1, }; static const sint16 _scrollpos24[] = { - 584, 585, 522, 523, 460, 461, 398, 399, 336, 337, 274, 275, 212, 213, 150, 151, 88, 89, 26, 27, -1 + SCROLL_POS( 8, 9 ), + SCROLL_POS( 9, 9 ), + SCROLL_POS( 10, 8 ), + SCROLL_POS( 11, 8 ), + SCROLL_POS( 12, 7 ), + SCROLL_POS( 13, 7 ), + SCROLL_POS( 14, 6 ), + SCROLL_POS( 15, 6 ), + SCROLL_POS( 16, 5 ), + SCROLL_POS( 17, 5 ), + SCROLL_POS( 18, 4 ), + SCROLL_POS( 19, 4 ), + SCROLL_POS( 20, 3 ), + SCROLL_POS( 21, 3 ), + SCROLL_POS( 22, 2 ), + SCROLL_POS( 23, 2 ), + SCROLL_POS( 24, 1 ), + SCROLL_POS( 25, 1 ), + SCROLL_POS( 26, 0 ), + SCROLL_POS( 27, 0 ), + -1, }; static const sint16 _scrollpos25[] = { - 36, 37, 102, 103, 168, 169, 234, 235, 300, 301, 366, 367, 432, 433, 498, 499, 564, 565, 630, 631, -1 + SCROLL_POS( 36, 0 ), + SCROLL_POS( 37, 0 ), + SCROLL_POS( 38, 1 ), + SCROLL_POS( 39, 1 ), + SCROLL_POS( 40, 2 ), + SCROLL_POS( 41, 2 ), + SCROLL_POS( 42, 3 ), + SCROLL_POS( 43, 3 ), + SCROLL_POS( 44, 4 ), + SCROLL_POS( 45, 4 ), + SCROLL_POS( 46, 5 ), + SCROLL_POS( 47, 5 ), + SCROLL_POS( 48, 6 ), + SCROLL_POS( 49, 6 ), + SCROLL_POS( 50, 7 ), + SCROLL_POS( 51, 7 ), + SCROLL_POS( 52, 8 ), + SCROLL_POS( 53, 8 ), + SCROLL_POS( 54, 9 ), + SCROLL_POS( 55, 9 ), + -1, }; static const sint16 _scrollpos26[] = { - 836, 837, 774, 775, 712, 713, 650, 651, 588, 589, 526, 527, 464, 465, 402, 403, 340, 341, 278, 279, 216, 217, - 154, 155, 92, 93, 30, 31, -1 + SCROLL_POS( 4, 13 ), + SCROLL_POS( 5, 13 ), + SCROLL_POS( 6, 12 ), + SCROLL_POS( 7, 12 ), + SCROLL_POS( 8, 11 ), + SCROLL_POS( 9, 11 ), + SCROLL_POS( 10, 10 ), + SCROLL_POS( 11, 10 ), + SCROLL_POS( 12, 9 ), + SCROLL_POS( 13, 9 ), + SCROLL_POS( 14, 8 ), + SCROLL_POS( 15, 8 ), + SCROLL_POS( 16, 7 ), + SCROLL_POS( 17, 7 ), + SCROLL_POS( 18, 6 ), + SCROLL_POS( 19, 6 ), + SCROLL_POS( 20, 5 ), + SCROLL_POS( 21, 5 ), + SCROLL_POS( 22, 4 ), + SCROLL_POS( 23, 4 ), + SCROLL_POS( 24, 3 ), + SCROLL_POS( 25, 3 ), + SCROLL_POS( 26, 2 ), + SCROLL_POS( 27, 2 ), + SCROLL_POS( 28, 1 ), + SCROLL_POS( 29, 1 ), + SCROLL_POS( 30, 0 ), + SCROLL_POS( 31, 0 ), + -1, }; static const sint16 _scrollpos27[] = { - 32, 33, 98, 99, 164, 165, 230, 231, 296, 297, 362, 363, 428, 429, 494, 495, 560, 561, 626, 627, 692, 693, 758, - 759, 824, 825, 890, 891, -1 + SCROLL_POS( 32, 0 ), + SCROLL_POS( 33, 0 ), + SCROLL_POS( 34, 1 ), + SCROLL_POS( 35, 1 ), + SCROLL_POS( 36, 2 ), + SCROLL_POS( 37, 2 ), + SCROLL_POS( 38, 3 ), + SCROLL_POS( 39, 3 ), + SCROLL_POS( 40, 4 ), + SCROLL_POS( 41, 4 ), + SCROLL_POS( 42, 5 ), + SCROLL_POS( 43, 5 ), + SCROLL_POS( 44, 6 ), + SCROLL_POS( 45, 6 ), + SCROLL_POS( 46, 7 ), + SCROLL_POS( 47, 7 ), + SCROLL_POS( 48, 8 ), + SCROLL_POS( 49, 8 ), + SCROLL_POS( 50, 9 ), + SCROLL_POS( 51, 9 ), + SCROLL_POS( 52, 10 ), + SCROLL_POS( 53, 10 ), + SCROLL_POS( 54, 11 ), + SCROLL_POS( 55, 11 ), + SCROLL_POS( 56, 12 ), + SCROLL_POS( 57, 12 ), + SCROLL_POS( 58, 13 ), + SCROLL_POS( 59, 13 ), + -1, }; static const sint16 _scrollpos28[] = { - 838, 839, 776, 777, 714, 715, 652, 653, 590, 591, 528, 529, 466, 467, 404, 405, 342, 343, 280, 281, 218, 219, - 156, 157, 94, 95, 32, 33, -1 + SCROLL_POS( 6, 13 ), + SCROLL_POS( 7, 13 ), + SCROLL_POS( 8, 12 ), + SCROLL_POS( 9, 12 ), + SCROLL_POS( 10, 11 ), + SCROLL_POS( 11, 11 ), + SCROLL_POS( 12, 10 ), + SCROLL_POS( 13, 10 ), + SCROLL_POS( 14, 9 ), + SCROLL_POS( 15, 9 ), + SCROLL_POS( 16, 8 ), + SCROLL_POS( 17, 8 ), + SCROLL_POS( 18, 7 ), + SCROLL_POS( 19, 7 ), + SCROLL_POS( 20, 6 ), + SCROLL_POS( 21, 6 ), + SCROLL_POS( 22, 5 ), + SCROLL_POS( 23, 5 ), + SCROLL_POS( 24, 4 ), + SCROLL_POS( 25, 4 ), + SCROLL_POS( 26, 3 ), + SCROLL_POS( 27, 3 ), + SCROLL_POS( 28, 2 ), + SCROLL_POS( 29, 2 ), + SCROLL_POS( 30, 1 ), + SCROLL_POS( 31, 1 ), + SCROLL_POS( 32, 0 ), + SCROLL_POS( 33, 0 ), + -1, }; static const sint16 _scrollpos29[] = { - 30, 31, 96, 97, 162, 163, 228, 229, 294, 295, 360, 361, 426, 427, 492, 493, 558, 559, 624, 625, 690, 691, 756, - 757, 822, 823, 888, 889, -1 + SCROLL_POS( 30, 0 ), + SCROLL_POS( 31, 0 ), + SCROLL_POS( 32, 1 ), + SCROLL_POS( 33, 1 ), + SCROLL_POS( 34, 2 ), + SCROLL_POS( 35, 2 ), + SCROLL_POS( 36, 3 ), + SCROLL_POS( 37, 3 ), + SCROLL_POS( 38, 4 ), + SCROLL_POS( 39, 4 ), + SCROLL_POS( 40, 5 ), + SCROLL_POS( 41, 5 ), + SCROLL_POS( 42, 6 ), + SCROLL_POS( 43, 6 ), + SCROLL_POS( 44, 7 ), + SCROLL_POS( 45, 7 ), + SCROLL_POS( 46, 8 ), + SCROLL_POS( 47, 8 ), + SCROLL_POS( 48, 9 ), + SCROLL_POS( 49, 9 ), + SCROLL_POS( 50, 10 ), + SCROLL_POS( 51, 10 ), + SCROLL_POS( 52, 11 ), + SCROLL_POS( 53, 11 ), + SCROLL_POS( 54, 12 ), + SCROLL_POS( 55, 12 ), + SCROLL_POS( 56, 13 ), + SCROLL_POS( 57, 13 ), + -1, }; static const sint16 _scrollpos30[] = { - 1922, 1923, 1860, 1861, 1798, 1799, 1736, 1737, 1674, 1675, 1612, 1613, 1550, 1551, 1488, 1489, 1426, 1427, - 1364, 1365, 1302, 1303, 1240, 1241, 1178, 1179, 1116, 1117, 1054, 1055, 992, 993, 930, 931, 868, 869, 806, - 807, 744, 745, 682, 683, 620, 621, 558, 559, 496, 497, 434, 435, 372, 373, 310, 311, 248, 249, 186, 187, 124, - 125, 62, -1 + SCROLL_POS( 2, 30 ), + SCROLL_POS( 3, 30 ), + SCROLL_POS( 4, 29 ), + SCROLL_POS( 5, 29 ), + SCROLL_POS( 6, 28 ), + SCROLL_POS( 7, 28 ), + SCROLL_POS( 8, 27 ), + SCROLL_POS( 9, 27 ), + SCROLL_POS( 10, 26 ), + SCROLL_POS( 11, 26 ), + SCROLL_POS( 12, 25 ), + SCROLL_POS( 13, 25 ), + SCROLL_POS( 14, 24 ), + SCROLL_POS( 15, 24 ), + SCROLL_POS( 16, 23 ), + SCROLL_POS( 17, 23 ), + SCROLL_POS( 18, 22 ), + SCROLL_POS( 19, 22 ), + SCROLL_POS( 20, 21 ), + SCROLL_POS( 21, 21 ), + SCROLL_POS( 22, 20 ), + SCROLL_POS( 23, 20 ), + SCROLL_POS( 24, 19 ), + SCROLL_POS( 25, 19 ), + SCROLL_POS( 26, 18 ), + SCROLL_POS( 27, 18 ), + SCROLL_POS( 28, 17 ), + SCROLL_POS( 29, 17 ), + SCROLL_POS( 30, 16 ), + SCROLL_POS( 31, 16 ), + SCROLL_POS( 32, 15 ), + SCROLL_POS( 33, 15 ), + SCROLL_POS( 34, 14 ), + SCROLL_POS( 35, 14 ), + SCROLL_POS( 36, 13 ), + SCROLL_POS( 37, 13 ), + SCROLL_POS( 38, 12 ), + SCROLL_POS( 39, 12 ), + SCROLL_POS( 40, 11 ), + SCROLL_POS( 41, 11 ), + SCROLL_POS( 42, 10 ), + SCROLL_POS( 43, 10 ), + SCROLL_POS( 44, 9 ), + SCROLL_POS( 45, 9 ), + SCROLL_POS( 46, 8 ), + SCROLL_POS( 47, 8 ), + SCROLL_POS( 48, 7 ), + SCROLL_POS( 49, 7 ), + SCROLL_POS( 50, 6 ), + SCROLL_POS( 51, 6 ), + SCROLL_POS( 52, 5 ), + SCROLL_POS( 53, 5 ), + SCROLL_POS( 54, 4 ), + SCROLL_POS( 55, 4 ), + SCROLL_POS( 56, 3 ), + SCROLL_POS( 57, 3 ), + SCROLL_POS( 58, 2 ), + SCROLL_POS( 59, 2 ), + SCROLL_POS( 60, 1 ), + SCROLL_POS( 61, 1 ), + SCROLL_POS( 62, 0 ), + -1, }; static const sint16 _scrollpos31[] = { - 1, 66, 67, 132, 133, 198, 199, 264, 265, 330, 331, 396, 397, 462, 463, 528, 529, 594, 595, 660, 661, 726, 727, - 792, 793, 858, 859, 924, 925, 990, 991, 1056, 1057, 1122, 1123, 1188, 1189, 1254, 1255, 1320, - 1321, 1386, 1387, 1452, 1453, 1518, 1519, 1584, 1585, 1650, 1651, 1716, 1717, 1782, 1783, 1848, 1849, 1914, - 1915, 1980, 1981, -1 + SCROLL_POS( 1, 0 ), + SCROLL_POS( 2, 1 ), + SCROLL_POS( 3, 1 ), + SCROLL_POS( 4, 2 ), + SCROLL_POS( 5, 2 ), + SCROLL_POS( 6, 3 ), + SCROLL_POS( 7, 3 ), + SCROLL_POS( 8, 4 ), + SCROLL_POS( 9, 4 ), + SCROLL_POS( 10, 5 ), + SCROLL_POS( 11, 5 ), + SCROLL_POS( 12, 6 ), + SCROLL_POS( 13, 6 ), + SCROLL_POS( 14, 7 ), + SCROLL_POS( 15, 7 ), + SCROLL_POS( 16, 8 ), + SCROLL_POS( 17, 8 ), + SCROLL_POS( 18, 9 ), + SCROLL_POS( 19, 9 ), + SCROLL_POS( 20, 10 ), + SCROLL_POS( 21, 10 ), + SCROLL_POS( 22, 11 ), + SCROLL_POS( 23, 11 ), + SCROLL_POS( 24, 12 ), + SCROLL_POS( 25, 12 ), + SCROLL_POS( 26, 13 ), + SCROLL_POS( 27, 13 ), + SCROLL_POS( 28, 14 ), + SCROLL_POS( 29, 14 ), + SCROLL_POS( 30, 15 ), + SCROLL_POS( 31, 15 ), + SCROLL_POS( 32, 16 ), + SCROLL_POS( 33, 16 ), + SCROLL_POS( 34, 17 ), + SCROLL_POS( 35, 17 ), + SCROLL_POS( 36, 18 ), + SCROLL_POS( 37, 18 ), + SCROLL_POS( 38, 19 ), + SCROLL_POS( 39, 19 ), + SCROLL_POS( 40, 20 ), + SCROLL_POS( 41, 20 ), + SCROLL_POS( 42, 21 ), + SCROLL_POS( 43, 21 ), + SCROLL_POS( 44, 22 ), + SCROLL_POS( 45, 22 ), + SCROLL_POS( 46, 23 ), + SCROLL_POS( 47, 23 ), + SCROLL_POS( 48, 24 ), + SCROLL_POS( 49, 24 ), + SCROLL_POS( 50, 25 ), + SCROLL_POS( 51, 25 ), + SCROLL_POS( 52, 26 ), + SCROLL_POS( 53, 26 ), + SCROLL_POS( 54, 27 ), + SCROLL_POS( 55, 27 ), + SCROLL_POS( 56, 28 ), + SCROLL_POS( 57, 28 ), + SCROLL_POS( 58, 29 ), + SCROLL_POS( 59, 29 ), + SCROLL_POS( 60, 30 ), + SCROLL_POS( 61, 30 ), + -1, }; static const sint16 _scrollpos32[] = { - 12, 77, 78, 143, 144, 209, 210, 275, 276, 341, 342, 407, 408, 473, 474, 539, 540, 605, 606, 671, 672, 737, 738, - 803, 804, 869, 870, 935, 936, 1001, 1002, 1067, 1068, 1133, 1134, 1199, 1200, 1265, 1266, -1 + SCROLL_POS( 12, 0 ), + SCROLL_POS( 13, 1 ), + SCROLL_POS( 14, 1 ), + SCROLL_POS( 15, 2 ), + SCROLL_POS( 16, 2 ), + SCROLL_POS( 17, 3 ), + SCROLL_POS( 18, 3 ), + SCROLL_POS( 19, 4 ), + SCROLL_POS( 20, 4 ), + SCROLL_POS( 21, 5 ), + SCROLL_POS( 22, 5 ), + SCROLL_POS( 23, 6 ), + SCROLL_POS( 24, 6 ), + SCROLL_POS( 25, 7 ), + SCROLL_POS( 26, 7 ), + SCROLL_POS( 27, 8 ), + SCROLL_POS( 28, 8 ), + SCROLL_POS( 29, 9 ), + SCROLL_POS( 30, 9 ), + SCROLL_POS( 31, 10 ), + SCROLL_POS( 32, 10 ), + SCROLL_POS( 33, 11 ), + SCROLL_POS( 34, 11 ), + SCROLL_POS( 35, 12 ), + SCROLL_POS( 36, 12 ), + SCROLL_POS( 37, 13 ), + SCROLL_POS( 38, 13 ), + SCROLL_POS( 39, 14 ), + SCROLL_POS( 40, 14 ), + SCROLL_POS( 41, 15 ), + SCROLL_POS( 42, 15 ), + SCROLL_POS( 43, 16 ), + SCROLL_POS( 44, 16 ), + SCROLL_POS( 45, 17 ), + SCROLL_POS( 46, 17 ), + SCROLL_POS( 47, 18 ), + SCROLL_POS( 48, 18 ), + SCROLL_POS( 49, 19 ), + SCROLL_POS( 50, 19 ), + -1, }; static const sint16 _scrollpos33[] = { - 1292, 1293, 1230, 1231, 1168, 1169, 1106, 1107, 1044, 1045, 982, 983, 920, 921, 858, 859, 796, 797, 734, 735, - 672, 673, 610, 611, 548, 549, 486, 487, 424, 425, 362, 363, 300, 301, 238, 239, 176, 177, 114, 115, -1 + SCROLL_POS( 12, 20 ), + SCROLL_POS( 13, 20 ), + SCROLL_POS( 14, 19 ), + SCROLL_POS( 15, 19 ), + SCROLL_POS( 16, 18 ), + SCROLL_POS( 17, 18 ), + SCROLL_POS( 18, 17 ), + SCROLL_POS( 19, 17 ), + SCROLL_POS( 20, 16 ), + SCROLL_POS( 21, 16 ), + SCROLL_POS( 22, 15 ), + SCROLL_POS( 23, 15 ), + SCROLL_POS( 24, 14 ), + SCROLL_POS( 25, 14 ), + SCROLL_POS( 26, 13 ), + SCROLL_POS( 27, 13 ), + SCROLL_POS( 28, 12 ), + SCROLL_POS( 29, 12 ), + SCROLL_POS( 30, 11 ), + SCROLL_POS( 31, 11 ), + SCROLL_POS( 32, 10 ), + SCROLL_POS( 33, 10 ), + SCROLL_POS( 34, 9 ), + SCROLL_POS( 35, 9 ), + SCROLL_POS( 36, 8 ), + SCROLL_POS( 37, 8 ), + SCROLL_POS( 38, 7 ), + SCROLL_POS( 39, 7 ), + SCROLL_POS( 40, 6 ), + SCROLL_POS( 41, 6 ), + SCROLL_POS( 42, 5 ), + SCROLL_POS( 43, 5 ), + SCROLL_POS( 44, 4 ), + SCROLL_POS( 45, 4 ), + SCROLL_POS( 46, 3 ), + SCROLL_POS( 47, 3 ), + SCROLL_POS( 48, 2 ), + SCROLL_POS( 49, 2 ), + SCROLL_POS( 50, 1 ), + SCROLL_POS( 51, 1 ), + -1, }; static const sint16 _scrollpos34[] = { - 898, 899, 836, 837, 774, 775, 712, 713, 650, 651, 588, 589, 526, 527, 464, 465, 402, 403, 340, 341, 278, 279, - 216, 217, 154, 155, 92, 93, 30, -1 + SCROLL_POS( 2, 14 ), + SCROLL_POS( 3, 14 ), + SCROLL_POS( 4, 13 ), + SCROLL_POS( 5, 13 ), + SCROLL_POS( 6, 12 ), + SCROLL_POS( 7, 12 ), + SCROLL_POS( 8, 11 ), + SCROLL_POS( 9, 11 ), + SCROLL_POS( 10, 10 ), + SCROLL_POS( 11, 10 ), + SCROLL_POS( 12, 9 ), + SCROLL_POS( 13, 9 ), + SCROLL_POS( 14, 8 ), + SCROLL_POS( 15, 8 ), + SCROLL_POS( 16, 7 ), + SCROLL_POS( 17, 7 ), + SCROLL_POS( 18, 6 ), + SCROLL_POS( 19, 6 ), + SCROLL_POS( 20, 5 ), + SCROLL_POS( 21, 5 ), + SCROLL_POS( 22, 4 ), + SCROLL_POS( 23, 4 ), + SCROLL_POS( 24, 3 ), + SCROLL_POS( 25, 3 ), + SCROLL_POS( 26, 2 ), + SCROLL_POS( 27, 2 ), + SCROLL_POS( 28, 1 ), + SCROLL_POS( 29, 1 ), + SCROLL_POS( 30, 0 ), + -1, }; static const sint16 _scrollpos35[] = { - 33, 34, 99, 100, 165, 166, 231, 232, 297, 298, 363, 364, 429, 430, 495, 496, 561, 562, 627, 628, 693, 694, 759, - 760, 825, 826, 891, 892, 957, -1 + SCROLL_POS( 33, 0 ), + SCROLL_POS( 34, 0 ), + SCROLL_POS( 35, 1 ), + SCROLL_POS( 36, 1 ), + SCROLL_POS( 37, 2 ), + SCROLL_POS( 38, 2 ), + SCROLL_POS( 39, 3 ), + SCROLL_POS( 40, 3 ), + SCROLL_POS( 41, 4 ), + SCROLL_POS( 42, 4 ), + SCROLL_POS( 43, 5 ), + SCROLL_POS( 44, 5 ), + SCROLL_POS( 45, 6 ), + SCROLL_POS( 46, 6 ), + SCROLL_POS( 47, 7 ), + SCROLL_POS( 48, 7 ), + SCROLL_POS( 49, 8 ), + SCROLL_POS( 50, 8 ), + SCROLL_POS( 51, 9 ), + SCROLL_POS( 52, 9 ), + SCROLL_POS( 53, 10 ), + SCROLL_POS( 54, 10 ), + SCROLL_POS( 55, 11 ), + SCROLL_POS( 56, 11 ), + SCROLL_POS( 57, 12 ), + SCROLL_POS( 58, 12 ), + SCROLL_POS( 59, 13 ), + SCROLL_POS( 60, 13 ), + SCROLL_POS( 61, 14 ), + -1, }; static const sint16 _scrollpos36[] = { - 4, 69, 134, 199, 200, 265, 330, 331, 396, 397, 462, 463, 528, 529, 594, 595, 660, 661, 662, 727, 728, 729, 794, - 795, 796, 797, 798, -1 + SCROLL_POS( 4, 0 ), + SCROLL_POS( 5, 1 ), + SCROLL_POS( 6, 2 ), + SCROLL_POS( 7, 3 ), + SCROLL_POS( 8, 3 ), + SCROLL_POS( 9, 4 ), + SCROLL_POS( 10, 5 ), + SCROLL_POS( 11, 5 ), + SCROLL_POS( 12, 6 ), + SCROLL_POS( 13, 6 ), + SCROLL_POS( 14, 7 ), + SCROLL_POS( 15, 7 ), + SCROLL_POS( 16, 8 ), + SCROLL_POS( 17, 8 ), + SCROLL_POS( 18, 9 ), + SCROLL_POS( 19, 9 ), + SCROLL_POS( 20, 10 ), + SCROLL_POS( 21, 10 ), + SCROLL_POS( 22, 10 ), + SCROLL_POS( 23, 11 ), + SCROLL_POS( 24, 11 ), + SCROLL_POS( 25, 11 ), + SCROLL_POS( 26, 12 ), + SCROLL_POS( 27, 12 ), + SCROLL_POS( 28, 12 ), + SCROLL_POS( 29, 12 ), + SCROLL_POS( 30, 12 ), + -1, }; static const sint16 _scrollpos37[] = { - 864, 801, 802, 803, 804, 741, 742, 743, 680, 681, 682, 619, 620, 557, 558, 495, 496, 433, 434, 371, 372, 309, - 246, 247, 184, 121, 58, -1 + SCROLL_POS( 32, 13 ), + SCROLL_POS( 33, 12 ), + SCROLL_POS( 34, 12 ), + SCROLL_POS( 35, 12 ), + SCROLL_POS( 36, 12 ), + SCROLL_POS( 37, 11 ), + SCROLL_POS( 38, 11 ), + SCROLL_POS( 39, 11 ), + SCROLL_POS( 40, 10 ), + SCROLL_POS( 41, 10 ), + SCROLL_POS( 42, 10 ), + SCROLL_POS( 43, 9 ), + SCROLL_POS( 44, 9 ), + SCROLL_POS( 45, 8 ), + SCROLL_POS( 46, 8 ), + SCROLL_POS( 47, 7 ), + SCROLL_POS( 48, 7 ), + SCROLL_POS( 49, 6 ), + SCROLL_POS( 50, 6 ), + SCROLL_POS( 51, 5 ), + SCROLL_POS( 52, 5 ), + SCROLL_POS( 53, 4 ), + SCROLL_POS( 54, 3 ), + SCROLL_POS( 55, 3 ), + SCROLL_POS( 56, 2 ), + SCROLL_POS( 57, 1 ), + SCROLL_POS( 58, 0 ), + -1, }; static const sint16* _scrollPositions[38] = { From 2db2ef5eec8f4b5745eb87dd3b2a302471c92af8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Janiszewski?= Date: Sun, 31 Jul 2016 22:00:02 +0200 Subject: [PATCH 10/13] Fix pointer types --- src/ride/vehicle.c | 2 +- src/windows/editor_inventions_list.c | 2 +- src/windows/editor_object_selection.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/ride/vehicle.c b/src/ride/vehicle.c index 0621deff3a..2dc0e2d392 100644 --- a/src/ride/vehicle.c +++ b/src/ride/vehicle.c @@ -702,7 +702,7 @@ void vehicle_sounds_update() vehicle_sound++; i++; if (i >= countof(gVehicleSoundList)) { - vehicle_sound_params = (rct_vehicle_sound_params*)((int)vehicle_sound_params + 10); + vehicle_sound_params = (rct_vehicle_sound_params*)((uintptr_t)vehicle_sound_params + 10); goto label28; } } diff --git a/src/windows/editor_inventions_list.c b/src/windows/editor_inventions_list.c index 542cc9cfa5..66119e0de9 100644 --- a/src/windows/editor_inventions_list.c +++ b/src/windows/editor_inventions_list.c @@ -211,7 +211,7 @@ static void research_rides_setup(){ for (uint8 rideType = 0; rideType < object_entry_group_counts[OBJECT_TYPE_RIDE]; rideType++){ rct_ride_entry* master_ride = get_ride_entry(rideType); - if (master_ride == NULL || (uint32)master_ride == 0xFFFFFFFF) + if (master_ride == NULL || (intptr_t)master_ride == -1) continue; if (master_ride->flags & RIDE_ENTRY_FLAG_SEPARATE_RIDE) diff --git a/src/windows/editor_object_selection.c b/src/windows/editor_object_selection.c index 80e8954c88..6fa508b452 100644 --- a/src/windows/editor_object_selection.c +++ b/src/windows/editor_object_selection.c @@ -1694,7 +1694,7 @@ static void window_editor_object_selection_manage_tracks() gS6Info->editor_step = EDITOR_STEP_TRACK_DESIGNS_MANAGER; int entry_index = 0; - for (; ((int)object_entry_groups[0].chunks[entry_index]) == -1; ++entry_index); + for (; ((intptr_t)object_entry_groups[0].chunks[entry_index]) == -1; ++entry_index); rct_ride_entry* ride_entry = get_ride_entry(entry_index); uint8* ride_type_array = &ride_entry->ride_type[0]; From 6ba62ed123fa7e6b15e8a0723ba4e7fa7a64770f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Janiszewski?= Date: Mon, 1 Aug 2016 23:33:55 +0200 Subject: [PATCH 11/13] Integrate vehicle synchronisation info --- src/ride/vehicle.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/ride/vehicle.c b/src/ride/vehicle.c index 2dc0e2d392..ee70e800b1 100644 --- a/src/ride/vehicle.c +++ b/src/ride/vehicle.c @@ -2079,11 +2079,12 @@ typedef struct rct_synchronised_vehicle { assert_struct_size(rct_synchronised_vehicle, 4); #pragma pack(pop) -// 8 synchronised vehicle info -rct_synchronised_vehicle *_synchronisedVehicles = (rct_synchronised_vehicle*)0x00F64E4C; +#define SYNCHRONISED_VEHICLE_COUNT 8 -#define _lastSynchronisedVehicle RCT2_GLOBAL(0x00F64E48, rct_synchronised_vehicle*) -#define MaxSynchronisedVehicle ((rct_synchronised_vehicle*)0x00F64E6C) +// 8 synchronised vehicle info +rct_synchronised_vehicle _synchronisedVehicles[SYNCHRONISED_VEHICLE_COUNT] = { 0 }; + +static rct_synchronised_vehicle* _lastSynchronisedVehicle = NULL; /** * Checks if a map position contains a synchronised ride station and adds the vehicle @@ -2168,7 +2169,7 @@ static bool vehicle_can_depart_synchronised(rct_vehicle *vehicle) int direction = (mapElement->type + 1) & 3; _lastSynchronisedVehicle = _synchronisedVehicles; - while (_lastSynchronisedVehicle < MaxSynchronisedVehicle) { + while (_lastSynchronisedVehicle < &_synchronisedVehicles[SYNCHRONISED_VEHICLE_COUNT - 1]) { x += TileDirectionDelta[direction].x; y += TileDirectionDelta[direction].y; if (!try_add_synchronised_station(x, y, z)) { @@ -2176,7 +2177,7 @@ static bool vehicle_can_depart_synchronised(rct_vehicle *vehicle) } } - while (_lastSynchronisedVehicle < MaxSynchronisedVehicle) { + while (_lastSynchronisedVehicle < &_synchronisedVehicles[SYNCHRONISED_VEHICLE_COUNT - 1]) { x += TileDirectionDelta[direction].x; y += TileDirectionDelta[direction].y; if (!try_add_synchronised_station(x, y, z)) { From 6db035f3185557022139154788a5e2c39409b95a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Janiszewski?= Date: Tue, 2 Aug 2016 12:56:08 +0200 Subject: [PATCH 12/13] Extract gRideProperties ride flags --- src/ride/ride.c | 520 +++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 429 insertions(+), 91 deletions(-) diff --git a/src/ride/ride.c b/src/ride/ride.c index aae9d50941..9e660176d7 100644 --- a/src/ride/ride.c +++ b/src/ride/ride.c @@ -125,97 +125,435 @@ uint8 gTypeToRideEntryIndexMap[TYPE_TO_RIDE_ENTRY_SLOTS]; #pragma endregion const rct_ride_properties gRideProperties[91] = { - { 0xdc1046b7, 10, 27, 30, 17 }, - { 0xdc1046b7, 7, 27, 0, 0 }, - { 0xdc1046b7, 0, 0, 0, 0 }, - { 0xdc1046b7, 7, 27, 0, 0 }, - { 0xdc1046b7, 0, 0, 0, 0 }, - { 0xd4004214, 0, 0, 0, 0 }, - { 0xd4004217, 0, 0, 0, 0 }, - { 0xdc1046b5, 0, 0, 0, 0 }, - { 0x9c004845, 0, 0, 0, 0 }, - { 0x9c1046b5, 0, 0, 0, 0 }, - { 0xdc1046b7, 0, 0, 0, 0 }, - { 0x94104227, 0, 0, 0, 0 }, - { 0x9414430f, 10, 40, 0, 0 }, - { 0x9c1046b7, 0, 0, 0, 0 }, - { 0x9404410f, 0, 0, 0, 0 }, - { 0xdc1046b7, 10, 27, 26, 18 }, - { 0x9c1056b7, 0, 0, 0, 0 }, - { 0xdc1046b7, 0, 0, 0, 0 }, - { 0x94004005, 1, 4, 0, 0 }, - { 0xdc1046b7, 10, 12, 30, 25 }, - { 0x1044280c, 1, 16, 0, 0 }, - { 0xca90f, 1, 5, 0, 0 }, - { 0x94140805, 1, 10, 0, 0 }, - { 0x94104637, 0, 0, 0, 0 }, - { 0x94144635, 0, 0, 0, 0 }, - { 0x40c890f, 20, 180, 0, 0 }, - { 0x40dc10d, 7, 25, 0, 0 }, - { 0x40dc10f, 7, 15, 0, 0 }, - { 0x8ea908, 0, 0, 0, 0 }, - { 0x8ea908, 0, 0, 0, 0 }, - { 0x10ea908, 0, 0, 0, 0 }, - { 0x10ea908, 0, 0, 0, 0 }, - { 0xea909, 0, 0, 0, 0 }, - { 0x40dc108, 4, 25, 0, 0 }, - { 0xea909, 0, 0, 0, 0 }, - { 0xea909, 0, 0, 0, 0 }, - { 0x26ea908, 4, 4, 0, 0 }, - { 0x40d8109, 1, 3, 0, 0 }, - { 0x40dc108, 0, 0, 0, 0 }, - { 0x44dc108, 0, 0, 0, 0 }, - { 0x40dc10f, 0, 0, 0, 0 }, - { 0x40c8908, 0, 0, 0, 0 }, - { 0x9c1046a7, 7, 30, 30, 40 }, - { 0xb404410d, 0, 0, 0, 0 }, - { 0xdc1046b7, 10, 27, 26, 18 }, - { 0xea908, 0, 0, 0, 0 }, - { 0x40dc108, 3, 6, 0, 0 }, - { 0x4dc108, 0, 0, 0, 0 }, - { 0x6ea908, 8, 8, 0, 0 }, - { 0x44dc108, 0, 0, 0, 0 }, - { 0x941046a7, 0, 0, 0, 0 }, - { 0xdc1046b7, 10, 27, 30, 17 }, - { 0xdc1046b7, 0, 0, 0, 0 }, - { 0xdc1046b7, 0, 0, 0, 0 }, - { 0x9c1046b7, 0, 0, 0, 0 }, - { 0xdc1046b7, 10, 27, 30, 25 }, - { 0xdc1046b7, 10, 27, 30, 25 }, - { 0xdc1046b7, 10, 27, 30, 25 }, - { 0xdc1046b7, 10, 27, 30, 25 }, - { 0x9c1046b7, 0, 0, 0, 0 }, - { 0x94104637, 0, 0, 0, 0 }, - { 0x94104227, 0, 0, 0, 0 }, - { 0xdc1046b7, 10, 27, 30, 25 }, - { 0xd4004217, 0, 0, 0, 0 }, - { 0xdc1046b7, 10, 27, 30, 25 }, - { 0x9c1046b7, 0, 0, 0, 0 }, - { 0x9c1046b7, 10, 27, 30, 25 }, - { 0x90000807, 0, 0, 0, 0 }, - { 0xdc1046b7, 10, 27, 30, 17 }, - { 0x9414430f, 0, 0, 0, 0 }, - { 0x40c890b, 20, 180, 0, 0 }, - { 0x4dc108, 0, 0, 0, 0 }, - { 0x94104a27, 0, 0, 0, 0 }, - { 0xdc1046b7, 7, 27, 0, 0 }, - { 0xdc1056b7, 0, 0, 0, 0 }, - { 0x9c1046a7, 30, 50, 30, 40 }, - { 0x9c1046b7, 0, 0, 0, 0 }, - { 0x40dc10f, 7, 15, 0, 0 }, - { 0x94104057, 0, 0, 0, 0 }, - { 0x94104237, 0, 0, 0, 0 }, - { 0x8ea908, 0, 0, 0, 0 }, - { 0x41dc108, 10, 20, 0, 0 }, - { 0x10ea908, 0, 0, 0, 0 }, - { 0x8ea908, 0, 0, 0, 0 }, - { 0x10ea908, 0, 0, 0, 0 }, - { 0xdc1046b7, 10, 27, 30, 25 }, - { 0x9c1046b7, 10, 33, 30, 25 }, - { 0xdc1046b7, 0, 0, 0, 0 }, - { 0xdc1046b7, 0, 0, 0, 0 }, - { 0x9c1046b7, 0, 0, 0, 0 }, - { 0xdc1046b7, 10, 31, 26, 18 }, + {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | + RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_7 | + RIDE_ENTRY_FLAG_9 | RIDE_ENTRY_FLAG_COVERED_RIDE | RIDE_ENTRY_FLAG_14 | + RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_27 | RIDE_ENTRY_FLAG_28 | + RIDE_ENTRY_FLAG_30 | RIDE_ENTRY_FLAG_31, + 10, 27, 30, 17}, + {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | + RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_7 | + RIDE_ENTRY_FLAG_9 | RIDE_ENTRY_FLAG_COVERED_RIDE | RIDE_ENTRY_FLAG_14 | + RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_27 | RIDE_ENTRY_FLAG_28 | + RIDE_ENTRY_FLAG_30 | RIDE_ENTRY_FLAG_31, + 7, 27, 0, 0}, + {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | + RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_7 | + RIDE_ENTRY_FLAG_9 | RIDE_ENTRY_FLAG_COVERED_RIDE | RIDE_ENTRY_FLAG_14 | + RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_27 | RIDE_ENTRY_FLAG_28 | + RIDE_ENTRY_FLAG_30 | RIDE_ENTRY_FLAG_31, + 0, 0, 0, 0}, + {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | + RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_7 | + RIDE_ENTRY_FLAG_9 | RIDE_ENTRY_FLAG_COVERED_RIDE | RIDE_ENTRY_FLAG_14 | + RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_27 | RIDE_ENTRY_FLAG_28 | + RIDE_ENTRY_FLAG_30 | RIDE_ENTRY_FLAG_31, + 7, 27, 0, 0}, + {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | + RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_7 | + RIDE_ENTRY_FLAG_9 | RIDE_ENTRY_FLAG_COVERED_RIDE | RIDE_ENTRY_FLAG_14 | + RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_27 | RIDE_ENTRY_FLAG_28 | + RIDE_ENTRY_FLAG_30 | RIDE_ENTRY_FLAG_31, + 0, 0, 0, 0}, + {RIDE_ENTRY_FLAG_NO_BANKED_TRACK | RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | RIDE_ENTRY_FLAG_9 | + RIDE_ENTRY_FLAG_14 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_28 | RIDE_ENTRY_FLAG_30 | RIDE_ENTRY_FLAG_31, + 0, 0, 0, 0}, + {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | + RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | RIDE_ENTRY_FLAG_9 | RIDE_ENTRY_FLAG_14 | RIDE_ENTRY_FLAG_26 | + RIDE_ENTRY_FLAG_28 | RIDE_ENTRY_FLAG_30 | RIDE_ENTRY_FLAG_31, + 0, 0, 0, 0}, + {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | + RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_7 | RIDE_ENTRY_FLAG_9 | + RIDE_ENTRY_FLAG_COVERED_RIDE | RIDE_ENTRY_FLAG_14 | RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | + RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_27 | RIDE_ENTRY_FLAG_28 | RIDE_ENTRY_FLAG_30 | RIDE_ENTRY_FLAG_31, + 0, 0, 0, 0}, + {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_2 | + RIDE_ENTRY_FLAG_11 | RIDE_ENTRY_FLAG_14 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_27 | RIDE_ENTRY_FLAG_28 | + RIDE_ENTRY_FLAG_31, + 0, 0, 0, 0}, + {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | + RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_7 | RIDE_ENTRY_FLAG_9 | + RIDE_ENTRY_FLAG_COVERED_RIDE | RIDE_ENTRY_FLAG_14 | RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | + RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_27 | RIDE_ENTRY_FLAG_28 | RIDE_ENTRY_FLAG_31, + 0, 0, 0, 0}, + {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | + RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_7 | + RIDE_ENTRY_FLAG_9 | RIDE_ENTRY_FLAG_COVERED_RIDE | RIDE_ENTRY_FLAG_14 | + RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_27 | RIDE_ENTRY_FLAG_28 | + RIDE_ENTRY_FLAG_30 | RIDE_ENTRY_FLAG_31, + 0, 0, 0, 0}, + {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | + RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_9 | RIDE_ENTRY_FLAG_14 | + RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_28 | RIDE_ENTRY_FLAG_31, + 0, 0, 0, 0}, + {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | RIDE_ENTRY_FLAG_3 | + RIDE_ENTRY_FLAG_8 | RIDE_ENTRY_FLAG_9 | RIDE_ENTRY_FLAG_14 | RIDE_ENTRY_FLAG_18 | + RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_28 | RIDE_ENTRY_FLAG_31, + 10, 40, 0, 0}, + {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | + RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_7 | + RIDE_ENTRY_FLAG_9 | RIDE_ENTRY_FLAG_COVERED_RIDE | RIDE_ENTRY_FLAG_14 | + RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_27 | RIDE_ENTRY_FLAG_28 | + RIDE_ENTRY_FLAG_31, + 0, 0, 0, 0}, + {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | RIDE_ENTRY_FLAG_3 | + RIDE_ENTRY_FLAG_8 | RIDE_ENTRY_FLAG_14 | RIDE_ENTRY_FLAG_18 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_28 | + RIDE_ENTRY_FLAG_31, + 0, 0, 0, 0}, + {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | + RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_7 | + RIDE_ENTRY_FLAG_9 | RIDE_ENTRY_FLAG_COVERED_RIDE | RIDE_ENTRY_FLAG_14 | + RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_27 | RIDE_ENTRY_FLAG_28 | + RIDE_ENTRY_FLAG_30 | RIDE_ENTRY_FLAG_31, + 10, 27, 26, 18}, + {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | + RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_7 | + RIDE_ENTRY_FLAG_9 | RIDE_ENTRY_FLAG_COVERED_RIDE | RIDE_ENTRY_FLAG_SEPARATE_RIDE_NAME | RIDE_ENTRY_FLAG_14 | + RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_27 | RIDE_ENTRY_FLAG_28 | + RIDE_ENTRY_FLAG_31, + 0, 0, 0, 0}, + {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | + RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_7 | + RIDE_ENTRY_FLAG_9 | RIDE_ENTRY_FLAG_COVERED_RIDE | RIDE_ENTRY_FLAG_14 | + RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_27 | RIDE_ENTRY_FLAG_28 | + RIDE_ENTRY_FLAG_30 | RIDE_ENTRY_FLAG_31, + 0, 0, 0, 0}, + {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | RIDE_ENTRY_FLAG_14 | RIDE_ENTRY_FLAG_26 | + RIDE_ENTRY_FLAG_28 | RIDE_ENTRY_FLAG_31, + 1, 4, 0, 0}, + {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | + RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_7 | + RIDE_ENTRY_FLAG_9 | RIDE_ENTRY_FLAG_COVERED_RIDE | RIDE_ENTRY_FLAG_14 | + RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_27 | RIDE_ENTRY_FLAG_28 | + RIDE_ENTRY_FLAG_30 | RIDE_ENTRY_FLAG_31, + 10, 12, 30, 25}, + {RIDE_ENTRY_FLAG_NO_BANKED_TRACK | RIDE_ENTRY_FLAG_3 | RIDE_ENTRY_FLAG_11 | RIDE_ENTRY_FLAG_SEPARATE_RIDE | + RIDE_ENTRY_FLAG_18 | RIDE_ENTRY_FLAG_22 | RIDE_ENTRY_FLAG_28, + 1, 16, 0, 0}, + {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | RIDE_ENTRY_FLAG_3 | + RIDE_ENTRY_FLAG_8 | RIDE_ENTRY_FLAG_11 | RIDE_ENTRY_FLAG_SEPARATE_RIDE | + RIDE_ENTRY_DISABLE_LAST_OPERATING_MODE | RIDE_ENTRY_FLAG_18 | RIDE_ENTRY_FLAG_19, + 1, 5, 0, 0}, + {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | RIDE_ENTRY_FLAG_11 | RIDE_ENTRY_FLAG_18 | + RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_28 | RIDE_ENTRY_FLAG_31, + 1, 10, 0, 0}, + {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | + RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_9 | + RIDE_ENTRY_FLAG_COVERED_RIDE | RIDE_ENTRY_FLAG_14 | RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | + RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_28 | RIDE_ENTRY_FLAG_31, + 0, 0, 0, 0}, + {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | + RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_9 | RIDE_ENTRY_FLAG_COVERED_RIDE | + RIDE_ENTRY_FLAG_14 | RIDE_ENTRY_FLAG_18 | RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | + RIDE_ENTRY_FLAG_28 | RIDE_ENTRY_FLAG_31, + 0, 0, 0, 0}, + {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | RIDE_ENTRY_FLAG_3 | + RIDE_ENTRY_FLAG_8 | RIDE_ENTRY_FLAG_11 | RIDE_ENTRY_DISABLE_LAST_OPERATING_MODE | RIDE_ENTRY_FLAG_18 | + RIDE_ENTRY_FLAG_19 | RIDE_ENTRY_FLAG_26, + 20, 180, 0, 0}, + {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | RIDE_ENTRY_FLAG_3 | RIDE_ENTRY_FLAG_8 | + RIDE_ENTRY_FLAG_14 | RIDE_ENTRY_DISABLE_LAST_OPERATING_MODE | RIDE_ENTRY_FLAG_16 | RIDE_ENTRY_FLAG_18 | + RIDE_ENTRY_FLAG_19 | RIDE_ENTRY_FLAG_26, + 7, 25, 0, 0}, + {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | RIDE_ENTRY_FLAG_3 | + RIDE_ENTRY_FLAG_8 | RIDE_ENTRY_FLAG_14 | RIDE_ENTRY_DISABLE_LAST_OPERATING_MODE | RIDE_ENTRY_FLAG_16 | + RIDE_ENTRY_FLAG_18 | RIDE_ENTRY_FLAG_19 | RIDE_ENTRY_FLAG_26, + 7, 15, 0, 0}, + {RIDE_ENTRY_FLAG_3 | RIDE_ENTRY_FLAG_8 | RIDE_ENTRY_FLAG_11 | RIDE_ENTRY_FLAG_SEPARATE_RIDE | + RIDE_ENTRY_DISABLE_LAST_OPERATING_MODE | RIDE_ENTRY_DISABLE_FIRST_TWO_OPERATING_MODES | RIDE_ENTRY_FLAG_18 | + RIDE_ENTRY_FLAG_19 | RIDE_ENTRY_FLAG_23, + 0, 0, 0, 0}, + {RIDE_ENTRY_FLAG_3 | RIDE_ENTRY_FLAG_8 | RIDE_ENTRY_FLAG_11 | RIDE_ENTRY_FLAG_SEPARATE_RIDE | + RIDE_ENTRY_DISABLE_LAST_OPERATING_MODE | RIDE_ENTRY_DISABLE_FIRST_TWO_OPERATING_MODES | RIDE_ENTRY_FLAG_18 | + RIDE_ENTRY_FLAG_19 | RIDE_ENTRY_FLAG_23, + 0, 0, 0, 0}, + {RIDE_ENTRY_FLAG_3 | RIDE_ENTRY_FLAG_8 | RIDE_ENTRY_FLAG_11 | RIDE_ENTRY_FLAG_SEPARATE_RIDE | + RIDE_ENTRY_DISABLE_LAST_OPERATING_MODE | RIDE_ENTRY_DISABLE_FIRST_TWO_OPERATING_MODES | RIDE_ENTRY_FLAG_18 | + RIDE_ENTRY_FLAG_19 | RIDE_ENTRY_FLAG_24, + 0, 0, 0, 0}, + {RIDE_ENTRY_FLAG_3 | RIDE_ENTRY_FLAG_8 | RIDE_ENTRY_FLAG_11 | RIDE_ENTRY_FLAG_SEPARATE_RIDE | + RIDE_ENTRY_DISABLE_LAST_OPERATING_MODE | RIDE_ENTRY_DISABLE_FIRST_TWO_OPERATING_MODES | RIDE_ENTRY_FLAG_18 | + RIDE_ENTRY_FLAG_19 | RIDE_ENTRY_FLAG_24, + 0, 0, 0, 0}, + {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_3 | RIDE_ENTRY_FLAG_8 | RIDE_ENTRY_FLAG_11 | + RIDE_ENTRY_FLAG_SEPARATE_RIDE | RIDE_ENTRY_DISABLE_LAST_OPERATING_MODE | + RIDE_ENTRY_DISABLE_FIRST_TWO_OPERATING_MODES | RIDE_ENTRY_FLAG_18 | RIDE_ENTRY_FLAG_19, + 0, 0, 0, 0}, + {RIDE_ENTRY_FLAG_3 | RIDE_ENTRY_FLAG_8 | RIDE_ENTRY_FLAG_14 | RIDE_ENTRY_DISABLE_LAST_OPERATING_MODE | + RIDE_ENTRY_FLAG_16 | RIDE_ENTRY_FLAG_18 | RIDE_ENTRY_FLAG_19 | RIDE_ENTRY_FLAG_26, + 4, 25, 0, 0}, + {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_3 | RIDE_ENTRY_FLAG_8 | RIDE_ENTRY_FLAG_11 | + RIDE_ENTRY_FLAG_SEPARATE_RIDE | RIDE_ENTRY_DISABLE_LAST_OPERATING_MODE | + RIDE_ENTRY_DISABLE_FIRST_TWO_OPERATING_MODES | RIDE_ENTRY_FLAG_18 | RIDE_ENTRY_FLAG_19, + 0, 0, 0, 0}, + {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_3 | RIDE_ENTRY_FLAG_8 | RIDE_ENTRY_FLAG_11 | + RIDE_ENTRY_FLAG_SEPARATE_RIDE | RIDE_ENTRY_DISABLE_LAST_OPERATING_MODE | + RIDE_ENTRY_DISABLE_FIRST_TWO_OPERATING_MODES | RIDE_ENTRY_FLAG_18 | RIDE_ENTRY_FLAG_19, + 0, 0, 0, 0}, + {RIDE_ENTRY_FLAG_3 | RIDE_ENTRY_FLAG_8 | RIDE_ENTRY_FLAG_11 | RIDE_ENTRY_FLAG_SEPARATE_RIDE | + RIDE_ENTRY_DISABLE_LAST_OPERATING_MODE | RIDE_ENTRY_DISABLE_FIRST_TWO_OPERATING_MODES | RIDE_ENTRY_FLAG_18 | + RIDE_ENTRY_FLAG_19 | RIDE_ENTRY_FLAG_21 | RIDE_ENTRY_FLAG_22 | RIDE_ENTRY_FLAG_25, + 4, 4, 0, 0}, + {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_3 | RIDE_ENTRY_FLAG_8 | RIDE_ENTRY_DISABLE_LAST_OPERATING_MODE | + RIDE_ENTRY_FLAG_16 | RIDE_ENTRY_FLAG_18 | RIDE_ENTRY_FLAG_19 | RIDE_ENTRY_FLAG_26, + 1, 3, 0, 0}, + {RIDE_ENTRY_FLAG_3 | RIDE_ENTRY_FLAG_8 | RIDE_ENTRY_FLAG_14 | RIDE_ENTRY_DISABLE_LAST_OPERATING_MODE | + RIDE_ENTRY_FLAG_16 | RIDE_ENTRY_FLAG_18 | RIDE_ENTRY_FLAG_19 | RIDE_ENTRY_FLAG_26, + 0, 0, 0, 0}, + {RIDE_ENTRY_FLAG_3 | RIDE_ENTRY_FLAG_8 | RIDE_ENTRY_FLAG_14 | RIDE_ENTRY_DISABLE_LAST_OPERATING_MODE | + RIDE_ENTRY_FLAG_16 | RIDE_ENTRY_FLAG_18 | RIDE_ENTRY_FLAG_19 | RIDE_ENTRY_FLAG_22 | RIDE_ENTRY_FLAG_26, + 0, 0, 0, 0}, + {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | RIDE_ENTRY_FLAG_3 | + RIDE_ENTRY_FLAG_8 | RIDE_ENTRY_FLAG_14 | RIDE_ENTRY_DISABLE_LAST_OPERATING_MODE | RIDE_ENTRY_FLAG_16 | + RIDE_ENTRY_FLAG_18 | RIDE_ENTRY_FLAG_19 | RIDE_ENTRY_FLAG_26, + 0, 0, 0, 0}, + {RIDE_ENTRY_FLAG_3 | RIDE_ENTRY_FLAG_8 | RIDE_ENTRY_FLAG_11 | RIDE_ENTRY_DISABLE_LAST_OPERATING_MODE | + RIDE_ENTRY_FLAG_18 | RIDE_ENTRY_FLAG_19 | RIDE_ENTRY_FLAG_26, + 0, 0, 0, 0}, + {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | + RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_7 | RIDE_ENTRY_FLAG_9 | + RIDE_ENTRY_FLAG_COVERED_RIDE | RIDE_ENTRY_FLAG_14 | RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | + RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_27 | RIDE_ENTRY_FLAG_28 | RIDE_ENTRY_FLAG_31, + 7, 30, 30, 40}, + {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | RIDE_ENTRY_FLAG_3 | RIDE_ENTRY_FLAG_8 | + RIDE_ENTRY_FLAG_14 | RIDE_ENTRY_FLAG_18 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_28 | RIDE_ENTRY_FLAG_29 | + RIDE_ENTRY_FLAG_31, + 0, 0, 0, 0}, + {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | + RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_7 | + RIDE_ENTRY_FLAG_9 | RIDE_ENTRY_FLAG_COVERED_RIDE | RIDE_ENTRY_FLAG_14 | + RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_27 | RIDE_ENTRY_FLAG_28 | + RIDE_ENTRY_FLAG_30 | RIDE_ENTRY_FLAG_31, + 10, 27, 26, 18}, + {RIDE_ENTRY_FLAG_3 | RIDE_ENTRY_FLAG_8 | RIDE_ENTRY_FLAG_11 | RIDE_ENTRY_FLAG_SEPARATE_RIDE | + RIDE_ENTRY_DISABLE_LAST_OPERATING_MODE | RIDE_ENTRY_DISABLE_FIRST_TWO_OPERATING_MODES | RIDE_ENTRY_FLAG_18 | + RIDE_ENTRY_FLAG_19, + 0, 0, 0, 0}, + {RIDE_ENTRY_FLAG_3 | RIDE_ENTRY_FLAG_8 | RIDE_ENTRY_FLAG_14 | RIDE_ENTRY_DISABLE_LAST_OPERATING_MODE | + RIDE_ENTRY_FLAG_16 | RIDE_ENTRY_FLAG_18 | RIDE_ENTRY_FLAG_19 | RIDE_ENTRY_FLAG_26, + 3, 6, 0, 0}, + {RIDE_ENTRY_FLAG_3 | RIDE_ENTRY_FLAG_8 | RIDE_ENTRY_FLAG_14 | RIDE_ENTRY_DISABLE_LAST_OPERATING_MODE | + RIDE_ENTRY_FLAG_16 | RIDE_ENTRY_FLAG_18 | RIDE_ENTRY_FLAG_19 | RIDE_ENTRY_FLAG_22, + 0, 0, 0, 0}, + {RIDE_ENTRY_FLAG_3 | RIDE_ENTRY_FLAG_8 | RIDE_ENTRY_FLAG_11 | RIDE_ENTRY_FLAG_SEPARATE_RIDE | + RIDE_ENTRY_DISABLE_LAST_OPERATING_MODE | RIDE_ENTRY_DISABLE_FIRST_TWO_OPERATING_MODES | RIDE_ENTRY_FLAG_18 | + RIDE_ENTRY_FLAG_19 | RIDE_ENTRY_FLAG_21 | RIDE_ENTRY_FLAG_22, + 8, 8, 0, 0}, + {RIDE_ENTRY_FLAG_3 | RIDE_ENTRY_FLAG_8 | RIDE_ENTRY_FLAG_14 | RIDE_ENTRY_DISABLE_LAST_OPERATING_MODE | + RIDE_ENTRY_FLAG_16 | RIDE_ENTRY_FLAG_18 | RIDE_ENTRY_FLAG_19 | RIDE_ENTRY_FLAG_22 | RIDE_ENTRY_FLAG_26, + 0, 0, 0, 0}, + {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | + RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_7 | RIDE_ENTRY_FLAG_9 | + RIDE_ENTRY_FLAG_COVERED_RIDE | RIDE_ENTRY_FLAG_14 | RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | + RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_28 | RIDE_ENTRY_FLAG_31, + 0, 0, 0, 0}, + {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | + RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_7 | + RIDE_ENTRY_FLAG_9 | RIDE_ENTRY_FLAG_COVERED_RIDE | RIDE_ENTRY_FLAG_14 | + RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_27 | RIDE_ENTRY_FLAG_28 | + RIDE_ENTRY_FLAG_30 | RIDE_ENTRY_FLAG_31, + 10, 27, 30, 17}, + {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | + RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_7 | + RIDE_ENTRY_FLAG_9 | RIDE_ENTRY_FLAG_COVERED_RIDE | RIDE_ENTRY_FLAG_14 | + RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_27 | RIDE_ENTRY_FLAG_28 | + RIDE_ENTRY_FLAG_30 | RIDE_ENTRY_FLAG_31, + 0, 0, 0, 0}, + {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | + RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_7 | + RIDE_ENTRY_FLAG_9 | RIDE_ENTRY_FLAG_COVERED_RIDE | RIDE_ENTRY_FLAG_14 | + RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_27 | RIDE_ENTRY_FLAG_28 | + RIDE_ENTRY_FLAG_30 | RIDE_ENTRY_FLAG_31, + 0, 0, 0, 0}, + {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | + RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_7 | + RIDE_ENTRY_FLAG_9 | RIDE_ENTRY_FLAG_COVERED_RIDE | RIDE_ENTRY_FLAG_14 | + RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_27 | RIDE_ENTRY_FLAG_28 | + RIDE_ENTRY_FLAG_31, + 0, 0, 0, 0}, + {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | + RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_7 | + RIDE_ENTRY_FLAG_9 | RIDE_ENTRY_FLAG_COVERED_RIDE | RIDE_ENTRY_FLAG_14 | + RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_27 | RIDE_ENTRY_FLAG_28 | + RIDE_ENTRY_FLAG_30 | RIDE_ENTRY_FLAG_31, + 10, 27, 30, 25}, + {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | + RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_7 | + RIDE_ENTRY_FLAG_9 | RIDE_ENTRY_FLAG_COVERED_RIDE | RIDE_ENTRY_FLAG_14 | + RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_27 | RIDE_ENTRY_FLAG_28 | + RIDE_ENTRY_FLAG_30 | RIDE_ENTRY_FLAG_31, + 10, 27, 30, 25}, + {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | + RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_7 | + RIDE_ENTRY_FLAG_9 | RIDE_ENTRY_FLAG_COVERED_RIDE | RIDE_ENTRY_FLAG_14 | + RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_27 | RIDE_ENTRY_FLAG_28 | + RIDE_ENTRY_FLAG_30 | RIDE_ENTRY_FLAG_31, + 10, 27, 30, 25}, + {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | + RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_7 | + RIDE_ENTRY_FLAG_9 | RIDE_ENTRY_FLAG_COVERED_RIDE | RIDE_ENTRY_FLAG_14 | + RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_27 | RIDE_ENTRY_FLAG_28 | + RIDE_ENTRY_FLAG_30 | RIDE_ENTRY_FLAG_31, + 10, 27, 30, 25}, + {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | + RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_7 | + RIDE_ENTRY_FLAG_9 | RIDE_ENTRY_FLAG_COVERED_RIDE | RIDE_ENTRY_FLAG_14 | + RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_27 | RIDE_ENTRY_FLAG_28 | + RIDE_ENTRY_FLAG_31, + 0, 0, 0, 0}, + {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | + RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_9 | + RIDE_ENTRY_FLAG_COVERED_RIDE | RIDE_ENTRY_FLAG_14 | RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | + RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_28 | RIDE_ENTRY_FLAG_31, + 0, 0, 0, 0}, + {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | + RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_9 | RIDE_ENTRY_FLAG_14 | + RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_28 | RIDE_ENTRY_FLAG_31, + 0, 0, 0, 0}, + {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | + RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_7 | + RIDE_ENTRY_FLAG_9 | RIDE_ENTRY_FLAG_COVERED_RIDE | RIDE_ENTRY_FLAG_14 | + RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_27 | RIDE_ENTRY_FLAG_28 | + RIDE_ENTRY_FLAG_30 | RIDE_ENTRY_FLAG_31, + 10, 27, 30, 25}, + {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | + RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | RIDE_ENTRY_FLAG_9 | RIDE_ENTRY_FLAG_14 | RIDE_ENTRY_FLAG_26 | + RIDE_ENTRY_FLAG_28 | RIDE_ENTRY_FLAG_30 | RIDE_ENTRY_FLAG_31, + 0, 0, 0, 0}, + {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | + RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_7 | + RIDE_ENTRY_FLAG_9 | RIDE_ENTRY_FLAG_COVERED_RIDE | RIDE_ENTRY_FLAG_14 | + RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_27 | RIDE_ENTRY_FLAG_28 | + RIDE_ENTRY_FLAG_30 | RIDE_ENTRY_FLAG_31, + 10, 27, 30, 25}, + {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | + RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_7 | + RIDE_ENTRY_FLAG_9 | RIDE_ENTRY_FLAG_COVERED_RIDE | RIDE_ENTRY_FLAG_14 | + RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_27 | RIDE_ENTRY_FLAG_28 | + RIDE_ENTRY_FLAG_31, + 0, 0, 0, 0}, + {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | + RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_7 | + RIDE_ENTRY_FLAG_9 | RIDE_ENTRY_FLAG_COVERED_RIDE | RIDE_ENTRY_FLAG_14 | + RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_27 | RIDE_ENTRY_FLAG_28 | + RIDE_ENTRY_FLAG_31, + 10, 27, 30, 25}, + {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | RIDE_ENTRY_FLAG_11 | + RIDE_ENTRY_FLAG_28 | RIDE_ENTRY_FLAG_31, + 0, 0, 0, 0}, + {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | + RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_7 | + RIDE_ENTRY_FLAG_9 | RIDE_ENTRY_FLAG_COVERED_RIDE | RIDE_ENTRY_FLAG_14 | + RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_27 | RIDE_ENTRY_FLAG_28 | + RIDE_ENTRY_FLAG_30 | RIDE_ENTRY_FLAG_31, + 10, 27, 30, 17}, + {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | RIDE_ENTRY_FLAG_3 | + RIDE_ENTRY_FLAG_8 | RIDE_ENTRY_FLAG_9 | RIDE_ENTRY_FLAG_14 | RIDE_ENTRY_FLAG_18 | + RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_28 | RIDE_ENTRY_FLAG_31, + 0, 0, 0, 0}, + {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_3 | RIDE_ENTRY_FLAG_8 | + RIDE_ENTRY_FLAG_11 | RIDE_ENTRY_DISABLE_LAST_OPERATING_MODE | RIDE_ENTRY_FLAG_18 | RIDE_ENTRY_FLAG_19 | + RIDE_ENTRY_FLAG_26, + 20, 180, 0, 0}, + {RIDE_ENTRY_FLAG_3 | RIDE_ENTRY_FLAG_8 | RIDE_ENTRY_FLAG_14 | RIDE_ENTRY_DISABLE_LAST_OPERATING_MODE | + RIDE_ENTRY_FLAG_16 | RIDE_ENTRY_FLAG_18 | RIDE_ENTRY_FLAG_19 | RIDE_ENTRY_FLAG_22, + 0, 0, 0, 0}, + {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | + RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_9 | RIDE_ENTRY_FLAG_11 | RIDE_ENTRY_FLAG_14 | + RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_28 | RIDE_ENTRY_FLAG_31, + 0, 0, 0, 0}, + {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | + RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_7 | + RIDE_ENTRY_FLAG_9 | RIDE_ENTRY_FLAG_COVERED_RIDE | RIDE_ENTRY_FLAG_14 | + RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_27 | RIDE_ENTRY_FLAG_28 | + RIDE_ENTRY_FLAG_30 | RIDE_ENTRY_FLAG_31, + 7, 27, 0, 0}, + {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | + RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_7 | + RIDE_ENTRY_FLAG_9 | RIDE_ENTRY_FLAG_COVERED_RIDE | RIDE_ENTRY_FLAG_SEPARATE_RIDE_NAME | RIDE_ENTRY_FLAG_14 | + RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_27 | RIDE_ENTRY_FLAG_28 | + RIDE_ENTRY_FLAG_30 | RIDE_ENTRY_FLAG_31, + 0, 0, 0, 0}, + {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | + RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_7 | RIDE_ENTRY_FLAG_9 | + RIDE_ENTRY_FLAG_COVERED_RIDE | RIDE_ENTRY_FLAG_14 | RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | + RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_27 | RIDE_ENTRY_FLAG_28 | RIDE_ENTRY_FLAG_31, + 30, 50, 30, 40}, + {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | + RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_7 | + RIDE_ENTRY_FLAG_9 | RIDE_ENTRY_FLAG_COVERED_RIDE | RIDE_ENTRY_FLAG_14 | + RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_27 | RIDE_ENTRY_FLAG_28 | + RIDE_ENTRY_FLAG_31, + 0, 0, 0, 0}, + {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | RIDE_ENTRY_FLAG_3 | + RIDE_ENTRY_FLAG_8 | RIDE_ENTRY_FLAG_14 | RIDE_ENTRY_DISABLE_LAST_OPERATING_MODE | RIDE_ENTRY_FLAG_16 | + RIDE_ENTRY_FLAG_18 | RIDE_ENTRY_FLAG_19 | RIDE_ENTRY_FLAG_26, + 7, 15, 0, 0}, + {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | + RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_2 | RIDE_ENTRY_FLAG_14 | + RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_28 | RIDE_ENTRY_FLAG_31, + 0, 0, 0, 0}, + {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | + RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_9 | + RIDE_ENTRY_FLAG_14 | RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_28 | + RIDE_ENTRY_FLAG_31, + 0, 0, 0, 0}, + {RIDE_ENTRY_FLAG_3 | RIDE_ENTRY_FLAG_8 | RIDE_ENTRY_FLAG_11 | RIDE_ENTRY_FLAG_SEPARATE_RIDE | + RIDE_ENTRY_DISABLE_LAST_OPERATING_MODE | RIDE_ENTRY_DISABLE_FIRST_TWO_OPERATING_MODES | RIDE_ENTRY_FLAG_18 | + RIDE_ENTRY_FLAG_19 | RIDE_ENTRY_FLAG_23, + 0, 0, 0, 0}, + {RIDE_ENTRY_FLAG_3 | RIDE_ENTRY_FLAG_8 | RIDE_ENTRY_FLAG_14 | RIDE_ENTRY_DISABLE_LAST_OPERATING_MODE | + RIDE_ENTRY_FLAG_16 | RIDE_ENTRY_FLAG_18 | RIDE_ENTRY_FLAG_19 | RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | + RIDE_ENTRY_FLAG_26, + 10, 20, 0, 0}, + {RIDE_ENTRY_FLAG_3 | RIDE_ENTRY_FLAG_8 | RIDE_ENTRY_FLAG_11 | RIDE_ENTRY_FLAG_SEPARATE_RIDE | + RIDE_ENTRY_DISABLE_LAST_OPERATING_MODE | RIDE_ENTRY_DISABLE_FIRST_TWO_OPERATING_MODES | RIDE_ENTRY_FLAG_18 | + RIDE_ENTRY_FLAG_19 | RIDE_ENTRY_FLAG_24, + 0, 0, 0, 0}, + {RIDE_ENTRY_FLAG_3 | RIDE_ENTRY_FLAG_8 | RIDE_ENTRY_FLAG_11 | RIDE_ENTRY_FLAG_SEPARATE_RIDE | + RIDE_ENTRY_DISABLE_LAST_OPERATING_MODE | RIDE_ENTRY_DISABLE_FIRST_TWO_OPERATING_MODES | RIDE_ENTRY_FLAG_18 | + RIDE_ENTRY_FLAG_19 | RIDE_ENTRY_FLAG_23, + 0, 0, 0, 0}, + {RIDE_ENTRY_FLAG_3 | RIDE_ENTRY_FLAG_8 | RIDE_ENTRY_FLAG_11 | RIDE_ENTRY_FLAG_SEPARATE_RIDE | + RIDE_ENTRY_DISABLE_LAST_OPERATING_MODE | RIDE_ENTRY_DISABLE_FIRST_TWO_OPERATING_MODES | RIDE_ENTRY_FLAG_18 | + RIDE_ENTRY_FLAG_19 | RIDE_ENTRY_FLAG_24, + 0, 0, 0, 0}, + {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | + RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_7 | + RIDE_ENTRY_FLAG_9 | RIDE_ENTRY_FLAG_COVERED_RIDE | RIDE_ENTRY_FLAG_14 | + RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_27 | RIDE_ENTRY_FLAG_28 | + RIDE_ENTRY_FLAG_30 | RIDE_ENTRY_FLAG_31, + 10, 27, 30, 25}, + {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | + RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_7 | + RIDE_ENTRY_FLAG_9 | RIDE_ENTRY_FLAG_COVERED_RIDE | RIDE_ENTRY_FLAG_14 | + RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_27 | RIDE_ENTRY_FLAG_28 | + RIDE_ENTRY_FLAG_31, + 10, 33, 30, 25}, + {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | + RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_7 | + RIDE_ENTRY_FLAG_9 | RIDE_ENTRY_FLAG_COVERED_RIDE | RIDE_ENTRY_FLAG_14 | + RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_27 | RIDE_ENTRY_FLAG_28 | + RIDE_ENTRY_FLAG_30 | RIDE_ENTRY_FLAG_31, + 0, 0, 0, 0}, + {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | + RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_7 | + RIDE_ENTRY_FLAG_9 | RIDE_ENTRY_FLAG_COVERED_RIDE | RIDE_ENTRY_FLAG_14 | + RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_27 | RIDE_ENTRY_FLAG_28 | + RIDE_ENTRY_FLAG_30 | RIDE_ENTRY_FLAG_31, + 0, 0, 0, 0}, + {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | + RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_7 | + RIDE_ENTRY_FLAG_9 | RIDE_ENTRY_FLAG_COVERED_RIDE | RIDE_ENTRY_FLAG_14 | + RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_27 | RIDE_ENTRY_FLAG_28 | + RIDE_ENTRY_FLAG_31, + 0, 0, 0, 0}, + {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | + RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_7 | + RIDE_ENTRY_FLAG_9 | RIDE_ENTRY_FLAG_COVERED_RIDE | RIDE_ENTRY_FLAG_14 | + RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_27 | RIDE_ENTRY_FLAG_28 | + RIDE_ENTRY_FLAG_30 | RIDE_ENTRY_FLAG_31, + 10, 31, 26, 18}, }; static const int RideInspectionInterval[] = { From a7f31dda4f58e94c0b8ac5bd2e6d7fc4f1d731e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Janiszewski?= Date: Tue, 2 Aug 2016 14:26:44 +0200 Subject: [PATCH 13/13] Fix issues from gRideProperties review Also renames it to RideProperties --- src/ride/ride.c | 432 --------------------------- src/ride/ride.h | 10 +- src/ride/ride_data.c | 505 ++++++++++++++++++++++++++++++++ src/ride/track.c | 2 +- src/ride/track_design.c | 2 +- src/ride/vehicle.c | 2 +- src/windows/ride.c | 8 +- src/windows/ride_construction.c | 2 +- 8 files changed, 518 insertions(+), 445 deletions(-) diff --git a/src/ride/ride.c b/src/ride/ride.c index 9e660176d7..7ddbed6d0d 100644 --- a/src/ride/ride.c +++ b/src/ride/ride.c @@ -124,438 +124,6 @@ uint8 gTypeToRideEntryIndexMap[TYPE_TO_RIDE_ENTRY_SLOTS]; #pragma endregion -const rct_ride_properties gRideProperties[91] = { - {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | - RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_7 | - RIDE_ENTRY_FLAG_9 | RIDE_ENTRY_FLAG_COVERED_RIDE | RIDE_ENTRY_FLAG_14 | - RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_27 | RIDE_ENTRY_FLAG_28 | - RIDE_ENTRY_FLAG_30 | RIDE_ENTRY_FLAG_31, - 10, 27, 30, 17}, - {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | - RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_7 | - RIDE_ENTRY_FLAG_9 | RIDE_ENTRY_FLAG_COVERED_RIDE | RIDE_ENTRY_FLAG_14 | - RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_27 | RIDE_ENTRY_FLAG_28 | - RIDE_ENTRY_FLAG_30 | RIDE_ENTRY_FLAG_31, - 7, 27, 0, 0}, - {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | - RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_7 | - RIDE_ENTRY_FLAG_9 | RIDE_ENTRY_FLAG_COVERED_RIDE | RIDE_ENTRY_FLAG_14 | - RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_27 | RIDE_ENTRY_FLAG_28 | - RIDE_ENTRY_FLAG_30 | RIDE_ENTRY_FLAG_31, - 0, 0, 0, 0}, - {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | - RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_7 | - RIDE_ENTRY_FLAG_9 | RIDE_ENTRY_FLAG_COVERED_RIDE | RIDE_ENTRY_FLAG_14 | - RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_27 | RIDE_ENTRY_FLAG_28 | - RIDE_ENTRY_FLAG_30 | RIDE_ENTRY_FLAG_31, - 7, 27, 0, 0}, - {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | - RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_7 | - RIDE_ENTRY_FLAG_9 | RIDE_ENTRY_FLAG_COVERED_RIDE | RIDE_ENTRY_FLAG_14 | - RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_27 | RIDE_ENTRY_FLAG_28 | - RIDE_ENTRY_FLAG_30 | RIDE_ENTRY_FLAG_31, - 0, 0, 0, 0}, - {RIDE_ENTRY_FLAG_NO_BANKED_TRACK | RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | RIDE_ENTRY_FLAG_9 | - RIDE_ENTRY_FLAG_14 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_28 | RIDE_ENTRY_FLAG_30 | RIDE_ENTRY_FLAG_31, - 0, 0, 0, 0}, - {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | - RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | RIDE_ENTRY_FLAG_9 | RIDE_ENTRY_FLAG_14 | RIDE_ENTRY_FLAG_26 | - RIDE_ENTRY_FLAG_28 | RIDE_ENTRY_FLAG_30 | RIDE_ENTRY_FLAG_31, - 0, 0, 0, 0}, - {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | - RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_7 | RIDE_ENTRY_FLAG_9 | - RIDE_ENTRY_FLAG_COVERED_RIDE | RIDE_ENTRY_FLAG_14 | RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | - RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_27 | RIDE_ENTRY_FLAG_28 | RIDE_ENTRY_FLAG_30 | RIDE_ENTRY_FLAG_31, - 0, 0, 0, 0}, - {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_2 | - RIDE_ENTRY_FLAG_11 | RIDE_ENTRY_FLAG_14 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_27 | RIDE_ENTRY_FLAG_28 | - RIDE_ENTRY_FLAG_31, - 0, 0, 0, 0}, - {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | - RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_7 | RIDE_ENTRY_FLAG_9 | - RIDE_ENTRY_FLAG_COVERED_RIDE | RIDE_ENTRY_FLAG_14 | RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | - RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_27 | RIDE_ENTRY_FLAG_28 | RIDE_ENTRY_FLAG_31, - 0, 0, 0, 0}, - {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | - RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_7 | - RIDE_ENTRY_FLAG_9 | RIDE_ENTRY_FLAG_COVERED_RIDE | RIDE_ENTRY_FLAG_14 | - RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_27 | RIDE_ENTRY_FLAG_28 | - RIDE_ENTRY_FLAG_30 | RIDE_ENTRY_FLAG_31, - 0, 0, 0, 0}, - {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | - RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_9 | RIDE_ENTRY_FLAG_14 | - RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_28 | RIDE_ENTRY_FLAG_31, - 0, 0, 0, 0}, - {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | RIDE_ENTRY_FLAG_3 | - RIDE_ENTRY_FLAG_8 | RIDE_ENTRY_FLAG_9 | RIDE_ENTRY_FLAG_14 | RIDE_ENTRY_FLAG_18 | - RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_28 | RIDE_ENTRY_FLAG_31, - 10, 40, 0, 0}, - {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | - RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_7 | - RIDE_ENTRY_FLAG_9 | RIDE_ENTRY_FLAG_COVERED_RIDE | RIDE_ENTRY_FLAG_14 | - RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_27 | RIDE_ENTRY_FLAG_28 | - RIDE_ENTRY_FLAG_31, - 0, 0, 0, 0}, - {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | RIDE_ENTRY_FLAG_3 | - RIDE_ENTRY_FLAG_8 | RIDE_ENTRY_FLAG_14 | RIDE_ENTRY_FLAG_18 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_28 | - RIDE_ENTRY_FLAG_31, - 0, 0, 0, 0}, - {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | - RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_7 | - RIDE_ENTRY_FLAG_9 | RIDE_ENTRY_FLAG_COVERED_RIDE | RIDE_ENTRY_FLAG_14 | - RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_27 | RIDE_ENTRY_FLAG_28 | - RIDE_ENTRY_FLAG_30 | RIDE_ENTRY_FLAG_31, - 10, 27, 26, 18}, - {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | - RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_7 | - RIDE_ENTRY_FLAG_9 | RIDE_ENTRY_FLAG_COVERED_RIDE | RIDE_ENTRY_FLAG_SEPARATE_RIDE_NAME | RIDE_ENTRY_FLAG_14 | - RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_27 | RIDE_ENTRY_FLAG_28 | - RIDE_ENTRY_FLAG_31, - 0, 0, 0, 0}, - {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | - RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_7 | - RIDE_ENTRY_FLAG_9 | RIDE_ENTRY_FLAG_COVERED_RIDE | RIDE_ENTRY_FLAG_14 | - RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_27 | RIDE_ENTRY_FLAG_28 | - RIDE_ENTRY_FLAG_30 | RIDE_ENTRY_FLAG_31, - 0, 0, 0, 0}, - {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | RIDE_ENTRY_FLAG_14 | RIDE_ENTRY_FLAG_26 | - RIDE_ENTRY_FLAG_28 | RIDE_ENTRY_FLAG_31, - 1, 4, 0, 0}, - {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | - RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_7 | - RIDE_ENTRY_FLAG_9 | RIDE_ENTRY_FLAG_COVERED_RIDE | RIDE_ENTRY_FLAG_14 | - RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_27 | RIDE_ENTRY_FLAG_28 | - RIDE_ENTRY_FLAG_30 | RIDE_ENTRY_FLAG_31, - 10, 12, 30, 25}, - {RIDE_ENTRY_FLAG_NO_BANKED_TRACK | RIDE_ENTRY_FLAG_3 | RIDE_ENTRY_FLAG_11 | RIDE_ENTRY_FLAG_SEPARATE_RIDE | - RIDE_ENTRY_FLAG_18 | RIDE_ENTRY_FLAG_22 | RIDE_ENTRY_FLAG_28, - 1, 16, 0, 0}, - {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | RIDE_ENTRY_FLAG_3 | - RIDE_ENTRY_FLAG_8 | RIDE_ENTRY_FLAG_11 | RIDE_ENTRY_FLAG_SEPARATE_RIDE | - RIDE_ENTRY_DISABLE_LAST_OPERATING_MODE | RIDE_ENTRY_FLAG_18 | RIDE_ENTRY_FLAG_19, - 1, 5, 0, 0}, - {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | RIDE_ENTRY_FLAG_11 | RIDE_ENTRY_FLAG_18 | - RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_28 | RIDE_ENTRY_FLAG_31, - 1, 10, 0, 0}, - {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | - RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_9 | - RIDE_ENTRY_FLAG_COVERED_RIDE | RIDE_ENTRY_FLAG_14 | RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | - RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_28 | RIDE_ENTRY_FLAG_31, - 0, 0, 0, 0}, - {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | - RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_9 | RIDE_ENTRY_FLAG_COVERED_RIDE | - RIDE_ENTRY_FLAG_14 | RIDE_ENTRY_FLAG_18 | RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | - RIDE_ENTRY_FLAG_28 | RIDE_ENTRY_FLAG_31, - 0, 0, 0, 0}, - {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | RIDE_ENTRY_FLAG_3 | - RIDE_ENTRY_FLAG_8 | RIDE_ENTRY_FLAG_11 | RIDE_ENTRY_DISABLE_LAST_OPERATING_MODE | RIDE_ENTRY_FLAG_18 | - RIDE_ENTRY_FLAG_19 | RIDE_ENTRY_FLAG_26, - 20, 180, 0, 0}, - {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | RIDE_ENTRY_FLAG_3 | RIDE_ENTRY_FLAG_8 | - RIDE_ENTRY_FLAG_14 | RIDE_ENTRY_DISABLE_LAST_OPERATING_MODE | RIDE_ENTRY_FLAG_16 | RIDE_ENTRY_FLAG_18 | - RIDE_ENTRY_FLAG_19 | RIDE_ENTRY_FLAG_26, - 7, 25, 0, 0}, - {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | RIDE_ENTRY_FLAG_3 | - RIDE_ENTRY_FLAG_8 | RIDE_ENTRY_FLAG_14 | RIDE_ENTRY_DISABLE_LAST_OPERATING_MODE | RIDE_ENTRY_FLAG_16 | - RIDE_ENTRY_FLAG_18 | RIDE_ENTRY_FLAG_19 | RIDE_ENTRY_FLAG_26, - 7, 15, 0, 0}, - {RIDE_ENTRY_FLAG_3 | RIDE_ENTRY_FLAG_8 | RIDE_ENTRY_FLAG_11 | RIDE_ENTRY_FLAG_SEPARATE_RIDE | - RIDE_ENTRY_DISABLE_LAST_OPERATING_MODE | RIDE_ENTRY_DISABLE_FIRST_TWO_OPERATING_MODES | RIDE_ENTRY_FLAG_18 | - RIDE_ENTRY_FLAG_19 | RIDE_ENTRY_FLAG_23, - 0, 0, 0, 0}, - {RIDE_ENTRY_FLAG_3 | RIDE_ENTRY_FLAG_8 | RIDE_ENTRY_FLAG_11 | RIDE_ENTRY_FLAG_SEPARATE_RIDE | - RIDE_ENTRY_DISABLE_LAST_OPERATING_MODE | RIDE_ENTRY_DISABLE_FIRST_TWO_OPERATING_MODES | RIDE_ENTRY_FLAG_18 | - RIDE_ENTRY_FLAG_19 | RIDE_ENTRY_FLAG_23, - 0, 0, 0, 0}, - {RIDE_ENTRY_FLAG_3 | RIDE_ENTRY_FLAG_8 | RIDE_ENTRY_FLAG_11 | RIDE_ENTRY_FLAG_SEPARATE_RIDE | - RIDE_ENTRY_DISABLE_LAST_OPERATING_MODE | RIDE_ENTRY_DISABLE_FIRST_TWO_OPERATING_MODES | RIDE_ENTRY_FLAG_18 | - RIDE_ENTRY_FLAG_19 | RIDE_ENTRY_FLAG_24, - 0, 0, 0, 0}, - {RIDE_ENTRY_FLAG_3 | RIDE_ENTRY_FLAG_8 | RIDE_ENTRY_FLAG_11 | RIDE_ENTRY_FLAG_SEPARATE_RIDE | - RIDE_ENTRY_DISABLE_LAST_OPERATING_MODE | RIDE_ENTRY_DISABLE_FIRST_TWO_OPERATING_MODES | RIDE_ENTRY_FLAG_18 | - RIDE_ENTRY_FLAG_19 | RIDE_ENTRY_FLAG_24, - 0, 0, 0, 0}, - {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_3 | RIDE_ENTRY_FLAG_8 | RIDE_ENTRY_FLAG_11 | - RIDE_ENTRY_FLAG_SEPARATE_RIDE | RIDE_ENTRY_DISABLE_LAST_OPERATING_MODE | - RIDE_ENTRY_DISABLE_FIRST_TWO_OPERATING_MODES | RIDE_ENTRY_FLAG_18 | RIDE_ENTRY_FLAG_19, - 0, 0, 0, 0}, - {RIDE_ENTRY_FLAG_3 | RIDE_ENTRY_FLAG_8 | RIDE_ENTRY_FLAG_14 | RIDE_ENTRY_DISABLE_LAST_OPERATING_MODE | - RIDE_ENTRY_FLAG_16 | RIDE_ENTRY_FLAG_18 | RIDE_ENTRY_FLAG_19 | RIDE_ENTRY_FLAG_26, - 4, 25, 0, 0}, - {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_3 | RIDE_ENTRY_FLAG_8 | RIDE_ENTRY_FLAG_11 | - RIDE_ENTRY_FLAG_SEPARATE_RIDE | RIDE_ENTRY_DISABLE_LAST_OPERATING_MODE | - RIDE_ENTRY_DISABLE_FIRST_TWO_OPERATING_MODES | RIDE_ENTRY_FLAG_18 | RIDE_ENTRY_FLAG_19, - 0, 0, 0, 0}, - {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_3 | RIDE_ENTRY_FLAG_8 | RIDE_ENTRY_FLAG_11 | - RIDE_ENTRY_FLAG_SEPARATE_RIDE | RIDE_ENTRY_DISABLE_LAST_OPERATING_MODE | - RIDE_ENTRY_DISABLE_FIRST_TWO_OPERATING_MODES | RIDE_ENTRY_FLAG_18 | RIDE_ENTRY_FLAG_19, - 0, 0, 0, 0}, - {RIDE_ENTRY_FLAG_3 | RIDE_ENTRY_FLAG_8 | RIDE_ENTRY_FLAG_11 | RIDE_ENTRY_FLAG_SEPARATE_RIDE | - RIDE_ENTRY_DISABLE_LAST_OPERATING_MODE | RIDE_ENTRY_DISABLE_FIRST_TWO_OPERATING_MODES | RIDE_ENTRY_FLAG_18 | - RIDE_ENTRY_FLAG_19 | RIDE_ENTRY_FLAG_21 | RIDE_ENTRY_FLAG_22 | RIDE_ENTRY_FLAG_25, - 4, 4, 0, 0}, - {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_3 | RIDE_ENTRY_FLAG_8 | RIDE_ENTRY_DISABLE_LAST_OPERATING_MODE | - RIDE_ENTRY_FLAG_16 | RIDE_ENTRY_FLAG_18 | RIDE_ENTRY_FLAG_19 | RIDE_ENTRY_FLAG_26, - 1, 3, 0, 0}, - {RIDE_ENTRY_FLAG_3 | RIDE_ENTRY_FLAG_8 | RIDE_ENTRY_FLAG_14 | RIDE_ENTRY_DISABLE_LAST_OPERATING_MODE | - RIDE_ENTRY_FLAG_16 | RIDE_ENTRY_FLAG_18 | RIDE_ENTRY_FLAG_19 | RIDE_ENTRY_FLAG_26, - 0, 0, 0, 0}, - {RIDE_ENTRY_FLAG_3 | RIDE_ENTRY_FLAG_8 | RIDE_ENTRY_FLAG_14 | RIDE_ENTRY_DISABLE_LAST_OPERATING_MODE | - RIDE_ENTRY_FLAG_16 | RIDE_ENTRY_FLAG_18 | RIDE_ENTRY_FLAG_19 | RIDE_ENTRY_FLAG_22 | RIDE_ENTRY_FLAG_26, - 0, 0, 0, 0}, - {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | RIDE_ENTRY_FLAG_3 | - RIDE_ENTRY_FLAG_8 | RIDE_ENTRY_FLAG_14 | RIDE_ENTRY_DISABLE_LAST_OPERATING_MODE | RIDE_ENTRY_FLAG_16 | - RIDE_ENTRY_FLAG_18 | RIDE_ENTRY_FLAG_19 | RIDE_ENTRY_FLAG_26, - 0, 0, 0, 0}, - {RIDE_ENTRY_FLAG_3 | RIDE_ENTRY_FLAG_8 | RIDE_ENTRY_FLAG_11 | RIDE_ENTRY_DISABLE_LAST_OPERATING_MODE | - RIDE_ENTRY_FLAG_18 | RIDE_ENTRY_FLAG_19 | RIDE_ENTRY_FLAG_26, - 0, 0, 0, 0}, - {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | - RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_7 | RIDE_ENTRY_FLAG_9 | - RIDE_ENTRY_FLAG_COVERED_RIDE | RIDE_ENTRY_FLAG_14 | RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | - RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_27 | RIDE_ENTRY_FLAG_28 | RIDE_ENTRY_FLAG_31, - 7, 30, 30, 40}, - {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | RIDE_ENTRY_FLAG_3 | RIDE_ENTRY_FLAG_8 | - RIDE_ENTRY_FLAG_14 | RIDE_ENTRY_FLAG_18 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_28 | RIDE_ENTRY_FLAG_29 | - RIDE_ENTRY_FLAG_31, - 0, 0, 0, 0}, - {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | - RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_7 | - RIDE_ENTRY_FLAG_9 | RIDE_ENTRY_FLAG_COVERED_RIDE | RIDE_ENTRY_FLAG_14 | - RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_27 | RIDE_ENTRY_FLAG_28 | - RIDE_ENTRY_FLAG_30 | RIDE_ENTRY_FLAG_31, - 10, 27, 26, 18}, - {RIDE_ENTRY_FLAG_3 | RIDE_ENTRY_FLAG_8 | RIDE_ENTRY_FLAG_11 | RIDE_ENTRY_FLAG_SEPARATE_RIDE | - RIDE_ENTRY_DISABLE_LAST_OPERATING_MODE | RIDE_ENTRY_DISABLE_FIRST_TWO_OPERATING_MODES | RIDE_ENTRY_FLAG_18 | - RIDE_ENTRY_FLAG_19, - 0, 0, 0, 0}, - {RIDE_ENTRY_FLAG_3 | RIDE_ENTRY_FLAG_8 | RIDE_ENTRY_FLAG_14 | RIDE_ENTRY_DISABLE_LAST_OPERATING_MODE | - RIDE_ENTRY_FLAG_16 | RIDE_ENTRY_FLAG_18 | RIDE_ENTRY_FLAG_19 | RIDE_ENTRY_FLAG_26, - 3, 6, 0, 0}, - {RIDE_ENTRY_FLAG_3 | RIDE_ENTRY_FLAG_8 | RIDE_ENTRY_FLAG_14 | RIDE_ENTRY_DISABLE_LAST_OPERATING_MODE | - RIDE_ENTRY_FLAG_16 | RIDE_ENTRY_FLAG_18 | RIDE_ENTRY_FLAG_19 | RIDE_ENTRY_FLAG_22, - 0, 0, 0, 0}, - {RIDE_ENTRY_FLAG_3 | RIDE_ENTRY_FLAG_8 | RIDE_ENTRY_FLAG_11 | RIDE_ENTRY_FLAG_SEPARATE_RIDE | - RIDE_ENTRY_DISABLE_LAST_OPERATING_MODE | RIDE_ENTRY_DISABLE_FIRST_TWO_OPERATING_MODES | RIDE_ENTRY_FLAG_18 | - RIDE_ENTRY_FLAG_19 | RIDE_ENTRY_FLAG_21 | RIDE_ENTRY_FLAG_22, - 8, 8, 0, 0}, - {RIDE_ENTRY_FLAG_3 | RIDE_ENTRY_FLAG_8 | RIDE_ENTRY_FLAG_14 | RIDE_ENTRY_DISABLE_LAST_OPERATING_MODE | - RIDE_ENTRY_FLAG_16 | RIDE_ENTRY_FLAG_18 | RIDE_ENTRY_FLAG_19 | RIDE_ENTRY_FLAG_22 | RIDE_ENTRY_FLAG_26, - 0, 0, 0, 0}, - {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | - RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_7 | RIDE_ENTRY_FLAG_9 | - RIDE_ENTRY_FLAG_COVERED_RIDE | RIDE_ENTRY_FLAG_14 | RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | - RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_28 | RIDE_ENTRY_FLAG_31, - 0, 0, 0, 0}, - {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | - RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_7 | - RIDE_ENTRY_FLAG_9 | RIDE_ENTRY_FLAG_COVERED_RIDE | RIDE_ENTRY_FLAG_14 | - RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_27 | RIDE_ENTRY_FLAG_28 | - RIDE_ENTRY_FLAG_30 | RIDE_ENTRY_FLAG_31, - 10, 27, 30, 17}, - {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | - RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_7 | - RIDE_ENTRY_FLAG_9 | RIDE_ENTRY_FLAG_COVERED_RIDE | RIDE_ENTRY_FLAG_14 | - RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_27 | RIDE_ENTRY_FLAG_28 | - RIDE_ENTRY_FLAG_30 | RIDE_ENTRY_FLAG_31, - 0, 0, 0, 0}, - {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | - RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_7 | - RIDE_ENTRY_FLAG_9 | RIDE_ENTRY_FLAG_COVERED_RIDE | RIDE_ENTRY_FLAG_14 | - RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_27 | RIDE_ENTRY_FLAG_28 | - RIDE_ENTRY_FLAG_30 | RIDE_ENTRY_FLAG_31, - 0, 0, 0, 0}, - {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | - RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_7 | - RIDE_ENTRY_FLAG_9 | RIDE_ENTRY_FLAG_COVERED_RIDE | RIDE_ENTRY_FLAG_14 | - RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_27 | RIDE_ENTRY_FLAG_28 | - RIDE_ENTRY_FLAG_31, - 0, 0, 0, 0}, - {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | - RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_7 | - RIDE_ENTRY_FLAG_9 | RIDE_ENTRY_FLAG_COVERED_RIDE | RIDE_ENTRY_FLAG_14 | - RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_27 | RIDE_ENTRY_FLAG_28 | - RIDE_ENTRY_FLAG_30 | RIDE_ENTRY_FLAG_31, - 10, 27, 30, 25}, - {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | - RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_7 | - RIDE_ENTRY_FLAG_9 | RIDE_ENTRY_FLAG_COVERED_RIDE | RIDE_ENTRY_FLAG_14 | - RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_27 | RIDE_ENTRY_FLAG_28 | - RIDE_ENTRY_FLAG_30 | RIDE_ENTRY_FLAG_31, - 10, 27, 30, 25}, - {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | - RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_7 | - RIDE_ENTRY_FLAG_9 | RIDE_ENTRY_FLAG_COVERED_RIDE | RIDE_ENTRY_FLAG_14 | - RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_27 | RIDE_ENTRY_FLAG_28 | - RIDE_ENTRY_FLAG_30 | RIDE_ENTRY_FLAG_31, - 10, 27, 30, 25}, - {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | - RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_7 | - RIDE_ENTRY_FLAG_9 | RIDE_ENTRY_FLAG_COVERED_RIDE | RIDE_ENTRY_FLAG_14 | - RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_27 | RIDE_ENTRY_FLAG_28 | - RIDE_ENTRY_FLAG_30 | RIDE_ENTRY_FLAG_31, - 10, 27, 30, 25}, - {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | - RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_7 | - RIDE_ENTRY_FLAG_9 | RIDE_ENTRY_FLAG_COVERED_RIDE | RIDE_ENTRY_FLAG_14 | - RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_27 | RIDE_ENTRY_FLAG_28 | - RIDE_ENTRY_FLAG_31, - 0, 0, 0, 0}, - {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | - RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_9 | - RIDE_ENTRY_FLAG_COVERED_RIDE | RIDE_ENTRY_FLAG_14 | RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | - RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_28 | RIDE_ENTRY_FLAG_31, - 0, 0, 0, 0}, - {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | - RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_9 | RIDE_ENTRY_FLAG_14 | - RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_28 | RIDE_ENTRY_FLAG_31, - 0, 0, 0, 0}, - {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | - RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_7 | - RIDE_ENTRY_FLAG_9 | RIDE_ENTRY_FLAG_COVERED_RIDE | RIDE_ENTRY_FLAG_14 | - RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_27 | RIDE_ENTRY_FLAG_28 | - RIDE_ENTRY_FLAG_30 | RIDE_ENTRY_FLAG_31, - 10, 27, 30, 25}, - {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | - RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | RIDE_ENTRY_FLAG_9 | RIDE_ENTRY_FLAG_14 | RIDE_ENTRY_FLAG_26 | - RIDE_ENTRY_FLAG_28 | RIDE_ENTRY_FLAG_30 | RIDE_ENTRY_FLAG_31, - 0, 0, 0, 0}, - {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | - RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_7 | - RIDE_ENTRY_FLAG_9 | RIDE_ENTRY_FLAG_COVERED_RIDE | RIDE_ENTRY_FLAG_14 | - RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_27 | RIDE_ENTRY_FLAG_28 | - RIDE_ENTRY_FLAG_30 | RIDE_ENTRY_FLAG_31, - 10, 27, 30, 25}, - {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | - RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_7 | - RIDE_ENTRY_FLAG_9 | RIDE_ENTRY_FLAG_COVERED_RIDE | RIDE_ENTRY_FLAG_14 | - RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_27 | RIDE_ENTRY_FLAG_28 | - RIDE_ENTRY_FLAG_31, - 0, 0, 0, 0}, - {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | - RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_7 | - RIDE_ENTRY_FLAG_9 | RIDE_ENTRY_FLAG_COVERED_RIDE | RIDE_ENTRY_FLAG_14 | - RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_27 | RIDE_ENTRY_FLAG_28 | - RIDE_ENTRY_FLAG_31, - 10, 27, 30, 25}, - {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | RIDE_ENTRY_FLAG_11 | - RIDE_ENTRY_FLAG_28 | RIDE_ENTRY_FLAG_31, - 0, 0, 0, 0}, - {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | - RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_7 | - RIDE_ENTRY_FLAG_9 | RIDE_ENTRY_FLAG_COVERED_RIDE | RIDE_ENTRY_FLAG_14 | - RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_27 | RIDE_ENTRY_FLAG_28 | - RIDE_ENTRY_FLAG_30 | RIDE_ENTRY_FLAG_31, - 10, 27, 30, 17}, - {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | RIDE_ENTRY_FLAG_3 | - RIDE_ENTRY_FLAG_8 | RIDE_ENTRY_FLAG_9 | RIDE_ENTRY_FLAG_14 | RIDE_ENTRY_FLAG_18 | - RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_28 | RIDE_ENTRY_FLAG_31, - 0, 0, 0, 0}, - {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_3 | RIDE_ENTRY_FLAG_8 | - RIDE_ENTRY_FLAG_11 | RIDE_ENTRY_DISABLE_LAST_OPERATING_MODE | RIDE_ENTRY_FLAG_18 | RIDE_ENTRY_FLAG_19 | - RIDE_ENTRY_FLAG_26, - 20, 180, 0, 0}, - {RIDE_ENTRY_FLAG_3 | RIDE_ENTRY_FLAG_8 | RIDE_ENTRY_FLAG_14 | RIDE_ENTRY_DISABLE_LAST_OPERATING_MODE | - RIDE_ENTRY_FLAG_16 | RIDE_ENTRY_FLAG_18 | RIDE_ENTRY_FLAG_19 | RIDE_ENTRY_FLAG_22, - 0, 0, 0, 0}, - {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | - RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_9 | RIDE_ENTRY_FLAG_11 | RIDE_ENTRY_FLAG_14 | - RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_28 | RIDE_ENTRY_FLAG_31, - 0, 0, 0, 0}, - {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | - RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_7 | - RIDE_ENTRY_FLAG_9 | RIDE_ENTRY_FLAG_COVERED_RIDE | RIDE_ENTRY_FLAG_14 | - RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_27 | RIDE_ENTRY_FLAG_28 | - RIDE_ENTRY_FLAG_30 | RIDE_ENTRY_FLAG_31, - 7, 27, 0, 0}, - {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | - RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_7 | - RIDE_ENTRY_FLAG_9 | RIDE_ENTRY_FLAG_COVERED_RIDE | RIDE_ENTRY_FLAG_SEPARATE_RIDE_NAME | RIDE_ENTRY_FLAG_14 | - RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_27 | RIDE_ENTRY_FLAG_28 | - RIDE_ENTRY_FLAG_30 | RIDE_ENTRY_FLAG_31, - 0, 0, 0, 0}, - {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | - RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_7 | RIDE_ENTRY_FLAG_9 | - RIDE_ENTRY_FLAG_COVERED_RIDE | RIDE_ENTRY_FLAG_14 | RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | - RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_27 | RIDE_ENTRY_FLAG_28 | RIDE_ENTRY_FLAG_31, - 30, 50, 30, 40}, - {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | - RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_7 | - RIDE_ENTRY_FLAG_9 | RIDE_ENTRY_FLAG_COVERED_RIDE | RIDE_ENTRY_FLAG_14 | - RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_27 | RIDE_ENTRY_FLAG_28 | - RIDE_ENTRY_FLAG_31, - 0, 0, 0, 0}, - {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | RIDE_ENTRY_FLAG_3 | - RIDE_ENTRY_FLAG_8 | RIDE_ENTRY_FLAG_14 | RIDE_ENTRY_DISABLE_LAST_OPERATING_MODE | RIDE_ENTRY_FLAG_16 | - RIDE_ENTRY_FLAG_18 | RIDE_ENTRY_FLAG_19 | RIDE_ENTRY_FLAG_26, - 7, 15, 0, 0}, - {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | - RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_2 | RIDE_ENTRY_FLAG_14 | - RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_28 | RIDE_ENTRY_FLAG_31, - 0, 0, 0, 0}, - {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | - RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_9 | - RIDE_ENTRY_FLAG_14 | RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_28 | - RIDE_ENTRY_FLAG_31, - 0, 0, 0, 0}, - {RIDE_ENTRY_FLAG_3 | RIDE_ENTRY_FLAG_8 | RIDE_ENTRY_FLAG_11 | RIDE_ENTRY_FLAG_SEPARATE_RIDE | - RIDE_ENTRY_DISABLE_LAST_OPERATING_MODE | RIDE_ENTRY_DISABLE_FIRST_TWO_OPERATING_MODES | RIDE_ENTRY_FLAG_18 | - RIDE_ENTRY_FLAG_19 | RIDE_ENTRY_FLAG_23, - 0, 0, 0, 0}, - {RIDE_ENTRY_FLAG_3 | RIDE_ENTRY_FLAG_8 | RIDE_ENTRY_FLAG_14 | RIDE_ENTRY_DISABLE_LAST_OPERATING_MODE | - RIDE_ENTRY_FLAG_16 | RIDE_ENTRY_FLAG_18 | RIDE_ENTRY_FLAG_19 | RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | - RIDE_ENTRY_FLAG_26, - 10, 20, 0, 0}, - {RIDE_ENTRY_FLAG_3 | RIDE_ENTRY_FLAG_8 | RIDE_ENTRY_FLAG_11 | RIDE_ENTRY_FLAG_SEPARATE_RIDE | - RIDE_ENTRY_DISABLE_LAST_OPERATING_MODE | RIDE_ENTRY_DISABLE_FIRST_TWO_OPERATING_MODES | RIDE_ENTRY_FLAG_18 | - RIDE_ENTRY_FLAG_19 | RIDE_ENTRY_FLAG_24, - 0, 0, 0, 0}, - {RIDE_ENTRY_FLAG_3 | RIDE_ENTRY_FLAG_8 | RIDE_ENTRY_FLAG_11 | RIDE_ENTRY_FLAG_SEPARATE_RIDE | - RIDE_ENTRY_DISABLE_LAST_OPERATING_MODE | RIDE_ENTRY_DISABLE_FIRST_TWO_OPERATING_MODES | RIDE_ENTRY_FLAG_18 | - RIDE_ENTRY_FLAG_19 | RIDE_ENTRY_FLAG_23, - 0, 0, 0, 0}, - {RIDE_ENTRY_FLAG_3 | RIDE_ENTRY_FLAG_8 | RIDE_ENTRY_FLAG_11 | RIDE_ENTRY_FLAG_SEPARATE_RIDE | - RIDE_ENTRY_DISABLE_LAST_OPERATING_MODE | RIDE_ENTRY_DISABLE_FIRST_TWO_OPERATING_MODES | RIDE_ENTRY_FLAG_18 | - RIDE_ENTRY_FLAG_19 | RIDE_ENTRY_FLAG_24, - 0, 0, 0, 0}, - {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | - RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_7 | - RIDE_ENTRY_FLAG_9 | RIDE_ENTRY_FLAG_COVERED_RIDE | RIDE_ENTRY_FLAG_14 | - RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_27 | RIDE_ENTRY_FLAG_28 | - RIDE_ENTRY_FLAG_30 | RIDE_ENTRY_FLAG_31, - 10, 27, 30, 25}, - {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | - RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_7 | - RIDE_ENTRY_FLAG_9 | RIDE_ENTRY_FLAG_COVERED_RIDE | RIDE_ENTRY_FLAG_14 | - RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_27 | RIDE_ENTRY_FLAG_28 | - RIDE_ENTRY_FLAG_31, - 10, 33, 30, 25}, - {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | - RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_7 | - RIDE_ENTRY_FLAG_9 | RIDE_ENTRY_FLAG_COVERED_RIDE | RIDE_ENTRY_FLAG_14 | - RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_27 | RIDE_ENTRY_FLAG_28 | - RIDE_ENTRY_FLAG_30 | RIDE_ENTRY_FLAG_31, - 0, 0, 0, 0}, - {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | - RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_7 | - RIDE_ENTRY_FLAG_9 | RIDE_ENTRY_FLAG_COVERED_RIDE | RIDE_ENTRY_FLAG_14 | - RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_27 | RIDE_ENTRY_FLAG_28 | - RIDE_ENTRY_FLAG_30 | RIDE_ENTRY_FLAG_31, - 0, 0, 0, 0}, - {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | - RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_7 | - RIDE_ENTRY_FLAG_9 | RIDE_ENTRY_FLAG_COVERED_RIDE | RIDE_ENTRY_FLAG_14 | - RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_27 | RIDE_ENTRY_FLAG_28 | - RIDE_ENTRY_FLAG_31, - 0, 0, 0, 0}, - {RIDE_ENTRY_FLAG_0 | RIDE_ENTRY_FLAG_NO_INVERSIONS | RIDE_ENTRY_FLAG_NO_BANKED_TRACK | - RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_1 | RIDE_ENTRY_FLAG_ALTERNATIVE_ROTATION_MODE_1 | RIDE_ENTRY_FLAG_7 | - RIDE_ENTRY_FLAG_9 | RIDE_ENTRY_FLAG_COVERED_RIDE | RIDE_ENTRY_FLAG_14 | - RIDE_ENTRY_FLAG_ALTERNATIVE_SWING_MODE_2 | RIDE_ENTRY_FLAG_26 | RIDE_ENTRY_FLAG_27 | RIDE_ENTRY_FLAG_28 | - RIDE_ENTRY_FLAG_30 | RIDE_ENTRY_FLAG_31, - 10, 31, 26, 18}, -}; - static const int RideInspectionInterval[] = { 10, 20, 30, 45, 60, 120, 0, 0 }; diff --git a/src/ride/ride.h b/src/ride/ride.h index 8c786f57ed..6269ce9b6b 100644 --- a/src/ride/ride.h +++ b/src/ride/ride.h @@ -885,13 +885,13 @@ enum { typedef struct rct_ride_properties { uint32 flags; - uint8 minValue; - uint8 maxValue; - uint8 maxBrakesSpeed; - uint8 accelaration; + uint8 min_value; + uint8 max_value; + uint8 max_brakes_speed; + uint8 acceleration; } rct_ride_properties; -extern const rct_ride_properties gRideProperties[91]; +extern const rct_ride_properties RideProperties[91]; #define MAX_RIDES 255 diff --git a/src/ride/ride_data.c b/src/ride/ride_data.c index f9a86ff0c7..8cf2d94d5f 100644 --- a/src/ride/ride_data.c +++ b/src/ride/ride_data.c @@ -1729,3 +1729,508 @@ const rating_tuple RideRatings[91] = { { 50, 30, 30 }, // RIDE_TYPE_59 { 50, 30, 10 }, // RIDE_TYPE_LIM_LAUNCHED_ROLLER_COASTER }; + +// rct2: 0x0097CF40 +const rct_ride_properties RideProperties[91] = { + {RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_ADDITIONAL | + RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_SUPPORTS | RIDE_TYPE_FLAG_HAS_LEAVE_WHEN_ANOTHER_VEHICLE_ARRIVES_AT_STATION | + RIDE_TYPE_FLAG_CAN_SYNCHRONISE_ADJACENT_STATIONS | RIDE_TYPE_FLAG_HAS_G_FORCES | + RIDE_TYPE_FLAG_HAS_DATA_LOGGING | RIDE_TYPE_FLAG_HAS_DROPS | RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | + RIDE_TYPE_FLAG_20 | RIDE_TYPE_FLAG_26 | RIDE_TYPE_FLAG_27 | RIDE_TYPE_FLAG_HAS_TRACK | RIDE_TYPE_FLAG_30 | + RIDE_TYPE_FLAG_SUPPORTS_MULTIPLE_TRACK_COLOUR, + 10, 27, 30, 17}, // RIDE_TYPE_SPIRAL_ROLLER_COASTER + {RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_ADDITIONAL | + RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_SUPPORTS | RIDE_TYPE_FLAG_HAS_LEAVE_WHEN_ANOTHER_VEHICLE_ARRIVES_AT_STATION | + RIDE_TYPE_FLAG_CAN_SYNCHRONISE_ADJACENT_STATIONS | RIDE_TYPE_FLAG_HAS_G_FORCES | + RIDE_TYPE_FLAG_HAS_DATA_LOGGING | RIDE_TYPE_FLAG_HAS_DROPS | RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | + RIDE_TYPE_FLAG_20 | RIDE_TYPE_FLAG_26 | RIDE_TYPE_FLAG_27 | RIDE_TYPE_FLAG_HAS_TRACK | RIDE_TYPE_FLAG_30 | + RIDE_TYPE_FLAG_SUPPORTS_MULTIPLE_TRACK_COLOUR, + 7, 27, 0, 0}, // RIDE_TYPE_STAND_UP_ROLLER_COASTER + {RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_ADDITIONAL | + RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_SUPPORTS | RIDE_TYPE_FLAG_HAS_LEAVE_WHEN_ANOTHER_VEHICLE_ARRIVES_AT_STATION | + RIDE_TYPE_FLAG_CAN_SYNCHRONISE_ADJACENT_STATIONS | RIDE_TYPE_FLAG_HAS_G_FORCES | + RIDE_TYPE_FLAG_HAS_DATA_LOGGING | RIDE_TYPE_FLAG_HAS_DROPS | RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | + RIDE_TYPE_FLAG_20 | RIDE_TYPE_FLAG_26 | RIDE_TYPE_FLAG_27 | RIDE_TYPE_FLAG_HAS_TRACK | RIDE_TYPE_FLAG_30 | + RIDE_TYPE_FLAG_SUPPORTS_MULTIPLE_TRACK_COLOUR, + 0, 0, 0, 0}, // RIDE_TYPE_SUSPENDED_SWINGING_COASTER + {RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_ADDITIONAL | + RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_SUPPORTS | RIDE_TYPE_FLAG_HAS_LEAVE_WHEN_ANOTHER_VEHICLE_ARRIVES_AT_STATION | + RIDE_TYPE_FLAG_CAN_SYNCHRONISE_ADJACENT_STATIONS | RIDE_TYPE_FLAG_HAS_G_FORCES | + RIDE_TYPE_FLAG_HAS_DATA_LOGGING | RIDE_TYPE_FLAG_HAS_DROPS | RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | + RIDE_TYPE_FLAG_20 | RIDE_TYPE_FLAG_26 | RIDE_TYPE_FLAG_27 | RIDE_TYPE_FLAG_HAS_TRACK | RIDE_TYPE_FLAG_30 | + RIDE_TYPE_FLAG_SUPPORTS_MULTIPLE_TRACK_COLOUR, + 7, 27, 0, 0}, // RIDE_TYPE_INVERTED_ROLLER_COASTER + {RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_ADDITIONAL | + RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_SUPPORTS | RIDE_TYPE_FLAG_HAS_LEAVE_WHEN_ANOTHER_VEHICLE_ARRIVES_AT_STATION | + RIDE_TYPE_FLAG_CAN_SYNCHRONISE_ADJACENT_STATIONS | RIDE_TYPE_FLAG_HAS_G_FORCES | + RIDE_TYPE_FLAG_HAS_DATA_LOGGING | RIDE_TYPE_FLAG_HAS_DROPS | RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | + RIDE_TYPE_FLAG_20 | RIDE_TYPE_FLAG_26 | RIDE_TYPE_FLAG_27 | RIDE_TYPE_FLAG_HAS_TRACK | RIDE_TYPE_FLAG_30 | + RIDE_TYPE_FLAG_SUPPORTS_MULTIPLE_TRACK_COLOUR, + 0, 0, 0, 0}, // RIDE_TYPE_JUNIOR_ROLLER_COASTER + {RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_SUPPORTS | RIDE_TYPE_FLAG_HAS_LEAVE_WHEN_ANOTHER_VEHICLE_ARRIVES_AT_STATION | + RIDE_TYPE_FLAG_HAS_DATA_LOGGING | RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | RIDE_TYPE_FLAG_26 | + RIDE_TYPE_FLAG_HAS_TRACK | RIDE_TYPE_FLAG_30 | RIDE_TYPE_FLAG_SUPPORTS_MULTIPLE_TRACK_COLOUR, + 0, 0, 0, 0}, // RIDE_TYPE_MINIATURE_RAILWAY + {RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_ADDITIONAL | + RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_SUPPORTS | RIDE_TYPE_FLAG_HAS_LEAVE_WHEN_ANOTHER_VEHICLE_ARRIVES_AT_STATION | + RIDE_TYPE_FLAG_HAS_DATA_LOGGING | RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | RIDE_TYPE_FLAG_26 | + RIDE_TYPE_FLAG_HAS_TRACK | RIDE_TYPE_FLAG_30 | RIDE_TYPE_FLAG_SUPPORTS_MULTIPLE_TRACK_COLOUR, + 0, 0, 0, 0}, // RIDE_TYPE_MONORAIL + {RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_SUPPORTS | + RIDE_TYPE_FLAG_HAS_LEAVE_WHEN_ANOTHER_VEHICLE_ARRIVES_AT_STATION | + RIDE_TYPE_FLAG_CAN_SYNCHRONISE_ADJACENT_STATIONS | RIDE_TYPE_FLAG_HAS_G_FORCES | + RIDE_TYPE_FLAG_HAS_DATA_LOGGING | RIDE_TYPE_FLAG_HAS_DROPS | RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | + RIDE_TYPE_FLAG_20 | RIDE_TYPE_FLAG_26 | RIDE_TYPE_FLAG_27 | RIDE_TYPE_FLAG_HAS_TRACK | RIDE_TYPE_FLAG_30 | + RIDE_TYPE_FLAG_SUPPORTS_MULTIPLE_TRACK_COLOUR, + 0, 0, 0, 0}, // RIDE_TYPE_MINI_SUSPENDED_COASTER + {RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_SUPPORTS | RIDE_TYPE_FLAG_6 | + RIDE_TYPE_FLAG_NO_TEST_MODE | RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | RIDE_TYPE_FLAG_26 | RIDE_TYPE_FLAG_27 | + RIDE_TYPE_FLAG_HAS_TRACK | RIDE_TYPE_FLAG_SUPPORTS_MULTIPLE_TRACK_COLOUR, + 0, 0, 0, 0}, // RIDE_TYPE_BOAT_RIDE + {RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_SUPPORTS | + RIDE_TYPE_FLAG_HAS_LEAVE_WHEN_ANOTHER_VEHICLE_ARRIVES_AT_STATION | + RIDE_TYPE_FLAG_CAN_SYNCHRONISE_ADJACENT_STATIONS | RIDE_TYPE_FLAG_HAS_G_FORCES | + RIDE_TYPE_FLAG_HAS_DATA_LOGGING | RIDE_TYPE_FLAG_HAS_DROPS | RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | + RIDE_TYPE_FLAG_20 | RIDE_TYPE_FLAG_26 | RIDE_TYPE_FLAG_27 | RIDE_TYPE_FLAG_HAS_TRACK | + RIDE_TYPE_FLAG_SUPPORTS_MULTIPLE_TRACK_COLOUR, + 0, 0, 0, 0}, // RIDE_TYPE_WOODEN_WILD_MOUSE + {RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_ADDITIONAL | + RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_SUPPORTS | RIDE_TYPE_FLAG_HAS_LEAVE_WHEN_ANOTHER_VEHICLE_ARRIVES_AT_STATION | + RIDE_TYPE_FLAG_CAN_SYNCHRONISE_ADJACENT_STATIONS | RIDE_TYPE_FLAG_HAS_G_FORCES | + RIDE_TYPE_FLAG_HAS_DATA_LOGGING | RIDE_TYPE_FLAG_HAS_DROPS | RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | + RIDE_TYPE_FLAG_20 | RIDE_TYPE_FLAG_26 | RIDE_TYPE_FLAG_27 | RIDE_TYPE_FLAG_HAS_TRACK | RIDE_TYPE_FLAG_30 | + RIDE_TYPE_FLAG_SUPPORTS_MULTIPLE_TRACK_COLOUR, + 0, 0, 0, 0}, // RIDE_TYPE_STEEPLECHASE + {RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_ADDITIONAL | + RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_SUPPORTS | RIDE_TYPE_FLAG_CAN_SYNCHRONISE_ADJACENT_STATIONS | + RIDE_TYPE_FLAG_HAS_DATA_LOGGING | RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | RIDE_TYPE_FLAG_20 | RIDE_TYPE_FLAG_26 | + RIDE_TYPE_FLAG_HAS_TRACK | RIDE_TYPE_FLAG_SUPPORTS_MULTIPLE_TRACK_COLOUR, + 0, 0, 0, 0}, // RIDE_TYPE_CAR_RIDE + {RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_ADDITIONAL | + RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_SUPPORTS | RIDE_TYPE_FLAG_3 | RIDE_TYPE_FLAG_CANNOT_HAVE_GAPS | + RIDE_TYPE_FLAG_HAS_DATA_LOGGING | RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | RIDE_TYPE_FLAG_18 | RIDE_TYPE_FLAG_20 | + RIDE_TYPE_FLAG_26 | RIDE_TYPE_FLAG_HAS_TRACK | RIDE_TYPE_FLAG_SUPPORTS_MULTIPLE_TRACK_COLOUR, + 10, 40, 0, 0}, // RIDE_TYPE_LAUNCHED_FREEFALL + {RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_ADDITIONAL | + RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_SUPPORTS | RIDE_TYPE_FLAG_HAS_LEAVE_WHEN_ANOTHER_VEHICLE_ARRIVES_AT_STATION | + RIDE_TYPE_FLAG_CAN_SYNCHRONISE_ADJACENT_STATIONS | RIDE_TYPE_FLAG_HAS_G_FORCES | + RIDE_TYPE_FLAG_HAS_DATA_LOGGING | RIDE_TYPE_FLAG_HAS_DROPS | RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | + RIDE_TYPE_FLAG_20 | RIDE_TYPE_FLAG_26 | RIDE_TYPE_FLAG_27 | RIDE_TYPE_FLAG_HAS_TRACK | + RIDE_TYPE_FLAG_SUPPORTS_MULTIPLE_TRACK_COLOUR, + 0, 0, 0, 0}, // RIDE_TYPE_BOBSLEIGH_COASTER + {RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_ADDITIONAL | + RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_SUPPORTS | RIDE_TYPE_FLAG_3 | RIDE_TYPE_FLAG_CANNOT_HAVE_GAPS | + RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | RIDE_TYPE_FLAG_18 | RIDE_TYPE_FLAG_26 | RIDE_TYPE_FLAG_HAS_TRACK | + RIDE_TYPE_FLAG_SUPPORTS_MULTIPLE_TRACK_COLOUR, + 0, 0, 0, 0}, // RIDE_TYPE_OBSERVATION_TOWER + {RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_ADDITIONAL | + RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_SUPPORTS | RIDE_TYPE_FLAG_HAS_LEAVE_WHEN_ANOTHER_VEHICLE_ARRIVES_AT_STATION | + RIDE_TYPE_FLAG_CAN_SYNCHRONISE_ADJACENT_STATIONS | RIDE_TYPE_FLAG_HAS_G_FORCES | + RIDE_TYPE_FLAG_HAS_DATA_LOGGING | RIDE_TYPE_FLAG_HAS_DROPS | RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | + RIDE_TYPE_FLAG_20 | RIDE_TYPE_FLAG_26 | RIDE_TYPE_FLAG_27 | RIDE_TYPE_FLAG_HAS_TRACK | RIDE_TYPE_FLAG_30 | + RIDE_TYPE_FLAG_SUPPORTS_MULTIPLE_TRACK_COLOUR, + 10, 27, 26, 18}, // RIDE_TYPE_LOOPING_ROLLER_COASTER + {RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_ADDITIONAL | + RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_SUPPORTS | RIDE_TYPE_FLAG_HAS_LEAVE_WHEN_ANOTHER_VEHICLE_ARRIVES_AT_STATION | + RIDE_TYPE_FLAG_CAN_SYNCHRONISE_ADJACENT_STATIONS | RIDE_TYPE_FLAG_HAS_G_FORCES | + RIDE_TYPE_FLAG_HAS_DATA_LOGGING | RIDE_TYPE_FLAG_HAS_DROPS | RIDE_TYPE_FLAG_TRACK_ELEMENTS_HAVE_TWO_VARIETIES | + RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | RIDE_TYPE_FLAG_20 | RIDE_TYPE_FLAG_26 | RIDE_TYPE_FLAG_27 | + RIDE_TYPE_FLAG_HAS_TRACK | RIDE_TYPE_FLAG_SUPPORTS_MULTIPLE_TRACK_COLOUR, + 0, 0, 0, 0}, // RIDE_TYPE_DINGHY_SLIDE + {RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_ADDITIONAL | + RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_SUPPORTS | RIDE_TYPE_FLAG_HAS_LEAVE_WHEN_ANOTHER_VEHICLE_ARRIVES_AT_STATION | + RIDE_TYPE_FLAG_CAN_SYNCHRONISE_ADJACENT_STATIONS | RIDE_TYPE_FLAG_HAS_G_FORCES | + RIDE_TYPE_FLAG_HAS_DATA_LOGGING | RIDE_TYPE_FLAG_HAS_DROPS | RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | + RIDE_TYPE_FLAG_20 | RIDE_TYPE_FLAG_26 | RIDE_TYPE_FLAG_27 | RIDE_TYPE_FLAG_HAS_TRACK | RIDE_TYPE_FLAG_30 | + RIDE_TYPE_FLAG_SUPPORTS_MULTIPLE_TRACK_COLOUR, + 0, 0, 0, 0}, // RIDE_TYPE_MINE_TRAIN_COASTER + {RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_SUPPORTS | + RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | RIDE_TYPE_FLAG_26 | RIDE_TYPE_FLAG_HAS_TRACK | + RIDE_TYPE_FLAG_SUPPORTS_MULTIPLE_TRACK_COLOUR, + 1, 4, 0, 0}, // RIDE_TYPE_CHAIRLIFT + {RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_ADDITIONAL | + RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_SUPPORTS | RIDE_TYPE_FLAG_HAS_LEAVE_WHEN_ANOTHER_VEHICLE_ARRIVES_AT_STATION | + RIDE_TYPE_FLAG_CAN_SYNCHRONISE_ADJACENT_STATIONS | RIDE_TYPE_FLAG_HAS_G_FORCES | + RIDE_TYPE_FLAG_HAS_DATA_LOGGING | RIDE_TYPE_FLAG_HAS_DROPS | RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | + RIDE_TYPE_FLAG_20 | RIDE_TYPE_FLAG_26 | RIDE_TYPE_FLAG_27 | RIDE_TYPE_FLAG_HAS_TRACK | RIDE_TYPE_FLAG_30 | + RIDE_TYPE_FLAG_SUPPORTS_MULTIPLE_TRACK_COLOUR, + 10, 12, 30, 25}, // RIDE_TYPE_CORKSCREW_ROLLER_COASTER + {RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_SUPPORTS | RIDE_TYPE_FLAG_3 | RIDE_TYPE_FLAG_NO_TEST_MODE | RIDE_TYPE_FLAG_13 | + RIDE_TYPE_FLAG_18 | RIDE_TYPE_FLAG_IN_RIDE | RIDE_TYPE_FLAG_HAS_TRACK, + 1, 16, 0, 0}, // RIDE_TYPE_MAZE + {RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_ADDITIONAL | + RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_SUPPORTS | RIDE_TYPE_FLAG_3 | RIDE_TYPE_FLAG_CANNOT_HAVE_GAPS | + RIDE_TYPE_FLAG_NO_TEST_MODE | RIDE_TYPE_FLAG_13 | RIDE_TYPE_FLAG_HAS_NO_TRACK | RIDE_TYPE_FLAG_18 | + RIDE_TYPE_FLAG_FLAT_RIDE, + 1, 5, 0, 0}, // RIDE_TYPE_SPIRAL_SLIDE + {RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_SUPPORTS | RIDE_TYPE_FLAG_NO_TEST_MODE | + RIDE_TYPE_FLAG_18 | RIDE_TYPE_FLAG_20 | RIDE_TYPE_FLAG_26 | RIDE_TYPE_FLAG_HAS_TRACK | + RIDE_TYPE_FLAG_SUPPORTS_MULTIPLE_TRACK_COLOUR, + 1, 10, 0, 0}, // RIDE_TYPE_GO_KARTS + {RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_ADDITIONAL | + RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_SUPPORTS | RIDE_TYPE_FLAG_HAS_LEAVE_WHEN_ANOTHER_VEHICLE_ARRIVES_AT_STATION | + RIDE_TYPE_FLAG_CAN_SYNCHRONISE_ADJACENT_STATIONS | RIDE_TYPE_FLAG_HAS_DATA_LOGGING | RIDE_TYPE_FLAG_HAS_DROPS | + RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | RIDE_TYPE_FLAG_20 | RIDE_TYPE_FLAG_26 | RIDE_TYPE_FLAG_HAS_TRACK | + RIDE_TYPE_FLAG_SUPPORTS_MULTIPLE_TRACK_COLOUR, + 0, 0, 0, 0}, // RIDE_TYPE_LOG_FLUME + {RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_SUPPORTS | + RIDE_TYPE_FLAG_HAS_LEAVE_WHEN_ANOTHER_VEHICLE_ARRIVES_AT_STATION | + RIDE_TYPE_FLAG_CAN_SYNCHRONISE_ADJACENT_STATIONS | RIDE_TYPE_FLAG_HAS_DATA_LOGGING | RIDE_TYPE_FLAG_HAS_DROPS | + RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | RIDE_TYPE_FLAG_18 | RIDE_TYPE_FLAG_20 | RIDE_TYPE_FLAG_26 | + RIDE_TYPE_FLAG_HAS_TRACK | RIDE_TYPE_FLAG_SUPPORTS_MULTIPLE_TRACK_COLOUR, + 0, 0, 0, 0}, // RIDE_TYPE_RIVER_RAPIDS + {RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_ADDITIONAL | + RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_SUPPORTS | RIDE_TYPE_FLAG_3 | RIDE_TYPE_FLAG_CANNOT_HAVE_GAPS | + RIDE_TYPE_FLAG_NO_TEST_MODE | RIDE_TYPE_FLAG_HAS_NO_TRACK | RIDE_TYPE_FLAG_18 | RIDE_TYPE_FLAG_FLAT_RIDE | + RIDE_TYPE_FLAG_26, + 20, 180, 0, 0}, // RIDE_TYPE_DODGEMS + {RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_SUPPORTS | RIDE_TYPE_FLAG_3 | + RIDE_TYPE_FLAG_CANNOT_HAVE_GAPS | RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | RIDE_TYPE_FLAG_HAS_NO_TRACK | + RIDE_TYPE_FLAG_16 | RIDE_TYPE_FLAG_18 | RIDE_TYPE_FLAG_FLAT_RIDE | RIDE_TYPE_FLAG_26, + 7, 25, 0, 0}, // RIDE_TYPE_PIRATE_SHIP + {RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_ADDITIONAL | + RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_SUPPORTS | RIDE_TYPE_FLAG_3 | RIDE_TYPE_FLAG_CANNOT_HAVE_GAPS | + RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | RIDE_TYPE_FLAG_HAS_NO_TRACK | RIDE_TYPE_FLAG_16 | RIDE_TYPE_FLAG_18 | + RIDE_TYPE_FLAG_FLAT_RIDE | RIDE_TYPE_FLAG_26, + 7, 15, 0, 0}, // RIDE_TYPE_SWINGING_INVERTER_SHIP + {RIDE_TYPE_FLAG_3 | RIDE_TYPE_FLAG_CANNOT_HAVE_GAPS | RIDE_TYPE_FLAG_NO_TEST_MODE | RIDE_TYPE_FLAG_13 | + RIDE_TYPE_FLAG_HAS_NO_TRACK | RIDE_TYPE_FLAG_IS_SHOP | RIDE_TYPE_FLAG_18 | RIDE_TYPE_FLAG_FLAT_RIDE | + RIDE_TYPE_FLAG_SELLS_FOOD, + 0, 0, 0, 0}, // RIDE_TYPE_FOOD_STALL + {RIDE_TYPE_FLAG_3 | RIDE_TYPE_FLAG_CANNOT_HAVE_GAPS | RIDE_TYPE_FLAG_NO_TEST_MODE | RIDE_TYPE_FLAG_13 | + RIDE_TYPE_FLAG_HAS_NO_TRACK | RIDE_TYPE_FLAG_IS_SHOP | RIDE_TYPE_FLAG_18 | RIDE_TYPE_FLAG_FLAT_RIDE | + RIDE_TYPE_FLAG_SELLS_FOOD, + 0, 0, 0, 0}, // RIDE_TYPE_1D + {RIDE_TYPE_FLAG_3 | RIDE_TYPE_FLAG_CANNOT_HAVE_GAPS | RIDE_TYPE_FLAG_NO_TEST_MODE | RIDE_TYPE_FLAG_13 | + RIDE_TYPE_FLAG_HAS_NO_TRACK | RIDE_TYPE_FLAG_IS_SHOP | RIDE_TYPE_FLAG_18 | RIDE_TYPE_FLAG_FLAT_RIDE | + RIDE_TYPE_FLAG_SELLS_DRINKS, + 0, 0, 0, 0}, // RIDE_TYPE_DRINK_STALL + {RIDE_TYPE_FLAG_3 | RIDE_TYPE_FLAG_CANNOT_HAVE_GAPS | RIDE_TYPE_FLAG_NO_TEST_MODE | RIDE_TYPE_FLAG_13 | + RIDE_TYPE_FLAG_HAS_NO_TRACK | RIDE_TYPE_FLAG_IS_SHOP | RIDE_TYPE_FLAG_18 | RIDE_TYPE_FLAG_FLAT_RIDE | + RIDE_TYPE_FLAG_SELLS_DRINKS, + 0, 0, 0, 0}, // RIDE_TYPE_1F + {RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | RIDE_TYPE_FLAG_3 | RIDE_TYPE_FLAG_CANNOT_HAVE_GAPS | + RIDE_TYPE_FLAG_NO_TEST_MODE | RIDE_TYPE_FLAG_13 | RIDE_TYPE_FLAG_HAS_NO_TRACK | RIDE_TYPE_FLAG_IS_SHOP | + RIDE_TYPE_FLAG_18 | RIDE_TYPE_FLAG_FLAT_RIDE, + 0, 0, 0, 0}, // RIDE_TYPE_SHOP + {RIDE_TYPE_FLAG_3 | RIDE_TYPE_FLAG_CANNOT_HAVE_GAPS | RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | + RIDE_TYPE_FLAG_HAS_NO_TRACK | RIDE_TYPE_FLAG_16 | RIDE_TYPE_FLAG_18 | RIDE_TYPE_FLAG_FLAT_RIDE | + RIDE_TYPE_FLAG_26, + 4, 25, 0, 0}, // RIDE_TYPE_MERRY_GO_ROUND + {RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | RIDE_TYPE_FLAG_3 | RIDE_TYPE_FLAG_CANNOT_HAVE_GAPS | + RIDE_TYPE_FLAG_NO_TEST_MODE | RIDE_TYPE_FLAG_13 | RIDE_TYPE_FLAG_HAS_NO_TRACK | RIDE_TYPE_FLAG_IS_SHOP | + RIDE_TYPE_FLAG_18 | RIDE_TYPE_FLAG_FLAT_RIDE, + 0, 0, 0, 0}, // RIDE_TYPE_22 + {RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | RIDE_TYPE_FLAG_3 | RIDE_TYPE_FLAG_CANNOT_HAVE_GAPS | + RIDE_TYPE_FLAG_NO_TEST_MODE | RIDE_TYPE_FLAG_13 | RIDE_TYPE_FLAG_HAS_NO_TRACK | RIDE_TYPE_FLAG_IS_SHOP | + RIDE_TYPE_FLAG_18 | RIDE_TYPE_FLAG_FLAT_RIDE, + 0, 0, 0, 0}, // RIDE_TYPE_INFORMATION_KIOSK + {RIDE_TYPE_FLAG_3 | RIDE_TYPE_FLAG_CANNOT_HAVE_GAPS | RIDE_TYPE_FLAG_NO_TEST_MODE | RIDE_TYPE_FLAG_13 | + RIDE_TYPE_FLAG_HAS_NO_TRACK | RIDE_TYPE_FLAG_IS_SHOP | RIDE_TYPE_FLAG_18 | RIDE_TYPE_FLAG_FLAT_RIDE | + RIDE_TYPE_FLAG_PEEP_SHOULD_GO_INSIDE_FACILITY | RIDE_TYPE_FLAG_IN_RIDE | RIDE_TYPE_FLAG_IS_BATHROOM, + 4, 4, 0, 0}, // RIDE_TYPE_TOILETS + {RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | RIDE_TYPE_FLAG_3 | RIDE_TYPE_FLAG_CANNOT_HAVE_GAPS | + RIDE_TYPE_FLAG_HAS_NO_TRACK | RIDE_TYPE_FLAG_16 | RIDE_TYPE_FLAG_18 | RIDE_TYPE_FLAG_FLAT_RIDE | + RIDE_TYPE_FLAG_26, + 1, 3, 0, 0}, // RIDE_TYPE_FERRIS_WHEEL + {RIDE_TYPE_FLAG_3 | RIDE_TYPE_FLAG_CANNOT_HAVE_GAPS | RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | + RIDE_TYPE_FLAG_HAS_NO_TRACK | RIDE_TYPE_FLAG_16 | RIDE_TYPE_FLAG_18 | RIDE_TYPE_FLAG_FLAT_RIDE | + RIDE_TYPE_FLAG_26, + 0, 0, 0, 0}, // RIDE_TYPE_MOTION_SIMULATOR + {RIDE_TYPE_FLAG_3 | RIDE_TYPE_FLAG_CANNOT_HAVE_GAPS | RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | + RIDE_TYPE_FLAG_HAS_NO_TRACK | RIDE_TYPE_FLAG_16 | RIDE_TYPE_FLAG_18 | RIDE_TYPE_FLAG_FLAT_RIDE | + RIDE_TYPE_FLAG_IN_RIDE | RIDE_TYPE_FLAG_26, + 0, 0, 0, 0}, // RIDE_TYPE_3D_CINEMA + {RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_ADDITIONAL | + RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_SUPPORTS | RIDE_TYPE_FLAG_3 | RIDE_TYPE_FLAG_CANNOT_HAVE_GAPS | + RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | RIDE_TYPE_FLAG_HAS_NO_TRACK | RIDE_TYPE_FLAG_16 | RIDE_TYPE_FLAG_18 | + RIDE_TYPE_FLAG_FLAT_RIDE | RIDE_TYPE_FLAG_26, + 0, 0, 0, 0}, // RIDE_TYPE_TOP_SPIN + {RIDE_TYPE_FLAG_3 | RIDE_TYPE_FLAG_CANNOT_HAVE_GAPS | RIDE_TYPE_FLAG_NO_TEST_MODE | + RIDE_TYPE_FLAG_HAS_NO_TRACK | RIDE_TYPE_FLAG_18 | RIDE_TYPE_FLAG_FLAT_RIDE | RIDE_TYPE_FLAG_26, + 0, 0, 0, 0}, // RIDE_TYPE_SPACE_RINGS + {RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_ADDITIONAL | + RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_SUPPORTS | RIDE_TYPE_FLAG_CAN_SYNCHRONISE_ADJACENT_STATIONS | + RIDE_TYPE_FLAG_HAS_G_FORCES | RIDE_TYPE_FLAG_HAS_DATA_LOGGING | RIDE_TYPE_FLAG_HAS_DROPS | + RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | RIDE_TYPE_FLAG_20 | RIDE_TYPE_FLAG_26 | RIDE_TYPE_FLAG_27 | + RIDE_TYPE_FLAG_HAS_TRACK | RIDE_TYPE_FLAG_SUPPORTS_MULTIPLE_TRACK_COLOUR, + 7, 30, 30, 40}, // RIDE_TYPE_REVERSE_FREEFALL_COASTER + {RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_SUPPORTS | RIDE_TYPE_FLAG_3 | + RIDE_TYPE_FLAG_CANNOT_HAVE_GAPS | RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | RIDE_TYPE_FLAG_18 | RIDE_TYPE_FLAG_26 | + RIDE_TYPE_FLAG_HAS_TRACK | RIDE_TYPE_FLAG_29 | RIDE_TYPE_FLAG_SUPPORTS_MULTIPLE_TRACK_COLOUR, + 0, 0, 0, 0}, // RIDE_TYPE_LIFT + {RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_ADDITIONAL | + RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_SUPPORTS | RIDE_TYPE_FLAG_HAS_LEAVE_WHEN_ANOTHER_VEHICLE_ARRIVES_AT_STATION | + RIDE_TYPE_FLAG_CAN_SYNCHRONISE_ADJACENT_STATIONS | RIDE_TYPE_FLAG_HAS_G_FORCES | + RIDE_TYPE_FLAG_HAS_DATA_LOGGING | RIDE_TYPE_FLAG_HAS_DROPS | RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | + RIDE_TYPE_FLAG_20 | RIDE_TYPE_FLAG_26 | RIDE_TYPE_FLAG_27 | RIDE_TYPE_FLAG_HAS_TRACK | RIDE_TYPE_FLAG_30 | + RIDE_TYPE_FLAG_SUPPORTS_MULTIPLE_TRACK_COLOUR, + 10, 27, 26, 18}, // RIDE_TYPE_VERTICAL_DROP_ROLLER_COASTER + {RIDE_TYPE_FLAG_3 | RIDE_TYPE_FLAG_CANNOT_HAVE_GAPS | RIDE_TYPE_FLAG_NO_TEST_MODE | RIDE_TYPE_FLAG_13 | + RIDE_TYPE_FLAG_HAS_NO_TRACK | RIDE_TYPE_FLAG_IS_SHOP | RIDE_TYPE_FLAG_18 | RIDE_TYPE_FLAG_FLAT_RIDE, + 0, 0, 0, 0}, // RIDE_TYPE_CASH_MACHINE + {RIDE_TYPE_FLAG_3 | RIDE_TYPE_FLAG_CANNOT_HAVE_GAPS | RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | + RIDE_TYPE_FLAG_HAS_NO_TRACK | RIDE_TYPE_FLAG_16 | RIDE_TYPE_FLAG_18 | RIDE_TYPE_FLAG_FLAT_RIDE | + RIDE_TYPE_FLAG_26, + 3, 6, 0, 0}, // RIDE_TYPE_TWIST + {RIDE_TYPE_FLAG_3 | RIDE_TYPE_FLAG_CANNOT_HAVE_GAPS | RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | + RIDE_TYPE_FLAG_HAS_NO_TRACK | RIDE_TYPE_FLAG_16 | RIDE_TYPE_FLAG_18 | RIDE_TYPE_FLAG_FLAT_RIDE | + RIDE_TYPE_FLAG_IN_RIDE, + 0, 0, 0, 0}, // RIDE_TYPE_HAUNTED_HOUSE + {RIDE_TYPE_FLAG_3 | RIDE_TYPE_FLAG_CANNOT_HAVE_GAPS | RIDE_TYPE_FLAG_NO_TEST_MODE | RIDE_TYPE_FLAG_13 | + RIDE_TYPE_FLAG_HAS_NO_TRACK | RIDE_TYPE_FLAG_IS_SHOP | RIDE_TYPE_FLAG_18 | RIDE_TYPE_FLAG_FLAT_RIDE | + RIDE_TYPE_FLAG_PEEP_SHOULD_GO_INSIDE_FACILITY | RIDE_TYPE_FLAG_IN_RIDE, + 8, 8, 0, 0}, // RIDE_TYPE_FIRST_AID + {RIDE_TYPE_FLAG_3 | RIDE_TYPE_FLAG_CANNOT_HAVE_GAPS | RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | + RIDE_TYPE_FLAG_HAS_NO_TRACK | RIDE_TYPE_FLAG_16 | RIDE_TYPE_FLAG_18 | RIDE_TYPE_FLAG_FLAT_RIDE | + RIDE_TYPE_FLAG_IN_RIDE | RIDE_TYPE_FLAG_26, + 0, 0, 0, 0}, // RIDE_TYPE_CIRCUS_SHOW + {RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_ADDITIONAL | + RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_SUPPORTS | RIDE_TYPE_FLAG_CAN_SYNCHRONISE_ADJACENT_STATIONS | + RIDE_TYPE_FLAG_HAS_G_FORCES | RIDE_TYPE_FLAG_HAS_DATA_LOGGING | RIDE_TYPE_FLAG_HAS_DROPS | + RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | RIDE_TYPE_FLAG_20 | RIDE_TYPE_FLAG_26 | RIDE_TYPE_FLAG_HAS_TRACK | + RIDE_TYPE_FLAG_SUPPORTS_MULTIPLE_TRACK_COLOUR, + 0, 0, 0, 0}, // RIDE_TYPE_GHOST_TRAIN + {RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_ADDITIONAL | + RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_SUPPORTS | RIDE_TYPE_FLAG_HAS_LEAVE_WHEN_ANOTHER_VEHICLE_ARRIVES_AT_STATION | + RIDE_TYPE_FLAG_CAN_SYNCHRONISE_ADJACENT_STATIONS | RIDE_TYPE_FLAG_HAS_G_FORCES | + RIDE_TYPE_FLAG_HAS_DATA_LOGGING | RIDE_TYPE_FLAG_HAS_DROPS | RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | + RIDE_TYPE_FLAG_20 | RIDE_TYPE_FLAG_26 | RIDE_TYPE_FLAG_27 | RIDE_TYPE_FLAG_HAS_TRACK | RIDE_TYPE_FLAG_30 | + RIDE_TYPE_FLAG_SUPPORTS_MULTIPLE_TRACK_COLOUR, + 10, 27, 30, 17}, // RIDE_TYPE_TWISTER_ROLLER_COASTER + {RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_ADDITIONAL | + RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_SUPPORTS | RIDE_TYPE_FLAG_HAS_LEAVE_WHEN_ANOTHER_VEHICLE_ARRIVES_AT_STATION | + RIDE_TYPE_FLAG_CAN_SYNCHRONISE_ADJACENT_STATIONS | RIDE_TYPE_FLAG_HAS_G_FORCES | + RIDE_TYPE_FLAG_HAS_DATA_LOGGING | RIDE_TYPE_FLAG_HAS_DROPS | RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | + RIDE_TYPE_FLAG_20 | RIDE_TYPE_FLAG_26 | RIDE_TYPE_FLAG_27 | RIDE_TYPE_FLAG_HAS_TRACK | RIDE_TYPE_FLAG_30 | + RIDE_TYPE_FLAG_SUPPORTS_MULTIPLE_TRACK_COLOUR, + 0, 0, 0, 0}, // RIDE_TYPE_WOODEN_ROLLER_COASTER + {RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_ADDITIONAL | + RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_SUPPORTS | RIDE_TYPE_FLAG_HAS_LEAVE_WHEN_ANOTHER_VEHICLE_ARRIVES_AT_STATION | + RIDE_TYPE_FLAG_CAN_SYNCHRONISE_ADJACENT_STATIONS | RIDE_TYPE_FLAG_HAS_G_FORCES | + RIDE_TYPE_FLAG_HAS_DATA_LOGGING | RIDE_TYPE_FLAG_HAS_DROPS | RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | + RIDE_TYPE_FLAG_20 | RIDE_TYPE_FLAG_26 | RIDE_TYPE_FLAG_27 | RIDE_TYPE_FLAG_HAS_TRACK | RIDE_TYPE_FLAG_30 | + RIDE_TYPE_FLAG_SUPPORTS_MULTIPLE_TRACK_COLOUR, + 0, 0, 0, 0}, // RIDE_TYPE_SIDE_FRICTION_ROLLER_COASTER + {RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_ADDITIONAL | + RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_SUPPORTS | RIDE_TYPE_FLAG_HAS_LEAVE_WHEN_ANOTHER_VEHICLE_ARRIVES_AT_STATION | + RIDE_TYPE_FLAG_CAN_SYNCHRONISE_ADJACENT_STATIONS | RIDE_TYPE_FLAG_HAS_G_FORCES | + RIDE_TYPE_FLAG_HAS_DATA_LOGGING | RIDE_TYPE_FLAG_HAS_DROPS | RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | + RIDE_TYPE_FLAG_20 | RIDE_TYPE_FLAG_26 | RIDE_TYPE_FLAG_27 | RIDE_TYPE_FLAG_HAS_TRACK | + RIDE_TYPE_FLAG_SUPPORTS_MULTIPLE_TRACK_COLOUR, + 0, 0, 0, 0}, // RIDE_TYPE_WILD_MOUSE + {RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_ADDITIONAL | + RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_SUPPORTS | RIDE_TYPE_FLAG_HAS_LEAVE_WHEN_ANOTHER_VEHICLE_ARRIVES_AT_STATION | + RIDE_TYPE_FLAG_CAN_SYNCHRONISE_ADJACENT_STATIONS | RIDE_TYPE_FLAG_HAS_G_FORCES | + RIDE_TYPE_FLAG_HAS_DATA_LOGGING | RIDE_TYPE_FLAG_HAS_DROPS | RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | + RIDE_TYPE_FLAG_20 | RIDE_TYPE_FLAG_26 | RIDE_TYPE_FLAG_27 | RIDE_TYPE_FLAG_HAS_TRACK | RIDE_TYPE_FLAG_30 | + RIDE_TYPE_FLAG_SUPPORTS_MULTIPLE_TRACK_COLOUR, + 10, 27, 30, 25}, // RIDE_TYPE_MULTI_DIMENSION_ROLLER_COASTER + {RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_ADDITIONAL | + RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_SUPPORTS | RIDE_TYPE_FLAG_HAS_LEAVE_WHEN_ANOTHER_VEHICLE_ARRIVES_AT_STATION | + RIDE_TYPE_FLAG_CAN_SYNCHRONISE_ADJACENT_STATIONS | RIDE_TYPE_FLAG_HAS_G_FORCES | + RIDE_TYPE_FLAG_HAS_DATA_LOGGING | RIDE_TYPE_FLAG_HAS_DROPS | RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | + RIDE_TYPE_FLAG_20 | RIDE_TYPE_FLAG_26 | RIDE_TYPE_FLAG_27 | RIDE_TYPE_FLAG_HAS_TRACK | RIDE_TYPE_FLAG_30 | + RIDE_TYPE_FLAG_SUPPORTS_MULTIPLE_TRACK_COLOUR, + 10, 27, 30, 25}, // RIDE_TYPE_38 + {RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_ADDITIONAL | + RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_SUPPORTS | RIDE_TYPE_FLAG_HAS_LEAVE_WHEN_ANOTHER_VEHICLE_ARRIVES_AT_STATION | + RIDE_TYPE_FLAG_CAN_SYNCHRONISE_ADJACENT_STATIONS | RIDE_TYPE_FLAG_HAS_G_FORCES | + RIDE_TYPE_FLAG_HAS_DATA_LOGGING | RIDE_TYPE_FLAG_HAS_DROPS | RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | + RIDE_TYPE_FLAG_20 | RIDE_TYPE_FLAG_26 | RIDE_TYPE_FLAG_27 | RIDE_TYPE_FLAG_HAS_TRACK | RIDE_TYPE_FLAG_30 | + RIDE_TYPE_FLAG_SUPPORTS_MULTIPLE_TRACK_COLOUR, + 10, 27, 30, 25}, // RIDE_TYPE_FLYING_ROLLER_COASTER + {RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_ADDITIONAL | + RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_SUPPORTS | RIDE_TYPE_FLAG_HAS_LEAVE_WHEN_ANOTHER_VEHICLE_ARRIVES_AT_STATION | + RIDE_TYPE_FLAG_CAN_SYNCHRONISE_ADJACENT_STATIONS | RIDE_TYPE_FLAG_HAS_G_FORCES | + RIDE_TYPE_FLAG_HAS_DATA_LOGGING | RIDE_TYPE_FLAG_HAS_DROPS | RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | + RIDE_TYPE_FLAG_20 | RIDE_TYPE_FLAG_26 | RIDE_TYPE_FLAG_27 | RIDE_TYPE_FLAG_HAS_TRACK | RIDE_TYPE_FLAG_30 | + RIDE_TYPE_FLAG_SUPPORTS_MULTIPLE_TRACK_COLOUR, + 10, 27, 30, 25}, // RIDE_TYPE_3A + {RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_ADDITIONAL | + RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_SUPPORTS | RIDE_TYPE_FLAG_HAS_LEAVE_WHEN_ANOTHER_VEHICLE_ARRIVES_AT_STATION | + RIDE_TYPE_FLAG_CAN_SYNCHRONISE_ADJACENT_STATIONS | RIDE_TYPE_FLAG_HAS_G_FORCES | + RIDE_TYPE_FLAG_HAS_DATA_LOGGING | RIDE_TYPE_FLAG_HAS_DROPS | RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | + RIDE_TYPE_FLAG_20 | RIDE_TYPE_FLAG_26 | RIDE_TYPE_FLAG_27 | RIDE_TYPE_FLAG_HAS_TRACK | + RIDE_TYPE_FLAG_SUPPORTS_MULTIPLE_TRACK_COLOUR, + 0, 0, 0, 0}, // RIDE_TYPE_VIRGINIA_REEL + {RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_ADDITIONAL | + RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_SUPPORTS | RIDE_TYPE_FLAG_HAS_LEAVE_WHEN_ANOTHER_VEHICLE_ARRIVES_AT_STATION | + RIDE_TYPE_FLAG_CAN_SYNCHRONISE_ADJACENT_STATIONS | RIDE_TYPE_FLAG_HAS_DATA_LOGGING | RIDE_TYPE_FLAG_HAS_DROPS | + RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | RIDE_TYPE_FLAG_20 | RIDE_TYPE_FLAG_26 | RIDE_TYPE_FLAG_HAS_TRACK | + RIDE_TYPE_FLAG_SUPPORTS_MULTIPLE_TRACK_COLOUR, + 0, 0, 0, 0}, // RIDE_TYPE_SPLASH_BOATS + {RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_ADDITIONAL | + RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_SUPPORTS | RIDE_TYPE_FLAG_CAN_SYNCHRONISE_ADJACENT_STATIONS | + RIDE_TYPE_FLAG_HAS_DATA_LOGGING | RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | RIDE_TYPE_FLAG_20 | RIDE_TYPE_FLAG_26 | + RIDE_TYPE_FLAG_HAS_TRACK | RIDE_TYPE_FLAG_SUPPORTS_MULTIPLE_TRACK_COLOUR, + 0, 0, 0, 0}, // RIDE_TYPE_MINI_HELICOPTERS + {RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_ADDITIONAL | + RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_SUPPORTS | RIDE_TYPE_FLAG_HAS_LEAVE_WHEN_ANOTHER_VEHICLE_ARRIVES_AT_STATION | + RIDE_TYPE_FLAG_CAN_SYNCHRONISE_ADJACENT_STATIONS | RIDE_TYPE_FLAG_HAS_G_FORCES | + RIDE_TYPE_FLAG_HAS_DATA_LOGGING | RIDE_TYPE_FLAG_HAS_DROPS | RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | + RIDE_TYPE_FLAG_20 | RIDE_TYPE_FLAG_26 | RIDE_TYPE_FLAG_27 | RIDE_TYPE_FLAG_HAS_TRACK | RIDE_TYPE_FLAG_30 | + RIDE_TYPE_FLAG_SUPPORTS_MULTIPLE_TRACK_COLOUR, + 10, 27, 30, 25}, // RIDE_TYPE_LAY_DOWN_ROLLER_COASTER + {RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_ADDITIONAL | + RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_SUPPORTS | RIDE_TYPE_FLAG_HAS_LEAVE_WHEN_ANOTHER_VEHICLE_ARRIVES_AT_STATION | + RIDE_TYPE_FLAG_HAS_DATA_LOGGING | RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | RIDE_TYPE_FLAG_26 | + RIDE_TYPE_FLAG_HAS_TRACK | RIDE_TYPE_FLAG_30 | RIDE_TYPE_FLAG_SUPPORTS_MULTIPLE_TRACK_COLOUR, + 0, 0, 0, 0}, // RIDE_TYPE_SUSPENDED_MONORAIL + {RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_ADDITIONAL | + RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_SUPPORTS | RIDE_TYPE_FLAG_HAS_LEAVE_WHEN_ANOTHER_VEHICLE_ARRIVES_AT_STATION | + RIDE_TYPE_FLAG_CAN_SYNCHRONISE_ADJACENT_STATIONS | RIDE_TYPE_FLAG_HAS_G_FORCES | + RIDE_TYPE_FLAG_HAS_DATA_LOGGING | RIDE_TYPE_FLAG_HAS_DROPS | RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | + RIDE_TYPE_FLAG_20 | RIDE_TYPE_FLAG_26 | RIDE_TYPE_FLAG_27 | RIDE_TYPE_FLAG_HAS_TRACK | RIDE_TYPE_FLAG_30 | + RIDE_TYPE_FLAG_SUPPORTS_MULTIPLE_TRACK_COLOUR, + 10, 27, 30, 25}, // RIDE_TYPE_40 + {RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_ADDITIONAL | + RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_SUPPORTS | RIDE_TYPE_FLAG_HAS_LEAVE_WHEN_ANOTHER_VEHICLE_ARRIVES_AT_STATION | + RIDE_TYPE_FLAG_CAN_SYNCHRONISE_ADJACENT_STATIONS | RIDE_TYPE_FLAG_HAS_G_FORCES | + RIDE_TYPE_FLAG_HAS_DATA_LOGGING | RIDE_TYPE_FLAG_HAS_DROPS | RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | + RIDE_TYPE_FLAG_20 | RIDE_TYPE_FLAG_26 | RIDE_TYPE_FLAG_27 | RIDE_TYPE_FLAG_HAS_TRACK | + RIDE_TYPE_FLAG_SUPPORTS_MULTIPLE_TRACK_COLOUR, + 0, 0, 0, 0}, // RIDE_TYPE_REVERSER_ROLLER_COASTER + {RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_ADDITIONAL | + RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_SUPPORTS | RIDE_TYPE_FLAG_HAS_LEAVE_WHEN_ANOTHER_VEHICLE_ARRIVES_AT_STATION | + RIDE_TYPE_FLAG_CAN_SYNCHRONISE_ADJACENT_STATIONS | RIDE_TYPE_FLAG_HAS_G_FORCES | + RIDE_TYPE_FLAG_HAS_DATA_LOGGING | RIDE_TYPE_FLAG_HAS_DROPS | RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | + RIDE_TYPE_FLAG_20 | RIDE_TYPE_FLAG_26 | RIDE_TYPE_FLAG_27 | RIDE_TYPE_FLAG_HAS_TRACK | + RIDE_TYPE_FLAG_SUPPORTS_MULTIPLE_TRACK_COLOUR, + 10, 27, 30, 25}, // RIDE_TYPE_HEARTLINE_TWISTER_COASTER + {RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_ADDITIONAL | + RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_SUPPORTS | RIDE_TYPE_FLAG_NO_TEST_MODE | RIDE_TYPE_FLAG_HAS_TRACK | + RIDE_TYPE_FLAG_SUPPORTS_MULTIPLE_TRACK_COLOUR, + 0, 0, 0, 0}, // RIDE_TYPE_MINI_GOLF + {RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_ADDITIONAL | + RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_SUPPORTS | RIDE_TYPE_FLAG_HAS_LEAVE_WHEN_ANOTHER_VEHICLE_ARRIVES_AT_STATION | + RIDE_TYPE_FLAG_CAN_SYNCHRONISE_ADJACENT_STATIONS | RIDE_TYPE_FLAG_HAS_G_FORCES | + RIDE_TYPE_FLAG_HAS_DATA_LOGGING | RIDE_TYPE_FLAG_HAS_DROPS | RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | + RIDE_TYPE_FLAG_20 | RIDE_TYPE_FLAG_26 | RIDE_TYPE_FLAG_27 | RIDE_TYPE_FLAG_HAS_TRACK | RIDE_TYPE_FLAG_30 | + RIDE_TYPE_FLAG_SUPPORTS_MULTIPLE_TRACK_COLOUR, + 10, 27, 30, 17}, // RIDE_TYPE_GIGA_COASTER + {RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_ADDITIONAL | + RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_SUPPORTS | RIDE_TYPE_FLAG_3 | RIDE_TYPE_FLAG_CANNOT_HAVE_GAPS | + RIDE_TYPE_FLAG_HAS_DATA_LOGGING | RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | RIDE_TYPE_FLAG_18 | RIDE_TYPE_FLAG_20 | + RIDE_TYPE_FLAG_26 | RIDE_TYPE_FLAG_HAS_TRACK | RIDE_TYPE_FLAG_SUPPORTS_MULTIPLE_TRACK_COLOUR, + 0, 0, 0, 0}, // RIDE_TYPE_ROTO_DROP + {RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_ADDITIONAL | RIDE_TYPE_FLAG_3 | + RIDE_TYPE_FLAG_CANNOT_HAVE_GAPS | RIDE_TYPE_FLAG_NO_TEST_MODE | RIDE_TYPE_FLAG_HAS_NO_TRACK | + RIDE_TYPE_FLAG_18 | RIDE_TYPE_FLAG_FLAT_RIDE | RIDE_TYPE_FLAG_26, + 20, 180, 0, 0}, // RIDE_TYPE_FLYING_SAUCERS + {RIDE_TYPE_FLAG_3 | RIDE_TYPE_FLAG_CANNOT_HAVE_GAPS | RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | + RIDE_TYPE_FLAG_HAS_NO_TRACK | RIDE_TYPE_FLAG_16 | RIDE_TYPE_FLAG_18 | RIDE_TYPE_FLAG_FLAT_RIDE | + RIDE_TYPE_FLAG_IN_RIDE, + 0, 0, 0, 0}, // RIDE_TYPE_CROOKED_HOUSE + {RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_ADDITIONAL | + RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_SUPPORTS | RIDE_TYPE_FLAG_CAN_SYNCHRONISE_ADJACENT_STATIONS | + RIDE_TYPE_FLAG_HAS_DATA_LOGGING | RIDE_TYPE_FLAG_NO_TEST_MODE | RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | + RIDE_TYPE_FLAG_20 | RIDE_TYPE_FLAG_26 | RIDE_TYPE_FLAG_HAS_TRACK | + RIDE_TYPE_FLAG_SUPPORTS_MULTIPLE_TRACK_COLOUR, + 0, 0, 0, 0}, // RIDE_TYPE_MONORAIL_CYCLES + {RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_ADDITIONAL | + RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_SUPPORTS | RIDE_TYPE_FLAG_HAS_LEAVE_WHEN_ANOTHER_VEHICLE_ARRIVES_AT_STATION | + RIDE_TYPE_FLAG_CAN_SYNCHRONISE_ADJACENT_STATIONS | RIDE_TYPE_FLAG_HAS_G_FORCES | + RIDE_TYPE_FLAG_HAS_DATA_LOGGING | RIDE_TYPE_FLAG_HAS_DROPS | RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | + RIDE_TYPE_FLAG_20 | RIDE_TYPE_FLAG_26 | RIDE_TYPE_FLAG_27 | RIDE_TYPE_FLAG_HAS_TRACK | RIDE_TYPE_FLAG_30 | + RIDE_TYPE_FLAG_SUPPORTS_MULTIPLE_TRACK_COLOUR, + 7, 27, 0, 0}, // RIDE_TYPE_COMPACT_INVERTED_COASTER + {RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_ADDITIONAL | + RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_SUPPORTS | RIDE_TYPE_FLAG_HAS_LEAVE_WHEN_ANOTHER_VEHICLE_ARRIVES_AT_STATION | + RIDE_TYPE_FLAG_CAN_SYNCHRONISE_ADJACENT_STATIONS | RIDE_TYPE_FLAG_HAS_G_FORCES | + RIDE_TYPE_FLAG_HAS_DATA_LOGGING | RIDE_TYPE_FLAG_HAS_DROPS | RIDE_TYPE_FLAG_TRACK_ELEMENTS_HAVE_TWO_VARIETIES | + RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | RIDE_TYPE_FLAG_20 | RIDE_TYPE_FLAG_26 | RIDE_TYPE_FLAG_27 | + RIDE_TYPE_FLAG_HAS_TRACK | RIDE_TYPE_FLAG_30 | RIDE_TYPE_FLAG_SUPPORTS_MULTIPLE_TRACK_COLOUR, + 0, 0, 0, 0}, // RIDE_TYPE_WATER_COASTER + {RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_ADDITIONAL | + RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_SUPPORTS | RIDE_TYPE_FLAG_CAN_SYNCHRONISE_ADJACENT_STATIONS | + RIDE_TYPE_FLAG_HAS_G_FORCES | RIDE_TYPE_FLAG_HAS_DATA_LOGGING | RIDE_TYPE_FLAG_HAS_DROPS | + RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | RIDE_TYPE_FLAG_20 | RIDE_TYPE_FLAG_26 | RIDE_TYPE_FLAG_27 | + RIDE_TYPE_FLAG_HAS_TRACK | RIDE_TYPE_FLAG_SUPPORTS_MULTIPLE_TRACK_COLOUR, + 30, 50, 30, 40}, // RIDE_TYPE_AIR_POWERED_VERTICAL_COASTER + {RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_ADDITIONAL | + RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_SUPPORTS | RIDE_TYPE_FLAG_HAS_LEAVE_WHEN_ANOTHER_VEHICLE_ARRIVES_AT_STATION | + RIDE_TYPE_FLAG_CAN_SYNCHRONISE_ADJACENT_STATIONS | RIDE_TYPE_FLAG_HAS_G_FORCES | + RIDE_TYPE_FLAG_HAS_DATA_LOGGING | RIDE_TYPE_FLAG_HAS_DROPS | RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | + RIDE_TYPE_FLAG_20 | RIDE_TYPE_FLAG_26 | RIDE_TYPE_FLAG_27 | RIDE_TYPE_FLAG_HAS_TRACK | + RIDE_TYPE_FLAG_SUPPORTS_MULTIPLE_TRACK_COLOUR, + 0, 0, 0, 0}, // RIDE_TYPE_INVERTED_HAIRPIN_COASTER + {RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_ADDITIONAL | + RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_SUPPORTS | RIDE_TYPE_FLAG_3 | RIDE_TYPE_FLAG_CANNOT_HAVE_GAPS | + RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | RIDE_TYPE_FLAG_HAS_NO_TRACK | RIDE_TYPE_FLAG_16 | RIDE_TYPE_FLAG_18 | + RIDE_TYPE_FLAG_FLAT_RIDE | RIDE_TYPE_FLAG_26, + 7, 15, 0, 0}, // RIDE_TYPE_MAGIC_CARPET + {RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_ADDITIONAL | + RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_SUPPORTS | RIDE_TYPE_FLAG_HAS_LEAVE_WHEN_ANOTHER_VEHICLE_ARRIVES_AT_STATION | + RIDE_TYPE_FLAG_6 | RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | RIDE_TYPE_FLAG_20 | RIDE_TYPE_FLAG_26 | + RIDE_TYPE_FLAG_HAS_TRACK | RIDE_TYPE_FLAG_SUPPORTS_MULTIPLE_TRACK_COLOUR, + 0, 0, 0, 0}, // RIDE_TYPE_SUBMARINE_RIDE + {RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_ADDITIONAL | + RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_SUPPORTS | RIDE_TYPE_FLAG_HAS_LEAVE_WHEN_ANOTHER_VEHICLE_ARRIVES_AT_STATION | + RIDE_TYPE_FLAG_CAN_SYNCHRONISE_ADJACENT_STATIONS | RIDE_TYPE_FLAG_HAS_DATA_LOGGING | + RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | RIDE_TYPE_FLAG_20 | RIDE_TYPE_FLAG_26 | RIDE_TYPE_FLAG_HAS_TRACK | + RIDE_TYPE_FLAG_SUPPORTS_MULTIPLE_TRACK_COLOUR, + 0, 0, 0, 0}, // RIDE_TYPE_RIVER_RAFTS + {RIDE_TYPE_FLAG_3 | RIDE_TYPE_FLAG_CANNOT_HAVE_GAPS | RIDE_TYPE_FLAG_NO_TEST_MODE | RIDE_TYPE_FLAG_13 | + RIDE_TYPE_FLAG_HAS_NO_TRACK | RIDE_TYPE_FLAG_IS_SHOP | RIDE_TYPE_FLAG_18 | RIDE_TYPE_FLAG_FLAT_RIDE | + RIDE_TYPE_FLAG_SELLS_FOOD, + 0, 0, 0, 0}, // RIDE_TYPE_50 + {RIDE_TYPE_FLAG_3 | RIDE_TYPE_FLAG_CANNOT_HAVE_GAPS | RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | + RIDE_TYPE_FLAG_HAS_NO_TRACK | RIDE_TYPE_FLAG_16 | RIDE_TYPE_FLAG_18 | RIDE_TYPE_FLAG_FLAT_RIDE | + RIDE_TYPE_FLAG_20 | RIDE_TYPE_FLAG_26, + 10, 20, 0, 0}, // RIDE_TYPE_ENTERPRISE + {RIDE_TYPE_FLAG_3 | RIDE_TYPE_FLAG_CANNOT_HAVE_GAPS | RIDE_TYPE_FLAG_NO_TEST_MODE | RIDE_TYPE_FLAG_13 | + RIDE_TYPE_FLAG_HAS_NO_TRACK | RIDE_TYPE_FLAG_IS_SHOP | RIDE_TYPE_FLAG_18 | RIDE_TYPE_FLAG_FLAT_RIDE | + RIDE_TYPE_FLAG_SELLS_DRINKS, + 0, 0, 0, 0}, // RIDE_TYPE_52 + {RIDE_TYPE_FLAG_3 | RIDE_TYPE_FLAG_CANNOT_HAVE_GAPS | RIDE_TYPE_FLAG_NO_TEST_MODE | RIDE_TYPE_FLAG_13 | + RIDE_TYPE_FLAG_HAS_NO_TRACK | RIDE_TYPE_FLAG_IS_SHOP | RIDE_TYPE_FLAG_18 | RIDE_TYPE_FLAG_FLAT_RIDE | + RIDE_TYPE_FLAG_SELLS_FOOD, + 0, 0, 0, 0}, // RIDE_TYPE_53 + {RIDE_TYPE_FLAG_3 | RIDE_TYPE_FLAG_CANNOT_HAVE_GAPS | RIDE_TYPE_FLAG_NO_TEST_MODE | RIDE_TYPE_FLAG_13 | + RIDE_TYPE_FLAG_HAS_NO_TRACK | RIDE_TYPE_FLAG_IS_SHOP | RIDE_TYPE_FLAG_18 | RIDE_TYPE_FLAG_FLAT_RIDE | + RIDE_TYPE_FLAG_SELLS_DRINKS, + 0, 0, 0, 0}, // RIDE_TYPE_54 + {RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_ADDITIONAL | + RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_SUPPORTS | RIDE_TYPE_FLAG_HAS_LEAVE_WHEN_ANOTHER_VEHICLE_ARRIVES_AT_STATION | + RIDE_TYPE_FLAG_CAN_SYNCHRONISE_ADJACENT_STATIONS | RIDE_TYPE_FLAG_HAS_G_FORCES | + RIDE_TYPE_FLAG_HAS_DATA_LOGGING | RIDE_TYPE_FLAG_HAS_DROPS | RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | + RIDE_TYPE_FLAG_20 | RIDE_TYPE_FLAG_26 | RIDE_TYPE_FLAG_27 | RIDE_TYPE_FLAG_HAS_TRACK | RIDE_TYPE_FLAG_30 | + RIDE_TYPE_FLAG_SUPPORTS_MULTIPLE_TRACK_COLOUR, + 10, 27, 30, 25}, // RIDE_TYPE_55 + {RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_ADDITIONAL | + RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_SUPPORTS | RIDE_TYPE_FLAG_HAS_LEAVE_WHEN_ANOTHER_VEHICLE_ARRIVES_AT_STATION | + RIDE_TYPE_FLAG_CAN_SYNCHRONISE_ADJACENT_STATIONS | RIDE_TYPE_FLAG_HAS_G_FORCES | + RIDE_TYPE_FLAG_HAS_DATA_LOGGING | RIDE_TYPE_FLAG_HAS_DROPS | RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | + RIDE_TYPE_FLAG_20 | RIDE_TYPE_FLAG_26 | RIDE_TYPE_FLAG_27 | RIDE_TYPE_FLAG_HAS_TRACK | + RIDE_TYPE_FLAG_SUPPORTS_MULTIPLE_TRACK_COLOUR, + 10, 33, 30, 25}, // RIDE_TYPE_INVERTED_IMPULSE_COASTER + {RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_ADDITIONAL | + RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_SUPPORTS | RIDE_TYPE_FLAG_HAS_LEAVE_WHEN_ANOTHER_VEHICLE_ARRIVES_AT_STATION | + RIDE_TYPE_FLAG_CAN_SYNCHRONISE_ADJACENT_STATIONS | RIDE_TYPE_FLAG_HAS_G_FORCES | + RIDE_TYPE_FLAG_HAS_DATA_LOGGING | RIDE_TYPE_FLAG_HAS_DROPS | RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | + RIDE_TYPE_FLAG_20 | RIDE_TYPE_FLAG_26 | RIDE_TYPE_FLAG_27 | RIDE_TYPE_FLAG_HAS_TRACK | RIDE_TYPE_FLAG_30 | + RIDE_TYPE_FLAG_SUPPORTS_MULTIPLE_TRACK_COLOUR, + 0, 0, 0, 0}, // RIDE_TYPE_MINI_ROLLER_COASTER + {RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_ADDITIONAL | + RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_SUPPORTS | RIDE_TYPE_FLAG_HAS_LEAVE_WHEN_ANOTHER_VEHICLE_ARRIVES_AT_STATION | + RIDE_TYPE_FLAG_CAN_SYNCHRONISE_ADJACENT_STATIONS | RIDE_TYPE_FLAG_HAS_G_FORCES | + RIDE_TYPE_FLAG_HAS_DATA_LOGGING | RIDE_TYPE_FLAG_HAS_DROPS | RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | + RIDE_TYPE_FLAG_20 | RIDE_TYPE_FLAG_26 | RIDE_TYPE_FLAG_27 | RIDE_TYPE_FLAG_HAS_TRACK | RIDE_TYPE_FLAG_30 | + RIDE_TYPE_FLAG_SUPPORTS_MULTIPLE_TRACK_COLOUR, + 0, 0, 0, 0}, // RIDE_TYPE_MINE_RIDE + {RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_ADDITIONAL | + RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_SUPPORTS | RIDE_TYPE_FLAG_HAS_LEAVE_WHEN_ANOTHER_VEHICLE_ARRIVES_AT_STATION | + RIDE_TYPE_FLAG_CAN_SYNCHRONISE_ADJACENT_STATIONS | RIDE_TYPE_FLAG_HAS_G_FORCES | + RIDE_TYPE_FLAG_HAS_DATA_LOGGING | RIDE_TYPE_FLAG_HAS_DROPS | RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | + RIDE_TYPE_FLAG_20 | RIDE_TYPE_FLAG_26 | RIDE_TYPE_FLAG_27 | RIDE_TYPE_FLAG_HAS_TRACK | + RIDE_TYPE_FLAG_SUPPORTS_MULTIPLE_TRACK_COLOUR, + 0, 0, 0, 0}, // RIDE_TYPE_59 + {RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_ADDITIONAL | + RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_SUPPORTS | RIDE_TYPE_FLAG_HAS_LEAVE_WHEN_ANOTHER_VEHICLE_ARRIVES_AT_STATION | + RIDE_TYPE_FLAG_CAN_SYNCHRONISE_ADJACENT_STATIONS | RIDE_TYPE_FLAG_HAS_G_FORCES | + RIDE_TYPE_FLAG_HAS_DATA_LOGGING | RIDE_TYPE_FLAG_HAS_DROPS | RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS | + RIDE_TYPE_FLAG_20 | RIDE_TYPE_FLAG_26 | RIDE_TYPE_FLAG_27 | RIDE_TYPE_FLAG_HAS_TRACK | RIDE_TYPE_FLAG_30 | + RIDE_TYPE_FLAG_SUPPORTS_MULTIPLE_TRACK_COLOUR, + 10, 31, 26, 18}, // RIDE_TYPE_LIM_LAUNCHED_ROLLER_COASTER +}; diff --git a/src/ride/track.c b/src/ride/track.c index a14dbda557..73f18b3993 100644 --- a/src/ride/track.c +++ b/src/ride/track.c @@ -622,7 +622,7 @@ static money32 track_place(int rideIndex, int type, int originX, int originY, in enabledTrackPieces |= rideEntry->enabledTrackPiecesB & gResearchedTrackTypesB[ride->type]; enabledTrackPieces <<= 32; enabledTrackPieces |= rideEntry->enabledTrackPiecesA & gResearchedTrackTypesA[ride->type]; - uint32 rideTypeFlags = gRideProperties[ride->type].flags; + uint32 rideTypeFlags = RideProperties[ride->type].flags; RCT2_GLOBAL(0x00F44068, uint32) = rideTypeFlags; if ((ride->lifecycle_flags & RIDE_LIFECYCLE_INDESTRUCTIBLE_TRACK) && type == 1) { diff --git a/src/ride/track_design.c b/src/ride/track_design.c index a99a1110f2..7b604be643 100644 --- a/src/ride/track_design.c +++ b/src/ride/track_design.c @@ -260,7 +260,7 @@ static rct_track_td6 *track_design_open_from_buffer(uint8 *src, size_t srcLength td6->var_50 = min( td6->var_50, - gRideProperties[td6->type].maxValue + RideProperties[td6->type].max_value ); // Set the element helper pointers diff --git a/src/ride/vehicle.c b/src/ride/vehicle.c index ee70e800b1..17b98fd62f 100644 --- a/src/ride/vehicle.c +++ b/src/ride/vehicle.c @@ -7202,7 +7202,7 @@ loc_6DAEB9: if ((trackType == TRACK_ELEM_FLAT && ride->type == RIDE_TYPE_REVERSE_FREEFALL_COASTER) || (trackType == TRACK_ELEM_POWERED_LIFT) ) { - vehicle->acceleration = gRideProperties[ride->type].accelaration << 16; + vehicle->acceleration = RideProperties[ride->type].acceleration << 16; } if (trackType == TRACK_ELEM_BRAKE_FOR_DROP) { if (!vehicle->is_child) { diff --git a/src/windows/ride.c b/src/windows/ride.c index 5fea45ad9f..f6e40f242c 100644 --- a/src/windows/ride.c +++ b/src/windows/ride.c @@ -3136,8 +3136,8 @@ static void window_ride_mode_tweak_increase(rct_window *w) { rct_ride *ride = get_ride(w->number); - uint8 maxValue = gRideProperties[ride->type].maxValue; - uint8 minValue = gCheatsFastLiftHill ? 0 : gRideProperties[ride->type].minValue; + uint8 maxValue = RideProperties[ride->type].max_value; + uint8 minValue = gCheatsFastLiftHill ? 0 : RideProperties[ride->type].min_value; if (ride->mode == RIDE_MODE_MAZE) { // Allow 64 people in mazes under non-cheat settings. The old maximum of 16 was too little for even moderately big mazes. maxValue = 64; @@ -3159,8 +3159,8 @@ static void window_ride_mode_tweak_decrease(rct_window *w) { rct_ride *ride = get_ride(w->number); - uint8 maxValue = gRideProperties[ride->type].maxValue; - uint8 minValue = gCheatsFastLiftHill ? 0 : gRideProperties[ride->type].minValue; + uint8 maxValue = RideProperties[ride->type].max_value; + uint8 minValue = gCheatsFastLiftHill ? 0 : RideProperties[ride->type].min_value; if (ride->mode == RIDE_MODE_MAZE) { // Allow 64 people in mazes under non-cheat settings. The old maximum of 16 was too little for even moderately big mazes. maxValue = 64; diff --git a/src/windows/ride_construction.c b/src/windows/ride_construction.c index aba6911387..1bb962555b 100644 --- a/src/windows/ride_construction.c +++ b/src/windows/ride_construction.c @@ -1511,7 +1511,7 @@ static void window_ride_construction_mousedown(int widgetIndex, rct_window *w, r uint8 maxBrakesSpeed = 30; if (RCT2_GLOBAL(0x00F440D3, uint8) != 1) { brakesSpeedPtr = (uint8*)0x00F440CE; - maxBrakesSpeed = gRideProperties[ride->type].maxBrakesSpeed; + maxBrakesSpeed = RideProperties[ride->type].max_brakes_speed; } uint8 brakesSpeed = *brakesSpeedPtr + 2; if (brakesSpeed <= maxBrakesSpeed) {