From 065c60544d4d059fdc9aa1bc50f1375a73782427 Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Sat, 13 Apr 2019 15:54:05 -0500 Subject: [PATCH] Cleanup some pokenav code --- asm/pokenav_unk_4.s | 2 +- include/pokenav.h | 36 +++++++- src/pokedex.c | 4 +- src/pokenav.c | 35 +++----- src/pokenav_main_menu.c | 117 ++++++++++++------------- src/pokenav_unk_1.c | 184 ++++++++++++++++++++-------------------- 6 files changed, 196 insertions(+), 182 deletions(-) diff --git a/asm/pokenav_unk_4.s b/asm/pokenav_unk_4.s index 38c362fa4..cc3c17b42 100644 --- a/asm/pokenav_unk_4.s +++ b/asm/pokenav_unk_4.s @@ -1506,7 +1506,7 @@ sub_81CBE50: @ 81CBE50 movs r0, 0x9 bl GetGameStat adds r1, r0, 0 - ldr r0, =0x0001869f @ Note to decompiler: See UNKNOWN_POKENAV_OFFSET + ldr r0, =0x0001869f cmp r1, r0 ble _081CBE68 adds r1, r0, 0 diff --git a/include/pokenav.h b/include/pokenav.h index ffea03b43..e9ec99037 100644 --- a/include/pokenav.h +++ b/include/pokenav.h @@ -1,7 +1,7 @@ #ifndef GUARD_POKENAV_H #define GUARD_POKENAV_H -typedef u32 (*LoopedTask)(s32 state); +typedef u32 (*LoopedTask)(int state); // Return values of LoopedTask functions. #define LT_INC_AND_PAUSE 0 @@ -11,7 +11,32 @@ typedef u32 (*LoopedTask)(s32 state); #define LT_FINISH 4 #define LT_SET_STATE(newState) (newState + 5) -#define UNKNOWN_POKENAV_OFFSET 100000 +enum +{ + POKENAV_MODE_NORMAL, // Chosen from Start menu. + POKENAV_MODE_FORCE_CALL_1, // Used for the script's special. Has to choose Match Call and make a call. + POKENAV_MODE_FORCE_CALL_2, // Set after making a call, has to exit Pokenav. +}; + +#define POKENAV_MENU_IDS_START 100000 +enum +{ + POKENAV_MENU_0 = POKENAV_MENU_IDS_START, + POKENAV_MENU_1, + POKENAV_MENU_2, + POKENAV_MENU_3, + POKENAV_MENU_4, + POKENAV_MENU_5, + POKENAV_MENU_6, + POKENAV_MENU_7, + POKENAV_MENU_8, + POKENAV_MENU_9, + POKENAV_MENU_A, + POKENAV_MENU_B, + POKENAV_MENU_C, + POKENAV_MENU_D, + POKENAV_MENU_E, +}; // pokenav.c void sub_81C7694(u32); @@ -31,6 +56,12 @@ bool32 CanViewRibbonsMenu(void); // pokenav_match_call_ui.c +// pokenav_main_menu.c +bool32 InitPokenavMainMenu(void); +void CopyPaletteIntoBufferUnfaded(const u16 *palette, u32 bufferOffset, u32 size); +void sub_81C7850(u32 a0); +u32 sub_81C786C(void); + // pokenav_unk_1.c bool32 sub_81C9298(void); bool32 sub_81C92CC(void); @@ -43,6 +74,7 @@ int sub_81C9894(void); // pokenav_unk_2.c u32 sub_81C99D4(void); +void sub_81CAADC(void); #endif //GUARD_POKENAV_H diff --git a/src/pokedex.c b/src/pokedex.c index cf144f619..2588e2b73 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -4039,7 +4039,7 @@ void sub_80C0460(u16 weight, u8 left, u8 top) lsls r2, 24\n\ lsrs r2, 24\n\ str r2, [sp, 0x10]\n\ - ldr r5, =0x000186a0 @ Note to decompiler: See UNKNOWN_POKENAV_OFFSET\n\ + ldr r5, =0x000186a0\n\ muls r0, r5\n\ ldr r1, =0x000011b8\n\ bl __divsi3\n\ @@ -4073,7 +4073,7 @@ _080C04C0:\n\ mov r8, r1\n\ movs r6, 0x1\n\ _080C04C6:\n\ - ldr r1, =0x000186a0 @ Note to decompiler: See UNKNOWN_POKENAV_OFFSET\n\ + ldr r1, =0x000186a0\n\ adds r0, r7, 0\n\ bl __umodsi3\n\ adds r7, r0, 0\n\ diff --git a/src/pokenav.c b/src/pokenav.c index e3a2d5256..dcafa4f20 100644 --- a/src/pokenav.c +++ b/src/pokenav.c @@ -8,13 +8,6 @@ #include "pokemon_storage_system.h" #include "pokenav.h" -enum -{ - MODE_NORMAL, // Chosen from Start menu. - MODE_FORCE_CALL_1, // Used for the script's special. Has to choose Match Call and make a call. - MODE_FORCE_CALL_2, // Set after making a call, has to exit Pokenav. -}; - #define LOOPED_TASK_DECODE_STATE(action) (action - 5) #define LOOPED_TASK_ID(primary, secondary) (((secondary) << 16) |(primary)) @@ -96,17 +89,14 @@ extern u32 sub_81D09F4(void); extern u32 sub_81CFA04(void); extern u32 sub_81CFE08(void); -bool32 SetActivePokenavMenu(u32 a0); -bool32 InitPokenavMainMenu(void); +static bool32 SetActivePokenavMenu(u32 menuId); static bool32 AnyMonHasRibbon(void); u32 sub_81C75E0(void); u32 sub_81C75D4(void); u32 PokenavMainMenuLoopedTaskIsActive(void); -u32 sub_81C786C(void); bool32 WaitForPokenavShutdownFade(void); void sub_81C7834(void *func1, void *func2); static void InitPokenavResources(struct PokenavResources *a0); -void sub_81C7850(u32 a0); void Task_RunLoopedTask_LinkMode(u8 a0); void Task_RunLoopedTask(u8 taskId); void sub_81C742C(u8 taskId); @@ -117,7 +107,6 @@ static void VBlankCB_Pokenav(void); static void CB2_Pokenav(void); void sub_81C72BC(void); -// Const rom data. const struct UnknownPokenavCallbackStruct PokenavMenuCallbacks[15] = { { @@ -291,7 +280,7 @@ bool32 IsLoopedTaskActive(u32 taskId) bool32 FuncIsActiveLoopedTask(LoopedTask func) { - s32 i; + int i; for (i = 0; i < NUM_TASKS; i++) { if (gTasks[i].isActive @@ -404,7 +393,7 @@ void sub_81C72BC(void) else { InitPokenavResources(gPokenavResources); - gPokenavResources->mode = MODE_FORCE_CALL_1; + gPokenavResources->mode = POKENAV_MODE_FORCE_CALL_1; ResetTasks(); ResetSpriteData(); FreeAllSpritePalettes(); @@ -417,7 +406,7 @@ void sub_81C72BC(void) static void FreePokenavResources(void) { - s32 i; + int i; for (i = 0; i < SUBSTRUCT_COUNT; i++) FreePokenavSubstruct(i); @@ -428,12 +417,12 @@ static void FreePokenavResources(void) static void InitPokenavResources(struct PokenavResources *a0) { - s32 i; + int i; for (i = 0; i < SUBSTRUCT_COUNT; i++) a0->field10[i] = NULL; - a0->mode = MODE_NORMAL; + a0->mode = POKENAV_MODE_NORMAL; a0->currentMenuIndex = 0; a0->hasAnyRibbons = AnyMonHasRibbon(); a0->currentMenuCb1 = NULL; @@ -441,7 +430,7 @@ static void InitPokenavResources(struct PokenavResources *a0) static bool32 AnyMonHasRibbon(void) { - s32 i, j; + int i, j; for (i = 0; i < PARTY_SIZE; i++) { @@ -498,7 +487,7 @@ void sub_81C742C(u8 taskId) // Wait for LoopedTask_InitPokenavMenu to finish if (PokenavMainMenuLoopedTaskIsActive()) break; - SetActivePokenavMenu(0 + UNKNOWN_POKENAV_OFFSET); + SetActivePokenavMenu(POKENAV_MENU_0); data[0] = 4; break; case 2: @@ -512,7 +501,7 @@ void sub_81C742C(u8 taskId) ShutdownPokenav(); data[0] = 5; } - else if (v1 >= UNKNOWN_POKENAV_OFFSET) + else if (v1 >= POKENAV_MENU_IDS_START) { PokenavMenuCallbacks[gPokenavResources->currentMenuIndex].unk18(); PokenavMenuCallbacks[gPokenavResources->currentMenuIndex].unk14(); @@ -540,7 +529,7 @@ void sub_81C742C(u8 taskId) case 5: if (!WaitForPokenavShutdownFade()) { - bool32 calledFromScript = (gPokenavResources->mode != MODE_NORMAL); + bool32 calledFromScript = (gPokenavResources->mode != POKENAV_MODE_NORMAL); sub_81C9430(); FreePokenavResources(); @@ -553,9 +542,9 @@ void sub_81C742C(u8 taskId) } } -bool32 SetActivePokenavMenu(u32 indexWithOffset) +static bool32 SetActivePokenavMenu(u32 menuId) { - u32 index = indexWithOffset - UNKNOWN_POKENAV_OFFSET; + u32 index = menuId - POKENAV_MENU_IDS_START; InitKeys_(); if (!PokenavMenuCallbacks[index].unk0()) diff --git a/src/pokenav_main_menu.c b/src/pokenav_main_menu.c index a0d00f1e6..e133e01fe 100644 --- a/src/pokenav_main_menu.c +++ b/src/pokenav_main_menu.c @@ -19,12 +19,10 @@ enum POKENAV_GFX_CONDITION_MENU, POKENAV_GFX_RIBBONS_MENU, POKENAV_GFX_MATCH_CALL_MENU, - // One of these is for the zoomed-in map, and the other is for the // zoomed-out map. Don't know which is which yet. POKENAV_GFX_MAP_MENU_UNK0, POKENAV_GFX_MAP_MENU_UNK1, - POKENAV_GFX_PARTY_MENU, POKENAV_GFX_SEARCH_MENU, POKENAV_GFX_COOL_MENU, @@ -32,8 +30,7 @@ enum POKENAV_GFX_CUTE_MENU, POKENAV_GFX_SMART_MENU, POKENAV_GFX_TOUGH_MENU, - - POKENAV_GFX_MENUS_END + POKENAV_GFX_MENUS_END, }; #define POKENAV_GFX_SUBMENUS_START POKENAV_GFX_PARTY_MENU @@ -60,27 +57,23 @@ struct CompressedSpriteSheetNoSize u32 tag; }; -extern void sub_81CAADC(void); -void CleanupPokenavMainMenuResources(void); -void LoadLeftHeaderGfxForSubMenu(u32 arg0); -void LoadLeftHeaderGfxForMenu(u32 arg0); -void HideLeftHeaderSubmenuSprites(bool32 arg0); -void HideLeftHeaderSprites(bool32 arg0); -void ShowLeftHeaderSprites(u32 arg0, bool32 arg1); -void ShowLeftHeaderSubmenuSprites(u32 arg0, bool32 arg1); -void MoveLeftHeader(struct Sprite *sprite, s32 arg1, s32 arg2, s32 arg3); -void SpriteCB_MoveLeftHeader(struct Sprite *sprite); -void InitPokenavMainMenuResources(void); -void InitHoennMapHeaderSprites(void); -void sub_81C7B74(void); -void CopyPaletteIntoBufferUnfaded(const u16 *palette, u32 a1, u32 a2); -u32 LoopedTask_ScrollMenuHeaderDown(s32 a0); -u32 LoopedTask_ScrollMenuHeaderUp(s32 a0); -void sub_81C7BF8(u32 a0); - - -void SpriteCB_SpinningPokenav(struct Sprite* sprite); -u32 LoopedTask_InitPokenavMenu(s32 a0); +static void CleanupPokenavMainMenuResources(void); +static void LoadLeftHeaderGfxForSubMenu(u32 arg0); +static void LoadLeftHeaderGfxForMenu(u32 index); +static void HideLeftHeaderSubmenuSprites(bool32 isOnRightSide); +static void HideLeftHeaderSprites(bool32 isOnRightSide); +static void ShowLeftHeaderSprites(u32 startY, bool32 isOnRightSide); +static void ShowLeftHeaderSubmenuSprites(u32 startY, bool32 isOnRightSide); +static void MoveLeftHeader(struct Sprite *sprite, int startX, int endX, int duration); +static void SpriteCB_MoveLeftHeader(struct Sprite *sprite); +static void InitPokenavMainMenuResources(void); +static void InitHoennMapHeaderSprites(void); +static void sub_81C7B74(void); +static u32 LoopedTask_ScrollMenuHeaderDown(int a0); +static u32 LoopedTask_ScrollMenuHeaderUp(int a0); +static void sub_81C7BF8(u32 a0); +static void SpriteCB_SpinningPokenav(struct Sprite* sprite); +static u32 LoopedTask_InitPokenavMenu(int a0); const u16 gSpinningPokenavPaletteData[] = INCBIN_U16("graphics/pokenav/icon2.gbapal"); const u32 gSpinningPokenavGfx[] = INCBIN_U32("graphics/pokenav/icon2.4bpp.lz"); @@ -121,7 +114,7 @@ const struct WindowTemplate gUnknown_0861FA08[2] = }, }; -const u8 *const sMenuButtonReminders[12] = +const u8 *const sHelpBarTexts[12] = { gText_Pokenav_ClearButtonList, gText_PokenavMap_ZoomedOutButtons, @@ -367,7 +360,7 @@ bool32 WaitForPokenavShutdownFade(void) return TRUE; } -u32 LoopedTask_InitPokenavMenu(s32 a0) +static u32 LoopedTask_InitPokenavMenu(int a0) { struct PokenavMainMenuResources *structPtr; @@ -447,7 +440,7 @@ bool32 MainMenuLoopedTaskIsBusy(void) return IsLoopedTaskActive(structPtr->currentTaskId); } -u32 LoopedTask_ScrollMenuHeaderDown(s32 a0) +static u32 LoopedTask_ScrollMenuHeaderDown(int a0) { switch (a0) { @@ -468,7 +461,7 @@ u32 LoopedTask_ScrollMenuHeaderDown(s32 a0) } } -u32 LoopedTask_ScrollMenuHeaderUp(s32 a0) +static u32 LoopedTask_ScrollMenuHeaderUp(int a0) { if (ChangeBgY(0, 384, 2) <= 0) { @@ -508,7 +501,7 @@ void sub_81C7990(u32 a0, u16 a1) CpuFill16(a1, gPlttBufferFaded + 0x100 + (a0 * 16), 16 * sizeof(u16)); } -__attribute__((naked)) +NAKED void sub_81C79BC(u16 *a0, u16 *a1, u32 a2, u32 a3, u32 a4, u32 a5) { asm(".syntax unified\n\ @@ -644,7 +637,7 @@ _081C7AAE:\n\ .syntax divided"); } -void sub_81C7AC0(s32 a0) +void sub_81C7AC0(int a0) { struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0); @@ -675,15 +668,15 @@ void sub_81C7B40(void) BlendPalettes(0xFFFEFFFE, 16, RGB_BLACK); } -void InitBgTemplates(const struct BgTemplate *templates, s32 count) +void InitBgTemplates(const struct BgTemplate *templates, int count) { - s32 i; + int i; for (i = 0; i < count; i++) InitBgFromTemplate(templates++); } -void sub_81C7B74(void) +static void sub_81C7B74(void) { struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0); @@ -694,12 +687,12 @@ void sub_81C7B74(void) CopyWindowToVram(structPtr->unk10, 3); // TODO: Use a defined constant here. } -void sub_81C7BA4(u32 a0) +void sub_81C7BA4(u32 helpBarIndex) { struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0); sub_81C7BF8(structPtr->unk10); - AddTextPrinterParameterized3(structPtr->unk10, 1, 0, 1, gMenuButtonReminderColor, 0, sMenuButtonReminders[a0]); + AddTextPrinterParameterized3(structPtr->unk10, 1, 0, 1, gMenuButtonReminderColor, 0, sHelpBarTexts[helpBarIndex]); } bool32 IsDma3ManagerBusyWithBgCopy_(void) @@ -707,15 +700,15 @@ bool32 IsDma3ManagerBusyWithBgCopy_(void) return IsDma3ManagerBusyWithBgCopy(); } -void sub_81C7BF8(u32 windowId) +static void sub_81C7BF8(u32 windowId) { FillWindowPixelBuffer(windowId, PIXEL_FILL(4)); FillWindowPixelRect(windowId, PIXEL_FILL(5), 0, 0, 0x80, 1); } -void InitPokenavMainMenuResources(void) +static void InitPokenavMainMenuResources(void) { - s32 i; + int i; u8 spriteId; struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0); @@ -728,7 +721,7 @@ void InitPokenavMainMenuResources(void) structPtr->spinningPokenav = &gSprites[spriteId]; } -void CleanupPokenavMainMenuResources(void) +static void CleanupPokenavMainMenuResources(void) { struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0); @@ -737,7 +730,7 @@ void CleanupPokenavMainMenuResources(void) FreeSpritePaletteByTag(0); } -void SpriteCB_SpinningPokenav(struct Sprite *sprite) +static void SpriteCB_SpinningPokenav(struct Sprite *sprite) { // If the background starts scrolling, follow it. sprite->pos2.y = (GetBgY(0) / 256u) * -1; @@ -763,15 +756,15 @@ void ResumeSpinningPokenavSprite(void) structPtr->spinningPokenav->subpriority = 0; } -void InitHoennMapHeaderSprites(void) +static void InitHoennMapHeaderSprites(void) { - s32 i, spriteId; + int i, spriteId; struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0); LoadCompressedSpriteSheet(&sPokenavHoennMapLeftHeaderSpriteSheet); AllocSpritePalette(1); AllocSpritePalette(2); - for (i = 0; i < (s32)ARRAY_COUNT(structPtr->leftHeaderSprites); i++) + for (i = 0; i < (int)ARRAY_COUNT(structPtr->leftHeaderSprites); i++) { spriteId = CreateSprite(&sPokenavLeftHeaderHoennMapSpriteTemplate, 0, 0, 1); structPtr->leftHeaderSprites[i] = &gSprites[spriteId]; @@ -805,7 +798,7 @@ void sub_81C7E14(u32 arg0) structPtr->leftHeaderSprites[1]->oam.tileNum = GetSpriteTileStartByTag(2) + 64; } -void LoadLeftHeaderGfxForMenu(u32 index) +static void LoadLeftHeaderGfxForMenu(u32 index) { struct PokenavMainMenuResources *structPtr; u32 size, tag; @@ -827,7 +820,7 @@ void LoadLeftHeaderGfxForMenu(u32 index) structPtr->leftHeaderSprites[1]->pos2.x = 64; } -void LoadLeftHeaderGfxForSubMenu(u32 arg0) +static void LoadLeftHeaderGfxForSubMenu(u32 arg0) { u32 size, tag; @@ -866,10 +859,10 @@ void sub_81C7FC4(u32 arg0, bool32 arg1) void sub_81C7FDC(void) { - s32 i; + int i; struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0); - for (i = 0; i < (s32)ARRAY_COUNT(structPtr->leftHeaderSprites); i++) + for (i = 0; i < (int)ARRAY_COUNT(structPtr->leftHeaderSprites); i++) { structPtr->leftHeaderSprites[i]->invisible = TRUE; structPtr->submenuLeftHeaderSprites[i]->invisible = TRUE; @@ -886,9 +879,9 @@ bool32 sub_81C8010(void) return TRUE; } -void ShowLeftHeaderSprites(u32 startY, bool32 isOnRightSide) +static void ShowLeftHeaderSprites(u32 startY, bool32 isOnRightSide) { - s32 start, end, i; + int start, end, i; struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0); if (!isOnRightSide) @@ -896,16 +889,16 @@ void ShowLeftHeaderSprites(u32 startY, bool32 isOnRightSide) else start = 256, end = 160; - for (i = 0; i < (s32)ARRAY_COUNT(structPtr->leftHeaderSprites); i++) + for (i = 0; i < (int)ARRAY_COUNT(structPtr->leftHeaderSprites); i++) { structPtr->leftHeaderSprites[i]->pos1.y = startY; MoveLeftHeader(structPtr->leftHeaderSprites[i], start, end, 12); } } -void ShowLeftHeaderSubmenuSprites(u32 startY, bool32 isOnRightSide) +static void ShowLeftHeaderSubmenuSprites(u32 startY, bool32 isOnRightSide) { - s32 start, end, i; + int start, end, i; struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0); if (!isOnRightSide) @@ -913,16 +906,16 @@ void ShowLeftHeaderSubmenuSprites(u32 startY, bool32 isOnRightSide) else start = 256, end = 192; - for (i = 0; i < (s32)ARRAY_COUNT(structPtr->submenuLeftHeaderSprites); i++) + for (i = 0; i < (int)ARRAY_COUNT(structPtr->submenuLeftHeaderSprites); i++) { structPtr->submenuLeftHeaderSprites[i]->pos1.y = startY; MoveLeftHeader(structPtr->submenuLeftHeaderSprites[i], start, end, 12); } } -void HideLeftHeaderSprites(bool32 isOnRightSide) +static void HideLeftHeaderSprites(bool32 isOnRightSide) { - s32 start, end, i; + int start, end, i; struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0); if (!isOnRightSide) @@ -930,15 +923,15 @@ void HideLeftHeaderSprites(bool32 isOnRightSide) else start = 192, end = 256; - for (i = 0; i < (s32)ARRAY_COUNT(structPtr->leftHeaderSprites); i++) + for (i = 0; i < (int)ARRAY_COUNT(structPtr->leftHeaderSprites); i++) { MoveLeftHeader(structPtr->leftHeaderSprites[i], start, end, 12); } } -void HideLeftHeaderSubmenuSprites(bool32 isOnRightSide) +static void HideLeftHeaderSubmenuSprites(bool32 isOnRightSide) { - s32 start, end, i; + int start, end, i; struct PokenavMainMenuResources *structPtr = GetSubstructPtr(0); if (!isOnRightSide) @@ -946,13 +939,13 @@ void HideLeftHeaderSubmenuSprites(bool32 isOnRightSide) else start = 192, end = 256; - for (i = 0; i < (s32)ARRAY_COUNT(structPtr->submenuLeftHeaderSprites); i++) + for (i = 0; i < (int)ARRAY_COUNT(structPtr->submenuLeftHeaderSprites); i++) { MoveLeftHeader(structPtr->submenuLeftHeaderSprites[i], start, end, 12); } } -void MoveLeftHeader(struct Sprite *sprite, s32 startX, s32 endX, s32 duration) +static void MoveLeftHeader(struct Sprite *sprite, int startX, int endX, int duration) { sprite->pos1.x = startX; sprite->data[0] = startX * 16; @@ -962,7 +955,7 @@ void MoveLeftHeader(struct Sprite *sprite, s32 startX, s32 endX, s32 duration) sprite->callback = SpriteCB_MoveLeftHeader; } -void SpriteCB_MoveLeftHeader(struct Sprite *sprite) +static void SpriteCB_MoveLeftHeader(struct Sprite *sprite) { if (sprite->data[2] != 0) { diff --git a/src/pokenav_unk_1.c b/src/pokenav_unk_1.c index f88ba8f34..96ecf9c8b 100644 --- a/src/pokenav_unk_1.c +++ b/src/pokenav_unk_1.c @@ -7,12 +7,12 @@ struct Pokenav1Struct { - u16 unk0; - s16 unk2; - u16 unk4; - u16 unk6; + u16 menuType; + s16 cursorPos; + u16 descriptionId; + u16 helpBarIndex; u32 unk8; - u32 (*unkC)(struct Pokenav1Struct*); + u32 (*callback)(struct Pokenav1Struct*); }; static bool32 sub_81C9814(struct Pokenav1Struct *a0); @@ -31,9 +31,9 @@ static u32 sub_81C943C(struct Pokenav1Struct *a0); static u32 (*sub_81C93EC(void))(struct Pokenav1Struct*); static void sub_81C939C(struct Pokenav1Struct *state); -static const u8 sUnknown_0861FC54[] = {2, 3, 4, 2, 5}; +static const u8 sLastCursorPositions[] = {2, 3, 4, 2, 5}; -static const u8 sUnknown_0861FC59[][6] = +static const u8 sDescriptionIds[][6] = { { 0, 1, 4, 4, 4, 4 }, { 0, 1, 2, 4, 4, 4 }, @@ -42,7 +42,7 @@ static const u8 sUnknown_0861FC59[][6] = { 8, 9, 10, 11, 12, 13 }, }; -static u8 sub_81C9268(void) +static u8 GetPokenavMainMenuType(void) { u8 retVal = 0; if (FlagGet(FLAG_ADDED_MATCH_CALL_TO_POKENAV)) @@ -61,10 +61,10 @@ bool32 sub_81C9298(void) if (!state) return FALSE; - state->unk0 = sub_81C9268(); - state->unk2 = 0; - state->unk4 = 0; - state->unk6 = 0; + state->menuType = GetPokenavMainMenuType(); + state->cursorPos = 0; + state->descriptionId = 0; + state->helpBarIndex = 0; sub_81C939C(state); return TRUE; } @@ -75,10 +75,10 @@ bool32 sub_81C92CC(void) if (!state) return FALSE; - state->unk0 = sub_81C9268(); - state->unk2 = 2; - state->unk4 = 2; - state->unk6 = 0; + state->menuType = GetPokenavMainMenuType(); + state->cursorPos = 2; + state->descriptionId = 2; + state->helpBarIndex = 0; sub_81C939C(state); return TRUE; } @@ -89,9 +89,9 @@ bool32 sub_81C9304(void) if (!state) return FALSE; - state->unk0 = sub_81C9268(); - state->unk2 = 3; - state->unk4 = 3; + state->menuType = GetPokenavMainMenuType(); + state->cursorPos = 3; + state->descriptionId = 3; sub_81C939C(state); return TRUE; } @@ -102,10 +102,10 @@ bool32 sub_81C9338(void) if (!state) return FALSE; - state->unk0 = 3; - state->unk2 = 0; - state->unk4 = 5; - state->unk6 = 0; + state->menuType = 3; + state->cursorPos = 0; + state->descriptionId = 5; + state->helpBarIndex = 0; sub_81C939C(state); return TRUE; } @@ -116,30 +116,30 @@ bool32 sub_81C9368(void) if (!state) return FALSE; - state->unk0 = 4; - state->unk2 = sub_81C76AC(); - state->unk4 = state->unk2 + 8; - state->unk6 = 0; + state->menuType = 4; + state->cursorPos = sub_81C76AC(); + state->descriptionId = state->cursorPos + 8; + state->helpBarIndex = 0; sub_81C939C(state); return TRUE; } static void sub_81C939C(struct Pokenav1Struct *state) { - switch (state->unk0) + switch (state->menuType) { case 0: - SetPokenavMode(0); + SetPokenavMode(POKENAV_MODE_NORMAL); // fallthrough case 1: case 2: - state->unkC = sub_81C93EC(); + state->callback = sub_81C93EC(); break; case 3: - state->unkC = sub_81C963C; + state->callback = sub_81C963C; break; case 4: - state->unkC = sub_81C96FC; + state->callback = sub_81C96FC; break; } } @@ -149,11 +149,11 @@ static u32 (*sub_81C93EC(void))(struct Pokenav1Struct*) switch (GetPokenavMode()) { default: - case 0: + case POKENAV_MODE_NORMAL: return sub_81C943C; - case 1: + case POKENAV_MODE_FORCE_CALL_1: return sub_81C9520; - case 2: + case POKENAV_MODE_FORCE_CALL_2: return sub_81C9588; } } @@ -161,7 +161,7 @@ static u32 (*sub_81C93EC(void))(struct Pokenav1Struct*) u32 sub_81C941C(void) { struct Pokenav1Struct *state = GetSubstructPtr(1); - return state->unkC(state); + return state->callback(state); } void sub_81C9430(void) @@ -176,32 +176,32 @@ static u32 sub_81C943C(struct Pokenav1Struct *a0) if (gMain.newKeys & A_BUTTON) { - switch (sUnknown_0861FC59[a0->unk0][a0->unk2]) + switch (sDescriptionIds[a0->menuType][a0->cursorPos]) { case 0: - a0->unk6 = gSaveBlock2Ptr->regionMapZoom ? 2 : 1; - sub_81C97B0(a0, UNKNOWN_POKENAV_OFFSET + 6); + a0->helpBarIndex = gSaveBlock2Ptr->regionMapZoom ? 2 : 1; + sub_81C97B0(a0, POKENAV_MENU_6); return 8; case 1: - a0->unk0 = 3; - a0->unk2 = 0; - a0->unk4 = sUnknown_0861FC59[3][0]; - a0->unkC = sub_81C963C; + a0->menuType = 3; + a0->cursorPos = 0; + a0->descriptionId = sDescriptionIds[3][0]; + a0->callback = sub_81C963C; return 2; case 2: - a0->unk6 = 6; - sub_81C97B0(a0, UNKNOWN_POKENAV_OFFSET + 11); + a0->helpBarIndex = 6; + sub_81C97B0(a0, POKENAV_MENU_B); return 8; case 3: if (CanViewRibbonsMenu()) { - a0->unk6 = 9; - sub_81C97B0(a0, UNKNOWN_POKENAV_OFFSET + 12); + a0->helpBarIndex = 9; + sub_81C97B0(a0, POKENAV_MENU_C); return 8; } else { - a0->unkC = sub_81C9600; + a0->callback = sub_81C9600; return 6; } case 4: @@ -222,10 +222,10 @@ static u32 sub_81C9520(struct Pokenav1Struct *a0) if (gMain.newKeys & A_BUTTON) { - if (sUnknown_0861FC59[a0->unk0][a0->unk2] == 2) + if (sDescriptionIds[a0->menuType][a0->cursorPos] == 2) { - a0->unk6 = 6; - sub_81C97B0(a0, UNKNOWN_POKENAV_OFFSET + 11); + a0->helpBarIndex = 6; + sub_81C97B0(a0, POKENAV_MENU_B); return 8; } else @@ -251,7 +251,7 @@ static u32 sub_81C9588(struct Pokenav1Struct *a0) if (gMain.newKeys & A_BUTTON) { - u32 v0 = sUnknown_0861FC59[a0->unk0][a0->unk2]; + u32 v0 = sDescriptionIds[a0->menuType][a0->cursorPos]; if (v0 != 2 && v0 != 4) { PlaySE(SE_HAZURE); @@ -259,8 +259,8 @@ static u32 sub_81C9588(struct Pokenav1Struct *a0) } else if (v0 == 2) { - a0->unk6 = 6; - sub_81C97B0(a0, UNKNOWN_POKENAV_OFFSET + 11); + a0->helpBarIndex = 6; + sub_81C97B0(a0, POKENAV_MENU_B); return 8; } else @@ -279,13 +279,13 @@ static u32 sub_81C9600(struct Pokenav1Struct *a0) { if (sub_81C9814(a0)) { - a0->unkC = sub_81C93EC(); + a0->callback = sub_81C93EC(); return 1; } if (gMain.newKeys & (A_BUTTON | B_BUTTON)) { - a0->unkC = sub_81C93EC(); + a0->callback = sub_81C93EC(); return 7; } @@ -300,17 +300,17 @@ static u32 sub_81C963C(struct Pokenav1Struct *a0) if (gMain.newKeys & A_BUTTON) { - switch (sUnknown_0861FC59[a0->unk0][a0->unk2]) + switch (sDescriptionIds[a0->menuType][a0->cursorPos]) { case 6: - a0->unk0 = 4; - a0->unk2 = v0; - a0->unk4 = sUnknown_0861FC59[4][0]; - a0->unkC = sub_81C96FC; + a0->menuType = 4; + a0->cursorPos = v0; + a0->descriptionId = sDescriptionIds[4][0]; + a0->callback = sub_81C96FC; return 4; case 5: - a0->unk6 = v0; - sub_81C97B0(a0, UNKNOWN_POKENAV_OFFSET + 7); + a0->helpBarIndex = v0; + sub_81C97B0(a0, POKENAV_MENU_7); return 8; case 7: PlaySE(SE_SELECT); @@ -320,10 +320,10 @@ static u32 sub_81C963C(struct Pokenav1Struct *a0) } if (gMain.newKeys & B_BUTTON) { - if (a0->unk2 != sUnknown_0861FC54[a0->unk0]) + if (a0->cursorPos != sLastCursorPositions[a0->menuType]) { - a0->unk2 = sUnknown_0861FC54[a0->unk0]; - a0->unkC = sub_81C9798; + a0->cursorPos = sLastCursorPositions[a0->menuType]; + a0->callback = sub_81C9798; return 1; } else @@ -344,12 +344,12 @@ static u32 sub_81C96FC(struct Pokenav1Struct *a0) if (gMain.newKeys & A_BUTTON) { - u8 v0 = sUnknown_0861FC59[a0->unk0][a0->unk2]; + u8 v0 = sDescriptionIds[a0->menuType][a0->cursorPos]; if (v0 != 13) { sub_81C7694(v0 - 8); - sub_81C97B0(a0, UNKNOWN_POKENAV_OFFSET + 8); - a0->unk6 = 3; + sub_81C97B0(a0, POKENAV_MENU_8); + a0->helpBarIndex = 3; return 8; } else @@ -361,10 +361,10 @@ static u32 sub_81C96FC(struct Pokenav1Struct *a0) } if (gMain.newKeys & B_BUTTON) { - if (a0->unk2 != sUnknown_0861FC54[a0->unk0]) + if (a0->cursorPos != sLastCursorPositions[a0->menuType]) { - a0->unk2 = sUnknown_0861FC54[a0->unk0]; - a0->unkC = sub_81C97A4; + a0->cursorPos = sLastCursorPositions[a0->menuType]; + a0->callback = sub_81C97A4; return 1; } else @@ -392,7 +392,7 @@ static u32 sub_81C97A4(struct Pokenav1Struct *a0) static void sub_81C97B0(struct Pokenav1Struct *a0, u32 a1) { a0->unk8 = a1; - a0->unkC = sub_81C97BC; + a0->callback = sub_81C97BC; } static u32 sub_81C97BC(struct Pokenav1Struct *a0) @@ -402,37 +402,37 @@ static u32 sub_81C97BC(struct Pokenav1Struct *a0) static void sub_81C97C0(struct Pokenav1Struct *a0) { - a0->unk0 = sub_81C9268(); - a0->unk2 = 1; - a0->unk4 = sUnknown_0861FC59[a0->unk0][a0->unk2]; - a0->unkC = sub_81C943C; + a0->menuType = GetPokenavMainMenuType(); + a0->cursorPos = 1; + a0->descriptionId = sDescriptionIds[a0->menuType][a0->cursorPos]; + a0->callback = sub_81C943C; } static void sub_81C97F8(struct Pokenav1Struct *a0) { - a0->unk0 = 3; - a0->unk2 = 1; - a0->unk4 = sUnknown_0861FC59[3][1]; - a0->unkC = sub_81C963C; + a0->menuType = 3; + a0->cursorPos = 1; + a0->descriptionId = sDescriptionIds[3][1]; + a0->callback = sub_81C963C; } static bool32 sub_81C9814(struct Pokenav1Struct *a0) { if (gMain.newKeys & DPAD_UP) { - if (--a0->unk2 < 0) - a0->unk2 = sUnknown_0861FC54[a0->unk0]; + if (--a0->cursorPos < 0) + a0->cursorPos = sLastCursorPositions[a0->menuType]; - a0->unk4 = sUnknown_0861FC59[a0->unk0][a0->unk2]; + a0->descriptionId = sDescriptionIds[a0->menuType][a0->cursorPos]; return TRUE; } else if (gMain.newKeys & DPAD_DOWN) { - a0->unk2++; - if (a0->unk2 > sUnknown_0861FC54[a0->unk0]) - a0->unk2 = 0; + a0->cursorPos++; + if (a0->cursorPos > sLastCursorPositions[a0->menuType]) + a0->cursorPos = 0; - a0->unk4 = sUnknown_0861FC59[a0->unk0][a0->unk2]; + a0->descriptionId = sDescriptionIds[a0->menuType][a0->cursorPos]; return TRUE; } else @@ -444,23 +444,23 @@ static bool32 sub_81C9814(struct Pokenav1Struct *a0) int sub_81C9894(void) { struct Pokenav1Struct *state = GetSubstructPtr(1); - return state->unk0; + return state->menuType; } int sub_81C98A4(void) { struct Pokenav1Struct *state = GetSubstructPtr(1); - return state->unk2; + return state->cursorPos; } int sub_81C98B4(void) { struct Pokenav1Struct *state = GetSubstructPtr(1); - return state->unk4; + return state->descriptionId; } int sub_81C98C4(void) { struct Pokenav1Struct *state = GetSubstructPtr(1); - return state->unk6; + return state->helpBarIndex; }