summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xasm/field_map_obj.s1566
-rw-r--r--include/field_map_obj_helpers.h2
-rwxr-xr-xsrc/field_map_obj.c668
3 files changed, 670 insertions, 1566 deletions
diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s
index f0590d8e8..c8bcc1e8b 100755
--- a/asm/field_map_obj.s
+++ b/asm/field_map_obj.s
@@ -626,1572 +626,8 @@ _0805F8C0:
.align 2, 0
_0805F8DC: .4byte gUnknown_0836DC09
thumb_func_end oac_hopping
- .section .text_805fd18
-
- thumb_func_start sub_8061AF8
-sub_8061AF8: @ 8061AF8
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- movs r2, 0x1
- movs r3, 0x2
- bl do_go_anim
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_8061B18
- lsls r0, 24
- lsrs r0, 24
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8061AF8
-
- thumb_func_start sub_8061B18
-sub_8061B18: @ 8061B18
- push {r4,lr}
- adds r4, r1, 0
- bl npc_obj_ministep_stop_on_arrival
- lsls r0, 24
- cmp r0, 0
- bne _08061B2A
- movs r0, 0
- b _08061B30
-_08061B2A:
- movs r0, 0x2
- strh r0, [r4, 0x32]
- movs r0, 0x1
-_08061B30:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8061B18
-
- thumb_func_start sub_8061B38
-sub_8061B38: @ 8061B38
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- movs r2, 0x2
- movs r3, 0x2
- bl do_go_anim
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_8061B58
- lsls r0, 24
- lsrs r0, 24
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8061B38
-
- thumb_func_start sub_8061B58
-sub_8061B58: @ 8061B58
- push {r4,lr}
- adds r4, r1, 0
- bl npc_obj_ministep_stop_on_arrival
- lsls r0, 24
- cmp r0, 0
- bne _08061B6A
- movs r0, 0
- b _08061B70
-_08061B6A:
- movs r0, 0x2
- strh r0, [r4, 0x32]
- movs r0, 0x1
-_08061B70:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8061B58
-
- thumb_func_start sub_8061B78
-sub_8061B78: @ 8061B78
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- movs r2, 0x3
- movs r3, 0x2
- bl do_go_anim
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_8061B98
- lsls r0, 24
- lsrs r0, 24
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8061B78
-
- thumb_func_start sub_8061B98
-sub_8061B98: @ 8061B98
- push {r4,lr}
- adds r4, r1, 0
- bl npc_obj_ministep_stop_on_arrival
- lsls r0, 24
- cmp r0, 0
- bne _08061BAA
- movs r0, 0
- b _08061BB0
-_08061BAA:
- movs r0, 0x2
- strh r0, [r4, 0x32]
- movs r0, 0x1
-_08061BB0:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8061B98
-
- thumb_func_start sub_8061BB8
-sub_8061BB8: @ 8061BB8
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- movs r2, 0x4
- movs r3, 0x2
- bl do_go_anim
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_8061BD8
- lsls r0, 24
- lsrs r0, 24
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8061BB8
-
- thumb_func_start sub_8061BD8
-sub_8061BD8: @ 8061BD8
- push {r4,lr}
- adds r4, r1, 0
- bl npc_obj_ministep_stop_on_arrival
- lsls r0, 24
- cmp r0, 0
- bne _08061BEA
- movs r0, 0
- b _08061BF0
-_08061BEA:
- movs r0, 0x2
- strh r0, [r4, 0x32]
- movs r0, 0x1
-_08061BF0:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8061BD8
-
- thumb_func_start sub_8061BF8
-sub_8061BF8: @ 8061BF8
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- movs r2, 0x1
- movs r3, 0x3
- bl do_go_anim
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_8061C18
- lsls r0, 24
- lsrs r0, 24
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8061BF8
-
- thumb_func_start sub_8061C18
-sub_8061C18: @ 8061C18
- push {r4,lr}
- adds r4, r1, 0
- bl npc_obj_ministep_stop_on_arrival
- lsls r0, 24
- cmp r0, 0
- bne _08061C2A
- movs r0, 0
- b _08061C30
-_08061C2A:
- movs r0, 0x2
- strh r0, [r4, 0x32]
- movs r0, 0x1
-_08061C30:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8061C18
-
- thumb_func_start sub_8061C38
-sub_8061C38: @ 8061C38
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- movs r2, 0x2
- movs r3, 0x3
- bl do_go_anim
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_8061C58
- lsls r0, 24
- lsrs r0, 24
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8061C38
-
- thumb_func_start sub_8061C58
-sub_8061C58: @ 8061C58
- push {r4,lr}
- adds r4, r1, 0
- bl npc_obj_ministep_stop_on_arrival
- lsls r0, 24
- cmp r0, 0
- bne _08061C6A
- movs r0, 0
- b _08061C70
-_08061C6A:
- movs r0, 0x2
- strh r0, [r4, 0x32]
- movs r0, 0x1
-_08061C70:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8061C58
-
- thumb_func_start sub_8061C78
-sub_8061C78: @ 8061C78
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- movs r2, 0x3
- movs r3, 0x3
- bl do_go_anim
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_8061C98
- lsls r0, 24
- lsrs r0, 24
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8061C78
-
- thumb_func_start sub_8061C98
-sub_8061C98: @ 8061C98
- push {r4,lr}
- adds r4, r1, 0
- bl npc_obj_ministep_stop_on_arrival
- lsls r0, 24
- cmp r0, 0
- bne _08061CAA
- movs r0, 0
- b _08061CB0
-_08061CAA:
- movs r0, 0x2
- strh r0, [r4, 0x32]
- movs r0, 0x1
-_08061CB0:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8061C98
-
- thumb_func_start sub_8061CB8
-sub_8061CB8: @ 8061CB8
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- movs r2, 0x4
- movs r3, 0x3
- bl do_go_anim
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_8061CD8
- lsls r0, 24
- lsrs r0, 24
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8061CB8
-
- thumb_func_start sub_8061CD8
-sub_8061CD8: @ 8061CD8
- push {r4,lr}
- adds r4, r1, 0
- bl npc_obj_ministep_stop_on_arrival
- lsls r0, 24
- cmp r0, 0
- bne _08061CEA
- movs r0, 0
- b _08061CF0
-_08061CEA:
- movs r0, 0x2
- strh r0, [r4, 0x32]
- movs r0, 0x1
-_08061CF0:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8061CD8
-
- thumb_func_start sub_8061CF8
-sub_8061CF8: @ 8061CF8
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- movs r2, 0x1
- movs r3, 0x4
- bl do_go_anim
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_8061D18
- lsls r0, 24
- lsrs r0, 24
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8061CF8
-
- thumb_func_start sub_8061D18
-sub_8061D18: @ 8061D18
- push {r4,lr}
- adds r4, r1, 0
- bl npc_obj_ministep_stop_on_arrival
- lsls r0, 24
- cmp r0, 0
- bne _08061D2A
- movs r0, 0
- b _08061D30
-_08061D2A:
- movs r0, 0x2
- strh r0, [r4, 0x32]
- movs r0, 0x1
-_08061D30:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8061D18
-
- thumb_func_start sub_8061D38
-sub_8061D38: @ 8061D38
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- movs r2, 0x2
- movs r3, 0x4
- bl do_go_anim
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_8061D58
- lsls r0, 24
- lsrs r0, 24
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8061D38
-
- thumb_func_start sub_8061D58
-sub_8061D58: @ 8061D58
- push {r4,lr}
- adds r4, r1, 0
- bl npc_obj_ministep_stop_on_arrival
- lsls r0, 24
- cmp r0, 0
- bne _08061D6A
- movs r0, 0
- b _08061D70
-_08061D6A:
- movs r0, 0x2
- strh r0, [r4, 0x32]
- movs r0, 0x1
-_08061D70:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8061D58
-
- thumb_func_start sub_8061D78
-sub_8061D78: @ 8061D78
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- movs r2, 0x3
- movs r3, 0x4
- bl do_go_anim
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_8061D98
- lsls r0, 24
- lsrs r0, 24
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8061D78
-
- thumb_func_start sub_8061D98
-sub_8061D98: @ 8061D98
- push {r4,lr}
- adds r4, r1, 0
- bl npc_obj_ministep_stop_on_arrival
- lsls r0, 24
- cmp r0, 0
- bne _08061DAA
- movs r0, 0
- b _08061DB0
-_08061DAA:
- movs r0, 0x2
- strh r0, [r4, 0x32]
- movs r0, 0x1
-_08061DB0:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8061D98
-
- thumb_func_start sub_8061DB8
-sub_8061DB8: @ 8061DB8
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- movs r2, 0x4
- movs r3, 0x4
- bl do_go_anim
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_8061DD8
- lsls r0, 24
- lsrs r0, 24
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8061DB8
-
- thumb_func_start sub_8061DD8
-sub_8061DD8: @ 8061DD8
- push {r4,lr}
- adds r4, r1, 0
- bl npc_obj_ministep_stop_on_arrival
- lsls r0, 24
- cmp r0, 0
- bne _08061DEA
- movs r0, 0
- b _08061DF0
-_08061DEA:
- movs r0, 0x2
- strh r0, [r4, 0x32]
- movs r0, 0x1
-_08061DF0:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8061DD8
-
- thumb_func_start do_run_south_anim
-do_run_south_anim: @ 8061DF8
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- movs r2, 0x1
- bl do_run_anim
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_8061E18
- lsls r0, 24
- lsrs r0, 24
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end do_run_south_anim
-
- thumb_func_start sub_8061E18
-sub_8061E18: @ 8061E18
- push {r4,lr}
- adds r4, r1, 0
- bl npc_obj_ministep_stop_on_arrival
- lsls r0, 24
- cmp r0, 0
- bne _08061E2A
- movs r0, 0
- b _08061E30
-_08061E2A:
- movs r0, 0x2
- strh r0, [r4, 0x32]
- movs r0, 0x1
-_08061E30:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8061E18
-
- thumb_func_start do_run_north_anim
-do_run_north_anim: @ 8061E38
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- movs r2, 0x2
- bl do_run_anim
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_8061E58
- lsls r0, 24
- lsrs r0, 24
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end do_run_north_anim
-
- thumb_func_start sub_8061E58
-sub_8061E58: @ 8061E58
- push {r4,lr}
- adds r4, r1, 0
- bl npc_obj_ministep_stop_on_arrival
- lsls r0, 24
- cmp r0, 0
- bne _08061E6A
- movs r0, 0
- b _08061E70
-_08061E6A:
- movs r0, 0x2
- strh r0, [r4, 0x32]
- movs r0, 0x1
-_08061E70:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8061E58
-
- thumb_func_start do_run_west_anim
-do_run_west_anim: @ 8061E78
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- movs r2, 0x3
- bl do_run_anim
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_8061E98
- lsls r0, 24
- lsrs r0, 24
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end do_run_west_anim
-
- thumb_func_start sub_8061E98
-sub_8061E98: @ 8061E98
- push {r4,lr}
- adds r4, r1, 0
- bl npc_obj_ministep_stop_on_arrival
- lsls r0, 24
- cmp r0, 0
- bne _08061EAA
- movs r0, 0
- b _08061EB0
-_08061EAA:
- movs r0, 0x2
- strh r0, [r4, 0x32]
- movs r0, 0x1
-_08061EB0:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8061E98
-
- thumb_func_start do_run_east_anim
-do_run_east_anim: @ 8061EB8
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- movs r2, 0x4
- bl do_run_anim
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_8061ED8
- lsls r0, 24
- lsrs r0, 24
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end do_run_east_anim
-
- thumb_func_start sub_8061ED8
-sub_8061ED8: @ 8061ED8
- push {r4,lr}
- adds r4, r1, 0
- bl npc_obj_ministep_stop_on_arrival
- lsls r0, 24
- cmp r0, 0
- bne _08061EEA
- movs r0, 0
- b _08061EF0
-_08061EEA:
- movs r0, 0x2
- strh r0, [r4, 0x32]
- movs r0, 0x1
-_08061EF0:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8061ED8
-
- thumb_func_start npc_set_direction_and_anim__an_proceed
-npc_set_direction_and_anim__an_proceed: @ 8061EF8
- push {r4-r6,lr}
- adds r6, r0, 0
- adds r5, r1, 0
- adds r4, r2, 0
- adds r1, r3, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r1, 24
- lsrs r1, 24
- adds r0, r5, 0
- movs r2, 0
- bl obj_anim_image_set_and_seek
- adds r0, r6, 0
- adds r1, r4, 0
- bl FieldObjectSetDirection
- movs r0, 0x1
- strh r0, [r5, 0x32]
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end npc_set_direction_and_anim__an_proceed
-
- thumb_func_start sub_8061F24
-sub_8061F24: @ 8061F24
- push {lr}
- ldrb r2, [r0, 0x18]
- lsrs r2, 4
- adds r3, r1, 0
- adds r3, 0x2A
- ldrb r3, [r3]
- bl npc_set_direction_and_anim__an_proceed
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end sub_8061F24
-
- thumb_func_start sub_8061F3C
-sub_8061F3C: @ 8061F3C
- push {r4,lr}
- adds r4, r1, 0
- adds r0, r4, 0
- bl sub_8064864
- lsls r0, 24
- cmp r0, 0
- bne _08061F50
- movs r0, 0
- b _08061F56
-_08061F50:
- movs r0, 0x2
- strh r0, [r4, 0x32]
- movs r0, 0x1
-_08061F56:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8061F3C
-
- thumb_func_start sub_8061F5C
-sub_8061F5C: @ 8061F5C
- push {r4,r5,lr}
- sub sp, 0x4
- adds r5, r1, 0
- lsls r4, r2, 24
- lsrs r4, 24
- movs r1, 0
- str r1, [sp]
- adds r1, r5, 0
- adds r2, r4, 0
- movs r3, 0x1
- bl sub_806113C
- adds r0, r4, 0
- bl sub_805FD88
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r5, 0
- bl StartSpriteAnim
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_8061F5C
-
- thumb_func_start sub_8061F90
-sub_8061F90: @ 8061F90
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- movs r2, 0x1
- bl sub_8061F5C
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_8061FB0
- lsls r0, 24
- lsrs r0, 24
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8061F90
-
- thumb_func_start sub_8061FB0
-sub_8061FB0: @ 8061FB0
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- bl sub_8061340
- lsls r0, 24
- cmp r0, 0
- bne _08061FC4
- movs r0, 0
- b _08061FD2
-_08061FC4:
- movs r0, 0x2
- strh r0, [r5, 0x32]
- ldrb r1, [r4]
- subs r0, 0x23
- ands r0, r1
- strb r0, [r4]
- movs r0, 0x1
-_08061FD2:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8061FB0
-
- thumb_func_start sub_8061FD8
-sub_8061FD8: @ 8061FD8
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- movs r2, 0x2
- bl sub_8061F5C
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_8061FF8
- lsls r0, 24
- lsrs r0, 24
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8061FD8
-
- thumb_func_start sub_8061FF8
-sub_8061FF8: @ 8061FF8
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- bl sub_8061340
- lsls r0, 24
- cmp r0, 0
- bne _0806200C
- movs r0, 0
- b _0806201A
-_0806200C:
- movs r0, 0x2
- strh r0, [r5, 0x32]
- ldrb r1, [r4]
- subs r0, 0x23
- ands r0, r1
- strb r0, [r4]
- movs r0, 0x1
-_0806201A:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8061FF8
-
- thumb_func_start sub_8062020
-sub_8062020: @ 8062020
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- movs r2, 0x3
- bl sub_8061F5C
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_8062040
- lsls r0, 24
- lsrs r0, 24
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8062020
-
- thumb_func_start sub_8062040
-sub_8062040: @ 8062040
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- bl sub_8061340
- lsls r0, 24
- cmp r0, 0
- bne _08062054
- movs r0, 0
- b _08062062
-_08062054:
- movs r0, 0x2
- strh r0, [r5, 0x32]
- ldrb r1, [r4]
- subs r0, 0x23
- ands r0, r1
- strb r0, [r4]
- movs r0, 0x1
-_08062062:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8062040
-
- thumb_func_start sub_8062068
-sub_8062068: @ 8062068
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- movs r2, 0x4
- bl sub_8061F5C
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_8062088
- lsls r0, 24
- lsrs r0, 24
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8062068
-
- thumb_func_start sub_8062088
-sub_8062088: @ 8062088
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- bl sub_8061340
- lsls r0, 24
- cmp r0, 0
- bne _0806209C
- movs r0, 0
- b _080620AA
-_0806209C:
- movs r0, 0x2
- strh r0, [r5, 0x32]
- ldrb r1, [r4]
- subs r0, 0x23
- ands r0, r1
- strb r0, [r4]
- movs r0, 0x1
-_080620AA:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8062088
-
- thumb_func_start sub_80620B0
-sub_80620B0: @ 80620B0
- push {r4-r6,lr}
- sub sp, 0x4
- adds r5, r0, 0
- adds r6, r1, 0
- movs r0, 0xFF
- movs r1, 0
- movs r2, 0
- mov r3, sp
- bl TryGetFieldObjectIdByLocalIdAndMap
- lsls r0, 24
- cmp r0, 0
- bne _080620FA
- movs r1, 0x10
- ldrsh r0, [r5, r1]
- movs r2, 0x12
- ldrsh r1, [r5, r2]
- ldr r4, _08062108 @ =gMapObjects
- mov r2, sp
- ldrb r2, [r2]
- lsls r3, r2, 3
- adds r3, r2
- lsls r3, 2
- adds r3, r4
- movs r4, 0x10
- ldrsh r2, [r3, r4]
- movs r4, 0x12
- ldrsh r3, [r3, r4]
- bl sub_805FE90
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r5, 0
- adds r1, r6, 0
- bl an_look_any
-_080620FA:
- movs r0, 0x1
- strh r0, [r6, 0x32]
- add sp, 0x4
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_08062108: .4byte gMapObjects
- thumb_func_end sub_80620B0
-
- thumb_func_start sub_806210C
-sub_806210C: @ 806210C
- push {r4-r6,lr}
- sub sp, 0x4
- adds r5, r0, 0
- adds r6, r1, 0
- movs r0, 0xFF
- movs r1, 0
- movs r2, 0
- mov r3, sp
- bl TryGetFieldObjectIdByLocalIdAndMap
- lsls r0, 24
- cmp r0, 0
- bne _0806215E
- movs r1, 0x10
- ldrsh r0, [r5, r1]
- movs r2, 0x12
- ldrsh r1, [r5, r2]
- ldr r4, _0806216C @ =gMapObjects
- mov r2, sp
- ldrb r2, [r2]
- lsls r3, r2, 3
- adds r3, r2
- lsls r3, 2
- adds r3, r4
- movs r4, 0x10
- ldrsh r2, [r3, r4]
- movs r4, 0x12
- ldrsh r3, [r3, r4]
- bl sub_805FE90
- lsls r0, 24
- lsrs r0, 24
- bl GetOppositeDirection
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r5, 0
- adds r1, r6, 0
- bl an_look_any
-_0806215E:
- movs r0, 0x1
- strh r0, [r6, 0x32]
- add sp, 0x4
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_0806216C: .4byte gMapObjects
- thumb_func_end sub_806210C
-
- thumb_func_start sub_8062170
-sub_8062170: @ 8062170
- ldrb r2, [r0, 0x1]
- movs r3, 0x2
- orrs r2, r3
- strb r2, [r0, 0x1]
- movs r0, 0x1
- strh r0, [r1, 0x32]
- bx lr
- thumb_func_end sub_8062170
-
- thumb_func_start sub_8062180
-sub_8062180: @ 8062180
- ldrb r3, [r0, 0x1]
- movs r2, 0x3
- negs r2, r2
- ands r2, r3
- strb r2, [r0, 0x1]
- movs r0, 0x1
- strh r0, [r1, 0x32]
- bx lr
- thumb_func_end sub_8062180
-
- thumb_func_start sub_8062190
-sub_8062190: @ 8062190
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- movs r0, 0x2
- str r0, [sp]
- adds r0, r4, 0
- movs r2, 0x1
- movs r3, 0x1
- bl maybe_shadow_1
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_80621BC
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8062190
-
- thumb_func_start sub_80621BC
-sub_80621BC: @ 80621BC
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- bl sub_8061328
- lsls r0, 24
- cmp r0, 0
- bne _080621D0
- movs r0, 0
- b _080621E0
-_080621D0:
- ldrb r0, [r4, 0x2]
- movs r1, 0x41
- negs r1, r1
- ands r1, r0
- strb r1, [r4, 0x2]
- movs r0, 0x2
- strh r0, [r5, 0x32]
- movs r0, 0x1
-_080621E0:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80621BC
- thumb_func_start sub_80621E8
-sub_80621E8: @ 80621E8
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- movs r0, 0x2
- str r0, [sp]
- adds r0, r4, 0
- movs r2, 0x2
- movs r3, 0x1
- bl maybe_shadow_1
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_8062214
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80621E8
-
- thumb_func_start sub_8062214
-sub_8062214: @ 8062214
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- bl sub_8061328
- lsls r0, 24
- cmp r0, 0
- bne _08062228
- movs r0, 0
- b _08062238
-_08062228:
- ldrb r0, [r4, 0x2]
- movs r1, 0x41
- negs r1, r1
- ands r1, r0
- strb r1, [r4, 0x2]
- movs r0, 0x2
- strh r0, [r5, 0x32]
- movs r0, 0x1
-_08062238:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8062214
-
- thumb_func_start sub_8062240
-sub_8062240: @ 8062240
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- movs r0, 0x2
- str r0, [sp]
- adds r0, r4, 0
- movs r2, 0x3
- movs r3, 0x1
- bl maybe_shadow_1
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_806226C
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8062240
-
- thumb_func_start sub_806226C
-sub_806226C: @ 806226C
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- bl sub_8061328
- lsls r0, 24
- cmp r0, 0
- bne _08062280
- movs r0, 0
- b _08062290
-_08062280:
- ldrb r0, [r4, 0x2]
- movs r1, 0x41
- negs r1, r1
- ands r1, r0
- strb r1, [r4, 0x2]
- movs r0, 0x2
- strh r0, [r5, 0x32]
- movs r0, 0x1
-_08062290:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_806226C
-
- thumb_func_start sub_8062298
-sub_8062298: @ 8062298
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- movs r0, 0x2
- str r0, [sp]
- adds r0, r4, 0
- movs r2, 0x4
- movs r3, 0x1
- bl maybe_shadow_1
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_80622C4
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8062298
-
- thumb_func_start sub_80622C4
-sub_80622C4: @ 80622C4
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- bl sub_8061328
- lsls r0, 24
- cmp r0, 0
- bne _080622D8
- movs r0, 0
- b _080622E8
-_080622D8:
- ldrb r0, [r4, 0x2]
- movs r1, 0x41
- negs r1, r1
- ands r1, r0
- strb r1, [r4, 0x2]
- movs r0, 0x2
- strh r0, [r5, 0x32]
- movs r0, 0x1
-_080622E8:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80622C4
-
- thumb_func_start sub_80622F0
-sub_80622F0: @ 80622F0
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- movs r0, 0
- str r0, [sp]
- adds r0, r4, 0
- movs r2, 0x1
- movs r3, 0
- bl maybe_shadow_1
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_806231C
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80622F0
-
- thumb_func_start sub_806231C
-sub_806231C: @ 806231C
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- bl sub_8061328
- lsls r0, 24
- cmp r0, 0
- bne _08062330
- movs r0, 0
- b _08062340
-_08062330:
- ldrb r0, [r4, 0x2]
- movs r1, 0x41
- negs r1, r1
- ands r1, r0
- strb r1, [r4, 0x2]
- movs r0, 0x2
- strh r0, [r5, 0x32]
- movs r0, 0x1
-_08062340:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_806231C
-
- thumb_func_start sub_8062348
-sub_8062348: @ 8062348
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- movs r0, 0
- str r0, [sp]
- adds r0, r4, 0
- movs r2, 0x2
- movs r3, 0
- bl maybe_shadow_1
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_8062374
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8062348
-
- thumb_func_start sub_8062374
-sub_8062374: @ 8062374
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- bl sub_8061328
- lsls r0, 24
- cmp r0, 0
- bne _08062388
- movs r0, 0
- b _08062398
-_08062388:
- ldrb r0, [r4, 0x2]
- movs r1, 0x41
- negs r1, r1
- ands r1, r0
- strb r1, [r4, 0x2]
- movs r0, 0x2
- strh r0, [r5, 0x32]
- movs r0, 0x1
-_08062398:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8062374
-
- thumb_func_start sub_80623A0
-sub_80623A0: @ 80623A0
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- movs r0, 0
- str r0, [sp]
- adds r0, r4, 0
- movs r2, 0x3
- movs r3, 0
- bl maybe_shadow_1
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_80623CC
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80623A0
-
- thumb_func_start sub_80623CC
-sub_80623CC: @ 80623CC
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- bl sub_8061328
- lsls r0, 24
- cmp r0, 0
- bne _080623E0
- movs r0, 0
- b _080623F0
-_080623E0:
- ldrb r0, [r4, 0x2]
- movs r1, 0x41
- negs r1, r1
- ands r1, r0
- strb r1, [r4, 0x2]
- movs r0, 0x2
- strh r0, [r5, 0x32]
- movs r0, 0x1
-_080623F0:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80623CC
-
- thumb_func_start sub_80623F8
-sub_80623F8: @ 80623F8
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- movs r0, 0
- str r0, [sp]
- adds r0, r4, 0
- movs r2, 0x4
- movs r3, 0
- bl maybe_shadow_1
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_8062424
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80623F8
-
- thumb_func_start sub_8062424
-sub_8062424: @ 8062424
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- bl sub_8061328
- lsls r0, 24
- cmp r0, 0
- bne _08062438
- movs r0, 0
- b _08062448
-_08062438:
- ldrb r0, [r4, 0x2]
- movs r1, 0x41
- negs r1, r1
- ands r1, r0
- strb r1, [r4, 0x2]
- movs r0, 0x2
- strh r0, [r5, 0x32]
- movs r0, 0x1
-_08062448:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8062424
-
- thumb_func_start sub_8062450
-sub_8062450: @ 8062450
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- movs r0, 0x2
- str r0, [sp]
- adds r0, r4, 0
- movs r2, 0x1
- movs r3, 0
- bl maybe_shadow_1
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_806247C
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8062450
-
- thumb_func_start sub_806247C
-sub_806247C: @ 806247C
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- bl sub_8061358
- lsls r0, 24
- cmp r0, 0
- bne _08062490
- movs r0, 0
- b _080624A0
-_08062490:
- ldrb r0, [r4, 0x2]
- movs r1, 0x41
- negs r1, r1
- ands r1, r0
- strb r1, [r4, 0x2]
- movs r0, 0x2
- strh r0, [r5, 0x32]
- movs r0, 0x1
-_080624A0:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_806247C
-
- thumb_func_start sub_80624A8
-sub_80624A8: @ 80624A8
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- movs r0, 0x2
- str r0, [sp]
- adds r0, r4, 0
- movs r2, 0x2
- movs r3, 0
- bl maybe_shadow_1
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_80624D4
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80624A8
-
- thumb_func_start sub_80624D4
-sub_80624D4: @ 80624D4
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- bl sub_8061358
- lsls r0, 24
- cmp r0, 0
- bne _080624E8
- movs r0, 0
- b _080624F8
-_080624E8:
- ldrb r0, [r4, 0x2]
- movs r1, 0x41
- negs r1, r1
- ands r1, r0
- strb r1, [r4, 0x2]
- movs r0, 0x2
- strh r0, [r5, 0x32]
- movs r0, 0x1
-_080624F8:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80624D4
-
- thumb_func_start sub_8062500
-sub_8062500: @ 8062500
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- movs r0, 0x2
- str r0, [sp]
- adds r0, r4, 0
- movs r2, 0x3
- movs r3, 0
- bl maybe_shadow_1
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_806252C
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8062500
-
- thumb_func_start sub_806252C
-sub_806252C: @ 806252C
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- bl sub_8061358
- lsls r0, 24
- cmp r0, 0
- bne _08062540
- movs r0, 0
- b _08062550
-_08062540:
- ldrb r0, [r4, 0x2]
- movs r1, 0x41
- negs r1, r1
- ands r1, r0
- strb r1, [r4, 0x2]
- movs r0, 0x2
- strh r0, [r5, 0x32]
- movs r0, 0x1
-_08062550:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_806252C
-
- thumb_func_start sub_8062558
-sub_8062558: @ 8062558
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- movs r0, 0x2
- str r0, [sp]
- adds r0, r4, 0
- movs r2, 0x4
- movs r3, 0
- bl maybe_shadow_1
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_8062584
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8062558
-
- thumb_func_start sub_8062584
-sub_8062584: @ 8062584
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- bl sub_8061358
- lsls r0, 24
- cmp r0, 0
- bne _08062598
- movs r0, 0
- b _080625A8
-_08062598:
- ldrb r0, [r4, 0x2]
- movs r1, 0x41
- negs r1, r1
- ands r1, r0
- strb r1, [r4, 0x2]
- movs r0, 0x2
- strh r0, [r5, 0x32]
- movs r0, 0x1
-_080625A8:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8062584
+ .section .text_805fd18
thumb_func_start sub_80625B0
sub_80625B0: @ 80625B0
diff --git a/include/field_map_obj_helpers.h b/include/field_map_obj_helpers.h
index 119cdd5f8..5dceec595 100644
--- a/include/field_map_obj_helpers.h
+++ b/include/field_map_obj_helpers.h
@@ -15,5 +15,5 @@ void sub_80646E4(struct Sprite *sprite, u8 a2, u8 a3, u8 a4);
void DoShadowFieldEffect(struct MapObject *mapObject);
u8 sub_8064704(struct Sprite *);
u8 sub_806478C(struct Sprite *);
-
+void obj_anim_image_set_and_seek(struct Sprite *sprite, u8 a2, u8 a3);
#endif
diff --git a/src/field_map_obj.c b/src/field_map_obj.c
index f70237c34..0aba02e1a 100755
--- a/src/field_map_obj.c
+++ b/src/field_map_obj.c
@@ -14,6 +14,7 @@
#include "sprite.h"
#include "field_camera.h"
#include "metatile_behavior.h"
+#include "map_constants.h"
extern const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[36];
@@ -5028,3 +5029,670 @@ bool8 sub_8061AC0(struct MapObject *mapObject, struct Sprite *sprite)
sub_80616CC(mapObject, sprite, DIR_EAST, get_go_faster_image_anim_num(DIR_EAST), 4);
return sub_8061714(mapObject, sprite);
}
+
+bool8 sub_8061B18(struct MapObject *, struct Sprite *);
+
+bool8 sub_8061AF8(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ do_go_anim(mapObject, sprite, DIR_SOUTH, 2);
+ return sub_8061B18(mapObject, sprite);
+}
+
+bool8 sub_8061B18(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (npc_obj_ministep_stop_on_arrival(mapObject, sprite))
+ {
+ sprite->data2 = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+
+bool8 sub_8061B58(struct MapObject *, struct Sprite *);
+
+bool8 sub_8061B38(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ do_go_anim(mapObject, sprite, DIR_NORTH, 2);
+ return sub_8061B58(mapObject, sprite);
+}
+
+bool8 sub_8061B58(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (npc_obj_ministep_stop_on_arrival(mapObject, sprite))
+ {
+ sprite->data2 = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+
+bool8 sub_8061B98(struct MapObject *, struct Sprite *);
+
+bool8 sub_8061B78(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ do_go_anim(mapObject, sprite, DIR_WEST, 2);
+ return sub_8061B98(mapObject, sprite);
+}
+
+bool8 sub_8061B98(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (npc_obj_ministep_stop_on_arrival(mapObject, sprite))
+ {
+ sprite->data2 = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+
+bool8 sub_8061BD8(struct MapObject *, struct Sprite *);
+
+bool8 sub_8061BB8(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ do_go_anim(mapObject, sprite, DIR_EAST, 2);
+ return sub_8061BD8(mapObject, sprite);
+}
+
+bool8 sub_8061BD8(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (npc_obj_ministep_stop_on_arrival(mapObject, sprite))
+ {
+ sprite->data2 = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 sub_8061C18(struct MapObject *, struct Sprite *);
+
+bool8 sub_8061BF8(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ do_go_anim(mapObject, sprite, DIR_SOUTH, 3);
+ return sub_8061C18(mapObject, sprite);
+}
+
+bool8 sub_8061C18(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (npc_obj_ministep_stop_on_arrival(mapObject, sprite))
+ {
+ sprite->data2 = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 sub_8061C58(struct MapObject *, struct Sprite *);
+
+bool8 sub_8061C38(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ do_go_anim(mapObject, sprite, DIR_NORTH, 3);
+ return sub_8061C58(mapObject, sprite);
+}
+
+bool8 sub_8061C58(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (npc_obj_ministep_stop_on_arrival(mapObject, sprite))
+ {
+ sprite->data2 = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+
+bool8 sub_8061C98(struct MapObject *, struct Sprite *);
+
+bool8 sub_8061C78(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ do_go_anim(mapObject, sprite, DIR_WEST, 3);
+ return sub_8061C98(mapObject, sprite);
+}
+
+bool8 sub_8061C98(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (npc_obj_ministep_stop_on_arrival(mapObject, sprite))
+ {
+ sprite->data2 = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+
+bool8 sub_8061CD8(struct MapObject *, struct Sprite *);
+
+bool8 sub_8061CB8(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ do_go_anim(mapObject, sprite, DIR_EAST, 3);
+ return sub_8061CD8(mapObject, sprite);
+}
+
+bool8 sub_8061CD8(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (npc_obj_ministep_stop_on_arrival(mapObject, sprite))
+ {
+ sprite->data2 = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 sub_8061D18(struct MapObject *, struct Sprite *);
+
+bool8 sub_8061CF8(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ do_go_anim(mapObject, sprite, DIR_SOUTH, 4);
+ return sub_8061D18(mapObject, sprite);
+}
+
+bool8 sub_8061D18(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (npc_obj_ministep_stop_on_arrival(mapObject, sprite))
+ {
+ sprite->data2 = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 sub_8061D58(struct MapObject *, struct Sprite *);
+
+bool8 sub_8061D38(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ do_go_anim(mapObject, sprite, DIR_NORTH, 4);
+ return sub_8061D58(mapObject, sprite);
+}
+
+bool8 sub_8061D58(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (npc_obj_ministep_stop_on_arrival(mapObject, sprite))
+ {
+ sprite->data2 = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+
+bool8 sub_8061D98(struct MapObject *, struct Sprite *);
+
+bool8 sub_8061D78(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ do_go_anim(mapObject, sprite, DIR_WEST, 4);
+ return sub_8061D98(mapObject, sprite);
+}
+
+bool8 sub_8061D98(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (npc_obj_ministep_stop_on_arrival(mapObject, sprite))
+ {
+ sprite->data2 = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+
+bool8 sub_8061DD8(struct MapObject *, struct Sprite *);
+
+bool8 sub_8061DB8(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ do_go_anim(mapObject, sprite, DIR_EAST, 4);
+ return sub_8061DD8(mapObject, sprite);
+}
+
+bool8 sub_8061DD8(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (npc_obj_ministep_stop_on_arrival(mapObject, sprite))
+ {
+ sprite->data2 = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 sub_8061E18(struct MapObject *, struct Sprite *);
+
+bool8 do_run_south_anim(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ do_run_anim(mapObject, sprite, DIR_SOUTH);
+ return sub_8061E18(mapObject, sprite);
+}
+
+bool8 sub_8061E18(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (npc_obj_ministep_stop_on_arrival(mapObject, sprite))
+ {
+ sprite->data2 = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 sub_8061E58(struct MapObject *, struct Sprite *);
+
+bool8 do_run_north_anim(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ do_run_anim(mapObject, sprite, DIR_NORTH);
+ return sub_8061E58(mapObject, sprite);
+}
+
+bool8 sub_8061E58(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (npc_obj_ministep_stop_on_arrival(mapObject, sprite))
+ {
+ sprite->data2 = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 sub_8061E98(struct MapObject *, struct Sprite *);
+
+bool8 do_run_west_anim(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ do_run_anim(mapObject, sprite, DIR_WEST);
+ return sub_8061E98(mapObject, sprite);
+}
+
+bool8 sub_8061E98(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (npc_obj_ministep_stop_on_arrival(mapObject, sprite))
+ {
+ sprite->data2 = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 sub_8061ED8(struct MapObject *, struct Sprite *);
+
+bool8 do_run_east_anim(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ do_run_anim(mapObject, sprite, DIR_EAST);
+ return sub_8061ED8(mapObject, sprite);
+}
+
+bool8 sub_8061ED8(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (npc_obj_ministep_stop_on_arrival(mapObject, sprite))
+ {
+ sprite->data2 = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+void npc_set_direction_and_anim__an_proceed(struct MapObject *mapObject, struct Sprite *sprite, u8 direction, u8 animNum)
+{
+ obj_anim_image_set_and_seek(sprite, animNum, 0);
+ FieldObjectSetDirection(mapObject, direction);
+ sprite->data2 = 1;
+}
+
+u8 sub_8061F24(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ npc_set_direction_and_anim__an_proceed(mapObject, sprite, mapObject->placeholder18, sprite->animNum);
+ return 0;
+}
+
+bool8 sub_8064864(struct Sprite *);
+
+bool8 sub_8061F3C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (sub_8064864(sprite))
+ {
+ sprite->data2 = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+void sub_8061F5C(struct MapObject *mapObject, struct Sprite *sprite, u8 direction)
+{
+ sub_806113C(mapObject, sprite, direction, 1, 0);
+ StartSpriteAnim(sprite, sub_805FD88(direction));
+}
+
+bool8 sub_8061FB0(struct MapObject *, struct Sprite *);
+
+bool8 sub_8061F90(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ sub_8061F5C(mapObject, sprite, DIR_SOUTH);
+ return sub_8061FB0(mapObject, sprite);
+}
+
+bool8 sub_8061FB0(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (sub_8061340(mapObject, sprite))
+ {
+ sprite->data2 = 2;
+ mapObject->mapobj_bit_5 = 0;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 sub_8061FF8(struct MapObject *, struct Sprite *);
+
+bool8 sub_8061FD8(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ sub_8061F5C(mapObject, sprite, DIR_NORTH);
+ return sub_8061FF8(mapObject, sprite);
+}
+
+bool8 sub_8061FF8(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (sub_8061340(mapObject, sprite))
+ {
+ sprite->data2 = 2;
+ mapObject->mapobj_bit_5 = 0;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 sub_8062040(struct MapObject *, struct Sprite *);
+
+bool8 sub_8062020(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ sub_8061F5C(mapObject, sprite, DIR_WEST);
+ return sub_8062040(mapObject, sprite);
+}
+
+bool8 sub_8062040(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (sub_8061340(mapObject, sprite))
+ {
+ sprite->data2 = 2;
+ mapObject->mapobj_bit_5 = 0;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 sub_8062088(struct MapObject *, struct Sprite *);
+
+bool8 sub_8062068(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ sub_8061F5C(mapObject, sprite, DIR_EAST);
+ return sub_8062088(mapObject, sprite);
+}
+
+bool8 sub_8062088(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (sub_8061340(mapObject, sprite))
+ {
+ sprite->data2 = 2;
+ mapObject->mapobj_bit_5 = 0;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 sub_80620B0(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 objectId;
+ if (!TryGetFieldObjectIdByLocalIdAndMap(0xFF, MAP_GROUP_PETALBURG_CITY, MAP_ID_PETALBURG_CITY, &objectId))
+ {
+ an_look_any(mapObject, sprite, sub_805FE90(mapObject->coords2.x, mapObject->coords2.y, gMapObjects[objectId].coords2.x, gMapObjects[objectId].coords2.y));
+ }
+ sprite->data2 = 1;
+ return TRUE;
+}
+
+bool8 sub_806210C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 objectId;
+ if (!TryGetFieldObjectIdByLocalIdAndMap(0xFF, MAP_GROUP_PETALBURG_CITY, MAP_ID_PETALBURG_CITY, &objectId))
+ {
+ an_look_any(mapObject, sprite, GetOppositeDirection(sub_805FE90(mapObject->coords2.x, mapObject->coords2.y, gMapObjects[objectId].coords2.x, gMapObjects[objectId].coords2.y)));
+ }
+ sprite->data2 = 1;
+ return TRUE;
+}
+
+bool8 sub_8062170(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ mapObject->mapobj_bit_9 = 1;
+ sprite->data2 = 1;
+ return TRUE;
+}
+
+bool8 sub_8062180(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ mapObject->mapobj_bit_9 = 0;
+ sprite->data2 = 1;
+ return TRUE;
+}
+
+bool8 sub_80621BC(struct MapObject *mapObject, struct Sprite *sprite);
+
+bool8 sub_8062190(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ maybe_shadow_1(mapObject, sprite, DIR_SOUTH, 1, 2);
+ return sub_80621BC(mapObject, sprite);
+}
+
+bool8 sub_80621BC(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (sub_8061328(mapObject, sprite))
+ {
+ mapObject->mapobj_bit_22 = 0;
+ sprite->data2 = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 sub_8062214(struct MapObject *mapObject, struct Sprite *sprite);
+
+bool8 sub_80621E8(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ maybe_shadow_1(mapObject, sprite, DIR_NORTH, 1, 2);
+ return sub_8062214(mapObject, sprite);
+}
+
+bool8 sub_8062214(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (sub_8061328(mapObject, sprite))
+ {
+ mapObject->mapobj_bit_22 = 0;
+ sprite->data2 = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 sub_806226C(struct MapObject *mapObject, struct Sprite *sprite);
+
+bool8 sub_8062240(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ maybe_shadow_1(mapObject, sprite, DIR_WEST, 1, 2);
+ return sub_806226C(mapObject, sprite);
+}
+
+bool8 sub_806226C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (sub_8061328(mapObject, sprite))
+ {
+ mapObject->mapobj_bit_22 = 0;
+ sprite->data2 = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 sub_80622C4(struct MapObject *mapObject, struct Sprite *sprite);
+
+bool8 sub_8062298(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ maybe_shadow_1(mapObject, sprite, DIR_EAST, 1, 2);
+ return sub_80622C4(mapObject, sprite);
+}
+
+bool8 sub_80622C4(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (sub_8061328(mapObject, sprite))
+ {
+ mapObject->mapobj_bit_22 = 0;
+ sprite->data2 = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 sub_806231C(struct MapObject *mapObject, struct Sprite *sprite);
+
+bool8 sub_80622F0(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ maybe_shadow_1(mapObject, sprite, DIR_SOUTH, 0, 0);
+ return sub_806231C(mapObject, sprite);
+}
+
+bool8 sub_806231C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (sub_8061328(mapObject, sprite))
+ {
+ mapObject->mapobj_bit_22 = 0;
+ sprite->data2 = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 sub_8062374(struct MapObject *mapObject, struct Sprite *sprite);
+
+bool8 sub_8062348(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ maybe_shadow_1(mapObject, sprite, DIR_NORTH, 0, 0);
+ return sub_8062374(mapObject, sprite);
+}
+
+bool8 sub_8062374(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (sub_8061328(mapObject, sprite))
+ {
+ mapObject->mapobj_bit_22 = 0;
+ sprite->data2 = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 sub_80623CC(struct MapObject *mapObject, struct Sprite *sprite);
+
+bool8 sub_80623A0(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ maybe_shadow_1(mapObject, sprite, DIR_WEST, 0, 0);
+ return sub_80623CC(mapObject, sprite);
+}
+
+bool8 sub_80623CC(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (sub_8061328(mapObject, sprite))
+ {
+ mapObject->mapobj_bit_22 = 0;
+ sprite->data2 = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 sub_8062424(struct MapObject *mapObject, struct Sprite *sprite);
+
+bool8 sub_80623F8(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ maybe_shadow_1(mapObject, sprite, DIR_EAST, 0, 0);
+ return sub_8062424(mapObject, sprite);
+}
+
+bool8 sub_8062424(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (sub_8061328(mapObject, sprite))
+ {
+ mapObject->mapobj_bit_22 = 0;
+ sprite->data2 = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 sub_806247C(struct MapObject *mapObject, struct Sprite *sprite);
+
+bool8 sub_8062450(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ maybe_shadow_1(mapObject, sprite, DIR_SOUTH, 0, 2);
+ return sub_806247C(mapObject, sprite);
+}
+
+bool8 sub_806247C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (sub_8061358(mapObject, sprite))
+ {
+ mapObject->mapobj_bit_22 = 0;
+ sprite->data2 = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 sub_80624D4(struct MapObject *mapObject, struct Sprite *sprite);
+
+bool8 sub_80624A8(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ maybe_shadow_1(mapObject, sprite, DIR_NORTH, 0, 2);
+ return sub_80624D4(mapObject, sprite);
+}
+
+bool8 sub_80624D4(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (sub_8061358(mapObject, sprite))
+ {
+ mapObject->mapobj_bit_22 = 0;
+ sprite->data2 = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 sub_806252C(struct MapObject *mapObject, struct Sprite *sprite);
+
+bool8 sub_8062500(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ maybe_shadow_1(mapObject, sprite, DIR_WEST, 0, 2);
+ return sub_806252C(mapObject, sprite);
+}
+
+bool8 sub_806252C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (sub_8061358(mapObject, sprite))
+ {
+ mapObject->mapobj_bit_22 = 0;
+ sprite->data2 = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 sub_8062584(struct MapObject *mapObject, struct Sprite *sprite);
+
+bool8 sub_8062558(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ maybe_shadow_1(mapObject, sprite, DIR_EAST, 0, 2);
+ return sub_8062584(mapObject, sprite);
+}
+
+bool8 sub_8062584(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (sub_8061358(mapObject, sprite))
+ {
+ mapObject->mapobj_bit_22 = 0;
+ sprite->data2 = 2;
+ return TRUE;
+ }
+ return FALSE;
+}
+