summaryrefslogtreecommitdiff
path: root/src/battle/battle_party_menu.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/battle/battle_party_menu.c')
-rw-r--r--src/battle/battle_party_menu.c731
1 files changed, 0 insertions, 731 deletions
diff --git a/src/battle/battle_party_menu.c b/src/battle/battle_party_menu.c
deleted file mode 100644
index e758b7957..000000000
--- a/src/battle/battle_party_menu.c
+++ /dev/null
@@ -1,731 +0,0 @@
-#include "global.h"
-#include "battle_party_menu.h"
-#include "battle.h"
-#include "item_menu.h"
-#include "item_use.h"
-#include "main.h"
-#include "menu.h"
-#include "menu_helpers.h"
-#include "palette.h"
-#include "party_menu.h"
-#include "pokemon.h"
-#include "pokemon_summary_screen.h"
-#include "rom_8077ABC.h"
-#include "rom_8094928.h"
-#include "constants/songs.h"
-#include "sound.h"
-#include "string_util.h"
-#include "strings.h"
-#include "task.h"
-#include "text.h"
-#include "ewram.h"
-
-extern u8 sub_806BD58(u8, u8);
-extern void PartyMenuPrintMonsLevelOrStatus(void);
-extern void nullsub_13(void);
-extern void sub_802E414(void);
-extern void sub_80A6DCC(void);
-extern u8 *sub_8040D08();
-extern void sub_8040B8C(void);
-extern void nullsub_14();
-extern u8 sub_803FBBC(void);
-
-extern u8 gPlayerPartyCount;
-extern u8 gBattlersCount;
-extern u16 gBattlerPartyIndexes[];
-extern u8 gBankInMenu;
-extern u8 gUnknown_0202E8F4;
-extern u8 gUnknown_0202E8F5;
-extern u8 gUnknown_0202E8F6;
-extern u8 gUnknown_02038470[3];
-extern u8 gUnknown_02038473;
-extern u8 gUnknown_020384F0;
-extern void (*gPokemonItemUseCallback)(); //don't know types yet
-extern struct PokemonStorage gPokemonStorage;
-extern void nullsub_14();
-
-void sub_8094C98(u8, u8);
-u8 pokemon_order_func(u8);
-
-static void sub_8094998(u8[3], u8);
-static void sub_8094A74(u8[3], u8, u32);
-static void sub_8094D60(void);
-static void Task_809527C(u8);
-static void Task_80952B4(u8);
-static void Task_80952E4(u8);
-static void Task_8095330(u8);
-static void Task_809538C(void);
-static void Task_HandlePopupMenuInput(u8);
-static void Task_BattlePartyMenuSummary(u8 taskId);
-static void Task_BattlePartyMenuShift(u8 taskId);
-static void Task_BattlePartyMenuCancel(u8 taskId);
-
-static const struct MenuAction2 sBattlePartyMenuActions[] =
-{
- {OtherText_Summary, Task_BattlePartyMenuSummary},
- {gOtherText_CancelNoTerminator, Task_BattlePartyMenuCancel},
- {OtherText_Shift, Task_BattlePartyMenuShift},
- {OtherText_SendOut, Task_BattlePartyMenuShift},
-};
-static const u8 Unknown_83B5FEC[] = {2, 0, 1}; //SHIFT, SUMMARY, CANCEL
-static const u8 Unknown_83B5FEF[] = {3, 0, 1}; //SEND OUT, SUMMARY, CANCEL
-static const u8 Unknown_83B5FF2[] = {0, 1}; //SUMMARY, CANCEL
-static const struct PartyPopupMenu sBattlePartyPopupMenus[] =
-{
- {ARRAY_COUNT(Unknown_83B5FEC), 9, Unknown_83B5FEC},
- {ARRAY_COUNT(Unknown_83B5FEF), 9, Unknown_83B5FEF},
- {ARRAY_COUNT(Unknown_83B5FF2), 9, Unknown_83B5FF2},
-};
-
-void unref_sub_8094928(struct PokemonStorage *ptr)
-{
- *ptr = gPokemonStorage;
-}
-
-void unref_sub_8094940(struct PokemonStorage *ptr)
-{
- gPokemonStorage = *ptr;
-}
-
-void sub_8094958(void)
-{
- sub_8094998(gUnknown_02038470, sub_803FBBC());
-}
-
-void sub_8094978(u8 arg1, u8 arg2)
-{
- sub_8094A74((UNK_201606C_ARRAY) + arg1 * 3, arg2, arg1);
-}
-
-static void sub_8094998(u8 arg[3], u8 player_number)
-{
- int i;
- u32 pos;
- u8 temp[6];
- if (IsLinkDoubleBattle() == TRUE)
- {
- if (player_number)
- {
- *arg = 0x30;
- arg[1] = 0x45;
- arg[2] = 0x12;
- }
- else
- {
- *arg = 0x03;
- arg[1] = 0x12;
- arg[2] = 0x45;
- }
- }
- else
- {
- if (!IsDoubleBattle())
- {
- pos = 1;
- *temp = gBattlerPartyIndexes[GetBattlerAtPosition(0)];
- for (i = 0; i <= 5; i++)
- if (i != *temp)
- temp[pos++] = i;
- }
- else
- {
- pos = 2;
- *temp = gBattlerPartyIndexes[GetBattlerAtPosition(0)];
- temp[1] = gBattlerPartyIndexes[GetBattlerAtPosition(2)];
- for (i = 0; i <= 5; i++)
- if ((i != *temp) && (i != temp[1]))
- temp[pos++] = i;
- }
- for (i = 0; i <= 2; i++)
- arg[i] = (temp[i << 1] << 4) | temp[(i << 1) + 1];
- }
-}
-
-static void sub_8094A74(u8 arg[3], u8 player_number, u32 arg3)
-{
- int i, j;
- u8 temp[6];
- if (!GetBattlerSide(arg3))
- {
- i = GetBattlerAtPosition(0);
- j = GetBattlerAtPosition(2);
- }
- else
- {
- i = GetBattlerAtPosition(1);
- j = GetBattlerAtPosition(3);
- }
- if (IsLinkDoubleBattle() == TRUE)
- {
- if (player_number)
- {
- *arg = 0x30;
- arg[1] = 0x45;
- arg[2] = 0x12;
- }
- else
- {
- *arg = 0x03;
- arg[1] = 0x12;
- arg[2] = 0x45;
- }
- }
- else
- {
- if (!IsDoubleBattle())
- {
- int pos = 1;
- *temp = gBattlerPartyIndexes[i];
- for (i = 0; i <= 5; i++)
- if (i != *temp)
- temp[pos++] = i;
- }
- else
- {
- int pos = 2;
- *temp = gBattlerPartyIndexes[i];
- temp[1] = gBattlerPartyIndexes[j];
- for (i = 0; i <= 5; i++)
- if ((i != *temp) && (i != temp[1]))
- temp[pos++] = i;
- }
- for (i = 0; i <= 2; i++)
- arg[i] = (temp[i << 1] << 4) | temp[(i << 1) + 1];
- }
-}
-
-void sub_8094B6C(u8 a, u8 b, u8 c)
-{
- s32 i;
- s32 j;
- u8 temp[6];
- u8 r3;
- u8 r7 = 0;
-
- if (IsLinkDoubleBattle())
- {
- u8 *arr = &ewram1606Carr(0, a);
-
- for (i = 0, j = 0; i < 3; i++)
- {
- temp[j++] = arr[i] >> 4;
- temp[j++] = arr[i] & 0xF;
- }
- r3 = temp[c];
- for (i = 0; i < 6; i++)
- {
- if (temp[i] == b)
- {
- r7 = temp[i];
- temp[i] = r3;
- break;
- }
- }
- if (i != 6)
- {
- temp[c] = r7;
-
- arr[0] = (temp[0] << 4) | temp[1];
- arr[1] = (temp[2] << 4) | temp[3];
- arr[2] = (temp[4] << 4) | temp[5];
- }
- }
-}
-
-u8 sub_8094C20(u8 monIndex)
-{
- u8 retVal;
- u8 val = monIndex & 1;
-
- monIndex /= 2;
- if (val)
- retVal = gUnknown_02038470[monIndex] & 0xF;
- else
- retVal = gUnknown_02038470[monIndex] >> 4;
- return retVal;
-}
-
-void sub_8094C54(u8 a, u8 b)
-{
- u8 val = a & 1;
-
- a /= 2;
- if (val)
- gUnknown_02038470[a] = (gUnknown_02038470[a] & 0xF0) | b;
- else
- gUnknown_02038470[a] = (gUnknown_02038470[a] & 0xF) | (b << 4);
-}
-
-void sub_8094C98(u8 a, u8 b)
-{
- u8 r4 = sub_8094C20(a);
- u8 r1 = sub_8094C20(b);
-
- sub_8094C54(a, r1);
- sub_8094C54(b, r4);
-}
-
-u8 pokemon_order_func(u8 a)
-{
- u8 i;
- u8 r2;
-
- for (i = 0, r2 = 0; i < 3; i++)
- {
- if ((gUnknown_02038470[i] >> 4) == a)
- return r2;
- r2++;
- if ((gUnknown_02038470[i] & 0xF) == a)
- return r2;
- r2++;
- }
- return 0;
-}
-
-void pokemon_change_order(void)
-{
- u8 i;
-
- memcpy(ewram1B000.unk0, gPlayerParty, sizeof(gPlayerParty));
- for (i = 0; i < 6; i++)
- {
- u8 n = pokemon_order_func(i);
-
- memcpy(&gPlayerParty[n], &ewram1B000.unk0[i], sizeof(struct Pokemon));
- }
-}
-
-static void sub_8094D60(void)
-{
- struct Pokemon temp[6];
- u8 i;
-
- memcpy(temp, gPlayerParty, sizeof(gPlayerParty));
- for (i = 0; i < 6; i++)
- {
- u8 n = sub_8094C20(i);
-
- memcpy(&gPlayerParty[n], &temp[i], sizeof(struct Pokemon));
- }
-}
-
-void unref_sub_8094DB0(void)
-{
- u8 i;
- u8 r4;
-
- for (i = 1; i < 6; i++)
- {
- u8 n = sub_8094C20(i);
-
- if (GetMonData(&gPlayerParty[n], MON_DATA_SPECIES) != 0
- && GetMonData(&gPlayerParty[n], MON_DATA_HP) != 0)
- {
- r4 = sub_8094C20(0);
- sub_8094C98(0, i);
- SwapPokemon(&gPlayerParty[r4], &gPlayerParty[n]);
- break;
- }
- }
-}
-
-void sub_8094E20(u8 a)
-{
- gPaletteFade.bufferTransferDisabled = TRUE;
- gUnknown_02038473 = a;
- nullsub_14();
- pokemon_change_order();
- OpenPartyMenu(PARTY_MENU_TYPE_BATTLE, 0xFF);
-}
-
-void sub_8094E4C(void)
-{
- sub_8094E20(3);
-}
-
-bool8 SetUpBattlePartyMenu(void)
-{
- switch (EWRAM_1B000.setupState)
- //switch (ewram1B000.unk264[0])
- {
- case 0:
- //TODO: try to get rid of this duplicate code
- if (IsLinkDoubleBattle() == TRUE)
- {
- if (EWRAM_1B000.monIndex != 6)
- {
- TryCreatePartyMenuMonIcon(EWRAM_1B000.menuHandlerTaskId, EWRAM_1B000.monIndex, &gPlayerParty[EWRAM_1B000.monIndex]);
- EWRAM_1B000.monIndex++;
- }
- else
- {
- EWRAM_1B000.monIndex = 0;
- EWRAM_1B000.setupState++;
- }
- }
- else
- {
- if (EWRAM_1B000.monIndex < 6)
- {
- TryCreatePartyMenuMonIcon(EWRAM_1B000.menuHandlerTaskId, EWRAM_1B000.monIndex, &gPlayerParty[EWRAM_1B000.monIndex]);
- EWRAM_1B000.monIndex++;
- }
- else
- {
- EWRAM_1B000.monIndex = 0;
- EWRAM_1B000.setupState++;
- }
- }
- break;
- case 1:
- LoadHeldItemIconGraphics();
- EWRAM_1B000.setupState++;
- break;
- case 2:
- CreateHeldItemIcons_806DC34(EWRAM_1B000.menuHandlerTaskId);
- EWRAM_1B000.setupState++;
- break;
- case 3:
- if (sub_806BD58(EWRAM_1B000.menuHandlerTaskId, EWRAM_1B000.monIndex) == 1)
- {
- EWRAM_1B000.monIndex = 0;
- EWRAM_1B000.setupState++;
- }
- else
- EWRAM_1B000.monIndex++;
- break;
- case 4:
- PartyMenuPrintMonsLevelOrStatus();
- EWRAM_1B000.setupState++;
- break;
- case 5:
- PrintPartyMenuMonNicknames();
- EWRAM_1B000.setupState++;
- break;
- case 6:
- PartyMenuTryPrintMonsHP();
- EWRAM_1B000.setupState++;
- break;
- case 7:
- nullsub_13();
- EWRAM_1B000.setupState++;
- break;
- case 8:
- PartyMenuDrawHPBars();
- EWRAM_1B000.setupState++;
- break;
- case 9:
- if (DrawPartyMonBackground(EWRAM_1B000.monIndex) == 1)
- {
- EWRAM_1B000.monIndex = 0;
- EWRAM_1B000.setupState++;
- }
- else
- EWRAM_1B000.monIndex++;
- break;
- case 10:
- if (gUnknown_02038473 == 3)
- {
- if (GetItemEffectType(gSpecialVar_ItemId) == 10)
- ewram1B000.promptTextId = 0xFF;
- else
- ewram1B000.promptTextId = 3;
- }
- return TRUE;
- }
- return FALSE;
-}
-
-static void sub_8095050(u8 a, u8 b)
-{
- if (!GetMonData(&gPlayerParty[b], MON_DATA_IS_EGG))
- {
- if (gUnknown_02038473 == 1)
- {
- gTasks[EWRAM_1B000.menuHandlerTaskId].data[4] = 1;
- gTasks[EWRAM_1B000.menuHandlerTaskId].data[5] = 1;
- }
- else
- {
- gTasks[EWRAM_1B000.menuHandlerTaskId].data[4] = 0;
- gTasks[EWRAM_1B000.menuHandlerTaskId].data[5] = 0;
- }
- }
- else
- {
- gTasks[EWRAM_1B000.menuHandlerTaskId].data[4] = 2;
- gTasks[EWRAM_1B000.menuHandlerTaskId].data[5] = 2;
- }
-
- ShowPartyPopupMenu(gTasks[a].data[4], sBattlePartyPopupMenus, sBattlePartyMenuActions, 0);
-}
-
-void HandleBattlePartyMenu(u8 taskId)
-{
- if (!gPaletteFade.active)
- {
- if (gUnknown_02038473 == 3 && GetItemEffectType(gSpecialVar_ItemId) == 10)
- {
- gPokemonItemUseCallback(taskId, gSpecialVar_ItemId, Task_80952E4);
- return;
- }
-
- switch (HandleDefaultPartyMenuInput(taskId))
- {
- case A_BUTTON:
- if (gUnknown_02038473 == 3)
- {
- if (GetMonData(&gPlayerParty[sub_806CA38(taskId)], MON_DATA_IS_EGG))
- PlaySE(SE_HAZURE);
- else
- {
- sub_806D5A4();
- gPokemonItemUseCallback(taskId, gSpecialVar_ItemId, Task_80952E4);
- }
- }
- else
- {
- PlaySE(SE_SELECT);
- GetMonNickname(&gPlayerParty[sub_806CA38(taskId)], gStringVar1);
- sub_8095050(taskId, sub_806CA38(taskId));
- SetTaskFuncWithFollowupFunc(taskId, Task_HandlePopupMenuInput, HandleBattlePartyMenu);
- }
- break;
- case B_BUTTON:
- if (gUnknown_02038473 == 1)
- PlaySE(SE_HAZURE);
- else
- {
- PlaySE(SE_SELECT);
- if (gUnknown_02038473 == 3)
- {
- gUnknown_0202E8F4 = 0;
- gTasks[taskId].func = Task_80952E4;
- }
- else
- {
- gUnknown_0202E8F4 = 0;
- gTasks[taskId].func = Task_809527C;
- }
- }
- break;
- }
- }
-}
-
-static void Task_809527C(u8 taskId)
-{
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
- gTasks[taskId].func = Task_80952B4;
-}
-
-static void Task_80952B4(u8 taskId)
-{
- if (!gPaletteFade.active)
- {
- sub_8094D60();
- DestroyTask(taskId);
- SetMainCallback2(sub_802E414);
- }
-}
-
-static void Task_80952E4(u8 taskId)
-{
- if (gUnknown_0202E8F4 != 0)
- Task_809527C(taskId);
- else
- {
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
- gTasks[taskId].func = Task_8095330;
- }
-}
-
-static void Task_8095330(u8 taskId)
-{
- if (!gPaletteFade.active)
- {
- sub_8094D60();
- DestroyTask(taskId);
- sub_80A6DCC();
- }
-}
-
-static void Task_809535C(void)
-{
- gPaletteFade.bufferTransferDisabled = TRUE;
- SetPartyMenuSettings(PARTY_MENU_TYPE_BATTLE, 0xFF, HandleBattlePartyMenu, 5);
- SetMainCallback2(Task_809538C);
-}
-
-static void Task_809538C(void)
-{
- do
- {
- if (InitPartyMenu() == TRUE)
- {
- sub_806C994(EWRAM_1B000.menuHandlerTaskId, gUnknown_020384F0);
- ChangePartyMenuSelection(EWRAM_1B000.menuHandlerTaskId, 0);
- GetMonNickname(&gPlayerParty[gUnknown_020384F0], gStringVar1);
- sub_8095050(EWRAM_1B000.menuHandlerTaskId, gUnknown_020384F0);
- SetTaskFuncWithFollowupFunc(EWRAM_1B000.menuHandlerTaskId, Task_HandlePopupMenuInput, HandleBattlePartyMenu);
- SetMainCallback2(CB2_PartyMenuMain);
- return;
- }
- } while (sub_80F9344() != 1);
-}
-
-static void Task_HandlePopupMenuInput(u8 taskId)
-{
- TaskFunc func;
-
- if (!gPaletteFade.active)
- {
- if (gMain.newAndRepeatedKeys & DPAD_UP)
- {
- PlaySE(SE_SELECT);
- Menu_MoveCursor(-1);
- return;
- }
- if (gMain.newAndRepeatedKeys & DPAD_DOWN)
- {
- PlaySE(SE_SELECT);
- Menu_MoveCursor(1);
- return;
- }
- if (gMain.newKeys & A_BUTTON)
- {
- PlaySE(SE_SELECT);
- func = PartyMenuGetPopupMenuFunc(gTasks[taskId].data[4],
- sBattlePartyPopupMenus,
- sBattlePartyMenuActions,
- Menu_GetCursorPos());
- func(taskId);
- return;
- }
- if (gMain.newKeys & B_BUTTON)
- {
- PlaySE(SE_SELECT);
- Task_BattlePartyMenuCancel(taskId);
- return;
- }
- }
-}
-
-static void Task_80954C0(u8 taskId)
-{
- if (gUnknown_0202E8F6 == 0)
- Task_BattlePartyMenuCancel(taskId);
-}
-
-static void Task_ShowSummaryScreen(u8 taskId)
-{
- u8 partySelection = sub_806CA38(taskId);
-
- if (!gPaletteFade.active)
- {
- DestroyTask(taskId);
- EWRAM_1B000.unk262 = 1;
- ShowPokemonSummaryScreen(gPlayerParty, partySelection, gPlayerPartyCount - 1, Task_809535C, PSS_MODE_NO_MOVE_ORDER_EDIT);
- }
-}
-
-static void Task_BattlePartyMenuSummary(u8 taskId)
-{
- sub_806CA38(taskId); //an unused variable was probably set with this.
- gTasks[taskId].func = Task_ShowSummaryScreen;
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
-}
-
-static void Task_BattlePartyMenuShift(u8 taskId)
-{
- u8 partySelection;
- u8 i;
- u8 r4;
-
- ClosePartyPopupMenu(gTasks[taskId].data[4], sBattlePartyPopupMenus);
- partySelection = sub_806CA38(taskId);
- if (IsLinkDoubleBattle() == TRUE && (partySelection == 1 || partySelection == 4 || partySelection == 5))
- {
- sub_806D5A4();
- StringCopy(gStringVar1, sub_8040D08());
- StringExpandPlaceholders(gStringVar4, gOtherText_CantSwitchPokeWithYours);
- sub_806E834(gStringVar4, 0);
- gTasks[taskId].func = Task_80954C0;
- return;
- }
- if (GetMonData(&gPlayerParty[partySelection], MON_DATA_HP) == 0)
- {
- sub_806D5A4();
- GetMonNickname(&gPlayerParty[partySelection], gStringVar1);
- StringExpandPlaceholders(gStringVar4, gOtherText_NoEnergyLeft);
- sub_806E834(gStringVar4, 0);
- gTasks[taskId].func = Task_80954C0;
- return;
- }
- for (i = 0; i < gBattlersCount; i++)
- {
- if (GetBattlerSide(i) == 0
- && sub_8094C20(partySelection) == gBattlerPartyIndexes[i])
- {
- sub_806D5A4();
- GetMonNickname(&gPlayerParty[partySelection], gStringVar1);
- StringExpandPlaceholders(gStringVar4, gOtherText_AlreadyBattle);
- sub_806E834(gStringVar4, 0);
- gTasks[taskId].func = Task_80954C0;
- return;
- }
- }
- if (GetMonData(&gPlayerParty[partySelection], MON_DATA_IS_EGG))
- {
- sub_806D5A4();
- StringExpandPlaceholders(gStringVar4, gOtherText_EGGCantBattle);
- sub_806E834(gStringVar4, 0);
- gTasks[taskId].func = Task_80954C0;
- return;
- }
- if (sub_8094C20(partySelection) == EWRAM_1609D)
- {
- sub_806D5A4();
- GetMonNickname(&gPlayerParty[partySelection], gStringVar1);
- StringExpandPlaceholders(gStringVar4, gOtherText_AlreadySelected);
- sub_806E834(gStringVar4, 0);
- gTasks[taskId].func = Task_80954C0;
- return;
- }
- if (gUnknown_02038473 == 4)
- {
- sub_806D5A4();
- sub_8040B8C();
- sub_806E834(gStringVar4, 0);
- gTasks[taskId].func = Task_80954C0;
- return;
- }
- if (gUnknown_02038473 == 2)
- {
- u8 r0;
- u8 r4 = gBankInMenu;
-
- sub_806D5A4();
- r0 = pokemon_order_func(gBattlerPartyIndexes[r4]);
- GetMonNickname(&gPlayerParty[r0], gStringVar1);
- StringExpandPlaceholders(gStringVar4, gOtherText_CantBeSwitched);
- sub_806E834(gStringVar4, 0);
- gTasks[taskId].func = Task_80954C0;
- return;
- }
- gUnknown_0202E8F5 = sub_8094C20(partySelection);
- gUnknown_0202E8F4 = 1;
- r4 = pokemon_order_func(gBattlerPartyIndexes[gBankInMenu]);
- sub_8094C98(r4, partySelection);
- SwapPokemon(&gPlayerParty[r4], &gPlayerParty[partySelection]);
- gTasks[taskId].func = Task_809527C;
-}
-
-static void Task_BattlePartyMenuCancel(u8 taskId)
-{
- Menu_DestroyCursor();
- ClosePartyPopupMenu(gTasks[taskId].data[4], sBattlePartyPopupMenus);
- gTasks[taskId].data[4] = gTasks[taskId].data[5];
- PrintPartyMenuPromptText(0, 0);
- SwitchTaskToFollowupFunc(taskId);
-}