From ceaa7c8a0440c88177aa57e637178d545d5ed4ba Mon Sep 17 00:00:00 2001 From: Marijn van der Werf Date: Sun, 7 Aug 2016 14:30:29 +0200 Subject: [PATCH] Add track mirroring data --- src/ride/track_data.c | 260 ++++++++++++++++++++++++++++++++++++++++ src/ride/track_data.h | 2 + src/ride/track_design.c | 2 +- 3 files changed, 263 insertions(+), 1 deletion(-) diff --git a/src/ride/track_data.c b/src/ride/track_data.c index e20099f59e..3f0aa46864 100644 --- a/src/ride/track_data.c +++ b/src/ride/track_data.c @@ -31213,3 +31213,263 @@ const dodgems_track_size DodgemsTrackSize[] = { { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, }; + +/** rct2: 0x0099EA1C */ +const uint8 TrackElementMirrorMap[] = { + TRACK_ELEM_FLAT, + TRACK_ELEM_END_STATION, + TRACK_ELEM_BEGIN_STATION, + TRACK_ELEM_MIDDLE_STATION, + TRACK_ELEM_25_DEG_UP, + TRACK_ELEM_60_DEG_UP, + TRACK_ELEM_FLAT_TO_25_DEG_UP, + TRACK_ELEM_25_DEG_UP_TO_60_DEG_UP, + TRACK_ELEM_60_DEG_UP_TO_25_DEG_UP, + TRACK_ELEM_25_DEG_UP_TO_FLAT, + TRACK_ELEM_25_DEG_DOWN, + TRACK_ELEM_60_DEG_DOWN, + TRACK_ELEM_FLAT_TO_25_DEG_DOWN, + TRACK_ELEM_25_DEG_DOWN_TO_60_DEG_DOWN, + TRACK_ELEM_60_DEG_DOWN_TO_25_DEG_DOWN, + TRACK_ELEM_25_DEG_DOWN_TO_FLAT, + TRACK_ELEM_RIGHT_QUARTER_TURN_5_TILES, // TRACK_ELEM_LEFT_QUARTER_TURN_5_TILES + TRACK_ELEM_LEFT_QUARTER_TURN_5_TILES, // TRACK_ELEM_RIGHT_QUARTER_TURN_5_TILES + TRACK_ELEM_FLAT_TO_RIGHT_BANK, // TRACK_ELEM_FLAT_TO_LEFT_BANK + TRACK_ELEM_FLAT_TO_LEFT_BANK, // TRACK_ELEM_FLAT_TO_RIGHT_BANK + TRACK_ELEM_RIGHT_BANK_TO_FLAT, // TRACK_ELEM_LEFT_BANK_TO_FLAT + TRACK_ELEM_LEFT_BANK_TO_FLAT, // TRACK_ELEM_RIGHT_BANK_TO_FLAT + TRACK_ELEM_BANKED_RIGHT_QUARTER_TURN_5_TILES, // TRACK_ELEM_BANKED_LEFT_QUARTER_TURN_5_TILES + TRACK_ELEM_BANKED_LEFT_QUARTER_TURN_5_TILES, // TRACK_ELEM_BANKED_RIGHT_QUARTER_TURN_5_TILES + TRACK_ELEM_RIGHT_BANK_TO_25_DEG_UP, // TRACK_ELEM_LEFT_BANK_TO_25_DEG_UP + TRACK_ELEM_LEFT_BANK_TO_25_DEG_UP, // TRACK_ELEM_RIGHT_BANK_TO_25_DEG_UP + TRACK_ELEM_25_DEG_UP_TO_RIGHT_BANK, // TRACK_ELEM_25_DEG_UP_TO_LEFT_BANK + TRACK_ELEM_25_DEG_UP_TO_LEFT_BANK, // TRACK_ELEM_25_DEG_UP_TO_RIGHT_BANK + TRACK_ELEM_RIGHT_BANK_TO_25_DEG_DOWN, // TRACK_ELEM_LEFT_BANK_TO_25_DEG_DOWN + TRACK_ELEM_LEFT_BANK_TO_25_DEG_DOWN, // TRACK_ELEM_RIGHT_BANK_TO_25_DEG_DOWN + TRACK_ELEM_25_DEG_DOWN_TO_RIGHT_BANK, // TRACK_ELEM_25_DEG_DOWN_TO_LEFT_BANK + TRACK_ELEM_25_DEG_DOWN_TO_LEFT_BANK, // TRACK_ELEM_25_DEG_DOWN_TO_RIGHT_BANK + TRACK_ELEM_RIGHT_BANK, // TRACK_ELEM_LEFT_BANK + TRACK_ELEM_LEFT_BANK, // TRACK_ELEM_RIGHT_BANK + TRACK_ELEM_RIGHT_QUARTER_TURN_5_TILES_25_DEG_UP, // TRACK_ELEM_LEFT_QUARTER_TURN_5_TILES_25_DEG_UP + TRACK_ELEM_LEFT_QUARTER_TURN_5_TILES_25_DEG_UP, // TRACK_ELEM_RIGHT_QUARTER_TURN_5_TILES_25_DEG_UP + TRACK_ELEM_RIGHT_QUARTER_TURN_5_TILES_25_DEG_DOWN, // TRACK_ELEM_LEFT_QUARTER_TURN_5_TILES_25_DEG_DOWN + TRACK_ELEM_LEFT_QUARTER_TURN_5_TILES_25_DEG_DOWN, // TRACK_ELEM_RIGHT_QUARTER_TURN_5_TILES_25_DEG_DOWN + TRACK_ELEM_S_BEND_RIGHT, // TRACK_ELEM_S_BEND_LEFT + TRACK_ELEM_S_BEND_LEFT, // TRACK_ELEM_S_BEND_RIGHT + TRACK_ELEM_RIGHT_VERTICAL_LOOP, // TRACK_ELEM_LEFT_VERTICAL_LOOP + TRACK_ELEM_LEFT_VERTICAL_LOOP, // TRACK_ELEM_RIGHT_VERTICAL_LOOP + TRACK_ELEM_RIGHT_QUARTER_TURN_3_TILES, // TRACK_ELEM_LEFT_QUARTER_TURN_3_TILES + TRACK_ELEM_LEFT_QUARTER_TURN_3_TILES, // TRACK_ELEM_RIGHT_QUARTER_TURN_3_TILES + TRACK_ELEM_RIGHT_QUARTER_TURN_3_TILES_BANK, // TRACK_ELEM_LEFT_QUARTER_TURN_3_TILES_BANK + TRACK_ELEM_LEFT_QUARTER_TURN_3_TILES_BANK, // TRACK_ELEM_RIGHT_QUARTER_TURN_3_TILES_BANK + TRACK_ELEM_RIGHT_QUARTER_TURN_3_TILES_25_DEG_UP, // TRACK_ELEM_LEFT_QUARTER_TURN_3_TILES_25_DEG_UP + TRACK_ELEM_LEFT_QUARTER_TURN_3_TILES_25_DEG_UP, // TRACK_ELEM_RIGHT_QUARTER_TURN_3_TILES_25_DEG_UP + TRACK_ELEM_RIGHT_QUARTER_TURN_3_TILES_25_DEG_DOWN, // TRACK_ELEM_LEFT_QUARTER_TURN_3_TILES_25_DEG_DOWN + TRACK_ELEM_LEFT_QUARTER_TURN_3_TILES_25_DEG_DOWN, // TRACK_ELEM_RIGHT_QUARTER_TURN_3_TILES_25_DEG_DOWN + TRACK_ELEM_RIGHT_QUARTER_TURN_1_TILE, // TRACK_ELEM_LEFT_QUARTER_TURN_1_TILE + TRACK_ELEM_LEFT_QUARTER_TURN_1_TILE, // TRACK_ELEM_RIGHT_QUARTER_TURN_1_TILE + TRACK_ELEM_RIGHT_TWIST_DOWN_TO_UP, // TRACK_ELEM_LEFT_TWIST_DOWN_TO_UP + TRACK_ELEM_LEFT_TWIST_DOWN_TO_UP, // TRACK_ELEM_RIGHT_TWIST_DOWN_TO_UP + TRACK_ELEM_RIGHT_TWIST_UP_TO_DOWN, // TRACK_ELEM_LEFT_TWIST_UP_TO_DOWN + TRACK_ELEM_LEFT_TWIST_UP_TO_DOWN, // TRACK_ELEM_RIGHT_TWIST_UP_TO_DOWN + TRACK_ELEM_HALF_LOOP_UP, + TRACK_ELEM_HALF_LOOP_DOWN, + TRACK_ELEM_RIGHT_CORKSCREW_UP, // TRACK_ELEM_LEFT_CORKSCREW_UP + TRACK_ELEM_LEFT_CORKSCREW_UP, // TRACK_ELEM_RIGHT_CORKSCREW_UP + TRACK_ELEM_RIGHT_CORKSCREW_DOWN, // TRACK_ELEM_LEFT_CORKSCREW_DOWN + TRACK_ELEM_LEFT_CORKSCREW_DOWN, // TRACK_ELEM_RIGHT_CORKSCREW_DOWN + TRACK_ELEM_FLAT_TO_60_DEG_UP, + TRACK_ELEM_60_DEG_UP_TO_FLAT, + TRACK_ELEM_FLAT_TO_60_DEG_DOWN, + TRACK_ELEM_60_DEG_DOWN_TO_FLAT, + TRACK_ELEM_TOWER_BASE, + TRACK_ELEM_TOWER_SECTION, + TRACK_ELEM_FLAT_COVERED, + TRACK_ELEM_25_DEG_UP_COVERED, + TRACK_ELEM_60_DEG_UP_COVERED, + TRACK_ELEM_FLAT_TO_25_DEG_UP_COVERED, + TRACK_ELEM_25_DEG_UP_TO_60_DEG_UP_COVERED, + TRACK_ELEM_60_DEG_UP_TO_25_DEG_UP_COVERED, + TRACK_ELEM_25_DEG_UP_TO_FLAT_COVERED, + TRACK_ELEM_25_DEG_DOWN_COVERED, + TRACK_ELEM_60_DEG_DOWN_COVERED, + TRACK_ELEM_FLAT_TO_25_DEG_DOWN_COVERED, + TRACK_ELEM_25_DEG_DOWN_TO_60_DEG_DOWN_COVERED, + TRACK_ELEM_60_DEG_DOWN_TO_25_DEG_DOWN_COVERED, + TRACK_ELEM_25_DEG_DOWN_TO_FLAT_COVERED, + TRACK_ELEM_RIGHT_QUARTER_TURN_5_TILES_COVERED, // TRACK_ELEM_LEFT_QUARTER_TURN_5_TILES_COVERED + TRACK_ELEM_LEFT_QUARTER_TURN_5_TILES_COVERED, // TRACK_ELEM_RIGHT_QUARTER_TURN_5_TILES_COVERED + TRACK_ELEM_S_BEND_RIGHT_COVERED, // TRACK_ELEM_S_BEND_LEFT_COVERED + TRACK_ELEM_S_BEND_LEFT_COVERED, // TRACK_ELEM_S_BEND_RIGHT_COVERED + TRACK_ELEM_RIGHT_QUARTER_TURN_3_TILES_COVERED, // TRACK_ELEM_LEFT_QUARTER_TURN_3_TILES_COVERED + TRACK_ELEM_LEFT_QUARTER_TURN_3_TILES_COVERED, // TRACK_ELEM_RIGHT_QUARTER_TURN_3_TILES_COVERED + TRACK_ELEM_RIGHT_HALF_BANKED_HELIX_UP_SMALL, // TRACK_ELEM_LEFT_HALF_BANKED_HELIX_UP_SMALL + TRACK_ELEM_LEFT_HALF_BANKED_HELIX_UP_SMALL, // TRACK_ELEM_RIGHT_HALF_BANKED_HELIX_UP_SMALL + TRACK_ELEM_RIGHT_HALF_BANKED_HELIX_DOWN_SMALL, // TRACK_ELEM_LEFT_HALF_BANKED_HELIX_DOWN_SMALL + TRACK_ELEM_LEFT_HALF_BANKED_HELIX_DOWN_SMALL, // TRACK_ELEM_RIGHT_HALF_BANKED_HELIX_DOWN_SMALL + TRACK_ELEM_RIGHT_HALF_BANKED_HELIX_UP_LARGE, // TRACK_ELEM_LEFT_HALF_BANKED_HELIX_UP_LARGE + TRACK_ELEM_LEFT_HALF_BANKED_HELIX_UP_LARGE, // TRACK_ELEM_RIGHT_HALF_BANKED_HELIX_UP_LARGE + TRACK_ELEM_RIGHT_HALF_BANKED_HELIX_DOWN_LARGE, // TRACK_ELEM_LEFT_HALF_BANKED_HELIX_DOWN_LARGE + TRACK_ELEM_LEFT_HALF_BANKED_HELIX_DOWN_LARGE, // TRACK_ELEM_RIGHT_HALF_BANKED_HELIX_DOWN_LARGE + TRACK_ELEM_RIGHT_QUARTER_TURN_1_TILE_60_DEG_UP, // TRACK_ELEM_LEFT_QUARTER_TURN_1_TILE_60_DEG_UP + TRACK_ELEM_LEFT_QUARTER_TURN_1_TILE_60_DEG_UP, // TRACK_ELEM_RIGHT_QUARTER_TURN_1_TILE_60_DEG_UP + TRACK_ELEM_RIGHT_QUARTER_TURN_1_TILE_60_DEG_DOWN, // TRACK_ELEM_LEFT_QUARTER_TURN_1_TILE_60_DEG_DOWN + TRACK_ELEM_LEFT_QUARTER_TURN_1_TILE_60_DEG_DOWN, // TRACK_ELEM_RIGHT_QUARTER_TURN_1_TILE_60_DEG_DOWN + TRACK_ELEM_BRAKES, + TRACK_ELEM_ROTATION_CONTROL_TOGGLE, + TRACK_ELEM_INVERTED_90_DEG_UP_TO_FLAT_QUARTER_LOOP, + TRACK_ELEM_RIGHT_QUARTER_BANKED_HELIX_LARGE_UP, // TRACK_ELEM_LEFT_QUARTER_BANKED_HELIX_LARGE_UP + TRACK_ELEM_LEFT_QUARTER_BANKED_HELIX_LARGE_UP, // TRACK_ELEM_RIGHT_QUARTER_BANKED_HELIX_LARGE_UP + TRACK_ELEM_RIGHT_QUARTER_BANKED_HELIX_LARGE_DOWN, // TRACK_ELEM_LEFT_QUARTER_BANKED_HELIX_LARGE_DOWN + TRACK_ELEM_LEFT_QUARTER_BANKED_HELIX_LARGE_DOWN, // TRACK_ELEM_RIGHT_QUARTER_BANKED_HELIX_LARGE_DOWN + TRACK_ELEM_RIGHT_QUARTER_HELIX_LARGE_UP, // TRACK_ELEM_LEFT_QUARTER_HELIX_LARGE_UP + TRACK_ELEM_LEFT_QUARTER_HELIX_LARGE_UP, // TRACK_ELEM_RIGHT_QUARTER_HELIX_LARGE_UP + TRACK_ELEM_RIGHT_QUARTER_HELIX_LARGE_DOWN, // TRACK_ELEM_LEFT_QUARTER_HELIX_LARGE_DOWN + TRACK_ELEM_LEFT_QUARTER_HELIX_LARGE_DOWN, // TRACK_ELEM_RIGHT_QUARTER_HELIX_LARGE_DOWN + TRACK_ELEM_25_DEG_UP_RIGHT_BANKED, // TRACK_ELEM_25_DEG_UP_LEFT_BANKED + TRACK_ELEM_25_DEG_UP_LEFT_BANKED, // TRACK_ELEM_25_DEG_UP_RIGHT_BANKED + TRACK_ELEM_WATERFALL, + TRACK_ELEM_RAPIDS, + TRACK_ELEM_ON_RIDE_PHOTO, + TRACK_ELEM_25_DEG_DOWN_RIGHT_BANKED, // TRACK_ELEM_25_DEG_DOWN_LEFT_BANKED + TRACK_ELEM_25_DEG_DOWN_LEFT_BANKED, // TRACK_ELEM_25_DEG_DOWN_RIGHT_BANKED + TRACK_ELEM_WATER_SPLASH, + TRACK_ELEM_FLAT_TO_60_DEG_UP_LONG_BASE, + TRACK_ELEM_60_DEG_UP_TO_FLAT_LONG_BASE, + TRACK_ELEM_WHIRLPOOL, + TRACK_ELEM_FLAT_TO_60_DEG_DOWN_LONG_BASE, + TRACK_ELEM_60_DEG_UP_TO_FLAT_LONG_BASE_122, + TRACK_ELEM_CABLE_LIFT_HILL, + TRACK_ELEM_REVERSE_WHOA_BELLY_SLOPE, + TRACK_ELEM_REVERSE_WHOA_BELLY_VERTICAL, + TRACK_ELEM_90_DEG_UP, + TRACK_ELEM_90_DEG_DOWN, + TRACK_ELEM_60_DEG_UP_TO_90_DEG_UP, + TRACK_ELEM_90_DEG_DOWN_TO_60_DEG_DOWN, + TRACK_ELEM_90_DEG_UP_TO_60_DEG_UP, + TRACK_ELEM_60_DEG_DOWN_TO_90_DEG_DOWN, + TRACK_ELEM_BRAKE_FOR_DROP, + TRACK_ELEM_RIGHT_EIGHTH_TO_DIAG, // TRACK_ELEM_LEFT_EIGHTH_TO_DIAG + TRACK_ELEM_LEFT_EIGHTH_TO_DIAG, // TRACK_ELEM_RIGHT_EIGHTH_TO_DIAG + TRACK_ELEM_RIGHT_EIGHTH_TO_ORTHOGONAL, // TRACK_ELEM_LEFT_EIGHTH_TO_ORTHOGONAL + TRACK_ELEM_LEFT_EIGHTH_TO_ORTHOGONAL, // TRACK_ELEM_RIGHT_EIGHTH_TO_ORTHOGONAL + TRACK_ELEM_RIGHT_EIGHTH_BANK_TO_DIAG, // TRACK_ELEM_LEFT_EIGHTH_BANK_TO_DIAG + TRACK_ELEM_LEFT_EIGHTH_BANK_TO_DIAG, // TRACK_ELEM_RIGHT_EIGHTH_BANK_TO_DIAG + TRACK_ELEM_RIGHT_EIGHTH_BANK_TO_ORTHOGONAL, // TRACK_ELEM_LEFT_EIGHTH_BANK_TO_ORTHOGONAL + TRACK_ELEM_LEFT_EIGHTH_BANK_TO_ORTHOGONAL, // TRACK_ELEM_RIGHT_EIGHTH_BANK_TO_ORTHOGONAL + TRACK_ELEM_DIAG_FLAT, + TRACK_ELEM_DIAG_25_DEG_UP, + TRACK_ELEM_DIAG_60_DEG_UP, + TRACK_ELEM_DIAG_FLAT_TO_25_DEG_UP, + TRACK_ELEM_DIAG_25_DEG_UP_TO_60_DEG_UP, + TRACK_ELEM_DIAG_60_DEG_UP_TO_25_DEG_UP, + TRACK_ELEM_DIAG_25_DEG_UP_TO_FLAT, + TRACK_ELEM_DIAG_25_DEG_DOWN, + TRACK_ELEM_DIAG_60_DEG_DOWN, + TRACK_ELEM_DIAG_FLAT_TO_25_DEG_DOWN, + TRACK_ELEM_DIAG_25_DEG_DOWN_TO_60_DEG_DOWN, + TRACK_ELEM_DIAG_60_DEG_DOWN_TO_25_DEG_DOWN, + TRACK_ELEM_DIAG_25_DEG_DOWN_TO_FLAT, + TRACK_ELEM_DIAG_FLAT_TO_60_DEG_UP, + TRACK_ELEM_DIAG_60_DEG_UP_TO_FLAT, + TRACK_ELEM_DIAG_FLAT_TO_60_DEG_DOWN, + TRACK_ELEM_DIAG_60_DEG_DOWN_TO_FLAT, + TRACK_ELEM_DIAG_FLAT_TO_RIGHT_BANK, // TRACK_ELEM_DIAG_FLAT_TO_LEFT_BANK + TRACK_ELEM_DIAG_FLAT_TO_LEFT_BANK, // TRACK_ELEM_DIAG_FLAT_TO_RIGHT_BANK + TRACK_ELEM_DIAG_RIGHT_BANK_TO_FLAT, // TRACK_ELEM_DIAG_LEFT_BANK_TO_FLAT + TRACK_ELEM_DIAG_LEFT_BANK_TO_FLAT, // TRACK_ELEM_DIAG_RIGHT_BANK_TO_FLAT + TRACK_ELEM_DIAG_RIGHT_BANK_TO_25_DEG_UP, // TRACK_ELEM_DIAG_LEFT_BANK_TO_25_DEG_UP + TRACK_ELEM_DIAG_LEFT_BANK_TO_25_DEG_UP, // TRACK_ELEM_DIAG_RIGHT_BANK_TO_25_DEG_UP + TRACK_ELEM_DIAG_25_DEG_UP_TO_RIGHT_BANK, // TRACK_ELEM_DIAG_25_DEG_UP_TO_LEFT_BANK + TRACK_ELEM_DIAG_25_DEG_UP_TO_LEFT_BANK, // TRACK_ELEM_DIAG_25_DEG_UP_TO_RIGHT_BANK + TRACK_ELEM_DIAG_RIGHT_BANK_TO_25_DEG_DOWN, // TRACK_ELEM_DIAG_LEFT_BANK_TO_25_DEG_DOWN + TRACK_ELEM_DIAG_LEFT_BANK_TO_25_DEG_DOWN, // TRACK_ELEM_DIAG_RIGHT_BANK_TO_25_DEG_DOWN + TRACK_ELEM_DIAG_25_DEG_DOWN_TO_RIGHT_BANK, // TRACK_ELEM_DIAG_25_DEG_DOWN_TO_LEFT_BANK + TRACK_ELEM_DIAG_25_DEG_DOWN_TO_LEFT_BANK, // TRACK_ELEM_DIAG_25_DEG_DOWN_TO_RIGHT_BANK + TRACK_ELEM_DIAG_RIGHT_BANK, // TRACK_ELEM_DIAG_LEFT_BANK + TRACK_ELEM_DIAG_LEFT_BANK, // TRACK_ELEM_DIAG_RIGHT_BANK + TRACK_ELEM_LOG_FLUME_REVERSER, + TRACK_ELEM_SPINNING_TUNNEL, + TRACK_ELEM_RIGHT_BARREL_ROLL_UP_TO_DOWN, // TRACK_ELEM_LEFT_BARREL_ROLL_UP_TO_DOWN + TRACK_ELEM_LEFT_BARREL_ROLL_UP_TO_DOWN, // TRACK_ELEM_RIGHT_BARREL_ROLL_UP_TO_DOWN + TRACK_ELEM_RIGHT_BARREL_ROLL_DOWN_TO_UP, // TRACK_ELEM_LEFT_BARREL_ROLL_DOWN_TO_UP + TRACK_ELEM_LEFT_BARREL_ROLL_DOWN_TO_UP, // TRACK_ELEM_RIGHT_BARREL_ROLL_DOWN_TO_UP + TRACK_ELEM_RIGHT_BANK_TO_RIGHT_QUARTER_TURN_3_TILES_25_DEG_UP, // TRACK_ELEM_LEFT_BANK_TO_LEFT_QUARTER_TURN_3_TILES_25_DEG_UP + TRACK_ELEM_LEFT_BANK_TO_LEFT_QUARTER_TURN_3_TILES_25_DEG_UP, // TRACK_ELEM_RIGHT_BANK_TO_RIGHT_QUARTER_TURN_3_TILES_25_DEG_UP + TRACK_ELEM_RIGHT_QUARTER_TURN_3_TILES_25_DEG_DOWN_TO_RIGHT_BANK, // TRACK_ELEM_LEFT_QUARTER_TURN_3_TILES_25_DEG_DOWN_TO_LEFT_BANK + TRACK_ELEM_LEFT_QUARTER_TURN_3_TILES_25_DEG_DOWN_TO_LEFT_BANK, // TRACK_ELEM_RIGHT_QUARTER_TURN_3_TILES_25_DEG_DOWN_TO_RIGHT_BANK + TRACK_ELEM_POWERED_LIFT, + TRACK_ELEM_RIGHT_LARGE_HALF_LOOP_UP, // TRACK_ELEM_LEFT_LARGE_HALF_LOOP_UP + TRACK_ELEM_LEFT_LARGE_HALF_LOOP_UP, // TRACK_ELEM_RIGHT_LARGE_HALF_LOOP_UP + TRACK_ELEM_LEFT_LARGE_HALF_LOOP_DOWN, // TRACK_ELEM_RIGHT_LARGE_HALF_LOOP_DOWN + TRACK_ELEM_RIGHT_LARGE_HALF_LOOP_DOWN, // TRACK_ELEM_LEFT_LARGE_HALF_LOOP_DOWN + TRACK_ELEM_RIGHT_FLYER_TWIST_UP, // TRACK_ELEM_LEFT_FLYER_TWIST_UP + TRACK_ELEM_LEFT_FLYER_TWIST_UP, // TRACK_ELEM_RIGHT_FLYER_TWIST_UP + TRACK_ELEM_RIGHT_FLYER_TWIST_DOWN, // TRACK_ELEM_LEFT_FLYER_TWIST_DOWN + TRACK_ELEM_LEFT_FLYER_TWIST_DOWN, // TRACK_ELEM_RIGHT_FLYER_TWIST_DOWN + TRACK_ELEM_FLYER_HALF_LOOP_UP, + TRACK_ELEM_FLYER_HALF_LOOP_DOWN, + TRACK_ELEM_RIGHT_FLYER_CORKSCREW_UP, // TRACK_ELEM_LEFT_FLYER_CORKSCREW_UP + TRACK_ELEM_LEFT_FLYER_CORKSCREW_UP, // TRACK_ELEM_RIGHT_FLYER_CORKSCREW_UP + TRACK_ELEM_RIGHT_FLYER_CORKSCREW_DOWN, // TRACK_ELEM_LEFT_FLYER_CORKSCREW_DOWN + TRACK_ELEM_LEFT_FLYER_CORKSCREW_DOWN, // TRACK_ELEM_RIGHT_FLYER_CORKSCREW_DOWN + TRACK_ELEM_HEARTLINE_TRANSFER_UP, + TRACK_ELEM_HEARTLINE_TRANSFER_DOWN, + TRACK_ELEM_RIGHT_HEARTLINE_ROLL, // TRACK_ELEM_LEFT_HEARTLINE_ROLL + TRACK_ELEM_LEFT_HEARTLINE_ROLL, // TRACK_ELEM_RIGHT_HEARTLINE_ROLL + TRACK_ELEM_MINI_GOLF_HOLE_A, + TRACK_ELEM_MINI_GOLF_HOLE_B, + TRACK_ELEM_MINI_GOLF_HOLE_C, + TRACK_ELEM_MINI_GOLF_HOLE_E, // TRACK_ELEM_MINI_GOLF_HOLE_D + TRACK_ELEM_MINI_GOLF_HOLE_D, // TRACK_ELEM_MINI_GOLF_HOLE_E + TRACK_ELEM_MULTIDIM_INVERTED_FLAT_TO_90_DEG_QUARTER_LOOP_DOWN, + TRACK_ELEM_90_DEG_TO_INVERTED_FLAT_QUARTER_LOOP_UP, + TRACK_ELEM_INVERTED_FLAT_TO_90_DEG_QUARTER_LOOP_DOWN, + TRACK_ELEM_RIGHT_CURVED_LIFT_HILL, // TRACK_ELEM_LEFT_CURVED_LIFT_HILL + TRACK_ELEM_LEFT_CURVED_LIFT_HILL, // TRACK_ELEM_RIGHT_CURVED_LIFT_HILL + TRACK_ELEM_RIGHT_REVERSER, // TRACK_ELEM_LEFT_REVERSER + TRACK_ELEM_LEFT_REVERSER, // TRACK_ELEM_RIGHT_REVERSER + TRACK_ELEM_AIR_THRUST_TOP_CAP, + TRACK_ELEM_AIR_THRUST_VERTICAL_DOWN, + TRACK_ELEM_AIR_THRUST_VERTICAL_DOWN_TO_LEVEL, + TRACK_ELEM_BLOCK_BRAKES, + TRACK_ELEM_RIGHT_BANKED_QUARTER_TURN_3_TILE_25_DEG_UP, // TRACK_ELEM_LEFT_BANKED_QUARTER_TURN_3_TILE_25_DEG_UP + TRACK_ELEM_LEFT_BANKED_QUARTER_TURN_3_TILE_25_DEG_UP, // TRACK_ELEM_RIGHT_BANKED_QUARTER_TURN_3_TILE_25_DEG_UP + TRACK_ELEM_RIGHT_BANKED_QUARTER_TURN_3_TILE_25_DEG_DOWN, // TRACK_ELEM_LEFT_BANKED_QUARTER_TURN_3_TILE_25_DEG_DOWN + TRACK_ELEM_LEFT_BANKED_QUARTER_TURN_3_TILE_25_DEG_DOWN, // TRACK_ELEM_RIGHT_BANKED_QUARTER_TURN_3_TILE_25_DEG_DOWN + TRACK_ELEM_RIGHT_BANKED_QUARTER_TURN_5_TILE_25_DEG_UP, // TRACK_ELEM_LEFT_BANKED_QUARTER_TURN_5_TILE_25_DEG_UP + TRACK_ELEM_LEFT_BANKED_QUARTER_TURN_5_TILE_25_DEG_UP, // TRACK_ELEM_RIGHT_BANKED_QUARTER_TURN_5_TILE_25_DEG_UP + TRACK_ELEM_RIGHT_BANKED_QUARTER_TURN_5_TILE_25_DEG_DOWN, // TRACK_ELEM_LEFT_BANKED_QUARTER_TURN_5_TILE_25_DEG_DOWN + TRACK_ELEM_LEFT_BANKED_QUARTER_TURN_5_TILE_25_DEG_DOWN, // TRACK_ELEM_RIGHT_BANKED_QUARTER_TURN_5_TILE_25_DEG_DOWN + TRACK_ELEM_25_DEG_UP_TO_RIGHT_BANKED_25_DEG_UP, // TRACK_ELEM_25_DEG_UP_TO_LEFT_BANKED_25_DEG_UP + TRACK_ELEM_25_DEG_UP_TO_LEFT_BANKED_25_DEG_UP, // TRACK_ELEM_25_DEG_UP_TO_RIGHT_BANKED_25_DEG_UP + TRACK_ELEM_RIGHT_BANKED_25_DEG_UP_TO_25_DEG_UP, // TRACK_ELEM_LEFT_BANKED_25_DEG_UP_TO_25_DEG_UP + TRACK_ELEM_LEFT_BANKED_25_DEG_UP_TO_25_DEG_UP, // TRACK_ELEM_RIGHT_BANKED_25_DEG_UP_TO_25_DEG_UP + TRACK_ELEM_25_DEG_DOWN_TO_RIGHT_BANKED_25_DEG_DOWN, // TRACK_ELEM_25_DEG_DOWN_TO_LEFT_BANKED_25_DEG_DOWN + TRACK_ELEM_25_DEG_DOWN_TO_LEFT_BANKED_25_DEG_DOWN, // TRACK_ELEM_25_DEG_DOWN_TO_RIGHT_BANKED_25_DEG_DOWN + TRACK_ELEM_RIGHT_BANKED_25_DEG_DOWN_TO_25_DEG_DOWN, // TRACK_ELEM_LEFT_BANKED_25_DEG_DOWN_TO_25_DEG_DOWN + TRACK_ELEM_LEFT_BANKED_25_DEG_DOWN_TO_25_DEG_DOWN, // TRACK_ELEM_RIGHT_BANKED_25_DEG_DOWN_TO_25_DEG_DOWN + TRACK_ELEM_RIGHT_BANKED_FLAT_TO_RIGHT_BANKED_25_DEG_UP, // TRACK_ELEM_LEFT_BANKED_FLAT_TO_LEFT_BANKED_25_DEG_UP + TRACK_ELEM_LEFT_BANKED_FLAT_TO_LEFT_BANKED_25_DEG_UP, // TRACK_ELEM_RIGHT_BANKED_FLAT_TO_RIGHT_BANKED_25_DEG_UP + TRACK_ELEM_RIGHT_BANKED_25_DEG_UP_TO_RIGHT_BANKED_FLAT, // TRACK_ELEM_LEFT_BANKED_25_DEG_UP_TO_LEFT_BANKED_FLAT + TRACK_ELEM_LEFT_BANKED_25_DEG_UP_TO_LEFT_BANKED_FLAT, // TRACK_ELEM_RIGHT_BANKED_25_DEG_UP_TO_RIGHT_BANKED_FLAT + TRACK_ELEM_RIGHT_BANKED_FLAT_TO_RIGHT_BANKED_25_DEG_DOWN, // TRACK_ELEM_LEFT_BANKED_FLAT_TO_LEFT_BANKED_25_DEG_DOWN + TRACK_ELEM_LEFT_BANKED_FLAT_TO_LEFT_BANKED_25_DEG_DOWN, // TRACK_ELEM_RIGHT_BANKED_FLAT_TO_RIGHT_BANKED_25_DEG_DOWN + TRACK_ELEM_RIGHT_BANKED_25_DEG_DOWN_TO_RIGHT_BANKED_FLAT, // TRACK_ELEM_LEFT_BANKED_25_DEG_DOWN_TO_LEFT_BANKED_FLAT + TRACK_ELEM_LEFT_BANKED_25_DEG_DOWN_TO_LEFT_BANKED_FLAT, // TRACK_ELEM_RIGHT_BANKED_25_DEG_DOWN_TO_RIGHT_BANKED_FLAT + TRACK_ELEM_FLAT_TO_RIGHT_BANKED_25_DEG_UP, // TRACK_ELEM_FLAT_TO_LEFT_BANKED_25_DEG_UP + TRACK_ELEM_FLAT_TO_LEFT_BANKED_25_DEG_UP, // TRACK_ELEM_FLAT_TO_RIGHT_BANKED_25_DEG_UP + TRACK_ELEM_RIGHT_BANKED_25_DEG_UP_TO_FLAT, // TRACK_ELEM_LEFT_BANKED_25_DEG_UP_TO_FLAT + TRACK_ELEM_LEFT_BANKED_25_DEG_UP_TO_FLAT, // TRACK_ELEM_RIGHT_BANKED_25_DEG_UP_TO_FLAT + TRACK_ELEM_FLAT_TO_RIGHT_BANKED_25_DEG_DOWN, // TRACK_ELEM_FLAT_TO_LEFT_BANKED_25_DEG_DOWN + TRACK_ELEM_FLAT_TO_LEFT_BANKED_25_DEG_DOWN, // TRACK_ELEM_FLAT_TO_RIGHT_BANKED_25_DEG_DOWN + TRACK_ELEM_RIGHT_BANKED_25_DEG_DOWN_TO_FLAT, // TRACK_ELEM_LEFT_BANKED_25_DEG_DOWN_TO_FLAT + TRACK_ELEM_LEFT_BANKED_25_DEG_DOWN_TO_FLAT, // TRACK_ELEM_RIGHT_BANKED_25_DEG_DOWN_TO_FLAT + TRACK_ELEM_RIGHT_QUARTER_TURN_1_TILE_90_DEG_UP, // TRACK_ELEM_LEFT_QUARTER_TURN_1_TILE_90_DEG_UP + TRACK_ELEM_LEFT_QUARTER_TURN_1_TILE_90_DEG_UP, // TRACK_ELEM_RIGHT_QUARTER_TURN_1_TILE_90_DEG_UP + TRACK_ELEM_RIGHT_QUARTER_TURN_1_TILE_90_DEG_DOWN, // TRACK_ELEM_LEFT_QUARTER_TURN_1_TILE_90_DEG_DOWN + TRACK_ELEM_LEFT_QUARTER_TURN_1_TILE_90_DEG_DOWN, // TRACK_ELEM_RIGHT_QUARTER_TURN_1_TILE_90_DEG_DOWN + TRACK_ELEM_MULTIDIM_90_DEG_UP_TO_INVERTED_FLAT_QUARTER_LOOP, + TRACK_ELEM_MULTIDIM_FLAT_TO_90_DEG_DOWN_QUARTER_LOOP, + 255, +}; diff --git a/src/ride/track_data.h b/src/ride/track_data.h index 3a20788790..4383535178 100644 --- a/src/ride/track_data.h +++ b/src/ride/track_data.h @@ -72,3 +72,5 @@ typedef struct dodgems_track_size { } dodgems_track_size; extern const dodgems_track_size DodgemsTrackSize[256]; + +extern const uint8 TrackElementMirrorMap[256]; diff --git a/src/ride/track_design.c b/src/ride/track_design.c index 5993998524..f164143f63 100644 --- a/src/ride/track_design.c +++ b/src/ride/track_design.c @@ -435,7 +435,7 @@ static void track_design_mirror_ride(rct_track_td6 *td6) { rct_td6_track_element *track = td6->track_elements; for (; track->type != 0xFF; track++) { - track->type = RCT2_ADDRESS(0x0099EA1C, uint8)[track->type]; + track->type = TrackElementMirrorMap[track->type]; } rct_td6_entrance_element *entrance = td6->entrance_elements;