From 0fd42f408a20cc8b916cc784a78e7a149498f6b4 Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Sun, 3 Apr 2016 14:53:17 +0200 Subject: [PATCH] Extract new struct --- src/interface/viewport.c | 2 +- src/peep/peep.c | 14 ++--- src/ride/cable_lift.c | 7 +-- src/ride/ride.c | 6 +-- src/ride/ride_data.c | 94 +++++++++++++++++++++++++++++++++ src/ride/ride_data.h | 12 +++++ src/ride/track.c | 10 ++-- src/ride/vehicle.c | 8 +-- src/windows/new_ride.c | 2 +- src/windows/ride_construction.c | 2 +- src/world/map.c | 2 +- 11 files changed, 133 insertions(+), 26 deletions(-) diff --git a/src/interface/viewport.c b/src/interface/viewport.c index 11e78c37ac..8f94f61272 100644 --- a/src/interface/viewport.c +++ b/src/interface/viewport.c @@ -1585,7 +1585,7 @@ void viewport_track_paint_setup(uint8 direction, int height, rct_map_element *ma if ((RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_VIEWPORT_FLAGS, uint16) & VIEWPORT_FLAG_TRACK_HEIGHTS) && dpi->zoom_level == 0) { RCT2_GLOBAL(RCT2_ADDRESS_PAINT_SETUP_CURRENT_TYPE, uint8) = 0; if (RCT2_ADDRESS(0x00999694, uint32)[trackType] & (1 << trackSequence)) { - uint16 ax = RCT2_GLOBAL(0x0097D21A + (ride->type * 8), uint8); + uint16 ax = RideData5[ride->type].z_offset; uint32 ebx = 0x20381689 + (height + 8) / 16; ebx += RCT2_GLOBAL(RCT2_ADDRESS_CONFIG_HEIGHT_MARKERS, uint16); ebx -= RCT2_GLOBAL(0x01359208, uint16); diff --git a/src/peep/peep.c b/src/peep/peep.c index dac8c2af68..42fce1ce45 100644 --- a/src/peep/peep.c +++ b/src/peep/peep.c @@ -1902,7 +1902,7 @@ void peep_update_ride_sub_state_1(rct_peep* peep){ RCT2_GLOBAL(0xF1AECA, uint16) += 4; if (xy_distance < RCT2_GLOBAL(0xF1AECA, uint16)){ - z += RCT2_ADDRESS(0x0097D21C, uint8)[ride->type * 8]; + z += RideData5[ride->type].z; } sprite_move(x, y, z, (rct_sprite*)peep); @@ -2078,7 +2078,7 @@ void peep_update_ride_sub_state_1(rct_peep* peep){ * rct2: 0x0069321D */ static void peep_go_to_ride_exit(rct_peep* peep, rct_ride* ride, sint16 x, sint16 y, sint16 z, uint8 exit_direction){ - z += RCT2_ADDRESS(0x0097D21C, uint8)[ride->type * 8]; + z += RideData5[ride->type].z; sprite_move(x, y, z, (rct_sprite*)peep); invalidate_sprite_2((rct_sprite*)peep); @@ -2537,7 +2537,7 @@ void peep_update_ride_sub_state_7(rct_peep* peep){ sint16 exit_y = y + vehicle_type->peep_loading_positions[(peep->var_37 + 1) * 2 + 2]; z *= 8; - z += RCT2_ADDRESS(0x0097D21C, uint8)[ride->type * 8]; + z += RideData5[ride->type].z; if (ride->type == RIDE_TYPE_MOTION_SIMULATOR) z += 15; @@ -2627,7 +2627,7 @@ static void peep_update_ride_sub_state_9(rct_peep* peep){ if (xy_distance >= 16){ sint16 z = ride->station_heights[peep->current_ride_station] * 8; - z += RCT2_ADDRESS(0x97D21C, uint8)[ride->type * 8]; + z += RideData5[ride->type].z; sprite_move(x, y, z, (rct_sprite*)peep); invalidate_sprite_2((rct_sprite*)peep); return; @@ -4005,7 +4005,7 @@ static bool peep_update_fixing_sub_state_14(bool firstRun, rct_peep *peep, rct_r uint16 z = ride->station_heights[peep->current_ride_station] * 8; if (xy_distance >= 16) { - z += RCT2_ADDRESS(0x0097D21C, uint8)[ride->type * 8]; + z += RideData5[ride->type].z; } sprite_move(x, y, z, (rct_sprite *) peep); @@ -5063,7 +5063,7 @@ static void peep_update_heading_to_inspect(rct_peep* peep){ int z = ride->station_heights[peep->current_ride_station] * 8; if (delta_y < 20){ - z += RCT2_ADDRESS(0x0097D21C, uint8)[ride->type * 8]; + z += RideData5[ride->type].z; } sprite_move(x, y, z, (rct_sprite*)peep); @@ -5176,7 +5176,7 @@ static void peep_update_answering(rct_peep* peep){ int z = ride->station_heights[peep->current_ride_station] * 8; if (delta_y < 20){ - z += RCT2_ADDRESS(0x0097D21C, uint8)[ride->type * 8]; + z += RideData5[ride->type].z; } sprite_move(x, y, z, (rct_sprite*)peep); diff --git a/src/ride/cable_lift.c b/src/ride/cable_lift.c index 6917ce3e31..9384da52b8 100644 --- a/src/ride/cable_lift.c +++ b/src/ride/cable_lift.c @@ -2,6 +2,7 @@ #include "cable_lift.h" #include "ride.h" #include "track.h" +#include "ride_data.h" static void cable_lift_update_moving_to_end_of_station(rct_vehicle *vehicle); static void cable_lift_update_waiting_to_depart(rct_vehicle *vehicle); @@ -58,7 +59,7 @@ rct_vehicle *cable_lift_segment_create(int rideIndex, int x, int y, int z, int d z = z * 8; current->track_z = z; - z += RCT2_GLOBAL(0x0097D21A + (ride->type * 8), sint8); + z += RideData5[ride->type].z_offset; sprite_move(16, 16, z, (rct_sprite*)current); current->track_type = (TRACK_ELEM_CABLE_LIFT_HILL << 2) | (current->sprite_direction >> 3); @@ -262,7 +263,7 @@ bool sub_6DF01A_loop(rct_vehicle* vehicle) { unk.z += vehicle->track_z; uint8 bx = 0; - unk.z += RCT2_GLOBAL(0x0097D21A + (ride->type * 8), sint8); + unk.z += RideData5[ride->type].z_offset; if (unk.x != unk_F64E20->x) bx |= (1 << 0); if (unk.y != unk_F64E20->y) @@ -348,7 +349,7 @@ bool sub_6DF21B_loop(rct_vehicle* vehicle) { unk.z += vehicle->track_z; uint8 bx = 0; - unk.z += RCT2_GLOBAL(0x0097D21A + (ride->type * 8), sint8); + unk.z += RideData5[ride->type].z_offset; if (unk.x != unk_F64E20->x) bx |= (1 << 0); if (unk.y != unk_F64E20->y) diff --git a/src/ride/ride.c b/src/ride/ride.c index 5c4b01b315..bdac1bff44 100644 --- a/src/ride/ride.c +++ b/src/ride/ride.c @@ -4437,7 +4437,7 @@ rct_vehicle *vehicle_create_car( vehicle->track_z = z; vehicle->current_station = map_get_station(mapElement); - z += RCT2_GLOBAL(0x0097D21A + (ride->type * 8), sint8); + z += RideData5[ride->type].z_offset; vehicle->track_type = mapElement->properties.track.type << 2; vehicle->track_progress = 0; @@ -4511,7 +4511,7 @@ rct_vehicle *vehicle_create_car( vehicle->current_station = map_get_station(mapElement); z = mapElement->base_height * 8; - z += RCT2_GLOBAL(0x0097D21A + (ride->type * 8), uint8); + z += RideData5[ride->type].z_offset; sprite_move(x, y, z, (rct_sprite*)vehicle); vehicle->track_type = (mapElement->properties.track.type << 2) | (vehicle->sprite_direction >> 3); @@ -7427,7 +7427,7 @@ void ride_update_max_vehicles(int rideIndex) return; stationLength = (stationLength * 0x44180) - 0x16B2A; - int maxFriction = RCT2_GLOBAL(0x0097D21B + (ride->type * 8), uint8) << 8; + int maxFriction = RideData5[ride->type].max_friction << 8; int maxCarsPerTrain = 1; for (int numCars = rideEntry->max_cars_in_train; numCars > 0; numCars--) { ride_entry_get_train_layout(ride->subtype, numCars, trainLayout); diff --git a/src/ride/ride_data.c b/src/ride/ride_data.c index 6c1b38e22a..208d808024 100644 --- a/src/ride/ride_data.c +++ b/src/ride/ride_data.c @@ -1177,6 +1177,100 @@ const ride_cost RideTrackCosts[91] = { { 95, 5 }, // RIDE_TYPE_LIM_LAUNCHED_ROLLER_COASTER }; +// 0x0097D218 +const rct_ride_data_5 RideData5[91] = { + { 19, 24, 9, 31, 11, 50, 85, 0 }, // RIDE_TYPE_SPIRAL_ROLLER_COASTER + { 25, 24, 9, 18, 11, 50, 90, 0 }, // RIDE_TYPE_STAND_UP_ROLLER_COASTER + { 24, 40, 29, 26, 8, 50, 90, 0 }, // RIDE_TYPE_SUSPENDED_SWINGING_COASTER + { 38, 40, 29, 27, 8, 50, 100, 0 }, // RIDE_TYPE_INVERTED_ROLLER_COASTER + { 12, 24, 4, 10, 7, 40, 60, 0 }, // RIDE_TYPE_JUNIOR_ROLLER_COASTER + { 7, 32, 5, 39, 9, 50, 50, 0 }, // RIDE_TYPE_MINIATURE_RAILWAY + { 8, 32, 8, 78, 9, 50, 60, 0 }, // RIDE_TYPE_MONORAIL + { 10, 24, 24, 3, 8, 40, 50, 0 }, // RIDE_TYPE_MINI_SUSPENDED_COASTER + { 255, 16, 0, 255, 3, 5, 40, 0 }, // RIDE_TYPE_BOAT_RIDE + { 14, 24, 4, 4, 7, 40, 55, 0 }, // RIDE_TYPE_WOODEN_WILD_MOUSE + { 14, 24, 7, 4, 7, 40, 60, 0 }, // RIDE_TYPE_STEEPLECHASE + { 6, 24, 4, 2, 7, 30, 50, 0 }, // RIDE_TYPE_CAR_RIDE + { 255, 32, 3, 15, 2, 4, 65, 0 }, // RIDE_TYPE_LAUNCHED_FREEFALL + { 19, 24, 5, 25, 7, 45, 75, 0 }, // RIDE_TYPE_BOBSLEIGH_COASTER + { 255, 32, 3, 15, 2, 4, 45, 0 }, // RIDE_TYPE_OBSERVATION_TOWER + { 35, 24, 5, 18, 7, 50, 95, 0 }, // RIDE_TYPE_LOOPING_ROLLER_COASTER + { 15, 24, 5, 5, 7, 40, 55, 0 }, // RIDE_TYPE_DINGHY_SLIDE + { 21, 24, 4, 15, 7, 50, 85, 0 }, // RIDE_TYPE_MINE_TRAIN_COASTER + { 40, 32, 28, 18, 2, 30, 55, 0 }, // RIDE_TYPE_CHAIRLIFT + { 28, 24, 8, 18, 11, 50, 100, 0 }, // RIDE_TYPE_CORKSCREW_ROLLER_COASTER + { 6, 24, 0, 18, 1, 8, 40, 0 }, // RIDE_TYPE_MAZE + { 15, 128, 0, 255, 2, 1, 40, 0 }, // RIDE_TYPE_SPIRAL_SLIDE + { 7, 24, 2, 255, 1, 20, 55, 0 }, // RIDE_TYPE_GO_KARTS + { 9, 24, 7, 255, 9, 40, 65, 0 }, // RIDE_TYPE_LOG_FLUME + { 9, 32, 14, 255, 15, 40, 70, 0 }, // RIDE_TYPE_RIVER_RAPIDS + { 9, 48, 2, 255, 2, 1, 35, 0 }, // RIDE_TYPE_DODGEMS + { 12, 112, 7, 255, 11, 1, 35, 0 }, // RIDE_TYPE_PIRATE_SHIP + { 15, 176, 7, 255, 11, 1, 35, 0 }, // RIDE_TYPE_SWINGING_INVERTER_SHIP + { 12, 64, 0, 255, 0, 1, 15, 0 }, // RIDE_TYPE_FOOD_STALL + { 12, 64, 0, 255, 0, 1, 15, 0 }, // RIDE_TYPE_1D + { 12, 64, 0, 255, 0, 1, 15, 0 }, // RIDE_TYPE_DRINK_STALL + { 12, 64, 0, 255, 0, 1, 15, 0 }, // RIDE_TYPE_1F + { 12, 64, 0, 255, 0, 1, 15, 0 }, // RIDE_TYPE_SHOP + { 12, 64, 3, 255, 2, 1, 45, 0 }, // RIDE_TYPE_MERRY_GO_ROUND + { 12, 64, 0, 255, 0, 1, 15, 0 }, // RIDE_TYPE_22 + { 12, 48, 0, 255, 0, 1, 15, 0 }, // RIDE_TYPE_INFORMATION_KIOSK + { 12, 32, 0, 255, 0, 1, 5, 0 }, // RIDE_TYPE_TOILETS + { 16, 176, 3, 255, 2, 1, 45, 0 }, // RIDE_TYPE_FERRIS_WHEEL + { 12, 64, 3, 255, 2, 1, 45, 0 }, // RIDE_TYPE_MOTION_SIMULATOR + { 12, 128, 3, 255, 2, 1, 45, 0 }, // RIDE_TYPE_3D_CINEMA + { 16, 112, 3, 255, 2, 1, 55, 0 }, // RIDE_TYPE_TOP_SPIN + { 16, 48, 3, 255, 2, 1, 30, 0 }, // RIDE_TYPE_SPACE_RINGS + { 255, 32, 4, 255, 7, 45, 70, 0 }, // RIDE_TYPE_REVERSE_FREEFALL_COASTER + { 255, 32, 3, 15, 2, 4, 45, 0 }, // RIDE_TYPE_LIFT + { 53, 24, 8, 25, 11, 42, 95, 0 }, // RIDE_TYPE_VERTICAL_DROP_ROLLER_COASTER + { 12, 32, 0, 255, 0, 1, 5, 0 }, // RIDE_TYPE_CASH_MACHINE + { 12, 64, 3, 255, 2, 1, 40, 0 }, // RIDE_TYPE_TWIST + { 16, 160, 3, 255, 2, 1, 22, 0 }, // RIDE_TYPE_HAUNTED_HOUSE + { 12, 48, 0, 255, 0, 1, 5, 0 }, // RIDE_TYPE_FIRST_AID + { 12, 128, 3, 255, 2, 1, 39, 0 }, // RIDE_TYPE_CIRCUS_SHOW + { 8, 24, 6, 2, 7, 30, 50, 0 }, // RIDE_TYPE_GHOST_TRAIN + { 54, 24, 8, 31, 9, 55, 120, 0 }, // RIDE_TYPE_TWISTER_ROLLER_COASTER + { 41, 24, 8, 15, 11, 50, 105, 0 }, // RIDE_TYPE_WOODEN_ROLLER_COASTER + { 15, 24, 4, 15, 11, 37, 65, 0 }, // RIDE_TYPE_SIDE_FRICTION_ROLLER_COASTER + { 16, 24, 4, 4, 7, 40, 55, 0 }, // RIDE_TYPE_WILD_MOUSE + { 40, 24, 8, 78, 11, 50, 100, 0 }, // RIDE_TYPE_MULTI_DIMENSION_ROLLER_COASTER + { 40, 24, 8, 78, 11, 50, 100, 0 }, // RIDE_TYPE_38 + { 30, 24, 8, 35, 11, 50, 100, 0 }, // RIDE_TYPE_FLYING_ROLLER_COASTER + { 30, 24, 8, 35, 11, 50, 100, 0 }, // RIDE_TYPE_3A + { 14, 24, 6, 15, 7, 25, 50, 0 }, // RIDE_TYPE_VIRGINIA_REEL + { 16, 24, 7, 255, 11, 30, 65, 0 }, // RIDE_TYPE_SPLASH_BOATS + { 7, 24, 4, 2, 7, 30, 45, 0 }, // RIDE_TYPE_MINI_HELICOPTERS + { 26, 24, 8, 25, 11, 50, 100, 0 }, // RIDE_TYPE_LAY_DOWN_ROLLER_COASTER + { 12, 40, 32, 78, 8, 50, 60, 0 }, // RIDE_TYPE_SUSPENDED_MONORAIL + { 26, 24, 8, 25, 11, 50, 100, 0 }, // RIDE_TYPE_40 + { 18, 24, 8, 15, 11, 37, 65, 0 }, // RIDE_TYPE_REVERSER_ROLLER_COASTER + { 22, 24, 15, 18, 9, 30, 35, 0 }, // RIDE_TYPE_HEARTLINE_TWISTER_COASTER + { 7, 32, 2, 255, 2, 20, 23, 0 }, // RIDE_TYPE_MINI_GOLF + { 86, 24, 9, 31, 11, 55, 120, 0 }, // RIDE_TYPE_GIGA_COASTER + { 255, 32, 3, 15, 2, 4, 45, 0 }, // RIDE_TYPE_ROTO_DROP + { 9, 48, 2, 255, 2, 1, 35, 0 }, // RIDE_TYPE_FLYING_SAUCERS + { 16, 96, 3, 255, 2, 1, 22, 0 }, // RIDE_TYPE_CROOKED_HOUSE + { 5, 24, 8, 2, 7, 30, 45, 0 }, // RIDE_TYPE_MONORAIL_CYCLES + { 27, 40, 29, 18, 8, 50, 80, 0 }, // RIDE_TYPE_COMPACT_INVERTED_COASTER + { 18, 24, 4, 13, 7, 40, 60, 0 }, // RIDE_TYPE_WATER_COASTER + { 255, 32, 4, 255, 7, 45, 70, 0 }, // RIDE_TYPE_AIR_POWERED_VERTICAL_COASTER + { 16, 24, 24, 4, 7, 40, 55, 0 }, // RIDE_TYPE_INVERTED_HAIRPIN_COASTER + { 15, 176, 7, 255, 11, 1, 35, 0 }, // RIDE_TYPE_MAGIC_CARPET + { 255, 16, 0, 255, 3, 5, 40, 0 }, // RIDE_TYPE_SUBMARINE_RIDE + { 12, 24, 7, 255, 11, 30, 65, 0 }, // RIDE_TYPE_RIVER_RAFTS + { 12, 64, 0, 255, 0, 1, 15, 0 }, // RIDE_TYPE_50 + { 16, 160, 3, 255, 2, 1, 45, 0 }, // RIDE_TYPE_ENTERPRISE + { 12, 48, 0, 255, 0, 1, 15, 0 }, // RIDE_TYPE_52 + { 12, 64, 0, 255, 0, 1, 15, 0 }, // RIDE_TYPE_53 + { 12, 48, 0, 255, 0, 1, 15, 0 }, // RIDE_TYPE_54 + { 44, 24, 8, 18, 11, 50, 100, 0 }, // RIDE_TYPE_55 + { 45, 40, 29, 23, 8, 25, 75, 0 }, // RIDE_TYPE_INVERTED_IMPULSE_COASTER + { 16, 24, 9, 10, 11, 40, 60, 0 }, // RIDE_TYPE_MINI_ROLLER_COASTER + { 13, 24, 9, 27, 11, 40, 70, 0 }, // RIDE_TYPE_MINE_RIDE + { 16, 24, 4, 4, 7, 40, 55, 0 }, // RIDE_TYPE_59 + { 35, 24, 5, 18, 7, 50, 95, 0 }, // RIDE_TYPE_LIM_LAUNCHED_ROLLER_COASTER +}; // rct2: 0x00982358 diff --git a/src/ride/ride_data.h b/src/ride/ride_data.h index 0161a710c5..f9f031ac82 100644 --- a/src/ride/ride_data.h +++ b/src/ride/ride_data.h @@ -61,6 +61,17 @@ typedef struct { uint16 support_price; } ride_cost; +typedef struct { + uint8 max_height; + uint8 clearance_height; + sint8 z_offset; + uint8 max_friction; + uint8 z; + uint8 price; + uint8 bonus_value; // Deprecated. Use rideBonusValue instead + uint8 pad; +} rct_ride_data_5; + typedef struct { uint8 sound_id; uint8 minimum_speed; @@ -105,6 +116,7 @@ extern const rct_ride_lift_data RideLiftData[91]; extern const rct_ride_data_4 RideData4[91]; extern const ride_cost RideTrackCosts[91]; +extern const rct_ride_data_5 RideData5[91]; extern const money8 DefaultShopItemPrice[SHOP_ITEM_COUNT]; extern const rct_shop_item_string_types ShopItemStringIds[SHOP_ITEM_COUNT]; diff --git a/src/ride/track.c b/src/ride/track.c index 6ce7a1b092..6191853c56 100644 --- a/src/ride/track.c +++ b/src/ride/track.c @@ -3438,7 +3438,7 @@ money32 place_maze_design(uint8 flags, uint8 rideIndex, uint16 mazeEntry, sint16 uint8 supportZ = (z + 32) >> 3; if (supportZ > mapElement->base_height) { uint8 supportHeight = (supportZ - mapElement->base_height) / 2; - uint8 maxSupportHeight = RCT2_GLOBAL(0x0097D218 + (RIDE_TYPE_MAZE * 8), uint8); + uint8 maxSupportHeight = RideData5[RIDE_TYPE_MAZE].max_height; if (supportHeight > maxSupportHeight) { RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) = STR_TOO_HIGH_FOR_SUPPORTS; return MONEY32_UNDEFINED; @@ -4570,11 +4570,11 @@ static money32 track_place(int rideIndex, int type, int originX, int originY, in int baseZ = (originZ + trackBlock->z) / 8; int clearanceZ = trackBlock->var_07; - if (trackBlock->var_09 & (1 << 2) && RCT2_GLOBAL(0x0097D219 + (ride->type * 8), uint8) > 24){ + if (trackBlock->var_09 & (1 << 2) && RideData5[ride->type].clearance_height > 24) { clearanceZ += 24; } else{ - clearanceZ += RCT2_GLOBAL(0x0097D219 + (ride->type * 8), uint8); + clearanceZ += RideData5[ride->type].clearance_height; } clearanceZ = (clearanceZ / 8) + baseZ; @@ -4718,7 +4718,7 @@ static money32 track_place(int rideIndex, int type, int originX, int originY, in if (ride_height >= 0) { int maxHeight = rideEntry->max_height; if (maxHeight == 0) { - maxHeight = RCT2_GLOBAL(0x0097D218 + (ride->type * 8), uint8); + maxHeight = RideData5[ride->type].max_height; } ride_height /= 2; if (ride_height > maxHeight && !(RCT2_GLOBAL(0x009D8150, uint8) & 1)) { @@ -5264,7 +5264,7 @@ money32 set_maze_track(uint16 x, uint8 flags, uint8 direction, uint16 y, uint8 r if (heightDifference >= 0 && !gCheatsDisableSupportLimits) { heightDifference = heightDifference >> 1; - if (heightDifference > RCT2_GLOBAL(0x0097D218 + (RIDE_TYPE_MAZE * 8), uint8)) { + if (heightDifference > RideData5[RIDE_TYPE_MAZE].max_height) { RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) = STR_TOO_HIGH_FOR_SUPPORTS; return MONEY32_UNDEFINED; } diff --git a/src/ride/vehicle.c b/src/ride/vehicle.c index ba48e57eb7..a78c1a4923 100644 --- a/src/ride/vehicle.c +++ b/src/ride/vehicle.c @@ -6917,7 +6917,7 @@ loc_6DAEB9: ); sint16 x = vehicle->track_x + moveInfo->x; sint16 y = vehicle->track_y + moveInfo->y; - sint16 z = vehicle->track_z + moveInfo->z + RCT2_GLOBAL(0x0097D21A + (ride->type * 8), sint8); + sint16 z = vehicle->track_z + moveInfo->z + RideData5[ride->type].z_offset; trackType = vehicle->track_type >> 2; regs.ebx = 0; @@ -7226,7 +7226,7 @@ loc_6DBA33:; sint16 x = vehicle->track_x + moveInfo->x; sint16 y = vehicle->track_y + moveInfo->y; - sint16 z = vehicle->track_z + moveInfo->z + RCT2_GLOBAL(0x0097D21A + (ride->type * 8), sint8); + sint16 z = vehicle->track_z + moveInfo->z + RideData5[ride->type].z_offset; regs.ebx = 0; if (x != unk_F64E20->x) { regs.ebx |= 1; } @@ -7559,7 +7559,7 @@ loc_6DC743: // loc_6DC8A1 x = vehicle->track_x + moveInfo->x; y = vehicle->track_y + moveInfo->y; - z = vehicle->track_z + moveInfo->z + RCT2_GLOBAL(0x0097D21A + (ride->type * 8), sint8); + z = vehicle->track_z + moveInfo->z + RideData5[ride->type].z_offset; // Investigate redundant code regs.ebx = 0; @@ -7699,7 +7699,7 @@ loc_6DCC2C: moveInfo = vehicle_get_move_info(vehicle->var_CD, vehicle->track_type, vehicle->track_progress); x = vehicle->track_x + moveInfo->x; y = vehicle->track_y + moveInfo->y; - z = vehicle->track_z + moveInfo->z + RCT2_GLOBAL(0x0097D21A + (ride->type * 8), sint8); + z = vehicle->track_z + moveInfo->z + RideData5[ride->type].z_offset; // Investigate redundant code regs.ebx = 0; diff --git a/src/windows/new_ride.c b/src/windows/new_ride.c index 69da60c37d..ef9f0a59e2 100644 --- a/src/windows/new_ride.c +++ b/src/windows/new_ride.c @@ -918,7 +918,7 @@ static void window_new_ride_paint_ride_information(rct_window *w, rct_drawpixeli } else { price *= RCT2_ADDRESS(0x0099DA34, uint32)[unk2]; } - price = (price >> 17) * 10 * RCT2_GLOBAL(0x0097D21D + (item.type * 8), uint8); + price = (price >> 17) * 10 * RideData5[item.type].price; // rct_string_id stringId = 1691; diff --git a/src/windows/ride_construction.c b/src/windows/ride_construction.c index ade6c79a44..250f47317f 100644 --- a/src/windows/ride_construction.c +++ b/src/windows/ride_construction.c @@ -2328,7 +2328,7 @@ static void sub_6CBCE2( x = originX + offsetX; y = originY + offsetY; baseZ = (originZ + trackBlock->z) >> 3; - clearanceZ = ((trackBlock->var_07 + RCT2_GLOBAL(0x0097D219 + (ride->type * 8), uint8)) >> 3) + baseZ + 4; + clearanceZ = ((trackBlock->var_07 + RideData5[ride->type].clearance_height) >> 3) + baseZ + 4; int tileX = x >> 5; int tileY = y >> 5; diff --git a/src/world/map.c b/src/world/map.c index a54fd3a00c..aca585fd77 100644 --- a/src/world/map.c +++ b/src/world/map.c @@ -1682,7 +1682,7 @@ static money32 map_set_land_height(int flags, int x, int y, int height, int styl int rideIndex = mapElement->properties.track.ride_index; int maxHeight = get_ride_entry_by_ride(get_ride(rideIndex))->max_height; if(maxHeight == 0) - maxHeight = RCT2_GLOBAL(0x97D218 + 8 * get_ride(rideIndex)->type, uint8); + maxHeight = RideData5[get_ride(rideIndex)->type].max_height; int zDelta = mapElement->clearance_height - height; if(zDelta >= 0 && zDelta/2 > maxHeight) {