From 2e80477ea11c265e69658b852c57097fd8a21492 Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Sun, 10 Jun 2018 11:01:29 -0500 Subject: [PATCH] Label move_tutor_menu.c --- asm/pokemon_storage_system.s | 2 +- asm/pokenav.s | 34 +- data-de/text/contest_strings.inc | 2 +- data/scripts/maps/FallarborTown_House2.inc | 2 +- data/specials.inc | 2 +- data/text/contest_strings.inc | 2 +- .../{pokedex => move_tutor_menu}/arrows.png | Bin include/ewram.h | 2 +- include/menu.h | 8 +- include/{learn_move.h => move_tutor_menu.h} | 4 +- include/pokemon.h | 2 +- include/strings.h | 2 +- include/strings2.h | 4 +- include/text.h | 4 +- ld_script.txt | 4 +- src/battle/battle_records.c | 2 +- src/berry_blender.c | 28 +- src/choose_party.c | 4 +- src/clear_save_data_menu.c | 2 +- src/debug/mori_debug_menu.c | 4 +- src/debug/sound_check_menu.c | 4 +- src/debug/start_menu_debug.c | 2 +- src/debug/watanabe_debug_menu.c | 2 +- src/decoration.c | 10 +- src/diploma.c | 2 +- src/easy_chat_2.c | 2 +- src/field_effect.c | 8 +- src/field_message_box.c | 2 +- src/field_screen_effect.c | 2 +- src/item_menu.c | 18 +- src/learn_move.c | 1066 ----------------- src/link.c | 4 +- src/mail.c | 4 +- src/main_menu.c | 12 +- src/mauville_man.c | 2 +- src/menu.c | 22 +- src/money.c | 2 +- src/move_tutor_menu.c | 1063 ++++++++++++++++ src/mystery_event_menu.c | 8 +- src/overworld.c | 12 +- src/party_menu.c | 4 +- src/player_pc.c | 2 +- src/pokeblock.c | 6 +- src/pokemon_3.c | 12 +- src/pokemon_storage_system_4.c | 6 +- src/pokemon_summary_screen.c | 22 +- src/pokenav_before.c | 2 +- src/reset_rtc_screen.c | 8 +- src/roulette.c | 2 +- src/save_failed_screen.c | 2 +- src/script_menu.c | 2 +- src/secret_base.c | 4 +- src/start_menu.c | 8 +- src/starter_choose.c | 6 +- src/strings.c | 4 +- src/text.c | 12 +- src/trade.c | 4 +- src/trainer_card.c | 6 +- src/wallclock.c | 2 +- sym_bss.txt | 2 +- 60 files changed, 1238 insertions(+), 1239 deletions(-) rename graphics/{pokedex => move_tutor_menu}/arrows.png (100%) mode change 100644 => 100755 rename include/{learn_move.h => move_tutor_menu.h} (56%) delete mode 100644 src/learn_move.c create mode 100644 src/move_tutor_menu.c diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s index 357fe9a49..67655e63f 100644 --- a/asm/pokemon_storage_system.s +++ b/asm/pokemon_storage_system.s @@ -896,7 +896,7 @@ sub_809CDEC: @ 809CDEC ldr r0, [r0] str r0, [r1] str r3, [r1, 0x4] - bl sub_8072CA4 + bl GetStringWidthInMenuWindow lsls r0, 24 lsrs r0, 24 adds r1, r0, 0x7 diff --git a/asm/pokenav.s b/asm/pokenav.s index ca65b2e06..7fc2348f5 100644 --- a/asm/pokenav.s +++ b/asm/pokenav.s @@ -1026,7 +1026,7 @@ _080F0E42: adds r0, r4, 0 movs r2, 0x88 movs r3, 0 - bl sub_8072C74 + bl AlignStringInMenuWindow lsls r2, r5, 3 adds r0, r4, 0 _080F0E54: @@ -1049,7 +1049,7 @@ _080F0E6C: adds r0, r4, 0 movs r2, 0x88 movs r3, 0 - bl sub_8072C74 + bl AlignStringInMenuWindow lsls r2, r5, 3 adds r0, r4, 0 movs r1, 0x61 @@ -1270,7 +1270,7 @@ sub_80F0FFC: @ 80F0FFC adds r1, r5, 0 movs r2, 0x58 movs r3, 0x2 - bl sub_8072C74 + bl AlignStringInMenuWindow adds r0, r4, 0 movs r1, 0 movs r2, 0x5 @@ -1880,7 +1880,7 @@ _080F152E: adds r0, r6, 0 movs r2, 0x80 movs r3, 0 - bl sub_8072C74 + bl AlignStringInMenuWindow ldrh r0, [r5] lsls r0, 3 adds r4, 0x4 @@ -1889,7 +1889,7 @@ _080F152E: adds r0, r7, 0 movs r2, 0x80 movs r3, 0 - bl sub_8072C74 + bl AlignStringInMenuWindow b _080F158A .align 2, 0 _080F1558: .4byte gUnknown_020388B4 @@ -1904,12 +1904,12 @@ _080F1570: adds r1, r4, 0 movs r2, 0x80 movs r3, 0 - bl sub_8072C74 + bl AlignStringInMenuWindow adds r0, r7, 0 adds r1, r4, 0 movs r2, 0x80 movs r3, 0 - bl sub_8072C74 + bl AlignStringInMenuWindow _080F158A: adds r0, r6, 0 movs r1, 0xC @@ -2398,7 +2398,7 @@ sub_80F1934: @ 80F1934 adds r0, r5, 0 movs r2, 0x57 movs r3, 0 - bl sub_8072C74 + bl AlignStringInMenuWindow b _080F19B8 .align 2, 0 _080F1990: .4byte gUnknown_083DFEC4 @@ -2413,7 +2413,7 @@ _080F19AC: adds r0, r5, 0 movs r2, 0x57 movs r3, 0 - bl sub_8072C74 + bl AlignStringInMenuWindow _080F19B8: ldr r0, _080F19D4 @ =gUnknown_083DFEC4 ldr r0, [r0] @@ -7975,7 +7975,7 @@ sub_80F443C: @ 80F443C adds r1, r4, 0 movs r2, 0x38 movs r3, 0x1 - bl sub_8072C14 + bl AlignInt1InMenuWindow pop {r4} pop {r1} bx r1 @@ -7990,7 +7990,7 @@ sub_80F445C: @ 80F445C lsrs r1, 16 movs r2, 0x17 movs r3, 0x1 - bl sub_8072C14 + bl AlignInt1InMenuWindow adds r4, r0, 0 movs r3, 0xFC strb r3, [r4] @@ -8016,7 +8016,7 @@ sub_80F445C: @ 80F445C adds r0, r4, 0 movs r2, 0x32 movs r3, 0x1 - bl sub_8072C14 + bl AlignInt1InMenuWindow adds r4, r0, 0 pop {r4} pop {r1} @@ -8190,7 +8190,7 @@ sub_80F45A0: @ 80F45A0 ldr r1, _080F4604 @ =gOtherText_InParty movs r2, 0x40 movs r3, 0 - bl sub_8072C74 + bl AlignStringInMenuWindow b _080F4624 .align 2, 0 _080F45F0: .4byte gUnknown_083DFEC4 @@ -8212,7 +8212,7 @@ _080F4608: adds r1, r2 movs r2, 0x40 movs r3, 0 - bl sub_8072C74 + bl AlignStringInMenuWindow _080F4624: ldr r0, _080F463C @ =gUnknown_083DFEC4 ldr r0, [r0] @@ -8236,7 +8236,7 @@ _080F4644: adds r1, r4, 0 movs r2, 0x68 movs r3, 0 - bl sub_8072C74 + bl AlignStringInMenuWindow lsls r0, r6, 1 adds r0, r6 lsls r0, 3 @@ -8246,7 +8246,7 @@ _080F4644: adds r1, r4, 0 movs r2, 0x40 movs r3, 0 - bl sub_8072C74 + bl AlignStringInMenuWindow ldr r1, _080F4688 @ =0x00008937 adds r0, r5, r1 adds r0, r6 @@ -12397,7 +12397,7 @@ _080F6656: adds r0, r5, 0 movs r2, 0x80 movs r3, 0x1 - bl sub_8072C14 + bl AlignInt1InMenuWindow adds r5, r0, 0 b _080F66CE .align 2, 0 diff --git a/data-de/text/contest_strings.inc b/data-de/text/contest_strings.inc index 02264880e..0067f78e3 100644 --- a/data-de/text/contest_strings.inc +++ b/data-de/text/contest_strings.inc @@ -253,7 +253,7 @@ ContestString_Tough: .string "STÄRKE$" .align 2 -gUnknown_083CAF70:: @ 83CAF70 +gContestCategoryNames:: @ 83CAF70 .4byte ContestString_Cool .4byte ContestString_Beauty .4byte ContestString_Cute diff --git a/data/scripts/maps/FallarborTown_House2.inc b/data/scripts/maps/FallarborTown_House2.inc index bb1656fc2..41ebd039c 100644 --- a/data/scripts/maps/FallarborTown_House2.inc +++ b/data/scripts/maps/FallarborTown_House2.inc @@ -37,7 +37,7 @@ FallarborTown_House2_EventScript_153CE4:: @ 8153CE4 FallarborTown_House2_EventScript_153D1A:: @ 8153D1A msgbox FallarborTown_House2_Text_177C5D, 4 - special TeachMoveTutorMove + special DisplayMoveTutorMenu waitstate compare VAR_SPECIAL_4, 0 goto_if_eq FallarborTown_House2_EventScript_153CE4 diff --git a/data/specials.inc b/data/specials.inc index bdf4258c3..7983c71af 100644 --- a/data/specials.inc +++ b/data/specials.inc @@ -232,7 +232,7 @@ gSpecials:: def_special DeleteMonMove def_special ScrSpecial_GetPokemonNicknameAndMoveName def_special ScrSpecial_CountPokemonMoves - def_special TeachMoveTutorMove + def_special DisplayMoveTutorMenu def_special GetRecordedCyclingRoadResults def_special ScrSpecial_BeginCyclingRoadChallenge def_special GetPlayerAvatarBike diff --git a/data/text/contest_strings.inc b/data/text/contest_strings.inc index 5c9fdf0db..8d7fd02d3 100644 --- a/data/text/contest_strings.inc +++ b/data/text/contest_strings.inc @@ -201,7 +201,7 @@ ContestString_Tough: .string "TOUGH$" .align 2 -gUnknown_083CAF70:: @ 83CAF70 +gContestCategoryNames:: @ 83CAF70 .4byte ContestString_Cool .4byte ContestString_Beauty .4byte ContestString_Cute diff --git a/graphics/pokedex/arrows.png b/graphics/move_tutor_menu/arrows.png old mode 100644 new mode 100755 similarity index 100% rename from graphics/pokedex/arrows.png rename to graphics/move_tutor_menu/arrows.png diff --git a/include/ewram.h b/include/ewram.h index 87af8dd53..f8a0d69f9 100644 --- a/include/ewram.h +++ b/include/ewram.h @@ -191,7 +191,7 @@ extern u8 gSharedMem[]; #define AI_ARRAY_160CC(i) (gSharedMem[0x160CC + i * 2]) #define ewram16800 (&gSharedMem[0x16800]) #define ewram17000 (&gSharedMem[0x17000]) -#define eLearnMoveStruct (struct LearnMoveStruct *)(gSharedMem + 0x17000) +#define eMoveTutorMenu (struct MoveTutorMenu *)(gSharedMem + 0x17000) #define eSecretBaseRecord ((struct SecretBaseRecord *)(gSharedMem + 0x17000)) #define eCableCar1 ((struct CableCarEwramStruct1 *)(gSharedMem + 0x17000)) #define ewram17002 (&gSharedMem[0x17002]) diff --git a/include/menu.h b/include/menu.h index 8f7b91346..8741649c8 100644 --- a/include/menu.h +++ b/include/menu.h @@ -71,10 +71,10 @@ int sub_8072AB0(const u8 *, u8, u16, u8, u8, u32); void MenuPrint_RightAligned(const u8 *, u8, u8); void sub_8072B80(const u8 *, u8, u8, const u8 *); void sub_8072BD8(const u8 *, u8, u8, u16); -u8 *sub_8072C14(u8 *, s32, u8, u8); -u8 *sub_8072C44(u8 *, s32, u8, u8); -u8 *sub_8072C74(u8 *, const u8 *, u8, u8); -u8 sub_8072CA4(const u8 *s); +u8 *AlignInt1InMenuWindow(u8 *, s32, u8, u8); +u8 *AlignInt2InMenuWindow(u8 *, s32, u8, u8); +u8 *AlignStringInMenuWindow(u8 *, const u8 *, u8, u8); +u8 GetStringWidthInMenuWindow(const u8 *s); u8 Menu_GetTextWindowPaletteNum(void); void Menu_GetTextColors(u8 *, u8 *, u8 *); u32 Menu_UpdateWindowTextOverrideLineLength(u8); diff --git a/include/learn_move.h b/include/move_tutor_menu.h similarity index 56% rename from include/learn_move.h rename to include/move_tutor_menu.h index fca236ec9..9ca8f72de 100644 --- a/include/learn_move.h +++ b/include/move_tutor_menu.h @@ -1,6 +1,8 @@ #ifndef GUARD_LEARN_MOVE_H #define GUARD_LEARN_MOVE_H -void TeachMoveTutorMove(void); +#define MAX_MOVE_TUTOR_MOVES 20 + +void DisplayMoveTutorMenu(void); #endif // GUARD_LEARN_MOVE_H diff --git a/include/pokemon.h b/include/pokemon.h index 6bb44a227..783263aad 100644 --- a/include/pokemon.h +++ b/include/pokemon.h @@ -616,7 +616,7 @@ void AdjustFriendship(struct Pokemon *, u8); u8 CheckPartyHasHadPokerus(struct Pokemon *, u8); void UpdatePartyPokerusTime(u16); u32 CanMonLearnTMHM(struct Pokemon *, u8); -u8 GetMoveRelearnerMoves(struct Pokemon *mon, u16 *moves); +u8 GetMoveTutorMoves(struct Pokemon *mon, u16 *moves); u8 sub_8040574(struct Pokemon *party); void ClearBattleMonForms(void); void sub_80408BC(); diff --git a/include/strings.h b/include/strings.h index 240e212ac..0232b03f4 100644 --- a/include/strings.h +++ b/include/strings.h @@ -150,7 +150,7 @@ extern const u8 OtherText_CheckTag[]; extern const u8 OtherText_Confirm[]; extern const u8 gOtherText_Walk[]; -extern const u8 gUnknownText_Exit[]; +extern const u8 gOtherText_Exit[]; extern const u8 gOtherText_CancelNoTerminator[]; extern const u8 gOtherText_CancelWithTerminator[]; diff --git a/include/strings2.h b/include/strings2.h index 8052c6c4a..50197ccde 100644 --- a/include/strings2.h +++ b/include/strings2.h @@ -186,7 +186,7 @@ extern const u8 gEggNickname[]; extern const u8 gOtherText_HatchedFromEgg[]; extern const u8 gOtherText_NickHatchPrompt[]; -// learn_move +// move_tutor_menu extern const u8 OtherText_Battle[]; extern const u8 OtherText_Contest[]; @@ -194,7 +194,7 @@ extern const u8 OtherText_Contest[]; extern const u8 OtherText_Type[]; extern const u8 OtherText_PP[]; -// learn_move +// move_tutor_menu extern const u8 OtherText_Power[]; extern const u8 OtherText_Accuracy[]; extern const u8 OtherText_Appeal[]; diff --git a/include/text.h b/include/text.h index 71afd1d00..ce63a2542 100644 --- a/include/text.h +++ b/include/text.h @@ -143,7 +143,7 @@ extern const struct WindowTemplate gWindowTemplate_81E6C74; extern const struct WindowTemplate gWindowTemplate_81E6C90; extern const struct WindowTemplate gWindowTemplate_81E6CAC; extern const struct WindowTemplate gWindowTemplate_81E6CC8; -extern const struct WindowTemplate gWindowTemplate_81E6CE4; +extern const struct WindowTemplate gMenuTextWindowTemplate; extern const struct WindowTemplate gWindowTemplate_81E6D00; extern const struct WindowTemplate gWindowTemplate_81E6D1C; extern const struct WindowTemplate gWindowTemplate_81E6D38; @@ -192,7 +192,7 @@ extern const struct WindowTemplate gWindowTemplate_81E71D0; extern const struct WindowTemplate gWindowTemplate_81E71EC; extern const struct WindowTemplate gWindowTemplate_81E7208; extern const struct WindowTemplate gWindowTemplate_81E7224; -extern const struct WindowTemplate gWindowTemplate_81E7240; +extern const struct WindowTemplate gMenuTextWindowTemplate; extern const struct WindowTemplate gWindowTemplate_81E725C; extern const struct WindowTemplate gWindowTemplate_81E7278; extern const struct WindowTemplate gWindowTemplate_81E7294; diff --git a/ld_script.txt b/ld_script.txt index f8cc8abf9..dbecbe3f1 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -356,7 +356,7 @@ SECTIONS { src/fldeff_sweetscent.o(.text); src/battle/battle_anim_812C144.o(.text); asm/battle_anim_812C144.o(.text); - src/learn_move.o(.text); + src/move_tutor_menu.o(.text); src/fldeff_softboiled.o(.text); src/decoration_inventory.o(.text); src/roamer.o(.text); @@ -742,7 +742,7 @@ SECTIONS { src/contest_ai.o(.rodata); src/battle/battle_controller_safari.o(.rodata); data/battle_anim_812C144.o(.rodata); - src/learn_move.o(.rodata); + src/move_tutor_menu.o(.rodata); src/decoration_inventory.o(.rodata); src/roamer.o(.rodata); src/battle_tower.o(.rodata); diff --git a/src/battle/battle_records.c b/src/battle/battle_records.c index 4375fc32f..fed8d6575 100644 --- a/src/battle/battle_records.c +++ b/src/battle/battle_records.c @@ -335,7 +335,7 @@ static void PrintWinStreak(const u8 *str, u16 streak, u8 left, u8 top) Menu_PrintText(str, left, top); if (streak > 9999) streak = 9999; - sub_8072C14(gStringVar1, streak, 24, 1); + AlignInt1InMenuWindow(gStringVar1, streak, 24, 1); Menu_PrintText(gOtherText_WinStreak, left + 7, top); } diff --git a/src/berry_blender.c b/src/berry_blender.c index 50c9aa700..4531ea546 100644 --- a/src/berry_blender.c +++ b/src/berry_blender.c @@ -3014,24 +3014,24 @@ bool8 Blender_PrintBlendingResults(void) textPtr[1] = CHAR_PERIOD; textPtr[2] = CHAR_SPACE; textPtr += 3; - textPtr = sub_8072C74(textPtr, gLinkPlayers[place].name, 88, 0); - sub_8072C74(textPtr, text[0], 157, 0); + textPtr = AlignStringInMenuWindow(textPtr, gLinkPlayers[place].name, 88, 0); + AlignStringInMenuWindow(textPtr, text[0], 157, 0); Menu_PrintText(gBerryBlenderData->stringVar, 5, gUnknown_082165E9[gBerryBlenderData->playersNo] + (i * gUnknown_082165EE[gBerryBlenderData->playersNo])); } ConvertIntToDecimalStringN(text[0], gBerryBlenderData->max_RPM % 100, 2, 2); textPtr = gBerryBlenderData->stringVar; textPtr = StringCopy(textPtr, gOtherText_MaxSpeed); - textPtr = sub_8072C14(textPtr, gBerryBlenderData->max_RPM / 100, 121, 1); + textPtr = AlignInt1InMenuWindow(textPtr, gBerryBlenderData->max_RPM / 100, 121, 1); #ifdef ENGLISH textPtr[0] = CHAR_SPACE; textPtr[1] = CHAR_PERIOD; textPtr[2] = CHAR_SPACE; textPtr += 3; - textPtr = sub_8072C74(textPtr, text[0], 142, 1); + textPtr = AlignStringInMenuWindow(textPtr, text[0], 142, 1); #else *textPtr++ = CHAR_COMMA; - textPtr = sub_8072C74(textPtr, text[0], 136, 1); + textPtr = AlignStringInMenuWindow(textPtr, text[0], 136, 1); #endif StringCopy(textPtr, gOtherText_RPM); Menu_PrintText(gBerryBlenderData->stringVar, 5, 13); @@ -3045,13 +3045,13 @@ bool8 Blender_PrintBlendingResults(void) textPtr = StringCopy(textPtr, gOtherText_RequiredTime); #ifdef ENGLISH - textPtr = sub_8072C74(textPtr, text[0], 102, 1); + textPtr = AlignStringInMenuWindow(textPtr, text[0], 102, 1); #else - textPtr = sub_8072C74(textPtr, text[0], 99, 1); + textPtr = AlignStringInMenuWindow(textPtr, text[0], 99, 1); #endif textPtr = StringAppend(textPtr, gOtherText_Min); - textPtr = sub_8072C74(textPtr, text[1], 136, 1); + textPtr = AlignStringInMenuWindow(textPtr, text[1], 136, 1); StringCopy(textPtr, gOtherText_Sec); Menu_PrintText(gBerryBlenderData->stringVar, 5, 15); @@ -3222,9 +3222,9 @@ static bool8 Blender_PrintBlendingRanking(void) txtPtr = StringCopy(txtPtr, gLinkPlayers[place].name); - txtPtr = sub_8072C14(txtPtr, gBerryBlenderData->scores[place][BLENDER_SCORE_BEST], 108, 1); - txtPtr = sub_8072C14(txtPtr, gBerryBlenderData->scores[place][BLENDER_SCORE_GOOD], 132, 1); - txtPtr = sub_8072C14(txtPtr, gBerryBlenderData->scores[place][BLENDER_SCORE_MISS], 156, 1); + txtPtr = AlignInt1InMenuWindow(txtPtr, gBerryBlenderData->scores[place][BLENDER_SCORE_BEST], 108, 1); + txtPtr = AlignInt1InMenuWindow(txtPtr, gBerryBlenderData->scores[place][BLENDER_SCORE_GOOD], 132, 1); + txtPtr = AlignInt1InMenuWindow(txtPtr, gBerryBlenderData->scores[place][BLENDER_SCORE_MISS], 156, 1); Menu_PrintText(gBerryBlenderData->stringVar, 5, i * gUnknown_082165F3[gBerryBlenderData->playersNo] + 8); } @@ -3257,8 +3257,8 @@ void debug_sub_80524BC(void) FreeAllSpritePalettes(); ResetTasks(); SetVBlankCallback(VBlankCB1_BerryBlender); - Text_LoadWindowTemplate(&gWindowTemplate_81E6CE4); - InitMenuWindow(&gWindowTemplate_81E6CE4); + Text_LoadWindowTemplate(&gMenuTextWindowTemplate); + InitMenuWindow(&gMenuTextWindowTemplate); SeedRng(gMain.vblankCounter1); REG_DISPCNT = 0x1540; RunTasks(); @@ -3503,7 +3503,7 @@ void ShowBerryBlenderRecordWindow(void) for (i = 0; i < 3; i++) { u32 record = gSaveBlock1.berryBlenderRecords[i]; - u8* txtPtr = sub_8072C14(text, record / 100, 18, 1); + u8* txtPtr = AlignInt1InMenuWindow(text, record / 100, 18, 1); #ifdef ENGLISH txtPtr[0] = CHAR_SPACE; diff --git a/src/choose_party.c b/src/choose_party.c index 6f1481c45..8aef949cb 100644 --- a/src/choose_party.c +++ b/src/choose_party.c @@ -230,7 +230,7 @@ static const struct MenuAction2 sBattleTowerEntryMenuItems[] = {OtherText_Summary, BattleTowerEntryMenuCallback_Summary}, {OtherText_Enter2, BattleTowerEntryMenuCallback_Enter}, {OtherText_NoEntry, BattleTowerEntryMenuCallback_NoEntry}, - {gUnknownText_Exit, BattleTowerEntryMenuCallback_Exit}, + {gOtherText_Exit, BattleTowerEntryMenuCallback_Exit}, }; static const u8 gUnknown_084017D0[] = {1, 0, 3}; @@ -780,7 +780,7 @@ static const struct MenuAction2 sDaycareStorageMenuItems[] = { {OtherText_Store, DaycareStorageMenuCallback_Store}, {OtherText_Summary, DaycareStorageMenuCallback_Summary}, - {gUnknownText_Exit, DaycareStorageMenuCallback_Exit}, + {gOtherText_Exit, DaycareStorageMenuCallback_Exit}, }; static const u8 gUnknown_08401808[] = {0, 1, 2}; diff --git a/src/clear_save_data_menu.c b/src/clear_save_data_menu.c index b7f648887..05130a214 100644 --- a/src/clear_save_data_menu.c +++ b/src/clear_save_data_menu.c @@ -134,7 +134,7 @@ static u8 InitClearSaveDataScreen(void) ResetSpriteData(); Text_LoadWindowTemplate(&gWindowTemplate_81E6C3C); - InitMenuWindow(&gWindowTemplate_81E6CE4); + InitMenuWindow(&gMenuTextWindowTemplate); BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, FADE_COLOR_WHITE); ime = REG_IME; diff --git a/src/debug/mori_debug_menu.c b/src/debug/mori_debug_menu.c index 767f4cda0..4f798ecb3 100644 --- a/src/debug/mori_debug_menu.c +++ b/src/debug/mori_debug_menu.c @@ -2,7 +2,7 @@ #include "mori_debug_menu.h" #include "data2.h" #include "daycare.h" -#include "learn_move.h" +#include "move_tutor_menu.h" #include "link.h" #include "main.h" #include "menu.h" @@ -136,7 +136,7 @@ u8 MoriDebugMenu_10000Steps(void) u8 MoriDebugMenu_MoveTutor(void) { - TeachMoveTutorMove(); + DisplayMoveTutorMenu(); CloseMenu(); return 1; } diff --git a/src/debug/sound_check_menu.c b/src/debug/sound_check_menu.c index 935f5cd67..1fcf52f38 100644 --- a/src/debug/sound_check_menu.c +++ b/src/debug/sound_check_menu.c @@ -133,7 +133,7 @@ void CB2_StartSoundCheckMenu(void) ResetTasks(); ResetSpriteData(); Text_LoadWindowTemplate(&gWindowTemplate_81E6C3C); - InitMenuWindow(&gWindowTemplate_81E6CE4); + InitMenuWindow(&gMenuTextWindowTemplate); BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0)); REG_WIN0H = WIN_RANGE(0, 0); REG_WIN0V = WIN_RANGE(0, 0); @@ -1218,7 +1218,7 @@ void Task_InitCryTest(u8 taskId) u8 zero; Text_LoadWindowTemplate(&gWindowTemplate_81E6C3C); - InitMenuWindow(&gWindowTemplate_81E6CE4); + InitMenuWindow(&gMenuTextWindowTemplate); gSoundTestCryNum = 1; ResetSpriteData(); FreeAllSpritePalettes(); diff --git a/src/debug/start_menu_debug.c b/src/debug/start_menu_debug.c index b16b15a0a..1f0cb5f60 100644 --- a/src/debug/start_menu_debug.c +++ b/src/debug/start_menu_debug.c @@ -685,7 +685,7 @@ void DebugMenu_8077048(void) u8 DebugMenu_807706C(void) { - InitMenuWindow(&gWindowTemplate_81E6CE4); + InitMenuWindow(&gMenuTextWindowTemplate); DebugMenu_8077004(); DebugMenu_807719C(); DebugMenu_80771EC(); diff --git a/src/debug/watanabe_debug_menu.c b/src/debug/watanabe_debug_menu.c index 86b8f6b0b..ed6a1d18d 100644 --- a/src/debug/watanabe_debug_menu.c +++ b/src/debug/watanabe_debug_menu.c @@ -210,7 +210,7 @@ void debug_80C35DC(void) LoadSpriteSheet(stru_83F8828); LoadSpritePalette(stru_83F8838); Text_LoadWindowTemplate(&gWindowTemplate_81E6C3C); - InitMenuWindow(&gWindowTemplate_81E6CE4); + InitMenuWindow(&gMenuTextWindowTemplate); } void debug_80C36F4(void) diff --git a/src/decoration.c b/src/decoration.c index 96cf61548..e31624540 100644 --- a/src/decoration.c +++ b/src/decoration.c @@ -1411,7 +1411,7 @@ const struct MenuAction2 gUnknown_083EC604[] = { {SecretBaseText_Decorate, sub_80FF160}, {SecretBaseText_PutAway, sub_8100A0C}, {SecretBaseText_Toss, sub_8101700}, - {gUnknownText_Exit, gpu_pal_decompress_alloc_tag_and_upload} + {gOtherText_Exit, gpu_pal_decompress_alloc_tag_and_upload} }; const u8 *const gUnknown_083EC624[] = { @@ -1556,9 +1556,9 @@ void sub_80FE470(u8 decoCat, u8 left, u8 top, u8 palIdx) // PrintDecorationCateg strptr[2] = palIdx; strptr += 3; strptr = StringCopy(strptr, gUnknown_083EC5E4[decoCat]); - strptr = sub_8072C14(strptr, GetNumDecorationsInInventoryCategory(decoCat), 0x56, 1); + strptr = AlignInt1InMenuWindow(strptr, GetNumDecorationsInInventoryCategory(decoCat), 0x56, 1); *strptr++ = 0xba; - strptr = sub_8072C14(strptr, gDecorationInventories[decoCat].size, 0x68, 1); + strptr = AlignInt1InMenuWindow(strptr, gDecorationInventories[decoCat].size, 0x68, 1); strptr[0] = EXT_CTRL_CODE_BEGIN; strptr[1] = 5; strptr[2] = v0; @@ -1580,7 +1580,7 @@ void sub_80FE528(u8 taskId) // PrintDecorationCategorySelectionMenuStrings sub_80FE470(decoCat, 1, 2 * decoCat + 1, 255); // Unselectable } } - Menu_PrintText(gUnknownText_Exit, 1, 17); + Menu_PrintText(gOtherText_Exit, 1, 17); } void sub_80FE5AC(u8 taskId) @@ -1806,7 +1806,7 @@ void sub_80FEABC(u8 taskId, u8 dummy1) } if (i == gUnknown_020388D5) { - sub_8072A18(gUnknownText_Exit, 0x08, 8 * ni, 0x68, 1); + sub_8072A18(gOtherText_Exit, 0x08, 8 * ni, 0x68, 1); break; } if (gUnknown_020388D0[i]) diff --git a/src/diploma.c b/src/diploma.c index a6026d423..5a1e1254b 100644 --- a/src/diploma.c +++ b/src/diploma.c @@ -69,7 +69,7 @@ void CB2_ShowDiploma(void) FreeAllSpritePalettes(); LoadPalette(gDiplomaPalettes, 0, 64); Text_LoadWindowTemplate(&gWindowTemplate_81E6C3C); - InitMenuWindow(&gWindowTemplate_81E6CE4); + InitMenuWindow(&gMenuTextWindowTemplate); DisplayDiplomaText(); BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0)); diff --git a/src/easy_chat_2.c b/src/easy_chat_2.c index 530c2ae5e..7cf4d87b9 100644 --- a/src/easy_chat_2.c +++ b/src/easy_chat_2.c @@ -1182,7 +1182,7 @@ void sub_80E9368(u8 a) gEasyChatStruct->unk9F8E[2] = 1; if (r4 != NULL) { - sub_8072C74(gEasyChatStruct->unk9F8E + 3, r4, 240, 2); + AlignStringInMenuWindow(gEasyChatStruct->unk9F8E + 3, r4, 240, 2); Menu_PrintText(gEasyChatStruct->unk9F8E, 0, 0); } else diff --git a/src/field_effect.c b/src/field_effect.c index 93a97aa7f..8c00476d7 100644 --- a/src/field_effect.c +++ b/src/field_effect.c @@ -2438,8 +2438,8 @@ void sub_8088380(struct Task *task) IntrCallback callback; LoadWordFromTwoHalfwords((u16 *)&task->data[13], (u32 *)&callback); SetVBlankCallback(callback); - Text_LoadWindowTemplate(&gWindowTemplate_81E6CE4); - InitMenuWindow(&gWindowTemplate_81E6CE4); + Text_LoadWindowTemplate(&gMenuTextWindowTemplate); + InitMenuWindow(&gMenuTextWindowTemplate); FreeResourcesAndDestroySprite(&gSprites[task->data[15]]); FieldEffectActiveListRemove(FLDEFF_FIELD_MOVE_SHOW_MON); DestroyTask(FindTaskIdByFunc(sub_8088120)); @@ -2561,8 +2561,8 @@ void sub_808862C(struct Task *task) CpuFill32(0, (void *)VRAM + bg0cnt, 0x800); LoadWordFromTwoHalfwords((u16 *)&task->data[13], (u32 *)&intrCallback); SetVBlankCallback(intrCallback); - Text_LoadWindowTemplate(&gWindowTemplate_81E6CE4); - InitMenuWindow(&gWindowTemplate_81E6CE4); + Text_LoadWindowTemplate(&gMenuTextWindowTemplate); + InitMenuWindow(&gMenuTextWindowTemplate); FreeResourcesAndDestroySprite(&gSprites[task->data[15]]); FieldEffectActiveListRemove(FLDEFF_FIELD_MOVE_SHOW_MON); DestroyTask(FindTaskIdByFunc(sub_808847C)); diff --git a/src/field_message_box.c b/src/field_message_box.c index 5eec7a14b..44fd4ac49 100644 --- a/src/field_message_box.c +++ b/src/field_message_box.c @@ -20,7 +20,7 @@ void InitFieldMessageBox(void) { sMessageBoxMode = FIELD_MESSAGE_BOX_HIDDEN; TextWindow_SetDlgFrameBaseTileNum(gMenuTextWindowContentTileOffset); - Text_InitWindowWithTemplate(&gFieldMessageBoxWindow, &gWindowTemplate_81E6CE4); + Text_InitWindowWithTemplate(&gFieldMessageBoxWindow, &gMenuTextWindowTemplate); } static void Task_FieldMessageBox(u8 taskId) diff --git a/src/field_screen_effect.c b/src/field_screen_effect.c index 61301c5a9..b314699c5 100644 --- a/src/field_screen_effect.c +++ b/src/field_screen_effect.c @@ -265,7 +265,7 @@ static void sub_80816A8(u8 taskId) break; case 5: Menu_EraseWindowRect(0, 0, 29, 19); - LoadFontDefaultPalette(&gWindowTemplate_81E6CE4); + LoadFontDefaultPalette(&gMenuTextWindowTemplate); REG_WIN0H = 255; REG_DISPCNT = data[6]; REG_BLDCNT = data[7]; diff --git a/src/item_menu.c b/src/item_menu.c index da77760dd..5fbfb775e 100644 --- a/src/item_menu.c +++ b/src/item_menu.c @@ -1115,9 +1115,9 @@ static void sub_80A41E0(u8 *a, u16 b, const u8 *c, u16 d, u8 e) a[1] = 0x13; a[2] = 0x18; a += 3; - a = sub_8072C74(a, c, 0x78 - (e + 1) * 6, 0); + a = AlignStringInMenuWindow(a, c, 0x78 - (e + 1) * 6, 0); *a++ = CHAR_MULT_SIGN; - sub_8072C14(a, d, 0x78, 1); + AlignInt1InMenuWindow(a, d, 0x78, 1); } static u8 *sub_80A425C(u8 taskId, u8 *text, u8 c) @@ -1145,7 +1145,7 @@ static bool8 sub_80A42B0(u8 itemPos, int b) if (sReturnLocation == RETURN_TO_FIELD_5) return TRUE; r5 = itemPos * 2 + 2; - sub_8072C74(gStringVar1, gOtherText_CloseBag, 0x78, 0); + AlignStringInMenuWindow(gStringVar1, gOtherText_CloseBag, 0x78, 0); Menu_PrintText(gStringVar1, 14, r5); ptr = gBGTilemapBuffers[2] + 14 + r5 * 32; ptr[0] = 0x4F; @@ -1179,9 +1179,9 @@ static void sub_80A4380(u16 a, int b, int c, int d) r5 = i * 2 + 2; text = gStringVar1; text = sub_80A425C(a, text, i); - text = sub_8072C74(text, ItemId_GetName(gCurrentBagPocketItemSlots[r4].itemId), 0x66, 0); + text = AlignStringInMenuWindow(text, ItemId_GetName(gCurrentBagPocketItemSlots[r4].itemId), 0x66, 0); *text++ = CHAR_MULT_SIGN; - sub_8072C14(text, gCurrentBagPocketItemSlots[r4].quantity, 0x78, 1); + AlignInt1InMenuWindow(text, gCurrentBagPocketItemSlots[r4].quantity, 0x78, 1); Menu_PrintText(gStringVar1, 14, r5); } } @@ -1203,9 +1203,9 @@ static void sub_80A444C(u16 a, int b, int c, int d) text = gStringVar1; text = sub_80A425C(a, text, i); #if ENGLISH - sub_8072C74(text, ItemId_GetName(gCurrentBagPocketItemSlots[slot].itemId), 0x60, 0); + AlignStringInMenuWindow(text, ItemId_GetName(gCurrentBagPocketItemSlots[slot].itemId), 0x60, 0); #else - sub_8072C74(text, ItemId_GetName(gCurrentBagPocketItemSlots[slot].itemId), 0x63, 0); + AlignStringInMenuWindow(text, ItemId_GetName(gCurrentBagPocketItemSlots[slot].itemId), 0x63, 0); #endif Menu_PrintText(gStringVar1, 14, r5); if (gUnknown_02038558) @@ -1272,7 +1272,7 @@ static void sub_80A4548(u16 a, int b, int c, int d) text[2] = 0x18; text += 3; moveName = gMoveNames[ItemIdToBattleMoveId(gCurrentBagPocketItemSlots[r4].itemId)]; - sub_8072C74(text, moveName, 0x78, 0); + AlignStringInMenuWindow(text, moveName, 0x78, 0); } Menu_PrintText(gStringVar1, 14, sp10); } @@ -1450,7 +1450,7 @@ _080A4634:\n\ adds r0, r6, 0\n\ movs r2, 0x78\n\ movs r3, 0\n\ - bl sub_8072C74\n\ + bl AlignStringInMenuWindow\n\ _080A46AE:\n\ ldr r0, _080A46F8 @ =gStringVar1\n\ movs r1, 0xE\n\ diff --git a/src/learn_move.c b/src/learn_move.c deleted file mode 100644 index 17cdbf54e..000000000 --- a/src/learn_move.c +++ /dev/null @@ -1,1066 +0,0 @@ -#include "global.h" -#include "contest.h" -#include "data2.h" -#include "field_fadetransition.h" -#include "main.h" -#include "menu.h" -#include "menu_cursor.h" -#include "learn_move.h" -#include "palette.h" -#include "pokemon.h" -#include "pokemon_summary_screen.h" -#include "overworld.h" -#include "script.h" -#include "constants/songs.h" -#include "sound.h" -#include "sprite.h" -#include "string_util.h" -#include "strings.h" -#include "strings2.h" -#include "task.h" -#include "trig.h" -#include "ewram.h" - -extern u16 gSpecialVar_0x8004; -extern u16 gSpecialVar_0x8005; -extern u8 gTileBuffer[]; - -extern const struct WindowTemplate gWindowTemplate_81E6CE4; -extern const struct WindowTemplate gWindowTemplate_81E7240; -extern const u8 *const gContestEffectStrings[]; -extern const u8 *const gMoveDescriptions[]; -extern const u8 gTypeNames[][7]; -extern const u8 *const gUnknown_083CAF70[]; - -#ifdef GERMAN -extern const u8 deuOtherText_ForgotAndLearned[]; -#endif - - -struct LearnMoveStruct -{ - u8 state; - u8 filler1; - u8 unk2; - u8 spriteIDs[20]; - u8 filler17[1]; - u8 unk18; - u8 unk19; - u8 numMenuChoices; - u8 menuSelection; - u8 unk1C; - bool8 unk1D; - u8 unk1E; - u8 filler1F; - /*0x020*/ u16 movesToLearn[20]; - u8 filler48[0x52-0x48]; - u8 moveNames[6][0x19]; - u8 fillerE8[0x2C3-0xE8]; - bool8 unk2C3; - bool8 showContestInfo; - /*0x2C5*/ u8 partyMon; - u8 unk2C6; -}; - -static struct LearnMoveStruct *sLearnMoveStruct; - -const u16 gDexArrows_Pal[] = INCBIN_U16("graphics/pokedex/arrows.gbapal"); - -const u8 gDexArrows_Gfx[] = INCBIN_U8("graphics/pokedex/arrows.4bpp"); - -const u8 gUnknown_08402CF8[][4] = -{ - { 0, 0, 9, 13}, - {10, 0, 29, 7}, - { 2, 14, 27, 19}, - {10, 8, 29, 13}, -}; - -struct UnknownStruct1 -{ - const u8 *unk0; - u8 unk4; - u8 unk5; - u8 unk6; -}; - -const struct UnknownStruct1 gUnknown_08402D08[][4] = -{ - { - {OtherText_Battle, 1, 1, 0}, - {OtherText_Power, 1, 4, 1}, - {OtherText_Accuracy, 1, 9, 2}, - {NULL, 0, 0, 0}, - }, - { - {OtherText_Contest, 1, 1, 0}, - {OtherText_Appeal, 1, 4, 1}, - {OtherText_Jam, 1, 9, 2}, - {NULL, 0, 0, 0}, - }, -}; - -// XXX: What are these for? -const u32 unkDataFF00FFEF = 0xFF00FFEF; -const u8 *const gTileBuffer_ = gTileBuffer; - -const struct OamData gOamData_8402D50 = {.shape = 0}; -const struct OamData gOamData_8402D58 = {.shape = 2}; -const struct OamData gOamData_8402D60 = {.shape = 1}; - -const union AnimCmd gSpriteAnim_8402D68[] = -{ - ANIMCMD_FRAME(2, 5), - ANIMCMD_END, -}; - -const union AnimCmd gSpriteAnim_8402D70[] = -{ - ANIMCMD_FRAME(0, 5), - ANIMCMD_END, -}; - -const union AnimCmd *const gSpriteAnimTable_8402D78[] = -{ - gSpriteAnim_8402D68, - gSpriteAnim_8402D70, -}; - -const struct SpriteSheet gUnknown_08402D80 = {gDexArrows_Gfx, sizeof(gDexArrows_Gfx), 5525}; -const struct SpritePalette gUnknown_08402D88 = {gDexArrows_Pal, 5526}; - -void sub_8133300(struct Sprite *); -const struct SpriteTemplate gSpriteTemplate_8402D90 = -{ - .tileTag = 5525, - .paletteTag = 5526, - .oam = &gOamData_8402D58, - .anims = gSpriteAnimTable_8402D78, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_8133300, -}; - -const union AnimCmd gSpriteAnim_8402DA8[] = -{ - ANIMCMD_FRAME(4, 5), - ANIMCMD_END, -}; - -const union AnimCmd gSpriteAnim_8402DB0[] = -{ - ANIMCMD_FRAME(6, 5), - ANIMCMD_END, -}; - -const union AnimCmd *const gSpriteAnimTable_8402DB8[] = -{ - gSpriteAnim_8402DA8, - gSpriteAnim_8402DB0, -}; - -const struct SpriteTemplate gSpriteTemplate_8402DC0 = -{ - .tileTag = 5525, - .paletteTag = 5526, - .oam = &gOamData_8402D60, - .anims = gSpriteAnimTable_8402DB8, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_8133300, -}; - -const union AnimCmd gSpriteAnim_8402DD8[] = -{ - ANIMCMD_FRAME(8, 5), - ANIMCMD_END, -}; - -const union AnimCmd gSpriteAnim_8402DE0[] = -{ - ANIMCMD_FRAME(9, 5), - ANIMCMD_END, -}; - -const union AnimCmd gSpriteAnim_8402DE8[] = -{ - ANIMCMD_FRAME(10, 5), - ANIMCMD_END, -}; - -const union AnimCmd gSpriteAnim_8402DF0[] = -{ - ANIMCMD_FRAME(11, 5), - ANIMCMD_END, -}; - -const union AnimCmd *const gSpriteAnimTable_8402DF8[] = -{ - gSpriteAnim_8402DD8, - gSpriteAnim_8402DE0, - gSpriteAnim_8402DE8, - gSpriteAnim_8402DF0, -}; - -const struct SpriteTemplate gSpriteTemplate_8402E08 = -{ - .tileTag = 5525, - .paletteTag = 5526, - .oam = &gOamData_8402D50, - .anims = gSpriteAnimTable_8402DF8, - .images = NULL, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_8133300, -}; - -const u8 gString_AkitoMori[] = _("あきと"); // programmer Akito Mori? - -void sub_813269C(u8); -void CB2_InitLearnMove(void); -void CB2_LearnMove(void); -void LearnMoveMain(void); -void DrawLearnMoveMenuWindow(void); -void sub_8133030(bool8); -u8 sub_81330E8(void); -void sub_8133140(u8); -u8 sub_8133248(void); -void ClearLearnMoveVars(void); -void sub_8133358(void); -void sub_8133558(void); -void sub_813362C(void); -void sub_8133800(void); -void sub_8133AEC(bool8, int); -void sub_8133CA4(void); - -void VBlankCB_LearnMove(void) -{ - LoadOam(); - ProcessSpriteCopyRequests(); - TransferPlttBuffer(); -} - -void TeachMoveTutorMove(void) -{ - ScriptContext2_Enable(); - CreateTask(sub_813269C, 10); - BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0)); -} - -void sub_813269C(u8 taskId) -{ - if (!gPaletteFade.active) - { - SetMainCallback2(CB2_InitLearnMove); - gFieldCallback = sub_8080990; - DestroyTask(taskId); - } -} - -void CB2_InitLearnMove(void) -{ - REG_DISPCNT = 0; - ResetSpriteData(); - FreeAllSpritePalettes(); - ResetTasks(); - sLearnMoveStruct = eLearnMoveStruct; - ClearLearnMoveVars(); - sLearnMoveStruct->partyMon = gSpecialVar_0x8004; - sub_8133558(); - SetVBlankCallback(VBlankCB_LearnMove); - - Text_LoadWindowTemplate(&gWindowTemplate_81E7240); - InitMenuWindow(&gWindowTemplate_81E7240); - Menu_EraseScreen(); - - Text_LoadWindowTemplate(&gWindowTemplate_81E6CE4); - InitMenuWindow(&gWindowTemplate_81E6CE4); - Menu_EraseScreen(); - - REG_BG0VOFS = 0; - REG_BG0VOFS = 0; // huh? - REG_BG1HOFS = 0; - REG_BG1HOFS = 0; // huh? - - LoadSpriteSheet(&gUnknown_08402D80); - LoadSpritePalette(&gUnknown_08402D88); - sub_8133358(); - FillPalette(0, 0, 2); - RunTasks(); - AnimateSprites(); - BuildOamBuffer(); - UpdatePaletteFade(); - SetMainCallback2(CB2_LearnMove); -} - -void sub_81327A4(void) -{ - ResetSpriteData(); - FreeAllSpritePalettes(); - ResetTasks(); - sLearnMoveStruct = eLearnMoveStruct; - sub_8133558(); - sLearnMoveStruct->unk2C6 = gSpecialVar_0x8005; - SetVBlankCallback(VBlankCB_LearnMove); - - Text_LoadWindowTemplate(&gWindowTemplate_81E7240); - InitMenuWindow(&gWindowTemplate_81E7240); - Menu_EraseScreen(); - - Text_LoadWindowTemplate(&gWindowTemplate_81E6CE4); - InitMenuWindow(&gWindowTemplate_81E6CE4); - Menu_EraseScreen(); - - REG_DISPCNT = 0x1340; - REG_BG0VOFS = 0; - REG_BG0HOFS = 0; - REG_BG1HOFS = 0; - REG_BG1HOFS = 0; // huh? - - LoadSpriteSheet(&gUnknown_08402D80); - LoadSpritePalette(&gUnknown_08402D88); - sub_8133358(); - FillPalette(0, 0, 2); - RunTasks(); - AnimateSprites(); - BuildOamBuffer(); - UpdatePaletteFade(); - SetMainCallback2(CB2_LearnMove); -} - -void CB2_LearnMove(void) -{ - LearnMoveMain(); - if (sLearnMoveStruct->unk1D) - { - sLearnMoveStruct->unk1D = FALSE; - MenuCursor_SetPos814AD7C(0x58, (sLearnMoveStruct->unk18 * 2 + 1) * 8); - } - if (sLearnMoveStruct->unk1E != 0) - { - sLearnMoveStruct->unk1E = 0; - sub_8133800(); - } - if (sLearnMoveStruct->unk2C3) - { - sub_8133AEC(sLearnMoveStruct->showContestInfo, 1); - sLearnMoveStruct->unk2C3 = FALSE; - } - RunTasks(); - AnimateSprites(); - BuildOamBuffer(); - UpdatePaletteFade(); -} - -void sub_81328E8(const u8 *a) -{ - StringExpandPlaceholders(gStringVar4, a); - MenuPrintMessage(gStringVar4, 3, 15); -} - -void LearnMoveMain(void) -{ - switch (sLearnMoveStruct->state) - { - case 0: - sLearnMoveStruct->state++; - DrawLearnMoveMenuWindow(); - sub_8133030(FALSE); - sub_8133800(); - gSprites[1].pos1.x = 0x48; - sLearnMoveStruct->unk2C3 = TRUE; - BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0)); - REG_DISPCNT = 0x1340; - break; - case 1: - if (!gPaletteFade.active) - sLearnMoveStruct->state = 4; - break; - case 2: - sLearnMoveStruct->state++; - break; - case 3: - sub_8133030(FALSE); - sub_8133800(); - sLearnMoveStruct->unk2C3 = TRUE; - sLearnMoveStruct->state++; - gSprites[1].pos1.x = 0x48; - break; - case 4: - if (sub_81330E8() == 0) - sub_813362C(); - return; - case 5: - sub_8133140(0); - sub_8133800(); - sLearnMoveStruct->unk2C3 = TRUE; - gSprites[1].pos1.x = 0x48; - sLearnMoveStruct->state++; - break; - case 6: - if (sub_8133248() == 0) - sub_813362C(); - break; - case 8: - if (Menu_UpdateWindowText()) - { - DisplayYesNoMenu(21, 7, 1); - sLearnMoveStruct->state++; - } - break; - case 9: - { - s8 selection = Menu_ProcessInputNoWrap_(); - - if (selection == 0) - { - sub_8133CA4(); - if (GiveMoveToMon(&gPlayerParty[sLearnMoveStruct->partyMon], sLearnMoveStruct->movesToLearn[sLearnMoveStruct->menuSelection]) != 0xFFFF) - { - sub_81328E8(gOtherText_PokeLearnedMove); - gSpecialVar_0x8004 = 1; - sLearnMoveStruct->state = 31; - } - else - { - sLearnMoveStruct->state = 16; - } - } - else if (selection == -1 || selection == 1) - { - sub_8133CA4(); - if (sLearnMoveStruct->showContestInfo == FALSE) - sLearnMoveStruct->state = 3; - if (sLearnMoveStruct->showContestInfo == TRUE) - sLearnMoveStruct->state = 5; - } - } - break; - case 12: - if (Menu_UpdateWindowText()) - { - DisplayYesNoMenu(21, 7, 1); - sLearnMoveStruct->state++; - } - break; - case 13: - { - s8 selection = Menu_ProcessInputNoWrap_(); - - if (selection == 0) - { - sub_8133CA4(); - gSpecialVar_0x8004 = selection; - sLearnMoveStruct->state = 14; - } - else if (selection == -1 || selection == 1) - { - sub_8133CA4(); - if (sLearnMoveStruct->showContestInfo == FALSE) - sLearnMoveStruct->state = 3; - if (sLearnMoveStruct->showContestInfo == TRUE) - sLearnMoveStruct->state = 5; - } - } - break; - case 16: - sub_81328E8(gOtherText_DeleteOlderMove); - sLearnMoveStruct->state++; - break; - case 17: - if (Menu_UpdateWindowText()) - { - DisplayYesNoMenu(21, 7, 1); - sLearnMoveStruct->state = 18; - } - break; - case 18: - { - s8 var = Menu_ProcessInputNoWrap_(); - - if (var == 0) - { - sub_8133CA4(); - sub_81328E8(gOtherText_WhichMoveToForget); - sLearnMoveStruct->state = 19; - } - else if (var == -1 || var == 1) - { - sub_8133CA4(); - sLearnMoveStruct->state = 24; - } - } - break; - case 24: - sub_81328E8(gOtherText_StopLearningMove); - sLearnMoveStruct->state++; - break; - case 25: - if (Menu_UpdateWindowText()) - { - sLearnMoveStruct->state = 26; - DisplayYesNoMenu(21, 7, 1); - } - break; - case 26: - { - s8 var = Menu_ProcessInputNoWrap_(); - - if (var == 0) - { - sub_8133CA4(); - sLearnMoveStruct->state = 27; - } - else if (var == -1 || var == 1) - { - sub_8133CA4(); - - // What's the point? It gets set to 16, anyway. - if (sLearnMoveStruct->showContestInfo == FALSE) - sLearnMoveStruct->state = 3; - if (sLearnMoveStruct->showContestInfo == TRUE) - sLearnMoveStruct->state = 5; - sLearnMoveStruct->state = 16; - } - } - break; - case 27: - if (Menu_UpdateWindowText()) - { - if (sLearnMoveStruct->showContestInfo == FALSE) - sLearnMoveStruct->state = 3; - if (sLearnMoveStruct->showContestInfo == TRUE) - sLearnMoveStruct->state = 5; - } - break; - case 19: - if (Menu_UpdateWindowText()) - { - sLearnMoveStruct->state = 20; - BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0)); - } - break; - case 20: - if (!gPaletteFade.active) - { - ShowSelectMovePokemonSummaryScreen(gPlayerParty, sLearnMoveStruct->partyMon, gPlayerPartyCount - 1, sub_81327A4, sLearnMoveStruct->movesToLearn[sLearnMoveStruct->menuSelection]); - sLearnMoveStruct->state = 28; - } - break; - case 21: - if (Menu_UpdateWindowText()) - sLearnMoveStruct->state = 14; - break; - case 22: - BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0)); - break; - case 14: - BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0)); - sLearnMoveStruct->state++; - break; - case 15: - if (!gPaletteFade.active) - SetMainCallback2(c2_exit_to_overworld_2_switch); - break; - case 28: - BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0)); - sLearnMoveStruct->state++; - DrawLearnMoveMenuWindow(); - sub_8133800(); - if (sLearnMoveStruct->showContestInfo == FALSE) - sub_8133030(TRUE); - if (sLearnMoveStruct->showContestInfo == TRUE) - { - gSprites[1].pos1.x = 0x48; - sub_8133140(1); - } - sub_8133AEC(sLearnMoveStruct->showContestInfo, 1); - break; - case 29: - if (!gPaletteFade.active) - { - if (sLearnMoveStruct->unk2C6 == 4) - { - sLearnMoveStruct->state = 24; - } - else - { - u16 moveId = GetMonData(&gPlayerParty[sLearnMoveStruct->partyMon], MON_DATA_MOVE1 + sLearnMoveStruct->unk2C6); - - StringCopy(gStringVar3, gMoveNames[moveId]); - RemoveMonPPBonus(&gPlayerParty[sLearnMoveStruct->partyMon], sLearnMoveStruct->unk2C6); - SetMonMoveSlot(&gPlayerParty[sLearnMoveStruct->partyMon], sLearnMoveStruct->movesToLearn[sLearnMoveStruct->menuSelection], sLearnMoveStruct->unk2C6); - StringCopy(gStringVar2, gMoveNames[sLearnMoveStruct->movesToLearn[sLearnMoveStruct->menuSelection]]); - sub_81328E8(gOtherText_ForgotMove123); - sLearnMoveStruct->state = 30; - gSpecialVar_0x8004 = 1; - } - } - break; - case 30: - if (Menu_UpdateWindowText()) - { -#ifdef ENGLISH - sub_81328E8(gOtherText_ForgotOrDidNotLearnMove); -#else - sub_81328E8(deuOtherText_ForgotAndLearned); -#endif - sLearnMoveStruct->state = 31; - PlayFanfare(BGM_FANFA1); - } - break; - case 31: - if (Menu_UpdateWindowText()) - { - PlayFanfare(BGM_FANFA1); - sLearnMoveStruct->state = 32; - } - break; - case 32: - if (IsFanfareTaskInactive()) - sLearnMoveStruct->state = 33; - break; - case 33: - if (gMain.newKeys & A_BUTTON) - { - PlaySE(SE_SELECT); - sLearnMoveStruct->state = 14; - } - break; - } -} - -void DrawLearnMoveMenuWindow(void) -{ - u32 i; - - BasicInitMenuWindow(&gWindowTemplate_81E7240); - for (i = 0; i < 4; i++) - { - Menu_DrawStdWindowFrame( - gUnknown_08402CF8[i][0], - gUnknown_08402CF8[i][1], - gUnknown_08402CF8[i][2], - gUnknown_08402CF8[i][3]); - } - BasicInitMenuWindow(&gWindowTemplate_81E6CE4); -} - -void sub_8133030(bool8 a) -{ - s32 i; - - gSprites[sLearnMoveStruct->spriteIDs[0]].invisible = FALSE; - gSprites[sLearnMoveStruct->spriteIDs[1]].invisible = FALSE; - - for (i = 0; i < 16; i++) - gSprites[sLearnMoveStruct->spriteIDs[i + 4]].invisible = TRUE; - - for (i = 0; gUnknown_08402D08[0][i].unk0 != NULL; i++) - { - sub_8072C74(gTileBuffer, gUnknown_08402D08[0][i].unk0, 64, 2); - Menu_PrintText(gTileBuffer, gUnknown_08402D08[0][i].unk4, gUnknown_08402D08[0][i].unk5); - } - - if (!a) - sub_8072AB0(gOtherText_TeachWhichMove, 24, 120, 192, 32, 1); -} - -u8 sub_81330E8(void) -{ - u32 result = (gMain.newKeys & DPAD_LEFT) || (gMain.newKeys & DPAD_RIGHT); - - if (gSaveBlock2.optionsButtonMode == OPTIONS_BUTTON_MODE_LR - && ((gMain.newKeys & L_BUTTON) || (gMain.newKeys & R_BUTTON))) - result++; - - if (result != 0) - { - PlaySE(SE_SELECT); - sLearnMoveStruct->state = 5; - sLearnMoveStruct->showContestInfo = TRUE; - } - - return result; -} - -void sub_8133140(bool8 a) -{ - s32 i; - - gSprites[sLearnMoveStruct->spriteIDs[0]].invisible = FALSE; - gSprites[sLearnMoveStruct->spriteIDs[1]].invisible = FALSE; - - for (i = 0; i < 16; i++) - gSprites[sLearnMoveStruct->spriteIDs[i + 4]].invisible = FALSE; - - for (i = 0; gUnknown_08402D08[0][i].unk0 != NULL; i++) - { - sub_8072C74(gTileBuffer, gUnknown_08402D08[1][i].unk0, 64, 2); - Menu_PrintText(gTileBuffer, gUnknown_08402D08[1][i].unk4, gUnknown_08402D08[1][i].unk5); - if (i != 0) - { - Menu_EraseWindowRect( - gUnknown_08402D08[1][i].unk4, - gUnknown_08402D08[1][i].unk5 + 2, - gUnknown_08402D08[1][i].unk4 + 7, - gUnknown_08402D08[1][i].unk5 + 3); - } - } - - if (!a) - sub_8072AB0(gOtherText_TeachWhichMove, 24, 120, 192, 32, 1); -} - -u8 sub_8133248(void) -{ - u32 result = (gMain.newKeys & DPAD_LEFT) || (gMain.newKeys & DPAD_RIGHT); - - if (gSaveBlock2.optionsButtonMode == OPTIONS_BUTTON_MODE_LR - && ((gMain.newKeys & L_BUTTON) || (gMain.newKeys & R_BUTTON))) - result++; - - if (result != 0) - { - PlaySE(SE_SELECT); - sLearnMoveStruct->state = 3; - sLearnMoveStruct->showContestInfo = FALSE; - } - - return result; -} - -void ClearLearnMoveVars(void) -{ - s32 i; - - sLearnMoveStruct->state = 0; - sLearnMoveStruct->unk2 = 0; - sLearnMoveStruct->unk19 = 0; - sLearnMoveStruct->unk18 = 0; - sLearnMoveStruct->unk1C = 0; - sLearnMoveStruct->numMenuChoices = 0; - sLearnMoveStruct->menuSelection = 0; - sLearnMoveStruct->unk1D = FALSE; - sLearnMoveStruct->unk1E = 0; - sLearnMoveStruct->unk2C3 = FALSE; - sLearnMoveStruct->showContestInfo = FALSE; - for (i = 0; i < 20; i++) - sLearnMoveStruct->movesToLearn[i] = 0; -} - -void sub_8133300(struct Sprite *sprite) -{ - s16 var = (sprite->data[1] * 10) & 0xFF; - - switch (sprite->data[0]) - { - case 0: - break; - case 1: - sprite->pos2.x = Sin(var, 3) * sprite->data[2]; - break; - case 2: - sprite->pos2.y = Sin(var, 1) * sprite->data[2]; - break; - } - sprite->data[1]++; -} - -void sub_8133358(void) -{ - s32 i; - - sLearnMoveStruct->spriteIDs[0] = CreateSprite(&gSpriteTemplate_8402D90, 8, 16, 0); - gSprites[sLearnMoveStruct->spriteIDs[0]].data[0] = 1; - gSprites[sLearnMoveStruct->spriteIDs[0]].data[2] = -1; - - sLearnMoveStruct->spriteIDs[1] = CreateSprite(&gSpriteTemplate_8402D90, 72, 16, 0); - StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIDs[1]], 1); - gSprites[sLearnMoveStruct->spriteIDs[1]].data[0] = 1; - gSprites[sLearnMoveStruct->spriteIDs[1]].data[2] = 1; - - sLearnMoveStruct->spriteIDs[2] = CreateSprite(&gSpriteTemplate_8402DC0, 160, 4, 0); - StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIDs[2]], 1); - gSprites[sLearnMoveStruct->spriteIDs[2]].data[0] = 2; - gSprites[sLearnMoveStruct->spriteIDs[2]].data[2] = -1; - - sLearnMoveStruct->spriteIDs[3] = CreateSprite(&gSpriteTemplate_8402DC0, 160, 60, 0); - gSprites[sLearnMoveStruct->spriteIDs[3]].data[0] = 2; - gSprites[sLearnMoveStruct->spriteIDs[3]].data[2] = 1; - - for (i = 0; i < 8; i++) - { - sLearnMoveStruct->spriteIDs[i + 4] = CreateSprite(&gSpriteTemplate_8402E08, (i - (i / 4) * 4) * 8 + 0x1C, (i / 4) * 8 + 0x34, 0); - StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIDs[i + 4]], 2); - } - - for (i = 0; i < 8; i++) - { - sLearnMoveStruct->spriteIDs[i + 12] = CreateSprite(&gSpriteTemplate_8402E08, (i - (i / 4) * 4) * 8 + 0x1C, (i / 4) * 8 + 0x5C, 0); - StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIDs[i + 12]], 2); - } - - for (i = 0; i < 20; i++) - gSprites[sLearnMoveStruct->spriteIDs[i]].invisible = TRUE; - - CreateBlendedOutlineCursor(16, 0xFFFF, 12, 0x2D9F, 18); -} - -void sub_8133558(void) -{ - s32 i; - u8 nickname[POKEMON_NAME_LENGTH + 1]; - - sLearnMoveStruct->numMenuChoices = GetMoveRelearnerMoves(&gPlayerParty[sLearnMoveStruct->partyMon], sLearnMoveStruct->movesToLearn); - for (i = 0; i < sLearnMoveStruct->numMenuChoices; i++) - StringCopy(sLearnMoveStruct->moveNames[i], gMoveNames[sLearnMoveStruct->movesToLearn[i]]); - GetMonData(&gPlayerParty[sLearnMoveStruct->partyMon], MON_DATA_NICKNAME, nickname); - StringCopy10(gStringVar1, nickname); - StringCopy(sLearnMoveStruct->moveNames[sLearnMoveStruct->numMenuChoices], gUnknownText_Exit); - sLearnMoveStruct->numMenuChoices++; -} - -void sub_813360C(s8 delta) -{ - sLearnMoveStruct->unk1C = sLearnMoveStruct->unk18; - sLearnMoveStruct->unk18 += delta; - sLearnMoveStruct->unk1D = TRUE; -} - -void sub_813362C(void) -{ - if (gMain.newAndRepeatedKeys & DPAD_UP) - { - if (sLearnMoveStruct->menuSelection != 0) - { - PlaySE(SE_SELECT); - sLearnMoveStruct->menuSelection--; - sLearnMoveStruct->unk2C3 = TRUE; - if (sLearnMoveStruct->unk18 != 0) - { - sub_813360C(-1); - } - else if (sLearnMoveStruct->unk19 != 0) - { - sLearnMoveStruct->unk19--; - sLearnMoveStruct->unk1E++; - } - } - } - else if (gMain.newAndRepeatedKeys & DPAD_DOWN) - { - if (sLearnMoveStruct->menuSelection < sLearnMoveStruct->numMenuChoices - 1) - { - PlaySE(SE_SELECT); - sLearnMoveStruct->menuSelection++; - sLearnMoveStruct->unk2C3 = TRUE; - if (sLearnMoveStruct->unk18 != 2) - { - sub_813360C(1); - } - else if (sLearnMoveStruct->unk19 != sLearnMoveStruct->numMenuChoices - 3) - { - sLearnMoveStruct->unk19++; - sLearnMoveStruct->unk1E++; - } - } - } - else if (gMain.newKeys & A_BUTTON) - { - PlaySE(SE_SELECT); - if (sLearnMoveStruct->menuSelection != sLearnMoveStruct->numMenuChoices - 1) - { - sLearnMoveStruct->state = 8; - StringCopy(gStringVar2, sLearnMoveStruct->moveNames[sLearnMoveStruct->menuSelection]); - StringExpandPlaceholders(gStringVar4, gOtherText_TeachSpecificMove); - MenuPrintMessage(gStringVar4, 3, 15); - } - else - { - StringExpandPlaceholders(gStringVar4, gOtherText_GiveUpTeachingMove); - MenuPrintMessage(gStringVar4, 3, 15); - sLearnMoveStruct->state = 12; - } - } - else if (gMain.newKeys & B_BUTTON) - { - PlaySE(SE_SELECT); - sLearnMoveStruct->state = 12; - StringExpandPlaceholders(gStringVar4, gOtherText_GiveUpTeachingMove); - MenuPrintMessage(gStringVar4, 3, 15); - } - if (sLearnMoveStruct->numMenuChoices > 3) - { - gSprites[2].invisible = FALSE; - gSprites[3].invisible = FALSE; - if (sLearnMoveStruct->unk19 == 0) - gSprites[2].invisible = TRUE; - else if (sLearnMoveStruct->unk19 == sLearnMoveStruct->numMenuChoices - 3) - gSprites[3].invisible = TRUE; - } -} - -void sub_8133800(void) -{ - u8 r6 = sLearnMoveStruct->unk19; - u8 *str = gTileBuffer; - s32 i; - - for (i = 0; i < 3; i++) - { - if (r6 >= sLearnMoveStruct->numMenuChoices) - { - str = sub_8072C74(str, gEmptyString_81E72B0, 0x90, 0); - } - else if (r6 == sLearnMoveStruct->numMenuChoices - 1) - { - str = sub_8072C74(str, gUnknownText_Exit, 0x90, 0); - } - else - { - u16 moveId = sLearnMoveStruct->movesToLearn[r6]; - - if (sLearnMoveStruct->showContestInfo) - str = sub_8072C74(str, gUnknown_083CAF70[gContestMoves[moveId].contestCategory], 0x27, 0); - else - str = sub_8072C74(str, gTypeNames[gBattleMoves[moveId].type], 0x27, 0); - - str = sub_8072C74(str, sLearnMoveStruct->moveNames[r6], 0x72, 0); - - str[0] = CHAR_P; - str[1] = CHAR_P; - str[2] = CHAR_SLASH; - str += 3; - - str = sub_8072C14(str, gBattleMoves[moveId].pp, 0x90, 0); - } - *str++ = CHAR_NEWLINE; - r6++; - } - *str = EOS; - Menu_PrintText(gTileBuffer, 11, 1); - sub_813360C(0); -} - -const u8 gUnknown_08402E24[7][3] = -{ - {11, 1, 1}, - { 3, 6, 2}, - {24, 1, 3}, - { 3, 11, 4}, - { 5, 4, 5}, - { 3, 6, 6}, - { 3, 11, 7}, -}; - -const u8 gUnknown_08402E39[] = {0, 1, 2, 3}; -const u8 gUnknown_08402E3D[] = {4, 5, 6}; - -void PrintMoveInfo(u16 moveId, const u8 *b) -{ - u8 str[0x34]; - u8 numHearts; - u8 i; - - StringCopy(str, gExpandedPlaceholder_Empty); - switch (b[2]) - { - case 1: - break; - case 2: - if (gBattleMoves[moveId].power < 2) - sub_8072C74(str, gOtherText_ThreeDashes2, 32, 2); - else - sub_8072C14(str, gBattleMoves[moveId].power, 32, 2); - Menu_PrintText(str, b[0], b[1]); - break; - case 4: - if (gBattleMoves[moveId].accuracy == 0) - sub_8072C74(str, gOtherText_ThreeDashes2, 32, 2); - else - sub_8072C14(str, gBattleMoves[moveId].accuracy, 32, 2); - Menu_PrintText(str, b[0], b[1]); - break; - case 6: - Menu_EraseWindowRect(b[0], b[1], b[0], b[1] + 1); - numHearts = gContestEffects[gContestMoves[moveId].effect].appeal / 10; - if (numHearts == 255) - numHearts = 0; - for (i = 0; i < 8; i++) - { - if (i < numHearts) - StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIDs[i + 4]], 1); - else - StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIDs[i + 4]], 0); - } - break; - case 7: - Menu_EraseWindowRect(b[0], b[1], b[0], b[1] + 1); - numHearts = gContestEffects[gContestMoves[moveId].effect].jam / 10; - if (numHearts == 255) - numHearts = 0; - for (i = 0; i < 8; i++) - { - if (i < numHearts) - StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIDs[i + 12]], 3); - else - StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIDs[i + 12]], 2); - } - break; - } -} - -void sub_8133AEC(bool8 contestInfo, int unused) -{ - u16 i; - - if (sLearnMoveStruct->menuSelection != sLearnMoveStruct->numMenuChoices - 1) - { - u16 moveId = sLearnMoveStruct->movesToLearn[sLearnMoveStruct->menuSelection]; - - if (contestInfo) - { - for (i = 0; i < 16; i++) - gSprites[sLearnMoveStruct->spriteIDs[i + 4]].invisible = FALSE; - for (i = 0; i < 3; i++) - PrintMoveInfo(moveId, gUnknown_08402E24[gUnknown_08402E3D[i]]); - sub_8072AB0(gContestEffectStrings[gContestMoves[moveId].effect], 0x58, 0x48, 0x90, 32, 1); - } - else - { - u8 var; - - for (i = 0; i < 4; i++) - PrintMoveInfo(moveId, gUnknown_08402E24[gUnknown_08402E39[i]]); - var = sub_8072A18(gMoveDescriptions[moveId - 1], 0x58, 0x48, 0x90, 1); - if (var < 2) - { - u8 r1 = var * 2 + 9; - - Menu_BlankWindowRect(11, r1, 28, 12); - } - } - } - else - { - if (contestInfo) - { - Menu_EraseWindowRect(gUnknown_08402E24[5][0], gUnknown_08402E24[5][1], gUnknown_08402E24[5][0], gUnknown_08402E24[5][1] + 1); - Menu_EraseWindowRect(gUnknown_08402E24[6][0], gUnknown_08402E24[6][1], gUnknown_08402E24[6][0], gUnknown_08402E24[6][1] + 1); - for (i = 0; i < 16; i++) - gSprites[sLearnMoveStruct->spriteIDs[i + 4]].invisible = TRUE; - } - else - { - Menu_EraseWindowRect(gUnknown_08402E24[1][0], gUnknown_08402E24[1][1], gUnknown_08402E24[1][0] + 3, gUnknown_08402E24[1][1] + 1); - Menu_EraseWindowRect(gUnknown_08402E24[3][0], gUnknown_08402E24[3][1], gUnknown_08402E24[3][0] + 3, gUnknown_08402E24[3][1] + 1); - } - Menu_EraseWindowRect(11, 9, 28, 12); - } -} - -void sub_8133CA4(void) -{ - Menu_EraseWindowRect(21, 7, 27, 12); - sub_8133AEC(sLearnMoveStruct->showContestInfo, 0); -} diff --git a/src/link.c b/src/link.c index 8b168c0a2..a4bd87333 100644 --- a/src/link.c +++ b/src/link.c @@ -241,8 +241,8 @@ void LinkTestScreen(void) FreeAllSpritePalettes(); ResetTasks(); SetVBlankCallback(VBlankCB_LinkTest); - Text_LoadWindowTemplate(&gWindowTemplate_81E6CE4); - InitMenuWindow((struct WindowTemplate *)&gWindowTemplate_81E6CE4); + Text_LoadWindowTemplate(&gMenuTextWindowTemplate); + InitMenuWindow((struct WindowTemplate *)&gMenuTextWindowTemplate); ResetBlockSend(); gLinkType = 0x1111; OpenLink(); diff --git a/src/mail.c b/src/mail.c index ca698e23c..9833b1c2d 100644 --- a/src/mail.c +++ b/src/mail.c @@ -1124,8 +1124,8 @@ void debug_sub_810D388(void) FreeAllSpritePalettes(); break; case 4: - Text_LoadWindowTemplate(&gWindowTemplate_81E6CE4); - InitMenuWindow(&gWindowTemplate_81E6CE4); + Text_LoadWindowTemplate(&gMenuTextWindowTemplate); + InitMenuWindow(&gMenuTextWindowTemplate); Menu_EraseScreen(); break; case 5: diff --git a/src/main_menu.c b/src/main_menu.c index e574b7b0e..886995b16 100644 --- a/src/main_menu.c +++ b/src/main_menu.c @@ -233,7 +233,7 @@ u32 InitMainMenu(u8 a1) ResetSpriteData(); FreeAllSpritePalettes(); Text_LoadWindowTemplate(&gWindowTemplate_81E6C3C); - InitMenuWindow((struct WindowTemplate *)&gWindowTemplate_81E6CE4); + InitMenuWindow((struct WindowTemplate *)&gMenuTextWindowTemplate); if (a1) BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0)); @@ -704,12 +704,12 @@ void PrintPlayTime(void) #if defined(ENGLISH) Menu_PrintText(gMainMenuString_Time, 16, 3); FormatPlayTime(playTime, gSaveBlock2.playTimeHours, gSaveBlock2.playTimeMinutes, 1); - sub_8072C74(alignedPlayTime, playTime, 48, 1); + AlignStringInMenuWindow(alignedPlayTime, playTime, 48, 1); Menu_PrintText(alignedPlayTime, 22, 3); #elif defined(GERMAN) Menu_PrintTextPixelCoords(gMainMenuString_Time, 124, 24, TRUE); FormatPlayTime(playTime, gSaveBlock2.playTimeHours, gSaveBlock2.playTimeMinutes, 1); - sub_8072C74(alignedPlayTime, playTime, 40, 1); + AlignStringInMenuWindow(alignedPlayTime, playTime, 40, 1); Menu_PrintText(alignedPlayTime, 23, 3); #endif } @@ -719,7 +719,7 @@ void PrintPokedexCount(void) u8 buffer[16]; Menu_PrintText(gMainMenuString_Pokedex, 2, 5); - sub_8072C14(buffer, GetPokedexSeenCount(), 18, 0); + AlignInt1InMenuWindow(buffer, GetPokedexSeenCount(), 18, 0); Menu_PrintText(buffer, 9, 5); } @@ -749,7 +749,7 @@ void PrintBadgeCount(void) static void Task_NewGameSpeech1(u8 taskId) { Text_LoadWindowTemplate(&gWindowTemplate_81E6C3C); - InitMenuWindow((struct WindowTemplate *)&gWindowTemplate_81E6CE4); + InitMenuWindow((struct WindowTemplate *)&gMenuTextWindowTemplate); REG_WIN0H = 0; REG_WIN0V = 0; REG_WININ = 0; @@ -1372,7 +1372,7 @@ void CB_ContinueNewGameSpeechPart2() AddBirchSpeechObjects(taskId); Text_LoadWindowTemplate(&gWindowTemplate_81E6C3C); - InitMenuWindow((struct WindowTemplate *)&gWindowTemplate_81E6CE4); + InitMenuWindow((struct WindowTemplate *)&gMenuTextWindowTemplate); if (gSaveBlock2.playerGender != MALE) { diff --git a/src/mauville_man.c b/src/mauville_man.c index b3e13ef64..e22809242 100644 --- a/src/mauville_man.c +++ b/src/mauville_man.c @@ -689,7 +689,7 @@ static void Task_BardSong(u8 taskId) { case 0: // Initialize song PrepareSongText(); - Text_InitWindowWithTemplate(gMenuWindowPtr, &gWindowTemplate_81E6CE4); + Text_InitWindowWithTemplate(gMenuWindowPtr, &gMenuTextWindowTemplate); Text_InitWindow8002EB0(gMenuWindowPtr, gStringVar4, 2, 4, 15); task->data[1] = 0; task->data[2] = 0; diff --git a/src/menu.c b/src/menu.c index 60aaeba32..891644750 100644 --- a/src/menu.c +++ b/src/menu.c @@ -441,7 +441,7 @@ static u8 sub_80724F4(u8 left, u8 top, u8 menuItemCount, const struct MenuAction maxWidth = 0; for (i = 0; i < menuItemCount; i++) { - u8 width = (sub_8072CA4(menuItems[i].text) + 7) / 8; + u8 width = (GetStringWidthInMenuWindow(menuItems[i].text) + 7) / 8; if (width > maxWidth) maxWidth = width; @@ -498,7 +498,7 @@ static void sub_8072620(u8 left, u8 top, u8 menuItemCount, const struct MenuActi maxWidth = 0; for (i = 0; i < menuItemCount; i++) { - u8 width = (sub_8072CA4(menuItems[i].text) + 7) / 8; + u8 width = (GetStringWidthInMenuWindow(menuItems[i].text) + 7) / 8; if (width > maxWidth) maxWidth = width; @@ -733,11 +733,11 @@ void MenuPrint_RightAligned(const u8 *str, u8 left, u8 top) Text_InitWindow8004D38(gMenuWindowPtr, str, gMenuTextTileOffset, left, top); } -void sub_8072B80(const u8 *a1, u8 a2, u8 a3, const u8 *a4) +void sub_8072B80(const u8 *src, u8 a2, u8 a3, const u8 *a4) { u8 buffer[64]; u8 width = GetStringWidth(gMenuWindowPtr, a4); - AlignString(gMenuWindowPtr, buffer, a1, width, 1); + AlignString(gMenuWindowPtr, buffer, src, width, 1); Text_InitWindowAndPrintText(gMenuWindowPtr, buffer, gMenuTextTileOffset, a2, a3); } @@ -746,22 +746,22 @@ void sub_8072BD8(const u8 *a1, u8 a2, u8 a3, u16 a4) Text_InitWindow8004DB0(gMenuWindowPtr, a1, gMenuTextTileOffset, a2, a3, a4); } -u8 *sub_8072C14(u8 *a1, s32 a2, u8 a3, u8 a4) +u8 *AlignInt1InMenuWindow(u8 *dest, s32 value, u8 alignAmount, u8 alignType) { - return AlignInt1(gMenuWindowPtr, a1, a2, a3, a4); + return AlignInt1(gMenuWindowPtr, dest, value, alignAmount, alignType); } -u8 *sub_8072C44(u8 *a1, s32 a2, u8 a3, u8 a4) +u8 *AlignInt2InMenuWindow(u8 *dest, s32 value, u8 alignAmount, u8 alignType) { - return AlignInt2(gMenuWindowPtr, a1, a2, a3, a4); + return AlignInt2(gMenuWindowPtr, dest, value, alignAmount, alignType); } -u8 *sub_8072C74(u8 *a1, const u8 *a2, u8 a3, u8 a4) +u8 *AlignStringInMenuWindow(u8 *dest, const u8 *src, u8 alignAmount, u8 alignType) { - return AlignString(gMenuWindowPtr, a1, a2, a3, a4); + return AlignString(gMenuWindowPtr, dest, src, alignAmount, alignType); } -u8 sub_8072CA4(const u8 *str) +u8 GetStringWidthInMenuWindow(const u8 *str) { return GetStringWidth(gMenuWindowPtr, str); } diff --git a/src/money.c b/src/money.c index 1081d5063..12a8b71ff 100644 --- a/src/money.c +++ b/src/money.c @@ -141,7 +141,7 @@ void PrintMoneyAmount(u32 amount, u8 size, u8 x, u8 y) u8 stringWidth; GetMoneyAmountText(buffer, amount, size); - stringWidth = sub_8072CA4(buffer); + stringWidth = GetStringWidthInMenuWindow(buffer); if (stringWidth >= (size + 1) * 8) { diff --git a/src/move_tutor_menu.c b/src/move_tutor_menu.c new file mode 100644 index 000000000..7e1365391 --- /dev/null +++ b/src/move_tutor_menu.c @@ -0,0 +1,1063 @@ +#include "global.h" +#include "contest.h" +#include "data2.h" +#include "ewram.h" +#include "field_fadetransition.h" +#include "main.h" +#include "menu.h" +#include "menu_cursor.h" +#include "move_tutor_menu.h" +#include "overworld.h" +#include "palette.h" +#include "pokemon.h" +#include "pokemon_summary_screen.h" +#include "script.h" +#include "sound.h" +#include "sprite.h" +#include "string_util.h" +#include "strings.h" +#include "strings2.h" +#include "task.h" +#include "trig.h" +#include "constants/songs.h" + +extern u16 gSpecialVar_0x8004; +extern u16 gSpecialVar_0x8005; +extern u8 gTileBuffer[]; + +extern const struct WindowTemplate gMenuTextWindowTemplate; +extern const struct WindowTemplate gMoveTutorMenuFramesWindowTemplate; +extern const u8 *const gContestEffectStrings[]; +extern const u8 *const gMoveDescriptions[]; +extern const u8 gTypeNames[][7]; +extern const u8 *const gContestCategoryNames[]; + +#ifdef GERMAN +extern const u8 deuOtherText_ForgotAndLearned[]; +#endif + +static void InitMoveTutorMenuWaitFade(u8); +static void CB2_InitMoveTutorMenu(void); +static void CB2_MoveTutorMenu(void); +static void MoveTutorMain(void); +static void DrawLearnMoveMenuWindow(void); +static void DrawBattleMoveInfoHeaders(bool8); +static u8 ChangeToContestMoveInfoWindow(void); +static void DrawContestMoveInfoHeaders(bool8); +static u8 ChangeToBattleMoveInfoWindow(void); +static void ResetMoveTutorMenu(void); +static void InitMoveTutorMenuSprites(void); +static void InitMoveTutorMenuStrings(void); +static void HandleMoveTutorMenuInput(void); +static void DrawMoveSelectionWindow(void); +static void DrawMoveInfoWindow(bool8, int); +static void RedrawMoveInfoWindow(void); +static void UpdateMoveTutorMenuCursorPosition(struct Sprite *); + +struct MoveTutorMenu +{ + u8 state; + u8 filler1; + u8 unk2; + u8 spriteIDs[20]; + u8 filler17; + u8 cursorPos; + u8 curMenuChoice; + u8 numMenuChoices; + u8 menuSelection; + u8 previousCursorPos; + bool8 redrawCursor; + bool8 redrawMoveSelectionWindow; + u16 movesToLearn[MAX_MOVE_TUTOR_MOVES]; + u8 filler48[10]; + u8 moveNames[6][25]; + u8 fillerE8[475]; + bool8 redrawMoveInfoWindow; + bool8 showContestInfo; + u8 partyMonIndex; + u8 forgetMoveIndex; +}; + +static struct MoveTutorMenu *sMoveTutorMenu; + +const u16 gMoveTutorMenuArrows_Pal[] = INCBIN_U16("graphics/move_tutor_menu/arrows.gbapal"); + +const u8 gMoveTutorMenuArrows_Gfx[] = INCBIN_U8("graphics/move_tutor_menu/arrows.4bpp"); + +const u8 gMoveTutorMenuWindowFrameDimensions[][4] = +{ + { 0, 0, 9, 13}, + {10, 0, 29, 7}, + { 2, 14, 27, 19}, + {10, 8, 29, 13}, +}; + +struct MoveTutorMoveInfoHeaders +{ + const u8 *text; + u8 left; + u8 right; + u8 index; // unused +}; + +const struct MoveTutorMoveInfoHeaders gMoveTutorMoveInfoHeaders[][4] = +{ + { + {OtherText_Battle, 1, 1, 0}, + {OtherText_Power, 1, 4, 1}, + {OtherText_Accuracy, 1, 9, 2}, + {NULL, 0, 0, 0}, + }, + { + {OtherText_Contest, 1, 1, 0}, + {OtherText_Appeal, 1, 4, 1}, + {OtherText_Jam, 1, 9, 2}, + {NULL, 0, 0, 0}, + }, +}; + +// XXX: What are these for? +const u32 unkDataFF00FFEF = 0xFF00FFEF; +const u8 *const gTileBuffer_ = gTileBuffer; + +const struct OamData gOamData_8402D50 = {.shape = 0}; +const struct OamData gOamData_8402D58 = {.shape = 2}; +const struct OamData gOamData_8402D60 = {.shape = 1}; + +const union AnimCmd gSpriteAnim_8402D68[] = +{ + ANIMCMD_FRAME(2, 5), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_8402D70[] = +{ + ANIMCMD_FRAME(0, 5), + ANIMCMD_END, +}; + +const union AnimCmd *const gSpriteAnimTable_8402D78[] = +{ + gSpriteAnim_8402D68, + gSpriteAnim_8402D70, +}; + +const struct SpriteSheet gMoveTutorMenuArrowsSpriteSheet = {gMoveTutorMenuArrows_Gfx, sizeof(gMoveTutorMenuArrows_Gfx), 5525}; +const struct SpritePalette gMoveTutorMenuArrowsPalette = {gMoveTutorMenuArrows_Pal, 5526}; + +const struct SpriteTemplate gSpriteTemplate_8402D90 = +{ + .tileTag = 5525, + .paletteTag = 5526, + .oam = &gOamData_8402D58, + .anims = gSpriteAnimTable_8402D78, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = UpdateMoveTutorMenuCursorPosition, +}; + +const union AnimCmd gSpriteAnim_8402DA8[] = +{ + ANIMCMD_FRAME(4, 5), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_8402DB0[] = +{ + ANIMCMD_FRAME(6, 5), + ANIMCMD_END, +}; + +const union AnimCmd *const gSpriteAnimTable_8402DB8[] = +{ + gSpriteAnim_8402DA8, + gSpriteAnim_8402DB0, +}; + +const struct SpriteTemplate gSpriteTemplate_8402DC0 = +{ + .tileTag = 5525, + .paletteTag = 5526, + .oam = &gOamData_8402D60, + .anims = gSpriteAnimTable_8402DB8, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = UpdateMoveTutorMenuCursorPosition, +}; + +const union AnimCmd gSpriteAnim_8402DD8[] = +{ + ANIMCMD_FRAME(8, 5), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_8402DE0[] = +{ + ANIMCMD_FRAME(9, 5), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_8402DE8[] = +{ + ANIMCMD_FRAME(10, 5), + ANIMCMD_END, +}; + +const union AnimCmd gSpriteAnim_8402DF0[] = +{ + ANIMCMD_FRAME(11, 5), + ANIMCMD_END, +}; + +const union AnimCmd *const gSpriteAnimTable_8402DF8[] = +{ + gSpriteAnim_8402DD8, + gSpriteAnim_8402DE0, + gSpriteAnim_8402DE8, + gSpriteAnim_8402DF0, +}; + +const struct SpriteTemplate gSpriteTemplate_8402E08 = +{ + .tileTag = 5525, + .paletteTag = 5526, + .oam = &gOamData_8402D50, + .anims = gSpriteAnimTable_8402DF8, + .images = NULL, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = UpdateMoveTutorMenuCursorPosition, +}; + +const u8 gString_AkitoMori[] = _("あきと"); // programmer Akito Mori? + +static void VBlankCB_MoveTutorMenu(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + +void DisplayMoveTutorMenu(void) +{ + ScriptContext2_Enable(); + CreateTask(InitMoveTutorMenuWaitFade, 10); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0)); +} + +static void InitMoveTutorMenuWaitFade(u8 taskId) +{ + if (!gPaletteFade.active) + { + SetMainCallback2(CB2_InitMoveTutorMenu); + gFieldCallback = sub_8080990; + DestroyTask(taskId); + } +} + +static void CB2_InitMoveTutorMenu(void) +{ + REG_DISPCNT = 0; + ResetSpriteData(); + FreeAllSpritePalettes(); + ResetTasks(); + sMoveTutorMenu = eMoveTutorMenu; + ResetMoveTutorMenu(); + sMoveTutorMenu->partyMonIndex = gSpecialVar_0x8004; + InitMoveTutorMenuStrings(); + SetVBlankCallback(VBlankCB_MoveTutorMenu); + + Text_LoadWindowTemplate(&gMoveTutorMenuFramesWindowTemplate); + InitMenuWindow(&gMoveTutorMenuFramesWindowTemplate); + Menu_EraseScreen(); + + Text_LoadWindowTemplate(&gMenuTextWindowTemplate); + InitMenuWindow(&gMenuTextWindowTemplate); + Menu_EraseScreen(); + + REG_BG0VOFS = 0; + REG_BG0VOFS = 0; + REG_BG1HOFS = 0; + REG_BG1HOFS = 0; + + LoadSpriteSheet(&gMoveTutorMenuArrowsSpriteSheet); + LoadSpritePalette(&gMoveTutorMenuArrowsPalette); + InitMoveTutorMenuSprites(); + FillPalette(0, 0, 2); + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); + SetMainCallback2(CB2_MoveTutorMenu); +} + +void CB2_ReturnToMoveTutorMenu(void) +{ + ResetSpriteData(); + FreeAllSpritePalettes(); + ResetTasks(); + sMoveTutorMenu = eMoveTutorMenu; + InitMoveTutorMenuStrings(); + sMoveTutorMenu->forgetMoveIndex = gSpecialVar_0x8005; + SetVBlankCallback(VBlankCB_MoveTutorMenu); + + Text_LoadWindowTemplate(&gMoveTutorMenuFramesWindowTemplate); + InitMenuWindow(&gMoveTutorMenuFramesWindowTemplate); + Menu_EraseScreen(); + + Text_LoadWindowTemplate(&gMenuTextWindowTemplate); + InitMenuWindow(&gMenuTextWindowTemplate); + Menu_EraseScreen(); + + REG_DISPCNT = DISPCNT_OBJ_ON | DISPCNT_BG0_ON | DISPCNT_BG1_ON | DISPCNT_OBJ_1D_MAP; + REG_BG0VOFS = 0; + REG_BG0HOFS = 0; + REG_BG1HOFS = 0; + REG_BG1HOFS = 0; + + LoadSpriteSheet(&gMoveTutorMenuArrowsSpriteSheet); + LoadSpritePalette(&gMoveTutorMenuArrowsPalette); + InitMoveTutorMenuSprites(); + FillPalette(0, 0, 2); + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); + SetMainCallback2(CB2_MoveTutorMenu); +} + +static void CB2_MoveTutorMenu(void) +{ + MoveTutorMain(); + if (sMoveTutorMenu->redrawCursor) + { + sMoveTutorMenu->redrawCursor = FALSE; + MenuCursor_SetPos814AD7C(0x58, (sMoveTutorMenu->cursorPos * 2 + 1) * 8); + } + if (sMoveTutorMenu->redrawMoveSelectionWindow) + { + sMoveTutorMenu->redrawMoveSelectionWindow = 0; + DrawMoveSelectionWindow(); + } + if (sMoveTutorMenu->redrawMoveInfoWindow) + { + DrawMoveInfoWindow(sMoveTutorMenu->showContestInfo, 1); + sMoveTutorMenu->redrawMoveInfoWindow = FALSE; + } + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +static void PrintMainMoveTutorMenuText(const u8 *str) +{ + StringExpandPlaceholders(gStringVar4, str); + MenuPrintMessage(gStringVar4, 3, 15); +} + +static void MoveTutorMain(void) +{ + switch (sMoveTutorMenu->state) + { + case 0: + sMoveTutorMenu->state++; + DrawLearnMoveMenuWindow(); + DrawBattleMoveInfoHeaders(FALSE); + DrawMoveSelectionWindow(); + gSprites[1].pos1.x = 0x48; + sMoveTutorMenu->redrawMoveInfoWindow = TRUE; + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0)); + REG_DISPCNT = DISPCNT_OBJ_ON | DISPCNT_BG0_ON | DISPCNT_BG1_ON | DISPCNT_OBJ_1D_MAP; + break; + case 1: + if (!gPaletteFade.active) + sMoveTutorMenu->state = 4; + break; + case 2: + sMoveTutorMenu->state++; + break; + case 3: + DrawBattleMoveInfoHeaders(FALSE); + DrawMoveSelectionWindow(); + sMoveTutorMenu->redrawMoveInfoWindow = TRUE; + sMoveTutorMenu->state++; + gSprites[1].pos1.x = 0x48; + break; + case 4: + if (!ChangeToContestMoveInfoWindow()) + HandleMoveTutorMenuInput(); + return; + case 5: + DrawContestMoveInfoHeaders(FALSE); + DrawMoveSelectionWindow(); + sMoveTutorMenu->redrawMoveInfoWindow = TRUE; + gSprites[1].pos1.x = 0x48; + sMoveTutorMenu->state++; + break; + case 6: + if (!ChangeToBattleMoveInfoWindow()) + HandleMoveTutorMenuInput(); + break; + case 8: + if (Menu_UpdateWindowText()) + { + DisplayYesNoMenu(21, 7, 1); + sMoveTutorMenu->state++; + } + break; + case 9: + { + s8 selection = Menu_ProcessInputNoWrap_(); + if (selection == 0) + { + RedrawMoveInfoWindow(); + if (GiveMoveToMon(&gPlayerParty[sMoveTutorMenu->partyMonIndex], sMoveTutorMenu->movesToLearn[sMoveTutorMenu->menuSelection]) != 0xFFFF) + { + PrintMainMoveTutorMenuText(gOtherText_PokeLearnedMove); + gSpecialVar_0x8004 = 1; + sMoveTutorMenu->state = 31; + } + else + { + sMoveTutorMenu->state = 16; + } + } + else if (selection == -1 || selection == 1) + { + RedrawMoveInfoWindow(); + if (sMoveTutorMenu->showContestInfo == FALSE) + sMoveTutorMenu->state = 3; + if (sMoveTutorMenu->showContestInfo == TRUE) + sMoveTutorMenu->state = 5; + } + } + break; + case 12: + if (Menu_UpdateWindowText()) + { + DisplayYesNoMenu(21, 7, 1); + sMoveTutorMenu->state++; + } + break; + case 13: + { + s8 selection = Menu_ProcessInputNoWrap_(); + + if (selection == 0) + { + RedrawMoveInfoWindow(); + gSpecialVar_0x8004 = selection; + sMoveTutorMenu->state = 14; + } + else if (selection == -1 || selection == 1) + { + RedrawMoveInfoWindow(); + if (sMoveTutorMenu->showContestInfo == FALSE) + sMoveTutorMenu->state = 3; + if (sMoveTutorMenu->showContestInfo == TRUE) + sMoveTutorMenu->state = 5; + } + } + break; + case 16: + PrintMainMoveTutorMenuText(gOtherText_DeleteOlderMove); + sMoveTutorMenu->state++; + break; + case 17: + if (Menu_UpdateWindowText()) + { + DisplayYesNoMenu(21, 7, 1); + sMoveTutorMenu->state = 18; + } + break; + case 18: + { + s8 var = Menu_ProcessInputNoWrap_(); + + if (var == 0) + { + RedrawMoveInfoWindow(); + PrintMainMoveTutorMenuText(gOtherText_WhichMoveToForget); + sMoveTutorMenu->state = 19; + } + else if (var == -1 || var == 1) + { + RedrawMoveInfoWindow(); + sMoveTutorMenu->state = 24; + } + } + break; + case 24: + PrintMainMoveTutorMenuText(gOtherText_StopLearningMove); + sMoveTutorMenu->state++; + break; + case 25: + if (Menu_UpdateWindowText()) + { + sMoveTutorMenu->state = 26; + DisplayYesNoMenu(21, 7, 1); + } + break; + case 26: + { + s8 var = Menu_ProcessInputNoWrap_(); + + if (var == 0) + { + RedrawMoveInfoWindow(); + sMoveTutorMenu->state = 27; + } + else if (var == -1 || var == 1) + { + RedrawMoveInfoWindow(); + + // What's the point? It gets set to 16, anyway. + if (sMoveTutorMenu->showContestInfo == FALSE) + sMoveTutorMenu->state = 3; + if (sMoveTutorMenu->showContestInfo == TRUE) + sMoveTutorMenu->state = 5; + sMoveTutorMenu->state = 16; + } + } + break; + case 27: + if (Menu_UpdateWindowText()) + { + if (sMoveTutorMenu->showContestInfo == FALSE) + sMoveTutorMenu->state = 3; + if (sMoveTutorMenu->showContestInfo == TRUE) + sMoveTutorMenu->state = 5; + } + break; + case 19: + if (Menu_UpdateWindowText()) + { + sMoveTutorMenu->state = 20; + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0)); + } + break; + case 20: + if (!gPaletteFade.active) + { + ShowSelectMovePokemonSummaryScreen(gPlayerParty, sMoveTutorMenu->partyMonIndex, gPlayerPartyCount - 1, CB2_ReturnToMoveTutorMenu, sMoveTutorMenu->movesToLearn[sMoveTutorMenu->menuSelection]); + sMoveTutorMenu->state = 28; + } + break; + case 21: + if (Menu_UpdateWindowText()) + sMoveTutorMenu->state = 14; + break; + case 22: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0)); + break; + case 14: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0)); + sMoveTutorMenu->state++; + break; + case 15: + if (!gPaletteFade.active) + SetMainCallback2(c2_exit_to_overworld_2_switch); + break; + case 28: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0)); + sMoveTutorMenu->state++; + DrawLearnMoveMenuWindow(); + DrawMoveSelectionWindow(); + if (sMoveTutorMenu->showContestInfo == FALSE) + DrawBattleMoveInfoHeaders(TRUE); + if (sMoveTutorMenu->showContestInfo == TRUE) + { + gSprites[1].pos1.x = 0x48; + DrawContestMoveInfoHeaders(TRUE); + } + DrawMoveInfoWindow(sMoveTutorMenu->showContestInfo, 1); + break; + case 29: + if (!gPaletteFade.active) + { + if (sMoveTutorMenu->forgetMoveIndex == 4) + { + sMoveTutorMenu->state = 24; + } + else + { + u16 moveId = GetMonData(&gPlayerParty[sMoveTutorMenu->partyMonIndex], MON_DATA_MOVE1 + sMoveTutorMenu->forgetMoveIndex); + + StringCopy(gStringVar3, gMoveNames[moveId]); + RemoveMonPPBonus(&gPlayerParty[sMoveTutorMenu->partyMonIndex], sMoveTutorMenu->forgetMoveIndex); + SetMonMoveSlot(&gPlayerParty[sMoveTutorMenu->partyMonIndex], sMoveTutorMenu->movesToLearn[sMoveTutorMenu->menuSelection], sMoveTutorMenu->forgetMoveIndex); + StringCopy(gStringVar2, gMoveNames[sMoveTutorMenu->movesToLearn[sMoveTutorMenu->menuSelection]]); + PrintMainMoveTutorMenuText(gOtherText_ForgotMove123); + sMoveTutorMenu->state = 30; + gSpecialVar_0x8004 = 1; + } + } + break; + case 30: + if (Menu_UpdateWindowText()) + { +#ifdef GERMAN + PrintMainMoveTutorMenuText(deuOtherText_ForgotAndLearned); +#else + PrintMainMoveTutorMenuText(gOtherText_ForgotOrDidNotLearnMove); +#endif + sMoveTutorMenu->state = 31; + PlayFanfare(BGM_FANFA1); + } + break; + case 31: + if (Menu_UpdateWindowText()) + { + PlayFanfare(BGM_FANFA1); + sMoveTutorMenu->state = 32; + } + break; + case 32: + if (IsFanfareTaskInactive()) + sMoveTutorMenu->state = 33; + break; + case 33: + if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + sMoveTutorMenu->state = 14; + } + break; + } +} + +static void DrawLearnMoveMenuWindow(void) +{ + u32 i; + + BasicInitMenuWindow(&gMoveTutorMenuFramesWindowTemplate); + for (i = 0; i < 4; i++) + { + Menu_DrawStdWindowFrame( + gMoveTutorMenuWindowFrameDimensions[i][0], + gMoveTutorMenuWindowFrameDimensions[i][1], + gMoveTutorMenuWindowFrameDimensions[i][2], + gMoveTutorMenuWindowFrameDimensions[i][3]); + } + BasicInitMenuWindow(&gMenuTextWindowTemplate); +} + +static void DrawBattleMoveInfoHeaders(bool8 noTeachMoveText) +{ + s32 i; + + gSprites[sMoveTutorMenu->spriteIDs[0]].invisible = FALSE; + gSprites[sMoveTutorMenu->spriteIDs[1]].invisible = FALSE; + + for (i = 0; i < 16; i++) + gSprites[sMoveTutorMenu->spriteIDs[i + 4]].invisible = TRUE; + + for (i = 0; gMoveTutorMoveInfoHeaders[0][i].text != NULL; i++) + { + AlignStringInMenuWindow(gTileBuffer, gMoveTutorMoveInfoHeaders[0][i].text, 64, 2); + Menu_PrintText(gTileBuffer, gMoveTutorMoveInfoHeaders[0][i].left, gMoveTutorMoveInfoHeaders[0][i].right); + } + + if (!noTeachMoveText) + sub_8072AB0(gOtherText_TeachWhichMove, 24, 120, 192, 32, 1); +} + +static u8 ChangeToContestMoveInfoWindow(void) +{ + u32 result = (gMain.newKeys & DPAD_LEFT) || (gMain.newKeys & DPAD_RIGHT); + + if (gSaveBlock2.optionsButtonMode == OPTIONS_BUTTON_MODE_LR + && ((gMain.newKeys & L_BUTTON) || (gMain.newKeys & R_BUTTON))) + result++; + + if (result != 0) + { + PlaySE(SE_SELECT); + sMoveTutorMenu->state = 5; + sMoveTutorMenu->showContestInfo = TRUE; + } + + return result; +} + +static void DrawContestMoveInfoHeaders(bool8 noTeachMoveText) +{ + s32 i; + + gSprites[sMoveTutorMenu->spriteIDs[0]].invisible = FALSE; + gSprites[sMoveTutorMenu->spriteIDs[1]].invisible = FALSE; + + for (i = 0; i < 16; i++) + gSprites[sMoveTutorMenu->spriteIDs[i + 4]].invisible = FALSE; + + for (i = 0; gMoveTutorMoveInfoHeaders[0][i].text != NULL; i++) + { + AlignStringInMenuWindow(gTileBuffer, gMoveTutorMoveInfoHeaders[1][i].text, 64, 2); + Menu_PrintText(gTileBuffer, gMoveTutorMoveInfoHeaders[1][i].left, gMoveTutorMoveInfoHeaders[1][i].right); + if (i != 0) + { + Menu_EraseWindowRect( + gMoveTutorMoveInfoHeaders[1][i].left, + gMoveTutorMoveInfoHeaders[1][i].right + 2, + gMoveTutorMoveInfoHeaders[1][i].left + 7, + gMoveTutorMoveInfoHeaders[1][i].right + 3); + } + } + + if (!noTeachMoveText) + sub_8072AB0(gOtherText_TeachWhichMove, 24, 120, 192, 32, 1); +} + +static u8 ChangeToBattleMoveInfoWindow(void) +{ + u32 result = (gMain.newKeys & DPAD_LEFT) || (gMain.newKeys & DPAD_RIGHT); + + if (gSaveBlock2.optionsButtonMode == OPTIONS_BUTTON_MODE_LR + && ((gMain.newKeys & L_BUTTON) || (gMain.newKeys & R_BUTTON))) + result++; + + if (result != 0) + { + PlaySE(SE_SELECT); + sMoveTutorMenu->state = 3; + sMoveTutorMenu->showContestInfo = FALSE; + } + + return result; +} + +static void ResetMoveTutorMenu(void) +{ + s32 i; + + sMoveTutorMenu->state = 0; + sMoveTutorMenu->unk2 = 0; + sMoveTutorMenu->curMenuChoice = 0; + sMoveTutorMenu->cursorPos = 0; + sMoveTutorMenu->previousCursorPos = 0; + sMoveTutorMenu->numMenuChoices = 0; + sMoveTutorMenu->menuSelection = 0; + sMoveTutorMenu->redrawCursor = FALSE; + sMoveTutorMenu->redrawMoveSelectionWindow = 0; + sMoveTutorMenu->redrawMoveInfoWindow = FALSE; + sMoveTutorMenu->showContestInfo = FALSE; + for (i = 0; i < MAX_MOVE_TUTOR_MOVES; i++) + sMoveTutorMenu->movesToLearn[i] = 0; +} + +static void UpdateMoveTutorMenuCursorPosition(struct Sprite *sprite) +{ + s16 var = (sprite->data[1] * 10) & 0xFF; + + switch (sprite->data[0]) + { + case 0: + break; + case 1: + sprite->pos2.x = Sin(var, 3) * sprite->data[2]; + break; + case 2: + sprite->pos2.y = Sin(var, 1) * sprite->data[2]; + break; + } + sprite->data[1]++; +} + +static void InitMoveTutorMenuSprites(void) +{ + s32 i; + + sMoveTutorMenu->spriteIDs[0] = CreateSprite(&gSpriteTemplate_8402D90, 8, 16, 0); + gSprites[sMoveTutorMenu->spriteIDs[0]].data[0] = 1; + gSprites[sMoveTutorMenu->spriteIDs[0]].data[2] = -1; + + sMoveTutorMenu->spriteIDs[1] = CreateSprite(&gSpriteTemplate_8402D90, 72, 16, 0); + StartSpriteAnim(&gSprites[sMoveTutorMenu->spriteIDs[1]], 1); + gSprites[sMoveTutorMenu->spriteIDs[1]].data[0] = 1; + gSprites[sMoveTutorMenu->spriteIDs[1]].data[2] = 1; + + sMoveTutorMenu->spriteIDs[2] = CreateSprite(&gSpriteTemplate_8402DC0, 160, 4, 0); + StartSpriteAnim(&gSprites[sMoveTutorMenu->spriteIDs[2]], 1); + gSprites[sMoveTutorMenu->spriteIDs[2]].data[0] = 2; + gSprites[sMoveTutorMenu->spriteIDs[2]].data[2] = -1; + + sMoveTutorMenu->spriteIDs[3] = CreateSprite(&gSpriteTemplate_8402DC0, 160, 60, 0); + gSprites[sMoveTutorMenu->spriteIDs[3]].data[0] = 2; + gSprites[sMoveTutorMenu->spriteIDs[3]].data[2] = 1; + + for (i = 0; i < 8; i++) + { + sMoveTutorMenu->spriteIDs[i + 4] = CreateSprite(&gSpriteTemplate_8402E08, (i - (i / 4) * 4) * 8 + 0x1C, (i / 4) * 8 + 0x34, 0); + StartSpriteAnim(&gSprites[sMoveTutorMenu->spriteIDs[i + 4]], 2); + } + + for (i = 0; i < 8; i++) + { + sMoveTutorMenu->spriteIDs[i + 12] = CreateSprite(&gSpriteTemplate_8402E08, (i - (i / 4) * 4) * 8 + 0x1C, (i / 4) * 8 + 0x5C, 0); + StartSpriteAnim(&gSprites[sMoveTutorMenu->spriteIDs[i + 12]], 2); + } + + for (i = 0; i < 20; i++) + gSprites[sMoveTutorMenu->spriteIDs[i]].invisible = TRUE; + + CreateBlendedOutlineCursor(16, 0xFFFF, 12, 0x2D9F, 18); +} + +static void InitMoveTutorMenuStrings(void) +{ + s32 i; + u8 nickname[POKEMON_NAME_LENGTH + 1]; + + sMoveTutorMenu->numMenuChoices = GetMoveTutorMoves(&gPlayerParty[sMoveTutorMenu->partyMonIndex], sMoveTutorMenu->movesToLearn); + for (i = 0; i < sMoveTutorMenu->numMenuChoices; i++) + StringCopy(sMoveTutorMenu->moveNames[i], gMoveNames[sMoveTutorMenu->movesToLearn[i]]); + GetMonData(&gPlayerParty[sMoveTutorMenu->partyMonIndex], MON_DATA_NICKNAME, nickname); + StringCopy10(gStringVar1, nickname); + StringCopy(sMoveTutorMenu->moveNames[sMoveTutorMenu->numMenuChoices], gOtherText_Exit); + sMoveTutorMenu->numMenuChoices++; +} + +static void MoveCursorPos(s8 delta) +{ + sMoveTutorMenu->previousCursorPos = sMoveTutorMenu->cursorPos; + sMoveTutorMenu->cursorPos += delta; + sMoveTutorMenu->redrawCursor = TRUE; +} + +static void HandleMoveTutorMenuInput(void) +{ + if (gMain.newAndRepeatedKeys & DPAD_UP) + { + if (sMoveTutorMenu->menuSelection != 0) + { + PlaySE(SE_SELECT); + sMoveTutorMenu->menuSelection--; + sMoveTutorMenu->redrawMoveInfoWindow = TRUE; + if (sMoveTutorMenu->cursorPos != 0) + { + MoveCursorPos(-1); + } + else if (sMoveTutorMenu->curMenuChoice != 0) + { + sMoveTutorMenu->curMenuChoice--; + sMoveTutorMenu->redrawMoveSelectionWindow++; + } + } + } + else if (gMain.newAndRepeatedKeys & DPAD_DOWN) + { + if (sMoveTutorMenu->menuSelection < sMoveTutorMenu->numMenuChoices - 1) + { + PlaySE(SE_SELECT); + sMoveTutorMenu->menuSelection++; + sMoveTutorMenu->redrawMoveInfoWindow = TRUE; + if (sMoveTutorMenu->cursorPos != 2) + { + MoveCursorPos(1); + } + else if (sMoveTutorMenu->curMenuChoice != sMoveTutorMenu->numMenuChoices - 3) + { + sMoveTutorMenu->curMenuChoice++; + sMoveTutorMenu->redrawMoveSelectionWindow++; + } + } + } + else if (gMain.newKeys & A_BUTTON) + { + PlaySE(SE_SELECT); + if (sMoveTutorMenu->menuSelection != sMoveTutorMenu->numMenuChoices - 1) + { + sMoveTutorMenu->state = 8; + StringCopy(gStringVar2, sMoveTutorMenu->moveNames[sMoveTutorMenu->menuSelection]); + StringExpandPlaceholders(gStringVar4, gOtherText_TeachSpecificMove); + MenuPrintMessage(gStringVar4, 3, 15); + } + else + { + StringExpandPlaceholders(gStringVar4, gOtherText_GiveUpTeachingMove); + MenuPrintMessage(gStringVar4, 3, 15); + sMoveTutorMenu->state = 12; + } + } + else if (gMain.newKeys & B_BUTTON) + { + PlaySE(SE_SELECT); + sMoveTutorMenu->state = 12; + StringExpandPlaceholders(gStringVar4, gOtherText_GiveUpTeachingMove); + MenuPrintMessage(gStringVar4, 3, 15); + } + if (sMoveTutorMenu->numMenuChoices > 3) + { + gSprites[2].invisible = FALSE; + gSprites[3].invisible = FALSE; + if (sMoveTutorMenu->curMenuChoice == 0) + gSprites[2].invisible = TRUE; + else if (sMoveTutorMenu->curMenuChoice == sMoveTutorMenu->numMenuChoices - 3) + gSprites[3].invisible = TRUE; + } +} + +static void DrawMoveSelectionWindow(void) +{ + u8 menuChoice = sMoveTutorMenu->curMenuChoice; + u8 *str = gTileBuffer; + s32 i; + + for (i = 0; i < 3; i++) + { + if (menuChoice >= sMoveTutorMenu->numMenuChoices) + { + str = AlignStringInMenuWindow(str, gEmptyString_81E72B0, 0x90, 0); + } + else if (menuChoice == sMoveTutorMenu->numMenuChoices - 1) + { + str = AlignStringInMenuWindow(str, gOtherText_Exit, 0x90, 0); + } + else + { + u16 moveId = sMoveTutorMenu->movesToLearn[menuChoice]; + + if (sMoveTutorMenu->showContestInfo) + str = AlignStringInMenuWindow(str, gContestCategoryNames[gContestMoves[moveId].contestCategory], 0x27, 0); + else + str = AlignStringInMenuWindow(str, gTypeNames[gBattleMoves[moveId].type], 0x27, 0); + + str = AlignStringInMenuWindow(str, sMoveTutorMenu->moveNames[menuChoice], 0x72, 0); + + str[0] = CHAR_P; + str[1] = CHAR_P; + str[2] = CHAR_SLASH; + str += 3; + + str = AlignInt1InMenuWindow(str, gBattleMoves[moveId].pp, 0x90, 0); + } + *str++ = CHAR_NEWLINE; + menuChoice++; + } + *str = EOS; + Menu_PrintText(gTileBuffer, 11, 1); + MoveCursorPos(0); +} + +static const u8 sMoveInfoTextCoords[7][3] = +{ + {11, 1, 1}, + { 3, 6, 2}, + {24, 1, 3}, + { 3, 11, 4}, + { 5, 4, 5}, + { 3, 6, 6}, + { 3, 11, 7}, +}; + +static const u8 sBattleMoveInfoCoordIds[] = {0, 1, 2, 3}; +static const u8 sContestMoveInfoCoordIds[] = {4, 5, 6}; + +void PrintMoveInfo(u16 moveId, const u8 *moveInfoCoords) +{ + u8 str[0x34]; + u8 numHearts; + u8 i; + + StringCopy(str, gExpandedPlaceholder_Empty); + switch (moveInfoCoords[2]) + { + case 1: + break; + case 2: + if (gBattleMoves[moveId].power < 2) + AlignStringInMenuWindow(str, gOtherText_ThreeDashes2, 32, 2); + else + AlignInt1InMenuWindow(str, gBattleMoves[moveId].power, 32, 2); + Menu_PrintText(str, moveInfoCoords[0], moveInfoCoords[1]); + break; + case 4: + if (gBattleMoves[moveId].accuracy == 0) + AlignStringInMenuWindow(str, gOtherText_ThreeDashes2, 32, 2); + else + AlignInt1InMenuWindow(str, gBattleMoves[moveId].accuracy, 32, 2); + Menu_PrintText(str, moveInfoCoords[0], moveInfoCoords[1]); + break; + case 6: + Menu_EraseWindowRect(moveInfoCoords[0], moveInfoCoords[1], moveInfoCoords[0], moveInfoCoords[1] + 1); + numHearts = gContestEffects[gContestMoves[moveId].effect].appeal / 10; + if (numHearts == 255) + numHearts = 0; + for (i = 0; i < 8; i++) + { + if (i < numHearts) + StartSpriteAnim(&gSprites[sMoveTutorMenu->spriteIDs[i + 4]], 1); + else + StartSpriteAnim(&gSprites[sMoveTutorMenu->spriteIDs[i + 4]], 0); + } + break; + case 7: + Menu_EraseWindowRect(moveInfoCoords[0], moveInfoCoords[1], moveInfoCoords[0], moveInfoCoords[1] + 1); + numHearts = gContestEffects[gContestMoves[moveId].effect].jam / 10; + if (numHearts == 255) + numHearts = 0; + for (i = 0; i < 8; i++) + { + if (i < numHearts) + StartSpriteAnim(&gSprites[sMoveTutorMenu->spriteIDs[i + 12]], 3); + else + StartSpriteAnim(&gSprites[sMoveTutorMenu->spriteIDs[i + 12]], 2); + } + break; + } +} + +static void DrawMoveInfoWindow(bool8 contestInfo, int unused) +{ + u16 i; + + if (sMoveTutorMenu->menuSelection != sMoveTutorMenu->numMenuChoices - 1) + { + u16 moveId = sMoveTutorMenu->movesToLearn[sMoveTutorMenu->menuSelection]; + + if (contestInfo) + { + for (i = 0; i < 16; i++) + gSprites[sMoveTutorMenu->spriteIDs[i + 4]].invisible = FALSE; + for (i = 0; i < 3; i++) + PrintMoveInfo(moveId, sMoveInfoTextCoords[sContestMoveInfoCoordIds[i]]); + sub_8072AB0(gContestEffectStrings[gContestMoves[moveId].effect], 0x58, 0x48, 0x90, 32, 1); + } + else + { + u8 var; + + for (i = 0; i < 4; i++) + PrintMoveInfo(moveId, sMoveInfoTextCoords[sBattleMoveInfoCoordIds[i]]); + var = sub_8072A18(gMoveDescriptions[moveId - 1], 0x58, 0x48, 0x90, 1); + if (var < 2) + { + u8 r1 = var * 2 + 9; + + Menu_BlankWindowRect(11, r1, 28, 12); + } + } + } + else + { + if (contestInfo) + { + Menu_EraseWindowRect(sMoveInfoTextCoords[5][0], sMoveInfoTextCoords[5][1], sMoveInfoTextCoords[5][0], sMoveInfoTextCoords[5][1] + 1); + Menu_EraseWindowRect(sMoveInfoTextCoords[6][0], sMoveInfoTextCoords[6][1], sMoveInfoTextCoords[6][0], sMoveInfoTextCoords[6][1] + 1); + for (i = 0; i < 16; i++) + gSprites[sMoveTutorMenu->spriteIDs[i + 4]].invisible = TRUE; + } + else + { + Menu_EraseWindowRect(sMoveInfoTextCoords[1][0], sMoveInfoTextCoords[1][1], sMoveInfoTextCoords[1][0] + 3, sMoveInfoTextCoords[1][1] + 1); + Menu_EraseWindowRect(sMoveInfoTextCoords[3][0], sMoveInfoTextCoords[3][1], sMoveInfoTextCoords[3][0] + 3, sMoveInfoTextCoords[3][1] + 1); + } + Menu_EraseWindowRect(11, 9, 28, 12); + } +} + +static void RedrawMoveInfoWindow(void) +{ + Menu_EraseWindowRect(21, 7, 27, 12); + DrawMoveInfoWindow(sMoveTutorMenu->showContestInfo, 0); +} diff --git a/src/mystery_event_menu.c b/src/mystery_event_menu.c index 53659bdb4..b39804b79 100644 --- a/src/mystery_event_menu.c +++ b/src/mystery_event_menu.c @@ -47,8 +47,8 @@ void CB2_InitMysteryEventMenu(void) FreeAllSpritePalettes(); ResetTasks(); SetVBlankCallback(VBlankCB); - Text_LoadWindowTemplate(&gWindowTemplate_81E6CE4); - InitMenuWindow(&gWindowTemplate_81E6CE4); + Text_LoadWindowTemplate(&gMenuTextWindowTemplate); + InitMenuWindow(&gMenuTextWindowTemplate); Menu_EraseScreen(); REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON; REG_BLDCNT = 0; @@ -394,8 +394,8 @@ void debug_sub_815D15C(void) FreeAllSpritePalettes(); ResetTasks(); SetVBlankCallback(VBlankCB); - Text_LoadWindowTemplate(&gWindowTemplate_81E6CE4); - InitMenuWindow(&gWindowTemplate_81E6CE4); + Text_LoadWindowTemplate(&gMenuTextWindowTemplate); + InitMenuWindow(&gMenuTextWindowTemplate); Menu_EraseScreen(); REG_DISPCNT = DISPCNT_BG0_ON | DISPCNT_OBJ_1D_MAP | DISPCNT_MODE_0; REG_BLDCNT = 0; diff --git a/src/overworld.c b/src/overworld.c index a85cde128..47e23ad35 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -1124,8 +1124,8 @@ void CB2_InitTestMenu(void) ResetSpriteData(); ResetTasks(); ScanlineEffect_Stop(); - Text_LoadWindowTemplate(&gWindowTemplate_81E6CE4); - InitMenuWindow(&gWindowTemplate_81E6CE4); + Text_LoadWindowTemplate(&gMenuTextWindowTemplate); + InitMenuWindow(&gMenuTextWindowTemplate); debug_sub_8076B68(); BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0)); REG_IE |= 1; @@ -1550,7 +1550,7 @@ bool32 sub_805483C(u8 *a1) sub_8054814(); sub_8054C54(); Text_LoadWindowTemplate(&gWindowTemplate_81E6C3C); - InitMenuWindow(&gWindowTemplate_81E6CE4); + InitMenuWindow(&gMenuTextWindowTemplate); (*a1)++; break; case 5: @@ -1616,7 +1616,7 @@ bool32 sub_805493C(u8 *a1, u32 a2) sub_8054814(); sub_8054C54(); Text_LoadWindowTemplate(&gWindowTemplate_81E6C3C); - InitMenuWindow(&gWindowTemplate_81E6CE4); + InitMenuWindow(&gMenuTextWindowTemplate); (*a1)++; break; case 5: @@ -1706,7 +1706,7 @@ bool32 sub_8054A9C(u8 *a1) sub_8054814(); sub_8054C54(); Text_LoadWindowTemplate(&gWindowTemplate_81E6C3C); - InitMenuWindow(&gWindowTemplate_81E6CE4); + InitMenuWindow(&gMenuTextWindowTemplate); (*a1)++; break; case 4: @@ -1772,7 +1772,7 @@ void sub_8054C2C(void) sub_8054814(); sub_8054C54(); Text_LoadWindowTemplate(&gWindowTemplate_81E6C3C); - InitMenuWindow(&gWindowTemplate_81E6CE4); + InitMenuWindow(&gMenuTextWindowTemplate); mapdata_load_assets_to_gpu_and_full_redraw(); } diff --git a/src/party_menu.c b/src/party_menu.c index 785d86007..a39300825 100644 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -3427,10 +3427,10 @@ void PartyMenuDoPrintHP(u8 monIndex, u8 b, u16 currentHP, u16 maxHP) { u32 *var; register u8 *stringVar1 asm("r2") = gStringVar1; - register u8 *textPtr asm("r2") = sub_8072C14(stringVar1, currentHP, 15, 1); + register u8 *textPtr asm("r2") = AlignInt1InMenuWindow(stringVar1, currentHP, 15, 1); textPtr[0] = CHAR_SLASH; - sub_8072C14(++textPtr, maxHP, 35, 1); + AlignInt1InMenuWindow(++textPtr, maxHP, 35, 1); var = 0; CpuFastSet(&var, gUnknown_02039460, 0x1000040); diff --git a/src/player_pc.c b/src/player_pc.c index 27427ecaa..e52666a50 100644 --- a/src/player_pc.c +++ b/src/player_pc.c @@ -135,7 +135,7 @@ static const struct MenuAction2 gPCText_ItemPCOptionsText[] = { PCText_WithdrawItem, ItemStorage_Withdraw }, { PCText_DepositItem, ItemStorage_Deposit }, { PCText_TossItem, ItemStorage_Toss }, - { gUnknownText_Exit, ItemStorage_Exit } + { gOtherText_Exit, ItemStorage_Exit } }; static const struct YesNoFuncTable ResumeFromTossYesNoFuncList[] = // ResumeFromTossYesNoFuncList diff --git a/src/pokeblock.c b/src/pokeblock.c index 4087cbbb0..a24cb32cf 100644 --- a/src/pokeblock.c +++ b/src/pokeblock.c @@ -486,7 +486,7 @@ static void sub_810BB88(u8 a0) y = (i - a0) << 1; if (i == gUnknown_02039248.unk2) { - buf = sub_8072C74(gStringVar1, gContestStatsText_StowCase, 0x78, 0); + buf = AlignStringInMenuWindow(gStringVar1, gContestStatsText_StowCase, 0x78, 0); Menu_PrintText(gStringVar1, 15, y + 1); if (i != a0 + 8) { @@ -494,7 +494,7 @@ static void sub_810BB88(u8 a0) } break; } - buf = sub_8072C74(gStringVar1, gPokeblockNames[gSaveBlock1.pokeblocks[i].color], 0x5e, 0); + buf = AlignStringInMenuWindow(gStringVar1, gPokeblockNames[gSaveBlock1.pokeblocks[i].color], 0x5e, 0); buf[0] = EXT_CTRL_CODE_BEGIN; buf[1] = 0x14; buf[2] = 0x06; @@ -615,7 +615,7 @@ static void sub_810BDAC(bool8 flag) BasicInitMenuWindow(&gWindowTemplate_81E6E34); if (gUnknown_02039248.unk0 + gUnknown_02039248.unk1 != gUnknown_02039248.unk2) { - sub_8072C14(gStringVar1, sub_810C9E8(&gSaveBlock1.pokeblocks[gUnknown_02039248.unk0 + gUnknown_02039248.unk1]), 16, 1); + AlignInt1InMenuWindow(gStringVar1, sub_810C9E8(&gSaveBlock1.pokeblocks[gUnknown_02039248.unk0 + gUnknown_02039248.unk1]), 16, 1); Menu_PrintText(gStringVar1, 11, 17); } else diff --git a/src/pokemon_3.c b/src/pokemon_3.c index abf1ef9c6..c6eda8bca 100644 --- a/src/pokemon_3.c +++ b/src/pokemon_3.c @@ -10,6 +10,7 @@ #include "link.h" #include "m4a.h" #include "main.h" +#include "move_tutor_menu.h" #include "pokemon.h" #include "random.h" #include "overworld.h" @@ -993,18 +994,18 @@ u32 CanMonLearnTMHM(struct Pokemon *mon, u8 tm) } } -u8 GetMoveRelearnerMoves(struct Pokemon *mon, u16 *moves) +u8 GetMoveTutorMoves(struct Pokemon *mon, u16 *moves) { - u16 learnedMoves[4]; + u16 knownMoves[4]; u8 numMoves = 0; u16 species = GetMonData(mon, MON_DATA_SPECIES, 0); u8 level = GetMonData(mon, MON_DATA_LEVEL, 0); int i, j, k; for (i = 0; i < 4; i++) - learnedMoves[i] = GetMonData(mon, MON_DATA_MOVE1 + i, 0); + knownMoves[i] = GetMonData(mon, MON_DATA_MOVE1 + i, 0); - for (i = 0; i < 20; i++) + for (i = 0; i < MAX_MOVE_TUTOR_MOVES; i++) { u16 moveLevel; @@ -1012,10 +1013,9 @@ u8 GetMoveRelearnerMoves(struct Pokemon *mon, u16 *moves) break; moveLevel = gLevelUpLearnsets[species][i] & 0xFE00; - if (moveLevel <= (level << 9)) { - for (j = 0; j < 4 && learnedMoves[j] != (gLevelUpLearnsets[species][i] & 0x1FF); j++) + for (j = 0; j < 4 && knownMoves[j] != (gLevelUpLearnsets[species][i] & 0x1FF); j++) ; if (j == 4) diff --git a/src/pokemon_storage_system_4.c b/src/pokemon_storage_system_4.c index 00e7c10d2..2d156c159 100644 --- a/src/pokemon_storage_system_4.c +++ b/src/pokemon_storage_system_4.c @@ -912,7 +912,7 @@ void sub_809A23C(u8 boxId) gPokemonStorageSystemPtr->unk_0d08 |= 0x10000 << tagIdx; sub_809A1BC(gPokemonStorageSystemPtr->unk_08ca, gPokemonStorage.boxNames[boxId]); LoadSpriteSheet(&spriteSheet); - r6 = sub_809A6D0(sub_8072CA4(gPokemonStorage.boxNames[boxId])); + r6 = sub_809A6D0(GetStringWidthInMenuWindow(gPokemonStorage.boxNames[boxId])); for (i = 0; i < 2; i++) { u8 spriteId = CreateSprite(&gSpriteTemplate_83BB2B8, r6 + i * 32, 0x1c, 23); @@ -947,7 +947,7 @@ void sub_809A3D0(u8 boxId, s8 a1) sub_809A1BC(gPokemonStorageSystemPtr->unk_08ca, gPokemonStorage.boxNames[boxId]); LoadSpriteSheet(&spriteSheet); LoadPalette(gUnknown_083BB0A8[gPokemonStorage.wallpaper[boxId]], r8, 0x04); - x = sub_809A6D0(sub_8072CA4(gPokemonStorage.boxNames[boxId])); + x = sub_809A6D0(GetStringWidthInMenuWindow(gPokemonStorage.boxNames[boxId])); x2 = x + a1 * 192; for (i = 0; i < 2; i++) { @@ -2061,7 +2061,7 @@ void sub_809C04C(void *pokemon, u8 a1) buf = gPokemonStorageSystemPtr->unk_1259 + 8; buf[0] = 0x34; // LV buf = gPokemonStorageSystemPtr->unk_1259 + 9; - buf = sub_8072C14(buf, gPokemonStorageSystemPtr->unk_11f8, 0x22, STR_CONV_MODE_RIGHT_ALIGN); + buf = AlignInt1InMenuWindow(buf, gPokemonStorageSystemPtr->unk_11f8, 0x22, STR_CONV_MODE_RIGHT_ALIGN); buf[0] = EXT_CTRL_CODE_BEGIN; buf[1] = 0x11; // CLEAR buf[2] = 8; diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c index d369347fc..7fc422125 100644 --- a/src/pokemon_summary_screen.c +++ b/src/pokemon_summary_screen.c @@ -9,12 +9,12 @@ #include "event_data.h" #include "ewram.h" #include "item.h" -#include "learn_move.h" #include "link.h" #include "m4a.h" #include "main.h" #include "menu.h" #include "menu_helpers.h" +#include "move_tutor_menu.h" #include "overworld.h" #include "palette.h" #include "party_menu.h" @@ -2577,9 +2577,9 @@ static void sub_809FF64(struct Pokemon *mon) ConvertIntToDecimalString(buffer, GetMonData(mon, MON_DATA_SPEED)); sub_8072BD8(buffer, 27, 11, 18); - buffer = sub_8072C14(buffer, GetMonData(mon, MON_DATA_HP), 24, 1); + buffer = AlignInt1InMenuWindow(buffer, GetMonData(mon, MON_DATA_HP), 24, 1); *buffer++ = CHAR_SLASH; - buffer = sub_8072C14(buffer, GetMonData(mon, MON_DATA_MAX_HP), 48, 1); + buffer = AlignInt1InMenuWindow(buffer, GetMonData(mon, MON_DATA_MAX_HP), 48, 1); Menu_PrintTextPixelCoords(gStringVar1, 126, 56, 1); } @@ -2651,9 +2651,9 @@ static void sub_80A015C(struct Pokemon *mon) maxPP = CalculatePPWithBonus(move, ppBonuses, i); buffer = gStringVar1; - buffer = sub_8072C14(buffer, curPP, 14, 1); + buffer = AlignInt1InMenuWindow(buffer, curPP, 14, 1); *buffer++ = CHAR_SLASH; - sub_8072C14(buffer, maxPP, 32, 1); + AlignInt1InMenuWindow(buffer, maxPP, 32, 1); Menu_PrintText(gStringVar1, 25, (2 * i) + 4); } } @@ -2687,9 +2687,9 @@ static void sub_80A029C(struct Pokemon *mon) buffer = gStringVar1; pp = gBattleMoves[move].pp; - buffer = sub_8072C14(buffer, pp, 14, 1); + buffer = AlignInt1InMenuWindow(buffer, pp, 14, 1); *buffer++ = CHAR_SLASH; - buffer = sub_8072C14(buffer, pp, 32, 1); + buffer = AlignInt1InMenuWindow(buffer, pp, 32, 1); Menu_PrintText(gStringVar1, 25, 12); } @@ -2769,26 +2769,26 @@ static void sub_80A04CC(u16 move) if (gBattleMoves[move].power <= 1) { buffer = gStringVar1; - buffer = sub_8072C74(buffer, gOtherText_ThreeDashes2, 21, 1); + buffer = AlignStringInMenuWindow(buffer, gOtherText_ThreeDashes2, 21, 1); Menu_PrintText(gStringVar1, 7, 15); } else { buffer = gStringVar1; - buffer = sub_8072C14(buffer, gBattleMoves[move].power, 21, 1); + buffer = AlignInt1InMenuWindow(buffer, gBattleMoves[move].power, 21, 1); Menu_PrintText(gStringVar1, 7, 15); } if (gBattleMoves[move].accuracy == 0) { buffer = gStringVar1; - buffer = sub_8072C74(buffer, gOtherText_ThreeDashes2, 21, 1); + buffer = AlignStringInMenuWindow(buffer, gOtherText_ThreeDashes2, 21, 1); Menu_PrintText(gStringVar1, 7, 17); } else { buffer = gStringVar1; - buffer = sub_8072C14(buffer, gBattleMoves[move].accuracy, 21, 1); + buffer = AlignInt1InMenuWindow(buffer, gBattleMoves[move].accuracy, 21, 1); Menu_PrintText(gStringVar1, 7, 17); } } diff --git a/src/pokenav_before.c b/src/pokenav_before.c index 61baea929..49df4863e 100644 --- a/src/pokenav_before.c +++ b/src/pokenav_before.c @@ -3851,7 +3851,7 @@ void sub_80EF428(u8 a, u8 b) } tileBuffer = gUnknown_083DFEC8; - sub_8072C74(&tileBuffer[0x800], pcText, 0xC0, 2); + AlignStringInMenuWindow(&tileBuffer[0x800], pcText, 0xC0, 2); Menu_PrintText(&tileBuffer[0x800], 3, 17); } diff --git a/src/reset_rtc_screen.c b/src/reset_rtc_screen.c index d8c07f2bb..52ec0a919 100644 --- a/src/reset_rtc_screen.c +++ b/src/reset_rtc_screen.c @@ -278,10 +278,10 @@ void ResetRtcScreen_PrintTime(u8 x, u8 y, u16 days, u8 hours, u8 minutes, u8 sec hours %= 24; minutes %= 60; seconds %= 60; - sub_8072C44(gStringVar1, days, 24, 1); + AlignInt2InMenuWindow(gStringVar1, days, 24, 1); dest = StringCopy(dest, gStringVar1); dest = StringCopy(dest, gOtherText_Day); - sub_8072C44(gStringVar1, hours, 18, 1); + AlignInt2InMenuWindow(gStringVar1, hours, 18, 1); dest = StringCopy(dest, gStringVar1); dest = StringCopy(dest, gUnknown_08376500); dest = ConvertIntToDecimalStringN(dest, minutes, STR_CONV_MODE_LEADING_ZEROS, 2); @@ -426,8 +426,8 @@ void CB2_InitResetRtcScreen(void) ResetSpriteData(); ResetTasks(); ResetPaletteFade(); - Text_LoadWindowTemplate(&gWindowTemplate_81E6CE4); - InitMenuWindow(&gWindowTemplate_81E6CE4); + Text_LoadWindowTemplate(&gMenuTextWindowTemplate); + InitMenuWindow(&gMenuTextWindowTemplate); REG_DISPCNT = 4352; SetVBlankCallback(VBlankCB_ResetRtcScreen); SetMainCallback2(CB2_ResetRtcScreen); diff --git a/src/roulette.c b/src/roulette.c index 49627dade..ab60e089a 100644 --- a/src/roulette.c +++ b/src/roulette.c @@ -436,7 +436,7 @@ void sub_8115384(void) break; case 0x2: Text_LoadWindowTemplate(&gWindowTemplate_81E6C3C); - InitMenuWindow(&gWindowTemplate_81E6CE4); + InitMenuWindow(&gMenuTextWindowTemplate); LoadPalette(&gUnknown_083F86BC, 0x0, 0x1C0); gMain.state++; break; diff --git a/src/save_failed_screen.c b/src/save_failed_screen.c index d73c90fb3..f5544bc65 100644 --- a/src/save_failed_screen.c +++ b/src/save_failed_screen.c @@ -122,7 +122,7 @@ static void CB2_SaveFailedScreen(void) LoadPalette(&gBirchBagGrassPal, 0, sizeof(gBirchBagGrassPal)); LoadPalette(&gSaveFailedClockPal, 0x100, sizeof(gSaveFailedClockPal)); Text_LoadWindowTemplate(&gWindowTemplate_81E6C3C); - InitMenuWindow(&gWindowTemplate_81E6CE4); + InitMenuWindow(&gMenuTextWindowTemplate); Menu_DrawStdWindowFrame(13, CLOCK_WIN_TOP, 16, CLOCK_WIN_TOP + 3); // clock window Menu_DrawStdWindowFrame(1, MSG_WIN_TOP, 28, 19); // message window Menu_PrintText(gSystemText_SaveFailedBackupCheck, 2, MSG_WIN_TOP + 1); diff --git a/src/script_menu.c b/src/script_menu.c index 615004be3..1a7489c82 100644 --- a/src/script_menu.c +++ b/src/script_menu.c @@ -622,7 +622,7 @@ bool8 ScriptMenu_MultichoiceWithDefault(u8 left, u8 top, u8 multichoiceId, u8 ig static u16 GetStringWidthInTilesForScriptMenu(const u8 *str) { // each tile on screen is 8x8, so it needs the number of tiles and not pixels, hence the division by 8. - return (Text_GetStringWidthFromWindowTemplate((struct WindowTemplate *)&gWindowTemplate_81E6CE4, str) + 7) / 8; + return (Text_GetStringWidthFromWindowTemplate((struct WindowTemplate *)&gMenuTextWindowTemplate, str) + 7) / 8; } static void DrawMultichoiceMenu(u8 left, u8 top, u8 count, const struct MenuAction *list, u8 ignoreBPress, u8 cursorPos) diff --git a/src/secret_base.c b/src/secret_base.c index 1a4b765a0..60ce80af5 100644 --- a/src/secret_base.c +++ b/src/secret_base.c @@ -98,7 +98,7 @@ const u8 gUnknown_083D1374[] = { const struct MenuAction2 gUnknown_083D13D4[] = { {SecretBaseText_DelRegist, sub_80BCA84}, - {gUnknownText_Exit, sub_80BCBF8} + {gOtherText_Exit, sub_80BCBF8} }; const struct YesNoFuncTable gUnknown_083D13E4 = { @@ -1011,7 +1011,7 @@ void sub_80BC6B0(u8 taskId) if (n < 8) { Menu_BlankWindowRect(18, 2 * n + 2, 28, 2 * n + 3); - Menu_PrintText(gUnknownText_Exit, 18, 2 * n + 2); + Menu_PrintText(gOtherText_Exit, 18, 2 * n + 2); DestroyVerticalScrollIndicator(BOTTOM_ARROW); if (n != 7) Menu_BlankWindowRect(18, ((n << 25) + (1 << 26)) >> 24, 28, 18); // the shifts are needed to match diff --git a/src/start_menu.c b/src/start_menu.c index 5c437178c..2024ba89a 100644 --- a/src/start_menu.c +++ b/src/start_menu.c @@ -300,7 +300,7 @@ static void BuildStartMenuActions_Link(void) //Show number of safari balls left static void DisplaySafariBallsWindow(void) { - sub_8072C44(gStringVar1, gNumSafariBalls, 12, 1); + AlignInt2InMenuWindow(gStringVar1, gNumSafariBalls, 12, 1); Menu_DrawStdWindowFrame(0, 0, 10, 5); Menu_PrintText(gOtherText_SafariStock, 1, 1); } @@ -379,7 +379,7 @@ void CreateStartMenuTask(void (*func)(u8)) { u8 taskId; - InitMenuWindow(&gWindowTemplate_81E6CE4); + InitMenuWindow(&gMenuTextWindowTemplate); taskId = CreateTask(Task_StartMenu, 0x50); SetTaskFuncWithFollowupFunc(taskId, Task_StartMenu, func); } @@ -865,8 +865,8 @@ static bool32 sub_80719FC(u8 *step) ScanlineEffect_Clear(); break; case 2: - Text_LoadWindowTemplate(&gWindowTemplate_81E6CE4); - InitMenuWindow(&gWindowTemplate_81E6CE4); + Text_LoadWindowTemplate(&gMenuTextWindowTemplate); + InitMenuWindow(&gMenuTextWindowTemplate); REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_BG0_ON; break; case 3: diff --git a/src/starter_choose.c b/src/starter_choose.c index 836925e77..4e430015e 100644 --- a/src/starter_choose.c +++ b/src/starter_choose.c @@ -295,7 +295,7 @@ void CB2_ChooseStarter(void) LoadCompressedObjectPic(&gUnknown_083F77A4[0]); LoadSpritePalettes(gUnknown_083F77B4); Text_LoadWindowTemplate(&gWindowTemplate_81E6C3C); - InitMenuWindow(&gWindowTemplate_81E6CE4); + InitMenuWindow(&gMenuTextWindowTemplate); BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB(0, 0, 0)); savedIme = REG_IME; @@ -534,7 +534,7 @@ static void CreateStarterPokemonLabel(u8 prevSelection, u8 selection) AddTextColorCtrlCode(labelText, 0, 15, 8); //Copy Pokemon name to label - sub_8072C74(labelText + 5, gSpeciesNames[species], 0x6B, 1); + AlignStringInMenuWindow(labelText + 5, gSpeciesNames[species], 0x6B, 1); Menu_PrintText( labelText, gStarterChoose_LabelCoords[selection][0], @@ -663,7 +663,7 @@ _0810A8CA:\n\ adds r0, r7, 0\n\ movs r2, 0x70\n\ movs r3, 0x2\n\ - bl sub_8072C74\n\ + bl AlignStringInMenuWindow\n\ adds r2, r5, 0x2\n\ lsls r2, 24\n\ lsrs r2, 24\n\ diff --git a/src/strings.c b/src/strings.c index 0f599db72..cded04f96 100644 --- a/src/strings.c +++ b/src/strings.c @@ -159,7 +159,7 @@ const u8 OtherText_CheckTag[] = _("CHECK TAG"); const u8 OtherText_Confirm[] = _("CONFIRM"); const u8 gOtherText_Walk[] = _("WALK"); -const u8 gUnknownText_Exit[] = _("EXIT"); +const u8 gOtherText_Exit[] = _("EXIT"); const u8 gOtherText_CancelNoTerminator[] = _("CANCEL"); const u8 gOtherText_CancelWithTerminator[] = _("$CANCEL"); // with terminator at beginning? @@ -1085,7 +1085,7 @@ const u8 OtherText_CheckTag[] = _("PRÜFEN"); const u8 OtherText_Confirm[] = _("O.K."); const u8 gOtherText_Walk[] = _("LAUFEN"); -const u8 gUnknownText_Exit[] = _("BEENDEN"); +const u8 gOtherText_Exit[] = _("BEENDEN"); const u8 gOtherText_CancelNoTerminator[] = _("ZURÜCK"); const u8 gOtherText_CancelWithTerminator[] = _("$ZURÜCK"); diff --git a/src/text.c b/src/text.c index 234e6085d..c2f78276b 100644 --- a/src/text.c +++ b/src/text.c @@ -618,7 +618,7 @@ const struct WindowTemplate gWindowTemplate_81E6CC8 = BG_SCREEN_ADDR(15), // tilemap }; -const struct WindowTemplate gWindowTemplate_81E6CE4 = +const struct WindowTemplate gMenuTextWindowTemplate = { 0, // BG number 2, // BG character base block @@ -1647,7 +1647,7 @@ const struct WindowTemplate gWindowTemplate_81E7224 = BG_SCREEN_ADDR(31), // tilemap }; -const struct WindowTemplate gWindowTemplate_81E7240 = +const struct WindowTemplate gMoveTutorMenuFramesWindowTemplate = { 1, // BG number 2, // BG character base block @@ -3458,7 +3458,7 @@ u8 *AlignInt1(struct Window *win, u8 *dest, s32 value, u8 alignAmount, u8 alignT case 0: ConvertIntToDecimalString(temp, value); dest = StringCopy(dest, temp); - dest[0] = 0xFC; + dest[0] = EXT_CTRL_CODE_BEGIN; dest[1] = 19; dest[2] = alignAmount; dest += 3; @@ -3469,7 +3469,7 @@ u8 *AlignInt1(struct Window *win, u8 *dest, s32 value, u8 alignAmount, u8 alignT width = GetStringWidth(win, temp); if (alignAmount > width) { - dest[0] = 0xFC; + dest[0] = EXT_CTRL_CODE_BEGIN; dest[1] = 19; dest[2] = alignAmount - width; dest += 3; @@ -3481,7 +3481,7 @@ u8 *AlignInt1(struct Window *win, u8 *dest, s32 value, u8 alignAmount, u8 alignT width = GetStringWidth(win, temp); if (alignAmount > width) { - dest[0] = 0xFC; + dest[0] = EXT_CTRL_CODE_BEGIN; dest[1] = 19; dest[2] = (alignAmount - width) / 2; dest += 3; @@ -3489,7 +3489,7 @@ u8 *AlignInt1(struct Window *win, u8 *dest, s32 value, u8 alignAmount, u8 alignT dest = StringCopy(dest, temp); if (alignAmount > width) { - dest[0] = 0xFC; + dest[0] = EXT_CTRL_CODE_BEGIN; dest[1] = 19; dest[2] = alignAmount; dest += 3; diff --git a/src/trade.c b/src/trade.c index 4bed5d92b..8d7f5b1fc 100644 --- a/src/trade.c +++ b/src/trade.c @@ -1089,7 +1089,7 @@ static void sub_8047EC0(void) ResetTasks(); sub_804A964(&gUnknown_03004824->unk_00c8, BG_SCREEN_ADDR(5)); SetVBlankCallback(sub_80489F4); - InitMenuWindow(&gWindowTemplate_81E6CE4); + InitMenuWindow(&gMenuTextWindowTemplate); Text_LoadWindowTemplate(&gWindowTemplate_81E6F84); Text_InitWindowWithTemplate(&gUnknown_03004824->window, &gWindowTemplate_81E6F84); gUnknown_03004824->unk_007a = TextWindow_SetBaseTileNum(20); @@ -1269,7 +1269,7 @@ static void sub_80484F4(void) ResetTasks(); sub_804A964(&gUnknown_03004824->unk_00c8, BG_SCREEN_ADDR(5)); SetVBlankCallback(sub_80489F4); - InitMenuWindow(&gWindowTemplate_81E6CE4); + InitMenuWindow(&gMenuTextWindowTemplate); Text_LoadWindowTemplate(&gWindowTemplate_81E6F84); Text_InitWindowWithTemplate(&gUnknown_03004824->window, &gWindowTemplate_81E6F84); gUnknown_03004824->unk_007a = TextWindow_SetBaseTileNum(20); diff --git a/src/trainer_card.c b/src/trainer_card.c index 52be7b521..541a4a061 100644 --- a/src/trainer_card.c +++ b/src/trainer_card.c @@ -1452,7 +1452,7 @@ static void TrainerCard_Front_GetPlayTimeString(u8 *arg1, s16 colon) playTimeMinutes = ewram0_2.displayedCard.playTimeMinutes; } FormatPlayTime(buffer, playTimeHours, playTimeMinutes, colon); - sub_8072C74(arg1, buffer, 48, 1); + AlignStringInMenuWindow(arg1, buffer, 48, 1); } static void TrainerCard_PrintEasyChatPhrase(void) @@ -1548,10 +1548,10 @@ static void TrainerCard_Back_PrintBattleTower(void) if (ewram0_2.showBattleTowerStatus != 0) { - sub_8072C44(buffer, ewram0_2.displayedCard.battleTowerWins, 24, 1); + AlignInt2InMenuWindow(buffer, ewram0_2.displayedCard.battleTowerWins, 24, 1); Menu_PrintTextPixelCoords(buffer, 112, 120, 0); - sub_8072C44(buffer, ewram0_2.displayedCard.battleTowerLosses, 24, 1); + AlignInt2InMenuWindow(buffer, ewram0_2.displayedCard.battleTowerLosses, 24, 1); Menu_PrintTextPixelCoords(buffer, 149, 120, 0); } } diff --git a/src/wallclock.c b/src/wallclock.c index e500a3777..bdef8e0f4 100644 --- a/src/wallclock.c +++ b/src/wallclock.c @@ -222,7 +222,7 @@ static void LoadWallClockGraphics(void) LoadCompressedObjectPic(&gUnknown_083F7A90[0]); LoadSpritePalettes(gUnknown_083F7AA0); Text_LoadWindowTemplate(&gWindowTemplate_81E6C3C); - InitMenuWindow(&gWindowTemplate_81E6CE4); + InitMenuWindow(&gMenuTextWindowTemplate); } static void WallClockInit(void) diff --git a/sym_bss.txt b/sym_bss.txt index d2e3e91ce..4ee96c348 100644 --- a/sym_bss.txt +++ b/sym_bss.txt @@ -42,7 +42,7 @@ unk_debug_bss_3 = .; . = ALIGN(4); src/contest_painting.o(.bss); . = ALIGN(4); src/pokeblock.o(.bss); . = ALIGN(4); src/field_specials.o(.bss); -. = ALIGN(4); src/learn_move.o(.bss); +. = ALIGN(4); src/move_tutor_menu.o(.bss); . = ALIGN(4); src/player_pc.o(.bss); . = ALIGN(4); src/debug/nakamura_debug_menu.o(.bss); . = ALIGN(4); src/libs/m4a_1.o(.bss);