From 6855f83b01ca08da68d7d22c9bb970a9f3e592a8 Mon Sep 17 00:00:00 2001 From: Duncan Frost Date: Mon, 16 Mar 2015 21:37:21 +0000 Subject: [PATCH] Added more of sub_state_0 --- src/peep/peep.c | 28 +++++++++++++++++++++++++++- src/ride/vehicle.h | 3 ++- 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/src/peep/peep.c b/src/peep/peep.c index 24bb0f78db..fa7f976567 100644 --- a/src/peep/peep.c +++ b/src/peep/peep.c @@ -883,8 +883,34 @@ static void peep_leaving_ride_sub_state_0(rct_peep* peep){ } peep->current_train = chosen_train; + uint8* edx = RCT2_ADDRESS(0xF1AD78, uint8); - rct_vehicle* vehicle = GET_VEHICLE(ride->vehicles[chosen_train]); + int i = 0; + for (rct_vehicle* vehicle = GET_VEHICLE(ride->vehicles[chosen_train]); + vehicle->next_vehicle_on_train != 0xFFFF; + vehicle = GET_VEHICLE(vehicle->next_vehicle_on_train), + i++){ + + uint8 al = vehicle->var_B2; + if (al & 0x80){ + al &= ~0x80; + if (vehicle->var_B4 & 1){ + //goto 0x691CCE + } + } + if (al == vehicle->var_B4) + continue; + + if (ride->mode == RIDE_MODE_FORWARD_ROTATION || + ride->mode == RIDE_MODE_BACKWARD_ROTATION) + { + uint8 position = ((~vehicle->var_1F + 1) >> 3) & 0xF; + if (vehicle->peep[position] != 0xFFFF) + continue; + } + + *edx++ = i; + } // 0x00691B36 } diff --git a/src/ride/vehicle.h b/src/ride/vehicle.h index 6ef1e226c1..8ad20d7090 100644 --- a/src/ride/vehicle.h +++ b/src/ride/vehicle.h @@ -46,7 +46,8 @@ typedef struct { sint16 sprite_right; // 0x1A sint16 sprite_bottom; // 0x1C uint8 sprite_direction; // 0x1E - uint8 pad_1F[0x09]; + uint8 var_1F; + uint8 pad_20[0x08]; sint32 velocity; // 0x28 uint8 pad_2C[0x04]; uint8 ride; // 0x30