diff options
author | Cameron Hall <camthesaxman@users.noreply.github.com> | 2017-01-21 22:04:49 -0600 |
---|---|---|
committer | YamaArashi <YamaArashi@users.noreply.github.com> | 2017-01-21 20:04:49 -0800 |
commit | ef82a98a1525f58d3a6c56194a42f7660cfc923b (patch) | |
tree | df3160b491cdc5081b57eefed93aa2fc1eada989 /src/bike.c | |
parent | bcaab977727ded65c9eeaef9dbef9e9441d26fb7 (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.c | 478 |
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()); } } |