IsMetatileDirectionallyImpassable

This commit is contained in:
PikalaxALT 2017-09-16 21:08:44 -04:00
parent 3e472ccc8b
commit c982993860
3 changed files with 11 additions and 45 deletions

View file

@ -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

View file

@ -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];

View file

@ -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 *);