summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2017-05-20 23:32:57 -0400
committerscnorton <scnorton@biociphers.org>2017-05-24 16:14:45 -0400
commit2b8d522c6cf6de600f07e409b9148e6ce92e047d (patch)
tree9c000748a3db20829e8a3522eb151d1ec8808aab
parent6508197cbbd6a10226958d4e4b6bebb4fc754cad (diff)
sub_805C930
-rw-r--r--asm/field_map_obj.s32
-rw-r--r--src/field_map_obj.c15
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;
+}
+