From c98299386077d8a0c34150405ab0458f52fc2015 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 16 Sep 2017 21:08:44 -0400 Subject: [PATCH] IsMetatileDirectionallyImpassable --- asm/field_map_obj.s | 45 --------------------------------------------- include/data3.h | 2 ++ src/field_map_obj.c | 9 +++++++++ 3 files changed, 11 insertions(+), 45 deletions(-) diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s index ee67bde5d1..7ad4c2818b 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 6d9bbd084f..0c7de12725 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 cc81bcb29b..74c71333c9 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 *);