From 72f76b19b35273581f84467efb96a08b9dca6753 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Mon, 22 Aug 2022 20:27:23 -0400 Subject: [PATCH 1/5] Sync script.c --- asm/macros/event.inc | 2 +- include/script.h | 29 +++-- src/battle_setup.c | 32 +++--- src/berry_crush.c | 6 +- src/cable_club.c | 22 ++-- src/daycare.c | 6 +- src/dodrio_berry_picking.c | 2 +- src/event_object_movement.c | 2 +- src/field_control_avatar.c | 34 +++--- src/field_effect.c | 44 ++++---- src/field_fadetransition.c | 74 ++++++------- src/field_player_avatar.c | 20 ++-- src/field_poison.c | 4 +- src/field_screen_effect.c | 12 +-- src/field_specials.c | 24 ++--- src/field_tasks.c | 2 +- src/field_weather_effects.c | 2 +- src/fldeff_cut.c | 6 +- src/fldeff_flash.c | 2 +- src/fldeff_rocksmash.c | 6 +- src/fldeff_strength.c | 4 +- src/fldeff_sweetscent.c | 2 +- src/hof_pc.c | 4 +- src/item_menu.c | 4 +- src/item_use.c | 8 +- src/itemfinder.c | 8 +- src/learn_move.c | 2 +- src/map_preview_screen.c | 2 +- src/mevent_client.c | 2 +- src/mystery_event_script.c | 2 +- src/new_game.c | 2 +- src/overworld.c | 80 +++++++------- src/party_menu.c | 4 +- src/party_menu_specials.c | 4 +- src/player_pc.c | 4 +- src/pokemon_jump.c | 2 +- src/pokemon_storage_system_2.c | 6 +- src/quest_log.c | 20 ++-- src/quest_log_player.c | 6 +- src/rfu_union_tool.c | 2 +- src/safari_zone.c | 10 +- src/scrcmd.c | 40 +++---- src/script.c | 190 +++++++++++++++++++-------------- src/script_menu.c | 8 +- src/shop.c | 6 +- src/ss_anne.c | 2 +- src/start_menu.c | 10 +- src/trade_scene.c | 2 +- src/trainer_see.c | 2 +- src/union_room.c | 18 ++-- src/vs_seeker.c | 4 +- src/wild_encounter.c | 2 +- 52 files changed, 408 insertions(+), 385 deletions(-) diff --git a/asm/macros/event.inc b/asm/macros/event.inc index 55c6469a8..50115b361 100644 --- a/asm/macros/event.inc +++ b/asm/macros/event.inc @@ -285,7 +285,7 @@ .endm @ Blocks script execution until a command or C code manually unblocks it. Generally used with specific - @ commands and specials. Calling EnableBothScriptContexts for instance will allow execution to continue. + @ commands and specials. Calling ScriptContext_Enable for instance will allow execution to continue. .macro waitstate .byte 0x27 .endm diff --git a/include/script.h b/include/script.h index cd3268181..2a3c727c9 100644 --- a/include/script.h +++ b/include/script.h @@ -28,26 +28,21 @@ u8 SetupBytecodeScript(struct ScriptContext *ctx, const u8 *ptr); void SetupNativeScript(struct ScriptContext *ctx, bool8 (*ptr)(void)); void StopScript(struct ScriptContext *ctx); bool8 RunScriptCommand(struct ScriptContext *ctx); -u8 ScriptPush(struct ScriptContext *ctx, const u8 *ptr); -const u8 *ScriptPop(struct ScriptContext *ctx); void ScriptJump(struct ScriptContext *ctx, const u8 *ptr); void ScriptCall(struct ScriptContext *ctx, const u8 *ptr); void ScriptReturn(struct ScriptContext *ctx); u16 ScriptReadHalfword(struct ScriptContext *ctx); u32 ScriptReadWord(struct ScriptContext *ctx); -void ScriptContext2_Enable(void); -void ScriptContext2_Disable(void); -bool8 ScriptContext2_IsEnabled(void); -void ScriptContext1_Init(void); -bool8 ScriptContext1_IsScriptSetUp(void); -bool8 ScriptContext2_RunScript(void); -void ScriptContext1_SetupScript(const u8 *ptr); -void ScriptContext1_Stop(void); -void EnableBothScriptContexts(void); -void ScriptContext2_RunNewScript(const u8 *ptr); -u8 *mapheader_get_tagged_pointer(u8 tag); -void mapheader_run_script_by_tag(u8 tag); -u8 *mapheader_get_first_match_from_tagged_ptr_list(u8 tag); +void LockPlayerFieldControls(void); +void UnlockPlayerFieldControls(void); +bool8 ArePlayerFieldControlsLocked(void); +void ScriptContext_Init(void); +bool8 ScriptContext_IsEnabled(void); +bool8 ScriptContext_RunScript(void); +void ScriptContext_SetupScript(const u8 *ptr); +void ScriptContext_Stop(void); +void ScriptContext_Enable(void); +void RunScriptImmediately(const u8 *ptr); void RunOnLoadMapScript(void); void RunOnTransitionMapScript(void); void RunOnResumeMapScript(void); @@ -60,7 +55,7 @@ void ClearRamScript(void); bool8 InitRamScript(u8 *script, u16 scriptSize, u8 mapGroup, u8 mapNum, u8 objectId); const u8 *GetRamScript(u8 objectId, const u8 *script); bool32 ValidateRamScript(void); -void MEventSetRamScript(u8 * script, u16 scriptSize); +void InitRamScript_NoObjectEvent(u8 * script, u16 scriptSize); u8 * GetSavedRamScriptIfValid(void); void RegisterQuestLogInput(u8 var); void ClearMsgBoxCancelableState(void); @@ -77,7 +72,7 @@ bool8 CanWalkAwayToCancelMsgBox(void); void SetWalkingIntoSignVars(void); bool8 IsMsgBoxWalkawayDisabled(void); -extern const u8 *gRAMScriptPtr; +extern const u8 *gRamScriptRetAddr; extern u8 gWalkAwayFromSignInhibitTimer; #endif // GUARD_SCRIPT_H diff --git a/src/battle_setup.c b/src/battle_setup.c index 9f99defd5..375ba3d43 100644 --- a/src/battle_setup.c +++ b/src/battle_setup.c @@ -236,7 +236,7 @@ void StartWildBattle(void) static void DoStandardWildBattle(void) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); FreezeObjectEvents(); StopPlayerAvatar(); gMain.savedCallback = CB2_EndWildBattle; @@ -248,7 +248,7 @@ static void DoStandardWildBattle(void) void StartRoamerBattle(void) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); FreezeObjectEvents(); StopPlayerAvatar(); gMain.savedCallback = CB2_EndWildBattle; @@ -260,7 +260,7 @@ void StartRoamerBattle(void) static void DoSafariBattle(void) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); FreezeObjectEvents(); StopPlayerAvatar(); gMain.savedCallback = CB2_EndSafariBattle; @@ -270,7 +270,7 @@ static void DoSafariBattle(void) static void DoGhostBattle(void) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); FreezeObjectEvents(); StopPlayerAvatar(); gMain.savedCallback = CB2_EndWildBattle; @@ -291,7 +291,7 @@ static void DoTrainerBattle(void) void StartOldManTutorialBattle(void) { CreateMaleMon(&gEnemyParty[0], SPECIES_WEEDLE, 5); - ScriptContext2_Enable(); + LockPlayerFieldControls(); gMain.savedCallback = CB2_ReturnToFieldContinueScriptPlayMapMusic; gBattleTypeFlags = BATTLE_TYPE_OLD_MAN_TUTORIAL; CreateBattleStartTask(B_TRANSITION_SLICED_SCREEN, 0); @@ -299,7 +299,7 @@ void StartOldManTutorialBattle(void) void StartScriptedWildBattle(void) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); gMain.savedCallback = CB2_EndScriptedWildBattle; gBattleTypeFlags = BATTLE_TYPE_WILD_SCRIPTED; CreateBattleStartTask(GetWildBattleTransition(), 0); @@ -309,7 +309,7 @@ void StartScriptedWildBattle(void) void StartMarowakBattle(void) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); gMain.savedCallback = CB2_EndMarowakBattle; if (CheckBagHasItem(ITEM_SILPH_SCOPE, 1)) { @@ -328,7 +328,7 @@ void StartMarowakBattle(void) void StartSouthernIslandBattle(void) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); gMain.savedCallback = CB2_EndScriptedWildBattle; gBattleTypeFlags = BATTLE_TYPE_LEGENDARY; CreateBattleStartTask(GetWildBattleTransition(), 0); @@ -340,7 +340,7 @@ void StartLegendaryBattle(void) { u16 species; - ScriptContext2_Enable(); + LockPlayerFieldControls(); gMain.savedCallback = CB2_EndScriptedWildBattle; gBattleTypeFlags = BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_LEGENDARY_FRLG; species = GetMonData(&gEnemyParty[0], MON_DATA_SPECIES); @@ -369,7 +369,7 @@ void StartLegendaryBattle(void) void StartGroudonKyogreBattle(void) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); gMain.savedCallback = CB2_EndScriptedWildBattle; gBattleTypeFlags = BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_KYOGRE_GROUDON; if (gGameVersion == VERSION_FIRE_RED) @@ -382,7 +382,7 @@ void StartGroudonKyogreBattle(void) void StartRegiBattle(void) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); gMain.savedCallback = CB2_EndScriptedWildBattle; gBattleTypeFlags = BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_REGI; CreateBattleStartTask(B_TRANSITION_BLUR, MUS_RS_VS_TRAINER); @@ -400,7 +400,7 @@ static void sub_807FAF8(void) // not used static void sub_807FB08(void) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); FreezeObjectEvents(); StopPlayerAvatar(); gMain.savedCallback = sub_807FAF8; @@ -823,8 +823,8 @@ void ConfigureAndSetUpOneTrainerBattle(u8 trainerEventObjId, const u8 *trainerSc gSelectedObjectEvent = trainerEventObjId; gSpecialVar_LastTalked = gObjectEvents[trainerEventObjId].localId; BattleSetup_ConfigureTrainerBattle(trainerScript + 1); - ScriptContext1_SetupScript(EventScript_DoTrainerBattleFromApproach); - ScriptContext2_Enable(); + ScriptContext_SetupScript(EventScript_DoTrainerBattleFromApproach); + LockPlayerFieldControls(); } bool32 GetTrainerFlagFromScriptPointer(const u8 *data) @@ -889,7 +889,7 @@ void StartTrainerBattle(void) gBattleTypeFlags |= BATTLE_TYPE_FIRST_BATTLE; gMain.savedCallback = CB2_EndTrainerBattle; DoTrainerBattle(); - ScriptContext1_Stop(); + ScriptContext_Stop(); } static void CB2_EndTrainerBattle(void) @@ -964,7 +964,7 @@ void StartRematchBattle(void) gBattleTypeFlags = BATTLE_TYPE_TRAINER; gMain.savedCallback = CB2_EndRematchBattle; DoTrainerBattle(); - ScriptContext1_Stop(); + ScriptContext_Stop(); } void ShowTrainerIntroSpeech(void) diff --git a/src/berry_crush.c b/src/berry_crush.c index 7843ce5cb..b21158cbb 100644 --- a/src/berry_crush.c +++ b/src/berry_crush.c @@ -3178,8 +3178,8 @@ static void Task_ShowBerryCrushRankings(u8 taskId) ClearWindowTilemap(tWindowId); RemoveWindow(tWindowId); DestroyTask(taskId); - EnableBothScriptContexts(); - ScriptContext2_Disable(); + ScriptContext_Enable(); + UnlockPlayerFieldControls(); tState = 0; return; } @@ -3190,7 +3190,7 @@ void ShowBerryCrushRankings(void) { u8 taskId; - ScriptContext2_Enable(); + LockPlayerFieldControls(); taskId = CreateTask(Task_ShowBerryCrushRankings, 0); gTasks[taskId].tPressingSpeeds(0) = gSaveBlock2Ptr->berryCrush.pressingSpeeds[0]; gTasks[taskId].tPressingSpeeds(1) = gSaveBlock2Ptr->berryCrush.pressingSpeeds[1]; diff --git a/src/cable_club.c b/src/cable_club.c index e4238bb40..42bf2bc59 100644 --- a/src/cable_club.c +++ b/src/cable_club.c @@ -405,7 +405,7 @@ static void Task_Linkup_6a(u8 taskId) if (gLinkType == LINKTYPE_BERRY_BLENDER_SETUP) *UnusedVarNeededToMatch += 0; DestroyLinkPlayerCountDisplayWindow(gTasks[taskId].data[5]); - EnableBothScriptContexts(); + ScriptContext_Enable(); DestroyTask(taskId); } else @@ -421,7 +421,7 @@ static void Task_Linkup_7(u8 taskId) if (!gReceivedRemoteLinkPlayers) { DestroyLinkPlayerCountDisplayWindow(gTasks[taskId].data[5]); - EnableBothScriptContexts(); + ScriptContext_Enable(); RemoveWindow(gTasks[taskId].data[5]); DestroyTask(taskId); } @@ -432,7 +432,7 @@ static void Task_Linkup_Canceled(u8 taskId) gSpecialVar_Result = 5; DestroyLinkPlayerCountDisplayWindow(gTasks[taskId].data[5]); HideFieldMessageBox(); - EnableBothScriptContexts(); + ScriptContext_Enable(); DestroyTask(taskId); } @@ -441,7 +441,7 @@ static void Task_Linkup_ErroredOut(u8 taskId) gSpecialVar_Result = 6; DestroyLinkPlayerCountDisplayWindow(gTasks[taskId].data[5]); HideFieldMessageBox(); - EnableBothScriptContexts(); + ScriptContext_Enable(); DestroyTask(taskId); } @@ -807,7 +807,7 @@ static void Task_EnterCableClubSeat(u8 taskId) SetLinkWaitingForScript(); sub_80F771C(TRUE); DestroyTask(taskId); - EnableBothScriptContexts(); + ScriptContext_Enable(); break; } } @@ -816,7 +816,7 @@ static void CreateEnterCableClubSeatTaskWithFollowupFunc(TaskFunc followUpFunc) { u8 taskId = CreateTask(Task_EnterCableClubSeat, 80); SetTaskFuncWithFollowupFunc(taskId, Task_EnterCableClubSeat, followUpFunc); - ScriptContext1_Stop(); + ScriptContext_Stop(); } static void Task_StartWiredCableClubTrade(u8 taskId) @@ -825,7 +825,7 @@ static void Task_StartWiredCableClubTrade(u8 taskId) switch (task->data[0]) { case 0: - ScriptContext2_Enable(); + LockPlayerFieldControls(); FadeScreen(FADE_TO_BLACK, 0); ClearLinkCallback_2(); task->data[0]++; @@ -857,7 +857,7 @@ static void Task_StartWirelessCableClubTrade(u8 taskId) switch (data[0]) { case 0: - ScriptContext2_Enable(); + LockPlayerFieldControls(); FadeScreen(FADE_TO_BLACK, 0); ClearLinkRfuCallback(); data[0]++; @@ -899,7 +899,7 @@ static void CreateTask_StartWiredCableClubTrade(void) void StartWiredCableClubTrade(void) { CreateTask_StartWiredCableClubTrade(); - ScriptContext1_Stop(); + ScriptContext_Stop(); } void EnterColosseumPlayerSpot(void) @@ -914,7 +914,7 @@ void EnterColosseumPlayerSpot(void) static void Debug_CreateTaskEnterCableClubSeat(void) { CreateTask(Task_EnterCableClubSeat, 80); - ScriptContext1_Stop(); + ScriptContext_Stop(); } void Script_ShowLinkTrainerCard(void) @@ -952,7 +952,7 @@ static void sub_8081AE4(u8 taskId) { if (!gReceivedRemoteLinkPlayers) { - EnableBothScriptContexts(); + ScriptContext_Enable(); DestroyTask(taskId); } } diff --git a/src/daycare.c b/src/daycare.c index f45aaceff..5c7e8ee9a 100644 --- a/src/daycare.c +++ b/src/daycare.c @@ -1515,7 +1515,7 @@ static void Task_HandleDaycareLevelMenuInput(u8 taskId) ClearStdWindowAndFrame(gTasks[taskId].tWindowId, TRUE); RemoveWindow(gTasks[taskId].tWindowId); DestroyTask(taskId); - EnableBothScriptContexts(); + ScriptContext_Enable(); } else if (gMain.newKeys & B_BUTTON) { @@ -1524,7 +1524,7 @@ static void Task_HandleDaycareLevelMenuInput(u8 taskId) ClearStdWindowAndFrame(gTasks[taskId].tWindowId, TRUE); RemoveWindow(gTasks[taskId].tWindowId); DestroyTask(taskId); - EnableBothScriptContexts(); + ScriptContext_Enable(); } } @@ -1756,7 +1756,7 @@ static void VBlankCB_EggHatch(void) void EggHatch(void) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); CreateTask(Task_EggHatch, 10); BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 16, 0); HelpSystem_Disable(); diff --git a/src/dodrio_berry_picking.c b/src/dodrio_berry_picking.c index 24f5bc8e6..69b42f24a 100644 --- a/src/dodrio_berry_picking.c +++ b/src/dodrio_berry_picking.c @@ -2984,7 +2984,7 @@ static void Task_ShowDodrioBerryPickingRecords(u8 taskId) { RemoveWindow(tWindowId); DestroyTask(taskId); - EnableBothScriptContexts(); + ScriptContext_Enable(); } break; } diff --git a/src/event_object_movement.c b/src/event_object_movement.c index 3c2707173..c7f6b24f0 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -1690,7 +1690,7 @@ void MakeObjectTemplateFromObjectEventGraphicsInfo(u16 graphicsId, void (*callba do { - if (ScriptContext1_IsScriptSetUp() != TRUE && sub_8112CAC() == TRUE) + if (ScriptContext_IsEnabled() != TRUE && sub_8112CAC() == TRUE) spriteTemplate->callback = sub_811246C; else spriteTemplate->callback = callback; diff --git a/src/field_control_avatar.c b/src/field_control_avatar.c index 9b3d23fe7..949369b77 100644 --- a/src/field_control_avatar.c +++ b/src/field_control_avatar.c @@ -97,7 +97,7 @@ void FieldGetPlayerInput(struct FieldInput *input, u16 newKeys, u16 heldKeys) u8 tileTransitionState = gPlayerAvatar.tileTransitionState; bool8 forcedMove = MetatileBehavior_IsForcedMovementTile(GetPlayerCurMetatileBehavior()); - if (!ScriptContext1_IsScriptSetUp() && IsQuestLogInputDpad() == TRUE) + if (!ScriptContext_IsEnabled() && IsQuestLogInputDpad() == TRUE) { QuestLogOverrideJoyVars(input, &newKeys, &heldKeys); } @@ -300,7 +300,7 @@ int ProcessPlayerFieldInput(struct FieldInput *input) void FieldInput_HandleCancelSignpost(struct FieldInput * input) { - if (ScriptContext1_IsScriptSetUp() == TRUE) + if (ScriptContext_IsEnabled() == TRUE) { if (gWalkAwayFromSignInhibitTimer != 0) gWalkAwayFromSignInhibitTimer--; @@ -318,13 +318,13 @@ void FieldInput_HandleCancelSignpost(struct FieldInput * input) RegisterQuestLogInput(QL_INPUT_LEFT); else if (input->dpadDirection == DIR_EAST) RegisterQuestLogInput(QL_INPUT_RIGHT); - ScriptContext1_SetupScript(EventScript_CancelMessageBox); - ScriptContext2_Enable(); + ScriptContext_SetupScript(EventScript_CancelMessageBox); + LockPlayerFieldControls(); } else if (input->pressedStartButton) { - ScriptContext1_SetupScript(EventScript_CancelMessageBox); - ScriptContext2_Enable(); + ScriptContext_SetupScript(EventScript_CancelMessageBox); + LockPlayerFieldControls(); if (!FuncIsActiveTask(Task_QuestLogPlayback_OpenStartMenu)) CreateTask(Task_QuestLogPlayback_OpenStartMenu, 8); } @@ -334,7 +334,7 @@ void FieldInput_HandleCancelSignpost(struct FieldInput * input) static void Task_QuestLogPlayback_OpenStartMenu(u8 taskId) { - if (!ScriptContext2_IsEnabled()) + if (!ArePlayerFieldControlsLocked()) { PlaySE(SE_WIN_OPEN); ShowStartMenu(); @@ -379,7 +379,7 @@ static bool8 TryStartInteractionScript(struct MapPosition *position, u16 metatil && script != EventScript_PC) PlaySE(SE_SELECT); - ScriptContext1_SetupScript(script); + ScriptContext_SetupScript(script); return TRUE; } @@ -636,7 +636,7 @@ static bool8 TryStartCoordEventScript(struct MapPosition *position) if (script == NULL) return FALSE; - ScriptContext1_SetupScript(script); + ScriptContext_SetupScript(script); return TRUE; } @@ -659,18 +659,18 @@ static bool8 TryStartStepCountScript(u16 metatileBehavior) { if (UpdateVsSeekerStepCounter() == TRUE) { - ScriptContext1_SetupScript(EventScript_VsSeekerChargingDone); + ScriptContext_SetupScript(EventScript_VsSeekerChargingDone); return TRUE; } else if (UpdatePoisonStepCounter() == TRUE) { - ScriptContext1_SetupScript(EventScript_FieldPoison); + ScriptContext_SetupScript(EventScript_FieldPoison); return TRUE; } else if (ShouldEggHatch()) { IncrementGameStat(GAME_STAT_HATCHED_EGGS); - ScriptContext1_SetupScript(EventScript_EggHatch); + ScriptContext_SetupScript(EventScript_EggHatch); return TRUE; } } @@ -807,7 +807,7 @@ static u8 GetFacingSignpostType(u16 metatileBehavior, u8 playerDirection) static void SetUpWalkIntoSignScript(const u8 *script, u8 playerDirection) { gSpecialVar_Facing = playerDirection; - ScriptContext1_SetupScript(script); + ScriptContext_SetupScript(script); SetWalkingIntoSignVars(); MsgSetSignPost(); } @@ -889,7 +889,7 @@ static bool8 TryStartWarpEventScript(struct MapPosition *position, u16 metatileB if (MetatileBehavior_IsFallWarp(metatileBehavior) == TRUE) { ResetInitialPlayerAvatarState(); - ScriptContext1_SetupScript(EventScript_1C1361); + ScriptContext_SetupScript(EventScript_1C1361); return TRUE; } DoWarp(); @@ -1033,7 +1033,7 @@ static const u8 *TryRunCoordEventScript(struct CoordEvent *coordEvent) } if (coordEvent->trigger == 0) { - ScriptContext2_RunNewScript(coordEvent->script); + RunScriptImmediately(coordEvent->script); return NULL; } if (VarGet(coordEvent->trigger) == (u8)coordEvent->index) @@ -1086,8 +1086,8 @@ void HandleBoulderActivateVictoryRoadSwitch(u16 x, u16 y) if (events[i].x + 7 == x && events[i].y + 7 == y) { QuestLog_CutRecording(); - ScriptContext1_SetupScript(events[i].script); - ScriptContext2_Enable(); + ScriptContext_SetupScript(events[i].script); + LockPlayerFieldControls(); } } } diff --git a/src/field_effect.c b/src/field_effect.c index 541ceba13..f30774815 100644 --- a/src/field_effect.c +++ b/src/field_effect.c @@ -1071,7 +1071,7 @@ static void FieldCallback_UseFly(void) { FadeInFromBlack(); CreateTask(Task_UseFly, 0); - ScriptContext2_Enable(); + LockPlayerFieldControls(); FreezeObjectEvents(); gFieldCallback = NULL; } @@ -1108,7 +1108,7 @@ static void FieldCallback_FlyIntoMap(void) gObjectEvents[gPlayerAvatar.objectEventId].invisible = TRUE; if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_SURFING) ObjectEventTurn(&gObjectEvents[gPlayerAvatar.objectEventId], DIR_WEST); - ScriptContext2_Enable(); + LockPlayerFieldControls(); FreezeObjectEvents(); gFieldCallback = NULL; } @@ -1126,7 +1126,7 @@ static void Task_FlyIntoMap(u8 taskId) } if (!FieldEffectActiveListContains(FLDEFF_FLY_IN)) { - ScriptContext2_Disable(); + UnlockPlayerFieldControls(); UnfreezeObjectEvents(); DestroyTask(taskId); } @@ -1156,7 +1156,7 @@ void FieldCB_FallWarpExit(void) Overworld_PlaySpecialMapMusic(); WarpFadeInScreen(); QuestLog_DrawPreviouslyOnQuestHeaderIfInPlaybackMode(); - ScriptContext2_Enable(); + LockPlayerFieldControls(); FreezeObjectEvents(); CreateTask(Task_FallWarpFieldEffect, 0); gFieldCallback = NULL; @@ -1274,7 +1274,7 @@ static bool8 FallWarpEffect_7(struct Task *task) { s16 x, y; gPlayerAvatar.preventStep = FALSE; - ScriptContext2_Disable(); + UnlockPlayerFieldControls(); CameraObjectReset1(); UnfreezeObjectEvents(); InstallCameraPanAheadCallback(); @@ -1459,7 +1459,7 @@ static void FieldCB_EscalatorWarpIn(void) Overworld_PlaySpecialMapMusic(); WarpFadeInScreen(); QuestLog_DrawPreviouslyOnQuestHeaderIfInPlaybackMode(); - ScriptContext2_Enable(); + LockPlayerFieldControls(); FreezeObjectEvents(); CreateTask(Task_EscalatorWarpInFieldEffect, 0); gFieldCallback = NULL; @@ -1576,7 +1576,7 @@ static bool8 EscalatorWarpInEffect_7(struct Task *task) if (ObjectEventClearHeldMovementIfFinished(objectEvent)) { CameraObjectReset1(); - ScriptContext2_Disable(); + UnlockPlayerFieldControls(); UnfreezeObjectEvents(); ObjectEventSetHeldMovement(objectEvent, GetWalkNormalMovementAction(DIR_EAST)); DestroyTask(FindTaskIdByFunc(Task_EscalatorWarpInFieldEffect)); @@ -1617,7 +1617,7 @@ static void Task_UseWaterfall(u8 taskId) static bool8 waterfall_0_setup(struct Task *task, struct ObjectEvent * playerObj) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); gPlayerAvatar.preventStep = TRUE; task->data[0]++; return FALSE; @@ -1625,7 +1625,7 @@ static bool8 waterfall_0_setup(struct Task *task, struct ObjectEvent * playerObj static bool8 waterfall_1_do_anim_probably(struct Task *task, struct ObjectEvent * playerObj) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); if (!ObjectEventIsMovementOverridden(playerObj)) { ObjectEventClearHeldMovementIfFinished(playerObj); @@ -1660,7 +1660,7 @@ static bool8 waterfall_4_wait_player_move_probably(struct Task *task, struct Obj task->data[0] = 3; return TRUE; } - ScriptContext2_Disable(); + UnlockPlayerFieldControls(); gPlayerAvatar.preventStep = FALSE; DestroyTask(FindTaskIdByFunc(Task_UseWaterfall)); FieldEffectActiveListRemove(FLDEFF_USE_WATERFALL); @@ -1702,7 +1702,7 @@ static bool8 DiveFieldEffect_Init(struct Task *task) static bool8 DiveFieldEffect_ShowMon(struct Task *task) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); gFieldEffectArguments[0] = task->data[15]; FieldEffectStart(FLDEFF_FIELD_MOVE_SHOW_MON_INIT); task->data[0]++; @@ -1869,7 +1869,7 @@ static void FieldCB_LavaridgeGymB1FWarpExit(void) Overworld_PlaySpecialMapMusic(); WarpFadeInScreen(); QuestLog_DrawPreviouslyOnQuestHeaderIfInPlaybackMode(); - ScriptContext2_Enable(); + LockPlayerFieldControls(); gFieldCallback = NULL; CreateTask(Task_LavaridgeGymB1FWarpExit, 0); } @@ -1922,7 +1922,7 @@ static bool8 LavaridgeGymB1FWarpExitEffect_4(struct Task *task, struct ObjectEve if (ObjectEventClearHeldMovementIfFinished(objectEvent)) { gPlayerAvatar.preventStep = FALSE; - ScriptContext2_Disable(); + UnlockPlayerFieldControls(); UnfreezeObjectEvents(); DestroyTask(FindTaskIdByFunc(Task_LavaridgeGymB1FWarpExit)); } @@ -2084,7 +2084,7 @@ static void (*const sEscapeRopeWarpOutEffectFuncs[])(struct Task *task) = void StartEscapeRopeFieldEffect(void) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); FreezeObjectEvents(); CreateTask(Task_EscapeRopeWarpOut, 80); } @@ -2270,7 +2270,7 @@ static void FieldCallback_EscapeRopeExit(void) Overworld_PlaySpecialMapMusic(); WarpFadeInScreen(); QuestLog_DrawPreviouslyOnQuestHeaderIfInPlaybackMode(); - ScriptContext2_Enable(); + LockPlayerFieldControls(); FreezeObjectEvents(); gFieldCallback = NULL; gObjectEvents[gPlayerAvatar.objectEventId].invisible = TRUE; @@ -2311,7 +2311,7 @@ static void EscapeRopeWarpInEffect_Spin(struct Task *task) { playerObj->invisible = FALSE; playerObj->fixedPriority = FALSE; - ScriptContext2_Disable(); + UnlockPlayerFieldControls(); UnfreezeObjectEvents(); DestroyTask(FindTaskIdByFunc(Task_EscapeRopeWarpIn)); } @@ -2360,7 +2360,7 @@ static void Task_DoTeleportFieldEffect(u8 taskId) static void TeleportFieldEffectTask1(struct Task *task) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); FreezeObjectEvents(); CameraObjectReset2(); task->data[15] = GetPlayerFacingDirection(); @@ -2447,7 +2447,7 @@ static void FieldCallback_TeleportIn(void) Overworld_PlaySpecialMapMusic(); WarpFadeInScreen(); QuestLog_DrawPreviouslyOnQuestHeaderIfInPlaybackMode(); - ScriptContext2_Enable(); + LockPlayerFieldControls(); FreezeObjectEvents(); gFieldCallback = NULL; gObjectEvents[gPlayerAvatar.objectEventId].invisible = TRUE; @@ -2528,7 +2528,7 @@ static void TeleportInFieldEffectTask3(struct Task *task) task->data[1] = 8; if ((++task->data[2]) > 4 && task->data[14] == objectEvent->facingDirection) { - ScriptContext2_Disable(); + UnlockPlayerFieldControls(); CameraObjectReset1(); UnfreezeObjectEvents(); DestroyTask(FindTaskIdByFunc(Task_DoTeleportInFieldEffect)); @@ -2997,7 +2997,7 @@ static void Task_FldEffUseSurf(u8 taskId) static void UseSurfEffect_1(struct Task *task) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); FreezeObjectEvents(); gPlayerAvatar.preventStep = TRUE; SetPlayerAvatarStateMask(PLAYER_AVATAR_FLAG_SURFING); @@ -3058,7 +3058,7 @@ static void UseSurfEffect_5(struct Task *task) ObjectEventSetHeldMovement(objectEvent, GetFaceDirectionMovementAction(objectEvent->movementDirection)); SetSurfBlob_BobState(objectEvent->fieldEffectSpriteId, BOB_PLAYER_AND_MON); UnfreezeObjectEvents(); - ScriptContext2_Disable(); + UnlockPlayerFieldControls(); FieldEffectActiveListRemove(FLDEFF_USE_SURF); DestroyTask(FindTaskIdByFunc(Task_FldEffUseSurf)); SetHelpContext(HELPCONTEXT_SURFING); @@ -3093,7 +3093,7 @@ static void Task_FldEffUseVsSeeker(u8 taskId) static void UseVsSeekerEffect_1(struct Task *task) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); FreezeObjectEvents(); gPlayerAvatar.preventStep = TRUE; task->data[0]++; diff --git a/src/field_fadetransition.c b/src/field_fadetransition.c index 31de46ab2..020798f46 100644 --- a/src/field_fadetransition.c +++ b/src/field_fadetransition.c @@ -137,7 +137,7 @@ static void Task_ContinueScriptUnionRoom(u8 taskId) void FieldCB_ContinueScriptUnionRoom(void) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); Overworld_PlaySpecialMapMusic(); FadeInFromBlack(); CreateTask(Task_ContinueScriptUnionRoom, 10); @@ -148,13 +148,13 @@ static void Task_ContinueScript(u8 taskId) if (FieldFadeTransitionBackgroundEffectIsFinished() == TRUE) { DestroyTask(taskId); - EnableBothScriptContexts(); + ScriptContext_Enable(); } } void FieldCB_ContinueScriptHandleMusic(void) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); Overworld_PlaySpecialMapMusic(); FadeInFromBlack(); CreateTask(Task_ContinueScript, 10); @@ -162,7 +162,7 @@ void FieldCB_ContinueScriptHandleMusic(void) void FieldCB_ContinueScript(void) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); FadeInFromBlack(); CreateTask(Task_ContinueScript, 10); } @@ -186,7 +186,7 @@ static void Task_ReturnToFieldCableLink(u8 taskId) case 2: if (FieldFadeTransitionBackgroundEffectIsFinished() == TRUE) { - ScriptContext2_Disable(); + UnlockPlayerFieldControls(); DestroyTask(taskId); } break; @@ -195,7 +195,7 @@ static void Task_ReturnToFieldCableLink(u8 taskId) void FieldCB_ReturnToFieldCableLink(void) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); Overworld_PlaySpecialMapMusic(); palette_bg_faded_fill_black(); CreateTask(Task_ReturnToFieldCableLink, 10); @@ -221,7 +221,7 @@ static void Task_ReturnToFieldRecordMixing(u8 taskId) if (FieldFadeTransitionBackgroundEffectIsFinished() == TRUE) { StartSendingKeysToLink(); - ScriptContext2_Disable(); + UnlockPlayerFieldControls(); DestroyTask(taskId); } break; @@ -230,7 +230,7 @@ static void Task_ReturnToFieldRecordMixing(u8 taskId) void FieldCB_ReturnToFieldWirelessLink(void) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); Overworld_PlaySpecialMapMusic(); palette_bg_faded_fill_black(); CreateTask(Task_ReturnToFieldRecordMixing, 10); @@ -290,7 +290,7 @@ void FieldCB_DefaultWarpExit(void) Overworld_PlaySpecialMapMusic(); QuestLog_DrawPreviouslyOnQuestHeaderIfInPlaybackMode(); SetUpWarpExitTask(FALSE); - ScriptContext2_Enable(); + LockPlayerFieldControls(); } void FieldCB_WarpExitFadeFromBlack(void) @@ -298,7 +298,7 @@ void FieldCB_WarpExitFadeFromBlack(void) Overworld_PlaySpecialMapMusic(); QuestLog_DrawPreviouslyOnQuestHeaderIfInPlaybackMode(); SetUpWarpExitTask(TRUE); - ScriptContext2_Enable(); + LockPlayerFieldControls(); } static void FieldCB_TeleportWarpIn(void) @@ -308,7 +308,7 @@ static void FieldCB_TeleportWarpIn(void) QuestLog_DrawPreviouslyOnQuestHeaderIfInPlaybackMode(); PlaySE(SE_WARP_OUT); CreateTask(Task_TeleportWarpIn, 10); - ScriptContext2_Enable(); + LockPlayerFieldControls(); } static void Task_ExitDoor(u8 taskId) @@ -393,7 +393,7 @@ static void Task_ExitDoor(u8 taskId) break; case 4: UnfreezeObjectEvents(); - ScriptContext2_Disable(); + UnlockPlayerFieldControls(); DestroyTask(taskId); break; } @@ -429,7 +429,7 @@ static void Task_ExitNonAnimDoor(u8 taskId) break; case 3: UnfreezeObjectEvents(); - ScriptContext2_Disable(); + UnlockPlayerFieldControls(); DestroyTask(taskId); break; } @@ -441,14 +441,14 @@ static void Task_ExitNonDoor(u8 taskId) { case 0: FreezeObjectEvents(); - ScriptContext2_Enable(); + LockPlayerFieldControls(); gTasks[taskId].data[0]++; break; case 1: if (FieldFadeTransitionBackgroundEffectIsFinished()) { UnfreezeObjectEvents(); - ScriptContext2_Disable(); + UnlockPlayerFieldControls(); DestroyTask(taskId); } break; @@ -461,7 +461,7 @@ static void Task_TeleportWarpIn(u8 taskId) { case 0: FreezeObjectEvents(); - ScriptContext2_Enable(); + LockPlayerFieldControls(); StartTeleportInPlayerAnim(); gTasks[taskId].data[0]++; break; @@ -469,7 +469,7 @@ static void Task_TeleportWarpIn(u8 taskId) if (FieldFadeTransitionBackgroundEffectIsFinished() && WaitTeleportInPlayerAnim() != TRUE) { UnfreezeObjectEvents(); - ScriptContext2_Disable(); + UnlockPlayerFieldControls(); DestroyTask(taskId); } break; @@ -489,7 +489,7 @@ void FadeTransition_FadeInOnReturnToStartMenu(void) { FadeInFromBlack(); CreateTask(Task_WaitFadeAndCreateStartMenuTask, 80); - ScriptContext2_Enable(); + LockPlayerFieldControls(); } bool8 FieldCB_ReturnToFieldOpenStartMenu(void) @@ -502,7 +502,7 @@ static void Task_SafariZoneRanOutOfBalls(u8 taskId) { if (FieldFadeTransitionBackgroundEffectIsFinished() == TRUE) { - ScriptContext2_Disable(); + UnlockPlayerFieldControls(); DestroyTask(taskId); ClearPlayerHeldMovementAndUnfreezeObjectEvents(); } @@ -510,7 +510,7 @@ static void Task_SafariZoneRanOutOfBalls(u8 taskId) void FieldCB_SafariZoneRanOutOfBalls(void) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); Overworld_PlaySpecialMapMusic(); FadeInFromBlack(); CreateTask(Task_SafariZoneRanOutOfBalls, 10); @@ -531,7 +531,7 @@ bool32 FieldFadeTransitionBackgroundEffectIsFinished(void) void DoWarp(void) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); TryFadeOutOldMapMusic(); WarpFadeOutScreen(); PlayRainStoppingSoundEffect(); @@ -542,7 +542,7 @@ void DoWarp(void) void DoDiveWarp(void) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); TryFadeOutOldMapMusic(); WarpFadeOutScreen(); PlayRainStoppingSoundEffect(); @@ -560,21 +560,21 @@ void DoStairWarp(u16 metatileBehavior, u16 delay) void DoDoorWarp(void) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); gFieldCallback = FieldCB_DefaultWarpExit; CreateTask(Task_DoorWarp, 10); } void DoTeleport2Warp(void) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); CreateTask(Task_Teleport2Warp, 10); gFieldCallback = FieldCB_TeleportWarpIn; } void DoUnionRoomWarp(void) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); gFieldCallback = FieldCB_DefaultWarpExit; CreateTask(Task_TeleportWarp, 10); } @@ -587,25 +587,25 @@ void DoFallWarp(void) void DoEscalatorWarp(u8 metatileBehavior) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); StartEscalatorWarp(metatileBehavior, 10); } void DoLavaridgeGymB1FWarp(void) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); StartLavaridgeGymB1FWarp(10); } void DoLavaridgeGym1FWarp(void) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); StartLavaridgeGym1FWarp(10); } void DoTeleportWarp(void) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); TryFadeOutOldMapMusic(); CreateTask(Task_TeleportWarp, 10); gFieldCallback = FieldCB_TeleportWarpIn; @@ -613,7 +613,7 @@ void DoTeleportWarp(void) static void DoPortholeWarp(void) // Unused { - ScriptContext2_Enable(); + LockPlayerFieldControls(); WarpFadeOutScreen(); CreateTask(Task_Teleport2Warp, 10); gFieldCallback = nullsub_60; @@ -625,7 +625,7 @@ static void Task_CableClubWarp(u8 taskId) switch (task->data[0]) { case 0: - ScriptContext2_Enable(); + LockPlayerFieldControls(); task->data[0]++; break; case 1: @@ -642,7 +642,7 @@ static void Task_CableClubWarp(u8 taskId) void DoCableClubWarp(void) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); TryFadeOutOldMapMusic(); WarpFadeOutScreen(); PlaySE(SE_EXIT); @@ -691,7 +691,7 @@ static void Task_Teleport2Warp(u8 taskId) { case 0: FreezeObjectEvents(); - ScriptContext2_Enable(); + LockPlayerFieldControls(); task->data[0]++; break; case 1: @@ -713,7 +713,7 @@ static void Task_TeleportWarp(u8 taskId) { case 0: FreezeObjectEvents(); - ScriptContext2_Enable(); + LockPlayerFieldControls(); PlaySE(SE_WARP_IN); StartTeleportWarpOutPlayerAnim(); task->data[0]++; @@ -796,7 +796,7 @@ static void Task_StairWarp(u8 taskId) switch (data[0]) { case 0: - ScriptContext2_Enable(); + LockPlayerFieldControls(); FreezeObjectEvents(); CameraObjectReset2(); data[0]++; @@ -898,14 +898,14 @@ static void Task_ExitStairs(u8 taskId) if (FieldFadeTransitionBackgroundEffectIsFinished() == TRUE) { CameraObjectReset1(); - ScriptContext2_Disable(); + UnlockPlayerFieldControls(); DestroyTask(taskId); } break; case 0: Overworld_PlaySpecialMapMusic(); WarpFadeInScreen(); - ScriptContext2_Enable(); + LockPlayerFieldControls(); ExitStairsMovement(&data[1], &data[2], &data[3], &data[4], &data[5]); data[0]++; break; diff --git a/src/field_player_avatar.c b/src/field_player_avatar.c index fd1c67ccd..41a5306c1 100644 --- a/src/field_player_avatar.c +++ b/src/field_player_avatar.c @@ -1417,7 +1417,7 @@ static void Task_BumpBoulder(u8 taskId) static bool8 DoBoulderInit(struct Task *task, struct ObjectEvent *playerObject, struct ObjectEvent *strengthObject) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); gPlayerAvatar.preventStep = TRUE; task->data[0]++; return FALSE; @@ -1453,7 +1453,7 @@ static bool8 DoBoulderFinish(struct Task *task, struct ObjectEvent *playerObject HandleBoulderFallThroughHole(strengthObject); HandleBoulderActivateVictoryRoadSwitch(strengthObject->currentCoords.x, strengthObject->currentCoords.y); gPlayerAvatar.preventStep = FALSE; - ScriptContext2_Disable(); + UnlockPlayerFieldControls(); DestroyTask(FindTaskIdByFunc(Task_BumpBoulder)); } return FALSE; @@ -1518,7 +1518,7 @@ static bool8 PlayerAvatar_SecretBaseMatSpinStep0(struct Task *task, struct Objec task->data[0]++; task->data[1] = objectEvent->movementDirection; gPlayerAvatar.preventStep = TRUE; - ScriptContext2_Enable(); + LockPlayerFieldControls(); PlaySE(SE_WARP_IN); return TRUE; } @@ -1564,7 +1564,7 @@ static bool8 PlayerAvatar_SecretBaseMatSpinStep3(struct Task *task, struct Objec if (ObjectEventClearHeldMovementIfFinished(objectEvent)) { QL_TryRecordPlayerStepWithDuration0(objectEvent, GetWalkSlowerMovementAction(GetOppositeDirection(task->data[1]))); - ScriptContext2_Disable(); + UnlockPlayerFieldControls(); gPlayerAvatar.preventStep = FALSE; DestroyTask(FindTaskIdByFunc(PlayerAvatar_DoSecretBaseMatSpin)); } @@ -1575,7 +1575,7 @@ static void CreateStopSurfingTask(u8 direction) { u8 taskId; - ScriptContext2_Enable(); + LockPlayerFieldControls(); FreezeObjectEvents(); Overworld_ClearSavedMusic(); Overworld_ChangeMusicToDefault(); @@ -1591,7 +1591,7 @@ void CreateStopSurfingTask_NoMusicChange(u8 direction) { u8 taskId; - ScriptContext2_Enable(); + LockPlayerFieldControls(); FreezeObjectEvents(); gPlayerAvatar.flags &= ~PLAYER_AVATAR_FLAG_SURFING; gPlayerAvatar.flags |= PLAYER_AVATAR_FLAG_ON_FOOT; @@ -1633,7 +1633,7 @@ static void Task_WaitStopSurfing(u8 taskId) ObjectEventSetGraphicsId(playerObjEvent, GetPlayerAvatarGraphicsIdByStateId(PLAYER_AVATAR_GFX_NORMAL)); QL_TryRecordPlayerStepWithDuration0(playerObjEvent, GetFaceDirectionMovementAction(playerObjEvent->facingDirection)); gPlayerAvatar.preventStep = FALSE; - ScriptContext2_Disable(); + UnlockPlayerFieldControls(); UnfreezeObjectEvents(); DestroySprite(&gSprites[playerObjEvent->fieldEffectSpriteId]); DestroyTask(taskId); @@ -1696,7 +1696,7 @@ static void Task_Fishing(u8 taskId) static bool8 Fishing1(struct Task *task) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); gPlayerAvatar.preventStep = TRUE; task->tStep++; return FALSE; @@ -1880,7 +1880,7 @@ static bool8 Fishing11(struct Task *task) if (task->tFrameCounter != 0) { gPlayerAvatar.preventStep = FALSE; - ScriptContext2_Disable(); + UnlockPlayerFieldControls(); FishingWildEncounter(task->tFishingRod); DestroyTask(FindTaskIdByFunc(Task_Fishing)); } @@ -1940,7 +1940,7 @@ static bool8 Fishing16(struct Task *task) if (!IsTextPrinterActive(0)) { gPlayerAvatar.preventStep = FALSE; - ScriptContext2_Disable(); + UnlockPlayerFieldControls(); UnfreezeObjectEvents(); ClearDialogWindowAndFrame(0, TRUE); DestroyTask(FindTaskIdByFunc(Task_Fishing)); diff --git a/src/field_poison.c b/src/field_poison.c index 1e2a30c0c..f9f3d8142 100644 --- a/src/field_poison.c +++ b/src/field_poison.c @@ -77,7 +77,7 @@ static void Task_TryFieldPoisonWhiteOut(u8 taskId) gSpecialVar_Result = TRUE; else gSpecialVar_Result = FALSE; - EnableBothScriptContexts(); + ScriptContext_Enable(); DestroyTask(taskId); break; } @@ -86,7 +86,7 @@ static void Task_TryFieldPoisonWhiteOut(u8 taskId) void TryFieldPoisonWhiteOut(void) { CreateTask(Task_TryFieldPoisonWhiteOut, 80); - ScriptContext1_Stop(); + ScriptContext_Stop(); } s32 DoPoisonFieldEffect(void) diff --git a/src/field_screen_effect.c b/src/field_screen_effect.c index d827fc88e..52dc0ba55 100644 --- a/src/field_screen_effect.c +++ b/src/field_screen_effect.c @@ -154,7 +154,7 @@ static void sub_807EF7C(u8 taskId) { if (!FuncIsActiveTask(UpdateFlashLevelEffect)) { - EnableBothScriptContexts(); + ScriptContext_Enable(); DestroyTask(taskId); } } @@ -198,7 +198,7 @@ void AnimateFlash(u8 flashLevel) value = TRUE; sub_807EFC8(120, 80, sFlashLevelPixelRadii[curFlashLevel], sFlashLevelPixelRadii[flashLevel], value, 2); sub_807EFA4(); - ScriptContext2_Enable(); + LockPlayerFieldControls(); } void WriteFlashScanlineEffectBuffer(u8 flashLevel) @@ -221,7 +221,7 @@ static void Task_EnableScriptAfterMusicFade(u8 taskId) if (BGMusicStopped() == TRUE) { DestroyTask(taskId); - EnableBothScriptContexts(); + ScriptContext_Enable(); } } @@ -435,14 +435,14 @@ static void Task_RushInjuredPokemonToCenter(u8 taskId) if (FieldFadeTransitionBackgroundEffectIsFinished() == TRUE) { DestroyTask(taskId); - ScriptContext1_SetupScript(EventScript_AfterWhiteOutHeal); + ScriptContext_SetupScript(EventScript_AfterWhiteOutHeal); } break; case 6: if (FieldFadeTransitionBackgroundEffectIsFinished() == TRUE) { DestroyTask(taskId); - ScriptContext1_SetupScript(EventScript_AfterWhiteOutMomHeal); + ScriptContext_SetupScript(EventScript_AfterWhiteOutMomHeal); } break; } @@ -452,7 +452,7 @@ void FieldCB_RushInjuredPokemonToCenter(void) { u8 taskId; - ScriptContext2_Enable(); + LockPlayerFieldControls(); palette_bg_faded_fill_black(); taskId = CreateTask(Task_RushInjuredPokemonToCenter, 10); gTasks[taskId].data[0] = 0; diff --git a/src/field_specials.c b/src/field_specials.c index e9574f429..c943ce5c1 100644 --- a/src/field_specials.c +++ b/src/field_specials.c @@ -91,7 +91,7 @@ void ShowDiploma(void) { QuestLog_CutRecording(); SetMainCallback2(CB2_ShowDiploma); - ScriptContext2_Enable(); + LockPlayerFieldControls(); } void ForcePlayerOntoBike(void) @@ -497,7 +497,7 @@ static void Task_ShakeScreen(u8 taskId) static void Task_EndScreenShake(u8 taskId) { DestroyTask(taskId); - EnableBothScriptContexts(); + ScriptContext_Enable(); } #undef tYtrans @@ -1083,7 +1083,7 @@ static void Task_ElevatorShake(u8 taskId) { PlaySE(SE_DING_DONG); DestroyTask(taskId); - EnableBothScriptContexts(); + ScriptContext_Enable(); InstallCameraPanAheadCallback(); } } @@ -1336,7 +1336,7 @@ static void Task_CreateScriptListMenu(u8 taskId) s32 mwidth; struct Task *task = &gTasks[taskId]; u8 windowId; - ScriptContext2_Enable(); + LockPlayerFieldControls(); if (gSpecialVar_0x8004 == LISTMENU_SILPHCO_FLOORS) sListMenuLastScrollPosition = sElevatorScroll; else @@ -1432,7 +1432,7 @@ static void Task_ListMenuHandleInput(u8 taskId) { Task_ListMenuRemoveScrollIndicatorArrowPair(taskId); task->func = Task_SuspendListMenu; - EnableBothScriptContexts(); + ScriptContext_Enable(); } break; } @@ -1450,7 +1450,7 @@ static void Task_DestroyListMenu(u8 taskId) CopyWindowToVram(task->data[13], COPYWIN_GFX); RemoveWindow(task->data[13]); DestroyTask(taskId); - EnableBothScriptContexts(); + ScriptContext_Enable(); } static void Task_SuspendListMenu(u8 taskId) @@ -1470,14 +1470,14 @@ void ReturnToListMenu(void) { u8 taskId = FindTaskIdByFunc(Task_SuspendListMenu); if (taskId == 0xFF) - EnableBothScriptContexts(); + ScriptContext_Enable(); else gTasks[taskId].data[6]++; } static void Task_RedrawScrollArrowsAndWaitInput(u8 taskId) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); Task_CreateMenuRemoveScrollIndicatorArrowPair(taskId); gTasks[taskId].func = Task_ListMenuHandleInput; } @@ -2317,7 +2317,7 @@ void CutMoveOpenDottedHoleDoor(void) DrawWholeMapView(); PlaySE(SE_BANG); FlagSet(FLAG_USED_CUT_ON_RUIN_VALLEY_BRAILLE); - ScriptContext2_Disable(); + UnlockPlayerFieldControls(); } static const u16 sDeoxysObjectPals[][16] = { @@ -2373,7 +2373,7 @@ static void Task_DoDeoxysTriangleInteraction(u8 taskId) if (FlagGet(FLAG_SYS_DEOXYS_AWAKENED) == TRUE) { gSpecialVar_Result = 3; - EnableBothScriptContexts(); + ScriptContext_Enable(); DestroyTask(taskId); } else @@ -2392,7 +2392,7 @@ static void Task_DoDeoxysTriangleInteraction(u8 taskId) { FlagSet(FLAG_SYS_DEOXYS_AWAKENED); gSpecialVar_Result = 2; - EnableBothScriptContexts(); + ScriptContext_Enable(); DestroyTask(taskId); } else @@ -2434,7 +2434,7 @@ static void Task_WaitDeoxysFieldEffect(u8 taskId) { if (!FieldEffectActiveListContains(FLDEFF_MOVE_DEOXYS_ROCK)) { - EnableBothScriptContexts(); + ScriptContext_Enable(); DestroyTask(taskId); } } diff --git a/src/field_tasks.c b/src/field_tasks.c index 20dcb4696..a1f32b895 100644 --- a/src/field_tasks.c +++ b/src/field_tasks.c @@ -57,7 +57,7 @@ static void Task_RunTimeBasedEvents(u8 taskId) { s16 *data = gTasks[taskId].data; - if (!ScriptContext2_IsEnabled()) + if (!ArePlayerFieldControlsLocked()) { if (!QL_IS_PLAYBACK_STATE) { diff --git a/src/field_weather_effects.c b/src/field_weather_effects.c index 32f945803..ce8fe231c 100644 --- a/src/field_weather_effects.c +++ b/src/field_weather_effects.c @@ -315,7 +315,7 @@ static void UpdateDroughtBlend(u8 taskId) task->tState++; break; case 4: - EnableBothScriptContexts(); + ScriptContext_Enable(); DestroyTask(taskId); break; } diff --git a/src/fldeff_cut.c b/src/fldeff_cut.c index e6029448c..20fff2606 100644 --- a/src/fldeff_cut.c +++ b/src/fldeff_cut.c @@ -177,7 +177,7 @@ bool8 FldEff_UseCutOnGrass(void) static void FieldCallback_CutTree(void) { gFieldEffectArguments[0] = GetCursorSelectionMonId(); - ScriptContext1_SetupScript(EventScript_FldEffCut); + ScriptContext_SetupScript(EventScript_FldEffCut); } bool8 FldEff_UseCutOnTree(void) @@ -284,12 +284,12 @@ static void SpriteCallback_CutGrass_Cleanup(struct Sprite *sprite) FieldEffectStop(&gSprites[sCutGrassSpriteArrayPtr[0]], FLDEFF_CUT_GRASS); Free(sCutGrassSpriteArrayPtr); ClearPlayerHeldMovementAndUnfreezeObjectEvents(); - ScriptContext2_Disable(); + UnlockPlayerFieldControls(); } static void FieldMoveCallback_CutTree(void) { PlaySE(SE_M_CUT); FieldEffectActiveListRemove(FLDEFF_USE_CUT_ON_TREE); - EnableBothScriptContexts(); + ScriptContext_Enable(); } diff --git a/src/fldeff_flash.c b/src/fldeff_flash.c index 8129a1a54..352ef7bc8 100644 --- a/src/fldeff_flash.c +++ b/src/fldeff_flash.c @@ -185,7 +185,7 @@ static void FldEff_UseFlash(void) { PlaySE(SE_M_REFLECT); FlagSet(FLAG_SYS_FLASH_ACTIVE); - ScriptContext1_SetupScript(EventScript_FldEffFlash); + ScriptContext_SetupScript(EventScript_FldEffFlash); } // Map transition animatics diff --git a/src/fldeff_rocksmash.c b/src/fldeff_rocksmash.c index c5bc0d072..74e92e9ee 100644 --- a/src/fldeff_rocksmash.c +++ b/src/fldeff_rocksmash.c @@ -46,7 +46,7 @@ static void Task_FieldEffectShowMon_Init(u8 taskId) { u8 mapObjId; - ScriptContext2_Enable(); + LockPlayerFieldControls(); gPlayerAvatar.preventStep = TRUE; mapObjId = gPlayerAvatar.objectEventId; if (!ObjectEventIsMovementOverridden(&gObjectEvents[mapObjId]) @@ -117,7 +117,7 @@ bool8 SetUpFieldMove_RockSmash(void) static void sub_80C9A10(void) { gFieldEffectArguments[0] = GetCursorSelectionMonId(); - ScriptContext1_SetupScript(EventScript_FldEffRockSmash); + ScriptContext_SetupScript(EventScript_FldEffRockSmash); } bool8 FldEff_UseRockSmash(void) @@ -133,5 +133,5 @@ static void sub_80C9A60(void) { PlaySE(SE_M_ROCK_THROW); FieldEffectActiveListRemove(FLDEFF_USE_ROCK_SMASH); - EnableBothScriptContexts(); + ScriptContext_Enable(); } diff --git a/src/fldeff_strength.c b/src/fldeff_strength.c index c5dbfa6cd..bad0f05df 100644 --- a/src/fldeff_strength.c +++ b/src/fldeff_strength.c @@ -28,7 +28,7 @@ bool8 SetUpFieldMove_Strength(void) static void FieldCB_UseStrength(void) { gFieldEffectArguments[0] = GetCursorSelectionMonId(); - ScriptContext1_SetupScript(EventScript_FldEffStrength); + ScriptContext_SetupScript(EventScript_FldEffStrength); } bool8 FldEff_UseStrength(void) @@ -42,5 +42,5 @@ bool8 FldEff_UseStrength(void) static void ShowMonCB_UseStrength(void) { FieldEffectActiveListRemove(FLDEFF_USE_STRENGTH); - EnableBothScriptContexts(); + ScriptContext_Enable(); } diff --git a/src/fldeff_sweetscent.c b/src/fldeff_sweetscent.c index e9373bd05..606709e44 100644 --- a/src/fldeff_sweetscent.c +++ b/src/fldeff_sweetscent.c @@ -94,7 +94,7 @@ static void FailSweetScentEncounter(u8 taskId) CpuFastCopy(sPlttBufferBak, gPlttBufferUnfaded, PLTT_SIZE); WeatherProcessingIdle(); Free(sPlttBufferBak); - ScriptContext1_SetupScript(EventScript_FailSweetScent); + ScriptContext_SetupScript(EventScript_FailSweetScent); DestroyTask(taskId); } } diff --git a/src/hof_pc.c b/src/hof_pc.c index 4bbbc7bec..791a4d1fc 100644 --- a/src/hof_pc.c +++ b/src/hof_pc.c @@ -23,7 +23,7 @@ static void Task_WaitFadeAndSetCallback(u8 taskId) void HallOfFamePCBeginFade(void) { BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 0x10, RGB_BLACK); - ScriptContext2_Enable(); + LockPlayerFieldControls(); CreateTask(Task_WaitFadeAndSetCallback, 0); } @@ -35,7 +35,7 @@ void ReturnFromHallOfFamePC(void) static void ReshowPCMenuAfterHallOfFamePC(void) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); Overworld_PlaySpecialMapMusic(); CreatePCMenu(); ScriptMenu_DisplayPCStartupPrompt(); diff --git a/src/item_menu.c b/src/item_menu.c index ceddc9675..bf51d2f31 100644 --- a/src/item_menu.c +++ b/src/item_menu.c @@ -2033,7 +2033,7 @@ bool8 UseRegisteredKeyItemOnField(void) { if (CheckBagHasItem(gSaveBlock1Ptr->registeredItem, 1) == TRUE) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); FreezeObjectEvents(); HandleEnforcedLookDirectionOnPlayerStopMoving(); StopPlayerAvatar(); @@ -2044,7 +2044,7 @@ bool8 UseRegisteredKeyItemOnField(void) } gSaveBlock1Ptr->registeredItem = ITEM_NONE; } - ScriptContext1_SetupScript(EventScript_BagItemCanBeRegistered); + ScriptContext_SetupScript(EventScript_BagItemCanBeRegistered); return TRUE; } diff --git a/src/item_use.c b/src/item_use.c index 716d42b9a..92a476e96 100644 --- a/src/item_use.c +++ b/src/item_use.c @@ -197,7 +197,7 @@ static void Task_ItemUse_CloseMessageBoxAndReturnToField(u8 taskId) ClearDialogWindowAndFrame(0, 1); DestroyTask(taskId); ClearPlayerHeldMovementAndUnfreezeObjectEvents(); - ScriptContext2_Disable(); + UnlockPlayerFieldControls(); } u8 CheckIfItemIsTMHMOrEvolutionStone(u16 itemId) @@ -218,7 +218,7 @@ static void sub_80A1184(void) static bool8 sub_80A1194(void) { FreezeObjectEvents(); - ScriptContext2_Enable(); + LockPlayerFieldControls(); FadeInFromBlack(); CreateTask(sub_80A11C0, 10); gExitStairsMovementDisabled = FALSE; @@ -230,7 +230,7 @@ static void sub_80A11C0(u8 taskId) if (IsWeatherNotFadingIn() == TRUE) { UnfreezeObjectEvents(); - ScriptContext2_Disable(); + UnlockPlayerFieldControls(); DestroyTask(taskId); } } @@ -278,7 +278,7 @@ static void ItemUseOnFieldCB_Bicycle(u8 taskId) PlaySE(SE_BIKE_BELL); GetOnOffBike(PLAYER_AVATAR_FLAG_MACH_BIKE | PLAYER_AVATAR_FLAG_ACRO_BIKE); ClearPlayerHeldMovementAndUnfreezeObjectEvents(); - ScriptContext2_Disable(); + UnlockPlayerFieldControls(); DestroyTask(taskId); } diff --git a/src/itemfinder.c b/src/itemfinder.c index 95887985f..375b4ac38 100644 --- a/src/itemfinder.c +++ b/src/itemfinder.c @@ -151,7 +151,7 @@ static void Task_NoResponse_CleanUp(u8 taskId) { ClearDialogWindowAndFrame(0, TRUE); ClearPlayerHeldMovementAndUnfreezeObjectEvents(); - ScriptContext2_Disable(); + UnlockPlayerFieldControls(); DestroyTask(taskId); } @@ -487,7 +487,7 @@ static void Task_ItemfinderResponseCleanUp(u8 taskId) DestroyArrowAndStarTiles(); ClearDialogWindowAndFrame(0, TRUE); ClearPlayerHeldMovementAndUnfreezeObjectEvents(); - ScriptContext2_Disable(); + UnlockPlayerFieldControls(); DestroyTask(taskId); } @@ -500,8 +500,8 @@ static void Task_ItemfinderUnderfootDigUpItem(u8 taskId) { DestroyArrowAndStarTiles(); DestroyTask(taskId); - ScriptContext1_SetupScript(EventScript_ItemfinderDigUpUnderfootItem); - ScriptContext2_Enable(); + ScriptContext_SetupScript(EventScript_ItemfinderDigUpUnderfootItem); + LockPlayerFieldControls(); } #undef tStartSpriteId diff --git a/src/learn_move.c b/src/learn_move.c index 314125c9e..165b1adb4 100644 --- a/src/learn_move.c +++ b/src/learn_move.c @@ -366,7 +366,7 @@ static void VBlankCB_MoveRelearner(void) void DisplayMoveTutorMenu(void) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); CreateTask(Task_InitMoveRelearnerMenu, 10); BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 16, RGB_BLACK); } diff --git a/src/map_preview_screen.c b/src/map_preview_screen.c index 65b8ba793..de42a0a4f 100644 --- a/src/map_preview_screen.c +++ b/src/map_preview_screen.c @@ -436,7 +436,7 @@ void MapPreview_StartForestTransition(u8 mapsec) SetGpuRegBits(REG_OFFSET_WININ, WININ_WIN0_CLR | WININ_WIN1_CLR); SetGpuRegBits(REG_OFFSET_WINOUT, WINOUT_WIN01_CLR); gTasks[taskId].data[11] = MapPreview_CreateMapNameWindow(mapsec); - ScriptContext2_Enable(); + LockPlayerFieldControls(); } u16 MapPreview_CreateMapNameWindow(u8 mapsec) diff --git a/src/mevent_client.c b/src/mevent_client.c index 3838558df..e2d226ed6 100644 --- a/src/mevent_client.c +++ b/src/mevent_client.c @@ -215,7 +215,7 @@ static u32 client_mainseq_4(struct mevent_client * svr) MEvent_ReceiveDistributionMon(svr->recvBuffer); break; case 17: - MEventSetRamScript(svr->recvBuffer, 1000); + InitRamScript_NoObjectEvent(svr->recvBuffer, 1000); break; case 18: memcpy(&gSaveBlock2Ptr->battleTower.ereaderTrainer, svr->recvBuffer, sizeof(struct BattleTowerEReaderTrainer)); diff --git a/src/mystery_event_script.c b/src/mystery_event_script.c index 06c1c9bbf..ab2e4fa9e 100644 --- a/src/mystery_event_script.c +++ b/src/mystery_event_script.c @@ -145,7 +145,7 @@ bool8 MEScrCmd_setmsg(struct ScriptContext *ctx) bool8 MEScrCmd_runscript(struct ScriptContext *ctx) { u8 *script = (u8 *)(ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0]); - ScriptContext2_RunNewScript(script); + RunScriptImmediately(script); return FALSE; } diff --git a/src/new_game.c b/src/new_game.c index 741d1d602..0bd25b23c 100644 --- a/src/new_game.c +++ b/src/new_game.c @@ -146,7 +146,7 @@ void NewGameInitData(void) InitMEventData(); SetAllRenewableItemFlags(); WarpToPlayersRoom(); - ScriptContext2_RunNewScript(EventScript_ResetAllMapFlags); + RunScriptImmediately(EventScript_ResetAllMapFlags); StringCopy(gSaveBlock1Ptr->rivalName, rivalName); ResetTrainerTowerResults(); } diff --git a/src/overworld.c b/src/overworld.c index 6c1420418..a26c494d0 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -242,7 +242,7 @@ static const u16 sWhiteOutMoneyLossBadgeFlagIDs[] = { static void DoWhiteOut(void) { - ScriptContext2_RunNewScript(EventScript_ResetEliteFourEnd); + RunScriptImmediately(EventScript_ResetEliteFourEnd); RemoveMoney(&gSaveBlock1Ptr->money, ComputeWhiteOutMoneyLoss()); HealPlayerParty(); Overworld_ResetStateAfterWhitingOut(); @@ -1393,13 +1393,13 @@ static void DoCB1_Overworld(u16 newKeys, u16 heldKeys) FieldClearPlayerInput(&fieldInput); FieldGetPlayerInput(&fieldInput, newKeys, heldKeys); FieldInput_HandleCancelSignpost(&fieldInput); - if (!ScriptContext2_IsEnabled()) + if (!ArePlayerFieldControlsLocked()) { if (ProcessPlayerFieldInput(&fieldInput) == TRUE) { if (gQuestLogPlaybackState == 2) sub_81127F8(&gInputToStoreInQuestLogMaybe); - ScriptContext2_Enable(); + LockPlayerFieldControls(); DismissMapNamePopup(); } else @@ -1420,11 +1420,11 @@ static void DoCB1_Overworld_QuestLogPlayback(void) FieldClearPlayerInput(&fieldInput); fieldInput = gQuestLogFieldInput; FieldInput_HandleCancelSignpost(&fieldInput); - if (!ScriptContext2_IsEnabled()) + if (!ArePlayerFieldControlsLocked()) { if (ProcessPlayerFieldInput(&fieldInput) == TRUE) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); DismissMapNamePopup(); } else @@ -1452,7 +1452,7 @@ void CB1_Overworld(void) static void OverworldBasic(void) { - ScriptContext2_RunScript(); + ScriptContext_RunScript(); RunTasks(); AnimateSprites(); CameraUpdate(); @@ -1518,8 +1518,8 @@ void CB2_NewGame(void) NewGameInitData(); ResetInitialPlayerAvatarState(); PlayTimeCounter_Start(); - ScriptContext1_Init(); - ScriptContext2_Disable(); + ScriptContext_Init(); + UnlockPlayerFieldControls(); gFieldCallback = FieldCB_WarpExitFadeFromBlack; gFieldCallback2 = NULL; DoMapLoadLoop(&gMain.state); @@ -1539,8 +1539,8 @@ void CB2_WhiteOut(void) ResetSafariZoneFlag_(); DoWhiteOut(); SetInitialPlayerAvatarStateWithDirection(DIR_NORTH); - ScriptContext1_Init(); - ScriptContext2_Disable(); + ScriptContext_Init(); + UnlockPlayerFieldControls(); gFieldCallback = FieldCB_RushInjuredPokemonToCenter; val = 0; DoMapLoadLoop(&val); @@ -1554,8 +1554,8 @@ void CB2_WhiteOut(void) void CB2_LoadMap(void) { FieldClearVBlankHBlankCallbacks(); - ScriptContext1_Init(); - ScriptContext2_Disable(); + ScriptContext_Init(); + UnlockPlayerFieldControls(); SetMainCallback1(NULL); SetMainCallback2(CB2_DoChangeMap); gMain.savedCallback = CB2_LoadMap2; @@ -1634,8 +1634,8 @@ void CB2_ReturnToFieldFromMultiplayer(void) else gFieldCallback = FieldCB_ReturnToFieldCableLink; - ScriptContext1_Init(); - ScriptContext2_Disable(); + ScriptContext_Init(); + UnlockPlayerFieldControls(); CB2_ReturnToField(); } @@ -1685,8 +1685,8 @@ void CB2_ContinueSavedGame(void) Overworld_ResetStateOnContinue(); InitMapFromSavedGame(); PlayTimeCounter_Start(); - ScriptContext1_Init(); - ScriptContext2_Disable(); + ScriptContext_Init(); + UnlockPlayerFieldControls(); gFieldCallback2 = NULL; gExitStairsMovementDisabled = TRUE; if (UseContinueGameWarp() == TRUE) @@ -1760,8 +1760,8 @@ static bool32 LoadMapInStepsLink(u8 *state) { case 0: InitOverworldBgs(); - ScriptContext1_Init(); - ScriptContext2_Disable(); + ScriptContext_Init(); + UnlockPlayerFieldControls(); (*state)++; break; case 1: @@ -2197,8 +2197,8 @@ void CB2_SetUpOverworldForQLPlaybackWithWarpExit(void) { FieldClearVBlankHBlankCallbacks(); gGlobalFieldTintMode = QL_TINT_GRAYSCALE; - ScriptContext1_Init(); - ScriptContext2_Disable(); + ScriptContext_Init(); + UnlockPlayerFieldControls(); SetMainCallback1(NULL); SetMainCallback2(CB2_DoChangeMap); gMain.savedCallback = CB2_LoadMapForQLPlayback; @@ -2209,8 +2209,8 @@ void CB2_SetUpOverworldForQLPlayback(void) FieldClearVBlankHBlankCallbacks(); gGlobalFieldTintMode = QL_TINT_GRAYSCALE; LoadSaveblockMapHeader(); - ScriptContext1_Init(); - ScriptContext2_Disable(); + ScriptContext_Init(); + UnlockPlayerFieldControls(); SetMainCallback1(NULL); SetMainCallback2(CB2_LoadMapForQLPlayback); } @@ -2317,7 +2317,7 @@ void CB2_EnterFieldFromQuestLog(void) Overworld_ResetStateOnContinue(); InitMapFromSavedGame(); PlayTimeCounter_Start(); - ScriptContext1_Init(); + ScriptContext_Init(); gExitStairsMovementDisabled = TRUE; if (UseContinueGameWarp() == TRUE) { @@ -2388,8 +2388,8 @@ static bool32 SetUpScrollSceneForCredits(u8 *state, u8 unused) sCreditsOverworld_CmdLength = sCreditsOverworld_Script[sCreditsOverworld_CmdIndex].unk_4; WarpIntoMap(); gPaletteFade.bufferTransferDisabled = TRUE; - ScriptContext1_Init(); - ScriptContext2_Disable(); + ScriptContext_Init(); + UnlockPlayerFieldControls(); SetMainCallback1(NULL); gFieldCallback2 = FieldCB2_Credits_WaitFade; gMain.state = 0; @@ -2845,7 +2845,7 @@ static void ResetPlayerHeldKeys(u16 *keys) static u16 KeyInterCB_SelfIdle(u32 key) { - if (ScriptContext2_IsEnabled() == TRUE) + if (ArePlayerFieldControlsLocked() == TRUE) return LINK_KEY_CODE_EMPTY; if (GetLinkRecvQueueLength() > 4) return LINK_KEY_CODE_HANDLE_RECV_QUEUE; @@ -2865,7 +2865,7 @@ static u16 KeyInterCB_Idle(u32 key) static u16 KeyInterCB_DeferToEventScript(u32 key) { u16 retVal; - if (ScriptContext2_IsEnabled() == TRUE) + if (ArePlayerFieldControlsLocked() == TRUE) { retVal = LINK_KEY_CODE_EMPTY; } @@ -2888,7 +2888,7 @@ static u16 KeyInterCB_DeferToRecvQueue(u32 key) else { retVal = LINK_KEY_CODE_IDLE; - ScriptContext2_Disable(); + UnlockPlayerFieldControls(); SetKeyInterceptCallback(KeyInterCB_Idle); } return retVal; @@ -2905,7 +2905,7 @@ static u16 KeyInterCB_DeferToSendQueue(u32 key) else { retVal = LINK_KEY_CODE_IDLE; - ScriptContext2_Disable(); + UnlockPlayerFieldControls(); SetKeyInterceptCallback(KeyInterCB_Idle); } return retVal; @@ -2958,7 +2958,7 @@ static u16 KeyInterCB_WaitForPlayersToExit(u32 keyOrPlayerId) CheckRfuKeepAliveTimer(); if (AreAllPlayersInLinkState(PLAYER_LINK_STATE_EXITING_ROOM) == TRUE) { - ScriptContext1_SetupScript(CableClub_EventScript_DoLinkRoomExit); + ScriptContext_SetupScript(CableClub_EventScript_DoLinkRoomExit); SetKeyInterceptCallback(KeyInterCB_SendNothing); } return LINK_KEY_CODE_EMPTY; @@ -3136,41 +3136,41 @@ static u16 GetDirectionForEventScript(const u8 *script) static void InitLinkPlayerQueueScript(void) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); } static void InitLinkRoomStartMenuScript(void) { PlaySE(SE_WIN_OPEN); ShowStartMenu(); - ScriptContext2_Enable(); + LockPlayerFieldControls(); } static void RunInteractLocalPlayerScript(const u8 *script) { PlaySE(SE_SELECT); - ScriptContext1_SetupScript(script); - ScriptContext2_Enable(); + ScriptContext_SetupScript(script); + LockPlayerFieldControls(); } static void CreateConfirmLeaveTradeRoomPrompt(void) { PlaySE(SE_WIN_OPEN); - ScriptContext1_SetupScript(TradeCenter_ConfirmLeaveRoom); - ScriptContext2_Enable(); + ScriptContext_SetupScript(TradeCenter_ConfirmLeaveRoom); + LockPlayerFieldControls(); } static void InitMenuBasedScript(const u8 *script) { PlaySE(SE_SELECT); - ScriptContext1_SetupScript(script); - ScriptContext2_Enable(); + ScriptContext_SetupScript(script); + LockPlayerFieldControls(); } static void RunTerminateLinkScript(void) { - ScriptContext1_SetupScript(TradeCenter_TerminateLink); - ScriptContext2_Enable(); + ScriptContext_SetupScript(TradeCenter_TerminateLink); + LockPlayerFieldControls(); } bool32 Overworld_LinkRecvQueueLengthMoreThan2(void) diff --git a/src/party_menu.c b/src/party_menu.c index ee2800801..347d4ecb1 100644 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -6368,7 +6368,7 @@ static void Task_PartyMenuWaitForFade(u8 taskId) if (IsWeatherNotFadingIn()) { DestroyTask(taskId); - ScriptContext2_Disable(); - EnableBothScriptContexts(); + UnlockPlayerFieldControls(); + ScriptContext_Enable(); } } diff --git a/src/party_menu_specials.c b/src/party_menu_specials.c index aaa066980..23934773c 100644 --- a/src/party_menu_specials.c +++ b/src/party_menu_specials.c @@ -15,7 +15,7 @@ void ChoosePartyMon(void) { u8 taskId; - ScriptContext2_Enable(); + LockPlayerFieldControls(); taskId = CreateTask(sub_80BF97C, 10); gTasks[taskId].data[0] = PARTY_MENU_TYPE_CHOOSE_MON; BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 0x10, RGB_BLACK); @@ -25,7 +25,7 @@ void SelectMoveTutorMon(void) { u8 taskId; - ScriptContext2_Enable(); + LockPlayerFieldControls(); taskId = CreateTask(sub_80BF97C, 10); gTasks[taskId].data[0] = PARTY_MENU_TYPE_MOVE_RELEARNER; BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 0x10, RGB_BLACK); diff --git a/src/player_pc.c b/src/player_pc.c index a150828b3..dd5df17d3 100644 --- a/src/player_pc.c +++ b/src/player_pc.c @@ -257,9 +257,9 @@ static void Task_PlayerPcMailbox(u8 taskId) static void Task_PlayerPcTurnOff(u8 taskId) { if (gPlayerPcMenuManager.notInRoom == FALSE) - ScriptContext1_SetupScript(EventScript_PalletTown_PlayersHouse_2F_ShutDownPC); + ScriptContext_SetupScript(EventScript_PalletTown_PlayersHouse_2F_ShutDownPC); else - EnableBothScriptContexts(); + ScriptContext_Enable(); DestroyTask(taskId); } diff --git a/src/pokemon_jump.c b/src/pokemon_jump.c index a29397d37..1c501bac6 100644 --- a/src/pokemon_jump.c +++ b/src/pokemon_jump.c @@ -4535,7 +4535,7 @@ static void Task_ShowPokemonJumpRecords(u8 taskId) { RemoveWindow(tWindowId); DestroyTask(taskId); - EnableBothScriptContexts(); + ScriptContext_Enable(); } break; } diff --git a/src/pokemon_storage_system_2.c b/src/pokemon_storage_system_2.c index 918ffaf7d..1f9c7a4e5 100644 --- a/src/pokemon_storage_system_2.c +++ b/src/pokemon_storage_system_2.c @@ -300,8 +300,8 @@ static void Task_PCMainMenu(u8 taskId) case OPTION_EXIT: ClearStdWindowAndFrame(0, TRUE); ClearStdWindowAndFrame(task->tWindowId, TRUE); - ScriptContext2_Disable(); - EnableBothScriptContexts(); + UnlockPlayerFieldControls(); + ScriptContext_Enable(); DestroyTask(taskId); break; default: @@ -374,7 +374,7 @@ void ShowPokemonStorageSystemPC(void) u8 taskId = CreateTask(Task_PCMainMenu, 80); gTasks[taskId].tState = 0; gTasks[taskId].tSelectedOption = 0; - ScriptContext2_Enable(); + LockPlayerFieldControls(); } static void FieldTask_ReturnToPcMenu(void) diff --git a/src/quest_log.c b/src/quest_log.c index 7eeb76e04..8a6a835fa 100644 --- a/src/quest_log.c +++ b/src/quest_log.c @@ -256,7 +256,7 @@ static void QLogCB_Playback(void) else { sQuestLogCurrentScene.sceneEndMode = 2; - ScriptContext2_Enable(); + LockPlayerFieldControls(); QuestLog_BeginFadeAtEndOfScene(0); } } @@ -791,7 +791,7 @@ static void QuestLog_AdvancePlayhead(void) { if (!gPaletteFade.active) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); if (++sCurrentSceneNum < QUEST_LOG_SCENE_COUNT && gSaveBlock1Ptr->questLog[sCurrentSceneNum].startType != 0) { sNumScenes--; @@ -1051,7 +1051,7 @@ static void QuestLog_WaitFadeAndCancelPlayback(void) { if (!gPaletteFade.active) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); for (sCurrentSceneNum = sCurrentSceneNum; sCurrentSceneNum < QUEST_LOG_SCENE_COUNT; sCurrentSceneNum++) { if (gSaveBlock1Ptr->questLog[sCurrentSceneNum].startType == 0) @@ -1087,12 +1087,12 @@ static void Task_FinalScene_WaitFade(u8 taskId) { struct Task *task = &gTasks[taskId]; - if (ScriptContext2_IsEnabled() != TRUE) + if (ArePlayerFieldControlsLocked() != TRUE) { FreezeObjectEvents(); HandleEnforcedLookDirectionOnPlayerStopMoving(); StopPlayerAvatar(); - ScriptContext2_Enable(); + LockPlayerFieldControls(); task->func = Task_QuestLogScene_SavedGame; } } @@ -1113,7 +1113,7 @@ static void Task_QuestLogScene_SavedGame(u8 taskId) task->data[1] = 0; task->func = Task_WaitAtEndOfQuestLog; FreezeObjectEvents(); - ScriptContext2_Enable(); + LockPlayerFieldControls(); } } @@ -1179,7 +1179,7 @@ static void Task_EndQuestLog(u8 taskId) Free(sPalettesBackup); sQuestLogCurrentScene = (struct UnkStruct_203AE94){}; ClearPlayerHeldMovementAndUnfreezeObjectEvents(); - ScriptContext2_Disable(); + UnlockPlayerFieldControls(); gTextFlags.autoScroll = FALSE; gGlobalFieldTintMode = QL_TINT_NONE; DisableWildEncounters(FALSE); @@ -1417,7 +1417,7 @@ void sub_81127F8(struct FieldInput * a0) sCurQuestLogEntry[sQuestLogCursor].mapGroup = r2 >> 16; sCurQuestLogEntry[sQuestLogCursor].animId = r2 >> 24; // always 0 sQuestLogCursor++; - if (ScriptContext2_IsEnabled()) + if (ArePlayerFieldControlsLocked()) sNextStepDelay = TRUE; else sNextStepDelay = FALSE; @@ -1590,7 +1590,7 @@ void sub_8112B3C(void) } break; case 2: - if (ScriptContext2_IsEnabled() != TRUE) + if (ArePlayerFieldControlsLocked() != TRUE) { sNextStepDelay++; if (sQuestLogCursor >= sNumEventsInLogEntry) @@ -1627,7 +1627,7 @@ u8 sub_8112CAC(void) static bool8 RecordHeadAtEndOfEntryOrScriptContext2Enabled(void) { - if (sQuestLogCursor >= sNumEventsInLogEntry || ScriptContext2_IsEnabled() == TRUE) + if (sQuestLogCursor >= sNumEventsInLogEntry || ArePlayerFieldControlsLocked() == TRUE) return TRUE; return FALSE; } diff --git a/src/quest_log_player.c b/src/quest_log_player.c index bb7372c35..8c2ef6196 100644 --- a/src/quest_log_player.c +++ b/src/quest_log_player.c @@ -80,7 +80,7 @@ static void QL_GfxTransition_Fish(void) if (gQuestLogPlaybackState == 1 || gQuestLogPlaybackState == 3) { u8 taskId; - ScriptContext2_Enable(); + LockPlayerFieldControls(); gPlayerAvatar.preventStep = TRUE; taskId = CreateTask(Task_QLFishMovement, 0xFF); gTasks[taskId].data[0] = 0; @@ -129,7 +129,7 @@ static void Task_QLFishMovement(u8 taskId) ObjectEventTurn(objectEvent, objectEvent->movementDirection); sprite->x2 = 0; sprite->y2 = 0; - ScriptContext2_Disable(); + UnlockPlayerFieldControls(); DestroyTask(taskId); } break; @@ -166,7 +166,7 @@ static void Task_QLVSSeekerMovement(u8 taskId) if (!FieldEffectActiveListContains(FLDEFF_USE_VS_SEEKER)) { UnfreezeObjectEvents(); - ScriptContext2_Disable(); + UnlockPlayerFieldControls(); DestroyTask(taskId); } } diff --git a/src/rfu_union_tool.c b/src/rfu_union_tool.c index d6c1c411e..f08291445 100644 --- a/src/rfu_union_tool.c +++ b/src/rfu_union_tool.c @@ -200,7 +200,7 @@ static bool32 TryReleaseUnionRoomPlayerObjectEvent(u32 playerIdx) { return FALSE; } - if (!ScriptContext2_IsEnabled()) + if (!ArePlayerFieldControlsLocked()) { UnfreezeObjectEvent(object); } diff --git a/src/safari_zone.c b/src/safari_zone.c index 748a7d996..a61cc7fdf 100644 --- a/src/safari_zone.c +++ b/src/safari_zone.c @@ -46,7 +46,7 @@ bool8 SafariZoneTakeStep(void) gSafariZoneStepCounter--; if (gSafariZoneStepCounter == 0) { - ScriptContext1_SetupScript(SafariZone_EventScript_TimesUp); + ScriptContext_SetupScript(SafariZone_EventScript_TimesUp); return TRUE; } return FALSE; @@ -54,7 +54,7 @@ bool8 SafariZoneTakeStep(void) void SafariZoneRetirePrompt(void) { - ScriptContext1_SetupScript(SafariZone_EventScript_RetirePrompt); + ScriptContext_SetupScript(SafariZone_EventScript_RetirePrompt); } void CB2_EndSafariBattle(void) @@ -65,15 +65,15 @@ void CB2_EndSafariBattle(void) } else if (gBattleOutcome == B_OUTCOME_NO_SAFARI_BALLS) { - ScriptContext2_RunNewScript(SafariZone_EventScript_OutOfBallsMidBattle); + RunScriptImmediately(SafariZone_EventScript_OutOfBallsMidBattle); WarpIntoMap(); gFieldCallback = FieldCB_SafariZoneRanOutOfBalls; SetMainCallback2(CB2_LoadMap); } else if (gBattleOutcome == B_OUTCOME_CAUGHT) { - ScriptContext1_SetupScript(SafariZone_EventScript_OutOfBalls); - ScriptContext1_Stop(); + ScriptContext_SetupScript(SafariZone_EventScript_OutOfBalls); + ScriptContext_Stop(); SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic); } } diff --git a/src/scrcmd.c b/src/scrcmd.c index 37e7bfefb..d7933a882 100644 --- a/src/scrcmd.c +++ b/src/scrcmd.c @@ -125,7 +125,7 @@ bool8 ScrCmd_callnative(struct ScriptContext * ctx) bool8 ScrCmd_waitstate(struct ScriptContext * ctx) { - ScriptContext1_Stop(); + ScriptContext_Stop(); return TRUE; } @@ -254,7 +254,7 @@ bool8 ScrCmd_callstd_if(struct ScriptContext * ctx) bool8 ScrCmd_returnram(struct ScriptContext * ctx) { - ScriptJump(ctx, gRAMScriptPtr); + ScriptJump(ctx, gRamScriptRetAddr); return FALSE; } @@ -276,7 +276,7 @@ bool8 ScrCmd_trywondercardscript(struct ScriptContext * ctx) const u8 * script = GetSavedRamScriptIfValid(); if (script != NULL) { - gRAMScriptPtr = ctx->scriptPtr; + gRamScriptRetAddr = ctx->scriptPtr; ScriptJump(ctx, script); } return FALSE; @@ -604,7 +604,7 @@ bool8 ScrCmd_setworldmapflag(struct ScriptContext * ctx) bool8 ScrCmd_animateflash(struct ScriptContext * ctx) { AnimateFlash(ScriptReadByte(ctx)); - ScriptContext1_Stop(); + ScriptContext_Stop(); return TRUE; } @@ -1414,7 +1414,7 @@ bool8 ScrCmd_yesnobox(struct ScriptContext * ctx) if (ScriptMenu_YesNo(left, top) == TRUE) { - ScriptContext1_Stop(); + ScriptContext_Stop(); return TRUE; } else @@ -1432,7 +1432,7 @@ bool8 ScrCmd_multichoice(struct ScriptContext * ctx) if (ScriptMenu_Multichoice(left, top, multichoiceId, ignoreBPress) == TRUE) { - ScriptContext1_Stop(); + ScriptContext_Stop(); return TRUE; } else @@ -1451,7 +1451,7 @@ bool8 ScrCmd_multichoicedefault(struct ScriptContext * ctx) if (ScriptMenu_MultichoiceWithDefault(left, top, multichoiceId, ignoreBPress, defaultChoice) == TRUE) { - ScriptContext1_Stop(); + ScriptContext_Stop(); return TRUE; } else @@ -1481,7 +1481,7 @@ bool8 ScrCmd_multichoicegrid(struct ScriptContext * ctx) if (ScriptMenu_MultichoiceGrid(left, top, multichoiceId, ignoreBPress, numColumns) == TRUE) { - ScriptContext1_Stop(); + ScriptContext_Stop(); return TRUE; } else @@ -1510,7 +1510,7 @@ bool8 ScrCmd_drawboxtext(struct ScriptContext * ctx) /*if (Multichoice(left, top, multichoiceId, ignoreBPress) == TRUE) { - ScriptContext1_Stop(); + ScriptContext_Stop(); return TRUE; }*/ return FALSE; @@ -1548,7 +1548,7 @@ bool8 ScrCmd_showcontestpainting(struct ScriptContext * ctx) SetContestWinnerForPainting(contestWinnerId); ShowContestPainting(); - ScriptContext1_Stop() + ScriptContext_Stop() return TRUE; */ return FALSE; @@ -1932,7 +1932,7 @@ bool8 ScrCmd_setwildbattle(struct ScriptContext * ctx) bool8 ScrCmd_dowildbattle(struct ScriptContext * ctx) { StartScriptedWildBattle(); - ScriptContext1_Stop(); + ScriptContext_Stop(); return TRUE; } @@ -1941,7 +1941,7 @@ bool8 ScrCmd_pokemart(struct ScriptContext * ctx) const void *ptr = (void *)ScriptReadWord(ctx); CreatePokemartMenu(ptr); - ScriptContext1_Stop(); + ScriptContext_Stop(); return TRUE; } @@ -1950,7 +1950,7 @@ bool8 ScrCmd_pokemartdecoration(struct ScriptContext * ctx) const void *ptr = (void *)ScriptReadWord(ctx); CreateDecorationShop1Menu(ptr); - ScriptContext1_Stop(); + ScriptContext_Stop(); return TRUE; } @@ -1960,7 +1960,7 @@ bool8 ScrCmd_pokemartdecoration2(struct ScriptContext * ctx) const void *ptr = (void *)ScriptReadWord(ctx); CreateDecorationShop2Menu(ptr); - ScriptContext1_Stop(); + ScriptContext_Stop(); return TRUE; } @@ -1969,7 +1969,7 @@ bool8 ScrCmd_playslotmachine(struct ScriptContext * ctx) u8 slotMachineIndex = VarGet(ScriptReadHalfword(ctx)); PlaySlotMachine(slotMachineIndex, CB2_ReturnToFieldContinueScriptPlayMapMusic); - ScriptContext1_Stop(); + ScriptContext_Stop(); return TRUE; } @@ -1997,7 +1997,7 @@ bool8 ScrCmd_getpokenewsactive(struct ScriptContext * ctx) bool8 ScrCmd_choosecontestmon(struct ScriptContext * ctx) { // ChooseContestMon(); - ScriptContext1_Stop(); + ScriptContext_Stop(); return TRUE; } @@ -2005,7 +2005,7 @@ bool8 ScrCmd_choosecontestmon(struct ScriptContext * ctx) bool8 ScrCmd_startcontest(struct ScriptContext * ctx) { // StartContest(); -// ScriptContext1_Stop(); +// ScriptContext_Stop(); // return TRUE; return FALSE; } @@ -2013,7 +2013,7 @@ bool8 ScrCmd_startcontest(struct ScriptContext * ctx) bool8 ScrCmd_showcontestresults(struct ScriptContext * ctx) { // ShowContestResults(); -// ScriptContext1_Stop(); +// ScriptContext_Stop(); // return TRUE; return FALSE; } @@ -2021,7 +2021,7 @@ bool8 ScrCmd_showcontestresults(struct ScriptContext * ctx) bool8 ScrCmd_contestlinktransfer(struct ScriptContext * ctx) { // ContestLinkTransfer(gSpecialVar_ContestCategory); -// ScriptContext1_Stop(); +// ScriptContext_Stop(); // return TRUE; return FALSE; } @@ -2176,7 +2176,7 @@ bool8 ScrCmd_addelevmenuitem(struct ScriptContext * ctx) bool8 ScrCmd_showelevmenu(struct ScriptContext * ctx) { /*ScriptShowElevatorMenu(); - ScriptContext1_Stop(); + ScriptContext_Stop(); return TRUE;*/ return FALSE; } diff --git a/src/script.c b/src/script.c index 1592170cd..0ae8d9a8f 100644 --- a/src/script.c +++ b/src/script.c @@ -3,32 +3,35 @@ #include "event_data.h" #include "quest_log.h" #include "constants/maps.h" - -#define RAM_SCRIPT_MAGIC 51 -#define SCRIPT_STACK_SIZE 20 - +#include "constants/map_scripts.h" extern void ResetContextNpcTextColor(void); // field_specials extern u16 CalcCRC16WithTable(u8 *data, int length); // util extern bool32 ValidateReceivedWonderCard(void); // mevent -enum -{ +#define RAM_SCRIPT_MAGIC 51 + +enum { SCRIPT_MODE_STOPPED, SCRIPT_MODE_BYTECODE, SCRIPT_MODE_NATIVE, }; -EWRAM_DATA u8 gWalkAwayFromSignInhibitTimer = 0; -EWRAM_DATA const u8 *gRAMScriptPtr = NULL; +enum { + CONTEXT_RUNNING, + CONTEXT_WAITING, + CONTEXT_SHUTDOWN, +}; -// iwram bss -static u8 sScriptContext1Status; +EWRAM_DATA u8 gWalkAwayFromSignInhibitTimer = 0; +EWRAM_DATA const u8 *gRamScriptRetAddr = NULL; + +static u8 sGlobalScriptContextStatus; static u32 sUnusedVariable1; -static struct ScriptContext sScriptContext1; +static struct ScriptContext sGlobalScriptContext; static u32 sUnusedVariable2; -static struct ScriptContext sScriptContext2; -static bool8 sScriptContext2Enabled; +static struct ScriptContext sImmediateScriptContext; +static bool8 sLockFieldControls; static u8 sMsgBoxWalkawayDisabled; static u8 sMsgBoxIsCancelable; static u8 sQuestLogInput; @@ -50,10 +53,10 @@ void InitScriptContext(struct ScriptContext *ctx, void *cmdTable, void *cmdTable ctx->cmdTable = cmdTable; ctx->cmdTableEnd = cmdTableEnd; - for (i = 0; i < 4; i++) + for (i = 0; i < (int)ARRAY_COUNT(ctx->data); i++) ctx->data[i] = 0; - for (i = 0; i < SCRIPT_STACK_SIZE; i++) + for (i = 0; i < (int)ARRAY_COUNT(ctx->stack); i++) ctx->stack[i] = 0; } @@ -90,6 +93,8 @@ bool8 RunScriptCommand(struct ScriptContext *ctx) case SCRIPT_MODE_STOPPED: return FALSE; case SCRIPT_MODE_NATIVE: + // Try to call a function in C + // Continue to bytecode if no function or it returns TRUE if (ctx->nativePtr) { if (ctx->nativePtr() == TRUE) @@ -97,6 +102,7 @@ bool8 RunScriptCommand(struct ScriptContext *ctx) return TRUE; } ctx->mode = SCRIPT_MODE_BYTECODE; + // fallthrough case SCRIPT_MODE_BYTECODE: while (1) { @@ -133,9 +139,9 @@ bool8 RunScriptCommand(struct ScriptContext *ctx) return TRUE; } -u8 ScriptPush(struct ScriptContext *ctx, const u8 *ptr) +static u8 ScriptPush(struct ScriptContext *ctx, const u8 *ptr) { - if (ctx->stackDepth + 1 >= SCRIPT_STACK_SIZE) + if (ctx->stackDepth + 1 >= (int)ARRAY_COUNT(ctx->stack)) { return 1; } @@ -147,7 +153,7 @@ u8 ScriptPush(struct ScriptContext *ctx, const u8 *ptr) } } -const u8 *ScriptPop(struct ScriptContext *ctx) +static const u8 *ScriptPop(struct ScriptContext *ctx) { if (ctx->stackDepth == 0) return NULL; @@ -188,19 +194,19 @@ u32 ScriptReadWord(struct ScriptContext *ctx) return (((((value3 << 8) + value2) << 8) + value1) << 8) + value0; } -void ScriptContext2_Enable(void) +void LockPlayerFieldControls(void) { - sScriptContext2Enabled = TRUE; + sLockFieldControls = TRUE; } -void ScriptContext2_Disable(void) +void UnlockPlayerFieldControls(void) { - sScriptContext2Enabled = FALSE; + sLockFieldControls = FALSE; } -bool8 ScriptContext2_IsEnabled(void) +bool8 ArePlayerFieldControlsLocked(void) { - return sScriptContext2Enabled; + return sLockFieldControls; } void SetQuestLogInputIsDpadFlag(void) @@ -294,70 +300,86 @@ void ResetFacingNpcOrSignPostVars(void) MsgSetNotSignPost(); } -bool8 ScriptContext1_IsScriptSetUp(void) +// The ScriptContext_* functions work with the primary script context, +// which yields control back to native code should the script make a wait call. + +// Checks if the global script context is able to be run right now. +bool8 ScriptContext_IsEnabled(void) { - if (sScriptContext1Status == 0) + if (sGlobalScriptContextStatus == CONTEXT_RUNNING) return TRUE; else return FALSE; } -void ScriptContext1_Init(void) +// Re-initializes the global script context to zero. +void ScriptContext_Init(void) { - InitScriptContext(&sScriptContext1, gScriptCmdTable, gScriptCmdTableEnd); - sScriptContext1Status = 2; + InitScriptContext(&sGlobalScriptContext, gScriptCmdTable, gScriptCmdTableEnd); + sGlobalScriptContextStatus = CONTEXT_SHUTDOWN; } -bool8 ScriptContext2_RunScript(void) +// Runs the script until the script makes a wait* call, then returns true if +// there's more script to run, or false if the script has hit the end. +// This function also returns false if the context is finished +// or waiting (after a call to _Stop) +bool8 ScriptContext_RunScript(void) { - if (sScriptContext1Status == 2) - return 0; + if (sGlobalScriptContextStatus == CONTEXT_SHUTDOWN) + return FALSE; - if (sScriptContext1Status == 1) - return 0; + if (sGlobalScriptContextStatus == CONTEXT_WAITING) + return FALSE; - ScriptContext2_Enable(); + LockPlayerFieldControls(); - if (!RunScriptCommand(&sScriptContext1)) + if (!RunScriptCommand(&sGlobalScriptContext)) { - sScriptContext1Status = 2; - ScriptContext2_Disable(); - return 0; + sGlobalScriptContextStatus = CONTEXT_SHUTDOWN; + UnlockPlayerFieldControls(); + return FALSE; } - return 1; + return TRUE; } -void ScriptContext1_SetupScript(const u8 *ptr) +// Sets up a new script in the global context and enables the context +void ScriptContext_SetupScript(const u8 *ptr) { ClearMsgBoxCancelableState(); EnableMsgBoxWalkaway(); ClearQuestLogInputIsDpadFlag(); - InitScriptContext(&sScriptContext1, gScriptCmdTable, gScriptCmdTableEnd); - SetupBytecodeScript(&sScriptContext1, ptr); - ScriptContext2_Enable(); - sScriptContext1Status = 0; + + InitScriptContext(&sGlobalScriptContext, gScriptCmdTable, gScriptCmdTableEnd); + SetupBytecodeScript(&sGlobalScriptContext, ptr); + LockPlayerFieldControls(); + sGlobalScriptContextStatus = CONTEXT_RUNNING; } -void ScriptContext1_Stop(void) +// Puts the script into waiting mode; usually called from a wait* script command. +void ScriptContext_Stop(void) { - sScriptContext1Status = 1; + sGlobalScriptContextStatus = CONTEXT_WAITING; } -void EnableBothScriptContexts(void) +// Puts the script into running mode. +void ScriptContext_Enable(void) { - sScriptContext1Status = 0; - ScriptContext2_Enable(); + sGlobalScriptContextStatus = CONTEXT_RUNNING; + LockPlayerFieldControls(); } -void ScriptContext2_RunNewScript(const u8 *ptr) +// Sets up and runs a script in its own context immediately. The script will be +// finished when this function returns. Used mainly by all of the map header +// scripts (except the frame table scripts). +void RunScriptImmediately(const u8 *ptr) { - InitScriptContext(&sScriptContext2, &gScriptCmdTable, &gScriptCmdTableEnd); - SetupBytecodeScript(&sScriptContext2, ptr); - while (RunScriptCommand(&sScriptContext2) == TRUE); + InitScriptContext(&sImmediateScriptContext, &gScriptCmdTable, &gScriptCmdTableEnd); + SetupBytecodeScript(&sImmediateScriptContext, ptr); + while (RunScriptCommand(&sImmediateScriptContext) == TRUE); } -u8 *mapheader_get_tagged_pointer(u8 tag) +static u8 *MapHeaderGetScriptTable(u8 tag) { const u8 *mapScripts = gMapHeader.mapScripts; @@ -377,16 +399,16 @@ u8 *mapheader_get_tagged_pointer(u8 tag) } } -void mapheader_run_script_by_tag(u8 tag) +static void MapHeaderRunScriptType(u8 tag) { - u8 *ptr = mapheader_get_tagged_pointer(tag); + u8 *ptr = MapHeaderGetScriptTable(tag); if (ptr != NULL) - ScriptContext2_RunNewScript(ptr); + RunScriptImmediately(ptr); } -u8 *mapheader_get_first_match_from_tagged_ptr_list(u8 tag) +static u8 *MapHeaderCheckScriptTable(u8 tag) { - u8 *ptr = mapheader_get_tagged_pointer(tag); + u8 *ptr = MapHeaderGetScriptTable(tag); if (ptr == NULL) return NULL; @@ -395,64 +417,70 @@ u8 *mapheader_get_first_match_from_tagged_ptr_list(u8 tag) { u16 varIndex1; u16 varIndex2; - varIndex1 = ptr[0] | (ptr[1] << 8); + + // Read first var (or .2byte terminal value) + varIndex1 = T1_READ_16(ptr); if (!varIndex1) - return NULL; + return NULL; // Reached end of table ptr += 2; - varIndex2 = ptr[0] | (ptr[1] << 8); + + // Read second var + varIndex2 = T1_READ_16(ptr); ptr += 2; + + // Run map script if vars are equal if (VarGet(varIndex1) == VarGet(varIndex2)) - return (u8 *)(ptr[0] + (ptr[1] << 8) + (ptr[2] << 16) + (ptr[3] << 24)); + return T2_READ_PTR(ptr); ptr += 4; } } void RunOnLoadMapScript(void) { - mapheader_run_script_by_tag(1); + MapHeaderRunScriptType(MAP_SCRIPT_ON_LOAD); } void RunOnTransitionMapScript(void) { - mapheader_run_script_by_tag(3); + MapHeaderRunScriptType(MAP_SCRIPT_ON_TRANSITION); } void RunOnResumeMapScript(void) { - mapheader_run_script_by_tag(5); + MapHeaderRunScriptType(MAP_SCRIPT_ON_RESUME); } void RunOnReturnToFieldMapScript(void) { - mapheader_run_script_by_tag(7); + MapHeaderRunScriptType(MAP_SCRIPT_ON_RETURN_TO_FIELD); } void RunOnDiveWarpMapScript(void) { - mapheader_run_script_by_tag(6); + MapHeaderRunScriptType(MAP_SCRIPT_ON_DIVE_WARP); } bool8 TryRunOnFrameMapScript(void) { u8 *ptr; - if(gQuestLogState == QL_STATE_PLAYBACK_LAST) - return 0; + if (gQuestLogState == QL_STATE_PLAYBACK_LAST) + return FALSE; - ptr = mapheader_get_first_match_from_tagged_ptr_list(2); + ptr = MapHeaderCheckScriptTable(MAP_SCRIPT_ON_FRAME_TABLE); if (!ptr) - return 0; + return FALSE; - ScriptContext1_SetupScript(ptr); - return 1; + ScriptContext_SetupScript(ptr); + return TRUE; } void TryRunOnWarpIntoMapScript(void) { - u8 *ptr = mapheader_get_first_match_from_tagged_ptr_list(4); + u8 *ptr = MapHeaderCheckScriptTable(MAP_SCRIPT_ON_WARP_INTO_MAP_TABLE); if (ptr) - ScriptContext2_RunNewScript(ptr); + RunScriptImmediately(ptr); } u32 CalculateRamScriptChecksum(void) @@ -486,7 +514,7 @@ bool8 InitRamScript(u8 *script, u16 scriptSize, u8 mapGroup, u8 mapNum, u8 objec const u8 *GetRamScript(u8 objectId, const u8 *script) { struct RamScriptData *scriptData = &gSaveBlock1Ptr->ramScript.data; - gRAMScriptPtr = NULL; + gRamScriptRetAddr = NULL; if (scriptData->magic != RAM_SCRIPT_MAGIC) return script; if (scriptData->mapGroup != gSaveBlock1Ptr->location.mapGroup) @@ -502,7 +530,7 @@ const u8 *GetRamScript(u8 objectId, const u8 *script) } else { - gRAMScriptPtr = script; + gRamScriptRetAddr = script; return scriptData->script; } } @@ -547,9 +575,9 @@ u8 *GetSavedRamScriptIfValid(void) } } -void MEventSetRamScript(u8 *script, u16 scriptSize) +void InitRamScript_NoObjectEvent(u8 *script, u16 scriptSize) { if (scriptSize > sizeof(gSaveBlock1Ptr->ramScript.data.script)) scriptSize = sizeof(gSaveBlock1Ptr->ramScript.data.script); - InitRamScript(script, scriptSize, 0xFF, 0xFF, 0xFF); + InitRamScript(script, scriptSize, MAP_GROUP(UNDEFINED), MAP_NUM(UNDEFINED), 0xFF); } diff --git a/src/script_menu.c b/src/script_menu.c index d59ed07f7..f7f466f5b 100644 --- a/src/script_menu.c +++ b/src/script_menu.c @@ -816,7 +816,7 @@ static void Task_MultichoiceMenu_HandleInput(u8 taskId) } DestroyScriptMenuWindow(data[6]); DestroyTask(taskId); - EnableBothScriptContexts(); + ScriptContext_Enable(); } } } @@ -885,7 +885,7 @@ static void Task_YesNoMenu_HandleInput(u8 taskId) break; } DestroyTask(taskId); - EnableBothScriptContexts(); + ScriptContext_Enable(); } } @@ -936,7 +936,7 @@ static void Hask_MultichoiceGridMenu_HandleInput(u8 taskId) } DestroyScriptMenuWindow(data[6]); DestroyTask(taskId); - EnableBothScriptContexts(); + ScriptContext_Enable(); } bool8 CreatePCMenu(void) @@ -1172,7 +1172,7 @@ void QLPlaybackCB_DestroyScriptMenuMonPicSprites(void) { u8 taskId; s16 *data; - ScriptContext1_SetupScript(EventScript_ReleaseEnd); + ScriptContext_SetupScript(EventScript_ReleaseEnd); taskId = FindTaskIdByFunc(Task_ScriptShowMonPic); if (taskId != 0xFF) { diff --git a/src/shop.c b/src/shop.c index 7f815c486..f10391324 100644 --- a/src/shop.c +++ b/src/shop.c @@ -1129,7 +1129,7 @@ void CreatePokemartMenu(const u16 *itemsForSale) { SetShopItemsForSale(itemsForSale); CreateShopMenu(MART_TYPE_REGULAR); - SetShopMenuCallback(EnableBothScriptContexts); + SetShopMenuCallback(ScriptContext_Enable); DebugFunc_PrintShopMenuHistoryBeforeClearMaybe(); memset(&gShopMenuHistory, 0, sizeof(gShopMenuHistory)); gShopMenuHistory[0].unk8 = gMapHeader.regionMapSectionId; @@ -1140,13 +1140,13 @@ void CreateDecorationShop1Menu(const u16 *itemsForSale) { SetShopItemsForSale(itemsForSale); CreateShopMenu(MART_TYPE_DECOR); - SetShopMenuCallback(EnableBothScriptContexts); + SetShopMenuCallback(ScriptContext_Enable); } void CreateDecorationShop2Menu(const u16 *itemsForSale) { SetShopItemsForSale(itemsForSale); CreateShopMenu(MART_TYPE_DECOR2); - SetShopMenuCallback(EnableBothScriptContexts); + SetShopMenuCallback(ScriptContext_Enable); } diff --git a/src/ss_anne.c b/src/ss_anne.c index 78ed5b48b..ce46bc6f6 100644 --- a/src/ss_anne.c +++ b/src/ss_anne.c @@ -137,7 +137,7 @@ static void Task_SSAnneFinish(u8 taskId) FreeSpriteTilesByTag(SPRITE_TAG_WAKE); FreeSpriteTilesByTag(SPRITE_TAG_SMOKE); DestroyTask(taskId); - EnableBothScriptContexts(); + ScriptContext_Enable(); } } diff --git a/src/start_menu.c b/src/start_menu.c index 80381216e..f81399cb3 100644 --- a/src/start_menu.c +++ b/src/start_menu.c @@ -394,7 +394,7 @@ void ShowStartMenu(void) StopPlayerAvatar(); } OpenStartMenuWithFollowupFunc(Task_StartMenuHandleInput); - ScriptContext2_Enable(); + LockPlayerFieldControls(); } static bool8 StartCB_HandleInput(void) @@ -575,7 +575,7 @@ static bool8 StartCB_Save2(void) case SAVECB_RETURN_OKAY: ClearDialogWindowAndFrameToTransparent(0, TRUE); ClearPlayerHeldMovementAndUnfreezeObjectEvents(); - ScriptContext2_Disable(); + UnlockPlayerFieldControls(); RestoreHelpContext(); return TRUE; case SAVECB_RETURN_CANCEL: @@ -587,7 +587,7 @@ static bool8 StartCB_Save2(void) case SAVECB_RETURN_ERROR: ClearDialogWindowAndFrameToTransparent(0, TRUE); ClearPlayerHeldMovementAndUnfreezeObjectEvents(); - ScriptContext2_Disable(); + UnlockPlayerFieldControls(); RestoreHelpContext(); return TRUE; } @@ -641,7 +641,7 @@ static void task50_save_game(u8 taskId) break; } DestroyTask(taskId); - EnableBothScriptContexts(); + ScriptContext_Enable(); RestoreHelpContext(); } @@ -995,7 +995,7 @@ static void CloseStartMenu(void) ClearStdWindowAndFrame(GetStartMenuWindowId(), TRUE); RemoveStartMenuWindow(); ClearPlayerHeldMovementAndUnfreezeObjectEvents(); - ScriptContext2_Disable(); + UnlockPlayerFieldControls(); } void AppendToList(u8 *list, u8 *cursor, u8 newEntry) diff --git a/src/trade_scene.c b/src/trade_scene.c index c3b36db16..4d0f72ee8 100644 --- a/src/trade_scene.c +++ b/src/trade_scene.c @@ -2728,7 +2728,7 @@ static void LinkTrade_TearDownAssets(void) void DoInGameTradeScene(void) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); CreateTask(Task_WaitFadeAndStartInGameTradeAnim, 10); BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 16, RGB_BLACK); HelpSystem_Disable(); diff --git a/src/trainer_see.c b/src/trainer_see.c index f008cdb86..12d47f247 100644 --- a/src/trainer_see.c +++ b/src/trainer_see.c @@ -550,7 +550,7 @@ void EndTrainerApproach(void) static void Task_DestroyTrainerApproachTask(u8 taskId) { DestroyTask(taskId); - EnableBothScriptContexts(); + ScriptContext_Enable(); } // Trainer See Excl Mark Field Effect diff --git a/src/union_room.c b/src/union_room.c index cc7df613a..2ba85970e 100644 --- a/src/union_room.c +++ b/src/union_room.c @@ -1019,12 +1019,12 @@ static void Task_TryBecomeLinkLeader(u8 taskId) data->state++; break; case 24: - EnableBothScriptContexts(); + ScriptContext_Enable(); DestroyTask(taskId); gSpecialVar_Result = 5; break; case 22: - EnableBothScriptContexts(); + ScriptContext_Enable(); DestroyTask(taskId); gSpecialVar_Result = 8; break; @@ -2003,7 +2003,7 @@ static void Task_StartActivity(u8 taskId) DestroyTask(taskId); gSpecialVar_Result = 1; - ScriptContext2_Disable(); + UnlockPlayerFieldControls(); } static void Task_RunScriptAndFadeToActivity(u8 taskId) @@ -2015,11 +2015,11 @@ static void Task_RunScriptAndFadeToActivity(u8 taskId) { case 0: gSpecialVar_Result = 1; - EnableBothScriptContexts(); + ScriptContext_Enable(); data[0]++; break; case 1: - if (!ScriptContext1_IsScriptSetUp()) + if (!ScriptContext_IsEnabled()) { FadeScreen(FADE_TO_BLACK, 0); data[0]++; @@ -2776,7 +2776,7 @@ static void Task_RunUnionRoom(u8 taskId) gSpecialVar_Result = 0; } } - else if (ScriptContext2_IsEnabled() != TRUE) + else if (ArePlayerFieldControlsLocked() != TRUE) { if (JOY_NEW(A_BUTTON)) { @@ -3977,7 +3977,7 @@ static void JoinGroup_BlankBg0AndEnableScriptContexts(void) { FillBgTilemapBufferRect(0, 0, 0, 0, 32, 32, 0); CopyBgTilemapBufferToVram(0); - EnableBothScriptContexts(); + ScriptContext_Enable(); } static void UR_AddTextPrinterParameterized(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 colorIdx) @@ -4644,7 +4644,7 @@ static u32 GetPartyPositionOfRegisteredMon(struct UnionRoomTrade * trade, u8 mul static void HandleCancelTrade(bool32 unlockObjs) { UR_BlankBg0(); - ScriptContext2_Disable(); + UnlockPlayerFieldControls(); UnionRoom_UnlockPlayerAndChatPartner(); sPlayerCurrActivity = 0; if (unlockObjs) @@ -4656,7 +4656,7 @@ static void HandleCancelTrade(bool32 unlockObjs) static void UR_EnableScriptContext2AndFreezeObjectEvents(void) { - ScriptContext2_Enable(); + LockPlayerFieldControls(); FreezeObjects_WaitForPlayer(); } diff --git a/src/vs_seeker.c b/src/vs_seeker.c index 4962a7cf8..d4032b5fc 100644 --- a/src/vs_seeker.c +++ b/src/vs_seeker.c @@ -624,7 +624,7 @@ static void Task_ResetObjectsRematchWantedState(u8 taskId) { DestroyTask(taskId); StopPlayerAvatar(); - EnableBothScriptContexts(); + ScriptContext_Enable(); } } @@ -837,7 +837,7 @@ static void Task_VsSeeker_3(u8 taskId) StartAllRespondantIdleMovements(); ClearDialogWindowAndFrame(0, TRUE); ClearPlayerHeldMovementAndUnfreezeObjectEvents(); - ScriptContext2_Disable(); + UnlockPlayerFieldControls(); DestroyTask(taskId); } Free(sVsSeeker); diff --git a/src/wild_encounter.c b/src/wild_encounter.c index b513ad47e..d3f076c43 100644 --- a/src/wild_encounter.c +++ b/src/wild_encounter.c @@ -593,7 +593,7 @@ bool8 UpdateRepelCounter(void) VarSet(VAR_REPEL_STEP_COUNT, steps); if (steps == 0) { - ScriptContext1_SetupScript(EventScript_RepelWoreOff); + ScriptContext_SetupScript(EventScript_RepelWoreOff); return TRUE; } } From 17a8498701bbcb1cad82b81388d580399e69ae98 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Tue, 30 Aug 2022 14:07:57 -0400 Subject: [PATCH 2/5] Fix battle message charmap copied from emerald --- charmap.txt | 10 +++------- data/battle_scripts_1.s | 4 ++-- include/constants/battle_string_ids.h | 4 ++-- src/battle_message.c | 15 +++++++++------ 4 files changed, 16 insertions(+), 17 deletions(-) diff --git a/charmap.txt b/charmap.txt index 150b4a156..8aba3a327 100644 --- a/charmap.txt +++ b/charmap.txt @@ -406,13 +406,9 @@ B_ATK_PREFIX2 = FD 2A B_DEF_PREFIX2 = FD 2B B_ATK_PREFIX3 = FD 2C B_DEF_PREFIX3 = FD 2D -B_TRAINER2_CLASS = FD 2E -B_TRAINER2_NAME = FD 2F -B_TRAINER2_LOSE_TEXT = FD 30 -B_TRAINER2_WIN_TEXT = FD 31 -B_PARTNER_CLASS = FD 32 -B_PARTNER_NAME = FD 33 -B_BUFF3 = FD 34 +B_TRAINER2_LOSE_TEXT = FD 2E +B_TRAINER2_WIN_TEXT = FD 2F +B_BUFF3 = FD 30 @ indicates the end of a town/city name (before " TOWN" or " CITY") NAME_END = FC 00 diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s index 674bb50d8..8aa0a1004 100644 --- a/data/battle_scripts_1.s +++ b/data/battle_scripts_1.s @@ -2977,7 +2977,7 @@ BattleScript_BattleTowerLostLostSkipMonRecall:: waitstate printstring STRINGID_TRAINER1WINTEXT jumpifnotbattletype BATTLE_TYPE_DOUBLE, BattleScript_BattleTowerLostLostSkipDouble - printstring STRINGID_TRAINER2NAME + printstring STRINGID_TRAINER2WINTEXT BattleScript_BattleTowerLostLostSkipDouble:: end2 @@ -2995,7 +2995,7 @@ BattleScript_BattleTowerTrainerBattleWon:: jumpifnotbattletype BATTLE_TYPE_TRAINER_TOWER, BattleScript_BattleTowerEtcTrainerBattleWonSkipText printstring STRINGID_TRAINER1LOSETEXT jumpifnotbattletype BATTLE_TYPE_DOUBLE, BattleScript_BattleTowerEtcTrainerBattleWonSkipText - printstring STRINGID_TRAINER2CLASS + printstring STRINGID_TRAINER2LOSETEXT BattleScript_BattleTowerEtcTrainerBattleWonSkipText:: pickup end2 diff --git a/include/constants/battle_string_ids.h b/include/constants/battle_string_ids.h index c648ad7be..24cc01ca6 100644 --- a/include/constants/battle_string_ids.h +++ b/include/constants/battle_string_ids.h @@ -373,8 +373,8 @@ #define STRINGID_POKEFLUTECATCHY 372 #define STRINGID_POKEFLUTE 373 #define STRINGID_MONHEARINGFLUTEAWOKE 374 -#define STRINGID_TRAINER2CLASS 375 -#define STRINGID_TRAINER2NAME 376 +#define STRINGID_TRAINER2LOSETEXT 375 +#define STRINGID_TRAINER2WINTEXT 376 #define STRINGID_PLAYERWHITEDOUT 377 #define STRINGID_MONTOOSCAREDTOMOVE 378 #define STRINGID_GHOSTGETOUTGETOUT 379 diff --git a/src/battle_message.c b/src/battle_message.c index 43ebc8444..f1d6430da 100644 --- a/src/battle_message.c +++ b/src/battle_message.c @@ -44,13 +44,13 @@ static void ExpandBattleTextBuffPlaceholders(const u8 *src, u8 *dst); static const u8 sText_Empty1[] = _(""); static const u8 sText_Trainer1LoseText[] = _("{B_TRAINER1_LOSE_TEXT}"); -static const u8 sText_Trainer2Class[] = _("{B_TRAINER2_CLASS}"); +static const u8 sText_Trainer2LoseText[] = _("{B_TRAINER2_LOSE_TEXT}"); static const u8 sText_Trainer1RecallPkmn1[] = _("{B_TRAINER1_NAME}: {B_OPPONENT_MON1_NAME}, come back!"); static const u8 sText_Trainer1WinText[] = _("{B_TRAINER1_WIN_TEXT}"); static const u8 sText_Trainer1RecallPkmn2[] = _("{B_TRAINER1_NAME}: {B_OPPONENT_MON2_NAME}, come back!"); static const u8 sText_Trainer1RecallBoth[] = _("{B_TRAINER1_NAME}: {B_OPPONENT_MON1_NAME} and\n{B_OPPONENT_MON2_NAME}, come back!"); -static const u8 sText_Trainer2Name[] = _("{B_TRAINER2_NAME}"); -static const u8 sText_PkmnGainedEXP[] = _("{B_BUFF1} gained{B_BUFF2}\n{B_TRAINER2_LOSE_TEXT} EXP. Points!\p"); +static const u8 sText_Trainer2WinText[] = _("{B_TRAINER2_WIN_TEXT}"); +static const u8 sText_PkmnGainedEXP[] = _("{B_BUFF1} gained{B_BUFF2}\n{B_BUFF3} EXP. Points!\p"); static const u8 sText_EmptyString4[] = _(""); static const u8 sText_ABoosted[] = _(" a boosted"); static const u8 sText_PkmnGrewToLv[] = _("{B_BUFF1} grew to\nLV. {B_BUFF2}!{WAIT_SE}\p"); @@ -878,8 +878,8 @@ const u8 *const gBattleStringsTable[BATTLESTRINGS_COUNT - BATTLESTRINGS_TABLE_ST [STRINGID_POKEFLUTECATCHY - BATTLESTRINGS_TABLE_START] = sText_PlayedFluteCatchyTune, [STRINGID_POKEFLUTE - BATTLESTRINGS_TABLE_START] = sText_PlayedThe, [STRINGID_MONHEARINGFLUTEAWOKE - BATTLESTRINGS_TABLE_START] = sText_PkmnHearingFluteAwoke, - [STRINGID_TRAINER2CLASS - BATTLESTRINGS_TABLE_START] = sText_Trainer2Class, - [STRINGID_TRAINER2NAME - BATTLESTRINGS_TABLE_START] = sText_Trainer2Name, + [STRINGID_TRAINER2LOSETEXT - BATTLESTRINGS_TABLE_START] = sText_Trainer2LoseText, + [STRINGID_TRAINER2WINTEXT - BATTLESTRINGS_TABLE_START] = sText_Trainer2WinText, [STRINGID_PLAYERWHITEDOUT - BATTLESTRINGS_TABLE_START] = sText_PlayerWhiteout2, [STRINGID_MONTOOSCAREDTOMOVE - BATTLESTRINGS_TABLE_START] = sText_TooScaredToMove, [STRINGID_GHOSTGETOUTGETOUT - BATTLESTRINGS_TABLE_START] = sText_GetOutGetOut, @@ -2805,7 +2805,10 @@ void BattlePutTextOnWindow(const u8 *text, u8 windowId) { bool8 BattleStringShouldBeColored(u16 stringId) { - if (stringId == STRINGID_TRAINER1LOSETEXT || stringId == STRINGID_TRAINER2CLASS || stringId == STRINGID_TRAINER1WINTEXT || stringId == STRINGID_TRAINER2NAME) + if (stringId == STRINGID_TRAINER1LOSETEXT + || stringId == STRINGID_TRAINER2LOSETEXT + || stringId == STRINGID_TRAINER1WINTEXT + || stringId == STRINGID_TRAINER2WINTEXT) return TRUE; return FALSE; } From 859ca7994eb2f5cd6cd5bcd8b50fcba5989f0e2e Mon Sep 17 00:00:00 2001 From: cbt6 <91667135+cbt6@users.noreply.github.com> Date: Sat, 3 Sep 2022 23:27:56 +0800 Subject: [PATCH 3/5] Document Pokemon storage system --- include/box_party_pokemon_dropdown.h | 26 +- include/graphics.h | 10 +- include/pokemon_storage_system.h | 21 +- include/pokemon_storage_system_internal.h | 625 +++--- src/berry_pouch.c | 2 +- src/box_party_pokemon_dropdown.c | 268 +-- src/graphics.c | 12 +- src/item_menu.c | 2 +- src/pokemon_storage_system_2.c | 290 ++- src/pokemon_storage_system_3.c | 2123 +++++++++++---------- src/pokemon_storage_system_4.c | 1266 ++++++------ src/pokemon_storage_system_5.c | 1576 ++++++++------- src/pokemon_storage_system_6.c | 154 +- src/pokemon_storage_system_7.c | 500 +++-- src/pokemon_storage_system_8.c | 349 ++-- src/tm_case.c | 2 +- 16 files changed, 3645 insertions(+), 3581 deletions(-) diff --git a/include/box_party_pokemon_dropdown.h b/include/box_party_pokemon_dropdown.h index 795a22e67..5e925e8a2 100644 --- a/include/box_party_pokemon_dropdown.h +++ b/include/box_party_pokemon_dropdown.h @@ -1,24 +1,12 @@ #ifndef GUARD_BOX_PARTY_POKEMON_DROPDOWN_H #define GUARD_BOX_PARTY_POKEMON_DROPDOWN_H -enum -{ - BPPD_MOVE_INNER_LEFT = 0, - BPPD_MOVE_OUTER_LEFT, - BPPD_MOVE_INNER_TOP, - BPPD_MOVE_OUTER_TOP, - BPPD_MOVE_INNER_X, - BPPD_MOVE_INNER_Y -}; - -void AllocBoxPartyPokemonDropdowns(u8 num); -void FreeBoxPartyPokemonDropdowns(void); -void CopyAllBoxPartyPokemonDropdownsToVram(void); -void SetBoxPartyPokemonDropdownMap2(u8 idx, u8 bgId, const void *src, u16 width, u16 height); -void SetBoxPartyPokemonDropdownMap1Tiles(u8 idx, const void *src); -void SetBoxPartyPokemonDropdownMap2Pos(u8 idx, u16 x, u16 y); -void SetBoxPartyPokemonDropdownMap2Rect(u8 idx, u16 x, u16 y, u16 width, u16 height); -void AdjustBoxPartyPokemonDropdownPos(u8 a0, u8 a1, s8 a2); -void CopyBoxPartyPokemonDropdownToBgTilemapBuffer(u8 idx); +void TilemapUtil_Init(u8 numTilemapIds); +void TilemapUtil_Free(void); +void TilemapUtil_SetTilemap(u8 tilemapId, u8 bg, const void *tilemap, u16 width, u16 height); +void TilemapUtil_SetPos(u8 tilemapId, u16 destX, u16 destY); +void TilemapUtil_SetRect(u8 tilemapId, u16 x, u16 y, u16 width, u16 height); +void TilemapUtil_Move(u8 tilemapId, u8 mode, s8 param); +void TilemapUtil_Update(u8 tilemapId); #endif //GUARD_BOX_PARTY_POKEMON_DROPDOWN_H diff --git a/include/graphics.h b/include/graphics.h index 6739f937b..02cc0082e 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -4928,11 +4928,11 @@ extern const u16 gNamingScreenInputArrow_Gfx[]; extern const u16 gNamingScreenUnderscore_Gfx[]; // pokemon_storage_system -extern const u32 gPSSMenu_Gfx[]; -extern const u32 gUnknown_8E9CAEC[]; -extern const u16 gPSSMenu_Pal[]; -extern const u16 gUnknown_8E9C3F8[]; -extern const u16 gUnknown_8E9C418[]; +extern const u32 gPokeStorageMenu_Gfx[]; +extern const u32 gPokeStoragePartyMenu_Tilemap[]; +extern const u16 gPokeStoragePartyMenu_Pal[]; +extern const u16 gPokeStorageInterface_Pal[]; +extern const u16 gPokeStorageInterface_NoDisplayMon_Pal[]; // pokedex_screen extern const u16 gDexScreen_TopMenuIconPals_AtoZ[]; diff --git a/include/pokemon_storage_system.h b/include/pokemon_storage_system.h index f111796d8..388d3dba5 100644 --- a/include/pokemon_storage_system.h +++ b/include/pokemon_storage_system.h @@ -4,7 +4,18 @@ #include "global.h" #define TOTAL_BOXES_COUNT 14 -#define IN_BOX_COUNT 30 +#define IN_BOX_ROWS 5 // Number of rows, 6 Pokémon per row +#define IN_BOX_COLUMNS 6 // Number of columns, 5 Pokémon per column +#define IN_BOX_COUNT (IN_BOX_ROWS * IN_BOX_COLUMNS) + +/* + COLUMNS +ROWS 0 1 2 3 4 5 + 6 7 8 9 10 11 + 12 13 14 15 16 17 + 18 19 20 21 22 23 + 24 25 26 27 28 29 +*/ enum { @@ -20,10 +31,10 @@ enum WALLPAPER_SEAFLOOR, WALLPAPER_RIVER, WALLPAPER_SKY, - WALLPAPER_POLKADOT, + WALLPAPER_STARS, WALLPAPER_POKECENTER, - WALLPAPER_MACHINE, - WALLPAPER_PLAIN, + WALLPAPER_TILES, + WALLPAPER_SIMPLE, WALLPAPER_COUNT }; #define MAX_DEFAULT_WALLPAPER WALLPAPER_SAVANNA @@ -34,7 +45,7 @@ void SetBoxMonNickAt(u8 boxId, u8 monPosition, const u8 *newNick); s16 CompactPartySlots(void); u32 GetBoxMonDataAt(u8 boxId, u8 monPosition, s32 request); void ZeroBoxMonAt(u8 boxId, u8 monPosition); -void Cb2_ReturnToPSS(void); +void CB2_ReturnToPokeStorage(void); void ResetPokemonStorageSystem(void); u8 StorageGetCurrentBox(void); void DrawTextWindowAndBufferTiles(const u8 *string, void *dst, u8 zero1, u8 zero2, u8 *buffer, s32 bytesToBuffer); diff --git a/include/pokemon_storage_system_internal.h b/include/pokemon_storage_system_internal.h index 3582d1f32..9c1984825 100644 --- a/include/pokemon_storage_system_internal.h +++ b/include/pokemon_storage_system_internal.h @@ -4,9 +4,6 @@ #include "pokemon_storage_system.h" #include "mon_markings.h" -#define IN_BOX_COLUMNS 5 -#define IN_BOX_ROWS 6 - // The maximum number of Pokémon icons that can appear on-screen. // By default the limit is 40 (though in practice only 37 can be). #define MAX_MON_ICONS (IN_BOX_COUNT + PARTY_SIZE + 1 >= 40 ? IN_BOX_COUNT + PARTY_SIZE + 1 : 40) @@ -16,13 +13,6 @@ // between 2 Pokémon with held items #define MAX_ITEM_ICONS 3 -enum -{ - MODE_PARTY, - MODE_BOX, - MODE_2, -}; - enum { OPTION_WITHDRAW, @@ -35,139 +25,200 @@ enum enum { - PC_TEXT_EXIT_BOX, - PC_TEXT_WHAT_YOU_DO, - PC_TEXT_PICK_A_THEME, - PC_TEXT_PICK_A_WALLPAPER, - PC_TEXT_IS_SELECTED, - PC_TEXT_JUMP_TO_WHICH_BOX, - PC_TEXT_DEPOSIT_IN_WHICH_BOX, - PC_TEXT_WAS_DEPOSITED, - PC_TEXT_BOX_IS_FULL, - PC_TEXT_RELEASE_POKE, - PC_TEXT_WAS_RELEASED, - PC_TEXT_BYE_BYE, - PC_TEXT_MARK_POKE, - PC_TEXT_LAST_POKE, - PC_TEXT_PARTY_FULL, - PC_TEXT_HOLDING_POKE, - PC_TEXT_WHICH_ONE_WILL_TAKE, - PC_TEXT_CANT_RELEASE_EGG, - PC_TEXT_CONTINUE_BOX, - PC_TEXT_CAME_BACK, - PC_TEXT_WORRIED, - PC_TEXT_SURPRISE, - PC_TEXT_PLEASE_REMOVE_MAIL, - PC_TEXT_IS_SELECTED2, - PC_TEXT_GIVE_TO_MON, - PC_TEXT_PLACED_IN_BAG, - PC_TEXT_BAG_FULL, - PC_TEXT_PUT_IN_BAG, - PC_TEXT_ITEM_IS_HELD, - PC_TEXT_CHANGED_TO_ITEM, - PC_TEXT_CANT_STORE_MAIL, + MENU_TEXT_CANCEL, + MENU_TEXT_STORE, + MENU_TEXT_WITHDRAW, + MENU_TEXT_MOVE, + MENU_TEXT_SHIFT, + MENU_TEXT_PLACE, + MENU_TEXT_SUMMARY, + MENU_TEXT_RELEASE, + MENU_TEXT_MARK, + MENU_TEXT_JUMP, + MENU_TEXT_WALLPAPER, + MENU_TEXT_NAME, + MENU_TEXT_TAKE, + MENU_TEXT_GIVE, + MENU_TEXT_GIVE2, + MENU_TEXT_SWITCH, + MENU_TEXT_BAG, + MENU_TEXT_INFO, + MENU_TEXT_SCENERY_1, + MENU_TEXT_SCENERY_2, + MENU_TEXT_SCENERY_3, + MENU_TEXT_ETCETERA, + MENU_TEXT_FOREST, + MENU_TEXT_CITY, + MENU_TEXT_DESERT, + MENU_TEXT_SAVANNA, + MENU_TEXT_CRAG, + MENU_TEXT_VOLCANO, + MENU_TEXT_SNOW, + MENU_TEXT_CAVE, + MENU_TEXT_BEACH, + MENU_TEXT_SEAFLOOR, + MENU_TEXT_RIVER, + MENU_TEXT_SKY, + MENU_TEXT_POLKADOT, + MENU_TEXT_POKECENTER, + MENU_TEXT_MACHINE, + MENU_TEXT_SIMPLE, +}; + +// Return IDs for input handlers +enum { + INPUT_NONE, + INPUT_MOVE_CURSOR, + INPUT_2, // Unused + INPUT_3, // Unused + INPUT_CLOSE_BOX, + INPUT_SHOW_PARTY, + INPUT_HIDE_PARTY, + INPUT_BOX_OPTIONS, + INPUT_IN_MENU, + INPUT_SCROLL_RIGHT, + INPUT_SCROLL_LEFT, + INPUT_DEPOSIT, + INPUT_WITHDRAW, + INPUT_MOVE_MON, + INPUT_SHIFT_MON, + INPUT_PLACE_MON, + INPUT_TAKE_ITEM, + INPUT_GIVE_ITEM, + INPUT_SWITCH_ITEMS, + INPUT_PRESSED_B, + INPUT_MULTIMOVE_START, + INPUT_MULTIMOVE_CHANGE_SELECTION, + INPUT_MULTIMOVE_SINGLE, + INPUT_MULTIMOVE_GRAB_SELECTION, + INPUT_MULTIMOVE_UNABLE, + INPUT_MULTIMOVE_MOVE_MONS, + INPUT_MULTIMOVE_PLACE_MONS, }; enum { - PC_TEXT_FMT_NORMAL, - PC_TEXT_FMT_MON_NAME_1, - PC_TEXT_FMT_MON_NAME_2, - PC_TEXT_FMT_MON_NAME_3, - PC_TEXT_FMT_MON_NAME_4, - PC_TEXT_FMT_MON_NAME_5, - PC_TEXT_FMT_MON_NAME_6, - PC_TEXT_FMT_ITEM_NAME, + RELEASE_MON_NOT_ALLOWED, + RELEASE_MON_ALLOWED, + RELEASE_MON_UNDETERMINED = -1, }; enum { - PC_TEXT_CANCEL, - PC_TEXT_STORE, - PC_TEXT_WITHDRAW, - PC_TEXT_MOVE, - PC_TEXT_SHIFT, - PC_TEXT_PLACE, - PC_TEXT_SUMMARY, - PC_TEXT_RELEASE, - PC_TEXT_MARK, - PC_TEXT_JUMP, - PC_TEXT_WALLPAPER, - PC_TEXT_NAME, - PC_TEXT_TAKE, - PC_TEXT_GIVE, - PC_TEXT_GIVE2, - PC_TEXT_SWITCH, - PC_TEXT_BAG, - PC_TEXT_INFO, - PC_TEXT_SCENERY1, - PC_TEXT_SCENERY2, - PC_TEXT_SCENERY3, - PC_TEXT_ETCETERA, - PC_TEXT_FOREST, - PC_TEXT_CITY, - PC_TEXT_DESERT, - PC_TEXT_SAVANNA, - PC_TEXT_CRAG, - PC_TEXT_VOLCANO, - PC_TEXT_SNOW, - PC_TEXT_CAVE, - PC_TEXT_BEACH, - PC_TEXT_SEAFLOOR, - PC_TEXT_RIVER, - PC_TEXT_SKY, - PC_TEXT_POLKADOT, - PC_TEXT_POKECENTER, - PC_TEXT_MACHINE, - PC_TEXT_SIMPLE, + MODE_PARTY, + MODE_BOX, + MODE_MOVE, }; enum { CURSOR_AREA_IN_BOX, CURSOR_AREA_IN_PARTY, - CURSOR_AREA_BOX, + CURSOR_AREA_BOX_TITLE, CURSOR_AREA_BUTTONS, // Party Pokemon and Close Box }; +#define CURSOR_AREA_IN_HAND CURSOR_AREA_BOX_TITLE // Alt name for cursor area used by Move Items + +// IDs for InitMonPlaceChange +enum +{ + CHANGE_GRAB, + CHANGE_PLACE, + CHANGE_SHIFT, +}; + +// IDs for the main functions for moving multiple Pokémon. +// Given as arguments to MultiMove_SetFunction +enum +{ + MULTIMOVE_START, + MULTIMOVE_SINGLE, + MULTIMOVE_CHANGE_SELECTION, + MULTIMOVE_GRAB_SELECTION, + MULTIMOVE_MOVE_MONS, + MULTIMOVE_PLACE_MONS, +}; enum { - SCREEN_CHANGE_EXIT_BOX, - SCREEN_CHANGE_SUMMARY_SCREEN, - SCREEN_CHANGE_NAME_BOX, - SCREEN_CHANGE_ITEM_FROM_BAG, + PALTAG_MON_ICON_0 = 56000, + PALTAG_MON_ICON_1, // Used implicitly in CreateMonIconSprite + PALTAG_MON_ICON_2, // Used implicitly in CreateMonIconSprite + PALTAG_3, // Unused + PALTAG_4, // Unused + PALTAG_5, // Unused + PALTAG_DISPLAY_MON, + PALTAG_MISC_1, // Used by cursor in multimove mode, choose box menu popup + PALTAG_MARKING_COMBO, + PALTAG_BOX_TITLE, + PALTAG_MISC_2, // Used by waveforms, cursor in normal mode, cursor shadow, box scroll arrows + PALTAG_ITEM_ICON_0, + PALTAG_ITEM_ICON_1, // Used implicitly in CreateItemIconSprites + PALTAG_ITEM_ICON_2, // Used implicitly in CreateItemIconSprites + PALTAG_MARKING_MENU, }; -#define TAG_PAL_WAVEFORM 0xDACA -#define TAG_PAL_DAC8 0xDAC8 -#define TAG_PAL_DAC6 0xDAC6 -#define TAG_PAL_DACE 0xDACE -#define TAG_PAL_DAC7 0xDAC7 -#define TAG_PAL_DAC9 0xDAC9 -#define TAG_PAL_DAC0 0xDAC0 -#define TAG_PAL_DACB 0xDACB +enum +{ + GFXTAG_CURSOR, + GFXTAG_CURSOR_SHADOW, + GFXTAG_DISPLAY_MON, + GFXTAG_BOX_TITLE, + GFXTAG_BOX_TITLE_ALT, + GFXTAG_WAVEFORM, + GFXTAG_BOX_SCROLL_ARROW, + GFXTAG_ITEM_ICON_0, + GFXTAG_ITEM_ICON_1, // Used implicitly in CreateItemIconSprites + GFXTAG_ITEM_ICON_2, // Used implicitly in CreateItemIconSprites + GFXTAG_CHOOSE_BOX_MENU_CENTER, + GFXTAG_CHOOSE_BOX_MENU_CORNERS, // Used implicitly in LoadChooseBoxMenuGfx + GFXTAG_12, // Unused + GFXTAG_MARKING_MENU, + GFXTAG_14, // Unused + GFXTAG_15, // Unused + GFXTAG_MARKING_COMBO, + GFXTAG_17, // Unused + GFXTAG_MON_ICON, +}; -#define TAG_TILE_WAVEFORM 0x5 -#define TAG_TILE_10 0x10 -#define TAG_TILE_2 0x2 -#define TAG_TILE_D 0xD -#define TAG_TILE_A 0xA -#define TAG_TILE_3 0x3 -#define TAG_TILE_4 0x4 -#define TAG_TILE_12 0x12 -#define TAG_TILE_7 0x7 -#define TAG_TILE_0 0x0 -#define TAG_TILE_1 0x1 -#define TAG_TILE_6 0x6 +// Special box ids for the choose box menu +#define BOXID_NONE_CHOSEN 200 +#define BOXID_CANCELED 201 -struct WallpaperTable + +enum { + CURSOR_ANIM_BOUNCE, + CURSOR_ANIM_STILL, + CURSOR_ANIM_OPEN, + CURSOR_ANIM_FIST, +}; + +enum +{ + RELEASE_ANIM_RELEASE, + RELEASE_ANIM_COME_BACK, +}; + +// IDs for the item icons affine anims +enum +{ + ITEM_ANIM_NONE, + ITEM_ANIM_APPEAR, + ITEM_ANIM_DISAPPEAR, + ITEM_ANIM_PICK_UP, + ITEM_ANIM_PUT_DOWN, + ITEM_ANIM_PUT_AWAY, + ITEM_ANIM_LARGE, +}; + +struct Wallpaper { const u32 *tiles; const u32 *tileMap; const u16 *palettes; }; -struct StorageAction +struct StorageMessage { const u8 *text; u8 format; @@ -176,7 +227,7 @@ struct StorageAction struct ChooseBoxMenu { struct Sprite *menuSprite; - struct Sprite *menuSideSprites[4]; + struct Sprite *menuCornerSprites[4]; u32 unused1[3]; struct Sprite *arrowSprites[2]; u8 buffer[0x200]; // passed but not used @@ -212,7 +263,7 @@ struct UnkUtil u8 max; }; -struct PSS_ItemIconSprite +struct PokeStorageItemIcon { struct Sprite *sprite; u8 *tiles; @@ -222,12 +273,12 @@ struct PSS_ItemIconSprite u8 active; }; -struct PssQuestLogBuffer +struct PokeStorageQuestLogData { - u16 species; + u16 species1; u16 species2; - u8 fromBox; - u8 toBox; + u8 box1; + u8 box2; }; struct PokemonStorageSystemData @@ -235,7 +286,7 @@ struct PokemonStorageSystemData u8 state; u8 boxOption; u8 screenChangeType; - bool8 isReshowingPSS; + bool8 isReopening; u8 taskId; struct UnkUtil unkUtil; struct UnkUtilData unkUtilData[8]; @@ -262,8 +313,8 @@ struct PokemonStorageSystemData u16 scrollUnused5; // Never read u16 scrollUnused6; // Never read u8 filler1[22]; - u8 field_2F8[512]; - u8 field_4F8[512]; + u8 boxTitleTiles[512]; + u8 boxTitleUnused[512]; u8 boxTitleCycleId; u8 wallpaperLoadState; // Written to, but never read. u8 wallpaperLoadBoxId; @@ -276,7 +327,7 @@ struct PokemonStorageSystemData struct Sprite *arrowSprites[2]; u32 wallpaperPalBits; u8 filler2[80]; // Unused - u16 unkUnused1; // Never read. + u16 unusedField1; // Never read. s16 wallpaperSetId; s16 wallpaperId; u16 wallpaperTilemap[360]; @@ -285,112 +336,114 @@ struct PokemonStorageSystemData u8 scrollToBoxId; s8 scrollDirection; // u8 *wallpaperTiles; // used only in Emerald for Walda - /* 0a68 */ struct Sprite *movingMonSprite; - /* 0a6c */ struct Sprite *partySprites[PARTY_SIZE]; - /* 0a84 */ struct Sprite *boxMonsSprites[IN_BOX_COUNT]; - /* 0afc */ struct Sprite **shiftMonSpritePtr; - /* 0b00 */ struct Sprite **releaseMonSpritePtr; - /* 0b04 */ u16 numIconsPerSpecies[MAX_MON_ICONS]; - /* 0b54 */ u16 iconSpeciesList[MAX_MON_ICONS]; - /* 0ba4 */ u16 boxSpecies[IN_BOX_COUNT]; - /* 0be0 */ u32 boxPersonalities[IN_BOX_COUNT]; - /* 0c58 */ u8 incomingBoxId; - /* 0c59 */ u8 shiftTimer; - /* 0c5a */ u8 numPartyToCompact; - /* 0c5c */ u16 iconScrollDistance; - /* 0c5e */ s16 iconScrollPos; - /* 0c60 */ s16 iconScrollSpeed; - /* 0c62 */ u16 iconScrollNumIncoming; - /* 0c64 */ u8 iconScrollCurColumn; - /* 0c65 */ s8 iconScrollDirection; // Unnecessary duplicate of scrollDirection - /* 0c66 */ u8 iconScrollState; - /* 0c67 */ u8 iconScrollToBoxId; // Unused duplicate of scrollToBoxId - /* 0c68 */ struct WindowTemplate menuWindow; - /* 0c70 */ struct StorageMenu menuItems[7]; - /* 0ca8 */ u8 menuItemsCount; - /* 0ca9 */ u8 menuWidth; - /* 0caa */ u8 menuUnusedField; // Never read. - /* 0cac */ u16 menuWindowId; - /* 0cb0 */ struct Sprite *cursorSprite; - /* 0cb4 */ struct Sprite *cursorShadowSprite; - /* 0cb8 */ s32 cursorNewX; - /* 0cbc */ s32 cursorNewY; - /* 0cc0 */ u32 cursorSpeedX; - /* 0cc4 */ u32 cursorSpeedY; - /* 0cc8 */ s16 cursorTargetX; - /* 0cca */ s16 cursorTargetY; - /* 0ccc */ u16 cursorMoveSteps; - /* 0cce */ s8 cursorVerticalWrap; - /* 0ccf */ s8 cursorHorizontalWrap; - /* 0cd0 */ u8 newCursorArea; - /* 0cd1 */ u8 newCursorPosition; - /* 0cd2 */ u8 cursorPrevHorizPos; - /* 0cd3 */ u8 cursorFlipTimer; - /* 0cd4 */ u8 cursorPalNums[2]; - /* 0cd8 */ const u32 *displayMonPalette; - /* 0cdc */ u32 displayMonPersonality; - /* 0ce0 */ u16 displayMonSpecies; - /* 0ce2 */ u16 displayMonItemId; - /* 0ce4 */ u16 displayUnusedVar; - /* 0ce6 */ bool8 setMosaic; - /* 0ce7 */ u8 displayMonMarkings; - /* 0ce8 */ u8 displayMonLevel; - /* 0ce9 */ bool8 displayMonIsEgg; - /* 0cea */ u8 displayMonName[POKEMON_NAME_LENGTH + 1]; - /* 0cf5 */ u8 displayMonTexts[4][36]; - /* 0d88 */ bool8 (*monPlaceChangeFunc)(void); - /* 0d8c */ u8 monPlaceChangeState; - /* 0d8d */ u8 shiftBoxId; - /* 0d90 */ struct Sprite *markingComboSprite; - /* 0d94 */ struct Sprite *waveformSprites[2]; - /* 0d9c */ u16 *markingComboTilesPtr; - /* 0da0 */ struct MonMarkingsMenu markMenu; - /* 1e58 */ struct ChooseBoxMenu field_1E5C; - /* 20a0 */ struct Pokemon movingMon; - /* 2104 */ struct Pokemon field_2108; - /* 2168 */ u8 field_216C; - /* 2169 */ u8 field_216D; - /* 216c */ bool8 isSurfMon; - /* 216d */ bool8 isDiveMon; - /* 216a */ s8 field_216E; - /* 216b */ s8 field_216F; - /* 216e */ s8 field_2170; - /* 216f */ s8 field_2171; - /* 2170 */ u16 field_2172; - /* 2172 */ u16 field_2176[3]; - /* 2178 */ u8 field_2186; - /* 2179 */ u8 field_2187; - /* 217a */ u8 summaryScreenMode; - /* 217c */ union + struct Sprite *movingMonSprite; + struct Sprite *partySprites[PARTY_SIZE]; + struct Sprite *boxMonsSprites[IN_BOX_COUNT]; + struct Sprite **shiftMonSpritePtr; + struct Sprite **releaseMonSpritePtr; + u16 numIconsPerSpecies[MAX_MON_ICONS]; + u16 iconSpeciesList[MAX_MON_ICONS]; + u16 boxSpecies[IN_BOX_COUNT]; + u32 boxPersonalities[IN_BOX_COUNT]; + u8 incomingBoxId; + u8 shiftTimer; + u8 numPartySpritesToCompact; + u16 iconScrollDistance; + s16 iconScrollPos; + s16 iconScrollSpeed; + u16 iconScrollNumIncoming; + u8 iconScrollCurColumn; + s8 iconScrollDirection; // Unnecessary duplicate of scrollDirection + u8 iconScrollState; + u8 iconScrollToBoxId; // Unused duplicate of scrollToBoxId + struct WindowTemplate menuWindow; + struct StorageMenu menuItems[7]; + u8 menuItemsCount; + u8 menuWidth; + u8 menuUnusedField; // Never read. + u16 menuWindowId; + struct Sprite *cursorSprite; + struct Sprite *cursorShadowSprite; + s32 cursorNewX; + s32 cursorNewY; + u32 cursorSpeedX; + u32 cursorSpeedY; + s16 cursorTargetX; + s16 cursorTargetY; + u16 cursorMoveSteps; + s8 cursorVerticalWrap; + s8 cursorHorizontalWrap; + u8 newCursorArea; + u8 newCursorPosition; + u8 cursorPrevPartyPos; + u8 cursorFlipTimer; + u8 cursorPalNums[2]; + const u32 *displayMonPalette; + u32 displayMonPersonality; + u16 displayMonSpecies; + u16 displayMonItemId; + u16 displayUnusedVar; + bool8 setMosaic; + u8 displayMonMarkings; + u8 displayMonLevel; + bool8 displayMonIsEgg; + u8 displayMonNickname[POKEMON_NAME_LENGTH + 1]; + u8 displayMonTexts[4][36]; // nickname, species name, gender and level, item name + bool8 (*monPlaceChangeFunc)(void); + u8 monPlaceChangeState; + u8 shiftBoxId; + struct Sprite *markingComboSprite; + struct Sprite *waveformSprites[2]; + u16 *markingComboTilesPtr; + struct MonMarkingsMenu markMenu; + struct ChooseBoxMenu chooseBoxMenu; + struct Pokemon movingMon; + struct Pokemon tempMon; + s8 releaseMonStatus; + bool8 releaseMonStatusResolved; + bool8 isSurfMon; + bool8 isDiveMon; + s8 releaseCheckBoxId; + s8 releaseCheckBoxPos; + s8 releaseBoxId; + s8 releaseBoxPos; + u16 releaseCheckState; + u16 restrictedMoveList[3]; + u8 summaryLastIndex; + u8 summaryCursorPos; + u8 summaryScreenMode; + union { struct Pokemon *mon; struct BoxPokemon *box; - } field_218C; - /* 2180 */ u8 field_2190[40]; - /* 21a8 */ u8 field_21B8[40]; - /* 21d0 */ u8 field_21E0[POKEMON_NAME_LENGTH + 1]; - /* 21db */ u8 itemName[20]; - /* 21ef */ u8 inBoxMovingMode; - /* 21f0 */ u16 field_2200; - /* 21f4 */ struct PSS_ItemIconSprite itemIcons[MAX_ITEM_ICONS]; - /* 2224 */ u16 movingItemId; - /* 2226 */ u16 itemInfoWindowOffset; - /* 2228 */ struct PssQuestLogBuffer qlogBuffer; - /* 2230 */ u16 field_2238; - /* 2232 */ u16 field_223A; - /* 2234 */ u16 *field_223C; - /* 2238 */ struct Sprite *cursorMonSprite; - /* 223c */ u16 field_2244[0x40]; - /* 22bc */ u8 field_22C4[0x800]; - /* 2abc */ u8 field_2AC4[0x1800]; - /* 42bc */ u8 itemIconBuffer[0x800]; - /* 4abc */ u8 field_4AC4[0x1000]; - /* 5abc */ u8 field_5AC4[0x800]; -}; // size=62bc + } summaryMonPtr; + u8 actionText[40]; + u8 boxTitleText[40]; + u8 releaseMonName[POKEMON_NAME_LENGTH + 1]; + u8 itemName[20]; + u8 inBoxMovingMode; + u16 multiMoveWindowId; + struct PokeStorageItemIcon itemIcons[MAX_ITEM_ICONS]; + u16 movingItemId; + u16 itemInfoWindowOffset; + struct PokeStorageQuestLogData pokeStorageQuestLogData; + u16 unusedField2; + u16 displayMonPalOffset; + u16 *displayMonTilePtr; + struct Sprite *displayMonSprite; + u16 displayMonPalBuffer[0x20]; + u8 unusedBuffer1[0x40]; + u8 tileBuffer[0x800]; + u8 unusedBuffer2[0x1800]; + u8 itemIconBuffer[0x200]; + u8 unusedBuffer3[0x600]; + u8 wallpaperBgTilemapBuffer[0x1000]; + u8 menuTilemapBuffer[0x800]; +}; -extern struct PokemonStorageSystemData *gPSSData; +extern struct PokemonStorageSystemData *gStorage; -void Cb2_EnterPSS(u8 a0); +void EnterPokeStorage(u8 boxOption); u8 GetCurrentBoxOption(void); struct Sprite *CreateChooseBoxArrows(u16 x, u16 y, u8 animId, u8 priority, u8 subpriority); void SetBoxWallpaper(u8 boxId, u8 wallpaperId); @@ -400,46 +453,46 @@ void SetBoxMonAt(u8 boxId, u8 boxPosition, struct BoxPokemon * src); void CB2_ExitPokeStorage(void); void FreeBoxSelectionPopupSpriteGfx(void); -void sub_808C940(u8 curBox); -void sub_808C950(void); +void CreateChooseBoxMenuSprites(u8 curBox); +void DestroyChooseBoxMenuSprites(void); u8 HandleBoxChooseSelectionInput(void); -void LoadChooseBoxMenuGfx(struct ChooseBoxMenu *a0, u16 tileTag, u16 palTag, u8 a3, bool32 loadPal); +void LoadChooseBoxMenuGfx(struct ChooseBoxMenu *menu, u16 tileTag, u16 palTag, u8 subpriority, bool32 loadPal); void SetCurrentBoxMonData(u8 boxPosition, s32 request, const void *value); u32 GetCurrentBoxMonData(u8 boxPosition, s32 request); u32 GetAndCopyBoxMonDataAt(u8 boxId, u8 boxPosition, s32 request, void *dst); -void sub_80922C0(void); -void sub_8092340(void); -bool8 sub_80924A8(void); -void sub_8092AE4(void); -void sub_8092B3C(u8 a0); -void sub_8092B50(void); -void sub_8092B5C(void); -u8 sub_8092B70(void); -void sub_8092F54(void); -void sub_8093174(void); -void sub_8093194(void); -bool8 sub_80931EC(void); -void sub_8093264(void); -void sub_8093630(void); -void sub_8093660(void); -void sub_80936B8(void); -void sub_80937B4(void); -void sub_8094D14(u8 a0); -u8 sub_8094D34(void); -void sub_8094D60(void); -void sub_8094D84(void); -bool8 sub_8094F90(void); -s16 sub_8094F94(void); -void sub_8095024(void); -bool8 sub_8095050(void); -void sub_80950A4(void); -void sub_80950BC(u8 a0); -bool8 sub_80950D0(void); +void InitCursor(void); +void InitCursorOnReopen(void); +bool8 UpdateCursorPos(void); +void SetCursorInParty(void); +void SetCursorBoxPosition(u8 cursorBoxPosition); +void ClearSavedCursorPos(void); +void SaveCursorPos(void); +u8 GetSavedCursorPos(void); +void DoTrySetDisplayMonData(void); +void ResetSelectionAfterDeposit(void); +void InitReleaseMon(void); +bool8 TryHideReleaseMon(void); +void TrySetCursorFistAnim(void); +void SaveMovingMon(void); +void LoadSavedMovingMon(void); +void InitSummaryScreenData(void); +void SetSelectionAfterSummaryScreen(void); +void StartCursorAnim(u8 animNum); +u8 GetMovingMonOriginalBoxId(void); +void TryHideItemAtCursor(void); +void TryShowItemAtCursor(void); +bool8 IsMenuLoading(void); +s16 HandleMenuInput(void); +void RemoveMenu(void); +bool8 MultiMove_Init(void); +void MultiMove_Free(void); +void MultiMove_SetFunction(u8 funcId); +bool8 MultiMove_RunFunction(void); void CreateItemIconSprites(void); -void sub_8096088(void); -void sub_80960C0(void); -bool8 sub_809610C(void); +void MoveItemFromCursorToBag(void); +void MoveHeldItemWithPartyMenu(void); +bool8 IsItemIconAnimActive(void); const u8 *GetMovingItemName(void); void InitItemInfoWindow(void); bool8 UpdateItemInfoWindowSlideIn(void); @@ -455,7 +508,7 @@ u8 GetBoxCursorPosition(void); u16 GetMovingItem(void); u8 HandleInput(void); void InitCanReleaseMonVars(void); -void InitMonPlaceChange(u8 a0); +void InitMonPlaceChange(u8 type); bool8 IsActiveItemMoving(void); bool8 IsCursorOnCloseBox(void); bool8 IsMonBeingMoved(void); @@ -474,47 +527,47 @@ void SetWallpaperForCurrentBox(u8 wallpaper); bool8 TryStorePartyMonInBox(u8 boxId); void InitMenu(void); void SetMenuText(u8 textId); -void sub_8095C84(u8 cursorArea, u8 cursorPos); -void sub_8095E2C(u16 itemId); +void TryLoadItemIconAtPos(u8 cursorArea, u8 cursorPos); +void InitItemIconInCursor(u16 itemId); u8 GetBoxWallpaper(u8 boxId); bool8 IsCursorOnBoxTitle(void); bool8 IsCursorInBox(void); -void sub_808FFAC(void); +void InitMonIconFields(void); struct Sprite *CreateMonIconSprite(u16 species, u32 pid, s16 x, s16 y, u8 priority, u8 subpriority); void CreatePartyMonsSprites(bool8 species); -void sub_80909F4(void); -bool8 sub_8090A60(void); -void sub_8090B98(s16 yDelta); +void CompactPartySprites(void); +u8 GetNumPartySpritesCompacting(void); +void MovePartySprites(s16 yDelta); void DestroyAllPartyMonIcons(void); -void sub_8091114(void); -bool8 sub_8091150(void); -void sub_80913DC(u8 box); -bool8 sub_809140C(void); +void DoReleaseMonComeBackAnim(void); +bool8 ResetReleaseMonSpritePtr(void); +void CreateInitBoxTask(u8 boxId); +bool8 IsInitBoxActive(void); void AnimateBoxScrollArrows(bool8 species); void CreateMovingMonIcon(void); -void sub_8090E08(u8 boxId, u8 cursorPos); -bool8 sub_8090E74(void); -void sub_8090CC0(u8 cursorArea, u8 cursorPos); -void sub_8090D58(u8 cursorArea, u8 cursorPos); +void SetShiftMonSpritePtr(u8 boxId, u8 position); +bool8 ShiftMons(void); +void SetMovingMonSprite(u8 cursorArea, u8 cursorPos); +void SetPlacedMonSprite(u8 cursorArea, u8 cursorPos); void DestroyPartyMonIcon(u8 partyId); void DestroyMovingMonIcon(void); s16 GetFirstFreeBoxSpot(u8 boxId); -void sub_80901EC(u8 boxPosition); -void sub_8090FC4(u8 mode, u8 position); -bool8 sub_8091084(void); -void sub_80910CC(void); +void CreateBoxMonIconAtPos(u8 boxPosition); +void DoReleaseMonAnim(u8 mode, u8 position); +bool8 TryHideReleaseMonSprite(void); +void DestroyReleaseMonIcon(void); u8 CountPartyMons(void); u8 CountPartyAliveNonEggMonsExcept(u8 slotToIgnore); -s8 sub_8094E50(u8 a0); -bool8 sub_8095474(u8 action); -u8 sub_8095AA0(void); -bool8 sub_8095ABC(void); -void sub_8095D44(u8 cursorArea, u8 cursorPos); -void sub_8094CD4(u8 *arg0, u8 *arg1); -void sub_8094D40(void); -void sub_8092BAC(bool8 arg0); +s8 GetMenuItemTextId(u8 menuIndex); +bool8 MultiMove_TryMoveGroup(u8 dir); +u8 MultiMove_GetOriginPosition(void); +bool8 MultiMove_CanPlaceSelection(void); +void TryHideItemIconAtPos(u8 cursorArea, u8 cursorPos); +void GetCursorBoxColumnAndRow(u8 *column, u8 *row); +void SetCursorPriorityTo1(void); +void InitMultiMonPlaceChange(bool8 moveCursorUp); void DestroyBoxMonIconAtPosition(u8 boxPosition); void SetBoxMonIconObjMode(u8 cursorPos, u8 objMode); void SetPartyMonIconObjMode(u8 cursorPos, u8 objMode); diff --git a/src/berry_pouch.c b/src/berry_pouch.c index 80fa333f7..576bc8d4f 100644 --- a/src/berry_pouch.c +++ b/src/berry_pouch.c @@ -1258,7 +1258,7 @@ static void Task_ContextMenu_FromPartyGiveMenu(u8 taskId) static void Task_ContextMenu_FromPokemonPC(u8 taskId) { - sResources->exitCallback = Cb2_ReturnToPSS; + sResources->exitCallback = CB2_ReturnToPokeStorage; gTasks[taskId].func = BerryPouch_StartFadeToExitCallback; } diff --git a/src/box_party_pokemon_dropdown.c b/src/box_party_pokemon_dropdown.c index 09767f3d9..f4cf05bd8 100644 --- a/src/box_party_pokemon_dropdown.c +++ b/src/box_party_pokemon_dropdown.c @@ -3,210 +3,236 @@ #include "box_party_pokemon_dropdown.h" #include "malloc.h" -struct BPPD_MapRect +// Handles 3 particular tilemaps ("PKMN Data" text, party menu, close box +// button) used for Pokémon Storage System in a somewhat unusual way. +// For example, while the cursor is on the Close Box button it flashes between +// two states alternately. Both these states are their own part of the same +// tilemap that's always present. The utility shifts the tilemap up and down +// to show/hide the states, and limits the view with a rectangle that only +// reveals one at a time. + +struct TilemapUtil_RectData { + s16 x; + s16 y; + u16 width; + u16 height; s16 destX; s16 destY; +}; + +struct TilemapUtil +{ + struct TilemapUtil_RectData prev; // Only read in unused function + struct TilemapUtil_RectData cur; + const void *savedTilemap; // Only written in unused function + const void *tilemap; + u16 altWidth; // Never read + u16 altHeight; // Never read u16 width; u16 height; - s16 destX2; - s16 destY2; + u16 rowSize; // Never read + u8 tileSize; + u8 bg; + bool8 active; // Only read in unused function }; -struct BPPD_Struct -{ - struct BPPD_MapRect map1Rect; - struct BPPD_MapRect map2Rect; - const void *src1; - const void *src2; - u16 src1Height; - u16 src1Width; - u16 src2Width; - u16 src2Height; - u16 bytesPerRow; - u8 mapSize; - u8 bgId; - bool8 bgUpdateScheduled; -}; +static EWRAM_DATA struct TilemapUtil *sTilemapUtil = NULL; +static EWRAM_DATA u16 sNumTilemapUtilIds = 0; -static EWRAM_DATA struct BPPD_Struct * sBoxPartyPokemonDropdownPtr = NULL; -static EWRAM_DATA u16 sBoxPartyPokemonDropdownCount = 0; - -static void PushMap1(u8 idx); -static void PushMap2(u8 idx); +static void TilemapUtil_DrawPrev(u8 tilemapId); +static void TilemapUtil_Draw(u8 tilemapId); static const struct { - u16 height; u16 width; -} sBGdims[2][4] = { + u16 height; +} sTilemapDimensions[2][4] = { { - {0x0100, 0x0100}, - {0x0200, 0x0100}, - {0x0100, 0x0200}, - {0x0200, 0x0200} + { 256, 256}, + { 512, 256}, + { 256, 512}, + { 512, 512} }, { - {0x0080, 0x0080}, - {0x0100, 0x0100}, - {0x0200, 0x0200}, - {0x0400, 0x0400} + { 128, 128}, + { 256, 256}, + { 512, 512}, + {1024, 1024} } }; -void AllocBoxPartyPokemonDropdowns(u8 num) +void TilemapUtil_Init(u8 numTilemapIds) { u16 i; - sBoxPartyPokemonDropdownPtr = Alloc(num * sizeof(struct BPPD_Struct)); - sBoxPartyPokemonDropdownCount = sBoxPartyPokemonDropdownPtr == NULL ? 0 : num; - for (i = 0; i < sBoxPartyPokemonDropdownCount; i++) + sTilemapUtil = Alloc(numTilemapIds * sizeof(struct TilemapUtil)); + sNumTilemapUtilIds = sTilemapUtil == NULL ? 0 : numTilemapIds; + for (i = 0; i < sNumTilemapUtilIds; i++) { - sBoxPartyPokemonDropdownPtr[i].src1 = NULL; - sBoxPartyPokemonDropdownPtr[i].bgUpdateScheduled = FALSE; + sTilemapUtil[i].savedTilemap = NULL; + sTilemapUtil[i].active = FALSE; } } -void FreeBoxPartyPokemonDropdowns(void) +void TilemapUtil_Free(void) { - Free(sBoxPartyPokemonDropdownPtr); + Free(sTilemapUtil); } -void CopyAllBoxPartyPokemonDropdownsToVram(void) +// Unused +void TilemapUtil_UpdateAll(void) { int i; - for (i = 0; i < sBoxPartyPokemonDropdownCount; i++) + for (i = 0; i < sNumTilemapUtilIds; i++) { - if (sBoxPartyPokemonDropdownPtr[i].bgUpdateScheduled == TRUE) - CopyBoxPartyPokemonDropdownToBgTilemapBuffer(i); + if (sTilemapUtil[i].active == TRUE) + TilemapUtil_Update(i); } } -void SetBoxPartyPokemonDropdownMap2(u8 idx, u8 bgId, const void *src, u16 width, u16 height) +void TilemapUtil_SetTilemap(u8 tilemapId, u8 bg, const void *tilemap, u16 width, u16 height) { u16 screenSize; u16 bgType; - if (idx < sBoxPartyPokemonDropdownCount) + if (tilemapId < sNumTilemapUtilIds) { - sBoxPartyPokemonDropdownPtr[idx].src1 = NULL; - sBoxPartyPokemonDropdownPtr[idx].src2 = src; - sBoxPartyPokemonDropdownPtr[idx].bgId = bgId; - sBoxPartyPokemonDropdownPtr[idx].src2Width = width; - sBoxPartyPokemonDropdownPtr[idx].src2Height = height; - screenSize = GetBgAttribute(bgId, BG_ATTR_SCREENSIZE); - bgType = GetBgAttribute(bgId, BG_ATTR_BGTYPE); - sBoxPartyPokemonDropdownPtr[idx].src1Height = sBGdims[bgType][screenSize].height; - sBoxPartyPokemonDropdownPtr[idx].src1Width = sBGdims[bgType][screenSize].width; + sTilemapUtil[tilemapId].savedTilemap = NULL; + sTilemapUtil[tilemapId].tilemap = tilemap; + sTilemapUtil[tilemapId].bg = bg; + sTilemapUtil[tilemapId].width = width; + sTilemapUtil[tilemapId].height = height; + + screenSize = GetBgAttribute(bg, BG_ATTR_SCREENSIZE); + bgType = GetBgAttribute(bg, BG_ATTR_BGTYPE); + sTilemapUtil[tilemapId].altWidth = sTilemapDimensions[bgType][screenSize].width; + sTilemapUtil[tilemapId].altHeight = sTilemapDimensions[bgType][screenSize].height; if (bgType != 0) - sBoxPartyPokemonDropdownPtr[idx].mapSize = 1; + sTilemapUtil[tilemapId].tileSize = 1; else - sBoxPartyPokemonDropdownPtr[idx].mapSize = 2; - sBoxPartyPokemonDropdownPtr[idx].bytesPerRow = width * sBoxPartyPokemonDropdownPtr[idx].mapSize; - sBoxPartyPokemonDropdownPtr[idx].map2Rect.width = width; - sBoxPartyPokemonDropdownPtr[idx].map2Rect.height = height; - sBoxPartyPokemonDropdownPtr[idx].map2Rect.destX = 0; - sBoxPartyPokemonDropdownPtr[idx].map2Rect.destY = 0; - sBoxPartyPokemonDropdownPtr[idx].map2Rect.destX2 = 0; - sBoxPartyPokemonDropdownPtr[idx].map2Rect.destY2 = 0; - sBoxPartyPokemonDropdownPtr[idx].map1Rect = sBoxPartyPokemonDropdownPtr[idx].map2Rect; - sBoxPartyPokemonDropdownPtr[idx].bgUpdateScheduled = TRUE; + sTilemapUtil[tilemapId].tileSize = 2; + sTilemapUtil[tilemapId].rowSize = width * sTilemapUtil[tilemapId].tileSize; + sTilemapUtil[tilemapId].cur.width = width; + sTilemapUtil[tilemapId].cur.height = height; + sTilemapUtil[tilemapId].cur.x = 0; + sTilemapUtil[tilemapId].cur.y = 0; + sTilemapUtil[tilemapId].cur.destX = 0; + sTilemapUtil[tilemapId].cur.destY = 0; + sTilemapUtil[tilemapId].prev = sTilemapUtil[tilemapId].cur; + sTilemapUtil[tilemapId].active = TRUE; } } -void SetBoxPartyPokemonDropdownMap1Tiles(u8 idx, const void *src) +// Unused +void TilemapUtil_SetSavedMap(u8 tilemapId, const void *tilemap) { - if (idx < sBoxPartyPokemonDropdownCount) + if (tilemapId < sNumTilemapUtilIds) { - sBoxPartyPokemonDropdownPtr[idx].src1 = src; - sBoxPartyPokemonDropdownPtr[idx].bgUpdateScheduled = TRUE; + sTilemapUtil[tilemapId].savedTilemap = tilemap; + sTilemapUtil[tilemapId].active = TRUE; } } -void SetBoxPartyPokemonDropdownMap2Pos(u8 idx, u16 x, u16 y) +void TilemapUtil_SetPos(u8 tilemapId, u16 destX, u16 destY) { - if (idx < sBoxPartyPokemonDropdownCount) + if (tilemapId < sNumTilemapUtilIds) { - sBoxPartyPokemonDropdownPtr[idx].map2Rect.destX2 = x; - sBoxPartyPokemonDropdownPtr[idx].map2Rect.destY2 = y; - sBoxPartyPokemonDropdownPtr[idx].bgUpdateScheduled = TRUE; + sTilemapUtil[tilemapId].cur.destX = destX; + sTilemapUtil[tilemapId].cur.destY = destY; + sTilemapUtil[tilemapId].active = TRUE; } } -void SetBoxPartyPokemonDropdownMap2Rect(u8 idx, u16 x, u16 y, u16 width, u16 height) +void TilemapUtil_SetRect(u8 tilemapId, u16 x, u16 y, u16 width, u16 height) { - if (idx < sBoxPartyPokemonDropdownCount) + if (tilemapId < sNumTilemapUtilIds) { - sBoxPartyPokemonDropdownPtr[idx].map2Rect.destX = x; - sBoxPartyPokemonDropdownPtr[idx].map2Rect.destY = y; - sBoxPartyPokemonDropdownPtr[idx].map2Rect.width = width; - sBoxPartyPokemonDropdownPtr[idx].map2Rect.height = height; - sBoxPartyPokemonDropdownPtr[idx].bgUpdateScheduled = TRUE; + sTilemapUtil[tilemapId].cur.x = x; + sTilemapUtil[tilemapId].cur.y = y; + sTilemapUtil[tilemapId].cur.width = width; + sTilemapUtil[tilemapId].cur.height = height; + sTilemapUtil[tilemapId].active = TRUE; } } -void AdjustBoxPartyPokemonDropdownPos(u8 idx, u8 op, s8 param) +void TilemapUtil_Move(u8 tilemapId, u8 mode, s8 param) { - if (idx < sBoxPartyPokemonDropdownCount) + if (tilemapId < sNumTilemapUtilIds) { - switch (op) + switch (mode) { - case BPPD_MOVE_INNER_LEFT: - sBoxPartyPokemonDropdownPtr[idx].map2Rect.destX2 += param; - sBoxPartyPokemonDropdownPtr[idx].map2Rect.width -= param; + case 0: + sTilemapUtil[tilemapId].cur.destX += param; + sTilemapUtil[tilemapId].cur.width -= param; break; - case BPPD_MOVE_OUTER_LEFT: - sBoxPartyPokemonDropdownPtr[idx].map2Rect.destX += param; - sBoxPartyPokemonDropdownPtr[idx].map2Rect.width += param; + case 1: + sTilemapUtil[tilemapId].cur.x += param; + sTilemapUtil[tilemapId].cur.width += param; break; - case BPPD_MOVE_INNER_TOP: - sBoxPartyPokemonDropdownPtr[idx].map2Rect.destY2 += param; - sBoxPartyPokemonDropdownPtr[idx].map2Rect.height -= param; + case 2: + sTilemapUtil[tilemapId].cur.destY += param; + sTilemapUtil[tilemapId].cur.height -= param; break; - case BPPD_MOVE_OUTER_TOP: - sBoxPartyPokemonDropdownPtr[idx].map2Rect.destY -= param; - sBoxPartyPokemonDropdownPtr[idx].map2Rect.height += param; + case 3: // this is the only mode ever used + sTilemapUtil[tilemapId].cur.y -= param; + sTilemapUtil[tilemapId].cur.height += param; break; - case BPPD_MOVE_INNER_X: - sBoxPartyPokemonDropdownPtr[idx].map2Rect.destX2 += param; + case 4: + sTilemapUtil[tilemapId].cur.destX += param; break; - case BPPD_MOVE_INNER_Y: - sBoxPartyPokemonDropdownPtr[idx].map2Rect.destY2 += param; + case 5: + sTilemapUtil[tilemapId].cur.destY += param; break; } - sBoxPartyPokemonDropdownPtr[idx].bgUpdateScheduled = TRUE; + sTilemapUtil[tilemapId].active = TRUE; } } -void CopyBoxPartyPokemonDropdownToBgTilemapBuffer(u8 idx) +void TilemapUtil_Update(u8 tilemapId) { - if (idx < sBoxPartyPokemonDropdownCount) + if (tilemapId < sNumTilemapUtilIds) { - if (sBoxPartyPokemonDropdownPtr[idx].src1 != NULL) - PushMap1(idx); - PushMap2(idx); - sBoxPartyPokemonDropdownPtr[idx].map1Rect = sBoxPartyPokemonDropdownPtr[idx].map2Rect; + if (sTilemapUtil[tilemapId].savedTilemap != NULL) // Always false + TilemapUtil_DrawPrev(tilemapId); + TilemapUtil_Draw(tilemapId); + sTilemapUtil[tilemapId].prev = sTilemapUtil[tilemapId].cur; } } -static void PushMap1(u8 idx) +// Never called, see TilemapUtil_Update +static void TilemapUtil_DrawPrev(u8 tilemapId) { int i; - int run = sBoxPartyPokemonDropdownPtr[idx].mapSize * sBoxPartyPokemonDropdownPtr[idx].src1Height; - const void *addr = sBoxPartyPokemonDropdownPtr[idx].src1 + run * sBoxPartyPokemonDropdownPtr[idx].map1Rect.destY2 + sBoxPartyPokemonDropdownPtr[idx].map1Rect.destX2 * sBoxPartyPokemonDropdownPtr[idx].mapSize; - for (i = 0; i < sBoxPartyPokemonDropdownPtr[idx].map1Rect.height; i++) + int rowSize = sTilemapUtil[tilemapId].tileSize * sTilemapUtil[tilemapId].altWidth; + const void *tiles = sTilemapUtil[tilemapId].savedTilemap + + rowSize * sTilemapUtil[tilemapId].prev.destY + + sTilemapUtil[tilemapId].prev.destX * sTilemapUtil[tilemapId].tileSize; + for (i = 0; i < sTilemapUtil[tilemapId].prev.height; i++) { - CopyToBgTilemapBufferRect(sBoxPartyPokemonDropdownPtr[idx].bgId, addr, sBoxPartyPokemonDropdownPtr[idx].map1Rect.destX2, sBoxPartyPokemonDropdownPtr[idx].map1Rect.destY2 + i, sBoxPartyPokemonDropdownPtr[idx].map1Rect.width, 1); - addr += run; + CopyToBgTilemapBufferRect(sTilemapUtil[tilemapId].bg, + tiles, + sTilemapUtil[tilemapId].prev.destX, + sTilemapUtil[tilemapId].prev.destY + i, + sTilemapUtil[tilemapId].prev.width, + 1); + tiles += rowSize; } } -static void PushMap2(u8 idx) +static void TilemapUtil_Draw(u8 tilemapId) { int i; - int run = sBoxPartyPokemonDropdownPtr[idx].mapSize * sBoxPartyPokemonDropdownPtr[idx].src2Width; - const void *addr = sBoxPartyPokemonDropdownPtr[idx].src2 + run * sBoxPartyPokemonDropdownPtr[idx].map2Rect.destY + sBoxPartyPokemonDropdownPtr[idx].map2Rect.destX * sBoxPartyPokemonDropdownPtr[idx].mapSize; - for (i = 0; i < sBoxPartyPokemonDropdownPtr[idx].map2Rect.height; i++) + int rowSize = sTilemapUtil[tilemapId].tileSize * sTilemapUtil[tilemapId].width; + const void *tiles = sTilemapUtil[tilemapId].tilemap + + rowSize * sTilemapUtil[tilemapId].cur.y + + sTilemapUtil[tilemapId].cur.x * sTilemapUtil[tilemapId].tileSize; + for (i = 0; i < sTilemapUtil[tilemapId].cur.height; i++) { - CopyToBgTilemapBufferRect(sBoxPartyPokemonDropdownPtr[idx].bgId, addr, sBoxPartyPokemonDropdownPtr[idx].map2Rect.destX2, sBoxPartyPokemonDropdownPtr[idx].map2Rect.destY2 + i, sBoxPartyPokemonDropdownPtr[idx].map2Rect.width, 1); - addr += run; + CopyToBgTilemapBufferRect(sTilemapUtil[tilemapId].bg, + tiles, + sTilemapUtil[tilemapId].cur.destX, + sTilemapUtil[tilemapId].cur.destY + i, + sTilemapUtil[tilemapId].cur.width, + 1); + tiles += rowSize; } } diff --git a/src/graphics.c b/src/graphics.c index cf3f6bd37..cf1935730 100644 --- a/src/graphics.c +++ b/src/graphics.c @@ -1251,13 +1251,11 @@ const u32 gPokeSummary_StatusAilmentIconTiles[] = INCBIN_U32("graphics/interface const u16 gDexScreen_TopMenuIconPals_AtoZ[] = INCBIN_U16("graphics/pokedex/cat_icon_abc.gbapal"); const u32 gDexScreen_TopMenuIconTiles_AtoZ[] = INCBIN_U32("graphics/pokedex/cat_icon_abc.4bpp.lz"); -const u16 gPSSMenu_Pal[] = INCBIN_U16("graphics/interface/box_tiles_pal1.gbapal"); -const u16 gUnknown_8E9C3F8[] = INCBIN_U16("graphics/interface/box_tiles_pal2.gbapal"); -const u16 gUnknown_8E9C418[] = INCBIN_U16("graphics/interface/box_tiles_pal3.gbapal"); -const u32 gPSSMenu_Gfx[] = INCBIN_U32("graphics/interface/box_tiles.4bpp.lz"); - -const u32 gUnknown_8E9CAEC[] = INCBIN_U32("graphics/unknown/unknown_E9CAEC.bin.lz"); - +const u16 gPokeStoragePartyMenu_Pal[] = INCBIN_U16("graphics/interface/box_tiles_pal1.gbapal"); +const u16 gPokeStorageInterface_Pal[] = INCBIN_U16("graphics/interface/box_tiles_pal2.gbapal"); +const u16 gPokeStorageInterface_NoDisplayMon_Pal[] = INCBIN_U16("graphics/interface/box_tiles_pal3.gbapal"); +const u32 gPokeStorageMenu_Gfx[] = INCBIN_U32("graphics/interface/box_tiles.4bpp.lz"); +const u32 gPokeStoragePartyMenu_Tilemap[] = INCBIN_U32("graphics/unknown/unknown_E9CAEC.bin.lz"); const u16 gMonMarkingsMenu_Pal[] = INCBIN_U16("graphics/misc/markings2.gbapal"); const u16 gMonMarkingsMenu_Gfx[] = INCBIN_U16("graphics/misc/markings2.4bpp"); diff --git a/src/item_menu.c b/src/item_menu.c index bf51d2f31..f04ac59d5 100644 --- a/src/item_menu.c +++ b/src/item_menu.c @@ -1784,7 +1784,7 @@ static void GoToBerryPouch_PCBox(void) static void ReturnToBagMenuFromSubmenu_PCBox(void) { - GoToBagMenu(ITEMMENULOCATION_PCBOX, OPEN_BAG_LAST, Cb2_ReturnToPSS); + GoToBagMenu(ITEMMENULOCATION_PCBOX, OPEN_BAG_LAST, CB2_ReturnToPokeStorage); } static void Task_ItemContext_Sell(u8 taskId) diff --git a/src/pokemon_storage_system_2.c b/src/pokemon_storage_system_2.c index 1f9c7a4e5..421c74681 100644 --- a/src/pokemon_storage_system_2.c +++ b/src/pokemon_storage_system_2.c @@ -16,22 +16,20 @@ #include "constants/help_system.h" static EWRAM_DATA u8 sPreviousBoxOption = 0; -static EWRAM_DATA struct ChooseBoxMenu *sBoxSelectionPopupSpriteManager = NULL; +static EWRAM_DATA struct ChooseBoxMenu *sChooseBoxMenu = NULL; -static void PSS_CreatePCMenu(u8 whichMenu, s16 *windowIdPtr); +static void CreatePCMainMenu(u8 whichMenu, s16 *windowIdPtr); static void ChooseBoxMenu_CreateSprites(u8 curBox); -static void sub_808CBA4(void); -static void UpdateBoxNameAndCountSprite_WraparoundRight(void); -static void UpdateBoxNameAndCountSprite_WraparoundLeft(void); -static void PrintBoxNameAndCountToSprite(void); -static void PrintToSpriteWithTagUnk0240(const u8 *a0, u16 x, u16 y); -static void sub_808CD64(struct Sprite *sprite); +static void ChooseBoxMenu_DestroySprites(void); +static void ChooseBoxMenu_MoveRight(void); +static void ChooseBoxMenu_MoveLeft(void); +static void ChooseBoxMenu_PrintBoxNameAndCount(void); +static void ChooseBoxMenu_PrintTextToSprite(const u8 *a0, u16 x, u16 y); +static void SpriteCB_ChooseBoxArrow(struct Sprite *sprite); -// Forward declarations - -static const u16 sBoxSelectionPopupPalette[]; -static const u16 sBoxSelectionPopupCenterTiles[]; -static const u16 sBoxSelectionPopupSidesTiles[]; +static const u16 sChooseBoxMenu_Pal[]; +static const u8 sChooseBoxMenuCenter_Gfx[]; +static const u8 sChooseBoxMenuCorners_Gfx[]; struct { const u8 *text; @@ -44,7 +42,7 @@ struct { [OPTION_EXIT] = {gText_SeeYa, gText_SeeYaDescription} }; -void DrawTextWindowAndBufferTiles(const u8 *string, void *dst, u8 zero1, u8 zero2, u8 *buffer, s32 bytesToBuffer) +void DrawTextWindowAndBufferTiles(const u8 *string, void *dst, u8 zero1, u8 zero2, u8 *unused, s32 bytesToBuffer) { s32 i, tileBytesToBuffer, remainingBytes; u16 windowId; @@ -90,7 +88,7 @@ void DrawTextWindowAndBufferTiles(const u8 *string, void *dst, u8 zero1, u8 zero RemoveWindow(windowId); } -static void PrintStringToBufferCopyNow(const u8 *string, void *dst, u16 rise, u8 bgClr, u8 fgClr, u8 shClr, u8 *buffer) +static void PrintStringToBufferCopyNow(const u8 *string, void *dst, u16 offset, u8 bgColor, u8 fgColor, u8 shadowColor, u8 *unused) { u32 var; u8 windowId; @@ -102,15 +100,15 @@ static void PrintStringToBufferCopyNow(const u8 *string, void *dst, u16 rise, u8 winTemplate.height = 2; var = winTemplate.width * 32; windowId = AddWindow(&winTemplate); - FillWindowPixelBuffer(windowId, PIXEL_FILL(bgClr)); + FillWindowPixelBuffer(windowId, PIXEL_FILL(bgColor)); tileData1 = (u8 *)GetWindowAttribute(windowId, WINDOW_TILE_DATA); tileData2 = (winTemplate.width * 32) + tileData1; - txtColor[0] = bgClr; - txtColor[1] = fgClr; - txtColor[2] = shClr; + txtColor[0] = bgColor; + txtColor[1] = fgColor; + txtColor[2] = shadowColor; AddTextPrinterParameterized4(windowId, FONT_1, 0, 2, 0, 0, txtColor, -1, string); CpuCopy16(tileData1, dst, var); - CpuCopy16(tileData2, dst + rise, var); + CpuCopy16(tileData2, dst + offset, var); RemoveWindow(windowId); } @@ -147,10 +145,8 @@ u8 CountPartyNonEggMons(void) for (i = 0, count = 0; i < PARTY_SIZE; i++) { if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) != SPECIES_NONE - && !GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG)) - { + && !GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG)) count++; - } } return count; @@ -163,12 +159,10 @@ u8 CountPartyAliveNonEggMonsExcept(u8 slotToIgnore) for (i = 0, count = 0; i < PARTY_SIZE; i++) { if (i != slotToIgnore - && GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) != SPECIES_NONE - && !GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG) - && GetMonData(&gPlayerParty[i], MON_DATA_HP) != 0) - { + && GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) != SPECIES_NONE + && !GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG) + && GetMonData(&gPlayerParty[i], MON_DATA_HP) != 0) count++; - } } return count; @@ -186,9 +180,7 @@ u8 CountPartyMons(void) for (i = 0, count = 0; i < PARTY_SIZE; i++) { if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) != SPECIES_NONE) - { count++; - } } return count; @@ -205,7 +197,8 @@ static u8 *StringCopyAndFillWithSpaces(u8 *dst, const u8 *src, u16 n) return str; } -static void sub_808C25C(u16 *dest, u16 dest_left, u16 dest_top, const u16 *src, u16 src_left, u16 src_top, u16 dest_width, u16 dest_height, u16 src_width) +// Unused +static void UnusedWriteRectCpu(u16 *dest, u16 dest_left, u16 dest_top, const u16 *src, u16 src_left, u16 src_top, u16 dest_width, u16 dest_height, u16 src_width) { u16 i; @@ -231,16 +224,6 @@ static void UnusedWriteRectDma(u16 *dest, u16 dest_left, u16 dest_top, u16 width Dma3FillLarge16_(0, dest, width); } - -//------------------------------------------------------------------------------ -// SECTION: Main menu -// -// The below functions generally handle the PC main menu where the main -// options can be selected (Withdraw, Deposit, etc.), as well as exiting -// Pokémon Storage back to this menu. -//------------------------------------------------------------------------------ - - enum { STATE_LOAD, STATE_FADE_IN, @@ -263,7 +246,7 @@ static void Task_PCMainMenu(u8 taskId) { case STATE_LOAD: SetHelpContext(HELPCONTEXT_BILLS_PC); - PSS_CreatePCMenu(task->tSelectedOption, &task->tWindowId); + CreatePCMainMenu(task->tSelectedOption, &task->tWindowId); LoadStdWindowFrameGfx(); DrawDialogueFrame(0, FALSE); FillWindowPixelBuffer(0, PIXEL_FILL(1)); @@ -274,9 +257,8 @@ static void Task_PCMainMenu(u8 taskId) break; case STATE_FADE_IN: if (IsWeatherNotFadingIn()) - { task->tState++; - } + break; case STATE_HANDLE_INPUT: task->tInput = Menu_ProcessInput(); @@ -305,14 +287,14 @@ static void Task_PCMainMenu(u8 taskId) DestroyTask(taskId); break; default: - if (task->tInput == 0 && CountPartyMons() == PARTY_SIZE) + if (task->tInput == OPTION_WITHDRAW && CountPartyMons() == PARTY_SIZE) { // Can't withdraw FillWindowPixelBuffer(0, PIXEL_FILL(1)); AddTextPrinterParameterized2(0, FONT_2, gText_PartyFull, 0, NULL, TEXT_COLOR_DARK_GRAY, TEXT_COLOR_WHITE, TEXT_COLOR_LIGHT_GRAY); - task->tState = 3; + task->tState = STATE_ERROR_MSG; } - else if (task->tInput == 1 && CountPartyMons() == 1) + else if (task->tInput == OPTION_DEPOSIT && CountPartyMons() == 1) { // Can't deposit FillWindowPixelBuffer(0, PIXEL_FILL(1)); @@ -362,7 +344,7 @@ static void Task_PCMainMenu(u8 taskId) if (!gPaletteFade.active) { CleanupOverworldWindowsAndTilemaps(); - Cb2_EnterPSS(task->tInput); + EnterPokeStorage(task->tInput); DestroyTask(taskId); } break; @@ -372,7 +354,7 @@ static void Task_PCMainMenu(u8 taskId) void ShowPokemonStorageSystemPC(void) { u8 taskId = CreateTask(Task_PCMainMenu, 80); - gTasks[taskId].tState = 0; + gTasks[taskId].tState = STATE_LOAD; gTasks[taskId].tSelectedOption = 0; LockPlayerFieldControls(); } @@ -384,14 +366,14 @@ static void FieldTask_ReturnToPcMenu(void) SetVBlankCallback(NULL); taskId = CreateTask(Task_PCMainMenu, 80); - gTasks[taskId].tState = 0; + gTasks[taskId].tState = STATE_LOAD; gTasks[taskId].tSelectedOption = sPreviousBoxOption; Task_PCMainMenu(taskId); SetVBlankCallback(vblankCb); FadeInFromBlack(); } -static const struct WindowTemplate sUnknown_83CDA48 = { +static const struct WindowTemplate sWindowTemplate_MainMenu = { .bg = 0, .tilemapLeft = 1, .tilemapTop = 1, @@ -401,14 +383,13 @@ static const struct WindowTemplate sUnknown_83CDA48 = { .baseBlock = 0x001 }; -static void PSS_CreatePCMenu(u8 whichMenu, s16 *windowIdPtr) +static void CreatePCMainMenu(u8 whichMenu, s16 *windowIdPtr) { - s16 windowId; - windowId = AddWindow(&sUnknown_83CDA48); + s16 windowId = AddWindow(&sWindowTemplate_MainMenu); DrawStdWindowFrame(windowId, FALSE); - PrintTextArray(windowId, FONT_2, GetMenuCursorDimensionByFont(FONT_2, 0), 2, 16, NELEMS(sMainMenuTexts), (void *)sMainMenuTexts); - Menu_InitCursor(windowId, FONT_2, 0, 2, 16, NELEMS(sMainMenuTexts), whichMenu); + PrintTextArray(windowId, FONT_2, GetMenuCursorDimensionByFont(FONT_2, 0), 2, 16, ARRAY_COUNT(sMainMenuTexts), (void *)sMainMenuTexts); + Menu_InitCursor(windowId, FONT_2, 0, 2, 16, ARRAY_COUNT(sMainMenuTexts), whichMenu); *windowIdPtr = windowId; } @@ -439,54 +420,44 @@ void ResetPokemonStorageSystem(void) SetBoxWallpaper(boxId, boxId % (MAX_DEFAULT_WALLPAPER + 1)); } - -//------------------------------------------------------------------------------ -// SECTION: Choose Box menu -// -// The below functions handle the popup menu that allows the player to cycle -// through the boxes and select one. Used when storing Pokémon in Deposit mode -// and for the Jump feature. -//------------------------------------------------------------------------------ - - -void LoadChooseBoxMenuGfx(struct ChooseBoxMenu *a0, u16 tileTag, u16 palTag, u8 a3, bool32 loadPal) +void LoadChooseBoxMenuGfx(struct ChooseBoxMenu *menu, u16 tileTag, u16 palTag, u8 subpriority, bool32 loadPal) { struct SpritePalette palette = { - sBoxSelectionPopupPalette, palTag + sChooseBoxMenu_Pal, palTag }; struct SpriteSheet sheets[] = { - {sBoxSelectionPopupCenterTiles, 0x800, tileTag}, - {sBoxSelectionPopupSidesTiles, 0x180, tileTag + 1}, + {sChooseBoxMenuCenter_Gfx, 0x800, tileTag}, + {sChooseBoxMenuCorners_Gfx, 0x180, tileTag + 1}, {} }; - if (loadPal) + if (loadPal) // Always false LoadSpritePalette(&palette); LoadSpriteSheets(sheets); - sBoxSelectionPopupSpriteManager = a0; - a0->tileTag = tileTag; - a0->paletteTag = palTag; - a0->subpriority = a3; - a0->loadedPalette = loadPal; + sChooseBoxMenu = menu; + menu->tileTag = tileTag; + menu->paletteTag = palTag; + menu->subpriority = subpriority; + menu->loadedPalette = loadPal; } void FreeBoxSelectionPopupSpriteGfx(void) { - if (sBoxSelectionPopupSpriteManager->loadedPalette) - FreeSpritePaletteByTag(sBoxSelectionPopupSpriteManager->paletteTag); - FreeSpriteTilesByTag(sBoxSelectionPopupSpriteManager->tileTag); - FreeSpriteTilesByTag(sBoxSelectionPopupSpriteManager->tileTag + 1); + if (sChooseBoxMenu->loadedPalette) + FreeSpritePaletteByTag(sChooseBoxMenu->paletteTag); + FreeSpriteTilesByTag(sChooseBoxMenu->tileTag); + FreeSpriteTilesByTag(sChooseBoxMenu->tileTag + 1); } -void sub_808C940(u8 curBox) +void CreateChooseBoxMenuSprites(u8 curBox) { ChooseBoxMenu_CreateSprites(curBox); } -void sub_808C950(void) +void DestroyChooseBoxMenuSprites(void) { - sub_808CBA4(); + ChooseBoxMenu_DestroySprites(); } u8 HandleBoxChooseSelectionInput(void) @@ -494,60 +465,61 @@ u8 HandleBoxChooseSelectionInput(void) if (JOY_NEW(B_BUTTON)) { PlaySE(SE_SELECT); - return 201; + return BOXID_CANCELED; } if (JOY_NEW(A_BUTTON)) { PlaySE(SE_SELECT); - return sBoxSelectionPopupSpriteManager->curBox; + return sChooseBoxMenu->curBox; } if (JOY_NEW(DPAD_LEFT)) { PlaySE(SE_SELECT); - UpdateBoxNameAndCountSprite_WraparoundLeft(); + ChooseBoxMenu_MoveLeft(); } else if (JOY_NEW(DPAD_RIGHT)) { PlaySE(SE_SELECT); - UpdateBoxNameAndCountSprite_WraparoundRight(); + ChooseBoxMenu_MoveRight(); } - return 200; + return BOXID_NONE_CHOSEN; } -static const union AnimCmd gUnknown_83CDA50[] = { +static const union AnimCmd sAnim_ChooseBoxMenu_TopLeft[] = { ANIMCMD_FRAME( 0, 5), ANIMCMD_END }; -static const union AnimCmd gUnknown_83CDA58[] = { +static const union AnimCmd sAnim_ChooseBoxMenu_BottomLeft[] = { ANIMCMD_FRAME( 4, 5), ANIMCMD_END }; -static const union AnimCmd gUnknown_83CDA60[] = { +static const union AnimCmd sAnim_ChooseBoxMenu_TopRight[] = { ANIMCMD_FRAME( 6, 5), ANIMCMD_END }; -static const union AnimCmd gUnknown_83CDA68[] = { +static const union AnimCmd sAnim_ChooseBoxMenu_BottomRight[] = { ANIMCMD_FRAME(10, 5), ANIMCMD_END }; -static const union AnimCmd *const gUnknown_83CDA70[] = { - gUnknown_83CDA50, - gUnknown_83CDA58, - gUnknown_83CDA60, - gUnknown_83CDA68 +static const union AnimCmd *const sAnims_ChooseBoxMenu[] = { + sAnim_ChooseBoxMenu_TopLeft, + sAnim_ChooseBoxMenu_BottomLeft, + sAnim_ChooseBoxMenu_TopRight, + sAnim_ChooseBoxMenu_BottomRight, }; -static const union AffineAnimCmd gUnknown_83CDA80[] = { +static const union AffineAnimCmd sAffineAnim_ChooseBoxMenu[] = { AFFINEANIMCMD_FRAME(224, 224, 0, 0), AFFINEANIMCMD_END }; -static const union AffineAnimCmd *const gUnknown_83CDA90[] = { - gUnknown_83CDA80 +// Unused +static const union AffineAnimCmd *const sAffineAnims_ChooseBoxMenu[] = { + sAffineAnim_ChooseBoxMenu }; static void ChooseBoxMenu_CreateSprites(u8 curBox) @@ -562,112 +534,112 @@ static void ChooseBoxMenu_CreateSprites(u8 curBox) 0, 0, &oamData, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy }; { - const u8 gUnknown_83CDA94[] = _("/30"); + const u8 sText_OutOf30[] = _("/30"); - sBoxSelectionPopupSpriteManager->curBox = curBox; - template.tileTag = sBoxSelectionPopupSpriteManager->tileTag; - template.paletteTag = sBoxSelectionPopupSpriteManager->paletteTag; + sChooseBoxMenu->curBox = curBox; + template.tileTag = sChooseBoxMenu->tileTag; + template.paletteTag = sChooseBoxMenu->paletteTag; spriteId = CreateSprite(&template, 160, 96, 0); - sBoxSelectionPopupSpriteManager->menuSprite = gSprites + spriteId; + sChooseBoxMenu->menuSprite = gSprites + spriteId; - // Manual subsprites oamData.shape = SPRITE_SHAPE(8x32); oamData.size = SPRITE_SIZE(8x32); - template.tileTag = sBoxSelectionPopupSpriteManager->tileTag + 1; - template.anims = gUnknown_83CDA70; - for (i = 0; i < 4; i++) + template.tileTag = sChooseBoxMenu->tileTag + 1; + template.anims = sAnims_ChooseBoxMenu; + for (i = 0; i < ARRAY_COUNT(sChooseBoxMenu->menuCornerSprites); i++) { - u16 r5; - spriteId = CreateSprite(&template, 124, 80, sBoxSelectionPopupSpriteManager->subpriority); - sBoxSelectionPopupSpriteManager->menuSideSprites[i] = gSprites + spriteId; - r5 = 0; + // corner sprites are created in order of top left, bottom left, top right, bottom right + u16 animNum; + spriteId = CreateSprite(&template, 124, 80, sChooseBoxMenu->subpriority); // place at top left + sChooseBoxMenu->menuCornerSprites[i] = &gSprites[spriteId]; + animNum = 0; if (i & 2) { - sBoxSelectionPopupSpriteManager->menuSideSprites[i]->x = 196; - r5 = 2; + sChooseBoxMenu->menuCornerSprites[i]->x = 196; // move to bottom + animNum = 2; } if (i & 1) { - sBoxSelectionPopupSpriteManager->menuSideSprites[i]->y = 112; - sBoxSelectionPopupSpriteManager->menuSideSprites[i]->oam.size = SPRITE_SIZE(8x16); - r5++; + sChooseBoxMenu->menuCornerSprites[i]->y = 112; // move to right + sChooseBoxMenu->menuCornerSprites[i]->oam.size = SPRITE_SIZE(8x16); + animNum++; } - StartSpriteAnim(sBoxSelectionPopupSpriteManager->menuSideSprites[i], r5); + StartSpriteAnim(sChooseBoxMenu->menuCornerSprites[i], animNum); } - for (i = 0; i < 2; i++) + for (i = 0; i < ARRAY_COUNT(sChooseBoxMenu->arrowSprites); i++) { - sBoxSelectionPopupSpriteManager->arrowSprites[i] = CreateChooseBoxArrows(72 * i + 0x7c, 0x58, i, 0, sBoxSelectionPopupSpriteManager->subpriority); - if (sBoxSelectionPopupSpriteManager->arrowSprites[i]) + sChooseBoxMenu->arrowSprites[i] = CreateChooseBoxArrows(72 * i + 124, 88, i, 0, sChooseBoxMenu->subpriority); + if (sChooseBoxMenu->arrowSprites[i]) { - sBoxSelectionPopupSpriteManager->arrowSprites[i]->data[0] = (i == 0 ? -1 : 1); - sBoxSelectionPopupSpriteManager->arrowSprites[i]->callback = sub_808CD64; + sChooseBoxMenu->arrowSprites[i]->data[0] = (i == 0 ? -1 : 1); + sChooseBoxMenu->arrowSprites[i]->callback = SpriteCB_ChooseBoxArrow; } } - PrintBoxNameAndCountToSprite(); - PrintToSpriteWithTagUnk0240(gUnknown_83CDA94, 5, 3); + ChooseBoxMenu_PrintBoxNameAndCount(); + ChooseBoxMenu_PrintTextToSprite(sText_OutOf30, 5, 3); } } -static void sub_808CBA4(void) +static void ChooseBoxMenu_DestroySprites(void) { u16 i; - if (sBoxSelectionPopupSpriteManager->menuSprite) + if (sChooseBoxMenu->menuSprite) { - DestroySprite(sBoxSelectionPopupSpriteManager->menuSprite); - sBoxSelectionPopupSpriteManager->menuSprite = NULL; + DestroySprite(sChooseBoxMenu->menuSprite); + sChooseBoxMenu->menuSprite = NULL; } - for (i = 0; i < 4; i++) + for (i = 0; i < ARRAY_COUNT(sChooseBoxMenu->menuCornerSprites); i++) { - if (sBoxSelectionPopupSpriteManager->menuSideSprites[i]) + if (sChooseBoxMenu->menuCornerSprites[i]) { - DestroySprite(sBoxSelectionPopupSpriteManager->menuSideSprites[i]); - sBoxSelectionPopupSpriteManager->menuSideSprites[i] = NULL; + DestroySprite(sChooseBoxMenu->menuCornerSprites[i]); + sChooseBoxMenu->menuCornerSprites[i] = NULL; } } - for (i = 0; i < 2; i++) + for (i = 0; i < ARRAY_COUNT(sChooseBoxMenu->arrowSprites); i++) { - if (sBoxSelectionPopupSpriteManager->arrowSprites[i]) - DestroySprite(sBoxSelectionPopupSpriteManager->arrowSprites[i]); + if (sChooseBoxMenu->arrowSprites[i]) + DestroySprite(sChooseBoxMenu->arrowSprites[i]); } } -static void UpdateBoxNameAndCountSprite_WraparoundRight(void) +static void ChooseBoxMenu_MoveRight(void) { - if (++sBoxSelectionPopupSpriteManager->curBox >= TOTAL_BOXES_COUNT) - sBoxSelectionPopupSpriteManager->curBox = 0; - PrintBoxNameAndCountToSprite(); + if (++sChooseBoxMenu->curBox >= TOTAL_BOXES_COUNT) + sChooseBoxMenu->curBox = 0; + ChooseBoxMenu_PrintBoxNameAndCount(); } -static void UpdateBoxNameAndCountSprite_WraparoundLeft(void) +static void ChooseBoxMenu_MoveLeft(void) { - sBoxSelectionPopupSpriteManager->curBox = (sBoxSelectionPopupSpriteManager->curBox == 0 ? TOTAL_BOXES_COUNT - 1 : sBoxSelectionPopupSpriteManager->curBox - 1); - PrintBoxNameAndCountToSprite(); + sChooseBoxMenu->curBox = (sChooseBoxMenu->curBox == 0 ? TOTAL_BOXES_COUNT - 1 : sChooseBoxMenu->curBox - 1); + ChooseBoxMenu_PrintBoxNameAndCount(); } -static void PrintBoxNameAndCountToSprite(void) +static void ChooseBoxMenu_PrintBoxNameAndCount(void) { - u8 nPokemonInBox = CountMonsInBox(sBoxSelectionPopupSpriteManager->curBox); - u8 *boxName = StringCopy(sBoxSelectionPopupSpriteManager->strbuf, GetBoxNamePtr(sBoxSelectionPopupSpriteManager->curBox)); + u8 numMonInBox = CountMonsInBox(sChooseBoxMenu->curBox); + u8 *boxName = StringCopy(sChooseBoxMenu->strbuf, GetBoxNamePtr(sChooseBoxMenu->curBox)); - while (boxName < sBoxSelectionPopupSpriteManager->strbuf + BOX_NAME_LENGTH) + while (boxName < sChooseBoxMenu->strbuf + BOX_NAME_LENGTH) *boxName++ = CHAR_SPACE; *boxName = EOS; - PrintToSpriteWithTagUnk0240(sBoxSelectionPopupSpriteManager->strbuf, 0, 1); + ChooseBoxMenu_PrintTextToSprite(sChooseBoxMenu->strbuf, 0, 1); - ConvertIntToDecimalStringN(sBoxSelectionPopupSpriteManager->strbuf, nPokemonInBox, STR_CONV_MODE_RIGHT_ALIGN, 2); + ConvertIntToDecimalStringN(sChooseBoxMenu->strbuf, numMonInBox, STR_CONV_MODE_RIGHT_ALIGN, 2); - PrintToSpriteWithTagUnk0240(sBoxSelectionPopupSpriteManager->strbuf, 3, 3); + ChooseBoxMenu_PrintTextToSprite(sChooseBoxMenu->strbuf, 3, 3); } -static void PrintToSpriteWithTagUnk0240(const u8 *str, u16 x, u16 y) +static void ChooseBoxMenu_PrintTextToSprite(const u8 *str, u16 x, u16 y) { - u16 tileStart = GetSpriteTileStartByTag(sBoxSelectionPopupSpriteManager->tileTag); - PrintStringToBufferCopyNow(str, (void *)(OBJ_VRAM0 + tileStart * 32 + 256 * y + 32 * x), 0x100, TEXT_COLOR_RED, TEXT_DYNAMIC_COLOR_6, TEXT_DYNAMIC_COLOR_5, sBoxSelectionPopupSpriteManager->buffer); + void *dst = (void *)(OBJ_VRAM0 + GetSpriteTileStartByTag(sChooseBoxMenu->tileTag) * 32 + 256 * y + 32 * x); + PrintStringToBufferCopyNow(str, dst, 0x100, TEXT_COLOR_RED, TEXT_DYNAMIC_COLOR_6, TEXT_DYNAMIC_COLOR_5, sChooseBoxMenu->buffer); } -static void sub_808CD64(struct Sprite *sprite) +static void SpriteCB_ChooseBoxArrow(struct Sprite *sprite) { if (++sprite->data[1] > 3) { @@ -681,8 +653,8 @@ static void sub_808CD64(struct Sprite *sprite) } } -// Forward-declared rodata +// Unused, since LoadChooseBoxMenuGfx is always called with `loadPal` as false +static const u16 sChooseBoxMenu_Pal[] = INCBIN_U16("graphics/interface/pss_unk_83CDA98.gbapal"); -static const u16 sBoxSelectionPopupPalette[] = INCBIN_U16("graphics/interface/pss_unk_83CDA98.gbapal"); -static const u16 sBoxSelectionPopupCenterTiles[] = INCBIN_U16("graphics/interface/pss_unk_83CDAB8.4bpp"); -static const u16 sBoxSelectionPopupSidesTiles[] = INCBIN_U16("graphics/interface/pss_unk_83CE2B8.4bpp"); +static const u8 sChooseBoxMenuCenter_Gfx[] = INCBIN_U8("graphics/interface/pss_unk_83CDAB8.4bpp"); +static const u8 sChooseBoxMenuCorners_Gfx[] = INCBIN_U8("graphics/interface/pss_unk_83CE2B8.4bpp"); diff --git a/src/pokemon_storage_system_3.c b/src/pokemon_storage_system_3.c index 46212d06c..4e41447e0 100644 --- a/src/pokemon_storage_system_3.c +++ b/src/pokemon_storage_system_3.c @@ -26,124 +26,192 @@ #include "constants/help_system.h" #include "constants/songs.h" -EWRAM_DATA struct PokemonStorageSystemData *gPSSData = NULL; +EWRAM_DATA struct PokemonStorageSystemData *gStorage = NULL; static EWRAM_DATA bool8 sInPartyMenu = 0; static EWRAM_DATA u8 sCurrentBoxOption = 0; -static EWRAM_DATA u8 gUnknown_20397B6 = 0; +static EWRAM_DATA u8 sDepositBoxId = 0; static EWRAM_DATA u8 sWhichToReshow = 0; static EWRAM_DATA u8 sLastUsedBox = 0; -static EWRAM_DATA u16 gUnknown_20397BA = ITEM_NONE; +static EWRAM_DATA u16 sMovingItemId = ITEM_NONE; -static void Cb_InitPSS(u8 taskId); -static void Cb_ShowPSS(u8 taskId); -static void Cb_ReshowPSS(u8 taskId); -static void Cb_MainPSS(u8 taskId); -static void Cb_ShowPartyPokemon(u8 taskId); -static void Cb_HidePartyPokemon(u8 taskId); -static void Cb_OnSelectedMon(u8 taskId); -static void Cb_MoveMon(u8 taskId); -static void Cb_PlaceMon(u8 taskId); -static void Cb_ShiftMon(u8 taskId); -static void Cb_WithdrawMon(u8 taskId); -static void Cb_DepositMenu(u8 taskId); -static void Cb_ReleaseMon(u8 taskId); -static void Cb_ShowMarkMenu(u8 taskId); -static void Cb_TakeItemForMoving(u8 taskId); -static void Cb_GiveMovingItemToMon(u8 taskId); -static void Cb_ItemToBag(u8 taskId); -static void Cb_SwitchSelectedItem(u8 taskId); -static void Cb_ShowItemInfo(u8 taskId); -static void Cb_HandleMovingMonFromParty(u8 taskId); -static void Cb_PrintCantStoreMail(u8 taskId); -static void Cb_HandleBoxOptions(u8 taskId); -static void Cb_HandleWallpapers(u8 taskId); -static void Cb_JumpBox(u8 taskId); -static void Cb_NameBox(u8 taskId); -static void Cb_ShowMonSummary(u8 taskId); -static void Cb_GiveItemFromBag(u8 taskId); -static void Cb_OnCloseBoxPressed(u8 taskId); -static void Cb_OnBPressed(u8 taskId); -static void Cb_ChangeScreen(u8 taskId); +static void Task_InitPokeStorage(u8 taskId); +static void Task_ShowPokeStorage(u8 taskId); +static void Task_ReshowPokeStorage(u8 taskId); +static void Task_PokeStorageMain(u8 taskId); +static void Task_ShowPartyPokemon(u8 taskId); +static void Task_HidePartyPokemon(u8 taskId); +static void Task_OnSelectedMon(u8 taskId); +static void Task_MoveMon(u8 taskId); +static void Task_PlaceMon(u8 taskId); +static void Task_ShiftMon(u8 taskId); +static void Task_WithdrawMon(u8 taskId); +static void Task_DepositMenu(u8 taskId); +static void Task_ReleaseMon(u8 taskId); +static void Task_ShowMarkMenu(u8 taskId); +static void Task_TakeItemForMoving(u8 taskId); +static void Task_GiveMovingItemToMon(u8 taskId); +static void Task_ItemToBag(u8 taskId); +static void Task_SwitchSelectedItem(u8 taskId); +static void Task_ShowItemInfo(u8 taskId); +static void Task_HandleMovingMonFromParty(u8 taskId); +static void Task_PrintCantStoreMail(u8 taskId); +static void Task_HandleBoxOptions(u8 taskId); +static void Task_HandleWallpapers(u8 taskId); +static void Task_JumpBox(u8 taskId); +static void Task_NameBox(u8 taskId); +static void Task_ShowMonSummary(u8 taskId); +static void Task_GiveItemFromBag(u8 taskId); +static void Task_OnCloseBoxPressed(u8 taskId); +static void Task_OnBPressed(u8 taskId); +static void Task_ChangeScreen(u8 taskId); static void GiveChosenBagItem(void); -static void FreePSSData(void); +static void FreePokeStorageData(void); static void SetScrollingBackground(void); static void ScrollBackground(void); -static void LoadPSSMenuGfx(void); -static bool8 InitPSSWindows(void); -static void LoadWaveformSpritePalette(void); -static void sub_808F078(void); -static void PSS_CreateMonMarkingSprite(void); +static void LoadPokeStorageMenuGfx(void); +static bool8 InitPokeStorageWindows(void); +static void LoadsMiscSpritePalette(void); +static void InitPalettesAndSprites(void); +static void CreateMarkingComboSprite(void); static void CreateWaveformSprites(void); -static void RefreshCursorMonData(void); -static void BoxSetMosaic(void); -static void SpriteCB_CursorMon_Mosaic(struct Sprite *sprite); -static bool8 BoxGetMosaic(void); -static void LoadCursorMonSprite(void); -static void LoadCursorMonGfx(u16 species, u32 pid); -static void PrintCursorMonInfo(void); -static void sub_808F5E8(void); -static void sub_808F68C(void); +static void RefreshDisplayMonData(void); +static void StartDisplayMonMosaic(void); +static void SpriteCB_DisplayMonMosaic(struct Sprite *sprite); +static bool8 IsDisplayMonMosaicActive(void); +static void CreateDisplayMonSprite(void); +static void LoadDisplayMonGfx(u16 species, u32 personality); +static void PrintDisplayMonInfo(void); +static void UpdateWaveformAnimation(void); +static void InitSupplementalTilemaps(void); static void SetUpHidePartyMenu(void); static bool8 HidePartyMenu(void); -static void sub_808F90C(bool8 species); -static void sub_808F948(void); -static void sub_808F974(void); -static void sub_808F99C(void); -static void sub_808F9FC(void); -static void sub_808FA30(u8 pos, bool8 isPartyMon); -static void sub_808FAA8(void); +static void UpdateCloseBoxButtonTilemap(bool8 normal); +static void StartFlashingCloseBoxButton(void); +static void StopFlashingCloseBoxButton(void); +static void UpdateCloseBoxButtonFlash(void); +static void SetPartySlotTilemaps(void); +static void SetPartySlotTilemap(u8 pos, bool8 isPartyMon); +static void UpdatePartySlotColors(void); static void SetUpDoShowPartyMenu(void); static bool8 DoShowPartyMenu(void); -static void sub_808FB68(void); -static void PrintStorageActionText(u8 textId); -static void ShowYesNoWindow(s8 species); +static void InitPokeStorageBg0(void); +static void PrintStorageMessage(u8 textId); +static void ShowYesNoWindow(s8 cursorPos); static void ClearBottomWindow(void); static void AddWallpaperSetsMenu(void); static void AddWallpapersMenu(u8 wallpaperSet); -static void sub_808FDFC(void); -static void sub_808FE54(u8 species); -static void sub_808FF70(void); +static void InitCursorItemIcon(void); +static void SetPokeStorageQuestLogEvent(u8 species); +static void UpdateBoxToSendMons(void); + +enum { + TILEMAP_PKMN_DATA, // The "Pkmn Data" text at the top of the display + TILEMAP_PARTY_MENU, + TILEMAP_CLOSE_BUTTON, + TILEMAP_COUNT +}; + +enum +{ + SCREEN_CHANGE_EXIT_BOX, + SCREEN_CHANGE_SUMMARY_SCREEN, + SCREEN_CHANGE_NAME_BOX, + SCREEN_CHANGE_ITEM_FROM_BAG, +}; + +enum +{ + MSG_EXIT_BOX, + MSG_WHAT_YOU_DO, + MSG_PICK_A_THEME, + MSG_PICK_A_WALLPAPER, + MSG_IS_SELECTED, + MSG_JUMP_TO_WHICH_BOX, + MSG_DEPOSIT_IN_WHICH_BOX, + MSG_WAS_DEPOSITED, + MSG_BOX_IS_FULL, + MSG_RELEASE_POKE, + MSG_WAS_RELEASED, + MSG_BYE_BYE, + MSG_MARK_POKE, + MSG_LAST_POKE, + MSG_PARTY_FULL, + MSG_HOLDING_POKE, + MSG_WHICH_ONE_WILL_TAKE, + MSG_CANT_RELEASE_EGG, + MSG_CONTINUE_BOX, + MSG_CAME_BACK, + MSG_WORRIED, + MSG_SURPRISE, + MSG_PLEASE_REMOVE_MAIL, + MSG_IS_SELECTED2, + MSG_GIVE_TO_MON, + MSG_PLACED_IN_BAG, + MSG_BAG_FULL, + MSG_PUT_IN_BAG, + MSG_ITEM_IS_HELD, + MSG_CHANGED_TO_ITEM, + MSG_CANT_STORE_MAIL, +}; + +enum +{ + MSG_FMT_NONE, + MSG_FMT_MON_NAME_1, + MSG_FMT_MON_NAME_2, + MSG_FMT_MON_NAME_3, + MSG_FMT_RELEASE_MON_1, + MSG_FMT_RELEASE_MON_2, + MSG_FMT_RELEASE_MON_3, + MSG_FMT_ITEM_NAME, +}; static const u32 sPokemonStorageScrollingBGTileset[] = INCBIN_U32("graphics/interface/pss_unk_83CE438.4bpp.lz"); static const u32 sPokemonStorageScrollingBGTilemap[] = INCBIN_U32("graphics/interface/pss_unk_83CE4D0.bin.lz"); -static const u16 sPokemonStorageScrollingBGPalette[] = INCBIN_U16("graphics/interface/pss_unk_83CE5DC.gbapal"); -static const u32 gUnknown_83CE5FC[] = INCBIN_U32("graphics/interface/pss_unk_83CE5FC.bin.lz"); -static const u16 gUnknown_83CE6F8[] = { +// Unused +static const u16 sMenu_Pal[] = INCBIN_U16("graphics/interface/pss_unk_83CE5DC.gbapal"); + +static const u32 sMenu_Tilemap[] = INCBIN_U32("graphics/interface/pss_unk_83CE5FC.bin.lz"); + +static const u16 sPkmnData_Tilemap[] = { 0x0101, 0x0102, 0x0103, 0x0104, 0x0105, 0x0106, 0x0107, 0x0108, 0x0111, 0x0112, 0x0113, 0x0114, 0x0115, 0x0116, 0x0117, 0x0118, 0x2101, 0x2102, 0x2103, 0x2104, 0x2105, 0x2106, 0x2107, 0x2108, 0x2111, 0x2112, 0x2113, 0x2114, 0x2115, 0x2116, 0x2117, 0x2118, }; -static const u16 gUnknown_83CE738[] = INCBIN_U16("graphics/interface/pss_unk_83CE738.gbapal"); -static const u16 gUnknown_83CE758[] = INCBIN_U16("graphics/interface/pss_unk_83CE758.gbapal"); +static const u16 sScrollingBg_Pal[] = INCBIN_U16("graphics/interface/pss_unk_83CE738.gbapal"); +static const u16 sScrollingBgMoveItems_Pal[] = INCBIN_U16("graphics/interface/pss_unk_83CE758.gbapal"); -static const u16 gUnknown_83CE778[] = { +static const u16 sCloseBoxButton_Tilemap[] = { 0x014c, 0x014d, 0x014e, 0x014f, 0x0170, 0x0171, 0x0172, 0x0173, 0x0174, 0x015c, 0x015d, 0x015e, 0x015f, 0x0180, 0x0181, 0x0182, 0x0183, 0x0184, 0x0175, 0x0176, 0x0177, 0x0178, 0x0179, 0x017a, 0x017b, 0x017c, 0x017d, 0x0185, 0x0186, 0x0187, 0x0188, 0x0189, 0x018a, 0x018b, 0x018c, 0x018d, }; -static const u16 gUnknown_83CE7C0[] = { +static const u16 sPartySlotFilled_Tilemap[] = { 0x1140, 0x1141, 0x1141, 0x1142, 0x1150, 0x1151, 0x1151, 0x1152, 0x1160, 0x1161, 0x1161, 0x1162, }; -static const u16 gUnknown_83CE7D8[] = { +static const u16 sPartySlotEmpty_Tilemap[] = { 0x1143, 0x1144, 0x1144, 0x1145, 0x1153, 0x1154, 0x1154, 0x1155, 0x1163, 0x1164, 0x1164, 0x1165, }; -static const u16 gUnknown_83CE7F0[] = INCBIN_U16("graphics/interface/pss_unk_83CE810.gbapal"); -static const u16 gUnknown_83CE810[] = INCBIN_U16("graphics/interface/pss_unk_83CE810.4bpp"); -static const u16 gUnknown_83CE9D0[] = INCBIN_U16("graphics/interface/pss_unk_83CE9D0.gbapal"); -static const u16 gUnknown_83CEA10[] = INCBIN_U16("graphics/interface/pss_unk_83CEA10.gbapal"); +static const u16 sPokeStorageMisc2Pal[] = INCBIN_U16("graphics/interface/pss_unk_83CE810.gbapal"); +static const u16 sWaveform_Gfx[] = INCBIN_U16("graphics/interface/pss_unk_83CE810.4bpp"); -static const struct WindowTemplate gUnknown_83CEA30[] = { +// Unused +static const u16 sUnused_Pal[] = INCBIN_U16("graphics/interface/pss_unk_83CE9D0.gbapal"); + +static const u16 sTextWindows_Pal[] = INCBIN_U16("graphics/interface/pss_unk_83CEA10.gbapal"); + +static const struct WindowTemplate sWindowTemplates[] = { { .bg = 1, .tilemapLeft = 0, @@ -168,10 +236,11 @@ static const struct WindowTemplate gUnknown_83CEA30[] = { .height = 8, .paletteNum = 15, .baseBlock = 0x014 - }, DUMMY_WIN_TEMPLATE + }, + DUMMY_WIN_TEMPLATE }; -static const struct BgTemplate gUnknown_83CEA50[] = { +static const struct BgTemplate sBgTemplates[] = { { .bg = 0, .charBaseIndex = 0, @@ -207,61 +276,60 @@ static const struct BgTemplate gUnknown_83CEA50[] = { } }; -static const struct SpritePalette sWaveformSpritePalette = { - gUnknown_83CE7F0, TAG_PAL_WAVEFORM +static const struct SpritePalette sMiscSpritePalette = { + sPokeStorageMisc2Pal, PALTAG_MISC_2 }; static const struct SpriteSheet sWaveformSpriteSheet = { - gUnknown_83CE810, 0x01c0, TAG_TILE_WAVEFORM + sWaveform_Gfx, 0x01C0, GFXTAG_WAVEFORM }; -static const struct OamData gUnknown_83CEB88; +static const struct OamData sOamData_DisplayMon; -static const struct SpriteTemplate sSpriteTemplate_CursorMon = { - .tileTag = TAG_TILE_2, - .paletteTag = TAG_PAL_DAC6, - .oam = &gUnknown_83CEB88, +static const struct SpriteTemplate sSpriteTemplate_DisplayMon = { + .tileTag = GFXTAG_DISPLAY_MON, + .paletteTag = PALTAG_DISPLAY_MON, + .oam = &sOamData_DisplayMon, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = SpriteCallbackDummy }; -static const struct StorageAction sPCStorageActionTexts[] = { - [PC_TEXT_EXIT_BOX] = {gText_ExitFromBox, PC_TEXT_FMT_NORMAL}, - [PC_TEXT_WHAT_YOU_DO] = {gText_WhatDoYouWantToDo, PC_TEXT_FMT_NORMAL}, - [PC_TEXT_PICK_A_THEME] = {gText_PleasePickATheme, PC_TEXT_FMT_NORMAL}, - [PC_TEXT_PICK_A_WALLPAPER] = {gText_PickTheWallpaper, PC_TEXT_FMT_NORMAL}, - [PC_TEXT_IS_SELECTED] = {gText_PkmnIsSelected, PC_TEXT_FMT_MON_NAME_1}, - [PC_TEXT_JUMP_TO_WHICH_BOX] = {gText_JumpToWhichBox, PC_TEXT_FMT_NORMAL}, - [PC_TEXT_DEPOSIT_IN_WHICH_BOX] = {gText_DepositInWhichBox, PC_TEXT_FMT_NORMAL}, - [PC_TEXT_WAS_DEPOSITED] = {gText_PkmnWasDeposited, PC_TEXT_FMT_MON_NAME_1}, - [PC_TEXT_BOX_IS_FULL] = {gText_BoxIsFull2, PC_TEXT_FMT_NORMAL}, - [PC_TEXT_RELEASE_POKE] = {gText_ReleaseThisPokemon, PC_TEXT_FMT_NORMAL}, - [PC_TEXT_WAS_RELEASED] = {gText_PkmnWasReleased, PC_TEXT_FMT_MON_NAME_4}, - [PC_TEXT_BYE_BYE] = {gText_ByeByePkmn, PC_TEXT_FMT_MON_NAME_6}, - [PC_TEXT_MARK_POKE] = {gText_MarkYourPkmn, PC_TEXT_FMT_NORMAL}, - [PC_TEXT_LAST_POKE] = {gText_ThatsYourLastPkmn, PC_TEXT_FMT_NORMAL}, - [PC_TEXT_PARTY_FULL] = {gText_YourPartysFull, PC_TEXT_FMT_NORMAL}, - [PC_TEXT_HOLDING_POKE] = {gText_YoureHoldingAPkmn, PC_TEXT_FMT_NORMAL}, - [PC_TEXT_WHICH_ONE_WILL_TAKE] = {gText_WhichOneWillYouTake, PC_TEXT_FMT_NORMAL}, - [PC_TEXT_CANT_RELEASE_EGG] = {gText_YouCantReleaseAnEgg, PC_TEXT_FMT_NORMAL}, - [PC_TEXT_CONTINUE_BOX] = {gText_ContinueBoxOperations, PC_TEXT_FMT_NORMAL}, - [PC_TEXT_CAME_BACK] = {gText_PkmnCameBack, PC_TEXT_FMT_MON_NAME_1}, - [PC_TEXT_WORRIED] = {gText_WasItWorriedAboutYou, PC_TEXT_FMT_NORMAL}, - [PC_TEXT_SURPRISE] = {gText_FourEllipsesExclamation, PC_TEXT_FMT_NORMAL}, - [PC_TEXT_PLEASE_REMOVE_MAIL] = {gText_PleaseRemoveTheMail, PC_TEXT_FMT_NORMAL}, - [PC_TEXT_IS_SELECTED2] = {gText_PkmnIsSelected, PC_TEXT_FMT_ITEM_NAME}, - [PC_TEXT_GIVE_TO_MON] = {gText_GiveToAPkmn, PC_TEXT_FMT_NORMAL}, - [PC_TEXT_PLACED_IN_BAG] = {gText_PlacedItemInBag, PC_TEXT_FMT_ITEM_NAME}, - [PC_TEXT_BAG_FULL] = {gText_BagIsFull2, PC_TEXT_FMT_NORMAL}, - [PC_TEXT_PUT_IN_BAG] = {gText_PutItemInBag, PC_TEXT_FMT_NORMAL}, - [PC_TEXT_ITEM_IS_HELD] = {gText_ItemIsNowHeld, PC_TEXT_FMT_ITEM_NAME}, - [PC_TEXT_CHANGED_TO_ITEM] = {gText_ChangedToNewItem, PC_TEXT_FMT_ITEM_NAME}, - [PC_TEXT_CANT_STORE_MAIL] = {gText_MailCantBeStored, PC_TEXT_FMT_NORMAL}, +static const struct StorageMessage sMessages[] = { + [MSG_EXIT_BOX] = {gText_ExitFromBox, MSG_FMT_NONE}, + [MSG_WHAT_YOU_DO] = {gText_WhatDoYouWantToDo, MSG_FMT_NONE}, + [MSG_PICK_A_THEME] = {gText_PleasePickATheme, MSG_FMT_NONE}, + [MSG_PICK_A_WALLPAPER] = {gText_PickTheWallpaper, MSG_FMT_NONE}, + [MSG_IS_SELECTED] = {gText_PkmnIsSelected, MSG_FMT_MON_NAME_1}, + [MSG_JUMP_TO_WHICH_BOX] = {gText_JumpToWhichBox, MSG_FMT_NONE}, + [MSG_DEPOSIT_IN_WHICH_BOX] = {gText_DepositInWhichBox, MSG_FMT_NONE}, + [MSG_WAS_DEPOSITED] = {gText_PkmnWasDeposited, MSG_FMT_MON_NAME_1}, + [MSG_BOX_IS_FULL] = {gText_BoxIsFull2, MSG_FMT_NONE}, + [MSG_RELEASE_POKE] = {gText_ReleaseThisPokemon, MSG_FMT_NONE}, + [MSG_WAS_RELEASED] = {gText_PkmnWasReleased, MSG_FMT_RELEASE_MON_1}, + [MSG_BYE_BYE] = {gText_ByeByePkmn, MSG_FMT_RELEASE_MON_3}, + [MSG_MARK_POKE] = {gText_MarkYourPkmn, MSG_FMT_NONE}, + [MSG_LAST_POKE] = {gText_ThatsYourLastPkmn, MSG_FMT_NONE}, + [MSG_PARTY_FULL] = {gText_YourPartysFull, MSG_FMT_NONE}, + [MSG_HOLDING_POKE] = {gText_YoureHoldingAPkmn, MSG_FMT_NONE}, + [MSG_WHICH_ONE_WILL_TAKE] = {gText_WhichOneWillYouTake, MSG_FMT_NONE}, + [MSG_CANT_RELEASE_EGG] = {gText_YouCantReleaseAnEgg, MSG_FMT_NONE}, + [MSG_CONTINUE_BOX] = {gText_ContinueBoxOperations, MSG_FMT_NONE}, + [MSG_CAME_BACK] = {gText_PkmnCameBack, MSG_FMT_MON_NAME_1}, + [MSG_WORRIED] = {gText_WasItWorriedAboutYou, MSG_FMT_NONE}, + [MSG_SURPRISE] = {gText_FourEllipsesExclamation, MSG_FMT_NONE}, + [MSG_PLEASE_REMOVE_MAIL] = {gText_PleaseRemoveTheMail, MSG_FMT_NONE}, + [MSG_IS_SELECTED2] = {gText_PkmnIsSelected, MSG_FMT_ITEM_NAME}, + [MSG_GIVE_TO_MON] = {gText_GiveToAPkmn, MSG_FMT_NONE}, + [MSG_PLACED_IN_BAG] = {gText_PlacedItemInBag, MSG_FMT_ITEM_NAME}, + [MSG_BAG_FULL] = {gText_BagIsFull2, MSG_FMT_NONE}, + [MSG_PUT_IN_BAG] = {gText_PutItemInBag, MSG_FMT_NONE}, + [MSG_ITEM_IS_HELD] = {gText_ItemIsNowHeld, MSG_FMT_ITEM_NAME}, + [MSG_CHANGED_TO_ITEM] = {gText_ChangedToNewItem, MSG_FMT_ITEM_NAME}, + [MSG_CANT_STORE_MAIL] = {gText_MailCantBeStored, MSG_FMT_NONE}, }; -// Yes/No menu static const struct WindowTemplate sYesNoWindowTemplate = { .bg = 0, .tilemapLeft = 24, @@ -272,7 +340,7 @@ static const struct WindowTemplate sYesNoWindowTemplate = { .baseBlock = 0x05c }; -static const struct OamData gUnknown_83CEB88 = { +static const struct OamData sOamData_DisplayMon = { .y = 0, .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, @@ -289,7 +357,7 @@ static const struct OamData gUnknown_83CEB88 = { // Waveform -static const struct OamData gUnknown_83CEB90 = { +static const struct OamData sOamData_Waveform = { .y = 0, .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, @@ -304,100 +372,100 @@ static const struct OamData gUnknown_83CEB90 = { .paletteNum = 0 }; -static const union AnimCmd gUnknown_83CEB98[] = { +static const union AnimCmd sAnim_Waveform_LeftOff[] = { ANIMCMD_FRAME(0, 5), ANIMCMD_END }; -static const union AnimCmd gUnknown_83CEBA0[] = { +static const union AnimCmd sAnim_Waveform_LeftOn[] = { ANIMCMD_FRAME(2, 8), ANIMCMD_FRAME(4, 8), ANIMCMD_FRAME(6, 8), ANIMCMD_JUMP(0) }; -static const union AnimCmd gUnknown_83CEBB0[] = { +static const union AnimCmd sAnim_Waveform_RightOff[] = { ANIMCMD_FRAME(8, 5), ANIMCMD_END }; -static const union AnimCmd gUnknown_83CEBB8[] = { +static const union AnimCmd sAnim_Waveform_RightOn[] = { ANIMCMD_FRAME(10, 8), ANIMCMD_FRAME(4, 8), ANIMCMD_FRAME(12, 8), ANIMCMD_JUMP(0) }; -static const union AnimCmd *const gUnknown_83CEBC8[] = { - gUnknown_83CEB98, - gUnknown_83CEBA0, - gUnknown_83CEBB0, - gUnknown_83CEBB8 +static const union AnimCmd *const sAnims_Waveform[] = { + sAnim_Waveform_LeftOff, + sAnim_Waveform_LeftOn, + sAnim_Waveform_RightOff, + sAnim_Waveform_RightOn }; static const struct SpriteTemplate sSpriteTemplate_Waveform = { - .tileTag = TAG_TILE_WAVEFORM, - .paletteTag = TAG_PAL_WAVEFORM, - .oam = &gUnknown_83CEB90, - .anims = gUnknown_83CEBC8, + .tileTag = GFXTAG_WAVEFORM, + .paletteTag = PALTAG_MISC_2, + .oam = &sOamData_Waveform, + .anims = sAnims_Waveform, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = SpriteCallbackDummy, }; -static void VblankCb_PSS(void) +static void VBlankCB_PokeStorage(void) { LoadOam(); ProcessSpriteCopyRequests(); UnkUtil_Run(); TransferPlttBuffer(); - SetGpuReg(REG_OFFSET_BG2HOFS, gPSSData->bg2_X); + SetGpuReg(REG_OFFSET_BG2HOFS, gStorage->bg2_X); } -static void Cb2_PSS(void) +static void CB2_PokeStorage(void) { RunTasks(); DoScheduledBgTilemapCopiesToVram(); ScrollBackground(); - sub_808F99C(); + UpdateCloseBoxButtonFlash(); AnimateSprites(); BuildOamBuffer(); } -void Cb2_EnterPSS(u8 boxOption) +void EnterPokeStorage(u8 boxOption) { ResetTasks(); sCurrentBoxOption = boxOption; - gPSSData = Alloc(sizeof(struct PokemonStorageSystemData)); - if (gPSSData == NULL) + gStorage = Alloc(sizeof(struct PokemonStorageSystemData)); + if (gStorage == NULL) SetMainCallback2(CB2_ExitPokeStorage); else { - gPSSData->boxOption = boxOption; - gPSSData->isReshowingPSS = FALSE; - gUnknown_20397BA = 0; - gPSSData->state = 0; - gPSSData->taskId = CreateTask(Cb_InitPSS, 3); + gStorage->boxOption = boxOption; + gStorage->isReopening = FALSE; + sMovingItemId = 0; + gStorage->state = 0; + gStorage->taskId = CreateTask(Task_InitPokeStorage, 3); SetHelpContext(HELPCONTEXT_BILLS_PC); sLastUsedBox = StorageGetCurrentBox(); - SetMainCallback2(Cb2_PSS); + SetMainCallback2(CB2_PokeStorage); } } -void Cb2_ReturnToPSS(void) +void CB2_ReturnToPokeStorage(void) { ResetTasks(); - gPSSData = Alloc(sizeof(struct PokemonStorageSystemData)); - if (gPSSData == NULL) + gStorage = Alloc(sizeof(struct PokemonStorageSystemData)); + if (gStorage == NULL) SetMainCallback2(CB2_ExitPokeStorage); else { - gPSSData->boxOption = sCurrentBoxOption; - gPSSData->isReshowingPSS = TRUE; - gPSSData->state = 0; - gPSSData->taskId = CreateTask(Cb_InitPSS, 3); + gStorage->boxOption = sCurrentBoxOption; + gStorage->isReopening = TRUE; + gStorage->state = 0; + gStorage->taskId = CreateTask(Task_InitPokeStorage, 3); SetHelpContext(HELPCONTEXT_BILLS_PC); - SetMainCallback2(Cb2_PSS); + SetMainCallback2(CB2_PokeStorage); } } @@ -413,7 +481,7 @@ static void ResetAllBgCoords(void) SetGpuReg(REG_OFFSET_BG3VOFS, 0); } -static void sub_808CF10(void) +static void ResetForPokeStorage(void) { ResetPaletteFade(); ResetSpriteData(); @@ -421,25 +489,25 @@ static void sub_808CF10(void) FreeAllSpritePalettes(); ClearDma3Requests(); gReservedSpriteTileCount = 0x280; - UnkUtil_Init(&gPSSData->unkUtil, gPSSData->unkUtilData, 8); + UnkUtil_Init(&gStorage->unkUtil, gStorage->unkUtilData, ARRAY_COUNT(gStorage->unkUtilData)); gKeyRepeatStartDelay = 20; ClearScheduledBgCopiesToVram(); - AllocBoxPartyPokemonDropdowns(3); - SetBoxPartyPokemonDropdownMap2(0, 1, gUnknown_83CE6F8, 8, 4); - SetBoxPartyPokemonDropdownMap2Pos(0, 1, 0); - gPSSData->closeBoxFlashing = FALSE; + TilemapUtil_Init(TILEMAP_COUNT); + TilemapUtil_SetTilemap(TILEMAP_PKMN_DATA, 1, sPkmnData_Tilemap, 8, 4); + TilemapUtil_SetPos(TILEMAP_PKMN_DATA, 1, 0); + gStorage->closeBoxFlashing = FALSE; } -static void sub_808CF94(void) +static void InitStartingPosData(void) { - sub_8092B50(); - sInPartyMenu = gPSSData->boxOption == OPTION_DEPOSIT; - gUnknown_20397B6 = 0; + ClearSavedCursorPos(); + sInPartyMenu = gStorage->boxOption == OPTION_DEPOSIT; + sDepositBoxId = 0; } -static void sub_808CFC4(void) +static void SetMonIconTransparency(void) { - if (gPSSData->boxOption == OPTION_MOVE_ITEMS) + if (gStorage->boxOption == OPTION_MOVE_ITEMS) { SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT2_ALL); SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(7, 11)); @@ -447,42 +515,42 @@ static void sub_808CFC4(void) SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_ON | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_1D_MAP); } -static void SetPSSCallback(TaskFunc newFunc) +static void SetPokeStorageTask(TaskFunc newFunc) { - gTasks[gPSSData->taskId].func = newFunc; - gPSSData->state = 0; + gTasks[gStorage->taskId].func = newFunc; + gStorage->state = 0; } -static void Cb_InitPSS(u8 taskId) +static void Task_InitPokeStorage(u8 taskId) { - switch (gPSSData->state) + switch (gStorage->state) { case 0: SetVBlankCallback(NULL); SetGpuReg(REG_OFFSET_DISPCNT, 0); - sub_808CF10(); - if (gPSSData->isReshowingPSS) + ResetForPokeStorage(); + if (gStorage->isReopening) { switch (sWhichToReshow) { - case 1: - sub_8093660(); + case SCREEN_CHANGE_NAME_BOX - 1: + LoadSavedMovingMon(); break; - case 0: - sub_80937B4(); + case SCREEN_CHANGE_SUMMARY_SCREEN - 1: + SetSelectionAfterSummaryScreen(); break; - case 2: + case SCREEN_CHANGE_ITEM_FROM_BAG - 1: GiveChosenBagItem(); break; } } - LoadPSSMenuGfx(); - LoadWaveformSpritePalette(); + LoadPokeStorageMenuGfx(); + LoadsMiscSpritePalette(); break; case 1: - if (!InitPSSWindows()) + if (!InitPokeStorageWindows()) { - SetPSSCallback(Cb_ChangeScreen); + SetPokeStorageTask(Task_ChangeScreen); return; } break; @@ -494,650 +562,623 @@ static void Cb_InitPSS(u8 taskId) break; case 3: ResetAllBgCoords(); - if (!gPSSData->isReshowingPSS) - sub_808CF94(); + if (!gStorage->isReopening) + InitStartingPosData(); break; case 4: - sub_808FFAC(); - if (!gPSSData->isReshowingPSS) - sub_80922C0(); + InitMonIconFields(); + if (!gStorage->isReopening) + InitCursor(); else - sub_8092340(); + InitCursorOnReopen(); break; case 5: - if (!sub_8095050()) + if (!MultiMove_Init()) { - SetPSSCallback(Cb_ChangeScreen); + SetPokeStorageTask(Task_ChangeScreen); return; } else { SetScrollingBackground(); - sub_808FB68(); + InitPokeStorageBg0(); } break; case 6: - sub_808F078(); + InitPalettesAndSprites(); break; case 7: - sub_808F68C(); + InitSupplementalTilemaps(); break; case 8: - sub_80913DC(StorageGetCurrentBox()); + CreateInitBoxTask(StorageGetCurrentBox()); break; case 9: - if (sub_809140C()) + if (IsInitBoxActive()) return; - if (gPSSData->boxOption != OPTION_MOVE_ITEMS) + if (gStorage->boxOption != OPTION_MOVE_ITEMS) { - gPSSData->markMenu.baseTileTag = TAG_TILE_D; - gPSSData->markMenu.basePaletteTag = TAG_PAL_DACE; - InitMonMarkingsMenu(&gPSSData->markMenu); + gStorage->markMenu.baseTileTag = GFXTAG_MARKING_MENU; + gStorage->markMenu.basePaletteTag = PALTAG_MARKING_MENU; + InitMonMarkingsMenu(&gStorage->markMenu); BufferMonMarkingsMenuTiles(); } else { CreateItemIconSprites(); - sub_808FDFC(); + InitCursorItemIcon(); } break; case 10: - sub_808CFC4(); - if (!gPSSData->isReshowingPSS) + SetMonIconTransparency(); + if (!gStorage->isReopening) { - BlendPalettes(PALETTES_ALL, 0x10, RGB_BLACK); - SetPSSCallback(Cb_ShowPSS); + BlendPalettes(PALETTES_ALL, 16, RGB_BLACK); + SetPokeStorageTask(Task_ShowPokeStorage); } else { - BlendPalettes(PALETTES_ALL, 0x10, RGB_BLACK); - SetPSSCallback(Cb_ReshowPSS); + BlendPalettes(PALETTES_ALL, 16, RGB_BLACK); + SetPokeStorageTask(Task_ReshowPokeStorage); } - SetVBlankCallback(VblankCb_PSS); + SetVBlankCallback(VBlankCB_PokeStorage); return; default: return; } - gPSSData->state++; + gStorage->state++; } -static void Cb_ShowPSS(u8 taskId) +static void Task_ShowPokeStorage(u8 taskId) { - switch (gPSSData->state) + switch (gStorage->state) { case 0: PlaySE(SE_PC_LOGIN); BeginPCScreenEffect_TurnOn(20, 0, 1); - gPSSData->state++; + gStorage->state++; break; case 1: if (!IsPCScreenEffectRunning_TurnOn()) - SetPSSCallback(Cb_MainPSS); + SetPokeStorageTask(Task_PokeStorageMain); break; } } -static void Cb_ReshowPSS(u8 taskId) +static void Task_ReshowPokeStorage(u8 taskId) { - switch (gPSSData->state) + switch (gStorage->state) { case 0: BeginNormalPaletteFade(PALETTES_ALL, -1, 0x10, 0, RGB_BLACK); - gPSSData->state++; + gStorage->state++; break; case 1: if (!UpdatePaletteFade()) - { - SetPSSCallback(Cb_MainPSS); - } + SetPokeStorageTask(Task_PokeStorageMain); break; } } -static void Cb_MainPSS(u8 taskId) +static void Task_PokeStorageMain(u8 taskId) { - switch (gPSSData->state) + switch (gStorage->state) { case 0: switch (HandleInput()) { - case 1: + case INPUT_MOVE_CURSOR: PlaySE(SE_SELECT); - gPSSData->state = 1; + gStorage->state = 1; break; - case 5: - if (gPSSData->boxOption != OPTION_MOVE_MONS && gPSSData->boxOption != OPTION_MOVE_ITEMS) + case INPUT_SHOW_PARTY: + if (gStorage->boxOption != OPTION_MOVE_MONS && gStorage->boxOption != OPTION_MOVE_ITEMS) { - PrintStorageActionText(PC_TEXT_WHICH_ONE_WILL_TAKE); - gPSSData->state = 3; + PrintStorageMessage(MSG_WHICH_ONE_WILL_TAKE); + gStorage->state = 3; } else { - sub_8092B50(); - SetPSSCallback(Cb_ShowPartyPokemon); + ClearSavedCursorPos(); + SetPokeStorageTask(Task_ShowPartyPokemon); } break; - case 6: - if (gPSSData->boxOption == OPTION_MOVE_MONS) + case INPUT_HIDE_PARTY: + if (gStorage->boxOption == OPTION_MOVE_MONS) { - if (IsMonBeingMoved() && ItemIsMail(gPSSData->displayMonItemId)) - gPSSData->state = 5; + if (IsMonBeingMoved() && ItemIsMail(gStorage->displayMonItemId)) + gStorage->state = 5; else - SetPSSCallback(Cb_HidePartyPokemon); - } - else if (gPSSData->boxOption == OPTION_MOVE_ITEMS) - { - SetPSSCallback(Cb_HidePartyPokemon); + SetPokeStorageTask(Task_HidePartyPokemon); } + else if (gStorage->boxOption == OPTION_MOVE_ITEMS) + SetPokeStorageTask(Task_HidePartyPokemon); break; - case 4: - SetPSSCallback(Cb_OnCloseBoxPressed); + case INPUT_CLOSE_BOX: + SetPokeStorageTask(Task_OnCloseBoxPressed); break; - case 19: - SetPSSCallback(Cb_OnBPressed); + case INPUT_PRESSED_B: + SetPokeStorageTask(Task_OnBPressed); break; - case 7: + case INPUT_BOX_OPTIONS: PlaySE(SE_SELECT); - SetPSSCallback(Cb_HandleBoxOptions); + SetPokeStorageTask(Task_HandleBoxOptions); break; - case 8: - SetPSSCallback(Cb_OnSelectedMon); + case INPUT_IN_MENU: + SetPokeStorageTask(Task_OnSelectedMon); break; - case 9: + case INPUT_SCROLL_RIGHT: PlaySE(SE_SELECT); - gPSSData->newCurrBoxId = StorageGetCurrentBox() + 1; - if (gPSSData->newCurrBoxId >= TOTAL_BOXES_COUNT) - gPSSData->newCurrBoxId = 0; - if (gPSSData->boxOption != OPTION_MOVE_ITEMS) + gStorage->newCurrBoxId = StorageGetCurrentBox() + 1; + if (gStorage->newCurrBoxId >= TOTAL_BOXES_COUNT) + gStorage->newCurrBoxId = 0; + if (gStorage->boxOption != OPTION_MOVE_ITEMS) { - SetUpScrollToBox(gPSSData->newCurrBoxId); - gPSSData->state = 2; + SetUpScrollToBox(gStorage->newCurrBoxId); + gStorage->state = 2; } else { - sub_8094D60(); - gPSSData->state = 10; + TryHideItemAtCursor(); + gStorage->state = 10; } break; - case 10: + case INPUT_SCROLL_LEFT: PlaySE(SE_SELECT); - gPSSData->newCurrBoxId = StorageGetCurrentBox() - 1; - if (gPSSData->newCurrBoxId < 0) - gPSSData->newCurrBoxId = TOTAL_BOXES_COUNT - 1; - if (gPSSData->boxOption != OPTION_MOVE_ITEMS) + gStorage->newCurrBoxId = StorageGetCurrentBox() - 1; + if (gStorage->newCurrBoxId < 0) + gStorage->newCurrBoxId = TOTAL_BOXES_COUNT - 1; + if (gStorage->boxOption != OPTION_MOVE_ITEMS) { - SetUpScrollToBox(gPSSData->newCurrBoxId); - gPSSData->state = 2; + SetUpScrollToBox(gStorage->newCurrBoxId); + gStorage->state = 2; } else { - sub_8094D60(); - gPSSData->state = 10; + TryHideItemAtCursor(); + gStorage->state = 10; } break; - case 11: + case INPUT_DEPOSIT: if (!CanMovePartyMon()) { - if (ItemIsMail(gPSSData->displayMonItemId)) - { - gPSSData->state = 5; - } + if (ItemIsMail(gStorage->displayMonItemId)) + gStorage->state = 5; else { PlaySE(SE_SELECT); - SetPSSCallback(Cb_DepositMenu); + SetPokeStorageTask(Task_DepositMenu); } } else - { - gPSSData->state = 4; - } + gStorage->state = 4; break; - case 13: + case INPUT_MOVE_MON: if (CanMovePartyMon()) - { - gPSSData->state = 4; - } + gStorage->state = 4; + else { PlaySE(SE_SELECT); - SetPSSCallback(Cb_MoveMon); + SetPokeStorageTask(Task_MoveMon); } break; - case 14: + case INPUT_SHIFT_MON: if (!CanShiftMon()) - { - gPSSData->state = 4; - } + gStorage->state = 4; else { PlaySE(SE_SELECT); - SetPSSCallback(Cb_ShiftMon); + SetPokeStorageTask(Task_ShiftMon); } break; - case 12: + case INPUT_WITHDRAW: PlaySE(SE_SELECT); - SetPSSCallback(Cb_WithdrawMon); + SetPokeStorageTask(Task_WithdrawMon); break; - case 15: + case INPUT_PLACE_MON: PlaySE(SE_SELECT); - SetPSSCallback(Cb_PlaceMon); + SetPokeStorageTask(Task_PlaceMon); break; - case 16: + case INPUT_TAKE_ITEM: PlaySE(SE_SELECT); - SetPSSCallback(Cb_TakeItemForMoving); + SetPokeStorageTask(Task_TakeItemForMoving); break; - case 17: + case INPUT_GIVE_ITEM: PlaySE(SE_SELECT); - SetPSSCallback(Cb_GiveMovingItemToMon); + SetPokeStorageTask(Task_GiveMovingItemToMon); break; - case 18: + case INPUT_SWITCH_ITEMS: PlaySE(SE_SELECT); - SetPSSCallback(Cb_SwitchSelectedItem); + SetPokeStorageTask(Task_SwitchSelectedItem); break; - case 20: + case INPUT_MULTIMOVE_START: PlaySE(SE_SELECT); - sub_80950BC(0); - gPSSData->state = 7; + MultiMove_SetFunction(MULTIMOVE_START); + gStorage->state = 7; break; - case 22: - sub_80950BC(1); - gPSSData->state = 8; + case INPUT_MULTIMOVE_SINGLE: + MultiMove_SetFunction(MULTIMOVE_SINGLE); + gStorage->state = 8; break; - case 21: + case INPUT_MULTIMOVE_CHANGE_SELECTION: PlaySE(SE_SELECT); - sub_80950BC(2); - gPSSData->state = 9; + MultiMove_SetFunction(MULTIMOVE_CHANGE_SELECTION); + gStorage->state = 9; break; - case 23: - sub_80950BC(3); - gPSSData->state = 7; + case INPUT_MULTIMOVE_GRAB_SELECTION: + MultiMove_SetFunction(MULTIMOVE_GRAB_SELECTION); + gStorage->state = 7; break; - case 25: + case INPUT_MULTIMOVE_MOVE_MONS: PlaySE(SE_SELECT); - sub_80950BC(4); - gPSSData->state = 9; + MultiMove_SetFunction(MULTIMOVE_MOVE_MONS); + gStorage->state = 9; break; - case 26: + case INPUT_MULTIMOVE_PLACE_MONS: PlaySE(SE_SELECT); - sub_808FE54(3); - sub_80950BC(5); - gPSSData->state = 7; + SetPokeStorageQuestLogEvent(3); + MultiMove_SetFunction(MULTIMOVE_PLACE_MONS); + gStorage->state = 7; break; - case 24: + case INPUT_MULTIMOVE_UNABLE: PlaySE(SE_FAILURE); break; } break; case 1: - if (!sub_80924A8()) + if (!UpdateCursorPos()) { if (IsCursorOnCloseBox()) - sub_808F948(); + StartFlashingCloseBoxButton(); else - sub_808F974(); + StopFlashingCloseBoxButton(); - if (gPSSData->setMosaic) - BoxSetMosaic(); - gPSSData->state = 0; + if (gStorage->setMosaic) + StartDisplayMonMosaic(); + gStorage->state = 0; } break; case 2: if (!ScrollToBox()) { - SetCurrentBox(gPSSData->newCurrBoxId); + SetCurrentBox(gStorage->newCurrBoxId); if (!sInPartyMenu && !IsMonBeingMoved()) { - sub_8092F54(); - BoxSetMosaic(); + DoTrySetDisplayMonData(); + StartDisplayMonMosaic(); } - if (gPSSData->boxOption == OPTION_MOVE_ITEMS) + if (gStorage->boxOption == OPTION_MOVE_ITEMS) { - sub_8094D84(); - gPSSData->state = 11; + TryShowItemAtCursor(); + gStorage->state = 11; } else - { - gPSSData->state = 0; - } + gStorage->state = 0; } break; case 3: if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY)) { ClearBottomWindow(); - gPSSData->state = 0; + gStorage->state = 0; } break; case 4: PlaySE(SE_FAILURE); - PrintStorageActionText(PC_TEXT_LAST_POKE); - gPSSData->state = 6; + PrintStorageMessage(MSG_LAST_POKE); + gStorage->state = 6; break; case 5: PlaySE(SE_FAILURE); - PrintStorageActionText(PC_TEXT_PLEASE_REMOVE_MAIL); - gPSSData->state = 6; + PrintStorageMessage(MSG_PLEASE_REMOVE_MAIL); + gStorage->state = 6; break; case 6: if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY)) { ClearBottomWindow(); - SetPSSCallback(Cb_MainPSS); + SetPokeStorageTask(Task_PokeStorageMain); } break; case 7: - if (!sub_80950D0()) - gPSSData->state = 0; + if (!MultiMove_RunFunction()) + gStorage->state = 0; break; case 8: - if (!sub_80950D0()) - SetPSSCallback(Cb_MoveMon); + if (!MultiMove_RunFunction()) + SetPokeStorageTask(Task_MoveMon); break; case 9: - if (!sub_80950D0()) + if (!MultiMove_RunFunction()) { - if (gPSSData->setMosaic) - BoxSetMosaic(); - gPSSData->state = 0; + if (gStorage->setMosaic) + StartDisplayMonMosaic(); + gStorage->state = 0; } break; case 10: - if (!sub_809610C()) + if (!IsItemIconAnimActive()) { - SetUpScrollToBox(gPSSData->newCurrBoxId); - gPSSData->state = 2; + SetUpScrollToBox(gStorage->newCurrBoxId); + gStorage->state = 2; } break; case 11: - if (!sub_809610C()) - gPSSData->state = 0; + if (!IsItemIconAnimActive()) + gStorage->state = 0; break; } } -static void Cb_ShowPartyPokemon(u8 taskId) +static void Task_ShowPartyPokemon(u8 taskId) { - switch (gPSSData->state) + switch (gStorage->state) { case 0: SetUpDoShowPartyMenu(); - gPSSData->state++; + gStorage->state++; break; case 1: if (!DoShowPartyMenu()) - SetPSSCallback(Cb_MainPSS); + SetPokeStorageTask(Task_PokeStorageMain); break; } } -static void Cb_HidePartyPokemon(u8 taskId) +static void Task_HidePartyPokemon(u8 taskId) { - switch (gPSSData->state) + switch (gStorage->state) { case 0: PlaySE(SE_SELECT); SetUpHidePartyMenu(); - gPSSData->state++; + gStorage->state++; break; case 1: if (!HidePartyMenu()) { - sub_8092B3C(sub_8092B70()); - gPSSData->state++; + SetCursorBoxPosition(GetSavedCursorPos()); + gStorage->state++; } break; case 2: - if (!sub_80924A8()) + if (!UpdateCursorPos()) { - if (gPSSData->setMosaic) - BoxSetMosaic(); - SetPSSCallback(Cb_MainPSS); + if (gStorage->setMosaic) + StartDisplayMonMosaic(); + SetPokeStorageTask(Task_PokeStorageMain); } break; } } -static void Cb_OnSelectedMon(u8 taskId) +static void Task_OnSelectedMon(u8 taskId) { - switch (gPSSData->state) + switch (gStorage->state) { case 0: - if (!BoxGetMosaic()) + if (!IsDisplayMonMosaicActive()) { PlaySE(SE_SELECT); - if (gPSSData->boxOption != OPTION_MOVE_ITEMS) - PrintStorageActionText(PC_TEXT_IS_SELECTED); - else if (IsActiveItemMoving() || gPSSData->displayMonItemId != 0) - PrintStorageActionText(PC_TEXT_IS_SELECTED2); + if (gStorage->boxOption != OPTION_MOVE_ITEMS) + PrintStorageMessage(MSG_IS_SELECTED); + else if (IsActiveItemMoving() || gStorage->displayMonItemId != 0) + PrintStorageMessage(MSG_IS_SELECTED2); else - PrintStorageActionText(PC_TEXT_GIVE_TO_MON); + PrintStorageMessage(MSG_GIVE_TO_MON); AddMenu(); - gPSSData->state = 1; + gStorage->state = 1; } break; - case 1: // debug? - if (!sub_8094F90()) - gPSSData->state = 2; + case 1: + if (!IsMenuLoading()) + gStorage->state = 2; break; case 2: - switch (sub_8094F94()) + switch (HandleMenuInput()) { - case -1: - case 0: + case MENU_B_PRESSED: + case MENU_TEXT_CANCEL: ClearBottomWindow(); - SetPSSCallback(Cb_MainPSS); + SetPokeStorageTask(Task_PokeStorageMain); break; - case 3: + case MENU_TEXT_MOVE: if (CanMovePartyMon()) - { - gPSSData->state = 3; - } + gStorage->state = 3; else { PlaySE(SE_SELECT); ClearBottomWindow(); - SetPSSCallback(Cb_MoveMon); + SetPokeStorageTask(Task_MoveMon); } break; - case 5: + case MENU_TEXT_PLACE: PlaySE(SE_SELECT); ClearBottomWindow(); - SetPSSCallback(Cb_PlaceMon); + SetPokeStorageTask(Task_PlaceMon); break; - case 4: + case MENU_TEXT_SHIFT: if (!CanShiftMon()) - { - gPSSData->state = 3; - } + gStorage->state = 3; else { PlaySE(SE_SELECT); ClearBottomWindow(); - SetPSSCallback(Cb_ShiftMon); + SetPokeStorageTask(Task_ShiftMon); } break; - case 2: + case MENU_TEXT_WITHDRAW: PlaySE(SE_SELECT); ClearBottomWindow(); - SetPSSCallback(Cb_WithdrawMon); + SetPokeStorageTask(Task_WithdrawMon); break; - case 1: + case MENU_TEXT_STORE: if (CanMovePartyMon()) - { - gPSSData->state = 3; - } - else if (ItemIsMail(gPSSData->displayMonItemId)) - { - gPSSData->state = 4; - } + gStorage->state = 3; + else if (ItemIsMail(gStorage->displayMonItemId)) + gStorage->state = 4; else { PlaySE(SE_SELECT); ClearBottomWindow(); - SetPSSCallback(Cb_DepositMenu); + SetPokeStorageTask(Task_DepositMenu); } break; - case 7: + case MENU_TEXT_RELEASE: if (CanMovePartyMon()) - { - gPSSData->state = 3; - } - else if (gPSSData->displayMonIsEgg) - { - gPSSData->state = 5; // Cannot release an Egg. - } - else if (ItemIsMail(gPSSData->displayMonItemId)) - { - gPSSData->state = 4; - } + gStorage->state = 3; + else if (gStorage->displayMonIsEgg) + gStorage->state = 5; + else if (ItemIsMail(gStorage->displayMonItemId)) + gStorage->state = 4; else { PlaySE(SE_SELECT); - SetPSSCallback(Cb_ReleaseMon); + SetPokeStorageTask(Task_ReleaseMon); } break; - case 6: + case MENU_TEXT_SUMMARY: PlaySE(SE_SELECT); - SetPSSCallback(Cb_ShowMonSummary); + SetPokeStorageTask(Task_ShowMonSummary); break; - case 8: + case MENU_TEXT_MARK: PlaySE(SE_SELECT); - SetPSSCallback(Cb_ShowMarkMenu); + SetPokeStorageTask(Task_ShowMarkMenu); break; - case 12: + case MENU_TEXT_TAKE: PlaySE(SE_SELECT); - SetPSSCallback(Cb_TakeItemForMoving); + SetPokeStorageTask(Task_TakeItemForMoving); break; - case 13: + case MENU_TEXT_GIVE: PlaySE(SE_SELECT); - SetPSSCallback(Cb_GiveMovingItemToMon); + SetPokeStorageTask(Task_GiveMovingItemToMon); break; - case 16: - SetPSSCallback(Cb_ItemToBag); + case MENU_TEXT_BAG: + SetPokeStorageTask(Task_ItemToBag); break; - case 15: - SetPSSCallback(Cb_SwitchSelectedItem); + case MENU_TEXT_SWITCH: + SetPokeStorageTask(Task_SwitchSelectedItem); break; - case 14: - SetPSSCallback(Cb_GiveItemFromBag); + case MENU_TEXT_GIVE2: + SetPokeStorageTask(Task_GiveItemFromBag); break; - case 17: - SetPSSCallback(Cb_ShowItemInfo); + case MENU_TEXT_INFO: + SetPokeStorageTask(Task_ShowItemInfo); break; } break; case 3: PlaySE(SE_FAILURE); - PrintStorageActionText(PC_TEXT_LAST_POKE); - gPSSData->state = 6; + PrintStorageMessage(MSG_LAST_POKE); + gStorage->state = 6; break; case 5: PlaySE(SE_FAILURE); - PrintStorageActionText(PC_TEXT_CANT_RELEASE_EGG); - gPSSData->state = 6; + PrintStorageMessage(MSG_CANT_RELEASE_EGG); + gStorage->state = 6; break; case 4: PlaySE(SE_FAILURE); - PrintStorageActionText(PC_TEXT_PLEASE_REMOVE_MAIL); - gPSSData->state = 6; + PrintStorageMessage(MSG_PLEASE_REMOVE_MAIL); + gStorage->state = 6; break; case 6: if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY)) { ClearBottomWindow(); - SetPSSCallback(Cb_MainPSS); + SetPokeStorageTask(Task_PokeStorageMain); } break; } } -static void Cb_MoveMon(u8 taskId) +static void Task_MoveMon(u8 taskId) { - switch (gPSSData->state) + switch (gStorage->state) { case 0: - InitMonPlaceChange(0); - gPSSData->state++; + InitMonPlaceChange(CHANGE_GRAB); + gStorage->state++; break; case 1: if (!DoMonPlaceChange()) { if (sInPartyMenu) - SetPSSCallback(Cb_HandleMovingMonFromParty); + SetPokeStorageTask(Task_HandleMovingMonFromParty); else - SetPSSCallback(Cb_MainPSS); + SetPokeStorageTask(Task_PokeStorageMain); } break; } } -static void Cb_PlaceMon(u8 taskId) +static void Task_PlaceMon(u8 taskId) { - switch (gPSSData->state) + switch (gStorage->state) { case 0: - sub_808FE54(1); - InitMonPlaceChange(1); - gPSSData->state++; + SetPokeStorageQuestLogEvent(1); + InitMonPlaceChange(CHANGE_PLACE); + gStorage->state++; break; case 1: if (!DoMonPlaceChange()) { if (sInPartyMenu) - SetPSSCallback(Cb_HandleMovingMonFromParty); + SetPokeStorageTask(Task_HandleMovingMonFromParty); else - SetPSSCallback(Cb_MainPSS); + SetPokeStorageTask(Task_PokeStorageMain); } break; } } -static void Cb_ShiftMon(u8 taskId) +static void Task_ShiftMon(u8 taskId) { - switch (gPSSData->state) + switch (gStorage->state) { case 0: - sub_808FE54(0); - InitMonPlaceChange(2); - gPSSData->state++; + SetPokeStorageQuestLogEvent(0); + InitMonPlaceChange(CHANGE_SHIFT); + gStorage->state++; break; case 1: if (!DoMonPlaceChange()) { - BoxSetMosaic(); - SetPSSCallback(Cb_MainPSS); + StartDisplayMonMosaic(); + SetPokeStorageTask(Task_PokeStorageMain); } break; } } -static void Cb_WithdrawMon(u8 taskId) +static void Task_WithdrawMon(u8 taskId) { - switch (gPSSData->state) + switch (gStorage->state) { case 0: if (CalculatePlayerPartyCount() == PARTY_SIZE) { - PrintStorageActionText(PC_TEXT_PARTY_FULL); - gPSSData->state = 1; + PrintStorageMessage(MSG_PARTY_FULL); + gStorage->state = 1; } else { - sub_8092B5C(); - InitMonPlaceChange(0); - gPSSData->state = 2; + SaveCursorPos(); + InitMonPlaceChange(CHANGE_GRAB); + gStorage->state = 2; } break; case 1: if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY)) { ClearBottomWindow(); - SetPSSCallback(Cb_MainPSS); + SetPokeStorageTask(Task_PokeStorageMain); } break; case 2: @@ -1145,137 +1186,137 @@ static void Cb_WithdrawMon(u8 taskId) { SetMovingMonPriority(1); SetUpDoShowPartyMenu(); - gPSSData->state++; + gStorage->state++; } break; case 3: if (!DoShowPartyMenu()) { - sub_808FE54(1); - InitMonPlaceChange(1); - gPSSData->state++; + SetPokeStorageQuestLogEvent(1); + InitMonPlaceChange(CHANGE_PLACE); + gStorage->state++; } break; case 4: if (!DoMonPlaceChange()) { - sub_808FAA8(); - gPSSData->state++; + UpdatePartySlotColors(); + gStorage->state++; } break; case 5: - SetPSSCallback(Cb_HidePartyPokemon); + SetPokeStorageTask(Task_HidePartyPokemon); break; } } -static void Cb_DepositMenu(u8 taskId) +static void Task_DepositMenu(u8 taskId) { u8 boxId; - switch (gPSSData->state) + switch (gStorage->state) { case 0: - PrintStorageActionText(PC_TEXT_DEPOSIT_IN_WHICH_BOX); - LoadChooseBoxMenuGfx(&gPSSData->field_1E5C, TAG_TILE_A, TAG_PAL_DAC7, 3, FALSE); - sub_808C940(gUnknown_20397B6); - gPSSData->state++; + PrintStorageMessage(MSG_DEPOSIT_IN_WHICH_BOX); + LoadChooseBoxMenuGfx(&gStorage->chooseBoxMenu, GFXTAG_CHOOSE_BOX_MENU_CENTER, PALTAG_MISC_1, 3, FALSE); + CreateChooseBoxMenuSprites(sDepositBoxId); + gStorage->state++; break; case 1: boxId = HandleBoxChooseSelectionInput(); - if (boxId == 200) - { - // no box chosen yet - } - else if (boxId == 201) + switch (boxId) { + case BOXID_NONE_CHOSEN: + break; + case BOXID_CANCELED: ClearBottomWindow(); - sub_808C950(); + DestroyChooseBoxMenuSprites(); FreeBoxSelectionPopupSpriteGfx(); - SetPSSCallback(Cb_MainPSS); - } - else - { + SetPokeStorageTask(Task_PokeStorageMain); + break; + default: if (TryStorePartyMonInBox(boxId)) { - gUnknown_20397B6 = boxId; - sub_808FE54(2); + sDepositBoxId = boxId; + SetPokeStorageQuestLogEvent(2); ClearBottomWindow(); - sub_808C950(); + DestroyChooseBoxMenuSprites(); FreeBoxSelectionPopupSpriteGfx(); - gPSSData->state = 2; + gStorage->state = 2; } else { - PrintStorageActionText(PC_TEXT_BOX_IS_FULL); - gPSSData->state = 4; + PrintStorageMessage(MSG_BOX_IS_FULL); + gStorage->state = 4; } + break; } break; case 2: CompactPartySlots(); - sub_80909F4(); - gPSSData->state++; + CompactPartySprites(); + gStorage->state++; break; case 3: - if (!sub_8090A60()) + if (GetNumPartySpritesCompacting() == 0) { - sub_8093174(); - BoxSetMosaic(); - sub_808FAA8(); - SetPSSCallback(Cb_MainPSS); + ResetSelectionAfterDeposit(); + StartDisplayMonMosaic(); + UpdatePartySlotColors(); + SetPokeStorageTask(Task_PokeStorageMain); } break; case 4: if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY)) { - PrintStorageActionText(PC_TEXT_DEPOSIT_IN_WHICH_BOX); - gPSSData->state = 1; + PrintStorageMessage(MSG_DEPOSIT_IN_WHICH_BOX); + gStorage->state = 1; } break; } } -static void Cb_ReleaseMon(u8 taskId) +static void Task_ReleaseMon(u8 taskId) { - switch (gPSSData->state) + switch (gStorage->state) { case 0: - PrintStorageActionText(PC_TEXT_RELEASE_POKE); + PrintStorageMessage(MSG_RELEASE_POKE); ShowYesNoWindow(1); - gPSSData->state++; + gStorage->state++; // fallthrough case 1: switch (Menu_ProcessInputNoWrapClearOnChoose()) { case MENU_B_PRESSED: - case 1: + case 1: ClearBottomWindow(); - SetPSSCallback(Cb_MainPSS); + SetPokeStorageTask(Task_PokeStorageMain); break; - case 0: + case 0: ClearBottomWindow(); InitCanReleaseMonVars(); - sub_8093194(); - gPSSData->state++; + InitReleaseMon(); + gStorage->state++; break; } break; case 2: RunCanReleaseMon(); - if (!sub_80931EC()) + if (!TryHideReleaseMon()) { - while (1) + while (TRUE) { - s8 r0 = RunCanReleaseMon(); - if (r0 == 1) + // keep checking until status is no longer RELEASE_MON_UNDETERMINED + s8 canReleaseStatus = RunCanReleaseMon(); + if (canReleaseStatus == RELEASE_MON_ALLOWED) { - gPSSData->state++; + gStorage->state++; break; } - else if (r0 == 0) + else if (canReleaseStatus == RELEASE_MON_NOT_ALLOWED) { - gPSSData->state = 8; // Can't release the mon. + gStorage->state = 8; // Can't release the mon. break; } } @@ -1283,15 +1324,15 @@ static void Cb_ReleaseMon(u8 taskId) break; case 3: ReleaseMon(); - RefreshCursorMonData(); - PrintStorageActionText(PC_TEXT_WAS_RELEASED); - gPSSData->state++; + RefreshDisplayMonData(); + PrintStorageMessage(MSG_WAS_RELEASED); + gStorage->state++; break; case 4: if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY)) { - PrintStorageActionText(PC_TEXT_BYE_BYE); - gPSSData->state++; + PrintStorageMessage(MSG_BYE_BYE); + gStorage->state++; } break; case 5: @@ -1301,267 +1342,262 @@ static void Cb_ReleaseMon(u8 taskId) if (sInPartyMenu) { CompactPartySlots(); - sub_80909F4(); - gPSSData->state++; + CompactPartySprites(); + gStorage->state++; } else - { - gPSSData->state = 7; - } + gStorage->state = 7; } break; case 6: - if (!sub_8090A60()) + if (GetNumPartySpritesCompacting() == 0) { - sub_8092F54(); - BoxSetMosaic(); - sub_808FAA8(); - gPSSData->state++; + DoTrySetDisplayMonData(); + StartDisplayMonMosaic(); + UpdatePartySlotColors(); + gStorage->state++; } break; case 7: - SetPSSCallback(Cb_MainPSS); + SetPokeStorageTask(Task_PokeStorageMain); break; case 8: - PrintStorageActionText(PC_TEXT_WAS_RELEASED); - gPSSData->state++; + // Start "can't release" sequence + PrintStorageMessage(MSG_WAS_RELEASED); + gStorage->state++; break; case 9: if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY)) { - PrintStorageActionText(PC_TEXT_SURPRISE); - gPSSData->state++; + PrintStorageMessage(MSG_SURPRISE); + gStorage->state++; } break; case 10: if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY)) { ClearBottomWindow(); - sub_8091114(); - gPSSData->state++; + DoReleaseMonComeBackAnim(); + gStorage->state++; } break; case 11: - if (!sub_8091150()) + if (!ResetReleaseMonSpritePtr()) { - sub_8093264(); - PrintStorageActionText(PC_TEXT_CAME_BACK); - gPSSData->state++; + TrySetCursorFistAnim(); + PrintStorageMessage(MSG_CAME_BACK); + gStorage->state++; } break; case 12: if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY)) { - PrintStorageActionText(PC_TEXT_WORRIED); - gPSSData->state++; + PrintStorageMessage(MSG_WORRIED); + gStorage->state++; } break; case 13: if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY)) { ClearBottomWindow(); - SetPSSCallback(Cb_MainPSS); + SetPokeStorageTask(Task_PokeStorageMain); } break; } } -static void Cb_ShowMarkMenu(u8 taskId) +static void Task_ShowMarkMenu(u8 taskId) { - switch (gPSSData->state) + switch (gStorage->state) { case 0: - PrintStorageActionText(PC_TEXT_MARK_POKE); - gPSSData->markMenu.markings = gPSSData->displayMonMarkings; - OpenMonMarkingsMenu(gPSSData->displayMonMarkings, 0xb0, 0x10); - gPSSData->state++; + PrintStorageMessage(MSG_MARK_POKE); + gStorage->markMenu.markings = gStorage->displayMonMarkings; + OpenMonMarkingsMenu(gStorage->displayMonMarkings, 176, 16); + gStorage->state++; break; case 1: if (!HandleMonMarkingsMenuInput()) { FreeMonMarkingsMenu(); ClearBottomWindow(); - SetMonMarkings(gPSSData->markMenu.markings); - RefreshCursorMonData(); - SetPSSCallback(Cb_MainPSS); + SetMonMarkings(gStorage->markMenu.markings); + RefreshDisplayMonData(); + SetPokeStorageTask(Task_PokeStorageMain); } break; } } -static void Cb_TakeItemForMoving(u8 taskId) +static void Task_TakeItemForMoving(u8 taskId) { - switch (gPSSData->state) + switch (gStorage->state) { case 0: - if (!ItemIsMail(gPSSData->displayMonItemId)) + if (!ItemIsMail(gStorage->displayMonItemId)) { ClearBottomWindow(); - gPSSData->state++; + gStorage->state++; } else - { - SetPSSCallback(Cb_PrintCantStoreMail); - } + SetPokeStorageTask(Task_PrintCantStoreMail); break; case 1: - sub_8094D14(2); + StartCursorAnim(CURSOR_ANIM_OPEN); Item_FromMonToMoving(sInPartyMenu ? CURSOR_AREA_IN_PARTY : CURSOR_AREA_IN_BOX, GetBoxCursorPosition()); - gPSSData->state++; + gStorage->state++; break; case 2: - if (!sub_809610C()) + if (!IsItemIconAnimActive()) { - sub_8094D14(3); + StartCursorAnim(CURSOR_ANIM_FIST); ClearBottomWindow(); - sub_8092F54(); - PrintCursorMonInfo(); - gPSSData->state++; + DoTrySetDisplayMonData(); + PrintDisplayMonInfo(); + gStorage->state++; } break; case 3: if (!IsDma3ManagerBusyWithBgCopy()) - SetPSSCallback(Cb_MainPSS); + SetPokeStorageTask(Task_PokeStorageMain); break; } } -static void Cb_GiveMovingItemToMon(u8 taskId) +static void Task_GiveMovingItemToMon(u8 taskId) { - switch (gPSSData->state) + switch (gStorage->state) { case 0: ClearBottomWindow(); - gPSSData->state++; + gStorage->state++; break; case 1: - sub_8094D14(2); + StartCursorAnim(CURSOR_ANIM_OPEN); Item_GiveMovingToMon(sInPartyMenu ? CURSOR_AREA_IN_PARTY : CURSOR_AREA_IN_BOX, GetBoxCursorPosition()); - gPSSData->state++; + gStorage->state++; break; case 2: - if (!sub_809610C()) + if (!IsItemIconAnimActive()) { - sub_8094D14(0); - sub_8092F54(); - PrintCursorMonInfo(); - PrintStorageActionText(PC_TEXT_ITEM_IS_HELD); - gPSSData->state++; + StartCursorAnim(CURSOR_ANIM_BOUNCE); + DoTrySetDisplayMonData(); + PrintDisplayMonInfo(); + PrintStorageMessage(MSG_ITEM_IS_HELD); + gStorage->state++; } break; case 3: if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY)) { ClearBottomWindow(); - gPSSData->state++; + gStorage->state++; } break; case 4: if (!IsDma3ManagerBusyWithBgCopy()) - SetPSSCallback(Cb_MainPSS); + SetPokeStorageTask(Task_PokeStorageMain); break; } } -static void Cb_ItemToBag(u8 taskId) +static void Task_ItemToBag(u8 taskId) { - switch (gPSSData->state) + switch (gStorage->state) { case 0: - if (!AddBagItem(gPSSData->displayMonItemId, 1)) + if (!AddBagItem(gStorage->displayMonItemId, 1)) { PlaySE(SE_FAILURE); - PrintStorageActionText(PC_TEXT_BAG_FULL); - gPSSData->state = 3; + PrintStorageMessage(MSG_BAG_FULL); + gStorage->state = 3; } else { PlaySE(SE_SELECT); Item_TakeMons(sInPartyMenu ? CURSOR_AREA_IN_PARTY : CURSOR_AREA_IN_BOX, GetBoxCursorPosition()); - gPSSData->state = 1; + gStorage->state = 1; } break; case 1: - if (!sub_809610C()) + if (!IsItemIconAnimActive()) { - PrintStorageActionText(PC_TEXT_PLACED_IN_BAG); - gPSSData->state = 2; + PrintStorageMessage(MSG_PLACED_IN_BAG); + gStorage->state = 2; } break; case 2: if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY)) { ClearBottomWindow(); - sub_8092F54(); - PrintCursorMonInfo(); - gPSSData->state = 4; + DoTrySetDisplayMonData(); + PrintDisplayMonInfo(); + gStorage->state = 4; } break; case 4: if (!IsDma3ManagerBusyWithBgCopy()) - SetPSSCallback(Cb_MainPSS); + SetPokeStorageTask(Task_PokeStorageMain); break; case 3: if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY)) { ClearBottomWindow(); - SetPSSCallback(Cb_MainPSS); + SetPokeStorageTask(Task_PokeStorageMain); } break; } } -static void Cb_SwitchSelectedItem(u8 taskId) +static void Task_SwitchSelectedItem(u8 taskId) { - switch (gPSSData->state) + switch (gStorage->state) { case 0: - if (!ItemIsMail(gPSSData->displayMonItemId)) + if (!ItemIsMail(gStorage->displayMonItemId)) { ClearBottomWindow(); - gPSSData->state++; + gStorage->state++; } else - { - SetPSSCallback(Cb_PrintCantStoreMail); - } + SetPokeStorageTask(Task_PrintCantStoreMail); break; case 1: - sub_8094D14(2); + StartCursorAnim(CURSOR_ANIM_OPEN); Item_SwitchMonsWithMoving(sInPartyMenu ? CURSOR_AREA_IN_PARTY : CURSOR_AREA_IN_BOX, GetBoxCursorPosition()); - gPSSData->state++; + gStorage->state++; break; case 2: - if (!sub_809610C()) + if (!IsItemIconAnimActive()) { - sub_8094D14(3); - sub_8092F54(); - PrintCursorMonInfo(); - PrintStorageActionText(PC_TEXT_CHANGED_TO_ITEM); - gPSSData->state++; + StartCursorAnim(CURSOR_ANIM_FIST); + DoTrySetDisplayMonData(); + PrintDisplayMonInfo(); + PrintStorageMessage(MSG_CHANGED_TO_ITEM); + gStorage->state++; } break; case 3: if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY)) { ClearBottomWindow(); - gPSSData->state++; + gStorage->state++; } break; case 4: if (!IsDma3ManagerBusyWithBgCopy()) - SetPSSCallback(Cb_MainPSS); + SetPokeStorageTask(Task_PokeStorageMain); break; } } -static void Cb_ShowItemInfo(u8 taskId) +static void Task_ShowItemInfo(u8 taskId) { - switch (gPSSData->state) + switch (gStorage->state) { case 0: ClearBottomWindow(); - gPSSData->state++; + gStorage->state++; break; case 1: if (!IsDma3ManagerBusyWithBgCopy()) @@ -1569,44 +1605,44 @@ static void Cb_ShowItemInfo(u8 taskId) PlaySE(SE_WIN_OPEN); PrintItemDescription(); InitItemInfoWindow(); - gPSSData->state++; + gStorage->state++; } break; case 2: if (!UpdateItemInfoWindowSlideIn()) - gPSSData->state++; + gStorage->state++; break; case 3: if (!IsDma3ManagerBusyWithBgCopy()) - gPSSData->state++; + gStorage->state++; break; case 4: if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY)) { PlaySE(SE_WIN_OPEN); - gPSSData->state++; + gStorage->state++; } break; case 5: if (!UpdateItemInfoWindowSlideOut()) - gPSSData->state++; + gStorage->state++; break; case 6: if (!IsDma3ManagerBusyWithBgCopy()) - SetPSSCallback(Cb_MainPSS); + SetPokeStorageTask(Task_PokeStorageMain); break; } } -static void Cb_CloseBoxWhileHoldingItem(u8 taskId) +static void Task_CloseBoxWhileHoldingItem(u8 taskId) { - switch (gPSSData->state) + switch (gStorage->state) { case 0: PlaySE(SE_SELECT); - PrintStorageActionText(PC_TEXT_PUT_IN_BAG); + PrintStorageMessage(MSG_PUT_IN_BAG); ShowYesNoWindow(0); - gPSSData->state = 1; + gStorage->state = 1; break; case 1: switch (Menu_ProcessInputNoWrapClearOnChoose()) @@ -1614,18 +1650,18 @@ static void Cb_CloseBoxWhileHoldingItem(u8 taskId) case MENU_B_PRESSED: case 1: ClearBottomWindow(); - SetPSSCallback(Cb_MainPSS); + SetPokeStorageTask(Task_PokeStorageMain); break; case 0: - if (AddBagItem(gPSSData->movingItemId, 1) == TRUE) + if (AddBagItem(gStorage->movingItemId, 1) == TRUE) { ClearBottomWindow(); - gPSSData->state = 3; + gStorage->state = 3; } else { - PrintStorageActionText(PC_TEXT_BAG_FULL); - gPSSData->state = 2; + PrintStorageMessage(MSG_BAG_FULL); + gStorage->state = 2; } break; } @@ -1634,167 +1670,170 @@ static void Cb_CloseBoxWhileHoldingItem(u8 taskId) if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY)) { ClearBottomWindow(); - gPSSData->state = 5; + gStorage->state = 5; } break; case 3: - sub_8096088(); - gPSSData->state = 4; + MoveItemFromCursorToBag(); + gStorage->state = 4; break; case 4: - if (!sub_809610C()) + if (!IsItemIconAnimActive()) { - sub_8094D14(0); - SetPSSCallback(Cb_MainPSS); + StartCursorAnim(CURSOR_ANIM_BOUNCE); + SetPokeStorageTask(Task_PokeStorageMain); } break; case 5: if (!IsDma3ManagerBusyWithBgCopy()) - SetPSSCallback(Cb_MainPSS); + SetPokeStorageTask(Task_PokeStorageMain); break; } } -static void Cb_HandleMovingMonFromParty(u8 taskId) +static void Task_HandleMovingMonFromParty(u8 taskId) { - switch (gPSSData->state) + switch (gStorage->state) { case 0: CompactPartySlots(); - sub_80909F4(); - gPSSData->state++; + CompactPartySprites(); + gStorage->state++; break; case 1: - if (!sub_8090A60()) + if (GetNumPartySpritesCompacting() == 0) { - sub_808FAA8(); - SetPSSCallback(Cb_MainPSS); + UpdatePartySlotColors(); + SetPokeStorageTask(Task_PokeStorageMain); } break; } } -static void Cb_PrintCantStoreMail(u8 taskId) +static void Task_PrintCantStoreMail(u8 taskId) { - switch (gPSSData->state) + switch (gStorage->state) { case 0: - PrintStorageActionText(PC_TEXT_CANT_STORE_MAIL); - gPSSData->state++; + PrintStorageMessage(MSG_CANT_STORE_MAIL); + gStorage->state++; break; case 1: if (!IsDma3ManagerBusyWithBgCopy()) - gPSSData->state++; + gStorage->state++; break; case 2: if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY)) { ClearBottomWindow(); - gPSSData->state++; + gStorage->state++; } break; case 3: if (!IsDma3ManagerBusyWithBgCopy()) - SetPSSCallback(Cb_MainPSS); + SetPokeStorageTask(Task_PokeStorageMain); break; } } -static void Cb_HandleBoxOptions(u8 taskId) +static void Task_HandleBoxOptions(u8 taskId) { - switch (gPSSData->state) + switch (gStorage->state) { case 0: - PrintStorageActionText(PC_TEXT_WHAT_YOU_DO); + PrintStorageMessage(MSG_WHAT_YOU_DO); AddMenu(); - gPSSData->state++; + gStorage->state++; break; case 1: - if (sub_8094F90()) + if (IsMenuLoading()) return; - gPSSData->state++; + gStorage->state++; case 2: - switch (sub_8094F94()) + switch (HandleMenuInput()) { - case -1: - case 0: + case MENU_B_PRESSED: + case MENU_TEXT_CANCEL: AnimateBoxScrollArrows(TRUE); ClearBottomWindow(); - SetPSSCallback(Cb_MainPSS); + SetPokeStorageTask(Task_PokeStorageMain); break; - case 11: + case MENU_TEXT_NAME: PlaySE(SE_SELECT); - SetPSSCallback(Cb_NameBox); + SetPokeStorageTask(Task_NameBox); break; - case 10: + case MENU_TEXT_WALLPAPER: PlaySE(SE_SELECT); ClearBottomWindow(); - SetPSSCallback(Cb_HandleWallpapers); + SetPokeStorageTask(Task_HandleWallpapers); break; - case 9: + case MENU_TEXT_JUMP: PlaySE(SE_SELECT); ClearBottomWindow(); - SetPSSCallback(Cb_JumpBox); + SetPokeStorageTask(Task_JumpBox); break; } break; } } -static void Cb_HandleWallpapers(u8 taskId) +static void Task_HandleWallpapers(u8 taskId) { - switch (gPSSData->state) + switch (gStorage->state) { case 0: AddWallpaperSetsMenu(); - PrintStorageActionText(PC_TEXT_PICK_A_THEME); - gPSSData->state++; + PrintStorageMessage(MSG_PICK_A_THEME); + gStorage->state++; break; case 1: - if (!sub_8094F90()) - gPSSData->state++; + if (!IsMenuLoading()) + gStorage->state++; break; case 2: - gPSSData->wallpaperSetId = sub_8094F94(); - switch (gPSSData->wallpaperSetId) + gStorage->wallpaperSetId = HandleMenuInput(); + switch (gStorage->wallpaperSetId) { - case -1: + case MENU_B_PRESSED: AnimateBoxScrollArrows(TRUE); ClearBottomWindow(); - SetPSSCallback(Cb_MainPSS); + SetPokeStorageTask(Task_PokeStorageMain); break; - case 18 ... 21: + case MENU_TEXT_SCENERY_1: + case MENU_TEXT_SCENERY_2: + case MENU_TEXT_SCENERY_3: + case MENU_TEXT_ETCETERA: PlaySE(SE_SELECT); - sub_8095024(); - gPSSData->wallpaperSetId -= 18; - gPSSData->state++; + RemoveMenu(); + gStorage->wallpaperSetId -= MENU_TEXT_SCENERY_1; + gStorage->state++; break; } break; case 3: if (!IsDma3ManagerBusyWithBgCopy()) { - AddWallpapersMenu(gPSSData->wallpaperSetId); - PrintStorageActionText(PC_TEXT_PICK_A_WALLPAPER); - gPSSData->state++; + AddWallpapersMenu(gStorage->wallpaperSetId); + PrintStorageMessage(MSG_PICK_A_WALLPAPER); + gStorage->state++; } break; case 4: - gPSSData->wallpaperId = sub_8094F94(); - switch (gPSSData->wallpaperId) + gStorage->wallpaperId = HandleMenuInput(); + switch (gStorage->wallpaperId) { case MENU_NOTHING_CHOSEN: break; case MENU_B_PRESSED: ClearBottomWindow(); - gPSSData->state = 0; + gStorage->state = 0; break; default: PlaySE(SE_SELECT); ClearBottomWindow(); - gPSSData->wallpaperId -= 22; - SetWallpaperForCurrentBox(gPSSData->wallpaperId); - gPSSData->state++; + gStorage->wallpaperId -= MENU_TEXT_FOREST; + SetWallpaperForCurrentBox(gStorage->wallpaperId); + gStorage->state++; break; } break; @@ -1802,145 +1841,141 @@ static void Cb_HandleWallpapers(u8 taskId) if (!DoWallpaperGfxChange()) { AnimateBoxScrollArrows(TRUE); - SetPSSCallback(Cb_MainPSS); + SetPokeStorageTask(Task_PokeStorageMain); } break; } } -static void Cb_JumpBox(u8 taskId) +static void Task_JumpBox(u8 taskId) { - switch (gPSSData->state) + switch (gStorage->state) { case 0: - PrintStorageActionText(PC_TEXT_JUMP_TO_WHICH_BOX); - LoadChooseBoxMenuGfx(&gPSSData->field_1E5C, TAG_TILE_A, TAG_PAL_DAC7, 3, FALSE); - sub_808C940(StorageGetCurrentBox()); - gPSSData->state++; + PrintStorageMessage(MSG_JUMP_TO_WHICH_BOX); + LoadChooseBoxMenuGfx(&gStorage->chooseBoxMenu, GFXTAG_CHOOSE_BOX_MENU_CENTER, PALTAG_MISC_1, 3, FALSE); + CreateChooseBoxMenuSprites(StorageGetCurrentBox()); + gStorage->state++; break; case 1: - gPSSData->newCurrBoxId = HandleBoxChooseSelectionInput(); - switch (gPSSData->newCurrBoxId) + gStorage->newCurrBoxId = HandleBoxChooseSelectionInput(); + switch (gStorage->newCurrBoxId) { - case 200: + case BOXID_NONE_CHOSEN: break; default: ClearBottomWindow(); - sub_808C950(); + DestroyChooseBoxMenuSprites(); FreeBoxSelectionPopupSpriteGfx(); - if (gPSSData->newCurrBoxId == 201 || gPSSData->newCurrBoxId == StorageGetCurrentBox()) + if (gStorage->newCurrBoxId == BOXID_CANCELED || gStorage->newCurrBoxId == StorageGetCurrentBox()) { AnimateBoxScrollArrows(TRUE); - SetPSSCallback(Cb_MainPSS); + SetPokeStorageTask(Task_PokeStorageMain); } else - { - gPSSData->state++; - } + gStorage->state++; break; } break; case 2: - SetUpScrollToBox(gPSSData->newCurrBoxId); - gPSSData->state++; + SetUpScrollToBox(gStorage->newCurrBoxId); + gStorage->state++; break; case 3: if (!ScrollToBox()) { - SetCurrentBox(gPSSData->newCurrBoxId); - SetPSSCallback(Cb_MainPSS); + SetCurrentBox(gStorage->newCurrBoxId); + SetPokeStorageTask(Task_PokeStorageMain); } break; } } -static void Cb_NameBox(u8 taskId) +static void Task_NameBox(u8 taskId) { - switch (gPSSData->state) + switch (gStorage->state) { case 0: - sub_8093630(); + SaveMovingMon(); BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 16, RGB_BLACK); - gPSSData->state++; + gStorage->state++; break; case 1: if (!UpdatePaletteFade()) { - sWhichToReshow = 1; - gPSSData->screenChangeType = SCREEN_CHANGE_NAME_BOX; - SetPSSCallback(Cb_ChangeScreen); + sWhichToReshow = SCREEN_CHANGE_NAME_BOX - 1; + gStorage->screenChangeType = SCREEN_CHANGE_NAME_BOX; + SetPokeStorageTask(Task_ChangeScreen); } break; } } -static void Cb_ShowMonSummary(u8 taskId) +static void Task_ShowMonSummary(u8 taskId) { - switch (gPSSData->state) + switch (gStorage->state) { case 0: - sub_80936B8(); + InitSummaryScreenData(); BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 16, RGB_BLACK); - gPSSData->state++; + gStorage->state++; break; case 1: if (!UpdatePaletteFade()) { - sWhichToReshow = 0; - gPSSData->screenChangeType = SCREEN_CHANGE_SUMMARY_SCREEN; - SetPSSCallback(Cb_ChangeScreen); + sWhichToReshow = SCREEN_CHANGE_SUMMARY_SCREEN - 1; + gStorage->screenChangeType = SCREEN_CHANGE_SUMMARY_SCREEN; + SetPokeStorageTask(Task_ChangeScreen); } break; } } -static void Cb_GiveItemFromBag(u8 taskId) +static void Task_GiveItemFromBag(u8 taskId) { - switch (gPSSData->state) + switch (gStorage->state) { case 0: BeginNormalPaletteFade(PALETTES_ALL, 0, 0, 16, RGB_BLACK); - gPSSData->state++; + gStorage->state++; break; case 1: if (!UpdatePaletteFade()) { - sWhichToReshow = 2; - gPSSData->screenChangeType = SCREEN_CHANGE_ITEM_FROM_BAG; - SetPSSCallback(Cb_ChangeScreen); + sWhichToReshow = SCREEN_CHANGE_ITEM_FROM_BAG - 1; + gStorage->screenChangeType = SCREEN_CHANGE_ITEM_FROM_BAG; + SetPokeStorageTask(Task_ChangeScreen); } break; } } -static void Cb_OnCloseBoxPressed(u8 taskId) +static void Task_OnCloseBoxPressed(u8 taskId) { - switch (gPSSData->state) + switch (gStorage->state) { case 0: if (IsMonBeingMoved()) { PlaySE(SE_FAILURE); - PrintStorageActionText(PC_TEXT_HOLDING_POKE); - gPSSData->state = 1; + PrintStorageMessage(MSG_HOLDING_POKE); + gStorage->state = 1; } else if (IsActiveItemMoving()) - { - SetPSSCallback(Cb_CloseBoxWhileHoldingItem); - } + SetPokeStorageTask(Task_CloseBoxWhileHoldingItem); else { PlaySE(SE_SELECT); - PrintStorageActionText(PC_TEXT_EXIT_BOX); + PrintStorageMessage(MSG_EXIT_BOX); ShowYesNoWindow(0); - gPSSData->state = 2; + gStorage->state = 2; } break; case 1: if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY)) { ClearBottomWindow(); - SetPSSCallback(Cb_MainPSS); + SetPokeStorageTask(Task_PokeStorageMain); } break; case 2: @@ -1949,59 +1984,57 @@ static void Cb_OnCloseBoxPressed(u8 taskId) case MENU_B_PRESSED: case 1: ClearBottomWindow(); - SetPSSCallback(Cb_MainPSS); + SetPokeStorageTask(Task_PokeStorageMain); break; case 0: PlaySE(SE_PC_OFF); ClearBottomWindow(); - gPSSData->state++; + gStorage->state++; break; } break; case 3: BeginPCScreenEffect_TurnOff(20, 0, 1); - gPSSData->state++; + gStorage->state++; break; case 4: if (!IsPCScreenEffectRunning_TurnOff()) { - sub_808FF70(); + UpdateBoxToSendMons(); gPlayerPartyCount = CalculatePlayerPartyCount(); - gPSSData->screenChangeType = SCREEN_CHANGE_EXIT_BOX; - SetPSSCallback(Cb_ChangeScreen); + gStorage->screenChangeType = SCREEN_CHANGE_EXIT_BOX; + SetPokeStorageTask(Task_ChangeScreen); } break; } } -static void Cb_OnBPressed(u8 taskId) +static void Task_OnBPressed(u8 taskId) { - switch (gPSSData->state) + switch (gStorage->state) { case 0: if (IsMonBeingMoved()) { PlaySE(SE_FAILURE); - PrintStorageActionText(PC_TEXT_HOLDING_POKE); - gPSSData->state = 1; + PrintStorageMessage(MSG_HOLDING_POKE); + gStorage->state = 1; } else if (IsActiveItemMoving()) - { - SetPSSCallback(Cb_CloseBoxWhileHoldingItem); - } + SetPokeStorageTask(Task_CloseBoxWhileHoldingItem); else { PlaySE(SE_SELECT); - PrintStorageActionText(PC_TEXT_CONTINUE_BOX); + PrintStorageMessage(MSG_CONTINUE_BOX); ShowYesNoWindow(0); - gPSSData->state = 2; + gStorage->state = 2; } break; case 1: if (JOY_NEW(A_BUTTON | B_BUTTON | DPAD_ANY)) { ClearBottomWindow(); - SetPSSCallback(Cb_MainPSS); + SetPokeStorageTask(Task_PokeStorageMain); } break; case 2: @@ -2009,65 +2042,65 @@ static void Cb_OnBPressed(u8 taskId) { case 0: ClearBottomWindow(); - SetPSSCallback(Cb_MainPSS); + SetPokeStorageTask(Task_PokeStorageMain); break; case 1: case MENU_B_PRESSED: PlaySE(SE_PC_OFF); ClearBottomWindow(); - gPSSData->state++; + gStorage->state++; break; } break; case 3: BeginPCScreenEffect_TurnOff(20, 0, 0); - gPSSData->state++; + gStorage->state++; break; case 4: if (!IsPCScreenEffectRunning_TurnOff()) { - sub_808FF70(); + UpdateBoxToSendMons(); gPlayerPartyCount = CalculatePlayerPartyCount(); - gPSSData->screenChangeType = SCREEN_CHANGE_EXIT_BOX; - SetPSSCallback(Cb_ChangeScreen); + gStorage->screenChangeType = SCREEN_CHANGE_EXIT_BOX; + SetPokeStorageTask(Task_ChangeScreen); } break; } } -static void Cb_ChangeScreen(u8 taskId) +static void Task_ChangeScreen(u8 taskId) { - struct Pokemon * partyMon; - u8 mode, monIndex, maxMonIndex; - u8 screenChangeType = gPSSData->screenChangeType; + struct Pokemon *party; + u8 mode, cursorPos, lastIndex; + u8 screenChangeType = gStorage->screenChangeType; - if (gPSSData->boxOption == OPTION_MOVE_ITEMS && IsActiveItemMoving() == TRUE) - gUnknown_20397BA = GetMovingItem(); + if (gStorage->boxOption == OPTION_MOVE_ITEMS && IsActiveItemMoving() == TRUE) + sMovingItemId = GetMovingItem(); else - gUnknown_20397BA = ITEM_NONE; + sMovingItemId = ITEM_NONE; switch (screenChangeType) { case SCREEN_CHANGE_EXIT_BOX: default: - FreePSSData(); + FreePokeStorageData(); SetMainCallback2(CB2_ExitPokeStorage); break; case SCREEN_CHANGE_SUMMARY_SCREEN: - partyMon = gPSSData->field_218C.mon; - monIndex = gPSSData->field_2187; - maxMonIndex = gPSSData->field_2186; - mode = gPSSData->summaryScreenMode; - FreePSSData(); - ShowPokemonSummaryScreen(partyMon, monIndex, maxMonIndex, Cb2_ReturnToPSS, mode); + party = gStorage->summaryMonPtr.mon; + cursorPos = gStorage->summaryCursorPos; + lastIndex = gStorage->summaryLastIndex; + mode = gStorage->summaryScreenMode; + FreePokeStorageData(); + ShowPokemonSummaryScreen(party, cursorPos, lastIndex, CB2_ReturnToPokeStorage, mode); break; case SCREEN_CHANGE_NAME_BOX: - FreePSSData(); - DoNamingScreen(NAMING_SCREEN_BOX, GetBoxNamePtr(StorageGetCurrentBox()), 0, 0, 0, Cb2_ReturnToPSS); + FreePokeStorageData(); + DoNamingScreen(NAMING_SCREEN_BOX, GetBoxNamePtr(StorageGetCurrentBox()), 0, 0, 0, CB2_ReturnToPokeStorage); break; case SCREEN_CHANGE_ITEM_FROM_BAG: - FreePSSData(); - GoToBagMenu(ITEMMENULOCATION_PCBOX, OPEN_BAG_ITEMS, Cb2_ReturnToPSS); + FreePokeStorageData(); + GoToBagMenu(ITEMMENULOCATION_PCBOX, OPEN_BAG_ITEMS, CB2_ReturnToPokeStorage); break; } @@ -2091,18 +2124,14 @@ static void GiveChosenBagItem(void) } } -static void FreePSSData(void) +static void FreePokeStorageData(void) { - FreeBoxPartyPokemonDropdowns(); - sub_80950A4(); - FREE_AND_SET_NULL(gPSSData); + TilemapUtil_Free(); + MultiMove_Free(); + FREE_AND_SET_NULL(gStorage); FreeAllWindowBuffers(); } -// ****************************************************************** -// Graphics util -// ****************************************************************** - static void SetScrollingBackground(void) { SetGpuReg(REG_OFFSET_BG3CNT, BGCNT_PRIORITY(3) | BGCNT_CHARBASE(3) | BGCNT_16COLOR | BGCNT_SCREENBASE(31)); @@ -2116,59 +2145,55 @@ static void ScrollBackground(void) ChangeBgY(3, 128, 2); } -static void LoadPSSMenuGfx(void) +static void LoadPokeStorageMenuGfx(void) { - InitBgsFromTemplates(0, gUnknown_83CEA50, NELEMS(gUnknown_83CEA50)); - DecompressAndLoadBgGfxUsingHeap(1, gPSSMenu_Gfx, 0, 0, 0); - LZ77UnCompWram(gUnknown_83CE5FC, gPSSData->field_5AC4); - SetBgTilemapBuffer(1, gPSSData->field_5AC4); + InitBgsFromTemplates(0, sBgTemplates, ARRAY_COUNT(sBgTemplates)); + DecompressAndLoadBgGfxUsingHeap(1, gPokeStorageMenu_Gfx, 0, 0, 0); + LZ77UnCompWram(sMenu_Tilemap, gStorage->menuTilemapBuffer); + SetBgTilemapBuffer(1, gStorage->menuTilemapBuffer); ShowBg(1); ScheduleBgCopyTilemapToVram(1); } -static bool8 InitPSSWindows(void) +static bool8 InitPokeStorageWindows(void) { - if (!InitWindows(gUnknown_83CEA30)) - { + if (!InitWindows(sWindowTemplates)) return FALSE; - } - else - { - DeactivateAllTextPrinters(); - return TRUE; - } + + DeactivateAllTextPrinters(); + return TRUE; } -static void LoadWaveformSpritePalette(void) +static void LoadsMiscSpritePalette(void) { - LoadSpritePalette(&sWaveformSpritePalette); + LoadSpritePalette(&sMiscSpritePalette); } -static void sub_808F078(void) +static void InitPalettesAndSprites(void) { - LoadPalette(gUnknown_8E9C3F8, 0, 0x20); - LoadPalette(gUnknown_8E9C418, 0x20, 0x20); - LoadPalette(gUnknown_83CEA10, 0xF0, 0x20); - if (gPSSData->boxOption != OPTION_MOVE_ITEMS) - LoadPalette(gUnknown_83CE738, 0x30, 0x20); + LoadPalette(gPokeStorageInterface_Pal, 0, 0x20); + LoadPalette(gPokeStorageInterface_NoDisplayMon_Pal, 0x20, 0x20); + LoadPalette(sTextWindows_Pal, 0xF0, 0x20); + if (gStorage->boxOption != OPTION_MOVE_ITEMS) + LoadPalette(sScrollingBg_Pal, 0x30, sizeof(sScrollingBg_Pal)); else - LoadPalette(gUnknown_83CE758, 0x30, 0x20); + LoadPalette(sScrollingBgMoveItems_Pal, 0x30, sizeof(sScrollingBgMoveItems_Pal)); SetGpuReg(REG_OFFSET_BG1CNT, BGCNT_PRIORITY(1) | BGCNT_CHARBASE(1) | BGCNT_16COLOR | BGCNT_SCREENBASE(30)); - LoadCursorMonSprite(); - PSS_CreateMonMarkingSprite(); + CreateDisplayMonSprite(); + CreateMarkingComboSprite(); CreateWaveformSprites(); - RefreshCursorMonData(); + RefreshDisplayMonData(); } -static void PSS_CreateMonMarkingSprite(void) +static void CreateMarkingComboSprite(void) { - gPSSData->markingComboSprite = CreateMonMarkingComboSprite(TAG_TILE_10, TAG_PAL_DAC8, NULL); - gPSSData->markingComboSprite->oam.priority = 1; - gPSSData->markingComboSprite->subpriority = 1; - gPSSData->markingComboSprite->x = 40; - gPSSData->markingComboSprite->y = 150; - gPSSData->markingComboTilesPtr = (void *)OBJ_VRAM0 + 32 * GetSpriteTileStartByTag(TAG_TILE_10); + gStorage->markingComboSprite = CreateMonMarkingComboSprite(GFXTAG_MARKING_COMBO, PALTAG_MARKING_COMBO, NULL); + gStorage->markingComboSprite->oam.priority = 1; + gStorage->markingComboSprite->subpriority = 1; + gStorage->markingComboSprite->x = 40; + gStorage->markingComboSprite->y = 150; + gStorage->markingComboTilesPtr = (void *)OBJ_VRAM0 + 32 * GetSpriteTileStartByTag(GFXTAG_MARKING_COMBO); } static void CreateWaveformSprites(void) @@ -2180,37 +2205,37 @@ static void CreateWaveformSprites(void) for (i = 0; i < 2; i++) { u8 spriteId = CreateSprite(&sSpriteTemplate_Waveform, i * 63 + 8, 9, 2); - gPSSData->waveformSprites[i] = &gSprites[spriteId]; + gStorage->waveformSprites[i] = &gSprites[spriteId]; } } -static void RefreshCursorMonData(void) +static void RefreshDisplayMonData(void) { - LoadCursorMonGfx(gPSSData->displayMonSpecies, gPSSData->displayMonPersonality); - PrintCursorMonInfo(); - sub_808F5E8(); + LoadDisplayMonGfx(gStorage->displayMonSpecies, gStorage->displayMonPersonality); + PrintDisplayMonInfo(); + UpdateWaveformAnimation(); ScheduleBgCopyTilemapToVram(0); } -static void BoxSetMosaic(void) +static void StartDisplayMonMosaic(void) { - RefreshCursorMonData(); - if (gPSSData->cursorMonSprite) + RefreshDisplayMonData(); + if (gStorage->displayMonSprite) { - gPSSData->cursorMonSprite->oam.mosaic = TRUE; - gPSSData->cursorMonSprite->data[0] = 10; - gPSSData->cursorMonSprite->data[1] = 1; - gPSSData->cursorMonSprite->callback = SpriteCB_CursorMon_Mosaic; - SetGpuReg(REG_OFFSET_MOSAIC, (gPSSData->cursorMonSprite->data[0] << 12) | (gPSSData->cursorMonSprite->data[0] << 8)); + gStorage->displayMonSprite->oam.mosaic = TRUE; + gStorage->displayMonSprite->data[0] = 10; + gStorage->displayMonSprite->data[1] = 1; + gStorage->displayMonSprite->callback = SpriteCB_DisplayMonMosaic; + SetGpuReg(REG_OFFSET_MOSAIC, (gStorage->displayMonSprite->data[0] << 12) | (gStorage->displayMonSprite->data[0] << 8)); } } -static u8 BoxGetMosaic(void) +static u8 IsDisplayMonMosaicActive(void) { - return gPSSData->cursorMonSprite->oam.mosaic; + return gStorage->displayMonSprite->oam.mosaic; } -static void SpriteCB_CursorMon_Mosaic(struct Sprite *sprite) +static void SpriteCB_DisplayMonMosaic(struct Sprite *sprite) { sprite->data[0] -= sprite->data[1]; if (sprite->data[0] < 0) @@ -2223,22 +2248,22 @@ static void SpriteCB_CursorMon_Mosaic(struct Sprite *sprite) } } -static void LoadCursorMonSprite(void) +static void CreateDisplayMonSprite(void) { u16 i; u16 tileStart; u8 palSlot; u8 spriteId; - struct SpriteSheet sheet = {gPSSData->field_22C4, 0x800, TAG_TILE_2}; - struct SpritePalette palette = {gPSSData->field_2244, TAG_PAL_DAC6}; - struct SpriteTemplate template = sSpriteTemplate_CursorMon; + struct SpriteSheet sheet = {gStorage->tileBuffer, MON_PIC_SIZE, GFXTAG_DISPLAY_MON}; + struct SpritePalette palette = {gStorage->displayMonPalBuffer, PALTAG_DISPLAY_MON}; + struct SpriteTemplate template = sSpriteTemplate_DisplayMon; - for (i = 0; i < 0x800; i++) - gPSSData->field_22C4[i] = 0; + for (i = 0; i < MON_PIC_SIZE; i++) + gStorage->tileBuffer[i] = 0; for (i = 0; i < 0x10; i++) - gPSSData->field_2244[i] = 0; + gStorage->displayMonPalBuffer[i] = 0; - gPSSData->cursorMonSprite = NULL; + gStorage->displayMonSprite = NULL; do { @@ -2254,170 +2279,161 @@ static void LoadCursorMonSprite(void) if (spriteId == MAX_SPRITES) break; - gPSSData->cursorMonSprite = &gSprites[spriteId]; - gPSSData->field_223A = palSlot * 16 + 0x100; - gPSSData->field_223C = (void *)OBJ_VRAM0 + tileStart * 32; - } while (0); + gStorage->displayMonSprite = &gSprites[spriteId]; + gStorage->displayMonPalOffset = palSlot * 16 + 0x100; + gStorage->displayMonTilePtr = (void *)OBJ_VRAM0 + tileStart * 32; + } while (FALSE); - if (gPSSData->cursorMonSprite == NULL) + if (gStorage->displayMonSprite == NULL) { - FreeSpriteTilesByTag(TAG_TILE_2); - FreeSpritePaletteByTag(TAG_PAL_DAC6); + FreeSpriteTilesByTag(GFXTAG_DISPLAY_MON); + FreeSpritePaletteByTag(PALTAG_DISPLAY_MON); } } -static void LoadCursorMonGfx(u16 species, u32 pid) +static void LoadDisplayMonGfx(u16 species, u32 personality) { - if (gPSSData->cursorMonSprite == NULL) + if (gStorage->displayMonSprite == NULL) return; if (species != SPECIES_NONE) { - HandleLoadSpecialPokePic(&gMonFrontPicTable[species], gPSSData->field_22C4, species, pid); - LZ77UnCompWram(gPSSData->displayMonPalette, gPSSData->field_2244); - CpuCopy32(gPSSData->field_22C4, gPSSData->field_223C, 0x800); - LoadPalette(gPSSData->field_2244, gPSSData->field_223A, 0x20); - gPSSData->cursorMonSprite->invisible = FALSE; + HandleLoadSpecialPokePic(&gMonFrontPicTable[species], gStorage->tileBuffer, species, personality); + LZ77UnCompWram(gStorage->displayMonPalette, gStorage->displayMonPalBuffer); + CpuCopy32(gStorage->tileBuffer, gStorage->displayMonTilePtr, 0x800); + LoadPalette(gStorage->displayMonPalBuffer, gStorage->displayMonPalOffset, 0x20); + gStorage->displayMonSprite->invisible = FALSE; } else - { - gPSSData->cursorMonSprite->invisible = TRUE; - } + gStorage->displayMonSprite->invisible = TRUE; } -static void PrintCursorMonInfo(void) +static void PrintDisplayMonInfo(void) { u16 i; u16 y; FillWindowPixelBuffer(0, PIXEL_FILL(1)); - if (gPSSData->boxOption != OPTION_MOVE_ITEMS) + if (gStorage->boxOption != OPTION_MOVE_ITEMS) { for (i = 0, y = 0; i < 3; i++, y += 14) - { - AddTextPrinterParameterized(0, FONT_2, gPSSData->displayMonTexts[i], i == 2 ? 10 : 6, y, TEXT_SKIP_DRAW, NULL); - } - AddTextPrinterParameterized(0, FONT_0, gPSSData->displayMonTexts[3], 6, y + 2, TEXT_SKIP_DRAW, NULL); + AddTextPrinterParameterized(0, FONT_2, gStorage->displayMonTexts[i], i == 2 ? 10 : 6, y, TEXT_SKIP_DRAW, NULL); + + AddTextPrinterParameterized(0, FONT_0, gStorage->displayMonTexts[3], 6, y + 2, TEXT_SKIP_DRAW, NULL); } else { - AddTextPrinterParameterized(0, FONT_0, gPSSData->displayMonTexts[3], 6, 0, TEXT_SKIP_DRAW, NULL); + AddTextPrinterParameterized(0, FONT_0, gStorage->displayMonTexts[3], 6, 0, TEXT_SKIP_DRAW, NULL); for (i = 0, y = 15; i < 3; i++, y += 14) - { - AddTextPrinterParameterized(0, FONT_2, gPSSData->displayMonTexts[i], i == 2 ? 10 : 6, y, TEXT_SKIP_DRAW, NULL); - } + AddTextPrinterParameterized(0, FONT_2, gStorage->displayMonTexts[i], i == 2 ? 10 : 6, y, TEXT_SKIP_DRAW, NULL); } CopyWindowToVram(0, COPYWIN_GFX); - if (gPSSData->displayMonSpecies != SPECIES_NONE) + if (gStorage->displayMonSpecies != SPECIES_NONE) { - UpdateMonMarkingTiles(gPSSData->displayMonMarkings, gPSSData->markingComboTilesPtr); - gPSSData->markingComboSprite->invisible = FALSE; + UpdateMonMarkingTiles(gStorage->displayMonMarkings, gStorage->markingComboTilesPtr); + gStorage->markingComboSprite->invisible = FALSE; } else - { - gPSSData->markingComboSprite->invisible = TRUE; - } + gStorage->markingComboSprite->invisible = TRUE; } -static void sub_808F5E8(void) +static void UpdateWaveformAnimation(void) { u16 i; - if (gPSSData->displayMonSpecies != SPECIES_NONE) + if (gStorage->displayMonSpecies != SPECIES_NONE) { - SetBoxPartyPokemonDropdownMap2Rect(0, 0, 0, 8, 2); + TilemapUtil_SetRect(TILEMAP_PKMN_DATA, 0, 0, 8, 2); for (i = 0; i < 2; i++) - StartSpriteAnimIfDifferent(gPSSData->waveformSprites[i], i * 2 + 1); + StartSpriteAnimIfDifferent(gStorage->waveformSprites[i], i * 2 + 1); } else { - SetBoxPartyPokemonDropdownMap2Rect(0, 0, 2, 8, 2); + TilemapUtil_SetRect(TILEMAP_PKMN_DATA, 0, 2, 8, 2); for (i = 0; i < 2; i++) - StartSpriteAnim(gPSSData->waveformSprites[i], i * 2); + StartSpriteAnim(gStorage->waveformSprites[i], i * 2); } - CopyBoxPartyPokemonDropdownToBgTilemapBuffer(0); + TilemapUtil_Update(TILEMAP_PKMN_DATA); ScheduleBgCopyTilemapToVram(1); } -static void sub_808F68C(void) +static void InitSupplementalTilemaps(void) { - LZ77UnCompWram(gUnknown_8E9CAEC, gPSSData->partyMenuTilemapBuffer); - LoadPalette(gPSSMenu_Pal, 0x10, 0x20); - SetBoxPartyPokemonDropdownMap2(1, 1, gPSSData->partyMenuTilemapBuffer, 12, 22); - SetBoxPartyPokemonDropdownMap2(2, 1, gUnknown_83CE778, 9, 4); - SetBoxPartyPokemonDropdownMap2Pos(1, 10, 0); - SetBoxPartyPokemonDropdownMap2Pos(2, 21, 0); - sub_808F9FC(); + LZ77UnCompWram(gPokeStoragePartyMenu_Tilemap, gStorage->partyMenuTilemapBuffer); + LoadPalette(gPokeStoragePartyMenu_Pal, 0x10, 0x20); + TilemapUtil_SetTilemap(TILEMAP_PARTY_MENU, 1, gStorage->partyMenuTilemapBuffer, 12, 22); + TilemapUtil_SetTilemap(TILEMAP_CLOSE_BUTTON, 1, sCloseBoxButton_Tilemap, 9, 4); + TilemapUtil_SetPos(TILEMAP_PARTY_MENU, 10, 0); + TilemapUtil_SetPos(TILEMAP_CLOSE_BUTTON, 21, 0); + SetPartySlotTilemaps(); if (sInPartyMenu) { - sub_808F90C(TRUE); + UpdateCloseBoxButtonTilemap(TRUE); CreatePartyMonsSprites(TRUE); - CopyBoxPartyPokemonDropdownToBgTilemapBuffer(2); - CopyBoxPartyPokemonDropdownToBgTilemapBuffer(1); + TilemapUtil_Update(TILEMAP_CLOSE_BUTTON); + TilemapUtil_Update(TILEMAP_PARTY_MENU); } else { - SetBoxPartyPokemonDropdownMap2Rect(1, 0, 20, 12, 2); - sub_808F90C(TRUE); - CopyBoxPartyPokemonDropdownToBgTilemapBuffer(1); - CopyBoxPartyPokemonDropdownToBgTilemapBuffer(2); + TilemapUtil_SetRect(TILEMAP_PARTY_MENU, 0, 20, 12, 2); + UpdateCloseBoxButtonTilemap(TRUE); + TilemapUtil_Update(TILEMAP_PARTY_MENU); + TilemapUtil_Update(TILEMAP_CLOSE_BUTTON); } ScheduleBgCopyTilemapToVram(1); - gPSSData->closeBoxFlashing = FALSE; + gStorage->closeBoxFlashing = FALSE; } static void SetUpShowPartyMenu(void) { - gPSSData->partyMenuUnused1 = 20; - gPSSData->partyMenuY = 2; - gPSSData->partyMenuMoveTimer = 0; + gStorage->partyMenuUnused1 = 20; + gStorage->partyMenuY = 2; + gStorage->partyMenuMoveTimer = 0; CreatePartyMonsSprites(FALSE); } static bool8 ShowPartyMenu(void) { - if (gPSSData->partyMenuMoveTimer == 20) + if (gStorage->partyMenuMoveTimer == 20) return FALSE; - gPSSData->partyMenuUnused1--; - gPSSData->partyMenuY++; - AdjustBoxPartyPokemonDropdownPos(1, 3, 1); - CopyBoxPartyPokemonDropdownToBgTilemapBuffer(1); + gStorage->partyMenuUnused1--; + gStorage->partyMenuY++; + TilemapUtil_Move(TILEMAP_PARTY_MENU, 3, 1); + TilemapUtil_Update(TILEMAP_PARTY_MENU); ScheduleBgCopyTilemapToVram(1); - sub_8090B98(8); - if (++gPSSData->partyMenuMoveTimer == 20) + MovePartySprites(8); + if (++gStorage->partyMenuMoveTimer == 20) { sInPartyMenu = TRUE; return FALSE; } else - { return TRUE; - } } static void SetUpHidePartyMenu(void) { - gPSSData->partyMenuUnused1 = 0; - gPSSData->partyMenuY = 22; - gPSSData->partyMenuMoveTimer = 0; - if (gPSSData->boxOption == OPTION_MOVE_ITEMS) - sub_80960C0(); + gStorage->partyMenuUnused1 = 0; + gStorage->partyMenuY = 22; + gStorage->partyMenuMoveTimer = 0; + if (gStorage->boxOption == OPTION_MOVE_ITEMS) + MoveHeldItemWithPartyMenu(); } static bool8 HidePartyMenu(void) { - if (gPSSData->partyMenuMoveTimer != 20) + if (gStorage->partyMenuMoveTimer != 20) { - gPSSData->partyMenuUnused1++; - gPSSData->partyMenuY--; - AdjustBoxPartyPokemonDropdownPos(1, 3, -1); - CopyBoxPartyPokemonDropdownToBgTilemapBuffer(1); - FillBgTilemapBufferRect_Palette0(1, 0x100, 10, gPSSData->partyMenuY, 12, 1); - sub_8090B98(-8); - if (++gPSSData->partyMenuMoveTimer != 20) + gStorage->partyMenuUnused1++; + gStorage->partyMenuY--; + TilemapUtil_Move(TILEMAP_PARTY_MENU, 3, -1); + TilemapUtil_Update(TILEMAP_PARTY_MENU); + FillBgTilemapBufferRect_Palette0(1, 0x100, 10, gStorage->partyMenuY, 12, 1); + MovePartySprites(-8); + if (++gStorage->partyMenuMoveTimer != 20) { ScheduleBgCopyTilemapToVram(1); return TRUE; @@ -2427,8 +2443,8 @@ static bool8 HidePartyMenu(void) sInPartyMenu = FALSE; DestroyAllPartyMonIcons(); CompactPartySlots(); - SetBoxPartyPokemonDropdownMap2Rect(2, 0, 0, 9, 2); - CopyBoxPartyPokemonDropdownToBgTilemapBuffer(2); + TilemapUtil_SetRect(TILEMAP_CLOSE_BUTTON, 0, 0, 9, 2); + TilemapUtil_Update(TILEMAP_CLOSE_BUTTON); ScheduleBgCopyTilemapToVram(1); return FALSE; } @@ -2437,63 +2453,65 @@ static bool8 HidePartyMenu(void) return FALSE; } -static void sub_808F90C(bool8 arg0) +static void UpdateCloseBoxButtonTilemap(bool8 normal) { - if (arg0) - SetBoxPartyPokemonDropdownMap2Rect(2, 0, 0, 9, 2); + if (normal) + TilemapUtil_SetRect(TILEMAP_CLOSE_BUTTON, 0, 0, 9, 2); else - SetBoxPartyPokemonDropdownMap2Rect(2, 0, 2, 9, 2); + TilemapUtil_SetRect(TILEMAP_CLOSE_BUTTON, 0, 2, 9, 2); - CopyBoxPartyPokemonDropdownToBgTilemapBuffer(2); + TilemapUtil_Update(TILEMAP_CLOSE_BUTTON); ScheduleBgCopyTilemapToVram(1); } -static void sub_808F948(void) +static void StartFlashingCloseBoxButton(void) { - gPSSData->closeBoxFlashing = TRUE; - gPSSData->closeBoxFlashTimer = 30; - gPSSData->closeBoxFlashState = TRUE; + gStorage->closeBoxFlashing = TRUE; + gStorage->closeBoxFlashTimer = 30; + gStorage->closeBoxFlashState = TRUE; } -static void sub_808F974(void) +static void StopFlashingCloseBoxButton(void) { - if (gPSSData->closeBoxFlashing) + if (gStorage->closeBoxFlashing) { - gPSSData->closeBoxFlashing = FALSE; - sub_808F90C(TRUE); + gStorage->closeBoxFlashing = FALSE; + UpdateCloseBoxButtonTilemap(TRUE); } } -static void sub_808F99C(void) +static void UpdateCloseBoxButtonFlash(void) { - if (gPSSData->closeBoxFlashing && ++gPSSData->closeBoxFlashTimer > 30) + if (gStorage->closeBoxFlashing && ++gStorage->closeBoxFlashTimer > 30) { - gPSSData->closeBoxFlashTimer = 0; - gPSSData->closeBoxFlashState = (gPSSData->closeBoxFlashState == FALSE); - sub_808F90C(gPSSData->closeBoxFlashState); + gStorage->closeBoxFlashTimer = 0; + gStorage->closeBoxFlashState = (gStorage->closeBoxFlashState == FALSE); + UpdateCloseBoxButtonTilemap(gStorage->closeBoxFlashState); } } -static void sub_808F9FC(void) +static void SetPartySlotTilemaps(void) { u8 i; + // Skips first party slot, it should always be drawn + // as if it has a Pokémon in it for (i = 1; i < PARTY_SIZE; i++) { s32 species = GetMonData(gPlayerParty + i, MON_DATA_SPECIES); - sub_808FA30(i, (species != SPECIES_NONE)); + SetPartySlotTilemap(i, (species != SPECIES_NONE)); } } -static void sub_808FA30(u8 pos, bool8 isPartyMon) +static void SetPartySlotTilemap(u8 pos, bool8 isFilled) { u16 i, j, index; - const u16 *data; + const u16 *tilemap; - if (isPartyMon) - data = gUnknown_83CE7C0; + if (isFilled) + tilemap = sPartySlotFilled_Tilemap; else - data = gUnknown_83CE7D8; + tilemap = sPartySlotEmpty_Tilemap; index = 3 * (3 * (pos - 1) + 1); index *= 4; @@ -2501,46 +2519,45 @@ static void sub_808FA30(u8 pos, bool8 isPartyMon) for (i = 0; i < 3; i++) { for (j = 0; j < 4; j++) - { - gPSSData->partyMenuTilemapBuffer[index + j] = data[j]; - } - data += 4; + gStorage->partyMenuTilemapBuffer[index + j] = tilemap[j]; + + tilemap += 4; index += 12; } } -static void sub_808FAA8(void) +static void UpdatePartySlotColors(void) { - sub_808F9FC(); - SetBoxPartyPokemonDropdownMap2Rect(1, 0, 0, 12, 22); - CopyBoxPartyPokemonDropdownToBgTilemapBuffer(1); + SetPartySlotTilemaps(); + TilemapUtil_SetRect(TILEMAP_PARTY_MENU, 0, 0, 12, 22); + TilemapUtil_Update(TILEMAP_PARTY_MENU); ScheduleBgCopyTilemapToVram(1); } static void SetUpDoShowPartyMenu(void) { - gPSSData->showPartyMenuState = 0; + gStorage->showPartyMenuState = 0; PlaySE(SE_WIN_OPEN); SetUpShowPartyMenu(); } static bool8 DoShowPartyMenu(void) { - switch (gPSSData->showPartyMenuState) + switch (gStorage->showPartyMenuState) { case 0: if (!ShowPartyMenu()) { - sub_8092AE4(); - gPSSData->showPartyMenuState++; + SetCursorInParty(); + gStorage->showPartyMenuState++; } break; case 1: - if (!sub_80924A8()) + if (!UpdateCursorPos()) { - if (gPSSData->setMosaic) - BoxSetMosaic(); - gPSSData->showPartyMenuState++; + if (gStorage->setMosaic) + StartDisplayMonMosaic(); + gStorage->showPartyMenuState++; } break; case 2: @@ -2549,50 +2566,50 @@ static bool8 DoShowPartyMenu(void) return TRUE; } -static void sub_808FB68(void) +static void InitPokeStorageBg0(void) { SetGpuReg(REG_OFFSET_BG0CNT, BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(29)); - TextWindow_SetStdFrame0_WithPal(1, 2, 208); + TextWindow_SetStdFrame0_WithPal(1, 2, 0xD0); FillBgTilemapBufferRect(0, 0, 0, 0, 32, 20, 17); CopyBgTilemapBufferToVram(0); } -static void PrintStorageActionText(u8 id) +static void PrintStorageMessage(u8 id) { u8 *txtPtr; DynamicPlaceholderTextUtil_Reset(); - switch (sPCStorageActionTexts[id].format) + switch (sMessages[id].format) { - case PC_TEXT_FMT_NORMAL: + case MSG_FMT_NONE: break; - case PC_TEXT_FMT_MON_NAME_1: - case PC_TEXT_FMT_MON_NAME_2: - case PC_TEXT_FMT_MON_NAME_3: - DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gPSSData->displayMonName); + case MSG_FMT_MON_NAME_1: + case MSG_FMT_MON_NAME_2: + case MSG_FMT_MON_NAME_3: + DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gStorage->displayMonNickname); break; - case PC_TEXT_FMT_MON_NAME_4: - case PC_TEXT_FMT_MON_NAME_5: - case PC_TEXT_FMT_MON_NAME_6: - DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gPSSData->field_21E0); + case MSG_FMT_RELEASE_MON_1: + case MSG_FMT_RELEASE_MON_2: + case MSG_FMT_RELEASE_MON_3: + DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gStorage->releaseMonName); break; - case PC_TEXT_FMT_ITEM_NAME: + case MSG_FMT_ITEM_NAME: if (IsActiveItemMoving()) - txtPtr = StringCopy(gPSSData->itemName, GetMovingItemName()); + txtPtr = StringCopy(gStorage->itemName, GetMovingItemName()); else - txtPtr = StringCopy(gPSSData->itemName, gPSSData->displayMonTexts[3]); + txtPtr = StringCopy(gStorage->itemName, gStorage->displayMonTexts[3]); while (*(txtPtr - 1) == CHAR_SPACE) txtPtr--; *txtPtr = EOS; - DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gPSSData->itemName); + DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gStorage->itemName); break; } - DynamicPlaceholderTextUtil_ExpandPlaceholders(gPSSData->field_2190, sPCStorageActionTexts[id].text); + DynamicPlaceholderTextUtil_ExpandPlaceholders(gStorage->actionText, sMessages[id].text); FillWindowPixelBuffer(1, PIXEL_FILL(1)); - AddTextPrinterParameterized(1, FONT_1, gPSSData->field_2190, 0, 2, TEXT_SKIP_DRAW, NULL); + AddTextPrinterParameterized(1, FONT_1, gStorage->actionText, 0, 2, TEXT_SKIP_DRAW, NULL); DrawTextBorderOuter(1, 2, 13); PutWindowTilemap(1); CopyWindowToVram(1, COPYWIN_GFX); @@ -2601,7 +2618,7 @@ static void PrintStorageActionText(u8 id) static void ShowYesNoWindow(s8 cursorPos) { - CreateYesNoMenu(&sYesNoWindowTemplate, FONT_1, 0, 2, 0x00b, 14, 1); + CreateYesNoMenu(&sYesNoWindowTemplate, FONT_1, 0, 2, 11, 14, 1); Menu_MoveCursorNoWrapAround(cursorPos); } @@ -2614,10 +2631,10 @@ static void ClearBottomWindow(void) static void AddWallpaperSetsMenu(void) { InitMenu(); - SetMenuText(PC_TEXT_SCENERY1); - SetMenuText(PC_TEXT_SCENERY2); - SetMenuText(PC_TEXT_SCENERY3); - SetMenuText(PC_TEXT_ETCETERA); + SetMenuText(MENU_TEXT_SCENERY_1); + SetMenuText(MENU_TEXT_SCENERY_2); + SetMenuText(MENU_TEXT_SCENERY_3); + SetMenuText(MENU_TEXT_ETCETERA); AddMenu(); } @@ -2626,29 +2643,29 @@ static void AddWallpapersMenu(u8 wallpaperSet) InitMenu(); switch (wallpaperSet) { - case 0: - SetMenuText(PC_TEXT_FOREST); - SetMenuText(PC_TEXT_CITY); - SetMenuText(PC_TEXT_DESERT); - SetMenuText(PC_TEXT_SAVANNA); + case 0: // SCENERY_1 + SetMenuText(MENU_TEXT_FOREST); + SetMenuText(MENU_TEXT_CITY); + SetMenuText(MENU_TEXT_DESERT); + SetMenuText(MENU_TEXT_SAVANNA); break; - case 1: - SetMenuText(PC_TEXT_CRAG); - SetMenuText(PC_TEXT_VOLCANO); - SetMenuText(PC_TEXT_SNOW); - SetMenuText(PC_TEXT_CAVE); + case 1: // SCENERY_2 + SetMenuText(MENU_TEXT_CRAG); + SetMenuText(MENU_TEXT_VOLCANO); + SetMenuText(MENU_TEXT_SNOW); + SetMenuText(MENU_TEXT_CAVE); break; - case 2: - SetMenuText(PC_TEXT_BEACH); - SetMenuText(PC_TEXT_SEAFLOOR); - SetMenuText(PC_TEXT_RIVER); - SetMenuText(PC_TEXT_SKY); + case 2: // SCENERY_3 + SetMenuText(MENU_TEXT_BEACH); + SetMenuText(MENU_TEXT_SEAFLOOR); + SetMenuText(MENU_TEXT_RIVER); + SetMenuText(MENU_TEXT_SKY); break; - case 3: - SetMenuText(PC_TEXT_POLKADOT); - SetMenuText(PC_TEXT_POKECENTER); - SetMenuText(PC_TEXT_MACHINE); - SetMenuText(PC_TEXT_SIMPLE); + case 3: // ETCETERA + SetMenuText(MENU_TEXT_POLKADOT); + SetMenuText(MENU_TEXT_POKECENTER); + SetMenuText(MENU_TEXT_MACHINE); + SetMenuText(MENU_TEXT_SIMPLE); break; } AddMenu(); @@ -2659,42 +2676,42 @@ u8 GetCurrentBoxOption(void) return sCurrentBoxOption; } -static void sub_808FDFC(void) +static void InitCursorItemIcon(void) { if (!IsCursorOnBoxTitle()) { if (sInPartyMenu) - sub_8095C84(CURSOR_AREA_IN_PARTY, GetBoxCursorPosition()); + TryLoadItemIconAtPos(CURSOR_AREA_IN_PARTY, GetBoxCursorPosition()); else - sub_8095C84(CURSOR_AREA_IN_BOX, GetBoxCursorPosition()); + TryLoadItemIconAtPos(CURSOR_AREA_IN_BOX, GetBoxCursorPosition()); } - if (gUnknown_20397BA != ITEM_NONE) + if (sMovingItemId != ITEM_NONE) { - sub_8095E2C(gUnknown_20397BA); - sub_8094D14(3); + InitItemIconInCursor(sMovingItemId); + StartCursorAnim(CURSOR_ANIM_FIST); } } -static void sub_808FE54(u8 action) +static void SetPokeStorageQuestLogEvent(u8 action) { u16 event; - u8 fromBox = sub_8094D34(); - u16 species = gPSSData->displayMonSpecies; + struct PokeStorageQuestLogData *questLogData; + u8 box1 = GetMovingMonOriginalBoxId(); + u16 species1 = gStorage->displayMonSpecies; u16 species2; - u8 toBox; - struct PssQuestLogBuffer * qlogBuffer; + u8 box2; if (sInPartyMenu) { - toBox = TOTAL_BOXES_COUNT; + box2 = TOTAL_BOXES_COUNT; species2 = GetMonData(&gPlayerParty[GetBoxCursorPosition()], MON_DATA_SPECIES2); } else { - toBox = StorageGetCurrentBox(); + box2 = StorageGetCurrentBox(); species2 = GetCurrentBoxMonData(GetBoxCursorPosition(), MON_DATA_SPECIES2); } - qlogBuffer = &gPSSData->qlogBuffer; + questLogData = &gStorage->pokeStorageQuestLogData; switch (action) { @@ -2703,47 +2720,47 @@ static void sub_808FE54(u8 action) case 0: if (sInPartyMenu) { - if (fromBox == TOTAL_BOXES_COUNT) + if (box1 == TOTAL_BOXES_COUNT) return; else event = QL_EVENT_SWITCHED_PARTY_MON_FOR_PC_MON; } else { - if (fromBox == TOTAL_BOXES_COUNT) + if (box1 == TOTAL_BOXES_COUNT) // Should upmerge but doesn't event = QL_EVENT_SWITCHED_PARTY_MON_FOR_PC_MON; else - event = fromBox != toBox ? QL_EVENT_SWITCHED_MONS_BETWEEN_BOXES : QL_EVENT_SWITCHED_MONS_WITHIN_BOX; + event = box1 != box2 ? QL_EVENT_SWITCHED_MONS_BETWEEN_BOXES : QL_EVENT_SWITCHED_MONS_WITHIN_BOX; } - qlogBuffer->species = species; - qlogBuffer->species2 = species2; - qlogBuffer->fromBox = fromBox; - qlogBuffer->toBox = toBox; + questLogData->species1 = species1; + questLogData->species2 = species2; + questLogData->box1 = box1; + questLogData->box2 = box2; break; case 1: - qlogBuffer->species = species; - qlogBuffer->species2 = SPECIES_NONE; - qlogBuffer->fromBox = fromBox; - qlogBuffer->toBox = 0xFF; + questLogData->species1 = species1; + questLogData->species2 = SPECIES_NONE; + questLogData->box1 = box1; + questLogData->box2 = 0xFF; if (sInPartyMenu) { - if (fromBox == TOTAL_BOXES_COUNT) + if (box1 == TOTAL_BOXES_COUNT) return; else event = QL_EVENT_WITHDREW_MON_PC; } else { - if (fromBox == TOTAL_BOXES_COUNT) + if (box1 == TOTAL_BOXES_COUNT) { event = QL_EVENT_DEPOSITED_MON_PC; - qlogBuffer->fromBox = toBox; + questLogData->box1 = box2; } - else if (fromBox != toBox) + else if (box1 != box2) { event = QL_EVENT_MOVED_MON_BETWEEN_BOXES; - qlogBuffer->toBox = toBox; + questLogData->box2 = box2; } else event = QL_EVENT_MOVED_MON_WITHIN_BOX; @@ -2751,23 +2768,23 @@ static void sub_808FE54(u8 action) break; case 2: event = QL_EVENT_DEPOSITED_MON_PC; - qlogBuffer->species = species; - qlogBuffer->species2 = SPECIES_NONE; - qlogBuffer->fromBox = gUnknown_20397B6; - qlogBuffer->toBox = 0xFF; + questLogData->species1 = species1; + questLogData->species2 = SPECIES_NONE; + questLogData->box1 = sDepositBoxId; + questLogData->box2 = 0xFF; break; case 3: event = QL_EVENT_SWITCHED_MULTIPLE_MONS; - qlogBuffer->species = SPECIES_NONE; - qlogBuffer->species2 = SPECIES_NONE; - qlogBuffer->fromBox = fromBox; - qlogBuffer->toBox = toBox; + questLogData->species1 = SPECIES_NONE; + questLogData->species2 = SPECIES_NONE; + questLogData->box1 = box1; + questLogData->box2 = box2; break; } - SetQuestLogEvent(event, (const void *)qlogBuffer); + SetQuestLogEvent(event, (const u16 *)questLogData); } -static void sub_808FF70(void) +static void UpdateBoxToSendMons(void) { if (sLastUsedBox != StorageGetCurrentBox()) { diff --git a/src/pokemon_storage_system_4.c b/src/pokemon_storage_system_4.c index cbd2f1b9c..11eccef85 100644 --- a/src/pokemon_storage_system_4.c +++ b/src/pokemon_storage_system_4.c @@ -9,43 +9,43 @@ #include "task.h" #include "trig.h" -static void sub_8090324(struct Sprite *sprite); +static void SpriteCB_BoxMonIconScrollOut(struct Sprite *sprite); static void SetBoxSpeciesAndPersonalities(u8 boxId); -static void sub_8090A74(struct Sprite *sprite, u16 idx); -static void sub_8090AE0(struct Sprite *sprite); +static void MovePartySpriteToNextSlot(struct Sprite *sprite, u16 idx); +static void SpriteCB_MovePartySpriteToNextSlot(struct Sprite *sprite); static void DestroyBoxMonIcon(struct Sprite *sprite); -static void sub_80911B0(struct Sprite *sprite); -static void sub_8091420(u8 taskId); -static s8 sub_80916F4(u8 boxId); +static void SpriteCB_HeldMon(struct Sprite *sprite); +static void Task_InitBox(u8 taskId); +static s8 DetermineBoxScrollDirection(u8 boxId); static void LoadWallpaperGfx(u8 wallpaperId, s8 direction); static bool32 WaitForWallpaperGfxLoad(void); -static void sub_8091984(void *buffer, const void *buffer2, s8 direction, u8 baseBlock); -static void sub_8091A24(void *buffer); -static void sub_8091A94(u8 wallpaperId); -static void sub_8091C48(u8 wallpaperId, s8 direction); -static void sub_8091E84(struct Sprite *sprite); -static void sub_8091EB8(struct Sprite *sprite); +static void DrawWallpaper(void *unused, const void *tilemap, s8 direction, u8 offset); +static void TrimOldWallpaper(void *buffer); +static void InitBoxTitle(u8 wallpaperId); +static void CreateIncomingBoxTitle(u8 wallpaperId, s8 direction); +static void SpriteCB_IncomingBoxTitle(struct Sprite *sprite); +static void SpriteCB_OutgoingBoxTitle(struct Sprite *sprite); static s16 GetBoxTitleBaseX(const u8 *boxName); -static void sub_8091E34(void); +static void CycleBoxTitleSprites(void); static void CycleBoxTitleColor(void); static void CreateBoxScrollArrows(void); static void StartBoxScrollArrowsSlide(s8 direction); static void StopBoxScrollArrowsSlide(void); -static void SpriteCB_Arrow(struct Sprite *sprite); +static void SpriteCB_BoxScrollArrow(struct Sprite *sprite); -static const struct OamData gUnknown_83CEC08; +static const struct OamData sOamData_MonIcon; -static const struct SpriteTemplate gUnknown_83CEBF0 = { - .tileTag = TAG_TILE_12, - .paletteTag = TAG_PAL_DAC0, - .oam = &gUnknown_83CEC08, +static const struct SpriteTemplate sSpriteTemplate_MonIcon = { + .tileTag = GFXTAG_MON_ICON, + .paletteTag = PALTAG_MON_ICON_0, + .oam = &sOamData_MonIcon, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = SpriteCallbackDummy }; -static const struct OamData gUnknown_83CEC08 = { +static const struct OamData sOamData_MonIcon = { .y = 0, .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, @@ -60,120 +60,139 @@ static const struct OamData gUnknown_83CEC08 = { .paletteNum = 0 }; -static const union AffineAnimCmd gUnknown_83CEC10[] = { +static const union AffineAnimCmd sAffineAnim_ReleaseMon_Release[] = { AFFINEANIMCMD_FRAME(-2, -2, 0, 120), AFFINEANIMCMD_END }; -static const union AffineAnimCmd gUnknown_83CEC20[] = { +static const union AffineAnimCmd sAffineAnim_ReleaseMon_ComeBack[] = { AFFINEANIMCMD_FRAME(16, 16, 0, 0), AFFINEANIMCMD_FRAME(16, 16, 0, 15), AFFINEANIMCMD_END }; -static const union AffineAnimCmd *const gUnknown_83CEC38[] = { - gUnknown_83CEC10, - gUnknown_83CEC20 +static const union AffineAnimCmd *const sAffineAnims_ReleaseMon[] = { + [RELEASE_ANIM_RELEASE] = sAffineAnim_ReleaseMon_Release, + [RELEASE_ANIM_COME_BACK] = sAffineAnim_ReleaseMon_ComeBack, }; -static const u16 gUnknown_83CEC40[] = INCBIN_U16("graphics/interface/pss_unk_83CEC40.gbapal"); -static const u32 gUnknown_83CEC80[] = INCBIN_U32("graphics/interface/pss_unk_83CEC80.4bpp.lz"); -static const u32 gUnknown_83CF050[] = INCBIN_U32("graphics/interface/pss_unk_83CF050.bin.lz"); -static const u16 gUnknown_83CF12C[] = INCBIN_U16("graphics/interface/pss_unk_83CF12C.gbapal"); -static const u32 gUnknown_83CF16C[] = INCBIN_U32("graphics/interface/pss_unk_83CF16C.4bpp.lz"); -static const u32 gUnknown_83CF374[] = INCBIN_U32("graphics/interface/pss_unk_83CF374.bin.lz"); -static const u16 gUnknown_83CF424[] = INCBIN_U16("graphics/interface/pss_unk_83CF424.gbapal"); -static const u32 gUnknown_83CF464[] = INCBIN_U32("graphics/interface/pss_unk_83CF464.4bpp.lz"); -static const u32 gUnknown_83CF750[] = INCBIN_U32("graphics/interface/pss_unk_83CF750.bin.lz"); -static const u16 gUnknown_83CF834[] = INCBIN_U16("graphics/interface/pss_unk_83CF834.gbapal"); -static const u32 gUnknown_83CF874[] = INCBIN_U32("graphics/interface/pss_unk_83CF874.4bpp.lz"); -static const u32 gUnknown_83CFA94[] = INCBIN_U32("graphics/interface/pss_unk_83CFA94.bin.lz"); -static const u16 gUnknown_83CFB60[] = INCBIN_U16("graphics/interface/pss_unk_83CFB60.gbapal"); -static const u32 gUnknown_83CFBA0[] = INCBIN_U32("graphics/interface/pss_unk_83CFBA0.4bpp.lz"); -static const u32 gUnknown_83CFEF0[] = INCBIN_U32("graphics/interface/pss_unk_83CFEF0.bin.lz"); -static const u16 gUnknown_83CFFC8[] = INCBIN_U16("graphics/interface/pss_unk_83CFFC8.gbapal"); -static const u32 gUnknown_83D0008[] = INCBIN_U32("graphics/interface/pss_unk_83D0008.4bpp.lz"); -static const u8 sSpace_83D0338[4] = {}; -static const u32 gUnknown_83D033C[] = INCBIN_U32("graphics/interface/pss_unk_83D033C.bin.lz"); -static const u16 gUnknown_83D0414[] = INCBIN_U16("graphics/interface/pss_unk_83D0414.gbapal"); -static const u32 gUnknown_83D0454[] = INCBIN_U32("graphics/interface/pss_unk_83D0454.4bpp.lz"); -static const u32 gUnknown_83D070C[] = INCBIN_U32("graphics/interface/pss_unk_83D070C.bin.lz"); -static const u16 gUnknown_83D07D8[] = INCBIN_U16("graphics/interface/pss_unk_83D07D8.gbapal"); -static const u32 gUnknown_83D0818[] = INCBIN_U32("graphics/interface/pss_unk_83D0818.4bpp.lz"); -static const u32 gUnknown_83D0B5C[] = INCBIN_U32("graphics/interface/pss_unk_83D0B5C.bin.lz"); -static const u16 gUnknown_83D0C38[] = INCBIN_U16("graphics/interface/pss_unk_83D0C38.gbapal"); -static const u32 gUnknown_83D0C78[] = INCBIN_U32("graphics/interface/pss_unk_83D0C78.4bpp.lz"); -static const u32 gUnknown_83D0FFC[] = INCBIN_U32("graphics/interface/pss_unk_83D0FFC.bin.lz"); -static const u16 gUnknown_83D10E4[] = INCBIN_U16("graphics/interface/pss_unk_83D10E4.gbapal"); -static const u32 gUnknown_83D1124[] = INCBIN_U32("graphics/interface/pss_unk_83D1124.4bpp.lz"); -static const u32 gUnknown_83D13D8[] = INCBIN_U32("graphics/interface/pss_unk_83D13D8.bin.lz"); -static const u16 gUnknown_83D14B4[] = INCBIN_U16("graphics/interface/pss_unk_83D14B4.gbapal"); -static const u32 gUnknown_83D14F4[] = INCBIN_U32("graphics/interface/pss_unk_83D14F4.4bpp.lz"); -static const u32 gUnknown_83D1788[] = INCBIN_U32("graphics/interface/pss_unk_83D1788.bin.lz"); -static const u16 gUnknown_83D1874[] = INCBIN_U16("graphics/interface/pss_unk_83D1874.gbapal"); -static const u32 gUnknown_83D18B4[] = INCBIN_U32("graphics/interface/pss_unk_83D18B4.4bpp.lz"); -static const u32 gUnknown_83D1B4C[] = INCBIN_U32("graphics/interface/pss_unk_83D1B4C.bin.lz"); -static const u16 gUnknown_83D1C2C[] = INCBIN_U16("graphics/interface/pss_unk_83D1C2C.gbapal"); -static const u8 sSpace_83D1C6C[32] = {}; -static const u32 gUnknown_83D1C8C[] = INCBIN_U32("graphics/interface/pss_unk_83D1C8C.4bpp.lz"); -static const u32 gUnknown_83D1EC4[] = INCBIN_U32("graphics/interface/pss_unk_83D1EC4.bin.lz"); -static const u16 gUnknown_83D1F94[] = INCBIN_U16("graphics/interface/pss_unk_83D1F94.gbapal"); -static const u32 gUnknown_83D1FD4[] = INCBIN_U32("graphics/interface/pss_unk_83D1FD4.4bpp.lz"); -static const u32 gUnknown_83D22B8[] = INCBIN_U32("graphics/interface/pss_unk_83D22B8.bin.lz"); -static const u16 gUnknown_83D239C[] = INCBIN_U16("graphics/interface/pss_unk_83D239C.gbapal"); -static const u32 gUnknown_83D23DC[] = INCBIN_U32("graphics/interface/pss_unk_83D23DC.4bpp.lz"); -static const u32 gUnknown_83D256C[] = INCBIN_U32("graphics/interface/pss_unk_83D256C.bin.lz"); -static const u16 gUnknown_83D2614[] = INCBIN_U16("graphics/interface/pss_unk_83D2614.gbapal"); -static const u32 gUnknown_83D2654[] = INCBIN_U32("graphics/interface/pss_unk_83D2654.4bpp.lz"); -static const u32 gUnknown_83D277C[] = INCBIN_U32("graphics/interface/pss_unk_83D277C.bin.lz"); -static const u16 gUnknown_83D2820[] = INCBIN_U16("graphics/interface/pss_unk_83D2820.bin"); +static const u16 sWallpaperPalettes_Forest[] = INCBIN_U16("graphics/interface/pss_unk_83CEC40.gbapal"); +static const u32 sWallpaperTiles_Forest[] = INCBIN_U32("graphics/interface/pss_unk_83CEC80.4bpp.lz"); +static const u32 sWallpaperTilemap_Forest[] = INCBIN_U32("graphics/interface/pss_unk_83CF050.bin.lz"); +static const u16 sWallpaperPalettes_City[] = INCBIN_U16("graphics/interface/pss_unk_83CF12C.gbapal"); +static const u32 sWallpaperTiles_City[] = INCBIN_U32("graphics/interface/pss_unk_83CF16C.4bpp.lz"); +static const u32 sWallpaperTilemap_City[] = INCBIN_U32("graphics/interface/pss_unk_83CF374.bin.lz"); + +static const u16 sWallpaperPalettes_Desert[] = INCBIN_U16("graphics/interface/pss_unk_83CF424.gbapal"); +static const u32 sWallpaperTiles_Desert[] = INCBIN_U32("graphics/interface/pss_unk_83CF464.4bpp.lz"); +static const u32 sWallpaperTilemap_Desert[] = INCBIN_U32("graphics/interface/pss_unk_83CF750.bin.lz"); + +static const u16 sWallpaperPalettes_Savanna[] = INCBIN_U16("graphics/interface/pss_unk_83CF834.gbapal"); +static const u32 sWallpaperTiles_Savanna[] = INCBIN_U32("graphics/interface/pss_unk_83CF874.4bpp.lz"); +static const u32 sWallpaperTilemap_Savanna[] = INCBIN_U32("graphics/interface/pss_unk_83CFA94.bin.lz"); + +static const u16 sWallpaperPalettes_Crag[] = INCBIN_U16("graphics/interface/pss_unk_83CFB60.gbapal"); +static const u32 sWallpaperTiles_Crag[] = INCBIN_U32("graphics/interface/pss_unk_83CFBA0.4bpp.lz"); +static const u32 sWallpaperTilemap_Crag[] = INCBIN_U32("graphics/interface/pss_unk_83CFEF0.bin.lz"); + +static const u16 sWallpaperPalettes_Volcano[] = INCBIN_U16("graphics/interface/pss_unk_83CFFC8.gbapal"); +static const u32 sWallpaperTiles_Volcano[] = INCBIN_U32("graphics/interface/pss_unk_83D0008.4bpp.lz"); +static const u8 sUnusedSpace1[4] = {}; +static const u32 sWallpaperTilemap_Volcano[] = INCBIN_U32("graphics/interface/pss_unk_83D033C.bin.lz"); + +static const u16 sWallpaperPalettes_Snow[] = INCBIN_U16("graphics/interface/pss_unk_83D0414.gbapal"); +static const u32 sWallpaperTiles_Snow[] = INCBIN_U32("graphics/interface/pss_unk_83D0454.4bpp.lz"); +static const u32 sWallpaperTilemap_Snow[] = INCBIN_U32("graphics/interface/pss_unk_83D070C.bin.lz"); + +static const u16 sWallpaperPalettes_Cave[] = INCBIN_U16("graphics/interface/pss_unk_83D07D8.gbapal"); +static const u32 sWallpaperTiles_Cave[] = INCBIN_U32("graphics/interface/pss_unk_83D0818.4bpp.lz"); +static const u32 sWallpaperTilemap_Cave[] = INCBIN_U32("graphics/interface/pss_unk_83D0B5C.bin.lz"); + +static const u16 sWallpaperPalettes_Beach[] = INCBIN_U16("graphics/interface/pss_unk_83D0C38.gbapal"); +static const u32 sWallpaperTiles_Beach[] = INCBIN_U32("graphics/interface/pss_unk_83D0C78.4bpp.lz"); +static const u32 sWallpaperTilemap_Beach[] = INCBIN_U32("graphics/interface/pss_unk_83D0FFC.bin.lz"); + +static const u16 sWallpaperPalettes_Seafloor[] = INCBIN_U16("graphics/interface/pss_unk_83D10E4.gbapal"); +static const u32 sWallpaperTiles_Seafloor[] = INCBIN_U32("graphics/interface/pss_unk_83D1124.4bpp.lz"); +static const u32 sWallpaperTilemap_Seafloor[] = INCBIN_U32("graphics/interface/pss_unk_83D13D8.bin.lz"); + +static const u16 sWallpaperPalettes_River[] = INCBIN_U16("graphics/interface/pss_unk_83D14B4.gbapal"); +static const u32 sWallpaperTiles_River[] = INCBIN_U32("graphics/interface/pss_unk_83D14F4.4bpp.lz"); +static const u32 sWallpaperTilemap_River[] = INCBIN_U32("graphics/interface/pss_unk_83D1788.bin.lz"); + +static const u16 sWallpaperPalettes_Sky[] = INCBIN_U16("graphics/interface/pss_unk_83D1874.gbapal"); +static const u32 sWallpaperTiles_Sky[] = INCBIN_U32("graphics/interface/pss_unk_83D18B4.4bpp.lz"); +static const u32 sWallpaperTilemap_Sky[] = INCBIN_U32("graphics/interface/pss_unk_83D1B4C.bin.lz"); + +static const u16 sWallpaperPalettes_Stars[] = INCBIN_U16("graphics/interface/pss_unk_83D1C2C.gbapal"); +static const u8 sUnusedSpace2[32] = {}; +static const u32 sWallpaperTiles_Stars[] = INCBIN_U32("graphics/interface/pss_unk_83D1C8C.4bpp.lz"); +static const u32 sWallpaperTilemap_Stars[] = INCBIN_U32("graphics/interface/pss_unk_83D1EC4.bin.lz"); + +static const u16 sWallpaperPalettes_Pokecenter[] = INCBIN_U16("graphics/interface/pss_unk_83D1F94.gbapal"); +static const u32 sWallpaperTiles_Pokecenter[] = INCBIN_U32("graphics/interface/pss_unk_83D1FD4.4bpp.lz"); +static const u32 sWallpaperTilemap_Pokecenter[] = INCBIN_U32("graphics/interface/pss_unk_83D22B8.bin.lz"); + +static const u16 sWallpaperPalettes_Tiles[] = INCBIN_U16("graphics/interface/pss_unk_83D239C.gbapal"); +static const u32 sWallpaperTiles_Tiles[] = INCBIN_U32("graphics/interface/pss_unk_83D23DC.4bpp.lz"); +static const u32 sWallpaperTilemap_Tiles[] = INCBIN_U32("graphics/interface/pss_unk_83D256C.bin.lz"); + +static const u16 sWallpaperPalettes_Simple[] = INCBIN_U16("graphics/interface/pss_unk_83D2614.gbapal"); +static const u32 sWallpaperTiles_Simple[] = INCBIN_U32("graphics/interface/pss_unk_83D2654.4bpp.lz"); +static const u32 sWallpaperTilemap_Simple[] = INCBIN_U32("graphics/interface/pss_unk_83D277C.bin.lz"); + +// Unused +static const u16 sWallpaperTilemap_Unused[] = INCBIN_U16("graphics/interface/pss_unk_83D2820.bin"); + +// Shadow color, text color static const u16 sBoxTitleColors[][2] = { - {RGB( 7, 7, 7), RGB(31, 31, 31)}, - {RGB( 7, 7, 7), RGB(31, 31, 31)}, - {RGB( 7, 7, 7), RGB(31, 31, 31)}, - {RGB( 7, 7, 7), RGB(31, 31, 31)}, - {RGB( 7, 7, 7), RGB(31, 31, 31)}, - {RGB( 7, 7, 7), RGB(31, 31, 31)}, - {RGB( 7, 7, 7), RGB(31, 31, 31)}, - {RGB( 7, 7, 7), RGB(31, 31, 31)}, - {RGB( 7, 7, 7), RGB(31, 31, 31)}, - {RGB( 7, 7, 7), RGB(31, 31, 31)}, - {RGB( 7, 7, 7), RGB(31, 31, 31)}, - {RGB( 7, 7, 7), RGB(31, 31, 31)}, - {RGB( 7, 7, 7), RGB(31, 31, 31)}, - {RGB( 7, 7, 7), RGB(31, 31, 31)}, - {RGB( 7, 7, 7), RGB(31, 31, 31)}, - {RGB( 7, 7, 7), RGB(31, 31, 31)} + {RGB( 7, 7, 7), RGB_WHITE}, + {RGB( 7, 7, 7), RGB_WHITE}, + {RGB( 7, 7, 7), RGB_WHITE}, + {RGB( 7, 7, 7), RGB_WHITE}, + {RGB( 7, 7, 7), RGB_WHITE}, + {RGB( 7, 7, 7), RGB_WHITE}, + {RGB( 7, 7, 7), RGB_WHITE}, + {RGB( 7, 7, 7), RGB_WHITE}, + {RGB( 7, 7, 7), RGB_WHITE}, + {RGB( 7, 7, 7), RGB_WHITE}, + {RGB( 7, 7, 7), RGB_WHITE}, + {RGB( 7, 7, 7), RGB_WHITE}, + {RGB( 7, 7, 7), RGB_WHITE}, + {RGB( 7, 7, 7), RGB_WHITE}, + {RGB( 7, 7, 7), RGB_WHITE}, + {RGB( 7, 7, 7), RGB_WHITE} }; -static const struct WallpaperTable sWallpaperTable[] = { - {gUnknown_83CEC80, gUnknown_83CF050, gUnknown_83CEC40}, - {gUnknown_83CF16C, gUnknown_83CF374, gUnknown_83CF12C}, - {gUnknown_83CF464, gUnknown_83CF750, gUnknown_83CF424}, - {gUnknown_83CF874, gUnknown_83CFA94, gUnknown_83CF834}, - {gUnknown_83CFBA0, gUnknown_83CFEF0, gUnknown_83CFB60}, - {gUnknown_83D0008, gUnknown_83D033C, gUnknown_83CFFC8}, - {gUnknown_83D0454, gUnknown_83D070C, gUnknown_83D0414}, - {gUnknown_83D0818, gUnknown_83D0B5C, gUnknown_83D07D8}, - {gUnknown_83D0C78, gUnknown_83D0FFC, gUnknown_83D0C38}, - {gUnknown_83D1124, gUnknown_83D13D8, gUnknown_83D10E4}, - {gUnknown_83D14F4, gUnknown_83D1788, gUnknown_83D14B4}, - {gUnknown_83D18B4, gUnknown_83D1B4C, gUnknown_83D1874}, - {gUnknown_83D1C8C, gUnknown_83D1EC4, gUnknown_83D1C2C}, - {gUnknown_83D1FD4, gUnknown_83D22B8, gUnknown_83D1F94}, - {gUnknown_83D23DC, gUnknown_83D256C, gUnknown_83D239C}, - {gUnknown_83D2654, gUnknown_83D277C, gUnknown_83D2614}, +static const struct Wallpaper sWallpapers[] = { + {sWallpaperTiles_Forest, sWallpaperTilemap_Forest, sWallpaperPalettes_Forest }, + {sWallpaperTiles_City, sWallpaperTilemap_City, sWallpaperPalettes_City }, + {sWallpaperTiles_Desert, sWallpaperTilemap_Desert, sWallpaperPalettes_Desert }, + {sWallpaperTiles_Savanna, sWallpaperTilemap_Savanna, sWallpaperPalettes_Savanna }, + {sWallpaperTiles_Crag, sWallpaperTilemap_Crag, sWallpaperPalettes_Crag }, + {sWallpaperTiles_Volcano, sWallpaperTilemap_Volcano, sWallpaperPalettes_Volcano }, + {sWallpaperTiles_Snow, sWallpaperTilemap_Snow, sWallpaperPalettes_Snow }, + {sWallpaperTiles_Cave, sWallpaperTilemap_Cave, sWallpaperPalettes_Cave }, + {sWallpaperTiles_Beach, sWallpaperTilemap_Beach, sWallpaperPalettes_Beach }, + {sWallpaperTiles_Seafloor, sWallpaperTilemap_Seafloor, sWallpaperPalettes_Seafloor }, + {sWallpaperTiles_River, sWallpaperTilemap_River, sWallpaperPalettes_River }, + {sWallpaperTiles_Sky, sWallpaperTilemap_Sky, sWallpaperPalettes_Sky }, + {sWallpaperTiles_Stars, sWallpaperTilemap_Stars, sWallpaperPalettes_Stars }, + {sWallpaperTiles_Pokecenter, sWallpaperTilemap_Pokecenter, sWallpaperPalettes_Pokecenter}, + {sWallpaperTiles_Tiles, sWallpaperTilemap_Tiles, sWallpaperPalettes_Tiles }, + {sWallpaperTiles_Simple, sWallpaperTilemap_Simple, sWallpaperPalettes_Simple }, }; -static const u16 gUnknown_83D2AD0[] = INCBIN_U16("graphics/interface/pss_unk_83D2AD0.4bpp"); -static const u8 sUnref_83D2B50[] = {0xba, 0x23}; +static const u16 sBoxScrollArrow_Gfx[] = INCBIN_U16("graphics/interface/pss_unk_83D2AD0.4bpp"); -static const struct SpriteSheet sSpriteSheet_Arrow = { - gUnknown_83D2AD0, 0x0080, TAG_TILE_6 +static const u16 sUnusedColor = RGB(26, 29, 8); + +static const struct SpriteSheet sSpriteSheet_BoxScrollArrow = { + sBoxScrollArrow_Gfx, 0x0080, GFXTAG_BOX_SCROLL_ARROW }; -static const struct OamData gUnknown_83D2B5C = { +static const struct OamData sOamData_BoxTitle = { .y = 0, .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, @@ -188,32 +207,32 @@ static const struct OamData gUnknown_83D2B5C = { .paletteNum = 0 }; -static const union AnimCmd gUnknown_83D2B64[] = { +static const union AnimCmd sAnim_BoxTitle_Left[] = { ANIMCMD_FRAME(0, 5), ANIMCMD_END }; -static const union AnimCmd gUnknown_83D2B6C[] = { +static const union AnimCmd sAnim_BoxTitle_Right[] = { ANIMCMD_FRAME(8, 5), ANIMCMD_END }; -static const union AnimCmd *const gUnknown_83D2B74[] = { - gUnknown_83D2B64, - gUnknown_83D2B6C +static const union AnimCmd *const sAnims_BoxTitle[] = { + sAnim_BoxTitle_Left, + sAnim_BoxTitle_Right, }; -static const struct SpriteTemplate gUnknown_83D2B7C = { - .tileTag = TAG_TILE_3, - .paletteTag = TAG_PAL_DAC9, - .oam = &gUnknown_83D2B5C, - .anims = gUnknown_83D2B74, +static const struct SpriteTemplate sSpriteTemplate_BoxTitle = { + .tileTag = GFXTAG_BOX_TITLE, + .paletteTag = PALTAG_BOX_TITLE, + .oam = &sOamData_BoxTitle, + .anims = sAnims_BoxTitle, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = SpriteCallbackDummy }; -static const struct OamData gUnknown_83D2B94 = { +static const struct OamData sOamData_BoxScrollArrow = { .y = 0, .affineMode = ST_OAM_AFFINE_OFF, .objMode = ST_OAM_OBJ_NORMAL, @@ -228,65 +247,65 @@ static const struct OamData gUnknown_83D2B94 = { .paletteNum = 0 }; -static const union AnimCmd gUnknown_83D2B9C[] = { +static const union AnimCmd sAnim_BoxScrollArrow_Left[] = { ANIMCMD_FRAME(0, 5), ANIMCMD_END }; -static const union AnimCmd gUnknown_83D2BA4[] = { +static const union AnimCmd sAnim_BoxScrollArrow_Right[] = { ANIMCMD_FRAME(2, 5), ANIMCMD_END }; -static const union AnimCmd *const gUnknown_83D2BAC[] = { - gUnknown_83D2B9C, - gUnknown_83D2BA4 +static const union AnimCmd *const sAnims_BoxScrollArrow[] = { + sAnim_BoxScrollArrow_Left, + sAnim_BoxScrollArrow_Right, }; -static const struct SpriteTemplate sSpriteTemplate_Arrow = { - .tileTag = TAG_TILE_6, - .paletteTag = TAG_PAL_WAVEFORM, - .oam = &gUnknown_83D2B94, - .anims = gUnknown_83D2BAC, +static const struct SpriteTemplate sSpriteTemplate_BoxScrollArrow = { + .tileTag = GFXTAG_BOX_SCROLL_ARROW, + .paletteTag = PALTAG_MISC_2, + .oam = &sOamData_BoxScrollArrow, + .anims = sAnims_BoxScrollArrow, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = SpriteCB_Arrow + .callback = SpriteCB_BoxScrollArrow, }; -void sub_808FFAC(void) +void InitMonIconFields(void) { u16 i; LoadMonIconPalettes(); for (i = 0; i < MAX_MON_ICONS; i++) - gPSSData->numIconsPerSpecies[i] = 0; + gStorage->numIconsPerSpecies[i] = 0; for (i = 0; i < MAX_MON_ICONS; i++) - gPSSData->iconSpeciesList[i] = 0; + gStorage->iconSpeciesList[i] = SPECIES_NONE; for (i = 0; i < PARTY_SIZE; i++) - gPSSData->partySprites[i] = NULL; + gStorage->partySprites[i] = NULL; for (i = 0; i < IN_BOX_COUNT; i++) - gPSSData->boxMonsSprites[i] = NULL; + gStorage->boxMonsSprites[i] = NULL; - gPSSData->movingMonSprite = NULL; - gPSSData->unkUnused1 = 0; + gStorage->movingMonSprite = NULL; + gStorage->unusedField1 = 0; } -static u8 sub_8090058(void) +static u8 GetMonIconPriorityByCursorArea(void) { return (IsCursorInBox() ? 2 : 1); } void CreateMovingMonIcon(void) { - u32 personality = GetMonData(&gPSSData->movingMon, MON_DATA_PERSONALITY); - u16 species = GetMonData(&gPSSData->movingMon, MON_DATA_SPECIES2); - u8 priority = sub_8090058(); + u32 personality = GetMonData(&gStorage->movingMon, MON_DATA_PERSONALITY); + u16 species = GetMonData(&gStorage->movingMon, MON_DATA_SPECIES2); + u8 priority = GetMonIconPriorityByCursorArea(); - gPSSData->movingMonSprite = CreateMonIconSprite(species, personality, 0, 0, priority, 7); - gPSSData->movingMonSprite->callback = sub_80911B0; + gStorage->movingMonSprite = CreateMonIconSprite(species, personality, 0, 0, priority, 7); + gStorage->movingMonSprite->callback = SpriteCB_HeldMon; } -static void sub_80900D4(u8 boxId) +static void InitBoxMonSprites(u8 boxId) { u8 boxPosition; u16 i, j, count; @@ -295,165 +314,170 @@ static void sub_80900D4(u8 boxId) count = 0; boxPosition = 0; - for (i = 0; i < IN_BOX_COLUMNS; i++) + for (i = 0; i < IN_BOX_ROWS; i++) { - for (j = 0; j < IN_BOX_ROWS; j++) + for (j = 0; j < IN_BOX_COLUMNS; j++) { species = GetBoxMonDataAt(boxId, boxPosition, MON_DATA_SPECIES2); if (species != SPECIES_NONE) { personality = GetBoxMonDataAt(boxId, boxPosition, MON_DATA_PERSONALITY); - gPSSData->boxMonsSprites[count] = CreateMonIconSprite(species, personality, 8 * (3 * j) + 100, 8 * (3 * i) + 44, 2, 19 - j); + gStorage->boxMonsSprites[count] = CreateMonIconSprite(species, personality, 8 * (3 * j) + 100, 8 * (3 * i) + 44, 2, 19 - j); } else - { - gPSSData->boxMonsSprites[count] = NULL; - } + gStorage->boxMonsSprites[count] = NULL; + boxPosition++; count++; } } - if (gPSSData->boxOption == OPTION_MOVE_ITEMS) + if (gStorage->boxOption == OPTION_MOVE_ITEMS) { for (boxPosition = 0; boxPosition < IN_BOX_COUNT; boxPosition++) { if (GetBoxMonDataAt(boxId, boxPosition, MON_DATA_HELD_ITEM) == 0) - gPSSData->boxMonsSprites[boxPosition]->oam.objMode = ST_OAM_OBJ_BLEND; + gStorage->boxMonsSprites[boxPosition]->oam.objMode = ST_OAM_OBJ_BLEND; } } } -void sub_80901EC(u8 boxPosition) +void CreateBoxMonIconAtPos(u8 boxPosition) { u16 species = GetCurrentBoxMonData(boxPosition, MON_DATA_SPECIES2); if (species != SPECIES_NONE) { - s16 x = 8 * (3 * (boxPosition % IN_BOX_ROWS)) + 100; - s16 y = 8 * (3 * (boxPosition / IN_BOX_ROWS)) + 44; + s16 x = 8 * (3 * (boxPosition % IN_BOX_COLUMNS)) + 100; + s16 y = 8 * (3 * (boxPosition / IN_BOX_COLUMNS)) + 44; u32 personality = GetCurrentBoxMonData(boxPosition, MON_DATA_PERSONALITY); - gPSSData->boxMonsSprites[boxPosition] = CreateMonIconSprite(species, personality, x, y, 2, 19 - (boxPosition % IN_BOX_ROWS)); - if (gPSSData->boxOption == OPTION_MOVE_ITEMS) - gPSSData->boxMonsSprites[boxPosition]->oam.objMode = ST_OAM_OBJ_BLEND; + gStorage->boxMonsSprites[boxPosition] = CreateMonIconSprite(species, personality, x, y, 2, 19 - (boxPosition % IN_BOX_COLUMNS)); + if (gStorage->boxOption == OPTION_MOVE_ITEMS) + gStorage->boxMonsSprites[boxPosition]->oam.objMode = ST_OAM_OBJ_BLEND; } } -static void sub_809029C(s16 arg0) +#define sDistance data[1] +#define sSpeed data[2] +#define sDestX data[3] +#define sDelay data[4] +#define sPosX data[5] + +static void StartBoxMonIconsScrollOut(s16 speed) { u16 i; for (i = 0; i < IN_BOX_COUNT; i++) { - if (gPSSData->boxMonsSprites[i] != NULL) + if (gStorage->boxMonsSprites[i] != NULL) { - gPSSData->boxMonsSprites[i]->data[2] = arg0; - gPSSData->boxMonsSprites[i]->data[4] = 1; - gPSSData->boxMonsSprites[i]->callback = sub_8090324; + gStorage->boxMonsSprites[i]->sSpeed = speed; + gStorage->boxMonsSprites[i]->sDelay = 1; + gStorage->boxMonsSprites[i]->callback = SpriteCB_BoxMonIconScrollOut; } } } -static void sub_80902E0(struct Sprite *sprite) +static void SpriteCB_BoxMonIconScrollIn(struct Sprite *sprite) { - if (sprite->data[1] != 0) + if (sprite->sDistance != 0) { - sprite->data[1]--; - sprite->x += sprite->data[2]; + sprite->sDistance--; + sprite->x += sprite->sSpeed; } else { - gPSSData->iconScrollNumIncoming--; - sprite->x = sprite->data[3]; + gStorage->iconScrollNumIncoming--; + sprite->x = sprite->sDestX; sprite->callback = SpriteCallbackDummy; } } -static void sub_8090324(struct Sprite *sprite) +static void SpriteCB_BoxMonIconScrollOut(struct Sprite *sprite) { - if (sprite->data[4] != 0) - { - sprite->data[4]--; - } + if (sprite->sDelay != 0) + sprite->sDelay--; else { - sprite->x += sprite->data[2]; - sprite->data[5] = sprite->x + sprite->x2; - if (sprite->data[5] <= 68 || sprite->data[5] >= 252) + sprite->x += sprite->sSpeed; + sprite->sPosX = sprite->x + sprite->x2; + + // Check if mon icon has scrolled out of view of the box area + if (sprite->sPosX <= 68 || sprite->sPosX >= 252) sprite->callback = SpriteCallbackDummy; } } -static void DestroyAllIconsInRow(u8 row) +static void DestroyAllIconsInColumn(u8 column) { - u16 column; - u8 boxPosition = row; + u16 row; + u8 boxPosition = column; - for (column = 0; column < IN_BOX_COLUMNS; column++) + for (row = 0; row < IN_BOX_ROWS; row++) { - if (gPSSData->boxMonsSprites[boxPosition] != NULL) + if (gStorage->boxMonsSprites[boxPosition] != NULL) { - DestroyBoxMonIcon(gPSSData->boxMonsSprites[boxPosition]); - gPSSData->boxMonsSprites[boxPosition] = NULL; + DestroyBoxMonIcon(gStorage->boxMonsSprites[boxPosition]); + gStorage->boxMonsSprites[boxPosition] = NULL; } - boxPosition += IN_BOX_ROWS; + boxPosition += IN_BOX_COLUMNS; } } -static u8 sub_80903A4(u8 row, u16 times, s16 xDelta) +static u8 CreateBoxMonIconsInColumn(u8 column, u16 distance, s16 speed) { s32 i; u16 y = 44; - s16 xDest = 8 * (3 * row) + 100; - u16 x = xDest - ((times + 1) * xDelta); - u8 subpriority = 19 - row; + s16 xDest = 8 * (3 * column) + 100; + u16 x = xDest - ((distance + 1) * speed); + u8 subpriority = 19 - column; u8 count = 0; - u8 boxPosition = row; + u8 boxPosition = column; - if (gPSSData->boxOption != OPTION_MOVE_ITEMS) + if (gStorage->boxOption != OPTION_MOVE_ITEMS) { - for (i = 0; i < IN_BOX_COLUMNS; i++) + for (i = 0; i < IN_BOX_ROWS; i++) { - if (gPSSData->boxSpecies[boxPosition] != SPECIES_NONE) + if (gStorage->boxSpecies[boxPosition] != SPECIES_NONE) { - gPSSData->boxMonsSprites[boxPosition] = CreateMonIconSprite(gPSSData->boxSpecies[boxPosition], - gPSSData->boxPersonalities[boxPosition], + gStorage->boxMonsSprites[boxPosition] = CreateMonIconSprite(gStorage->boxSpecies[boxPosition], + gStorage->boxPersonalities[boxPosition], x, y, 2, subpriority); - if (gPSSData->boxMonsSprites[boxPosition] != NULL) + if (gStorage->boxMonsSprites[boxPosition] != NULL) { - gPSSData->boxMonsSprites[boxPosition]->data[1] = times; - gPSSData->boxMonsSprites[boxPosition]->data[2] = xDelta; - gPSSData->boxMonsSprites[boxPosition]->data[3] = xDest; - gPSSData->boxMonsSprites[boxPosition]->callback = sub_80902E0; + gStorage->boxMonsSprites[boxPosition]->sDistance = distance; + gStorage->boxMonsSprites[boxPosition]->sSpeed = speed; + gStorage->boxMonsSprites[boxPosition]->sDestX = xDest; + gStorage->boxMonsSprites[boxPosition]->callback = SpriteCB_BoxMonIconScrollIn; count++; } } - boxPosition += IN_BOX_ROWS; + boxPosition += IN_BOX_COLUMNS; y += 24; } } else { - for (i = 0; i < IN_BOX_COLUMNS; i++) + for (i = 0; i < IN_BOX_ROWS; i++) { - if (gPSSData->boxSpecies[boxPosition] != SPECIES_NONE) + if (gStorage->boxSpecies[boxPosition] != SPECIES_NONE) { - gPSSData->boxMonsSprites[boxPosition] = CreateMonIconSprite(gPSSData->boxSpecies[boxPosition], - gPSSData->boxPersonalities[boxPosition], + gStorage->boxMonsSprites[boxPosition] = CreateMonIconSprite(gStorage->boxSpecies[boxPosition], + gStorage->boxPersonalities[boxPosition], x, y, 2, subpriority); - if (gPSSData->boxMonsSprites[boxPosition] != NULL) + if (gStorage->boxMonsSprites[boxPosition] != NULL) { - gPSSData->boxMonsSprites[boxPosition]->data[1] = times; - gPSSData->boxMonsSprites[boxPosition]->data[2] = xDelta; - gPSSData->boxMonsSprites[boxPosition]->data[3] = xDest; - gPSSData->boxMonsSprites[boxPosition]->callback = sub_80902E0; - if (GetBoxMonDataAt(gPSSData->incomingBoxId, boxPosition, MON_DATA_HELD_ITEM) == 0) - gPSSData->boxMonsSprites[boxPosition]->oam.objMode = ST_OAM_OBJ_BLEND; + gStorage->boxMonsSprites[boxPosition]->sDistance = distance; + gStorage->boxMonsSprites[boxPosition]->sSpeed = speed; + gStorage->boxMonsSprites[boxPosition]->sDestX = xDest; + gStorage->boxMonsSprites[boxPosition]->callback = SpriteCB_BoxMonIconScrollIn; + if (GetBoxMonDataAt(gStorage->incomingBoxId, boxPosition, MON_DATA_HELD_ITEM) == 0) + gStorage->boxMonsSprites[boxPosition]->oam.objMode = ST_OAM_OBJ_BLEND; count++; } } - boxPosition += IN_BOX_ROWS; + boxPosition += IN_BOX_COLUMNS; y += 24; } } @@ -461,58 +485,69 @@ static u8 sub_80903A4(u8 row, u16 times, s16 xDelta) return count; } -static void sub_8090574(u8 boxId, s8 direction) +#undef sDistance +#undef sSpeed +#undef sDestX +#undef sDelay +#undef sPosX + +static void InitBoxMonIconScroll(u8 boxId, s8 direction) { - gPSSData->iconScrollState = 0; - gPSSData->iconScrollToBoxId = boxId; - gPSSData->iconScrollDirection = direction; - gPSSData->iconScrollDistance = 32; - gPSSData->iconScrollSpeed = -(6 * direction); - gPSSData->iconScrollNumIncoming = 0; + gStorage->iconScrollState = 0; + gStorage->iconScrollToBoxId = boxId; + gStorage->iconScrollDirection = direction; + gStorage->iconScrollDistance = 32; + gStorage->iconScrollSpeed = -(6 * direction); + gStorage->iconScrollNumIncoming = 0; SetBoxSpeciesAndPersonalities(boxId); if (direction > 0) - gPSSData->iconScrollCurColumn = 0; + gStorage->iconScrollCurColumn = 0; else - gPSSData->iconScrollCurColumn = IN_BOX_ROWS - 1; + gStorage->iconScrollCurColumn = IN_BOX_COLUMNS - 1; - gPSSData->iconScrollPos = (24 * gPSSData->iconScrollCurColumn) + 100; - sub_809029C(gPSSData->iconScrollSpeed); + gStorage->iconScrollPos = (24 * gStorage->iconScrollCurColumn) + 100; + StartBoxMonIconsScrollOut(gStorage->iconScrollSpeed); } -static bool8 sub_809062C(void) +static bool8 UpdateBoxMonIconScroll(void) { - if (gPSSData->iconScrollDistance != 0) - gPSSData->iconScrollDistance--; + if (gStorage->iconScrollDistance != 0) + gStorage->iconScrollDistance--; - switch (gPSSData->iconScrollState) + switch (gStorage->iconScrollState) { case 0: - gPSSData->iconScrollPos += gPSSData->iconScrollSpeed; - if (gPSSData->iconScrollPos <= 64 || gPSSData->iconScrollPos >= 252) + gStorage->iconScrollPos += gStorage->iconScrollSpeed; + if (gStorage->iconScrollPos <= 64 || gStorage->iconScrollPos >= 252) { - DestroyAllIconsInRow(gPSSData->iconScrollCurColumn); - gPSSData->iconScrollPos += gPSSData->iconScrollDirection * 24; - gPSSData->iconScrollState++; + // A column of icons has gone offscreen, destroy them + DestroyAllIconsInColumn(gStorage->iconScrollCurColumn); + gStorage->iconScrollPos += gStorage->iconScrollDirection * 24; + gStorage->iconScrollState++; } break; case 1: - gPSSData->iconScrollPos += gPSSData->iconScrollSpeed; - gPSSData->iconScrollNumIncoming += sub_80903A4(gPSSData->iconScrollCurColumn, gPSSData->iconScrollDistance, gPSSData->iconScrollSpeed); - if ((gPSSData->iconScrollDirection > 0 && gPSSData->iconScrollCurColumn == IN_BOX_ROWS - 1) - || (gPSSData->iconScrollDirection < 0 && gPSSData->iconScrollCurColumn == 0)) + // Create the new incoming column of icons + gStorage->iconScrollPos += gStorage->iconScrollSpeed; + gStorage->iconScrollNumIncoming += CreateBoxMonIconsInColumn(gStorage->iconScrollCurColumn, gStorage->iconScrollDistance, gStorage->iconScrollSpeed); + if ((gStorage->iconScrollDirection > 0 && gStorage->iconScrollCurColumn == IN_BOX_COLUMNS - 1) + || (gStorage->iconScrollDirection < 0 && gStorage->iconScrollCurColumn == 0)) { - gPSSData->iconScrollState++; + // Scroll has reached final column + gStorage->iconScrollState++; } else { - gPSSData->iconScrollCurColumn += gPSSData->iconScrollDirection; - gPSSData->iconScrollState = 0; + // Continue scrolling + gStorage->iconScrollCurColumn += gStorage->iconScrollDirection; + gStorage->iconScrollState = 0; } break; case 2: - if (gPSSData->iconScrollNumIncoming == 0) + // Wait to make sure all icons have arrived + if (gStorage->iconScrollNumIncoming == 0) { - gPSSData->iconScrollDistance++; + gStorage->iconScrollDistance++; return FALSE; } break; @@ -528,44 +563,44 @@ static void SetBoxSpeciesAndPersonalities(u8 boxId) s32 i, j, boxPosition; boxPosition = 0; - for (i = 0; i < IN_BOX_COLUMNS; i++) + for (i = 0; i < IN_BOX_ROWS; i++) { - for (j = 0; j < IN_BOX_ROWS; j++) + for (j = 0; j < IN_BOX_COLUMNS; j++) { - gPSSData->boxSpecies[boxPosition] = GetBoxMonDataAt(boxId, boxPosition, MON_DATA_SPECIES2); - if (gPSSData->boxSpecies[boxPosition] != SPECIES_NONE) - gPSSData->boxPersonalities[boxPosition] = GetBoxMonDataAt(boxId, boxPosition, MON_DATA_PERSONALITY); + gStorage->boxSpecies[boxPosition] = GetBoxMonDataAt(boxId, boxPosition, MON_DATA_SPECIES2); + if (gStorage->boxSpecies[boxPosition] != SPECIES_NONE) + gStorage->boxPersonalities[boxPosition] = GetBoxMonDataAt(boxId, boxPosition, MON_DATA_PERSONALITY); boxPosition++; } } - gPSSData->incomingBoxId = boxId; + gStorage->incomingBoxId = boxId; } void DestroyBoxMonIconAtPosition(u8 boxPosition) { - if (gPSSData->boxMonsSprites[boxPosition] != NULL) + if (gStorage->boxMonsSprites[boxPosition] != NULL) { - DestroyBoxMonIcon(gPSSData->boxMonsSprites[boxPosition]); - gPSSData->boxMonsSprites[boxPosition] = NULL; + DestroyBoxMonIcon(gStorage->boxMonsSprites[boxPosition]); + gStorage->boxMonsSprites[boxPosition] = NULL; } } void SetBoxMonIconObjMode(u8 boxPosition, u8 objMode) { - if (gPSSData->boxMonsSprites[boxPosition] != NULL) + if (gStorage->boxMonsSprites[boxPosition] != NULL) { - gPSSData->boxMonsSprites[boxPosition]->oam.objMode = objMode; + gStorage->boxMonsSprites[boxPosition]->oam.objMode = objMode; } } -void CreatePartyMonsSprites(bool8 arg0) +void CreatePartyMonsSprites(bool8 visible) { u16 i, count; u16 species = GetMonData(&gPlayerParty[0], MON_DATA_SPECIES2); u32 personality = GetMonData(&gPlayerParty[0], MON_DATA_PERSONALITY); - gPSSData->partySprites[0] = CreateMonIconSprite(species, personality, 104, 64, 1, 12); + gStorage->partySprites[0] = CreateMonIconSprite(species, personality, 104, 64, 1, 12); count = 1; for (i = 1; i < PARTY_SIZE; i++) { @@ -573,90 +608,95 @@ void CreatePartyMonsSprites(bool8 arg0) if (species != SPECIES_NONE) { personality = GetMonData(&gPlayerParty[i], MON_DATA_PERSONALITY); - gPSSData->partySprites[i] = CreateMonIconSprite(species, personality, 152, 8 * (3 * (i - 1)) + 16, 1, 12); + gStorage->partySprites[i] = CreateMonIconSprite(species, personality, 152, 8 * (3 * (i - 1)) + 16, 1, 12); count++; } else - { - gPSSData->partySprites[i] = NULL; - } + gStorage->partySprites[i] = NULL; } - if (!arg0) + if (!visible) { for (i = 0; i < count; i++) { - gPSSData->partySprites[i]->y -= 160; - gPSSData->partySprites[i]->invisible = TRUE; + gStorage->partySprites[i]->y -= 160; + gStorage->partySprites[i]->invisible = TRUE; } } - if (gPSSData->boxOption == OPTION_MOVE_ITEMS) + if (gStorage->boxOption == OPTION_MOVE_ITEMS) { for (i = 0; i < PARTY_SIZE; i++) { - if (gPSSData->partySprites[i] != NULL && GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM) == 0) - gPSSData->partySprites[i]->oam.objMode = ST_OAM_OBJ_BLEND; + if (gStorage->partySprites[i] != NULL && GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM) == 0) + gStorage->partySprites[i]->oam.objMode = ST_OAM_OBJ_BLEND; } } } -void sub_80909F4(void) +void CompactPartySprites(void) { - u16 i, count; + u16 i, targetPartyId; - gPSSData->numPartyToCompact = 0; - for (i = 0, count = 0; i < PARTY_SIZE; i++) + gStorage->numPartySpritesToCompact = 0; + for (i = 0, targetPartyId = 0; i < PARTY_SIZE; i++) { - if (gPSSData->partySprites[i] != NULL) + if (gStorage->partySprites[i] != NULL) { - if (i != count) + if (i != targetPartyId) { - sub_8090A74(gPSSData->partySprites[i], count); - gPSSData->partySprites[i] = NULL; - gPSSData->numPartyToCompact++; + MovePartySpriteToNextSlot(gStorage->partySprites[i], targetPartyId); + gStorage->partySprites[i] = NULL; + gStorage->numPartySpritesToCompact++; } - count++; + targetPartyId++; } } } -u8 sub_8090A60(void) +u8 GetNumPartySpritesCompacting(void) { - return gPSSData->numPartyToCompact; + return gStorage->numPartySpritesToCompact; } -static void sub_8090A74(struct Sprite *sprite, u16 partyId) +#define sPartyId data[1] +#define sMonX data[2] +#define sMonY data[3] +#define sSpeedX data[4] +#define sSpeedY data[5] +#define sMoveSteps data[6] + +static void MovePartySpriteToNextSlot(struct Sprite *sprite, u16 partyId) { s16 x, y; - sprite->data[1] = partyId; + sprite->sPartyId = partyId; if (partyId == 0) x = 104, y = 64; else x = 152, y = 8 * (3 * (partyId - 1)) + 16; - sprite->data[2] = (u16)(sprite->x) * 8; - sprite->data[3] = (u16)(sprite->y) * 8; - sprite->data[4] = ((x * 8) - sprite->data[2]) / 8; - sprite->data[5] = ((y * 8) - sprite->data[3]) / 8; - sprite->data[6] = 8; - sprite->callback = sub_8090AE0; + sprite->sMonX = (u16)(sprite->x) * 8; + sprite->sMonY = (u16)(sprite->y) * 8; + sprite->sSpeedX = ((x * 8) - sprite->sMonX) / 8; + sprite->sSpeedY = ((y * 8) - sprite->sMonY) / 8; + sprite->sMoveSteps = 8; + sprite->callback = SpriteCB_MovePartySpriteToNextSlot; } -static void sub_8090AE0(struct Sprite *sprite) +static void SpriteCB_MovePartySpriteToNextSlot(struct Sprite *sprite) { - if (sprite->data[6] != 0) + if (sprite->sMoveSteps != 0) { - s16 x = sprite->data[2] += sprite->data[4]; - s16 y = sprite->data[3] += sprite->data[5]; + s16 x = sprite->sMonX += sprite->sSpeedX; + s16 y = sprite->sMonY += sprite->sSpeedY; sprite->x = x / 8u; sprite->y = y / 8u; - sprite->data[6]--; + sprite->sMoveSteps--; } else { - if (sprite->data[1] == 0) + if (sprite->sPartyId == 0) { sprite->x = 104; sprite->y = 64; @@ -664,48 +704,55 @@ static void sub_8090AE0(struct Sprite *sprite) else { sprite->x = 152; - sprite->y = 8 * (3 * (sprite->data[1] - 1)) + 16; + sprite->y = 8 * (3 * (sprite->sPartyId - 1)) + 16; } sprite->callback = SpriteCallbackDummy; - gPSSData->partySprites[sprite->data[1]] = sprite; - gPSSData->numPartyToCompact--; + gStorage->partySprites[sprite->sPartyId] = sprite; + gStorage->numPartySpritesToCompact--; } } +#undef sPartyId +#undef sMonX +#undef sMonY +#undef sSpeedX +#undef sSpeedY +#undef sMoveSteps + void DestroyMovingMonIcon(void) { - if (gPSSData->movingMonSprite != NULL) + if (gStorage->movingMonSprite != NULL) { - DestroyBoxMonIcon(gPSSData->movingMonSprite); - gPSSData->movingMonSprite = NULL; + DestroyBoxMonIcon(gStorage->movingMonSprite); + gStorage->movingMonSprite = NULL; } } -void sub_8090B98(s16 yDelta) +void MovePartySprites(s16 yDelta) { u16 i, posY; for (i = 0; i < PARTY_SIZE; i++) { - if (gPSSData->partySprites[i] != NULL) + if (gStorage->partySprites[i] != NULL) { - gPSSData->partySprites[i]->y += yDelta; - posY = gPSSData->partySprites[i]->y + gPSSData->partySprites[i]->y2 + gPSSData->partySprites[i]->centerToCornerVecY; + gStorage->partySprites[i]->y += yDelta; + posY = gStorage->partySprites[i]->y + gStorage->partySprites[i]->y2 + gStorage->partySprites[i]->centerToCornerVecY; posY += 16; if (posY > 192) - gPSSData->partySprites[i]->invisible = TRUE; + gStorage->partySprites[i]->invisible = TRUE; else - gPSSData->partySprites[i]->invisible = FALSE; + gStorage->partySprites[i]->invisible = FALSE; } } } void DestroyPartyMonIcon(u8 partyId) { - if (gPSSData->partySprites[partyId] != NULL) + if (gStorage->partySprites[partyId] != NULL) { - DestroyBoxMonIcon(gPSSData->partySprites[partyId]); - gPSSData->partySprites[partyId] = NULL; + DestroyBoxMonIcon(gStorage->partySprites[partyId]); + gStorage->partySprites[partyId] = NULL; } } @@ -715,194 +762,190 @@ void DestroyAllPartyMonIcons(void) for (i = 0; i < PARTY_SIZE; i++) { - if (gPSSData->partySprites[i] != NULL) + if (gStorage->partySprites[i] != NULL) { - DestroyBoxMonIcon(gPSSData->partySprites[i]); - gPSSData->partySprites[i] = NULL; + DestroyBoxMonIcon(gStorage->partySprites[i]); + gStorage->partySprites[i] = NULL; } } } void SetPartyMonIconObjMode(u8 partyId, u8 objMode) { - if (gPSSData->partySprites[partyId] != NULL) - { - gPSSData->partySprites[partyId]->oam.objMode = objMode; - } + if (gStorage->partySprites[partyId] != NULL) + gStorage->partySprites[partyId]->oam.objMode = objMode; } -void sub_8090CC0(u8 mode, u8 id) +void SetMovingMonSprite(u8 mode, u8 id) { if (mode == MODE_PARTY) { - gPSSData->movingMonSprite = gPSSData->partySprites[id]; - gPSSData->partySprites[id] = NULL; + gStorage->movingMonSprite = gStorage->partySprites[id]; + gStorage->partySprites[id] = NULL; } else if (mode == MODE_BOX) { - gPSSData->movingMonSprite = gPSSData->boxMonsSprites[id]; - gPSSData->boxMonsSprites[id] = NULL; + gStorage->movingMonSprite = gStorage->boxMonsSprites[id]; + gStorage->boxMonsSprites[id] = NULL; } else - { return; - } - gPSSData->movingMonSprite->callback = sub_80911B0; - gPSSData->movingMonSprite->oam.priority = sub_8090058(); - gPSSData->movingMonSprite->subpriority = 7; + gStorage->movingMonSprite->callback = SpriteCB_HeldMon; + gStorage->movingMonSprite->oam.priority = GetMonIconPriorityByCursorArea(); + gStorage->movingMonSprite->subpriority = 7; } -void sub_8090D58(u8 boxId, u8 position) +void SetPlacedMonSprite(u8 boxId, u8 position) { if (boxId == TOTAL_BOXES_COUNT) // party mon { - gPSSData->partySprites[position] = gPSSData->movingMonSprite; - gPSSData->partySprites[position]->oam.priority = 1; - gPSSData->partySprites[position]->subpriority = 12; + gStorage->partySprites[position] = gStorage->movingMonSprite; + gStorage->partySprites[position]->oam.priority = 1; + gStorage->partySprites[position]->subpriority = 12; } else { - gPSSData->boxMonsSprites[position] = gPSSData->movingMonSprite; - gPSSData->boxMonsSprites[position]->oam.priority = 2; - gPSSData->boxMonsSprites[position]->subpriority = 19 - (position % IN_BOX_ROWS); + gStorage->boxMonsSprites[position] = gStorage->movingMonSprite; + gStorage->boxMonsSprites[position]->oam.priority = 2; + gStorage->boxMonsSprites[position]->subpriority = 19 - (position % IN_BOX_COLUMNS); } - gPSSData->movingMonSprite->callback = SpriteCallbackDummy; - gPSSData->movingMonSprite = NULL; + gStorage->movingMonSprite->callback = SpriteCallbackDummy; + gStorage->movingMonSprite = NULL; } -void sub_8090E08(u8 boxId, u8 position) +void SetShiftMonSpritePtr(u8 boxId, u8 position) { if (boxId == TOTAL_BOXES_COUNT) // party mon - gPSSData->shiftMonSpritePtr = &gPSSData->partySprites[position]; + gStorage->shiftMonSpritePtr = &gStorage->partySprites[position]; else - gPSSData->shiftMonSpritePtr = &gPSSData->boxMonsSprites[position]; + gStorage->shiftMonSpritePtr = &gStorage->boxMonsSprites[position]; - gPSSData->movingMonSprite->callback = SpriteCallbackDummy; - gPSSData->shiftTimer = 0; + gStorage->movingMonSprite->callback = SpriteCallbackDummy; + gStorage->shiftTimer = 0; } -bool8 sub_8090E74(void) +bool8 ShiftMons(void) { - if (gPSSData->shiftTimer == 16) + if (gStorage->shiftTimer == 16) return FALSE; - gPSSData->shiftTimer++; - if (gPSSData->shiftTimer & 1) + gStorage->shiftTimer++; + if (gStorage->shiftTimer & 1) { - (*gPSSData->shiftMonSpritePtr)->y--; - gPSSData->movingMonSprite->y++; + (*gStorage->shiftMonSpritePtr)->y--; + gStorage->movingMonSprite->y++; } - (*gPSSData->shiftMonSpritePtr)->x2 = gSineTable[gPSSData->shiftTimer * 8] / 16; - gPSSData->movingMonSprite->x2 = -(gSineTable[gPSSData->shiftTimer * 8] / 16); - if (gPSSData->shiftTimer == 8) + (*gStorage->shiftMonSpritePtr)->x2 = gSineTable[gStorage->shiftTimer * 8] / 16; + gStorage->movingMonSprite->x2 = -(gSineTable[gStorage->shiftTimer * 8] / 16); + if (gStorage->shiftTimer == 8) { - gPSSData->movingMonSprite->oam.priority = (*gPSSData->shiftMonSpritePtr)->oam.priority; - gPSSData->movingMonSprite->subpriority = (*gPSSData->shiftMonSpritePtr)->subpriority; - (*gPSSData->shiftMonSpritePtr)->oam.priority = sub_8090058(); - (*gPSSData->shiftMonSpritePtr)->subpriority = 7; + gStorage->movingMonSprite->oam.priority = (*gStorage->shiftMonSpritePtr)->oam.priority; + gStorage->movingMonSprite->subpriority = (*gStorage->shiftMonSpritePtr)->subpriority; + (*gStorage->shiftMonSpritePtr)->oam.priority = GetMonIconPriorityByCursorArea(); + (*gStorage->shiftMonSpritePtr)->subpriority = 7; } - if (gPSSData->shiftTimer == 16) + if (gStorage->shiftTimer == 16) { - struct Sprite *sprite = gPSSData->movingMonSprite; - gPSSData->movingMonSprite = (*gPSSData->shiftMonSpritePtr); - *gPSSData->shiftMonSpritePtr = sprite; + struct Sprite *sprite = gStorage->movingMonSprite; + gStorage->movingMonSprite = (*gStorage->shiftMonSpritePtr); + *gStorage->shiftMonSpritePtr = sprite; - gPSSData->movingMonSprite->callback = sub_80911B0; - (*gPSSData->shiftMonSpritePtr)->callback = SpriteCallbackDummy; + gStorage->movingMonSprite->callback = SpriteCB_HeldMon; + (*gStorage->shiftMonSpritePtr)->callback = SpriteCallbackDummy; } return TRUE; } -void sub_8090FC4(u8 mode, u8 position) +void DoReleaseMonAnim(u8 mode, u8 position) { switch (mode) { case MODE_PARTY: - gPSSData->releaseMonSpritePtr = &gPSSData->partySprites[position]; + gStorage->releaseMonSpritePtr = &gStorage->partySprites[position]; break; case MODE_BOX: - gPSSData->releaseMonSpritePtr = &gPSSData->boxMonsSprites[position]; + gStorage->releaseMonSpritePtr = &gStorage->boxMonsSprites[position]; break; - case MODE_2: - gPSSData->releaseMonSpritePtr = &gPSSData->movingMonSprite; + case MODE_MOVE: + gStorage->releaseMonSpritePtr = &gStorage->movingMonSprite; break; default: return; } - if (*gPSSData->releaseMonSpritePtr != NULL) + if (*gStorage->releaseMonSpritePtr != NULL) { - InitSpriteAffineAnim(*gPSSData->releaseMonSpritePtr); - (*gPSSData->releaseMonSpritePtr)->oam.affineMode = ST_OAM_AFFINE_NORMAL; - (*gPSSData->releaseMonSpritePtr)->affineAnims = gUnknown_83CEC38; - StartSpriteAffineAnim(*gPSSData->releaseMonSpritePtr, 0); + InitSpriteAffineAnim(*gStorage->releaseMonSpritePtr); + (*gStorage->releaseMonSpritePtr)->oam.affineMode = ST_OAM_AFFINE_NORMAL; + (*gStorage->releaseMonSpritePtr)->affineAnims = sAffineAnims_ReleaseMon; + StartSpriteAffineAnim(*gStorage->releaseMonSpritePtr, RELEASE_ANIM_RELEASE); } } -bool8 sub_8091084(void) +bool8 TryHideReleaseMonSprite(void) { - if (*gPSSData->releaseMonSpritePtr == NULL || (*gPSSData->releaseMonSpritePtr)->invisible) + if (*gStorage->releaseMonSpritePtr == NULL || (*gStorage->releaseMonSpritePtr)->invisible) return FALSE; - if ((*gPSSData->releaseMonSpritePtr)->affineAnimEnded) - (*gPSSData->releaseMonSpritePtr)->invisible = TRUE; + if ((*gStorage->releaseMonSpritePtr)->affineAnimEnded) + (*gStorage->releaseMonSpritePtr)->invisible = TRUE; return TRUE; } -void sub_80910CC(void) +void DestroyReleaseMonIcon(void) { - if (*gPSSData->releaseMonSpritePtr != NULL) + if (*gStorage->releaseMonSpritePtr != NULL) { - FreeOamMatrix((*gPSSData->releaseMonSpritePtr)->oam.matrixNum); - DestroyBoxMonIcon(*gPSSData->releaseMonSpritePtr); - *gPSSData->releaseMonSpritePtr = NULL; + FreeOamMatrix((*gStorage->releaseMonSpritePtr)->oam.matrixNum); + DestroyBoxMonIcon(*gStorage->releaseMonSpritePtr); + *gStorage->releaseMonSpritePtr = NULL; } } -void sub_8091114(void) +void DoReleaseMonComeBackAnim(void) { - if (*gPSSData->releaseMonSpritePtr != NULL) + if (*gStorage->releaseMonSpritePtr != NULL) { - (*gPSSData->releaseMonSpritePtr)->invisible = FALSE; - StartSpriteAffineAnim(*gPSSData->releaseMonSpritePtr, 1); + (*gStorage->releaseMonSpritePtr)->invisible = FALSE; + StartSpriteAffineAnim(*gStorage->releaseMonSpritePtr, RELEASE_ANIM_COME_BACK); } } -bool8 sub_8091150(void) +bool8 ResetReleaseMonSpritePtr(void) { - if (gPSSData->releaseMonSpritePtr == NULL) + if (gStorage->releaseMonSpritePtr == NULL) return FALSE; - if ((*gPSSData->releaseMonSpritePtr)->affineAnimEnded) - gPSSData->releaseMonSpritePtr = NULL; + if ((*gStorage->releaseMonSpritePtr)->affineAnimEnded) + gStorage->releaseMonSpritePtr = NULL; return TRUE; } void SetMovingMonPriority(u8 priority) { - gPSSData->movingMonSprite->oam.priority = priority; + gStorage->movingMonSprite->oam.priority = priority; } -static void sub_80911B0(struct Sprite *sprite) +static void SpriteCB_HeldMon(struct Sprite *sprite) { - sprite->x = gPSSData->cursorSprite->x; - sprite->y = gPSSData->cursorSprite->y + gPSSData->cursorSprite->y2 + 4; + sprite->x = gStorage->cursorSprite->x; + sprite->y = gStorage->cursorSprite->y + gStorage->cursorSprite->y2 + 4; } -static u16 sub_80911D4(u16 species) +static u16 TryLoadMonIconTiles(u16 species) { - u16 i, var; + u16 i, offset; // Find the currently-allocated slot for (i = 0; i < MAX_MON_ICONS; i++) { - if (gPSSData->iconSpeciesList[i] == species) + if (gStorage->iconSpeciesList[i] == species) break; } @@ -911,31 +954,31 @@ static u16 sub_80911D4(u16 species) // Find the first empty slot for (i = 0; i < MAX_MON_ICONS; i++) { - if (gPSSData->iconSpeciesList[i] == SPECIES_NONE) + if (gStorage->iconSpeciesList[i] == SPECIES_NONE) break; } if (i == MAX_MON_ICONS) return 0xFFFF; } - gPSSData->iconSpeciesList[i] = species; - gPSSData->numIconsPerSpecies[i]++; - var = 16 * i; - CpuCopy32(GetMonIconTiles(species, TRUE), (void *)(OBJ_VRAM0) + var * 32, 0x200); + gStorage->iconSpeciesList[i] = species; + gStorage->numIconsPerSpecies[i]++; + offset = 16 * i; + CpuCopy32(GetMonIconTiles(species, TRUE), (void *)(OBJ_VRAM0) + offset * 32, 0x200); - return var; + return offset; } -static void sub_8091290(u16 species) +static void RemoveSpeciesFromIconList(u16 species) { u16 i; for (i = 0; i < MAX_MON_ICONS; i++) { - if (gPSSData->iconSpeciesList[i] == species) + if (gStorage->iconSpeciesList[i] == species) { - if (--gPSSData->numIconsPerSpecies[i] == 0) - gPSSData->iconSpeciesList[i] = 0; + if (--gStorage->numIconsPerSpecies[i] == 0) + gStorage->iconSpeciesList[i] = SPECIES_NONE; break; } } @@ -945,18 +988,18 @@ struct Sprite *CreateMonIconSprite(u16 species, u32 personality, s16 x, s16 y, u { u16 tileNum; u8 spriteId; - struct SpriteTemplate template = gUnknown_83CEBF0; + struct SpriteTemplate template = sSpriteTemplate_MonIcon; species = GetIconSpecies(species, personality); - template.paletteTag = 0xDAC0 + gMonIconPaletteIndices[species]; - tileNum = sub_80911D4(species); + template.paletteTag = PALTAG_MON_ICON_0 + gMonIconPaletteIndices[species]; + tileNum = TryLoadMonIconTiles(species); if (tileNum == 0xFFFF) return NULL; spriteId = CreateSprite(&template, x, y, subpriority); if (spriteId == MAX_SPRITES) { - sub_8091290(species); + RemoveSpeciesFromIconList(species); return NULL; } @@ -968,117 +1011,125 @@ struct Sprite *CreateMonIconSprite(u16 species, u32 personality, s16 x, s16 y, u static void DestroyBoxMonIcon(struct Sprite *sprite) { - sub_8091290(sprite->data[0]); + RemoveSpeciesFromIconList(sprite->data[0]); DestroySprite(sprite); } -void sub_80913DC(u8 boxId) -{ - u8 taskId = CreateTask(sub_8091420, 2); +#define tState data[0] +#define tDmaIdx data[1] +#define tBoxId data[2] - gTasks[taskId].data[2] = boxId; +void CreateInitBoxTask(u8 boxId) +{ + u8 taskId = CreateTask(Task_InitBox, 2); + + gTasks[taskId].tBoxId = boxId; } -bool8 sub_809140C(void) +bool8 IsInitBoxActive(void) { - return FuncIsActiveTask(sub_8091420); + return FuncIsActiveTask(Task_InitBox); } -static void sub_8091420(u8 taskId) +static void Task_InitBox(u8 taskId) { struct Task *task = &gTasks[taskId]; - switch (task->data[0]) + switch (task->tState) { case 0: - gPSSData->wallpaperOffset = 0; - gPSSData->bg2_X = 0; - task->data[1] = RequestDma3Fill(0, gPSSData->field_4AC4, 0x1000, DMA3_32BIT); + gStorage->wallpaperOffset = 0; + gStorage->bg2_X = 0; + task->tDmaIdx = RequestDma3Fill(0, gStorage->wallpaperBgTilemapBuffer, sizeof(gStorage->wallpaperBgTilemapBuffer), DMA3_32BIT); break; case 1: - if (WaitDma3Request(task->data[1]) == -1) + if (WaitDma3Request(task->tDmaIdx) == -1) return; - SetBgTilemapBuffer(2, gPSSData->field_4AC4); + SetBgTilemapBuffer(2, gStorage->wallpaperBgTilemapBuffer); ShowBg(2); break; case 2: - LoadWallpaperGfx(task->data[2], 0); + LoadWallpaperGfx(task->tBoxId, 0); break; case 3: if (!WaitForWallpaperGfxLoad()) return; - sub_8091A94(task->data[2]); + InitBoxTitle(task->tBoxId); CreateBoxScrollArrows(); - sub_80900D4(task->data[2]); + InitBoxMonSprites(task->tBoxId); SetGpuReg(REG_OFFSET_BG2CNT, BGCNT_PRIORITY(2) | BGCNT_CHARBASE(2) | BGCNT_SCREENBASE(27) | BGCNT_TXT512x256); break; case 4: DestroyTask(taskId); break; default: - task->data[0] = 0; + task->tState = 0; return; } - task->data[0]++; + task->tState++; } +#undef tState +#undef tDmaIdx +#undef tBoxId + void SetUpScrollToBox(u8 boxId) { - s8 direction = sub_80916F4(boxId); + s8 direction = DetermineBoxScrollDirection(boxId); - gPSSData->scrollSpeed = (direction > 0) ? 6 : -6; - gPSSData->scrollUnused1 = (direction > 0) ? 1 : 2; - gPSSData->scrollTimer = 32; - gPSSData->scrollToBoxIdUnused = boxId; - gPSSData->scrollUnused2 = (direction <= 0) ? 5 : 0; - gPSSData->scrollDirectionUnused = direction; - gPSSData->scrollUnused3 = (direction > 0) ? 264 : 56; - gPSSData->scrollUnused4 = (direction <= 0) ? 5 : 0; - gPSSData->scrollUnused5 = 0; - gPSSData->scrollUnused6 = 2; - gPSSData->scrollToBoxId = boxId; - gPSSData->scrollDirection = direction; - gPSSData->scrollState = 0; + gStorage->scrollSpeed = (direction > 0) ? 6 : -6; + gStorage->scrollUnused1 = (direction > 0) ? 1 : 2; + gStorage->scrollTimer = 32; + gStorage->scrollToBoxIdUnused = boxId; + gStorage->scrollUnused2 = (direction <= 0) ? 5 : 0; + gStorage->scrollDirectionUnused = direction; + gStorage->scrollUnused3 = (direction > 0) ? 264 : 56; + gStorage->scrollUnused4 = (direction <= 0) ? 5 : 0; + gStorage->scrollUnused5 = 0; + gStorage->scrollUnused6 = 2; + gStorage->scrollToBoxId = boxId; + gStorage->scrollDirection = direction; + gStorage->scrollState = 0; } bool8 ScrollToBox(void) { - bool8 var; + bool8 isStillScrolling; - switch (gPSSData->scrollState) + switch (gStorage->scrollState) { case 0: - LoadWallpaperGfx(gPSSData->scrollToBoxId, gPSSData->scrollDirection); - gPSSData->scrollState++; + LoadWallpaperGfx(gStorage->scrollToBoxId, gStorage->scrollDirection); + gStorage->scrollState++; case 1: if (!WaitForWallpaperGfxLoad()) return TRUE; - sub_8090574(gPSSData->scrollToBoxId, gPSSData->scrollDirection); - sub_8091C48(gPSSData->scrollToBoxId, gPSSData->scrollDirection); - StartBoxScrollArrowsSlide(gPSSData->scrollDirection); + InitBoxMonIconScroll(gStorage->scrollToBoxId, gStorage->scrollDirection); + CreateIncomingBoxTitle(gStorage->scrollToBoxId, gStorage->scrollDirection); + StartBoxScrollArrowsSlide(gStorage->scrollDirection); break; case 2: - var = sub_809062C(); - if (gPSSData->scrollTimer != 0) + isStillScrolling = UpdateBoxMonIconScroll(); + if (gStorage->scrollTimer != 0) { - gPSSData->bg2_X += gPSSData->scrollSpeed; - if (--gPSSData->scrollTimer != 0) + gStorage->bg2_X += gStorage->scrollSpeed; + if (--gStorage->scrollTimer != 0) return TRUE; - sub_8091E34(); + CycleBoxTitleSprites(); StopBoxScrollArrowsSlide(); } - return var; + return isStillScrolling; } - gPSSData->scrollState++; + gStorage->scrollState++; return TRUE; } -static s8 sub_80916F4(u8 boxId) +static s8 DetermineBoxScrollDirection(u8 boxId) { u8 i; u8 currentBox = StorageGetCurrentBox(); @@ -1095,38 +1146,37 @@ static s8 sub_80916F4(u8 boxId) void SetWallpaperForCurrentBox(u8 wallpaperId) { - u8 boxId = StorageGetCurrentBox(); - SetBoxWallpaper(boxId, wallpaperId); - gPSSData->wallpaperChangeState = 0; + SetBoxWallpaper(StorageGetCurrentBox(), wallpaperId); + gStorage->wallpaperChangeState = 0; } bool8 DoWallpaperGfxChange(void) { - switch (gPSSData->wallpaperChangeState) + switch (gStorage->wallpaperChangeState) { case 0: - BeginNormalPaletteFade(gPSSData->wallpaperPalBits, 1, 0, 16, RGB_WHITEALPHA); - gPSSData->wallpaperChangeState++; + BeginNormalPaletteFade(gStorage->wallpaperPalBits, 1, 0, 16, RGB_WHITEALPHA); + gStorage->wallpaperChangeState++; break; case 1: if (!UpdatePaletteFade()) { u8 curBox = StorageGetCurrentBox(); LoadWallpaperGfx(curBox, 0); - gPSSData->wallpaperChangeState++; + gStorage->wallpaperChangeState++; } break; case 2: if (WaitForWallpaperGfxLoad() == TRUE) { CycleBoxTitleColor(); - BeginNormalPaletteFade(gPSSData->wallpaperPalBits, 1, 16, 0, RGB_WHITEALPHA); - gPSSData->wallpaperChangeState++; + BeginNormalPaletteFade(gStorage->wallpaperPalBits, 1, 16, 0, RGB_WHITEALPHA); + gStorage->wallpaperChangeState++; } break; case 3: if (!UpdatePaletteFade()) - gPSSData->wallpaperChangeState++; + gStorage->wallpaperChangeState++; break; case 4: return FALSE; @@ -1138,30 +1188,28 @@ bool8 DoWallpaperGfxChange(void) static void LoadWallpaperGfx(u8 boxId, s8 direction) { u8 wallpaperId; - const struct WallpaperTable *wallpaperGfx; - void *iconGfx; - u32 size1, size2; + const struct Wallpaper *wallpaper; - gPSSData->wallpaperLoadState = 0; - gPSSData->wallpaperLoadBoxId = boxId; - gPSSData->wallpaperLoadDir = direction; - if (gPSSData->wallpaperLoadDir != 0) + gStorage->wallpaperLoadState = 0; + gStorage->wallpaperLoadBoxId = boxId; + gStorage->wallpaperLoadDir = direction; + if (gStorage->wallpaperLoadDir != 0) { - gPSSData->wallpaperOffset = (gPSSData->wallpaperOffset == 0); - sub_8091A24(gPSSData->field_4AC4); + gStorage->wallpaperOffset = !gStorage->wallpaperOffset; + TrimOldWallpaper(gStorage->wallpaperBgTilemapBuffer); } - wallpaperId = GetBoxWallpaper(gPSSData->wallpaperLoadBoxId); - wallpaperGfx = &sWallpaperTable[wallpaperId]; - LZ77UnCompWram(wallpaperGfx->tileMap, gPSSData->wallpaperTilemap); - sub_8091984(gPSSData->field_4AC4, gPSSData->wallpaperTilemap, gPSSData->wallpaperLoadDir, gPSSData->wallpaperOffset); + wallpaperId = GetBoxWallpaper(gStorage->wallpaperLoadBoxId); + wallpaper = &sWallpapers[wallpaperId]; + LZ77UnCompWram(wallpaper->tileMap, gStorage->wallpaperTilemap); + DrawWallpaper(gStorage->wallpaperBgTilemapBuffer, gStorage->wallpaperTilemap, gStorage->wallpaperLoadDir, gStorage->wallpaperOffset); - if (gPSSData->wallpaperLoadDir != 0) - LoadPalette(wallpaperGfx->palettes, (gPSSData->wallpaperOffset * 32) + 0x40, 0x40); + if (gStorage->wallpaperLoadDir != 0) + LoadPalette(wallpaper->palettes, (gStorage->wallpaperOffset * 32) + 0x40, 0x40); else - CpuCopy16(wallpaperGfx->palettes, &gPlttBufferUnfaded[(gPSSData->wallpaperOffset * 32) + 0x40], 0x40); + CpuCopy16(wallpaper->palettes, &gPlttBufferUnfaded[(gStorage->wallpaperOffset * 32) + 0x40], 0x40); - DecompressAndLoadBgGfxUsingHeap(2, wallpaperGfx->tiles, 0, 256 * gPSSData->wallpaperOffset, 0); + DecompressAndLoadBgGfxUsingHeap(2, wallpaper->tiles, 0, 256 * gStorage->wallpaperOffset, 0); CopyBgTilemapBufferToVram(2); } @@ -1174,145 +1222,146 @@ static bool32 WaitForWallpaperGfxLoad(void) return TRUE; } -static void sub_8091984(void *buffer, const void *tilemap, s8 direction, u8 arg2) +static void DrawWallpaper(void *unused, const void *tilemap, s8 direction, u8 offset) { - s16 var = (arg2 * 2) + 3; - s16 x = ((gPSSData->bg2_X / 8 + 10) + (direction * 24)) & 0x3F; + s16 paletteNum = (offset * 2) + 3; + s16 x = ((gStorage->bg2_X / 8 + 10) + (direction * 24)) & 0x3F; - CopyRectToBgTilemapBufferRect(2, tilemap, 0, 0, 0x14, 0x12, x, 2, 0x14, 0x12, 0x11, arg2 << 8, var); + CopyRectToBgTilemapBufferRect(2, tilemap, 0, 0, 20, 18, x, 2, 20, 18, 17, offset << 8, paletteNum); if (direction == 0) return; else if (direction > 0) - x *= 1, x += 0x14; // x * 1 is needed to match, but can be safely removed as it makes no functional difference + x *= 1, x += 20; // x * 1 is needed to match else x -= 4; - FillBgTilemapBufferRect(2, 0, x, 2, 4, 0x12, 0x11); + FillBgTilemapBufferRect(2, 0, x, 2, 4, 18, 17); } -static void sub_8091A24(void *arg0) +static void TrimOldWallpaper(void *tilemapBuffer) { u16 i; - u16 *dest = arg0; - s16 r3 = ((gPSSData->bg2_X / 8) + 30) & 0x3F; + u16 *dest = tilemapBuffer; + s16 right = ((gStorage->bg2_X / 8 + 10) + 20) & 0x3F; - if (r3 <= 31) - dest += r3 + 0x260; + if (right < 32) + dest += right + 0x260; else - dest += r3 + 0x640; + dest += right + 0x640; - for (i = 0; i < 0x2C; i++) + for (i = 0; i < 44; i++) { *dest++ = 0; - r3 = (r3 + 1) & 0x3F; - if (r3 == 0) + right = (right + 1) & 0x3F; + if (right == 0) dest -= 0x420; - if (r3 == 0x20) + if (right == 32) dest += 0x3e0; } } -static void sub_8091A94(u8 boxId) +static void InitBoxTitle(u8 boxId) { u8 tagIndex; - s16 r6; + s16 x; u16 i; - struct SpriteSheet spriteSheet = {gPSSData->field_2F8, 0x200, TAG_TILE_3}; + struct SpriteSheet spriteSheet = {gStorage->boxTitleTiles, 0x200, GFXTAG_BOX_TITLE}; struct SpritePalette palettes[] = { - {gPSSData->boxTitlePal, TAG_PAL_DAC9}, + {gStorage->boxTitlePal, PALTAG_BOX_TITLE}, {} }; u16 wallpaperId = GetBoxWallpaper(boxId); - gPSSData->boxTitlePal[14] = sBoxTitleColors[wallpaperId][0]; - gPSSData->boxTitlePal[15] = sBoxTitleColors[wallpaperId][1]; + gStorage->boxTitlePal[14] = sBoxTitleColors[wallpaperId][0]; + gStorage->boxTitlePal[15] = sBoxTitleColors[wallpaperId][1]; LoadSpritePalettes(palettes); - gPSSData->wallpaperPalBits = 0x3f0; + gStorage->wallpaperPalBits = 0x3F0; - tagIndex = IndexOfSpritePaletteTag(TAG_PAL_DAC9); - gPSSData->boxTitlePalOffset = 0x10e + 16 * tagIndex; - gPSSData->wallpaperPalBits |= 0x10000 << tagIndex; + tagIndex = IndexOfSpritePaletteTag(PALTAG_BOX_TITLE); + gStorage->boxTitlePalOffset = 0x10e + 16 * tagIndex; + gStorage->wallpaperPalBits |= 0x10000 << tagIndex; - tagIndex = IndexOfSpritePaletteTag(TAG_PAL_DAC9); - gPSSData->boxTitleAltPalOffset = 0x10e + 16 * tagIndex; - gPSSData->wallpaperPalBits |= 0x10000 << tagIndex; + tagIndex = IndexOfSpritePaletteTag(PALTAG_BOX_TITLE); + gStorage->boxTitleAltPalOffset = 0x10e + 16 * tagIndex; + gStorage->wallpaperPalBits |= 0x10000 << tagIndex; - StringCopyPadded(gPSSData->field_21B8, GetBoxNamePtr(boxId), 0, 8); - DrawTextWindowAndBufferTiles(gPSSData->field_21B8, gPSSData->field_2F8, 0, 0, gPSSData->field_4F8, 2); + StringCopyPadded(gStorage->boxTitleText, GetBoxNamePtr(boxId), 0, 8); + DrawTextWindowAndBufferTiles(gStorage->boxTitleText, gStorage->boxTitleTiles, 0, 0, gStorage->boxTitleUnused, 2); LoadSpriteSheet(&spriteSheet); - r6 = GetBoxTitleBaseX(GetBoxNamePtr(boxId)); - - for (i = 0; i < 2; i++) - { - u8 spriteId = CreateSprite(&gUnknown_83D2B7C, r6 + i * 32, 28, 24); - gPSSData->curBoxTitleSprites[i] = &gSprites[spriteId]; - StartSpriteAnim(gPSSData->curBoxTitleSprites[i], i); - } - gPSSData->boxTitleCycleId = 0; -} - -static void sub_8091C48(u8 boxId, s8 direction) -{ - u16 r8; - s16 x, x2; - u16 i; - struct SpriteSheet spriteSheet = {gPSSData->field_2F8, 0x200, TAG_TILE_3}; - struct SpriteTemplate template = gUnknown_83D2B7C; - - gPSSData->boxTitleCycleId = (gPSSData->boxTitleCycleId == 0); - if (gPSSData->boxTitleCycleId == 0) - { - spriteSheet.tag = TAG_TILE_3; - r8 = gPSSData->boxTitlePalOffset; - } - else - { - spriteSheet.tag = TAG_TILE_4; - r8 = gPSSData->boxTitlePalOffset; - template.tileTag = TAG_TILE_4; - template.paletteTag = TAG_PAL_DAC9; - } - - StringCopyPadded(gPSSData->field_21B8, GetBoxNamePtr(boxId), 0, 8); - DrawTextWindowAndBufferTiles(gPSSData->field_21B8, gPSSData->field_2F8, 0, 0, gPSSData->field_4F8, 2); - LoadSpriteSheet(&spriteSheet); - LoadPalette(sBoxTitleColors[GetBoxWallpaper(boxId)], r8, 4); x = GetBoxTitleBaseX(GetBoxNamePtr(boxId)); - x2 = x; - x2 += direction * 192; for (i = 0; i < 2; i++) { - u8 spriteId = CreateSprite(&template, i * 32 + x2, 28, 24); + u8 spriteId = CreateSprite(&sSpriteTemplate_BoxTitle, x + i * 32, 28, 24); + gStorage->curBoxTitleSprites[i] = &gSprites[spriteId]; + StartSpriteAnim(gStorage->curBoxTitleSprites[i], i); + } + gStorage->boxTitleCycleId = 0; +} - gPSSData->nextBoxTitleSprites[i] = &gSprites[spriteId]; - gPSSData->nextBoxTitleSprites[i]->data[0] = (-direction) * 6; - gPSSData->nextBoxTitleSprites[i]->data[1] = i * 32 + x; - gPSSData->nextBoxTitleSprites[i]->data[2] = 0; - gPSSData->nextBoxTitleSprites[i]->callback = sub_8091E84; - StartSpriteAnim(gPSSData->nextBoxTitleSprites[i], i); +static void CreateIncomingBoxTitle(u8 boxId, s8 direction) +{ + u16 palOffset; + s16 x, adjustedX; + u16 i; + struct SpriteSheet spriteSheet = {gStorage->boxTitleTiles, 0x200, GFXTAG_BOX_TITLE}; + struct SpriteTemplate template = sSpriteTemplate_BoxTitle; - gPSSData->curBoxTitleSprites[i]->data[0] = (-direction) * 6; - gPSSData->curBoxTitleSprites[i]->data[1] = 1; - gPSSData->curBoxTitleSprites[i]->callback = sub_8091EB8; + gStorage->boxTitleCycleId = !gStorage->boxTitleCycleId; + if (gStorage->boxTitleCycleId == 0) + { + spriteSheet.tag = GFXTAG_BOX_TITLE; + palOffset = gStorage->boxTitlePalOffset; + } + else + { + spriteSheet.tag = GFXTAG_BOX_TITLE_ALT; + palOffset = gStorage->boxTitlePalOffset; + template.tileTag = GFXTAG_BOX_TITLE_ALT; + template.paletteTag = PALTAG_BOX_TITLE; + } + + StringCopyPadded(gStorage->boxTitleText, GetBoxNamePtr(boxId), 0, BOX_NAME_LENGTH); + DrawTextWindowAndBufferTiles(gStorage->boxTitleText, gStorage->boxTitleTiles, 0, 0, gStorage->boxTitleUnused, 2); + LoadSpriteSheet(&spriteSheet); + LoadPalette(sBoxTitleColors[GetBoxWallpaper(boxId)], palOffset, sizeof(sBoxTitleColors[0])); + x = GetBoxTitleBaseX(GetBoxNamePtr(boxId)); + adjustedX = x; + adjustedX += direction * 192; + + // Title is split across two sprites + for (i = 0; i < 2; i++) + { + u8 spriteId = CreateSprite(&template, i * 32 + adjustedX, 28, 24); + + gStorage->nextBoxTitleSprites[i] = &gSprites[spriteId]; + gStorage->nextBoxTitleSprites[i]->data[0] = (-direction) * 6; + gStorage->nextBoxTitleSprites[i]->data[1] = i * 32 + x; + gStorage->nextBoxTitleSprites[i]->data[2] = 0; + gStorage->nextBoxTitleSprites[i]->callback = SpriteCB_IncomingBoxTitle; + StartSpriteAnim(gStorage->nextBoxTitleSprites[i], i); + + gStorage->curBoxTitleSprites[i]->data[0] = (-direction) * 6; + gStorage->curBoxTitleSprites[i]->data[1] = 1; + gStorage->curBoxTitleSprites[i]->callback = SpriteCB_OutgoingBoxTitle; } } -static void sub_8091E34(void) +static void CycleBoxTitleSprites(void) { - if (gPSSData->boxTitleCycleId == 0) - FreeSpriteTilesByTag(TAG_TILE_4); + if (gStorage->boxTitleCycleId == 0) + FreeSpriteTilesByTag(GFXTAG_BOX_TITLE_ALT); else - FreeSpriteTilesByTag(TAG_TILE_3); + FreeSpriteTilesByTag(GFXTAG_BOX_TITLE); - gPSSData->curBoxTitleSprites[0] = gPSSData->nextBoxTitleSprites[0]; - gPSSData->curBoxTitleSprites[1] = gPSSData->nextBoxTitleSprites[1]; + gStorage->curBoxTitleSprites[0] = gStorage->nextBoxTitleSprites[0]; + gStorage->curBoxTitleSprites[1] = gStorage->nextBoxTitleSprites[1]; } -static void sub_8091E84(struct Sprite *sprite) +static void SpriteCB_IncomingBoxTitle(struct Sprite *sprite) { if (sprite->data[2] != 0) sprite->data[2]--; @@ -1320,12 +1369,10 @@ static void sub_8091E84(struct Sprite *sprite) sprite->callback = SpriteCallbackDummy; } -static void sub_8091EB8(struct Sprite *sprite) +static void SpriteCB_OutgoingBoxTitle(struct Sprite *sprite) { if (sprite->data[1] != 0) - { sprite->data[1]--; - } else { sprite->x += sprite->data[0]; @@ -1339,10 +1386,10 @@ static void CycleBoxTitleColor(void) { u8 boxId = StorageGetCurrentBox(); u8 wallpaperId = GetBoxWallpaper(boxId); - if (gPSSData->boxTitleCycleId == 0) - CpuCopy16(sBoxTitleColors[wallpaperId], gPlttBufferUnfaded + gPSSData->boxTitlePalOffset, 4); + if (gStorage->boxTitleCycleId == 0) + CpuCopy16(sBoxTitleColors[wallpaperId], gPlttBufferUnfaded + gStorage->boxTitlePalOffset, 4); else - CpuCopy16(sBoxTitleColors[wallpaperId], gPlttBufferUnfaded + gPSSData->boxTitleAltPalOffset, 4); + CpuCopy16(sBoxTitleColors[wallpaperId], gPlttBufferUnfaded + gStorage->boxTitleAltPalOffset, 4); } static s16 GetBoxTitleBaseX(const u8 *string) @@ -1350,12 +1397,6 @@ static s16 GetBoxTitleBaseX(const u8 *string) return DISPLAY_WIDTH - 64 - GetStringWidth(FONT_1, string, 0) / 2; } - -//------------------------------------------------------------------------------ -// SECTION: Scroll arrows -//------------------------------------------------------------------------------ - - // Sprite data for box scroll arrows #define sState data[0] #define sTimer data[1] @@ -1365,16 +1406,16 @@ static void CreateBoxScrollArrows(void) { u16 i; - LoadSpriteSheet(&sSpriteSheet_Arrow); + LoadSpriteSheet(&sSpriteSheet_BoxScrollArrow); for (i = 0; i < 2; i++) { - u8 spriteId = CreateSprite(&sSpriteTemplate_Arrow, 92 + i * 136, 28, 22); + u8 spriteId = CreateSprite(&sSpriteTemplate_BoxScrollArrow, 92 + i * 136, 28, 22); if (spriteId != MAX_SPRITES) { struct Sprite *sprite = &gSprites[spriteId]; StartSpriteAnim(sprite, i); - sprite->data[3] = (i == 0) ? -1 : 1; - gPSSData->arrowSprites[i] = sprite; + sprite->sSpeed = (i == 0) ? -1 : 1; + gStorage->arrowSprites[i] = sprite; } } if (IsCursorOnBoxTitle()) @@ -1388,25 +1429,25 @@ static void StartBoxScrollArrowsSlide(s8 direction) for (i = 0; i < 2; i++) { - gPSSData->arrowSprites[i]->x2 = 0; - gPSSData->arrowSprites[i]->sState = 2; + gStorage->arrowSprites[i]->x2 = 0; + gStorage->arrowSprites[i]->sState = 2; } if (direction < 0) { - gPSSData->arrowSprites[0]->sTimer = 29; - gPSSData->arrowSprites[1]->sTimer = 5; - gPSSData->arrowSprites[0]->data[2] = 72; - gPSSData->arrowSprites[1]->data[2] = 72; + gStorage->arrowSprites[0]->sTimer = 29; + gStorage->arrowSprites[1]->sTimer = 5; + gStorage->arrowSprites[0]->data[2] = 72; + gStorage->arrowSprites[1]->data[2] = 72; } else { - gPSSData->arrowSprites[0]->sTimer = 5; - gPSSData->arrowSprites[1]->sTimer = 29; - gPSSData->arrowSprites[0]->data[2] = DISPLAY_WIDTH + 8; - gPSSData->arrowSprites[1]->data[2] = DISPLAY_WIDTH + 8; + gStorage->arrowSprites[0]->sTimer = 5; + gStorage->arrowSprites[1]->sTimer = 29; + gStorage->arrowSprites[0]->data[2] = DISPLAY_WIDTH + 8; + gStorage->arrowSprites[1]->data[2] = DISPLAY_WIDTH + 8; } - gPSSData->arrowSprites[0]->data[7] = 0; - gPSSData->arrowSprites[1]->data[7] = 1; + gStorage->arrowSprites[0]->data[7] = 0; + gStorage->arrowSprites[1]->data[7] = 1; } // New box's scroll arrows have entered, stop sliding and set their position @@ -1416,9 +1457,9 @@ static void StopBoxScrollArrowsSlide(void) for (i = 0; i < 2; i++) { - gPSSData->arrowSprites[i]->x = 136 * i + 92; - gPSSData->arrowSprites[i]->x2 = 0; - gPSSData->arrowSprites[i]->invisible = FALSE; + gStorage->arrowSprites[i]->x = 136 * i + 92; + gStorage->arrowSprites[i]->x2 = 0; + gStorage->arrowSprites[i]->invisible = FALSE; } AnimateBoxScrollArrows(TRUE); } @@ -1433,21 +1474,21 @@ void AnimateBoxScrollArrows(bool8 animate) // Start arrows moving for (i = 0; i < 2; i++) { - gPSSData->arrowSprites[i]->sState = 1; - gPSSData->arrowSprites[i]->sTimer = 0; - gPSSData->arrowSprites[i]->data[2] = 0; - gPSSData->arrowSprites[i]->data[4] = 0; + gStorage->arrowSprites[i]->sState = 1; + gStorage->arrowSprites[i]->sTimer = 0; + gStorage->arrowSprites[i]->data[2] = 0; + gStorage->arrowSprites[i]->data[4] = 0; } } else { // Stop arrows moving for (i = 0; i < 2; i++) - gPSSData->arrowSprites[i]->sState = 0; + gStorage->arrowSprites[i]->sState = 0; } } -static void SpriteCB_Arrow(struct Sprite *sprite) +static void SpriteCB_BoxScrollArrow(struct Sprite *sprite) { switch (sprite->sState) { @@ -1470,7 +1511,7 @@ static void SpriteCB_Arrow(struct Sprite *sprite) sprite->sState = 3; break; case 3: - sprite->x -= gPSSData->scrollSpeed; + sprite->x -= gStorage->scrollSpeed; if (sprite->x <= 72 || sprite->x >= DISPLAY_WIDTH + 8) sprite->invisible = TRUE; if (--sprite->sTimer == 0) @@ -1481,18 +1522,19 @@ static void SpriteCB_Arrow(struct Sprite *sprite) } break; case 4: - sprite->x -= gPSSData->scrollSpeed; + sprite->x -= gStorage->scrollSpeed; break; } } #undef sState +#undef sTimer #undef sSpeed // Arrows for Deposit/Jump Box selection struct Sprite *CreateChooseBoxArrows(u16 x, u16 y, u8 animId, u8 priority, u8 subpriority) { - u8 spriteId = CreateSprite(&sSpriteTemplate_Arrow, x, y, subpriority); + u8 spriteId = CreateSprite(&sSpriteTemplate_BoxScrollArrow, x, y, subpriority); if (spriteId == MAX_SPRITES) return NULL; diff --git a/src/pokemon_storage_system_5.c b/src/pokemon_storage_system_5.c index 8074b57c4..4eecee08b 100644 --- a/src/pokemon_storage_system_5.c +++ b/src/pokemon_storage_system_5.c @@ -10,424 +10,444 @@ #include "constants/moves.h" static EWRAM_DATA struct Pokemon sMonBeingCarried = {}; -static EWRAM_DATA s8 sBoxCursorArea = 0; -static EWRAM_DATA s8 sBoxCursorPosition = 0; +static EWRAM_DATA s8 sCursorArea = 0; +static EWRAM_DATA s8 sCursorPosition = 0; static EWRAM_DATA bool8 sIsMonBeingMoved = FALSE; static EWRAM_DATA u8 sMovingMonOrigBoxId = 0; static EWRAM_DATA u8 sMovingMonOrigBoxPos = 0; -static EWRAM_DATA bool8 sCanOnlyMove = FALSE; -static EWRAM_DATA u8 gUnknown_2039826 = 0; +static EWRAM_DATA bool8 sInMultiMoveMode = FALSE; +static EWRAM_DATA u8 sSavedCursorPosition = 0; -static void sub_80929B0(void); -static bool8 MonPlaceChange_Move(void); +static void DoCursorNewPosUpdate(void); +static bool8 MonPlaceChange_Grab(void); static bool8 MonPlaceChange_Place(void); static bool8 MonPlaceChange_Shift(void); -static bool8 sub_8092E00(void); -static bool8 sub_8092E10(void); -static bool8 sub_8092E20(void); -static bool8 sub_8092E54(void); +static bool8 MonPlaceChange_DoMoveCursorDown(void); +static bool8 MonPlaceChange_DoMoveCursorUp(void); +static bool8 MonPlaceChange_MoveCursorDown(void); +static bool8 MonPlaceChange_MoveCursorUp(void); static void MoveMon(void); static void PlaceMon(void); static void SetMovedMonData(u8 boxId, u8 cursorPos); static void SetPlacedMonData(u8 boxId, u8 cursorPos); static void PurgeMonOrBoxMon(u8 boxId, u8 cursorPos); static void SetShiftedMonData(u8 boxId, u8 cursorPos); -static void sub_8093A10(void); -static void SetCursorMonData(void *cursorMon, u8 mode); -static void sub_8093AAC(void); -static u8 InBoxInput_Normal(void); -static u8 InBoxInput_GrabbingMultiple(void); -static u8 InBoxInput_MovingMultiple(void); +static void TrySetDisplayMonData(void); +static void SetDisplayMonData(void *pokemon, u8 mode); +static void ReshowDisplayMon(void); +static u8 HandleInput_InBox_Normal(void); +static u8 HandleInput_InBox_GrabbingMultiple(void); +static u8 HandleInput_InBox_MovingMultiple(void); static void AddBoxMenu(void); -static bool8 sub_8094924(void); -static bool8 sub_809494C(void); -static bool8 sub_8094A0C(void); -static void sub_8094AD8(void); -static void sub_8094C84(void); +static bool8 SetSelectionMenuTexts(void); +static bool8 SetMenuTextsForMon(void); +static bool8 SetMenuTextsForItem(void); +static void CreateCursorSprites(void); +static void ToggleCursorMultiMoveMode(void); -static const u16 sHandCursorPalette[] = INCBIN_U16("graphics/interface/pss_unk_83D2BCC.gbapal"); +static const u16 sPokeStorageMisc1Pal[] = INCBIN_U16("graphics/interface/pss_unk_83D2BCC.gbapal"); static const u16 sHandCursorTiles[] = INCBIN_U16("graphics/interface/pss_unk_83D2BEC.4bpp"); static const u16 sHandCursorShadowTiles[] = INCBIN_U16("graphics/interface/pss_unk_83D33EC.4bpp"); -void sub_80922C0(void) +// Modes for selecting and moving Pokémon in the box. Multiple Pokémon can be +// selected by pressing the Select button to change the cursor, then holding +// down the A button while moving the cursor around. This is +// MOVE_MODE_MULTIPLE_SELECTING. After releasing the A button, those Pokémon +// will be picked up and can be moved around as a single unit. This is +// MOVE_MODE_MULTIPLE_MOVING. +enum { - if (gPSSData->boxOption != OPTION_DEPOSIT) - sBoxCursorArea = CURSOR_AREA_IN_BOX; - else - sBoxCursorArea = CURSOR_AREA_IN_PARTY; + MOVE_MODE_NORMAL, + MOVE_MODE_MULTIPLE_SELECTING, + MOVE_MODE_MULTIPLE_MOVING, +}; - sBoxCursorPosition = 0; +void InitCursor(void) +{ + if (gStorage->boxOption != OPTION_DEPOSIT) + sCursorArea = CURSOR_AREA_IN_BOX; + else + sCursorArea = CURSOR_AREA_IN_PARTY; + + sCursorPosition = 0; sIsMonBeingMoved = FALSE; sMovingMonOrigBoxId = 0; sMovingMonOrigBoxPos = 0; - sCanOnlyMove = FALSE; - sub_8092B50(); - sub_8094AD8(); - gPSSData->cursorPrevHorizPos = 1; - gPSSData->inBoxMovingMode = 0; - sub_8093A10(); + sInMultiMoveMode = FALSE; + ClearSavedCursorPos(); + CreateCursorSprites(); + gStorage->cursorPrevPartyPos = 1; + gStorage->inBoxMovingMode = MOVE_MODE_NORMAL; + TrySetDisplayMonData(); } -void sub_8092340(void) +void InitCursorOnReopen(void) { - sub_8094AD8(); - sub_8093AAC(); - gPSSData->cursorPrevHorizPos = 1; - gPSSData->inBoxMovingMode = 0; + CreateCursorSprites(); + ReshowDisplayMon(); + gStorage->cursorPrevPartyPos = 1; + gStorage->inBoxMovingMode = MOVE_MODE_NORMAL; if (sIsMonBeingMoved) { - gPSSData->movingMon = sMonBeingCarried; + gStorage->movingMon = sMonBeingCarried; CreateMovingMonIcon(); } } -static void sub_8092398(u8 cursorArea, u8 cursorPosition, u16 *x, u16 *y) +static void GetCursorCoordsByPos(u8 cursorArea, u8 cursorPosition, u16 *x, u16 *y) { switch (cursorArea) { case CURSOR_AREA_IN_BOX: - *x = (cursorPosition % IN_BOX_ROWS) * 24 + 100; - *y = (cursorPosition / IN_BOX_ROWS) * 24 + 32; + *x = (cursorPosition % IN_BOX_COLUMNS) * 24 + 100; + *y = (cursorPosition / IN_BOX_COLUMNS) * 24 + 32; break; case CURSOR_AREA_IN_PARTY: if (cursorPosition == 0) { - *x = 0x68; - *y = 0x34; + *x = 104; + *y = 52; } else if (cursorPosition == PARTY_SIZE) { - *x = 0x98; - *y = 0x84; + *x = 152; + *y = 132; } else { - *x = 0x98; + *x = 152; *y = (cursorPosition - 1) * 24 + 4; } break; - case CURSOR_AREA_BOX: - *x = 0xa2; - *y = 0x0c; + case CURSOR_AREA_BOX_TITLE: + *x = 162; + *y = 12; break; case CURSOR_AREA_BUTTONS: *y = sIsMonBeingMoved ? 8 : 14; - *x = cursorPosition * 0x58 + 0x78; + *x = cursorPosition * 88 + 120; break; case 4: - *x = 0xa0; - *y = 0x60; + *x = 160; + *y = 96; break; } } -static u16 sub_8092458(void) +static u16 GetSpeciesAtCursorPosition(void) { - switch (sBoxCursorArea) + switch (sCursorArea) { case CURSOR_AREA_IN_PARTY: - return GetMonData(&gPlayerParty[sBoxCursorPosition], MON_DATA_SPECIES); + return GetMonData(&gPlayerParty[sCursorPosition], MON_DATA_SPECIES); case CURSOR_AREA_IN_BOX: - return GetCurrentBoxMonData(sBoxCursorPosition, MON_DATA_SPECIES); + return GetCurrentBoxMonData(sCursorPosition, MON_DATA_SPECIES); default: return SPECIES_NONE; } } -bool8 sub_80924A8(void) +bool8 UpdateCursorPos(void) { s16 tmp; - if (gPSSData->cursorMoveSteps == 0) + if (gStorage->cursorMoveSteps == 0) { - if (gPSSData->boxOption != OPTION_MOVE_ITEMS) + if (gStorage->boxOption != OPTION_MOVE_ITEMS) return FALSE; else - return sub_809610C(); + return IsItemIconAnimActive(); } - else if (--gPSSData->cursorMoveSteps != 0) + else if (--gStorage->cursorMoveSteps != 0) { - gPSSData->cursorNewX += gPSSData->cursorSpeedX; - gPSSData->cursorNewY += gPSSData->cursorSpeedY; - gPSSData->cursorSprite->x = gPSSData->cursorNewX >> 8; - gPSSData->cursorSprite->y = gPSSData->cursorNewY >> 8; - if (gPSSData->cursorSprite->x > 0x100) + // Update position toward target + gStorage->cursorNewX += gStorage->cursorSpeedX; + gStorage->cursorNewY += gStorage->cursorSpeedY; + gStorage->cursorSprite->x = gStorage->cursorNewX >> 8; + gStorage->cursorSprite->y = gStorage->cursorNewY >> 8; + + // Limit cursor on right + if (gStorage->cursorSprite->x > DISPLAY_WIDTH + 16) { - tmp = gPSSData->cursorSprite->x - 0x100; - gPSSData->cursorSprite->x = tmp + 0x40; + tmp = gStorage->cursorSprite->x - (DISPLAY_WIDTH + 16); + gStorage->cursorSprite->x = tmp + 64; } - if (gPSSData->cursorSprite->x < 0x40) + + // Limit cursor on left + if (gStorage->cursorSprite->x < 64) { - tmp = 0x40 - gPSSData->cursorSprite->x; - gPSSData->cursorSprite->x = 0x100 - tmp; + tmp = 64 - gStorage->cursorSprite->x; + gStorage->cursorSprite->x = DISPLAY_WIDTH + 16 - tmp; } - if (gPSSData->cursorSprite->y > 0xb0) + + // Limit cursor on bottom + if (gStorage->cursorSprite->y > DISPLAY_HEIGHT + 16) { - tmp = gPSSData->cursorSprite->y - 0xb0; - gPSSData->cursorSprite->y = tmp - 0x10; + tmp = gStorage->cursorSprite->y - (DISPLAY_HEIGHT + 16); + gStorage->cursorSprite->y = tmp - 16; } - if (gPSSData->cursorSprite->y < -0x10) + + // Limit cursor on top + if (gStorage->cursorSprite->y < -16) { - tmp = -0x10 - gPSSData->cursorSprite->y; - gPSSData->cursorSprite->y = 0xb0 - tmp; + tmp = -16 - gStorage->cursorSprite->y; + gStorage->cursorSprite->y = DISPLAY_HEIGHT + 16 - tmp; } - if (gPSSData->cursorFlipTimer && --gPSSData->cursorFlipTimer == 0) - gPSSData->cursorSprite->vFlip = (gPSSData->cursorSprite->vFlip == FALSE); + + // Cursor flips vertically when moving on/off the top buttons + if (gStorage->cursorFlipTimer && --gStorage->cursorFlipTimer == 0) + gStorage->cursorSprite->vFlip = (gStorage->cursorSprite->vFlip == FALSE); } else { - gPSSData->cursorSprite->x = gPSSData->cursorTargetX; - gPSSData->cursorSprite->y = gPSSData->cursorTargetY; - sub_80929B0(); + // Time is up for cursor movement, make sure it's exactly at target + gStorage->cursorSprite->x = gStorage->cursorTargetX; + gStorage->cursorSprite->y = gStorage->cursorTargetY; + DoCursorNewPosUpdate(); } return TRUE; } -static void sub_8092604(u8 newCurosrArea, u8 newCursorPosition) +static void InitNewCursorPos(u8 newCursorArea, u8 newCursorPosition) { u16 x, y; - sub_8092398(newCurosrArea, newCursorPosition, &x, &y); - gPSSData->newCursorArea = newCurosrArea; - gPSSData->newCursorPosition = newCursorPosition; - gPSSData->cursorTargetX = x; - gPSSData->cursorTargetY = y; + GetCursorCoordsByPos(newCursorArea, newCursorPosition, &x, &y); + gStorage->newCursorArea = newCursorArea; + gStorage->newCursorPosition = newCursorPosition; + gStorage->cursorTargetX = x; + gStorage->cursorTargetY = y; } -static void sub_8092660(void) +static void InitCursorMove(void) { - int r7, r0; + int yDistance, xDistance; - if (gPSSData->cursorVerticalWrap != 0 || gPSSData->cursorHorizontalWrap != 0) - gPSSData->cursorMoveSteps = 12; + if (gStorage->cursorVerticalWrap != 0 || gStorage->cursorHorizontalWrap != 0) + gStorage->cursorMoveSteps = 12; else - gPSSData->cursorMoveSteps = 6; + gStorage->cursorMoveSteps = 6; - if (gPSSData->cursorFlipTimer) - gPSSData->cursorFlipTimer = gPSSData->cursorMoveSteps >> 1; + if (gStorage->cursorFlipTimer) + gStorage->cursorFlipTimer = gStorage->cursorMoveSteps / 2; - switch (gPSSData->cursorVerticalWrap) + switch (gStorage->cursorVerticalWrap) { default: - r7 = gPSSData->cursorTargetY - gPSSData->cursorSprite->y; + yDistance = gStorage->cursorTargetY - gStorage->cursorSprite->y; break; case -1: - r7 = gPSSData->cursorTargetY - 0xc0 - gPSSData->cursorSprite->y; + yDistance = gStorage->cursorTargetY - 192 - gStorage->cursorSprite->y; break; case 1: - r7 = gPSSData->cursorTargetY + 0xc0 - gPSSData->cursorSprite->y; + yDistance = gStorage->cursorTargetY + 192 - gStorage->cursorSprite->y; break; } - switch (gPSSData->cursorHorizontalWrap) + switch (gStorage->cursorHorizontalWrap) { default: - r0 = gPSSData->cursorTargetX - gPSSData->cursorSprite->x; + xDistance = gStorage->cursorTargetX - gStorage->cursorSprite->x; break; case -1: - r0 = gPSSData->cursorTargetX - 0xc0 - gPSSData->cursorSprite->x; + xDistance = gStorage->cursorTargetX - 192 - gStorage->cursorSprite->x; break; case 1: - r0 = gPSSData->cursorTargetX + 0xc0 - gPSSData->cursorSprite->x; + xDistance = gStorage->cursorTargetX + 192 - gStorage->cursorSprite->x; break; } - r7 <<= 8; - r0 <<= 8; - gPSSData->cursorSpeedX = r0 / gPSSData->cursorMoveSteps; - gPSSData->cursorSpeedY = r7 / gPSSData->cursorMoveSteps; - gPSSData->cursorNewX = gPSSData->cursorSprite->x << 8; - gPSSData->cursorNewY = gPSSData->cursorSprite->y << 8; + yDistance <<= 8; + xDistance <<= 8; + gStorage->cursorSpeedX = xDistance / gStorage->cursorMoveSteps; + gStorage->cursorSpeedY = yDistance / gStorage->cursorMoveSteps; + gStorage->cursorNewX = gStorage->cursorSprite->x << 8; + gStorage->cursorNewY = gStorage->cursorSprite->y << 8; } -static void sub_80927E8(u8 newCurosrArea, u8 newCursorPosition) +static void SetCursorPosition(u8 newCursorArea, u8 newCursorPosition) { - sub_8092604(newCurosrArea, newCursorPosition); - sub_8092660(); - if (gPSSData->boxOption != OPTION_MOVE_ITEMS) + InitNewCursorPos(newCursorArea, newCursorPosition); + InitCursorMove(); + if (gStorage->boxOption != OPTION_MOVE_ITEMS) { - if (gPSSData->inBoxMovingMode == 0 && !sIsMonBeingMoved) - StartSpriteAnim(gPSSData->cursorSprite, 1); + if (gStorage->inBoxMovingMode == MOVE_MODE_NORMAL && !sIsMonBeingMoved) + StartSpriteAnim(gStorage->cursorSprite, 1); } else { if (!IsActiveItemMoving()) - StartSpriteAnim(gPSSData->cursorSprite, 1); + StartSpriteAnim(gStorage->cursorSprite, 1); } - if (gPSSData->boxOption == OPTION_MOVE_ITEMS) + if (gStorage->boxOption == OPTION_MOVE_ITEMS) { - if (sBoxCursorArea == CURSOR_AREA_IN_BOX) - sub_8095D44(CURSOR_AREA_IN_BOX, sBoxCursorPosition); - else if (sBoxCursorArea == CURSOR_AREA_IN_PARTY) - sub_8095D44(CURSOR_AREA_IN_PARTY, sBoxCursorPosition); + if (sCursorArea == CURSOR_AREA_IN_BOX) + TryHideItemIconAtPos(CURSOR_AREA_IN_BOX, sCursorPosition); + else if (sCursorArea == CURSOR_AREA_IN_PARTY) + TryHideItemIconAtPos(CURSOR_AREA_IN_PARTY, sCursorPosition); - if (newCurosrArea == CURSOR_AREA_IN_BOX) - sub_8095C84(newCurosrArea, newCursorPosition); - else if (newCurosrArea == CURSOR_AREA_IN_PARTY) - sub_8095C84(newCurosrArea, newCursorPosition); + if (newCursorArea == CURSOR_AREA_IN_BOX) + TryLoadItemIconAtPos(newCursorArea, newCursorPosition); + else if (newCursorArea == CURSOR_AREA_IN_PARTY) + TryLoadItemIconAtPos(newCursorArea, newCursorPosition); } - if (newCurosrArea == CURSOR_AREA_IN_PARTY && sBoxCursorArea != CURSOR_AREA_IN_PARTY) + if (newCursorArea == CURSOR_AREA_IN_PARTY && sCursorArea != CURSOR_AREA_IN_PARTY) { - gPSSData->cursorPrevHorizPos = newCurosrArea; - gPSSData->cursorShadowSprite->invisible = TRUE; + gStorage->cursorPrevPartyPos = 1; + gStorage->cursorShadowSprite->invisible = TRUE; } - switch (newCurosrArea) + switch (newCursorArea) { case CURSOR_AREA_IN_PARTY: - case CURSOR_AREA_BOX: + case CURSOR_AREA_BOX_TITLE: case CURSOR_AREA_BUTTONS: - gPSSData->cursorSprite->oam.priority = 1; - gPSSData->cursorShadowSprite->invisible = TRUE; - gPSSData->cursorShadowSprite->oam.priority = 1; + gStorage->cursorSprite->oam.priority = 1; + gStorage->cursorShadowSprite->invisible = TRUE; + gStorage->cursorShadowSprite->oam.priority = 1; break; case CURSOR_AREA_IN_BOX: - if (gPSSData->inBoxMovingMode != 0) + if (gStorage->inBoxMovingMode != MOVE_MODE_NORMAL) { - gPSSData->cursorSprite->oam.priority = 0; - gPSSData->cursorShadowSprite->invisible = TRUE; + gStorage->cursorSprite->oam.priority = 0; + gStorage->cursorShadowSprite->invisible = TRUE; } else { - gPSSData->cursorSprite->oam.priority = 2; - if (sBoxCursorArea == CURSOR_AREA_IN_BOX && sIsMonBeingMoved) + gStorage->cursorSprite->oam.priority = 2; + if (sCursorArea == CURSOR_AREA_IN_BOX && sIsMonBeingMoved) SetMovingMonPriority(2); } break; } } -static void sub_80929B0(void) +static void DoCursorNewPosUpdate(void) { - sBoxCursorArea = gPSSData->newCursorArea; - sBoxCursorPosition = gPSSData->newCursorPosition; - if (gPSSData->boxOption != OPTION_MOVE_ITEMS) + sCursorArea = gStorage->newCursorArea; + sCursorPosition = gStorage->newCursorPosition; + if (gStorage->boxOption != OPTION_MOVE_ITEMS) { - if (gPSSData->inBoxMovingMode == 0 && !sIsMonBeingMoved) - StartSpriteAnim(gPSSData->cursorSprite, 1); - } - else - { - if (!IsActiveItemMoving()) - StartSpriteAnim(gPSSData->cursorSprite, 1); + if (gStorage->inBoxMovingMode == MOVE_MODE_NORMAL && !sIsMonBeingMoved) + StartSpriteAnim(gStorage->cursorSprite, 1); } + else if (!IsActiveItemMoving()) + StartSpriteAnim(gStorage->cursorSprite, 1); - sub_8093A10(); - switch (sBoxCursorArea) + TrySetDisplayMonData(); + switch (sCursorArea) { case CURSOR_AREA_BUTTONS: SetMovingMonPriority(1); break; - case CURSOR_AREA_BOX: + case CURSOR_AREA_BOX_TITLE: AnimateBoxScrollArrows(TRUE); break; case CURSOR_AREA_IN_PARTY: - gPSSData->cursorShadowSprite->subpriority = 13; + gStorage->cursorShadowSprite->subpriority = 13; SetMovingMonPriority(1); break; case CURSOR_AREA_IN_BOX: - if (gPSSData->inBoxMovingMode == 0) + if (gStorage->inBoxMovingMode == MOVE_MODE_NORMAL) { - gPSSData->cursorSprite->oam.priority = 1; - gPSSData->cursorShadowSprite->oam.priority = 2; - gPSSData->cursorShadowSprite->subpriority = 21; - gPSSData->cursorShadowSprite->invisible = FALSE; + gStorage->cursorSprite->oam.priority = 1; + gStorage->cursorShadowSprite->oam.priority = 2; + gStorage->cursorShadowSprite->subpriority = 21; + gStorage->cursorShadowSprite->invisible = FALSE; SetMovingMonPriority(2); } break; } } -void sub_8092AE4(void) +void SetCursorInParty(void) { u8 partyCount; if (!sIsMonBeingMoved) - { partyCount = 0; - } else { partyCount = CalculatePlayerPartyCount(); if (partyCount >= PARTY_SIZE) partyCount = PARTY_SIZE - 1; } - if (gPSSData->cursorSprite->vFlip) - gPSSData->cursorFlipTimer = 1; - sub_80927E8(CURSOR_AREA_IN_PARTY, partyCount); + if (gStorage->cursorSprite->vFlip) + gStorage->cursorFlipTimer = 1; + SetCursorPosition(CURSOR_AREA_IN_PARTY, partyCount); } -void sub_8092B3C(u8 cursorBoxPosition) +void SetCursorBoxPosition(u8 cursorBoxPosition) { - sub_80927E8(CURSOR_AREA_IN_BOX, cursorBoxPosition); + SetCursorPosition(CURSOR_AREA_IN_BOX, cursorBoxPosition); } -void sub_8092B50(void) +void ClearSavedCursorPos(void) { - gUnknown_2039826 = 0; + sSavedCursorPosition = 0; } -void sub_8092B5C(void) +void SaveCursorPos(void) { - gUnknown_2039826 = sBoxCursorPosition; + sSavedCursorPosition = sCursorPosition; } -u8 sub_8092B70(void) +u8 GetSavedCursorPos(void) { - return gUnknown_2039826; + return sSavedCursorPosition; } -void InitMonPlaceChange(u8 a0) +void InitMonPlaceChange(u8 type) { static bool8 (*const placeChangeFuncs[])(void) = { - MonPlaceChange_Move, - MonPlaceChange_Place, - MonPlaceChange_Shift, + [CHANGE_GRAB] = MonPlaceChange_Grab, + [CHANGE_PLACE] = MonPlaceChange_Place, + [CHANGE_SHIFT] = MonPlaceChange_Shift, }; - gPSSData->monPlaceChangeFunc = placeChangeFuncs[a0]; - gPSSData->monPlaceChangeState = 0; + gStorage->monPlaceChangeFunc = placeChangeFuncs[type]; + gStorage->monPlaceChangeState = 0; } -void sub_8092BAC(bool8 arg0) +void InitMultiMonPlaceChange(bool8 moveCursorUp) { - if (!arg0) - gPSSData->monPlaceChangeFunc = sub_8092E00; + if (!moveCursorUp) + gStorage->monPlaceChangeFunc = MonPlaceChange_DoMoveCursorDown; else - gPSSData->monPlaceChangeFunc = sub_8092E10; + gStorage->monPlaceChangeFunc = MonPlaceChange_DoMoveCursorUp; - gPSSData->monPlaceChangeState = 0; + gStorage->monPlaceChangeState = 0; } bool8 DoMonPlaceChange(void) { - return gPSSData->monPlaceChangeFunc(); + return gStorage->monPlaceChangeFunc(); } -static bool8 MonPlaceChange_Move(void) +static bool8 MonPlaceChange_Grab(void) { - switch (gPSSData->monPlaceChangeState) + switch (gStorage->monPlaceChangeState) { case 0: if (sIsMonBeingMoved) return FALSE; - StartSpriteAnim(gPSSData->cursorSprite, 2); - gPSSData->monPlaceChangeState++; + StartSpriteAnim(gStorage->cursorSprite, 2); + gStorage->monPlaceChangeState++; break; case 1: - if (!sub_8092E20()) + if (!MonPlaceChange_MoveCursorDown()) { - StartSpriteAnim(gPSSData->cursorSprite, 3); + StartSpriteAnim(gStorage->cursorSprite, 3); MoveMon(); - gPSSData->monPlaceChangeState++; + gStorage->monPlaceChangeState++; } break; case 2: - if (!sub_8092E54()) - gPSSData->monPlaceChangeState++; + if (!MonPlaceChange_MoveCursorUp()) + gStorage->monPlaceChangeState++; break; case 3: return FALSE; @@ -438,21 +458,21 @@ static bool8 MonPlaceChange_Move(void) static bool8 MonPlaceChange_Place(void) { - switch (gPSSData->monPlaceChangeState) + switch (gStorage->monPlaceChangeState) { case 0: - if (!sub_8092E20()) + if (!MonPlaceChange_MoveCursorDown()) { - StartSpriteAnim(gPSSData->cursorSprite, 2); + StartSpriteAnim(gStorage->cursorSprite, 2); PlaceMon(); - gPSSData->monPlaceChangeState++; + gStorage->monPlaceChangeState++; } break; case 1: - if (!sub_8092E54()) + if (!MonPlaceChange_MoveCursorUp()) { - StartSpriteAnim(gPSSData->cursorSprite, 0); - gPSSData->monPlaceChangeState++; + StartSpriteAnim(gStorage->cursorSprite, 0); + gStorage->monPlaceChangeState++; } break; case 2: @@ -464,30 +484,30 @@ static bool8 MonPlaceChange_Place(void) static bool8 MonPlaceChange_Shift(void) { - switch (gPSSData->monPlaceChangeState) + switch (gStorage->monPlaceChangeState) { case 0: - switch (sBoxCursorArea) + switch (sCursorArea) { case CURSOR_AREA_IN_PARTY: - gPSSData->shiftBoxId = TOTAL_BOXES_COUNT; + gStorage->shiftBoxId = TOTAL_BOXES_COUNT; break; case CURSOR_AREA_IN_BOX: - gPSSData->shiftBoxId = StorageGetCurrentBox(); + gStorage->shiftBoxId = StorageGetCurrentBox(); break; default: return FALSE; } - StartSpriteAnim(gPSSData->cursorSprite, 2); - sub_8090E08(gPSSData->shiftBoxId, sBoxCursorPosition); - gPSSData->monPlaceChangeState++; + StartSpriteAnim(gStorage->cursorSprite, 2); + SetShiftMonSpritePtr(gStorage->shiftBoxId, sCursorPosition); + gStorage->monPlaceChangeState++; break; case 1: - if (!sub_8090E74()) + if (!ShiftMons()) { - StartSpriteAnim(gPSSData->cursorSprite, 3); - SetShiftedMonData(gPSSData->shiftBoxId, sBoxCursorPosition); - gPSSData->monPlaceChangeState++; + StartSpriteAnim(gStorage->cursorSprite, 3); + SetShiftedMonData(gStorage->shiftBoxId, sCursorPosition); + gStorage->monPlaceChangeState++; } break; case 2: @@ -497,41 +517,41 @@ static bool8 MonPlaceChange_Shift(void) return TRUE; } -static bool8 sub_8092E00(void) +static bool8 MonPlaceChange_DoMoveCursorDown(void) { - return sub_8092E20(); + return MonPlaceChange_MoveCursorDown(); } -static bool8 sub_8092E10(void) +static bool8 MonPlaceChange_DoMoveCursorUp(void) { - return sub_8092E54(); + return MonPlaceChange_MoveCursorUp(); } -static bool8 sub_8092E20(void) +static bool8 MonPlaceChange_MoveCursorDown(void) { - switch (gPSSData->cursorSprite->y2) + switch (gStorage->cursorSprite->y2) { default: - gPSSData->cursorSprite->y2++; + gStorage->cursorSprite->y2++; break; case 0: - gPSSData->cursorSprite->y2++; + gStorage->cursorSprite->y2++; break; - case 8: + case 8: // Cursor has reached bottom return FALSE; } return TRUE; } -static bool8 sub_8092E54(void) +static bool8 MonPlaceChange_MoveCursorUp(void) { - switch (gPSSData->cursorSprite->y2) + switch (gStorage->cursorSprite->y2) { - case 0: + case 0: // Cursor has reached top return FALSE; default: - gPSSData->cursorSprite->y2--; + gStorage->cursorSprite->y2--; break; } @@ -540,17 +560,17 @@ static bool8 sub_8092E54(void) static void MoveMon(void) { - switch (sBoxCursorArea) + switch (sCursorArea) { case CURSOR_AREA_IN_PARTY: - SetMovedMonData(TOTAL_BOXES_COUNT, sBoxCursorPosition); - sub_8090CC0(MODE_PARTY, sBoxCursorPosition); + SetMovedMonData(TOTAL_BOXES_COUNT, sCursorPosition); + SetMovingMonSprite(MODE_PARTY, sCursorPosition); break; case CURSOR_AREA_IN_BOX: - if (gPSSData->inBoxMovingMode == 0) + if (gStorage->inBoxMovingMode == MOVE_MODE_NORMAL) { - SetMovedMonData(StorageGetCurrentBox(), sBoxCursorPosition); - sub_8090CC0(MODE_BOX, sBoxCursorPosition); + SetMovedMonData(StorageGetCurrentBox(), sCursorPosition); + SetMovingMonSprite(MODE_BOX, sCursorPosition); } break; default: @@ -564,16 +584,16 @@ static void PlaceMon(void) { u8 boxId; - switch (sBoxCursorArea) + switch (sCursorArea) { case CURSOR_AREA_IN_PARTY: - SetPlacedMonData(TOTAL_BOXES_COUNT, sBoxCursorPosition); - sub_8090D58(TOTAL_BOXES_COUNT, sBoxCursorPosition); + SetPlacedMonData(TOTAL_BOXES_COUNT, sCursorPosition); + SetPlacedMonSprite(TOTAL_BOXES_COUNT, sCursorPosition); break; case CURSOR_AREA_IN_BOX: boxId = StorageGetCurrentBox(); - SetPlacedMonData(boxId, sBoxCursorPosition); - sub_8090D58(boxId, sBoxCursorPosition); + SetPlacedMonData(boxId, sCursorPosition); + SetPlacedMonSprite(boxId, sCursorPosition); break; default: return; @@ -582,17 +602,17 @@ static void PlaceMon(void) sIsMonBeingMoved = FALSE; } -void sub_8092F54(void) +void DoTrySetDisplayMonData(void) { - sub_8093A10(); + TrySetDisplayMonData(); } static void SetMovedMonData(u8 boxId, u8 position) { if (boxId == TOTAL_BOXES_COUNT) - gPSSData->movingMon = gPlayerParty[sBoxCursorPosition]; + gStorage->movingMon = gPlayerParty[sCursorPosition]; else - BoxMonAtToMon(boxId, position, &gPSSData->movingMon); + BoxMonAtToMon(boxId, position, &gStorage->movingMon); PurgeMonOrBoxMon(boxId, position); sMovingMonOrigBoxId = boxId; @@ -602,13 +622,11 @@ static void SetMovedMonData(u8 boxId, u8 position) static void SetPlacedMonData(u8 boxId, u8 position) { if (boxId == TOTAL_BOXES_COUNT) - { - gPlayerParty[position] = gPSSData->movingMon; - } + gPlayerParty[position] = gStorage->movingMon; else { - BoxMonRestorePP(&gPSSData->movingMon.box); - SetBoxMonAt(boxId, position, &gPSSData->movingMon.box); + BoxMonRestorePP(&gStorage->movingMon.box); + SetBoxMonAt(boxId, position, &gStorage->movingMon.box); } } @@ -623,13 +641,13 @@ static void PurgeMonOrBoxMon(u8 boxId, u8 position) static void SetShiftedMonData(u8 boxId, u8 position) { if (boxId == TOTAL_BOXES_COUNT) - gPSSData->field_2108 = gPlayerParty[position]; + gStorage->tempMon = gPlayerParty[position]; else - BoxMonAtToMon(boxId, position, &gPSSData->field_2108); + BoxMonAtToMon(boxId, position, &gStorage->tempMon); SetPlacedMonData(boxId, position); - gPSSData->movingMon = gPSSData->field_2108; - SetCursorMonData(&gPSSData->movingMon, MODE_PARTY); + gStorage->movingMon = gStorage->tempMon; + SetDisplayMonData(&gStorage->movingMon, MODE_PARTY); sMovingMonOrigBoxId = boxId; sMovingMonOrigBoxPos = position; } @@ -648,245 +666,238 @@ bool8 TryStorePartyMonInBox(u8 boxId) } else { - SetMovedMonData(TOTAL_BOXES_COUNT, sBoxCursorPosition); + SetMovedMonData(TOTAL_BOXES_COUNT, sCursorPosition); SetPlacedMonData(boxId, boxPosition); - DestroyPartyMonIcon(sBoxCursorPosition); + DestroyPartyMonIcon(sCursorPosition); } if (boxId == StorageGetCurrentBox()) - sub_80901EC(boxPosition); + CreateBoxMonIconAtPos(boxPosition); - StartSpriteAnim(gPSSData->cursorSprite, 1); + StartSpriteAnim(gStorage->cursorSprite, 1); return TRUE; } -void sub_8093174(void) +void ResetSelectionAfterDeposit(void) { - StartSpriteAnim(gPSSData->cursorSprite, 0); - sub_8093A10(); + StartSpriteAnim(gStorage->cursorSprite, 0); + TrySetDisplayMonData(); } -void sub_8093194(void) +void InitReleaseMon(void) { u8 mode; if (sIsMonBeingMoved) - mode = MODE_2; - else if (sBoxCursorArea == CURSOR_AREA_IN_PARTY) + mode = MODE_MOVE; + else if (sCursorArea == CURSOR_AREA_IN_PARTY) mode = MODE_PARTY; else mode = MODE_BOX; - sub_8090FC4(mode, sBoxCursorPosition); - StringCopy(gPSSData->field_21E0, gPSSData->displayMonName); + DoReleaseMonAnim(mode, sCursorPosition); + StringCopy(gStorage->releaseMonName, gStorage->displayMonNickname); } -bool8 sub_80931EC(void) +bool8 TryHideReleaseMon(void) { - if (!sub_8091084()) + if (!TryHideReleaseMonSprite()) { - StartSpriteAnim(gPSSData->cursorSprite, 0); + StartSpriteAnim(gStorage->cursorSprite, 0); return FALSE; } else - { return TRUE; - } } void ReleaseMon(void) { u8 boxId; - sub_80910CC(); + DestroyReleaseMonIcon(); if (sIsMonBeingMoved) - { sIsMonBeingMoved = FALSE; - } else { - if (sBoxCursorArea == CURSOR_AREA_IN_PARTY) + if (sCursorArea == CURSOR_AREA_IN_PARTY) boxId = TOTAL_BOXES_COUNT; else boxId = StorageGetCurrentBox(); - PurgeMonOrBoxMon(boxId, sBoxCursorPosition); + PurgeMonOrBoxMon(boxId, sCursorPosition); } - sub_8093A10(); + TrySetDisplayMonData(); } -void sub_8093264(void) +void TrySetCursorFistAnim(void) { if (sIsMonBeingMoved) - StartSpriteAnim(gPSSData->cursorSprite, 3); + StartSpriteAnim(gStorage->cursorSprite, 3); } void InitCanReleaseMonVars(void) { - u16 knownIdx; + u16 knownMoveFlags; if (sIsMonBeingMoved) { - gPSSData->field_2108 = gPSSData->movingMon; - gPSSData->field_2170 = -1; - gPSSData->field_2171 = -1; + gStorage->tempMon = gStorage->movingMon; + gStorage->releaseBoxId = -1; + gStorage->releaseBoxPos = -1; } else { - if (sBoxCursorArea == CURSOR_AREA_IN_PARTY) + if (sCursorArea == CURSOR_AREA_IN_PARTY) { - gPSSData->field_2108 = gPlayerParty[sBoxCursorPosition]; - gPSSData->field_2170 = TOTAL_BOXES_COUNT; + gStorage->tempMon = gPlayerParty[sCursorPosition]; + gStorage->releaseBoxId = TOTAL_BOXES_COUNT; } else { - BoxMonAtToMon(StorageGetCurrentBox(), sBoxCursorPosition, &gPSSData->field_2108); - gPSSData->field_2170 = StorageGetCurrentBox(); + BoxMonAtToMon(StorageGetCurrentBox(), sCursorPosition, &gStorage->tempMon); + gStorage->releaseBoxId = StorageGetCurrentBox(); } - gPSSData->field_2171 = sBoxCursorPosition; + gStorage->releaseBoxPos = sCursorPosition; } - gPSSData->isSurfMon = FALSE; - gPSSData->isDiveMon = FALSE; - gPSSData->field_2176[0] = MOVE_SURF; - gPSSData->field_2176[1] = MOVE_DIVE; - gPSSData->field_2176[2] = MOVES_COUNT; - knownIdx = GetMonData(&gPSSData->field_2108, MON_DATA_KNOWN_MOVES, (u8 *)gPSSData->field_2176); - gPSSData->isSurfMon = knownIdx & 1; - gPSSData->isDiveMon = (knownIdx >> 1) & 1; - if (gPSSData->isSurfMon || gPSSData->isDiveMon) - { - gPSSData->field_216D = 0; - } + gStorage->isSurfMon = FALSE; + gStorage->isDiveMon = FALSE; + gStorage->restrictedMoveList[0] = MOVE_SURF; + gStorage->restrictedMoveList[1] = MOVE_DIVE; + gStorage->restrictedMoveList[2] = MOVES_COUNT; + knownMoveFlags = GetMonData(&gStorage->tempMon, MON_DATA_KNOWN_MOVES, (u8 *)gStorage->restrictedMoveList); + gStorage->isSurfMon = knownMoveFlags & 1; + gStorage->isDiveMon = (knownMoveFlags >> 1) & 1; + if (gStorage->isSurfMon || gStorage->isDiveMon) + gStorage->releaseMonStatusResolved = FALSE; else { - gPSSData->field_216D = 1; - gPSSData->field_216C = 1; + gStorage->releaseMonStatusResolved = TRUE; + gStorage->releaseMonStatus = RELEASE_MON_ALLOWED; } - gPSSData->field_2172 = 0; + gStorage->releaseCheckState = 0; } s8 RunCanReleaseMon(void) { u16 i; - u16 knownMoves; + u16 knownMoveFlags; - if (gPSSData->field_216D) - return gPSSData->field_216C; + if (gStorage->releaseMonStatusResolved) + return gStorage->releaseMonStatus; - switch (gPSSData->field_2172) + switch (gStorage->releaseCheckState) { case 0: for (i = 0; i < PARTY_SIZE; i++) { - if (gPSSData->field_2170 != TOTAL_BOXES_COUNT || gPSSData->field_2171 != i) + if (gStorage->releaseBoxId != TOTAL_BOXES_COUNT || gStorage->releaseBoxPos != i) { - knownMoves = GetMonData(gPlayerParty + i, MON_DATA_KNOWN_MOVES, (u8 *)gPSSData->field_2176); - if (knownMoves & 1) - gPSSData->isSurfMon = FALSE; - if (knownMoves & 2) - gPSSData->isDiveMon = FALSE; + knownMoveFlags = GetMonData(&gPlayerParty[i], MON_DATA_KNOWN_MOVES, (u8 *)gStorage->restrictedMoveList); + if (knownMoveFlags & 1) + gStorage->isSurfMon = FALSE; + if (knownMoveFlags & 2) + gStorage->isDiveMon = FALSE; } } - if (!(gPSSData->isSurfMon || gPSSData->isDiveMon)) + if (!(gStorage->isSurfMon || gStorage->isDiveMon)) { - gPSSData->field_216D = 1; - gPSSData->field_216C = 1; + gStorage->releaseMonStatusResolved = TRUE; + gStorage->releaseMonStatus = RELEASE_MON_ALLOWED; } else { - gPSSData->field_216E = 0; - gPSSData->field_216F = 0; - gPSSData->field_2172++; + gStorage->releaseCheckBoxId = 0; + gStorage->releaseCheckBoxPos = 0; + gStorage->releaseCheckState++; } break; case 1: + // for some reason, check only 5 mons in box each time this function is called for (i = 0; i < 5; i++) { - knownMoves = GetAndCopyBoxMonDataAt(gPSSData->field_216E, gPSSData->field_216F, MON_DATA_KNOWN_MOVES, (u8 *)gPSSData->field_2176); - if (knownMoves != 0 - && !(gPSSData->field_2170 == gPSSData->field_216E && gPSSData->field_2171 == gPSSData->field_216F)) + knownMoveFlags = GetAndCopyBoxMonDataAt(gStorage->releaseCheckBoxId, gStorage->releaseCheckBoxPos, MON_DATA_KNOWN_MOVES, (u8 *)gStorage->restrictedMoveList); + if (knownMoveFlags != 0 + && !(gStorage->releaseBoxId == gStorage->releaseCheckBoxId && gStorage->releaseBoxPos == gStorage->releaseCheckBoxPos)) { - if (knownMoves & 1) - gPSSData->isSurfMon = FALSE; - if (knownMoves & 2) - gPSSData->isDiveMon = FALSE; + if (knownMoveFlags & 1) + gStorage->isSurfMon = FALSE; + if (knownMoveFlags & 2) + gStorage->isDiveMon = FALSE; } - if (++gPSSData->field_216F >= IN_BOX_COUNT) + if (++gStorage->releaseCheckBoxPos >= IN_BOX_COUNT) { - gPSSData->field_216F = 0; - if (++gPSSData->field_216E >= TOTAL_BOXES_COUNT) + gStorage->releaseCheckBoxPos = 0; + if (++gStorage->releaseCheckBoxId >= TOTAL_BOXES_COUNT) { - gPSSData->field_216D = 1; - gPSSData->field_216C = 0; + gStorage->releaseMonStatusResolved = TRUE; + gStorage->releaseMonStatus = RELEASE_MON_NOT_ALLOWED; break; } } } - if (!(gPSSData->isSurfMon || gPSSData->isDiveMon)) + if (!(gStorage->isSurfMon || gStorage->isDiveMon)) { - gPSSData->field_216D = 1; - gPSSData->field_216C = 1; + gStorage->releaseMonStatusResolved = TRUE; + gStorage->releaseMonStatus = RELEASE_MON_ALLOWED; } break; } - return -1; + return RELEASE_MON_UNDETERMINED; } -void sub_8093630(void) +void SaveMovingMon(void) { if (sIsMonBeingMoved) - sMonBeingCarried = gPSSData->movingMon; + sMonBeingCarried = gStorage->movingMon; } -void sub_8093660(void) +void LoadSavedMovingMon(void) { if (sIsMonBeingMoved) { if (sMovingMonOrigBoxId == TOTAL_BOXES_COUNT) - gPSSData->movingMon = sMonBeingCarried; + gStorage->movingMon = sMonBeingCarried; else - gPSSData->movingMon.box = sMonBeingCarried.box; + gStorage->movingMon.box = sMonBeingCarried.box; } } -void sub_80936B8(void) +void InitSummaryScreenData(void) { if (sIsMonBeingMoved) { - sub_8093630(); - gPSSData->field_218C.mon = &sMonBeingCarried; - gPSSData->field_2187 = 0; - gPSSData->field_2186 = 0; - gPSSData->summaryScreenMode = PSS_MODE_NORMAL; + SaveMovingMon(); + gStorage->summaryMonPtr.mon = &sMonBeingCarried; + gStorage->summaryCursorPos = 0; + gStorage->summaryLastIndex = 0; + gStorage->summaryScreenMode = PSS_MODE_NORMAL; } - else if (sBoxCursorArea == CURSOR_AREA_IN_PARTY) + else if (sCursorArea == CURSOR_AREA_IN_PARTY) { - gPSSData->field_218C.mon = gPlayerParty; - gPSSData->field_2187 = sBoxCursorPosition; - gPSSData->field_2186 = CountPartyMons() - 1; - gPSSData->summaryScreenMode = PSS_MODE_NORMAL; + gStorage->summaryMonPtr.mon = gPlayerParty; + gStorage->summaryCursorPos = sCursorPosition; + gStorage->summaryLastIndex = CountPartyMons() - 1; + gStorage->summaryScreenMode = PSS_MODE_NORMAL; } else { - gPSSData->field_218C.box = GetBoxedMonPtr(StorageGetCurrentBox(), 0); - gPSSData->field_2187 = sBoxCursorPosition; - gPSSData->field_2186 = IN_BOX_COUNT - 1; - gPSSData->summaryScreenMode = PSS_MODE_BOX; + gStorage->summaryMonPtr.box = GetBoxedMonPtr(StorageGetCurrentBox(), 0); + gStorage->summaryCursorPos = sCursorPosition; + gStorage->summaryLastIndex = IN_BOX_COUNT - 1; + gStorage->summaryScreenMode = PSS_MODE_BOX; } } -void sub_80937B4(void) +void SetSelectionAfterSummaryScreen(void) { if (sIsMonBeingMoved) - sub_8093660(); + LoadSavedMovingMon(); else - sBoxCursorPosition = GetLastViewedMonIndex(); + sCursorPosition = GetLastViewedMonIndex(); } -// file boundary maybe? - s16 CompactPartySlots(void) { s16 retVal = -1; @@ -902,9 +913,7 @@ s16 CompactPartySlots(void) last++; } else if (retVal == -1) - { retVal = i; - } } for (; last < PARTY_SIZE; last++) ZeroMonData(gPlayerParty + last); @@ -914,23 +923,21 @@ s16 CompactPartySlots(void) void SetMonMarkings(u8 markings) { - gPSSData->displayMonMarkings = markings; + gStorage->displayMonMarkings = markings; if (sIsMonBeingMoved) - { - SetMonData(&gPSSData->movingMon, MON_DATA_MARKINGS, &markings); - } + SetMonData(&gStorage->movingMon, MON_DATA_MARKINGS, &markings); else { - if (sBoxCursorArea == CURSOR_AREA_IN_PARTY) - SetMonData(gPlayerParty + sBoxCursorPosition, MON_DATA_MARKINGS, &markings); - if (sBoxCursorArea == CURSOR_AREA_IN_BOX) - SetCurrentBoxMonData(sBoxCursorPosition, MON_DATA_MARKINGS, &markings); + if (sCursorArea == CURSOR_AREA_IN_PARTY) + SetMonData(gPlayerParty + sCursorPosition, MON_DATA_MARKINGS, &markings); + if (sCursorArea == CURSOR_AREA_IN_BOX) + SetCurrentBoxMonData(sCursorPosition, MON_DATA_MARKINGS, &markings); } } bool8 CanMovePartyMon(void) { - if (sBoxCursorArea == CURSOR_AREA_IN_PARTY && !sIsMonBeingMoved && CountPartyAliveNonEggMonsExcept(sBoxCursorPosition) == 0) + if (sCursorArea == CURSOR_AREA_IN_PARTY && !sIsMonBeingMoved && CountPartyAliveNonEggMonsExcept(sCursorPosition) == 0) return TRUE; else return FALSE; @@ -940,9 +947,9 @@ bool8 CanShiftMon(void) { if (sIsMonBeingMoved) { - if (sBoxCursorArea == CURSOR_AREA_IN_PARTY && CountPartyAliveNonEggMonsExcept(sBoxCursorPosition) == 0) + if (sCursorArea == CURSOR_AREA_IN_PARTY && CountPartyAliveNonEggMonsExcept(sCursorPosition) == 0) { - if (gPSSData->displayMonIsEgg || GetMonData(&gPSSData->movingMon, MON_DATA_HP) == 0) + if (gStorage->displayMonIsEgg || GetMonData(&gStorage->movingMon, MON_DATA_HP) == 0) return FALSE; } return TRUE; @@ -957,146 +964,153 @@ bool8 IsMonBeingMoved(void) bool8 IsCursorOnBoxTitle(void) { - return (sBoxCursorArea == CURSOR_AREA_BOX); + return (sCursorArea == CURSOR_AREA_BOX_TITLE); } bool8 IsCursorOnCloseBox(void) { - return (sBoxCursorArea == CURSOR_AREA_BUTTONS && sBoxCursorPosition == 1); + return (sCursorArea == CURSOR_AREA_BUTTONS && sCursorPosition == 1); } bool8 IsCursorInBox(void) { - return (sBoxCursorArea == CURSOR_AREA_IN_BOX); + return (sCursorArea == CURSOR_AREA_IN_BOX); } -static void sub_8093A10(void) +static void TrySetDisplayMonData(void) { - gPSSData->setMosaic = (sIsMonBeingMoved == FALSE); + gStorage->setMosaic = (sIsMonBeingMoved == FALSE); if (!sIsMonBeingMoved) { - switch (sBoxCursorArea) + switch (sCursorArea) { case CURSOR_AREA_IN_PARTY: - if (sBoxCursorPosition < PARTY_SIZE) + if (sCursorPosition < PARTY_SIZE) { - SetCursorMonData(&gPlayerParty[sBoxCursorPosition], MODE_PARTY); + SetDisplayMonData(&gPlayerParty[sCursorPosition], MODE_PARTY); break; } // fallthrough case CURSOR_AREA_BUTTONS: - case CURSOR_AREA_BOX: - SetCursorMonData(NULL, MODE_2); + case CURSOR_AREA_BOX_TITLE: + SetDisplayMonData(NULL, MODE_MOVE); break; case CURSOR_AREA_IN_BOX: - SetCursorMonData(GetBoxedMonPtr(StorageGetCurrentBox(), sBoxCursorPosition), MODE_BOX); + SetDisplayMonData(GetBoxedMonPtr(StorageGetCurrentBox(), sCursorPosition), MODE_BOX); break; } } } -static void sub_8093AAC(void) +static void ReshowDisplayMon(void) { if (sIsMonBeingMoved) - SetCursorMonData(&sMonBeingCarried, MODE_PARTY); + SetDisplayMonData(&sMonBeingCarried, MODE_PARTY); else - sub_8093A10(); + TrySetDisplayMonData(); } -static void SetCursorMonData(void *pokemon, u8 mode) +#define displayMonNicknameText displayMonTexts[0] +#define displayMonSpeciesNameText displayMonTexts[1] +#define displayMonGenderAndLevelText displayMonTexts[2] +#define displayMonItemNameText displayMonTexts[3] + +static void SetDisplayMonData(void *pokemon, u8 mode) { u8 *txtPtr; u16 gender; bool8 sanityIsBagEgg; - gPSSData->displayMonItemId = 0; + gStorage->displayMonItemId = ITEM_NONE; gender = MON_MALE; sanityIsBagEgg = FALSE; if (mode == MODE_PARTY) { struct Pokemon *mon = (struct Pokemon *)pokemon; - gPSSData->displayMonSpecies = GetMonData(mon, MON_DATA_SPECIES2); - if (gPSSData->displayMonSpecies != SPECIES_NONE) + gStorage->displayMonSpecies = GetMonData(mon, MON_DATA_SPECIES2); + if (gStorage->displayMonSpecies != SPECIES_NONE) { sanityIsBagEgg = GetMonData(mon, MON_DATA_SANITY_IS_BAD_EGG); if (sanityIsBagEgg) - gPSSData->displayMonIsEgg = TRUE; + gStorage->displayMonIsEgg = TRUE; else - gPSSData->displayMonIsEgg = GetMonData(mon, MON_DATA_IS_EGG); + gStorage->displayMonIsEgg = GetMonData(mon, MON_DATA_IS_EGG); - GetMonData(mon, MON_DATA_NICKNAME, gPSSData->displayMonName); - StringGet_Nickname(gPSSData->displayMonName); - gPSSData->displayMonLevel = GetMonData(mon, MON_DATA_LEVEL); - gPSSData->displayMonMarkings = GetMonData(mon, MON_DATA_MARKINGS); - gPSSData->displayMonPersonality = GetMonData(mon, MON_DATA_PERSONALITY); - gPSSData->displayMonPalette = GetMonFrontSpritePal(mon); + GetMonData(mon, MON_DATA_NICKNAME, gStorage->displayMonNickname); + StringGet_Nickname(gStorage->displayMonNickname); + gStorage->displayMonLevel = GetMonData(mon, MON_DATA_LEVEL); + gStorage->displayMonMarkings = GetMonData(mon, MON_DATA_MARKINGS); + gStorage->displayMonPersonality = GetMonData(mon, MON_DATA_PERSONALITY); + gStorage->displayMonPalette = GetMonFrontSpritePal(mon); gender = GetMonGender(mon); - gPSSData->displayMonItemId = GetMonData(mon, MON_DATA_HELD_ITEM); + gStorage->displayMonItemId = GetMonData(mon, MON_DATA_HELD_ITEM); } } else if (mode == MODE_BOX) { struct BoxPokemon *boxMon = (struct BoxPokemon *)pokemon; - gPSSData->displayMonSpecies = GetBoxMonData(pokemon, MON_DATA_SPECIES2); - if (gPSSData->displayMonSpecies != SPECIES_NONE) + gStorage->displayMonSpecies = GetBoxMonData(pokemon, MON_DATA_SPECIES2); + if (gStorage->displayMonSpecies != SPECIES_NONE) { u32 otId = GetBoxMonData(boxMon, MON_DATA_OT_ID); sanityIsBagEgg = GetBoxMonData(boxMon, MON_DATA_SANITY_IS_BAD_EGG); if (sanityIsBagEgg) - gPSSData->displayMonIsEgg = TRUE; + gStorage->displayMonIsEgg = TRUE; else - gPSSData->displayMonIsEgg = GetBoxMonData(boxMon, MON_DATA_IS_EGG); + gStorage->displayMonIsEgg = GetBoxMonData(boxMon, MON_DATA_IS_EGG); - - GetBoxMonData(boxMon, MON_DATA_NICKNAME, gPSSData->displayMonName); - StringGet_Nickname(gPSSData->displayMonName); - gPSSData->displayMonLevel = GetLevelFromBoxMonExp(boxMon); - gPSSData->displayMonMarkings = GetBoxMonData(boxMon, MON_DATA_MARKINGS); - gPSSData->displayMonPersonality = GetBoxMonData(boxMon, MON_DATA_PERSONALITY); - gPSSData->displayMonPalette = GetMonSpritePalFromSpeciesAndPersonality(gPSSData->displayMonSpecies, otId, gPSSData->displayMonPersonality); - gender = GetGenderFromSpeciesAndPersonality(gPSSData->displayMonSpecies, gPSSData->displayMonPersonality); - gPSSData->displayMonItemId = GetBoxMonData(boxMon, MON_DATA_HELD_ITEM); + GetBoxMonData(boxMon, MON_DATA_NICKNAME, gStorage->displayMonNickname); + StringGet_Nickname(gStorage->displayMonNickname); + gStorage->displayMonLevel = GetLevelFromBoxMonExp(boxMon); + gStorage->displayMonMarkings = GetBoxMonData(boxMon, MON_DATA_MARKINGS); + gStorage->displayMonPersonality = GetBoxMonData(boxMon, MON_DATA_PERSONALITY); + gStorage->displayMonPalette = GetMonSpritePalFromSpeciesAndPersonality(gStorage->displayMonSpecies, otId, gStorage->displayMonPersonality); + gender = GetGenderFromSpeciesAndPersonality(gStorage->displayMonSpecies, gStorage->displayMonPersonality); + gStorage->displayMonItemId = GetBoxMonData(boxMon, MON_DATA_HELD_ITEM); } } else { - gPSSData->displayMonSpecies = SPECIES_NONE; - gPSSData->displayMonItemId = 0; + gStorage->displayMonSpecies = SPECIES_NONE; + gStorage->displayMonItemId = ITEM_NONE; } - if (gPSSData->displayMonSpecies == SPECIES_NONE) + if (gStorage->displayMonSpecies == SPECIES_NONE) { - StringFill(gPSSData->displayMonName, CHAR_SPACE, 5); - StringFill(gPSSData->displayMonTexts[0], CHAR_SPACE, 8); - StringFill(gPSSData->displayMonTexts[1], CHAR_SPACE, 8); - StringFill(gPSSData->displayMonTexts[2], CHAR_SPACE, 8); - StringFill(gPSSData->displayMonTexts[3], CHAR_SPACE, 8); + StringFill(gStorage->displayMonNickname, CHAR_SPACE, 5); + StringFill(gStorage->displayMonNicknameText, CHAR_SPACE, 8); + StringFill(gStorage->displayMonSpeciesNameText, CHAR_SPACE, 8); + StringFill(gStorage->displayMonGenderAndLevelText, CHAR_SPACE, 8); + StringFill(gStorage->displayMonItemNameText, CHAR_SPACE, 8); } - else if (gPSSData->displayMonIsEgg) + else if (gStorage->displayMonIsEgg) { if (sanityIsBagEgg) - StringCopyPadded(gPSSData->displayMonTexts[0], gPSSData->displayMonName, CHAR_SPACE, 5); + StringCopyPadded(gStorage->displayMonNicknameText, gStorage->displayMonNickname, CHAR_SPACE, 5); else - StringCopyPadded(gPSSData->displayMonTexts[0], gText_EggNickname, CHAR_SPACE, 8); + StringCopyPadded(gStorage->displayMonNicknameText, gText_EggNickname, CHAR_SPACE, 8); - StringFill(gPSSData->displayMonTexts[1], CHAR_SPACE, 8); - StringFill(gPSSData->displayMonTexts[2], CHAR_SPACE, 8); - StringFill(gPSSData->displayMonTexts[3], CHAR_SPACE, 8); + StringFill(gStorage->displayMonSpeciesNameText, CHAR_SPACE, 8); + StringFill(gStorage->displayMonGenderAndLevelText, CHAR_SPACE, 8); + StringFill(gStorage->displayMonItemNameText, CHAR_SPACE, 8); } else { - if (gPSSData->displayMonSpecies == SPECIES_NIDORAN_F || gPSSData->displayMonSpecies == SPECIES_NIDORAN_M) + if (gStorage->displayMonSpecies == SPECIES_NIDORAN_F || gStorage->displayMonSpecies == SPECIES_NIDORAN_M) gender = MON_GENDERLESS; - StringCopyPadded(gPSSData->displayMonTexts[0], gPSSData->displayMonName, CHAR_SPACE, 5); + // Buffer nickname + StringCopyPadded(gStorage->displayMonNicknameText, gStorage->displayMonNickname, CHAR_SPACE, 5); - txtPtr = gPSSData->displayMonTexts[1]; + // Buffer species name + txtPtr = gStorage->displayMonSpeciesNameText; *(txtPtr)++ = CHAR_SLASH; - StringCopyPadded(txtPtr, gSpeciesNames[gPSSData->displayMonSpecies], CHAR_SPACE, 5); + StringCopyPadded(txtPtr, gSpeciesNames[gStorage->displayMonSpecies], CHAR_SPACE, 5); - txtPtr = gPSSData->displayMonTexts[2]; + // Buffer gender and level + txtPtr = gStorage->displayMonGenderAndLevelText; *(txtPtr)++ = EXT_CTRL_CODE_BEGIN; *(txtPtr)++ = EXT_CTRL_CODE_COLOR_HIGHLIGHT_SHADOW; switch (gender) @@ -1128,377 +1142,356 @@ static void SetCursorMonData(void *pokemon, u8 mode) *(txtPtr++) = TEXT_COLOR_LIGHT_GRAY; *(txtPtr++) = CHAR_SPACE; *(txtPtr++) = CHAR_EXTRA_SYMBOL; - *(txtPtr++) = 5; // LV_2 + *(txtPtr++) = CHAR_LV_2; - txtPtr = ConvertIntToDecimalStringN(txtPtr, gPSSData->displayMonLevel, STR_CONV_MODE_LEFT_ALIGN, 3); + txtPtr = ConvertIntToDecimalStringN(txtPtr, gStorage->displayMonLevel, STR_CONV_MODE_LEFT_ALIGN, 3); txtPtr[0] = CHAR_SPACE; txtPtr[1] = EOS; - if (gPSSData->displayMonItemId != 0) - StringCopyPadded(gPSSData->displayMonTexts[3], ItemId_GetName(gPSSData->displayMonItemId), CHAR_SPACE, 8); + // Buffer item name + if (gStorage->displayMonItemId != ITEM_NONE) + StringCopyPadded(gStorage->displayMonItemNameText, ItemId_GetName(gStorage->displayMonItemId), CHAR_SPACE, 8); else - StringFill(gPSSData->displayMonTexts[3], CHAR_SPACE, 8); + StringFill(gStorage->displayMonItemNameText, CHAR_SPACE, 8); } } +#undef displayMonNicknameText +#undef displayMonSpeciesNameText +#undef displayMonGenderAndLevelText +#undef displayMonItemNameText + static u8 HandleInput_InBox(void) { - switch (gPSSData->inBoxMovingMode) + switch (gStorage->inBoxMovingMode) { - case 0: + case MOVE_MODE_NORMAL: default: - return InBoxInput_Normal(); - case 1: - return InBoxInput_GrabbingMultiple(); - case 2: - return InBoxInput_MovingMultiple(); + return HandleInput_InBox_Normal(); + case MOVE_MODE_MULTIPLE_SELECTING: + return HandleInput_InBox_GrabbingMultiple(); + case MOVE_MODE_MULTIPLE_MOVING: + return HandleInput_InBox_MovingMultiple(); } } -static u8 InBoxInput_Normal(void) +static u8 HandleInput_InBox_Normal(void) { - u8 retVal; + u8 input; s8 cursorArea; s8 cursorPosition; do { - cursorArea = sBoxCursorArea; - cursorPosition = sBoxCursorPosition; - gPSSData->cursorVerticalWrap = 0; - gPSSData->cursorHorizontalWrap = 0; - gPSSData->cursorFlipTimer = 0; + cursorArea = sCursorArea; + cursorPosition = sCursorPosition; + gStorage->cursorVerticalWrap = 0; + gStorage->cursorHorizontalWrap = 0; + gStorage->cursorFlipTimer = 0; if (JOY_REPT(DPAD_UP)) { - retVal = TRUE; - if (sBoxCursorPosition >= IN_BOX_ROWS) - { - cursorPosition -= IN_BOX_ROWS; - } + input = INPUT_MOVE_CURSOR; + if (sCursorPosition >= IN_BOX_COLUMNS) + cursorPosition -= IN_BOX_COLUMNS; else { - cursorArea = CURSOR_AREA_BOX; + cursorArea = CURSOR_AREA_BOX_TITLE; cursorPosition = 0; } break; } else if (JOY_REPT(DPAD_DOWN)) { - retVal = TRUE; - cursorPosition += IN_BOX_ROWS; + input = INPUT_MOVE_CURSOR; + cursorPosition += IN_BOX_COLUMNS; if (cursorPosition >= IN_BOX_COUNT) { cursorArea = CURSOR_AREA_BUTTONS; cursorPosition -= IN_BOX_COUNT; cursorPosition /= 3; - gPSSData->cursorVerticalWrap = 1; - gPSSData->cursorFlipTimer = 1; + gStorage->cursorVerticalWrap = 1; + gStorage->cursorFlipTimer = 1; } break; } else if (JOY_REPT(DPAD_LEFT)) { - retVal = TRUE; - if (sBoxCursorPosition % IN_BOX_ROWS != 0) - { + input = INPUT_MOVE_CURSOR; + if (sCursorPosition % IN_BOX_COLUMNS != 0) cursorPosition--; - } else { - gPSSData->cursorHorizontalWrap = -1; - cursorPosition += (IN_BOX_ROWS - 1); + gStorage->cursorHorizontalWrap = -1; + cursorPosition += (IN_BOX_COLUMNS - 1); } break; } else if (JOY_REPT(DPAD_RIGHT)) { - retVal = TRUE; - if ((sBoxCursorPosition + 1) % IN_BOX_ROWS != 0) - { + input = INPUT_MOVE_CURSOR; + if ((sCursorPosition + 1) % IN_BOX_COLUMNS != 0) cursorPosition++; - } else { - gPSSData->cursorHorizontalWrap = 1; - cursorPosition -= (IN_BOX_ROWS - 1); + gStorage->cursorHorizontalWrap = 1; + cursorPosition -= (IN_BOX_COLUMNS - 1); } break; } else if (JOY_NEW(START_BUTTON)) { - retVal = TRUE; - cursorArea = CURSOR_AREA_BOX; + input = INPUT_MOVE_CURSOR; + cursorArea = CURSOR_AREA_BOX_TITLE; cursorPosition = 0; break; } - if ((JOY_NEW(A_BUTTON)) && sub_8094924()) + if ((JOY_NEW(A_BUTTON)) && SetSelectionMenuTexts()) { - if (!sCanOnlyMove) - return 8; + if (!sInMultiMoveMode) + return INPUT_IN_MENU; - if (gPSSData->boxOption != OPTION_MOVE_MONS || sIsMonBeingMoved == TRUE) + if (gStorage->boxOption != OPTION_MOVE_MONS || sIsMonBeingMoved == TRUE) { - switch (sub_8094E50(0)) + switch (GetMenuItemTextId(0)) { - case PC_TEXT_STORE: - return 11; - case PC_TEXT_WITHDRAW: - return 12; - case PC_TEXT_MOVE: - return 13; - case PC_TEXT_SHIFT: - return 14; - case PC_TEXT_PLACE: - return 15; - case PC_TEXT_TAKE: - return 16; - case PC_TEXT_GIVE: - return 17; - case PC_TEXT_SWITCH: - return 18; + case MENU_TEXT_STORE: + return INPUT_DEPOSIT; + case MENU_TEXT_WITHDRAW: + return INPUT_WITHDRAW; + case MENU_TEXT_MOVE: + return INPUT_MOVE_MON; + case MENU_TEXT_SHIFT: + return INPUT_SHIFT_MON; + case MENU_TEXT_PLACE: + return INPUT_PLACE_MON; + case MENU_TEXT_TAKE: + return INPUT_TAKE_ITEM; + case MENU_TEXT_GIVE: + return INPUT_GIVE_ITEM; + case MENU_TEXT_SWITCH: + return INPUT_SWITCH_ITEMS; } } else { - gPSSData->inBoxMovingMode = 1; - return 20; + gStorage->inBoxMovingMode = MOVE_MODE_MULTIPLE_SELECTING; + return INPUT_MULTIMOVE_START; } } if (JOY_NEW(B_BUTTON)) - return 19; + return INPUT_PRESSED_B; if (gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_LR) { if (JOY_HELD(L_BUTTON)) - return 10; + return INPUT_SCROLL_LEFT; if (JOY_HELD(R_BUTTON)) - return 9; + return INPUT_SCROLL_RIGHT; } if (JOY_NEW(SELECT_BUTTON)) { - sub_8094C84(); - return 0; + ToggleCursorMultiMoveMode(); + return INPUT_NONE; } - retVal = 0; + input = INPUT_NONE; - } while (0); + } while (FALSE); - if (retVal) - sub_80927E8(cursorArea, cursorPosition); + if (input != INPUT_NONE) + SetCursorPosition(cursorArea, cursorPosition); - return retVal; + return input; } -static u8 InBoxInput_GrabbingMultiple(void) +static u8 HandleInput_InBox_GrabbingMultiple(void) { if (JOY_HELD(A_BUTTON)) { if (JOY_REPT(DPAD_UP)) { - if (sBoxCursorPosition / IN_BOX_ROWS != 0) + if (sCursorPosition / IN_BOX_COLUMNS != 0) { - sub_80927E8(CURSOR_AREA_IN_BOX, sBoxCursorPosition - IN_BOX_ROWS); - return 21; + SetCursorPosition(CURSOR_AREA_IN_BOX, sCursorPosition - IN_BOX_COLUMNS); + return INPUT_MULTIMOVE_CHANGE_SELECTION; } else - { - return 24; - } + return INPUT_MULTIMOVE_UNABLE; } else if (JOY_REPT(DPAD_DOWN)) { - if (sBoxCursorPosition + IN_BOX_ROWS < IN_BOX_COUNT) + if (sCursorPosition + IN_BOX_COLUMNS < IN_BOX_COUNT) { - sub_80927E8(CURSOR_AREA_IN_BOX, sBoxCursorPosition + IN_BOX_ROWS); - return 21; + SetCursorPosition(CURSOR_AREA_IN_BOX, sCursorPosition + IN_BOX_COLUMNS); + return INPUT_MULTIMOVE_CHANGE_SELECTION; } else - { - return 24; - } + return INPUT_MULTIMOVE_UNABLE; } else if (JOY_REPT(DPAD_LEFT)) { - if (sBoxCursorPosition % IN_BOX_ROWS != 0) + if (sCursorPosition % IN_BOX_COLUMNS != 0) { - sub_80927E8(CURSOR_AREA_IN_BOX, sBoxCursorPosition - 1); - return 21; + SetCursorPosition(CURSOR_AREA_IN_BOX, sCursorPosition - 1); + return INPUT_MULTIMOVE_CHANGE_SELECTION; } else - { - return 24; - } + return INPUT_MULTIMOVE_UNABLE; } else if (JOY_REPT(DPAD_RIGHT)) { - if ((sBoxCursorPosition + 1) % IN_BOX_ROWS != 0) + if ((sCursorPosition + 1) % IN_BOX_COLUMNS != 0) { - sub_80927E8(CURSOR_AREA_IN_BOX, sBoxCursorPosition + 1); - return 21; + SetCursorPosition(CURSOR_AREA_IN_BOX, sCursorPosition + 1); + return INPUT_MULTIMOVE_CHANGE_SELECTION; } else - { - return 24; - } + return INPUT_MULTIMOVE_UNABLE; } else - { - return 0; - } + return INPUT_NONE; } else { - if (sub_8095AA0() == sBoxCursorPosition) + if (MultiMove_GetOriginPosition() == sCursorPosition) { - gPSSData->inBoxMovingMode = 0; - gPSSData->cursorShadowSprite->invisible = FALSE; - return 22; + gStorage->inBoxMovingMode = MOVE_MODE_NORMAL; + gStorage->cursorShadowSprite->invisible = FALSE; + return INPUT_MULTIMOVE_SINGLE; } else { - sIsMonBeingMoved = (gPSSData->displayMonSpecies != SPECIES_NONE); - gPSSData->inBoxMovingMode = 2; + sIsMonBeingMoved = (gStorage->displayMonSpecies != SPECIES_NONE); + gStorage->inBoxMovingMode = MOVE_MODE_MULTIPLE_MOVING; sMovingMonOrigBoxId = StorageGetCurrentBox(); - return 23; + return INPUT_MULTIMOVE_GRAB_SELECTION; } } } -static u8 InBoxInput_MovingMultiple(void) +static u8 HandleInput_InBox_MovingMultiple(void) { if (JOY_REPT(DPAD_UP)) { - if (sub_8095474(0)) + if (MultiMove_TryMoveGroup(0)) { - sub_80927E8(CURSOR_AREA_IN_BOX, sBoxCursorPosition - IN_BOX_ROWS); - return 25; + SetCursorPosition(CURSOR_AREA_IN_BOX, sCursorPosition - IN_BOX_COLUMNS); + return INPUT_MULTIMOVE_MOVE_MONS; } else - { - return 24; - } + return INPUT_MULTIMOVE_UNABLE; } else if (JOY_REPT(DPAD_DOWN)) { - if (sub_8095474(1)) + if (MultiMove_TryMoveGroup(1)) { - sub_80927E8(CURSOR_AREA_IN_BOX, sBoxCursorPosition + IN_BOX_ROWS); - return 25; + SetCursorPosition(CURSOR_AREA_IN_BOX, sCursorPosition + IN_BOX_COLUMNS); + return INPUT_MULTIMOVE_MOVE_MONS; } else - { - return 24; - } + return INPUT_MULTIMOVE_UNABLE; } else if (JOY_REPT(DPAD_LEFT)) { - if (sub_8095474(2)) + if (MultiMove_TryMoveGroup(2)) { - sub_80927E8(CURSOR_AREA_IN_BOX, sBoxCursorPosition - 1); - return 25; + SetCursorPosition(CURSOR_AREA_IN_BOX, sCursorPosition - 1); + return INPUT_MULTIMOVE_MOVE_MONS; } else - { - return 10; - } + return INPUT_SCROLL_LEFT; } else if (JOY_REPT(DPAD_RIGHT)) { - if (sub_8095474(3)) + if (MultiMove_TryMoveGroup(3)) { - sub_80927E8(CURSOR_AREA_IN_BOX, sBoxCursorPosition + 1); - return 25; + SetCursorPosition(CURSOR_AREA_IN_BOX, sCursorPosition + 1); + return INPUT_MULTIMOVE_MOVE_MONS; } else - { - return 9; - } + return INPUT_SCROLL_RIGHT; } else if (JOY_NEW(A_BUTTON)) { - if (sub_8095ABC()) + if (MultiMove_CanPlaceSelection()) { sIsMonBeingMoved = FALSE; - gPSSData->inBoxMovingMode = 0; - return 26; + gStorage->inBoxMovingMode = MOVE_MODE_NORMAL; + return INPUT_MULTIMOVE_PLACE_MONS; } else - { - return 24; - } + return INPUT_MULTIMOVE_UNABLE; } else if (JOY_NEW(B_BUTTON)) - { - return 24; - } + return INPUT_MULTIMOVE_UNABLE; + else { if (gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_LR) { if (JOY_HELD(L_BUTTON)) - return 10; + return INPUT_SCROLL_LEFT; if (JOY_HELD(R_BUTTON)) - return 9; + return INPUT_SCROLL_RIGHT; } - return 0; + return INPUT_NONE; } } static u8 HandleInput_InParty(void) { - u8 retVal; + u8 input; bool8 gotoBox; s8 cursorArea; s8 cursorPosition; do { - cursorArea = sBoxCursorArea; - cursorPosition = sBoxCursorPosition; - gPSSData->cursorHorizontalWrap = 0; - gPSSData->cursorVerticalWrap = 0; - gPSSData->cursorFlipTimer = 0; + cursorArea = sCursorArea; + cursorPosition = sCursorPosition; + gStorage->cursorHorizontalWrap = 0; + gStorage->cursorVerticalWrap = 0; + gStorage->cursorFlipTimer = 0; gotoBox = FALSE; - retVal = 0; + input = INPUT_NONE; if (JOY_REPT(DPAD_UP)) { if (--cursorPosition < 0) cursorPosition = PARTY_SIZE; - if (cursorPosition != sBoxCursorPosition) - retVal = 1; + if (cursorPosition != sCursorPosition) + input = INPUT_MOVE_CURSOR; break; } else if (JOY_REPT(DPAD_DOWN)) { if (++cursorPosition > PARTY_SIZE) cursorPosition = 0; - if (cursorPosition != sBoxCursorPosition) - retVal = 1; + if (cursorPosition != sCursorPosition) + input = INPUT_MOVE_CURSOR; break; } - else if (JOY_REPT(DPAD_LEFT) && sBoxCursorPosition != 0) + else if (JOY_REPT(DPAD_LEFT) && sCursorPosition != 0) { - retVal = 1; - gPSSData->cursorPrevHorizPos = sBoxCursorPosition; + input = INPUT_MOVE_CURSOR; + gStorage->cursorPrevPartyPos = sCursorPosition; cursorPosition = 0; break; } else if (JOY_REPT(DPAD_RIGHT)) { - if (sBoxCursorPosition == 0) + if (sCursorPosition == 0) { - retVal = 1; - cursorPosition = gPSSData->cursorPrevHorizPos; + input = INPUT_MOVE_CURSOR; + cursorPosition = gStorage->cursorPrevPartyPos; } else { - retVal = 6; + input = INPUT_HIDE_PARTY; cursorArea = CURSOR_AREA_IN_BOX; cursorPosition = 0; } @@ -1507,213 +1500,209 @@ static u8 HandleInput_InParty(void) if (JOY_NEW(A_BUTTON)) { - if (sBoxCursorPosition == PARTY_SIZE) + if (sCursorPosition == PARTY_SIZE) { - if (gPSSData->boxOption == OPTION_DEPOSIT) - return 4; + if (gStorage->boxOption == OPTION_DEPOSIT) + return INPUT_CLOSE_BOX; gotoBox = TRUE; } - else if (sub_8094924()) + else if (SetSelectionMenuTexts()) { - if (!sCanOnlyMove) - return 8; + if (!sInMultiMoveMode) + return INPUT_IN_MENU; - switch (sub_8094E50(0)) + switch (GetMenuItemTextId(0)) { - case PC_TEXT_STORE: - return 11; - case PC_TEXT_WITHDRAW: - return 12; - case PC_TEXT_MOVE: - return 13; - case PC_TEXT_SHIFT: - return 14; - case PC_TEXT_PLACE: - return 15; - case PC_TEXT_TAKE: - return 16; - case PC_TEXT_GIVE: - return 17; - case PC_TEXT_SWITCH: - return 18; + case MENU_TEXT_STORE: + return INPUT_DEPOSIT; + case MENU_TEXT_WITHDRAW: + return INPUT_WITHDRAW; + case MENU_TEXT_MOVE: + return INPUT_MOVE_MON; + case MENU_TEXT_SHIFT: + return INPUT_SHIFT_MON; + case MENU_TEXT_PLACE: + return INPUT_PLACE_MON; + case MENU_TEXT_TAKE: + return INPUT_TAKE_ITEM; + case MENU_TEXT_GIVE: + return INPUT_GIVE_ITEM; + case MENU_TEXT_SWITCH: + return INPUT_SWITCH_ITEMS; } } } if (JOY_NEW(B_BUTTON)) { - if (gPSSData->boxOption == OPTION_DEPOSIT) - return 19; + if (gStorage->boxOption == OPTION_DEPOSIT) + return INPUT_PRESSED_B; gotoBox = TRUE; } if (gotoBox) { - retVal = 6; + input = INPUT_HIDE_PARTY; cursorArea = CURSOR_AREA_IN_BOX; cursorPosition = 0; } else if (JOY_NEW(SELECT_BUTTON)) { - sub_8094C84(); - return 0; + ToggleCursorMultiMoveMode(); + return INPUT_NONE; } - } while (0); + } while (FALSE); - if (retVal != 0) - { - if (retVal != 6) - sub_80927E8(cursorArea, cursorPosition); - } + if (input != INPUT_NONE && input != INPUT_HIDE_PARTY) + SetCursorPosition(cursorArea, cursorPosition); - return retVal; + return input; } -static u8 HandleInput_OnBox(void) +static u8 HandleInput_BoxTitle(void) { - u8 retVal; + u8 input; s8 cursorArea; s8 cursorPosition; do { - gPSSData->cursorHorizontalWrap = 0; - gPSSData->cursorVerticalWrap = 0; - gPSSData->cursorFlipTimer = 0; + gStorage->cursorHorizontalWrap = 0; + gStorage->cursorVerticalWrap = 0; + gStorage->cursorFlipTimer = 0; if (JOY_REPT(DPAD_UP)) { - retVal = 1; + input = INPUT_MOVE_CURSOR; cursorArea = CURSOR_AREA_BUTTONS; cursorPosition = 0; - gPSSData->cursorFlipTimer = 1; + gStorage->cursorFlipTimer = 1; break; } else if (JOY_REPT(DPAD_DOWN)) { - retVal = 1; + input = INPUT_MOVE_CURSOR; cursorArea = CURSOR_AREA_IN_BOX; cursorPosition = 2; break; } if (JOY_HELD(DPAD_LEFT)) - return 10; + return INPUT_SCROLL_LEFT; if (JOY_HELD(DPAD_RIGHT)) - return 9; + return INPUT_SCROLL_RIGHT; if (gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_LR) { if (JOY_HELD(L_BUTTON)) - return 10; + return INPUT_SCROLL_LEFT; if (JOY_HELD(R_BUTTON)) - return 9; + return INPUT_SCROLL_RIGHT; } if (JOY_NEW(A_BUTTON)) { AnimateBoxScrollArrows(FALSE); AddBoxMenu(); - return 7; + return INPUT_BOX_OPTIONS; } if (JOY_NEW(B_BUTTON)) - return 19; + return INPUT_PRESSED_B; if (JOY_NEW(SELECT_BUTTON)) { - sub_8094C84(); - return 0; + ToggleCursorMultiMoveMode(); + return INPUT_NONE; } - retVal = 0; + input = INPUT_NONE; - } while (0); + } while (FALSE); - if (retVal) + if (input != INPUT_NONE) { - if (cursorArea != CURSOR_AREA_BOX) + if (cursorArea != CURSOR_AREA_BOX_TITLE) AnimateBoxScrollArrows(FALSE); - sub_80927E8(cursorArea, cursorPosition); + SetCursorPosition(cursorArea, cursorPosition); } - return retVal; + return input; } static u8 HandleInput_OnButtons(void) { - u8 retVal; + u8 input; s8 cursorArea; s8 cursorPosition; s8 prevPos; do { - cursorArea = sBoxCursorArea; - cursorPosition = sBoxCursorPosition; - gPSSData->cursorHorizontalWrap = 0; - gPSSData->cursorVerticalWrap = 0; - gPSSData->cursorFlipTimer = 0; + cursorArea = sCursorArea; + cursorPosition = sCursorPosition; + gStorage->cursorHorizontalWrap = 0; + gStorage->cursorVerticalWrap = 0; + gStorage->cursorFlipTimer = 0; if (JOY_REPT(DPAD_UP)) { - retVal = 1; + input = INPUT_MOVE_CURSOR; cursorArea = CURSOR_AREA_IN_BOX; - gPSSData->cursorVerticalWrap = -1; - if (sBoxCursorPosition == 0) + gStorage->cursorVerticalWrap = -1; + if (sCursorPosition == 0) cursorPosition = IN_BOX_COUNT - 1 - 5; else cursorPosition = IN_BOX_COUNT - 1; - gPSSData->cursorFlipTimer = 1; + gStorage->cursorFlipTimer = 1; break; } else if (JOY_REPT(DPAD_DOWN | START_BUTTON)) { - retVal = 1; - cursorArea = CURSOR_AREA_BOX; + input = INPUT_MOVE_CURSOR; + cursorArea = CURSOR_AREA_BOX_TITLE; cursorPosition = 0; - gPSSData->cursorFlipTimer = 1; + gStorage->cursorFlipTimer = 1; break; } if (JOY_REPT(DPAD_LEFT)) { - retVal = 1; + input = INPUT_MOVE_CURSOR; if (--cursorPosition < 0) cursorPosition = 1; break; } else if (JOY_REPT(DPAD_RIGHT)) { - retVal = 1; + input = INPUT_MOVE_CURSOR; if (++cursorPosition > 1) cursorPosition = 0; break; } if (JOY_NEW(A_BUTTON)) - { - return cursorPosition == 0 ? 5 : 4; - } + return cursorPosition == 0 ? INPUT_SHOW_PARTY : INPUT_CLOSE_BOX; + if (JOY_NEW(B_BUTTON)) - return 19; + return INPUT_PRESSED_B; if (JOY_NEW(SELECT_BUTTON)) { - sub_8094C84(); - return 0; + ToggleCursorMultiMoveMode(); + return INPUT_NONE; } - retVal = 0; - } while (0); + input = INPUT_NONE; + } while (FALSE); - if (retVal != 0) - sub_80927E8(cursorArea, cursorPosition); + if (input != INPUT_NONE) + SetCursorPosition(cursorArea, cursorPosition); - return retVal; + return input; } u8 HandleInput(void) @@ -1724,9 +1713,9 @@ u8 HandleInput(void) s8 area; } static const inputFuncs[] = { - {HandleInput_InBox, CURSOR_AREA_IN_BOX}, - {HandleInput_InParty, CURSOR_AREA_IN_PARTY}, - {HandleInput_OnBox, CURSOR_AREA_BOX}, + {HandleInput_InBox, CURSOR_AREA_IN_BOX}, + {HandleInput_InParty, CURSOR_AREA_IN_PARTY}, + {HandleInput_BoxTitle, CURSOR_AREA_BOX_TITLE}, {HandleInput_OnButtons, CURSOR_AREA_BUTTONS}, {NULL, 0}, }; @@ -1734,62 +1723,62 @@ u8 HandleInput(void) u16 i = 0; while (inputFuncs[i].func != NULL) { - if (inputFuncs[i].area == sBoxCursorArea) + if (inputFuncs[i].area == sCursorArea) return inputFuncs[i].func(); i++; } - return 0; + return INPUT_NONE; } static void AddBoxMenu(void) { InitMenu(); - SetMenuText(PC_TEXT_JUMP); - SetMenuText(PC_TEXT_WALLPAPER); - SetMenuText(PC_TEXT_NAME); - SetMenuText(PC_TEXT_CANCEL); + SetMenuText(MENU_TEXT_JUMP); + SetMenuText(MENU_TEXT_WALLPAPER); + SetMenuText(MENU_TEXT_NAME); + SetMenuText(MENU_TEXT_CANCEL); } -static bool8 sub_8094924(void) +static bool8 SetSelectionMenuTexts(void) { InitMenu(); - if (gPSSData->boxOption != OPTION_MOVE_ITEMS) - return sub_809494C(); + if (gStorage->boxOption != OPTION_MOVE_ITEMS) + return SetMenuTextsForMon(); else - return sub_8094A0C(); + return SetMenuTextsForItem(); } -static bool8 sub_809494C(void) +static bool8 SetMenuTextsForMon(void) { - u16 var0 = sub_8092458(); + u16 species = GetSpeciesAtCursorPosition(); - switch (gPSSData->boxOption) + switch (gStorage->boxOption) { case OPTION_DEPOSIT: - if (var0) - SetMenuText(PC_TEXT_STORE); + if (species != SPECIES_NONE) + SetMenuText(MENU_TEXT_STORE); else return FALSE; break; case OPTION_WITHDRAW: - if (var0) - SetMenuText(PC_TEXT_WITHDRAW); + if (species != SPECIES_NONE) + SetMenuText(MENU_TEXT_WITHDRAW); else return FALSE; break; case OPTION_MOVE_MONS: if (sIsMonBeingMoved) { - if (var0) - SetMenuText(PC_TEXT_SHIFT); + if (species != SPECIES_NONE) + SetMenuText(MENU_TEXT_SHIFT); else - SetMenuText(PC_TEXT_PLACE); + SetMenuText(MENU_TEXT_PLACE); } else { - if (var0) - SetMenuText(PC_TEXT_MOVE); + if (species != SPECIES_NONE) + SetMenuText(MENU_TEXT_MOVE); else return FALSE; } @@ -1799,166 +1788,165 @@ static bool8 sub_809494C(void) return FALSE; } - SetMenuText(PC_TEXT_SUMMARY); - if (gPSSData->boxOption == OPTION_MOVE_MONS) + SetMenuText(MENU_TEXT_SUMMARY); + if (gStorage->boxOption == OPTION_MOVE_MONS) { - if (!sBoxCursorArea) - SetMenuText(PC_TEXT_WITHDRAW); + if (!sCursorArea) + SetMenuText(MENU_TEXT_WITHDRAW); else - SetMenuText(PC_TEXT_STORE); + SetMenuText(MENU_TEXT_STORE); } - SetMenuText(PC_TEXT_MARK); - SetMenuText(PC_TEXT_RELEASE); - SetMenuText(PC_TEXT_CANCEL); + SetMenuText(MENU_TEXT_MARK); + SetMenuText(MENU_TEXT_RELEASE); + SetMenuText(MENU_TEXT_CANCEL); return TRUE; } -static bool8 sub_8094A0C(void) +static bool8 SetMenuTextsForItem(void) { - if (gPSSData->displayMonSpecies == SPECIES_EGG) + if (gStorage->displayMonSpecies == SPECIES_EGG) return FALSE; if (!IsActiveItemMoving()) { - if (gPSSData->displayMonItemId == ITEM_NONE) + if (gStorage->displayMonItemId == ITEM_NONE) { - if (gPSSData->displayMonSpecies == SPECIES_NONE) + if (gStorage->displayMonSpecies == SPECIES_NONE) return FALSE; - SetMenuText(PC_TEXT_GIVE2); + SetMenuText(MENU_TEXT_GIVE2); } else { - if (!ItemIsMail(gPSSData->displayMonItemId)) + if (!ItemIsMail(gStorage->displayMonItemId)) { - SetMenuText(PC_TEXT_TAKE); - SetMenuText(PC_TEXT_BAG); + SetMenuText(MENU_TEXT_TAKE); + SetMenuText(MENU_TEXT_BAG); } - SetMenuText(PC_TEXT_INFO); + SetMenuText(MENU_TEXT_INFO); } } else { - if (gPSSData->displayMonItemId == ITEM_NONE) + if (gStorage->displayMonItemId == ITEM_NONE) { - if (gPSSData->displayMonSpecies == SPECIES_NONE) + if (gStorage->displayMonSpecies == SPECIES_NONE) return FALSE; - SetMenuText(PC_TEXT_GIVE); + SetMenuText(MENU_TEXT_GIVE); } else { - if (ItemIsMail(gPSSData->displayMonItemId) == TRUE) + if (ItemIsMail(gStorage->displayMonItemId) == TRUE) return FALSE; - SetMenuText(PC_TEXT_SWITCH); + SetMenuText(MENU_TEXT_SWITCH); } } - SetMenuText(PC_TEXT_CANCEL); + SetMenuText(MENU_TEXT_CANCEL); return TRUE; } -static void sub_8094AB8(struct Sprite *sprite) +static void SpriteCB_CursorShadow(struct Sprite *sprite) { - sprite->x = gPSSData->cursorSprite->x; - sprite->y = gPSSData->cursorSprite->y + 20; + sprite->x = gStorage->cursorSprite->x; + sprite->y = gStorage->cursorSprite->y + 20; } -static void sub_8094AD8(void) +static void CreateCursorSprites(void) { u16 x, y; u8 spriteId; u8 priority, subpriority; struct SpriteSheet spriteSheets[] = { - {sHandCursorTiles, 0x800, TAG_TILE_0}, - {sHandCursorShadowTiles, 0x80, TAG_TILE_1}, + {sHandCursorTiles, 0x800, GFXTAG_CURSOR}, + {sHandCursorShadowTiles, 0x80, GFXTAG_CURSOR_SHADOW}, {} }; struct SpritePalette spritePalettes[] = { - {sHandCursorPalette, TAG_PAL_DAC7}, + {sPokeStorageMisc1Pal, PALTAG_MISC_1}, {} }; - static const struct OamData sOamData_857BA0C = { + static const struct OamData sOamData_Cursor = { .shape = SPRITE_SHAPE(32x32), .size = SPRITE_SIZE(32x32), .priority = 1, }; - static const struct OamData sOamData_857BA14 = { + static const struct OamData sOamData_CursorShadow = { .shape = SPRITE_SHAPE(16x16), .size = SPRITE_SIZE(16x16), .priority = 1, }; - static const union AnimCmd sSpriteAnim_857BA1C[] = { + static const union AnimCmd sAnim_Cursor_Bouncing[] = { ANIMCMD_FRAME(0, 30), ANIMCMD_FRAME(16, 30), ANIMCMD_JUMP(0) }; - static const union AnimCmd sSpriteAnim_857BA28[] = { + static const union AnimCmd sAnim_Cursor_Still[] = { ANIMCMD_FRAME(0, 5), ANIMCMD_END }; - static const union AnimCmd sSpriteAnim_857BA30[] = { + static const union AnimCmd sAnim_Cursor_Open[] = { ANIMCMD_FRAME(32, 5), ANIMCMD_END }; - static const union AnimCmd sSpriteAnim_857BA38[] = { + static const union AnimCmd sAnim_Cursor_Fist[] = { ANIMCMD_FRAME(48, 5), ANIMCMD_END }; - static const union AnimCmd *const sSpriteAnimTable_857BA40[] = { - sSpriteAnim_857BA1C, - sSpriteAnim_857BA28, - sSpriteAnim_857BA30, - sSpriteAnim_857BA38 + static const union AnimCmd *const sAnims_Cursor[] = { + [CURSOR_ANIM_BOUNCE] = sAnim_Cursor_Bouncing, + [CURSOR_ANIM_STILL] = sAnim_Cursor_Still, + [CURSOR_ANIM_OPEN] = sAnim_Cursor_Open, + [CURSOR_ANIM_FIST] = sAnim_Cursor_Fist, }; - static const struct SpriteTemplate gSpriteTemplate_857BA50 = { - .tileTag = TAG_TILE_0, - .paletteTag = TAG_PAL_WAVEFORM, - .oam = &sOamData_857BA0C, - .anims = sSpriteAnimTable_857BA40, + static const struct SpriteTemplate sSpriteTemplate_Cursor = { + .tileTag = GFXTAG_CURSOR, + .paletteTag = PALTAG_MISC_2, + .oam = &sOamData_Cursor, + .anims = sAnims_Cursor, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = SpriteCallbackDummy, }; - static const struct SpriteTemplate gSpriteTemplate_857BA68 = { - .tileTag = TAG_TILE_1, - .paletteTag = TAG_PAL_WAVEFORM, - .oam = &sOamData_857BA14, + static const struct SpriteTemplate sSpriteTemplate_CursorShadow = { + .tileTag = GFXTAG_CURSOR_SHADOW, + .paletteTag = PALTAG_MISC_2, + .oam = &sOamData_CursorShadow, .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_8094AB8, + .callback = SpriteCB_CursorShadow, }; LoadSpriteSheets(spriteSheets); LoadSpritePalettes(spritePalettes); - gPSSData->cursorPalNums[0] = IndexOfSpritePaletteTag(TAG_PAL_WAVEFORM); - gPSSData->cursorPalNums[1] = IndexOfSpritePaletteTag(TAG_PAL_DAC7); + gStorage->cursorPalNums[0] = IndexOfSpritePaletteTag(PALTAG_MISC_2); + gStorage->cursorPalNums[1] = IndexOfSpritePaletteTag(PALTAG_MISC_1); - sub_8092398(sBoxCursorArea, sBoxCursorPosition, &x, &y); - spriteId = CreateSprite(&gSpriteTemplate_857BA50, x, y, 6); + GetCursorCoordsByPos(sCursorArea, sCursorPosition, &x, &y); + spriteId = CreateSprite(&sSpriteTemplate_Cursor, x, y, 6); if (spriteId != MAX_SPRITES) { - gPSSData->cursorSprite = &gSprites[spriteId]; - gPSSData->cursorSprite->oam.paletteNum = gPSSData->cursorPalNums[sCanOnlyMove]; - gPSSData->cursorSprite->oam.priority = 1; + gStorage->cursorSprite = &gSprites[spriteId]; + gStorage->cursorSprite->oam.paletteNum = gStorage->cursorPalNums[sInMultiMoveMode]; + gStorage->cursorSprite->oam.priority = 1; if (sIsMonBeingMoved) - StartSpriteAnim(gPSSData->cursorSprite, 3); + StartSpriteAnim(gStorage->cursorSprite, 3); } else - { - gPSSData->cursorSprite = NULL; - } + gStorage->cursorSprite = NULL; - if (sBoxCursorArea == CURSOR_AREA_IN_PARTY) + + if (sCursorArea == CURSOR_AREA_IN_PARTY) { subpriority = 13; priority = 1; @@ -1969,68 +1957,66 @@ static void sub_8094AD8(void) priority = 2; } - spriteId = CreateSprite(&gSpriteTemplate_857BA68, 0, 0, subpriority); + spriteId = CreateSprite(&sSpriteTemplate_CursorShadow, 0, 0, subpriority); if (spriteId != MAX_SPRITES) { - gPSSData->cursorShadowSprite = &gSprites[spriteId]; - gPSSData->cursorShadowSprite->oam.priority = priority; - if (sBoxCursorArea) - gPSSData->cursorShadowSprite->invisible = 1; + gStorage->cursorShadowSprite = &gSprites[spriteId]; + gStorage->cursorShadowSprite->oam.priority = priority; + if (sCursorArea) + gStorage->cursorShadowSprite->invisible = 1; } else - { - gPSSData->cursorShadowSprite = NULL; - } + gStorage->cursorShadowSprite = NULL; } -static void sub_8094C84(void) +static void ToggleCursorMultiMoveMode(void) { - sCanOnlyMove = !sCanOnlyMove; - gPSSData->cursorSprite->oam.paletteNum = gPSSData->cursorPalNums[sCanOnlyMove]; + sInMultiMoveMode = !sInMultiMoveMode; + gStorage->cursorSprite->oam.paletteNum = gStorage->cursorPalNums[sInMultiMoveMode]; } u8 GetBoxCursorPosition(void) { - return sBoxCursorPosition; + return sCursorPosition; } -void sub_8094CD4(u8 *arg0, u8 *arg1) +void GetCursorBoxColumnAndRow(u8 *column, u8 *row) { - if (sBoxCursorArea == CURSOR_AREA_IN_BOX) + if (sCursorArea == CURSOR_AREA_IN_BOX) { - *arg0 = sBoxCursorPosition % IN_BOX_ROWS; - *arg1 = sBoxCursorPosition / IN_BOX_ROWS; + *column = sCursorPosition % IN_BOX_COLUMNS; + *row = sCursorPosition / IN_BOX_COLUMNS; } else { - *arg0 = 0; - *arg1 = 0; + *column = 0; + *row = 0; } } -void sub_8094D14(u8 animNum) +void StartCursorAnim(u8 animNum) { - StartSpriteAnim(gPSSData->cursorSprite, animNum); + StartSpriteAnim(gStorage->cursorSprite, animNum); } -u8 sub_8094D34(void) +u8 GetMovingMonOriginalBoxId(void) { return sMovingMonOrigBoxId; } -void sub_8094D40(void) +void SetCursorPriorityTo1(void) { - gPSSData->cursorSprite->oam.priority = 1; + gStorage->cursorSprite->oam.priority = 1; } -void sub_8094D60(void) +void TryHideItemAtCursor(void) { - if (sBoxCursorArea == CURSOR_AREA_IN_BOX) - sub_8095D44(CURSOR_AREA_IN_BOX, sBoxCursorPosition); + if (sCursorArea == CURSOR_AREA_IN_BOX) + TryHideItemIconAtPos(CURSOR_AREA_IN_BOX, sCursorPosition); } -void sub_8094D84(void) +void TryShowItemAtCursor(void) { - if (sBoxCursorArea == CURSOR_AREA_IN_BOX) - sub_8095C84(CURSOR_AREA_IN_BOX, sBoxCursorPosition); + if (sCursorArea == CURSOR_AREA_IN_BOX) + TryLoadItemIconAtPos(CURSOR_AREA_IN_BOX, sCursorPosition); } diff --git a/src/pokemon_storage_system_6.c b/src/pokemon_storage_system_6.c index 6b8b4f67d..b8fcc3e8b 100644 --- a/src/pokemon_storage_system_6.c +++ b/src/pokemon_storage_system_6.c @@ -8,115 +8,115 @@ void InitMenu(void) { - gPSSData->menuItemsCount = 0; - gPSSData->menuWidth = 0; - gPSSData->menuWindow.bg = 0; - gPSSData->menuWindow.paletteNum = 15; - gPSSData->menuWindow.baseBlock = 92; + gStorage->menuItemsCount = 0; + gStorage->menuWidth = 0; + gStorage->menuWindow.bg = 0; + gStorage->menuWindow.paletteNum = 15; + gStorage->menuWindow.baseBlock = 92; } static const u8 *const sMenuTexts[] = { - [PC_TEXT_CANCEL] = gPCText_Cancel, - [PC_TEXT_STORE] = gPCText_Store, - [PC_TEXT_WITHDRAW] = gPCText_Withdraw, - [PC_TEXT_MOVE] = gPCText_Move, - [PC_TEXT_SHIFT] = gPCText_Shift, - [PC_TEXT_PLACE] = gPCText_Place, - [PC_TEXT_SUMMARY] = gPCText_Summary, - [PC_TEXT_RELEASE] = gPCText_Release, - [PC_TEXT_MARK] = gPCText_Mark, - [PC_TEXT_JUMP] = gPCText_Jump, - [PC_TEXT_WALLPAPER] = gPCText_Wallpaper, - [PC_TEXT_NAME] = gPCText_Name, - [PC_TEXT_TAKE] = gPCText_Take, - [PC_TEXT_GIVE] = gPCText_Give, - [PC_TEXT_GIVE2] = gPCText_Give, - [PC_TEXT_SWITCH] = gPCText_Switch, - [PC_TEXT_BAG] = gPCText_Bag, - [PC_TEXT_INFO] = gPCText_Info, - [PC_TEXT_SCENERY1] = gPCText_Scenery1, - [PC_TEXT_SCENERY2] = gPCText_Scenery2, - [PC_TEXT_SCENERY3] = gPCText_Scenery3, - [PC_TEXT_ETCETERA] = gPCText_Etcetera, - [PC_TEXT_FOREST] = gPCText_Forest, - [PC_TEXT_CITY] = gPCText_City, - [PC_TEXT_DESERT] = gPCText_Desert, - [PC_TEXT_SAVANNA] = gPCText_Savanna, - [PC_TEXT_CRAG] = gPCText_Crag, - [PC_TEXT_VOLCANO] = gPCText_Volcano, - [PC_TEXT_SNOW] = gPCText_Snow, - [PC_TEXT_CAVE] = gPCText_Cave, - [PC_TEXT_BEACH] = gPCText_Beach, - [PC_TEXT_SEAFLOOR] = gPCText_Seafloor, - [PC_TEXT_RIVER] = gPCText_River, - [PC_TEXT_SKY] = gPCText_Sky, - [PC_TEXT_POLKADOT] = gPCText_PolkaDot, - [PC_TEXT_POKECENTER] = gPCText_Pokecenter, - [PC_TEXT_MACHINE] = gPCText_Machine, - [PC_TEXT_SIMPLE] = gPCText_Simple, + [MENU_TEXT_CANCEL] = gPCText_Cancel, + [MENU_TEXT_STORE] = gPCText_Store, + [MENU_TEXT_WITHDRAW] = gPCText_Withdraw, + [MENU_TEXT_MOVE] = gPCText_Move, + [MENU_TEXT_SHIFT] = gPCText_Shift, + [MENU_TEXT_PLACE] = gPCText_Place, + [MENU_TEXT_SUMMARY] = gPCText_Summary, + [MENU_TEXT_RELEASE] = gPCText_Release, + [MENU_TEXT_MARK] = gPCText_Mark, + [MENU_TEXT_JUMP] = gPCText_Jump, + [MENU_TEXT_WALLPAPER] = gPCText_Wallpaper, + [MENU_TEXT_NAME] = gPCText_Name, + [MENU_TEXT_TAKE] = gPCText_Take, + [MENU_TEXT_GIVE] = gPCText_Give, + [MENU_TEXT_GIVE2] = gPCText_Give, + [MENU_TEXT_SWITCH] = gPCText_Switch, + [MENU_TEXT_BAG] = gPCText_Bag, + [MENU_TEXT_INFO] = gPCText_Info, + [MENU_TEXT_SCENERY_1] = gPCText_Scenery1, + [MENU_TEXT_SCENERY_2] = gPCText_Scenery2, + [MENU_TEXT_SCENERY_3] = gPCText_Scenery3, + [MENU_TEXT_ETCETERA] = gPCText_Etcetera, + [MENU_TEXT_FOREST] = gPCText_Forest, + [MENU_TEXT_CITY] = gPCText_City, + [MENU_TEXT_DESERT] = gPCText_Desert, + [MENU_TEXT_SAVANNA] = gPCText_Savanna, + [MENU_TEXT_CRAG] = gPCText_Crag, + [MENU_TEXT_VOLCANO] = gPCText_Volcano, + [MENU_TEXT_SNOW] = gPCText_Snow, + [MENU_TEXT_CAVE] = gPCText_Cave, + [MENU_TEXT_BEACH] = gPCText_Beach, + [MENU_TEXT_SEAFLOOR] = gPCText_Seafloor, + [MENU_TEXT_RIVER] = gPCText_River, + [MENU_TEXT_SKY] = gPCText_Sky, + [MENU_TEXT_POLKADOT] = gPCText_PolkaDot, + [MENU_TEXT_POKECENTER] = gPCText_Pokecenter, + [MENU_TEXT_MACHINE] = gPCText_Machine, + [MENU_TEXT_SIMPLE] = gPCText_Simple, }; void SetMenuText(u8 textId) { - if (gPSSData->menuItemsCount < ARRAY_COUNT(gPSSData->menuItems)) + if (gStorage->menuItemsCount < ARRAY_COUNT(gStorage->menuItems)) { u8 len; - struct StorageMenu *menu = &gPSSData->menuItems[gPSSData->menuItemsCount]; + struct StorageMenu *menu = &gStorage->menuItems[gStorage->menuItemsCount]; menu->text = sMenuTexts[textId]; menu->textId = textId; len = StringLength(menu->text); - if (len > gPSSData->menuWidth) - gPSSData->menuWidth = len; + if (len > gStorage->menuWidth) + gStorage->menuWidth = len; - gPSSData->menuItemsCount++; + gStorage->menuItemsCount++; } } -s8 sub_8094E50(u8 arg0) +s8 GetMenuItemTextId(u8 menuIndex) { - if (arg0 >= gPSSData->menuItemsCount) - return -1; + if (menuIndex >= gStorage->menuItemsCount) + return MENU_B_PRESSED; else - return gPSSData->menuItems[arg0].textId; + return gStorage->menuItems[menuIndex].textId; } void AddMenu(void) { - gPSSData->menuWindow.width = gPSSData->menuWidth + 2; - gPSSData->menuWindow.height = 2 * gPSSData->menuItemsCount; - gPSSData->menuWindow.tilemapLeft = 29 - gPSSData->menuWindow.width; - gPSSData->menuWindow.tilemapTop = 15 - gPSSData->menuWindow.height; - gPSSData->menuWindowId = AddWindow(&gPSSData->menuWindow); - ClearWindowTilemap(gPSSData->menuWindowId); - DrawStdFrameWithCustomTileAndPalette(gPSSData->menuWindowId, FALSE, 0x00b, 14); - PrintTextArray(gPSSData->menuWindowId, FONT_1, 8, 2, 16, gPSSData->menuItemsCount, (void *)gPSSData->menuItems); - Menu_InitCursor(gPSSData->menuWindowId, FONT_1, 0, 2, 16, gPSSData->menuItemsCount, 0); + gStorage->menuWindow.width = gStorage->menuWidth + 2; + gStorage->menuWindow.height = 2 * gStorage->menuItemsCount; + gStorage->menuWindow.tilemapLeft = 29 - gStorage->menuWindow.width; + gStorage->menuWindow.tilemapTop = 15 - gStorage->menuWindow.height; + gStorage->menuWindowId = AddWindow(&gStorage->menuWindow); + ClearWindowTilemap(gStorage->menuWindowId); + DrawStdFrameWithCustomTileAndPalette(gStorage->menuWindowId, FALSE, 11, 14); + PrintTextArray(gStorage->menuWindowId, FONT_1, 8, 2, 16, gStorage->menuItemsCount, (void *)gStorage->menuItems); + Menu_InitCursor(gStorage->menuWindowId, FONT_1, 0, 2, 16, gStorage->menuItemsCount, 0); ScheduleBgCopyTilemapToVram(0); - gPSSData->menuUnusedField = 0; + gStorage->menuUnusedField = 0; } -bool8 sub_8094F90(void) +bool8 IsMenuLoading(void) { - // Some debug flag? + // Possibly stubbed out debug code? return FALSE; } -s16 sub_8094F94(void) +s16 HandleMenuInput(void) { - s32 textId = -2; + s32 input = MENU_NOTHING_CHOSEN; do { if (JOY_NEW(A_BUTTON)) { - textId = Menu_GetCursorPos(); + input = Menu_GetCursorPos(); break; } else if (JOY_NEW(B_BUTTON)) { PlaySE(SE_SELECT); - textId = -1; + input = MENU_B_PRESSED; } if (JOY_NEW(DPAD_UP)) @@ -129,19 +129,19 @@ s16 sub_8094F94(void) PlaySE(SE_SELECT); Menu_MoveCursor(1); } - } while (0); + } while (FALSE); - if (textId != -2) - sub_8095024(); + if (input != MENU_NOTHING_CHOSEN) + RemoveMenu(); - if (textId >= 0) - textId = gPSSData->menuItems[textId].textId; + if (input >= 0) + input = gStorage->menuItems[input].textId; - return textId; + return input; } -void sub_8095024(void) +void RemoveMenu(void) { - ClearStdWindowAndFrameToTransparent(gPSSData->menuWindowId, TRUE); - RemoveWindow(gPSSData->menuWindowId); + ClearStdWindowAndFrameToTransparent(gStorage->menuWindowId, TRUE); + RemoveWindow(gStorage->menuWindowId); } diff --git a/src/pokemon_storage_system_7.c b/src/pokemon_storage_system_7.c index 95d199172..573aa4b82 100644 --- a/src/pokemon_storage_system_7.c +++ b/src/pokemon_storage_system_7.c @@ -5,50 +5,48 @@ #include "pokemon_storage_system_internal.h" #include "text_window.h" -struct MoveMons +static EWRAM_DATA struct { - u8 field_0; + u8 funcId; u8 state; - u8 fromRow; u8 fromColumn; - u8 toRow; + u8 fromRow; u8 toColumn; - u8 field_6; - u8 field_7; - u8 minRow; + u8 toRow; + u8 cursorColumn; + u8 cursorRow; u8 minColumn; + u8 minRow; + u8 columnsTotal; u8 rowsTotal; - u8 columsTotal; u16 bgX; u16 bgY; - u16 field_10; + u16 bgMoveSteps; struct BoxPokemon boxMons[IN_BOX_COUNT]; -}; +} *sMultiMove = NULL; -static EWRAM_DATA struct MoveMons *sMoveMonsPtr = NULL; +static bool8 MultiMove_Function_Start(void); +static bool8 MultiMove_Function_Single(void); +static bool8 MultiMove_Function_ChangeSelection(void); +static bool8 MultiMove_Function_GrabSelection(void); +static bool8 MultiMove_Function_MoveMons(void); +static bool8 MultiMove_Function_PlaceMons(void); +static void MultiMove_UpdateSelectedIcons(void); +static void MultiMove_SelectColumn(u8 column, u8 minRow, u8 maxRow); +static void MultiMove_SelectRow(u8 row, u8 minColumn, u8 maxColumn); +static void MultiMove_DeselectColumn(u8 arg0, u8 minRow, u8 maxRow); +static void MultiMove_DeselectRow(u8 row, u8 minColumn, u8 maxColumn); +static void MultiMove_SetIconToBg(u8 x, u8 y); +static void MultiMove_ClearIconFromBg(u8 x, u8 y); +static void MultiMove_InitBg(u16 bgX, u16 bgY, u16 duration); +static u8 MultiMove_UpdateBg(void); +static void MultiMove_GetMonsFromSelection(void); +static void MultiMove_RemoveMonsFromBox(void); +static void MultiMove_CreatePlacedMonIcons(void); +static void MultiMove_SetPlacedMonData(void); +static void MultiMove_ResetBg(void); -static bool8 sub_8095138(void); -static bool8 sub_8095234(void); -static bool8 sub_80952A0(void); -static bool8 sub_8095314(void); -static bool8 sub_8095394(void); -static bool8 sub_80953BC(void); -static void sub_8095520(void); -static void sub_80955C4(u8 arg0, u8 arg1, u8 arg2); -static void sub_80955FC(u8 arg0, u8 arg1, u8 arg2); -static void sub_8095634(u8 arg0, u8 arg1, u8 arg2); -static void sub_809566C(u8 arg0, u8 arg1, u8 arg2); -static void sub_80956A4(u8 x, u8 y); -static void sub_809572C(u8 x, u8 y); -static void sub_8095780(u16 bgX, u16 bgY, u16 duration); -static u8 sub_8095790(void); -static void sub_80957C8(void); -static void sub_80958A0(void); -static void sub_8095918(void); -static void sub_80959A8(void); -static void sub_8095A58(void); - -static const struct WindowTemplate gUnknown_83D35D4 = { +static const struct WindowTemplate sWindowTemplate_MultiMove = { .bg = 0, .tilemapLeft = 10, .tilemapTop = 3, @@ -58,15 +56,15 @@ static const struct WindowTemplate gUnknown_83D35D4 = { .baseBlock = 0x00a }; -bool8 sub_8095050(void) +bool8 MultiMove_Init(void) { - sMoveMonsPtr = Alloc(sizeof(*sMoveMonsPtr)); - if (sMoveMonsPtr != NULL) + sMultiMove = Alloc(sizeof(*sMultiMove)); + if (sMultiMove != NULL) { - gPSSData->field_2200 = AddWindow8Bit(&gUnknown_83D35D4); - if (gPSSData->field_2200 != 0xFF) + gStorage->multiMoveWindowId = AddWindow8Bit(&sWindowTemplate_MultiMove); + if (gStorage->multiMoveWindowId != WINDOW_NONE) { - FillWindowPixelBuffer(gPSSData->field_2200, PIXEL_FILL(0)); + FillWindowPixelBuffer(gStorage->multiMoveWindowId, PIXEL_FILL(0)); return TRUE; } } @@ -74,64 +72,64 @@ bool8 sub_8095050(void) return FALSE; } -void sub_80950A4(void) +void MultiMove_Free(void) { - if (sMoveMonsPtr != NULL) - Free(sMoveMonsPtr); + if (sMultiMove != NULL) + Free(sMultiMove); } -void sub_80950BC(u8 arg0) +void MultiMove_SetFunction(u8 funcId) { - sMoveMonsPtr->field_0 = arg0; - sMoveMonsPtr->state = 0; + sMultiMove->funcId = funcId; + sMultiMove->state = 0; } -bool8 sub_80950D0(void) +bool8 MultiMove_RunFunction(void) { - switch (sMoveMonsPtr->field_0) + switch (sMultiMove->funcId) { - case 0: - return sub_8095138(); - case 1: - return sub_8095234(); - case 2: - return sub_80952A0(); - case 3: - return sub_8095314(); - case 4: - return sub_8095394(); - case 5: - return sub_80953BC(); + case MULTIMOVE_START: + return MultiMove_Function_Start(); + case MULTIMOVE_SINGLE: + return MultiMove_Function_Single(); + case MULTIMOVE_CHANGE_SELECTION: + return MultiMove_Function_ChangeSelection(); + case MULTIMOVE_GRAB_SELECTION: + return MultiMove_Function_GrabSelection(); + case MULTIMOVE_MOVE_MONS: + return MultiMove_Function_MoveMons(); + case MULTIMOVE_PLACE_MONS: + return MultiMove_Function_PlaceMons(); } return FALSE; } -static bool8 sub_8095138(void) +static bool8 MultiMove_Function_Start(void) { - switch (sMoveMonsPtr->state) + switch (sMultiMove->state) { case 0: HideBg(0); LoadMonIconPalettesAt(0x80); - sMoveMonsPtr->state++; + sMultiMove->state++; break; case 1: - sub_8094CD4(&sMoveMonsPtr->fromRow, &sMoveMonsPtr->fromColumn); - sMoveMonsPtr->toRow = sMoveMonsPtr->fromRow; - sMoveMonsPtr->toColumn = sMoveMonsPtr->fromColumn; - ChangeBgX(0, -1024, 0); - ChangeBgY(0, -1024, 0); - FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 0x20, 0x20); - FillWindowPixelBuffer8Bit(gPSSData->field_2200, PIXEL_FILL(0)); - sub_80956A4(sMoveMonsPtr->fromRow, sMoveMonsPtr->fromColumn); + GetCursorBoxColumnAndRow(&sMultiMove->fromColumn, &sMultiMove->fromRow); + sMultiMove->toColumn = sMultiMove->fromColumn; + sMultiMove->toRow = sMultiMove->fromRow; + ChangeBgX(0, -1024, BG_COORD_SET); + ChangeBgY(0, -1024, BG_COORD_SET); + FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 32, 32); + FillWindowPixelBuffer8Bit(gStorage->multiMoveWindowId, PIXEL_FILL(0)); + MultiMove_SetIconToBg(sMultiMove->fromColumn, sMultiMove->fromRow); SetBgAttribute(0, BG_ATTR_PALETTEMODE, 1); - PutWindowTilemap(gPSSData->field_2200); - CopyWindowToVram8Bit(gPSSData->field_2200, COPYWIN_FULL); + PutWindowTilemap(gStorage->multiMoveWindowId); + CopyWindowToVram8Bit(gStorage->multiMoveWindowId, COPYWIN_FULL); BlendPalettes(0x3F00, 8, RGB_WHITE); - sub_8094D14(2); + StartCursorAnim(CURSOR_ANIM_OPEN); SetGpuRegBits(REG_OFFSET_BG0CNT, BGCNT_256COLOR); - sMoveMonsPtr->state++; + sMultiMove->state++; break; case 2: if (!IsDma3ManagerBusyWithBgCopy()) @@ -145,23 +143,23 @@ static bool8 sub_8095138(void) return TRUE; } -static bool8 sub_8095234(void) +static bool8 MultiMove_Function_Single(void) { - switch (sMoveMonsPtr->state) + switch (sMultiMove->state) { case 0: HideBg(0); - sMoveMonsPtr->state++; + sMultiMove->state++; break; case 1: - sub_8095A58(); - sub_8094D14(0); - sMoveMonsPtr->state++; + MultiMove_ResetBg(); + StartCursorAnim(CURSOR_ANIM_BOUNCE); + sMultiMove->state++; break; case 2: if (!IsDma3ManagerBusyWithBgCopy()) { - sub_8094D40(); + SetCursorPriorityTo1(); LoadPalette(stdpal_get(3), 0xD0, 0x20); ShowBg(0); return FALSE; @@ -172,19 +170,19 @@ static bool8 sub_8095234(void) return TRUE; } -static bool8 sub_80952A0(void) +static bool8 MultiMove_Function_ChangeSelection(void) { - switch (sMoveMonsPtr->state) + switch (sMultiMove->state) { case 0: - if (!sub_80924A8()) + if (!UpdateCursorPos()) { - sub_8094CD4(&sMoveMonsPtr->field_6, &sMoveMonsPtr->field_7); - sub_8095520(); - sMoveMonsPtr->toRow = sMoveMonsPtr->field_6; - sMoveMonsPtr->toColumn = sMoveMonsPtr->field_7; - CopyWindowToVram8Bit(gPSSData->field_2200, COPYWIN_GFX); - sMoveMonsPtr->state++; + GetCursorBoxColumnAndRow(&sMultiMove->cursorColumn, &sMultiMove->cursorRow); + MultiMove_UpdateSelectedIcons(); + sMultiMove->toColumn = sMultiMove->cursorColumn; + sMultiMove->toRow = sMultiMove->cursorRow; + CopyWindowToVram8Bit(gStorage->multiMoveWindowId, COPYWIN_GFX); + sMultiMove->state++; } break; case 1: @@ -194,31 +192,31 @@ static bool8 sub_80952A0(void) return TRUE; } -static bool8 sub_8095314(void) +static bool8 MultiMove_Function_GrabSelection(void) { - u8 var1, var2; + u8 movingBg, movingMon; - switch (sMoveMonsPtr->state) + switch (sMultiMove->state) { case 0: - sub_80957C8(); - sub_80958A0(); - sub_8092BAC(FALSE); - sMoveMonsPtr->state++; + MultiMove_GetMonsFromSelection(); + MultiMove_RemoveMonsFromBox(); + InitMultiMonPlaceChange(FALSE); + sMultiMove->state++; break; case 1: if (!DoMonPlaceChange()) { - sub_8094D14(3); - sub_8095780(0, 256, 8); - sub_8092BAC(TRUE); - sMoveMonsPtr->state++; + StartCursorAnim(CURSOR_ANIM_FIST); + MultiMove_InitBg(0, 256, 8); + InitMultiMonPlaceChange(TRUE); + sMultiMove->state++; } break; case 2: - var1 = sub_8095790(); - var2 = DoMonPlaceChange(); - if (!var1 && !var2) + movingBg = MultiMove_UpdateBg(); + movingMon = DoMonPlaceChange(); + if (!movingBg && !movingMon) return FALSE; break; } @@ -226,50 +224,50 @@ static bool8 sub_8095314(void) return TRUE; } -static bool8 sub_8095394(void) +static bool8 MultiMove_Function_MoveMons(void) { - u8 var1 = sub_80924A8(); - u8 var2 = sub_8095790(); + u8 movingCursor = UpdateCursorPos(); + u8 movingBg = MultiMove_UpdateBg(); - if (!var1 && !var2) + if (!movingCursor && !movingBg) return FALSE; else return TRUE; } -static bool8 sub_80953BC(void) +static bool8 MultiMove_Function_PlaceMons(void) { - switch (sMoveMonsPtr->state) + switch (sMultiMove->state) { case 0: - sub_80959A8(); - sub_8095780(0, -256, 8); - sub_8092BAC(FALSE); - sMoveMonsPtr->state++; + MultiMove_SetPlacedMonData(); + MultiMove_InitBg(0, -256, 8); + InitMultiMonPlaceChange(FALSE); + sMultiMove->state++; break; case 1: - if (!DoMonPlaceChange() && !sub_8095790()) + if (!DoMonPlaceChange() && !MultiMove_UpdateBg()) { - sub_8095918(); - sub_8094D14(2); - sub_8092BAC(TRUE); + MultiMove_CreatePlacedMonIcons(); + StartCursorAnim(CURSOR_ANIM_OPEN); + InitMultiMonPlaceChange(TRUE); HideBg(0); - sMoveMonsPtr->state++; + sMultiMove->state++; } break; case 2: if (!DoMonPlaceChange()) { - sub_8094D14(0); - sub_8095A58(); - sMoveMonsPtr->state++; + StartCursorAnim(CURSOR_ANIM_BOUNCE); + MultiMove_ResetBg(); + sMultiMove->state++; } break; case 3: if (!IsDma3ManagerBusyWithBgCopy()) { LoadPalette(stdpal_get(3), 0xD0, 0x20); - sub_8094D40(); + SetCursorPriorityTo1(); ShowBg(0); return FALSE; } @@ -279,206 +277,188 @@ static bool8 sub_80953BC(void) return TRUE; } -bool8 sub_8095474(u8 arg0) +bool8 MultiMove_TryMoveGroup(u8 dir) { - switch (arg0) + switch (dir) { case 0: // up - if (sMoveMonsPtr->minColumn == 0) + if (sMultiMove->minRow == 0) return FALSE; - sMoveMonsPtr->minColumn--; - sub_8095780(0, 1024, 6); + sMultiMove->minRow--; + MultiMove_InitBg(0, 1024, 6); break; case 1: // down - if (sMoveMonsPtr->minColumn + sMoveMonsPtr->columsTotal >= 5) + if (sMultiMove->minRow + sMultiMove->rowsTotal >= 5) return FALSE; - sMoveMonsPtr->minColumn++; - sub_8095780(0, -1024, 6); + sMultiMove->minRow++; + MultiMove_InitBg(0, -1024, 6); break; case 2: // left - if (sMoveMonsPtr->minRow == 0) + if (sMultiMove->minColumn == 0) return FALSE; - sMoveMonsPtr->minRow--; - sub_8095780(1024, 0, 6); + sMultiMove->minColumn--; + MultiMove_InitBg(1024, 0, 6); break; case 3: // right - if (sMoveMonsPtr->minRow + sMoveMonsPtr->rowsTotal > 5) + if (sMultiMove->minColumn + sMultiMove->columnsTotal > 5) return FALSE; - sMoveMonsPtr->minRow++; - sub_8095780(-1024, 0, 6); + sMultiMove->minColumn++; + MultiMove_InitBg(-1024, 0, 6); break; } return TRUE; } -static void sub_8095520(void) +static void MultiMove_UpdateSelectedIcons(void) { - s16 var = (abs(sMoveMonsPtr->fromRow - sMoveMonsPtr->field_6)) - (abs(sMoveMonsPtr->fromRow - sMoveMonsPtr->toRow)); - s16 var2 = (abs(sMoveMonsPtr->fromColumn - sMoveMonsPtr->field_7)) - (abs(sMoveMonsPtr->fromColumn - sMoveMonsPtr->toColumn)); + s16 columnChange = (abs(sMultiMove->fromColumn - sMultiMove->cursorColumn)) - (abs(sMultiMove->fromColumn - sMultiMove->toColumn)); + s16 rowChange = (abs(sMultiMove->fromRow - sMultiMove->cursorRow)) - (abs(sMultiMove->fromRow - sMultiMove->toRow)); - if (var > 0) - sub_80955C4(sMoveMonsPtr->field_6, sMoveMonsPtr->fromColumn, sMoveMonsPtr->toColumn); + if (columnChange > 0) + MultiMove_SelectColumn(sMultiMove->cursorColumn, sMultiMove->fromRow, sMultiMove->toRow); - if (var < 0) + if (columnChange < 0) { - sub_8095634(sMoveMonsPtr->toRow, sMoveMonsPtr->fromColumn, sMoveMonsPtr->toColumn); - sub_80955C4(sMoveMonsPtr->field_6, sMoveMonsPtr->fromColumn, sMoveMonsPtr->toColumn); + MultiMove_DeselectColumn(sMultiMove->toColumn, sMultiMove->fromRow, sMultiMove->toRow); + MultiMove_SelectColumn(sMultiMove->cursorColumn, sMultiMove->fromRow, sMultiMove->toRow); } - if (var2 > 0) - sub_80955FC(sMoveMonsPtr->field_7, sMoveMonsPtr->fromRow, sMoveMonsPtr->toRow); + if (rowChange > 0) + MultiMove_SelectRow(sMultiMove->cursorRow, sMultiMove->fromColumn, sMultiMove->toColumn); - if (var2 < 0) + if (rowChange < 0) { - sub_809566C(sMoveMonsPtr->toColumn, sMoveMonsPtr->fromRow, sMoveMonsPtr->toRow); - sub_80955FC(sMoveMonsPtr->field_7, sMoveMonsPtr->fromRow, sMoveMonsPtr->toRow); + MultiMove_DeselectRow(sMultiMove->toRow, sMultiMove->fromColumn, sMultiMove->toColumn); + MultiMove_SelectRow(sMultiMove->cursorRow, sMultiMove->fromColumn, sMultiMove->toColumn); } } -static void sub_80955C4(u8 arg0, u8 arg1, u8 arg2) +static void MultiMove_SelectColumn(u8 column, u8 minRow, u8 maxRow) { - u8 var1 = arg1; + u8 tmp = minRow; - if (arg1 > arg2) + if (minRow > maxRow) { - arg1 = arg2; - arg2 = var1; + minRow = maxRow; + maxRow = tmp; } - while (arg1 <= arg2) - sub_80956A4(arg0, arg1++); + while (minRow <= maxRow) + MultiMove_SetIconToBg(column, minRow++); } -static void sub_80955FC(u8 arg0, u8 arg1, u8 arg2) +static void MultiMove_SelectRow(u8 row, u8 minColumn, u8 maxColumn) { - u8 var1 = arg1; + u8 tmp = minColumn; - if (arg1 > arg2) + if (minColumn > maxColumn) { - arg1 = arg2; - arg2 = var1; + minColumn = maxColumn; + maxColumn = tmp; } - while (arg1 <= arg2) - sub_80956A4(arg1++, arg0); + while (minColumn <= maxColumn) + MultiMove_SetIconToBg(minColumn++, row); } -static void sub_8095634(u8 arg0, u8 arg1, u8 arg2) +static void MultiMove_DeselectColumn(u8 column, u8 minRow, u8 maxRow) { - u8 var1 = arg1; + u8 tmp = minRow; - if (arg1 > arg2) + if (minRow > maxRow) { - arg1 = arg2; - arg2 = var1; + minRow = maxRow; + maxRow = tmp; } - while (arg1 <= arg2) - sub_809572C(arg0, arg1++); + while (minRow <= maxRow) + MultiMove_ClearIconFromBg(column, minRow++); } -static void sub_809566C(u8 arg0, u8 arg1, u8 arg2) +static void MultiMove_DeselectRow(u8 row, u8 minColumn, u8 maxColumn) { - u8 var1 = arg1; + u8 tmp = minColumn; - if (arg1 > arg2) + if (minColumn > maxColumn) { - arg1 = arg2; - arg2 = var1; + minColumn = maxColumn; + maxColumn = tmp; } - while (arg1 <= arg2) - sub_809572C(arg1++, arg0); + while (minColumn <= maxColumn) + MultiMove_ClearIconFromBg(minColumn++, row); } -static void sub_80956A4(u8 x, u8 y) +static void MultiMove_SetIconToBg(u8 x, u8 y) { - u8 position = x + (IN_BOX_ROWS * y); + u8 position = x + (IN_BOX_COLUMNS * y); u16 species = GetCurrentBoxMonData(position, MON_DATA_SPECIES2); u32 personality = GetCurrentBoxMonData(position, MON_DATA_PERSONALITY); if (species != SPECIES_NONE) { const u8 *iconGfx = GetMonIconPtr(species, personality, 1); - u8 index = GetValidMonIconPalIndex(species) + 8; - - BlitBitmapRectToWindow4BitTo8Bit(gPSSData->field_2200, - iconGfx, - 0, - 0, - 32, - 32, - 24 * x, - 24 * y, - 32, - 32, - index); + u8 palNum = GetValidMonIconPalIndex(species) + 8; + BlitBitmapRectToWindow4BitTo8Bit(gStorage->multiMoveWindowId, iconGfx, 0, 0, 32, 32, 24 * x, 24 * y, 32, 32, palNum); } } -static void sub_809572C(u8 x, u8 y) +static void MultiMove_ClearIconFromBg(u8 x, u8 y) { - u8 position = x + (IN_BOX_ROWS * y); + u8 position = x + (IN_BOX_COLUMNS * y); u16 species = GetCurrentBoxMonData(position, MON_DATA_SPECIES2); if (species != SPECIES_NONE) - { - FillWindowPixelRect8Bit(gPSSData->field_2200, - PIXEL_FILL(0), - 24 * x, - 24 * y, - 32, - 32); - } + FillWindowPixelRect8Bit(gStorage->multiMoveWindowId, PIXEL_FILL(0), 24 * x, 24 * y, 32, 32); } -static void sub_8095780(u16 bgX, u16 bgY, u16 duration) +static void MultiMove_InitBg(u16 bgX, u16 bgY, u16 duration) { - sMoveMonsPtr->bgX = bgX; - sMoveMonsPtr->bgY = bgY; - sMoveMonsPtr->field_10 = duration; + sMultiMove->bgX = bgX; + sMultiMove->bgY = bgY; + sMultiMove->bgMoveSteps = duration; } -static u8 sub_8095790(void) +static u8 MultiMove_UpdateBg(void) { - if (sMoveMonsPtr->field_10 != 0) + if (sMultiMove->bgMoveSteps != 0) { - ChangeBgX(0, sMoveMonsPtr->bgX, 1); - ChangeBgY(0, sMoveMonsPtr->bgY, 1); - sMoveMonsPtr->field_10--; + ChangeBgX(0, sMultiMove->bgX, BG_COORD_ADD); + ChangeBgY(0, sMultiMove->bgY, BG_COORD_ADD); + sMultiMove->bgMoveSteps--; } - return sMoveMonsPtr->field_10; + return sMultiMove->bgMoveSteps; } -static void sub_80957C8(void) +static void MultiMove_GetMonsFromSelection(void) { s32 i, j; - s32 rowCount, columnCount; + s32 columnCount, rowCount; u8 boxId; u8 monArrayId; - sMoveMonsPtr->minRow = min(sMoveMonsPtr->fromRow, sMoveMonsPtr->toRow); - sMoveMonsPtr->minColumn = min(sMoveMonsPtr->fromColumn, sMoveMonsPtr->toColumn); - sMoveMonsPtr->rowsTotal = abs(sMoveMonsPtr->fromRow - sMoveMonsPtr->toRow) + 1; - sMoveMonsPtr->columsTotal = abs(sMoveMonsPtr->fromColumn - sMoveMonsPtr->toColumn) + 1; + sMultiMove->minColumn = min(sMultiMove->fromColumn, sMultiMove->toColumn); + sMultiMove->minRow = min(sMultiMove->fromRow, sMultiMove->toRow); + sMultiMove->columnsTotal = abs(sMultiMove->fromColumn - sMultiMove->toColumn) + 1; + sMultiMove->rowsTotal = abs(sMultiMove->fromRow - sMultiMove->toRow) + 1; boxId = StorageGetCurrentBox(); monArrayId = 0; - rowCount = sMoveMonsPtr->minRow + sMoveMonsPtr->rowsTotal; - columnCount = sMoveMonsPtr->minColumn + sMoveMonsPtr->columsTotal; - for (i = sMoveMonsPtr->minColumn; i < columnCount; i++) + columnCount = sMultiMove->minColumn + sMultiMove->columnsTotal; + rowCount = sMultiMove->minRow + sMultiMove->rowsTotal; + for (i = sMultiMove->minRow; i < rowCount; i++) { - u8 boxPosition = (IN_BOX_ROWS * i) + sMoveMonsPtr->minRow; - for (j = sMoveMonsPtr->minRow; j < rowCount; j++) + u8 boxPosition = (IN_BOX_COLUMNS * i) + sMultiMove->minColumn; + for (j = sMultiMove->minColumn; j < columnCount; j++) { struct BoxPokemon *boxMon = GetBoxedMonPtr(boxId, boxPosition); // UB: possible null dereference #ifdef UBFIX if (boxMon != NULL) - sMoveMonsPtr->boxMons[monArrayId] = *boxMon; + sMultiMove->boxMons[monArrayId] = *boxMon; #else - sMoveMonsPtr->boxMons[monArrayId] = *boxMon; + sMultiMove->boxMons[monArrayId] = *boxMon; #endif monArrayId++; boxPosition++; @@ -486,17 +466,17 @@ static void sub_80957C8(void) } } -static void sub_80958A0(void) +static void MultiMove_RemoveMonsFromBox(void) { s32 i, j; - s32 rowCount = sMoveMonsPtr->minRow + sMoveMonsPtr->rowsTotal; - s32 columnCount = sMoveMonsPtr->minColumn + sMoveMonsPtr->columsTotal; + s32 columnCount = sMultiMove->minColumn + sMultiMove->columnsTotal; + s32 rowCount = sMultiMove->minRow + sMultiMove->rowsTotal; u8 boxId = StorageGetCurrentBox(); - for (i = sMoveMonsPtr->minColumn; i < columnCount; i++) + for (i = sMultiMove->minRow; i < rowCount; i++) { - u8 boxPosition = (IN_BOX_ROWS * i) + sMoveMonsPtr->minRow; - for (j = sMoveMonsPtr->minRow; j < rowCount; j++) + u8 boxPosition = (IN_BOX_COLUMNS * i) + sMultiMove->minColumn; + for (j = sMultiMove->minColumn; j < columnCount; j++) { DestroyBoxMonIconAtPosition(boxPosition); ZeroBoxMonAt(boxId, boxPosition); @@ -505,75 +485,75 @@ static void sub_80958A0(void) } } -static void sub_8095918(void) +static void MultiMove_CreatePlacedMonIcons(void) { s32 i, j; - s32 rowCount = sMoveMonsPtr->minRow + sMoveMonsPtr->rowsTotal; - s32 columnCount = sMoveMonsPtr->minColumn + sMoveMonsPtr->columsTotal; + s32 columnCount = sMultiMove->minColumn + sMultiMove->columnsTotal; + s32 rowCount = sMultiMove->minRow + sMultiMove->rowsTotal; u8 monArrayId = 0; - for (i = sMoveMonsPtr->minColumn; i < columnCount; i++) + for (i = sMultiMove->minRow; i < rowCount; i++) { - u8 boxPosition = (IN_BOX_ROWS * i) + sMoveMonsPtr->minRow; - for (j = sMoveMonsPtr->minRow; j < rowCount; j++) + u8 boxPosition = (IN_BOX_COLUMNS * i) + sMultiMove->minColumn; + for (j = sMultiMove->minColumn; j < columnCount; j++) { - if (GetBoxMonData(&sMoveMonsPtr->boxMons[monArrayId], MON_DATA_SANITY_HAS_SPECIES)) - sub_80901EC(boxPosition); + if (GetBoxMonData(&sMultiMove->boxMons[monArrayId], MON_DATA_SANITY_HAS_SPECIES)) + CreateBoxMonIconAtPos(boxPosition); monArrayId++; boxPosition++; } } } -static void sub_80959A8(void) +static void MultiMove_SetPlacedMonData(void) { s32 i, j; - s32 rowCount = sMoveMonsPtr->minRow + sMoveMonsPtr->rowsTotal; - s32 columnCount = sMoveMonsPtr->minColumn + sMoveMonsPtr->columsTotal; + s32 columnCount = sMultiMove->minColumn + sMultiMove->columnsTotal; + s32 rowCount = sMultiMove->minRow + sMultiMove->rowsTotal; u8 boxId = StorageGetCurrentBox(); u8 monArrayId = 0; - for (i = sMoveMonsPtr->minColumn; i < columnCount; i++) + for (i = sMultiMove->minRow; i < rowCount; i++) { - u8 boxPosition = (IN_BOX_ROWS * i) + sMoveMonsPtr->minRow; - for (j = sMoveMonsPtr->minRow; j < rowCount; j++) + u8 boxPosition = (IN_BOX_COLUMNS * i) + sMultiMove->minColumn; + for (j = sMultiMove->minColumn; j < columnCount; j++) { - if (GetBoxMonData(&sMoveMonsPtr->boxMons[monArrayId], MON_DATA_SANITY_HAS_SPECIES)) - SetBoxMonAt(boxId, boxPosition, &sMoveMonsPtr->boxMons[monArrayId]); + if (GetBoxMonData(&sMultiMove->boxMons[monArrayId], MON_DATA_SANITY_HAS_SPECIES)) + SetBoxMonAt(boxId, boxPosition, &sMultiMove->boxMons[monArrayId]); boxPosition++; monArrayId++; } } } -static void sub_8095A58(void) +static void MultiMove_ResetBg(void) { - ChangeBgX(0, 0, 0); - ChangeBgY(0, 0, 0); + ChangeBgX(0, 0, BG_COORD_SET); + ChangeBgY(0, 0, BG_COORD_SET); SetBgAttribute(0, BG_ATTR_PALETTEMODE, 0); ClearGpuRegBits(REG_OFFSET_BG0CNT, BGCNT_256COLOR); FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 32, 32); CopyBgTilemapBufferToVram(0); } -u8 sub_8095AA0(void) +u8 MultiMove_GetOriginPosition(void) { - return (IN_BOX_ROWS * sMoveMonsPtr->fromColumn) + sMoveMonsPtr->fromRow; + return (IN_BOX_COLUMNS * sMultiMove->fromRow) + sMultiMove->fromColumn; } -bool8 sub_8095ABC(void) +bool8 MultiMove_CanPlaceSelection(void) { s32 i, j; - s32 rowCount = sMoveMonsPtr->minRow + sMoveMonsPtr->rowsTotal; - s32 columnCount = sMoveMonsPtr->minColumn + sMoveMonsPtr->columsTotal; + s32 columnCount = sMultiMove->minColumn + sMultiMove->columnsTotal; + s32 rowCount = sMultiMove->minRow + sMultiMove->rowsTotal; u8 monArrayId = 0; - for (i = sMoveMonsPtr->minColumn; i < columnCount; i++) + for (i = sMultiMove->minRow; i < rowCount; i++) { - u8 boxPosition = (IN_BOX_ROWS * i) + sMoveMonsPtr->minRow; - for (j = sMoveMonsPtr->minRow; j < rowCount; j++) + u8 boxPosition = (IN_BOX_COLUMNS * i) + sMultiMove->minColumn; + for (j = sMultiMove->minColumn; j < columnCount; j++) { - if (GetBoxMonData(&sMoveMonsPtr->boxMons[monArrayId], MON_DATA_SANITY_HAS_SPECIES) + if (GetBoxMonData(&sMultiMove->boxMons[monArrayId], MON_DATA_SANITY_HAS_SPECIES) && GetCurrentBoxMonData(boxPosition, MON_DATA_SANITY_HAS_SPECIES)) return FALSE; diff --git a/src/pokemon_storage_system_8.c b/src/pokemon_storage_system_8.c index cdd7728a2..e7241e4b7 100644 --- a/src/pokemon_storage_system_8.c +++ b/src/pokemon_storage_system_8.c @@ -42,7 +42,7 @@ static void SpriteCB_ItemIcon_HideParty(struct Sprite *sprite); static const u32 sItemInfoFrame_Gfx[] = INCBIN_U32("graphics/interface/pss_unk_83D35DC.4bpp"); -static const struct OamData gUnknown_83D365C = { +static const struct OamData sOamData_ItemIcon = { .y = 0, .affineMode = ST_OAM_AFFINE_NORMAL, .objMode = ST_OAM_OBJ_NORMAL, @@ -58,65 +58,65 @@ static const struct OamData gUnknown_83D365C = { .affineParam = 0 }; -static const union AffineAnimCmd gUnknown_83D3664[] = { +static const union AffineAnimCmd sAffineAnim_ItemIcon_Small[] = { AFFINEANIMCMD_FRAME(128, 128, 0, 0), AFFINEANIMCMD_END }; -static const union AffineAnimCmd gUnknown_83D3674[] = { +static const union AffineAnimCmd sAffineAnim_ItemIcon_Appear[] = { AFFINEANIMCMD_FRAME(88, 88, 0, 0), AFFINEANIMCMD_FRAME(5, 5, 0, 8), AFFINEANIMCMD_END }; -static const union AffineAnimCmd gUnknown_83D368C[] = { +static const union AffineAnimCmd sAffineAnim_ItemIcon_Disappear[] = { AFFINEANIMCMD_FRAME(128, 128, 0, 0), AFFINEANIMCMD_FRAME(-5, -5, 0, 8), AFFINEANIMCMD_END }; -static const union AffineAnimCmd gUnknown_83D36A4[] = { +static const union AffineAnimCmd sAffineAnim_ItemIcon_PickUp[] = { AFFINEANIMCMD_FRAME(128, 128, 0, 0), AFFINEANIMCMD_FRAME(10, 10, 0, 12), AFFINEANIMCMD_FRAME(256, 256, 0, 0), AFFINEANIMCMD_END }; -static const union AffineAnimCmd gUnknown_83D36C4[] = { +static const union AffineAnimCmd sAffineAnim_ItemIcon_PutDown[] = { AFFINEANIMCMD_FRAME(256, 256, 0, 0), AFFINEANIMCMD_FRAME(-10, -10, 0, 12), AFFINEANIMCMD_FRAME(128, 128, 0, 0), AFFINEANIMCMD_END }; -static const union AffineAnimCmd gUnknown_83D36E4[] = { +static const union AffineAnimCmd sAffineAnim_ItemIcon_PutAway[] = { AFFINEANIMCMD_FRAME(256, 256, 0, 0), AFFINEANIMCMD_FRAME(-5, -5, 0, 16), AFFINEANIMCMD_END }; -static const union AffineAnimCmd gUnknown_83D36FC[] = { +static const union AffineAnimCmd sAffineAnim_ItemIcon_Large[] = { AFFINEANIMCMD_FRAME(256, 256, 0, 0), AFFINEANIMCMD_END }; -static const union AffineAnimCmd *const gUnknown_83D370C[] = { - gUnknown_83D3664, - gUnknown_83D3674, - gUnknown_83D368C, - gUnknown_83D36A4, - gUnknown_83D36C4, - gUnknown_83D36E4, - gUnknown_83D36FC +static const union AffineAnimCmd *const sAffineAnims_ItemIcon[] = { + [ITEM_ANIM_NONE] = sAffineAnim_ItemIcon_Small, + [ITEM_ANIM_APPEAR] = sAffineAnim_ItemIcon_Appear, + [ITEM_ANIM_DISAPPEAR] = sAffineAnim_ItemIcon_Disappear, + [ITEM_ANIM_PICK_UP] = sAffineAnim_ItemIcon_PickUp, + [ITEM_ANIM_PUT_DOWN] = sAffineAnim_ItemIcon_PutDown, + [ITEM_ANIM_PUT_AWAY] = sAffineAnim_ItemIcon_PutAway, + [ITEM_ANIM_LARGE] = sAffineAnim_ItemIcon_Large, }; static const struct SpriteTemplate sSpriteTemplate_ItemIcon = { - .tileTag = TAG_TILE_7, - .paletteTag = TAG_PAL_DACB, - .oam = &gUnknown_83D365C, + .tileTag = GFXTAG_ITEM_ICON_0, + .paletteTag = PALTAG_ITEM_ICON_0, + .oam = &sOamData_ItemIcon, .anims = gDummySpriteAnimTable, .images = NULL, - .affineAnims = gUnknown_83D370C, + .affineAnims = sAffineAnims_ItemIcon, .callback = SpriteCallbackDummy, }; @@ -128,7 +128,7 @@ void CreateItemIconSprites(void) struct SpriteTemplate spriteTemplate; static u32 sItemIconGfxBuffer[0x61]; - if (gPSSData->boxOption == OPTION_MOVE_ITEMS) + if (gStorage->boxOption == OPTION_MOVE_ITEMS) { spriteSheet.data = sItemIconGfxBuffer; spriteSheet.size = 0x200; @@ -136,30 +136,28 @@ void CreateItemIconSprites(void) for (i = 0; i < MAX_ITEM_ICONS; i++) { - spriteSheet.tag = TAG_TILE_7 + i; + spriteSheet.tag = GFXTAG_ITEM_ICON_0 + i; LoadCompressedSpriteSheet(&spriteSheet); - gPSSData->itemIcons[i].tiles = GetSpriteTileStartByTag(spriteSheet.tag) * TILE_SIZE_4BPP + (void *)(OBJ_VRAM0); - gPSSData->itemIcons[i].palIndex = AllocSpritePalette(TAG_PAL_DACB + i); - gPSSData->itemIcons[i].palIndex *= 16; - gPSSData->itemIcons[i].palIndex += 0x100; - spriteTemplate.tileTag = TAG_TILE_7 + i; - spriteTemplate.paletteTag = TAG_PAL_DACB + i; + gStorage->itemIcons[i].tiles = GetSpriteTileStartByTag(spriteSheet.tag) * TILE_SIZE_4BPP + (void *)(OBJ_VRAM0); + gStorage->itemIcons[i].palIndex = AllocSpritePalette(PALTAG_ITEM_ICON_0 + i); + gStorage->itemIcons[i].palIndex *= 16; + gStorage->itemIcons[i].palIndex += 0x100; + spriteTemplate.tileTag = GFXTAG_ITEM_ICON_0 + i; + spriteTemplate.paletteTag = PALTAG_ITEM_ICON_0 + i; spriteId = CreateSprite(&spriteTemplate, 0, 0, 11); - gPSSData->itemIcons[i].sprite = &gSprites[spriteId]; - gPSSData->itemIcons[i].sprite->invisible = TRUE; - gPSSData->itemIcons[i].active = FALSE; + gStorage->itemIcons[i].sprite = &gSprites[spriteId]; + gStorage->itemIcons[i].sprite->invisible = TRUE; + gStorage->itemIcons[i].active = FALSE; } } - gPSSData->movingItemId = ITEM_NONE; + gStorage->movingItemId = ITEM_NONE; } -void sub_8095C84(u8 cursorArea, u8 cursorPos) +void TryLoadItemIconAtPos(u8 cursorArea, u8 cursorPos) { u16 heldItem; - if (gPSSData->boxOption != OPTION_MOVE_ITEMS) - return; - if (IsItemIconAtPosition(cursorArea, cursorPos)) + if ((gStorage->boxOption != OPTION_MOVE_ITEMS) || IsItemIconAtPosition(cursorArea, cursorPos)) return; switch (cursorArea) @@ -186,21 +184,21 @@ void sub_8095C84(u8 cursorArea, u8 cursorPos) SetItemIconPosition(id, cursorArea, cursorPos); LoadItemIconGfx(id, tiles, pal); - SetItemIconAffineAnim(id, 1); + SetItemIconAffineAnim(id, ITEM_ANIM_APPEAR); SetItemIconActive(id, TRUE); } } -void sub_8095D44(u8 cursorArea, u8 cursorPos) +void TryHideItemIconAtPos(u8 cursorArea, u8 cursorPos) { u8 id; - if (gPSSData->boxOption != OPTION_MOVE_ITEMS) + if (gStorage->boxOption != OPTION_MOVE_ITEMS) return; id = GetItemIconIdxByPosition(cursorArea, cursorPos); - SetItemIconAffineAnim(id, 2); - SetItemIconCallback(id, 0, cursorArea, cursorPos); + SetItemIconAffineAnim(id, ITEM_ANIM_DISAPPEAR); + SetItemIconCallback(id, ITEM_CB_WAIT_ANIM, cursorArea, cursorPos); } void Item_FromMonToMoving(u8 cursorArea, u8 cursorPos) @@ -208,14 +206,14 @@ void Item_FromMonToMoving(u8 cursorArea, u8 cursorPos) u8 id; u16 item; - if (gPSSData->boxOption != OPTION_MOVE_ITEMS) + if (gStorage->boxOption != OPTION_MOVE_ITEMS) return; id = GetItemIconIdxByPosition(cursorArea, cursorPos); item = 0; - SetItemIconAffineAnim(id, 3); - SetItemIconCallback(id, 1, cursorArea, cursorPos); - SetItemIconPosition(id, 2, 0); + SetItemIconAffineAnim(id, ITEM_ANIM_PICK_UP); + SetItemIconCallback(id, ITEM_CB_TO_HAND, cursorArea, cursorPos); + SetItemIconPosition(id, CURSOR_AREA_IN_HAND, 0); if (cursorArea == CURSOR_AREA_IN_BOX) { SetCurrentBoxMonData(cursorPos, MON_DATA_HELD_ITEM, &item); @@ -227,21 +225,21 @@ void Item_FromMonToMoving(u8 cursorArea, u8 cursorPos) SetPartyMonIconObjMode(cursorPos, ST_OAM_OBJ_BLEND); } - gPSSData->movingItemId = gPSSData->displayMonItemId; + gStorage->movingItemId = gStorage->displayMonItemId; } -void sub_8095E2C(u16 item) +void InitItemIconInCursor(u16 item) { const u32 *tiles = GetItemIconPic(item); const u32 *pal = GetItemIconPalette(item); u8 id = GetNewItemIconIdx(); LoadItemIconGfx(id, tiles, pal); - SetItemIconAffineAnim(id, 6); - SetItemIconCallback(id, 1, CURSOR_AREA_IN_BOX, 0); - SetItemIconPosition(id, CURSOR_AREA_BOX, 0); + SetItemIconAffineAnim(id, ITEM_ANIM_LARGE); + SetItemIconCallback(id, ITEM_CB_TO_HAND, 0, 0); + SetItemIconPosition(id, CURSOR_AREA_IN_HAND, 0); SetItemIconActive(id, TRUE); - gPSSData->movingItemId = item; + gStorage->movingItemId = item; } void Item_SwitchMonsWithMoving(u8 cursorArea, u8 cursorPos) @@ -249,48 +247,48 @@ void Item_SwitchMonsWithMoving(u8 cursorArea, u8 cursorPos) u8 id; u16 item; - if (gPSSData->boxOption != OPTION_MOVE_ITEMS) + if (gStorage->boxOption != OPTION_MOVE_ITEMS) return; id = GetItemIconIdxByPosition(cursorArea, cursorPos); - SetItemIconAffineAnim(id, 3); - SetItemIconCallback(id, 3, CURSOR_AREA_BOX, 0); + SetItemIconAffineAnim(id, ITEM_ANIM_PICK_UP); + SetItemIconCallback(id, ITEM_CB_SWAP_TO_HAND, CURSOR_AREA_IN_HAND, 0); if (cursorArea == CURSOR_AREA_IN_BOX) { item = GetCurrentBoxMonData(cursorPos, MON_DATA_HELD_ITEM); - SetCurrentBoxMonData(cursorPos, MON_DATA_HELD_ITEM, &gPSSData->movingItemId); - gPSSData->movingItemId = item; + SetCurrentBoxMonData(cursorPos, MON_DATA_HELD_ITEM, &gStorage->movingItemId); + gStorage->movingItemId = item; } else { item = GetMonData(&gPlayerParty[cursorPos], MON_DATA_HELD_ITEM); - SetMonData(&gPlayerParty[cursorPos], MON_DATA_HELD_ITEM, &gPSSData->movingItemId); - gPSSData->movingItemId = item; + SetMonData(&gPlayerParty[cursorPos], MON_DATA_HELD_ITEM, &gStorage->movingItemId); + gStorage->movingItemId = item; } id = GetItemIconIdxByPosition(2, 0); - SetItemIconAffineAnim(id, 4); - SetItemIconCallback(id, 4, cursorArea, cursorPos); + SetItemIconAffineAnim(id, ITEM_ANIM_PUT_DOWN); + SetItemIconCallback(id, ITEM_CB_SWAP_TO_MON, cursorArea, cursorPos); } void Item_GiveMovingToMon(u8 cursorArea, u8 cursorPos) { u8 id; - if (gPSSData->boxOption != OPTION_MOVE_ITEMS) + if (gStorage->boxOption != OPTION_MOVE_ITEMS) return; id = GetItemIconIdxByPosition(2, 0); - SetItemIconAffineAnim(id, 4); - SetItemIconCallback(id, 2, cursorArea, cursorPos); + SetItemIconAffineAnim(id, ITEM_ANIM_PUT_DOWN); + SetItemIconCallback(id, ITEM_CB_TO_MON, cursorArea, cursorPos); if (cursorArea == CURSOR_AREA_IN_BOX) { - SetCurrentBoxMonData(cursorPos, MON_DATA_HELD_ITEM, &gPSSData->movingItemId); + SetCurrentBoxMonData(cursorPos, MON_DATA_HELD_ITEM, &gStorage->movingItemId); SetBoxMonIconObjMode(cursorPos, ST_OAM_OBJ_NORMAL); } else { - SetMonData(&gPlayerParty[cursorPos], MON_DATA_HELD_ITEM, &gPSSData->movingItemId); + SetMonData(&gPlayerParty[cursorPos], MON_DATA_HELD_ITEM, &gStorage->movingItemId); SetPartyMonIconObjMode(cursorPos, ST_OAM_OBJ_NORMAL); } } @@ -300,13 +298,13 @@ void Item_TakeMons(u8 cursorArea, u8 cursorPos) u8 id; u16 item; - if (gPSSData->boxOption != OPTION_MOVE_ITEMS) + if (gStorage->boxOption != OPTION_MOVE_ITEMS) return; - item = 0; + item = ITEM_NONE; id = GetItemIconIdxByPosition(cursorArea, cursorPos); - SetItemIconAffineAnim(id, 2); - SetItemIconCallback(id, 0, cursorArea, cursorPos); + SetItemIconAffineAnim(id, ITEM_ANIM_DISAPPEAR); + SetItemIconCallback(id, ITEM_CB_WAIT_ANIM, cursorArea, cursorPos); if (cursorArea == CURSOR_AREA_IN_BOX) { SetCurrentBoxMonData(cursorPos, MON_DATA_HELD_ITEM, &item); @@ -319,41 +317,44 @@ void Item_TakeMons(u8 cursorArea, u8 cursorPos) } } -void sub_8096088(void) +void MoveItemFromCursorToBag(void) { - if (gPSSData->boxOption == OPTION_MOVE_ITEMS) + if (gStorage->boxOption == OPTION_MOVE_ITEMS) { - u8 id = GetItemIconIdxByPosition(2, 0); - SetItemIconAffineAnim(id, 5); - SetItemIconCallback(id, 0, CURSOR_AREA_BOX, 0); + u8 id = GetItemIconIdxByPosition(CURSOR_AREA_IN_HAND, 0); + SetItemIconAffineAnim(id, ITEM_ANIM_PUT_AWAY); + SetItemIconCallback(id, ITEM_CB_WAIT_ANIM, 2, 0); } } -void sub_80960C0(void) +// The party menu is being closed, if the cursor is on +// a Pokémon that has a held item make sure it slides +// up along with the closing menu. +void MoveHeldItemWithPartyMenu(void) { s32 i; - if (gPSSData->boxOption != OPTION_MOVE_ITEMS) + if (gStorage->boxOption != OPTION_MOVE_ITEMS) return; for (i = 0; i < MAX_ITEM_ICONS; i++) { - if (gPSSData->itemIcons[i].active && gPSSData->itemIcons[i].cursorArea == CURSOR_AREA_IN_PARTY) - SetItemIconCallback(i, 7, CURSOR_AREA_BOX, 0); + if (gStorage->itemIcons[i].active && gStorage->itemIcons[i].cursorArea == CURSOR_AREA_IN_PARTY) + SetItemIconCallback(i, ITEM_CB_HIDE_PARTY, 2, 0); } } -bool8 sub_809610C(void) +bool8 IsItemIconAnimActive(void) { s32 i; for (i = 0; i < MAX_ITEM_ICONS; i++) { - if (gPSSData->itemIcons[i].active) + if (gStorage->itemIcons[i].active) { - if (!gPSSData->itemIcons[i].sprite->affineAnimEnded && gPSSData->itemIcons[i].sprite->affineAnimBeginning) + if (!gStorage->itemIcons[i].sprite->affineAnimEnded && gStorage->itemIcons[i].sprite->affineAnimBeginning) return TRUE; - if (gPSSData->itemIcons[i].sprite->callback != SpriteCallbackDummy && gPSSData->itemIcons[i].sprite->callback != SpriteCB_ItemIcon_SetPosToCursor) + if (gStorage->itemIcons[i].sprite->callback != SpriteCallbackDummy && gStorage->itemIcons[i].sprite->callback != SpriteCB_ItemIcon_SetPosToCursor) return TRUE; } } @@ -365,11 +366,11 @@ bool8 IsActiveItemMoving(void) { s32 i; - if (gPSSData->boxOption == OPTION_MOVE_ITEMS) + if (gStorage->boxOption == OPTION_MOVE_ITEMS) { for (i = 0; i < MAX_ITEM_ICONS; i++) { - if (gPSSData->itemIcons[i].active && gPSSData->itemIcons[i].cursorArea == CURSOR_AREA_BOX) + if (gStorage->itemIcons[i].active && gStorage->itemIcons[i].cursorArea == CURSOR_AREA_BOX_TITLE) return TRUE; } } @@ -379,12 +380,12 @@ bool8 IsActiveItemMoving(void) const u8 *GetMovingItemName(void) { - return ItemId_GetName(gPSSData->movingItemId); + return ItemId_GetName(gStorage->movingItemId); } u16 GetMovingItem(void) { - return gPSSData->movingItemId; + return gStorage->movingItemId; } static u8 GetNewItemIconIdx(void) @@ -393,9 +394,9 @@ static u8 GetNewItemIconIdx(void) for (i = 0; i < MAX_ITEM_ICONS; i++) { - if (!gPSSData->itemIcons[i].active) + if (!gStorage->itemIcons[i].active) { - gPSSData->itemIcons[i].active = TRUE; + gStorage->itemIcons[i].active = TRUE; return i; } } @@ -409,9 +410,9 @@ static bool32 IsItemIconAtPosition(u8 cursorArea, u8 cursorPos) for (i = 0; i < MAX_ITEM_ICONS; i++) { - if (gPSSData->itemIcons[i].active - && gPSSData->itemIcons[i].cursorArea == cursorArea - && gPSSData->itemIcons[i].cursorPos == cursorPos) + if (gStorage->itemIcons[i].active + && gStorage->itemIcons[i].cursorArea == cursorArea + && gStorage->itemIcons[i].cursorPos == cursorPos) return TRUE; } @@ -424,9 +425,9 @@ static u8 GetItemIconIdxByPosition(u8 cursorArea, u8 cursorPos) for (i = 0; i < MAX_ITEM_ICONS; i++) { - if (gPSSData->itemIcons[i].active - && gPSSData->itemIcons[i].cursorArea == cursorArea - && gPSSData->itemIcons[i].cursorPos == cursorPos) + if (gStorage->itemIcons[i].active + && gStorage->itemIcons[i].cursorArea == cursorArea + && gStorage->itemIcons[i].cursorPos == cursorPos) return i; } @@ -439,8 +440,8 @@ static u8 GetItemIconIdxBySprite(struct Sprite *sprite) for (i = 0; i < MAX_ITEM_ICONS; i++) { - if (gPSSData->itemIcons[i].active - && gPSSData->itemIcons[i].sprite == sprite) + if (gStorage->itemIcons[i].active + && gStorage->itemIcons[i].sprite == sprite) return i; } @@ -457,29 +458,29 @@ static void SetItemIconPosition(u8 id, u8 cursorArea, u8 cursorPos) switch (cursorArea) { case CURSOR_AREA_IN_BOX: - row = cursorPos % IN_BOX_ROWS; - column = cursorPos / IN_BOX_ROWS; - gPSSData->itemIcons[id].sprite->x = (24 * row) + 112; - gPSSData->itemIcons[id].sprite->y = (24 * column) + 56; - gPSSData->itemIcons[id].sprite->oam.priority = 2; + row = cursorPos % IN_BOX_COLUMNS; + column = cursorPos / IN_BOX_COLUMNS; + gStorage->itemIcons[id].sprite->x = (24 * row) + 112; + gStorage->itemIcons[id].sprite->y = (24 * column) + 56; + gStorage->itemIcons[id].sprite->oam.priority = 2; break; case CURSOR_AREA_IN_PARTY: if (cursorPos == 0) { - gPSSData->itemIcons[id].sprite->x = 116; - gPSSData->itemIcons[id].sprite->y = 76; + gStorage->itemIcons[id].sprite->x = 116; + gStorage->itemIcons[id].sprite->y = 76; } else { - gPSSData->itemIcons[id].sprite->x = 164; - gPSSData->itemIcons[id].sprite->y = 24 * (cursorPos - 1) + 28; + gStorage->itemIcons[id].sprite->x = 164; + gStorage->itemIcons[id].sprite->y = 24 * (cursorPos - 1) + 28; } - gPSSData->itemIcons[id].sprite->oam.priority = 1; + gStorage->itemIcons[id].sprite->oam.priority = 1; break; } - gPSSData->itemIcons[id].cursorArea = cursorArea; - gPSSData->itemIcons[id].cursorPos = cursorPos; + gStorage->itemIcons[id].cursorArea = cursorArea; + gStorage->itemIcons[id].cursorPos = cursorPos; } static void LoadItemIconGfx(u8 id, const u32 *itemTiles, const u32 *itemPal) @@ -489,14 +490,14 @@ static void LoadItemIconGfx(u8 id, const u32 *itemTiles, const u32 *itemPal) if (id >= MAX_ITEM_ICONS) return; - CpuFastFill(0, gPSSData->itemIconBuffer, 0x200); - LZ77UnCompWram(itemTiles, gPSSData->field_22C4); + CpuFastFill(0, gStorage->itemIconBuffer, 0x200); + LZ77UnCompWram(itemTiles, gStorage->tileBuffer); for (i = 0; i < 3; i++) - CpuFastCopy(gPSSData->field_22C4 + (i * 0x60), gPSSData->itemIconBuffer + (i * 0x80), 0x60); + CpuFastCopy(gStorage->tileBuffer + (i * 0x60), gStorage->itemIconBuffer + (i * 0x80), 0x60); - CpuFastCopy(gPSSData->itemIconBuffer, gPSSData->itemIcons[id].tiles, 0x200); - LZ77UnCompWram(itemPal, gPSSData->itemIconBuffer); - LoadPalette(gPSSData->itemIconBuffer, gPSSData->itemIcons[id].palIndex, 0x20); + CpuFastCopy(gStorage->itemIconBuffer, gStorage->itemIcons[id].tiles, 0x200); + LZ77UnCompWram(itemPal, gStorage->itemIconBuffer); + LoadPalette(gStorage->itemIconBuffer, gStorage->itemIcons[id].palIndex, 0x20); } static void SetItemIconAffineAnim(u8 id, u8 animNum) @@ -504,7 +505,7 @@ static void SetItemIconAffineAnim(u8 id, u8 animNum) if (id >= MAX_ITEM_ICONS) return; - StartSpriteAffineAnim(gPSSData->itemIcons[id].sprite, animNum); + StartSpriteAffineAnim(gStorage->itemIcons[id].sprite, animNum); } #define sItemIconId data[0] @@ -520,36 +521,36 @@ static void SetItemIconCallback(u8 id, u8 callbackId, u8 cursorArea, u8 cursorPo switch (callbackId) { case ITEM_CB_WAIT_ANIM: - gPSSData->itemIcons[id].sprite->sItemIconId = id; - gPSSData->itemIcons[id].sprite->callback = SpriteCB_ItemIcon_WaitAnim; + gStorage->itemIcons[id].sprite->sItemIconId = id; + gStorage->itemIcons[id].sprite->callback = SpriteCB_ItemIcon_WaitAnim; break; case ITEM_CB_TO_HAND: - gPSSData->itemIcons[id].sprite->sState = 0; - gPSSData->itemIcons[id].sprite->callback = SpriteCB_ItemIcon_ToHand; + gStorage->itemIcons[id].sprite->sState = 0; + gStorage->itemIcons[id].sprite->callback = SpriteCB_ItemIcon_ToHand; break; case ITEM_CB_TO_MON: - gPSSData->itemIcons[id].sprite->sState = 0; - gPSSData->itemIcons[id].sprite->sCursorArea = cursorArea; - gPSSData->itemIcons[id].sprite->sCursorPos = cursorPos; - gPSSData->itemIcons[id].sprite->callback = SpriteCB_ItemIcon_ToMon; + gStorage->itemIcons[id].sprite->sState = 0; + gStorage->itemIcons[id].sprite->sCursorArea = cursorArea; + gStorage->itemIcons[id].sprite->sCursorPos = cursorPos; + gStorage->itemIcons[id].sprite->callback = SpriteCB_ItemIcon_ToMon; break; case ITEM_CB_SWAP_TO_HAND: - gPSSData->itemIcons[id].sprite->sState = 0; - gPSSData->itemIcons[id].sprite->callback = SpriteCB_ItemIcon_SwapToHand; - gPSSData->itemIcons[id].sprite->sCursorArea = cursorArea; - gPSSData->itemIcons[id].sprite->sCursorPos = cursorPos; + gStorage->itemIcons[id].sprite->sState = 0; + gStorage->itemIcons[id].sprite->callback = SpriteCB_ItemIcon_SwapToHand; + gStorage->itemIcons[id].sprite->sCursorArea = cursorArea; + gStorage->itemIcons[id].sprite->sCursorPos = cursorPos; break; case ITEM_CB_SWAP_TO_MON: - gPSSData->itemIcons[id].sprite->sState = 0; - gPSSData->itemIcons[id].sprite->sCursorArea = cursorArea; - gPSSData->itemIcons[id].sprite->sCursorPos = cursorPos; - gPSSData->itemIcons[id].sprite->callback = SpriteCB_ItemIcon_SwapToMon; + gStorage->itemIcons[id].sprite->sState = 0; + gStorage->itemIcons[id].sprite->sCursorArea = cursorArea; + gStorage->itemIcons[id].sprite->sCursorPos = cursorPos; + gStorage->itemIcons[id].sprite->callback = SpriteCB_ItemIcon_SwapToMon; break; case ITEM_CB_HIDE_PARTY: // If cursor is on a Pokémon with a held item and // the player closes the party menu, have the held // item follow the Pokémon as the menu slides out - gPSSData->itemIcons[id].sprite->callback = SpriteCB_ItemIcon_HideParty; + gStorage->itemIcons[id].sprite->callback = SpriteCB_ItemIcon_HideParty; break; } } @@ -559,8 +560,8 @@ static void SetItemIconActive(u8 id, bool8 show) if (id >= MAX_ITEM_ICONS) return; - gPSSData->itemIcons[id].active = show; - gPSSData->itemIcons[id].sprite->invisible = (show == FALSE); + gStorage->itemIcons[id].active = show; + gStorage->itemIcons[id].sprite->invisible = (show == FALSE); } static const u32 *GetItemIconPic(u16 itemId) @@ -578,9 +579,9 @@ void PrintItemDescription(void) const u8 *description; if (IsActiveItemMoving()) - description = ItemId_GetDescription(gPSSData->movingItemId); + description = ItemId_GetDescription(gStorage->movingItemId); else - description = ItemId_GetDescription(gPSSData->displayMonItemId); + description = ItemId_GetDescription(gStorage->displayMonItemId); FillWindowPixelBuffer(2, PIXEL_FILL(1)); AddTextPrinterParameterized5(2, FONT_2, description, 2, 0, 0, NULL, 0, 0); @@ -588,7 +589,7 @@ void PrintItemDescription(void) void InitItemInfoWindow(void) { - gPSSData->itemInfoWindowOffset = 25; + gStorage->itemInfoWindowOffset = 25; LoadBgTiles(0, sItemInfoFrame_Gfx, 0x80, 0x1A4); DrawItemInfoWindow(0); } @@ -597,53 +598,49 @@ bool8 UpdateItemInfoWindowSlideIn(void) { s32 i, pos; - if (gPSSData->itemInfoWindowOffset == 0) + if (gStorage->itemInfoWindowOffset == 0) return FALSE; - gPSSData->itemInfoWindowOffset--; - pos = 25 - gPSSData->itemInfoWindowOffset; + gStorage->itemInfoWindowOffset--; + pos = 25 - gStorage->itemInfoWindowOffset; for (i = 0; i < pos; i++) - { - WriteSequenceToBgTilemapBuffer(0, GetBgAttribute(0, BG_ATTR_BASETILE) + 0x14 + gPSSData->itemInfoWindowOffset + i, i, 12, 1, 8, 15, 25); - } + WriteSequenceToBgTilemapBuffer(0, GetBgAttribute(0, BG_ATTR_BASETILE) + 0x14 + gStorage->itemInfoWindowOffset + i, i, 12, 1, 8, 15, 25); DrawItemInfoWindow(pos); - return (gPSSData->itemInfoWindowOffset != 0); + return (gStorage->itemInfoWindowOffset != 0); } bool8 UpdateItemInfoWindowSlideOut(void) { s32 i, pos; - if (gPSSData->itemInfoWindowOffset == 25) + if (gStorage->itemInfoWindowOffset == 25) return FALSE; - if (gPSSData->itemInfoWindowOffset == 0) + if (gStorage->itemInfoWindowOffset == 0) FillBgTilemapBufferRect(0, 0, 25, 11, 1, 10, 17); - gPSSData->itemInfoWindowOffset++; - pos = 25 - gPSSData->itemInfoWindowOffset; + gStorage->itemInfoWindowOffset++; + pos = 25 - gStorage->itemInfoWindowOffset; for (i = 0; i < pos; i++) - { - WriteSequenceToBgTilemapBuffer(0, GetBgAttribute(0, BG_ATTR_BASETILE) + 0x14 + gPSSData->itemInfoWindowOffset + i, i, 12, 1, 8, 15, 25); - } + WriteSequenceToBgTilemapBuffer(0, GetBgAttribute(0, BG_ATTR_BASETILE) + 0x14 + gStorage->itemInfoWindowOffset + i, i, 12, 1, 8, 15, 25); DrawItemInfoWindow(pos); - FillBgTilemapBufferRect(0, 0, pos, 11, 1, 10, 0x11); - return (gPSSData->itemInfoWindowOffset != 25); + FillBgTilemapBufferRect(0, 0, pos, 11, 1, 10, 17); + return (gStorage->itemInfoWindowOffset != 25); } static void DrawItemInfoWindow(u32 x) { if (x != 0) { - FillBgTilemapBufferRect(0, 0x1A4, 0, 0xB, x, 1, 0xFu); - FillBgTilemapBufferRect(0, 0x9A4, 0, 0x14, x, 1, 0xFu); + FillBgTilemapBufferRect(0, 0x1A4, 0, 0xB, x, 1, 15); + FillBgTilemapBufferRect(0, 0x9A4, 0, 0x14, x, 1, 15); } - FillBgTilemapBufferRect(0, 0x1A5, x, 0xC, 1, 8, 0xFu); - FillBgTilemapBufferRect(0, 0x1A6, x, 0xB, 1, 1, 0xFu); - FillBgTilemapBufferRect(0, 0x1A7, x, 0x14, 1, 1, 0xFu); + FillBgTilemapBufferRect(0, 0x1A5, x, 0xC, 1, 8, 15); + FillBgTilemapBufferRect(0, 0x1A6, x, 0xB, 1, 1, 15); + FillBgTilemapBufferRect(0, 0x1A7, x, 0x14, 1, 1, 15); ScheduleBgCopyTilemapToVram(0); } @@ -651,14 +648,14 @@ static void SpriteCB_ItemIcon_WaitAnim(struct Sprite *sprite) { if (sprite->affineAnimEnded) { - SetItemIconActive(sprite->data[0], FALSE); + SetItemIconActive(sprite->sItemIconId, FALSE); sprite->callback = SpriteCallbackDummy; } } static void SpriteCB_ItemIcon_ToHand(struct Sprite *sprite) { - switch (sprite->data[0]) + switch (sprite->sState) { case 0: sprite->data[1] = sprite->x << 4; @@ -666,7 +663,7 @@ static void SpriteCB_ItemIcon_ToHand(struct Sprite *sprite) sprite->data[3] = 10; sprite->data[4] = 21; sprite->data[5] = 0; - sprite->data[0]++; + sprite->sState++; case 1: sprite->data[1] -= sprite->data[3]; sprite->data[2] -= sprite->data[4]; @@ -680,14 +677,14 @@ static void SpriteCB_ItemIcon_ToHand(struct Sprite *sprite) static void SpriteCB_ItemIcon_SetPosToCursor(struct Sprite *sprite) { - sprite->x = gPSSData->cursorSprite->x + 4; - sprite->y = gPSSData->cursorSprite->y + gPSSData->cursorSprite->y2 + 8; - sprite->oam.priority = gPSSData->cursorSprite->oam.priority; + sprite->x = gStorage->cursorSprite->x + 4; + sprite->y = gStorage->cursorSprite->y + gStorage->cursorSprite->y2 + 8; + sprite->oam.priority = gStorage->cursorSprite->oam.priority; } static void SpriteCB_ItemIcon_ToMon(struct Sprite *sprite) { - switch (sprite->data[0]) + switch (sprite->sState) { case 0: sprite->data[1] = sprite->x << 4; @@ -695,7 +692,7 @@ static void SpriteCB_ItemIcon_ToMon(struct Sprite *sprite) sprite->data[3] = 10; sprite->data[4] = 21; sprite->data[5] = 0; - sprite->data[0]++; + sprite->sState++; case 1: sprite->data[1] += sprite->data[3]; sprite->data[2] += sprite->data[4]; @@ -703,7 +700,7 @@ static void SpriteCB_ItemIcon_ToMon(struct Sprite *sprite) sprite->y = sprite->data[2] >> 4; if (++sprite->data[5] > 11) { - SetItemIconPosition(GetItemIconIdxBySprite(sprite), sprite->data[6], sprite->data[7]); + SetItemIconPosition(GetItemIconIdxBySprite(sprite), sprite->sCursorArea, sprite->sCursorPos); sprite->callback = SpriteCallbackDummy; } break; @@ -712,7 +709,7 @@ static void SpriteCB_ItemIcon_ToMon(struct Sprite *sprite) static void SpriteCB_ItemIcon_SwapToHand(struct Sprite *sprite) { - switch (sprite->data[0]) + switch (sprite->sState) { case 0: sprite->data[1] = sprite->x << 4; @@ -720,7 +717,7 @@ static void SpriteCB_ItemIcon_SwapToHand(struct Sprite *sprite) sprite->data[3] = 10; sprite->data[4] = 21; sprite->data[5] = 0; - sprite->data[0]++; + sprite->sState++; case 1: sprite->data[1] -= sprite->data[3]; sprite->data[2] -= sprite->data[4]; @@ -729,7 +726,7 @@ static void SpriteCB_ItemIcon_SwapToHand(struct Sprite *sprite) sprite->x2 = gSineTable[sprite->data[5] * 8] >> 4; if (++sprite->data[5] > 11) { - SetItemIconPosition(GetItemIconIdxBySprite(sprite), sprite->data[6], sprite->data[7]); + SetItemIconPosition(GetItemIconIdxBySprite(sprite), sprite->sCursorArea, sprite->sCursorPos); sprite->x2 = 0; sprite->callback = SpriteCB_ItemIcon_SetPosToCursor; } @@ -739,7 +736,7 @@ static void SpriteCB_ItemIcon_SwapToHand(struct Sprite *sprite) static void SpriteCB_ItemIcon_SwapToMon(struct Sprite *sprite) { - switch (sprite->data[0]) + switch (sprite->sState) { case 0: sprite->data[1] = sprite->x << 4; @@ -747,7 +744,7 @@ static void SpriteCB_ItemIcon_SwapToMon(struct Sprite *sprite) sprite->data[3] = 10; sprite->data[4] = 21; sprite->data[5] = 0; - sprite->data[0]++; + sprite->sState++; case 1: sprite->data[1] += sprite->data[3]; sprite->data[2] += sprite->data[4]; @@ -756,7 +753,7 @@ static void SpriteCB_ItemIcon_SwapToMon(struct Sprite *sprite) sprite->x2 = -(gSineTable[sprite->data[5] * 8] >> 4); if (++sprite->data[5] > 11) { - SetItemIconPosition(GetItemIconIdxBySprite(sprite), sprite->data[6], sprite->data[7]); + SetItemIconPosition(GetItemIconIdxBySprite(sprite), sprite->sCursorArea, sprite->sCursorPos); sprite->callback = SpriteCallbackDummy; sprite->x2 = 0; } @@ -779,16 +776,10 @@ static void SpriteCB_ItemIcon_HideParty(struct Sprite *sprite) #undef sCursorArea #undef sCursorPos - -//------------------------------------------------------------------------------ -// SECTION: UnkUtil -// // Some data transfer utility that goes functionally unused. // It gets initialized with UnkUtil_Init, and run every vblank in Pokémon // Storage with UnkUtil_Run, but neither of the Add functions are ever used, // so UnkUtil_Run performs no actions. -//------------------------------------------------------------------------------ - static EWRAM_DATA struct UnkUtil *sUnkUtil = NULL; diff --git a/src/tm_case.c b/src/tm_case.c index 43d590c40..8b77972ab 100644 --- a/src/tm_case.c +++ b/src/tm_case.c @@ -953,7 +953,7 @@ static void Task_SelectTMAction_Type3(u8 taskId) if (!itemid_is_unique(BagGetItemIdByPocketPosition(POCKET_TM_CASE, data[1]))) { - sTMCaseDynamicResources->savedCallback = Cb2_ReturnToPSS; + sTMCaseDynamicResources->savedCallback = CB2_ReturnToPokeStorage; Task_BeginFadeOutFromTMCase(taskId); } else From c0bf5764452e1ed294682db61e1cd2e88c68010d Mon Sep 17 00:00:00 2001 From: cbt6 <91667135+cbt6@users.noreply.github.com> Date: Sat, 3 Sep 2022 23:30:02 +0800 Subject: [PATCH 4/5] Organize Pokemon storage graphics --- graphics/interface/pss_unk_83CDAB8.png | Bin 113 -> 0 bytes graphics/interface/pss_unk_83CE2B8.png | Bin 132 -> 0 bytes graphics/interface/pss_unk_83CE438.png | Bin 168 -> 0 bytes graphics/interface/pss_unk_83CE738.pal | 19 -- graphics/interface/pss_unk_83CE810.png | Bin 282 -> 0 bytes graphics/interface/pss_unk_83CEA10.pal | 19 -- graphics/interface/pss_unk_83CEC80.png | Bin 886 -> 0 bytes graphics/interface/pss_unk_83CF16C.png | Bin 478 -> 0 bytes graphics/interface/pss_unk_83CF464.png | Bin 665 -> 0 bytes graphics/interface/pss_unk_83CF874.png | Bin 512 -> 0 bytes graphics/interface/pss_unk_83CFBA0.png | Bin 748 -> 0 bytes graphics/interface/pss_unk_83D0008.png | Bin 749 -> 0 bytes graphics/interface/pss_unk_83D0454.png | Bin 618 -> 0 bytes graphics/interface/pss_unk_83D0818.png | Bin 736 -> 0 bytes graphics/interface/pss_unk_83D0C78.png | Bin 805 -> 0 bytes graphics/interface/pss_unk_83D1124.png | Bin 636 -> 0 bytes graphics/interface/pss_unk_83D14F4.png | Bin 665 -> 0 bytes graphics/interface/pss_unk_83D18B4.png | Bin 603 -> 0 bytes graphics/interface/pss_unk_83D1C8C.png | Bin 552 -> 0 bytes graphics/interface/pss_unk_83D1FD4.png | Bin 722 -> 0 bytes graphics/interface/pss_unk_83D23DC.png | Bin 404 -> 0 bytes graphics/interface/pss_unk_83D2654.png | Bin 310 -> 0 bytes graphics/interface/pss_unk_83D29D0.pal | 35 ---- graphics/interface/pss_unk_83D2AD0.png | Bin 201 -> 0 bytes graphics/interface/pss_unk_83D2BEC.png | Bin 432 -> 0 bytes graphics/interface/pss_unk_83D33EC.png | Bin 168 -> 0 bytes graphics/interface/pss_unk_83D35DC.png | Bin 110 -> 0 bytes graphics/pokemon_storage/box_scroll_arrow.png | Bin 0 -> 270 bytes .../choose_box_menu_center.png | Bin 0 -> 140 bytes .../choose_box_menu_corners.png | Bin 0 -> 238 bytes graphics/pokemon_storage/close_box_button.bin | 1 + graphics/pokemon_storage/cursor.png | Bin 0 -> 489 bytes graphics/pokemon_storage/cursor_shadow.png | Bin 0 -> 238 bytes .../interface.pal} | 0 .../interface_no_display_mon.pal} | 0 graphics/pokemon_storage/item_info_frame.png | Bin 0 -> 173 bytes .../menu.bin} | Bin .../menu.pal} | 0 .../menu.png} | Bin .../misc1.pal} | 0 graphics/pokemon_storage/misc2.pal | 19 ++ .../party_menu.bin} | Bin .../party_menu.pal} | 0 graphics/pokemon_storage/party_slot_empty.bin | 1 + .../pokemon_storage/party_slot_filled.bin | 1 + graphics/pokemon_storage/pkmn_data.bin | 1 + .../scrolling_bg.bin} | Bin graphics/pokemon_storage/scrolling_bg.png | Bin 0 -> 228 bytes .../scrolling_bg_move_items.pal} | 0 .../unused.pal} | 0 .../unused_choose_box_menu.pal} | 0 .../pokemon_storage/wallpapers/beach/box.pal | 19 ++ .../wallpapers/beach/tilemap.bin} | Bin .../wallpapers/beach/tiles.png | Bin 0 -> 818 bytes .../wallpapers/beach/title.pal} | 18 +- .../wallpapers/cave/box.pal} | 18 +- .../wallpapers/cave/tilemap.bin} | Bin .../pokemon_storage/wallpapers/cave/tiles.png | Bin 0 -> 694 bytes .../pokemon_storage/wallpapers/cave/title.pal | 19 ++ .../pokemon_storage/wallpapers/city/box.pal | 19 ++ .../wallpapers/city/tilemap.bin} | Bin .../pokemon_storage/wallpapers/city/tiles.png | Bin 0 -> 484 bytes .../wallpapers/city/title.pal} | 18 +- .../pokemon_storage/wallpapers/crag/box.pal | 19 ++ .../wallpapers/crag/tilemap.bin} | Bin .../pokemon_storage/wallpapers/crag/tiles.png | Bin 0 -> 729 bytes .../wallpapers/crag/title.pal} | 18 +- .../pokemon_storage/wallpapers/desert/box.pal | 19 ++ .../wallpapers/desert/tilemap.bin} | Bin .../wallpapers/desert/tiles.png | Bin 0 -> 657 bytes .../wallpapers/desert/title.pal} | 18 +- .../pokemon_storage/wallpapers/forest/box.pal | 19 ++ .../wallpapers/forest/tilemap.bin} | Bin .../wallpapers/forest/tiles.png | Bin 0 -> 743 bytes .../wallpapers/forest/title.pal} | 18 +- .../wallpapers/pokecenter/box.pal | 19 ++ .../wallpapers/pokecenter/tilemap.bin} | Bin .../wallpapers/pokecenter/tiles.png | Bin 0 -> 707 bytes .../wallpapers/pokecenter/title.pal} | 18 +- .../wallpapers/river/box.pal} | 18 +- .../wallpapers/river/tilemap.bin} | Bin .../wallpapers/river/tiles.png | Bin 0 -> 622 bytes .../wallpapers/river/title.pal | 19 ++ .../wallpapers/savanna/box.pal | 19 ++ .../wallpapers/savanna/tilemap.bin} | Bin .../wallpapers/savanna/tiles.png | Bin 0 -> 529 bytes .../wallpapers/savanna/title.pal} | 18 +- .../wallpapers/seafloor/box.pal} | 18 +- .../wallpapers/seafloor/tilemap.bin} | Bin .../wallpapers/seafloor/tiles.png | Bin 0 -> 659 bytes .../wallpapers/seafloor/title.pal | 19 ++ .../wallpapers/simple/box.pal} | 18 +- .../wallpapers/simple/tilemap.bin} | Bin .../wallpapers/simple/tiles.png | Bin 0 -> 347 bytes .../wallpapers/simple/title.pal | 19 ++ .../wallpapers/sky/box.pal} | 18 +- .../wallpapers/sky/tilemap.bin} | Bin .../pokemon_storage/wallpapers/sky/tiles.png | Bin 0 -> 614 bytes .../pokemon_storage/wallpapers/sky/title.pal | 19 ++ .../pokemon_storage/wallpapers/snow/box.pal | 19 ++ .../wallpapers/snow/tilemap.bin} | Bin .../pokemon_storage/wallpapers/snow/tiles.png | Bin 0 -> 607 bytes .../wallpapers/snow/title.pal} | 18 +- .../wallpapers/stars/box.pal} | 18 +- .../wallpapers/stars/tilemap.bin} | Bin .../wallpapers/stars/tiles.png | Bin 0 -> 571 bytes .../wallpapers/stars/title.pal | 19 ++ .../wallpapers/tiles/box.pal} | 18 +- .../wallpapers/tiles/tilemap.bin} | Bin .../wallpapers/tiles/tiles.png | Bin 0 -> 444 bytes .../wallpapers/tiles/title.pal | 19 ++ .../wallpapers/unused.bin} | 0 .../wallpapers/volcano/box.pal} | 18 +- .../wallpapers/volcano/tilemap.bin} | Bin .../wallpapers/volcano/tiles.png | Bin 0 -> 720 bytes .../wallpapers/volcano/title.pal | 19 ++ graphics/pokemon_storage/waveform.png | Bin 0 -> 260 bytes graphics_file_rules.mk | 50 +++++ src/graphics.c | 10 +- src/pokemon_storage_system_2.c | 6 +- src/pokemon_storage_system_3.c | 58 ++---- src/pokemon_storage_system_4.c | 180 +++++++++++------- src/pokemon_storage_system_5.c | 6 +- src/pokemon_storage_system_8.c | 2 +- 124 files changed, 536 insertions(+), 464 deletions(-) delete mode 100644 graphics/interface/pss_unk_83CDAB8.png delete mode 100644 graphics/interface/pss_unk_83CE2B8.png delete mode 100644 graphics/interface/pss_unk_83CE438.png delete mode 100644 graphics/interface/pss_unk_83CE738.pal delete mode 100644 graphics/interface/pss_unk_83CE810.png delete mode 100644 graphics/interface/pss_unk_83CEA10.pal delete mode 100644 graphics/interface/pss_unk_83CEC80.png delete mode 100644 graphics/interface/pss_unk_83CF16C.png delete mode 100644 graphics/interface/pss_unk_83CF464.png delete mode 100644 graphics/interface/pss_unk_83CF874.png delete mode 100644 graphics/interface/pss_unk_83CFBA0.png delete mode 100644 graphics/interface/pss_unk_83D0008.png delete mode 100644 graphics/interface/pss_unk_83D0454.png delete mode 100644 graphics/interface/pss_unk_83D0818.png delete mode 100644 graphics/interface/pss_unk_83D0C78.png delete mode 100644 graphics/interface/pss_unk_83D1124.png delete mode 100644 graphics/interface/pss_unk_83D14F4.png delete mode 100644 graphics/interface/pss_unk_83D18B4.png delete mode 100644 graphics/interface/pss_unk_83D1C8C.png delete mode 100644 graphics/interface/pss_unk_83D1FD4.png delete mode 100644 graphics/interface/pss_unk_83D23DC.png delete mode 100644 graphics/interface/pss_unk_83D2654.png delete mode 100644 graphics/interface/pss_unk_83D29D0.pal delete mode 100644 graphics/interface/pss_unk_83D2AD0.png delete mode 100644 graphics/interface/pss_unk_83D2BEC.png delete mode 100644 graphics/interface/pss_unk_83D33EC.png delete mode 100644 graphics/interface/pss_unk_83D35DC.png create mode 100644 graphics/pokemon_storage/box_scroll_arrow.png create mode 100644 graphics/pokemon_storage/choose_box_menu_center.png create mode 100644 graphics/pokemon_storage/choose_box_menu_corners.png create mode 100644 graphics/pokemon_storage/close_box_button.bin create mode 100644 graphics/pokemon_storage/cursor.png create mode 100644 graphics/pokemon_storage/cursor_shadow.png rename graphics/{interface/box_tiles_pal2.pal => pokemon_storage/interface.pal} (100%) rename graphics/{interface/box_tiles_pal3.pal => pokemon_storage/interface_no_display_mon.pal} (100%) create mode 100644 graphics/pokemon_storage/item_info_frame.png rename graphics/{interface/pss_unk_83CE5FC.bin => pokemon_storage/menu.bin} (100%) rename graphics/{interface/pss_unk_83CE5DC.pal => pokemon_storage/menu.pal} (100%) rename graphics/{interface/box_tiles.png => pokemon_storage/menu.png} (100%) rename graphics/{interface/pss_unk_83D2BCC.pal => pokemon_storage/misc1.pal} (100%) create mode 100644 graphics/pokemon_storage/misc2.pal rename graphics/{unknown/unknown_E9CAEC.bin => pokemon_storage/party_menu.bin} (100%) rename graphics/{interface/box_tiles_pal1.pal => pokemon_storage/party_menu.pal} (100%) create mode 100644 graphics/pokemon_storage/party_slot_empty.bin create mode 100644 graphics/pokemon_storage/party_slot_filled.bin create mode 100644 graphics/pokemon_storage/pkmn_data.bin rename graphics/{interface/pss_unk_83CE4D0.bin => pokemon_storage/scrolling_bg.bin} (100%) create mode 100644 graphics/pokemon_storage/scrolling_bg.png rename graphics/{interface/pss_unk_83CE758.pal => pokemon_storage/scrolling_bg_move_items.pal} (100%) rename graphics/{interface/pss_unk_83CE9D0.pal => pokemon_storage/unused.pal} (100%) rename graphics/{interface/pss_unk_83CDA98.pal => pokemon_storage/unused_choose_box_menu.pal} (100%) create mode 100644 graphics/pokemon_storage/wallpapers/beach/box.pal rename graphics/{interface/pss_unk_83D0FFC.bin => pokemon_storage/wallpapers/beach/tilemap.bin} (100%) create mode 100644 graphics/pokemon_storage/wallpapers/beach/tiles.png rename graphics/{interface/pss_unk_83D0C38.pal => pokemon_storage/wallpapers/beach/title.pal} (52%) rename graphics/{interface/pss_unk_83D07D8.pal => pokemon_storage/wallpapers/cave/box.pal} (52%) rename graphics/{interface/pss_unk_83D0B5C.bin => pokemon_storage/wallpapers/cave/tilemap.bin} (100%) create mode 100644 graphics/pokemon_storage/wallpapers/cave/tiles.png create mode 100644 graphics/pokemon_storage/wallpapers/cave/title.pal create mode 100644 graphics/pokemon_storage/wallpapers/city/box.pal rename graphics/{interface/pss_unk_83CF374.bin => pokemon_storage/wallpapers/city/tilemap.bin} (100%) create mode 100644 graphics/pokemon_storage/wallpapers/city/tiles.png rename graphics/{interface/pss_unk_83CF12C.pal => pokemon_storage/wallpapers/city/title.pal} (55%) create mode 100644 graphics/pokemon_storage/wallpapers/crag/box.pal rename graphics/{interface/pss_unk_83CFEF0.bin => pokemon_storage/wallpapers/crag/tilemap.bin} (100%) create mode 100644 graphics/pokemon_storage/wallpapers/crag/tiles.png rename graphics/{interface/pss_unk_83CFB60.pal => pokemon_storage/wallpapers/crag/title.pal} (52%) create mode 100644 graphics/pokemon_storage/wallpapers/desert/box.pal rename graphics/{interface/pss_unk_83CF750.bin => pokemon_storage/wallpapers/desert/tilemap.bin} (100%) create mode 100644 graphics/pokemon_storage/wallpapers/desert/tiles.png rename graphics/{interface/pss_unk_83CF424.pal => pokemon_storage/wallpapers/desert/title.pal} (55%) create mode 100644 graphics/pokemon_storage/wallpapers/forest/box.pal rename graphics/{interface/pss_unk_83CF050.bin => pokemon_storage/wallpapers/forest/tilemap.bin} (100%) create mode 100644 graphics/pokemon_storage/wallpapers/forest/tiles.png rename graphics/{interface/pss_unk_83CEC40.pal => pokemon_storage/wallpapers/forest/title.pal} (54%) create mode 100644 graphics/pokemon_storage/wallpapers/pokecenter/box.pal rename graphics/{interface/pss_unk_83D22B8.bin => pokemon_storage/wallpapers/pokecenter/tilemap.bin} (100%) create mode 100644 graphics/pokemon_storage/wallpapers/pokecenter/tiles.png rename graphics/{interface/pss_unk_83D1F94.pal => pokemon_storage/wallpapers/pokecenter/title.pal} (52%) rename graphics/{interface/pss_unk_83D14B4.pal => pokemon_storage/wallpapers/river/box.pal} (53%) rename graphics/{interface/pss_unk_83D1788.bin => pokemon_storage/wallpapers/river/tilemap.bin} (100%) create mode 100644 graphics/pokemon_storage/wallpapers/river/tiles.png create mode 100644 graphics/pokemon_storage/wallpapers/river/title.pal create mode 100644 graphics/pokemon_storage/wallpapers/savanna/box.pal rename graphics/{interface/pss_unk_83CFA94.bin => pokemon_storage/wallpapers/savanna/tilemap.bin} (100%) create mode 100644 graphics/pokemon_storage/wallpapers/savanna/tiles.png rename graphics/{interface/pss_unk_83CF834.pal => pokemon_storage/wallpapers/savanna/title.pal} (52%) rename graphics/{interface/pss_unk_83D10E4.pal => pokemon_storage/wallpapers/seafloor/box.pal} (52%) rename graphics/{interface/pss_unk_83D13D8.bin => pokemon_storage/wallpapers/seafloor/tilemap.bin} (100%) create mode 100644 graphics/pokemon_storage/wallpapers/seafloor/tiles.png create mode 100644 graphics/pokemon_storage/wallpapers/seafloor/title.pal rename graphics/{interface/pss_unk_83D2614.pal => pokemon_storage/wallpapers/simple/box.pal} (55%) rename graphics/{interface/pss_unk_83D277C.bin => pokemon_storage/wallpapers/simple/tilemap.bin} (100%) create mode 100644 graphics/pokemon_storage/wallpapers/simple/tiles.png create mode 100644 graphics/pokemon_storage/wallpapers/simple/title.pal rename graphics/{interface/pss_unk_83D1874.pal => pokemon_storage/wallpapers/sky/box.pal} (51%) rename graphics/{interface/pss_unk_83D1B4C.bin => pokemon_storage/wallpapers/sky/tilemap.bin} (100%) create mode 100644 graphics/pokemon_storage/wallpapers/sky/tiles.png create mode 100644 graphics/pokemon_storage/wallpapers/sky/title.pal create mode 100644 graphics/pokemon_storage/wallpapers/snow/box.pal rename graphics/{interface/pss_unk_83D070C.bin => pokemon_storage/wallpapers/snow/tilemap.bin} (100%) create mode 100644 graphics/pokemon_storage/wallpapers/snow/tiles.png rename graphics/{interface/pss_unk_83D0414.pal => pokemon_storage/wallpapers/snow/title.pal} (51%) rename graphics/{interface/pss_unk_83D1C2C.pal => pokemon_storage/wallpapers/stars/box.pal} (51%) rename graphics/{interface/pss_unk_83D1EC4.bin => pokemon_storage/wallpapers/stars/tilemap.bin} (100%) create mode 100644 graphics/pokemon_storage/wallpapers/stars/tiles.png create mode 100644 graphics/pokemon_storage/wallpapers/stars/title.pal rename graphics/{interface/pss_unk_83D239C.pal => pokemon_storage/wallpapers/tiles/box.pal} (52%) rename graphics/{interface/pss_unk_83D256C.bin => pokemon_storage/wallpapers/tiles/tilemap.bin} (100%) create mode 100644 graphics/pokemon_storage/wallpapers/tiles/tiles.png create mode 100644 graphics/pokemon_storage/wallpapers/tiles/title.pal rename graphics/{interface/pss_unk_83D2820.bin => pokemon_storage/wallpapers/unused.bin} (100%) rename graphics/{interface/pss_unk_83CFFC8.pal => pokemon_storage/wallpapers/volcano/box.pal} (52%) rename graphics/{interface/pss_unk_83D033C.bin => pokemon_storage/wallpapers/volcano/tilemap.bin} (100%) create mode 100644 graphics/pokemon_storage/wallpapers/volcano/tiles.png create mode 100644 graphics/pokemon_storage/wallpapers/volcano/title.pal create mode 100644 graphics/pokemon_storage/waveform.png diff --git a/graphics/interface/pss_unk_83CDAB8.png b/graphics/interface/pss_unk_83CDAB8.png deleted file mode 100644 index 5b7d0a3b69e18afdf3d3f4ddf79bb97df6a93f7a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 113 zcmeAS@N?(olHy`uVBq!ia0vp^3P9Yz0wfr^{@y$eq%1sL978-hlV^0YNf@w%Eo5xF zo6(@f)O=KSF%twfdoe72@!ElT21xM##RDr2tY8pgU|1>QcKh*U9X60zp00i_>zopr E0JU!-!2kdN diff --git a/graphics/interface/pss_unk_83CE2B8.png b/graphics/interface/pss_unk_83CE2B8.png deleted file mode 100644 index 18ac36e21dbf4fa437e14919c8f1f9936125a073..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^0zhoQ0wfrI9P#J^Qr?~}jv*3L&z{>T+Mpo75_oF= znJLDGQZ~3(YF7|Ui{aQ8oX#E@qhLi>Q94goH4xDLmFW7%VF@!NgZGuM+ gZzDqi`#z!LED5(5w|P63W`d0OboFyt=akR{0I{+y<^TWy diff --git a/graphics/interface/pss_unk_83CE438.png b/graphics/interface/pss_unk_83CE438.png deleted file mode 100644 index 8be861a2670f9b9107292efd1963f4ef1ef94d86..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 168 zcmeAS@N?(olHy`uVBq!ia0vp^3P3Et0wfrw&pzJ*r1Cvo9780gmYzQ;c));z*G(^QIV{(z!=$wy1~+Y>6Tc#&gXWAqMJ{pinVaaTZM-G>VFRI{+?dn+ak~W@>Znd2Q@9Th+Gw8wXoaY zQvb<3mw&eG&c>BWvo~Gi^2q0(Ve&AnJdoScJ-_b6m%_$(70UZhR0LGcQ2V@+)#?WO Yie65y^-X-`UvsCH9QdAFp9VmoP2OyRwXj@aP= zqPU<(5u^m95r;*-}N|1{{kra$EGc7C7to`*O-9$N7FMne%(%ob%V? z`Z2C)8fiiZ62dG<5t_O)?u+Wpj@n$pEO!!e=eqSYt|hS?l9=R6H_zJ>tmd`)%{$}1so#3xw+6E&EZ1u=A^{^(Wy}3GvX2q*7!ik& zZXXy?3r8|jzYRuim_Lk2t`^)s^S7#4nM?nn%;oe9tb79U0pyB#Z_O!K>E08)dt!8G z_3jdDsW@FckcoAv6XT4L)Yw$Br8)`H;}!5oz_SG0 z?E_)>U7;;yjA6-)-;vQ^n#gDi#3uZE#kie~!B8fOB#B76<0d&pP9P!UsbZ@$&Lb#0 z2&&Xzx!zEvh6u_KEsYy@#<2h_naw9M9SsxN+8QpYZ#;OpKr$XA%k#d@Xru`wWTf?t zx_vNn85R)?>E2h!3y|nh(0`yqxuaP9 z{}1tl^JU(PxPJ=Th*l9gep~LzTS3}BD&y8wIO6pow9_|6$p(B5b6d5<7222T><{* z+&(F7=|A{F$j7@BgTGC**oQw zzOEuSzOfkNE8?dSKZQ&9r~#jKz32#`5keudfEq$|M0)~gaTQNc$&+z0gRSF^^h_&^ z8%0Zluk{L(+|g^eRXn%)xF*HVIJ^SF$0=&3K>b|K7l*fk!wevz{FlL3MHW+lT&{W6 zc-AJ*vdA*kHCcVtDfe8nO^uG(p}y*ONFk-(RSN@M+LlR<*)j!A|`Z6~Jvd^g?WklQd;sZ~3VH|kHt0Is|`UrW5Mq%p&Qq*U7g8QAe z?kAmLtbbK;zzxxhLJfa_8K6f3io&p`fk_Q06fa3l={2aGDxVMPr?;ppUsp>QIl zVW6?C0@7>X7l?Q7BFE$S<9KKM%u4fW@AkA>Qw5PP0?45O(ExIoKvY0}zBu;r#qo9@ zBaVU1K8Nl3VlKg>j-s$Aw&in42cG*|@a-^eR@8Vv6%CGnk4JT6Q3cPi$>8aXqjQe( zIa1(>aj?bAAUcOAha6If4CGMED~GM{@mc)8&%#>tX5Y96U$c!uL%Q z0zn8QnKT#Fg6N0Dr4&Mt5M@bX?{|Yli4$*@9PQyAYzKI@^^?S|d_fmNNGcK1bA(i0 z?D8e<*>w*XEf7yIcz?pKA@_5>yjI6mG5hm+@f)u9<+;vD57i;5uIg;^E#$+x-_Z<9 z$iLPwpKDaXBUR(!ZAKfo)c}a7`orMXQ;WQ++|GM z2*>Q1ZNoblyA*JRdq0EFKnIth3MfE&b%9jp~ zM|5(07E%90l2X(Uvz7UhBtpKyX@mm9g?#@2s0Od!i?C&x00000NkvXXu0mjfdV)vZ diff --git a/graphics/interface/pss_unk_83CF874.png b/graphics/interface/pss_unk_83CF874.png deleted file mode 100644 index bacf96c2ea8edc1159868b0e23e53bd574f24812..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 512 zcmV+b0{{JqP)q9TB8s3h9W#FkIuaCBpT-JWn4tj^&3@)z?|{#So34HF>ebXk;*M?fh&* zU&qWhG4xF*6un~eG)%{H=#16=9t+@*0Y{q>KCoi}M3ntV$fF{J=o7oXX5>RT)ZzM< z^0{pxh(U$V^Xh%boB6m0xNfblZ&!SL`MA}*Rr3=v@4~%g#9d6ycbDe%?K02vmglwg zae4hZkXQInkyY~(P8U8@L)FFgOxC-)E>7;_E9=sI#9?6Pz|Ae-OIZ5=(S}5G@#Xr( z`;s*j_EI2GNF?5CAGZ|BkwAH?>MI|k^b6yrA3*X9d=Jz)O=1&-(rkd@k59B4Z}JB0 z3jN3{s0%iL@`@{HrBhI$0|}wM=0 zq;T#N=QgK1r)!h%*jMD=W0m-AF0?XaISt*i*7pa*4iaUnU4TIV0000GU2zgYqM)G2N>@;vgoyY7 zh!mutxRWgS1v> zta*;Hg(uI!lLQYG0mY#BrXd9KIgoqAA^~Hyh96TA0@HI_hZr2kj3U-x0Tm6#feHw* z-jj?@mK#erM^u;yKz!o@@hQ-ca23xD|K|CHfk6r^$lph7atrg%mr?cZPk?&?xO>%r zv(USd0Yp^&HdskbU=~YQ=Tz&AUs$7a$Q4qzTgT>V<*#wNO_zG>DxVLv|Y= zx?(uEd{h6y{ZjQ3Zbe{`urPevdYQ-7d5g4w)vZlka~Z{-m^Xe07Vm(wNvgla*Djcu zxC2%reppd|v7){i+NGS34$ehUC$v(Rkep5oA>mcm)TJZzU~0IwZcXcrV#COaaKK_M zW*UhwZW?EMDF(LJ!H}FBIveJivG~PcfW3;;-z0SiDq99aA$MpJ0Wiv0udJ&ieH#Ms zEKWzzp~JC_tw%IEOff(NJX!_hAWG>H zpU&GlOX*?D)oeEVM)Udntf8}rgP$H#R=D3(l$jxaacro#;ICY~Gw%z^jd@K*DT7Fj zAYv#og)hmm&I?MlONw_>yUvq(o_!^y9fs0oSQoQSur7am z)T-Ro1oWQQ8q<&r>Q?J9;+G?i`_u)isjDwl{|Ebe+_mIB0ayFd&u+d6rYzn7)f<X}1LexcQCdG3a~RhJu>gmhV`tTTl50-g&Dj zvMkXN`->vN1nFK^TKw^VMSOef@J2n7*kXr6O9o00000NkvXXu0mjf&1ztw diff --git a/graphics/interface/pss_unk_83D0454.png b/graphics/interface/pss_unk_83D0454.png deleted file mode 100644 index 48156edeea99012bfbc8e953a6ff227b0abd717d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 618 zcmV-w0+s!VP)j0006pNklyaT@8wSR_Y z_AwvgQ`twJ=W9iNh7#7t8a7S$L^9Ov6rnH4x7#fiih{xcItP-I>d@D1RaX>+og%<4 zQW@Cm>P8W0!y88u0#M-+quyktU~x>Wr?@@9j2#^IfkYT$(H&sI$>m-l1`SOFDX>ah z^wl7bE?-tSkb*mu-KquoJw=M>9dNIJ^K!=_IkF&mpAg_}r_qNNHInJMOhKy4Hb_L^ z&;0(cZiuPrqr4xYnZ3_CJa7MAIe>_oKMH-K8LSU`)F&J27L+X@8P_cwWg)F{hk?$C z*9v+MM1{z>&T&NnbwqhsB@#zutPJ&+;BVf>a2A?EEO-hzh$ZsK6_l+Byt>) z?ZP?I6R_sAcYsNowvCC8&;e@o2p1)71lFO@Ue}G{A2%D15W*-9WdHyG07*qoM6N<$ Ef}?jKlK=n! diff --git a/graphics/interface/pss_unk_83D0818.png b/graphics/interface/pss_unk_83D0818.png deleted file mode 100644 index 6e42fd5258b44efacc60351a0c8a7054ebd5468a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 736 zcmV<60w4W}P) zO_I|v5QUoqKoM4~7|4F^$TC;R5s*9=kjw#a5<9XYTgcb>N0s_Y^AcLcBUTV9*B=8*?yCg#24TsLqxP%9E)*NS&F_D69VJR)2q3LuN&W^jPW3K3n!|%=74~+Gre-q3(R(jf`%(; zy$~YvM#OnO^%wh7BdMkO{Y{;*x_dXlE1>5~n5Jaj^NqUEvxA<-8N(Yuc!dqFSMhur zCaAd}Fb6~kv^MykyiqV=b(3;9XV~w+rW~aSH3b}>dP7^Va`f%Ze)M^ZH}a0qyinmG zD$0PnTGl+0n#I&e8Q{bKC$^Kru8=MeJ=5j9O~6e- z@;0r@+uX^EF&6@64!WH=mq;^o4S;rJ;+nPRM?DxP@%%D+9YeHbiOpM%qq!8%FXQOj zeg#C{5f8Ut*ngO(r;XwZJsB0WBZkpiAK`HuX*SX4apUk!f9UpCZsP~w_Ue0z-iHRS z!0<+c-hj~TI_^JQ8^MM8 Sk=x(^0000mjG3KLSSPHf04qbpE`Y&TVwR+X>~9jH3Q*IlTP zXzeUzKxyoOtuR>d1mQo&N!qk_YR>TK+W!6DbMC!9rXhmLqJqd^ASgj(=piUVl+(p= z8C@LTtYgG6Fk5$la=QLZU5(KpRr}t_)%829b2@!W&XgkMy6v%Uj&XZP#seBszXhmM z;1eTZ3@Zy*#7Z^fQNSZTK^1_#Ko&bhP=Fwf$WTROX$V9ofGjGb6a2qUkgt>ckm+ol z)FBn!Lx_QQ9dZzk{B3C)2+KxkQch9A6JN=Ez^cS^S%}p{| z=LWg$51VxC?ww=1_fl$qbOG(8nxr?vfvwvEd1&Qq#!J z0q_3&BJgl^j61yhL^S-v;3Fjqv525mLD5)#whr?7#7f$;v_7+ZO`PEpr zl28;!z5M(}x*i2d5>xMoWzDD~KB_?niDg-9#kyJ;B`mSXMC9wjD5QiX)|)l6SciIp zOI8ijtQXCDMAn))vZ^tAk zy%A$vIkthj_SH{FAW13&*@z5RmQEn1ieU@hmR&mebe|*>^s-j3b%37ZX;kEMpY)K1 z-}SiuQn_StV~1*09We17|!-_kPtc3fPZ;6VUu?(&)r1B?bTIt=*U0PhBqe?<^* zZF)dmKR6_hox2#aGf(c1I`uWbuk2S}$Gu(58~78ym+(7iu-`iSdF-bz{QQyMKKm^# j!(|603{DF2E2;YjsL?`7#cEtu00000NkvXXu0mjfL;-^e diff --git a/graphics/interface/pss_unk_83D1124.png b/graphics/interface/pss_unk_83D1124.png deleted file mode 100644 index fe7810abbb95ac0a379a1bef810ad058862dd661..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 636 zcmV-?0)zdDP)9wBG&vjXfR@_0J&I@G&lqp5Qbi(*rVyj~yykX3EPg9EMVzF4n zv|6oVa$WZoot|FQx~!p#5d}hqj$z-h%38YQAdcfm(+<(i8#g2sAnQC|(yQxOB?!7j zjOqZ$2K>rb*tMSTAlCZGZ}2@@lI%#QL)1^}u$1f?;-4(J;rh*Z^^FnX;CDdj>qyb` zomS+&1eQ^t2n$6Q3>^Tf-9Ce8wa>$9^>_jhQT~^~EvgiowqcsO4x_`%Xg>X7qr=nc z5gmF)m!_q2zpm&+eGm`&aT8kUP;3ibEgAK*(lz~pd+HKwF+5PdvF}lT>3X0{o&iJ; z7$?UQ_#fs~?if79AahcKlo9m~>3Z~;-Zf9()K$Z6e}}yLUqC8>K$!kx({UKF1}87CMQQr*I(5fp6{|_7lT?qR&qhe%ND3@A8tw=c^fcS5p_4XD$i# z=?u=|14)w?>1aMj-qqW=Ab0vklDov-@*H{3MP*w0vAx{zW#HoyE1__&@H%<#(ftR3 Wb14i?fo|~t0000`e8KNmeelw{}?50_>| zlSZt0(ksiJ)UmSYO_Z(P;(CK(7hNOPJYGx%W!)3QQ2*hbw|Hkn@7*vScC>p&9qB#r z>NQY*1kRsN*&U287ZSe!C>XmP=oLaMxbhVN6m?a;g!Z1!|Sc0GTPixTqL>~nYG{k*8=9+m3EXnSi2-uoccMk;FyKLd_h<(YQTKzE2#OknG|(>9qG$)1++Zd}N-m~OfSPy6CYdDRPhpO1`nPa#P1hbrmq`(ArH z^xEzzKy;6BGylT=#d+Fg7EcV&STu~U$&YZTjNKLC9G@J%<|p23zVn9o0DL;yzUM)& z!^#`r|M3I&*_Q+G_%Pi_Y z`?zJG8VXQ5$cmpt*lG$DqvVA=#M%L+So3H}RRu^XHvF`ir?$9{xvuLv`i3~7>vDCu z>n3zh2x`CJ@Mb`54=@xLdWScR2jHy$h-moD;8xKHa>8mZc1<{hDpYrhpnDLKv|;e5 z3#WCctN8Gg+CxgGDomB3lM3&Y66yu~SxWcZV+-1pmYkm%yGieZ_p5bZlI<~Co3WeH zI-u0r@w&%!v+n$duC`p~#r*Cgv8t_3>h2MdPP>J5gRVDxWJmM!7e|EBE#-$cB5R0G z5ctFp=K#?w#@V3*|AAi(g~z)s;5;1TIcd^cM1Vtt)MDLeZrfj2ce?>x2RyaD?|IVW z@Zt=-eDRar@jL9bIBn)vXsVyTwUZamO6TDxZ5fTnWp3&G)eTPlI`ZtO1^yHL{!gxR zFUD>HOfUufM|m$c`(B)!)LHhD5}(N$P@nyPA*Y=r<0?r%xUYJ?>{wAnX{5Y;@`$Mq pgm4xExaaVL9h|0`bGBnHe*u<6GX2H=57Ynv002ovPDHLkV1kfJAQS)q diff --git a/graphics/interface/pss_unk_83D1C8C.png b/graphics/interface/pss_unk_83D1C8C.png deleted file mode 100644 index 5554f6a51de1ad0c45088355483408a32a836044..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 552 zcmV+@0@wYCP)ZjsYKAK$PocP9D*#OrdIQvMBi^_pTVD?Z@`L`%)r>e?Sp+E%Ge6p#l@Ew3d@VHd9d>x7MHT#09_vjRA zVy?*`Xd-aN3~1M&*zOLG*2=q`#1J#ofQKKTm<9VlPmz)RPOP2Kapz7f>@f(wo>GdG zpvoIpSQ>Pon7fufF?UGyv7&9(8tUV-|2EZP!k$-8M(+m!ByD_Mub&^T6)>NJ?VX6j zUc|eN2w1#1)|5l7JT?&l-s0yVpG9oC2sewE&)@p3oRooA0s^M@)EvUDL07xSoJigt zu&=^L+!#XiSk>By-%+b?{_j>sM~fP?`}$1Td)0^KT#4_zJ+E|-(Q5h(NeZ&n*Vgkk z-+^?RrPI78kSmDZKK+=oEXC=^ItzEn*k34Gr*xrpg2y4=jj~~_(#I|;#)re0000l&X6os#&f|5wBY^gsWGGT!Y|A97o-4QA~6LUA(p%Po^#uz+B-FR$_MXI`Waiq?b zlKum#?ycN&-m~Gwc~D=WPdB{7jeULYwd4q?iwt35LN6s1jj%`wuTC3ra3=ajv>@^8 z&a_@T_4J{7F+$daHbCmvB}tD+ByJH%{W_i|iA9e%P!GbQ6veINP`$XLfi4jnbp3r< zcXgfn)t~HLwt2q_civWBU0bP86vBZ|7erAcAv1+k6jPrrqOOt^x}U)9T`uzUK9@+g z$cQK`Gi#bZD3xahU-8=vPe0Fsl-W7(J7mU#Ao@=RcP+ga^e8*mxQtX=-$fx>$0vde z-4J=MpnIZh@6p$etS?Tw0#R%+xHxIcRUBW68lca%_bUR;x7IUIig-m_+3ynP)Q2wZ z4R0Nh?9rkL;YK2E?aC+iPjg@-rs(lfiOnt*@S0HSfke}ypS88EdO=6Lq&Hv=DY}QO z9O8&WeDnd78K0Qrh~wD|Q3sE_0r%y%-;v$jZzcb`-CFA%ytFOCqR<6&M5xSQP#1c2 zm9Ywx8u)bs47=jk59|WyXs@m^_QsArU1iM~JNk5H8M(U-tIDU_Z?0nD_5AgWPYeGg zh1b0G9azc*ip+3!UaI){dPlK z*KNZaK4p0EZ$Ceifv7KP$iYfVIU=Rh#6!%N%^x$$pdB7=vR*z$%$Hy=O)-vf%b2yk zPhh<gXXAGY&F>O%+ zPYk!{d92vn1MMG6U{R4-e*l|pL*}Pxyj`szsvr*y00-miunb;wuLK}! zQ(vfmV-nUUhI@uBjn@rZl}N9G`b2$ zG($kHIo($b26&TGFJB#;7+lDjjaHF2Jn+y@+g9GS**wv&GBq zOZJ5fLcS;@M-r!T>hi9;f$U<4I#)wG(uU#FVdQ&MBb@0JJquJpcdz diff --git a/graphics/interface/pss_unk_83D2BEC.png b/graphics/interface/pss_unk_83D2BEC.png deleted file mode 100644 index 3a6e353079ee9d11e6f822ad9448b2ec721668c7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 432 zcmeAS@N?(olHy`uVBq!ia0vp^3P9Yz!VDy5c$8@ZDT4r?5ZC`l|4*5+CMYQC|FfuX z_lmzg+j6#=q1ub#KOAhy`o9Fky?5^(P}AgFW_N%TV@Z%-FoVOh8)-nco~Mgrh)3ts zsfKxn4R~CaO3&EU_%bjqs_)Ipr4#2(*=QA#xjfTD)U{!oGefqK{62@9fBtbjjK6Mj z#bCD))4nKAACIeEmz<8c32jv~>sn%Z@(pXqviXhgCNORY`L>|bgnQe(+{r#m*WWG8 zopGV;siYDM`=8a%&o(D~k5?7&+dl7t0oN*XpVWoyZ4bZct$V#K>hK$ei+nbLj2oE! zw>@RdX@8txVWDy0$4|cvbq{BBPh@ztC;pv~1dq_=M+dj=<9Gj`^Ik%BPWKFFg&C^KY_~v;4uTA978ty2cbdxvBT#8rCxmnGD7aZY@jgTe~ HDWM4fJ}n`j diff --git a/graphics/pokemon_storage/box_scroll_arrow.png b/graphics/pokemon_storage/box_scroll_arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..c56139ea115173ed0662c6d534b4d45402ed8b6b GIT binary patch literal 270 zcmeAS@N?(olHy`uVBq!ia0vp^96+qV!VDzu-cxxDq*&4&eH|GXHuiJ>Nn{1`4FY^Z zT!HkIDQkj)qW=H?fA;_XsJ-u^mYfZ0UJ{g54HN{*-n;j0$&xKVHO0jsk+lq5!az~R zk|4ie28U-i(tsTH5>H=O_GcV2f`a0&XUy{i3W=AvMwA5SrA{CXFZnOzNo+i; z-Z4?|h}`Ce8LUUXe?PJN>57gIN-f*vJl{^(bNR+iDGOayn^n(#USAG0k-^i|&t;uc GLK6VC{$vUO literal 0 HcmV?d00001 diff --git a/graphics/pokemon_storage/choose_box_menu_center.png b/graphics/pokemon_storage/choose_box_menu_center.png new file mode 100644 index 0000000000000000000000000000000000000000..81500fdf6e93dec9647a884fd2cfca79502eba58 GIT binary patch literal 140 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0J3?w7mbKU|ei2$Dv*Z)WVPnohNC@AXxv#4+P zioZSEa<-bG+Ka*UwQwR(jlQRgV~EG`WDjKq2@Wj|RR)O|j)p+i#awQpJz5f>4l9|O lTnjB39U=~DNU(Y^Fz6iIIN`G6@hG5H22WQ%mvv4FO#lLoDZl^# literal 0 HcmV?d00001 diff --git a/graphics/pokemon_storage/choose_box_menu_corners.png b/graphics/pokemon_storage/choose_box_menu_corners.png new file mode 100644 index 0000000000000000000000000000000000000000..5600b0462ca7d162c3a21db8f7eed5de6847d4d8 GIT binary patch literal 238 zcmeAS@N?(olHy`uVBq!ia0vp^0zhoQ!VDx|6+TY^QY`6?zK#qG8~eHcB(ehe5&=FT zuK$nzpE6}lP*BwWXHnno6@PoSRaKOb{ gK;(q`4b^{~g()?+ZRfNt02<5S>FVdQ&MBb@08D9A0RR91 literal 0 HcmV?d00001 diff --git a/graphics/pokemon_storage/close_box_button.bin b/graphics/pokemon_storage/close_box_button.bin new file mode 100644 index 000000000..8b130a481 --- /dev/null +++ b/graphics/pokemon_storage/close_box_button.bin @@ -0,0 +1 @@ +LMNOpqrst\]^_uvwxyz{|} \ No newline at end of file diff --git a/graphics/pokemon_storage/cursor.png b/graphics/pokemon_storage/cursor.png new file mode 100644 index 0000000000000000000000000000000000000000..d64dc3bd8b571722ac4c40a2e3c3aa4fa74896b4 GIT binary patch literal 489 zcmV(O5E1~000+sMObuGZ)S9NVRB^v zM@&RePDdbiWpW@hE;Mn4q~QPn0V+vEK~zY`?UgZZ#4rp5$sbt!fv8e$k}a86%Ozd; z%J@+!66Z+cf}}`*11{<`SYs`5u_F4_HJ$dQrY#qJjuIBd5+%|A3leSsEGPs3yk-H$ z^feH`Pr!V!3^w;If_3lFq+{&!o?JH-jjmP;7fK)>y{{Qi{Ql#1=;78K28J7!9GJx% z-vq|CS5L0%90NmwRW%M=FiMF7muN{uB+-G0h_#+?Yx+;j4-#_;lA;ZGx=P9^AS^9| z_x*J^+$<+XFjB>Evj+DifB|#uI9vq-uA44LP{o>!y_Sx8jJlcbmFLg@DBY`0u{1=d zl1k$d`{U2^!qR}3Adz;fPy&#g7vgp~ff+z76rN%39)Y_?K;k1kNyOdP1W5KRRSvP% f(;HK!d&|fh(ByWT!yjc200000NkvXXu0mjfKTgGJ literal 0 HcmV?d00001 diff --git a/graphics/pokemon_storage/cursor_shadow.png b/graphics/pokemon_storage/cursor_shadow.png new file mode 100644 index 0000000000000000000000000000000000000000..7b2e218e5e5ea14d64b3b2a2596afef042f084da GIT binary patch literal 238 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPF7lTCBGH?k4MHx$i z{DK)Ap4~_Ta@b2eeO=j~amWZtam(aNp9Knum$*ih1m~xflqVLYGPwJ=0NtlhmRh7> ztY=c#y5u2HiJGU2V+coda)N^37xMd UVMEBfD?l9#p00i_>zopr02w_@WdHyG literal 0 HcmV?d00001 diff --git a/graphics/interface/box_tiles_pal2.pal b/graphics/pokemon_storage/interface.pal similarity index 100% rename from graphics/interface/box_tiles_pal2.pal rename to graphics/pokemon_storage/interface.pal diff --git a/graphics/interface/box_tiles_pal3.pal b/graphics/pokemon_storage/interface_no_display_mon.pal similarity index 100% rename from graphics/interface/box_tiles_pal3.pal rename to graphics/pokemon_storage/interface_no_display_mon.pal diff --git a/graphics/pokemon_storage/item_info_frame.png b/graphics/pokemon_storage/item_info_frame.png new file mode 100644 index 0000000000000000000000000000000000000000..dd5f52460ccded64db27413ffb89e82b86ca8aee GIT binary patch literal 173 zcmeAS@N?(olHy`uVBq!ia0vp^3P8-k!VDy{RzH{nqznRlLR^9L|NsA!l9H}oJqu(L z1eXuKodHy2;pyTSQZXm_1}{rfQ`6?gD?$Qi4TL!ydS)6gf6v6t;dCI!(eY%K2_uJ^ lib7JA`_JYD@<);T3K0RUUWDBS=6 literal 0 HcmV?d00001 diff --git a/graphics/interface/pss_unk_83CE5FC.bin b/graphics/pokemon_storage/menu.bin similarity index 100% rename from graphics/interface/pss_unk_83CE5FC.bin rename to graphics/pokemon_storage/menu.bin diff --git a/graphics/interface/pss_unk_83CE5DC.pal b/graphics/pokemon_storage/menu.pal similarity index 100% rename from graphics/interface/pss_unk_83CE5DC.pal rename to graphics/pokemon_storage/menu.pal diff --git a/graphics/interface/box_tiles.png b/graphics/pokemon_storage/menu.png similarity index 100% rename from graphics/interface/box_tiles.png rename to graphics/pokemon_storage/menu.png diff --git a/graphics/interface/pss_unk_83D2BCC.pal b/graphics/pokemon_storage/misc1.pal similarity index 100% rename from graphics/interface/pss_unk_83D2BCC.pal rename to graphics/pokemon_storage/misc1.pal diff --git a/graphics/pokemon_storage/misc2.pal b/graphics/pokemon_storage/misc2.pal new file mode 100644 index 000000000..40bc5d1cb --- /dev/null +++ b/graphics/pokemon_storage/misc2.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +0 0 0 +148 148 172 +82 82 90 +255 255 255 +205 255 255 +90 189 238 +90 164 205 +82 131 164 +82 106 123 +82 82 90 +0 0 0 +222 222 246 +164 164 180 +148 148 172 +115 115 123 +82 82 90 diff --git a/graphics/unknown/unknown_E9CAEC.bin b/graphics/pokemon_storage/party_menu.bin similarity index 100% rename from graphics/unknown/unknown_E9CAEC.bin rename to graphics/pokemon_storage/party_menu.bin diff --git a/graphics/interface/box_tiles_pal1.pal b/graphics/pokemon_storage/party_menu.pal similarity index 100% rename from graphics/interface/box_tiles_pal1.pal rename to graphics/pokemon_storage/party_menu.pal diff --git a/graphics/pokemon_storage/party_slot_empty.bin b/graphics/pokemon_storage/party_slot_empty.bin new file mode 100644 index 000000000..991c232f7 --- /dev/null +++ b/graphics/pokemon_storage/party_slot_empty.bin @@ -0,0 +1 @@ +CDDESTTUcdde \ No newline at end of file diff --git a/graphics/pokemon_storage/party_slot_filled.bin b/graphics/pokemon_storage/party_slot_filled.bin new file mode 100644 index 000000000..c0b93bf14 --- /dev/null +++ b/graphics/pokemon_storage/party_slot_filled.bin @@ -0,0 +1 @@ +@AABPQQR`aab \ No newline at end of file diff --git a/graphics/pokemon_storage/pkmn_data.bin b/graphics/pokemon_storage/pkmn_data.bin new file mode 100644 index 000000000..3336797aa --- /dev/null +++ b/graphics/pokemon_storage/pkmn_data.bin @@ -0,0 +1 @@ +!!!!!!!!!!!!!!!! \ No newline at end of file diff --git a/graphics/interface/pss_unk_83CE4D0.bin b/graphics/pokemon_storage/scrolling_bg.bin similarity index 100% rename from graphics/interface/pss_unk_83CE4D0.bin rename to graphics/pokemon_storage/scrolling_bg.bin diff --git a/graphics/pokemon_storage/scrolling_bg.png b/graphics/pokemon_storage/scrolling_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..7215fdb40cdcafd1477c17fb9a57b5e5de249cd8 GIT binary patch literal 228 zcmeAS@N?(olHy`uVBq!ia0vp^3P3Et!VDx^^%AmxltF+`h%1nuGG)#G|NnuE>b?IN zs{j9QZeAlH@&Dbk|Ie=ezjqcWjtnlxNtpxr`JOJ0Ar*5<&z}@LV8FrbaLRoh!-@j| zsZWf5wmk3Ku_Pk1pgcHKe`Vye)h28^!jl>s4`}4IOgMS(g|yEqcICI9rSuhn;5nOTR56@5F|+c|J-Ztq Or+B*hxvX{- zMhaEEoBA>UfcR0hpf(LKqbabV)Kdd2Icg}LVoLdisinHpGoh<4KVM!9D8?Th`g6i5coYx0V?+H zMG!SDFdompZrAmC<0z^herb+0u$BfskLv5A!%_WX0|AuXAa~D>Qs%O|Maf{H`WVGQ zZo5y;7V6yRzMtcMtCa!<#o;E+(PHsI3w4_L(U^xdUZK^%N*S|^;&Gt!ZAu$>=h6C( zTij>V_ghY8}5 zetH=;|7pO_0`P-&9cFp^^V!TmsIkfT>Y3|#+5$OcSzig@90-KKpr&Jz z_e|E(w;)e6&7lmqitn0yd5+^i7b*)LU9p4GJK%dDFj6m#@w?l}v&##>NCDPwHwY@Bz(@gk_E`H3S$>NFM!G`K>z2#F(Kp6| wJsjXM0Q$yA0l@JQ3hP@(8gPDXW~mDQ0UcB}p$QjWh5!Hn07*qoM6N<$f}MkvsN%OL^j{L2v+;`D16@ zRq(FFNX|O;FW&jSjGeB#Ce}t=2OJt905n2@F?pZT0;V5Q^fMxkK8FHcfV5bks}Bnz zaX#>k0E4G{x=U`LOAHAo8sPa9|IdSUeZBXz<06DyggPxC6fjfxUGPjTIQN<{agX(nQxMIflhZ91s`7vx7V{IGx5pg)AZ^) zb^42SjZqG)yoyg}z{??wyu~Gxk=q&Y2+J6i2+PFn9QcJH1YVp|;dTxfd3cKcA4v*8 c3#VP+FO<;NH!gcedH?_b07*qoM6N<$f{D5^X8-^I literal 0 HcmV?d00001 diff --git a/graphics/pokemon_storage/wallpapers/cave/title.pal b/graphics/pokemon_storage/wallpapers/cave/title.pal new file mode 100644 index 000000000..f6e731395 --- /dev/null +++ b/graphics/pokemon_storage/wallpapers/cave/title.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +230 197 123 +213 180 98 +180 148 65 +148 115 32 +115 82 0 +0 0 0 +0 0 0 +139 90 115 +156 106 131 +115 65 90 +0 0 0 +230 230 230 +255 255 255 +90 90 131 +49 49 90 diff --git a/graphics/pokemon_storage/wallpapers/city/box.pal b/graphics/pokemon_storage/wallpapers/city/box.pal new file mode 100644 index 000000000..ba67b3414 --- /dev/null +++ b/graphics/pokemon_storage/wallpapers/city/box.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +255 255 246 +255 238 246 +230 213 222 +205 189 197 +164 148 156 +139 123 131 +0 0 0 +0 0 0 +180 164 172 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +156 123 82 +115 82 41 diff --git a/graphics/interface/pss_unk_83CF374.bin b/graphics/pokemon_storage/wallpapers/city/tilemap.bin similarity index 100% rename from graphics/interface/pss_unk_83CF374.bin rename to graphics/pokemon_storage/wallpapers/city/tilemap.bin diff --git a/graphics/pokemon_storage/wallpapers/city/tiles.png b/graphics/pokemon_storage/wallpapers/city/tiles.png new file mode 100644 index 0000000000000000000000000000000000000000..f5684850afc67772d4f6be3f1b345fa7e8394edb GIT binary patch literal 484 zcmV(b~26vLLZlXOo@yo4*juyJW( z6WzG1HxS><8_G->Ab!c~6y^&vzsWp8y4VaY9JPGH#DU!*{ID-fxUjF|xMW{&xM1oy z{f{t~QG}y47c9<5APa|um~4mGK&LQ4#G~?nf}>yyT7@S4!ny}ibdrVjIh^CcD1`Z< zLrBwXp3hr_G^Y;%4O)dX4d|Q#b<9g9d^PUPj!-tJ&*2S(fkp^%&AfOi^;iFKS){XU zS%lBw`^T=dF>UgcK%mzoyH9TELMOy=d`IJW1tXm?VNY%x5Rzm?Dg5w}2}8p*XR2g-8c%AqjwI6lU7BJf?P zXe(U!2*%V1-#CARF}-WgbD?0I3PFx(m~8c`P#DND4YuQ`DpKvdj%kd0grUV&ci9d+ aZ~6yg=KBNylb>J!00005P)(owIx5<+yBv)jf$<>pp|1X^03SxN1~Kq#4=@@T!@#3*c_72+H20EWP#*6GPRXXp1JuS?qMQer zdtF&r8ooW`Nw3(A&vJ`do_cF7N|>wTCImpNoOl5!ce%Adrj!myf(lrg6Gtxfd7e9) z8u4ayegzm~ND6?=p_Mv(CM#)`_ZZ+fFOANTb-n@I#TJk!4DiP>z$^LG+BCCt(EwKF zVkTcpnar0YgaJs_pJtVSBqm;6W}PKni-FHpob{$xNpf@BjR-7uZT$@!}v5T)uzDz_sWwwW1;c;=|N2{!M@% zMsTSpmT_Tp8XtXIg2mmJW%T>*EaqiSW;jB+<``q00000 LNkvXXu0mjf1B*kF literal 0 HcmV?d00001 diff --git a/graphics/interface/pss_unk_83CFB60.pal b/graphics/pokemon_storage/wallpapers/crag/title.pal similarity index 52% rename from graphics/interface/pss_unk_83CFB60.pal rename to graphics/pokemon_storage/wallpapers/crag/title.pal index 292b6db72..c4f85c644 100644 --- a/graphics/interface/pss_unk_83CFB60.pal +++ b/graphics/pokemon_storage/wallpapers/crag/title.pal @@ -1,6 +1,6 @@ JASC-PAL 0100 -32 +16 255 255 255 222 222 222 189 189 189 @@ -17,19 +17,3 @@ JASC-PAL 255 255 255 213 189 82 172 148 41 -255 255 255 -222 222 222 -189 189 189 -156 156 156 -123 123 123 -90 90 90 -57 57 57 -41 41 41 -222 189 205 -197 164 180 -172 139 156 -246 213 230 -238 238 238 -255 255 255 -213 189 82 -172 148 41 diff --git a/graphics/pokemon_storage/wallpapers/desert/box.pal b/graphics/pokemon_storage/wallpapers/desert/box.pal new file mode 100644 index 000000000..c5ca027d2 --- /dev/null +++ b/graphics/pokemon_storage/wallpapers/desert/box.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +255 238 189 +255 213 164 +230 189 139 +205 164 115 +180 139 90 +156 115 65 +131 90 41 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +164 139 82 +123 98 41 diff --git a/graphics/interface/pss_unk_83CF750.bin b/graphics/pokemon_storage/wallpapers/desert/tilemap.bin similarity index 100% rename from graphics/interface/pss_unk_83CF750.bin rename to graphics/pokemon_storage/wallpapers/desert/tilemap.bin diff --git a/graphics/pokemon_storage/wallpapers/desert/tiles.png b/graphics/pokemon_storage/wallpapers/desert/tiles.png new file mode 100644 index 0000000000000000000000000000000000000000..373749994149e4b1d9cb25f9c1ee63040ceb3024 GIT binary patch literal 657 zcmV;C0&e|@P)PRK_V^~8fz6742>hFBbCq#7)I(SeH8SlfP&I3 z9p@%>)DW04DGa1wGAV#J!0g_g;>+nz{LOey_Wtgh`_{T;Y!m(I&}P80LkbvoXfvQ^ z%M?Z)$pGrv8yQh`r0e*jllRnfWkvjnz?U6T3-Fg59vH2GtH9q^75>DC*gv4X~4HnV9S0Q2~3IQfgwZ zherimXyBE84HzfgSy_M`bMaCGJqy^fV=jK_yLo5<*ABkuv8zapz^O+-0D+3G)>^Xw zXVCyns?R=55icInCPOH7pg00000NkvXXu0mjfnA$5O literal 0 HcmV?d00001 diff --git a/graphics/interface/pss_unk_83CF424.pal b/graphics/pokemon_storage/wallpapers/desert/title.pal similarity index 55% rename from graphics/interface/pss_unk_83CF424.pal rename to graphics/pokemon_storage/wallpapers/desert/title.pal index a3a5cb4ea..4cf04f8ae 100644 --- a/graphics/interface/pss_unk_83CF424.pal +++ b/graphics/pokemon_storage/wallpapers/desert/title.pal @@ -1,6 +1,6 @@ JASC-PAL 0100 -32 +16 255 255 255 255 255 139 205 189 131 @@ -17,19 +17,3 @@ JASC-PAL 255 255 255 164 139 82 123 98 41 -255 255 255 -255 238 189 -255 213 164 -230 189 139 -205 164 115 -180 139 90 -156 115 65 -131 90 41 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -164 139 82 -123 98 41 diff --git a/graphics/pokemon_storage/wallpapers/forest/box.pal b/graphics/pokemon_storage/wallpapers/forest/box.pal new file mode 100644 index 000000000..946becabb --- /dev/null +++ b/graphics/pokemon_storage/wallpapers/forest/box.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +230 255 172 +205 255 148 +180 230 123 +156 205 98 +131 180 74 +106 156 49 +82 131 24 +0 0 0 +205 213 172 +172 180 139 +0 0 0 +0 0 0 +0 0 0 +164 139 82 +123 98 41 diff --git a/graphics/interface/pss_unk_83CF050.bin b/graphics/pokemon_storage/wallpapers/forest/tilemap.bin similarity index 100% rename from graphics/interface/pss_unk_83CF050.bin rename to graphics/pokemon_storage/wallpapers/forest/tilemap.bin diff --git a/graphics/pokemon_storage/wallpapers/forest/tiles.png b/graphics/pokemon_storage/wallpapers/forest/tiles.png new file mode 100644 index 0000000000000000000000000000000000000000..1c00feb8200dbf24075bbf466d23c3ab6daa4375 GIT binary patch literal 743 zcmV?P)KGlg3G!p5Ki$|C3iuAP_%=VN;ZY2-6VHGMZ%^4(i*Ls!YF{m za2ISUtcnxVwXP}*>Zg%3+y$$IQQ?^}c-*RR+S-dyTJC~T!lf}>Iux!7tz8eI#Bmo~ zDtg$S#2IVq!a6(+TyhtBXwiMv#l5Yq3bap$pNEpWpt_=#e?`stDxGuc<@@PmkQpvS zEziKWmBi@*0Z33GYWdd$d@sh+cX^&qCwV^NLe%mMe96asnx~BV^e$@oHw66I{NvQ} z3=|s?wLBg2cneU=6R<5T>})m|O+Q|*bpaG9ulcg*KM5!e*-^Y=DjanL2`-w8pK=z>3i9x&Z*UJab+G6dZB zFO3R#;y4VfT^beey9C}c@Tw5v1w* zDr$DSJ^;|#V!2EbSW637h+6>B0oV)NSv5;^n)CA(aJMKIheMRb&EmKP+>^L^b%lD{ ZfPba2`O6JDf=B=W002ovPDHLkV1gAYQtJQ! literal 0 HcmV?d00001 diff --git a/graphics/interface/pss_unk_83CEC40.pal b/graphics/pokemon_storage/wallpapers/forest/title.pal similarity index 54% rename from graphics/interface/pss_unk_83CEC40.pal rename to graphics/pokemon_storage/wallpapers/forest/title.pal index d2663e710..1b4166087 100644 --- a/graphics/interface/pss_unk_83CEC40.pal +++ b/graphics/pokemon_storage/wallpapers/forest/title.pal @@ -1,6 +1,6 @@ JASC-PAL 0100 -32 +16 255 255 255 246 255 230 255 255 213 @@ -17,19 +17,3 @@ JASC-PAL 255 255 255 164 139 82 123 98 41 -255 255 255 -230 255 172 -205 255 148 -180 230 123 -156 205 98 -131 180 74 -106 156 49 -82 131 24 -0 0 0 -205 213 172 -172 180 139 -0 0 0 -0 0 0 -0 0 0 -164 139 82 -123 98 41 diff --git a/graphics/pokemon_storage/wallpapers/pokecenter/box.pal b/graphics/pokemon_storage/wallpapers/pokecenter/box.pal new file mode 100644 index 000000000..60b96bbd9 --- /dev/null +++ b/graphics/pokemon_storage/wallpapers/pokecenter/box.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 115 +41 82 82 +65 115 115 +115 164 156 +90 131 82 +131 172 123 +172 213 172 +189 230 197 +213 255 222 +255 164 139 +213 213 230 +0 0 255 +0 0 255 +0 0 255 +0 0 255 +255 255 255 diff --git a/graphics/interface/pss_unk_83D22B8.bin b/graphics/pokemon_storage/wallpapers/pokecenter/tilemap.bin similarity index 100% rename from graphics/interface/pss_unk_83D22B8.bin rename to graphics/pokemon_storage/wallpapers/pokecenter/tilemap.bin diff --git a/graphics/pokemon_storage/wallpapers/pokecenter/tiles.png b/graphics/pokemon_storage/wallpapers/pokecenter/tiles.png new file mode 100644 index 0000000000000000000000000000000000000000..e82b88e077b7e2f15331271d32fbbbbe47e57eb6 GIT binary patch literal 707 zcmV;!0zCbRP)<%%Ydp6VB+H0*l zKq`uJm=^`$ivXlvbxm&_0ayeD;GN|+O~9Pb&k1B83kI7kZnp@A?hy3*R z8vJP?@X{)P83tBr{TASdF^lS#lT8q?8iCSBkLO6#76eoo0^svEEN`)3hbscg$RM&H z;PHYei#O4;_NtCWD#Zl_`X6VR(b-IQp%ztJ99U>@c~{D1cmU>+1O8$yG*m*Mjtw`HL24aK?q{xV`};UoMRK9x6CMd1obNUyS({Dky+B zJ0QA*%?`jht~%J*fz)tlKaU;gJ{t~)t%T%&H`Mp54hM+<1p_l09JzJx;AL$kjdJ1} zM+VEy4k*3^QfNJH7e9T}_ElsMEZqDm3ag^?sQrbI4X|^0a2=98+7IkiJ$gqA*&|d* zYX=eF@~6S!O_ZqNczhEBWiUVsbhsUlC$v0xPl6CfG&r&i5t!Ug{AO9N!|y~bPnV}E zeK8_!N>eSTQv?RvfG27=o!+Rl|AB!`;xyBI5c(p``|rE7Fmg$SKaY<2E*gM-&En5} z>26w>HIQ`!FghNRgDgx3w4cfOs|XlEU>p5rcn`AclBf0(GT+Tmd$1K}LbwaxVi-ZVJ+ax(}0YV7&5`+wX8GJWrKCj?TlPW zAyvF44}cAughe$V?9sGbSc?G3W!rZfM!=emaxUx>0b8gr^?LV|F#u-a)Ix^fK6w+{8;@UN!;p(phtCt7oWRl%AiFd^4imw#jHn-GHf0^tz-+p&rw*dF zw%wHnzG?W_+5J3^0XtmVc`N`{$!7LNlVm{|av8NIb+HD} zmp)+KeFF7JKw<8?SQ14`Btv)yAYJ5d7qHyvpFwyhvh(XAiOjk@Tq}&0zPzS95w+ElnFm-;5Yz!VVSjgTyF!Qy>nO6MgT{ROkWWQ?{ z%1i@LAYI0j05IPTuv*Ynz8#pWbwEVGPZywQ%4rH{SHXQ1e_n$ccf4BMa{vGU07*qo IM6N<$f_Z!o&;S4c literal 0 HcmV?d00001 diff --git a/graphics/pokemon_storage/wallpapers/river/title.pal b/graphics/pokemon_storage/wallpapers/river/title.pal new file mode 100644 index 000000000..9fcc4cbca --- /dev/null +++ b/graphics/pokemon_storage/wallpapers/river/title.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +238 255 255 +205 255 255 +164 255 255 +131 222 222 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +115 180 0 +148 213 24 +180 246 57 +230 230 230 +255 255 255 +180 148 106 +139 106 65 diff --git a/graphics/pokemon_storage/wallpapers/savanna/box.pal b/graphics/pokemon_storage/wallpapers/savanna/box.pal new file mode 100644 index 000000000..d80816c35 --- /dev/null +++ b/graphics/pokemon_storage/wallpapers/savanna/box.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +255 255 131 +222 222 98 +189 189 65 +156 156 32 +123 123 0 +90 90 0 +57 57 0 +189 189 65 +131 180 57 +115 164 41 +205 205 82 +238 238 238 +255 255 255 +189 156 82 +148 115 41 diff --git a/graphics/interface/pss_unk_83CFA94.bin b/graphics/pokemon_storage/wallpapers/savanna/tilemap.bin similarity index 100% rename from graphics/interface/pss_unk_83CFA94.bin rename to graphics/pokemon_storage/wallpapers/savanna/tilemap.bin diff --git a/graphics/pokemon_storage/wallpapers/savanna/tiles.png b/graphics/pokemon_storage/wallpapers/savanna/tiles.png new file mode 100644 index 0000000000000000000000000000000000000000..ec1e4e8fdf793730847b56cf8c6fa2dcb8411b1a GIT binary patch literal 529 zcmV+s0`C2ZP)RX};RO&D zPXQH3sQj6j2on+$!RI?SP7@o!r@FrQezE;s;xN{v{LWVjf&i~8dMN>^2H>L(%uGEM zb)au*4}jZ_Rt?zy4Y1CzgQ@@-0McsUJH%YczW`lS6F{5YLUn3l^`U~uGuKA@P;NdHpD^6sKRm77>1DH!>F5-O7%7}F~ z0eGL;L_lE`0xbtH0l+12jrNDKr6a09Iy#^mtIj!}hc^U}H~NPfU=hwvC9ss|jEbYY z^Q0_S1b{q7%vykF0AAb7ZtzMAHmEq5OzQ T2}0n)00000NkvXXu0mjfemdb? literal 0 HcmV?d00001 diff --git a/graphics/interface/pss_unk_83CF834.pal b/graphics/pokemon_storage/wallpapers/savanna/title.pal similarity index 52% rename from graphics/interface/pss_unk_83CF834.pal rename to graphics/pokemon_storage/wallpapers/savanna/title.pal index a7789ddfe..1c1742cc2 100644 --- a/graphics/interface/pss_unk_83CF834.pal +++ b/graphics/pokemon_storage/wallpapers/savanna/title.pal @@ -1,6 +1,6 @@ JASC-PAL 0100 -32 +16 255 255 255 222 222 222 189 189 189 @@ -17,19 +17,3 @@ JASC-PAL 255 255 255 189 156 82 148 115 41 -255 255 255 -255 255 131 -222 222 98 -189 189 65 -156 156 32 -123 123 0 -90 90 0 -57 57 0 -189 189 65 -131 180 57 -115 164 41 -205 205 82 -238 238 238 -255 255 255 -189 156 82 -148 115 41 diff --git a/graphics/interface/pss_unk_83D10E4.pal b/graphics/pokemon_storage/wallpapers/seafloor/box.pal similarity index 52% rename from graphics/interface/pss_unk_83D10E4.pal rename to graphics/pokemon_storage/wallpapers/seafloor/box.pal index b91fdd173..43b2eecab 100644 --- a/graphics/interface/pss_unk_83D10E4.pal +++ b/graphics/pokemon_storage/wallpapers/seafloor/box.pal @@ -1,22 +1,6 @@ JASC-PAL 0100 -32 -255 255 255 -131 180 255 -98 148 222 -65 115 189 -32 82 156 -0 24 98 -0 0 0 -0 0 0 -139 90 115 -156 106 131 -115 65 90 -0 0 0 -230 230 230 -255 255 255 -148 180 41 -106 139 0 +16 255 255 255 164 213 255 131 180 255 diff --git a/graphics/interface/pss_unk_83D13D8.bin b/graphics/pokemon_storage/wallpapers/seafloor/tilemap.bin similarity index 100% rename from graphics/interface/pss_unk_83D13D8.bin rename to graphics/pokemon_storage/wallpapers/seafloor/tilemap.bin diff --git a/graphics/pokemon_storage/wallpapers/seafloor/tiles.png b/graphics/pokemon_storage/wallpapers/seafloor/tiles.png new file mode 100644 index 0000000000000000000000000000000000000000..192f7126c0d682d6c6cd12996588a613d3b4a6ee GIT binary patch literal 659 zcmV;E0&M+>P)@-8iSVEAj@ktL5m;@4_=pqtHUZ7)!poQ$QE)08a z5CnN2kNG!ssxxJca>pZOQI@NGGC_m<@p#`!q!91XVyzzAfM*8o*6F@rK+5Rjsy1W! z)dPcG0}v(ON}#{n2*?JY!>R&{xx_8HRefUF{|rd*M5kMm2M)`TP8+aPkK}TIXgnTA zb#0>@&_5Ushjy@6gFGxataK|o;IzQM}nK|o;ofq*AI##;pgp{Z9IWMHQeu=}!<16HrRu6@mk zae)6*4x)@PN^7I3cfht`u}y=sN*P7H1NOdK8MbLsg>Y)9cfel;F8EW=FnE>?4D}AE z+MG*cH%KW3m%~QY=KKZsPPN1&%Nzom7(pq_k{+cS0Wv{3QZJle9HAd8SU~AmB4bk5 z0rIQ#+1X^mB()GgzvlRKI{Y!g+03>OK)?EQmglpdxHw6v1pxU~`XXWDr|!|iX*P{3tQYMXTJ~P z4T6&9ues*{Ybst4NHGj#p>t{h9AK!p+wzqMDJDr$v))`#96&Ey7o`{k3_&=n=JzhJ zQ~-hR)o}pD0Y+wi;sCFxb3k42{08WU*{Gt9UHcJaRq*4Q18jk#>7aOX1=^tQ5YFii tse2C`XaTLwa{_zwoWKqi2mg)#0dF89`@BX?eXIZg002ovPDHLkV1i%Fjm-c6 literal 0 HcmV?d00001 diff --git a/graphics/pokemon_storage/wallpapers/simple/title.pal b/graphics/pokemon_storage/wallpapers/simple/title.pal new file mode 100644 index 000000000..9b4ffb97f --- /dev/null +++ b/graphics/pokemon_storage/wallpapers/simple/title.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 156 213 +82 65 115 +106 90 139 +131 115 164 +172 172 255 +189 189 255 +0 0 255 +0 0 255 +0 0 255 +0 0 255 +0 0 255 +0 0 255 +0 0 255 +0 0 255 +0 0 255 +255 255 255 diff --git a/graphics/interface/pss_unk_83D1874.pal b/graphics/pokemon_storage/wallpapers/sky/box.pal similarity index 51% rename from graphics/interface/pss_unk_83D1874.pal rename to graphics/pokemon_storage/wallpapers/sky/box.pal index a529046e5..3d722ed6d 100644 --- a/graphics/interface/pss_unk_83D1874.pal +++ b/graphics/pokemon_storage/wallpapers/sky/box.pal @@ -1,22 +1,6 @@ JASC-PAL 0100 -32 -255 255 255 -238 255 255 -205 255 255 -164 255 255 -123 213 246 -90 180 213 -57 148 180 -24 115 148 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -230 230 230 -255 255 255 -205 139 41 -164 98 0 +16 255 255 255 238 255 255 205 255 255 diff --git a/graphics/interface/pss_unk_83D1B4C.bin b/graphics/pokemon_storage/wallpapers/sky/tilemap.bin similarity index 100% rename from graphics/interface/pss_unk_83D1B4C.bin rename to graphics/pokemon_storage/wallpapers/sky/tilemap.bin diff --git a/graphics/pokemon_storage/wallpapers/sky/tiles.png b/graphics/pokemon_storage/wallpapers/sky/tiles.png new file mode 100644 index 0000000000000000000000000000000000000000..2b28d3897a03cb10b4b4ec9e65f7b5fd3f97e97c GIT binary patch literal 614 zcmV-s0-61ZP)L5d?g+dL~#l#lWtmJ}?>pW+(=_!pxME;AtExj}`%6RU56M z0*Scj5)}X#DU7j<3iHIu!WziAj5@=1;bL&ba2=W9N8|Fa+oS!!UM;Mo2ReV)!ZhHG zn7h3QqXEDgN4p3dG=>KQ;0$T~KtOYN5YRIHLcrT0>u4uH+td#&3NZEpe6A?5K!4=H zlrBC?E#N+?MO3TY0vy}67Ms;BRKTf>oK$SOeVkVgc(-Fs+TQNRG_Nesw7E%L1e#X@ zjG8t#-}MpN1n%aw%_;&H;SV5|maC$%AnYYh>_W-)%nLsdK`wwce&EE;CO-h7irwSU zpn3q%V^hEnETi0ah1q0J)B^Mv`+&Z0zvhm90VC~3-z!L)^#A|>07*qoM6N<$f=Pc5 A2mk;8 literal 0 HcmV?d00001 diff --git a/graphics/pokemon_storage/wallpapers/sky/title.pal b/graphics/pokemon_storage/wallpapers/sky/title.pal new file mode 100644 index 000000000..951f59ecf --- /dev/null +++ b/graphics/pokemon_storage/wallpapers/sky/title.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +238 255 255 +205 255 255 +164 255 255 +123 213 246 +90 180 213 +57 148 180 +24 115 148 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +230 230 230 +255 255 255 +205 139 41 +164 98 0 diff --git a/graphics/pokemon_storage/wallpapers/snow/box.pal b/graphics/pokemon_storage/wallpapers/snow/box.pal new file mode 100644 index 000000000..01e46d027 --- /dev/null +++ b/graphics/pokemon_storage/wallpapers/snow/box.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 255 +230 230 230 +205 205 205 +139 148 189 +106 115 156 +74 82 123 +41 49 90 +8 16 57 +0 0 0 +0 0 0 +0 0 0 +0 0 0 +238 238 238 +255 255 255 +213 131 139 +172 90 98 diff --git a/graphics/interface/pss_unk_83D070C.bin b/graphics/pokemon_storage/wallpapers/snow/tilemap.bin similarity index 100% rename from graphics/interface/pss_unk_83D070C.bin rename to graphics/pokemon_storage/wallpapers/snow/tilemap.bin diff --git a/graphics/pokemon_storage/wallpapers/snow/tiles.png b/graphics/pokemon_storage/wallpapers/snow/tiles.png new file mode 100644 index 0000000000000000000000000000000000000000..00225d6fccfe16a45cd4406228ea4400bc7fa30b GIT binary patch literal 607 zcmV-l0-*hgP)d-QG=i$TLz=@n62(s6j`(d88hZH9ujxECY?Gp zotiP~-O-Y$fAP{h*cL_pNbo%$nIubky01i=(4OeA1*!$$&k*3Tel$a1JJweP?n>1x z@a+&Vv%=?~IbdU|Vy!89Nvf%k(^r5st(mA=rxV~b2oRYtMQDMt(wEyqbXp&lUVx9S93CPsD`ZVNPfp^hG(mUpWC=g#H z6XOpG{0wv6OM7bUMF1awkF$VYVEfF!EXDBT3tiy2ZtUfBqYZi5#aK6ki!A~^?2`&M z?F0^ivl~+#Y+4oI0QePv+fepW#;l(Rh;8n+HeF6~4;;ldcYnhcrD!`~U~{*fx>y1R t^*5*g0jM8_Wx#GMS_Z(*CcNP${{e@&%H4*_sF(l%002ovPDHLkV1kQT49oxk literal 0 HcmV?d00001 diff --git a/graphics/interface/pss_unk_83D0414.pal b/graphics/pokemon_storage/wallpapers/snow/title.pal similarity index 51% rename from graphics/interface/pss_unk_83D0414.pal rename to graphics/pokemon_storage/wallpapers/snow/title.pal index 64a768cb1..437ccb934 100644 --- a/graphics/interface/pss_unk_83D0414.pal +++ b/graphics/pokemon_storage/wallpapers/snow/title.pal @@ -1,6 +1,6 @@ JASC-PAL 0100 -32 +16 255 255 255 230 230 230 205 205 205 @@ -17,19 +17,3 @@ JASC-PAL 255 255 255 213 131 139 172 90 98 -255 255 255 -230 230 230 -205 205 205 -139 148 189 -106 115 156 -74 82 123 -41 49 90 -8 16 57 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -238 238 238 -255 255 255 -213 131 139 -172 90 98 diff --git a/graphics/interface/pss_unk_83D1C2C.pal b/graphics/pokemon_storage/wallpapers/stars/box.pal similarity index 51% rename from graphics/interface/pss_unk_83D1C2C.pal rename to graphics/pokemon_storage/wallpapers/stars/box.pal index 0d9a33ee1..fc4215468 100644 --- a/graphics/interface/pss_unk_83D1C2C.pal +++ b/graphics/pokemon_storage/wallpapers/stars/box.pal @@ -1,22 +1,6 @@ JASC-PAL 0100 -32 -255 255 115 -106 8 115 -156 41 148 -205 74 180 -74 106 156 -98 123 205 -123 139 255 -238 238 57 -213 156 123 -156 230 82 -180 164 131 -213 106 189 -156 115 197 -139 180 164 -230 213 213 -255 255 255 +16 255 255 115 106 8 115 156 41 148 diff --git a/graphics/interface/pss_unk_83D1EC4.bin b/graphics/pokemon_storage/wallpapers/stars/tilemap.bin similarity index 100% rename from graphics/interface/pss_unk_83D1EC4.bin rename to graphics/pokemon_storage/wallpapers/stars/tilemap.bin diff --git a/graphics/pokemon_storage/wallpapers/stars/tiles.png b/graphics/pokemon_storage/wallpapers/stars/tiles.png new file mode 100644 index 0000000000000000000000000000000000000000..51c9f86749d30f7428ddba365af20170a7c63184 GIT binary patch literal 571 zcmV-B0>u4^P){0~s8Dz!KT=RlU{qf*cW z=YV$E%mVCO>vN7O1rX*rBmlUcw1QcKZg6KzK%|2iLnqvoPJ`LYfzUM=;r3W;TL6H! z9B4@|wI@yp& z3b2sZm)Oumz`6+F9T3ie?e^{>P19e1N%#N|TT5jG^mG~m(?;bRR-6Ncb`pg$;Rmplp89hMDQ%LA+(lnkGt0B^4&jJmRR=o`k`1JYA#Z#=^!^p`0o zxIKUb+}>dDDJNC+DnDfhCpMA#voSA7IIRP|XvthZC$Bk3&zwSyc!-S7rl=F)6av&% zv%jKr)q7!PBEZ6*^jt5xWJ=5;b0qz4u-(qh{;{*7~w-GRW`31<{ zaR?R^77w76?Bnmi@I)9Y14}qW?1}{Se1Ou9Ol(ZDk3hRT#5aA3f1X-w7pMRL002ov JPDHLkV1k2o`vU*~ literal 0 HcmV?d00001 diff --git a/graphics/pokemon_storage/wallpapers/stars/title.pal b/graphics/pokemon_storage/wallpapers/stars/title.pal new file mode 100644 index 000000000..e7b45e524 --- /dev/null +++ b/graphics/pokemon_storage/wallpapers/stars/title.pal @@ -0,0 +1,19 @@ +JASC-PAL +0100 +16 +255 255 115 +106 8 115 +156 41 148 +205 74 180 +74 106 156 +98 123 205 +123 139 255 +238 238 57 +213 156 123 +156 230 82 +180 164 131 +213 106 189 +156 115 197 +139 180 164 +230 213 213 +255 255 255 diff --git a/graphics/interface/pss_unk_83D239C.pal b/graphics/pokemon_storage/wallpapers/tiles/box.pal similarity index 52% rename from graphics/interface/pss_unk_83D239C.pal rename to graphics/pokemon_storage/wallpapers/tiles/box.pal index 07d069629..9ff5c0789 100644 --- a/graphics/interface/pss_unk_83D239C.pal +++ b/graphics/pokemon_storage/wallpapers/tiles/box.pal @@ -1,22 +1,6 @@ JASC-PAL 0100 -32 -255 255 115 -156 90 41 -205 106 8 -230 156 8 -0 0 255 -0 0 255 -0 0 255 -164 156 139 -213 205 172 -0 0 255 -131 131 131 -164 164 164 -180 180 180 -197 197 197 -213 213 213 -255 255 255 +16 255 255 115 156 90 41 205 106 8 diff --git a/graphics/interface/pss_unk_83D256C.bin b/graphics/pokemon_storage/wallpapers/tiles/tilemap.bin similarity index 100% rename from graphics/interface/pss_unk_83D256C.bin rename to graphics/pokemon_storage/wallpapers/tiles/tilemap.bin diff --git a/graphics/pokemon_storage/wallpapers/tiles/tiles.png b/graphics/pokemon_storage/wallpapers/tiles/tiles.png new file mode 100644 index 0000000000000000000000000000000000000000..1b3443a0a9c22b0ea697ae6ce45d5d41b17293fc GIT binary patch literal 444 zcmV;t0YmF#!loJvu8#D(dX_%~LO*N$$C zO9@=p9Dt^2wzXtKH_bbP`5<`Scz|@^@g;!elLwWe$TsHHwD6Nt4v#Va)%3xvKvHZI z08ME@RkUCd05>Io{L(+aWpLvF>btB1<1CfXoHGE6S=xcK@OASjE=hqX+-6Qoz4rO$poN@!AETRs5s*5Ksz8Ps1OQF>ePm m07j@#TB`@Yb`-Goz~gVv!Hgu{B88m*00000x$iEP)Y%0xe z5OCEAq)85HcF}AB?z8Ud;R&enDFdHIqhn*vMy-xWhv|@7Jo5m>D|k6t5f9B*_y&f7 z$trNDbsB&P0RUiV`M7HP0lZa!2 zS&17H0BVfqI?;n@`;ljrk=K+ACoWRSu*A|tNTo%|z-Lx)Ch>{@!YS z<_!Z)rxY--*9W|7`j5Ws#EADW8$Tr4C?^Xr4Zy^OgPRt>8p0f6y(9S{`A(N$d>>{<#ki5T9F+0;5L;j{c4FXKxDn?OaQnGPfcDC~ih!REcp<<)_%(66JpYIA9S2=%aRu z*aDZcHa>mr@+?;92?D;9d`M*7*iaduu8~hC1HYi=tBk1Hw!L|e^ijJC(ibhS+R$7W z3oXDkYkAluL0`&kq(}b+V6Q!LUVG%c_O+<{EBpm5a$w3d=7}Z%0000#u$$|!0gvnXN5|VG zZ!flYY<~I1v87Lr>F-;aeP;&bK~{azlGJ^!L8 zOGAS`!;2TM8IsmoM#ve~*E{Cjmy8v-{87{)HP~*?w!`;U^eQv`zOthm=tKrjS3j3^ HP6boxOption != OPTION_MOVE_ITEMS) LoadPalette(sScrollingBg_Pal, 0x30, sizeof(sScrollingBg_Pal)); else diff --git a/src/pokemon_storage_system_4.c b/src/pokemon_storage_system_4.c index 11eccef85..c6b45194a 100644 --- a/src/pokemon_storage_system_4.c +++ b/src/pokemon_storage_system_4.c @@ -76,74 +76,122 @@ static const union AffineAnimCmd *const sAffineAnims_ReleaseMon[] = { [RELEASE_ANIM_COME_BACK] = sAffineAnim_ReleaseMon_ComeBack, }; -static const u16 sWallpaperPalettes_Forest[] = INCBIN_U16("graphics/interface/pss_unk_83CEC40.gbapal"); -static const u32 sWallpaperTiles_Forest[] = INCBIN_U32("graphics/interface/pss_unk_83CEC80.4bpp.lz"); -static const u32 sWallpaperTilemap_Forest[] = INCBIN_U32("graphics/interface/pss_unk_83CF050.bin.lz"); +static const u16 sWallpaperPalettes_Forest[][16] = { + INCBIN_U16("graphics/pokemon_storage/wallpapers/forest/title.gbapal"), + INCBIN_U16("graphics/pokemon_storage/wallpapers/forest/box.gbapal"), +}; +static const u32 sWallpaperTiles_Forest[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/forest/tiles.4bpp.lz"); +static const u32 sWallpaperTilemap_Forest[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/forest/tilemap.bin.lz"); -static const u16 sWallpaperPalettes_City[] = INCBIN_U16("graphics/interface/pss_unk_83CF12C.gbapal"); -static const u32 sWallpaperTiles_City[] = INCBIN_U32("graphics/interface/pss_unk_83CF16C.4bpp.lz"); -static const u32 sWallpaperTilemap_City[] = INCBIN_U32("graphics/interface/pss_unk_83CF374.bin.lz"); +static const u16 sWallpaperPalettes_City[][16] = { + INCBIN_U16("graphics/pokemon_storage/wallpapers/city/title.gbapal"), + INCBIN_U16("graphics/pokemon_storage/wallpapers/city/box.gbapal"), +}; +static const u32 sWallpaperTiles_City[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/city/tiles.4bpp.lz"); +static const u32 sWallpaperTilemap_City[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/city/tilemap.bin.lz"); -static const u16 sWallpaperPalettes_Desert[] = INCBIN_U16("graphics/interface/pss_unk_83CF424.gbapal"); -static const u32 sWallpaperTiles_Desert[] = INCBIN_U32("graphics/interface/pss_unk_83CF464.4bpp.lz"); -static const u32 sWallpaperTilemap_Desert[] = INCBIN_U32("graphics/interface/pss_unk_83CF750.bin.lz"); +static const u16 sWallpaperPalettes_Desert[][16] = { + INCBIN_U16("graphics/pokemon_storage/wallpapers/desert/title.gbapal"), + INCBIN_U16("graphics/pokemon_storage/wallpapers/desert/box.gbapal"), +}; +static const u32 sWallpaperTiles_Desert[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/desert/tiles.4bpp.lz"); +static const u32 sWallpaperTilemap_Desert[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/desert/tilemap.bin.lz"); -static const u16 sWallpaperPalettes_Savanna[] = INCBIN_U16("graphics/interface/pss_unk_83CF834.gbapal"); -static const u32 sWallpaperTiles_Savanna[] = INCBIN_U32("graphics/interface/pss_unk_83CF874.4bpp.lz"); -static const u32 sWallpaperTilemap_Savanna[] = INCBIN_U32("graphics/interface/pss_unk_83CFA94.bin.lz"); +static const u16 sWallpaperPalettes_Savanna[][16] = { + INCBIN_U16("graphics/pokemon_storage/wallpapers/savanna/title.gbapal"), + INCBIN_U16("graphics/pokemon_storage/wallpapers/savanna/box.gbapal"), +}; +static const u32 sWallpaperTiles_Savanna[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/savanna/tiles.4bpp.lz"); +static const u32 sWallpaperTilemap_Savanna[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/savanna/tilemap.bin.lz"); -static const u16 sWallpaperPalettes_Crag[] = INCBIN_U16("graphics/interface/pss_unk_83CFB60.gbapal"); -static const u32 sWallpaperTiles_Crag[] = INCBIN_U32("graphics/interface/pss_unk_83CFBA0.4bpp.lz"); -static const u32 sWallpaperTilemap_Crag[] = INCBIN_U32("graphics/interface/pss_unk_83CFEF0.bin.lz"); +static const u16 sWallpaperPalettes_Crag[][16] = { + INCBIN_U16("graphics/pokemon_storage/wallpapers/crag/title.gbapal"), + INCBIN_U16("graphics/pokemon_storage/wallpapers/crag/box.gbapal"), +}; +static const u32 sWallpaperTiles_Crag[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/crag/tiles.4bpp.lz"); +static const u32 sWallpaperTilemap_Crag[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/crag/tilemap.bin.lz"); -static const u16 sWallpaperPalettes_Volcano[] = INCBIN_U16("graphics/interface/pss_unk_83CFFC8.gbapal"); -static const u32 sWallpaperTiles_Volcano[] = INCBIN_U32("graphics/interface/pss_unk_83D0008.4bpp.lz"); +static const u16 sWallpaperPalettes_Volcano[][16] = { + INCBIN_U16("graphics/pokemon_storage/wallpapers/volcano/title.gbapal"), + INCBIN_U16("graphics/pokemon_storage/wallpapers/volcano/box.gbapal"), +}; +static const u32 sWallpaperTiles_Volcano[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/volcano/tiles.4bpp.lz"); static const u8 sUnusedSpace1[4] = {}; -static const u32 sWallpaperTilemap_Volcano[] = INCBIN_U32("graphics/interface/pss_unk_83D033C.bin.lz"); +static const u32 sWallpaperTilemap_Volcano[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/volcano/tilemap.bin.lz"); -static const u16 sWallpaperPalettes_Snow[] = INCBIN_U16("graphics/interface/pss_unk_83D0414.gbapal"); -static const u32 sWallpaperTiles_Snow[] = INCBIN_U32("graphics/interface/pss_unk_83D0454.4bpp.lz"); -static const u32 sWallpaperTilemap_Snow[] = INCBIN_U32("graphics/interface/pss_unk_83D070C.bin.lz"); +static const u16 sWallpaperPalettes_Snow[][16] = { + INCBIN_U16("graphics/pokemon_storage/wallpapers/snow/title.gbapal"), + INCBIN_U16("graphics/pokemon_storage/wallpapers/snow/box.gbapal"), +}; +static const u32 sWallpaperTiles_Snow[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/snow/tiles.4bpp.lz"); +static const u32 sWallpaperTilemap_Snow[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/snow/tilemap.bin.lz"); -static const u16 sWallpaperPalettes_Cave[] = INCBIN_U16("graphics/interface/pss_unk_83D07D8.gbapal"); -static const u32 sWallpaperTiles_Cave[] = INCBIN_U32("graphics/interface/pss_unk_83D0818.4bpp.lz"); -static const u32 sWallpaperTilemap_Cave[] = INCBIN_U32("graphics/interface/pss_unk_83D0B5C.bin.lz"); +static const u16 sWallpaperPalettes_Cave[][16] = { + INCBIN_U16("graphics/pokemon_storage/wallpapers/cave/title.gbapal"), + INCBIN_U16("graphics/pokemon_storage/wallpapers/cave/box.gbapal"), +}; +static const u32 sWallpaperTiles_Cave[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/cave/tiles.4bpp.lz"); +static const u32 sWallpaperTilemap_Cave[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/cave/tilemap.bin.lz"); -static const u16 sWallpaperPalettes_Beach[] = INCBIN_U16("graphics/interface/pss_unk_83D0C38.gbapal"); -static const u32 sWallpaperTiles_Beach[] = INCBIN_U32("graphics/interface/pss_unk_83D0C78.4bpp.lz"); -static const u32 sWallpaperTilemap_Beach[] = INCBIN_U32("graphics/interface/pss_unk_83D0FFC.bin.lz"); +static const u16 sWallpaperPalettes_Beach[][16] = { + INCBIN_U16("graphics/pokemon_storage/wallpapers/beach/title.gbapal"), + INCBIN_U16("graphics/pokemon_storage/wallpapers/beach/box.gbapal"), +}; +static const u32 sWallpaperTiles_Beach[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/beach/tiles.4bpp.lz"); +static const u32 sWallpaperTilemap_Beach[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/beach/tilemap.bin.lz"); -static const u16 sWallpaperPalettes_Seafloor[] = INCBIN_U16("graphics/interface/pss_unk_83D10E4.gbapal"); -static const u32 sWallpaperTiles_Seafloor[] = INCBIN_U32("graphics/interface/pss_unk_83D1124.4bpp.lz"); -static const u32 sWallpaperTilemap_Seafloor[] = INCBIN_U32("graphics/interface/pss_unk_83D13D8.bin.lz"); +static const u16 sWallpaperPalettes_Seafloor[][16] = { + INCBIN_U16("graphics/pokemon_storage/wallpapers/seafloor/title.gbapal"), + INCBIN_U16("graphics/pokemon_storage/wallpapers/seafloor/box.gbapal"), +}; +static const u32 sWallpaperTiles_Seafloor[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/seafloor/tiles.4bpp.lz"); +static const u32 sWallpaperTilemap_Seafloor[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/seafloor/tilemap.bin.lz"); -static const u16 sWallpaperPalettes_River[] = INCBIN_U16("graphics/interface/pss_unk_83D14B4.gbapal"); -static const u32 sWallpaperTiles_River[] = INCBIN_U32("graphics/interface/pss_unk_83D14F4.4bpp.lz"); -static const u32 sWallpaperTilemap_River[] = INCBIN_U32("graphics/interface/pss_unk_83D1788.bin.lz"); +static const u16 sWallpaperPalettes_River[][16] = { + INCBIN_U16("graphics/pokemon_storage/wallpapers/river/title.gbapal"), + INCBIN_U16("graphics/pokemon_storage/wallpapers/river/box.gbapal"), +}; +static const u32 sWallpaperTiles_River[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/river/tiles.4bpp.lz"); +static const u32 sWallpaperTilemap_River[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/river/tilemap.bin.lz"); -static const u16 sWallpaperPalettes_Sky[] = INCBIN_U16("graphics/interface/pss_unk_83D1874.gbapal"); -static const u32 sWallpaperTiles_Sky[] = INCBIN_U32("graphics/interface/pss_unk_83D18B4.4bpp.lz"); -static const u32 sWallpaperTilemap_Sky[] = INCBIN_U32("graphics/interface/pss_unk_83D1B4C.bin.lz"); +static const u16 sWallpaperPalettes_Sky[][16] = { + INCBIN_U16("graphics/pokemon_storage/wallpapers/sky/title.gbapal"), + INCBIN_U16("graphics/pokemon_storage/wallpapers/sky/box.gbapal"), +}; +static const u32 sWallpaperTiles_Sky[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/sky/tiles.4bpp.lz"); +static const u32 sWallpaperTilemap_Sky[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/sky/tilemap.bin.lz"); -static const u16 sWallpaperPalettes_Stars[] = INCBIN_U16("graphics/interface/pss_unk_83D1C2C.gbapal"); +static const u16 sWallpaperPalettes_Stars[][16] = { + INCBIN_U16("graphics/pokemon_storage/wallpapers/stars/title.gbapal"), + INCBIN_U16("graphics/pokemon_storage/wallpapers/stars/box.gbapal"), +}; static const u8 sUnusedSpace2[32] = {}; -static const u32 sWallpaperTiles_Stars[] = INCBIN_U32("graphics/interface/pss_unk_83D1C8C.4bpp.lz"); -static const u32 sWallpaperTilemap_Stars[] = INCBIN_U32("graphics/interface/pss_unk_83D1EC4.bin.lz"); +static const u32 sWallpaperTiles_Stars[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/stars/tiles.4bpp.lz"); +static const u32 sWallpaperTilemap_Stars[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/stars/tilemap.bin.lz"); -static const u16 sWallpaperPalettes_Pokecenter[] = INCBIN_U16("graphics/interface/pss_unk_83D1F94.gbapal"); -static const u32 sWallpaperTiles_Pokecenter[] = INCBIN_U32("graphics/interface/pss_unk_83D1FD4.4bpp.lz"); -static const u32 sWallpaperTilemap_Pokecenter[] = INCBIN_U32("graphics/interface/pss_unk_83D22B8.bin.lz"); +static const u16 sWallpaperPalettes_Pokecenter[][16] = { + INCBIN_U16("graphics/pokemon_storage/wallpapers/pokecenter/title.gbapal"), + INCBIN_U16("graphics/pokemon_storage/wallpapers/pokecenter/box.gbapal"), +}; +static const u32 sWallpaperTiles_Pokecenter[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/pokecenter/tiles.4bpp.lz"); +static const u32 sWallpaperTilemap_Pokecenter[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/pokecenter/tilemap.bin.lz"); -static const u16 sWallpaperPalettes_Tiles[] = INCBIN_U16("graphics/interface/pss_unk_83D239C.gbapal"); -static const u32 sWallpaperTiles_Tiles[] = INCBIN_U32("graphics/interface/pss_unk_83D23DC.4bpp.lz"); -static const u32 sWallpaperTilemap_Tiles[] = INCBIN_U32("graphics/interface/pss_unk_83D256C.bin.lz"); +static const u16 sWallpaperPalettes_Tiles[][16] = { + INCBIN_U16("graphics/pokemon_storage/wallpapers/tiles/title.gbapal"), + INCBIN_U16("graphics/pokemon_storage/wallpapers/tiles/box.gbapal"), +}; +static const u32 sWallpaperTiles_Tiles[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/tiles/tiles.4bpp.lz"); +static const u32 sWallpaperTilemap_Tiles[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/tiles/tilemap.bin.lz"); -static const u16 sWallpaperPalettes_Simple[] = INCBIN_U16("graphics/interface/pss_unk_83D2614.gbapal"); -static const u32 sWallpaperTiles_Simple[] = INCBIN_U32("graphics/interface/pss_unk_83D2654.4bpp.lz"); -static const u32 sWallpaperTilemap_Simple[] = INCBIN_U32("graphics/interface/pss_unk_83D277C.bin.lz"); +static const u16 sWallpaperPalettes_Simple[][16] = { + INCBIN_U16("graphics/pokemon_storage/wallpapers/simple/title.gbapal"), + INCBIN_U16("graphics/pokemon_storage/wallpapers/simple/box.gbapal"), +}; +static const u32 sWallpaperTiles_Simple[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/simple/tiles.4bpp.lz"); +static const u32 sWallpaperTilemap_Simple[] = INCBIN_U32("graphics/pokemon_storage/wallpapers/simple/tilemap.bin.lz"); // Unused -static const u16 sWallpaperTilemap_Unused[] = INCBIN_U16("graphics/interface/pss_unk_83D2820.bin"); +static const u16 sWallpaperTilemap_Unused[] = INCBIN_U16("graphics/pokemon_storage/wallpapers/unused.bin"); // Shadow color, text color static const u16 sBoxTitleColors[][2] = { @@ -166,25 +214,25 @@ static const u16 sBoxTitleColors[][2] = { }; static const struct Wallpaper sWallpapers[] = { - {sWallpaperTiles_Forest, sWallpaperTilemap_Forest, sWallpaperPalettes_Forest }, - {sWallpaperTiles_City, sWallpaperTilemap_City, sWallpaperPalettes_City }, - {sWallpaperTiles_Desert, sWallpaperTilemap_Desert, sWallpaperPalettes_Desert }, - {sWallpaperTiles_Savanna, sWallpaperTilemap_Savanna, sWallpaperPalettes_Savanna }, - {sWallpaperTiles_Crag, sWallpaperTilemap_Crag, sWallpaperPalettes_Crag }, - {sWallpaperTiles_Volcano, sWallpaperTilemap_Volcano, sWallpaperPalettes_Volcano }, - {sWallpaperTiles_Snow, sWallpaperTilemap_Snow, sWallpaperPalettes_Snow }, - {sWallpaperTiles_Cave, sWallpaperTilemap_Cave, sWallpaperPalettes_Cave }, - {sWallpaperTiles_Beach, sWallpaperTilemap_Beach, sWallpaperPalettes_Beach }, - {sWallpaperTiles_Seafloor, sWallpaperTilemap_Seafloor, sWallpaperPalettes_Seafloor }, - {sWallpaperTiles_River, sWallpaperTilemap_River, sWallpaperPalettes_River }, - {sWallpaperTiles_Sky, sWallpaperTilemap_Sky, sWallpaperPalettes_Sky }, - {sWallpaperTiles_Stars, sWallpaperTilemap_Stars, sWallpaperPalettes_Stars }, - {sWallpaperTiles_Pokecenter, sWallpaperTilemap_Pokecenter, sWallpaperPalettes_Pokecenter}, - {sWallpaperTiles_Tiles, sWallpaperTilemap_Tiles, sWallpaperPalettes_Tiles }, - {sWallpaperTiles_Simple, sWallpaperTilemap_Simple, sWallpaperPalettes_Simple }, + {sWallpaperTiles_Forest, sWallpaperTilemap_Forest, *sWallpaperPalettes_Forest }, + {sWallpaperTiles_City, sWallpaperTilemap_City, *sWallpaperPalettes_City }, + {sWallpaperTiles_Desert, sWallpaperTilemap_Desert, *sWallpaperPalettes_Desert }, + {sWallpaperTiles_Savanna, sWallpaperTilemap_Savanna, *sWallpaperPalettes_Savanna }, + {sWallpaperTiles_Crag, sWallpaperTilemap_Crag, *sWallpaperPalettes_Crag }, + {sWallpaperTiles_Volcano, sWallpaperTilemap_Volcano, *sWallpaperPalettes_Volcano }, + {sWallpaperTiles_Snow, sWallpaperTilemap_Snow, *sWallpaperPalettes_Snow }, + {sWallpaperTiles_Cave, sWallpaperTilemap_Cave, *sWallpaperPalettes_Cave }, + {sWallpaperTiles_Beach, sWallpaperTilemap_Beach, *sWallpaperPalettes_Beach }, + {sWallpaperTiles_Seafloor, sWallpaperTilemap_Seafloor, *sWallpaperPalettes_Seafloor }, + {sWallpaperTiles_River, sWallpaperTilemap_River, *sWallpaperPalettes_River }, + {sWallpaperTiles_Sky, sWallpaperTilemap_Sky, *sWallpaperPalettes_Sky }, + {sWallpaperTiles_Stars, sWallpaperTilemap_Stars, *sWallpaperPalettes_Stars }, + {sWallpaperTiles_Pokecenter, sWallpaperTilemap_Pokecenter, *sWallpaperPalettes_Pokecenter}, + {sWallpaperTiles_Tiles, sWallpaperTilemap_Tiles, *sWallpaperPalettes_Tiles }, + {sWallpaperTiles_Simple, sWallpaperTilemap_Simple, *sWallpaperPalettes_Simple }, }; -static const u16 sBoxScrollArrow_Gfx[] = INCBIN_U16("graphics/interface/pss_unk_83D2AD0.4bpp"); +static const u16 sBoxScrollArrow_Gfx[] = INCBIN_U16("graphics/pokemon_storage/box_scroll_arrow.4bpp"); static const u16 sUnusedColor = RGB(26, 29, 8); diff --git a/src/pokemon_storage_system_5.c b/src/pokemon_storage_system_5.c index 4eecee08b..d3373f247 100644 --- a/src/pokemon_storage_system_5.c +++ b/src/pokemon_storage_system_5.c @@ -45,9 +45,9 @@ static bool8 SetMenuTextsForItem(void); static void CreateCursorSprites(void); static void ToggleCursorMultiMoveMode(void); -static const u16 sPokeStorageMisc1Pal[] = INCBIN_U16("graphics/interface/pss_unk_83D2BCC.gbapal"); -static const u16 sHandCursorTiles[] = INCBIN_U16("graphics/interface/pss_unk_83D2BEC.4bpp"); -static const u16 sHandCursorShadowTiles[] = INCBIN_U16("graphics/interface/pss_unk_83D33EC.4bpp"); +static const u16 sPokeStorageMisc1Pal[] = INCBIN_U16("graphics/pokemon_storage/misc1.gbapal"); +static const u16 sHandCursorTiles[] = INCBIN_U16("graphics/pokemon_storage/cursor.4bpp"); +static const u16 sHandCursorShadowTiles[] = INCBIN_U16("graphics/pokemon_storage/cursor_shadow.4bpp"); // Modes for selecting and moving Pokémon in the box. Multiple Pokémon can be // selected by pressing the Select button to change the cursor, then holding diff --git a/src/pokemon_storage_system_8.c b/src/pokemon_storage_system_8.c index e7241e4b7..644aad1aa 100644 --- a/src/pokemon_storage_system_8.c +++ b/src/pokemon_storage_system_8.c @@ -40,7 +40,7 @@ static void SpriteCB_ItemIcon_SwapToHand(struct Sprite *sprite); static void SpriteCB_ItemIcon_SwapToMon(struct Sprite *sprite); static void SpriteCB_ItemIcon_HideParty(struct Sprite *sprite); -static const u32 sItemInfoFrame_Gfx[] = INCBIN_U32("graphics/interface/pss_unk_83D35DC.4bpp"); +static const u32 sItemInfoFrame_Gfx[] = INCBIN_U32("graphics/pokemon_storage/item_info_frame.4bpp"); static const struct OamData sOamData_ItemIcon = { .y = 0, From 3a1994f7f790dd7d50ea6963c4f3bea833628f29 Mon Sep 17 00:00:00 2001 From: cbt6 <91667135+cbt6@users.noreply.github.com> Date: Sat, 3 Sep 2022 23:35:07 +0800 Subject: [PATCH 5/5] Rearrange Pokemon storage source files --- ...arty_pokemon_dropdown.h => tilemap_util.h} | 6 +- ld_script.txt | 28 +- src/pokemon_storage_system_6.c | 147 ----- src/pokemon_storage_system_7.c | 566 ------------------ ...stem_5.c => pokemon_storage_system_data.c} | 143 +++++ ..._4.c => pokemon_storage_system_graphics.c} | 0 ...stem_2.c => pokemon_storage_system_menu.c} | 0 ...stem_8.c => pokemon_storage_system_misc.c} | 563 +++++++++++++++++ ...tem_3.c => pokemon_storage_system_tasks.c} | 2 +- ...arty_pokemon_dropdown.c => tilemap_util.c} | 2 +- sym_bss.txt | 2 +- sym_ewram.txt | 11 +- 12 files changed, 729 insertions(+), 741 deletions(-) rename include/{box_party_pokemon_dropdown.h => tilemap_util.h} (75%) delete mode 100644 src/pokemon_storage_system_6.c delete mode 100644 src/pokemon_storage_system_7.c rename src/{pokemon_storage_system_5.c => pokemon_storage_system_data.c} (92%) rename src/{pokemon_storage_system_4.c => pokemon_storage_system_graphics.c} (100%) rename src/{pokemon_storage_system_2.c => pokemon_storage_system_menu.c} (100%) rename src/{pokemon_storage_system_8.c => pokemon_storage_system_misc.c} (61%) rename src/{pokemon_storage_system_3.c => pokemon_storage_system_tasks.c} (99%) rename src/{box_party_pokemon_dropdown.c => tilemap_util.c} (99%) diff --git a/include/box_party_pokemon_dropdown.h b/include/tilemap_util.h similarity index 75% rename from include/box_party_pokemon_dropdown.h rename to include/tilemap_util.h index 5e925e8a2..b8388c6f5 100644 --- a/include/box_party_pokemon_dropdown.h +++ b/include/tilemap_util.h @@ -1,5 +1,5 @@ -#ifndef GUARD_BOX_PARTY_POKEMON_DROPDOWN_H -#define GUARD_BOX_PARTY_POKEMON_DROPDOWN_H +#ifndef GUARD_TILEMAP_UTIL_H +#define GUARD_TILEMAP_UTIL_H void TilemapUtil_Init(u8 numTilemapIds); void TilemapUtil_Free(void); @@ -9,4 +9,4 @@ void TilemapUtil_SetRect(u8 tilemapId, u16 x, u16 y, u16 width, u16 height); void TilemapUtil_Move(u8 tilemapId, u8 mode, s8 param); void TilemapUtil_Update(u8 tilemapId); -#endif //GUARD_BOX_PARTY_POKEMON_DROPDOWN_H +#endif //GUARD_TILEMAP_UTIL_H diff --git a/ld_script.txt b/ld_script.txt index 21538a7ba..a97a5ac2a 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -130,13 +130,11 @@ SECTIONS { src/pokedex.o(.text); src/trainer_card.o(.text); src/pokemon_storage_system.o(.text); - src/pokemon_storage_system_2.o(.text); - src/pokemon_storage_system_3.o(.text); - src/pokemon_storage_system_4.o(.text); - src/pokemon_storage_system_5.o(.text); - src/pokemon_storage_system_6.o(.text); - src/pokemon_storage_system_7.o(.text); - src/pokemon_storage_system_8.o(.text); + src/pokemon_storage_system_menu.o(.text); + src/pokemon_storage_system_tasks.o(.text); + src/pokemon_storage_system_graphics.o(.text); + src/pokemon_storage_system_data.o(.text); + src/pokemon_storage_system_misc.o(.text); src/pokemon_icon.o(.text); src/script_movement.o(.text); src/fldeff_cut.o(.text); @@ -228,7 +226,7 @@ SECTIONS { src/evolution_graphics.o(.text); src/fldeff_teleport.o(.text); src/new_menu_helpers.o(.text); - src/box_party_pokemon_dropdown.o(.text); + src/tilemap_util.o(.text); src/save_menu_util.o(.text); src/map_preview_screen.o(.text); src/link_rfu_2.o(.text); @@ -452,13 +450,11 @@ SECTIONS { src/field_effect.o(.rodata); src/option_menu.o(.rodata); src/trainer_card.o(.rodata); - src/pokemon_storage_system_2.o(.rodata); - src/pokemon_storage_system_3.o(.rodata); - src/pokemon_storage_system_4.o(.rodata); - src/pokemon_storage_system_5.o(.rodata); - src/pokemon_storage_system_6.o(.rodata); - src/pokemon_storage_system_7.o(.rodata); - src/pokemon_storage_system_8.o(.rodata); + src/pokemon_storage_system_menu.o(.rodata); + src/pokemon_storage_system_tasks.o(.rodata); + src/pokemon_storage_system_graphics.o(.rodata); + src/pokemon_storage_system_data.o(.rodata); + src/pokemon_storage_system_misc.o(.rodata); src/pokemon_icon.o(.rodata); src/fldeff_cut.o(.rodata); src/map_name_popup.o(.rodata); @@ -524,7 +520,7 @@ SECTIONS { src/clear_save_data_screen.o(.rodata); src/evolution_graphics.o(.rodata); src/new_menu_helpers.o(.rodata); - src/box_party_pokemon_dropdown.o(.rodata); + src/tilemap_util.o(.rodata); src/map_preview_screen.o(.rodata); src/link_rfu_2.o(.rodata); src/link_rfu_3.o(.rodata); diff --git a/src/pokemon_storage_system_6.c b/src/pokemon_storage_system_6.c deleted file mode 100644 index b8fcc3e8b..000000000 --- a/src/pokemon_storage_system_6.c +++ /dev/null @@ -1,147 +0,0 @@ -#include "global.h" -#include "gflib.h" -#include "menu.h" -#include "new_menu_helpers.h" -#include "pokemon_storage_system_internal.h" -#include "strings.h" -#include "constants/songs.h" - -void InitMenu(void) -{ - gStorage->menuItemsCount = 0; - gStorage->menuWidth = 0; - gStorage->menuWindow.bg = 0; - gStorage->menuWindow.paletteNum = 15; - gStorage->menuWindow.baseBlock = 92; -} - -static const u8 *const sMenuTexts[] = { - [MENU_TEXT_CANCEL] = gPCText_Cancel, - [MENU_TEXT_STORE] = gPCText_Store, - [MENU_TEXT_WITHDRAW] = gPCText_Withdraw, - [MENU_TEXT_MOVE] = gPCText_Move, - [MENU_TEXT_SHIFT] = gPCText_Shift, - [MENU_TEXT_PLACE] = gPCText_Place, - [MENU_TEXT_SUMMARY] = gPCText_Summary, - [MENU_TEXT_RELEASE] = gPCText_Release, - [MENU_TEXT_MARK] = gPCText_Mark, - [MENU_TEXT_JUMP] = gPCText_Jump, - [MENU_TEXT_WALLPAPER] = gPCText_Wallpaper, - [MENU_TEXT_NAME] = gPCText_Name, - [MENU_TEXT_TAKE] = gPCText_Take, - [MENU_TEXT_GIVE] = gPCText_Give, - [MENU_TEXT_GIVE2] = gPCText_Give, - [MENU_TEXT_SWITCH] = gPCText_Switch, - [MENU_TEXT_BAG] = gPCText_Bag, - [MENU_TEXT_INFO] = gPCText_Info, - [MENU_TEXT_SCENERY_1] = gPCText_Scenery1, - [MENU_TEXT_SCENERY_2] = gPCText_Scenery2, - [MENU_TEXT_SCENERY_3] = gPCText_Scenery3, - [MENU_TEXT_ETCETERA] = gPCText_Etcetera, - [MENU_TEXT_FOREST] = gPCText_Forest, - [MENU_TEXT_CITY] = gPCText_City, - [MENU_TEXT_DESERT] = gPCText_Desert, - [MENU_TEXT_SAVANNA] = gPCText_Savanna, - [MENU_TEXT_CRAG] = gPCText_Crag, - [MENU_TEXT_VOLCANO] = gPCText_Volcano, - [MENU_TEXT_SNOW] = gPCText_Snow, - [MENU_TEXT_CAVE] = gPCText_Cave, - [MENU_TEXT_BEACH] = gPCText_Beach, - [MENU_TEXT_SEAFLOOR] = gPCText_Seafloor, - [MENU_TEXT_RIVER] = gPCText_River, - [MENU_TEXT_SKY] = gPCText_Sky, - [MENU_TEXT_POLKADOT] = gPCText_PolkaDot, - [MENU_TEXT_POKECENTER] = gPCText_Pokecenter, - [MENU_TEXT_MACHINE] = gPCText_Machine, - [MENU_TEXT_SIMPLE] = gPCText_Simple, -}; - -void SetMenuText(u8 textId) -{ - if (gStorage->menuItemsCount < ARRAY_COUNT(gStorage->menuItems)) - { - u8 len; - struct StorageMenu *menu = &gStorage->menuItems[gStorage->menuItemsCount]; - - menu->text = sMenuTexts[textId]; - menu->textId = textId; - len = StringLength(menu->text); - if (len > gStorage->menuWidth) - gStorage->menuWidth = len; - - gStorage->menuItemsCount++; - } -} - -s8 GetMenuItemTextId(u8 menuIndex) -{ - if (menuIndex >= gStorage->menuItemsCount) - return MENU_B_PRESSED; - else - return gStorage->menuItems[menuIndex].textId; -} - -void AddMenu(void) -{ - gStorage->menuWindow.width = gStorage->menuWidth + 2; - gStorage->menuWindow.height = 2 * gStorage->menuItemsCount; - gStorage->menuWindow.tilemapLeft = 29 - gStorage->menuWindow.width; - gStorage->menuWindow.tilemapTop = 15 - gStorage->menuWindow.height; - gStorage->menuWindowId = AddWindow(&gStorage->menuWindow); - ClearWindowTilemap(gStorage->menuWindowId); - DrawStdFrameWithCustomTileAndPalette(gStorage->menuWindowId, FALSE, 11, 14); - PrintTextArray(gStorage->menuWindowId, FONT_1, 8, 2, 16, gStorage->menuItemsCount, (void *)gStorage->menuItems); - Menu_InitCursor(gStorage->menuWindowId, FONT_1, 0, 2, 16, gStorage->menuItemsCount, 0); - ScheduleBgCopyTilemapToVram(0); - gStorage->menuUnusedField = 0; -} - -bool8 IsMenuLoading(void) -{ - // Possibly stubbed out debug code? - return FALSE; -} - -s16 HandleMenuInput(void) -{ - s32 input = MENU_NOTHING_CHOSEN; - - do - { - if (JOY_NEW(A_BUTTON)) - { - input = Menu_GetCursorPos(); - break; - } - else if (JOY_NEW(B_BUTTON)) - { - PlaySE(SE_SELECT); - input = MENU_B_PRESSED; - } - - if (JOY_NEW(DPAD_UP)) - { - PlaySE(SE_SELECT); - Menu_MoveCursor(-1); - } - else if (JOY_NEW(DPAD_DOWN)) - { - PlaySE(SE_SELECT); - Menu_MoveCursor(1); - } - } while (FALSE); - - if (input != MENU_NOTHING_CHOSEN) - RemoveMenu(); - - if (input >= 0) - input = gStorage->menuItems[input].textId; - - return input; -} - -void RemoveMenu(void) -{ - ClearStdWindowAndFrameToTransparent(gStorage->menuWindowId, TRUE); - RemoveWindow(gStorage->menuWindowId); -} diff --git a/src/pokemon_storage_system_7.c b/src/pokemon_storage_system_7.c deleted file mode 100644 index 573aa4b82..000000000 --- a/src/pokemon_storage_system_7.c +++ /dev/null @@ -1,566 +0,0 @@ -#include // to declare abs -#include "global.h" -#include "gflib.h" -#include "pokemon_icon.h" -#include "pokemon_storage_system_internal.h" -#include "text_window.h" - -static EWRAM_DATA struct -{ - u8 funcId; - u8 state; - u8 fromColumn; - u8 fromRow; - u8 toColumn; - u8 toRow; - u8 cursorColumn; - u8 cursorRow; - u8 minColumn; - u8 minRow; - u8 columnsTotal; - u8 rowsTotal; - u16 bgX; - u16 bgY; - u16 bgMoveSteps; - struct BoxPokemon boxMons[IN_BOX_COUNT]; -} *sMultiMove = NULL; - -static bool8 MultiMove_Function_Start(void); -static bool8 MultiMove_Function_Single(void); -static bool8 MultiMove_Function_ChangeSelection(void); -static bool8 MultiMove_Function_GrabSelection(void); -static bool8 MultiMove_Function_MoveMons(void); -static bool8 MultiMove_Function_PlaceMons(void); -static void MultiMove_UpdateSelectedIcons(void); -static void MultiMove_SelectColumn(u8 column, u8 minRow, u8 maxRow); -static void MultiMove_SelectRow(u8 row, u8 minColumn, u8 maxColumn); -static void MultiMove_DeselectColumn(u8 arg0, u8 minRow, u8 maxRow); -static void MultiMove_DeselectRow(u8 row, u8 minColumn, u8 maxColumn); -static void MultiMove_SetIconToBg(u8 x, u8 y); -static void MultiMove_ClearIconFromBg(u8 x, u8 y); -static void MultiMove_InitBg(u16 bgX, u16 bgY, u16 duration); -static u8 MultiMove_UpdateBg(void); -static void MultiMove_GetMonsFromSelection(void); -static void MultiMove_RemoveMonsFromBox(void); -static void MultiMove_CreatePlacedMonIcons(void); -static void MultiMove_SetPlacedMonData(void); -static void MultiMove_ResetBg(void); - -static const struct WindowTemplate sWindowTemplate_MultiMove = { - .bg = 0, - .tilemapLeft = 10, - .tilemapTop = 3, - .width = 20, - .height = 18, - .paletteNum = 9, - .baseBlock = 0x00a -}; - -bool8 MultiMove_Init(void) -{ - sMultiMove = Alloc(sizeof(*sMultiMove)); - if (sMultiMove != NULL) - { - gStorage->multiMoveWindowId = AddWindow8Bit(&sWindowTemplate_MultiMove); - if (gStorage->multiMoveWindowId != WINDOW_NONE) - { - FillWindowPixelBuffer(gStorage->multiMoveWindowId, PIXEL_FILL(0)); - return TRUE; - } - } - - return FALSE; -} - -void MultiMove_Free(void) -{ - if (sMultiMove != NULL) - Free(sMultiMove); -} - -void MultiMove_SetFunction(u8 funcId) -{ - sMultiMove->funcId = funcId; - sMultiMove->state = 0; -} - -bool8 MultiMove_RunFunction(void) -{ - switch (sMultiMove->funcId) - { - case MULTIMOVE_START: - return MultiMove_Function_Start(); - case MULTIMOVE_SINGLE: - return MultiMove_Function_Single(); - case MULTIMOVE_CHANGE_SELECTION: - return MultiMove_Function_ChangeSelection(); - case MULTIMOVE_GRAB_SELECTION: - return MultiMove_Function_GrabSelection(); - case MULTIMOVE_MOVE_MONS: - return MultiMove_Function_MoveMons(); - case MULTIMOVE_PLACE_MONS: - return MultiMove_Function_PlaceMons(); - } - - return FALSE; -} - -static bool8 MultiMove_Function_Start(void) -{ - switch (sMultiMove->state) - { - case 0: - HideBg(0); - LoadMonIconPalettesAt(0x80); - sMultiMove->state++; - break; - case 1: - GetCursorBoxColumnAndRow(&sMultiMove->fromColumn, &sMultiMove->fromRow); - sMultiMove->toColumn = sMultiMove->fromColumn; - sMultiMove->toRow = sMultiMove->fromRow; - ChangeBgX(0, -1024, BG_COORD_SET); - ChangeBgY(0, -1024, BG_COORD_SET); - FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 32, 32); - FillWindowPixelBuffer8Bit(gStorage->multiMoveWindowId, PIXEL_FILL(0)); - MultiMove_SetIconToBg(sMultiMove->fromColumn, sMultiMove->fromRow); - SetBgAttribute(0, BG_ATTR_PALETTEMODE, 1); - PutWindowTilemap(gStorage->multiMoveWindowId); - CopyWindowToVram8Bit(gStorage->multiMoveWindowId, COPYWIN_FULL); - BlendPalettes(0x3F00, 8, RGB_WHITE); - StartCursorAnim(CURSOR_ANIM_OPEN); - SetGpuRegBits(REG_OFFSET_BG0CNT, BGCNT_256COLOR); - sMultiMove->state++; - break; - case 2: - if (!IsDma3ManagerBusyWithBgCopy()) - { - ShowBg(0); - return FALSE; - } - break; - } - - return TRUE; -} - -static bool8 MultiMove_Function_Single(void) -{ - switch (sMultiMove->state) - { - case 0: - HideBg(0); - sMultiMove->state++; - break; - case 1: - MultiMove_ResetBg(); - StartCursorAnim(CURSOR_ANIM_BOUNCE); - sMultiMove->state++; - break; - case 2: - if (!IsDma3ManagerBusyWithBgCopy()) - { - SetCursorPriorityTo1(); - LoadPalette(stdpal_get(3), 0xD0, 0x20); - ShowBg(0); - return FALSE; - } - break; - } - - return TRUE; -} - -static bool8 MultiMove_Function_ChangeSelection(void) -{ - switch (sMultiMove->state) - { - case 0: - if (!UpdateCursorPos()) - { - GetCursorBoxColumnAndRow(&sMultiMove->cursorColumn, &sMultiMove->cursorRow); - MultiMove_UpdateSelectedIcons(); - sMultiMove->toColumn = sMultiMove->cursorColumn; - sMultiMove->toRow = sMultiMove->cursorRow; - CopyWindowToVram8Bit(gStorage->multiMoveWindowId, COPYWIN_GFX); - sMultiMove->state++; - } - break; - case 1: - return IsDma3ManagerBusyWithBgCopy(); - } - - return TRUE; -} - -static bool8 MultiMove_Function_GrabSelection(void) -{ - u8 movingBg, movingMon; - - switch (sMultiMove->state) - { - case 0: - MultiMove_GetMonsFromSelection(); - MultiMove_RemoveMonsFromBox(); - InitMultiMonPlaceChange(FALSE); - sMultiMove->state++; - break; - case 1: - if (!DoMonPlaceChange()) - { - StartCursorAnim(CURSOR_ANIM_FIST); - MultiMove_InitBg(0, 256, 8); - InitMultiMonPlaceChange(TRUE); - sMultiMove->state++; - } - break; - case 2: - movingBg = MultiMove_UpdateBg(); - movingMon = DoMonPlaceChange(); - if (!movingBg && !movingMon) - return FALSE; - break; - } - - return TRUE; -} - -static bool8 MultiMove_Function_MoveMons(void) -{ - u8 movingCursor = UpdateCursorPos(); - u8 movingBg = MultiMove_UpdateBg(); - - if (!movingCursor && !movingBg) - return FALSE; - else - return TRUE; -} - -static bool8 MultiMove_Function_PlaceMons(void) -{ - switch (sMultiMove->state) - { - case 0: - MultiMove_SetPlacedMonData(); - MultiMove_InitBg(0, -256, 8); - InitMultiMonPlaceChange(FALSE); - sMultiMove->state++; - break; - case 1: - if (!DoMonPlaceChange() && !MultiMove_UpdateBg()) - { - MultiMove_CreatePlacedMonIcons(); - StartCursorAnim(CURSOR_ANIM_OPEN); - InitMultiMonPlaceChange(TRUE); - HideBg(0); - sMultiMove->state++; - } - break; - case 2: - if (!DoMonPlaceChange()) - { - StartCursorAnim(CURSOR_ANIM_BOUNCE); - MultiMove_ResetBg(); - sMultiMove->state++; - } - break; - case 3: - if (!IsDma3ManagerBusyWithBgCopy()) - { - LoadPalette(stdpal_get(3), 0xD0, 0x20); - SetCursorPriorityTo1(); - ShowBg(0); - return FALSE; - } - break; - } - - return TRUE; -} - -bool8 MultiMove_TryMoveGroup(u8 dir) -{ - switch (dir) - { - case 0: // up - if (sMultiMove->minRow == 0) - return FALSE; - sMultiMove->minRow--; - MultiMove_InitBg(0, 1024, 6); - break; - case 1: // down - if (sMultiMove->minRow + sMultiMove->rowsTotal >= 5) - return FALSE; - sMultiMove->minRow++; - MultiMove_InitBg(0, -1024, 6); - break; - case 2: // left - if (sMultiMove->minColumn == 0) - return FALSE; - sMultiMove->minColumn--; - MultiMove_InitBg(1024, 0, 6); - break; - case 3: // right - if (sMultiMove->minColumn + sMultiMove->columnsTotal > 5) - return FALSE; - sMultiMove->minColumn++; - MultiMove_InitBg(-1024, 0, 6); - break; - } - - return TRUE; -} - -static void MultiMove_UpdateSelectedIcons(void) -{ - s16 columnChange = (abs(sMultiMove->fromColumn - sMultiMove->cursorColumn)) - (abs(sMultiMove->fromColumn - sMultiMove->toColumn)); - s16 rowChange = (abs(sMultiMove->fromRow - sMultiMove->cursorRow)) - (abs(sMultiMove->fromRow - sMultiMove->toRow)); - - if (columnChange > 0) - MultiMove_SelectColumn(sMultiMove->cursorColumn, sMultiMove->fromRow, sMultiMove->toRow); - - if (columnChange < 0) - { - MultiMove_DeselectColumn(sMultiMove->toColumn, sMultiMove->fromRow, sMultiMove->toRow); - MultiMove_SelectColumn(sMultiMove->cursorColumn, sMultiMove->fromRow, sMultiMove->toRow); - } - - if (rowChange > 0) - MultiMove_SelectRow(sMultiMove->cursorRow, sMultiMove->fromColumn, sMultiMove->toColumn); - - if (rowChange < 0) - { - MultiMove_DeselectRow(sMultiMove->toRow, sMultiMove->fromColumn, sMultiMove->toColumn); - MultiMove_SelectRow(sMultiMove->cursorRow, sMultiMove->fromColumn, sMultiMove->toColumn); - } -} - -static void MultiMove_SelectColumn(u8 column, u8 minRow, u8 maxRow) -{ - u8 tmp = minRow; - - if (minRow > maxRow) - { - minRow = maxRow; - maxRow = tmp; - } - - while (minRow <= maxRow) - MultiMove_SetIconToBg(column, minRow++); -} - -static void MultiMove_SelectRow(u8 row, u8 minColumn, u8 maxColumn) -{ - u8 tmp = minColumn; - - if (minColumn > maxColumn) - { - minColumn = maxColumn; - maxColumn = tmp; - } - - while (minColumn <= maxColumn) - MultiMove_SetIconToBg(minColumn++, row); -} - -static void MultiMove_DeselectColumn(u8 column, u8 minRow, u8 maxRow) -{ - u8 tmp = minRow; - - if (minRow > maxRow) - { - minRow = maxRow; - maxRow = tmp; - } - - while (minRow <= maxRow) - MultiMove_ClearIconFromBg(column, minRow++); -} - -static void MultiMove_DeselectRow(u8 row, u8 minColumn, u8 maxColumn) -{ - u8 tmp = minColumn; - - if (minColumn > maxColumn) - { - minColumn = maxColumn; - maxColumn = tmp; - } - - while (minColumn <= maxColumn) - MultiMove_ClearIconFromBg(minColumn++, row); -} - -static void MultiMove_SetIconToBg(u8 x, u8 y) -{ - u8 position = x + (IN_BOX_COLUMNS * y); - u16 species = GetCurrentBoxMonData(position, MON_DATA_SPECIES2); - u32 personality = GetCurrentBoxMonData(position, MON_DATA_PERSONALITY); - - if (species != SPECIES_NONE) - { - const u8 *iconGfx = GetMonIconPtr(species, personality, 1); - u8 palNum = GetValidMonIconPalIndex(species) + 8; - BlitBitmapRectToWindow4BitTo8Bit(gStorage->multiMoveWindowId, iconGfx, 0, 0, 32, 32, 24 * x, 24 * y, 32, 32, palNum); - } -} - -static void MultiMove_ClearIconFromBg(u8 x, u8 y) -{ - u8 position = x + (IN_BOX_COLUMNS * y); - u16 species = GetCurrentBoxMonData(position, MON_DATA_SPECIES2); - - if (species != SPECIES_NONE) - FillWindowPixelRect8Bit(gStorage->multiMoveWindowId, PIXEL_FILL(0), 24 * x, 24 * y, 32, 32); -} - -static void MultiMove_InitBg(u16 bgX, u16 bgY, u16 duration) -{ - sMultiMove->bgX = bgX; - sMultiMove->bgY = bgY; - sMultiMove->bgMoveSteps = duration; -} - -static u8 MultiMove_UpdateBg(void) -{ - if (sMultiMove->bgMoveSteps != 0) - { - ChangeBgX(0, sMultiMove->bgX, BG_COORD_ADD); - ChangeBgY(0, sMultiMove->bgY, BG_COORD_ADD); - sMultiMove->bgMoveSteps--; - } - - return sMultiMove->bgMoveSteps; -} - -static void MultiMove_GetMonsFromSelection(void) -{ - s32 i, j; - s32 columnCount, rowCount; - u8 boxId; - u8 monArrayId; - - sMultiMove->minColumn = min(sMultiMove->fromColumn, sMultiMove->toColumn); - sMultiMove->minRow = min(sMultiMove->fromRow, sMultiMove->toRow); - sMultiMove->columnsTotal = abs(sMultiMove->fromColumn - sMultiMove->toColumn) + 1; - sMultiMove->rowsTotal = abs(sMultiMove->fromRow - sMultiMove->toRow) + 1; - boxId = StorageGetCurrentBox(); - monArrayId = 0; - columnCount = sMultiMove->minColumn + sMultiMove->columnsTotal; - rowCount = sMultiMove->minRow + sMultiMove->rowsTotal; - for (i = sMultiMove->minRow; i < rowCount; i++) - { - u8 boxPosition = (IN_BOX_COLUMNS * i) + sMultiMove->minColumn; - for (j = sMultiMove->minColumn; j < columnCount; j++) - { - struct BoxPokemon *boxMon = GetBoxedMonPtr(boxId, boxPosition); - // UB: possible null dereference -#ifdef UBFIX - if (boxMon != NULL) - sMultiMove->boxMons[monArrayId] = *boxMon; -#else - sMultiMove->boxMons[monArrayId] = *boxMon; -#endif - monArrayId++; - boxPosition++; - } - } -} - -static void MultiMove_RemoveMonsFromBox(void) -{ - s32 i, j; - s32 columnCount = sMultiMove->minColumn + sMultiMove->columnsTotal; - s32 rowCount = sMultiMove->minRow + sMultiMove->rowsTotal; - u8 boxId = StorageGetCurrentBox(); - - for (i = sMultiMove->minRow; i < rowCount; i++) - { - u8 boxPosition = (IN_BOX_COLUMNS * i) + sMultiMove->minColumn; - for (j = sMultiMove->minColumn; j < columnCount; j++) - { - DestroyBoxMonIconAtPosition(boxPosition); - ZeroBoxMonAt(boxId, boxPosition); - boxPosition++; - } - } -} - -static void MultiMove_CreatePlacedMonIcons(void) -{ - s32 i, j; - s32 columnCount = sMultiMove->minColumn + sMultiMove->columnsTotal; - s32 rowCount = sMultiMove->minRow + sMultiMove->rowsTotal; - u8 monArrayId = 0; - - for (i = sMultiMove->minRow; i < rowCount; i++) - { - u8 boxPosition = (IN_BOX_COLUMNS * i) + sMultiMove->minColumn; - for (j = sMultiMove->minColumn; j < columnCount; j++) - { - if (GetBoxMonData(&sMultiMove->boxMons[monArrayId], MON_DATA_SANITY_HAS_SPECIES)) - CreateBoxMonIconAtPos(boxPosition); - monArrayId++; - boxPosition++; - } - } -} - -static void MultiMove_SetPlacedMonData(void) -{ - s32 i, j; - s32 columnCount = sMultiMove->minColumn + sMultiMove->columnsTotal; - s32 rowCount = sMultiMove->minRow + sMultiMove->rowsTotal; - u8 boxId = StorageGetCurrentBox(); - u8 monArrayId = 0; - - for (i = sMultiMove->minRow; i < rowCount; i++) - { - u8 boxPosition = (IN_BOX_COLUMNS * i) + sMultiMove->minColumn; - for (j = sMultiMove->minColumn; j < columnCount; j++) - { - if (GetBoxMonData(&sMultiMove->boxMons[monArrayId], MON_DATA_SANITY_HAS_SPECIES)) - SetBoxMonAt(boxId, boxPosition, &sMultiMove->boxMons[monArrayId]); - boxPosition++; - monArrayId++; - } - } -} - -static void MultiMove_ResetBg(void) -{ - ChangeBgX(0, 0, BG_COORD_SET); - ChangeBgY(0, 0, BG_COORD_SET); - SetBgAttribute(0, BG_ATTR_PALETTEMODE, 0); - ClearGpuRegBits(REG_OFFSET_BG0CNT, BGCNT_256COLOR); - FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 32, 32); - CopyBgTilemapBufferToVram(0); -} - -u8 MultiMove_GetOriginPosition(void) -{ - return (IN_BOX_COLUMNS * sMultiMove->fromRow) + sMultiMove->fromColumn; -} - -bool8 MultiMove_CanPlaceSelection(void) -{ - s32 i, j; - s32 columnCount = sMultiMove->minColumn + sMultiMove->columnsTotal; - s32 rowCount = sMultiMove->minRow + sMultiMove->rowsTotal; - u8 monArrayId = 0; - - for (i = sMultiMove->minRow; i < rowCount; i++) - { - u8 boxPosition = (IN_BOX_COLUMNS * i) + sMultiMove->minColumn; - for (j = sMultiMove->minColumn; j < columnCount; j++) - { - if (GetBoxMonData(&sMultiMove->boxMons[monArrayId], MON_DATA_SANITY_HAS_SPECIES) - && GetCurrentBoxMonData(boxPosition, MON_DATA_SANITY_HAS_SPECIES)) - return FALSE; - - monArrayId++; - boxPosition++; - } - } - - return TRUE; -} diff --git a/src/pokemon_storage_system_5.c b/src/pokemon_storage_system_data.c similarity index 92% rename from src/pokemon_storage_system_5.c rename to src/pokemon_storage_system_data.c index d3373f247..dfe34330a 100644 --- a/src/pokemon_storage_system_5.c +++ b/src/pokemon_storage_system_data.c @@ -3,11 +3,14 @@ #include "data.h" #include "item.h" #include "mail_data.h" +#include "menu.h" +#include "new_menu_helpers.h" #include "pokemon_storage_system_internal.h" #include "pokemon_summary_screen.h" #include "strings.h" #include "constants/items.h" #include "constants/moves.h" +#include "constants/songs.h" static EWRAM_DATA struct Pokemon sMonBeingCarried = {}; static EWRAM_DATA s8 sCursorArea = 0; @@ -2020,3 +2023,143 @@ void TryShowItemAtCursor(void) if (sCursorArea == CURSOR_AREA_IN_BOX) TryLoadItemIconAtPos(CURSOR_AREA_IN_BOX, sCursorPosition); } + +static const u8 *const sMenuTexts[] = { + [MENU_TEXT_CANCEL] = gPCText_Cancel, + [MENU_TEXT_STORE] = gPCText_Store, + [MENU_TEXT_WITHDRAW] = gPCText_Withdraw, + [MENU_TEXT_MOVE] = gPCText_Move, + [MENU_TEXT_SHIFT] = gPCText_Shift, + [MENU_TEXT_PLACE] = gPCText_Place, + [MENU_TEXT_SUMMARY] = gPCText_Summary, + [MENU_TEXT_RELEASE] = gPCText_Release, + [MENU_TEXT_MARK] = gPCText_Mark, + [MENU_TEXT_JUMP] = gPCText_Jump, + [MENU_TEXT_WALLPAPER] = gPCText_Wallpaper, + [MENU_TEXT_NAME] = gPCText_Name, + [MENU_TEXT_TAKE] = gPCText_Take, + [MENU_TEXT_GIVE] = gPCText_Give, + [MENU_TEXT_GIVE2] = gPCText_Give, + [MENU_TEXT_SWITCH] = gPCText_Switch, + [MENU_TEXT_BAG] = gPCText_Bag, + [MENU_TEXT_INFO] = gPCText_Info, + [MENU_TEXT_SCENERY_1] = gPCText_Scenery1, + [MENU_TEXT_SCENERY_2] = gPCText_Scenery2, + [MENU_TEXT_SCENERY_3] = gPCText_Scenery3, + [MENU_TEXT_ETCETERA] = gPCText_Etcetera, + [MENU_TEXT_FOREST] = gPCText_Forest, + [MENU_TEXT_CITY] = gPCText_City, + [MENU_TEXT_DESERT] = gPCText_Desert, + [MENU_TEXT_SAVANNA] = gPCText_Savanna, + [MENU_TEXT_CRAG] = gPCText_Crag, + [MENU_TEXT_VOLCANO] = gPCText_Volcano, + [MENU_TEXT_SNOW] = gPCText_Snow, + [MENU_TEXT_CAVE] = gPCText_Cave, + [MENU_TEXT_BEACH] = gPCText_Beach, + [MENU_TEXT_SEAFLOOR] = gPCText_Seafloor, + [MENU_TEXT_RIVER] = gPCText_River, + [MENU_TEXT_SKY] = gPCText_Sky, + [MENU_TEXT_POLKADOT] = gPCText_PolkaDot, + [MENU_TEXT_POKECENTER] = gPCText_Pokecenter, + [MENU_TEXT_MACHINE] = gPCText_Machine, + [MENU_TEXT_SIMPLE] = gPCText_Simple, +}; + +void InitMenu(void) +{ + gStorage->menuItemsCount = 0; + gStorage->menuWidth = 0; + gStorage->menuWindow.bg = 0; + gStorage->menuWindow.paletteNum = 15; + gStorage->menuWindow.baseBlock = 92; +} + +void SetMenuText(u8 textId) +{ + if (gStorage->menuItemsCount < ARRAY_COUNT(gStorage->menuItems)) + { + u8 len; + struct StorageMenu *menu = &gStorage->menuItems[gStorage->menuItemsCount]; + + menu->text = sMenuTexts[textId]; + menu->textId = textId; + len = StringLength(menu->text); + if (len > gStorage->menuWidth) + gStorage->menuWidth = len; + + gStorage->menuItemsCount++; + } +} + +s8 GetMenuItemTextId(u8 menuIndex) +{ + if (menuIndex >= gStorage->menuItemsCount) + return MENU_B_PRESSED; + else + return gStorage->menuItems[menuIndex].textId; +} + +void AddMenu(void) +{ + gStorage->menuWindow.width = gStorage->menuWidth + 2; + gStorage->menuWindow.height = 2 * gStorage->menuItemsCount; + gStorage->menuWindow.tilemapLeft = 29 - gStorage->menuWindow.width; + gStorage->menuWindow.tilemapTop = 15 - gStorage->menuWindow.height; + gStorage->menuWindowId = AddWindow(&gStorage->menuWindow); + ClearWindowTilemap(gStorage->menuWindowId); + DrawStdFrameWithCustomTileAndPalette(gStorage->menuWindowId, FALSE, 11, 14); + PrintTextArray(gStorage->menuWindowId, FONT_1, 8, 2, 16, gStorage->menuItemsCount, (void *)gStorage->menuItems); + Menu_InitCursor(gStorage->menuWindowId, FONT_1, 0, 2, 16, gStorage->menuItemsCount, 0); + ScheduleBgCopyTilemapToVram(0); + gStorage->menuUnusedField = 0; +} + +bool8 IsMenuLoading(void) +{ + // Possibly stubbed out debug code? + return FALSE; +} + +s16 HandleMenuInput(void) +{ + s32 input = MENU_NOTHING_CHOSEN; + + do + { + if (JOY_NEW(A_BUTTON)) + { + input = Menu_GetCursorPos(); + break; + } + else if (JOY_NEW(B_BUTTON)) + { + PlaySE(SE_SELECT); + input = MENU_B_PRESSED; + } + + if (JOY_NEW(DPAD_UP)) + { + PlaySE(SE_SELECT); + Menu_MoveCursor(-1); + } + else if (JOY_NEW(DPAD_DOWN)) + { + PlaySE(SE_SELECT); + Menu_MoveCursor(1); + } + } while (FALSE); + + if (input != MENU_NOTHING_CHOSEN) + RemoveMenu(); + + if (input >= 0) + input = gStorage->menuItems[input].textId; + + return input; +} + +void RemoveMenu(void) +{ + ClearStdWindowAndFrameToTransparent(gStorage->menuWindowId, TRUE); + RemoveWindow(gStorage->menuWindowId); +} diff --git a/src/pokemon_storage_system_4.c b/src/pokemon_storage_system_graphics.c similarity index 100% rename from src/pokemon_storage_system_4.c rename to src/pokemon_storage_system_graphics.c diff --git a/src/pokemon_storage_system_2.c b/src/pokemon_storage_system_menu.c similarity index 100% rename from src/pokemon_storage_system_2.c rename to src/pokemon_storage_system_menu.c diff --git a/src/pokemon_storage_system_8.c b/src/pokemon_storage_system_misc.c similarity index 61% rename from src/pokemon_storage_system_8.c rename to src/pokemon_storage_system_misc.c index 644aad1aa..2cfa98152 100644 --- a/src/pokemon_storage_system_8.c +++ b/src/pokemon_storage_system_misc.c @@ -1,3 +1,4 @@ +#include // to declare abs #include "global.h" #include "gflib.h" #include "decompress.h" @@ -5,10 +6,572 @@ #include "item_menu_icons.h" #include "menu.h" #include "new_menu_helpers.h" +#include "pokemon_icon.h" #include "pokemon_storage_system_internal.h" +#include "text_window.h" #include "trig.h" #include "constants/items.h" +static EWRAM_DATA struct +{ + u8 funcId; + u8 state; + u8 fromColumn; + u8 fromRow; + u8 toColumn; + u8 toRow; + u8 cursorColumn; + u8 cursorRow; + u8 minColumn; + u8 minRow; + u8 columnsTotal; + u8 rowsTotal; + u16 bgX; + u16 bgY; + u16 bgMoveSteps; + struct BoxPokemon boxMons[IN_BOX_COUNT]; +} *sMultiMove = NULL; + +static bool8 MultiMove_Function_Start(void); +static bool8 MultiMove_Function_Single(void); +static bool8 MultiMove_Function_ChangeSelection(void); +static bool8 MultiMove_Function_GrabSelection(void); +static bool8 MultiMove_Function_MoveMons(void); +static bool8 MultiMove_Function_PlaceMons(void); +static void MultiMove_UpdateSelectedIcons(void); +static void MultiMove_SelectColumn(u8 column, u8 minRow, u8 maxRow); +static void MultiMove_SelectRow(u8 row, u8 minColumn, u8 maxColumn); +static void MultiMove_DeselectColumn(u8 arg0, u8 minRow, u8 maxRow); +static void MultiMove_DeselectRow(u8 row, u8 minColumn, u8 maxColumn); +static void MultiMove_SetIconToBg(u8 x, u8 y); +static void MultiMove_ClearIconFromBg(u8 x, u8 y); +static void MultiMove_InitBg(u16 bgX, u16 bgY, u16 duration); +static u8 MultiMove_UpdateBg(void); +static void MultiMove_GetMonsFromSelection(void); +static void MultiMove_RemoveMonsFromBox(void); +static void MultiMove_CreatePlacedMonIcons(void); +static void MultiMove_SetPlacedMonData(void); +static void MultiMove_ResetBg(void); + +static const struct WindowTemplate sWindowTemplate_MultiMove = { + .bg = 0, + .tilemapLeft = 10, + .tilemapTop = 3, + .width = 20, + .height = 18, + .paletteNum = 9, + .baseBlock = 0x00a +}; + +bool8 MultiMove_Init(void) +{ + sMultiMove = Alloc(sizeof(*sMultiMove)); + if (sMultiMove != NULL) + { + gStorage->multiMoveWindowId = AddWindow8Bit(&sWindowTemplate_MultiMove); + if (gStorage->multiMoveWindowId != WINDOW_NONE) + { + FillWindowPixelBuffer(gStorage->multiMoveWindowId, PIXEL_FILL(0)); + return TRUE; + } + } + + return FALSE; +} + +void MultiMove_Free(void) +{ + if (sMultiMove != NULL) + Free(sMultiMove); +} + +void MultiMove_SetFunction(u8 funcId) +{ + sMultiMove->funcId = funcId; + sMultiMove->state = 0; +} + +bool8 MultiMove_RunFunction(void) +{ + switch (sMultiMove->funcId) + { + case MULTIMOVE_START: + return MultiMove_Function_Start(); + case MULTIMOVE_SINGLE: + return MultiMove_Function_Single(); + case MULTIMOVE_CHANGE_SELECTION: + return MultiMove_Function_ChangeSelection(); + case MULTIMOVE_GRAB_SELECTION: + return MultiMove_Function_GrabSelection(); + case MULTIMOVE_MOVE_MONS: + return MultiMove_Function_MoveMons(); + case MULTIMOVE_PLACE_MONS: + return MultiMove_Function_PlaceMons(); + } + + return FALSE; +} + +static bool8 MultiMove_Function_Start(void) +{ + switch (sMultiMove->state) + { + case 0: + HideBg(0); + LoadMonIconPalettesAt(0x80); + sMultiMove->state++; + break; + case 1: + GetCursorBoxColumnAndRow(&sMultiMove->fromColumn, &sMultiMove->fromRow); + sMultiMove->toColumn = sMultiMove->fromColumn; + sMultiMove->toRow = sMultiMove->fromRow; + ChangeBgX(0, -1024, BG_COORD_SET); + ChangeBgY(0, -1024, BG_COORD_SET); + FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 32, 32); + FillWindowPixelBuffer8Bit(gStorage->multiMoveWindowId, PIXEL_FILL(0)); + MultiMove_SetIconToBg(sMultiMove->fromColumn, sMultiMove->fromRow); + SetBgAttribute(0, BG_ATTR_PALETTEMODE, 1); + PutWindowTilemap(gStorage->multiMoveWindowId); + CopyWindowToVram8Bit(gStorage->multiMoveWindowId, COPYWIN_FULL); + BlendPalettes(0x3F00, 8, RGB_WHITE); + StartCursorAnim(CURSOR_ANIM_OPEN); + SetGpuRegBits(REG_OFFSET_BG0CNT, BGCNT_256COLOR); + sMultiMove->state++; + break; + case 2: + if (!IsDma3ManagerBusyWithBgCopy()) + { + ShowBg(0); + return FALSE; + } + break; + } + + return TRUE; +} + +static bool8 MultiMove_Function_Single(void) +{ + switch (sMultiMove->state) + { + case 0: + HideBg(0); + sMultiMove->state++; + break; + case 1: + MultiMove_ResetBg(); + StartCursorAnim(CURSOR_ANIM_BOUNCE); + sMultiMove->state++; + break; + case 2: + if (!IsDma3ManagerBusyWithBgCopy()) + { + SetCursorPriorityTo1(); + LoadPalette(stdpal_get(3), 0xD0, 0x20); + ShowBg(0); + return FALSE; + } + break; + } + + return TRUE; +} + +static bool8 MultiMove_Function_ChangeSelection(void) +{ + switch (sMultiMove->state) + { + case 0: + if (!UpdateCursorPos()) + { + GetCursorBoxColumnAndRow(&sMultiMove->cursorColumn, &sMultiMove->cursorRow); + MultiMove_UpdateSelectedIcons(); + sMultiMove->toColumn = sMultiMove->cursorColumn; + sMultiMove->toRow = sMultiMove->cursorRow; + CopyWindowToVram8Bit(gStorage->multiMoveWindowId, COPYWIN_GFX); + sMultiMove->state++; + } + break; + case 1: + return IsDma3ManagerBusyWithBgCopy(); + } + + return TRUE; +} + +static bool8 MultiMove_Function_GrabSelection(void) +{ + u8 movingBg, movingMon; + + switch (sMultiMove->state) + { + case 0: + MultiMove_GetMonsFromSelection(); + MultiMove_RemoveMonsFromBox(); + InitMultiMonPlaceChange(FALSE); + sMultiMove->state++; + break; + case 1: + if (!DoMonPlaceChange()) + { + StartCursorAnim(CURSOR_ANIM_FIST); + MultiMove_InitBg(0, 256, 8); + InitMultiMonPlaceChange(TRUE); + sMultiMove->state++; + } + break; + case 2: + movingBg = MultiMove_UpdateBg(); + movingMon = DoMonPlaceChange(); + if (!movingBg && !movingMon) + return FALSE; + break; + } + + return TRUE; +} + +static bool8 MultiMove_Function_MoveMons(void) +{ + u8 movingCursor = UpdateCursorPos(); + u8 movingBg = MultiMove_UpdateBg(); + + if (!movingCursor && !movingBg) + return FALSE; + else + return TRUE; +} + +static bool8 MultiMove_Function_PlaceMons(void) +{ + switch (sMultiMove->state) + { + case 0: + MultiMove_SetPlacedMonData(); + MultiMove_InitBg(0, -256, 8); + InitMultiMonPlaceChange(FALSE); + sMultiMove->state++; + break; + case 1: + if (!DoMonPlaceChange() && !MultiMove_UpdateBg()) + { + MultiMove_CreatePlacedMonIcons(); + StartCursorAnim(CURSOR_ANIM_OPEN); + InitMultiMonPlaceChange(TRUE); + HideBg(0); + sMultiMove->state++; + } + break; + case 2: + if (!DoMonPlaceChange()) + { + StartCursorAnim(CURSOR_ANIM_BOUNCE); + MultiMove_ResetBg(); + sMultiMove->state++; + } + break; + case 3: + if (!IsDma3ManagerBusyWithBgCopy()) + { + LoadPalette(stdpal_get(3), 0xD0, 0x20); + SetCursorPriorityTo1(); + ShowBg(0); + return FALSE; + } + break; + } + + return TRUE; +} + +bool8 MultiMove_TryMoveGroup(u8 dir) +{ + switch (dir) + { + case 0: // up + if (sMultiMove->minRow == 0) + return FALSE; + sMultiMove->minRow--; + MultiMove_InitBg(0, 1024, 6); + break; + case 1: // down + if (sMultiMove->minRow + sMultiMove->rowsTotal >= 5) + return FALSE; + sMultiMove->minRow++; + MultiMove_InitBg(0, -1024, 6); + break; + case 2: // left + if (sMultiMove->minColumn == 0) + return FALSE; + sMultiMove->minColumn--; + MultiMove_InitBg(1024, 0, 6); + break; + case 3: // right + if (sMultiMove->minColumn + sMultiMove->columnsTotal > 5) + return FALSE; + sMultiMove->minColumn++; + MultiMove_InitBg(-1024, 0, 6); + break; + } + + return TRUE; +} + +static void MultiMove_UpdateSelectedIcons(void) +{ + s16 columnChange = (abs(sMultiMove->fromColumn - sMultiMove->cursorColumn)) - (abs(sMultiMove->fromColumn - sMultiMove->toColumn)); + s16 rowChange = (abs(sMultiMove->fromRow - sMultiMove->cursorRow)) - (abs(sMultiMove->fromRow - sMultiMove->toRow)); + + if (columnChange > 0) + MultiMove_SelectColumn(sMultiMove->cursorColumn, sMultiMove->fromRow, sMultiMove->toRow); + + if (columnChange < 0) + { + MultiMove_DeselectColumn(sMultiMove->toColumn, sMultiMove->fromRow, sMultiMove->toRow); + MultiMove_SelectColumn(sMultiMove->cursorColumn, sMultiMove->fromRow, sMultiMove->toRow); + } + + if (rowChange > 0) + MultiMove_SelectRow(sMultiMove->cursorRow, sMultiMove->fromColumn, sMultiMove->toColumn); + + if (rowChange < 0) + { + MultiMove_DeselectRow(sMultiMove->toRow, sMultiMove->fromColumn, sMultiMove->toColumn); + MultiMove_SelectRow(sMultiMove->cursorRow, sMultiMove->fromColumn, sMultiMove->toColumn); + } +} + +static void MultiMove_SelectColumn(u8 column, u8 minRow, u8 maxRow) +{ + u8 tmp = minRow; + + if (minRow > maxRow) + { + minRow = maxRow; + maxRow = tmp; + } + + while (minRow <= maxRow) + MultiMove_SetIconToBg(column, minRow++); +} + +static void MultiMove_SelectRow(u8 row, u8 minColumn, u8 maxColumn) +{ + u8 tmp = minColumn; + + if (minColumn > maxColumn) + { + minColumn = maxColumn; + maxColumn = tmp; + } + + while (minColumn <= maxColumn) + MultiMove_SetIconToBg(minColumn++, row); +} + +static void MultiMove_DeselectColumn(u8 column, u8 minRow, u8 maxRow) +{ + u8 tmp = minRow; + + if (minRow > maxRow) + { + minRow = maxRow; + maxRow = tmp; + } + + while (minRow <= maxRow) + MultiMove_ClearIconFromBg(column, minRow++); +} + +static void MultiMove_DeselectRow(u8 row, u8 minColumn, u8 maxColumn) +{ + u8 tmp = minColumn; + + if (minColumn > maxColumn) + { + minColumn = maxColumn; + maxColumn = tmp; + } + + while (minColumn <= maxColumn) + MultiMove_ClearIconFromBg(minColumn++, row); +} + +static void MultiMove_SetIconToBg(u8 x, u8 y) +{ + u8 position = x + (IN_BOX_COLUMNS * y); + u16 species = GetCurrentBoxMonData(position, MON_DATA_SPECIES2); + u32 personality = GetCurrentBoxMonData(position, MON_DATA_PERSONALITY); + + if (species != SPECIES_NONE) + { + const u8 *iconGfx = GetMonIconPtr(species, personality, 1); + u8 palNum = GetValidMonIconPalIndex(species) + 8; + BlitBitmapRectToWindow4BitTo8Bit(gStorage->multiMoveWindowId, iconGfx, 0, 0, 32, 32, 24 * x, 24 * y, 32, 32, palNum); + } +} + +static void MultiMove_ClearIconFromBg(u8 x, u8 y) +{ + u8 position = x + (IN_BOX_COLUMNS * y); + u16 species = GetCurrentBoxMonData(position, MON_DATA_SPECIES2); + + if (species != SPECIES_NONE) + FillWindowPixelRect8Bit(gStorage->multiMoveWindowId, PIXEL_FILL(0), 24 * x, 24 * y, 32, 32); +} + +static void MultiMove_InitBg(u16 bgX, u16 bgY, u16 duration) +{ + sMultiMove->bgX = bgX; + sMultiMove->bgY = bgY; + sMultiMove->bgMoveSteps = duration; +} + +static u8 MultiMove_UpdateBg(void) +{ + if (sMultiMove->bgMoveSteps != 0) + { + ChangeBgX(0, sMultiMove->bgX, BG_COORD_ADD); + ChangeBgY(0, sMultiMove->bgY, BG_COORD_ADD); + sMultiMove->bgMoveSteps--; + } + + return sMultiMove->bgMoveSteps; +} + +static void MultiMove_GetMonsFromSelection(void) +{ + s32 i, j; + s32 columnCount, rowCount; + u8 boxId; + u8 monArrayId; + + sMultiMove->minColumn = min(sMultiMove->fromColumn, sMultiMove->toColumn); + sMultiMove->minRow = min(sMultiMove->fromRow, sMultiMove->toRow); + sMultiMove->columnsTotal = abs(sMultiMove->fromColumn - sMultiMove->toColumn) + 1; + sMultiMove->rowsTotal = abs(sMultiMove->fromRow - sMultiMove->toRow) + 1; + boxId = StorageGetCurrentBox(); + monArrayId = 0; + columnCount = sMultiMove->minColumn + sMultiMove->columnsTotal; + rowCount = sMultiMove->minRow + sMultiMove->rowsTotal; + for (i = sMultiMove->minRow; i < rowCount; i++) + { + u8 boxPosition = (IN_BOX_COLUMNS * i) + sMultiMove->minColumn; + for (j = sMultiMove->minColumn; j < columnCount; j++) + { + struct BoxPokemon *boxMon = GetBoxedMonPtr(boxId, boxPosition); + // UB: possible null dereference +#ifdef UBFIX + if (boxMon != NULL) + sMultiMove->boxMons[monArrayId] = *boxMon; +#else + sMultiMove->boxMons[monArrayId] = *boxMon; +#endif + monArrayId++; + boxPosition++; + } + } +} + +static void MultiMove_RemoveMonsFromBox(void) +{ + s32 i, j; + s32 columnCount = sMultiMove->minColumn + sMultiMove->columnsTotal; + s32 rowCount = sMultiMove->minRow + sMultiMove->rowsTotal; + u8 boxId = StorageGetCurrentBox(); + + for (i = sMultiMove->minRow; i < rowCount; i++) + { + u8 boxPosition = (IN_BOX_COLUMNS * i) + sMultiMove->minColumn; + for (j = sMultiMove->minColumn; j < columnCount; j++) + { + DestroyBoxMonIconAtPosition(boxPosition); + ZeroBoxMonAt(boxId, boxPosition); + boxPosition++; + } + } +} + +static void MultiMove_CreatePlacedMonIcons(void) +{ + s32 i, j; + s32 columnCount = sMultiMove->minColumn + sMultiMove->columnsTotal; + s32 rowCount = sMultiMove->minRow + sMultiMove->rowsTotal; + u8 monArrayId = 0; + + for (i = sMultiMove->minRow; i < rowCount; i++) + { + u8 boxPosition = (IN_BOX_COLUMNS * i) + sMultiMove->minColumn; + for (j = sMultiMove->minColumn; j < columnCount; j++) + { + if (GetBoxMonData(&sMultiMove->boxMons[monArrayId], MON_DATA_SANITY_HAS_SPECIES)) + CreateBoxMonIconAtPos(boxPosition); + monArrayId++; + boxPosition++; + } + } +} + +static void MultiMove_SetPlacedMonData(void) +{ + s32 i, j; + s32 columnCount = sMultiMove->minColumn + sMultiMove->columnsTotal; + s32 rowCount = sMultiMove->minRow + sMultiMove->rowsTotal; + u8 boxId = StorageGetCurrentBox(); + u8 monArrayId = 0; + + for (i = sMultiMove->minRow; i < rowCount; i++) + { + u8 boxPosition = (IN_BOX_COLUMNS * i) + sMultiMove->minColumn; + for (j = sMultiMove->minColumn; j < columnCount; j++) + { + if (GetBoxMonData(&sMultiMove->boxMons[monArrayId], MON_DATA_SANITY_HAS_SPECIES)) + SetBoxMonAt(boxId, boxPosition, &sMultiMove->boxMons[monArrayId]); + boxPosition++; + monArrayId++; + } + } +} + +static void MultiMove_ResetBg(void) +{ + ChangeBgX(0, 0, BG_COORD_SET); + ChangeBgY(0, 0, BG_COORD_SET); + SetBgAttribute(0, BG_ATTR_PALETTEMODE, 0); + ClearGpuRegBits(REG_OFFSET_BG0CNT, BGCNT_256COLOR); + FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 32, 32); + CopyBgTilemapBufferToVram(0); +} + +u8 MultiMove_GetOriginPosition(void) +{ + return (IN_BOX_COLUMNS * sMultiMove->fromRow) + sMultiMove->fromColumn; +} + +bool8 MultiMove_CanPlaceSelection(void) +{ + s32 i, j; + s32 columnCount = sMultiMove->minColumn + sMultiMove->columnsTotal; + s32 rowCount = sMultiMove->minRow + sMultiMove->rowsTotal; + u8 monArrayId = 0; + + for (i = sMultiMove->minRow; i < rowCount; i++) + { + u8 boxPosition = (IN_BOX_COLUMNS * i) + sMultiMove->minColumn; + for (j = sMultiMove->minColumn; j < columnCount; j++) + { + if (GetBoxMonData(&sMultiMove->boxMons[monArrayId], MON_DATA_SANITY_HAS_SPECIES) + && GetCurrentBoxMonData(boxPosition, MON_DATA_SANITY_HAS_SPECIES)) + return FALSE; + + monArrayId++; + boxPosition++; + } + } + + return TRUE; +} + // IDs for the item icon sprite callbacks enum { ITEM_CB_WAIT_ANIM, diff --git a/src/pokemon_storage_system_3.c b/src/pokemon_storage_system_tasks.c similarity index 99% rename from src/pokemon_storage_system_3.c rename to src/pokemon_storage_system_tasks.c index b7b4eaf4f..bad54118e 100644 --- a/src/pokemon_storage_system_3.c +++ b/src/pokemon_storage_system_tasks.c @@ -1,6 +1,5 @@ #include "global.h" #include "gflib.h" -#include "box_party_pokemon_dropdown.h" #include "data.h" #include "decompress.h" #include "dynamic_placeholder_text_util.h" @@ -21,6 +20,7 @@ #include "strings.h" #include "task.h" #include "text_window.h" +#include "tilemap_util.h" #include "trig.h" #include "constants/items.h" #include "constants/help_system.h" diff --git a/src/box_party_pokemon_dropdown.c b/src/tilemap_util.c similarity index 99% rename from src/box_party_pokemon_dropdown.c rename to src/tilemap_util.c index f4cf05bd8..fe2f34866 100644 --- a/src/box_party_pokemon_dropdown.c +++ b/src/tilemap_util.c @@ -1,6 +1,6 @@ #include "global.h" #include "bg.h" -#include "box_party_pokemon_dropdown.h" +#include "tilemap_util.h" #include "malloc.h" // Handles 3 particular tilemaps ("PKMN Data" text, party menu, close box diff --git a/sym_bss.txt b/sym_bss.txt index 63a52555c..9f50fd0a7 100644 --- a/sym_bss.txt +++ b/sym_bss.txt @@ -16,7 +16,7 @@ .include "src/tileset_anims.o" .include "src/sound.o" .include "src/field_effect.o" - .include "src/pokemon_storage_system_8.o" + .include "src/pokemon_storage_system_misc.o" .include "src/easy_chat.o" .include "src/link_rfu_2.o" .include "src/link_rfu_3.o" diff --git a/sym_ewram.txt b/sym_ewram.txt index a3766873e..ef48abffa 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -38,11 +38,10 @@ .include "src/scanline_effect.o" .include "src/option_menu.o" .include "src/trainer_card.o" - .include "src/pokemon_storage_system_2.o" - .include "src/pokemon_storage_system_3.o" - .include "src/pokemon_storage_system_5.o" - .include "src/pokemon_storage_system_7.o" - .include "src/pokemon_storage_system_8.o" + .include "src/pokemon_storage_system_menu.o" + .include "src/pokemon_storage_system_tasks.o" + .include "src/pokemon_storage_system_data.o" + .include "src/pokemon_storage_system_misc.o" .include "src/script_movement.o" .include "src/fldeff_cut.o" .include "src/item_menu_icons.o" @@ -84,7 +83,7 @@ .include "src/save_failed_screen.o" .include "src/clear_save_data_screen.o" .include "src/new_menu_helpers.o" - .include "src/box_party_pokemon_dropdown.o" + .include "src/tilemap_util.o" .include "src/map_preview_screen.o" .include "src/link_rfu_2.o" .include "src/link_rfu_3.o"