From 0e1f0cbbe812fd504c0efba1daa725d359ef41f0 Mon Sep 17 00:00:00 2001 From: IntelOrca Date: Fri, 17 Jul 2015 02:42:41 +0100 Subject: [PATCH] improve RCT1 ride import --- src/rct1.c | 42 ++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 40 insertions(+), 2 deletions(-) diff --git a/src/rct1.c b/src/rct1.c index 5e0dda109c..83d78f0f50 100644 --- a/src/rct1.c +++ b/src/rct1.c @@ -1993,11 +1993,15 @@ static void rct1_import_map_elements(rct1_s4 *s4) static void rct1_import_ride(rct1_s4 *s4, rct_ride *dst, rct1_ride *src) { + rct_ride_type *rideEntry; + memset(dst, 0, sizeof(rct_ride)); dst->type = RCT1RideTypeConversionTable[src->type]; dst->subtype = src->type; + rideEntry = GET_RIDE_ENTRY(dst->subtype); + // Ride name dst->name = 0; if (is_user_string_id(src->name)) { @@ -2024,12 +2028,24 @@ static void rct1_import_ride(rct1_s4 *s4, rct_ride *dst, rct1_ride *src) dst->overall_view = src->overall_view; for (int i = 0; i < 4; i++) { dst->station_starts[i] = src->station_starts[i]; - dst->station_heights[i] = src->station_height[i]; + dst->station_heights[i] = src->station_height[i] / 2; dst->station_length[i] = src->station_length[i]; - dst->station_depart[i] = src->station_depart[i]; + dst->station_depart[i] = src->station_light[i]; + dst->var_066[i] = src->station_depart[i]; dst->entrances[i] = src->entrance[i]; dst->exits[i] = src->exit[i]; + dst->queue_time[i] = src->queue_time[i]; } + dst->num_stations = src->num_stations; + + for (int i = 0; i < 32; i++) { + dst->vehicles[i] = 0xFFFF; + } + dst->num_vehicles = src->num_trains; + dst->num_cars_per_train = src->num_cars_per_train; + dst->var_0CA = 32; + dst->max_trains = 32; + dst->var_0CB = 12; // Operation dst->mode = src->operating_mode; @@ -2038,6 +2054,9 @@ static void rct1_import_ride(rct1_s4 *s4, rct_ride *dst, rct1_ride *src) dst->max_waiting_time = src->max_waiting_time; dst->operation_option = src->operation_option; dst->music = src->music; + dst->num_circuits = 1; + dst->min_max_cars_per_train = (rideEntry->min_cars_in_train << 4) | rideEntry->max_cars_in_train; + dst->lift_hill_speed = RCT2_ADDRESS(0x0097D7C9, uint8)[dst->type * 4]; // Colours dst->colour_scheme_type = src->colour_scheme; @@ -2054,6 +2073,7 @@ static void rct1_import_ride(rct1_s4 *s4, rct_ride *dst, rct1_ride *src) } // Maintenance + dst->build_date = src->build_date; dst->inspection_interval = src->inspection_interval; dst->last_inspection = src->last_inspection; dst->reliability = src->reliability; @@ -2061,7 +2081,21 @@ static void rct1_import_ride(rct1_s4 *s4, rct_ride *dst, rct1_ride *src) dst->breakdown_reason = src->breakdown_reason; // Finance + dst->upkeep_cost = src->upkeep_cost; dst->price = src->price; + dst->income_per_hour = src->income_per_hour; + + dst->value = src->value; + dst->satisfaction = 255; + dst->satisfaction_time_out = 0; + dst->satisfaction_next = 0; + dst->popularity = src->popularity; + dst->popularity_next = src->popularity_next; + dst->popularity_time_out = src->popularity_time_out; + + dst->music_tune_id = 255; + dst->measurement_index = 255; + dst->excitement = (ride_rating)-1; } static void rct1_import_s4_properly(rct1_s4 *s4) @@ -2104,6 +2138,10 @@ static void rct1_import_s4_properly(rct1_s4 *s4) } } + for (int i = 0; i < 2; i++) { + gPeepSpawns[i] = s4->peep_spawn[i]; + } + // Finance RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_MONEY_ENCRYPTED, uint32) = ENCRYPT_MONEY(s4->cash); RCT2_GLOBAL(RCT2_ADDRESS_PARK_ENTRANCE_FEE, money16) = s4->park_entrance_fee;