diff --git a/src/marketing.c b/src/marketing.c index 15b7192035..57808a3a73 100644 --- a/src/marketing.c +++ b/src/marketing.c @@ -44,7 +44,7 @@ int marketing_get_campaign_guest_generation_probability(int campaign) probability /= 8; break; case ADVERTISING_CAMPAIGN_RIDE_FREE: - ride = &(RCT2_ADDRESS(RCT2_ADDRESS_RIDE_LIST, rct_ride)[RCT2_ADDRESS(0x01358116, uint8)[campaign]]); + ride = &g_ride_list[RCT2_ADDRESS(0x01358116, uint8)[campaign]]; if (ride->price < 3) probability /= 8; break; diff --git a/src/news_item.c b/src/news_item.c index f9584cdaa4..a794425f0b 100644 --- a/src/news_item.c +++ b/src/news_item.c @@ -182,7 +182,7 @@ void news_item_get_subject_location(int type, int subject, int *x, int *y, int * switch (type) { case NEWS_ITEM_RIDE: - ride = &(RCT2_ADDRESS(RCT2_ADDRESS_RIDE_LIST, rct_ride)[subject]); + ride = &g_ride_list[subject]; if (ride->overall_view == 0xFFFF) { *x = SPRITE_LOCATION_NULL; break; @@ -205,7 +205,7 @@ void news_item_get_subject_location(int type, int subject, int *x, int *y, int * } // Find which ride peep is on - ride = &(RCT2_ADDRESS(RCT2_ADDRESS_RIDE_LIST, rct_ride)[peep->current_ride]); + ride = &g_ride_list[peep->current_ride]; if (!(ride->lifecycle_flags & RIDE_LIFECYCLE_ON_TRACK)) { *x = SPRITE_LOCATION_NULL; break; diff --git a/src/park.c b/src/park.c index 0d45e8a597..94fed8051a 100644 --- a/src/park.c +++ b/src/park.c @@ -305,7 +305,7 @@ money32 calculate_park_value() // Sum ride values result = 0; for (i = 0; i < 255; i++) { - ride = &(RCT2_ADDRESS(RCT2_ADDRESS_RIDE_LIST, rct_ride)[i]); + ride = &g_ride_list[i]; result += calculate_ride_value(ride); } diff --git a/src/peep.c b/src/peep.c index 437bc56c3f..684d23e613 100644 --- a/src/peep.c +++ b/src/peep.c @@ -181,7 +181,7 @@ void peep_problem_warnings_update() hunger_counter++; break; } - ride = &RCT2_ADDRESS(RCT2_ADDRESS_RIDE_LIST, rct_ride)[peep->var_C5]; + ride = &g_ride_list[peep->var_C5]; if (!(RCT2_GLOBAL(RCT2_ADDRESS_RIDE_FLAGS + ride->type * 8, uint32) & 0x80000)) hunger_counter++; break; @@ -191,7 +191,7 @@ void peep_problem_warnings_update() thirst_counter++; break; } - ride = &RCT2_ADDRESS(RCT2_ADDRESS_RIDE_LIST, rct_ride)[peep->var_C5]; + ride = &g_ride_list[peep->var_C5]; if (!(RCT2_GLOBAL(RCT2_ADDRESS_RIDE_FLAGS + ride->type * 8, uint32) & 0x1000000)) thirst_counter++; break; @@ -201,7 +201,7 @@ void peep_problem_warnings_update() bathroom_counter++; break; } - ride = &RCT2_ADDRESS(RCT2_ADDRESS_RIDE_LIST, rct_ride)[peep->var_C5]; + ride = &g_ride_list[peep->var_C5]; if (!(RCT2_GLOBAL(RCT2_ADDRESS_RIDE_FLAGS + ride->type * 8, uint32) & 0x2000000)) bathroom_counter++; break; diff --git a/src/ride.c b/src/ride.c index bbaa1db97f..7dc493efd6 100644 --- a/src/ride.c +++ b/src/ride.c @@ -99,6 +99,8 @@ const uint8 gRideClassifications[255] = { #pragma endregion +rct_ride* g_ride_list = RCT2_ADDRESS(RCT2_ADDRESS_RIDE_LIST, rct_ride); + int ride_get_count() { rct_ride *ride; @@ -139,7 +141,7 @@ void ride_init_all() rct_ride_measurement *ride_measurement; for (i = 0; i < MAX_RIDES; i++) { - ride = GET_RIDE(i); + ride = &g_ride_list[i]; ride->type = RIDE_TYPE_NULL; } @@ -183,7 +185,7 @@ void ride_update_favourited_stat() if (peep->var_08 != 4) return; if (peep->favourite_ride != 0xff) { - ride = GET_RIDE(peep->favourite_ride); + ride = &g_ride_list[peep->favourite_ride]; ride->guests_favourite++; ride->var_14D |= 1; @@ -280,7 +282,7 @@ void ride_shop_connected(rct_ride* ride, int ride_idx) } uint8 track_type = tile->properties.track.type; - ride = GET_RIDE(tile->properties.track.ride_index); + ride = &g_ride_list[tile->properties.track.ride_index]; if (RCT2_GLOBAL(RCT2_ADDRESS_RIDE_FLAGS + ride->type * 8, uint32) & 0x80000) { entrance_directions = RCT2_ADDRESS(0x0099CA64, uint8)[track_type * 16]; } else { diff --git a/src/ride.h b/src/ride.h index bcbc0c86dd..53691ee931 100644 --- a/src/ride.h +++ b/src/ride.h @@ -326,8 +326,10 @@ enum { #define MAX_RIDE_MEASUREMENTS 8 #define RIDE_RELIABILITY_UNDEFINED 0xFFFF +extern rct_ride* g_ride_list; + /** Helper macros until rides are stored in this module. */ -#define GET_RIDE(x) (&(RCT2_ADDRESS(RCT2_ADDRESS_RIDE_LIST, rct_ride)[x])) +#define GET_RIDE(x) (&g_ride_list[x]) #define GET_RIDE_MEASUREMENT(x) (&(RCT2_ADDRESS(RCT2_ADDRESS_RIDE_MEASUREMENTS, rct_ride_measurement)[x])) /** @@ -335,7 +337,7 @@ enum { */ #define FOR_ALL_RIDES(i, ride) \ for (i = 0; i < MAX_RIDES; i++) \ - if ((ride = GET_RIDE(i))->type != RIDE_TYPE_NULL) + if ((ride = &g_ride_list[i])->type != RIDE_TYPE_NULL) extern const uint8 gRideClassifications[255]; diff --git a/src/scenario.c b/src/scenario.c index d9aedb7fc4..38c95bf5fd 100644 --- a/src/scenario.c +++ b/src/scenario.c @@ -501,7 +501,7 @@ void scenario_objectives_check() rct_ride* ride; int rcs = 0; for (int i = 0; i < MAX_RIDES; i++) { - ride = &(RCT2_ADDRESS(RCT2_ADDRESS_RIDE_LIST, rct_ride)[i]); + ride = &g_ride_list[i]; if (ride->status && ride->excitement > objective_currency) rcs++; } diff --git a/src/window_guest_list.c b/src/window_guest_list.c index 16882c7389..e1a71208ab 100644 --- a/src/window_guest_list.c +++ b/src/window_guest_list.c @@ -830,7 +830,7 @@ void get_arguments_from_thought(rct_peep_thought thought, uint32* argument_1, ui int esi = 0x9AC86C; if ((RCT2_ADDRESS(0x981DB1, uint16)[thought.type] & 0xFF) & 1){ - rct_ride* ride = &(RCT2_ADDRESS(RCT2_ADDRESS_RIDE_LIST,rct_ride)[thought.item]); + rct_ride* ride = &g_ride_list[thought.item]; esi = &(ride->var_04A); } else if ((RCT2_ADDRESS(0x981DB1, uint16)[thought.type] & 0xFF) & 2){ @@ -880,7 +880,7 @@ void get_arguments_from_action(rct_peep* peep, uint32 *argument_1, uint32* argum case PEEP_STATE_LEAVING_RIDE: case PEEP_STATE_ENTERING_RIDE: *argument_1 = STR_ON_RIDE; - ride = RCT2_ADDRESS(RCT2_ADDRESS_RIDE_LIST, rct_ride)[peep->current_ride]; + ride = g_ride_list[peep->current_ride]; if (RCT2_GLOBAL(RCT2_ADDRESS_RIDE_FLAGS + ride.type*8, uint32)& 0x400000){ *argument_1 = STR_IN_RIDE; } @@ -888,14 +888,14 @@ void get_arguments_from_action(rct_peep* peep, uint32 *argument_1, uint32* argum *argument_2 = ride.var_04C; break; case PEEP_STATE_BUYING: - ride = RCT2_ADDRESS(RCT2_ADDRESS_RIDE_LIST, rct_ride)[peep->current_ride]; + ride = g_ride_list[peep->current_ride]; *argument_1 = STR_AT_RIDE | (ride.var_04A << 16); *argument_2 = ride.var_04C; break; case PEEP_STATE_WALKING: case 0x14: if (peep->var_C5 != 0xFF){ - ride = RCT2_ADDRESS(RCT2_ADDRESS_RIDE_LIST, rct_ride)[peep->var_C5]; + ride = g_ride_list[peep->var_C5]; *argument_1 = STR_HEADING_FOR | (ride.var_04A << 16); *argument_2 = ride.var_04C; } @@ -906,7 +906,7 @@ void get_arguments_from_action(rct_peep* peep, uint32 *argument_1, uint32* argum break; case PEEP_STATE_QUEUING_FRONT: case PEEP_STATE_QUEUING: - ride = RCT2_ADDRESS(RCT2_ADDRESS_RIDE_LIST, rct_ride)[peep->current_ride]; + ride = g_ride_list[peep->current_ride]; *argument_1 = STR_QUEUING_FOR | (ride.var_04A << 16); *argument_2 = ride.var_04C; break; @@ -916,7 +916,7 @@ void get_arguments_from_action(rct_peep* peep, uint32 *argument_1, uint32* argum break; case PEEP_STATE_WATCHING: if (peep->current_ride != 0xFF){ - ride = RCT2_ADDRESS(RCT2_ADDRESS_RIDE_LIST, rct_ride)[peep->current_ride]; + ride = g_ride_list[peep->current_ride]; *argument_1 = STR_WATCHING_RIDE | (ride.var_04A << 16); *argument_2 = ride.var_04C; if (peep->current_seat & 0x1) @@ -965,23 +965,23 @@ void get_arguments_from_action(rct_peep* peep, uint32 *argument_1, uint32* argum *argument_2 = 0; } else{ - ride = RCT2_ADDRESS(RCT2_ADDRESS_RIDE_LIST, rct_ride)[peep->current_ride]; + ride = g_ride_list[peep->current_ride]; *argument_1 = STR_RESPONDING_TO_RIDE_BREAKDOWN_CALL | (ride.var_04A << 16); *argument_2 = ride.var_04C; } break; case PEEP_STATE_FIXING: - ride = RCT2_ADDRESS(RCT2_ADDRESS_RIDE_LIST, rct_ride)[peep->current_ride]; + ride = g_ride_list[peep->current_ride]; *argument_1 = STR_FIXING_RIDE | (ride.var_04A << 16); *argument_2 = ride.var_04C; break; case PEEP_STATE_HEADING_TO_INSPECTION: - ride = RCT2_ADDRESS(RCT2_ADDRESS_RIDE_LIST, rct_ride)[peep->current_ride]; + ride = g_ride_list[peep->current_ride]; *argument_1 = STR_HEADING_TO_RIDE_FOR_INSPECTION | (ride.var_04A << 16); *argument_2 = ride.var_04C; break; case PEEP_STATE_INSPECTING: - ride = RCT2_ADDRESS(RCT2_ADDRESS_RIDE_LIST, rct_ride)[peep->current_ride]; + ride = g_ride_list[peep->current_ride]; *argument_1 = STR_INSPECTING_RIDE | (ride.var_04A << 16); *argument_2 = ride.var_04C; break; diff --git a/src/window_peep.c b/src/window_peep.c index ecb1cf0358..8c03d941f3 100644 --- a/src/window_peep.c +++ b/src/window_peep.c @@ -63,9 +63,9 @@ rct_widget window_peep_overview_widgets[] = { { WWT_TAB, 1, 96, 126, 17, 43, 0x2000144E, 1942}, // Tab 4 { WWT_TAB, 1, 127, 157, 17, 43, 0x2000144E, 1943}, // Tab 5 { WWT_TAB, 1, 158, 188, 17, 43, 0x2000144E, 1944}, // Tab 6 - { WWT_12, 1, 3, 166, 45, 56, 0x0FFFFFFFF, STR_NONE}, // Label 1 + { WWT_12, 1, 3, 166, 45, 56, 0x0FFFFFFFF, STR_NONE}, // Label Thought marquee { WWT_VIEWPORT, 1, 3, 166, 57, 143, 0x0FFFFFFFF, STR_NONE }, // Viewport - { WWT_12, 1, 3, 166, 144, 154, 0x0FFFFFFFF, STR_NONE}, // Label 2 + { WWT_12, 1, 3, 166, 144, 154, 0x0FFFFFFFF, STR_NONE}, // Label Action { WWT_FLATBTN, 1, 167, 190, 45, 68, SPR_RENAME, 1706}, // Rename Button { WWT_FLATBTN, 1, 167, 190, 69, 92, 0x1430, 1055}, // Pickup Button { WWT_FLATBTN, 1, 167, 190, 93, 116, SPR_LOCATE, STR_LOCATE_SUBJECT_TIP},// Locate Button @@ -146,7 +146,7 @@ void window_peep_open(rct_peep* peep){ window->var_490 = 0; window->var_492 = 0; window->var_494 = 0; - //Call 6987a6 + RCT2_CALLPROC_X(0x006987A6, 0, 0, 0, 0, (int)window, 0, 0); window->min_width = 192; window->min_height = 157; window->max_width = 500; @@ -169,7 +169,7 @@ void window_peep_open(rct_peep* peep){ window->event_handlers = RCT2_GLOBAL(0x981D24,uint32); window->pressed_widgets = 0; - //call 6987A6 + RCT2_CALLPROC_X(0x006987A6, 0, 0, 0, 0, (int)window, 0, 0); window_init_scroll_widgets(window); //call 69883c diff --git a/src/window_ride_list.c b/src/window_ride_list.c index 8dff8e2433..a32c142236 100644 --- a/src/window_ride_list.c +++ b/src/window_ride_list.c @@ -557,7 +557,7 @@ static void window_ride_list_scrollpaint() } // Get ride - ride = &RCT2_ADDRESS(RCT2_ADDRESS_RIDE_LIST, rct_ride)[w->var_076[i]]; + ride = &g_ride_list[w->var_076[i]]; // Ride name gfx_draw_string_left_clipped(dpi, format, &ride->var_04A, 0, 0, y - 1, 159); @@ -703,7 +703,7 @@ static void window_ride_list_refresh_list(rct_window *w) RCT2_GLOBAL(0x013CE952, uint32) = ride->var_04C; RCT2_CALLPROC_X(0x006C2538, ride->var_04A, 0, 0x013CE952, 0, 0, 0x0141ED68, 0); while (--k >= 0) { - otherRide = &(RCT2_ADDRESS(RCT2_ADDRESS_RIDE_LIST, rct_ride)[w->var_076[k]]); + otherRide = &g_ride_list[w->var_076[k]]; RCT2_GLOBAL(0x013CE952, uint32) = otherRide->var_04C; RCT2_CALLPROC_X(0x006C2538, otherRide->var_04A, 0, 0x013CE952, 0, 0, 0x0141EF68, 0); if (strcmp((char*)0x0141ED68, (char*)0x0141EF68) >= 0) @@ -716,7 +716,7 @@ static void window_ride_list_refresh_list(rct_window *w) break; case INFORMATION_TYPE_POPULARITY: while (--k >= 0) { - otherRide = &(RCT2_ADDRESS(RCT2_ADDRESS_RIDE_LIST, rct_ride)[w->var_076[k]]); + otherRide = &g_ride_list[w->var_076[k]]; if ((ride->var_158 & 0xFF) * 4 <= (otherRide->var_158 & 0xFF) * 4) break; @@ -727,7 +727,7 @@ static void window_ride_list_refresh_list(rct_window *w) break; case INFORMATION_TYPE_SATISFACTION: while (--k >= 0) { - otherRide = &(RCT2_ADDRESS(RCT2_ADDRESS_RIDE_LIST, rct_ride)[w->var_076[k]]); + otherRide = &g_ride_list[w->var_076[k]]; if ((ride->var_14A & 0xFF) * 5 <= (otherRide->var_14A & 0xFF) * 5) break; @@ -738,7 +738,7 @@ static void window_ride_list_refresh_list(rct_window *w) break; case INFORMATION_TYPE_PROFIT: while (--k >= 0) { - otherRide = &(RCT2_ADDRESS(RCT2_ADDRESS_RIDE_LIST, rct_ride)[w->var_076[k]]); + otherRide = &g_ride_list[w->var_076[k]]; if (ride->profit <= otherRide->profit) break; @@ -749,7 +749,7 @@ static void window_ride_list_refresh_list(rct_window *w) break; case INFORMATION_TYPE_QUEUE_LENGTH: while (--k >= 0) { - otherRide = &(RCT2_ADDRESS(RCT2_ADDRESS_RIDE_LIST, rct_ride)[w->var_076[k]]); + otherRide = &g_ride_list[w->var_076[k]]; if (ride_get_total_queue_length(ride) <= ride_get_total_queue_length(otherRide)) break; @@ -760,7 +760,7 @@ static void window_ride_list_refresh_list(rct_window *w) break; case INFORMATION_TYPE_QUEUE_TIME: while (--k >= 0) { - otherRide = &(RCT2_ADDRESS(RCT2_ADDRESS_RIDE_LIST, rct_ride)[w->var_076[k]]); + otherRide = &g_ride_list[w->var_076[k]]; if (ride_get_max_queue_time(ride) <= ride_get_max_queue_time(otherRide)) break; @@ -771,7 +771,7 @@ static void window_ride_list_refresh_list(rct_window *w) break; case INFORMATION_TYPE_RELIABILITY: while (--k >= 0) { - otherRide = &(RCT2_ADDRESS(RCT2_ADDRESS_RIDE_LIST, rct_ride)[w->var_076[k]]); + otherRide = &g_ride_list[w->var_076[k]]; if (ride->var_196 >> 8 <= otherRide->var_196 >> 8) break; @@ -782,7 +782,7 @@ static void window_ride_list_refresh_list(rct_window *w) break; case INFORMATION_TYPE_DOWN_TIME: while (--k >= 0) { - otherRide = &(RCT2_ADDRESS(RCT2_ADDRESS_RIDE_LIST, rct_ride)[w->var_076[k]]); + otherRide = &g_ride_list[w->var_076[k]]; if (ride->var_199 <= otherRide->var_199) break; @@ -793,7 +793,7 @@ static void window_ride_list_refresh_list(rct_window *w) break; case INFORMATION_TYPE_GUESTS_FAVOURITE: while (--k >= 0) { - otherRide = &(RCT2_ADDRESS(RCT2_ADDRESS_RIDE_LIST, rct_ride)[w->var_076[k]]); + otherRide = &g_ride_list[w->var_076[k]]; if (ride->guests_favourite <= otherRide->guests_favourite) break;