mirror of https://github.com/OpenRCT2/OpenRCT2.git
commit
76358fdf31
|
@ -751,20 +751,55 @@ void sub_688485(){
|
|||
|
||||
}
|
||||
|
||||
int sub_0x686806(rct_sprite* sprite, int eax, int ecx, int edx){
|
||||
int sub_0x686806(rct_sprite* sprite, int eax, int image_id, int ecx, int edx){
|
||||
int ebp = (eax >> 8) & 0xFF;
|
||||
edx <<= 16;
|
||||
ebp += RCT2_GLOBAL(0x9DEA56, uint16);
|
||||
RCT2_GLOBAL(0xF1AD28, uint32) = 0;
|
||||
RCT2_GLOBAL(0xF1AD2C, uint32) = 0;
|
||||
edx = (edx >> 16) | (ebp << 16);
|
||||
ebp = RCT2_GLOBAL(0xEE7888, uint32);
|
||||
if ((uint32)ebp >= RCT2_GLOBAL(0xEE7880, uint32)) return 1;
|
||||
//686840 not finished
|
||||
|
||||
//Not a paint struct but something similar
|
||||
paint_struct* ps = RCT2_GLOBAL(0xEE7888, paint_struct*);
|
||||
|
||||
if ((uint32)ps >= RCT2_GLOBAL(0xEE7880, uint32)) return 1;
|
||||
|
||||
ps->image_id = image_id;
|
||||
|
||||
rct_g1_element *g1Element = &RCT2_ADDRESS(RCT2_ADDRESS_G1_ELEMENTS, rct_g1_element)[image_id & 0x7FFFF];
|
||||
|
||||
eax = (eax & 0xFF) + RCT2_GLOBAL(0x9DE568, uint16);
|
||||
ecx = (ecx & 0xFF) + RCT2_GLOBAL(0x9DE56C, uint16);
|
||||
|
||||
int x = ecx - eax;
|
||||
int y = (ecx + eax) / 2 - (edx & 0xFFFF);
|
||||
|
||||
ps->x = x;
|
||||
ps->y = y;
|
||||
|
||||
int left = x + g1Element->x_offset;
|
||||
int bottom = y + g1Element->y_offset;
|
||||
|
||||
int right = left + g1Element->width;
|
||||
int top = bottom + g1Element->height;
|
||||
|
||||
RCT2_GLOBAL(0xF1AD1C, uint16) = left;
|
||||
RCT2_GLOBAL(0xF1AD1E, uint16) = bottom;
|
||||
|
||||
rct_drawpixelinfo* dpi = RCT2_GLOBAL(0x140E9A8, rct_drawpixelinfo*);
|
||||
|
||||
if (right <= dpi->x)return 1;
|
||||
if (top <= dpi->y)return 1;
|
||||
if (left > dpi->x + dpi->width) return 1;
|
||||
if (bottom > dpi->y + dpi->height) return 1;
|
||||
|
||||
RCT2_GLOBAL(0x9DE568, uint16);
|
||||
//686918 not finished
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Litter Paint Setup??
|
||||
* rct2: 0x006736FC
|
||||
|
@ -829,8 +864,8 @@ void sub_0x69E8B0(uint32 eax, uint32 ecx){
|
|||
eax = (eax & 0x1FE0) << 3 | (ecx >> 5);
|
||||
int sprite_idx = RCT2_ADDRESS(0xF1EF60, uint16)[eax];
|
||||
if (sprite_idx == SPRITE_INDEX_NULL) return;
|
||||
|
||||
for (rct_sprite* spr = &g_sprite_list[sprite_idx]; sprite_idx != SPRITE_INDEX_NULL; sprite_idx = spr->unknown.var_02){
|
||||
|
||||
for (rct_sprite* spr = &g_sprite_list[sprite_idx]; sprite_idx != SPRITE_INDEX_NULL; sprite_idx = spr->unknown.next_in_quadrant){
|
||||
spr = &g_sprite_list[sprite_idx];
|
||||
dpi = RCT2_GLOBAL(0x140E9A8, rct_drawpixelinfo*);
|
||||
|
||||
|
|
|
@ -67,7 +67,7 @@ int viewport_interaction_get_item_left(int x, int y, viewport_interaction_info *
|
|||
switch (sprite->unknown.sprite_identifier) {
|
||||
case SPRITE_IDENTIFIER_VEHICLE:
|
||||
vehicle = &(sprite->vehicle);
|
||||
if (vehicle->var_D6 != 255)
|
||||
if (vehicle->ride_subtype != 255)
|
||||
vehicle_set_map_toolbar(vehicle);
|
||||
else
|
||||
info->type = VIEWPORT_INTERACTION_ITEM_NONE;
|
||||
|
|
|
@ -644,7 +644,7 @@ int paint_ride_entry(int flags, int ebx, int ecx, int edx, rct_drawpixelinfo* dp
|
|||
no_positions = *((uint16*)peep_loading_positions);
|
||||
peep_loading_positions += 2;
|
||||
}
|
||||
rideVehicleEntry->var_61 = (uint32)peep_loading_positions;
|
||||
rideVehicleEntry->peep_loading_positions = peep_loading_positions;
|
||||
peep_loading_positions += no_positions;
|
||||
}
|
||||
}
|
||||
|
@ -718,7 +718,7 @@ int paint_ride_entry(int flags, int ebx, int ecx, int edx, rct_drawpixelinfo* dp
|
|||
}
|
||||
rideVehicleEntry->var_02 = 0;
|
||||
rideVehicleEntry->var_03 = 0;
|
||||
rideVehicleEntry->var_61 = 0;
|
||||
rideVehicleEntry->peep_loading_positions = 0;
|
||||
}
|
||||
|
||||
ride_type->var_1AE = 0;
|
||||
|
|
2763
src/peep/peep.c
2763
src/peep/peep.c
File diff suppressed because it is too large
Load Diff
|
@ -209,6 +209,7 @@ enum PEEP_STATE {
|
|||
};
|
||||
|
||||
enum PEEP_ACTION_EVENTS {
|
||||
PEEP_ACTION_CHECK_TIME = 0,
|
||||
// If no food then check watch
|
||||
PEEP_ACTION_EAT_FOOD = 1,
|
||||
PEEP_ACTION_SHAKE_HEAD = 2,
|
||||
|
@ -344,18 +345,21 @@ typedef struct {
|
|||
typedef struct {
|
||||
uint8 sprite_identifier; // 0x00
|
||||
uint8 var_01;
|
||||
uint16 var_02; // 0x02
|
||||
uint16 next_in_quadrant; // 0x02
|
||||
uint16 next; // 0x04
|
||||
uint16 previous; // 0x06
|
||||
uint8 linked_list_type_offset; // 0x08 Valid values are SPRITE_LINKEDLIST_OFFSET_...
|
||||
uint8 var_09; // 0x09
|
||||
// Height from center of sprite to bottom
|
||||
uint8 sprite_height_negative; // 0x09
|
||||
uint16 sprite_index; // 0x0A
|
||||
uint16 var_0C;
|
||||
sint16 x; // 0x0E
|
||||
sint16 y; // 0x10
|
||||
sint16 z; // 0x12
|
||||
uint8 var_14; // 0x14
|
||||
uint8 var_15; // 0x15
|
||||
// Width from center of sprite to edge
|
||||
uint8 sprite_width; // 0x14
|
||||
// Height from center of sprite to top
|
||||
uint8 sprite_height_positive; // 0x15
|
||||
sint16 sprite_left; // 0x16
|
||||
sint16 sprite_top; // 0x18
|
||||
sint16 sprite_right; // 0x1A
|
||||
|
@ -391,12 +395,13 @@ typedef struct {
|
|||
uint8 hunger; // 0x3E
|
||||
uint8 thirst; // 0x3F
|
||||
uint8 bathroom; // 0x40
|
||||
uint8 pad_41[0x2];
|
||||
uint8 var_41;
|
||||
uint8 var_42;
|
||||
uint8 intensity; // 0x43
|
||||
uint8 nausea_tolerance; // 0x44
|
||||
uint8 var_45; // Some sort of flags?
|
||||
money16 paid_on_drink; // 0x46
|
||||
uint8 pad_48[0x10];
|
||||
uint8 var_48[16];
|
||||
uint32 item_extra_flags; // 0x58
|
||||
uint8 photo2_ride_ref; // 0x5C
|
||||
uint8 photo3_ride_ref; // 0x5D
|
||||
|
@ -407,28 +412,34 @@ typedef struct {
|
|||
uint8 current_train; // 0x6A
|
||||
union{
|
||||
struct{
|
||||
uint8 current_car; // 0x6B
|
||||
uint8 current_seat; // 0x6C
|
||||
uint8 current_car; // 0x6B
|
||||
uint8 current_seat; // 0x6C
|
||||
};
|
||||
uint16 time_to_sitdown; //0x6B
|
||||
uint16 time_to_sitdown; //0x6B
|
||||
struct{
|
||||
uint8 time_to_stand; //0x6B
|
||||
uint8 standing_flags; //0x6C
|
||||
};
|
||||
};
|
||||
uint8 var_6D; // 0x6D
|
||||
uint8 var_6E; // 0x6E
|
||||
uint8 action_sprite_type; // 0x6E
|
||||
uint8 var_6F;
|
||||
uint8 var_70;
|
||||
uint8 action_sprite_image_offset; // 0x70
|
||||
uint8 action; // 0x71
|
||||
uint8 action_frame; // 0x72
|
||||
uint8 var_73;
|
||||
uint16 var_74;
|
||||
union {
|
||||
uint16 var_74; // time getting to ride to fix
|
||||
uint16 next_in_queue; // 0x74
|
||||
};
|
||||
uint8 var_76;
|
||||
uint8 pad_77;
|
||||
uint8 var_78;
|
||||
uint8 pad_79;
|
||||
uint16 var_7A; // time waiting in line possibly
|
||||
union{
|
||||
uint8 maze_last_edge; // 0x78
|
||||
uint8 var_78;
|
||||
};
|
||||
uint8 var_79;
|
||||
uint16 time_in_queue; // 0x7A
|
||||
uint8 rides_been_on[32]; // 0x7C
|
||||
// 255 bit bitmap of every ride the peep has been on see
|
||||
// window_peep_rides_update for how to use.
|
||||
|
@ -436,7 +447,7 @@ typedef struct {
|
|||
money32 cash_in_pocket; // 0xA0
|
||||
money32 cash_spent; // 0xA4
|
||||
sint32 time_in_park; // 0xA8
|
||||
uint8 var_AC; // 0xAC
|
||||
sint8 var_AC; // 0xAC
|
||||
uint8 previous_ride; // 0xAD
|
||||
uint16 previous_ride_time_out; // 0xAE
|
||||
rct_peep_thought thoughts[PEEP_MAX_THOUGHTS]; // 0xB0
|
||||
|
@ -454,7 +465,7 @@ typedef struct {
|
|||
uint32 flags; // 0xC8
|
||||
uint32 var_CC;
|
||||
uint8 pad_D0[0x10];
|
||||
uint8 var_E0; // 0xE0
|
||||
uint8 no_action_frame_no; // 0xE0
|
||||
uint8 var_E1;
|
||||
uint8 var_E2; // 0xE2
|
||||
uint8 var_E3;
|
||||
|
@ -479,10 +490,10 @@ typedef struct {
|
|||
uint8 no_of_food; // 0xEC
|
||||
uint8 no_of_drinks; // 0xED
|
||||
uint8 no_of_souvenirs; // 0xEE
|
||||
uint8 pad_EF;
|
||||
uint8 var_EF;
|
||||
uint8 voucher_type; // 0xF0
|
||||
uint8 voucher_arguments; // 0xF1 ride_id or string_offset_id
|
||||
uint8 pad_F2;
|
||||
uint8 var_F2;
|
||||
uint8 var_F3;
|
||||
uint8 var_F4;
|
||||
uint8 days_in_queue; // 0xF5
|
||||
|
@ -490,7 +501,8 @@ typedef struct {
|
|||
uint8 umbrella_colour; // 0xF7
|
||||
uint8 hat_colour; // 0xF8
|
||||
uint8 favourite_ride; // 0xF9
|
||||
uint16 pad_FA;
|
||||
uint8 var_FA;
|
||||
uint8 pad_FB;
|
||||
uint32 item_standard_flags; // 0xFC
|
||||
} rct_peep;
|
||||
|
||||
|
|
|
@ -107,9 +107,9 @@ void game_command_hire_new_staff_member(int* eax, int* ebx, int* ecx, int* edx,
|
|||
move_sprite_to_list((rct_sprite *)newPeep, SPRITE_LINKEDLIST_OFFSET_PEEP);
|
||||
|
||||
newPeep->sprite_identifier = 1;
|
||||
newPeep->var_09 = 0x0F;
|
||||
newPeep->var_15 = 5;
|
||||
newPeep->var_14 = 8;
|
||||
newPeep->sprite_height_negative = 0x0F;
|
||||
newPeep->sprite_height_positive = 5;
|
||||
newPeep->sprite_width = 8;
|
||||
newPeep->sprite_direction = 0;
|
||||
|
||||
sprite_move(_ax, *ecx, _dx, (rct_sprite*)newPeep);
|
||||
|
@ -122,9 +122,9 @@ void game_command_hire_new_staff_member(int* eax, int* ebx, int* ecx, int* edx,
|
|||
newPeep->var_45 = 0;
|
||||
newPeep->action = 0xFF;
|
||||
newPeep->var_6D = 0;
|
||||
newPeep->var_70 = 0;
|
||||
newPeep->var_E0 = 0;
|
||||
newPeep->var_6E = 0;
|
||||
newPeep->action_sprite_image_offset = 0;
|
||||
newPeep->no_action_frame_no = 0;
|
||||
newPeep->action_sprite_type = 0;
|
||||
newPeep->var_C4 = 0;
|
||||
newPeep->type = PEEP_TYPE_STAFF;
|
||||
newPeep->var_2A = 0;
|
||||
|
@ -176,9 +176,9 @@ void game_command_hire_new_staff_member(int* eax, int* ebx, int* ecx, int* edx,
|
|||
newPeep->sprite_type = _eax;
|
||||
|
||||
_edx = RCT2_ADDRESS(0x0098270C, uint32)[_eax * 2];
|
||||
newPeep->var_14 = *((uint8*)_edx);
|
||||
newPeep->var_09 = *((uint8*)(_edx + 1));
|
||||
newPeep->var_15 = *((uint8*)(_edx + 2));
|
||||
newPeep->sprite_width = *((uint8*)_edx);
|
||||
newPeep->sprite_height_negative = *((uint8*)(_edx + 1));
|
||||
newPeep->sprite_height_positive = *((uint8*)(_edx + 2));
|
||||
|
||||
sprite_move( newPeep->x, newPeep->y, newPeep->z, (rct_sprite*)newPeep);
|
||||
invalidate_sprite((rct_sprite*)newPeep);
|
||||
|
|
|
@ -40,6 +40,13 @@ enum STAFF_TYPE {
|
|||
STAFF_TYPE_ENTERTAINER
|
||||
};
|
||||
|
||||
enum STAFF_ORDERS{
|
||||
STAFF_ORDERS_SWEEPING = (1 << 0),
|
||||
STAFF_ORDERS_WATER_FLOWERS = (1 << 1),
|
||||
STAFF_ORDERS_EMPTY_BINS = (1 << 2),
|
||||
STAFF_ORDERS_MOWING = (1 << 3)
|
||||
};
|
||||
|
||||
void game_command_update_staff_colour(int *eax, int *ebx, int *ecx, int *edx, int *esi, int *edi, int *ebp);
|
||||
void game_command_hire_new_staff_member(int *eax, int *ebx, int *ecx, int *edx, int *esi, int *edi, int *ebp);
|
||||
|
||||
|
|
|
@ -1884,7 +1884,7 @@ void ride_measurement_update(rct_ride_measurement *measurement)
|
|||
return;
|
||||
|
||||
measurement->flags &= ~RIDE_MEASUREMENT_FLAG_UNLOADING;
|
||||
if (measurement->var_0B == vehicle->var_4B)
|
||||
if (measurement->current_station == vehicle->current_station)
|
||||
measurement->current_item = 0;
|
||||
}
|
||||
|
||||
|
@ -1968,7 +1968,7 @@ void ride_measurements_update()
|
|||
vehicle = &(g_sprite_list[spriteIndex].vehicle);
|
||||
if (vehicle->status == VEHICLE_STATUS_DEPARTING || vehicle->status == VEHICLE_STATUS_STOPPING) {
|
||||
measurement->vehicle_index = j;
|
||||
measurement->var_0B = vehicle->var_4B;
|
||||
measurement->current_station = vehicle->current_station;
|
||||
measurement->flags |= RIDE_MEASUREMENT_FLAG_RUNNING;
|
||||
measurement->flags &= ~RIDE_MEASUREMENT_FLAG_UNLOADING;
|
||||
ride_measurement_update(measurement);
|
||||
|
|
|
@ -82,12 +82,14 @@ typedef struct{
|
|||
uint32 var_4C; // 0x4C , 0x66
|
||||
uint32 no_vehicle_images; // 0x50 , 0x6A
|
||||
uint8 no_seating_rows; // 0x54 , 0x6E
|
||||
uint8 pad_55[0x7];
|
||||
uint8 pad_55[0x5];
|
||||
uint8 var_5A; // 0x5A , 0x74
|
||||
uint8 pad_5B; // 0x5B , 0x75
|
||||
uint8 var_5C; // 0x5C , 0x76
|
||||
uint8 var_5D; // 0x5D , 0x77
|
||||
uint8 pad_5E[0x2];
|
||||
uint8 var_60; // 0x60 , 0x7A
|
||||
uint32 var_61; // 0x61 , 0x7B
|
||||
uint8* peep_loading_positions; // 0x61 , 0x7B
|
||||
} rct_ride_type_vehicle;
|
||||
|
||||
/**
|
||||
|
@ -103,12 +105,13 @@ typedef struct {
|
|||
uint8 var_00C;
|
||||
uint8 var_00D;
|
||||
uint8 var_00E;
|
||||
uint8 var_00F;
|
||||
uint8 var_010;
|
||||
uint8 min_cars_in_train; // 0x00F
|
||||
uint8 max_cars_in_train; // 0x010
|
||||
uint8 var_011;
|
||||
uint8 var_012;
|
||||
uint8 var_013;
|
||||
uint8 pad_014[0x6];
|
||||
uint8 var_014;
|
||||
uint8 pad_015[0x5];
|
||||
rct_ride_type_vehicle vehicles[4]; // 0x1A
|
||||
uint32 var_1AE;
|
||||
sint8 excitement_multipler; // 0x1B2
|
||||
|
@ -148,7 +151,8 @@ typedef struct {
|
|||
uint8 var_066[4];
|
||||
uint16 entrances[4]; // 0x06A
|
||||
uint16 exits[4]; // 0x072
|
||||
uint8 pad_07A[0x0C];
|
||||
uint16 first_peep_in_queue[4]; // 0x07A
|
||||
uint8 pad_082[4];
|
||||
uint16 vehicles[32]; // 0x086 Points to the first car in the train
|
||||
uint8 depart_flags; // 0x0C6
|
||||
|
||||
|
@ -224,7 +228,7 @@ typedef struct {
|
|||
uint8 satisfaction_time_out; // 0x14B
|
||||
uint8 satisfaction_next; // 0x14C
|
||||
// Various flags stating whether a window needs to be refreshed
|
||||
uint8 window_invalidate_flags;
|
||||
uint8 window_invalidate_flags; // 0x14D
|
||||
uint8 pad_14E[0x02];
|
||||
uint32 total_customers; // 0x150
|
||||
money32 total_profit; // 0x154
|
||||
|
@ -238,7 +242,9 @@ typedef struct {
|
|||
uint16 slide_peep; // 0x15E
|
||||
uint16 maze_tiles; // 0x15E
|
||||
};
|
||||
uint8 pad_160[0x16];
|
||||
uint8 pad_160[0xE];
|
||||
uint8 slide_peep_t_shirt_colour;// 0x16E
|
||||
uint8 pad_16F[0x7];
|
||||
uint8 var_176;
|
||||
uint8 pad_177[0x9];
|
||||
sint16 build_date; // 0x180
|
||||
|
@ -314,7 +320,7 @@ typedef struct {
|
|||
uint16 num_items; // 0x0006
|
||||
uint16 current_item; // 0x0008
|
||||
uint8 vehicle_index; // 0x000A
|
||||
uint8 var_0B;
|
||||
uint8 current_station; // 0x000B
|
||||
sint8 vertical[RIDE_MEASUREMENT_MAX_ITEMS]; // 0x000C
|
||||
sint8 lateral[RIDE_MEASUREMENT_MAX_ITEMS]; // 0x12CC
|
||||
uint8 velocity[RIDE_MEASUREMENT_MAX_ITEMS]; // 0x258C
|
||||
|
@ -363,7 +369,7 @@ enum {
|
|||
RIDE_TYPE_MINI_SUSPENDED_COASTER,
|
||||
RIDE_TYPE_BUMPER_BOATS,
|
||||
RIDE_TYPE_WOODEN_WILD_MOUSE,
|
||||
RIDE_TYPE_STEEPLECHASE,
|
||||
RIDE_TYPE_STEEPLECHASE = 10,
|
||||
RIDE_TYPE_CAR_RIDE,
|
||||
RIDE_TYPE_LAUNCHED_FREEFALL,
|
||||
RIDE_TYPE_BOBSLEIGH_COASTER,
|
||||
|
@ -373,7 +379,7 @@ enum {
|
|||
RIDE_TYPE_MINE_TRAIN_COASTER,
|
||||
RIDE_TYPE_CHAIRLIFT,
|
||||
RIDE_TYPE_CORKSCREW_ROLLER_COASTER,
|
||||
RIDE_TYPE_MAZE,
|
||||
RIDE_TYPE_MAZE = 20,
|
||||
RIDE_TYPE_SPIRAL_SLIDE,
|
||||
RIDE_TYPE_GO_KARTS,
|
||||
RIDE_TYPE_LOG_FLUME,
|
||||
|
@ -383,7 +389,7 @@ enum {
|
|||
RIDE_TYPE_SWINGING_INVERTER_SHIP,
|
||||
RIDE_TYPE_FOOD_STALL,
|
||||
RIDE_TYPE_1D,
|
||||
RIDE_TYPE_DRINK_STALL,
|
||||
RIDE_TYPE_DRINK_STALL = 30,
|
||||
RIDE_TYPE_1F,
|
||||
RIDE_TYPE_SHOP,
|
||||
RIDE_TYPE_MERRY_GO_ROUND,
|
||||
|
@ -393,7 +399,7 @@ enum {
|
|||
RIDE_TYPE_FERRIS_WHEEL,
|
||||
RIDE_TYPE_MOTION_SIMULATOR,
|
||||
RIDE_TYPE_3D_CINEMA,
|
||||
RIDE_TYPE_TOP_SPIN,
|
||||
RIDE_TYPE_TOP_SPIN = 40,
|
||||
RIDE_TYPE_SPACE_RINGS,
|
||||
RIDE_TYPE_REVERSE_FREEFALL_COASTER,
|
||||
RIDE_TYPE_ELEVATOR,
|
||||
|
@ -403,7 +409,7 @@ enum {
|
|||
RIDE_TYPE_HAUNTED_HOUSE,
|
||||
RIDE_TYPE_FIRST_AID,
|
||||
RIDE_TYPE_CIRCUS_SHOW,
|
||||
RIDE_TYPE_GHOST_TRAIN,
|
||||
RIDE_TYPE_GHOST_TRAIN = 50,
|
||||
RIDE_TYPE_TWISTER_ROLLER_COASTER,
|
||||
RIDE_TYPE_WOODEN_ROLLER_COASTER,
|
||||
RIDE_TYPE_SIDE_FRICTION_ROLLER_COASTER,
|
||||
|
@ -413,7 +419,7 @@ enum {
|
|||
RIDE_TYPE_FLYING_ROLLER_COASTER,
|
||||
RIDE_TYPE_3A,
|
||||
RIDE_TYPE_VIRGINIA_REEL,
|
||||
RIDE_TYPE_SPLASH_BOATS,
|
||||
RIDE_TYPE_SPLASH_BOATS = 60,
|
||||
RIDE_TYPE_MINI_HELICOPTERS,
|
||||
RIDE_TYPE_LAY_DOWN_ROLLER_COASTER,
|
||||
RIDE_TYPE_SUSPENDED_MONORAIL,
|
||||
|
@ -423,7 +429,7 @@ enum {
|
|||
RIDE_TYPE_MINI_GOLF,
|
||||
RIDE_TYPE_GIGA_COASTER,
|
||||
RIDE_TYPE_ROTO_DROP,
|
||||
RIDE_TYPE_FLYING_SAUCERS,
|
||||
RIDE_TYPE_FLYING_SAUCERS = 70,
|
||||
RIDE_TYPE_CROOKED_HOUSE,
|
||||
RIDE_TYPE_MONORAIL_CYCLES,
|
||||
RIDE_TYPE_COMPACT_INVERTED_COASTER,
|
||||
|
@ -433,7 +439,7 @@ enum {
|
|||
RIDE_TYPE_MAGIC_CARPET,
|
||||
RIDE_TYPE_SUBMARINE_RIDE,
|
||||
RIDE_TYPE_RIVER_RAFTS,
|
||||
RIDE_TYPE_50,
|
||||
RIDE_TYPE_50 = 80,
|
||||
RIDE_TYPE_ENTERPRISE,
|
||||
RIDE_TYPE_52,
|
||||
RIDE_TYPE_53,
|
||||
|
@ -443,7 +449,7 @@ enum {
|
|||
RIDE_TYPE_MINI_ROLLER_COASTER,
|
||||
RIDE_TYPE_MINE_RIDE,
|
||||
RIDE_TYPE_LIM_LAUNCHED_ROLLER_COASTER,
|
||||
RIDE_TYPE_90
|
||||
RIDE_TYPE_90 = 90
|
||||
};
|
||||
|
||||
enum {
|
||||
|
@ -737,7 +743,8 @@ int sub_6C683D(int* x, int* y, int z, int direction, int type, int esi, int edi,
|
|||
void ride_set_map_tooltip(rct_map_element *mapElement);
|
||||
int ride_music_params_update(sint16 x, sint16 y, sint16 z, uint8 rideIndex, uint16 sampleRate, uint32 position, uint8 *tuneId);
|
||||
void ride_music_update_final();
|
||||
|
||||
rct_map_element *ride_get_station_start_track_element(rct_ride *ride, int stationIndex);
|
||||
rct_map_element *ride_get_station_exit_element(rct_ride *ride, int x, int y, int z);
|
||||
void ride_set_status(int rideIndex, int status);
|
||||
void game_command_set_ride_status(int *eax, int *ebx, int *ecx, int *edx, int *esi, int *edi, int *ebp);
|
||||
void ride_set_name(int rideIndex, const char *name);
|
||||
|
|
|
@ -234,9 +234,9 @@ static void ride_race_init_vehicle_speeds(rct_ride *ride)
|
|||
vehicle = &g_sprite_list[ride->vehicles[i]].vehicle;
|
||||
vehicle->var_48 &= ~(1 << 6);
|
||||
|
||||
rideEntry = GET_RIDE_ENTRY(vehicle->var_D6);
|
||||
rideEntry = GET_RIDE_ENTRY(vehicle->ride_subtype);
|
||||
|
||||
vehicle->speed = (scenario_rand() & 16) - 8 + rideEntry->vehicles[vehicle->var_31].var_5C;
|
||||
vehicle->speed = (scenario_rand() & 16) - 8 + rideEntry->vehicles[vehicle->vehicle_type].var_5C;
|
||||
|
||||
if (vehicle->num_peeps != 0) {
|
||||
rct_peep *peep = &g_sprite_list[vehicle->peep[0]].peep;
|
||||
|
|
|
@ -99,9 +99,8 @@ void vehicle_update_sound_params(rct_vehicle* vehicle)
|
|||
|
||||
sint32 v19 = vehicle->velocity;
|
||||
|
||||
int testaddr = (vehicle->var_31 * 0x65);
|
||||
testaddr += (int)RCT2_ADDRESS(0x009ACFA4, rct_ride_type*)[vehicle->var_D6];
|
||||
uint8 test = ((uint8*)testaddr)[0x74];
|
||||
rct_ride_type* ride_type = GET_RIDE_ENTRY(vehicle->ride_subtype);
|
||||
uint8 test = ride_type->vehicles[vehicle->vehicle_type].var_5A;
|
||||
|
||||
if (test & 1) {
|
||||
v19 *= 2;
|
||||
|
@ -633,4 +632,9 @@ rct_vehicle *vehicle_get_head(rct_vehicle *vehicle)
|
|||
}
|
||||
|
||||
return vehicle;
|
||||
}
|
||||
|
||||
int vehicle_is_used_in_pairs(rct_vehicle *vehicle)
|
||||
{
|
||||
return vehicle->num_seats & VEHICLE_SEAT_PAIR_FLAG;
|
||||
}
|
|
@ -26,31 +26,41 @@
|
|||
typedef struct {
|
||||
uint8 sprite_identifier; // 0x00
|
||||
uint8 var_01;
|
||||
uint8 pad_02[0x02];
|
||||
uint16 next_in_quadrant; // 0x02
|
||||
uint16 next; // 0x04
|
||||
uint16 previous; // 0x06
|
||||
uint8 linked_list_type_offset; // 0x08 Valid values are SPRITE_LINKEDLIST_OFFSET_...
|
||||
uint8 pad_09;
|
||||
// Height from center of sprite to bottom
|
||||
uint8 sprite_height_negative; // 0x09
|
||||
uint16 sprite_index; // 0x0A
|
||||
uint8 pad_0C[2];
|
||||
sint16 x; // 0x0E
|
||||
sint16 y; // 0x10
|
||||
sint16 z; // 0x12
|
||||
uint8 pad_14[0x02];
|
||||
// Width from center of sprite to edge
|
||||
uint8 sprite_width; // 0x14
|
||||
// Height from center of sprite to top
|
||||
uint8 sprite_height_positive; // 0x15
|
||||
sint16 sprite_left; // 0x16
|
||||
sint16 sprite_top; // 0x18
|
||||
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
|
||||
uint8 var_31;
|
||||
uint8 vehicle_type; // 0x31
|
||||
uint8 pad_32[0x02];
|
||||
uint16 var_34;
|
||||
sint16 var_36;
|
||||
uint8 pad_38[0x06];
|
||||
//x related
|
||||
uint16 var_38;
|
||||
// y related
|
||||
uint16 var_3A;
|
||||
// z related
|
||||
uint16 var_3C;
|
||||
uint16 next_vehicle_on_train; // 0x3E
|
||||
uint16 prev_vehicle_on_train; // 0x40
|
||||
uint16 pad_42;
|
||||
|
@ -58,14 +68,16 @@ typedef struct {
|
|||
uint16 var_46;
|
||||
uint16 var_48;
|
||||
uint8 pad_4A;
|
||||
uint8 var_4B;
|
||||
uint8 current_station; // 0x4B
|
||||
uint8 pad_4C[0x4];
|
||||
uint8 status; // 0x50
|
||||
uint8 var_51;
|
||||
uint16 peep[32]; // 0x52
|
||||
uint8 pad_92[0x21];
|
||||
uint8 peep_tshirt_colours[32]; // 0x92
|
||||
uint8 num_seats; // 0xB2
|
||||
uint8 num_peeps; // 0xB3
|
||||
uint8 pad_B4[0x07];
|
||||
uint8 next_free_seat; // 0xB4
|
||||
uint8 pad_B5[0x06];
|
||||
uint8 sound1_id; // 0xBB
|
||||
uint8 sound1_volume; // 0xBC
|
||||
uint8 sound2_id; // 0xBD
|
||||
|
@ -78,10 +90,11 @@ typedef struct {
|
|||
uint8 var_CD;
|
||||
union {
|
||||
uint8 var_CE;
|
||||
uint8 num_laps; // 0xCE
|
||||
uint8 num_laps; // 0xCE
|
||||
};
|
||||
uint8 pad_CF[0x07];
|
||||
uint8 var_D6;
|
||||
uint8 pad_CF[0x06];
|
||||
uint8 var_D5;
|
||||
uint8 ride_subtype; // 0xD6
|
||||
} rct_vehicle;
|
||||
|
||||
enum {
|
||||
|
@ -118,13 +131,16 @@ enum {
|
|||
VEHICLE_STATUS_STOPPED_BY_BLOCK_BRAKES
|
||||
};
|
||||
|
||||
#define VEHICLE_SEAT_PAIR_FLAG 0x80
|
||||
#define VEHICLE_SEAT_NUM_MASK 0x7F
|
||||
|
||||
void vehicle_update_all();
|
||||
int sub_6BC2F3(rct_vehicle* vehicle);
|
||||
void sub_6BB9FF(rct_vehicle* vehicle);
|
||||
void vehicle_sounds_update();
|
||||
void vehicle_get_g_forces(rct_vehicle *vehicle, int *verticalG, int *lateralG);
|
||||
void vehicle_set_map_toolbar(rct_vehicle *vehicle);
|
||||
|
||||
int vehicle_is_used_in_pairs(rct_vehicle *vehicle);
|
||||
rct_vehicle *vehicle_get_head(rct_vehicle *vehicle);
|
||||
|
||||
/** Helper macro until rides are stored in this module. */
|
||||
|
|
|
@ -266,7 +266,6 @@ static void DrawOpenRCT2(int x, int y)
|
|||
void game_handle_input();
|
||||
void title_update()
|
||||
{
|
||||
|
||||
screenshot_check();
|
||||
title_handle_keyboard_input();
|
||||
|
||||
|
|
|
@ -1235,8 +1235,8 @@ void window_guest_overview_tool_down(){
|
|||
peep_window_state_update(peep);
|
||||
peep->action = 0xFF;
|
||||
peep->var_6D = 0;
|
||||
peep->var_70 = 0;
|
||||
peep->var_6E = 0xFF;
|
||||
peep->action_sprite_image_offset = 0;
|
||||
peep->action_sprite_type = 0xFF;
|
||||
peep->var_C4 = 0;
|
||||
|
||||
peep->happiness_growth_rate -= 10;
|
||||
|
@ -1268,8 +1268,8 @@ void window_guest_overview_tool_abort(){
|
|||
peep_window_state_update(peep);
|
||||
peep->action = 0xFF;
|
||||
peep->var_6D = 0;
|
||||
peep->var_70 = 0;
|
||||
peep->var_6E = 0;
|
||||
peep->action_sprite_image_offset = 0;
|
||||
peep->action_sprite_type = 0;
|
||||
peep->var_C4 = 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -2070,7 +2070,7 @@ static rct_string_id window_ride_get_status_vehicle(rct_window *w, void *argumen
|
|||
stringId += 23;
|
||||
|
||||
RCT2_GLOBAL((int)arguments + 4, uint16) = RideNameConvention[ride->type].station_name;
|
||||
RCT2_GLOBAL((int)arguments + 6, uint16) = vehicle->var_4B + 1;
|
||||
RCT2_GLOBAL((int)arguments + 6, uint16) = vehicle->current_station + 1;
|
||||
if (ride->num_stations > 1)
|
||||
RCT2_GLOBAL((int)arguments + 4, uint16) += 6;
|
||||
|
||||
|
@ -2390,7 +2390,7 @@ static void window_ride_vehicle_dropdown()
|
|||
break;
|
||||
case WIDX_VEHICLE_CARS_PER_TRAIN_DROPDOWN:
|
||||
RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TITLE, rct_string_id) = 1019;
|
||||
game_do_command(0, (1 << 8) | 1, 0, ((rideEntry->var_00F + dropdownIndex) << 8) | w->number, GAME_COMMAND_9, 0, 0);
|
||||
game_do_command(0, (1 << 8) | 1, 0, ((rideEntry->min_cars_in_train + dropdownIndex) << 8) | w->number, GAME_COMMAND_9, 0, 0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -2461,7 +2461,7 @@ static void window_ride_vehicle_invalidate()
|
|||
}
|
||||
|
||||
// Cars per train
|
||||
if (rideEntry->var_012 + 1 < rideEntry->var_010) {
|
||||
if (rideEntry->var_012 + 1 < rideEntry->max_cars_in_train) {
|
||||
window_ride_vehicle_widgets[WIDX_VEHICLE_CARS_PER_TRAIN].image = carsPerTrain > 1 ? 1023 : 1022;
|
||||
window_ride_vehicle_widgets[WIDX_VEHICLE_CARS_PER_TRAIN].type = WWT_DROPDOWN;
|
||||
window_ride_vehicle_widgets[WIDX_VEHICLE_CARS_PER_TRAIN_DROPDOWN].type = WWT_DROPDOWN_BUTTON;
|
||||
|
@ -3739,7 +3739,7 @@ static void window_ride_colour_mousedown(int widgetIndex, rct_window *w, rct_wid
|
|||
dropdownWidget->bottom - dropdownWidget->top + 1,
|
||||
w->colours[1],
|
||||
0,
|
||||
rideEntry->var_010 > 1 ? 3 : 2,
|
||||
rideEntry->max_cars_in_train > 1 ? 3 : 2,
|
||||
widget->right - dropdownWidget->left
|
||||
);
|
||||
|
||||
|
|
|
@ -1158,8 +1158,8 @@ void window_staff_overview_tool_down(){
|
|||
peep_window_state_update(peep);
|
||||
peep->action = 0xFF;
|
||||
peep->var_6D = 0;
|
||||
peep->var_70 = 0;
|
||||
peep->var_6E = 0;
|
||||
peep->action_sprite_image_offset = 0;
|
||||
peep->action_sprite_type = 0;
|
||||
peep->var_C4 = 0;
|
||||
|
||||
tool_cancel();
|
||||
|
@ -1196,8 +1196,8 @@ void window_staff_overview_tool_abort(){
|
|||
peep_window_state_update(peep);
|
||||
peep->action = 0xFF;
|
||||
peep->var_6D = 0;
|
||||
peep->var_70 = 0;
|
||||
peep->var_6E = 0;
|
||||
peep->action_sprite_image_offset = 0;
|
||||
peep->action_sprite_type = 0;
|
||||
peep->var_C4 = 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -39,8 +39,13 @@ typedef struct {
|
|||
|
||||
typedef struct {
|
||||
uint8 type; //4
|
||||
uint8 sequence; //5
|
||||
uint8 colour; //6
|
||||
union{
|
||||
struct{
|
||||
uint8 sequence; //5
|
||||
uint8 colour; //6
|
||||
};
|
||||
uint16 maze_entry; // 5
|
||||
};
|
||||
uint8 ride_index; //7
|
||||
} rct_map_element_track_properties;
|
||||
|
||||
|
|
|
@ -194,7 +194,7 @@ static bool map_animation_invalidate_small_scenery(int x, int y, int baseZ)
|
|||
int y2 = y - TileDirectionDelta[direction].y;
|
||||
|
||||
uint16 spriteIdx = RCT2_ADDRESS(0x00F1EF60, uint16)[((x2 & 0x1FE0) << 3) | (y2 >> 5)];
|
||||
for (; spriteIdx != 0xFFFF; spriteIdx = sprite->unknown.var_02) {
|
||||
for (; spriteIdx != 0xFFFF; spriteIdx = sprite->unknown.next_in_quadrant) {
|
||||
sprite = &g_sprite_list[spriteIdx];
|
||||
if (sprite->unknown.linked_list_type_offset != SPRITE_LINKEDLIST_OFFSET_PEEP)
|
||||
continue;
|
||||
|
@ -207,9 +207,9 @@ static bool map_animation_invalidate_small_scenery(int x, int y, int baseZ)
|
|||
if (peep->action < PEEP_ACTION_NONE_1)
|
||||
continue;
|
||||
|
||||
peep->action = 0;
|
||||
peep->action = PEEP_ACTION_CHECK_TIME;
|
||||
peep->action_frame = 0;
|
||||
peep->var_70 = 0;
|
||||
peep->action_sprite_image_offset = 0;
|
||||
sub_693B58(peep);
|
||||
RCT2_CALLPROC_X(0x006EC53F, 0, 0, 0, 0, (int)peep, 0, 0);
|
||||
break;
|
||||
|
|
|
@ -31,7 +31,7 @@ rct_sprite* g_sprite_list = RCT2_ADDRESS(RCT2_ADDRESS_SPRITE_LIST, rct_sprite);
|
|||
*
|
||||
* rct2: 0x006736C7
|
||||
*/
|
||||
void create_balloon(int x, int y, int z, int colour)
|
||||
void create_balloon(int x, int y, int z, int colour, uint8 bl)
|
||||
{
|
||||
rct_sprite* sprite = create_sprite(2);
|
||||
if (sprite != NULL)
|
||||
|
@ -44,7 +44,7 @@ void create_balloon(int x, int y, int z, int colour)
|
|||
sprite->balloon.misc_identifier = SPRITE_MISC_BALLOON;
|
||||
sprite->balloon.var_26 = 0;
|
||||
sprite->balloon.colour = colour;
|
||||
sprite->balloon.popped = 0;
|
||||
sprite->balloon.popped = bl;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -288,7 +288,7 @@ void reset_0x69EBE4(){
|
|||
}
|
||||
uint16 ax = RCT2_ADDRESS(0xF1EF60,uint16)[edi];
|
||||
RCT2_ADDRESS(0xF1EF60,uint16)[edi] = spr->unknown.sprite_index;
|
||||
spr->unknown.var_02 = ax;
|
||||
spr->unknown.next_in_quadrant = ax;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -325,14 +325,14 @@ rct_sprite *create_sprite(uint8 bl)
|
|||
sprite->y = SPRITE_LOCATION_NULL;
|
||||
sprite->z = 0;
|
||||
sprite->name_string_idx = 0;
|
||||
sprite->var_14 = 0x10;
|
||||
sprite->var_09 = 0x14;
|
||||
sprite->var_15 = 0x8;
|
||||
sprite->pad_0C[0] = 0x0;
|
||||
sprite->sprite_width = 0x10;
|
||||
sprite->sprite_height_negative = 0x14;
|
||||
sprite->sprite_height_positive = 0x8;
|
||||
sprite->var_0C = 0;
|
||||
sprite->sprite_left = SPRITE_LOCATION_NULL;
|
||||
|
||||
sprite->var_02 = RCT2_GLOBAL(0xF3EF60, uint16);
|
||||
RCT2_GLOBAL(0xF3EF60, uint16) = sprite->sprite_index;
|
||||
sprite->next_in_quadrant = RCT2_ADDRESS(0xF1EF60, uint16)[0x10000];
|
||||
RCT2_ADDRESS(0xF1EF60, uint16)[0x10000] = sprite->sprite_index;
|
||||
|
||||
return (rct_sprite*)sprite;
|
||||
}
|
||||
|
@ -470,14 +470,14 @@ void sprite_move(int x, int y, int z, rct_sprite* sprite){
|
|||
uint16* sprite_idx = &RCT2_ADDRESS(0xF1EF60, uint16)[current_position];
|
||||
rct_sprite* sprite2 = &g_sprite_list[*sprite_idx];
|
||||
while (sprite != sprite2){
|
||||
sprite_idx = &sprite2->unknown.var_02;
|
||||
sprite_idx = &sprite2->unknown.next_in_quadrant;
|
||||
sprite2 = &g_sprite_list[*sprite_idx];
|
||||
}
|
||||
*sprite_idx = sprite->unknown.var_02;
|
||||
*sprite_idx = sprite->unknown.next_in_quadrant;
|
||||
|
||||
int temp_sprite_idx = RCT2_ADDRESS(0xF1EF60, uint16)[new_position];
|
||||
RCT2_ADDRESS(0xF1EF60, uint16)[new_position] = sprite->unknown.sprite_index;
|
||||
sprite->unknown.var_02 = temp_sprite_idx;
|
||||
sprite->unknown.next_in_quadrant = temp_sprite_idx;
|
||||
}
|
||||
|
||||
if (x == 0x8000){
|
||||
|
@ -507,10 +507,10 @@ void sprite_move(int x, int y, int z, rct_sprite* sprite){
|
|||
break;
|
||||
}
|
||||
|
||||
sprite->unknown.sprite_left = new_x - sprite->unknown.var_14;
|
||||
sprite->unknown.sprite_right = new_x + sprite->unknown.var_14;
|
||||
sprite->unknown.sprite_top = new_y - sprite->unknown.var_09;
|
||||
sprite->unknown.sprite_bottom = new_y + sprite->unknown.var_15;
|
||||
sprite->unknown.sprite_left = new_x - sprite->unknown.sprite_width;
|
||||
sprite->unknown.sprite_right = new_x + sprite->unknown.sprite_width;
|
||||
sprite->unknown.sprite_top = new_y - sprite->unknown.sprite_height_negative;
|
||||
sprite->unknown.sprite_bottom = new_y + sprite->unknown.sprite_height_positive;
|
||||
sprite->unknown.x = x;
|
||||
sprite->unknown.y = y;
|
||||
sprite->unknown.z = z;
|
||||
|
|
|
@ -47,18 +47,21 @@ typedef enum {
|
|||
typedef struct {
|
||||
uint8 sprite_identifier; // 0x00
|
||||
uint8 misc_identifier; // 0x01
|
||||
uint16 var_02;
|
||||
uint16 next_in_quadrant; // 0x02
|
||||
uint16 next; // 0x04
|
||||
uint16 previous; // 0x06
|
||||
uint8 linked_list_type_offset; // 0x08 Valid values are SPRITE_LINKEDLIST_OFFSET_...
|
||||
uint8 var_09;
|
||||
// Height from center of sprite to bottom
|
||||
uint8 sprite_height_negative; // 0x09
|
||||
uint16 sprite_index; // 0x0A
|
||||
uint8 pad_0C[2];
|
||||
uint16 var_0C;
|
||||
sint16 x; // 0x0E
|
||||
sint16 y; // 0x10
|
||||
sint16 z; // 0x12
|
||||
uint8 var_14; // 0x14
|
||||
uint8 var_15; // 0x15
|
||||
// Width from center of sprite to edge
|
||||
uint8 sprite_width; // 0x14
|
||||
// Height from center of sprite to top
|
||||
uint8 sprite_height_positive; // 0x15
|
||||
sint16 sprite_left; // 0x16
|
||||
sint16 sprite_top; // 0x18
|
||||
sint16 sprite_right; // 0x1A
|
||||
|
@ -75,20 +78,24 @@ typedef struct {
|
|||
typedef struct {
|
||||
uint8 sprite_identifier; // 0x00
|
||||
uint8 var_01; // 0x01
|
||||
uint16 var_02; // 0x02
|
||||
uint16 next_in_quadrant; // 0x02
|
||||
uint16 next; // 0x04
|
||||
uint16 previous; // 0x06
|
||||
uint8 linked_list_type_offset; // 0x08 Valid values are SPRITE_LINKEDLIST_OFFSET_...
|
||||
uint8 pad_09;
|
||||
uint16 sprite_index; // 0x0A
|
||||
uint8 pad_0B[0x19];
|
||||
uint16 pad_0C;
|
||||
sint16 x; // 0x0E
|
||||
sint16 y; // 0x10
|
||||
sint16 z; // 0x12
|
||||
uint8 pad_14[0x10];
|
||||
uint32 var_24;
|
||||
} rct_litter;
|
||||
|
||||
typedef struct {
|
||||
uint8 sprite_identifier; // 0x00
|
||||
uint8 misc_identifier; // 0x01
|
||||
uint16 var_02; // 0x02
|
||||
uint16 next_in_quadrant; // 0x02
|
||||
uint16 next; // 0x04
|
||||
uint16 previous; // 0x06
|
||||
uint8 linked_list_type_offset; // 0x08 Valid values are SPRITE_LINKEDLIST_OFFSET_...
|
||||
|
@ -115,7 +122,7 @@ typedef struct {
|
|||
typedef struct {
|
||||
uint8 sprite_identifier; // 0x00
|
||||
uint8 misc_identifier; // 0x01
|
||||
uint16 var_02; // 0x02
|
||||
uint16 next_in_quadrant; // 0x02
|
||||
uint16 next; // 0x04
|
||||
uint16 previous; // 0x06
|
||||
uint8 linked_list_type_offset; // 0x08 Valid values are SPRITE_LINKEDLIST_OFFSET_...
|
||||
|
@ -137,7 +144,7 @@ typedef struct {
|
|||
typedef struct {
|
||||
uint8 sprite_identifier; // 0x00
|
||||
uint8 misc_identifier; // 0x01
|
||||
uint16 var_02; // 0x02
|
||||
uint16 next_in_quadrant; // 0x02
|
||||
uint16 next; // 0x04
|
||||
uint16 previous; // 0x06
|
||||
uint8 linked_list_type_offset; // 0x08 Valid values are SPRITE_LINKEDLIST_OFFSET_...
|
||||
|
@ -218,7 +225,7 @@ enum {
|
|||
// rct2: 0x010E63BC
|
||||
extern rct_sprite* g_sprite_list;
|
||||
|
||||
void create_balloon(int x, int y, int z, int colour);
|
||||
void create_balloon(int x, int y, int z, int colour, uint8 bl);
|
||||
void create_duck(int targetX, int targetY);
|
||||
rct_sprite *create_sprite(uint8 bl);
|
||||
void reset_sprite_list();
|
||||
|
|
Loading…
Reference in New Issue