summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorProjectRevoTPP <projectrevotpp@hotmail.com>2017-01-21 04:36:36 -0500
committerYamaArashi <YamaArashi@users.noreply.github.com>2017-01-21 01:36:36 -0800
commit50d60b4403c8f8395bb0d11f9767304a8d25b3ac (patch)
tree74614c85e023ad959a3af89e625a629e23e38904 /src
parent1d5f2f64f297017d2b0642b9939ca6dc7650c5cd (diff)
finish decompiling bike.c (#207)
* decompile first few functions of field_map_obj.c * formatting * almost finish decompiling bike.c * finish decompiling bike.c
Diffstat (limited to 'src')
-rw-r--r--src/bike.c183
1 files changed, 182 insertions, 1 deletions
diff --git a/src/bike.c b/src/bike.c
index c08401010..90c61b815 100644
--- a/src/bike.c
+++ b/src/bike.c
@@ -7,6 +7,7 @@
#include "metatile_behavior.h"
#include "songs.h"
#include "sound.h"
+#include "rom4.h"
struct UnknownStruct1
{
@@ -19,6 +20,10 @@ struct UnknownStruct1
u32 unk18;
};
+extern u8 gUnknown_02039250;
+extern u8 gUnknown_02039251;
+extern u8 gUnknown_0202E854;
+
extern u8 gUnknown_0202E86C[];
extern u8 gUnknown_0202E874[];
@@ -61,10 +66,25 @@ u8 sub_80E5DA0(struct MapObject *, s16, s16, u8, u8);
extern void sub_80E5E4C();
extern u8 sub_80E5E70(u8, u8);
extern void sub_80E6024(void);
-extern u8 sub_80E5EC0();
extern u8 IsRunningDisallowedByMetatile(u8);
extern u8 sub_80608A4(u8);
+void MovePlayerOnMachBike(u8, u16, u16);
+u8 CheckMovementInputMachBike(u8 *);
+u8 CheckMovementInputAcroBike(u8 *, u16, u16);
+void sub_80E5168(u8);
+void sub_80E5270(u8);
+void MovePlayerOnAcroBike(u8, u16, u16);
+void sub_80E5B60(u16, u16);
+u8 sub_80E5CF4(u16);
+static void sub_80E5C7C(u8);
+static void sub_80E5CB8(u8);
+u8 sub_80E5C2C(void);
+u8 sub_80E5DA0(struct MapObject *mapObject, s16 x, s16 y, u8 direction, u8 metatitleBehavior);
+void sub_80E5E4C();
+u8 sub_80E5E70(u8, u8);
+u8 sub_80E5EC0(u8, u8);
+
static void (*const gUnknown_083DB594[])(u8) =
{
sub_80E5168,
@@ -822,3 +842,164 @@ u8 sub_80E5DA0(struct MapObject *mapObject, s16 x, s16 y, u8 direction, u8 metat
return r4;
}
+
+bool8 sub_80E5DEC(u8 tile)
+{
+ if(IsRunningDisallowedByMetatile(tile) != FALSE || gMapHeader.mapType == MAP_TYPE_INDOOR)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+bool8 IsRunningDisallowedByMetatile(u8 tile)
+{
+ if(MetatileBehavior_IsRunningDisallowed(tile) != FALSE)
+ return TRUE;
+ else if(MetatileBehavior_IsFortreeBridge(tile) == FALSE)
+ return FALSE;
+ else if((PlayerGetZCoord() & 1) != 0)
+ return FALSE;
+ else
+ return TRUE;
+}
+
+void sub_80E5E4C(void)
+{
+ if(gUnknown_02039250 != 0 && gUnknown_02039251 < 100)
+ gUnknown_02039251++;
+}
+
+bool8 sub_80E5E70(u8 var1, u8 var2)
+{
+ if (var1 > 2 && var1 < 5)
+ {
+ if (MetatileBehavior_IsIsolatedVerticalRail(var2)
+ || MetatileBehavior_IsVerticalRail(var2))
+ return FALSE;
+ }
+ else
+ {
+ if (MetatileBehavior_IsIsolatedHorizontalRail(var2)
+ || MetatileBehavior_IsHorizontalRail(var2))
+ return FALSE;
+
+ }
+ return TRUE;
+}
+
+bool8 sub_80E5EC0(u8 var1, u8 var2)
+{
+ if((u8)(var2 - 1) < 2)
+ {
+ if(var1 == 10 || var1 == 12)
+ return FALSE;
+ }
+ else if(var1 == 11 || var1 == 13)
+ return FALSE;
+
+ return TRUE;
+}
+
+bool8 IsBikingDisallowedByPlayer(void)
+{
+ s16 x, y;
+ u8 tileBehavior;
+
+ if(!(gPlayerAvatar.flags & (PLAYER_AVATAR_FLAG_SURFING | PLAYER_AVATAR_FLAG_4)))
+ {
+ PlayerGetDestCoords(&x, &y);
+ tileBehavior = MapGridGetMetatileBehaviorAt(x, y);
+ if(IsRunningDisallowedByMetatile(tileBehavior) == FALSE)
+ return FALSE;
+ }
+ return TRUE;
+}
+
+bool8 player_should_look_direction_be_enforced_upon_movement(void)
+{
+ if(TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_ACRO_BIKE) != FALSE && MetatileBehavior_IsBumpySlope(gMapObjects[gPlayerAvatar.mapObjectId].mapobj_unk_1E) != FALSE)
+ return FALSE;
+ else
+ return TRUE;
+}
+
+void GetOnOffBike(u8 var)
+{
+ gUnknown_0202E854 = 0;
+
+ if(gPlayerAvatar.flags & (PLAYER_AVATAR_FLAG_MACH_BIKE | PLAYER_AVATAR_FLAG_ACRO_BIKE))
+ {
+ SetPlayerAvatarTransitionFlags(PLAYER_AVATAR_FLAG_ON_FOOT);
+ sav1_reset_battle_music_maybe();
+ sub_8053E90();
+ }
+ else
+ {
+ SetPlayerAvatarTransitionFlags(var);
+ sav1_set_battle_music_maybe(0x193);
+ sub_8053FB0(0x193);
+ }
+}
+
+void sub_80E5FCC(int var1, int var2)
+{
+ u8 i;
+
+ gPlayerAvatar.unk8 = 0;
+ gPlayerAvatar.unk9 = 0;
+ gPlayerAvatar.unkA = 0;
+ gPlayerAvatar.unkB = 0;
+ gPlayerAvatar.unkC = var1;
+ gPlayerAvatar.unk10 = var2;
+
+ for(i = 0; i < 8; i++)
+ gPlayerAvatar.unk14[i] = 0;
+
+ for(i = 0; i < 8; i++)
+ gPlayerAvatar.unk1C[i] = 0;
+}
+
+void sub_80E6010(u8 var)
+{
+ gPlayerAvatar.unkA = var;
+ gPlayerAvatar.unkB = gPlayerAvatar.unkA + (gPlayerAvatar.unkA >> 1); // lazy way of multiplying by 1.5.
+}
+
+void sub_80E6024(void)
+{
+ gPlayerAvatar.unkA = 0;
+ gPlayerAvatar.unkB = 0;
+}
+
+s16 sub_80E6034(void)
+{
+ s16 arr[3];
+
+ memcpy(arr, gUnknown_083DB600, sizeof(arr));
+
+ if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_MACH_BIKE)
+ return arr[gPlayerAvatar.unkA];
+ else if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_ACRO_BIKE)
+ return 3;
+ else if (gPlayerAvatar.flags & (PLAYER_AVATAR_FLAG_SURFING | PLAYER_AVATAR_FLAG_DASH))
+ return 2;
+ else
+ return 1;
+}
+
+void sub_80E6084(void)
+{
+ s16 x, y;
+ u8 tileBehavior;
+
+ if(gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_ACRO_BIKE)
+ {
+ PlayerGetDestCoords(&x, &y);
+ tileBehavior = MapGridGetMetatileBehaviorAt(x, y);
+ if(MetatileBehavior_IsBumpySlope(tileBehavior) != FALSE)
+ {
+ gPlayerAvatar.unk8 = 2;
+ sub_8059C94(player_get_direction_upper_nybble());
+ }
+ }
+}