1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-01-29 09:44:52 +01:00

Labeled found sprite and peep offsets.

This commit is contained in:
Duncan Frost
2015-02-18 18:27:36 +00:00
parent 63561f396a
commit d11ddc3ec2
9 changed files with 79 additions and 71 deletions

View File

@@ -147,15 +147,15 @@ void sub_693B58(rct_peep* peep){
else{
ebx = RCT2_ADDRESS(0x981D8F, uint8)[peep->action];
}
if (ebx == peep->var_6E)return;
if (ebx == peep->action_sprite_type)return;
invalidate_sprite((rct_sprite*)peep);
peep->var_6E = ebx;
peep->action_sprite_type = ebx;
uint8* edx = RCT2_ADDRESS(0x98270C, uint8*)[peep->sprite_type * 2];
peep->var_14 = edx[ebx * 4];
peep->var_09 = edx[ebx * 4 + 1];
peep->var_15 = edx[ebx * 4 + 2];
peep->sprite_width = edx[ebx * 4];
peep->sprite_height_negative = edx[ebx * 4 + 1];
peep->sprite_height_positive = edx[ebx * 4 + 2];
// This is pointless as nothing will have changed.
invalidate_sprite((rct_sprite*)peep);
}
@@ -249,7 +249,7 @@ void peep_check_cant_find_exit(rct_peep* peep){
* has not yet been reached.
*/
int sub_6939EB(sint16* x, sint16* y, rct_peep* peep){
RCT2_GLOBAL(0xF1AEF0, uint8) = peep->var_70;
RCT2_GLOBAL(0xF1AEF0, uint8) = peep->action_sprite_image_offset;
if (peep->action == 0xFE){
peep->action = 0xFF;
}
@@ -280,25 +280,24 @@ int sub_6939EB(sint16* x, sint16* y, rct_peep* peep){
peep->sprite_direction = direction;
*x = peep->x + RCT2_ADDRESS(0x981D7C, uint16)[direction / 4];
*y = peep->y + RCT2_ADDRESS(0x981D7E, uint16)[direction / 4];
int ebx = peep->var_E0 + 1;
peep->no_action_frame_no++;
uint32* edi = RCT2_ADDRESS(0x982708, uint32*)[peep->sprite_type * 2];
uint8* _edi = (uint8*)(edi[peep->var_6E * 2 + 1]);
if (ebx >= *_edi){
ebx = 0;
uint8* _edi = (uint8*)(edi[peep->action_sprite_type * 2 + 1]);
if (peep->no_action_frame_no >= *_edi){
peep->no_action_frame_no = 0;
}
peep->var_E0 = ebx;
peep->var_70 = _edi[ebx + 1];
peep->action_sprite_image_offset = _edi[peep->no_action_frame_no + 1];
return 1;
}
int* edi = RCT2_ADDRESS(0x982708, uint32*)[peep->sprite_type * 2];
uint8* _edi = (uint8*)(edi[peep->var_6E * 2 + 1]);
uint8* _edi = (uint8*)(edi[peep->action_sprite_type * 2 + 1]);
peep->action_frame++;
int ebx = _edi[peep->action_frame + 1];
// If last frame of action
if (ebx == 0xFF){
peep->var_70 = 0;
peep->action_sprite_image_offset = 0;
peep->action = 0xFF;
sub_693B58(peep);
invalidate_sprite((rct_sprite*)peep);
@@ -306,7 +305,7 @@ int sub_6939EB(sint16* x, sint16* y, rct_peep* peep){
*y = peep->y;
return 1;
}
peep->var_70 = ebx;
peep->action_sprite_image_offset = ebx;
// If not throwing up and not at the frame where sick appears.
if (peep->action != PEEP_ACTION_THROW_UP || peep->action_frame != 15){
@@ -466,7 +465,7 @@ void peep_update_falling(rct_peep* peep){
peep->action = PEEP_ACTION_DROWNING;
peep->action_frame = 0;
peep->var_70 = 0;
peep->action_sprite_image_offset = 0;
sub_693B58(peep);
invalidate_sprite((rct_sprite*)peep);
@@ -601,7 +600,7 @@ void peep_update_sitting(rct_peep* peep){
}
peep->action = PEEP_ACTION_SITTING_EAT_FOOD;
peep->action_frame = 0;
peep->var_70 = 0;
peep->action_sprite_image_offset = 0;
sub_693B58(peep);
invalidate_sprite((rct_sprite*)peep);
return;
@@ -626,7 +625,7 @@ void peep_update_sitting(rct_peep* peep){
peep->action = PEEP_ACTION_SITTING_CHECK_WATCH;
}
peep->action_frame = 0;
peep->var_70 = 0;
peep->action_sprite_image_offset = 0;
sub_693B58(peep);
invalidate_sprite((rct_sprite*)peep);
return;
@@ -683,7 +682,7 @@ static void peep_update_queuing(rct_peep* peep){
// Eat Food/Look at watch
peep->action = PEEP_ACTION_EAT_FOOD;
peep->action_frame = 0;
peep->var_70 = 0;
peep->action_sprite_image_offset = 0;
sub_693B58(peep);
invalidate_sprite((rct_sprite*)peep);
}
@@ -721,7 +720,7 @@ static void peep_update_queuing(rct_peep* peep){
// Eat food/Look at watch
peep->action = PEEP_ACTION_EAT_FOOD;
peep->action_frame = 0;
peep->var_70 = 0;
peep->action_sprite_image_offset = 0;
sub_693B58(peep);
invalidate_sprite((rct_sprite*)peep);
break;
@@ -801,7 +800,7 @@ static void peep_update_watering(rct_peep* peep){
peep->sprite_direction = (peep->var_37 & 3) << 3;
peep->action = PEEP_ACTION_STAFF_WATERING;
peep->action_frame = 0;
peep->var_70 = 0;
peep->action_sprite_image_offset = 0;
sub_693B58(peep);
invalidate_sprite((rct_sprite*)peep);
@@ -853,7 +852,7 @@ static void peep_update_emptying_bin(rct_peep* peep){
peep->sprite_direction = (peep->var_37 & 3) << 3;
peep->action = PEEP_ACTION_STAFF_EMPTY_BIN;
peep->action_frame = 0;
peep->var_70 = 0;
peep->action_sprite_image_offset = 0;
sub_693B58(peep);
invalidate_sprite((rct_sprite*)peep);
@@ -937,7 +936,7 @@ static void peep_update_sweeping(rct_peep* peep){
if (peep->var_37 != 2){
peep->action = PEEP_ACTION_STAFF_SWEEP;
peep->action_frame = 0;
peep->var_70 = 0;
peep->action_sprite_image_offset = 0;
sub_693B58(peep);
invalidate_sprite((rct_sprite*)peep);
return;
@@ -1044,7 +1043,7 @@ static void peep_update_watching(rct_peep* peep){
if ((scenario_rand() & 0xFFFF) <= 1310){
peep->action = PEEP_ACTION_EAT_FOOD;
peep->action_frame = 0;
peep->var_70 = 0;
peep->action_sprite_image_offset = 0;
sub_693B58(peep);
invalidate_sprite((rct_sprite*)peep);
return;
@@ -1054,7 +1053,7 @@ static void peep_update_watching(rct_peep* peep){
if ((scenario_rand() & 0xFFFF) <= 655){
peep->action = PEEP_ACTION_TAKE_PHOTO;
peep->action_frame = 0;
peep->var_70 = 0;
peep->action_sprite_image_offset = 0;
sub_693B58(peep);
invalidate_sprite((rct_sprite*)peep);
return;
@@ -1064,7 +1063,7 @@ static void peep_update_watching(rct_peep* peep){
if ((scenario_rand() & 0xFFFF) <= 655){
peep->action = PEEP_ACTION_WAVE;
peep->action_frame = 0;
peep->var_70 = 0;
peep->action_sprite_image_offset = 0;
sub_693B58(peep);
invalidate_sprite((rct_sprite*)peep);
return;
@@ -1384,7 +1383,7 @@ static void peep_update_buying(rct_peep* peep)
else{
peep->action = PEEP_ACTION_WITHDRAW_MONEY;
peep->action_frame = 0;
peep->var_70 = 0;
peep->action_sprite_image_offset = 0;
sub_693B58(peep);
invalidate_sprite((rct_sprite*)peep);
@@ -1573,7 +1572,7 @@ static void peep_update_walking(rct_peep* peep){
peep->action = PEEP_ACTION_WAVE_2;
peep->action_frame = 0;
peep->var_70 = 0;
peep->action_sprite_image_offset = 0;
sub_693B58(peep);
invalidate_sprite((rct_sprite*)peep);
@@ -1588,7 +1587,7 @@ static void peep_update_walking(rct_peep* peep){
peep->action = PEEP_ACTION_TAKE_PHOTO;
peep->action_frame = 0;
peep->var_70 = 0;
peep->action_sprite_image_offset = 0;
sub_693B58(peep);
invalidate_sprite((rct_sprite*)peep);
@@ -1603,7 +1602,7 @@ static void peep_update_walking(rct_peep* peep){
peep->action = PEEP_ACTION_DRAW_PICTURE;
peep->action_frame = 0;
peep->var_70 = 0;
peep->action_sprite_image_offset = 0;
sub_693B58(peep);
invalidate_sprite((rct_sprite*)peep);
@@ -2213,7 +2212,7 @@ void peep_applause()
if ((peep->state == PEEP_STATE_WALKING || peep->state == PEEP_STATE_QUEUING) && peep->action >= 254) {
peep->action = PEEP_ACTION_CLAP;
peep->action_frame = 0;
peep->var_70 = 0;
peep->action_sprite_image_offset = 0;
sub_693B58(peep);
invalidate_sprite((rct_sprite*)peep);
}
@@ -2668,7 +2667,7 @@ void peep_insert_new_thought(rct_peep *peep, uint8 thought_type, uint8 thought_a
if (action != 0xFF && peep->action >= 254){
peep->action = action;
peep->action_frame = 0;
peep->var_70 = 0;
peep->action_sprite_image_offset = 0;
sub_693B58(peep);
invalidate_sprite((rct_sprite*)peep);
}

View File

@@ -348,14 +348,17 @@ typedef struct {
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
@@ -407,19 +410,19 @@ 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;
@@ -454,7 +457,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;

View File

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

View File

@@ -30,13 +30,17 @@ typedef struct {
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

View File

@@ -266,7 +266,6 @@ static void DrawOpenRCT2(int x, int y)
void game_handle_input();
void title_update()
{
screenshot_check();
title_handle_keyboard_input();

View File

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

View File

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

View File

@@ -325,9 +325,9 @@ 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->sprite_width = 0x10;
sprite->sprite_height_negative = 0x14;
sprite->sprite_height_positive = 0x8;
sprite->pad_0C[0] = 0x0;
sprite->sprite_left = SPRITE_LOCATION_NULL;
@@ -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;

View File

@@ -51,14 +51,17 @@ typedef struct {
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];
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