start pokenav documentation

This commit is contained in:
Evan
2020-10-10 16:17:34 -06:00
parent 13f37cf974
commit 2b2be90a52
21 changed files with 2043 additions and 1968 deletions

View File

@@ -14,8 +14,6 @@
#define LOOPED_TASK_PRIMARY_ID(taskId) (taskId & 0xFFFF)
#define LOOPED_TASK_SECONDARY_ID(taskId) (taskId >> 16)
#define SUBSTRUCT_COUNT 19
struct PokenavResources
{
u32 (*currentMenuCb1)(void);
@@ -23,7 +21,7 @@ struct PokenavResources
u16 mode;
u16 conditionSearchId;
bool32 hasAnyRibbons;
void *field10[SUBSTRUCT_COUNT];
void *substructPtrs[POKENAV_SUBSTRUCT_COUNT];
};
struct PokenavCallbacks
@@ -38,7 +36,7 @@ struct PokenavCallbacks
};
static u32 GetCurrentMenuCB(void);
static u32 sub_81C75D4(void);
static u32 IsActiveMenuLoopTaskActive_(void);
static bool32 SetActivePokenavMenu(u32 menuId);
static bool32 AnyMonHasRibbon(void);
static void InitPokenavResources(struct PokenavResources *a0);
@@ -126,43 +124,43 @@ const struct PokenavCallbacks PokenavMenuCallbacks[15] =
},
[POKENAV_CONDITION_PARTY - POKENAV_MENU_IDS_START] =
{
.init = PokenavCallback_Init_7,
.callback = sub_81CD070,
.open = sub_81CDDD4,
.createLoopTask = sub_81CDE2C,
.isLoopTaskActive = sub_81CDE64,
.free1 = sub_81CD1C0,
.free2 = sub_81CECA0,
.init = PokenavCallback_Init_PartyCondition,
.callback = GetPartyConditionCallback,
.open = OpenPartyConditionMenu,
.createLoopTask = CreatePartyConditionLoopedTask,
.isLoopTaskActive = IsPartyConditionLoopedTaskActive,
.free1 = FreePartyConditionSubstruct1,
.free2 = FreePartyConditionSubstruct2,
},
[POKENAV_CONDITION_SEARCH_RESULTS - POKENAV_MENU_IDS_START] =
{
.init = PokenavCallback_Init_8,
.callback = sub_81CEFDC,
.open = sub_81CF330,
.createLoopTask = sub_81CF3A0,
.isLoopTaskActive = sub_81CF3D0,
.free1 = sub_81CEFF0,
.free2 = sub_81CF3F8,
.init = PokenavCallback_Init_ConditionSearch,
.callback = GetConditionSearchResultsCallback,
.open = OpenConditionSearchResults,
.createLoopTask = CreateSearchResultsLoopedTask,
.isLoopTaskActive = IsSearchResultLoopedTaskActive,
.free1 = FreeSearchResultSubstruct1,
.free2 = FreeSearchResultSubstruct2,
},
[POKENAV_MENU_9 - POKENAV_MENU_IDS_START] =
[POKENAV_MENU_CONDITION_GRAPH_FROM_SEARCH - POKENAV_MENU_IDS_START] =
{
.init = PokenavCallback_Init_9,
.callback = sub_81CD070,
.open = sub_81CDDD4,
.createLoopTask = sub_81CDE2C,
.isLoopTaskActive = sub_81CDE64,
.free1 = sub_81CD1C0,
.free2 = sub_81CECA0,
.init = PokenavCallback_Init_ConditionGraphFromSearch,
.callback = GetPartyConditionCallback,
.open = OpenPartyConditionMenu,
.createLoopTask = CreatePartyConditionLoopedTask,
.isLoopTaskActive = IsPartyConditionLoopedTaskActive,
.free1 = FreePartyConditionSubstruct1,
.free2 = FreePartyConditionSubstruct2,
},
[POKENAV_MENU_A - POKENAV_MENU_IDS_START] =
[POKENAV_RETURN_CONDITION_SEARCH - POKENAV_MENU_IDS_START] =
{
.init = PokenavCallback_Init_10,
.callback = sub_81CEFDC,
.open = sub_81CF368,
.createLoopTask = sub_81CF3A0,
.isLoopTaskActive = sub_81CF3D0,
.free1 = sub_81CEFF0,
.free2 = sub_81CF3F8,
.init = PokenavCallback_Init_ReturnToMonSearchList,
.callback = GetConditionSearchResultsCallback,
.open = OpenConditionSearchListFromGraph,
.createLoopTask = CreateSearchResultsLoopedTask,
.isLoopTaskActive = IsSearchResultLoopedTaskActive,
.free1 = FreeSearchResultSubstruct1,
.free2 = FreeSearchResultSubstruct2,
},
[POKENAV_MATCH_CALL - POKENAV_MENU_IDS_START] =
{
@@ -176,33 +174,33 @@ const struct PokenavCallbacks PokenavMenuCallbacks[15] =
},
[POKENAV_RIBBONS_MON_LIST - POKENAV_MENU_IDS_START] =
{
.init = PokenavCallback_Init_12,
.callback = sub_81CFA34,
.open = sub_81CFDD0,
.createLoopTask = sub_81CFE40,
.isLoopTaskActive = sub_81CFE70,
.free1 = sub_81CFA48,
.free2 = sub_81CFE98,
.init = PokenavCallback_Init_MonRibbonList,
.callback = GetRibbonsMonListCallback,
.open = OpenRibbonsMonList,
.createLoopTask = CreateRibbonsMonListLoopedTask,
.isLoopTaskActive = IsRibbonsMonListLoopedTaskActive,
.free1 = FreeRibbonsMonList1,
.free2 = FreeRibbonsMonList2,
},
[POKENAV_MENU_D - POKENAV_MENU_IDS_START] =
[POKENAV_RIBBONS_SUMMARY_SCREEN - POKENAV_MENU_IDS_START] =
{
.init = PokenavCallback_Init_13,
.callback = sub_81D04A0,
.open = sub_81D0978,
.createLoopTask = sub_81D09B0,
.isLoopTaskActive = sub_81D09E0,
.free1 = sub_81D04B8,
.free2 = sub_81D09F4,
.init = PokenavCallback_Init_RibbonsSummaryMenu,
.callback = GetRibbonsSummaryMenuCallback,
.open = OpenRibbonsSummaryMenu,
.createLoopTask = CreateRibbonsSummaryLoopedTask,
.isLoopTaskActive = IsRibbonsSummaryLoopedTaskActive,
.free1 = FreeRibbonsSummaryScreen1,
.free2 = FreeRibbonsSummaryScreen2,
},
[POKENAV_MENU_E - POKENAV_MENU_IDS_START] =
[POKENAV_RIBBONS_RETURN_TO_MON_LIST - POKENAV_MENU_IDS_START] =
{
.init = PokenavCallback_Init_14,
.callback = sub_81CFA34,
.open = sub_81CFE08,
.createLoopTask = sub_81CFE40,
.isLoopTaskActive = sub_81CFE70,
.free1 = sub_81CFA48,
.free2 = sub_81CFE98,
.init = PokenavCallback_Init_RibbonsMonListFromSummary,
.callback = GetRibbonsMonListCallback,
.open = OpenRibbonsMonListFromRibbonsSummary,
.createLoopTask = CreateRibbonsMonListLoopedTask,
.isLoopTaskActive = IsRibbonsMonListLoopedTaskActive,
.free1 = FreeRibbonsMonList1,
.free2 = FreeRibbonsMonList2,
},
};
@@ -368,24 +366,24 @@ static void FreePokenavResources(void)
{
int i;
for (i = 0; i < SUBSTRUCT_COUNT; i++)
for (i = 0; i < POKENAV_SUBSTRUCT_COUNT; i++)
FreePokenavSubstruct(i);
FREE_AND_SET_NULL(gPokenavResources);
InitKeys();
}
static void InitPokenavResources(struct PokenavResources *a0)
static void InitPokenavResources(struct PokenavResources *resources)
{
int i;
for (i = 0; i < SUBSTRUCT_COUNT; i++)
a0->field10[i] = NULL;
for (i = 0; i < POKENAV_SUBSTRUCT_COUNT; i++)
resources->substructPtrs[i] = NULL;
a0->mode = POKENAV_MODE_NORMAL;
a0->currentMenuIndex = 0;
a0->hasAnyRibbons = AnyMonHasRibbon();
a0->currentMenuCb1 = NULL;
resources->mode = POKENAV_MODE_NORMAL;
resources->currentMenuIndex = 0;
resources->hasAnyRibbons = AnyMonHasRibbon();
resources->currentMenuCb1 = NULL;
}
static bool32 AnyMonHasRibbon(void)
@@ -453,12 +451,12 @@ static void Task_Pokenav(u8 taskId)
tState = 4;
break;
case 2:
if (sub_81C786C())
if (IsActiveMenuLoopTaskActive())
break;
tState = 3;
case 3:
menuId = GetCurrentMenuCB();
if (menuId == -1)
if (menuId == POKENAV_MENU_FUNC_EXIT)
{
ShutdownPokenav();
tState = 5;
@@ -479,13 +477,13 @@ static void Task_Pokenav(u8 taskId)
}
else if (menuId != 0)
{
sub_81C7850(menuId);
if (sub_81C786C())
RunMainMenuLoopedTask(menuId);
if (IsActiveMenuLoopTaskActive())
tState = 2;
}
break;
case 4:
if (!sub_81C75D4())
if (!IsActiveMenuLoopTaskActive_())
tState = 3;
break;
case 5:
@@ -516,15 +514,15 @@ static bool32 SetActivePokenavMenu(u32 menuId)
if (!PokenavMenuCallbacks[index].open())
return FALSE;
sub_81C7834(PokenavMenuCallbacks[index].createLoopTask, PokenavMenuCallbacks[index].isLoopTaskActive);
SetActiveMenuLoopTasks(PokenavMenuCallbacks[index].createLoopTask, PokenavMenuCallbacks[index].isLoopTaskActive);
gPokenavResources->currentMenuCb1 = PokenavMenuCallbacks[index].callback;
gPokenavResources->currentMenuIndex = index;
return TRUE;
}
static u32 sub_81C75D4(void)
static u32 IsActiveMenuLoopTaskActive_(void)
{
return sub_81C786C();
return IsActiveMenuLoopTaskActive();
}
static u32 GetCurrentMenuCB(void)
@@ -549,19 +547,19 @@ void SetPokenavVBlankCallback(void)
void *AllocSubstruct(u32 index, u32 size)
{
gPokenavResources->field10[index] = Alloc(size);
return gPokenavResources->field10[index];
gPokenavResources->substructPtrs[index] = Alloc(size);
return gPokenavResources->substructPtrs[index];
}
void *GetSubstructPtr(u32 index)
{
return gPokenavResources->field10[index];
return gPokenavResources->substructPtrs[index];
}
void FreePokenavSubstruct(u32 index)
{
if (gPokenavResources->field10[index] != NULL)
FREE_AND_SET_NULL(gPokenavResources->field10[index]);
if (gPokenavResources->substructPtrs[index] != NULL)
FREE_AND_SET_NULL(gPokenavResources->substructPtrs[index]);
}
u32 GetPokenavMode(void)