diff options
author | DizzyEggg <jajkodizzy@wp.pl> | 2019-07-25 21:41:02 +0200 |
---|---|---|
committer | DizzyEggg <jajkodizzy@wp.pl> | 2019-07-25 21:41:02 +0200 |
commit | 56b124fdecd3fab46eca856b80a5582235eb5abe (patch) | |
tree | 21e162d808aa76ddbda0903f318d454e82a54b41 /src | |
parent | fd07c608fc1c08294914c22833aeba2f077e6cf0 (diff) |
Some more pokenav
Diffstat (limited to 'src')
-rw-r--r-- | src/pokenav.c | 4 | ||||
-rw-r--r-- | src/pokenav_unk_6.c | 12 | ||||
-rw-r--r-- | src/pokenav_unk_8.c | 115 |
3 files changed, 117 insertions, 14 deletions
diff --git a/src/pokenav.c b/src/pokenav.c index be3826bed..132e4123b 100644 --- a/src/pokenav.c +++ b/src/pokenav.c @@ -318,7 +318,7 @@ void Task_RunLoopedTask_LinkMode(u8 taskId) if (sub_8087598()) return; - + task = (LoopedTask)GetWordTaskArg(taskId, 1); state = &gTasks[taskId].data[0]; action = task(*state); @@ -605,7 +605,7 @@ void sub_81C7694(u32 a0) gPokenavResources->fieldA = value; } -u16 sub_81C76AC(void) +u32 sub_81C76AC(void) { return gPokenavResources->fieldA; } diff --git a/src/pokenav_unk_6.c b/src/pokenav_unk_6.c index 0fe5f7a8f..638884d3f 100644 --- a/src/pokenav_unk_6.c +++ b/src/pokenav_unk_6.c @@ -35,18 +35,6 @@ struct PokenavSub11 u8 unk678A; }; -struct PokenavSub18 -{ - u16 unk0; - u16 unk2; - struct - { - u8 boxId; - u8 monId; - u16 unk6; - } unk4[TOTAL_BOXES_COUNT * IN_BOX_COUNT + PARTY_SIZE]; -}; - void sub_81CD970(void); void sub_81CD9F8(void); u32 sub_81CD08C(struct PokenavSub11 *structPtr); diff --git a/src/pokenav_unk_8.c b/src/pokenav_unk_8.c new file mode 100644 index 000000000..56ffd0f0a --- /dev/null +++ b/src/pokenav_unk_8.c @@ -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; +} |