Some more pokenav

This commit is contained in:
DizzyEggg
2019-07-25 21:41:02 +02:00
parent fd07c608fc
commit 56b124fdec
6 changed files with 132 additions and 227 deletions

115
src/pokenav_unk_8.c Normal file
View File

@@ -0,0 +1,115 @@
#include "global.h"
#include "pokenav.h"
struct PokenavSub7
{
u32 (*unk0)(struct PokenavSub7 *);
u32 loopedTaskId;
u8 fill1[12];
u32 unk14;
u32 unk18;
u32 unk1C;
struct PokenavSub18 *unkPtr;
};
extern const u32 gUnknown_086233A0[];
u32 sub_81CF010(struct PokenavSub7 *structPtr);
u32 sub_81CF030(struct PokenavSub7 *structPtr);
u32 sub_81CF0B8(struct PokenavSub7 *structPtr);
u32 sub_81CF0B0(struct PokenavSub7 *structPtr);
u32 sub_81CF11C(s32 state);
bool32 sub_81CEF3C(void)
{
struct PokenavSub7 *structPtr = AllocSubstruct(7, sizeof(struct PokenavSub7));
if (structPtr == NULL)
return FALSE;
structPtr->unkPtr = AllocSubstruct(18, sizeof(struct PokenavSub18));
if (structPtr->unkPtr == NULL)
return FALSE;
structPtr->unk0 = sub_81CF010;
structPtr->loopedTaskId = CreateLoopedTask(sub_81CF11C, 1);
structPtr->unk18 = 0;
structPtr->unk14 = gUnknown_086233A0[sub_81C76AC()];
return TRUE;
}
bool32 sub_81CEF98(void)
{
struct PokenavSub7 *structPtr = AllocSubstruct(7, sizeof(struct PokenavSub7));
if (structPtr == NULL)
return FALSE;
structPtr->unkPtr = GetSubstructPtr(18);
structPtr->unk0 = sub_81CF030;
structPtr->unk18 = 1;
structPtr->unk14 = gUnknown_086233A0[sub_81C76AC()];
return TRUE;
}
u32 sub_81CEFDC(void)
{
struct PokenavSub7 *structPtr = GetSubstructPtr(7);
return structPtr->unk0(structPtr);
}
void sub_81CEFF0(void)
{
struct PokenavSub7 *structPtr = GetSubstructPtr(7);
if (structPtr->unk1C == 0)
FreePokenavSubstruct(18);
FreePokenavSubstruct(7);
}
bool32 sub_81CF010(struct PokenavSub7 *structPtr)
{
if (!IsLoopedTaskActive(structPtr->loopedTaskId))
structPtr->unk0 = sub_81CF030;
return FALSE;
}
u32 sub_81CF030(struct PokenavSub7 *structPtr)
{
if (gMain.newAndRepeatedKeys & DPAD_UP)
return 1;
else if (gMain.newAndRepeatedKeys & DPAD_DOWN)
return 2;
else if (gMain.newKeys & DPAD_LEFT)
return 3;
else if (gMain.newKeys & DPAD_RIGHT)
return 4;
else if (gMain.newKeys & B_BUTTON)
{
structPtr->unk1C = 0;
structPtr->unk0 = sub_81CF0B0;
return 5;
}
else if (gMain.newKeys & A_BUTTON)
{
structPtr->unkPtr->unk2 = GetSelectedMatchCall();
structPtr->unk1C = 1;
structPtr->unk0 = sub_81CF0B8;
return 6;
}
else
return 0;
}
u32 sub_81CF0B0(struct PokenavSub7 *structPtr)
{
return 0x186A3;
}
u32 sub_81CF0B8(struct PokenavSub7 *structPtr)
{
return 0x186A9;
}
u32 sub_81CF0C0(void)
{
struct PokenavSub7 *structPtr = GetSubstructPtr(7);
return structPtr->unk18;
}