diff options
-rw-r--r-- | asm/field_map_obj.s | 32 | ||||
-rw-r--r-- | src/field_map_obj.c | 15 |
2 files changed, 15 insertions, 32 deletions
diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index d54b57fed..ca3cdda1e 100644 --- a/asm/field_map_obj.s +++ b/asm/field_map_obj.s @@ -6,38 +6,6 @@ .text - thumb_func_start sub_805C930 -sub_805C930: @ 805C930 - push {r4-r6,lr} - adds r6, r1, 0 - bl FieldObjectExecRegularAnim - lsls r0, 24 - cmp r0, 0 - beq _0805C964 - ldr r5, _0805C960 @ =gUnknown_0837520C - bl Random - movs r4, 0x3 - adds r1, r4, 0 - ands r1, r0 - lsls r1, 1 - adds r1, r5 - movs r0, 0 - ldrsh r1, [r1, r0] - adds r0, r6, 0 - bl sub_8064820 - strh r4, [r6, 0x30] - movs r0, 0x1 - b _0805C966 - .align 2, 0 -_0805C960: .4byte gUnknown_0837520C -_0805C964: - movs r0, 0 -_0805C966: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_805C930 - thumb_func_start sub_805C96C sub_805C96C: @ 805C96C push {r4,lr} diff --git a/src/field_map_obj.c b/src/field_map_obj.c index f7e09aacf..19d4676cf 100644 --- a/src/field_map_obj.c +++ b/src/field_map_obj.c @@ -6,6 +6,7 @@ #include "field_player_avatar.h" #include "palette.h" #include "rom4.h" +#include "rng.h" #include "sprite.h" extern const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[36]; @@ -1547,3 +1548,17 @@ u8 sub_805C904(struct MapObject *mapObject, struct Sprite *sprite) return 1; } +extern bool8 FieldObjectExecRegularAnim(); +extern const s16 gUnknown_0837520C[]; +extern void sub_8064820(struct Sprite *, s16); + +u8 sub_805C930(struct MapObject *mapObject, struct Sprite *sprite) +{ + if (FieldObjectExecRegularAnim(mapObject, sprite) == 0) { + return 0; + } + sub_8064820(sprite, gUnknown_0837520C[Random() & 3]); + sprite->data1 = 3; + return 1; +} + |