summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2017-09-16 21:08:44 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2017-09-16 21:08:44 -0400
commitc98299386077d8a0c34150405ab0458f52fc2015 (patch)
tree9eb03dc96ca0a70b616f7bd6439216782605e688
parent3e472ccc8b9231d3b447fdfdb706a3da5773546b (diff)
IsMetatileDirectionallyImpassable
-rwxr-xr-xasm/field_map_obj.s45
-rwxr-xr-xinclude/data3.h2
-rwxr-xr-xsrc/field_map_obj.c9
3 files changed, 11 insertions, 45 deletions
diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s
index ee67bde5d..7ad4c2818 100755
--- a/asm/field_map_obj.s
+++ b/asm/field_map_obj.s
@@ -5,51 +5,6 @@
.text
- thumb_func_start IsMetatileDirectionallyImpassable
-@ bool8 IsMetatileDirectionallyImpassable(struct npc_state *fieldObject, u16 x, u16 y, u8 direction)
-IsMetatileDirectionallyImpassable: @ 8092DC8
- push {r4-r7,lr}
- lsls r1, 16
- lsrs r6, r1, 16
- lsls r2, 16
- lsrs r7, r2, 16
- lsls r3, 24
- ldr r1, =gUnknown_0850DB5C
- lsrs r3, 22
- subs r5, r3, 0x4
- adds r1, r5, r1
- ldrb r0, [r0, 0x1E]
- ldr r1, [r1]
- bl _call_via_r1
- lsls r0, 24
- cmp r0, 0
- bne _08092E0A
- ldr r4, =gUnknown_0850DB6C
- adds r4, r5, r4
- lsls r0, r6, 16
- asrs r0, 16
- lsls r1, r7, 16
- asrs r1, 16
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 24
- lsrs r0, 24
- ldr r1, [r4]
- bl _call_via_r1
- lsls r0, 24
- cmp r0, 0
- beq _08092E18
-_08092E0A:
- movs r0, 0x1
- b _08092E1A
- .pool
-_08092E18:
- movs r0, 0
-_08092E1A:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end IsMetatileDirectionallyImpassable
-
thumb_func_start CheckForCollisionBetweenFieldObjects
@ bool8 CheckForCollisionBetweenFieldObjects(struct npc_state *fieldObject, u16 x, u16 y)
CheckForCollisionBetweenFieldObjects: @ 8092E20
diff --git a/include/data3.h b/include/data3.h
index 6d9bbd084..0c7de1272 100755
--- a/include/data3.h
+++ b/include/data3.h
@@ -34,6 +34,8 @@ extern const u8 gUnknown_0850D8AC[5];
extern const u8 gUnknown_0850D8C4[5];
extern const u8 gUnknown_0850D8E8[4];
extern bool8 (*const gUnknown_0850DA64[])(struct MapObject *, struct Sprite *, u8, bool8(u8));
+extern bool8 (*const gUnknown_0850DB5C[])(u8);
+extern bool8 (*const gUnknown_0850DB6C[])(u8);
extern const u8 gUnknown_0850DBA0[5];
diff --git a/src/field_map_obj.c b/src/field_map_obj.c
index cc81bcb29..74c71333c 100755
--- a/src/field_map_obj.c
+++ b/src/field_map_obj.c
@@ -3732,6 +3732,15 @@ bool8 IsCoordOutsideFieldObjectMovementRect(struct MapObject2 *mapObject, s16 x,
return FALSE;
}
+bool8 IsMetatileDirectionallyImpassable(struct MapObject *mapObject, s16 x, s16 y, u8 direction)
+{
+ if (gUnknown_0850DB5C[direction - 1](mapObject->mapobj_unk_1E) || gUnknown_0850DB6C[direction - 1](MapGridGetMetatileBehaviorAt(x, y)))
+ {
+ return TRUE;
+ }
+ return FALSE;
+}
+
asm(".section .text.get_face_direction_anim_id");
void FieldObjectClearAnimIfSpecialAnimActive(struct MapObject *);