diff options
Diffstat (limited to 'src/pokenav_unk_2.c')
-rw-r--r-- | src/pokenav_unk_2.c | 280 |
1 files changed, 145 insertions, 135 deletions
diff --git a/src/pokenav_unk_2.c b/src/pokenav_unk_2.c index de962ccd6..94b816b6d 100644 --- a/src/pokenav_unk_2.c +++ b/src/pokenav_unk_2.c @@ -23,31 +23,31 @@ struct Pokenav2Struct { bool32 (*callback)(void); u32 loopedTaskId; - u16 optionDescriptionWindowId; + u16 optionDescWindowId; u8 bg3ScrollTaskId; u8 cursorPos; bool8 otherIconsInMotion; u8 field_00d; - bool32 iconVisible[6]; + bool32 iconVisible[MAX_POKENAV_MENUITEMS]; struct Sprite * field_028; - struct Sprite * iconSprites[6][4]; + struct Sprite * iconSprites[MAX_POKENAV_MENUITEMS][4]; u16 bg1TilemapBuffer[0x400]; }; static struct Pokenav2Struct * sub_81C9958(void); static bool32 sub_81C99FC(void); static u32 sub_81C9A10(s32 state); -static u32 sub_81C9C6C(s32 state); -static u32 sub_81C9CA8(s32 state); -static u32 sub_81C9D44(s32 state); -static u32 sub_81C9DD8(s32 state); -static u32 sub_81C9E58(s32 state); -static u32 sub_81C9EC8(s32 state); -static u32 sub_81C9EF8(s32 state); -static u32 sub_81C9F28(s32 state); +static u32 LoopedTask_MoveMenuCursor(s32 state); +static u32 LoopedTask_OpenConditionMenu(s32 state); +static u32 LoopedTask_ReturnToMainMenu(s32 state); +static u32 LoopedTask_OpenConditionSearchMenu(s32 state); +static u32 LoopedTask_ReturnToConditionMenu(s32 state); +static u32 LoopedTask_SelectRibbonsNoWinners(s32 state); +static u32 LoopedTask_ReShowDescription(s32 state); +static u32 LoopedTask_OpenPokenavFeature(s32 state); static void sub_81C9FC4(void); static void sub_81C9FEC(void); -static void sub_81CA02C(void); +static void CreateMenuOptionSprites(void); static void sub_81CA094(void); static void sub_81CA0C8(void); static void sub_81CA0EC(const u16 *const * a0, s32 a1, s32 a2); @@ -56,7 +56,7 @@ static void sub_81CA278(void); static void sub_81CA35C(struct Sprite ** sprites, s32 a1, s32 a2, s32 a3); static void sub_81CA3B4(struct Sprite ** sprites); static void sub_81CA2DC(void); -static bool32 sub_81CA324(void); +static bool32 AreMenuOptionSpritesMoving(void); static void sub_81CA448(struct Sprite ** sprites, bool32 a1); static void sub_81CA474(struct Sprite * sprite); static void sub_81CA4AC(struct Sprite * sprite); @@ -64,9 +64,9 @@ static void sub_81CA580(u8 taskId); static void sub_81CA640(void); static void sub_81CA6AC(struct Sprite * sprite); static void sub_81CA698(void); -static void sub_81CA6E0(void); -static void sub_81CA714(void); -static void sub_81CA770(void); +static void AddOptionDescriptionWindow(void); +static void PrintCurrentOptionDescription(void); +static void PrintNoRibbonWinners(void); static bool32 sub_81CA7C4(void); static void sub_81CA7D4(void); static void sub_81CA7F4(void); @@ -120,16 +120,16 @@ static const struct BgTemplate gUnknown_08620194[] = { } }; -static const LoopedTask gUnknown_086201A0[] = { - NULL, - sub_81C9C6C, - sub_81C9CA8, - sub_81C9D44, - sub_81C9DD8, - sub_81C9E58, - sub_81C9EC8, - sub_81C9EF8, - sub_81C9F28 +static const LoopedTask sMenuHandlerLoopTaskFuncs[] = { + [POKENAV_MENU_FUNC_NONE] = NULL, + [POKENAV_MENU_FUNC_MOVE_CURSOR] = LoopedTask_MoveMenuCursor, + [POKENAV_MENU_FUNC_OPEN_CONDITION] = LoopedTask_OpenConditionMenu, + [POKENAV_MENU_FUNC_RETURN_TO_MAIN] = LoopedTask_ReturnToMainMenu, + [POKENAV_MENU_FUNC_OPEN_CONDITION_SEARCH] = LoopedTask_OpenConditionSearchMenu, + [POKENAV_MENU_FUNC_RETURN_TO_CONDITION] = LoopedTask_ReturnToConditionMenu, + [POKENAV_MENU_FUNC_NO_RIBBON_WINNERS] = LoopedTask_SelectRibbonsNoWinners, + [POKENAV_MENU_FUNC_RESHOW_DESCRIPTION] = LoopedTask_ReShowDescription, + [POKENAV_MENU_FUNC_OPEN_FEATURE] = LoopedTask_OpenPokenavFeature }; static const struct CompressedSpriteSheet gUnknown_086201C4[] = @@ -175,39 +175,45 @@ struct UnkStruct_08620240 { u16 unk0; u16 unk2; - const u16 *unk4[6]; + const u16 *unk4[MAX_POKENAV_MENUITEMS]; }; -static const struct UnkStruct_08620240 gUnknown_08620240[5] = +// TODO +static const struct UnkStruct_08620240 gUnknown_08620240[POKENAV_MENU_TYPE_COUNT] = { + [POKENAV_MENU_TYPE_DEFAULT] = { 0x2A, - 0x14, - {gUnknown_0862020C, gUnknown_08620210, gUnknown_0862021C} + 0x14, + {gUnknown_0862020C, gUnknown_08620210, gUnknown_0862021C} }, + [POKENAV_MENU_TYPE_UNLOCK_MC] = { 0x2A, - 0x14, - {gUnknown_0862020C, gUnknown_08620210, gUnknown_08620214, gUnknown_0862021C} + 0x14, + {gUnknown_0862020C, gUnknown_08620210, gUnknown_08620214, gUnknown_0862021C} }, + [POKENAV_MENU_TYPE_UNLOCK_MC_RIBBONS] = { 0x2A, - 0x14, - {gUnknown_0862020C, gUnknown_08620210, gUnknown_08620214, gUnknown_08620218, gUnknown_0862021C} + 0x14, + {gUnknown_0862020C, gUnknown_08620210, gUnknown_08620214, gUnknown_08620218, gUnknown_0862021C} }, + [POKENAV_MENU_TYPE_CONDITION] = { 0x38, - 0x14, - {gUnknown_08620220, gUnknown_08620224, gUnknown_0862023C} + 0x14, + {gUnknown_08620220, gUnknown_08620224, gUnknown_0862023C} }, + [POKENAV_MENU_TYPE_CONDITION_SEARCH] = { 0x28, - 0x10, - {gUnknown_08620228, gUnknown_0862022C, gUnknown_08620230, gUnknown_08620234, gUnknown_08620238, gUnknown_0862023C} + 0x10, + {gUnknown_08620228, gUnknown_0862022C, gUnknown_08620230, gUnknown_08620234, gUnknown_08620238, gUnknown_0862023C} }, }; -static const struct WindowTemplate gUnknown_086202CC = +static const struct WindowTemplate sOptionDescWindowTemplate = { .bg = 1, .tilemapLeft = 3, @@ -218,28 +224,28 @@ static const struct WindowTemplate gUnknown_086202CC = .baseBlock = 8 }; -static const u8 *const gUnknown_086202D4[] = -{ - gText_CheckMapOfHoenn, - gText_CheckPokemonInDetail, - gText_CallRegisteredTrainer, - gText_CheckObtainedRibbons, - gText_PutAwayPokenav, - gText_CheckPartyPokemonInDetail, - gText_CheckAllPokemonInDetail, - gText_ReturnToPokenavMenu, - gText_FindCoolPokemon, - gText_FindBeautifulPokemon, - gText_FindCutePokemon, - gText_FindSmartPokemon, - gText_FindToughPokemon, - gText_ReturnToConditionMenu +static const u8 *const sPageDescriptions[] = +{ + [POKENAV_MENUITEM_MAP] = gText_CheckMapOfHoenn, + [POKENAV_MENUITEM_CONDITION] = gText_CheckPokemonInDetail, + [POKENAV_MENUITEM_MATCH_CALL] = gText_CallRegisteredTrainer, + [POKENAV_MENUITEM_RIBBONS] = gText_CheckObtainedRibbons, + [POKENAV_MENUITEM_SWITCH_OFF] = gText_PutAwayPokenav, + [POKENAV_MENUITEM_CONDITION_PARTY] = gText_CheckPartyPokemonInDetail, + [POKENAV_MENUITEM_CONDITION_SEARCH] = gText_CheckAllPokemonInDetail, + [POKENAV_MENUITEM_CONDITION_CANCEL] = gText_ReturnToPokenavMenu, + [POKENAV_MENUITEM_CONDITION_SEARCH_COOL] = gText_FindCoolPokemon, + [POKENAV_MENUITEM_CONDITION_SEARCH_BEAUTY] = gText_FindBeautifulPokemon, + [POKENAV_MENUITEM_CONDITION_SEARCH_CUTE] = gText_FindCutePokemon, + [POKENAV_MENUITEM_CONDITION_SEARCH_SMART] = gText_FindSmartPokemon, + [POKENAV_MENUITEM_CONDITION_SEARCH_TOUGH] = gText_FindToughPokemon, + [POKENAV_MENUITEM_CONDITION_SEARCH_CANCEL] = gText_ReturnToConditionMenu }; -static const u8 sOptionDescTextColors[] = {TEXT_COLOR_GREEN, TEXT_COLOR_BLUE, TEXT_COLOR_LIGHT_GREEN}; +static const u8 sOptionDescTextColors[] = {TEXT_COLOR_GREEN, TEXT_COLOR_BLUE, TEXT_COLOR_LIGHT_GREEN}; static const u8 sOptionDescTextColors2[] = {TEXT_COLOR_GREEN, TEXT_COLOR_BLUE, TEXT_COLOR_LIGHT_GREEN}; -static const struct OamData gUnknown_08620314 = +static const struct OamData sOamData_MenuOption = { .y = 0, .affineMode = ST_OAM_AFFINE_OFF, @@ -266,20 +272,20 @@ static const union AffineAnimCmd gUnknown_0862032C[] = AFFINEANIMCMD_END, }; -static const union AffineAnimCmd *const gUnknown_08620344[] = +static const union AffineAnimCmd *const sSpriteAnims_MenuOption[] = { gUnknown_0862031C, - gUnknown_0862032C + gUnknown_0862032C }; -static const struct SpriteTemplate gUnknown_0862034C = +static const struct SpriteTemplate sMenuOptionSpriteTemplate = { .tileTag = 3, .paletteTag = 4, - .oam = &gUnknown_08620314, + .oam = &sOamData_MenuOption, .anims = gDummySpriteAnimTable, .images = NULL, - .affineAnims = gUnknown_08620344, + .affineAnims = sSpriteAnims_MenuOption, .callback = SpriteCallbackDummy, }; @@ -368,11 +374,11 @@ static struct Pokenav2Struct * sub_81C9958(void) } -void sub_81C9990(s32 ltIdx) +void CreateMenuHandlerLoopedTask(s32 ltIdx) { struct Pokenav2Struct * unk = GetSubstructPtr(2); - unk->loopedTaskId = CreateLoopedTask(gUnknown_086201A0[ltIdx], 1); + unk->loopedTaskId = CreateLoopedTask(sMenuHandlerLoopTaskFuncs[ltIdx], 1); unk->callback = sub_81C99FC; } @@ -388,7 +394,7 @@ void sub_81C99D4(void) struct Pokenav2Struct * unk = GetSubstructPtr(2); sub_81CA7F4(); - RemoveWindow(unk->optionDescriptionWindowId); + RemoveWindow(unk->optionDescWindowId); sub_81C9FEC(); sub_81CA994(); FreePokenavSubstruct(2); @@ -434,21 +440,21 @@ static u32 sub_81C9A10(s32 state) decompress_and_copy_tile_data_to_vram(3, gUnknown_0861FC98, 0, 0, 0); decompress_and_copy_tile_data_to_vram(3, gUnknown_0861FCAC, 0, 0, 1); CopyPaletteIntoBufferUnfaded(gUnknown_0861FC78, 0x30, 0x20); - if (sub_81C9894() == 3 || sub_81C9894() == 4) + if (GetPokenavMenuType() == POKENAV_MENU_TYPE_CONDITION || GetPokenavMenuType() == POKENAV_MENU_TYPE_CONDITION_SEARCH) sub_81CA850(); return LT_INC_AND_PAUSE; case 3: if (free_temp_tile_data_buffers_if_possible()) return LT_PAUSE; - sub_81CA6E0(); + AddOptionDescriptionWindow(); sub_81CA7D4(); return LT_INC_AND_CONTINUE; case 4: sub_81C9FC4(); return LT_INC_AND_CONTINUE; case 5: - sub_81CA714(); - sub_81CA02C(); + PrintCurrentOptionDescription(); + CreateMenuOptionSprites(); sub_81CA640(); sub_81CA0C8(); return LT_INC_AND_PAUSE; @@ -467,12 +473,12 @@ static u32 sub_81C9A10(s32 state) PlaySE(SE_PN_ON); sub_81C7AC0(3); } - switch (sub_81C9894()) + switch (GetPokenavMenuType()) { - case 4: + case POKENAV_MENU_TYPE_CONDITION_SEARCH: LoadLeftHeaderGfxForIndex(7); // fallthrough - case 3: + case POKENAV_MENU_TYPE_CONDITION: LoadLeftHeaderGfxForIndex(1); break; default: @@ -483,12 +489,12 @@ static u32 sub_81C9A10(s32 state) case 8: if (IsPaletteFadeActive()) return LT_PAUSE; - switch (sub_81C9894()) + switch (GetPokenavMenuType()) { - case 4: + case POKENAV_MENU_TYPE_CONDITION_SEARCH: sub_81C7FA0(7, FALSE, FALSE); // fallthrough - case 3: + case POKENAV_MENU_TYPE_CONDITION: sub_81C7FA0(1, FALSE, FALSE); break; default: @@ -499,7 +505,7 @@ static u32 sub_81C9A10(s32 state) sub_81CA92C(); return LT_INC_AND_CONTINUE; case 9: - if (sub_81CA324()) + if (AreMenuOptionSpritesMoving()) return LT_PAUSE; if (sub_81C8010()) return LT_PAUSE; @@ -508,18 +514,18 @@ static u32 sub_81C9A10(s32 state) return LT_FINISH; } -static u32 sub_81C9C6C(s32 state) +static u32 LoopedTask_MoveMenuCursor(s32 state) { switch (state) { case 0: sub_81CAA3C(); sub_81CA278(); - sub_81CA714(); + PrintCurrentOptionDescription(); PlaySE(SE_SELECT); return LT_INC_AND_PAUSE; case 1: - if (sub_81CA324()) + if (AreMenuOptionSpritesMoving()) return LT_PAUSE; if (sub_81CA7C4()) return LT_PAUSE; @@ -528,7 +534,7 @@ static u32 sub_81C9C6C(s32 state) return LT_FINISH; } -static u32 sub_81C9CA8(s32 state) +static u32 LoopedTask_OpenConditionMenu(s32 state) { switch (state) { @@ -539,7 +545,7 @@ static u32 sub_81C9CA8(s32 state) PlaySE(SE_SELECT); return LT_INC_AND_PAUSE; case 1: - if (sub_81CA324()) + if (AreMenuOptionSpritesMoving()) return LT_PAUSE; if (sub_81C8010()) return LT_PAUSE; @@ -550,10 +556,10 @@ static u32 sub_81C9CA8(s32 state) sub_81CA20C(); sub_81C7FA0(1, FALSE, FALSE); sub_81CA818(); - sub_81CA714(); + PrintCurrentOptionDescription(); return LT_INC_AND_PAUSE; case 3: - if (sub_81CA324()) + if (AreMenuOptionSpritesMoving()) return LT_PAUSE; if (sub_81C8010()) return LT_PAUSE; @@ -567,7 +573,7 @@ static u32 sub_81C9CA8(s32 state) return LT_FINISH; } -static u32 sub_81C9D44(s32 state) +static u32 LoopedTask_ReturnToMainMenu(s32 state) { switch (state) { @@ -577,7 +583,7 @@ static u32 sub_81C9D44(s32 state) sub_81C7FC4(1, 0); return LT_INC_AND_PAUSE; case 1: - if (sub_81CA324()) + if (AreMenuOptionSpritesMoving()) return LT_PAUSE; if (sub_81C8010()) return LT_PAUSE; @@ -588,10 +594,10 @@ static u32 sub_81C9D44(s32 state) sub_81CA20C(); sub_81C7FA0(0, FALSE, FALSE); sub_81CA864(); - sub_81CA714(); + PrintCurrentOptionDescription(); return LT_INC_AND_PAUSE; case 3: - if (sub_81CA324()) + if (AreMenuOptionSpritesMoving()) return LT_PAUSE; if (sub_81C8010()) return LT_PAUSE; @@ -605,7 +611,7 @@ static u32 sub_81C9D44(s32 state) return LT_FINISH; } -static u32 sub_81C9DD8(s32 state) +static u32 LoopedTask_OpenConditionSearchMenu(s32 state) { switch (state) { @@ -615,7 +621,7 @@ static u32 sub_81C9DD8(s32 state) PlaySE(SE_SELECT); return LT_INC_AND_PAUSE; case 1: - if (sub_81CA324()) + if (AreMenuOptionSpritesMoving()) return LT_PAUSE; LoadLeftHeaderGfxForIndex(7); sub_81CA0C8(); @@ -623,10 +629,10 @@ static u32 sub_81C9DD8(s32 state) case 2: sub_81CA20C(); sub_81C7FA0(7, FALSE, FALSE); - sub_81CA714(); + PrintCurrentOptionDescription(); return LT_INC_AND_PAUSE; case 3: - if (sub_81CA324()) + if (AreMenuOptionSpritesMoving()) return LT_PAUSE; if (sub_81C8010()) return LT_PAUSE; @@ -638,7 +644,7 @@ static u32 sub_81C9DD8(s32 state) return LT_FINISH; } -static u32 sub_81C9E58(s32 state) +static u32 LoopedTask_ReturnToConditionMenu(s32 state) { switch (state) { @@ -648,7 +654,7 @@ static u32 sub_81C9E58(s32 state) sub_81C7FC4(7, 0); return LT_INC_AND_PAUSE; case 1: - if (sub_81CA324()) + if (AreMenuOptionSpritesMoving()) return LT_PAUSE; if (sub_81C8010()) return LT_PAUSE; @@ -656,10 +662,10 @@ static u32 sub_81C9E58(s32 state) return LT_INC_AND_PAUSE; case 2: sub_81CA20C(); - sub_81CA714(); + PrintCurrentOptionDescription(); return LT_INC_AND_PAUSE; case 3: - if (sub_81CA324()) + if (AreMenuOptionSpritesMoving()) return LT_PAUSE; if (sub_81CA89C()) return LT_PAUSE; @@ -669,13 +675,13 @@ static u32 sub_81C9E58(s32 state) return LT_FINISH; } -static u32 sub_81C9EC8(s32 state) +static u32 LoopedTask_SelectRibbonsNoWinners(s32 state) { switch (state) { case 0: PlaySE(SE_HAZURE); - sub_81CA770(); + PrintNoRibbonWinners(); return LT_INC_AND_PAUSE; case 1: if (IsDma3ManagerBusyWithBgCopy()) @@ -685,13 +691,14 @@ static u32 sub_81C9EC8(s32 state) return LT_FINISH; } -static u32 sub_81C9EF8(s32 state) +// For redisplaying the Ribbons description to replace the No Ribbon Winners message +static u32 LoopedTask_ReShowDescription(s32 state) { switch (state) { case 0: PlaySE(SE_SELECT); - sub_81CA714(); + PrintCurrentOptionDescription(); return LT_INC_AND_PAUSE; case 1: if (IsDma3ManagerBusyWithBgCopy()) @@ -701,7 +708,8 @@ static u32 sub_81C9EF8(s32 state) return LT_FINISH; } -static u32 sub_81C9F28(s32 state) +// For selecting a feature option from a menu, e.g. the Map, Match Call, Beauty search, etc. +static u32 LoopedTask_OpenPokenavFeature(s32 state) { switch (state) { @@ -714,12 +722,12 @@ static u32 sub_81C9F28(s32 state) sub_81C7880(); sub_81CA9C8(); sub_81CA2DC(); - switch (sub_81C9894()) + switch (GetPokenavMenuType()) { - case 4: + case POKENAV_MENU_TYPE_CONDITION_SEARCH: sub_81C7FC4(7, FALSE); // fallthrough - case 3: + case POKENAV_MENU_TYPE_CONDITION: sub_81C7FC4(1, FALSE); break; default: @@ -729,7 +737,7 @@ static u32 sub_81C9F28(s32 state) PlaySE(SE_SELECT); return LT_INC_AND_PAUSE; case 2: - if (sub_81CA324()) + if (AreMenuOptionSpritesMoving()) return LT_PAUSE; if (sub_81C8010()) return LT_PAUSE; @@ -766,16 +774,17 @@ static void sub_81C9FEC(void) sub_81CA698(); } -static void sub_81CA02C(void) +static void CreateMenuOptionSprites(void) { s32 i, j; struct Pokenav2Struct * unk = GetSubstructPtr(2); - for (i = 0; i < 6; i++) + for (i = 0; i < MAX_POKENAV_MENUITEMS; i++) { + // Each menu option is 4 subsprites for (j = 0; j < 4; j++) { - u8 spriteId = CreateSprite(&gUnknown_0862034C, 0x8c, 20 * i + 40, 3); + u8 spriteId = CreateSprite(&sMenuOptionSpriteTemplate, 0x8c, 20 * i + 40, 3); unk->iconSprites[i][j] = &gSprites[spriteId]; gSprites[spriteId].pos2.x = 32 * j; } @@ -787,7 +796,7 @@ static void sub_81CA094(void) s32 i, j; struct Pokenav2Struct * unk = GetSubstructPtr(2); - for (i = 0; i < 6; i++) + for (i = 0; i < MAX_POKENAV_MENUITEMS; i++) { for (j = 0; j < 4; j++) { @@ -799,8 +808,8 @@ static void sub_81CA094(void) static void sub_81CA0C8(void) { - s32 r0 = sub_81C9894(); - sub_81CA0EC(gUnknown_08620240[r0].unk4, gUnknown_08620240[r0].unk0, gUnknown_08620240[r0].unk2); + s32 menuType = GetPokenavMenuType(); + sub_81CA0EC(gUnknown_08620240[menuType].unk4, gUnknown_08620240[menuType].unk0, gUnknown_08620240[menuType].unk2); } static void sub_81CA0EC(const u16 *const *a0, s32 a1, s32 a2) @@ -809,7 +818,7 @@ static void sub_81CA0EC(const u16 *const *a0, s32 a1, s32 a2) struct Pokenav2Struct * unk = GetSubstructPtr(2); s32 sp04 = GetSpriteTileStartByTag(3); - for (i = 0; i < 6; i++) + for (i = 0; i < MAX_POKENAV_MENUITEMS; i++) { if (*a0 != NULL) { @@ -841,11 +850,11 @@ static void sub_81CA20C(void) { s32 i; struct Pokenav2Struct * unk = GetSubstructPtr(2); - s32 r8 = sub_81C98A4(); + s32 r8 = GetPokenavCursorPos(); s32 r7 = 0; s32 r2; - for (i = 0; i < 6; i++) + for (i = 0; i < MAX_POKENAV_MENUITEMS; i++) { if (unk->iconVisible[i]) { @@ -868,10 +877,10 @@ static void sub_81CA278(void) { s32 i; struct Pokenav2Struct * unk = GetSubstructPtr(2); - s32 r3 = sub_81C98A4(); + s32 r3 = GetPokenavCursorPos(); s32 r5; - for (i = 0, r5 = 0; i < 6; i++) + for (i = 0, r5 = 0; i < MAX_POKENAV_MENUITEMS; i++) { if (unk->iconVisible[i]) { @@ -894,7 +903,7 @@ static void sub_81CA2DC(void) s32 i; struct Pokenav2Struct * unk = GetSubstructPtr(2); - for (i = 0; i < 6; i++) + for (i = 0; i < MAX_POKENAV_MENUITEMS; i++) { if (unk->iconVisible[i]) { @@ -906,12 +915,12 @@ static void sub_81CA2DC(void) } } -static bool32 sub_81CA324(void) +static bool32 AreMenuOptionSpritesMoving(void) { s32 i; struct Pokenav2Struct * unk = GetSubstructPtr(2); - for (i = 0; i < 6; i++) + for (i = 0; i < MAX_POKENAV_MENUITEMS; i++) { if (unk->iconSprites[i][0]->callback != SpriteCallbackDummy) return TRUE; @@ -1112,34 +1121,35 @@ static void sub_81CA6AC(struct Sprite * sprite) } } -static void sub_81CA6E0(void) +static void AddOptionDescriptionWindow(void) { struct Pokenav2Struct * ptr = GetSubstructPtr(2); - ptr->optionDescriptionWindowId = AddWindow(&gUnknown_086202CC); - PutWindowTilemap(ptr->optionDescriptionWindowId); - FillWindowPixelBuffer(ptr->optionDescriptionWindowId, PIXEL_FILL(6)); - CopyWindowToVram(ptr->optionDescriptionWindowId, 3); + ptr->optionDescWindowId = AddWindow(&sOptionDescWindowTemplate); + PutWindowTilemap(ptr->optionDescWindowId); + FillWindowPixelBuffer(ptr->optionDescWindowId, PIXEL_FILL(6)); + CopyWindowToVram(ptr->optionDescWindowId, 3); } -static void sub_81CA714(void) +static void PrintCurrentOptionDescription(void) { struct Pokenav2Struct * ptr = GetSubstructPtr(2); - int i = sub_81C98B4(); - const u8 * s = gUnknown_086202D4[i]; + int menuItem = GetCurrentMenuItemId(); + const u8 * s = sPageDescriptions[menuItem]; u32 width = GetStringWidth(1, s, -1); - FillWindowPixelBuffer(ptr->optionDescriptionWindowId, PIXEL_FILL(6)); - AddTextPrinterParameterized3(ptr->optionDescriptionWindowId, 1, (192 - width) / 2, 1, sOptionDescTextColors, 0, s); + FillWindowPixelBuffer(ptr->optionDescWindowId, PIXEL_FILL(6)); + AddTextPrinterParameterized3(ptr->optionDescWindowId, 1, (192 - width) / 2, 1, sOptionDescTextColors, 0, s); } - -static void sub_81CA770(void) +// Printed when Ribbons is selected if no PC/party mons have ribbons +// Can occur by obtaining a mon with a ribbon and then releasing all ribbon winners +static void PrintNoRibbonWinners(void) { struct Pokenav2Struct * ptr = GetSubstructPtr(2); const u8 * s = gText_NoRibbonWinners; u32 width = GetStringWidth(1, s, -1); - FillWindowPixelBuffer(ptr->optionDescriptionWindowId, PIXEL_FILL(6)); - AddTextPrinterParameterized3(ptr->optionDescriptionWindowId, 1, (192 - width) / 2, 1, sOptionDescTextColors2, 0, s); + FillWindowPixelBuffer(ptr->optionDescWindowId, PIXEL_FILL(6)); + AddTextPrinterParameterized3(ptr->optionDescWindowId, 1, (192 - width) / 2, 1, sOptionDescTextColors2, 0, s); } static bool32 sub_81CA7C4(void) @@ -1259,9 +1269,9 @@ static void sub_81CA9EC(u8 taskId) static void sub_81CAA3C(void) { - int i = sub_81C9894(); - int j = sub_81C98A4(); - int r4 = gUnknown_08620240[i].unk2 * j + gUnknown_08620240[i].unk0 - 8; + int menuType = GetPokenavMenuType(); + int cursorPos = GetPokenavCursorPos(); + int r4 = gUnknown_08620240[menuType].unk2 * cursorPos + gUnknown_08620240[menuType].unk0 - 8; CpuFill16(0, gScanlineEffectRegBuffers[0], 0x140); CpuFill16(0, gScanlineEffectRegBuffers[1], 0x140); CpuFill16(RGB(16, 23, 28), &gScanlineEffectRegBuffers[0][r4], 0x20); |