diff --git a/src/world/sprite.c b/src/world/sprite.c index 4b5cfe8a63..d469b32de0 100644 --- a/src/world/sprite.c +++ b/src/world/sprite.c @@ -60,18 +60,14 @@ void create_duck(int targetX, int targetY) sprite->duck.var_14 = 9; sprite->duck.var_09 = 0xC; sprite->duck.var_15 = 9; - int ebx = scenario_rand(); - int ebp = ebx; - int edi = ebx; - ebp >>= 8; - edi >>= 16; - edi &= 0x3F; - ebp &= 0x1E; + int edi = scenario_rand() & 0x3F; + int ebp = scenario_rand() & 0x1E; targetX += ebp; targetY += ebp; - sprite->duck.x = targetX; - sprite->duck.y = targetY; - switch (ebx & 3) + sprite->duck.target_x = targetX; + sprite->duck.target_y = targetY; + uint8 direction = scenario_rand() & 3; + switch (direction) { case 0: targetX = 8191 - edi; @@ -86,7 +82,7 @@ void create_duck(int targetX, int targetY) targetY = 8191 - edi; break; } - sprite->duck.var_1E = (ebx << 3) & 0xFF; + sprite->duck.sprite_direction = direction << 3; sprite_move(targetX, targetY, 496, sprite); sprite->duck.var_48 = 0; sprite->duck.var_26 = 0; diff --git a/src/world/sprite.h b/src/world/sprite.h index 02505e53e4..ea1ec8a105 100644 --- a/src/world/sprite.h +++ b/src/world/sprite.h @@ -112,12 +112,12 @@ typedef struct { uint8 var_14; // 0x14 uint8 var_15; // 0x15 uint8 pad_16[0x8]; - uint8 var_1E; // 0x1E + uint8 sprite_direction; // 0x1E uint8 pad_1F[0x7]; uint16 var_26; uint8 pad_28[0x8]; - sint16 x; // 0x30 - sint16 y; // 0x32 + sint16 target_x; // 0x30 + sint16 target_y; // 0x32 uint8 pad_34[0x14]; uint8 var_48; // 0x48 } rct_duck;