diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2019-08-05 12:21:45 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2019-08-05 12:21:45 -0400 |
commit | 330fc46df8ff235f5c32eac212b7fde7475a0ecd (patch) | |
tree | 8afa00426486810d2b0967a19059824718cde338 /src | |
parent | 18f29c566a7038a62f176d19b76e8db8e247d654 (diff) |
through sub_81CF3F8
Diffstat (limited to 'src')
-rw-r--r-- | src/pokenav_unk_8.c | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/src/pokenav_unk_8.c b/src/pokenav_unk_8.c index 1a9b2fe1a..3f8eb5324 100644 --- a/src/pokenav_unk_8.c +++ b/src/pokenav_unk_8.c @@ -310,3 +310,86 @@ u32 sub_81CF278(s32 state) ptr->unk18 = 1; return LT_FINISH; } + +void sub_81CF2C4(struct PokenavSub7 *structPtr, struct PokenavMonList *item) +{ + u32 left = 0; + u32 right = structPtr->unkPtr->unk0; + u32 insertionIdx = left + (right - left) / 2; + + while (right != insertionIdx) + { + if (item->unk6 > structPtr->unkPtr->unk4[insertionIdx].unk6) + right = insertionIdx; + else + left = insertionIdx + 1; + insertionIdx = left + (right - left) / 2; + } + for (right = structPtr->unkPtr->unk0; right > insertionIdx; right--) + structPtr->unkPtr->unk4[right] = structPtr->unkPtr->unk4[right - 1]; + structPtr->unkPtr->unk4[insertionIdx] = *item; + structPtr->unkPtr->unk0++; +} + +// PokenavSub8 + +struct PokenavSub8 +{ + bool32 (*callback)(void); + u32 ltid; + u8 winid; + bool32 unkC; + u16 buff[0x400]; +}; // size: 0x810 + +bool32 sub_81CF3E4(void); +u32 sub_81CF418(s32 state); + +bool32 sub_81CF330(void) +{ + struct PokenavSub8 * unk = AllocSubstruct(8, sizeof(struct PokenavSub8)); + if (unk == NULL) + return FALSE; + unk->ltid = CreateLoopedTask(sub_81CF418, 1); + unk->callback = sub_81CF3E4; + unk->unkC = FALSE; + return TRUE; +} + +bool32 sub_81CF368(void) +{ + struct PokenavSub8 * unk = AllocSubstruct(8, sizeof(struct PokenavSub8)); + if (unk == NULL) + return FALSE; + unk->ltid = CreateLoopedTask(sub_81CF418, 1); + unk->callback = sub_81CF3E4; + unk->unkC = TRUE; + return TRUE; +} + +void sub_81CF3A0(s32 idx) +{ + struct PokenavSub8 * unk = (struct PokenavSub8 *)GetSubstructPtr(8); + unk->ltid = CreateLoopedTask(gUnknown_08623598[idx], 1); + unk->callback = sub_81CF3E4; +} + +bool32 sub_81CF3D0(void) +{ + struct PokenavSub8 * unk = (struct PokenavSub8 *)GetSubstructPtr(8); + return unk->callback(); +} + +bool32 sub_81CF3E4(void) +{ + struct PokenavSub8 * unk = (struct PokenavSub8 *)GetSubstructPtr(8); + return IsLoopedTaskActive(unk->ltid); +} + +void sub_81CF3F8(void) +{ + struct PokenavSub8 * unk = (struct PokenavSub8 *)GetSubstructPtr(8); + sub_81C8234(); + RemoveWindow(unk->winid); + FreePokenavSubstruct(8); +} |