summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/field_map_obj.s150
-rw-r--r--include/field_map_obj_helpers.h2
-rwxr-xr-xsrc/field_map_obj.c65
3 files changed, 67 insertions, 150 deletions
diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s
index 65a0db86e..73b0ec9dd 100644
--- a/asm/field_map_obj.s
+++ b/asm/field_map_obj.s
@@ -1353,156 +1353,6 @@ sub_805FD08: @ 805FD08
.section .text_805fd18
- thumb_func_start sub_8061300
-sub_8061300: @ 8061300
- push {lr}
- ldr r2, _08061310 @ =sub_8064704
- bl sub_806123C
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_08061310: .4byte sub_8064704
- thumb_func_end sub_8061300
-
- thumb_func_start sub_8061314
-sub_8061314: @ 8061314
- push {lr}
- ldr r2, _08061324 @ =sub_806478C
- bl sub_806123C
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_08061324: .4byte sub_806478C
- thumb_func_end sub_8061314
-
- thumb_func_start sub_8061328
-sub_8061328: @ 8061328
- push {lr}
- bl sub_8061300
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFF
- beq _0806133A
- movs r0, 0
- b _0806133C
-_0806133A:
- movs r0, 0x1
-_0806133C:
- pop {r1}
- bx r1
- thumb_func_end sub_8061328
-
- thumb_func_start sub_8061340
-sub_8061340: @ 8061340
- push {lr}
- bl sub_8061314
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFF
- beq _08061352
- movs r0, 0
- b _08061354
-_08061352:
- movs r0, 0x1
-_08061354:
- pop {r1}
- bx r1
- thumb_func_end sub_8061340
-
- thumb_func_start sub_8061358
-sub_8061358: @ 8061358
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- bl sub_8061300
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08061372
- cmp r0, 0xFF
- bne _0806139E
- movs r0, 0x1
- b _080613A0
-_08061372:
- ldrb r0, [r4, 0x18]
- lsrs r0, 4
- bl GetOppositeDirection
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl FieldObjectSetDirection
- ldrb r0, [r4, 0x18]
- lsls r0, 28
- lsrs r0, 28
- bl get_go_image_anim_num
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_805FE64
-_0806139E:
- movs r0, 0
-_080613A0:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8061358
-
- thumb_func_start sub_80613A8
-sub_80613A8: @ 80613A8
- 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, 0x2
- bl maybe_shadow_1
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_80613D4
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80613A8
-
- thumb_func_start sub_80613D4
-sub_80613D4: @ 80613D4
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- bl sub_8061328
- lsls r0, 24
- cmp r0, 0
- bne _080613E8
- movs r0, 0
- b _080613F8
-_080613E8:
- 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
-_080613F8:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80613D4
-
thumb_func_start sub_8061400
sub_8061400: @ 8061400
push {r4,r5,lr}
diff --git a/include/field_map_obj_helpers.h b/include/field_map_obj_helpers.h
index 0280dc502..119cdd5f8 100644
--- a/include/field_map_obj_helpers.h
+++ b/include/field_map_obj_helpers.h
@@ -13,5 +13,7 @@ void sub_806467C(struct Sprite *sprite, u8 direction);
bool8 sub_806468C(struct Sprite *sprite);
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 *);
#endif
diff --git a/src/field_map_obj.c b/src/field_map_obj.c
index 65ef99b3b..eedb74033 100755
--- a/src/field_map_obj.c
+++ b/src/field_map_obj.c
@@ -4469,3 +4469,68 @@ u8 sub_806123C(struct MapObject *mapObject, struct Sprite *sprite, u8 (*const ca
}
return retval;
}
+
+u8 sub_8061300(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ return sub_806123C(mapObject, sprite, sub_8064704);
+}
+
+u8 sub_8061314(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ return sub_806123C(mapObject, sprite, sub_806478C);
+}
+
+bool8 sub_8061328(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (sub_8061300(mapObject, sprite) == 0xFF)
+ {
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 sub_8061340(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (sub_8061314(mapObject, sprite) == 0xFF)
+ {
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 sub_8061358(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 retval;
+
+ retval = sub_8061300(mapObject, sprite);
+ if (retval != 1)
+ {
+ if (retval == 0xFF)
+ {
+ return TRUE;
+ }
+ return FALSE;
+ }
+ FieldObjectSetDirection(mapObject, GetOppositeDirection(mapObject->placeholder18));
+ sub_805FE64(mapObject, sprite, get_go_image_anim_num(mapObject->mapobj_unk_18));
+ return FALSE;
+}
+
+bool8 sub_80613D4(struct MapObject *, struct Sprite *);
+
+bool8 sub_80613A8(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ maybe_shadow_1(mapObject, sprite, DIR_SOUTH, 2, 0);
+ return sub_80613D4(mapObject, sprite);
+}
+
+bool8 sub_80613D4(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ if (sub_8061328(mapObject, sprite))
+ {
+ mapObject->mapobj_bit_22 = 0;
+ sprite->data2 = 2;
+ return TRUE;
+ }
+ return FALSE;
+}