summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/field_player_avatar.c110
1 files changed, 30 insertions, 80 deletions
diff --git a/src/field_player_avatar.c b/src/field_player_avatar.c
index 1be9ab73e..a8eb835a3 100644
--- a/src/field_player_avatar.c
+++ b/src/field_player_avatar.c
@@ -162,101 +162,51 @@ void player_step(u8 direction, u16 newKeys, u16 heldKeys)
}
}
}
-#ifdef NONMATCHING
+
bool8 TryInterruptEventObjectSpecialAnim(struct EventObject *playerEventObj, u8 direction)
{
+ #ifdef NONMATCHING
+ u8 r5 = direction;
+ u8 r6 = direction;
+ #else
+ u8 r5 = direction;
+ register u8 r6 asm("r6") = direction;
+ #endif
+ //a very bad HACK
+
if (EventObjectIsMovementOverridden(playerEventObj)
&& !EventObjectClearHeldMovementIfFinished(playerEventObj))
{
u8 heldMovementActionId = EventObjectGetHeldMovementActionId(playerEventObj);
if (heldMovementActionId > 24 && heldMovementActionId < 29)
{
- if(direction == DIR_NONE)
- {
- EventObjectClearHeldMovement(playerEventObj);
- return FALSE;
- }
- else if(playerEventObj->movementDirection != direction)
+ if (direction == DIR_NONE)
{
return TRUE;
}
- else if(sub_808B028(direction) == FALSE)
+
+ if (playerEventObj->movementDirection != r5)
{
EventObjectClearHeldMovement(playerEventObj);
return FALSE;
}
- else
+
+ if (!sub_808B028(r6))
{
- return TRUE;
+ EventObjectClearHeldMovement(playerEventObj);
+ return FALSE;
}
}
- else
- {
- return TRUE;
- }
+
+ return TRUE;
}
+
return FALSE;
}
-#else
-NAKED
-bool8 TryInterruptEventObjectSpecialAnim(struct EventObject *playerEventObj, u8 direction)
-{
- asm_unified("push {r4-r6,lr}\n\
- adds r4, r0, 0\n\
- lsls r1, 24\n\
- lsrs r5, r1, 24\n\
- adds r6, r5, 0\n\
- bl EventObjectIsMovementOverridden\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _0808AA92\n\
- adds r0, r4, 0\n\
- bl EventObjectClearHeldMovementIfFinished\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- bne _0808AA92\n\
- adds r0, r4, 0\n\
- bl EventObjectGetHeldMovementActionId\n\
- lsls r0, 24\n\
- movs r1, 0xE7\n\
- lsls r1, 24\n\
- adds r0, r1\n\
- lsrs r0, 24\n\
- cmp r0, 0x3\n\
- bhi _0808AA70\n\
- cmp r5, 0\n\
- bne _0808AA74\n\
-_0808AA70:\n\
- movs r0, 0x1\n\
- b _0808AA94\n\
-_0808AA74:\n\
- ldrb r0, [r4, 0x18]\n\
- lsrs r0, 4\n\
- cmp r0, r5\n\
- beq _0808AA84\n\
-_0808AA7C:\n\
- adds r0, r4, 0\n\
- bl EventObjectClearHeldMovement\n\
- b _0808AA92\n\
-_0808AA84:\n\
- adds r0, r6, 0\n\
- bl sub_808B028\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _0808AA7C\n\
- b _0808AA70\n\
-_0808AA92:\n\
- movs r0, 0\n\
-_0808AA94:\n\
- pop {r4-r6}\n\
- pop {r1}\n\
- bx r1");
-}
-#endif
void npc_clear_strange_bits(struct EventObject *eventObj)
{
- eventObj->inanimate = 0;
+ eventObj->inanimate = 0;
eventObj->disableAnim = 0;
eventObj->facingDirectionLocked = 0;
gPlayerAvatar.flags &= ~PLAYER_AVATAR_FLAG_DASH;
@@ -491,14 +441,14 @@ void PlayerNotOnBikeMoving(u8 direction, u16 heldKeys)
{
u8 r0 = CheckForPlayerAvatarCollision(direction);
- if(r0 != 0)
+ if (r0 != 0)
{
- if(r0 == 6)
+ if (r0 == 6)
{
PlayerJumpLedge(direction);
return;
}
- else if(r0 == 4 && IsPlayerCollidingWithFarawayIslandMew(direction) != 0)
+ else if (r0 == 4 && IsPlayerCollidingWithFarawayIslandMew(direction) != 0)
{
PlayerNotOnBikeCollideWithFarawayIslandMew(direction);
return;
@@ -507,7 +457,7 @@ void PlayerNotOnBikeMoving(u8 direction, u16 heldKeys)
{
u8 r4 = r0 - 5;
- if(r4 > 3)
+ if (r4 > 3)
{
PlayerNotOnBikeCollide(direction);
return;
@@ -521,7 +471,7 @@ void PlayerNotOnBikeMoving(u8 direction, u16 heldKeys)
if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_SURFING)
{
- // speed 2 is fast, same speed as running
+ // speed 2 is fast, same speed as running
PlayerGoSpeed2(direction);
return;
}
@@ -605,20 +555,20 @@ bool8 sub_808B1BC(s16 x, s16 y, u8 direction)
&& GetEventObjectIdByXYZ(x, y, 3) == 16)
{
sub_808C750(direction);
- return 1;
+ return TRUE;
}
else
{
- return 0;
+ return FALSE;
}
}
bool8 ShouldJumpLedge(s16 x, s16 y, u8 z)
{
if (GetLedgeJumpDirection(x, y, z) != 0)
- return 1;
+ return TRUE;
else
- return 0;
+ return FALSE;
}
u8 sub_808B238(s16 x, s16 y, u8 direction)