diff --git a/src/object.c b/src/object.c index 96badbb090..7307cea6a5 100644 --- a/src/object.c +++ b/src/object.c @@ -544,12 +544,14 @@ int paint_ride_entry(int flags, int ebx, int ecx, int edx, rct_drawpixelinfo* dp b = rideVehicleEntry->var_16 * 80; image_index += b; } + // Verticle if (rideVehicleEntry->sprite_flags & VEHICLE_SPRITE_FLAG_VERTICAL_SLOPES) { rideVehicleEntry->var_28 = image_index; b = rideVehicleEntry->var_16 * 116; image_index += b; } + // Unknown if (rideVehicleEntry->sprite_flags & VEHICLE_SPRITE_FLAG_DIAGONAL_SLOPES) { rideVehicleEntry->var_2C = image_index; @@ -576,12 +578,14 @@ int paint_ride_entry(int flags, int ebx, int ecx, int edx, rct_drawpixelinfo* dp b = rideVehicleEntry->var_16 * 128; image_index += b; } + // Unknown if (rideVehicleEntry->sprite_flags & VEHICLE_SPRITE_FLAG_DIAGONAL_GENTLE_SLOPE_BANKED_TRANSITIONS) { rideVehicleEntry->var_3C = image_index; b = rideVehicleEntry->var_16 * 16; image_index += b; } + // Unknown if (rideVehicleEntry->sprite_flags & VEHICLE_SPRITE_FLAG_GENTLE_SLOPE_BANKED_TRANSITIONS) { rideVehicleEntry->var_40 = image_index; @@ -606,6 +610,7 @@ int paint_ride_entry(int flags, int ebx, int ecx, int edx, rct_drawpixelinfo* dp b = rideVehicleEntry->var_16 * 80; image_index += b; } + // Unknown if (rideVehicleEntry->sprite_flags & VEHICLE_SPRITE_FLAG_RESTRAINT_ANIMATION) { rideVehicleEntry->var_1C = image_index; diff --git a/src/ride/ride.c b/src/ride/ride.c index 7340a3e298..354ccfc13c 100644 --- a/src/ride/ride.c +++ b/src/ride/ride.c @@ -6597,8 +6597,8 @@ void ride_update_max_vehicles(int rideIndex) int totalFriction = 0; for (int i = 0; i < numCars; i++) { vehicleEntry = &rideEntry->vehicles[trainLayout[i]]; - trainLength += vehicleEntry->var_04; - totalFriction += vehicleEntry->car_friction; + trainLength += vehicleEntry->spacing; + totalFriction += vehicleEntry->friction; } if (trainLength <= stationLength && totalFriction <= maxFriction) { @@ -6629,7 +6629,7 @@ void ride_update_max_vehicles(int rideIndex) trainLength = 0; for (int i = 0; i < newCarsPerTrain; i++) { vehicleEntry = &rideEntry->vehicles[trainLayout[i]]; - trainLength += vehicleEntry->var_04; + trainLength += vehicleEntry->spacing; } int totalLength = trainLength / 2; @@ -6655,7 +6655,7 @@ void ride_update_max_vehicles(int rideIndex) int totalSpacing = 0; for (int i = 0; i < newCarsPerTrain; i++) { vehicleEntry = &rideEntry->vehicles[trainLayout[i]]; - totalSpacing += vehicleEntry->var_04; + totalSpacing += vehicleEntry->spacing; } totalSpacing >>= 13; diff --git a/src/ride/ride.h b/src/ride/ride.h index 2bb2758fb7..ae8a5a8cd8 100644 --- a/src/ride/ride.h +++ b/src/ride/ride.h @@ -78,11 +78,11 @@ typedef struct{ uint16 var_00; // 0x00 , 0x1A uint8 var_02; // 0x02 , 0x1C uint8 var_03; // 0x03 , 0x1D - uint32 var_04; // 0x04 , 0x1E - uint16 var_08; // 0x08 , 0x22 + uint32 spacing; // 0x04 , 0x1E + uint16 friction; // 0x08 , 0x22 sint8 var_0A; // 0x0A , 0x24 uint8 pad_0B; - uint16 var_0C; // 0x0C , 0x26 + uint16 available_sprites; // 0x0C , 0x26 uint8 var_0E; // 0x0E , 0x28 uint8 var_0F; // 0x0F , 0x29 uint8 var_10; // 0x10 , 0x2A @@ -106,10 +106,11 @@ typedef struct{ uint32 var_4C; // 0x4C , 0x66 uint32 no_vehicle_images; // 0x50 , 0x6A uint8 no_seating_rows; // 0x54 , 0x6E - uint8 pad_55[0x2]; + uint8 spinning_inertia; // 0x55 , 0x6F + uint8 spinning_friction; // 0x56 , 0x70 uint8 var_57; // 0x57 , 0x71 uint8 pad_58; - uint8 sound_range; // 0x59 , 0x73 + uint8 sound_range; // 0x59 , 0x73 uint8 var_5A; // 0x5A , 0x74 uint8 pad_5B; // 0x5B , 0x75 uint8 var_5C; // 0x5C , 0x76 @@ -124,28 +125,33 @@ typedef struct{ * size: unknown */ typedef struct { - rct_string_id name; // 0x000 - rct_string_id description; // 0x002 - uint32 images_offset; // 0x004 - uint32 flags; // 0x008 - uint8 ride_type[3]; // 0x00C - uint8 min_cars_in_train; // 0x00F - uint8 max_cars_in_train; // 0x010 - uint8 cars_per_flat_ride; // 0x011 - uint8 zero_cars; // 0x012 - uint8 tab_vehicle; // 0x013 - uint8 default_vehicle; // 0x014 - uint8 front_vehicle; // 0x015 - uint8 second_vehicle; // 0x016 - uint8 rear_vehicle; // 0x017 - uint8 third_vehicle; // 0x018 + rct_string_id name; // 0x000 + rct_string_id description; // 0x002 + uint32 images_offset; // 0x004 + uint32 flags; // 0x008 + uint8 ride_type[3]; // 0x00C + uint8 min_cars_in_train; // 0x00F + uint8 max_cars_in_train; // 0x010 + uint8 cars_per_flat_ride; // 0x011 + // Number of cars that can't hold passengers + uint8 zero_cars; // 0x012 + // The index to the vehicle type displayed in + // the vehicle tab. + uint8 tab_vehicle; // 0x013 + uint8 default_vehicle; // 0x014 + // Convert from first - fourth vehicle to + // vehicle structure + uint8 front_vehicle; // 0x015 + uint8 second_vehicle; // 0x016 + uint8 rear_vehicle; // 0x017 + uint8 third_vehicle; // 0x018 uint8 pad_019; - rct_ride_type_vehicle vehicles[4]; // 0x01A - vehicle_colour_preset_list *vehicle_preset_list; // 0x1AE - sint8 excitement_multipler; // 0x1B2 - sint8 intensity_multipler; // 0x1B3 - sint8 nausea_multipler; // 0x1B4 - uint8 max_height; // 0x1B5 + rct_ride_type_vehicle vehicles[4]; // 0x1A + uint32 var_1AE; + sint8 excitement_multipler; // 0x1B2 + sint8 intensity_multipler; // 0x1B3 + sint8 nausea_multipler; // 0x1B4 + uint8 additional_max_height; // 0x1B5 union { uint64 enabledTrackPieces; // 0x1B6 struct { diff --git a/src/windows/ride.c b/src/windows/ride.c index b68086446c..5710b8b047 100644 --- a/src/windows/ride.c +++ b/src/windows/ride.c @@ -2647,8 +2647,8 @@ static void window_ride_vehicle_scrollpaint(rct_window *w, rct_drawpixelinfo *dp // For each car in train for (j = 0; j < ride->num_cars_per_train; j++) { rct_ride_type_vehicle* rideVehicleEntry = &rideEntry->vehicles[trainLayout[j]]; - x += rideVehicleEntry->var_04 / 17432; - y -= (rideVehicleEntry->var_04 / 2) / 17432; + x += rideVehicleEntry->spacing / 17432; + y -= (rideVehicleEntry->spacing / 2) / 17432; // Get colour of vehicle switch (ride->colour_scheme_type & 3) { @@ -2680,8 +2680,8 @@ static void window_ride_vehicle_scrollpaint(rct_window *w, rct_drawpixelinfo *dp nextSpriteToDraw->tertiary_colour = vehicleColour.additional_2; nextSpriteToDraw++; - x += rideVehicleEntry->var_04 / 17432; - y -= (rideVehicleEntry->var_04 / 2) / 17432; + x += rideVehicleEntry->spacing / 17432; + y -= (rideVehicleEntry->spacing / 2) / 17432; } if (ride->type == RIDE_TYPE_REVERSER_ROLLER_COASTER) {