summaryrefslogtreecommitdiff
path: root/src/bike.c
diff options
context:
space:
mode:
authorCameron Hall <camthesaxman@users.noreply.github.com>2017-01-21 22:04:49 -0600
committerYamaArashi <YamaArashi@users.noreply.github.com>2017-01-21 20:04:49 -0800
commitef82a98a1525f58d3a6c56194a42f7660cfc923b (patch)
treedf3160b491cdc5081b57eefed93aa2fc1eada989 /src/bike.c
parentbcaab977727ded65c9eeaef9dbef9e9441d26fb7 (diff)
label a few things and put data in field_player_avatar.c (#212)
Diffstat (limited to 'src/bike.c')
-rw-r--r--src/bike.c478
1 files changed, 256 insertions, 222 deletions
diff --git a/src/bike.c b/src/bike.c
index ce175bc66..bd4c2e411 100644
--- a/src/bike.c
+++ b/src/bike.c
@@ -29,52 +29,52 @@ extern u8 gUnknown_0202E86C[];
extern u8 gUnknown_0202E874[];
static void MovePlayerOnMachBike(u8, u16, u16);
-static u8 CheckMovementInputMachBike(u8 *);
-static void sub_80E5168(u8);
-static void sub_80E517C(u8);
-static void sub_80E51C4(u8);
-static void sub_80E5270(u8);
+static u8 GetMachBikeTransition(u8 *);
+static void MachBikeTransition_FaceDirection(u8);
+static void MachBikeTransition_80E517C(u8);
+static void MachBikeTransition_80E51C4(u8);
+static void MachBikeTransition_80E5270(u8);
static void MovePlayerOnAcroBike(u8, u16, u16);
static u8 CheckMovementInputAcroBike(u8 *, u16, u16);
-static u8 CheckMovementInputAcroBikeNormal(u8 *, u16, u16);
-static u8 CheckMovementInputAcroBikeChangingDirection(u8 *, u16, u16);
-static u8 CheckMovementInputAcroBikeStandingWheelie(u8 *, u16, u16);
-static u8 CheckMovementInputAcroBikeBunnyHop(u8 *, u16, u16);
-static u8 CheckMovementInputAcroBikeMovingWheelie(u8 *, u16, u16);
-static u8 CheckMovementInputAcroBikeUnknownMode5(u8 *, u16, u16);
-static u8 CheckMovementInputAcroBikeUnknownMode6(u8 *, u16, u16);
-static void sub_80E56F8(u8);
-static void sub_80E5708(u8);
-static void sub_80E5744(u8);
-static void sub_80E57BC(u8);
-static void sub_80E57F8(u8);
-static void sub_80E5834(u8);
-static void sub_80E5870(u8);
-static void sub_80E58AC(u8);
-static void sub_80E5920(u8);
-static void sub_80E5990(u8);
-static void sub_80E59A0(u8);
-static void sub_80E5A30(u8);
-static void sub_80E5AC0(u8);
+static u8 AcroBikeHandleInputNormal(u8 *, u16, u16);
+static u8 AcroBikeHandleInputTurning(u8 *, u16, u16);
+static u8 AcroBikeHandleInputWheelieStanding(u8 *, u16, u16);
+static u8 AcroBikeHandleInputBunnyHop(u8 *, u16, u16);
+static u8 AcroBikeHandleInputWheelieMoving(u8 *, u16, u16);
+static u8 AcroBikeHandleInputState5(u8 *, u16, u16);
+static u8 AcroBikeHandleInputState6(u8 *, u16, u16);
+static void AcroBikeTransition_FaceDirection(u8);
+static void AcroBikeTransition_80E5708(u8);
+static void AcroBikeTransition_80E5744(u8);
+static void AcroBikeTransition_NormalToWheelie(u8);
+static void AcroBikeTransition_80E57F8(u8);
+static void AcroBikeTransition_80E5834(u8);
+static void AcroBikeTransition_80E5870(u8);
+static void AcroBikeTransition_80E58AC(u8);
+static void AcroBikeTransition_80E5920(u8);
+static void AcroBikeTransition_80E5990(u8);
+static void AcroBikeTransition_80E59A0(u8);
+static void AcroBikeTransition_80E5A30(u8);
+static void AcroBikeTransition_80E5AC0(u8);
static void sub_80E5B60(u16, u16);
static u8 sub_80E5C2C(void);
static void sub_80E5C7C(u8);
static void sub_80E5CB8(u8);
static u8 sub_80E5CF4(u16);
-static u8 sub_80E5D34(u8);
+static u8 get_some_collision(u8);
static u8 sub_80E5DA0(struct MapObject *, s16, s16, u8, u8);
static bool8 IsRunningDisallowedByMetatile(u8);
static void sub_80E5E4C();
-static u8 sub_80E5E70(u8, u8);
+static u8 CanBikeFaceDirOnMetatile(u8, u8);
static bool8 sub_80E5EC0(u8, u8);
static void sub_80E6024(void);
-static void (*const gUnknown_083DB594[])(u8) =
+static void (*const sMachBikeTransitions[])(u8) =
{
- sub_80E5168,
- sub_80E517C,
- sub_80E51C4,
- sub_80E5270,
+ MachBikeTransition_FaceDirection,
+ MachBikeTransition_80E517C,
+ MachBikeTransition_80E51C4,
+ MachBikeTransition_80E5270,
};
static void (*const gUnknown_083DB5A4[])(u8) =
@@ -84,32 +84,52 @@ static void (*const gUnknown_083DB5A4[])(u8) =
sub_80593F4,
};
-static void (*const gUnknown_083DB5B0[])(u8) =
-{
- sub_80E56F8,
- sub_80E5708,
- sub_80E5744,
- sub_80E57BC,
- sub_80E57F8,
- sub_80E5834,
- sub_80E5870,
- sub_80E58AC,
- sub_80E5920,
- sub_80E5990,
- sub_80E59A0,
- sub_80E5A30,
- sub_80E5AC0,
+//Acro bike states
+enum
+{
+ ACRO_STATE_NORMAL,
+ ACRO_STATE_TURNING,
+ ACRO_STATE_WHEELIE_STANDING,
+ ACRO_STATE_BUNNY_HOP,
+ ACRO_STATE_WHEELIE_MOVING,
+ ACRO_STATE_5,
+ ACRO_STATE_6,
};
-static u8 (*const gUnknown_083DB5E4[])(u8 *, u16, u16) =
+//Acro bike transitions
+enum
{
- CheckMovementInputAcroBikeNormal,
- CheckMovementInputAcroBikeChangingDirection,
- CheckMovementInputAcroBikeStandingWheelie,
- CheckMovementInputAcroBikeBunnyHop,
- CheckMovementInputAcroBikeMovingWheelie,
- CheckMovementInputAcroBikeUnknownMode5,
- CheckMovementInputAcroBikeUnknownMode6,
+ ACRO_TRANS_FACE_DIRECTION,
+ ACRO_TRANS_NORMAL_TO_WHEELIE = 3,
+ ACRO_TRANS_WHEELIE_TO_NORMAL,
+};
+
+static void (*const sAcroBikeTransitions[])(u8) =
+{
+ AcroBikeTransition_FaceDirection,
+ AcroBikeTransition_80E5708,
+ AcroBikeTransition_80E5744,
+ AcroBikeTransition_NormalToWheelie,
+ AcroBikeTransition_80E57F8,
+ AcroBikeTransition_80E5834,
+ AcroBikeTransition_80E5870,
+ AcroBikeTransition_80E58AC,
+ AcroBikeTransition_80E5920,
+ AcroBikeTransition_80E5990,
+ AcroBikeTransition_80E59A0,
+ AcroBikeTransition_80E5A30,
+ AcroBikeTransition_80E5AC0,
+};
+
+static u8 (*const sAcroBikeInputHandlers[])(u8 *, u16, u16) =
+{
+ AcroBikeHandleInputNormal,
+ AcroBikeHandleInputTurning,
+ AcroBikeHandleInputWheelieStanding,
+ AcroBikeHandleInputBunnyHop,
+ AcroBikeHandleInputWheelieMoving,
+ AcroBikeHandleInputState5,
+ AcroBikeHandleInputState6,
};
const u16 gUnknown_083DB600[] = {1, 2, 4};
@@ -123,20 +143,20 @@ static const struct UnknownStruct1 gUnknown_083DB608[] =
{4, 2, 15, 15, Unknown_3DB606, Unknown_3DB606, 4},
};
-void MovePlayerOnBike(u8 var1, u16 var2, u16 var3)
+void MovePlayerOnBike(u8 direction, u16 newKeys, u16 heldKeys)
{
if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_MACH_BIKE)
- MovePlayerOnMachBike(var1, var2, var3);
+ MovePlayerOnMachBike(direction, newKeys, heldKeys);
else
- MovePlayerOnAcroBike(var1, var2, var3);
+ MovePlayerOnAcroBike(direction, newKeys, heldKeys);
}
-static void MovePlayerOnMachBike(u8 var1, u16 var2, u16 var3)
+static void MovePlayerOnMachBike(u8 direction, u16 newKeys, u16 heldKeys)
{
- gUnknown_083DB594[CheckMovementInputMachBike(&var1)](var1); // var2 and var3 arent used?
+ sMachBikeTransitions[GetMachBikeTransition(&direction)](direction);
}
-static u8 CheckMovementInputMachBike(u8 *ptr)
+static u8 GetMachBikeTransition(u8 *ptr)
{
u8 direction = player_get_direction_upper_nybble();
@@ -170,176 +190,180 @@ static u8 CheckMovementInputMachBike(u8 *ptr)
}
}
-static void sub_80E5168(u8 var)
+static void MachBikeTransition_FaceDirection(u8 direction)
{
- PlayerFaceDirection(var);
+ PlayerFaceDirection(direction);
sub_80E6024();
}
-static void sub_80E517C(u8 var)
+static void MachBikeTransition_80E517C(u8 direction)
{
- struct MapObject *mapPtr = &gMapObjects[gPlayerAvatar.mapObjectId];
+ struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
- if (sub_80E5E70(var, mapPtr->mapobj_unk_1E))
+ if (CanBikeFaceDirOnMetatile(direction, playerMapObj->mapobj_unk_1E))
{
- PlayerTurnInPlace(var);
+ PlayerTurnInPlace(direction);
sub_80E6024();
}
else
{
- sub_80E5168(mapPtr->mapobj_unk_18);
+ MachBikeTransition_FaceDirection(playerMapObj->mapobj_unk_18);
}
}
-static void sub_80E51C4(u8 var)
+static void MachBikeTransition_80E51C4(u8 direction)
{
- struct MapObject *mapPtr = &gMapObjects[gPlayerAvatar.mapObjectId];
- u8 funcVar;
+ struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
+ u8 collision;
- if (sub_80E5E70(var, mapPtr->mapobj_unk_1E) == 0)
+ if (CanBikeFaceDirOnMetatile(direction, playerMapObj->mapobj_unk_1E) == 0)
{
if (gPlayerAvatar.unkB)
- sub_80E5270(mapPtr->placeholder18);
+ MachBikeTransition_80E5270(playerMapObj->placeholder18);
else
- sub_80E5168(mapPtr->placeholder18);
+ MachBikeTransition_FaceDirection(playerMapObj->placeholder18);
}
else
{
- funcVar = sub_80E5D34(var);
- if (funcVar > 0 && funcVar < 12)
+ collision = get_some_collision(direction);
+ if (collision > 0 && collision < 12)
{
- if (funcVar == 6)
+ if (collision == COLLISION_LEDGE_JUMP)
{
- PlayerJumpLedge(var);
+ PlayerJumpLedge(direction);
}
else
{
sub_80E6024();
- if (funcVar < 5 || funcVar > 8)
- PlayerOnBikeCollide(var);
+ if (collision < 5 || collision > 8)
+ PlayerOnBikeCollide(direction);
}
}
else
{
- gUnknown_083DB5A4[gPlayerAvatar.unkA](var);
- gPlayerAvatar.unkB = gPlayerAvatar.unkA + (gPlayerAvatar.unkA >> 1); // same as dividing by 2, but compiler is insistent on >> 1
- if (gPlayerAvatar.unkA < 2)
- gPlayerAvatar.unkA++;
+ gUnknown_083DB5A4[gPlayerAvatar.bikeFrameCounter](direction);
+ gPlayerAvatar.unkB = gPlayerAvatar.bikeFrameCounter + (gPlayerAvatar.bikeFrameCounter >> 1); // same as dividing by 2, but compiler is insistent on >> 1
+ if (gPlayerAvatar.bikeFrameCounter < 2)
+ gPlayerAvatar.bikeFrameCounter++;
}
}
}
-static void sub_80E5270(u8 var)
+static void MachBikeTransition_80E5270(u8 var)
{
- u8 funcVar;
+ u8 collision;
if (gPlayerAvatar.unkB != 0)
- gPlayerAvatar.unkA = --gPlayerAvatar.unkB;
+ gPlayerAvatar.bikeFrameCounter = --gPlayerAvatar.unkB;
- funcVar = sub_80E5D34(var);
+ collision = get_some_collision(var);
- if (funcVar > 0 && funcVar < 12)
+ if (collision > 0 && collision < 12)
{
- if (funcVar == 6)
+ if (collision == COLLISION_LEDGE_JUMP)
{
PlayerJumpLedge(var);
}
else
{
sub_80E6024();
- if (funcVar < 5 || funcVar > 8)
+ if (collision < 5 || collision > 8)
PlayerOnBikeCollide(var);
}
}
else
{
- gUnknown_083DB5A4[gPlayerAvatar.unkA](var);
+ gUnknown_083DB5A4[gPlayerAvatar.bikeFrameCounter](var);
}
}
-static void MovePlayerOnAcroBike(u8 var1, u16 var2, u16 var3)
+static void MovePlayerOnAcroBike(u8 newDirection, u16 newKeys, u16 heldKeys)
{
- gUnknown_083DB5B0[CheckMovementInputAcroBike(&var1, var2, var3)](var1);
+ sAcroBikeTransitions[CheckMovementInputAcroBike(&newDirection, newKeys, heldKeys)](newDirection);
}
-static u8 CheckMovementInputAcroBike(u8 *ptr, u16 var1, u16 var2)
+static u8 CheckMovementInputAcroBike(u8 *newDirection, u16 newKeys, u16 heldKeys)
{
- return gUnknown_083DB5E4[gPlayerAvatar.unk8](ptr, var1, var2);
+ return sAcroBikeInputHandlers[gPlayerAvatar.acroBikeState](newDirection, newKeys, heldKeys);
}
-static u8 CheckMovementInputAcroBikeNormal(u8 *ptr, u16 var1, u16 var2)
+static u8 AcroBikeHandleInputNormal(u8 *newDirection, u16 newKeys, u16 heldKeys)
{
u8 direction = player_get_direction_upper_nybble();
- gPlayerAvatar.unkA = 0;
- if (*ptr == 0)
+ gPlayerAvatar.bikeFrameCounter = 0;
+ if (*newDirection == DIR_NONE)
{
- if (var1 & 2)
+ if (newKeys & B_BUTTON)
{
- *ptr = direction;
+ //We're standing still with the B button held.
+ //Do a wheelie.
+ *newDirection = direction;
gPlayerAvatar.running2 = 0;
- gPlayerAvatar.unk8 = 2;
- return 3;
+ gPlayerAvatar.acroBikeState = ACRO_STATE_WHEELIE_STANDING;
+ return ACRO_TRANS_NORMAL_TO_WHEELIE;
}
else
{
- *ptr = direction;
+ *newDirection = direction;
gPlayerAvatar.running2 = 0;
- return 0;
+ return ACRO_TRANS_FACE_DIRECTION;
}
}
- if (*ptr == direction && (var2 & 2) && gPlayerAvatar.unkB == 0)
+ if (*newDirection == direction && (heldKeys & B_BUTTON) && gPlayerAvatar.unkB == 0)
{
gPlayerAvatar.unkB++;
- gPlayerAvatar.unk8 = 4;
+ gPlayerAvatar.acroBikeState = ACRO_STATE_WHEELIE_MOVING;
return 11;
}
- if (*ptr != direction && gPlayerAvatar.running2 != 2)
+ if (*newDirection != direction && gPlayerAvatar.running2 != 2)
{
- gPlayerAvatar.unk8 = 1;
- gPlayerAvatar.unk9 = *ptr;
+ gPlayerAvatar.acroBikeState = ACRO_STATE_TURNING;
+ gPlayerAvatar.unk9 = *newDirection;
gPlayerAvatar.running2 = 0;
- return CheckMovementInputAcroBike(ptr, var1, var2);
+ return CheckMovementInputAcroBike(newDirection, newKeys, heldKeys);
}
gPlayerAvatar.running2 = 2;
return 2;
}
-static u8 CheckMovementInputAcroBikeChangingDirection(u8 *ptr, u16 unused1, u16 unused2)
+static u8 AcroBikeHandleInputTurning(u8 *newDirection, u16 newKeys, u16 heldKeys)
{
u8 direction;
- *ptr = gPlayerAvatar.unk9;
- gPlayerAvatar.unkA++;
- if (gPlayerAvatar.unkA > 6)
+ *newDirection = gPlayerAvatar.unk9;
+ gPlayerAvatar.bikeFrameCounter++;
+
+ //Wait 6 frames before actually changing direction
+ if (gPlayerAvatar.bikeFrameCounter > 6)
{
gPlayerAvatar.running2 = 1;
- gPlayerAvatar.unk8 = 0;
+ gPlayerAvatar.acroBikeState = ACRO_STATE_NORMAL;
sub_80E6024();
return 1;
}
direction = player_get_direction_upper_nybble();
- if (*ptr == sub_80E5C2C())
+ if (*newDirection == sub_80E5C2C())
{
sub_80E6024();
gPlayerAvatar.unkB = 1;
- if (*ptr == GetOppositeDirection(direction))
+ if (*newDirection == GetOppositeDirection(direction))
{
- gPlayerAvatar.unk8 = 6;
+ gPlayerAvatar.acroBikeState = ACRO_STATE_6;
return 9;
}
else
{
gPlayerAvatar.running2 = 2;
- gPlayerAvatar.unk8 = 5;
+ gPlayerAvatar.acroBikeState = ACRO_STATE_5;
return 8;
}
}
- *ptr = direction;
+ *newDirection = direction;
return 0;
}
-static u8 CheckMovementInputAcroBikeStandingWheelie(u8 *ptr, u16 unused1, u16 c)
+static u8 AcroBikeHandleInputWheelieStanding(u8 *ptr, u16 newKeys, u16 heldKeys)
{
u8 direction;
struct MapObject *playerMapObj;
@@ -347,32 +371,33 @@ static u8 CheckMovementInputAcroBikeStandingWheelie(u8 *ptr, u16 unused1, u16 c)
direction = player_get_direction_upper_nybble();
playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
gPlayerAvatar.running2 = 0;
- if (c & 2)
- {
- gPlayerAvatar.unkA++;
- }
+
+ if (heldKeys & B_BUTTON)
+ gPlayerAvatar.bikeFrameCounter++;
else
{
- gPlayerAvatar.unkA = 0;
+ //B button was released.
+ gPlayerAvatar.bikeFrameCounter = 0;
if (!MetatileBehavior_IsBumpySlope(playerMapObj->mapobj_unk_1E))
{
+ //Go back to normal on flat ground
*ptr = direction;
- gPlayerAvatar.unk8 = 0;
+ gPlayerAvatar.acroBikeState = ACRO_STATE_NORMAL;
sub_80E6024();
return 4;
}
}
- if (gPlayerAvatar.unkA > 0x27)
+ if (gPlayerAvatar.bikeFrameCounter >= 40)
{
*ptr = direction;
- gPlayerAvatar.unk8 = 3;
+ gPlayerAvatar.acroBikeState = ACRO_STATE_BUNNY_HOP;
sub_80E6024();
return 6;
}
if (*ptr == direction)
{
gPlayerAvatar.running2 = 2;
- gPlayerAvatar.unk8 = 4;
+ gPlayerAvatar.acroBikeState = ACRO_STATE_WHEELIE_MOVING;
sub_80E6024();
return 10;
}
@@ -385,27 +410,36 @@ static u8 CheckMovementInputAcroBikeStandingWheelie(u8 *ptr, u16 unused1, u16 c)
return 5;
}
-static u8 CheckMovementInputAcroBikeBunnyHop(u8 *ptr, u16 b, u16 c)
+static u8 AcroBikeHandleInputBunnyHop(u8 *ptr, u16 newKeys, u16 heldKeys)
{
u8 direction;
struct MapObject *playerMapObj;
direction = player_get_direction_upper_nybble();
playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
- if (!(c & 2))
+ if (!(heldKeys & B_BUTTON))
{
+ //B button was released
sub_80E6024();
if (MetatileBehavior_IsBumpySlope(playerMapObj->mapobj_unk_1E))
{
- gPlayerAvatar.unk8 = 2;
- return CheckMovementInputAcroBike(ptr, b, c);
+ //Do a standing wheelie on a bumpy slope
+ gPlayerAvatar.acroBikeState = ACRO_STATE_WHEELIE_STANDING;
+ return CheckMovementInputAcroBike(ptr, newKeys, heldKeys);
+ }
+ else
+ {
+ //Go back to normal on flat ground
+ *ptr = direction;
+ gPlayerAvatar.running2 = 0;
+ gPlayerAvatar.acroBikeState = ACRO_STATE_NORMAL;
+ return 4;
}
- *ptr = direction;
- gPlayerAvatar.running2 = 0;
- gPlayerAvatar.unk8 = 0;
- return 4;
}
- if (*ptr == 0)
+
+ //B Button is still held
+
+ if (*ptr == DIR_NONE)
{
*ptr = direction;
gPlayerAvatar.running2 = 0;
@@ -420,19 +454,19 @@ static u8 CheckMovementInputAcroBikeBunnyHop(u8 *ptr, u16 b, u16 c)
return 7;
}
-static u8 CheckMovementInputAcroBikeMovingWheelie(u8 *ptr, u16 b, u16 c)
+static u8 AcroBikeHandleInputWheelieMoving(u8 *ptr, u16 newKeys, u16 heldKeys)
{
u8 direction;
struct MapObject *playerMapObj;
direction = player_get_direction_lower_nybble();
playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
- if (!(c & 2))
+ if (!(heldKeys & B_BUTTON))
{
sub_80E6024();
if (!MetatileBehavior_IsBumpySlope(playerMapObj->mapobj_unk_1E))
{
- gPlayerAvatar.unk8 = 0;
+ gPlayerAvatar.acroBikeState = ACRO_STATE_NORMAL;
if (*ptr == 0)
{
*ptr = direction;
@@ -447,13 +481,13 @@ static u8 CheckMovementInputAcroBikeMovingWheelie(u8 *ptr, u16 b, u16 c)
gPlayerAvatar.running2 = 2;
return 12;
}
- gPlayerAvatar.unk8 = 2;
- return CheckMovementInputAcroBike(ptr, b, c);
+ gPlayerAvatar.acroBikeState = ACRO_STATE_WHEELIE_STANDING;
+ return CheckMovementInputAcroBike(ptr, newKeys, heldKeys);
}
if (*ptr == 0)
{
*ptr = direction;
- gPlayerAvatar.unk8 = 2;
+ gPlayerAvatar.acroBikeState = ACRO_STATE_WHEELIE_STANDING;
gPlayerAvatar.running2 = 0;
sub_80E6024();
return 5;
@@ -467,52 +501,52 @@ static u8 CheckMovementInputAcroBikeMovingWheelie(u8 *ptr, u16 b, u16 c)
return 10;
}
-static u8 CheckMovementInputAcroBikeUnknownMode5(u8 *ptr, u16 b, u16 c)
+static u8 AcroBikeHandleInputState5(u8 *ptr, u16 newKeys, u16 heldKeys)
{
struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
playerMapObj->mapobj_bit_9 = 0;
FieldObjectSetDirection(playerMapObj, playerMapObj->mapobj_unk_18);
- gPlayerAvatar.unk8 = 0;
- return CheckMovementInputAcroBike(ptr, b, c);
+ gPlayerAvatar.acroBikeState = ACRO_STATE_NORMAL;
+ return CheckMovementInputAcroBike(ptr, newKeys, heldKeys);
}
-static u8 CheckMovementInputAcroBikeUnknownMode6(u8 *ptr, u16 b, u16 c)
+static u8 AcroBikeHandleInputState6(u8 *ptr, u16 newKeys, u16 heldKeys)
{
- gPlayerAvatar.unk8 = 0;
- return CheckMovementInputAcroBike(ptr, b, c);
+ gPlayerAvatar.acroBikeState = ACRO_STATE_NORMAL;
+ return CheckMovementInputAcroBike(ptr, newKeys, heldKeys);
}
-static void sub_80E56F8(u8 direction)
+static void AcroBikeTransition_FaceDirection(u8 direction)
{
PlayerFaceDirection(direction);
}
-static void sub_80E5708(u8 direction)
+static void AcroBikeTransition_80E5708(u8 direction)
{
struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
- if (sub_80E5E70(direction, playerMapObj->mapobj_unk_1E) == 0)
+ if (CanBikeFaceDirOnMetatile(direction, playerMapObj->mapobj_unk_1E) == 0)
direction = playerMapObj->placeholder18;
PlayerFaceDirection(direction);
}
-static void sub_80E5744(u8 direction)
+static void AcroBikeTransition_80E5744(u8 direction)
{
- u8 var;
+ u8 collision;
struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
- if (sub_80E5E70(direction, playerMapObj->mapobj_unk_1E) == 0)
+ if (CanBikeFaceDirOnMetatile(direction, playerMapObj->mapobj_unk_1E) == 0)
{
- sub_80E56F8(playerMapObj->placeholder18);
+ AcroBikeTransition_FaceDirection(playerMapObj->placeholder18);
return;
}
- var = sub_80E5D34(direction);
- if (var > 0 && var < 12)
+ collision = get_some_collision(direction);
+ if (collision > 0 && collision < 12)
{
- if (var == 6)
+ if (collision == COLLISION_LEDGE_JUMP)
PlayerJumpLedge(direction);
- else if (var < 5 || var > 8)
+ else if (collision < 5 || collision > 8)
PlayerOnBikeCollide(direction);
}
else
@@ -521,53 +555,53 @@ static void sub_80E5744(u8 direction)
}
}
-static void sub_80E57BC(u8 direction)
+static void AcroBikeTransition_NormalToWheelie(u8 direction)
{
struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
- if (sub_80E5E70(direction, playerMapObj->mapobj_unk_1E) == 0)
+ if (CanBikeFaceDirOnMetatile(direction, playerMapObj->mapobj_unk_1E) == 0)
direction = playerMapObj->placeholder18;
- sub_805951C(direction);
+ PlayerStartWheelie(direction);
}
-static void sub_80E57F8(u8 direction)
+static void AcroBikeTransition_80E57F8(u8 direction)
{
struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
- if (sub_80E5E70(direction, playerMapObj->mapobj_unk_1E) == 0)
+ if (CanBikeFaceDirOnMetatile(direction, playerMapObj->mapobj_unk_1E) == 0)
direction = playerMapObj->placeholder18;
sub_8059534(direction);
}
-static void sub_80E5834(u8 direction)
+static void AcroBikeTransition_80E5834(u8 direction)
{
struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
- if (sub_80E5E70(direction, playerMapObj->mapobj_unk_1E) == 0)
+ if (CanBikeFaceDirOnMetatile(direction, playerMapObj->mapobj_unk_1E) == 0)
direction = playerMapObj->placeholder18;
sub_8059504(direction);
}
-static void sub_80E5870(u8 direction)
+static void AcroBikeTransition_80E5870(u8 direction)
{
struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
- if (sub_80E5E70(direction, playerMapObj->mapobj_unk_1E) == 0)
+ if (CanBikeFaceDirOnMetatile(direction, playerMapObj->mapobj_unk_1E) == 0)
direction = playerMapObj->placeholder18;
sub_805954C(direction);
}
-static void sub_80E58AC(u8 direction)
+static void AcroBikeTransition_80E58AC(u8 direction)
{
u8 var;
struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
- if (sub_80E5E70(direction, playerMapObj->mapobj_unk_1E) == 0)
+ if (CanBikeFaceDirOnMetatile(direction, playerMapObj->mapobj_unk_1E) == 0)
{
- sub_80E5870(playerMapObj->placeholder18);
+ AcroBikeTransition_80E5870(playerMapObj->placeholder18);
return;
}
- var = sub_80E5D34(direction);
+ var = get_some_collision(direction);
//TODO: Try to get rid of this goto
if (var == 0 || var == 9)
{
@@ -581,7 +615,7 @@ static void sub_80E58AC(u8 direction)
{
if (var <= 11)
{
- sub_80E5870(direction);
+ AcroBikeTransition_80E5870(direction);
}
else
{
@@ -591,49 +625,49 @@ static void sub_80E58AC(u8 direction)
}
}
-static void sub_80E5920(u8 direction)
+static void AcroBikeTransition_80E5920(u8 direction)
{
u8 var;
struct MapObject *playerMapObj;
- var = sub_80E5D34(direction);
+ var = get_some_collision(direction);
if (var != 0)
{
if (var == 7)
return;
if (var < 10)
{
- sub_80E5708(direction);
+ AcroBikeTransition_80E5708(direction);
return;
}
if (sub_80E5EC0(var, direction) == 0)
{
- sub_80E5708(direction);
+ AcroBikeTransition_80E5708(direction);
return;
}
}
playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
PlaySE(SE_JITE_PYOKO);
playerMapObj->mapobj_bit_9 = 1;
- player_npc_set_state_and_x22_etc(sub_80608A4(direction), 2);
+ PlayerSetAnimId(sub_80608A4(direction), 2);
}
-static void sub_80E5990(u8 direction)
+static void AcroBikeTransition_80E5990(u8 direction)
{
sub_80595B8(direction);
}
-static void sub_80E59A0(u8 direction)
+static void AcroBikeTransition_80E59A0(u8 direction)
{
u8 var;
struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
- if (sub_80E5E70(direction, playerMapObj->mapobj_unk_1E) == 0)
+ if (CanBikeFaceDirOnMetatile(direction, playerMapObj->mapobj_unk_1E) == 0)
{
sub_8059504(playerMapObj->placeholder18);
return;
}
- var = sub_80E5D34(direction);
+ var = get_some_collision(direction);
if (var > 0 && var < 12)
{
if (var == 6)
@@ -657,17 +691,17 @@ static void sub_80E59A0(u8 direction)
gPlayerAvatar.running2 = 2;
}
-static void sub_80E5A30(u8 direction)
+static void AcroBikeTransition_80E5A30(u8 direction)
{
u8 var;
struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
- if (sub_80E5E70(direction, playerMapObj->mapobj_unk_1E) == 0)
+ if (CanBikeFaceDirOnMetatile(direction, playerMapObj->mapobj_unk_1E) == 0)
{
- sub_805951C(playerMapObj->placeholder18);
+ PlayerStartWheelie(playerMapObj->placeholder18);
return;
}
- var = sub_80E5D34(direction);
+ var = get_some_collision(direction);
if (var > 0 && var < 12)
{
if (var == 6)
@@ -691,17 +725,17 @@ static void sub_80E5A30(u8 direction)
gPlayerAvatar.running2 = 2;
}
-static void sub_80E5AC0(u8 direction)
+static void AcroBikeTransition_80E5AC0(u8 direction)
{
u8 var;
struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
- if (sub_80E5E70(direction, playerMapObj->mapobj_unk_1E) == 0)
+ if (CanBikeFaceDirOnMetatile(direction, playerMapObj->mapobj_unk_1E) == 0)
{
sub_8059534(playerMapObj->placeholder18);
return;
}
- var = sub_80E5D34(direction);
+ var = get_some_collision(direction);
if (var > 0 && var < 12)
{
if (var == 6)
@@ -777,8 +811,7 @@ static u8 sub_80E5C2C(void)
r1 &= s->unk8;
r2 &= s->unkC;
- if (r1 == s->unk0 && r2 == s->unk4
- && sub_80E5BC8(s->unk10, s->unk14) != 0)
+ if (r1 == s->unk0 && r2 == s->unk4 && sub_80E5BC8(s->unk10, s->unk14))
return s->unk18;
}
return 0;
@@ -819,7 +852,7 @@ static u8 sub_80E5CF4(u16 a)
return 0;
}
-static u8 sub_80E5D34(u8 direction)
+static u8 get_some_collision(u8 direction)
{
s16 x;
s16 y;
@@ -835,18 +868,18 @@ static u8 sub_80E5D34(u8 direction)
static u8 sub_80E5DA0(struct MapObject *mapObject, s16 x, s16 y, u8 direction, u8 metatitleBehavior)
{
- u8 r4 = CheckForFieldObjectCollision(mapObject, x, y, direction, metatitleBehavior);
+ u8 collision = CheckForFieldObjectCollision(mapObject, x, y, direction, metatitleBehavior);
- if (r4 > 4)
- return r4;
+ if (collision > 4)
+ return collision;
- if (r4 == 0 && IsRunningDisallowedByMetatile(metatitleBehavior))
- r4 = 2;
+ if (collision == 0 && IsRunningDisallowedByMetatile(metatitleBehavior))
+ collision = 2;
- if (r4 != 0)
+ if (collision)
sub_80E5E4C();
- return r4;
+ return collision;
}
bool8 sub_80E5DEC(u8 tile)
@@ -872,27 +905,28 @@ static void sub_80E5E4C(void)
gUnknown_02039251++;
}
-static bool8 sub_80E5E70(u8 var1, u8 var2)
+static bool8 CanBikeFaceDirOnMetatile(u8 direction, u8 tile)
{
- if (var1 > 2 && var1 < 5)
+ if (direction == DIR_EAST || direction == DIR_WEST)
{
- if (MetatileBehavior_IsIsolatedVerticalRail(var2)
- || MetatileBehavior_IsVerticalRail(var2))
+ //Bike cannot face east or west on a vertical rail
+ if (MetatileBehavior_IsIsolatedVerticalRail(tile)
+ || MetatileBehavior_IsVerticalRail(tile))
return FALSE;
}
else
{
- if (MetatileBehavior_IsIsolatedHorizontalRail(var2)
- || MetatileBehavior_IsHorizontalRail(var2))
+ //Bike cannot face north or south on a horizontal rail
+ if (MetatileBehavior_IsIsolatedHorizontalRail(tile)
+ || MetatileBehavior_IsHorizontalRail(tile))
return FALSE;
-
}
return TRUE;
}
-static bool8 sub_80E5EC0(u8 var1, u8 var2)
+static bool8 sub_80E5EC0(u8 var1, u8 direction)
{
- if ((u8)(var2 - 1) < 2)
+ if (direction == DIR_NORTH || direction == DIR_SOUTH)
{
if (var1 == 10 || var1 == 12)
return FALSE;
@@ -914,7 +948,7 @@ bool8 IsBikingDisallowedByPlayer(void)
{
PlayerGetDestCoords(&x, &y);
tileBehavior = MapGridGetMetatileBehaviorAt(x, y);
- if (IsRunningDisallowedByMetatile(tileBehavior) == FALSE)
+ if (!IsRunningDisallowedByMetatile(tileBehavior))
return FALSE;
}
return TRUE;
@@ -946,13 +980,13 @@ void GetOnOffBike(u8 var)
}
}
-void sub_80E5FCC(int var1, int var2)
+void BikeClearState(int var1, int var2)
{
u8 i;
- gPlayerAvatar.unk8 = 0;
+ gPlayerAvatar.acroBikeState = ACRO_STATE_NORMAL;
gPlayerAvatar.unk9 = 0;
- gPlayerAvatar.unkA = 0;
+ gPlayerAvatar.bikeFrameCounter = 0;
gPlayerAvatar.unkB = 0;
gPlayerAvatar.unkC = var1;
gPlayerAvatar.unk10 = var2;
@@ -966,13 +1000,13 @@ void sub_80E5FCC(int var1, int var2)
void sub_80E6010(u8 var)
{
- gPlayerAvatar.unkA = var;
- gPlayerAvatar.unkB = gPlayerAvatar.unkA + (gPlayerAvatar.unkA >> 1); // lazy way of multiplying by 1.5.
+ gPlayerAvatar.bikeFrameCounter = var;
+ gPlayerAvatar.unkB = gPlayerAvatar.bikeFrameCounter + (gPlayerAvatar.bikeFrameCounter >> 1); // lazy way of multiplying by 1.5.
}
static void sub_80E6024(void)
{
- gPlayerAvatar.unkA = 0;
+ gPlayerAvatar.bikeFrameCounter = 0;
gPlayerAvatar.unkB = 0;
}
@@ -983,7 +1017,7 @@ s16 sub_80E6034(void)
memcpy(arr, gUnknown_083DB600, sizeof(arr));
if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_MACH_BIKE)
- return arr[gPlayerAvatar.unkA];
+ return arr[gPlayerAvatar.bikeFrameCounter];
else if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_ACRO_BIKE)
return 3;
else if (gPlayerAvatar.flags & (PLAYER_AVATAR_FLAG_SURFING | PLAYER_AVATAR_FLAG_DASH))
@@ -1001,9 +1035,9 @@ void sub_80E6084(void)
{
PlayerGetDestCoords(&x, &y);
tileBehavior = MapGridGetMetatileBehaviorAt(x, y);
- if (MetatileBehavior_IsBumpySlope(tileBehavior) != FALSE)
+ if (MetatileBehavior_IsBumpySlope(tileBehavior))
{
- gPlayerAvatar.unk8 = 2;
+ gPlayerAvatar.acroBikeState = ACRO_STATE_WHEELIE_STANDING;
sub_8059C94(player_get_direction_upper_nybble());
}
}