diff --git a/src/ride/vehicle.c b/src/ride/vehicle.c index 92a649c3da..40685b68c1 100644 --- a/src/ride/vehicle.c +++ b/src/ride/vehicle.c @@ -3850,6 +3850,300 @@ produceScream: */ void vehicle_get_g_forces(rct_vehicle *vehicle, int *verticalG, int *lateralG) { + int _eax = (((sint64)0x280000) * RCT2_ADDRESS(0x009A37E4, sint32)[vehicle->var_1F]) >> 32; + _eax = (((sint64)_eax) * RCT2_ADDRESS(0x009A39C4, sint32)[vehicle->var_20]) >> 32; + + switch (vehicle->track_type >> 2) { + 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_25_DEG_DOWN: + TRACK_ELEM_60_DEG_DOWN: // + TRACK_ELEM_FLAT_TO_LEFT_BANK: + TRACK_ELEM_FLAT_TO_RIGHT_BANK: + TRACK_ELEM_LEFT_BANK_TO_FLAT: + TRACK_ELEM_RIGHT_BANK_TO_FLAT:// + TRACK_ELEM_LEFT_BANK: + TRACK_ELEM_RIGHT_BANK: + 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_25_DEG_DOWN_COVERED: + TRACK_ELEM_60_DEG_DOWN_COVERED: + TRACK_ELEM_BRAKES: + TRACK_ELEM_ROTATION_CONTROL_TOGGLE: + TRACK_ELEM_INVERTED_90_DEG_UP_TO_FLAT_QUARTER_LOOP: + 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_LEFT_BANKED: + TRACK_ELEM_25_DEG_DOWN_RIGHT_BANKED: + TRACK_ELEM_WHIRLPOOL: + TRACK_ELEM_REVERSE_WHOA_BELLY_VERTICAL: + TRACK_ELEM_90_DEG_UP: + TRACK_ELEM_90_DEG_DOWN: + TRACK_ELEM_DIAG_FLAT: + TRACK_ELEM_DIAG_25_DEG_UP: + TRACK_ELEM_DIAG_60_DEG_UP: + TRACK_ELEM_DIAG_25_DEG_DOWN: + TRACK_ELEM_DIAG_60_DEG_DOWN: + TRACK_ELEM_DIAG_FLAT_TO_LEFT_BANK: + TRACK_ELEM_DIAG_FLAT_TO_RIGHT_BANK: + TRACK_ELEM_DIAG_LEFT_BANK_TO_FLAT: + TRACK_ELEM_DIAG_RIGHT_BANK_TO_FLAT: + TRACK_ELEM_DIAG_LEFT_BANK: + TRACK_ELEM_DIAG_RIGHT_BANK: + TRACK_ELEM_LOG_FLUME_REVERSER: + TRACK_ELEM_SPINNING_TUNNEL: + TRACK_ELEM_POWERED_LIFT: + //6d73FF + break; + TRACK_ELEM_FLAT_TO_25_DEG_UP:// + TRACK_ELEM_25_DEG_DOWN_TO_FLAT:// + TRACK_ELEM_LEFT_BANK_TO_25_DEG_UP: + TRACK_ELEM_RIGHT_BANK_TO_25_DEG_UP: + TRACK_ELEM_25_DEG_DOWN_TO_LEFT_BANK: + TRACK_ELEM_25_DEG_DOWN_TO_RIGHT_BANK: + TRACK_ELEM_FLAT_TO_25_DEG_UP_COVERED: + TRACK_ELEM_25_DEG_DOWN_TO_FLAT_COVERED: + //6d7509 + break; + TRACK_ELEM_25_DEG_UP_TO_60_DEG_UP:// + TRACK_ELEM_60_DEG_DOWN_TO_25_DEG_DOWN:// + TRACK_ELEM_25_DEG_UP_TO_60_DEG_UP_COVERED: + TRACK_ELEM_60_DEG_DOWN_TO_25_DEG_DOWN_COVERED: + //6d7545 + break; + TRACK_ELEM_60_DEG_UP_TO_25_DEG_UP:// + TRACK_ELEM_25_DEG_DOWN_TO_60_DEG_DOWN:// + TRACK_ELEM_60_DEG_UP_TO_25_DEG_UP_COVERED: + TRACK_ELEM_25_DEG_DOWN_TO_60_DEG_DOWN_COVERED: + //6d7551 + break; + TRACK_ELEM_25_DEG_UP_TO_FLAT:// + TRACK_ELEM_FLAT_TO_25_DEG_DOWN:// + TRACK_ELEM_25_DEG_UP_TO_LEFT_BANK: + TRACK_ELEM_25_DEG_UP_TO_RIGHT_BANK: + TRACK_ELEM_LEFT_BANK_TO_25_DEG_DOWN: + TRACK_ELEM_RIGHT_BANK_TO_25_DEG_DOWN: + TRACK_ELEM_25_DEG_UP_TO_FLAT_COVERED: + TRACK_ELEM_FLAT_TO_25_DEG_DOWN_COVERED: + TRACK_ELEM_CABLE_LIFT_HILL: + //6d7569 + break; + TRACK_ELEM_LEFT_QUARTER_TURN_5_TILES:// + TRACK_ELEM_LEFT_QUARTER_TURN_5_TILES_25_DEG_UP: + TRACK_ELEM_LEFT_QUARTER_TURN_5_TILES_25_DEG_DOWN: + TRACK_ELEM_LEFT_TWIST_DOWN_TO_UP: + TRACK_ELEM_LEFT_TWIST_UP_TO_DOWN: + TRACK_ELEM_LEFT_QUARTER_TURN_5_TILES_COVERED: + TRACK_ELEM_LEFT_QUARTER_HELIX_LARGE_UP: + TRACK_ELEM_LEFT_QUARTER_HELIX_LARGE_DOWN: + //6d7590 + break; + TRACK_ELEM_RIGHT_QUARTER_TURN_5_TILES:// + TRACK_ELEM_RIGHT_QUARTER_TURN_5_TILES_25_DEG_UP: + TRACK_ELEM_RIGHT_QUARTER_TURN_5_TILES_25_DEG_DOWN: + TRACK_ELEM_RIGHT_TWIST_DOWN_TO_UP: + TRACK_ELEM_RIGHT_TWIST_UP_TO_DOWN: + TRACK_ELEM_RIGHT_QUARTER_TURN_5_TILES_COVERED: + TRACK_ELEM_RIGHT_QUARTER_HELIX_LARGE_UP: + TRACK_ELEM_RIGHT_QUARTER_HELIX_LARGE_DOWN: + //6d75B7 + break; + TRACK_ELEM_BANKED_LEFT_QUARTER_TURN_5_TILES: + TRACK_ELEM_LEFT_HALF_BANKED_HELIX_UP_LARGE: + TRACK_ELEM_LEFT_HALF_BANKED_HELIX_DOWN_LARGE: + TRACK_ELEM_LEFT_QUARTER_BANKED_HELIX_LARGE_UP: + TRACK_ELEM_LEFT_QUARTER_BANKED_HELIX_LARGE_DOWN: + //6d75E1 + break; + TRACK_ELEM_BANKED_RIGHT_QUARTER_TURN_5_TILES: + TRACK_ELEM_RIGHT_HALF_BANKED_HELIX_UP_LARGE: + TRACK_ELEM_RIGHT_HALF_BANKED_HELIX_DOWN_LARGE: + TRACK_ELEM_RIGHT_QUARTER_BANKED_HELIX_LARGE_UP: + TRACK_ELEM_RIGHT_QUARTER_BANKED_HELIX_LARGE_DOWN: + //6d75F0 + break; + TRACK_ELEM_S_BEND_LEFT: + TRACK_ELEM_S_BEND_LEFT_COVERED: + //6d75FF + break; + TRACK_ELEM_S_BEND_RIGHT: + TRACK_ELEM_S_BEND_RIGHT_COVERED: + //6d7608 + break; + TRACK_ELEM_LEFT_VERTICAL_LOOP: + TRACK_ELEM_RIGHT_VERTICAL_LOOP: + //6d7690 + break; + TRACK_ELEM_LEFT_QUARTER_TURN_3_TILES: + TRACK_ELEM_LEFT_QUARTER_TURN_3_TILES_25_DEG_UP: + TRACK_ELEM_LEFT_QUARTER_TURN_3_TILES_25_DEG_DOWN: + TRACK_ELEM_LEFT_QUARTER_TURN_3_TILES_COVERED: + //6d7704 + break; + TRACK_ELEM_RIGHT_QUARTER_TURN_3_TILES: + TRACK_ELEM_RIGHT_QUARTER_TURN_3_TILES_25_DEG_UP: + TRACK_ELEM_RIGHT_QUARTER_TURN_3_TILES_25_DEG_DOWN: + TRACK_ELEM_RIGHT_QUARTER_TURN_3_TILES_COVERED: + //6d7710 + break; + TRACK_ELEM_LEFT_QUARTER_TURN_3_TILES_BANK: + TRACK_ELEM_LEFT_HALF_BANKED_HELIX_UP_SMALL: + TRACK_ELEM_LEFT_HALF_BANKED_HELIX_DOWN_SMALL: + //6d7782 + break; + TRACK_ELEM_RIGHT_QUARTER_TURN_3_TILES_BANK: + TRACK_ELEM_RIGHT_HALF_BANKED_HELIX_UP_SMALL: + TRACK_ELEM_RIGHT_HALF_BANKED_HELIX_DOWN_SMALL: + //6d778E + break; + TRACK_ELEM_LEFT_QUARTER_TURN_1_TILE: + //6d779A + break; + TRACK_ELEM_RIGHT_QUARTER_TURN_1_TILE: + //6d77A3 + break; + TRACK_ELEM_HALF_LOOP_UP: + //6d763E + break; + TRACK_ELEM_HALF_LOOP_DOWN: + //6d7656 + break; + TRACK_ELEM_LEFT_CORKSCREW_UP: + TRACK_ELEM_RIGHT_CORKSCREW_DOWN: + //6d76AA + break; + TRACK_ELEM_RIGHT_CORKSCREW_UP: + TRACK_ELEM_LEFT_CORKSCREW_DOWN: + //6d76B9 + break; + TRACK_ELEM_FLAT_TO_60_DEG_UP: + TRACK_ELEM_60_DEG_DOWN_TO_FLAT: + //6d747C + break; + TRACK_ELEM_60_DEG_UP_TO_FLAT: + TRACK_ELEM_FLAT_TO_60_DEG_DOWN: + TRACK_ELEM_BRAKE_FOR_DROP: + //6d7488 + break; + TRACK_ELEM_LEFT_QUARTER_TURN_1_TILE_60_DEG_UP: + TRACK_ELEM_LEFT_QUARTER_TURN_1_TILE_60_DEG_DOWN: + //6d7770 + break; + TRACK_ELEM_RIGHT_QUARTER_TURN_1_TILE_60_DEG_UP: + TRACK_ELEM_RIGHT_QUARTER_TURN_1_TILE_60_DEG_DOWN: + //6d7779 + break; + TRACK_ELEM_WATER_SPLASH: + //6d7408 + break; + TRACK_ELEM_FLAT_TO_60_DEG_UP_LONG_BASE: + TRACK_ELEM_FLAT_TO_60_DEG_DOWN_LONG_BASE: + //6d74F1 + break; + TRACK_ELEM_60_DEG_UP_TO_FLAT_LONG_BASE: + TRACK_ELEM_60_DEG_UP_TO_FLAT_LONG_BASE_122: + //6d74FD + break; + TRACK_ELEM_REVERSE_WHOA_BELLY_SLOPE: + //6d7458 + break; + TRACK_ELEM_60_DEG_UP_TO_90_DEG_UP: + TRACK_ELEM_90_DEG_DOWN_TO_60_DEG_DOWN: + //6d7515 + break; + TRACK_ELEM_90_DEG_UP_TO_60_DEG_UP: + TRACK_ELEM_60_DEG_DOWN_TO_90_DEG_DOWN: + //6d7521 + break; + TRACK_ELEM_LEFT_EIGHTH_TO_DIAG: + TRACK_ELEM_LEFT_EIGHTH_TO_ORTHOGONAL: + //6d7575 + break; + TRACK_ELEM_RIGHT_EIGHTH_TO_DIAG: + TRACK_ELEM_RIGHT_EIGHTH_TO_ORTHOGONAL: + //6d759C + break; + TRACK_ELEM_LEFT_EIGHTH_BANK_TO_DIAG: + TRACK_ELEM_LEFT_EIGHTH_BANK_TO_ORTHOGONAL: + //6d75C3 + break; + TRACK_ELEM_RIGHT_EIGHTH_BANK_TO_DIAG: + TRACK_ELEM_RIGHT_EIGHTH_BANK_TO_ORTHOGONAL: + //6d75D2 + break; + TRACK_ELEM_DIAG_FLAT_TO_25_DEG_UP: + TRACK_ELEM_DIAG_25_DEG_DOWN_TO_FLAT: + TRACK_ELEM_DIAG_LEFT_BANK_TO_25_DEG_UP: + TRACK_ELEM_DIAG_RIGHT_BANK_TO_25_DEG_UP: + TRACK_ELEM_DIAG_25_DEG_DOWN_TO_LEFT_BANK: + TRACK_ELEM_DIAG_25_DEG_DOWN_TO_RIGHT_BANK: + //6d7494 + break; + TRACK_ELEM_DIAG_25_DEG_UP_TO_60_DEG_UP: + TRACK_ELEM_DIAG_60_DEG_DOWN_TO_25_DEG_DOWN: + //6D752D + break; + TRACK_ELEM_DIAG_60_DEG_UP_TO_25_DEG_UP: + TRACK_ELEM_DIAG_25_DEG_DOWN_TO_60_DEG_DOWN: + //6D7539 + break; + TRACK_ELEM_DIAG_25_DEG_UP_TO_FLAT: + TRACK_ELEM_DIAG_FLAT_TO_25_DEG_DOWN: + TRACK_ELEM_DIAG_25_DEG_UP_TO_LEFT_BANK: + TRACK_ELEM_DIAG_25_DEG_UP_TO_RIGHT_BANK: + TRACK_ELEM_DIAG_LEFT_BANK_TO_25_DEG_DOWN: + TRACK_ELEM_DIAG_RIGHT_BANK_TO_25_DEG_DOWN: + //6d755D + break; + TRACK_ELEM_DIAG_FLAT_TO_60_DEG_UP: + TRACK_ELEM_DIAG_60_DEG_DOWN_TO_FLAT: + //6D7464 + break; + TRACK_ELEM_DIAG_60_DEG_UP_TO_FLAT: + TRACK_ELEM_DIAG_FLAT_TO_60_DEG_DOWN: + //6d7470 + break; + TRACK_ELEM_LEFT_BARREL_ROLL_UP_TO_DOWN: + TRACK_ELEM_LEFT_BARREL_ROLL_DOWN_TO_UP: + //6d7581 + break; + TRACK_ELEM_RIGHT_BARREL_ROLL_UP_TO_DOWN: + TRACK_ELEM_RIGHT_BARREL_ROLL_DOWN_TO_UP: + //6d75A8 + break; + TRACK_ELEM_LEFT_BANK_TO_LEFT_QUARTER_TURN_3_TILES_25_DEG_UP: + //6d771C + break; + TRACK_ELEM_RIGHT_BANK_TO_RIGHT_QUARTER_TURN_3_TILES_25_DEG_UP: + //6D7746 + break; + TRACK_ELEM_LEFT_QUARTER_TURN_3_TILES_25_DEG_DOWN_TO_LEFT_BANK: + //6D7731 + break; + TRACK_ELEM_RIGHT_QUARTER_TURN_3_TILES_25_DEG_DOWN_TO_RIGHT_BANK: + //6D775B + break; + TRACK_ELEM_LEFT_LARGE_HALF_LOOP_UP: + TRACK_ELEM_RIGHT_LARGE_HALF_LOOP_UP: + //6d7666 + break; + TRACK_ELEM_RIGHT_LARGE_HALF_LOOP_DOWN: + TRACK_ELEM_LEFT_LARGE_HALF_LOOP_DOWN: + //6d767F + break; + //187 - 255 + } + int eax, ebx, ecx, edx, esi, edi, ebp; esi = (int)vehicle; @@ -4200,10 +4494,6 @@ int vehicle_update_track_motion_cable_lift(rct_vehicle *cableLift) cableLift->var_2C = ecx; return RCT2_GLOBAL(0x00F64E18, uint32); - - //int eax = 0, ebx = 0, ecx = 0, edx = 0, ebp = 0, edi = 0; - //RCT2_CALLFUNC_X(0x006DEF56, &eax, &ebx, &ecx, &edx, (int*)&cableLift, &edi, &ebp); - //return eax; } /* rct2: 0x006DA44E */