IsMetatileDirectionallyImpassable
This commit is contained in:
parent
3e472ccc8b
commit
c982993860
3 changed files with 11 additions and 45 deletions
|
@ -5,51 +5,6 @@
|
||||||
|
|
||||||
.text
|
.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
|
thumb_func_start CheckForCollisionBetweenFieldObjects
|
||||||
@ bool8 CheckForCollisionBetweenFieldObjects(struct npc_state *fieldObject, u16 x, u16 y)
|
@ bool8 CheckForCollisionBetweenFieldObjects(struct npc_state *fieldObject, u16 x, u16 y)
|
||||||
CheckForCollisionBetweenFieldObjects: @ 8092E20
|
CheckForCollisionBetweenFieldObjects: @ 8092E20
|
||||||
|
|
|
@ -34,6 +34,8 @@ extern const u8 gUnknown_0850D8AC[5];
|
||||||
extern const u8 gUnknown_0850D8C4[5];
|
extern const u8 gUnknown_0850D8C4[5];
|
||||||
extern const u8 gUnknown_0850D8E8[4];
|
extern const u8 gUnknown_0850D8E8[4];
|
||||||
extern bool8 (*const gUnknown_0850DA64[])(struct MapObject *, struct Sprite *, u8, bool8(u8));
|
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];
|
extern const u8 gUnknown_0850DBA0[5];
|
||||||
|
|
||||||
|
|
|
@ -3732,6 +3732,15 @@ bool8 IsCoordOutsideFieldObjectMovementRect(struct MapObject2 *mapObject, s16 x,
|
||||||
return FALSE;
|
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");
|
asm(".section .text.get_face_direction_anim_id");
|
||||||
|
|
||||||
void FieldObjectClearAnimIfSpecialAnimActive(struct MapObject *);
|
void FieldObjectClearAnimIfSpecialAnimActive(struct MapObject *);
|
||||||
|
|
Loading…
Reference in a new issue