Label ride offsets

This commit is contained in:
duncanspumpkin 2016-02-18 20:58:22 +00:00
parent f267af3356
commit 772502309f
4 changed files with 29 additions and 26 deletions

View File

@ -714,8 +714,8 @@ static void rct1_fix_z()
}
ride->start_drop_height /= 2;
ride->highest_drop_height = 1;
if (ride->var_11F != 255) {
ride->var_11F /= 2;
if (ride->cur_test_track_z != 255) {
ride->cur_test_track_z /= 2;
}
ride->chairlift_bullwheel_z[0] /= 2;
ride->chairlift_bullwheel_z[1] /= 2;

View File

@ -5817,10 +5817,10 @@ foundRideEntry:
ride->vehicle_change_timeout = 0;
ride->num_stations = 0;
ride->num_vehicles = 1;
ride->var_0CA = 32;
ride->proposed_num_vehicles = 32;
ride->max_trains = 32;
ride->num_cars_per_train = 1;
ride->var_0CB = 12;
ride->proposed_num_cars_per_train = 12;
ride->min_waiting_time = 10;
ride->max_waiting_time = 60;
ride->depart_flags = RIDE_DEPART_WAIT_FOR_MINIMUM_LENGTH | 3;
@ -7326,7 +7326,7 @@ void ride_update_max_vehicles(int rideIndex)
break;
}
}
int newCarsPerTrain = max(ride->var_0CB, rideEntry->min_cars_in_train);
int newCarsPerTrain = max(ride->proposed_num_cars_per_train, rideEntry->min_cars_in_train);
maxCarsPerTrain = max(maxCarsPerTrain, rideEntry->min_cars_in_train);
newCarsPerTrain = min(maxCarsPerTrain, newCarsPerTrain);
ride->min_max_cars_per_train = maxCarsPerTrain | (rideEntry->min_cars_in_train << 4);
@ -7395,13 +7395,13 @@ void ride_update_max_vehicles(int rideIndex)
}
ride->max_trains = maxNumTrains;
numCarsPerTrain = min(ride->var_0CB, newCarsPerTrain);
numVehicles = min(ride->var_0CA, maxNumTrains);
numCarsPerTrain = min(ride->proposed_num_cars_per_train, newCarsPerTrain);
numVehicles = min(ride->proposed_num_vehicles, maxNumTrains);
} else {
ride->max_trains = rideEntry->cars_per_flat_ride;
ride->min_max_cars_per_train = rideEntry->max_cars_in_train | (rideEntry->min_cars_in_train << 4);
numCarsPerTrain = rideEntry->max_cars_in_train;
numVehicles = min(ride->var_0CA, rideEntry->cars_per_flat_ride);
numVehicles = min(ride->proposed_num_vehicles, rideEntry->cars_per_flat_ride);
}
// Refresh new current num vehicles / num cars per vehicle
@ -7524,7 +7524,7 @@ void game_command_set_ride_vehicles(int *eax, int *ebx, int *ecx, int *edx, int
switch (commandType) {
case RIDE_SET_VEHICLES_COMMAND_TYPE_NUM_TRAINS:
ride->var_0CA = value;
ride->proposed_num_vehicles = value;
if (ride->type != RIDE_TYPE_SPACE_RINGS) {
gfx_invalidate_screen();
}
@ -7533,7 +7533,7 @@ void game_command_set_ride_vehicles(int *eax, int *ebx, int *ecx, int *edx, int
invalidate_test_results(rideIndex);
rideEntry = get_ride_entry(ride->subtype);
value = clamp(rideEntry->min_cars_in_train, value, rideEntry->max_cars_in_train);
ride->var_0CB = value;
ride->proposed_num_cars_per_train = value;
break;
case RIDE_SET_VEHICLES_COMMAND_TYPE_RIDE_ENTRY:
invalidate_test_results(rideIndex);

View File

@ -157,8 +157,8 @@ typedef struct {
uint8 num_stations; // 0x0C7
uint8 num_vehicles; // 0x0C8
uint8 num_cars_per_train; // 0x0C9
uint8 var_0CA;
uint8 var_0CB;
uint8 proposed_num_vehicles; // 0x0CA
uint8 proposed_num_cars_per_train; // 0x0CB
uint8 max_trains; // 0x0CC
uint8 min_max_cars_per_train; // 0x0CD
uint8 min_waiting_time; // 0x0CE
@ -185,7 +185,7 @@ typedef struct {
sint32 max_speed; // 0x0D8
sint32 average_speed; // 0x0DC
uint8 current_test_segment; // 0x0E0
uint8 var_0E1;
uint8 average_speed_test_timeout; // 0x0E1
uint8 pad_0E2[0x2];
sint32 length[4]; // 0x0E4
uint16 time[4]; // 0x0F4
@ -196,8 +196,9 @@ typedef struct {
fixed16_2dp previous_lateral_g; // 0x104
uint8 pad_106[0x2];
uint32 testing_flags; // 0x108
// x y map location
uint16 var_10C;
// x y map location of the current track piece during a test
// this is to prevent counting special tracks multiple times
rct_xy8 cur_test_track_location; // 0x10C
// Next 3 variables are related (XXXX XYYY ZZZa aaaa)
uint16 turn_count_default; // 0x10E X = current turn count
uint16 turn_count_banked; // 0x110
@ -214,10 +215,11 @@ typedef struct {
uint8 start_drop_height; // 0x116
uint8 highest_drop_height; // 0x117
sint32 sheltered_length; // 0x118
// Unused always 0? Should affect nausea
uint16 var_11C;
uint8 num_sheltered_sections; // 0x11E (?abY YYYY)
// z related to var_10C
uint8 var_11F;
// see cur_test_track_location
uint8 cur_test_track_z; // 0x11F
// Customer counter in the current 960 game tick (about 30 seconds) interval
uint16 cur_num_customers; // 0x120
// Counts ticks to update customer intervals, resets each 960 game ticks.

View File

@ -751,15 +751,15 @@ static void vehicle_update_measurements(rct_vehicle *vehicle)
if (ride->entrances[stationId] != 0xFFFF){
uint8 test_segment = ride->current_test_segment;
ride->var_0E1++;
if (ride->var_0E1 >= 32)ride->var_0E1 = 0;
ride->average_speed_test_timeout++;
if (ride->average_speed_test_timeout >= 32)ride->average_speed_test_timeout = 0;
sint32 velocity = abs(vehicle->velocity);
if (velocity > ride->max_speed){
ride->max_speed = velocity;
}
if (ride->var_0E1 == 0 && velocity > 0x8000){
if (ride->average_speed_test_timeout == 0 && velocity > 0x8000){
ride->average_speed += velocity;
ride->time[test_segment]++;
}
@ -798,10 +798,11 @@ static void vehicle_update_measurements(rct_vehicle *vehicle)
}
}
// If we have already evaluated this track piece skip to next section
uint16 map_location = (vehicle->track_x / 32) | ((vehicle->track_y / 32) << 8);
if (vehicle->track_z / 8 != ride->var_11F || map_location != ride->var_10C){
ride->var_11F = vehicle->track_z / 8;
ride->var_10C = map_location;
if (vehicle->track_z / 8 != ride->cur_test_track_z || map_location != ride->cur_test_track_location.xy){
ride->cur_test_track_z = vehicle->track_z / 8;
ride->cur_test_track_location.xy = map_location;
if (ride->entrances[ride->current_test_station] == 0xFFFF)
return;
@ -2037,15 +2038,15 @@ void vehicle_test_reset(rct_vehicle* vehicle) {
ride->max_speed = 0;
ride->average_speed = 0;
ride->current_test_segment = 0;
ride->var_0E1 = 0;
ride->average_speed_test_timeout = 0;
ride->max_positive_vertical_g = FIXED_2DP(1, 0);
ride->max_negative_vertical_g = FIXED_2DP(1, 0);
ride->max_lateral_g = 0;
ride->previous_vertical_g = 0;
ride->previous_lateral_g = 0;
ride->testing_flags = 0;
ride->var_10C = 0xFFFF;
ride->var_11F = 0xFF;
ride->cur_test_track_location.xy = 0xFFFF;
ride->cur_test_track_z = 0xFF;
ride->turn_count_default = 0;
ride->turn_count_banked = 0;
ride->turn_count_sloped = 0;