From 897fc0591b2f9e3ab6d7bc1ba946465277059a40 Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Sun, 7 Aug 2016 14:16:51 +0200 Subject: [PATCH] Integrate track pricing --- src/ride/track.c | 10 +- src/ride/track_data.c | 517 ++++++++++++++++++++++++++++++++++++++++ src/ride/track_data.h | 3 + src/ride/track_design.c | 2 +- src/windows/new_ride.c | 5 +- 5 files changed, 529 insertions(+), 8 deletions(-) diff --git a/src/ride/track.c b/src/ride/track.c index e92adb684c..8245851d0a 100644 --- a/src/ride/track.c +++ b/src/ride/track.c @@ -1395,8 +1395,8 @@ static money32 track_place(int rideIndex, int type, int originX, int originY, in money32 price = RideTrackCosts[ride->type].track_price; price *= (rideTypeFlags & RIDE_TYPE_FLAG_FLAT_RIDE) ? - RCT2_ADDRESS(0x0099DE34, money32)[type] : - RCT2_ADDRESS(0x0099DA34, money32)[type]; + FlatRideTrackPricing[type] : + TrackPricing[type]; price >>= 16; price = cost + ((price / 2) * 10); @@ -1675,10 +1675,10 @@ static money32 track_remove(uint8 type, uint8 sequence, sint16 originX, sint16 o money32 price = RideTrackCosts[ride->type].track_price; if (ride_type_has_flag(ride->type, RIDE_TYPE_FLAG_FLAT_RIDE)) { - price *= RCT2_ADDRESS(0x0099DE34, money32)[type]; + price *= FlatRideTrackPricing[type]; } else { - price *= RCT2_ADDRESS(0x0099DA34, money32)[type]; + price *= TrackPricing[type]; } price >>= 16; price = (price + cost) / 2; @@ -1833,7 +1833,7 @@ static money32 set_maze_track(uint16 x, uint8 flags, uint8 direction, uint16 y, rct_ride *ride = get_ride(rideIndex); - money32 price = (((RideTrackCosts[ride->type].track_price * RCT2_GLOBAL(0x0099DBC8, money32)) >> 16)); + money32 price = (((RideTrackCosts[ride->type].track_price * TrackPricing[TRACK_ELEM_MAZE]) >> 16)); RCT2_GLOBAL(0x00F4413E, money32) = price / 2 * 10; if (!(flags & GAME_COMMAND_FLAG_APPLY)) { diff --git a/src/ride/track_data.c b/src/ride/track_data.c index e60201abbf..12e19cd71f 100644 --- a/src/ride/track_data.c +++ b/src/ride/track_data.c @@ -30439,3 +30439,520 @@ const sint16 AlternativeTrackTypes[256] = { -1, -1, }; + +/** rct2: 0x0099DA34 */ +const money32 TrackPricing[] = { + 65536, // TRACK_ELEM_FLAT + 98304, // TRACK_ELEM_END_STATION + 98304, // TRACK_ELEM_BEGIN_STATION + 98304, // TRACK_ELEM_MIDDLE_STATION + 79872, // TRACK_ELEM_25_DEG_UP + 114688, // TRACK_ELEM_60_DEG_UP + 73728, // TRACK_ELEM_FLAT_TO_25_DEG_UP + 96256, // TRACK_ELEM_25_DEG_UP_TO_60_DEG_UP + 96256, // TRACK_ELEM_60_DEG_UP_TO_25_DEG_UP + 73728, // TRACK_ELEM_25_DEG_UP_TO_FLAT + 79872, // TRACK_ELEM_25_DEG_DOWN + 114688, // TRACK_ELEM_60_DEG_DOWN + 73728, // TRACK_ELEM_FLAT_TO_25_DEG_DOWN + 96256, // TRACK_ELEM_25_DEG_DOWN_TO_60_DEG_DOWN + 96256, // TRACK_ELEM_60_DEG_DOWN_TO_25_DEG_DOWN + 73728, // TRACK_ELEM_25_DEG_DOWN_TO_FLAT + 257359, // TRACK_ELEM_LEFT_QUARTER_TURN_5_TILES + 257359, // TRACK_ELEM_RIGHT_QUARTER_TURN_5_TILES + 69632, // TRACK_ELEM_FLAT_TO_LEFT_BANK + 69632, // TRACK_ELEM_FLAT_TO_RIGHT_BANK + 69632, // TRACK_ELEM_LEFT_BANK_TO_FLAT + 69632, // TRACK_ELEM_RIGHT_BANK_TO_FLAT + 273443, // TRACK_ELEM_BANKED_LEFT_QUARTER_TURN_5_TILES + 273443, // TRACK_ELEM_BANKED_RIGHT_QUARTER_TURN_5_TILES + 78336, // TRACK_ELEM_LEFT_BANK_TO_25_DEG_UP + 78336, // TRACK_ELEM_RIGHT_BANK_TO_25_DEG_UP + 78336, // TRACK_ELEM_25_DEG_UP_TO_LEFT_BANK + 78336, // TRACK_ELEM_25_DEG_UP_TO_RIGHT_BANK + 78336, // TRACK_ELEM_LEFT_BANK_TO_25_DEG_DOWN + 78336, // TRACK_ELEM_RIGHT_BANK_TO_25_DEG_DOWN + 78336, // TRACK_ELEM_25_DEG_DOWN_TO_LEFT_BANK + 78336, // TRACK_ELEM_25_DEG_DOWN_TO_RIGHT_BANK + 69632, // TRACK_ELEM_LEFT_BANK + 69632, // TRACK_ELEM_RIGHT_BANK + 313656, // TRACK_ELEM_LEFT_QUARTER_TURN_5_TILES_25_DEG_UP + 313656, // TRACK_ELEM_RIGHT_QUARTER_TURN_5_TILES_25_DEG_UP + 313656, // TRACK_ELEM_LEFT_QUARTER_TURN_5_TILES_25_DEG_DOWN + 313656, // TRACK_ELEM_RIGHT_QUARTER_TURN_5_TILES_25_DEG_DOWN + 229376, // TRACK_ELEM_S_BEND_LEFT + 229376, // TRACK_ELEM_S_BEND_RIGHT + 491520, // TRACK_ELEM_LEFT_VERTICAL_LOOP + 491520, // TRACK_ELEM_RIGHT_VERTICAL_LOOP + 154415, // TRACK_ELEM_LEFT_QUARTER_TURN_3_TILES + 154415, // TRACK_ELEM_RIGHT_QUARTER_TURN_3_TILES + 164065, // TRACK_ELEM_LEFT_QUARTER_TURN_3_TILES_BANK + 164065, // TRACK_ELEM_RIGHT_QUARTER_TURN_3_TILES_BANK + 270226, // TRACK_ELEM_LEFT_QUARTER_TURN_3_TILES_25_DEG_UP + 270226, // TRACK_ELEM_RIGHT_QUARTER_TURN_3_TILES_25_DEG_UP + 270226, // TRACK_ELEM_LEFT_QUARTER_TURN_3_TILES_25_DEG_DOWN + 270226, // TRACK_ELEM_RIGHT_QUARTER_TURN_3_TILES_25_DEG_DOWN + 51471, // TRACK_ELEM_LEFT_QUARTER_TURN_1_TILE + 51471, // TRACK_ELEM_RIGHT_QUARTER_TURN_1_TILE + 212992, // TRACK_ELEM_LEFT_TWIST_DOWN_TO_UP + 212992, // TRACK_ELEM_RIGHT_TWIST_DOWN_TO_UP + 212992, // TRACK_ELEM_LEFT_TWIST_UP_TO_DOWN + 212992, // TRACK_ELEM_RIGHT_TWIST_UP_TO_DOWN + 294912, // TRACK_ELEM_HALF_LOOP_UP + 294912, // TRACK_ELEM_HALF_LOOP_DOWN + 229376, // TRACK_ELEM_LEFT_CORKSCREW_UP + 229376, // TRACK_ELEM_RIGHT_CORKSCREW_UP + 229376, // TRACK_ELEM_LEFT_CORKSCREW_DOWN + 229376, // TRACK_ELEM_RIGHT_CORKSCREW_DOWN + 98304, // TRACK_ELEM_FLAT_TO_60_DEG_UP + 98304, // TRACK_ELEM_60_DEG_UP_TO_FLAT + 98304, // TRACK_ELEM_FLAT_TO_60_DEG_DOWN + 98304, // TRACK_ELEM_60_DEG_DOWN_TO_FLAT + 524288, // TRACK_ELEM_TOWER_BASE + 65536, // TRACK_ELEM_TOWER_SECTION + 69632, // TRACK_ELEM_FLAT_COVERED + 83968, // TRACK_ELEM_25_DEG_UP_COVERED + 118784, // TRACK_ELEM_60_DEG_UP_COVERED + 77824, // TRACK_ELEM_FLAT_TO_25_DEG_UP_COVERED + 100352, // TRACK_ELEM_25_DEG_UP_TO_60_DEG_UP_COVERED + 100352, // TRACK_ELEM_60_DEG_UP_TO_25_DEG_UP_COVERED + 77824, // TRACK_ELEM_25_DEG_UP_TO_FLAT_COVERED + 83968, // TRACK_ELEM_25_DEG_DOWN_COVERED + 118784, // TRACK_ELEM_60_DEG_DOWN_COVERED + 77824, // TRACK_ELEM_FLAT_TO_25_DEG_DOWN_COVERED + 100352, // TRACK_ELEM_25_DEG_DOWN_TO_60_DEG_DOWN_COVERED + 100352, // TRACK_ELEM_60_DEG_DOWN_TO_25_DEG_DOWN_COVERED + 77824, // TRACK_ELEM_25_DEG_DOWN_TO_FLAT_COVERED + 261455, // TRACK_ELEM_LEFT_QUARTER_TURN_5_TILES_COVERED + 261455, // TRACK_ELEM_RIGHT_QUARTER_TURN_5_TILES_COVERED + 233472, // TRACK_ELEM_S_BEND_LEFT_COVERED + 233472, // TRACK_ELEM_S_BEND_RIGHT_COVERED + 158511, // TRACK_ELEM_LEFT_QUARTER_TURN_3_TILES_COVERED + 158511, // TRACK_ELEM_RIGHT_QUARTER_TURN_3_TILES_COVERED + 328192, // TRACK_ELEM_LEFT_HALF_BANKED_HELIX_UP_SMALL + 328192, // TRACK_ELEM_RIGHT_HALF_BANKED_HELIX_UP_SMALL + 328192, // TRACK_ELEM_LEFT_HALF_BANKED_HELIX_DOWN_SMALL + 328192, // TRACK_ELEM_RIGHT_HALF_BANKED_HELIX_DOWN_SMALL + 547072, // TRACK_ELEM_LEFT_HALF_BANKED_HELIX_UP_LARGE + 547072, // TRACK_ELEM_RIGHT_HALF_BANKED_HELIX_UP_LARGE + 547072, // TRACK_ELEM_LEFT_HALF_BANKED_HELIX_DOWN_LARGE + 547072, // TRACK_ELEM_RIGHT_HALF_BANKED_HELIX_DOWN_LARGE + 126976, // TRACK_ELEM_LEFT_QUARTER_TURN_1_TILE_60_DEG_UP + 126976, // TRACK_ELEM_RIGHT_QUARTER_TURN_1_TILE_60_DEG_UP + 126976, // TRACK_ELEM_LEFT_QUARTER_TURN_1_TILE_60_DEG_DOWN + 126976, // TRACK_ELEM_RIGHT_QUARTER_TURN_1_TILE_60_DEG_DOWN + 90112, // TRACK_ELEM_BRAKES + 77824, // TRACK_ELEM_ROTATION_CONTROL_TOGGLE + 65536, // TRACK_ELEM_INVERTED_90_DEG_UP_TO_FLAT_QUARTER_LOOP / TRACK_ELEM_MAZE + 273539, // TRACK_ELEM_LEFT_QUARTER_BANKED_HELIX_LARGE_UP + 273539, // TRACK_ELEM_RIGHT_QUARTER_BANKED_HELIX_LARGE_UP + 273539, // TRACK_ELEM_LEFT_QUARTER_BANKED_HELIX_LARGE_DOWN + 273539, // TRACK_ELEM_RIGHT_QUARTER_BANKED_HELIX_LARGE_DOWN + 273539, // TRACK_ELEM_LEFT_QUARTER_HELIX_LARGE_UP + 273539, // TRACK_ELEM_RIGHT_QUARTER_HELIX_LARGE_UP + 273539, // TRACK_ELEM_LEFT_QUARTER_HELIX_LARGE_DOWN + 273539, // TRACK_ELEM_RIGHT_QUARTER_HELIX_LARGE_DOWN + 83968, // TRACK_ELEM_25_DEG_UP_LEFT_BANKED + 83968, // TRACK_ELEM_25_DEG_UP_RIGHT_BANKED + 143360, // TRACK_ELEM_WATERFALL + 118784, // TRACK_ELEM_RAPIDS + 196608, // TRACK_ELEM_ON_RIDE_PHOTO + 83968, // TRACK_ELEM_25_DEG_DOWN_LEFT_BANKED + 83968, // TRACK_ELEM_25_DEG_DOWN_RIGHT_BANKED + 393216, // TRACK_ELEM_WATER_SPLASH + 376832, // TRACK_ELEM_FLAT_TO_60_DEG_UP_LONG_BASE + 376832, // TRACK_ELEM_60_DEG_UP_TO_FLAT_LONG_BASE + 126976, // TRACK_ELEM_WHIRLPOOL + 376832, // TRACK_ELEM_FLAT_TO_60_DEG_DOWN_LONG_BASE + 376832, // TRACK_ELEM_60_DEG_UP_TO_FLAT_LONG_BASE_122 + 643072, // TRACK_ELEM_CABLE_LIFT_HILL + 491520, // TRACK_ELEM_REVERSE_WHOA_BELLY_SLOPE + 65536, // TRACK_ELEM_REVERSE_WHOA_BELLY_VERTICAL + 69632, // TRACK_ELEM_90_DEG_UP + 69632, // TRACK_ELEM_90_DEG_DOWN + 114688, // TRACK_ELEM_60_DEG_UP_TO_90_DEG_UP + 114688, // TRACK_ELEM_90_DEG_DOWN_TO_60_DEG_DOWN + 114688, // TRACK_ELEM_90_DEG_UP_TO_60_DEG_UP + 114688, // TRACK_ELEM_60_DEG_DOWN_TO_90_DEG_DOWN + 147456, // TRACK_ELEM_BRAKE_FOR_DROP + 180151, // TRACK_ELEM_LEFT_EIGHTH_TO_DIAG + 180151, // TRACK_ELEM_RIGHT_EIGHTH_TO_DIAG + 180151, // TRACK_ELEM_LEFT_EIGHTH_TO_ORTHOGONAL + 180151, // TRACK_ELEM_RIGHT_EIGHTH_TO_ORTHOGONAL + 190960, // TRACK_ELEM_LEFT_EIGHTH_BANK_TO_DIAG + 190960, // TRACK_ELEM_RIGHT_EIGHTH_BANK_TO_DIAG + 190960, // TRACK_ELEM_LEFT_EIGHTH_BANK_TO_ORTHOGONAL + 190960, // TRACK_ELEM_RIGHT_EIGHTH_BANK_TO_ORTHOGONAL + 92681, // TRACK_ELEM_DIAG_FLAT + 111820, // TRACK_ELEM_DIAG_25_DEG_UP + 147456, // TRACK_ELEM_DIAG_60_DEG_UP + 102400, // TRACK_ELEM_DIAG_FLAT_TO_25_DEG_UP + 129024, // TRACK_ELEM_DIAG_25_DEG_UP_TO_60_DEG_UP + 129024, // TRACK_ELEM_DIAG_60_DEG_UP_TO_25_DEG_UP + 102400, // TRACK_ELEM_DIAG_25_DEG_UP_TO_FLAT + 111820, // TRACK_ELEM_DIAG_25_DEG_DOWN + 147456, // TRACK_ELEM_DIAG_60_DEG_DOWN + 102400, // TRACK_ELEM_DIAG_FLAT_TO_25_DEG_DOWN + 129024, // TRACK_ELEM_DIAG_25_DEG_DOWN_TO_60_DEG_DOWN + 129024, // TRACK_ELEM_DIAG_60_DEG_DOWN_TO_25_DEG_DOWN + 102400, // TRACK_ELEM_DIAG_25_DEG_DOWN_TO_FLAT + 107008, // TRACK_ELEM_DIAG_FLAT_TO_60_DEG_UP + 107008, // TRACK_ELEM_DIAG_60_DEG_UP_TO_FLAT + 107008, // TRACK_ELEM_DIAG_FLAT_TO_60_DEG_DOWN + 107008, // TRACK_ELEM_DIAG_60_DEG_DOWN_TO_FLAT + 96777, // TRACK_ELEM_DIAG_FLAT_TO_LEFT_BANK + 96777, // TRACK_ELEM_DIAG_FLAT_TO_RIGHT_BANK + 96777, // TRACK_ELEM_DIAG_LEFT_BANK_TO_FLAT + 96777, // TRACK_ELEM_DIAG_RIGHT_BANK_TO_FLAT + 106496, // TRACK_ELEM_DIAG_LEFT_BANK_TO_25_DEG_UP + 106496, // TRACK_ELEM_DIAG_RIGHT_BANK_TO_25_DEG_UP + 106496, // TRACK_ELEM_DIAG_25_DEG_UP_TO_LEFT_BANK + 106496, // TRACK_ELEM_DIAG_25_DEG_UP_TO_RIGHT_BANK + 106496, // TRACK_ELEM_DIAG_LEFT_BANK_TO_25_DEG_DOWN + 106496, // TRACK_ELEM_DIAG_RIGHT_BANK_TO_25_DEG_DOWN + 106496, // TRACK_ELEM_DIAG_25_DEG_DOWN_TO_LEFT_BANK + 106496, // TRACK_ELEM_DIAG_25_DEG_DOWN_TO_RIGHT_BANK + 96777, // TRACK_ELEM_DIAG_LEFT_BANK + 96777, // TRACK_ELEM_DIAG_RIGHT_BANK + 282624, // TRACK_ELEM_LOG_FLUME_REVERSER + 217088, // TRACK_ELEM_SPINNING_TUNNEL + 221184, // TRACK_ELEM_LEFT_BARREL_ROLL_UP_TO_DOWN + 221184, // TRACK_ELEM_RIGHT_BARREL_ROLL_UP_TO_DOWN + 221184, // TRACK_ELEM_LEFT_BARREL_ROLL_DOWN_TO_UP + 221184, // TRACK_ELEM_RIGHT_BARREL_ROLL_DOWN_TO_UP + 270226, // TRACK_ELEM_LEFT_BANK_TO_LEFT_QUARTER_TURN_3_TILES_25_DEG_UP + 270226, // TRACK_ELEM_RIGHT_BANK_TO_RIGHT_QUARTER_TURN_3_TILES_25_DEG_UP + 270226, // TRACK_ELEM_LEFT_QUARTER_TURN_3_TILES_25_DEG_DOWN_TO_LEFT_BANK + 270226, // TRACK_ELEM_RIGHT_QUARTER_TURN_3_TILES_25_DEG_DOWN_TO_RIGHT_BANK + 96384, // TRACK_ELEM_POWERED_LIFT + 884736, // TRACK_ELEM_LEFT_LARGE_HALF_LOOP_UP + 884736, // TRACK_ELEM_RIGHT_LARGE_HALF_LOOP_UP + 884736, // TRACK_ELEM_RIGHT_LARGE_HALF_LOOP_DOWN + 884736, // TRACK_ELEM_LEFT_LARGE_HALF_LOOP_DOWN + 221184, // TRACK_ELEM_LEFT_FLYER_TWIST_UP + 221184, // TRACK_ELEM_RIGHT_FLYER_TWIST_UP + 221184, // TRACK_ELEM_LEFT_FLYER_TWIST_DOWN + 221184, // TRACK_ELEM_RIGHT_FLYER_TWIST_DOWN + 294912, // TRACK_ELEM_FLYER_HALF_LOOP_UP + 294912, // TRACK_ELEM_FLYER_HALF_LOOP_DOWN + 229376, // TRACK_ELEM_LEFT_FLYER_CORKSCREW_UP + 229376, // TRACK_ELEM_RIGHT_FLYER_CORKSCREW_UP + 229376, // TRACK_ELEM_LEFT_FLYER_CORKSCREW_DOWN + 229376, // TRACK_ELEM_RIGHT_FLYER_CORKSCREW_DOWN + 294912, // TRACK_ELEM_HEARTLINE_TRANSFER_UP + 294912, // TRACK_ELEM_HEARTLINE_TRANSFER_DOWN + 417792, // TRACK_ELEM_LEFT_HEARTLINE_ROLL + 417792, // TRACK_ELEM_RIGHT_HEARTLINE_ROLL + 159744, // TRACK_ELEM_MINI_GOLF_HOLE_A + 167936, // TRACK_ELEM_MINI_GOLF_HOLE_B + 172032, // TRACK_ELEM_MINI_GOLF_HOLE_C + 184320, // TRACK_ELEM_MINI_GOLF_HOLE_D + 184320, // TRACK_ELEM_MINI_GOLF_HOLE_E + 360448, // TRACK_ELEM_MULTIDIM_INVERTED_FLAT_TO_90_DEG_QUARTER_LOOP_DOWN + 360448, // TRACK_ELEM_90_DEG_TO_INVERTED_FLAT_QUARTER_LOOP_UP + 360448, // TRACK_ELEM_INVERTED_FLAT_TO_90_DEG_QUARTER_LOOP_DOWN + 270226, // TRACK_ELEM_LEFT_CURVED_LIFT_HILL + 270226, // TRACK_ELEM_RIGHT_CURVED_LIFT_HILL + 393216, // TRACK_ELEM_LEFT_REVERSER + 393216, // TRACK_ELEM_RIGHT_REVERSER + 65536, // TRACK_ELEM_AIR_THRUST_TOP_CAP + 65536, // TRACK_ELEM_AIR_THRUST_VERTICAL_DOWN + 491520, // TRACK_ELEM_AIR_THRUST_VERTICAL_DOWN_TO_LEVEL + 94208, // TRACK_ELEM_BLOCK_BRAKES + 287115, // TRACK_ELEM_LEFT_BANKED_QUARTER_TURN_3_TILE_25_DEG_UP + 287115, // TRACK_ELEM_RIGHT_BANKED_QUARTER_TURN_3_TILE_25_DEG_UP + 287115, // TRACK_ELEM_LEFT_BANKED_QUARTER_TURN_3_TILE_25_DEG_DOWN + 287115, // TRACK_ELEM_RIGHT_BANKED_QUARTER_TURN_3_TILE_25_DEG_DOWN + 333259, // TRACK_ELEM_LEFT_BANKED_QUARTER_TURN_5_TILE_25_DEG_UP + 333259, // TRACK_ELEM_RIGHT_BANKED_QUARTER_TURN_5_TILE_25_DEG_UP + 333259, // TRACK_ELEM_LEFT_BANKED_QUARTER_TURN_5_TILE_25_DEG_DOWN + 333259, // TRACK_ELEM_RIGHT_BANKED_QUARTER_TURN_5_TILE_25_DEG_DOWN + 83968, // TRACK_ELEM_25_DEG_UP_TO_LEFT_BANKED_25_DEG_UP + 83968, // TRACK_ELEM_25_DEG_UP_TO_RIGHT_BANKED_25_DEG_UP + 83968, // TRACK_ELEM_LEFT_BANKED_25_DEG_UP_TO_25_DEG_UP + 83968, // TRACK_ELEM_RIGHT_BANKED_25_DEG_UP_TO_25_DEG_UP + 83968, // TRACK_ELEM_25_DEG_DOWN_TO_LEFT_BANKED_25_DEG_DOWN + 83968, // TRACK_ELEM_25_DEG_DOWN_TO_RIGHT_BANKED_25_DEG_DOWN + 83968, // TRACK_ELEM_LEFT_BANKED_25_DEG_DOWN_TO_25_DEG_DOWN + 83968, // TRACK_ELEM_RIGHT_BANKED_25_DEG_DOWN_TO_25_DEG_DOWN + 77824, // TRACK_ELEM_LEFT_BANKED_FLAT_TO_LEFT_BANKED_25_DEG_UP + 77824, // TRACK_ELEM_RIGHT_BANKED_FLAT_TO_RIGHT_BANKED_25_DEG_UP + 77824, // TRACK_ELEM_LEFT_BANKED_25_DEG_UP_TO_LEFT_BANKED_FLAT + 77824, // TRACK_ELEM_RIGHT_BANKED_25_DEG_UP_TO_RIGHT_BANKED_FLAT + 77824, // TRACK_ELEM_LEFT_BANKED_FLAT_TO_LEFT_BANKED_25_DEG_DOWN + 77824, // TRACK_ELEM_RIGHT_BANKED_FLAT_TO_RIGHT_BANKED_25_DEG_DOWN + 77824, // TRACK_ELEM_LEFT_BANKED_25_DEG_DOWN_TO_LEFT_BANKED_FLAT + 77824, // TRACK_ELEM_RIGHT_BANKED_25_DEG_DOWN_TO_RIGHT_BANKED_FLAT + 77824, // TRACK_ELEM_FLAT_TO_LEFT_BANKED_25_DEG_UP + 77824, // TRACK_ELEM_FLAT_TO_RIGHT_BANKED_25_DEG_UP + 77824, // TRACK_ELEM_LEFT_BANKED_25_DEG_UP_TO_FLAT + 77824, // TRACK_ELEM_RIGHT_BANKED_25_DEG_UP_TO_FLAT + 77824, // TRACK_ELEM_FLAT_TO_LEFT_BANKED_25_DEG_DOWN + 77824, // TRACK_ELEM_FLAT_TO_RIGHT_BANKED_25_DEG_DOWN + 77824, // TRACK_ELEM_LEFT_BANKED_25_DEG_DOWN_TO_FLAT + 77824, // TRACK_ELEM_RIGHT_BANKED_25_DEG_DOWN_TO_FLAT + 151552, // TRACK_ELEM_LEFT_QUARTER_TURN_1_TILE_90_DEG_UP + 151552, // TRACK_ELEM_RIGHT_QUARTER_TURN_1_TILE_90_DEG_UP + 151552, // TRACK_ELEM_LEFT_QUARTER_TURN_1_TILE_90_DEG_DOWN + 151552, // TRACK_ELEM_RIGHT_QUARTER_TURN_1_TILE_90_DEG_DOWN + 360448, // TRACK_ELEM_MULTIDIM_90_DEG_UP_TO_INVERTED_FLAT_QUARTER_LOOP + 360448, // TRACK_ELEM_MULTIDIM_FLAT_TO_90_DEG_DOWN_QUARTER_LOOP + 360448, // +}; + +/** rct2: 0x0099DE34 */ +const money32 FlatRideTrackPricing[] = { + 65536, + 98304, + 98304, + 98304, + 79872, + 114688, + 73728, + 96256, + 96256, + 73728, + 79872, + 114688, + 73728, + 96256, + 96256, + 73728, + 257359, + 257359, + 69632, + 69632, + 69632, + 69632, + 273443, + 273443, + 78336, + 78336, + 78336, + 78336, + 78336, + 78336, + 78336, + 78336, + 69632, + 69632, + 313656, + 313656, + 313656, + 313656, + 229376, + 229376, + 491520, + 491520, + 154415, + 154415, + 164065, + 164065, + 270226, + 270226, + 270226, + 270226, + 51471, + 51471, + 212992, + 212992, + 212992, + 212992, + 294912, + 294912, + 229376, + 229376, + 229376, + 229376, + 98304, + 98304, + 98304, + 98304, + 524288, + 65536, + 69632, + 83968, + 118784, + 77824, + 100352, + 100352, + 77824, + 83968, + 118784, + 77824, + 100352, + 100352, + 77824, + 261455, + 261455, + 233472, + 233472, + 158511, + 158511, + 328192, + 328192, + 328192, + 328192, + 547072, + 547072, + 547072, + 547072, + 262144, // FLAT_TRACK_ELEM_1_X_4_A + 126976, + 126976, + 126976, + 90112, + 77824, + 65536, + 273539, + 273539, + 273539, + 273539, + 273539, + 273539, + 273539, + 273539, + 262144, // FLAT_TRACK_ELEM_2_X_2 + 1048576, // FLAT_TRACK_ELEM_4_X_4 + 143360, + 118784, + 196608, + 524288, + 327680, // FLAT_TRACK_ELEM_1_X_5 + 393216, + 65536, // FLAT_TRACK_ELEM_1_X_1_A + 262144, // FLAT_TRACK_ELEM_1_X_4_B + 126976, + 65536, // FLAT_TRACK_ELEM_1_X_1_B + 262144, // FLAT_TRACK_ELEM_1_X_4_C + 524288, // FLAT_TRACK_ELEM_3_X_3 + 491520, + 65536, + 69632, + 69632, + 114688, + 114688, + 114688, + 114688, + 147456, + 180151, + 180151, + 180151, + 180151, + 190960, + 190960, + 190960, + 190960, + 92681, + 111820, + 147456, + 102400, + 129024, + 129024, + 102400, + 111820, + 147456, + 102400, + 129024, + 129024, + 102400, + 107008, + 107008, + 107008, + 107008, + 96777, + 96777, + 96777, + 96777, + 106496, + 106496, + 106496, + 106496, + 106496, + 106496, + 106496, + 106496, + 96777, + 96777, + 282624, + 217088, + 221184, + 221184, + 221184, + 221184, + 270226, + 270226, + 270226, + 270226, + 96384, + 884736, + 884736, + 884736, + 884736, + 221184, + 221184, + 221184, + 221184, + 294912, + 294912, + 229376, + 229376, + 229376, + 229376, + 294912, + 294912, + 417792, + 417792, + 159744, + 167936, + 172032, + 184320, + 184320, + 159744, + 159744, + 159744, + 270226, + 270226, + 393216, + 393216, + 65536, + 65536, + 491520, + 94208, + 287115, + 287115, + 287115, + 287115, + 333259, + 333259, + 333259, + 333259, + 83968, + 83968, + 83968, + 83968, + 83968, + 83968, + 83968, + 83968, + 77824, + 77824, + 77824, + 77824, + 77824, + 77824, + 77824, + 77824, + 77824, + 77824, + 77824, + 77824, + 77824, + 77824, + 77824, + 77824, + 151552, + 151552, + 151552, + 151552, +}; diff --git a/src/ride/track_data.h b/src/ride/track_data.h index 2d04712427..637ded5ab7 100644 --- a/src/ride/track_data.h +++ b/src/ride/track_data.h @@ -60,3 +60,6 @@ typedef struct { extern const rct_vehicle_info_list **gTrackVehicleInfo[17]; extern const sint16 AlternativeTrackTypes[256]; + +extern const money32 TrackPricing[256]; +extern const money32 FlatRideTrackPricing[256]; diff --git a/src/ride/track_design.c b/src/ride/track_design.c index f2c494e698..5993998524 100644 --- a/src/ride/track_design.c +++ b/src/ride/track_design.c @@ -1582,7 +1582,7 @@ static money32 place_maze_design(uint8 flags, uint8 rideIndex, uint16 mazeEntry, // Calculate price money32 price = 0; if (!(gParkFlags & PARK_FLAGS_NO_MONEY)) { - price = RideTrackCosts[ride->type].track_price * RCT2_GLOBAL(0x0099DBC8, money32); + price = RideTrackCosts[ride->type].track_price * TrackPricing[TRACK_ELEM_MAZE]; price = (price >> 17) * 10; } diff --git a/src/windows/new_ride.c b/src/windows/new_ride.c index bf1e31b0dd..3db8722860 100644 --- a/src/windows/new_ride.c +++ b/src/windows/new_ride.c @@ -33,6 +33,7 @@ #include "../world/scenery.h" #include "../ride/ride_data.h" #include "../sprites.h" +#include "../ride/track_data.h" #define _window_new_ride_current_tab RCT2_GLOBAL(RCT2_ADDRESS_WINDOW_RIDE_LIST_SELECTED_TAB, uint8) @@ -912,9 +913,9 @@ static void window_new_ride_paint_ride_information(rct_window *w, rct_drawpixeli int unk2 = RideConstructionDefaultTrackType[item.type]; money32 price = RideTrackCosts[item.type].track_price; if (ride_type_has_flag(item.type, RIDE_TYPE_FLAG_FLAT_RIDE)) { - price *= RCT2_ADDRESS(0x0099DE34, uint32)[unk2]; + price *= FlatRideTrackPricing[unk2]; } else { - price *= RCT2_ADDRESS(0x0099DA34, uint32)[unk2]; + price *= TrackPricing[unk2]; } price = (price >> 17) * 10 * RideData5[item.type].price;