diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/fame_checker.c | 4 | ||||
-rw-r--r-- | src/field_fadetransition.c | 12 | ||||
-rw-r--r-- | src/help_system_812B1E0.c | 62 | ||||
-rw-r--r-- | src/item_use.c | 12 | ||||
-rw-r--r-- | src/menu2.c | 2 | ||||
-rw-r--r-- | src/mystery_event_script.c | 2 | ||||
-rw-r--r-- | src/new_menu_helpers.c | 18 | ||||
-rw-r--r-- | src/player_pc.c | 14 | ||||
-rw-r--r-- | src/quest_log.c | 743 | ||||
-rw-r--r-- | src/save.c | 6 | ||||
-rw-r--r-- | src/scrcmd.c | 6 | ||||
-rw-r--r-- | src/start_menu.c | 1008 | ||||
-rw-r--r-- | src/teachy_tv.c | 4 | ||||
-rw-r--r-- | src/trainer_tower.c | 2 |
14 files changed, 1450 insertions, 445 deletions
diff --git a/src/fame_checker.c b/src/fame_checker.c index 0278fda18..e803a9700 100644 --- a/src/fame_checker.c +++ b/src/fame_checker.c @@ -552,7 +552,7 @@ static void Task_TopMenuHandleInput(u8 taskId) if (FindTaskIdByFunc(Task_FCOpenOrCloseInfoBox) == 0xFF) { RunTextPrinters(); - if ((JOY_NEW(SELECT_BUTTON)) && !sFameCheckerData->inPickMode && sFameCheckerData->savedCallback != ReturnToBagFromKeyItem) + if ((JOY_NEW(SELECT_BUTTON)) && !sFameCheckerData->inPickMode && sFameCheckerData->savedCallback != CB2_BagMenuFromStartMenu) task->func = Task_StartToCloseFameChecker; else if (JOY_NEW(START_BUTTON)) { @@ -802,7 +802,7 @@ static void WipeMsgBoxAndTransfer(void) static void Setup_DrawMsgAndListBoxes(void) { - sub_80F6E9C(); + LoadStdWindowFrameGfx(); DrawDialogueFrame(FCWINDOWID_MSGBOX, TRUE); FC_PutWindowTilemapAndCopyWindowToVramMode3(FCWINDOWID_MSGBOX); FC_PutWindowTilemapAndCopyWindowToVramMode3(FCWINDOWID_LIST); diff --git a/src/field_fadetransition.c b/src/field_fadetransition.c index 6447ae1b2..6a539b60e 100644 --- a/src/field_fadetransition.c +++ b/src/field_fadetransition.c @@ -475,25 +475,25 @@ static void sub_807E31C(u8 taskId) } } -static void sub_807E378(u8 taskId) +static void Task_WaitFadeAndCreateStartMenuTask(u8 taskId) { if (sub_807E418() == TRUE) { DestroyTask(taskId); - CreateTask(sub_806F1F0, 80); + CreateTask(Task_StartMenuHandleInput, 80); } } -void sub_807E3A0(void) +void FadeTransition_FadeInOnReturnToStartMenu(void) { sub_807DC00(); - CreateTask(sub_807E378, 80); + CreateTask(Task_WaitFadeAndCreateStartMenuTask, 80); ScriptContext2_Enable(); } -bool32 sub_807E3BC(void) +bool8 FieldCB2_ReturnToStartMenuInit(void) { - sub_806F1D4(); + SetUpReturnToStartMenu(); return FALSE; } diff --git a/src/help_system_812B1E0.c b/src/help_system_812B1E0.c index a527525f8..afb792072 100644 --- a/src/help_system_812B1E0.c +++ b/src/help_system_812B1E0.c @@ -16,13 +16,13 @@ #include "constants/maps.h" #include "constants/songs.h" -static EWRAM_DATA u16 gUnknown_203B0EC = 0; +static EWRAM_DATA u16 sSomeVariable = 0; static EWRAM_DATA u8 gUnknown_203B0EE = 0; u8 gUnknown_3005E9C[4]; -u16 gUnknown_3005EA0; +u16 gSomeVariableBackup; -static bool32 sub_812B27C(const u16 * mapIdxs); +static bool32 IsCurrentMapInArray(const u16 * mapIdxs); static void sub_812B520(struct HelpSystemListMenu * a0, struct ListMenuItem * a1); static void sub_812B614(struct HelpSystemListMenu * a0, struct ListMenuItem * a1); static bool8 sub_812B754(void); @@ -824,7 +824,7 @@ static const u8 gUnknown_845C4B6[][6] = { {0, 0, 0, 0, 0, 0} }; -static const u16 gUnknown_845C594[] = { +static const u16 sMartMaps[] = { MAP_VIRIDIAN_CITY_MART, MAP_PEWTER_CITY_MART, MAP_CERULEAN_CITY_MART, @@ -847,7 +847,7 @@ static const u16 gUnknown_845C594[] = { MAP_UNDEFINED }; -static const u16 gUnknown_845C5BC[] = { +static const u16 sGymMaps[] = { MAP_PEWTER_CITY_GYM, MAP_CERULEAN_CITY_GYM, MAP_VERMILION_CITY_GYM, @@ -859,7 +859,7 @@ static const u16 gUnknown_845C5BC[] = { MAP_UNDEFINED }; -static const u8 gUnknown_845C5CE[][3] = { +static const u8 sDungeonMaps[][3] = { { MAP_GROUP(VIRIDIAN_FOREST), MAP_NUM(VIRIDIAN_FOREST), 1 }, { MAP_GROUP(MT_MOON_1F), MAP_NUM(MT_MOON_1F), 3 }, { MAP_GROUP(ROCK_TUNNEL_1F), MAP_NUM(ROCK_TUNNEL_1F), 2 }, @@ -878,14 +878,14 @@ static const u8 gUnknown_845C5CE[][3] = { { MAP_GROUP(SEVEN_ISLAND_TANOBY_RUINS_MONEAN_CHAMBER), MAP_NUM(SEVEN_ISLAND_TANOBY_RUINS_MONEAN_CHAMBER), 7 } }; -void sub_812B1E0(u8 a0) +void HelpSystem_SetSomeVariable(u8 a0) { - gUnknown_203B0EC = a0; + sSomeVariable = a0; } void HelpSystem_SetSomeVariable2(u8 a0) { - switch (gUnknown_203B0EC) + switch (sSomeVariable) { case 23: case 24: @@ -895,37 +895,37 @@ void HelpSystem_SetSomeVariable2(u8 a0) break; // fallthrough default: - gUnknown_203B0EC = a0; + sSomeVariable = a0; break; } } -void sub_812B220(void) +void Special_SetSomeVariable(void) { - gUnknown_203B0EC = gSpecialVar_0x8004; + sSomeVariable = gSpecialVar_0x8004; } -void sub_812B234(void) +void HelpSystem_BackupSomeVariable(void) { - gUnknown_3005EA0 = gUnknown_203B0EC; + gSomeVariableBackup = sSomeVariable; } -void sub_812B248(void) +void HelpSystem_RestoreSomeVariable(void) { - gUnknown_203B0EC = gUnknown_3005EA0; + sSomeVariable = gSomeVariableBackup; } -static bool32 sub_812B25C(void) +static bool32 IsInMartMap(void) { - return sub_812B27C(gUnknown_845C594); + return IsCurrentMapInArray(sMartMaps); } -static bool32 sub_812B26C(void) +static bool32 IsInGymMap(void) { - return sub_812B27C(gUnknown_845C5BC); + return IsCurrentMapInArray(sGymMaps); } -static bool32 sub_812B27C(const u16 * mapIdxs) +static bool32 IsCurrentMapInArray(const u16 * mapIdxs) { u16 mapIdx = (gSaveBlock1Ptr->location.mapGroup << 8) + gSaveBlock1Ptr->location.mapNum; s32 i; @@ -939,18 +939,18 @@ static bool32 sub_812B27C(const u16 * mapIdxs) return FALSE; } -static bool8 sub_812B2C4(void) +static bool8 IsInDungeonMap(void) { u8 i, j; for (i = 0; i < 16; i++) { - for (j = 0; j < gUnknown_845C5CE[i][2]; j++) + for (j = 0; j < sDungeonMaps[i][2]; j++) { if ( - gUnknown_845C5CE[i][0] == gSaveBlock1Ptr->location.mapGroup - && gUnknown_845C5CE[i][1] + j == gSaveBlock1Ptr->location.mapNum - && (i != 15 || FlagGet(FLAG_0x849) == TRUE) + sDungeonMaps[i][0] == gSaveBlock1Ptr->location.mapGroup + && sDungeonMaps[i][1] + j == gSaveBlock1Ptr->location.mapNum + && (i != 15 /* TANOBY */ || FlagGet(FLAG_0x849) == TRUE) ) return TRUE; } @@ -964,7 +964,7 @@ void sub_812B35C(void) sub_812B4B8(); if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING)) HelpSystem_SetSomeVariable2(0x16); - else if (sub_812B2C4()) + else if (IsInDungeonMap()) HelpSystem_SetSomeVariable2(0x15); else if (is_light_level_8_or_9(gMapHeader.mapType)) { @@ -974,9 +974,9 @@ void sub_812B35C(void) HelpSystem_SetSomeVariable2(0x0F); else if (IsCurMapPokeCenter() == TRUE) HelpSystem_SetSomeVariable2(0x10); - else if (sub_812B25C() == TRUE) + else if (IsInMartMap() == TRUE) HelpSystem_SetSomeVariable2(0x11); - else if (sub_812B26C() == TRUE) + else if (IsInGymMap() == TRUE) HelpSystem_SetSomeVariable2(0x12); else HelpSystem_SetSomeVariable2(0x13); @@ -1055,7 +1055,7 @@ static void sub_812B520(struct HelpSystemListMenu * a0, struct ListMenuItem * a1 u8 r4 = 0; for (i = 0; i < 6; i++) { - if (gUnknown_845C4B6[gUnknown_203B0EC][gUnknown_845C4B0[i]] == 1) + if (gUnknown_845C4B6[sSomeVariable][gUnknown_845C4B0[i]] == 1) { a1[r4].label = gUnknown_845B080[gUnknown_845C4B0[i]]; a1[r4].index = gUnknown_845C4B0[i]; @@ -1085,7 +1085,7 @@ static void sub_812B5A8(struct HelpSystemListMenu * a0, struct ListMenuItem * a1 static void sub_812B614(struct HelpSystemListMenu * a0, struct ListMenuItem * a1) { u8 r6 = 0; - const u8 * r3 = gUnknown_845B9E0[gUnknown_203B0EC * 5 + gUnknown_3005E9C[1]]; + const u8 * r3 = gUnknown_845B9E0[sSomeVariable * 5 + gUnknown_3005E9C[1]]; u8 i; for (i = 0; r3[i] != 0xFF; i++) { diff --git a/src/item_use.c b/src/item_use.c index 9657488f3..3a189d84a 100644 --- a/src/item_use.c +++ b/src/item_use.c @@ -191,7 +191,7 @@ void sub_80A1208(void) struct MailStruct mail; mail.itemId = gSpecialVar_ItemId; - sub_80BEBEC(&mail, ReturnToBagFromKeyItem, 0); + sub_80BEBEC(&mail, CB2_BagMenuFromStartMenu, 0); } void FieldUseFunc_MachBike(u8 taskId) @@ -404,7 +404,7 @@ void FieldUseFunc_TmCase(u8 taskId) void InitTMCaseFromBag(void) { - InitTMCase(0, ReturnToBagFromKeyItem, 0); + InitTMCase(0, CB2_BagMenuFromStartMenu, 0); } void Task_InitTMCaseFromField(u8 taskId) @@ -435,7 +435,7 @@ void FieldUseFunc_BerryPouch(u8 taskId) void InitBerryPouchFromBag(void) { - InitBerryPouch(BERRYPOUCH_FROMFIELD, ReturnToBagFromKeyItem, 0); + InitBerryPouch(BERRYPOUCH_FROMFIELD, CB2_BagMenuFromStartMenu, 0); } void Task_InitBerryPouchFromField(u8 taskId) @@ -478,7 +478,7 @@ void FieldUseFunc_TeachyTv(u8 taskId) void InitTeachyTvFromBag(void) { - InitTeachyTvController(0, ReturnToBagFromKeyItem); + InitTeachyTvController(0, CB2_BagMenuFromStartMenu); } void Task_InitTeachyTvFromField(u8 taskId) @@ -608,7 +608,7 @@ void FieldUseFunc_TownMap(u8 taskId) void sub_80A1CAC(void) { - sub_80BFF50(0, ReturnToBagFromKeyItem); + sub_80BFF50(0, CB2_BagMenuFromStartMenu); } void sub_80A1CC0(u8 taskId) @@ -640,7 +640,7 @@ void FieldUseFunc_FameChecker(u8 taskId) void sub_80A1D58(void) { - UseFameChecker(ReturnToBagFromKeyItem); + UseFameChecker(CB2_BagMenuFromStartMenu); } void sub_80A1D68(u8 taskId) diff --git a/src/menu2.c b/src/menu2.c index c6d5ab094..221f84318 100644 --- a/src/menu2.c +++ b/src/menu2.c @@ -485,7 +485,7 @@ void AddTextPrinterParameterized5(u8 windowId, u8 fontId, const u8 *str, u8 x, u AddTextPrinter(&printer, speed, callback); } -void sub_812E6DC(u8 windowId, const u8 * src, u16 x, u16 y) +void Menu_PrintFormatIntlPlayerName(u8 windowId, const u8 * src, u16 x, u16 y) { s32 i; diff --git a/src/mystery_event_script.c b/src/mystery_event_script.c index 89df1ee34..26cbdb145 100644 --- a/src/mystery_event_script.c +++ b/src/mystery_event_script.c @@ -247,7 +247,7 @@ bool8 MEScrCmd_givepokemon(struct ScriptContext *ctx) if (species == SPECIES_EGG) StringCopyN(gStringVar1, gText_EggNickname, POKEMON_NAME_LENGTH + 1); else - StringCopyN(gStringVar1, gText_Pokemon, POKEMON_NAME_LENGTH + 1); + StringCopyN(gStringVar1, gStartMenuText_Pokemon, POKEMON_NAME_LENGTH + 1); if (gPlayerPartyCount == PARTY_SIZE) { diff --git a/src/new_menu_helpers.c b/src/new_menu_helpers.c index 9d2a5c883..f82dbe9c6 100644 --- a/src/new_menu_helpers.c +++ b/src/new_menu_helpers.c @@ -395,7 +395,7 @@ void ResetBg0(void) ChangeBgX(0, 0, 0); ChangeBgY(0, 0, 0); DeactivateAllTextPrinters(); - sub_80F6E9C(); + LoadStdWindowFrameGfx(); } u16 RunTextPrinters_CheckPrinter0Active(void) @@ -452,7 +452,7 @@ void AddTextPrinterWithCustomSpeedForMessage(bool8 allowSkippingDelayWithButtonP AddTextPrinterParameterized2(0, 2, gStringVar4, speed, NULL, 2, 1, 3); } -void sub_80F6E9C(void) +void LoadStdWindowFrameGfx(void) { if (gUnknown_203ADFA == 2) { @@ -644,7 +644,7 @@ static u16 GetStdPalColor(u8 colorNum) void DisplayItemMessageOnField(u8 taskId, u8 bgId, const u8 *string, TaskFunc callback) { - sub_80F6E9C(); + LoadStdWindowFrameGfx(); DisplayMessageAndContinueTask(taskId, 0, DLG_WINDOW_BASE_TILE_NUM, DLG_WINDOW_PALETTE_NUM, bgId, GetTextSpeedSetting(), string, callback); CopyWindowToVram(0, 3); } @@ -667,7 +667,7 @@ u8 GetTextSpeedSetting(void) return gUnknown_841F428[gSaveBlock2Ptr->optionsTextSpeed]; } -u8 sub_80F78E0(u8 height) +u8 CreateStartMenuWindow(u8 height) { if (sStartMenuWindowId == 0xFF) { @@ -702,15 +702,15 @@ u16 GetStdWindowBaseTileNum(void) return STD_WINDOW_BASE_TILE_NUM; } -void sub_80F7974(const u8 * text) +void DrawHelpMessageWindowWithText(const u8 * text) { - sub_814FE6C(sub_8112EB4(), DLG_WINDOW_BASE_TILE_NUM, 0x10 * DLG_WINDOW_PALETTE_NUM); - sub_8113018(text, 2); + sub_814FE6C(CreateHelpMessageWindow(), DLG_WINDOW_BASE_TILE_NUM, 0x10 * DLG_WINDOW_PALETTE_NUM); + PrintTextOnHelpMessageWindow(text, 2); } -void sub_80F7998(void) +void DestroyHelpMessageWindow_(void) { - sub_8112EDC(2); + DestroyHelpMessageWindow(2); } void sub_80F79A4(void) diff --git a/src/player_pc.c b/src/player_pc.c index 7197f65f1..b1929b9ed 100644 --- a/src/player_pc.c +++ b/src/player_pc.c @@ -154,7 +154,7 @@ void sub_80EB6AC(void) u8 taskId; gPlayerPcMenuManager.unk_9 = 0; - sub_812B234(); + HelpSystem_BackupSomeVariable(); sItemOrder = gUnknown_8402200; sTopMenuItemCount = 3; taskId = CreateTask(TaskDummy, 0); @@ -166,7 +166,7 @@ void sub_80EB6FC(void) u8 taskId; gPlayerPcMenuManager.unk_9 = 1; - sub_812B234(); + HelpSystem_BackupSomeVariable(); sItemOrder = gUnknown_8402203; sTopMenuItemCount = 3; taskId = CreateTask(TaskDummy, 0); @@ -215,7 +215,7 @@ static void Task_TopMenuHandleInput(u8 taskId) static void Task_ReturnToTopMenu(u8 taskId) { - sub_812B248(); + HelpSystem_RestoreSomeVariable(); DisplayItemMessageOnField(taskId, 2, gText_WhatWouldYouLikeToDo, Task_DrawPlayerPcTopMenu); } @@ -343,7 +343,7 @@ static void Task_ReturnToItemStorageSubmenu(u8 taskId) static void CB2_ReturnFromDepositMenu(void) { u8 taskId; - sub_80F6E9C(); + LoadStdWindowFrameGfx(); DrawDialogueFrame(0, TRUE); taskId = CreateTask(Task_ReturnToItemStorageSubmenu, 0); Task_CreateItemStorageSubmenu(taskId, 1); @@ -372,7 +372,7 @@ static void Task_PlayerPcWithdrawItem(u8 taskId) static void CB2_ReturnFromWithdrawMenu(void) { u8 taskId; - sub_80F6E9C(); + LoadStdWindowFrameGfx(); DrawDialogueFrame(0, TRUE); taskId = CreateTask(Task_ReturnToItemStorageSubmenu, 0); Task_CreateItemStorageSubmenu(taskId, 0); @@ -584,7 +584,7 @@ static void CB2_ReturnToMailbox(void) HelpSystem_SetSomeVariable2(34); else HelpSystem_SetSomeVariable2(30); - sub_80F6E9C(); + LoadStdWindowFrameGfx(); taskId = CreateTask(Task_WaitFadeAndReturnToMailboxPcInputHandler, 0); if (MailboxPC_InitBuffers(gPlayerPcMenuManager.count) == TRUE) Task_DrawMailboxPcMenu(taskId); @@ -700,7 +700,7 @@ static void CB2_ReturnToMailboxPc_UpdateScrollVariables(void) } } Task_SetPageItemVars(taskId); - sub_80F6E9C(); + LoadStdWindowFrameGfx(); if (MailboxPC_InitBuffers(gPlayerPcMenuManager.count) == TRUE) Task_DrawMailboxPcMenu(taskId); else diff --git a/src/quest_log.c b/src/quest_log.c index c8bd19174..ef8f56249 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -92,188 +92,185 @@ struct UnkStruct_203AE98 * gUnknown_3005E94; static struct UnkStruct_300201C * gUnknown_300201C; static u16 gUnknown_3002020; -EWRAM_DATA u8 gUnknown_203ADF8 = 0; +static EWRAM_DATA u8 gUnknown_203ADF8 = 0; static EWRAM_DATA u8 sNumScenes = 0; EWRAM_DATA u8 gUnknown_203ADFA = 0; -EWRAM_DATA u16 gUnknown_203ADFC = 0; -EWRAM_DATA u8 gUnknown_203ADFE[3] = {0}; -EWRAM_DATA u16 * gUnknown_203AE04 = NULL; -EWRAM_DATA u16 * gUnknown_203AE08 = NULL; -EWRAM_DATA u16 * gUnknown_203AE0C[32] = {NULL}; -EWRAM_DATA void (* gUnknown_203AE8C)(void) = NULL; -EWRAM_DATA u16 *gUnknown_203AE90 = NULL; -EWRAM_DATA struct UnkStruct_203AE94 gUnknown_203AE94 = {0}; -EWRAM_DATA struct UnkStruct_203AE98 gUnknown_203AE98[32] = {0}; -EWRAM_DATA u16 gUnknown_203AF98 = 0; -EWRAM_DATA u8 gUnknown_203AF9A[64][2] = {{0}}; -EWRAM_DATA u16 gUnknown_203B01A = 0; -EWRAM_DATA u16 gUnknown_203B01C = 0; -EWRAM_DATA u16 gUnknown_203B01E = 0; -EWRAM_DATA u8 gUnknown_203B020 = 0; -EWRAM_DATA struct UnkStruct_203B024 gUnknown_203B024 = {0}; -EWRAM_DATA struct UnkStruct_203B044 gUnknown_203B044 = {0}; -EWRAM_DATA u8 gUnknown_203B048 = 0; -EWRAM_DATA u8 gUnknown_203B049 = 0; -EWRAM_DATA u8 gUnknown_203B04A = 0; -EWRAM_DATA u8 gUnknown_203B04B = 0; - -void sub_8110A00(void); -void sub_8110A3C(void); -void sub_8110BB0(u8); -void sub_8110BE8(u8); -void sub_8110E3C(void); -void sub_8110D94(void); -void sub_8110E20(void); -void sub_8110D48(u8); -u8 sub_8110E68(struct UnkStruct_203AE98 *); -void sub_8110F90(u8); -void sub_8111150(u8); -void sub_8111368(void); -void sub_81115E8(void); -u16 sub_8111618(void); -u16 sub_811164C(void); -void sub_8111688(void); -void sub_811175C(u8, struct UnkStruct_203AE98 *); -void sub_81118F4(s8); -void sub_8111914(void); -void sub_8111984(void); -void sub_8111A34(u8); -void sub_8111AD8(void); -void sub_8111B80(void); -u8 sub_8111BD4(void); -void sub_8111D10(void); -void sub_8111D90(u8); -void sub_8111E20(void); -void sub_8111E64(s8); -void sub_8111E84(void); -bool8 sub_8111F60(void); -void sub_8111F8C(u8); -void sub_8111FCC(u8); -void sub_8112044(u8); -void sub_81120AC(u8); -bool8 sub_81121D8(u8); -void sub_811229C(void); -void sub_8112364(void); -void sub_8112888(u8); -void sub_8112940(u8, struct UnkStruct_203AE98 *, u16); -u8 sub_8112CAC(void); -bool8 sub_8112CEC(void); -bool8 sub_8112D1C(void); -void sub_8113078(struct Var4038Struct *); -void sub_81130BC(struct Var4038Struct *); -u8 sub_8113194(struct Var4038Struct *); -u16 sub_81132A0(struct Var4038Struct *); -void sub_81132E0(struct Var4038Struct *); -bool16 sub_811337C(struct Var4038Struct *); -void sub_8113390(struct Var4038Struct *); -void sub_8113414(struct LinkBattleRecords *, u8, u8); -void sub_81134CC(struct Var4038Struct *); -bool8 sub_8113508(struct Var4038Struct * ); -void sub_8113524(struct Var4038Struct *); -bool8 sub_81136D4(void); -bool8 sub_8113778(u16, u16 *); -bool8 sub_81137E4(u16, u16 *); -u16 * sub_8113828(u16, u16 *); -bool8 sub_81138A0(u16, u16 *); -bool8 sub_8113954(u16, u16 *); -void sub_8113A1C(u16); -void sub_811381C(void); -void sub_81138F8(void); -bool8 sub_8113A44(u16, u16 *); -u16 * sub_8113A78(u16 *, u16 **); -void sub_8113ABC(u16 *); -bool8 sub_8113AE8(u16 *); -bool8 sub_8113B44(u16 *); -void sub_8113B88(void); -void sub_8113B94(u16); -void sub_8113BD8(void); -u16 * sub_8113BF4(u16 *); -u16 * sub_8113C20(u16 *, struct UnkStruct_203AE98 *); -u16 * sub_8113C5C(u16 *, u16); -u16 * sub_8113C8C(u16 *, struct UnkStruct_203AE98 *); -u16 * sub_8113CC8(u16 *, struct UnkStruct_203AE98 *); -u16 * sub_8113D08(u16 *, struct UnkStruct_203AE98 *); -u16 * sub_8113D48(u16 *, struct UnkStruct_203AE98 *); -u16 * sub_8113D94(u16 *, struct UnkStruct_203AE98 *); -u16 * sub_8113F14(u16 *, const u16 *); -const u16 * sub_8113F3C(const u16 *); -u16 * sub_8113F80(u16 *, const u16 *); -const u16 * sub_8113FBC(const u16 *); -u16 * sub_8114174(u16 *, const u16 *); -const u16 * sub_8114188(const u16 *); -u16 * sub_81141D0(u16 *, const u16 *); -const u16 * sub_81141E4(const u16 *); -u16 * sub_811422C(u16 *, const u16 *); -const u16 * sub_8114240(const u16 *); -u16 * sub_8114288(u16 *, const u16 *); -const u16 * sub_811429C(const u16 *); -u16 * sub_8114310(u16 *, const u16 *); -const u16 * sub_8114324(const u16 *); -u16 * sub_8114380(u16 *, const u16 *); -const u16 * sub_8114394(const u16 *); -u16 * sub_81143F0(u16 *, const u16 *); -const u16 * sub_811443C(const u16 *); -u16 * sub_811445C(u16 *, const u16 *); -const u16 * sub_811448C(const u16 *); -u16 * sub_81144EC(u16 *, const u16 *); -const u16 * sub_8114518(const u16 *); -u16 * sub_8114578(u16 *, const u16 *); -const u16 * sub_81145A4(const u16 *); -u16 * sub_8114604(u16 *, const u16 *); -const u16 * sub_811464C(const u16 *); -u16 * sub_8114710(u16 *, const u16 *); -const u16 * sub_8114724(const u16 *); -u16 * sub_8114744(u16 *, const u16 *); -const u16 * sub_8114758(const u16 *); -u16 * sub_8114778(u16 *, const u16 *); -const u16 * sub_81147A8(const u16 *); -u16 * sub_8114808(u16 *, const u16 *); -const u16 * sub_8114834(const u16 *); -u16 * sub_811488C(u16 *, const u16 *); -const u16 * sub_81148BC(const u16 *); -u16 * sub_8114918(u16 *, const u16 *); -const u16 * sub_8114944(const u16 *); -u16 * sub_8114990(u16 *, const u16 *); -const u16 * sub_81149D0(const u16 *); -u16 * sub_8114A1C(u16 *, const u16 *); -const u16 * sub_8114A4C(const u16 *); -u16 * sub_8114AA0(u16 *, const u16 *); -const u16 * sub_8114AC8(const u16 *); -u16 * sub_8114B0C(u16 *, const u16 *); -const u16 * sub_8114B34(const u16 *); -u16 * sub_8114B78(u16 *, const u16 *); -const u16 * sub_8114BA0(const u16 *); -u16 * sub_8114BE4(u16 *, const u16 *); -const u16 * sub_8114C0C(const u16 *); -u16 * sub_8114C68(u16 *, const u16 *); -const u16 * sub_8114C8C(const u16 *); -u16 * sub_8114CC0(u16 *, const u16 *); -const u16 * sub_8114CE4(const u16 *); -u16 * sub_8114D4C(u16 *, const u16 *); -const u16 * sub_8114D68(const u16 *); -u16 * sub_8114DE8(u16 *, const u16 *); -const u16 * sub_8114E68(const u16 *); -bool8 sub_8114FBC(u16); -u16 * sub_8114FF0(u16 *, const u16 *); -const u16 * sub_811500C(const u16 *); -u16 * sub_8115078(u16 *, const u16 *); -const u16 * sub_81150CC(const u16 *); -u16 * sub_81151C0(u16 *, const u16 *); -const u16 * sub_81151DC(const u16 *); -u16 * sub_8115280(u16 *, const u16 *); -const u16 * sub_81152BC(const u16 *); -bool8 sub_81153A8(u16, u16 *); -bool8 sub_81153E4(u16, u16 *); -u16 * sub_8115410(u16 *, const u16 *); -const u16 * sub_8115460(const u16 *); -u16 * sub_81154DC(u16 *, const u16 *); -const u16 * sub_8115518(const u16 *); -u16 * sub_81155A4(u16 *, const u16 *); -const u16 * sub_81155E0(const u16 *); -u16 * sub_81156D8(u16 *, const u16 *); -const u16 * sub_8115700(const u16 *); -u16 * sub_81157DC(u16 *, const u16 *); -const u16 * sub_8115800(const u16 *); +static EWRAM_DATA u16 gUnknown_203ADFC = 0; +static EWRAM_DATA u8 gUnknown_203ADFE[3] = {0}; +static EWRAM_DATA u16 * gUnknown_203AE04 = NULL; +static EWRAM_DATA u16 * gUnknown_203AE08 = NULL; +static EWRAM_DATA u16 * gUnknown_203AE0C[32] = {NULL}; +static EWRAM_DATA void (* gUnknown_203AE8C)(void) = NULL; +static EWRAM_DATA u16 *gUnknown_203AE90 = NULL; +static EWRAM_DATA struct UnkStruct_203AE94 gUnknown_203AE94 = {0}; +static EWRAM_DATA struct UnkStruct_203AE98 gUnknown_203AE98[32] = {0}; +static EWRAM_DATA u16 gUnknown_203AF98 = 0; +static EWRAM_DATA u8 gUnknown_203AF9A[64][2] = {{0}}; +static EWRAM_DATA u16 gUnknown_203B01A = 0; +static EWRAM_DATA u16 gUnknown_203B01C = 0; +static EWRAM_DATA u16 gUnknown_203B01E = 0; +static EWRAM_DATA u8 sHelpMessageWindowId = 0; +static EWRAM_DATA struct UnkStruct_203B024 gUnknown_203B024 = {0}; +static EWRAM_DATA struct UnkStruct_203B044 gUnknown_203B044 = {0}; +static EWRAM_DATA u8 gUnknown_203B048 = 0; +static EWRAM_DATA u8 gUnknown_203B049 = 0; +static EWRAM_DATA u8 gUnknown_203B04A = 0; +static EWRAM_DATA u8 gUnknown_203B04B = 0; + +static void sub_8110A00(void); +static void sub_8110A3C(void); +static void sub_8110BB0(u8); +static void sub_8110BE8(u8); +static void sub_8110E3C(void); +static void sub_8110D94(void); +static void sub_8110E20(void); +static void sub_8110D48(u8); +static u8 sub_8110E68(struct UnkStruct_203AE98 *); +static void sub_8110F90(u8); +static void sub_8111150(u8); +static void sub_8111368(void); +static void sub_81115E8(void); +static u16 sub_8111618(void); +static u16 sub_811164C(void); +static void sub_8111688(void); +static void sub_811175C(u8, struct UnkStruct_203AE98 *); +static void sub_81118F4(s8); +static void sub_8111914(void); +static void sub_8111984(void); +static void sub_8111A34(u8); +static void sub_8111AD8(void); +static void sub_8111B80(void); +static u8 sub_8111BD4(void); +static void sub_8111D10(void); +static void sub_8111D90(u8); +static void sub_8111E20(void); +static void sub_8111E64(s8); +static void sub_8111E84(void); +static bool8 sub_8111F60(void); +static void sub_8111F8C(u8); +static void sub_8111FCC(u8); +static void sub_8112044(u8); +static void sub_81120AC(u8); +static bool8 sub_81121D8(u8); +static void sub_811229C(void); +static void sub_8112888(u8); +static void sub_8112940(u8, struct UnkStruct_203AE98 *, u16); +static bool8 sub_8112CEC(void); +static bool8 sub_8112D1C(void); +static void sub_8113078(struct Var4038Struct *); +static void sub_81130BC(struct Var4038Struct *); +static u8 sub_8113194(struct Var4038Struct *); +static u16 sub_81132A0(struct Var4038Struct *); +static void sub_81132E0(struct Var4038Struct *); +static bool16 sub_811337C(struct Var4038Struct *); +static void sub_8113390(struct Var4038Struct *); +static void sub_8113414(struct LinkBattleRecords *, u8, u8); +static void sub_81134CC(struct Var4038Struct *); +static bool8 sub_8113508(struct Var4038Struct * ); +static void sub_8113524(struct Var4038Struct *); +static bool8 sub_81136D4(void); +static bool8 sub_8113778(u16, u16 *); +static bool8 sub_81137E4(u16, u16 *); +static u16 * sub_8113828(u16, u16 *); +static bool8 sub_81138A0(u16, u16 *); +static bool8 sub_8113954(u16, u16 *); +static void sub_8113A1C(u16); +static void sub_811381C(void); +static bool8 sub_8113A44(u16, u16 *); +static u16 * sub_8113A78(u16 *, u16 **); +static void sub_8113ABC(u16 *); +static bool8 sub_8113AE8(u16 *); +static bool8 sub_8113B44(u16 *); +static void sub_8113B88(void); +static void sub_8113B94(u16); +static void sub_8113BD8(void); +static u16 * sub_8113BF4(u16 *); +static u16 * sub_8113C20(u16 *, struct UnkStruct_203AE98 *); +static u16 * sub_8113C5C(u16 *, u16); +static u16 * sub_8113C8C(u16 *, struct UnkStruct_203AE98 *); +static u16 * sub_8113CC8(u16 *, struct UnkStruct_203AE98 *); +static u16 * sub_8113D08(u16 *, struct UnkStruct_203AE98 *); +static u16 * sub_8113D48(u16 *, struct UnkStruct_203AE98 *); +static u16 * sub_8113D94(u16 *, struct UnkStruct_203AE98 *); +static u16 * sub_8113F14(u16 *, const u16 *); +static const u16 * sub_8113F3C(const u16 *); +static u16 * sub_8113F80(u16 *, const u16 *); +static const u16 * sub_8113FBC(const u16 *); +static u16 * sub_8114174(u16 *, const u16 *); +static const u16 * sub_8114188(const u16 *); +static u16 * sub_81141D0(u16 *, const u16 *); +static const u16 * sub_81141E4(const u16 *); +static u16 * sub_811422C(u16 *, const u16 *); +static const u16 * sub_8114240(const u16 *); +static u16 * sub_8114288(u16 *, const u16 *); +static const u16 * sub_811429C(const u16 *); +static u16 * sub_8114310(u16 *, const u16 *); +static const u16 * sub_8114324(const u16 *); +static u16 * sub_8114380(u16 *, const u16 *); +static const u16 * sub_8114394(const u16 *); +static u16 * sub_81143F0(u16 *, const u16 *); +static const u16 * sub_811443C(const u16 *); +static u16 * sub_811445C(u16 *, const u16 *); +static const u16 * sub_811448C(const u16 *); +static u16 * sub_81144EC(u16 *, const u16 *); +static const u16 * sub_8114518(const u16 *); +static u16 * sub_8114578(u16 *, const u16 *); +static const u16 * sub_81145A4(const u16 *); +static u16 * sub_8114604(u16 *, const u16 *); +static const u16 * sub_811464C(const u16 *); +static u16 * sub_8114710(u16 *, const u16 *); +static const u16 * sub_8114724(const u16 *); +static u16 * sub_8114744(u16 *, const u16 *); +static const u16 * sub_8114758(const u16 *); +static u16 * sub_8114778(u16 *, const u16 *); +static const u16 * sub_81147A8(const u16 *); +static u16 * sub_8114808(u16 *, const u16 *); +static const u16 * sub_8114834(const u16 *); +static u16 * sub_811488C(u16 *, const u16 *); +static const u16 * sub_81148BC(const u16 *); +static u16 * sub_8114918(u16 *, const u16 *); +static const u16 * sub_8114944(const u16 *); +static u16 * sub_8114990(u16 *, const u16 *); +static const u16 * sub_81149D0(const u16 *); +static u16 * sub_8114A1C(u16 *, const u16 *); +static const u16 * sub_8114A4C(const u16 *); +static u16 * sub_8114AA0(u16 *, const u16 *); +static const u16 * sub_8114AC8(const u16 *); +static u16 * sub_8114B0C(u16 *, const u16 *); +static const u16 * sub_8114B34(const u16 *); +static u16 * sub_8114B78(u16 *, const u16 *); +static const u16 * sub_8114BA0(const u16 *); +static u16 * sub_8114BE4(u16 *, const u16 *); +static const u16 * sub_8114C0C(const u16 *); +static u16 * sub_8114C68(u16 *, const u16 *); +static const u16 * sub_8114C8C(const u16 *); +static u16 * sub_8114CC0(u16 *, const u16 *); +static const u16 * sub_8114CE4(const u16 *); +static u16 * sub_8114D4C(u16 *, const u16 *); +static const u16 * sub_8114D68(const u16 *); +static u16 * sub_8114DE8(u16 *, const u16 *); +static const u16 * sub_8114E68(const u16 *); +static bool8 sub_8114FBC(u16); +static u16 * sub_8114FF0(u16 *, const u16 *); +static const u16 * sub_811500C(const u16 *); +static u16 * sub_8115078(u16 *, const u16 *); +static const u16 * sub_81150CC(const u16 *); +static u16 * sub_81151C0(u16 *, const u16 *); +static const u16 * sub_81151DC(const u16 *); +static u16 * sub_8115280(u16 *, const u16 *); +static const u16 * sub_81152BC(const u16 *); +static bool8 sub_81153A8(u16, u16 *); +static bool8 sub_81153E4(u16, u16 *); +static u16 * sub_8115410(u16 *, const u16 *); +static const u16 * sub_8115460(const u16 *); +static u16 * sub_81154DC(u16 *, const u16 *); +static const u16 * sub_8115518(const u16 *); +static u16 * sub_81155A4(u16 *, const u16 *); +static const u16 * sub_81155E0(const u16 *); +static u16 * sub_81156D8(u16 *, const u16 *); +static const u16 * sub_8115700(const u16 *); +static u16 * sub_81157DC(u16 *, const u16 *); +static const u16 * sub_8115800(const u16 *); void sub_8115834(u8 *); extern const u8 gUnknown_841A155[]; @@ -404,17 +401,17 @@ extern const u8 gUnknown_841B277[]; extern const u8 gUnknown_8418C1B[]; -const struct WindowTemplate gUnknown_845661C[3] = { +static const struct WindowTemplate gUnknown_845661C[3] = { { 0, 0, 0, 30, 2, 15, 0x0e9 }, { 0, 0, 18, 30, 2, 15, 0x0ad }, { 0, 0, 14, 30, 6, 15, 0x14c } }; -const u8 gUnknown_8456634[3] = {15, 1, 12}; +static const u8 gUnknown_8456634[3] = {15, 1, 12}; -const u16 gUnknown_8456638[] = INCBIN_U16("data/graphics/unknown_8456638.bin"); +static const u16 gUnknown_8456638[] = INCBIN_U16("data/graphics/unknown_8456638.bin"); -const u8 gUnknown_8456698[] = {17, 10, 3}; +static const u8 gUnknown_8456698[] = {17, 10, 3}; void sub_8110840(void * oldPointer) { @@ -493,7 +490,7 @@ void sub_81109CC(u8 a0) gUnknown_203AE8C = sub_8110A3C; } -void sub_8110A00(void) +static void sub_8110A00(void) { if (sub_8110E68(gUnknown_203AE98) != 1) { @@ -504,7 +501,7 @@ void sub_8110A00(void) } } -void sub_8110A3C(void) +static void sub_8110A3C(void) { if (gUnknown_203AE94.unk_0_0 == 2) gUnknown_203AE94.unk_0_0 = 0; @@ -556,7 +553,7 @@ void sub_8110AEC(u16 a0) sub_81109CC(1); } -void sub_8110BB0(u8 a0) +static void sub_8110BB0(u8 a0) { struct QuestLog * questLog = &gSaveBlock1Ptr->questLog[a0]; questLog->unk_001 = gSaveBlock1Ptr->location.mapGroup; @@ -567,7 +564,7 @@ void sub_8110BB0(u8 a0) } #ifdef NONMATCHING -void sub_8110BE8(u8 a0) +static void sub_8110BE8(u8 a0) { struct QuestLog * questLog = &gSaveBlock1Ptr->questLog[a0]; u16 i; // r6 @@ -602,7 +599,7 @@ void sub_8110BE8(u8 a0) } #else NAKED -void sub_8110BE8(u8 a0) +static void sub_8110BE8(u8 a0) { asm_unified("\tpush {r4-r7,lr}\n" "\tmov r7, r10\n" @@ -767,7 +764,7 @@ void sub_8110BE8(u8 a0) } #endif // NONMATCHING -void sub_8110D48(u8 a0) +static void sub_8110D48(u8 a0) { struct QuestLog * questLog = &gSaveBlock1Ptr->questLog[a0]; @@ -775,7 +772,7 @@ void sub_8110D48(u8 a0) CpuCopy16(gSaveBlock1Ptr->vars, questLog->vars, VARS_COUNT * sizeof(u16)); } -void sub_8110D94(void) +static void sub_8110D94(void) { u16 i, j; u16 sp0[4]; @@ -794,19 +791,19 @@ void sub_8110D94(void) } } -void sub_8110E20(void) +static void sub_8110E20(void) { VarSet(VAR_0x40AE, gSaveBlock1Ptr->mapDataId); } -void sub_8110E3C(void) +static void sub_8110E3C(void) { sub_8113BF4(gUnknown_203AE08); if (++gUnknown_203ADF8 > 3) gUnknown_203ADF8 = 0; } -bool8 sub_8110E68(struct UnkStruct_203AE98 * a0) +static bool8 sub_8110E68(struct UnkStruct_203AE98 * a0) { u16 i; @@ -865,7 +862,7 @@ void TrySetUpQuestLogScenes_ElseContinueFromSave(u8 taskId) } } -void sub_8110F90(u8 unused) +static void sub_8110F90(u8 unused) { gSaveBlock1Ptr->location.mapGroup = 3; gSaveBlock1Ptr->location.mapNum = 19; @@ -937,7 +934,7 @@ void sub_8111134(void) CopyWindowToVram(gUnknown_203ADFE[1], 1); } -void sub_8111150(u8 a0) +static void sub_8111150(u8 a0) { struct QuestLog *questLog = &gSaveBlock1Ptr->questLog[a0]; u16 i; @@ -982,7 +979,7 @@ void sub_8111274(u8 a0, u8 a1) } } -void sub_8111368(void) +static void sub_8111368(void) { gUnknown_203ADFA = 2; sub_806E6FC(); @@ -1091,14 +1088,14 @@ void sub_8111438(void) Free(r9); } -void sub_81115E8(void) +static void sub_81115E8(void) { u16 r4 = sub_8111618(); u16 r1 = sub_811164C(); VarSet(VAR_0x4027, (r4 << 12) + r1); } -u16 sub_8111618(void) +static u16 sub_8111618(void) { u16 count = 0; u16 i; @@ -1112,7 +1109,7 @@ u16 sub_8111618(void) return count; } -u16 sub_811164C(void) +static u16 sub_811164C(void) { u16 count = 0; u16 i, j; @@ -1129,7 +1126,7 @@ u16 sub_811164C(void) return count; } -void sub_8111688(void) +static void sub_8111688(void) { u16 i, j; u16 sp0[4]; @@ -1161,7 +1158,7 @@ void sub_8111708(void) } } -void sub_811175C(u8 a0, struct UnkStruct_203AE98 * a1) +static void sub_811175C(u8 a0, struct UnkStruct_203AE98 * a1) { u16 i; u16 *r4; @@ -1208,13 +1205,13 @@ void sub_811175C(u8 a0, struct UnkStruct_203AE98 * a1) } } -void sub_81118F4(s8 a0) +static void sub_81118F4(s8 a0) { fade_screen(1, a0); gUnknown_203AE8C = sub_8111914; } -void sub_8111914(void) +static void sub_8111914(void) { if (!gPaletteFade.active) { @@ -1232,7 +1229,7 @@ void sub_8111914(void) } } -void sub_8111984(void) +static void sub_8111984(void) { sub_806E6FC(); Save_ResetSaveCounters(); @@ -1269,7 +1266,7 @@ bool8 sub_81119D4(void (*a0)(void)) return FALSE; } -void sub_8111A34(u8 taskId) +static void sub_8111A34(u8 taskId) { void (*routine)(void); s16 * data = gTasks[taskId].data; @@ -1298,7 +1295,7 @@ void sub_8111A34(u8 taskId) } } -void sub_8111AD8(void) +static void sub_8111AD8(void) { if (gUnknown_203AE94.unk_0_0 == 1) { @@ -1327,7 +1324,7 @@ void sub_8111AD8(void) } } -void sub_8111B80(void) +static void sub_8111B80(void) { if (gUnknown_203AE94.unk_0_0 == 0) { @@ -1344,7 +1341,7 @@ void sub_8111B80(void) sub_8112888(1); } -u8 sub_8111BD4(void) +static u8 sub_8111BD4(void) { u16 i; u16 count = 0; @@ -1405,7 +1402,7 @@ void sub_8111CF0(void) sub_8111070(sNumScenes); } -void sub_8111D10(void) +static void sub_8111D10(void) { u16 i; u8 count = 0; @@ -1422,7 +1419,7 @@ void sub_8111D10(void) ScheduleBgCopyTilemapToVram(0); } -void sub_8111D90(u8 a0) +static void sub_8111D90(u8 a0) { const u16 * src = gUnknown_8456638; u16 * buffer = Alloc(0x1680); @@ -1459,7 +1456,7 @@ void sub_8111D90(u8 a0) } } -void sub_8111E20(void) +static void sub_8111E20(void) { ClearWindowTilemap(gUnknown_203ADFE[2]); FillWindowPixelRect(gUnknown_203ADFE[2], 15, 0, 0, 0xf0, 0x30); @@ -1468,13 +1465,13 @@ void sub_8111E20(void) CopyWindowToVram(gUnknown_203ADFE[1], 1); } -void sub_8111E64(s8 a0) +static void sub_8111E64(s8 a0) { fade_screen(1, a0); gUnknown_203AE8C = sub_8111E84; } -void sub_8111E84(void) +static void sub_8111E84(void) { if (!gPaletteFade.active) { @@ -1501,7 +1498,7 @@ void sub_8111F38(u16 a0, u16 a1) CpuSet(gPlttBufferUnfaded + a0, gUnknown_203AE90 + a0, a1); } -bool8 sub_8111F60(void) +static bool8 sub_8111F60(void) { LoadPalette(stdpal_get(4), 0xF0, 0x20); sub_8111070(0); @@ -1510,7 +1507,7 @@ bool8 sub_8111F60(void) return TRUE; } -void sub_8111F8C(u8 taskId) +static void sub_8111F8C(u8 taskId) { struct Task *task = &gTasks[taskId]; @@ -1524,7 +1521,7 @@ void sub_8111F8C(u8 taskId) } } -void sub_8111FCC(u8 taskId) +static void sub_8111FCC(u8 taskId) { struct Task *task = &gTasks[taskId]; @@ -1544,7 +1541,7 @@ void sub_8111FCC(u8 taskId) } } -void sub_8112044(u8 taskId) +static void sub_8112044(u8 taskId) { struct Task *task = &gTasks[taskId]; @@ -1559,7 +1556,7 @@ void sub_8112044(u8 taskId) task->data[0]++; } -void sub_81120AC(u8 taskId) +static void sub_81120AC(u8 taskId) { s16 * data = gTasks[taskId].data; u8 i; @@ -1609,7 +1606,7 @@ void sub_81120AC(u8 taskId) } } -bool8 sub_81121D8(u8 taskId) +static bool8 sub_81121D8(u8 taskId) { s16 * data = gTasks[taskId].data; @@ -1626,7 +1623,7 @@ bool8 sub_81121D8(u8 taskId) return FALSE; } -void sub_811229C(void) +static void sub_811229C(void) { u16 * buffer = Alloc(0x400); CpuCopy16(gUnknown_203AE90, buffer, 0x400); @@ -1833,7 +1830,7 @@ void sub_81127F8(struct UnkStruct_3005E90 * a0) } } -void sub_8112888(u8 a0) +static void sub_8112888(u8 a0) { switch (a0) { @@ -1875,7 +1872,7 @@ void sub_81128BC(u8 a0) } } -void sub_8112940(u8 a0, struct UnkStruct_203AE98 *a1, u16 a2) +static void sub_8112940(u8 a0, struct UnkStruct_203AE98 *a1, u16 a2) { s32 i; @@ -2218,21 +2215,21 @@ u8 sub_8112CAC(void) } } -bool8 sub_8112CEC(void) +static bool8 sub_8112CEC(void) { if (gUnknown_203AF98 >= gUnknown_3005E8C || ScriptContext2_IsEnabled() == TRUE) return TRUE; return FALSE; } -bool8 sub_8112D1C(void) +static bool8 sub_8112D1C(void) { if (gUnknown_203AF98 >= gUnknown_3005E8C) return TRUE; return FALSE; } -const struct UnkStruct_300201C gUnknown_84566A4 = { +static const struct UnkStruct_300201C gUnknown_84566A4 = { 0, FALSE, 0x7FFF @@ -2294,37 +2291,37 @@ void sub_8112E3C(u8 a0, struct UnkStruct_300201C * a1, u16 a2) const u16 gUnknown_84566A8[] = INCBIN_U16("data/graphics/unknown_84566a8.bin"); -const struct WindowTemplate gUnknown_8456928 = { +static const struct WindowTemplate sHelpMessageWindowTemplate = { 0x00, 0, 15, 30, 5, 15, 0x008F }; void MapNamePopupWindowIdSetDummy(void) { - gUnknown_203B020 = 0xFF; + sHelpMessageWindowId = 0xFF; } -u8 sub_8112EB4(void) +u8 CreateHelpMessageWindow(void) { - if (gUnknown_203B020 == 0xFF) + if (sHelpMessageWindowId == 0xFF) { - gUnknown_203B020 = AddWindow(&gUnknown_8456928); - PutWindowTilemap(gUnknown_203B020); + sHelpMessageWindowId = AddWindow(&sHelpMessageWindowTemplate); + PutWindowTilemap(sHelpMessageWindowId); } - return gUnknown_203B020; + return sHelpMessageWindowId; } -void sub_8112EDC(u8 a0) +void DestroyHelpMessageWindow(u8 a0) { - if (gUnknown_203B020 != 0xFF) + if (sHelpMessageWindowId != 0xFF) { - FillWindowPixelBuffer(gUnknown_203B020, 0x00); - ClearWindowTilemap(gUnknown_203B020); + FillWindowPixelBuffer(sHelpMessageWindowId, PIXEL_FILL(0)); + ClearWindowTilemap(sHelpMessageWindowId); if (a0) - CopyWindowToVram(gUnknown_203B020, a0); + CopyWindowToVram(sHelpMessageWindowId, a0); - RemoveWindow(gUnknown_203B020); - gUnknown_203B020 = 0xFF; + RemoveWindow(sHelpMessageWindowId); + sHelpMessageWindowId = 0xFF; } } @@ -2460,24 +2457,24 @@ void sub_8112F18(u8 a0) void sub_8112FD0(void) { - sub_8112F18(gUnknown_203B020); + sub_8112F18(sHelpMessageWindowId); } -const u8 gUnknown_8456930[3] = { +static const u8 gUnknown_8456930[3] = { 0, 10, 2 }; void sub_8112FE4(const u8 * a0) { - AddTextPrinterParameterized4(gUnknown_203B020, 0x02, 2, 5, 1, 1, gUnknown_8456930, -1, a0); + AddTextPrinterParameterized4(sHelpMessageWindowId, 0x02, 2, 5, 1, 1, gUnknown_8456930, -1, a0); } -void sub_8113018(const u8 * text, u8 mode) +void PrintTextOnHelpMessageWindow(const u8 * text, u8 mode) { sub_8112FD0(); sub_8112FE4(text); if (mode) - CopyWindowToVram(gUnknown_203B020, mode); + CopyWindowToVram(sHelpMessageWindowId, mode); } void sub_8113044(void) @@ -2491,7 +2488,7 @@ void sub_8113064(void) sub_8113078(VAR_0x4038_STRUCT); } -void sub_8113078(struct Var4038Struct * varPtr) +static void sub_8113078(struct Var4038Struct * varPtr) { if (sub_8113508(varPtr)) { @@ -2505,7 +2502,7 @@ void sub_81130A8(void) sub_81130BC(VAR_0x4038_STRUCT); } -void sub_81130BC(struct Var4038Struct * varPtr) +static void sub_81130BC(struct Var4038Struct * varPtr) { if (!varPtr->unk_0_7) { @@ -2543,11 +2540,11 @@ u8 sub_8113114(struct Var4038Struct * a0, u8 a1) return a0->unk_0_0; } -const u8 gUnknown_8456938[] = { +static const u8 gUnknown_8456938[] = { 1, 3, 5, 0, 7, 6, 4, 2 }; -u8 sub_8113194(struct Var4038Struct * a0) +static u8 sub_8113194(struct Var4038Struct * a0) { u8 i; u8 retval = 0; @@ -2568,7 +2565,7 @@ u8 sub_8113194(struct Var4038Struct * a0) return gUnknown_8456938[retval]; } -const u8 gUnknown_8456940[] = { +static const u8 gUnknown_8456940[] = { 5, 6, 3, 7, 4, 1, 0, 2 }; @@ -2602,7 +2599,7 @@ u16 sub_8113288(void) return sub_81132A0(VAR_0x4038_STRUCT); } -u16 sub_81132A0(struct Var4038Struct * a0) +static u16 sub_81132A0(struct Var4038Struct * a0) { u8 count = 0; u8 i; @@ -2621,7 +2618,7 @@ void sub_81132CC(void) sub_81132E0(VAR_0x4038_STRUCT); } -void sub_81132E0(struct Var4038Struct * a0) +static void sub_81132E0(struct Var4038Struct * a0) { u8 i = 0; u16 var_4039; @@ -2653,12 +2650,12 @@ bool16 sub_8113364(void) return sub_811337C(VAR_0x4038_STRUCT); } -bool16 sub_811337C(struct Var4038Struct * a0) +static bool16 sub_811337C(struct Var4038Struct * a0) { return (a0->unk_1 >> gSpecialVar_0x8004) & 1; } -void sub_8113390(struct Var4038Struct * a0) +static void sub_8113390(struct Var4038Struct * a0) { a0->unk_1 |= 1; a0->unk_1 |= 2; @@ -2697,7 +2694,7 @@ void sub_81133A4(void) sub_8113414(&gSaveBlock2Ptr->linkBattleRecords, r3, r2); } -void sub_8113414(struct LinkBattleRecords * a0, u8 a1, u8 a2) +static void sub_8113414(struct LinkBattleRecords * a0, u8 a1, u8 a2) { u8 * str; const u8 * src = a0->entries[a1].name; @@ -2742,7 +2739,7 @@ void sub_81134B8(void) sub_81134CC(VAR_0x4038_STRUCT); } -void sub_81134CC(struct Var4038Struct * a0) +static void sub_81134CC(struct Var4038Struct * a0) { if (VarGet(VAR_MAP_SCENE_SAFFRON_CITY_POKEMON_TRAINER_FAN_CLUB) == 2) { @@ -2754,7 +2751,7 @@ void sub_81134CC(struct Var4038Struct * a0) } } -bool8 sub_8113508(struct Var4038Struct * a0) +static bool8 sub_8113508(struct Var4038Struct * a0) { return a0->unk_0_7; } @@ -2764,7 +2761,7 @@ void sub_8113510(void) sub_8113524(VAR_0x4038_STRUCT); } -void sub_8113524(struct Var4038Struct * a0) +static void sub_8113524(struct Var4038Struct * a0) { a0->unk_0_7 = TRUE; } @@ -3092,7 +3089,7 @@ void sub_8113550(u16 a0, const u16 * a1) } #endif // NONMATCHING -bool8 sub_81136D4(void) +static bool8 sub_81136D4(void) { if (gSaveBlock1Ptr->location.mapGroup == 2 && (gSaveBlock1Ptr->location.mapNum == 1 || gSaveBlock1Ptr->location.mapNum == 2 || gSaveBlock1Ptr->location.mapNum == 3 || gSaveBlock1Ptr->location.mapNum == 4 || gSaveBlock1Ptr->location.mapNum == 5 || gSaveBlock1Ptr->location.mapNum == 6 || gSaveBlock1Ptr->location.mapNum == 7 || gSaveBlock1Ptr->location.mapNum == 8 || gSaveBlock1Ptr->location.mapNum == 9 || gSaveBlock1Ptr->location.mapNum == 10 || gSaveBlock1Ptr->location.mapNum == 11)) return TRUE; @@ -3123,7 +3120,7 @@ bool8 sub_8113748(void) return FALSE; } -bool8 sub_8113778(u16 a0, u16 * a1) +static bool8 sub_8113778(u16 a0, u16 * a1) { if (a0 == 36 || a0 == 11) return TRUE; @@ -3143,7 +3140,7 @@ bool8 sub_8113778(u16 a0, u16 * a1) return FALSE; } -bool8 sub_81137E4(u16 a0, u16 * a1) +static bool8 sub_81137E4(u16 a0, u16 * a1) { if (a0 == 34) { @@ -3158,12 +3155,12 @@ bool8 sub_81137E4(u16 a0, u16 * a1) return FALSE; } -void sub_811381C(void) +static void sub_811381C(void) { gUnknown_203B048 = 0; } -u16 * sub_8113828(u16 a0, u16 * a1) +static u16 * sub_8113828(u16 a0, u16 * a1) { if (sub_8113778(a0, a1) == TRUE) return NULL; @@ -3182,7 +3179,7 @@ u16 * sub_8113828(u16 a0, u16 * a1) return sQuestLogStorageCBs[a0](gUnknown_203AE08, a1); } -bool8 sub_81138A0(u16 a0, u16 * a1) +static bool8 sub_81138A0(u16 a0, u16 * a1) { if (a0 < 12 || a0 > 19) return FALSE; @@ -3218,7 +3215,7 @@ void sub_811390C(void) } } -bool8 sub_8113954(u16 a0, u16 * a1) +static bool8 sub_8113954(u16 a0, u16 * a1) { if (a0 != 34 && a0 != 30 && a0 != 32 && a0 != 33) return FALSE; @@ -3250,13 +3247,13 @@ void sub_81139BC(void) } } -void sub_8113A1C(u16 a0) +static void sub_8113A1C(u16 a0) { gUnknown_203AE08 = sub_8113C5C(gUnknown_203AE08, a0); gUnknown_203AF98++; } -bool8 sub_8113A44(u16 a0, u16 *a1) +static bool8 sub_8113A44(u16 a0, u16 *a1) { if (a0 != 31) return FALSE; @@ -3316,7 +3313,7 @@ static const u16 * (*const sQuestLogScriptParsingCBs[])(const u16 *) = { sub_8115800 }; -const u8 gUnknown_8456AA0[] = { +static const u8 gUnknown_8456AA0[] = { 0x08, 0x08, 0x08, @@ -3362,7 +3359,7 @@ const u8 gUnknown_8456AA0[] = { 0x06 }; -u16 * sub_8113A78(u16 * a0, u16 **a1) +static u16 * sub_8113A78(u16 * a0, u16 **a1) { u16 r2 = a0[0] & 0xfff; u16 r4 = a0[0] >> 12; @@ -3374,7 +3371,7 @@ u16 * sub_8113A78(u16 * a0, u16 **a1) return gUnknown_8456AA0[r2] + (gUnknown_8456AA0[r2] - 4) * r4 + (void *)a0; } -void sub_8113ABC(u16 * a0) +static void sub_8113ABC(u16 * a0) { u8 * r2 = (u8 *)(a0 + 2); if ((a0[0] & 0xFFF) != 35) @@ -3384,7 +3381,7 @@ void sub_8113ABC(u16 * a0) } #ifdef NONMATCHING -bool8 sub_8113AE8(u16 * a0) +static bool8 sub_8113AE8(u16 * a0) { if (a0 == NULL || a0[1] > gUnknown_203AF98) return FALSE; @@ -3398,7 +3395,7 @@ bool8 sub_8113AE8(u16 * a0) } #else NAKED -bool8 sub_8113AE8(u16 * a0) +static bool8 sub_8113AE8(u16 * a0) { asm_unified("\tpush {r4,lr}\n" "\tadds r4, r0, 0\n" @@ -3449,7 +3446,7 @@ bool8 sub_8113AE8(u16 * a0) } #endif -bool8 sub_8113B44(u16 * a0) +static bool8 sub_8113B44(u16 * a0) { if (gUnknown_203B044.unk_2 == 0) return FALSE; @@ -3461,12 +3458,12 @@ bool8 sub_8113B44(u16 * a0) return TRUE; } -void sub_8113B88(void) +static void sub_8113B88(void) { gUnknown_203B044 = (struct UnkStruct_203B044){}; } -void sub_8113B94(u16 a0) +static void sub_8113B94(u16 a0) { if (gUnknown_203B044.unk_0 != (u8)a0 || gUnknown_203B044.unk_2 != gUnknown_203AF98) { @@ -3478,14 +3475,14 @@ void sub_8113B94(u16 a0) gUnknown_203B044.unk_1++; } -void sub_8113BD8(void) +static void sub_8113BD8(void) { gUnknown_203B049 = 0; gUnknown_203B04A = 0; gUnknown_203B04B = 0; } -u16 * sub_8113BF4(u16 * a0) +static u16 * sub_8113BF4(u16 * a0) { if (!sub_8110988(a0, gUnknown_8456AA0[39])) return NULL; @@ -3493,7 +3490,7 @@ u16 * sub_8113BF4(u16 * a0) return a0 + 1; } -u16 * sub_8113C20(u16 * a0, struct UnkStruct_203AE98 * a1) +static u16 * sub_8113C20(u16 * a0, struct UnkStruct_203AE98 * a1) { if (!sub_8110988(a0, gUnknown_8456AA0[39])) return NULL; @@ -3506,7 +3503,7 @@ u16 * sub_8113C20(u16 * a0, struct UnkStruct_203AE98 * a1) return a0 + 1; } -u16 * sub_8113C5C(u16 * a0, u16 a1) +static u16 * sub_8113C5C(u16 * a0, u16 a1) { if (!sub_8110988(a0, gUnknown_8456AA0[41])) return NULL; @@ -3515,7 +3512,7 @@ u16 * sub_8113C5C(u16 * a0, u16 a1) return a0 + 2; } -u16 * sub_8113C8C(u16 * a0, struct UnkStruct_203AE98 * a1) +static u16 * sub_8113C8C(u16 * a0, struct UnkStruct_203AE98 * a1) { if (!sub_8110988(a0, gUnknown_8456AA0[41])) return NULL; @@ -3528,7 +3525,7 @@ u16 * sub_8113C8C(u16 * a0, struct UnkStruct_203AE98 * a1) return a0 + 2; } -u16 * sub_8113CC8(u16 * a0, struct UnkStruct_203AE98 * a1) +static u16 * sub_8113CC8(u16 * a0, struct UnkStruct_203AE98 * a1) { u8 * r6 = (u8 *)a0 + 4; @@ -3543,7 +3540,7 @@ u16 * sub_8113CC8(u16 * a0, struct UnkStruct_203AE98 * a1) return (u16 *)(r6 + 4); } -u16 * sub_8113D08(u16 * a0, struct UnkStruct_203AE98 * a1) +static u16 * sub_8113D08(u16 * a0, struct UnkStruct_203AE98 * a1) { u8 * r6 = (u8 *)a0 + 4; @@ -3558,7 +3555,7 @@ u16 * sub_8113D08(u16 * a0, struct UnkStruct_203AE98 * a1) return (u16 *)(r6 + 4); } -u16 * sub_8113D48(u16 * a0, struct UnkStruct_203AE98 * a1) +static u16 * sub_8113D48(u16 * a0, struct UnkStruct_203AE98 * a1) { u16 * r4 = a0; u8 * r6 = (u8 *)a0 + 4; @@ -3577,7 +3574,7 @@ u16 * sub_8113D48(u16 * a0, struct UnkStruct_203AE98 * a1) return (u16 *)(r6 + 4); } -u16 * sub_8113D94(u16 * a0, struct UnkStruct_203AE98 * a1) +static u16 * sub_8113D94(u16 * a0, struct UnkStruct_203AE98 * a1) { u16 * r5 = a0; u8 * r6 = (u8 *)a0 + 4; @@ -3636,7 +3633,7 @@ u16 * sub_8113DE0(u16 a0, u16 * a1) return r5; } -const u16 * sub_8113E88(u16 a0, const u16 * a1) +static const u16 * sub_8113E88(u16 a0, const u16 * a1) { a1 = (const void *)a1 + (gUnknown_203B044.unk_2 * (gUnknown_8456AA0[a0] - 4) + 4); return a1; @@ -3663,7 +3660,7 @@ void QuestLog_AutoGetSpeciesName(u16 a0, u8 * a1, u8 a2) } } -u16 * sub_8113F14(u16 * a0, const u16 * a1) +static u16 * sub_8113F14(u16 * a0, const u16 * a1) { u16 * r2 = sub_8113DE0(3, a0); if (r2 == NULL) @@ -3674,7 +3671,7 @@ u16 * sub_8113F14(u16 * a0, const u16 * a1) return r2 + 2; } -const u16 * sub_8113F3C(const u16 * a0) +static const u16 * sub_8113F3C(const u16 * a0) { const u16 * r4 = sub_8113E88(3, a0); QuestLog_AutoGetSpeciesName(r4[0], gStringVar1, 0); @@ -3684,7 +3681,7 @@ const u16 * sub_8113F3C(const u16 * a0) return r4; } -u16 * sub_8113F80(u16 * a0, const u16 * a1) +static u16 * sub_8113F80(u16 * a0, const u16 * a1) { u16 * r2 = sub_8113DE0(4, a0); if (r2 == NULL) @@ -3700,7 +3697,7 @@ u16 * sub_8113F80(u16 * a0, const u16 * a1) return r2 + 3; } -const u16 * sub_8113FBC(const u16 * a0) +static const u16 * sub_8113FBC(const u16 * a0) { const u16 * r5 = sub_8113E88(4, a0); @@ -3763,12 +3760,12 @@ u16 * sub_811414C(u16 a0, u16 * a1, const u16 * a2) return r1 + 2; } -u16 * sub_8114174(u16 * a0, const u16 * a1) +static u16 * sub_8114174(u16 * a0, const u16 * a1) { return sub_811414C(5, a0, a1); } -const u16 * sub_8114188(const u16 * a0) +static const u16 * sub_8114188(const u16 * a0) { const u16 * r4 = sub_8113E88(5, a0); QuestLog_AutoGetSpeciesName(r4[1], gStringVar1, 0); @@ -3778,12 +3775,12 @@ const u16 * sub_8114188(const u16 * a0) return r4; } -u16 * sub_81141D0(u16 * a0, const u16 * a1) +static u16 * sub_81141D0(u16 * a0, const u16 * a1) { return sub_811414C(6, a0, a1); } -const u16 * sub_81141E4(const u16 * a0) +static const u16 * sub_81141E4(const u16 * a0) { const u16 * r4 = sub_8113E88(6, a0); @@ -3794,12 +3791,12 @@ const u16 * sub_81141E4(const u16 * a0) return r4; } -u16 * sub_811422C(u16 * a0, const u16 * a1) +static u16 * sub_811422C(u16 * a0, const u16 * a1) { return sub_811414C(7, a0, a1); } -const u16 * sub_8114240(const u16 * a0) +static const u16 * sub_8114240(const u16 * a0) { const u16 * r4 = sub_8113E88(7, a0); @@ -3810,12 +3807,12 @@ const u16 * sub_8114240(const u16 * a0) return r4; } -u16 * sub_8114288(u16 * a0, const u16 * a1) +static u16 * sub_8114288(u16 * a0, const u16 * a1) { return sub_811414C(8, a0, a1); } -const u16 * sub_811429C(const u16 * a0) +static const u16 * sub_811429C(const u16 * a0) { const u16 * r4 = sub_8113E88(8, a0); @@ -3838,12 +3835,12 @@ u16 * sub_81142E4(u16 a0, u16 * a1, const u16 * a2) return r1 + 3; } -u16 * sub_8114310(u16 * a0, const u16 * a1) +static u16 * sub_8114310(u16 * a0, const u16 * a1) { return sub_81142E4(9, a0, a1); } -const u16 * sub_8114324(const u16 * a0) +static const u16 * sub_8114324(const u16 * a0) { const u16 * r4 = sub_8113E88(9, a0); QuestLog_AutoGetSpeciesName(r4[2], gStringVar1, 0); @@ -3854,12 +3851,12 @@ const u16 * sub_8114324(const u16 * a0) return r4; } -u16 * sub_8114380(u16 * a0, const u16 * a1) +static u16 * sub_8114380(u16 * a0, const u16 * a1) { return sub_81142E4(10, a0, a1); } -const u16 * sub_8114394(const u16 * a0) +static const u16 * sub_8114394(const u16 * a0) { const u16 * r4 = sub_8113E88(10, a0); QuestLog_AutoGetSpeciesName(r4[2], gStringVar2, 0); @@ -3870,7 +3867,7 @@ const u16 * sub_8114394(const u16 * a0) return r4; } -u16 * sub_81143F0(u16 * a0, const u16 * a1) +static u16 * sub_81143F0(u16 * a0, const u16 * a1) { u16 * r4 = a0; if (gUnknown_203B044.unk_0 == 11 && gUnknown_203B044.unk_1 != 0) @@ -3884,14 +3881,14 @@ u16 * sub_81143F0(u16 * a0, const u16 * a1) return r4 + 2; } -const u16 * sub_811443C(const u16 * a0) +static const u16 * sub_811443C(const u16 * a0) { StringExpandPlaceholders(gStringVar4, gUnknown_841A2B0); a0 += 2; return a0; } -u16 * sub_811445C(u16 * a0, const u16 * a1) +static u16 * sub_811445C(u16 * a0, const u16 * a1) { u16 * r4 = a0 + 4; @@ -3905,7 +3902,7 @@ u16 * sub_811445C(u16 * a0, const u16 * a1) return r4; } -const u16 * sub_811448C(const u16 * a0) +static const u16 * sub_811448C(const u16 * a0) { const u16 * r6 = a0 + 4; @@ -3920,25 +3917,25 @@ const u16 * sub_811448C(const u16 * a0) return r6; } -const u8 *const gUnknown_8456ACC[] = { +static const u8 *const gUnknown_8456ACC[] = { gUnknown_841A74E, gUnknown_841A756, gUnknown_841A762 }; -const u8 *const gUnknown_8456AD8[] = { +static const u8 *const gUnknown_8456AD8[] = { gUnknown_841AF98, gUnknown_841A762, gUnknown_841AF9F }; -const u8 *const gUnknown_8456AE4[] = { +static const u8 *const gUnknown_8456AE4[] = { gUnknown_841A502, gUnknown_841A506, gUnknown_841AFD1 }; -u16 * sub_81144EC(u16 * a0, const u16 * a1) +static u16 * sub_81144EC(u16 * a0, const u16 * a1) { a0[0] = 13; a0[1] = gUnknown_203AF98; @@ -3948,7 +3945,7 @@ u16 * sub_81144EC(u16 * a0, const u16 * a1) return a0; } -const u16 * sub_8114518(const u16 * a0) +static const u16 * sub_8114518(const u16 * a0) { DynamicPlaceholderTextUtil_Reset(); @@ -3962,7 +3959,7 @@ const u16 * sub_8114518(const u16 * a0) return a0; } -u16 * sub_8114578(u16 * a0, const u16 * a1) +static u16 * sub_8114578(u16 * a0, const u16 * a1) { a0[0] = 14; a0[1] = gUnknown_203AF98; @@ -3972,7 +3969,7 @@ u16 * sub_8114578(u16 * a0, const u16 * a1) return a0; } -const u16 * sub_81145A4(const u16 * a0) +static const u16 * sub_81145A4(const u16 * a0) { DynamicPlaceholderTextUtil_Reset(); @@ -3986,7 +3983,7 @@ const u16 * sub_81145A4(const u16 * a0) return a0; } -u16 * sub_8114604(u16 * a0, const u16 * a1) +static u16 * sub_8114604(u16 * a0, const u16 * a1) { a0[0] = 15; a0[1] = gUnknown_203AF98; @@ -3998,7 +3995,7 @@ u16 * sub_8114604(u16 * a0, const u16 * a1) return a0; } -const u16 * sub_811464C(const u16 * a0) +static const u16 * sub_811464C(const u16 * a0) { DynamicPlaceholderTextUtil_Reset(); @@ -4021,35 +4018,35 @@ const u16 * sub_811464C(const u16 * a0) return a0; } -u16 * sub_8114710(u16 * a0, const u16 * a1) +static u16 * sub_8114710(u16 * a0, const u16 * a1) { a0[0] = 16; a0[1] = gUnknown_203AF98; return a0 + 2; } -const u16 * sub_8114724(const u16 * a0) +static const u16 * sub_8114724(const u16 * a0) { StringExpandPlaceholders(gStringVar4, gUnknown_841A50B); a0 += 2; return a0; } -u16 * sub_8114744(u16 * a0, const u16 * a1) +static u16 * sub_8114744(u16 * a0, const u16 * a1) { a0[0] = 17; a0[1] = gUnknown_203AF98; return a0 + 2; } -const u16 * sub_8114758(const u16 * a0) +static const u16 * sub_8114758(const u16 * a0) { StringExpandPlaceholders(gStringVar4, gUnknown_841A732); a0 += 2; return a0; } -u16 * sub_8114778(u16 * a0, const u16 * a1) +static u16 * sub_8114778(u16 * a0, const u16 * a1) { u8 * r4 = (u8 *)(a0 + 4); a0[0] = 18; @@ -4061,7 +4058,7 @@ u16 * sub_8114778(u16 * a0, const u16 * a1) return (u16 *)r4; } -const u16 * sub_81147A8(const u16 * a0) +static const u16 * sub_81147A8(const u16 * a0) { const u8 * r6 = (const u8 *)(a0 + 4); memset(gStringVar1, EOS, 8); @@ -4074,7 +4071,7 @@ const u16 * sub_81147A8(const u16 * a0) return (const u16 *)r6; } -u16 * sub_8114808(u16 * a0, const u16 * a1) +static u16 * sub_8114808(u16 * a0, const u16 * a1) { a0[0] = 19; a0[1] = gUnknown_203AF98; @@ -4084,7 +4081,7 @@ u16 * sub_8114808(u16 * a0, const u16 * a1) return a0; } -const u16 * sub_8114834(const u16 * a0) +static const u16 * sub_8114834(const u16 * a0) { memset(gStringVar1, EOS, 8); memcpy(gStringVar1, (const u8 *)a0 + 5, 7); @@ -4095,7 +4092,7 @@ const u16 * sub_8114834(const u16 * a0) return a0; } -u16 * sub_811488C(u16 * a0, const u16 * a1) +static u16 * sub_811488C(u16 * a0, const u16 * a1) { a0 = sub_8113DE0(20, a0); if (a0 == NULL) @@ -4107,7 +4104,7 @@ u16 * sub_811488C(u16 * a0, const u16 * a1) return a0 + 3; } -const u16 * sub_81148BC(const u16 * a0) +static const u16 * sub_81148BC(const u16 * a0) { const u8 * boxIdxs; a0 = sub_8113E88(20, a0); @@ -4121,7 +4118,7 @@ const u16 * sub_81148BC(const u16 * a0) return a0 + 3; } -u16 * sub_8114918(u16 * a0, const u16 * a1) +static u16 * sub_8114918(u16 * a0, const u16 * a1) { a0 = sub_8113DE0(21, a0); if (a0 == NULL) @@ -4132,7 +4129,7 @@ u16 * sub_8114918(u16 * a0, const u16 * a1) return a0 + 3; } -const u16 * sub_8114944(const u16 * a0) +static const u16 * sub_8114944(const u16 * a0) { const u8 * boxIdxs; a0 = sub_8113E88(21, a0); @@ -4145,7 +4142,7 @@ const u16 * sub_8114944(const u16 * a0) return a0 + 3; } -u16 * sub_8114990(u16 * a0, const u16 * a1) +static u16 * sub_8114990(u16 * a0, const u16 * a1) { u16 * r2; u16 * ret; @@ -4168,7 +4165,7 @@ u16 * sub_8114990(u16 * a0, const u16 * a1) return ret + 1; } -const u16 * sub_81149D0(const u16 * a0) +static const u16 * sub_81149D0(const u16 * a0) { const u8 * boxIdxs; a0 = sub_8113E88(22, a0); @@ -4181,7 +4178,7 @@ const u16 * sub_81149D0(const u16 * a0) return a0 + 3; } -u16 * sub_8114A1C(u16 * a0, const u16 * a1) +static u16 * sub_8114A1C(u16 * a0, const u16 * a1) { u16 * r2; u16 * ret; @@ -4195,7 +4192,7 @@ u16 * sub_8114A1C(u16 * a0, const u16 * a1) return ret + 1; } -const u16 * sub_8114A4C(const u16 * a0) +static const u16 * sub_8114A4C(const u16 * a0) { const u8 * boxIdxs; a0 = sub_8113E88(23, a0); @@ -4208,7 +4205,7 @@ const u16 * sub_8114A4C(const u16 * a0) return (const u16 *)boxIdxs + 1; } -u16 * sub_8114AA0(u16 * a0, const u16 * a1) +static u16 * sub_8114AA0(u16 * a0, const u16 * a1) { u16 * r2; r2 = sub_8113DE0(24, a0); @@ -4219,7 +4216,7 @@ u16 * sub_8114AA0(u16 * a0, const u16 * a1) return r2 + 2; } -const u16 * sub_8114AC8(const u16 * a0) +static const u16 * sub_8114AC8(const u16 * a0) { const u8 * boxIdxs; a0 = sub_8113E88(24, a0); @@ -4231,7 +4228,7 @@ const u16 * sub_8114AC8(const u16 * a0) return (const u16 *)boxIdxs + 1; } -u16 * sub_8114B0C(u16 * a0, const u16 * a1) +static u16 * sub_8114B0C(u16 * a0, const u16 * a1) { u16 * r2; r2 = sub_8113DE0(25, a0); @@ -4242,7 +4239,7 @@ u16 * sub_8114B0C(u16 * a0, const u16 * a1) return r2 + 2; } -const u16 * sub_8114B34(const u16 * a0) +static const u16 * sub_8114B34(const u16 * a0) { const u8 * boxIdxs; a0 = sub_8113E88(25, a0); @@ -4254,7 +4251,7 @@ const u16 * sub_8114B34(const u16 * a0) return (const u16 *)boxIdxs + 1; } -u16 * sub_8114B78(u16 * a0, const u16 * a1) +static u16 * sub_8114B78(u16 * a0, const u16 * a1) { u16 * r2; r2 = sub_8113DE0(26, a0); @@ -4265,7 +4262,7 @@ u16 * sub_8114B78(u16 * a0, const u16 * a1) return r2 + 2; } -const u16 * sub_8114BA0(const u16 * a0) +static const u16 * sub_8114BA0(const u16 * a0) { const u8 * boxIdxs; a0 = sub_8113E88(26, a0); @@ -4277,7 +4274,7 @@ const u16 * sub_8114BA0(const u16 * a0) return (const u16 *)boxIdxs + 1; } -u16 * sub_8114BE4(u16 * a0, const u16 * a1) +static u16 * sub_8114BE4(u16 * a0, const u16 * a1) { u16 * r2; r2 = sub_8113DE0(27, a0); @@ -4288,7 +4285,7 @@ u16 * sub_8114BE4(u16 * a0, const u16 * a1) return r2 + 1; } -const u16 * sub_8114C0C(const u16 * a0) +static const u16 * sub_8114C0C(const u16 * a0) { const u16 *r4 = sub_8113E88(27, a0); DynamicPlaceholderTextUtil_Reset(); @@ -4301,7 +4298,7 @@ const u16 * sub_8114C0C(const u16 * a0) return r4 + 1; } -u16 * sub_8114C68(u16 * a0, const u16 * a1) +static u16 * sub_8114C68(u16 * a0, const u16 * a1) { a0 = sub_8113DE0(28, a0); if (a0 == NULL) @@ -4310,7 +4307,7 @@ u16 * sub_8114C68(u16 * a0, const u16 * a1) return a0 + 1; } -const u16 * sub_8114C8C(const u16 * a0) +static const u16 * sub_8114C8C(const u16 * a0) { const u16 *r4 = sub_8113E88(28, a0); CopyItemName(r4[0], gStringVar1); @@ -4318,7 +4315,7 @@ const u16 * sub_8114C8C(const u16 * a0) return r4 + 1; } -u16 * sub_8114CC0(u16 * a0, const u16 * a1) +static u16 * sub_8114CC0(u16 * a0, const u16 * a1) { a0 = sub_8113DE0(29, a0); if (a0 == NULL) @@ -4327,7 +4324,7 @@ u16 * sub_8114CC0(u16 * a0, const u16 * a1) return a0 + 1; } -const u16 * sub_8114CE4(const u16 * a0) +static const u16 * sub_8114CE4(const u16 * a0) { const u16 *r4 = sub_8113E88(29, a0); CopyItemName(r4[0], gStringVar1); @@ -4348,13 +4345,13 @@ u16 * sub_8114D18(u16 a0, u16 * a1, const u16 * a2) return a1 + 4; } -u16 * sub_8114D4C(u16 * a0, const u16 * a1) +static u16 * sub_8114D4C(u16 * a0, const u16 * a1) { gUnknown_203B048 = TRUE; return sub_8114D18(30, a0, a1); } -const u16 * sub_8114D68(const u16 * a0) +static const u16 * sub_8114D68(const u16 * a0) { const u8 * r6; a0 = sub_8113E88(30, a0); @@ -4370,7 +4367,7 @@ const u16 * sub_8114D68(const u16 * a0) return a0 + 4; } -u16 * sub_8114DE8(u16 * a0, const u16 * a1) +static u16 * sub_8114DE8(u16 * a0, const u16 * a1) { u16 * r4 = a0; u8 * r5 = (u8 *)a0 + 8; @@ -4393,7 +4390,7 @@ u16 * sub_8114DE8(u16 * a0, const u16 * a1) return (u16 *)(r5 + 4); } -const u16 * sub_8114E68(const u16 * a0) +static const u16 * sub_8114E68(const u16 * a0) { const u8 * r6; if (!sub_8110944(a0, gUnknown_8456AA0[31])) @@ -4441,7 +4438,7 @@ const u16 * sub_8114E68(const u16 * a0) return (const u16 *)(r6 + 4); } -bool8 sub_8114FBC(u16 a0) +static bool8 sub_8114FBC(u16 a0) { switch (a0) { @@ -4454,13 +4451,13 @@ bool8 sub_8114FBC(u16 a0) return FALSE; } -u16 * sub_8114FF0(u16 * a0, const u16 * a1) +static u16 * sub_8114FF0(u16 * a0, const u16 * a1) { gUnknown_203B048 = TRUE; return sub_8114D18(32, a0, a1); } -const u16 * sub_811500C(const u16 * a0) +static const u16 * sub_811500C(const u16 * a0) { const u8 * r5; a0 = sub_8113E88(32, a0); @@ -4474,7 +4471,7 @@ const u16 * sub_811500C(const u16 * a0) return a0 + 4; } -u16 * sub_8115078(u16 * a0, const u16 * a1) +static u16 * sub_8115078(u16 * a0, const u16 * a1) { if (!sub_8110944(a0, gUnknown_8456AA0[33])) return NULL; @@ -4487,7 +4484,7 @@ u16 * sub_8115078(u16 * a0, const u16 * a1) return a0 + 5; } -const u16 * sub_81150CC(const u16 * a0) +static const u16 * sub_81150CC(const u16 * a0) { const u8 * r5; if (!sub_8110944(a0, gUnknown_8456AA0[33])) @@ -4518,13 +4515,13 @@ const u16 * sub_81150CC(const u16 * a0) return (const u16 *)(r5 + 2); } -u16 * sub_81151C0(u16 * a0, const u16 * a1) +static u16 * sub_81151C0(u16 * a0, const u16 * a1) { gUnknown_203B048 = TRUE; return sub_8114D18(34, a0, a1); } -const u16 * sub_81151DC(const u16 * a0) +static const u16 * sub_81151DC(const u16 * a0) { const u16 * r5 = sub_8113E88(34, a0); const u8 * r6 = (const u8 *)r5 + 6; @@ -4546,7 +4543,7 @@ const u16 * sub_81151DC(const u16 * a0) return (const u16 *)(r6 + 2); } -const u8 *const gUnknown_8456AF0[] = { +static const u8 *const gUnknown_8456AF0[] = { gUnknown_841B09F, gUnknown_841B0A4, gUnknown_841B0B5, @@ -4600,7 +4597,7 @@ const u8 *const gUnknown_8456AF0[] = { gUnknown_841B277 }; -const u8 *const gUnknown_8456BBC[] = { +static const u8 *const gUnknown_8456BBC[] = { gUnknown_841A53A, gUnknown_841AD9E, gUnknown_841ADC8, @@ -4613,7 +4610,7 @@ const u8 *const gUnknown_8456BBC[] = { gUnknown_841B005 }; -const u8 gUnknown_8456BE4[] = { +static const u8 gUnknown_8456BE4[] = { 0x03, 0x04, 0x05, @@ -4667,7 +4664,7 @@ const u8 gUnknown_8456BE4[] = { 0x07 }; -const u8 gUnknown_8456C17[] = { +static const u8 gUnknown_8456C17[] = { 0x5a, 0x5b, 0x5d, @@ -4678,7 +4675,7 @@ const u8 gUnknown_8456C17[] = { 0x59 }; -const u8 *const gUnknown_8456C20[] = { +static const u8 *const gUnknown_8456C20[] = { gUnknown_841AC51, gUnknown_841ABAB, gUnknown_841ABCD, @@ -4693,7 +4690,7 @@ const u8 *const gUnknown_8456C20[] = { gUnknown_841AD3C }; -u16 * sub_8115280(u16 * a0, const u16 * a1) +static u16 * sub_8115280(u16 * a0, const u16 * a1) { u16 * r2 = sub_8113DE0(35, a0); if (r2 == NULL) @@ -4704,7 +4701,7 @@ u16 * sub_8115280(u16 * a0, const u16 * a1) return r2 + 1; } -const u16 * sub_81152BC(const u16 * a0) +static const u16 * sub_81152BC(const u16 * a0) { u8 r4, r6; const u16 * r5 = sub_8113E88(35, a0); @@ -4738,7 +4735,7 @@ void sub_811539C(void) gUnknown_203B04B = TRUE; } -bool8 sub_81153A8(u16 a0, u16 * a1) +static bool8 sub_81153A8(u16 a0, u16 * a1) { if (a0 != 35) { @@ -4751,7 +4748,7 @@ bool8 sub_81153A8(u16 a0, u16 * a1) return TRUE; } -bool8 sub_81153E4(u16 a0, u16 * a1) +static bool8 sub_81153E4(u16 a0, u16 * a1) { if (a0 != 35) return TRUE; @@ -4761,7 +4758,7 @@ bool8 sub_81153E4(u16 a0, u16 * a1) return TRUE; } -u16 * sub_8115410(u16 * a0, const u16 * a1) +static u16 * sub_8115410(u16 * a0, const u16 * a1) { u8 * r3; a0 = sub_8113DE0(36, a0); @@ -4778,7 +4775,7 @@ u16 * sub_8115410(u16 * a0, const u16 * a1) return (u16 *)(r3 + 2); } -const u16 * sub_8115460(const u16 * a0) +static const u16 * sub_8115460(const u16 * a0) { const u16 * r4 = sub_8113E88(36, a0); const u8 * r5 = (const u8 *)r4 + 2; @@ -4796,7 +4793,7 @@ const u16 * sub_8115460(const u16 * a0) return (const u16 *)(r5 + 2); } -u16 * sub_81154DC(u16 * a0, const u16 * a1) +static u16 * sub_81154DC(u16 * a0, const u16 * a1) { a0 = sub_8113DE0(37, a0); if (a0 == NULL) @@ -4810,7 +4807,7 @@ u16 * sub_81154DC(u16 * a0, const u16 * a1) return a0 + 5; } -const u16 * sub_8115518(const u16 * a0) +static const u16 * sub_8115518(const u16 * a0) { const u16 * r4 = sub_8113E88(37, a0); const u8 * r7 = (const u8 *)r4 + 8; @@ -4830,7 +4827,7 @@ const u16 * sub_8115518(const u16 * a0) return (const u16 *)(r7 + 2); } -u16 * sub_81155A4(u16 * a0, const u16 * a1) +static u16 * sub_81155A4(u16 * a0, const u16 * a1) { a0 = sub_8113DE0(38, a0); if (a0 == NULL) @@ -4844,7 +4841,7 @@ u16 * sub_81155A4(u16 * a0, const u16 * a1) return a0 + 5; } -const u16 * sub_81155E0(const u16 * a0) { +static const u16 * sub_81155E0(const u16 * a0) { const u16 *r5 = sub_8113E88(38, a0); const u8 *r7 = (const u8 *) r5 + 8; u32 r6 = (r5[2] << 16) + r5[3]; @@ -4876,7 +4873,7 @@ const u16 * sub_81155E0(const u16 * a0) { return (const u16 *)(r7 + 2); } -u16 * sub_81156D8(u16 * a0, const u16 * a1) +static u16 * sub_81156D8(u16 * a0, const u16 * a1) { a0 = sub_8113DE0(40, a0); if (a0 == NULL) @@ -4886,7 +4883,7 @@ u16 * sub_81156D8(u16 * a0, const u16 * a1) return a0 + 2; } -const u16 * sub_8115700(const u16 * a0) +static const u16 * sub_8115700(const u16 * a0) { const u16 * r4 = sub_8113E88(40, a0); const u8 * r5 = (const u8 *)r4 + 2; @@ -4896,7 +4893,7 @@ const u16 * sub_8115700(const u16 * a0) return (const u16 *)(r5 + 2); } -const u16 gUnknown_8456C50[] = { +static const u16 gUnknown_8456C50[] = { 0x0891, 0x0892, 0x0893, @@ -4993,7 +4990,7 @@ void sub_8115798(void) } } -u16 * sub_81157DC(u16 * a0, const u16 * a1) +static u16 * sub_81157DC(u16 * a0, const u16 * a1) { a0 = sub_8113DE0(42, a0); if (a0 == NULL) @@ -5002,7 +4999,7 @@ u16 * sub_81157DC(u16 * a0, const u16 * a1) return a0 + 1; } -const u16 * sub_8115800(const u16 * a0) +static const u16 * sub_8115800(const u16 * a0) { const u16 * r4 = sub_8113E88(42, a0); sub_80C4DF8(gStringVar1, r4[0]); diff --git a/src/save.c b/src/save.c index 9f580477b..45f5fc6f0 100644 --- a/src/save.c +++ b/src/save.c @@ -85,7 +85,7 @@ u16 gSaveUnusedVar; u16 gSaveFileStatus; void (*gGameContinueCallback)(void); struct SaveBlockChunk gRamSaveSectionLocations[0xE]; -u16 gUnknown_3005420; +u16 gSaveSucceeded; EWRAM_DATA struct SaveSection gSaveDataBuffer = {0}; EWRAM_DATA u32 gSaveUnusedVar2 = 0; @@ -702,11 +702,11 @@ u8 TrySavingData(u8 saveType) else goto OK; // really? } - gUnknown_3005420 = 0xFF; + gSaveSucceeded = 0xFF; return 0xFF; OK: - gUnknown_3005420 = 1; + gSaveSucceeded = 1; return 1; } diff --git a/src/scrcmd.c b/src/scrcmd.c index 85059691f..ae994fceb 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -1284,14 +1284,14 @@ bool8 ScrCmd_loadhelp(struct ScriptContext *ctx) if (msg == NULL) msg = (const u8 *)ctx->data[0]; - sub_80F7974(msg); + DrawHelpMessageWindowWithText(msg); CopyWindowToVram(GetStartMenuWindowId(), 1); return FALSE; } bool8 ScrCmd_unloadhelp(struct ScriptContext *ctx) { - sub_80F7998(); + DestroyHelpMessageWindow_(); return FALSE; } @@ -1566,7 +1566,7 @@ bool8 ScrCmd_braillemessage(struct ScriptContext *ctx) if (ptr == NULL) ptr = (u8 *)ctx->data[0]; - sub_80F6E9C(); + LoadStdWindowFrameGfx(); DrawDialogueFrame(0, 1); AddTextPrinterParameterized(0, 6, ptr, 0, 1, 0, NULL); return FALSE; diff --git a/src/start_menu.c b/src/start_menu.c new file mode 100644 index 000000000..e3854b803 --- /dev/null +++ b/src/start_menu.c @@ -0,0 +1,1008 @@ +#include "global.h" +#include "palette.h" +#include "bg.h" +#include "gpu_regs.h" +#include "scanline_effect.h" +#include "overworld.h" +#include "link.h" +#include "pokedex.h" +#include "item_menu.h" +#include "party_menu.h" +#include "save.h" +#include "link_rfu.h" +#include "event_data.h" +#include "fieldmap.h" +#include "safari_zone.h" +#include "start_menu.h" +#include "menu.h" +#include "load_save.h" +#include "strings.h" +#include "string_util.h" +#include "menu_helpers.h" +#include "text_window.h" +#include "field_fadetransition.h" +#include "field_player_avatar.h" +#include "new_menu_helpers.h" +#include "map_obj_80688E4.h" +#include "map_obj_lock.h" +#include "script.h" +#include "sound.h" +#include "quest_log.h" +#include "new_game.h" +#include "event_scripts.h" +#include "field_weather.h" +#include "field_specials.h" +#include "pokedex_screen.h" +#include "trainer_card.h" +#include "option_menu.h" +#include "save_menu_util.h" +#include "help_system.h" +#include "constants/songs.h" +#include "constants/flags.h" + +enum StartMenuOption +{ + STARTMENU_POKEDEX = 0, + STARTMENU_POKEMON, + STARTMENU_BAG, + STARTMENU_PLAYER, + STARTMENU_SAVE, + STARTMENU_OPTION, + STARTMENU_EXIT, + STARTMENU_RETIRE, + STARTMENU_PLAYER2, + MAX_STARTMENU_ITEMS +}; + +enum SaveCBReturn +{ + SAVECB_RETURN_CONTINUE = 0, + SAVECB_RETURN_OKAY, + SAVECB_RETURN_CANCEL, + SAVECB_RETURN_ERROR +}; + +static EWRAM_DATA bool8 (*sStartMenuCallback)(void) = NULL; +static EWRAM_DATA u8 sStartMenuCursorPos = 0; +static EWRAM_DATA u8 sNumStartMenuItems = 0; +static EWRAM_DATA u8 sStartMenuOrder[MAX_STARTMENU_ITEMS] = {}; +static EWRAM_DATA s8 sDrawStartMenuState[2] = {}; +static EWRAM_DATA u8 sSafariZoneStatsWindowId = 0; +static ALIGNED(4) EWRAM_DATA u8 sSaveStatsWindowId = 0; + +static u8 (*sSaveDialogCB)(void); +static u8 sSaveDialogDelay; +static bool8 sSaveDialogIsPrinting; + +static void SetUpStartMenu_Link(void); +static void SetUpStartMenu_UnionRoom(void); +static void SetUpStartMenu_SafariZone(void); +static void SetUpStartMenu_NormalField(void); +static bool8 StartCB_HandleInput(void); +static void StartMenu_FadeScreenIfLeavingOverworld(void); +static bool8 StartMenuPokedexSanityCheck(void); +static bool8 StartMenuPokedexCallback(void); +static bool8 StartMenuPokemonCallback(void); +static bool8 StartMenuBagCallback(void); +static bool8 StartMenuPlayerCallback(void); +static bool8 StartMenuSaveCallback(void); +static bool8 StartMenuOptionCallback(void); +static bool8 StartMenuExitCallback(void); +static bool8 StartMenuSafariZoneRetireCallback(void); +static bool8 StartMenuLinkPlayerCallback(void); +static bool8 StartCB_Save1(void); +static bool8 StartCB_Save2(void); +static void StartMenu_PrepareForSave(void); +static u8 RunSaveDialogCB(void); +static void task50_save_game(u8 taskId); +static u8 SaveDialogCB_PrintAskSaveText(void); +static u8 SaveDialogCB_AskSavePrintYesNoMenu(void); +static u8 SaveDialogCB_AskSaveHandleInput(void); +static u8 SaveDialogCB_PrintAskOverwriteText(void); +static u8 SaveDialogCB_AskOverwritePrintYesNoMenu(void); +static u8 SaveDialogCB_AskReplacePreviousFilePrintYesNoMenu(void); +static u8 SaveDialogCB_AskOverwriteOrReplacePreviousFileHandleInput(void); +static u8 SaveDialogCB_PrintSavingDontTurnOffPower(void); +static u8 SaveDialogCB_DoSave(void); +static u8 SaveDialogCB_PrintSaveResult(void); +static u8 SaveDialogCB_WaitPrintSuccessAndPlaySE(void); +static u8 SaveDialogCB_ReturnSuccess(void); +static u8 SaveDialogCB_WaitPrintErrorAndPlaySE(void); +static u8 SaveDialogCB_ReturnError(void); +static void CB2_WhileSavingAfterLinkBattle(void); +static void task50_after_link_battle_save(u8 taskId); +static void PrintSaveStats(void); +static void CloseSaveStatsWindow(void); +static void CloseStartMenu(void); + +static const struct MenuAction sStartMenuActionTable[] = { + { gStartMenuText_Pokedex, {.u8_void = StartMenuPokedexCallback} }, + { gStartMenuText_Pokemon, {.u8_void = StartMenuPokemonCallback} }, + { gStartMenuText_Bag, {.u8_void = StartMenuBagCallback} }, + { gStartMenuText_Player, {.u8_void = StartMenuPlayerCallback} }, + { gStartMenuText_Save, {.u8_void = StartMenuSaveCallback} }, + { gStartMenuText_Option, {.u8_void = StartMenuOptionCallback} }, + { gStartMenuText_Exit, {.u8_void = StartMenuExitCallback} }, + { gStartMenuText_Retire, {.u8_void = StartMenuSafariZoneRetireCallback} }, + { gStartMenuText_Player, {.u8_void = StartMenuLinkPlayerCallback} } +}; + +static const struct WindowTemplate sSafariZoneStatsWindowTemplate = { + .bg = 0, + .tilemapLeft = 1, + .tilemapTop = 1, + .width = 10, + .height = 4, + .paletteNum = 15, + .baseBlock = 0x008 +}; + +static const u8 *const sStartMenuDescPointers[] = { + gStartMenuDesc_Pokedex, + gStartMenuDesc_Pokemon, + gStartMenuDesc_Bag, + gStartMenuDesc_Player, + gStartMenuDesc_Save, + gStartMenuDesc_Option, + gStartMenuDesc_Exit, + gStartMenuDesc_Retire, + gStartMenuDesc_Player +}; + +static const struct BgTemplate sBGTemplates_AfterLinkSaveMessage[] = { + { + .bg = 0, + .charBaseIndex = 2, + .mapBaseIndex = 31, + .screenSize = 0, + .paletteMode = 0, + .priority = 0, + .baseTile = 0x000 + } +}; + +static const struct WindowTemplate sWindowTemplates_AfterLinkSaveMessage[] = { + { + .bg = 0, + .tilemapLeft = 2, + .tilemapTop = 15, + .width = 26, + .height = 4, + .paletteNum = 15, + .baseBlock = 0x198 + }, DUMMY_WIN_TEMPLATE +}; + +static const struct WindowTemplate sSaveStatsWindowTemplate = { + .bg = 0, + .tilemapLeft = 1, + .tilemapTop = 1, + .width = 14, + .height = 9, + .paletteNum = 13, + .baseBlock = 0x008 +}; + +static ALIGNED(2) const u8 sTextColor_StatName[] = { 1, 2, 3 }; +static ALIGNED(2) const u8 sTextColor_StatValue[] = { 1, 4, 5 }; +static ALIGNED(2) const u8 sTextColor_LocationHeader[] = { 1, 6, 7 }; + +static void SetUpStartMenu(void) +{ + sNumStartMenuItems = 0; + if (IsUpdateLinkStateCBActive() == TRUE) + SetUpStartMenu_Link(); + else if (InUnionRoom() == TRUE) + SetUpStartMenu_UnionRoom(); + else if (GetSafariZoneFlag() == TRUE) + SetUpStartMenu_SafariZone(); + else + SetUpStartMenu_NormalField(); +} + +static void AppendToStartMenuItems(u8 newEntry) +{ + AppendToList(sStartMenuOrder, &sNumStartMenuItems, newEntry); +} + +static void SetUpStartMenu_NormalField(void) +{ + if (FlagGet(FLAG_0x829) == TRUE) + AppendToStartMenuItems(STARTMENU_POKEDEX); + if (FlagGet(FLAG_0x828) == TRUE) + AppendToStartMenuItems(STARTMENU_POKEMON); + AppendToStartMenuItems(STARTMENU_BAG); + AppendToStartMenuItems(STARTMENU_PLAYER); + AppendToStartMenuItems(STARTMENU_SAVE); + AppendToStartMenuItems(STARTMENU_OPTION); + AppendToStartMenuItems(STARTMENU_EXIT); +} + +static void SetUpStartMenu_SafariZone(void) +{ + AppendToStartMenuItems(STARTMENU_RETIRE); + AppendToStartMenuItems(STARTMENU_POKEDEX); + AppendToStartMenuItems(STARTMENU_POKEMON); + AppendToStartMenuItems(STARTMENU_BAG); + AppendToStartMenuItems(STARTMENU_PLAYER); + AppendToStartMenuItems(STARTMENU_OPTION); + AppendToStartMenuItems(STARTMENU_EXIT); +} + +static void SetUpStartMenu_Link(void) +{ + AppendToStartMenuItems(STARTMENU_POKEMON); + AppendToStartMenuItems(STARTMENU_BAG); + AppendToStartMenuItems(STARTMENU_PLAYER2); + AppendToStartMenuItems(STARTMENU_OPTION); + AppendToStartMenuItems(STARTMENU_EXIT); +} + +static void SetUpStartMenu_UnionRoom(void) +{ + AppendToStartMenuItems(STARTMENU_POKEMON); + AppendToStartMenuItems(STARTMENU_BAG); + AppendToStartMenuItems(STARTMENU_PLAYER); + AppendToStartMenuItems(STARTMENU_OPTION); + AppendToStartMenuItems(STARTMENU_EXIT); +} + +static void DrawSafariZoneStatsWindow(void) +{ + sSafariZoneStatsWindowId = AddWindow(&sSafariZoneStatsWindowTemplate); + PutWindowTilemap(sSafariZoneStatsWindowId); + DrawStdWindowFrame(sSafariZoneStatsWindowId, FALSE); + ConvertIntToDecimalStringN(gStringVar1, gSafariZoneStepCounter, STR_CONV_MODE_RIGHT_ALIGN, 3); + ConvertIntToDecimalStringN(gStringVar2, 600, STR_CONV_MODE_RIGHT_ALIGN, 3); + ConvertIntToDecimalStringN(gStringVar3, gNumSafariBalls, STR_CONV_MODE_RIGHT_ALIGN, 2); + StringExpandPlaceholders(gStringVar4, gUnknown_84162A9); + AddTextPrinterParameterized(sSafariZoneStatsWindowId,2, gStringVar4, 4, 3, 0xFF, NULL); + CopyWindowToVram(sSafariZoneStatsWindowId, 2); +} + +static void DestroySafariZoneStatsWindow(void) +{ + if (GetSafariZoneFlag()) + { + ClearStdWindowAndFrameToTransparent(sSafariZoneStatsWindowId, FALSE); + CopyWindowToVram(sSafariZoneStatsWindowId, 2); + RemoveWindow(sSafariZoneStatsWindowId); + } +} + +static s8 PrintStartMenuItems(s8 *cursor_p, u8 nitems) +{ + s16 i = *cursor_p; + do + { + if (sStartMenuOrder[i] == STARTMENU_PLAYER || sStartMenuOrder[i] == STARTMENU_PLAYER2) + { + Menu_PrintFormatIntlPlayerName(GetStartMenuWindowId(), sStartMenuActionTable[sStartMenuOrder[i]].text, 8, i * 15); + } + else + { + StringExpandPlaceholders(gStringVar4, sStartMenuActionTable[sStartMenuOrder[i]].text); + AddTextPrinterParameterized(GetStartMenuWindowId(), 2, gStringVar4, 8, i * 15, 0xFF, NULL); + } + i++; + if (i >= sNumStartMenuItems) + { + *cursor_p = i; + return TRUE; + } + } while (--nitems); + *cursor_p = i; + return FALSE; +} + +static s8 DoDrawStartMenu(void) +{ + switch (sDrawStartMenuState[0]) + { + case 0: + sDrawStartMenuState[0]++; + break; + case 1: + SetUpStartMenu(); + sDrawStartMenuState[0]++; + break; + case 2: + LoadStdWindowFrameGfx(); + DrawStdWindowFrame(CreateStartMenuWindow(sNumStartMenuItems), FALSE); + sDrawStartMenuState[0]++; + break; + case 3: + if (GetSafariZoneFlag()) + DrawSafariZoneStatsWindow(); + sDrawStartMenuState[0]++; + break; + case 4: + if (PrintStartMenuItems(&sDrawStartMenuState[1], 2) == TRUE) + sDrawStartMenuState[0]++; + break; + case 5: + sStartMenuCursorPos = Menu_InitCursor(GetStartMenuWindowId(), 2, 0, 0, 15, sNumStartMenuItems, sStartMenuCursorPos); + if (!MenuHelpers_LinkSomething() && InUnionRoom() != TRUE && gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_HELP) + { + DrawHelpMessageWindowWithText(sStartMenuDescPointers[sStartMenuOrder[sStartMenuCursorPos]]); + } + CopyWindowToVram(GetStartMenuWindowId(), 1); + return TRUE; + } + return FALSE; +} + +static void DrawStartMenuInOneGo(void) +{ + sDrawStartMenuState[0] = 0; + sDrawStartMenuState[1] = 0; + while (!DoDrawStartMenu()) + ; +} + +static void task50_startmenu(u8 taskId) +{ + if (DoDrawStartMenu() == TRUE) + SwitchTaskToFollowupFunc(taskId); +} + +static void OpenStartMenuWithFollowupFunc(TaskFunc func) +{ + u8 taskId; + sDrawStartMenuState[0] = 0; + sDrawStartMenuState[1] = 0; + taskId = CreateTask(task50_startmenu, 80); + SetTaskFuncWithFollowupFunc(taskId, task50_startmenu, func); +} + +static bool8 FieldCB2_DrawStartMenu(void) +{ + if (!DoDrawStartMenu()) + return FALSE; + FadeTransition_FadeInOnReturnToStartMenu(); + return TRUE; +} + +void SetUpReturnToStartMenu(void) +{ + sDrawStartMenuState[0] = 0; + sDrawStartMenuState[1] = 0; + gFieldCallback2 = FieldCB2_DrawStartMenu; +} + +void Task_StartMenuHandleInput(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + switch (data[0]) + { + case 0: + if (InUnionRoom() == TRUE) + var_800D_set_xB(); + sStartMenuCallback = StartCB_HandleInput; + data[0]++; + break; + case 1: + if (sStartMenuCallback() == TRUE) + DestroyTask(taskId); + break; + } +} + +void ShowStartMenu(void) +{ + if (!IsUpdateLinkStateCBActive()) + { + player_bitmagic(); + sub_805C270(); + sub_805C780(); + } + OpenStartMenuWithFollowupFunc(Task_StartMenuHandleInput); + ScriptContext2_Enable(); +} + +static bool8 StartCB_HandleInput(void) +{ + if (JOY_NEW(DPAD_UP)) + { + PlaySE(SE_SELECT); + sStartMenuCursorPos = Menu_MoveCursor(-1); + if (!MenuHelpers_LinkSomething() && InUnionRoom() != TRUE && gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_HELP) + { + PrintTextOnHelpMessageWindow(sStartMenuDescPointers[sStartMenuOrder[sStartMenuCursorPos]], 2); + } + } + if (JOY_NEW(DPAD_DOWN)) + { + PlaySE(SE_SELECT); + sStartMenuCursorPos = Menu_MoveCursor(+1); + if (!MenuHelpers_LinkSomething() && InUnionRoom() != TRUE && gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_HELP) + { + PrintTextOnHelpMessageWindow(sStartMenuDescPointers[sStartMenuOrder[sStartMenuCursorPos]], 2); + } + } + if (JOY_NEW(A_BUTTON)) + { + PlaySE(SE_SELECT); + if (!StartMenuPokedexSanityCheck()) + return FALSE; + sStartMenuCallback = sStartMenuActionTable[sStartMenuOrder[sStartMenuCursorPos]].func.u8_void; + StartMenu_FadeScreenIfLeavingOverworld(); + return FALSE; + } + if (JOY_NEW(B_BUTTON | START_BUTTON)) + { + DestroySafariZoneStatsWindow(); + DestroyHelpMessageWindow_(); + CloseStartMenu(); + return TRUE; + } + return FALSE; +} + +static void StartMenu_FadeScreenIfLeavingOverworld(void) +{ + if (sStartMenuCallback != StartMenuSaveCallback + && sStartMenuCallback != StartMenuExitCallback + && sStartMenuCallback != StartMenuSafariZoneRetireCallback) + { + sub_80CCB68(); + fade_screen(1, 0); + } +} + +static bool8 StartMenuPokedexSanityCheck(void) +{ + if (sStartMenuActionTable[sStartMenuOrder[sStartMenuCursorPos]].func.u8_void == StartMenuPokedexCallback && GetNationalPokedexCount(0) == 0) + return FALSE; + return TRUE; +} + +static bool8 StartMenuPokedexCallback(void) +{ + if (!gPaletteFade.active) + { + IncrementGameStat(GAME_STAT_CHECKED_POKEDEX); + PlayRainStoppingSoundEffect(); + DestroySafariZoneStatsWindow(); + CleanupOverworldWindowsAndTilemaps(); + SetMainCallback2(CB2_OpenPokedexFromStartMenu); + return TRUE; + } + return FALSE; +} + +static bool8 StartMenuPokemonCallback(void) +{ + if (!gPaletteFade.active) + { + PlayRainStoppingSoundEffect(); + DestroySafariZoneStatsWindow(); + CleanupOverworldWindowsAndTilemaps(); + SetMainCallback2(CB2_PartyMenuFromStartMenu); + return TRUE; + } + return FALSE; +} + +static bool8 StartMenuBagCallback(void) +{ + if (!gPaletteFade.active) + { + PlayRainStoppingSoundEffect(); + DestroySafariZoneStatsWindow(); + CleanupOverworldWindowsAndTilemaps(); + SetMainCallback2(CB2_BagMenuFromStartMenu); + return TRUE; + } + return FALSE; +} + +static bool8 StartMenuPlayerCallback(void) +{ + if (!gPaletteFade.active) + { + PlayRainStoppingSoundEffect(); + DestroySafariZoneStatsWindow(); + CleanupOverworldWindowsAndTilemaps(); + InitTrainerCard(CB2_ReturnToStartMenu); + return TRUE; + } + return FALSE; +} + +static bool8 StartMenuSaveCallback(void) +{ + sStartMenuCallback = StartCB_Save1; + return FALSE; +} + +static bool8 StartMenuOptionCallback(void) +{ + if (!gPaletteFade.active) + { + PlayRainStoppingSoundEffect(); + DestroySafariZoneStatsWindow(); + CleanupOverworldWindowsAndTilemaps(); + SetMainCallback2(CB2_OptionsMenuFromStartMenu); + gMain.savedCallback = CB2_ReturnToStartMenu; + return TRUE; + } + return FALSE; +} + +static bool8 StartMenuExitCallback(void) +{ + DestroySafariZoneStatsWindow(); + DestroyHelpMessageWindow_(); + CloseStartMenu(); + return TRUE; +} + +static bool8 StartMenuSafariZoneRetireCallback(void) +{ + DestroySafariZoneStatsWindow(); + DestroyHelpMessageWindow_(); + CloseStartMenu(); + SafariZoneRetirePrompt(); + return TRUE; +} + + +static bool8 StartMenuLinkPlayerCallback(void) +{ + if (!gPaletteFade.active) + { + PlayRainStoppingSoundEffect(); + CleanupOverworldWindowsAndTilemaps(); + InitLinkPartnerTrainerCard(gUnknown_300502C, CB2_ReturnToStartMenu); + return TRUE; + } + return FALSE; +} + +static bool8 StartCB_Save1(void) +{ + HelpSystem_BackupSomeVariable(); + HelpSystem_SetSomeVariable2(12); + StartMenu_PrepareForSave(); + sStartMenuCallback = StartCB_Save2; + return FALSE; +} + +static bool8 StartCB_Save2(void) +{ + switch (RunSaveDialogCB()) + { + case SAVECB_RETURN_CONTINUE: + break; + case SAVECB_RETURN_OKAY: + ClearDialogWindowAndFrameToTransparent(0, TRUE); + sub_80696C0(); + ScriptContext2_Disable(); + HelpSystem_RestoreSomeVariable(); + return TRUE; + case SAVECB_RETURN_CANCEL: + ClearDialogWindowAndFrameToTransparent(0, FALSE); + DrawStartMenuInOneGo(); + HelpSystem_RestoreSomeVariable(); + sStartMenuCallback = StartCB_HandleInput; + break; + case SAVECB_RETURN_ERROR: + ClearDialogWindowAndFrameToTransparent(0, TRUE); + sub_80696C0(); + ScriptContext2_Disable(); + HelpSystem_RestoreSomeVariable(); + return TRUE; + } + return FALSE; +} + +static void StartMenu_PrepareForSave(void) +{ + save_serialize_map(); + sSaveDialogCB = SaveDialogCB_PrintAskSaveText; + sSaveDialogIsPrinting = FALSE; +} + +static u8 RunSaveDialogCB(void) +{ + if (RunTextPrinters_CheckPrinter0Active() == TRUE) + return 0; + sSaveDialogIsPrinting = FALSE; + return sSaveDialogCB(); +} + +void Field_AskSaveTheGame(void) +{ + HelpSystem_BackupSomeVariable(); + HelpSystem_SetSomeVariable2(12); + StartMenu_PrepareForSave(); + CreateTask(task50_save_game, 80); +} + +static void PrintSaveTextWithFollowupFunc(const u8 *str, bool8 (*saveDialogCB)(void)) +{ + StringExpandPlaceholders(gStringVar4, str); + sub_80F7768(0, TRUE); + AddTextPrinterForMessage(TRUE); + sSaveDialogIsPrinting = TRUE; + sSaveDialogCB = saveDialogCB; +} + +static void task50_save_game(u8 taskId) +{ + switch (RunSaveDialogCB()) + { + case 0: + return; + case 2: + case 3: + gSpecialVar_Result = FALSE; + break; + case 1: + gSpecialVar_Result = TRUE; + break; + } + DestroyTask(taskId); + EnableBothScriptContexts(); + HelpSystem_RestoreSomeVariable(); +} + +static void CloseSaveMessageWindow(void) +{ + ClearDialogWindowAndFrame(0, TRUE); +} + +static void CloseSaveStatsWindow_(void) +{ + CloseSaveStatsWindow(); +} + +static void SetSaveDialogDelayTo60Frames(void) +{ + sSaveDialogDelay = 60; +} + +static bool8 SaveDialog_Wait60FramesOrAButtonHeld(void) +{ + sSaveDialogDelay--; + if (JOY_HELD(A_BUTTON)) + { + PlaySE(SE_SELECT); + return TRUE; + } + else if (sSaveDialogDelay == 0) + { + return TRUE; + } + else + { + return FALSE; + } +} + +static bool8 SaveDialog_Wait60FramesThenCheckAButtonHeld(void) +{ + if (sSaveDialogDelay == 0) + { + if (JOY_HELD(A_BUTTON)) + { + return TRUE; + } + else + { + return FALSE; + } + } + else + { + sSaveDialogDelay--; + return FALSE; + } +} + +static u8 SaveDialogCB_PrintAskSaveText(void) +{ + ClearStdWindowAndFrame(GetStartMenuWindowId(), FALSE); + RemoveStartMenuWindow(); + DestroyHelpMessageWindow(0); + PrintSaveStats(); + PrintSaveTextWithFollowupFunc(gText_WouldYouLikeToSaveTheGame, SaveDialogCB_AskSavePrintYesNoMenu); + return SAVECB_RETURN_CONTINUE; +} + +static u8 SaveDialogCB_AskSavePrintYesNoMenu(void) +{ + DisplayYesNoMenuDefaultYes(); + sSaveDialogCB = SaveDialogCB_AskSaveHandleInput; + return SAVECB_RETURN_CONTINUE; +} + +static u8 SaveDialogCB_AskSaveHandleInput(void) +{ + switch (Menu_ProcessInputNoWrapClearOnChoose()) + { + case 0: + if ((gSaveFileStatus != SAVE_STATUS_EMPTY && gSaveFileStatus != SAVE_STATUS_INVALID) || !gDifferentSaveFile) + sSaveDialogCB = SaveDialogCB_PrintAskOverwriteText; + else + sSaveDialogCB = SaveDialogCB_PrintSavingDontTurnOffPower; + break; + case 1: + case -1: + CloseSaveStatsWindow_(); + CloseSaveMessageWindow(); + return SAVECB_RETURN_CANCEL; + } + return SAVECB_RETURN_CONTINUE; +} + +static u8 SaveDialogCB_PrintAskOverwriteText(void) +{ + if (gDifferentSaveFile == TRUE) + PrintSaveTextWithFollowupFunc(gText_DifferentGameFile, SaveDialogCB_AskReplacePreviousFilePrintYesNoMenu); + else + PrintSaveTextWithFollowupFunc(gText_AlreadySaveFile_WouldLikeToOverwrite, SaveDialogCB_AskOverwritePrintYesNoMenu); + return SAVECB_RETURN_CONTINUE; +} + +static u8 SaveDialogCB_AskOverwritePrintYesNoMenu(void) +{ + DisplayYesNoMenuDefaultYes(); + sSaveDialogCB = SaveDialogCB_AskOverwriteOrReplacePreviousFileHandleInput; + return SAVECB_RETURN_CONTINUE; +} + +static u8 SaveDialogCB_AskReplacePreviousFilePrintYesNoMenu(void) +{ + DisplayYesNoMenuDefaultNo(); + sSaveDialogCB = SaveDialogCB_AskOverwriteOrReplacePreviousFileHandleInput; + return SAVECB_RETURN_CONTINUE; +} + +static u8 SaveDialogCB_AskOverwriteOrReplacePreviousFileHandleInput(void) +{ + switch (Menu_ProcessInputNoWrapClearOnChoose()) + { + case 0: + sSaveDialogCB = SaveDialogCB_PrintSavingDontTurnOffPower; + break; + case 1: + case -1: + CloseSaveStatsWindow_(); + CloseSaveMessageWindow(); + return SAVECB_RETURN_CANCEL; + } + return SAVECB_RETURN_CONTINUE; +} + +static u8 SaveDialogCB_PrintSavingDontTurnOffPower(void) +{ + sub_8112450(); + PrintSaveTextWithFollowupFunc(gText_SavingDontTurnOffThePower, SaveDialogCB_DoSave); + return SAVECB_RETURN_CONTINUE; +} + +static u8 SaveDialogCB_DoSave(void) +{ + IncrementGameStat(GAME_STAT_SAVED_GAME); + if (gDifferentSaveFile == TRUE) + { + TrySavingData(SAVE_OVERWRITE_DIFFERENT_FILE); + gDifferentSaveFile = FALSE; + } + else + { + TrySavingData(SAVE_NORMAL); + } + sSaveDialogCB = SaveDialogCB_PrintSaveResult; + return SAVECB_RETURN_CONTINUE; +} + +static u8 SaveDialogCB_PrintSaveResult(void) +{ + if (gSaveSucceeded == TRUE) + PrintSaveTextWithFollowupFunc(gText_PlayerSavedTheGame, SaveDialogCB_WaitPrintSuccessAndPlaySE); + else + PrintSaveTextWithFollowupFunc(gText_SaveError_PleaseExchangeBackupMemory, SaveDialogCB_WaitPrintErrorAndPlaySE); + SetSaveDialogDelayTo60Frames(); + return SAVECB_RETURN_CONTINUE; +} + +static u8 SaveDialogCB_WaitPrintSuccessAndPlaySE(void) +{ + if (!RunTextPrinters_CheckPrinter0Active()) + { + PlaySE(SE_SAVE); + sSaveDialogCB = SaveDialogCB_ReturnSuccess; + } + return SAVECB_RETURN_CONTINUE; +} + +static u8 SaveDialogCB_ReturnSuccess(void) +{ + if (!IsSEPlaying() && SaveDialog_Wait60FramesOrAButtonHeld()) + { + CloseSaveStatsWindow_(); + return SAVECB_RETURN_OKAY; + } + return SAVECB_RETURN_CONTINUE; +} + +static u8 SaveDialogCB_WaitPrintErrorAndPlaySE(void) +{ + if (!RunTextPrinters_CheckPrinter0Active()) + { + PlaySE(SE_BOO); + sSaveDialogCB = SaveDialogCB_ReturnError; + } + return SAVECB_RETURN_CONTINUE; +} + +static u8 SaveDialogCB_ReturnError(void) +{ + if (!SaveDialog_Wait60FramesThenCheckAButtonHeld()) + return SAVECB_RETURN_CONTINUE; + CloseSaveStatsWindow_(); + return SAVECB_RETURN_ERROR; +} + +static void VBlankCB_WhileSavingAfterLinkBattle(void) +{ + TransferPlttBuffer(); +} + +bool32 DoSetUpSaveAfterLinkBattle(u8 *state) +{ + switch (*state) + { + case 0: + SetGpuReg(REG_OFFSET_DISPCNT, 0); + SetVBlankCallback(NULL); + ScanlineEffect_Stop(); + DmaFill16Defvars(3, 0, (void *)PLTT, PLTT_SIZE); + DmaFillLarge16(3, 0, (void *)VRAM, VRAM_SIZE, 0x1000); + break; + case 1: + ResetSpriteData(); + ResetTasks(); + ResetPaletteFade(); + ScanlineEffect_Clear(); + break; + case 2: + ResetBgsAndClearDma3BusyFlags(FALSE); + InitBgsFromTemplates(0, sBGTemplates_AfterLinkSaveMessage, NELEMS(sBGTemplates_AfterLinkSaveMessage)); + InitWindows(sWindowTemplates_AfterLinkSaveMessage); + TextWindow_SetStdFrame0_WithPal(0, 0x008, 0xF0); + break; + case 3: + ShowBg(0); + BlendPalettes(0xFFFFFFFF, 16, RGB_BLACK); + SetVBlankCallback(VBlankCB_WhileSavingAfterLinkBattle); + EnableInterrupts(INTR_FLAG_VBLANK); + break; + case 4: + return TRUE; + } + (*state)++; + return FALSE; +} + +void CB2_SetUpSaveAfterLinkBattle(void) +{ + if (DoSetUpSaveAfterLinkBattle(&gMain.state)) + { + CreateTask(task50_after_link_battle_save, 80); + SetMainCallback2(CB2_WhileSavingAfterLinkBattle); + } +} + +static void CB2_WhileSavingAfterLinkBattle(void) +{ + RunTasks(); + UpdatePaletteFade(); +} + +static void task50_after_link_battle_save(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + if (!gPaletteFade.active) + { + switch (data[0]) + { + case 0: + FillWindowPixelBuffer(0, PIXEL_FILL(1)); + AddTextPrinterParameterized2(0, 2, gText_SavingDontTurnOffThePower2, 0xFF, NULL, 2, 1, 3); + DrawTextBorderOuter(0, 0x008, 0x0F); + PutWindowTilemap(0); + CopyWindowToVram(0, 3); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK); + if (gWirelessCommType != 0 && InUnionRoom()) + data[0] = 5; + else + data[0] = 1; + break; + case 1: + sub_804C1C0(); + sub_80DA45C(); + data[0] = 2; + break; + case 2: + if (sub_80DA4A0()) + { + sav2_gender2_inplace_and_xFE(); + data[0] = 3; + } + break; + case 3: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK); + data[0] = 4; + break; + case 4: + FreeAllWindowBuffers(); + SetMainCallback2(gMain.savedCallback); + DestroyTask(taskId); + break; + case 5: + CreateTask(sub_80DA634, 5); + data[0] = 6; + break; + case 6: + if (!FuncIsActiveTask(sub_80DA634)) + data[0] = 3; + break; + } + } +} + +static void PrintSaveStats(void) +{ + u8 y; + u8 x; + sSaveStatsWindowId = AddWindow(&sSaveStatsWindowTemplate); + TextWindow_SetStdFrame0_WithPal(sSaveStatsWindowId, 0x21D, 0xD0); + DrawStdFrameWithCustomTileAndPalette(sSaveStatsWindowId, FALSE, 0x21D, 0x0D); + SaveStatToString(SAVE_STAT_LOCATION, gStringVar4, 8); + x = (u32)(112 - GetStringWidth(2, gStringVar4, -1)) / 2; + AddTextPrinterParameterized3(sSaveStatsWindowId, 2, x, 0, sTextColor_LocationHeader, -1, gStringVar4); + x = (u32)(112 - GetStringWidth(2, gStringVar4, -1)) / 2; + AddTextPrinterParameterized3(sSaveStatsWindowId, 0, 2, 14, sTextColor_StatName, -1, gSaveStatName_Player); + SaveStatToString(SAVE_STAT_NAME, gStringVar4, 2); + Menu_PrintFormatIntlPlayerName(sSaveStatsWindowId, gStringVar4, 60, 14); + AddTextPrinterParameterized3(sSaveStatsWindowId, 0, 2, 28, sTextColor_StatName, -1, gSaveStatName_Badges); + SaveStatToString(SAVE_STAT_BADGES, gStringVar4, 2); + AddTextPrinterParameterized3(sSaveStatsWindowId, 0, 60, 28, sTextColor_StatValue, -1, gStringVar4); + y = 42; + if (FlagGet(FLAG_0x829) == TRUE) + { + AddTextPrinterParameterized3(sSaveStatsWindowId, 0, 2, 42, sTextColor_StatName, -1, gSaveStatName_Pokedex); + SaveStatToString(SAVE_STAT_POKEDEX, gStringVar4, 2); + AddTextPrinterParameterized3(sSaveStatsWindowId, 0, 60, 42, sTextColor_StatValue, -1, gStringVar4); + y = 56; + } + AddTextPrinterParameterized3(sSaveStatsWindowId, 0, 2, y, sTextColor_StatName, -1, gSaveStatName_Time); + SaveStatToString(SAVE_STAT_TIME, gStringVar4, 2); + AddTextPrinterParameterized3(sSaveStatsWindowId, 0, 60, y, sTextColor_StatValue, -1, gStringVar4); + CopyWindowToVram(sSaveStatsWindowId, 2); +} + +static void CloseSaveStatsWindow(void) +{ + ClearStdWindowAndFrame(sSaveStatsWindowId, FALSE); + RemoveWindow(sSaveStatsWindowId); +} + +static void CloseStartMenu(void) +{ + PlaySE(SE_SELECT); + ClearStdWindowAndFrame(GetStartMenuWindowId(), TRUE); + RemoveStartMenuWindow(); + sub_80696C0(); + ScriptContext2_Disable(); +} + +void AppendToList(u8 *list, u8 *cursor, u8 newEntry) +{ + list[*cursor] = newEntry; + (*cursor)++; +} diff --git a/src/teachy_tv.c b/src/teachy_tv.c index 18da0997c..aa273073b 100644 --- a/src/teachy_tv.c +++ b/src/teachy_tv.c @@ -510,7 +510,7 @@ static void TeachyTvMainCallback(void) ScheduleBgCopyTilemapToVram(1); ScheduleBgCopyTilemapToVram(2); ScheduleBgCopyTilemapToVram(3); - sub_812B1E0(9); // help system something + HelpSystem_SetSomeVariable(9); // help system something BlendPalettes(0xFFFFFFFF, 0x10, 0); BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0); SetVBlankCallback(TeachyTvVblankHandler); @@ -736,7 +736,7 @@ static void TeachyTvOptionListController(u8 taskId) { input = ListMenu_ProcessInput(data[0]); ListMenuGetScrollAndRow(data[0], &sStaticResources.scrollOffset, &sStaticResources.selectedRow); - if ((JOY_NEW(SELECT_BUTTON) && sStaticResources.callback != ReturnToBagFromKeyItem)) + if ((JOY_NEW(SELECT_BUTTON) && sStaticResources.callback != CB2_BagMenuFromStartMenu)) { PlaySE(SE_SELECT); TeachyTvQuitBeginFade(taskId); diff --git a/src/trainer_tower.c b/src/trainer_tower.c index 17f6b9e09..9512e73d1 100644 --- a/src/trainer_tower.c +++ b/src/trainer_tower.c @@ -1278,7 +1278,7 @@ void sub_815E720(void) sub_815EC0C(); windowId = AddWindow(gUnknown_847A218); - sub_80F6E9C(); + LoadStdWindowFrameGfx(); DrawStdWindowFrame(windowId, FALSE); AddTextPrinterParameterized(windowId, 2, gUnknown_83FE982, 0x4A, 0, 0xFF, NULL); |