summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2017-09-16 23:49:31 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2017-09-16 23:49:31 -0400
commit529ccf9a960209333b21aab59b620330370cc791 (patch)
tree9d2547095067d7a6ea520ec59ce2f245f573f3d4
parent432924e56d99d37eb721a03907b0eab943458b60 (diff)
do_go_anim
-rwxr-xr-xasm/field_map_obj.s47
-rwxr-xr-xinclude/data3.h1
-rwxr-xr-xsrc/field_map_obj.c9
3 files changed, 10 insertions, 47 deletions
diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s
index 9b2689951..cd7145160 100755
--- a/asm/field_map_obj.s
+++ b/asm/field_map_obj.s
@@ -5,53 +5,6 @@
.text
- thumb_func_start do_go_anim
-@ void do_go_anim(struct npc_state *fieldObject, struct obj *object, u8 direction, u8 speed)
-do_go_anim: @ 8093A2C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x14
- adds r5, r0, 0
- mov r8, r1
- adds r4, r3, 0
- lsls r2, 24
- lsrs r2, 24
- lsls r4, 24
- lsrs r4, 24
- mov r1, sp
- ldr r0, =gUnknown_0850DEE8
- ldm r0!, {r3,r6,r7}
- stm r1!, {r3,r6,r7}
- ldm r0!, {r3,r6}
- stm r1!, {r3,r6}
- adds r0, r5, 0
- mov r1, r8
- adds r3, r4, 0
- bl npc_apply_direction
- lsls r4, 2
- mov r7, sp
- adds r1, r7, r4
- ldrb r0, [r5, 0x18]
- lsls r0, 28
- lsrs r0, 28
- ldr r1, [r1]
- bl _call_via_r1
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r5, 0
- mov r1, r8
- bl npc_apply_anim_looping
- add sp, 0x14
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end do_go_anim
-
thumb_func_start do_run_anim
@ void do_run_anim(struct npc_state *fieldObject, struct obj *object, u8 direction)
do_run_anim: @ 8093A88
diff --git a/include/data3.h b/include/data3.h
index ef6f5193d..9cd6e2fe1 100755
--- a/include/data3.h
+++ b/include/data3.h
@@ -43,5 +43,6 @@ extern const u8 gUnknown_0850DC3F[4][4];
extern const u8 gUnknown_0850DBA0[5];
extern bool8 (*const *const gUnknown_0850DC50[])(struct MapObject *, struct Sprite *);
+extern u8 (*const gUnknown_0850DEE8[5])(u8);
#endif //GUARD_DATA3_H
diff --git a/src/field_map_obj.c b/src/field_map_obj.c
index 4f2a359e4..0e9086d33 100755
--- a/src/field_map_obj.c
+++ b/src/field_map_obj.c
@@ -4174,3 +4174,12 @@ void npc_apply_direction(struct MapObject *mapObject, struct Sprite *sprite, u8
mapObject->mapobj_bit_2 = TRUE;
sprite->data2 = 1;
}
+
+void do_go_anim(struct MapObject *mapObject, struct Sprite *sprite, u8 direction, u8 speed)
+{
+ u8 (*functions[ARRAY_COUNT(gUnknown_0850DEE8)])(u8);
+
+ memcpy(functions, gUnknown_0850DEE8, sizeof gUnknown_0850DEE8);
+ npc_apply_direction(mapObject, sprite, direction, speed);
+ npc_apply_anim_looping(mapObject, sprite, functions[speed](mapObject->mapobj_unk_18));
+}