Add known ride offsets

This commit is contained in:
Duncan Frost 2015-04-03 18:21:50 +01:00 committed by duncanspumpkin
parent 3f5bd26913
commit 5e198dfa1f
4 changed files with 45 additions and 34 deletions

View File

@ -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;

View File

@ -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;

View File

@ -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 {

View File

@ -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) {