summaryrefslogtreecommitdiff
path: root/src/battle/battle_controller_wally.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/battle/battle_controller_wally.c')
-rw-r--r--src/battle/battle_controller_wally.c1605
1 files changed, 0 insertions, 1605 deletions
diff --git a/src/battle/battle_controller_wally.c b/src/battle/battle_controller_wally.c
deleted file mode 100644
index fa8b2a63b..000000000
--- a/src/battle/battle_controller_wally.c
+++ /dev/null
@@ -1,1605 +0,0 @@
-#include "global.h"
-#include "battle.h"
-#include "battle_anim.h"
-#include "battle_anim_813F0F4.h"
-#include "battle_interface.h"
-#include "battle_message.h"
-#include "data2.h"
-#include "link.h"
-#include "main.h"
-#include "menu_cursor.h"
-#include "palette.h"
-#include "pokemon.h"
-#include "rom3.h"
-#include "constants/songs.h"
-#include "sound.h"
-#include "sprite.h"
-#include "item_use.h"
-#include "string_util.h"
-#include "task.h"
-#include "text.h"
-#include "util.h"
-#include "ewram.h"
-
-struct MovePpInfo
-{
- u16 moves[4];
- u8 pp[4];
- u8 ppBonuses;
-};
-
-extern u8 gActiveBattler;
-extern void (*gBattleBankFunc[])(void);
-extern u32 gBattleExecBuffer;
-extern u8 gBattleBufferA[][0x200];
-extern u8 gBankSpriteIds[];
-extern MainCallback gPreBattleCallback1;
-extern bool8 gDoingBattleAnim;
-extern u16 gBattlerPartyIndexes[];
-extern u8 gHealthboxIDs[];
-extern u16 gBattleTypeFlags;
-extern u16 gAnimMovePower;
-extern s32 gAnimMoveDmg;
-extern u8 gAnimFriendship;
-extern u16 gWeatherMoveAnim;
-extern u32 gTransformedPersonalities[];
-extern void (*gAnimScriptCallback)(void);
-extern bool8 gAnimScriptActive;
-extern u8 gDisplayedStringBattle[];
-extern u8 gBankInMenu;
-extern u8 gBattleMonForms[];
-extern u8 gBattleOutcome;
-extern u16 gUnknown_02024DE8;
-extern u8 gUnknown_02024E68[];
-extern struct SpriteTemplate gUnknown_02024E8C;
-extern u8 gAnimMoveTurn;
-extern struct Window gUnknown_03004210;
-extern u8 gUnknown_0300434C[];
-extern const u8 BattleText_WallyMenu[];
-extern const u8 BattleText_MenuOptions[];
-
-// TODO: include rom3.h when my other PR gets merged
-extern void Emitcmd33(u8, u8, u16);
-extern void Emitcmd35(u8, u16);
-
-extern void nullsub_14(void);
-extern void PrepareBagForWallyTutorial(void);
-extern void sub_8045A5C();
-extern void sub_804777C();
-extern void sub_8043DFC();
-extern bool8 IsDoubleBattle(void);
-extern void c3_0802FDF4(u8);
-extern void PlayerHandlecmd1(void);
-extern void LoadPlayerTrainerBankSprite();
-extern u8 GetBattlerPosition(u8);
-extern void sub_80313A0(struct Sprite *);
-extern u8 GetBattlerAtPosition(u8);
-extern u8 sub_8031720();
-extern void DoMoveAnim();
-extern void sub_80326EC();
-extern void sub_8031F24(void);
-extern void sub_80324BC();
-extern void BufferStringBattle();
-extern u8 GetBattlerSide(u8);
-extern void sub_80304A8(void);
-extern void sub_8047858();
-extern void StartBattleIntroAnim();
-extern void oamt_add_pos2_onto_pos1();
-extern void StartAnimLinearTranslation(struct Sprite *);
-extern void sub_8030E38(struct Sprite *);
-extern void StoreSpriteCallbackInData();
-extern u8 StartSendOutMonAnimation();
-extern u8 GetBattlerSpriteCoord();
-extern u8 sub_8077F68();
-extern u8 GetBattlerSubpriority();
-extern void sub_80312F0(struct Sprite *);
-extern bool8 move_anim_start_t3();
-
-// this file's functions
-
-void WallyBufferRunCommand(void);
-void sub_81374FC(void);
-void sub_81376B8(void);
-void WallyBufferExecCompleted(void);
-u32 sub_8137A84(u8, u8 *);
-void sub_8138294(u8);
-void sub_81390D0(void);
-void sub_8139A2C(u8);
-
-void WallyHandleGetAttributes(void);
-void WallyHandlecmd1(void);
-void WallyHandleSetAttributes(void);
-void WallyHandlecmd3(void);
-void WallyHandleLoadPokeSprite(void);
-void WallyHandleSendOutPoke(void);
-void WallyHandleReturnPokeToBall(void);
-void WallyHandleTrainerThrow(void);
-void WallyHandleTrainerSlide(void);
-void WallyHandleTrainerSlideBack(void);
-void WallyHandlecmd10(void);
-void WallyHandlecmd11(void);
-void WallyHandlecmd12(void);
-void WallyHandleBallThrow(void);
-void WallyHandlePuase(void);
-void WallyHandleMoveAnimation(void);
-void WallyHandlePrintString(void);
-void WallyHandlePrintStringPlayerOnly(void);
-void WallyHandlecmd18(void);
-void WallyHandlecmd19(void);
-void WallyHandlecmd20(void);
-void WallyHandleOpenBag(void);
-void WallyHandlecmd22(void);
-void WallyHandlecmd23(void);
-void WallyHandleHealthBarUpdate(void);
-void WallyHandleExpBarUpdate(void);
-void WallyHandleStatusIconUpdate(void);
-void WallyHandleStatusAnimation(void);
-void WallyHandleStatusXor(void);
-void WallyHandlecmd29(void);
-void WallyHandleDMATransfer(void);
-void WallyHandlecmd31(void);
-void WallyHandlecmd32(void);
-void WallyHandlecmd33(void);
-void WallyHandlecmd34(void);
-void WallyHandlecmd35(void);
-void WallyHandlecmd36(void);
-void WallyHandlecmd37(void);
-void WallyHandlecmd38(void);
-void WallyHandlecmd39(void);
-void WallyHandlecmd40(void);
-void WallyHandleHitAnimation(void);
-void WallyHandlecmd42(void);
-void WallyHandleEffectivenessSound(void);
-void WallyHandlecmd44(void);
-void WallyHandleFaintingCry(void);
-void WallyHandleIntroSlide(void);
-void WallyHandleTrainerBallThrow(void);
-void WallyHandlecmd48(void);
-void WallyHandlecmd49(void);
-void WallyHandlecmd50(void);
-void WallyHandleSpriteInvisibility(void);
-void WallyHandleBattleAnimation(void);
-void WallyHandleLinkStandbyMsg(void);
-void WallyHandleResetActionMoveSelection(void);
-void WallyHandlecmd55(void);
-void WallyHandlecmd56(void);
-
-// const data
-
-typedef void (*BattleBufferCmd) (void);
-static const BattleBufferCmd gWallyBufferCommands[] =
-{
- WallyHandleGetAttributes,
- WallyHandlecmd1,
- WallyHandleSetAttributes,
- WallyHandlecmd3,
- WallyHandleLoadPokeSprite,
- WallyHandleSendOutPoke,
- WallyHandleReturnPokeToBall,
- WallyHandleTrainerThrow,
- WallyHandleTrainerSlide,
- WallyHandleTrainerSlideBack,
- WallyHandlecmd10,
- WallyHandlecmd11,
- WallyHandlecmd12,
- WallyHandleBallThrow,
- WallyHandlePuase,
- WallyHandleMoveAnimation,
- WallyHandlePrintString,
- WallyHandlePrintStringPlayerOnly,
- WallyHandlecmd18,
- WallyHandlecmd19,
- WallyHandlecmd20,
- WallyHandleOpenBag,
- WallyHandlecmd22,
- WallyHandlecmd23,
- WallyHandleHealthBarUpdate,
- WallyHandleExpBarUpdate,
- WallyHandleStatusIconUpdate,
- WallyHandleStatusAnimation,
- WallyHandleStatusXor,
- WallyHandlecmd29,
- WallyHandleDMATransfer,
- WallyHandlecmd31,
- WallyHandlecmd32,
- WallyHandlecmd33,
- WallyHandlecmd34,
- WallyHandlecmd35,
- WallyHandlecmd36,
- WallyHandlecmd37,
- WallyHandlecmd38,
- WallyHandlecmd39,
- WallyHandlecmd40,
- WallyHandleHitAnimation,
- WallyHandlecmd42,
- WallyHandleEffectivenessSound,
- WallyHandlecmd44,
- WallyHandleFaintingCry,
- WallyHandleIntroSlide,
- WallyHandleTrainerBallThrow,
- WallyHandlecmd48,
- WallyHandlecmd49,
- WallyHandlecmd50,
- WallyHandleSpriteInvisibility,
- WallyHandleBattleAnimation,
- WallyHandleLinkStandbyMsg,
- WallyHandleResetActionMoveSelection,
- WallyHandlecmd55,
- WallyHandlecmd56,
-};
-
-// code
-
-void unref_sub_8137220(void)
-{
-}
-
-void SetBankFuncToWallyBufferRunCommand(void)
-{
- gBattleBankFunc[gActiveBattler] = WallyBufferRunCommand;
- ewram160A8 = 0;
- ewram160A9 = 0;
- ewram160AA = 0;
- ewram160AB = 0;
-}
-
-void WallyBufferRunCommand(void)
-{
- if (gBattleExecBuffer & gBitTable[gActiveBattler])
- {
- if (gBattleBufferA[gActiveBattler][0] < 0x39)
- gWallyBufferCommands[gBattleBufferA[gActiveBattler][0]]();
- else
- WallyBufferExecCompleted();
- }
-}
-
-void sub_81372BC(void)
-{
- u8 r4;
-
- switch (ewram160A8)
- {
- case 0:
- ewram160AA = 64;
- ewram160A8++;
- // fall through
- case 1:
- r4 = --ewram160AA;
- if (r4 == 0)
- {
- PlaySE(SE_SELECT);
- Emitcmd33(1, 0, 0);
- WallyBufferExecCompleted();
- ewram160A8++;
- ewram160A9 = r4;
- ewram160AA = 64;
- }
- break;
- case 2:
- r4 = --ewram160AA;
- if (r4 == 0)
- {
- PlaySE(SE_SELECT);
- Emitcmd33(1, 0, 0);
- WallyBufferExecCompleted();
- ewram160A8++;
- ewram160A9 = r4;
- ewram160AA = 64;
- }
- break;
- case 3:
- r4 = --ewram160AA;
- if (r4 == 0)
- {
- Emitcmd33(1, 9, 0);
- WallyBufferExecCompleted();
- ewram160A8++;
- ewram160A9 = r4;
- ewram160AA = 64;
- }
- break;
- case 4:
- if (--ewram160AA == 0)
- {
- PlaySE(SE_SELECT);
- nullsub_8(0);
- sub_802E3E4(1, 0);
- ewram160AA = 64;
- ewram160A8++;
- }
- break;
- case 5:
- if (--ewram160AA == 0)
- {
- PlaySE(SE_SELECT);
- DestroyMenuCursor();
- Emitcmd33(1, 1, 0);
- WallyBufferExecCompleted();
- }
- break;
- }
-}
-
-void sub_813741C(void)
-{
- if (gSprites[gBankSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
- WallyBufferExecCompleted();
-}
-
-void sub_8137454(void)
-{
- if (gUnknown_03004210.state == 0)
- WallyBufferExecCompleted();
-}
-
-void sub_813746C(void)
-{
- if (!gPaletteFade.active)
- {
- gMain.inBattle = FALSE;
- gMain.callback1 = gPreBattleCallback1;
- SetMainCallback2(gMain.savedCallback);
- }
-}
-
-void bx_wait_t5(void)
-{
- if (!gDoingBattleAnim)
- WallyBufferExecCompleted();
-}
-
-void sub_81374C4(void)
-{
- if (!gPaletteFade.active)
- {
- gBattleBankFunc[gActiveBattler] = sub_81374FC;
- nullsub_14();
- PrepareBagForWallyTutorial();
- }
-}
-
-void sub_81374FC(void)
-{
- if (gMain.callback2 == BattleMainCB2
- && !gPaletteFade.active)
- {
- Emitcmd35(1, gSpecialVar_ItemId);
- WallyBufferExecCompleted();
- }
-}
-
-void sub_8137538(void)
-{
- if (!ewram17810[gActiveBattler].unk0_3 && !ewram17810[gActiveBattler].unk0_7)
- sub_8141828(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]);
-
- if (!ewram17810[gActiveBattler ^ 2].unk0_3 && !ewram17810[gActiveBattler ^ 2].unk0_7)
- sub_8141828(gActiveBattler ^ 2, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler ^ 2]]);
-
- if (!ewram17810[gActiveBattler].unk0_3 && !ewram17810[gActiveBattler ^ 2].unk0_3)
- {
- if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI))
- {
- DestroySprite(&gSprites[gUnknown_0300434C[gActiveBattler ^ 2]]);
- sub_8045A5C(gHealthboxIDs[gActiveBattler ^ 2], &gPlayerParty[gBattlerPartyIndexes[gActiveBattler ^ 2]], 0);
- sub_804777C(gActiveBattler ^ 2);
- sub_8043DFC(gHealthboxIDs[gActiveBattler ^ 2]);
- }
- DestroySprite(&gSprites[gUnknown_0300434C[gActiveBattler]]);
- sub_8045A5C(gHealthboxIDs[gActiveBattler], &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], 0);
- sub_804777C(gActiveBattler);
- sub_8043DFC(gHealthboxIDs[gActiveBattler]);
- ewram17840.unk9_0 = 0;
- gBattleBankFunc[gActiveBattler] = sub_81376B8;
- }
-}
-
-void sub_81376B8(void)
-{
- bool8 r4 = FALSE;
-
- if (gSprites[gHealthboxIDs[gActiveBattler]].callback == SpriteCallbackDummy)
- r4 = TRUE;
- if (r4 && ewram17810[gActiveBattler].unk1_0 && ewram17810[gActiveBattler ^ 2].unk1_0)
- {
- ewram17810[gActiveBattler].unk0_7 = 0;
- ewram17810[gActiveBattler].unk1_0 = 0;
- ewram17810[gActiveBattler ^ 2].unk0_7 = 0;
- ewram17810[gActiveBattler ^ 2].unk1_0 = 0;
- FreeSpriteTilesByTag(0x27F9);
- FreeSpritePaletteByTag(0x27F9);
- CreateTask(c3_0802FDF4, 10);
- HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
- WallyBufferExecCompleted();
- }
-}
-
-void sub_81377B0(void)
-{
- s16 r4;
-
- r4 = sub_8045C78(gActiveBattler, gHealthboxIDs[gActiveBattler], 0, 0);
- sub_8043DFC(gHealthboxIDs[gActiveBattler]);
- if (r4 != -1)
- {
- sub_80440EC(gHealthboxIDs[gActiveBattler], r4, 0);
- }
- else
- {
- HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
- WallyBufferExecCompleted();
- }
-}
-
-void bx_blink_t5(void)
-{
- u8 spriteId = gBankSpriteIds[gActiveBattler];
-
- if (gSprites[spriteId].data[1] == 32)
- {
- gSprites[spriteId].data[1] = 0;
- gSprites[spriteId].invisible = FALSE;
- gDoingBattleAnim = FALSE;
- WallyBufferExecCompleted();
- }
- else
- {
- if (((u16)gSprites[spriteId].data[1] % 4) == 0)
- gSprites[spriteId].invisible ^= 1;
- gSprites[spriteId].data[1]++;
- }
-}
-
-void sub_813789C(void)
-{
- if (!ewram17810[gActiveBattler].unk0_6)
- {
- FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBattler]]);
- DestroySprite(&gSprites[gBankSpriteIds[gActiveBattler]]);
- sub_8043DB0(gHealthboxIDs[gActiveBattler]);
- WallyBufferExecCompleted();
- }
-}
-
-// Duplicate of sub_813741C
-void sub_8137908(void)
-{
- if (gSprites[gBankSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy)
- WallyBufferExecCompleted();
-}
-
-void sub_8137940(void)
-{
- if (!ewram17810[gActiveBattler].unk0_5)
- WallyBufferExecCompleted();
-}
-
-void WallyBufferExecCompleted(void)
-{
- gBattleBankFunc[gActiveBattler] = WallyBufferRunCommand;
- if (gBattleTypeFlags & BATTLE_TYPE_LINK)
- {
- u8 multiplayerId = GetMultiplayerId();
-
- PrepareBufferDataTransferLink(2, 4, &multiplayerId);
- gBattleBufferA[gActiveBattler][0] = 0x38;
- }
- else
- {
- gBattleExecBuffer &= ~gBitTable[gActiveBattler];
- }
-}
-
-void unref_sub_81379E4(void)
-{
- if (!ewram17810[gActiveBattler].unk0_4)
- WallyBufferExecCompleted();
-}
-
-void WallyHandleGetAttributes(void)
-{
- u8 arr[0x100];
- u32 r6 = 0;
- u8 r4;
- s32 i;
-
- if (gBattleBufferA[gActiveBattler][2] == 0)
- {
- r6 = sub_8137A84(gBattlerPartyIndexes[gActiveBattler], arr);
- }
- else
- {
- r4 = gBattleBufferA[gActiveBattler][2];
- for (i = 0; i < 6; i++)
- {
- if (r4 & 1)
- r6 += sub_8137A84(i, arr + r6);
- r4 >>= 1;
- }
- }
- Emitcmd29(1, r6, arr);
- WallyBufferExecCompleted();
-}
-
-u32 sub_8137A84(u8 a, u8 *buffer)
-{
- struct BattlePokemon battlePokemon;
- struct MovePpInfo moveData;
- u8 nickname[20];
- u8 *src;
- s16 data16;
- u32 data32;
- s32 size = 0;
-
- switch (gBattleBufferA[gActiveBattler][1])
- {
- case 0:
- battlePokemon.species = GetMonData(&gPlayerParty[a], MON_DATA_SPECIES);
- battlePokemon.item = GetMonData(&gPlayerParty[a], MON_DATA_HELD_ITEM);
- for (size = 0; size < 4; size++)
- {
- battlePokemon.moves[size] = GetMonData(&gPlayerParty[a], MON_DATA_MOVE1 + size);
- battlePokemon.pp[size] = GetMonData(&gPlayerParty[a], MON_DATA_PP1 + size);
- }
- battlePokemon.ppBonuses = GetMonData(&gPlayerParty[a], MON_DATA_PP_BONUSES);
- battlePokemon.friendship = GetMonData(&gPlayerParty[a], MON_DATA_FRIENDSHIP);
- battlePokemon.experience = GetMonData(&gPlayerParty[a], MON_DATA_EXP);
- battlePokemon.hpIV = GetMonData(&gPlayerParty[a], MON_DATA_HP_IV);
- battlePokemon.attackIV = GetMonData(&gPlayerParty[a], MON_DATA_ATK_IV);
- battlePokemon.defenseIV = GetMonData(&gPlayerParty[a], MON_DATA_DEF_IV);
- battlePokemon.speedIV = GetMonData(&gPlayerParty[a], MON_DATA_SPEED_IV);
- battlePokemon.spAttackIV = GetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV);
- battlePokemon.spDefenseIV = GetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV);
- battlePokemon.personality = GetMonData(&gPlayerParty[a], MON_DATA_PERSONALITY);
- battlePokemon.status1 = GetMonData(&gPlayerParty[a], MON_DATA_STATUS);
- battlePokemon.level = GetMonData(&gPlayerParty[a], MON_DATA_LEVEL);
- battlePokemon.hp = GetMonData(&gPlayerParty[a], MON_DATA_HP);
- battlePokemon.maxHP = GetMonData(&gPlayerParty[a], MON_DATA_MAX_HP);
- battlePokemon.attack = GetMonData(&gPlayerParty[a], MON_DATA_ATK);
- battlePokemon.defense = GetMonData(&gPlayerParty[a], MON_DATA_DEF);
- battlePokemon.speed = GetMonData(&gPlayerParty[a], MON_DATA_SPEED);
- battlePokemon.spAttack = GetMonData(&gPlayerParty[a], MON_DATA_SPATK);
- battlePokemon.spDefense = GetMonData(&gPlayerParty[a], MON_DATA_SPDEF);
- battlePokemon.isEgg = GetMonData(&gPlayerParty[a], MON_DATA_IS_EGG);
- battlePokemon.altAbility = GetMonData(&gPlayerParty[a], MON_DATA_ALT_ABILITY);
- battlePokemon.otId = GetMonData(&gPlayerParty[a], MON_DATA_OT_ID);
- GetMonData(&gPlayerParty[a], MON_DATA_NICKNAME, nickname);
- StringCopy10(battlePokemon.nickname, nickname);
- GetMonData(&gPlayerParty[a], MON_DATA_OT_NAME, battlePokemon.otName);
- MEMCPY_ALT(&battlePokemon, buffer, sizeof(battlePokemon), size, src);
- break;
- case 1:
- data16 = GetMonData(&gPlayerParty[a], MON_DATA_SPECIES);
- buffer[0] = data16;
- buffer[1] = data16 >> 8;
- size = 2;
- break;
- case 2:
- data16 = GetMonData(&gPlayerParty[a], MON_DATA_HELD_ITEM);
- buffer[0] = data16;
- buffer[1] = data16 >> 8;
- size = 2;
- break;
- case 3:
- for (size = 0; size < 4; size++)
- {
- moveData.moves[size] = GetMonData(&gPlayerParty[a], MON_DATA_MOVE1 + size);
- moveData.pp[size] = GetMonData(&gPlayerParty[a], MON_DATA_PP1 + size);
- }
- moveData.ppBonuses = GetMonData(&gPlayerParty[a], MON_DATA_PP_BONUSES);
- MEMCPY_ALT(&moveData, buffer, sizeof(moveData), size, src);
- break;
- case 4:
- case 5:
- case 6:
- case 7:
- data16 = GetMonData(&gPlayerParty[a], MON_DATA_MOVE1 + gBattleBufferA[gActiveBattler][1] - 4);
- buffer[0] = data16;
- buffer[1] = data16 >> 8;
- size = 2;
- break;
- case 8:
- for (size = 0; size < 4; size++)
- buffer[size] = GetMonData(&gPlayerParty[a], MON_DATA_PP1 + size);
- buffer[size] = GetMonData(&gPlayerParty[a], MON_DATA_PP_BONUSES);
- size++;
- break;
- case 9:
- case 10:
- case 11:
- case 12:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_PP1 + gBattleBufferA[gActiveBattler][1] - 9);
- size = 1;
- break;
- case 17:
- data32 = GetMonData(&gPlayerParty[a], MON_DATA_OT_ID);
- buffer[0] = (data32 & 0x000000FF);
- buffer[1] = (data32 & 0x0000FF00) >> 8;
- buffer[2] = (data32 & 0x00FF0000) >> 16;
- size = 3;
- break;
- case 18:
- data32 = GetMonData(&gPlayerParty[a], MON_DATA_EXP);
- buffer[0] = (data32 & 0x000000FF);
- buffer[1] = (data32 & 0x0000FF00) >> 8;
- buffer[2] = (data32 & 0x00FF0000) >> 16;
- size = 3;
- break;
- case 19:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_HP_EV);
- size = 1;
- break;
- case 20:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_ATK_EV);
- size = 1;
- break;
- case 21:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_DEF_EV);
- size = 1;
- break;
- case 22:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SPEED_EV);
- size = 1;
- break;
- case 23:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SPATK_EV);
- size = 1;
- break;
- case 24:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SPDEF_EV);
- size = 1;
- break;
- case 25:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_FRIENDSHIP);
- size = 1;
- break;
- case 26:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_POKERUS);
- size = 1;
- break;
- case 27:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_MET_LOCATION);
- size = 1;
- break;
- case 28:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_MET_LEVEL);
- size = 1;
- break;
- case 29:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_MET_GAME);
- size = 1;
- break;
- case 30:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_POKEBALL);
- size = 1;
- break;
- case 31:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_HP_IV);
- buffer[1] = GetMonData(&gPlayerParty[a], MON_DATA_ATK_IV);
- buffer[2] = GetMonData(&gPlayerParty[a], MON_DATA_DEF_IV);
- buffer[3] = GetMonData(&gPlayerParty[a], MON_DATA_SPEED_IV);
- buffer[4] = GetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV);
- buffer[5] = GetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV);
- size = 6;
- break;
- case 32:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_HP_IV);
- size = 1;
- break;
- case 33:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_ATK_IV);
- size = 1;
- break;
- case 34:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_DEF_IV);
- size = 1;
- break;
- case 35:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SPEED_IV);
- size = 1;
- break;
- case 36:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV);
- size = 1;
- break;
- case 37:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV);
- size = 1;
- break;
- case 38:
- data32 = GetMonData(&gPlayerParty[a], MON_DATA_PERSONALITY);
- buffer[0] = (data32 & 0x000000FF);
- buffer[1] = (data32 & 0x0000FF00) >> 8;
- buffer[2] = (data32 & 0x00FF0000) >> 16;
- buffer[3] = (data32 & 0xFF000000) >> 24;
- size = 4;
- break;
- case 39:
- data16 = GetMonData(&gPlayerParty[a], MON_DATA_CHECKSUM);
- buffer[0] = data16;
- buffer[1] = data16 >> 8;
- size = 2;
- break;
- case 40:
- data32 = GetMonData(&gPlayerParty[a], MON_DATA_STATUS);
- buffer[0] = (data32 & 0x000000FF);
- buffer[1] = (data32 & 0x0000FF00) >> 8;
- buffer[2] = (data32 & 0x00FF0000) >> 16;
- buffer[3] = (data32 & 0xFF000000) >> 24;
- size = 4;
- break;
- case 41:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_LEVEL);
- size = 1;
- break;
- case 42:
- data16 = GetMonData(&gPlayerParty[a], MON_DATA_HP);
- buffer[0] = data16;
- buffer[1] = data16 >> 8;
- size = 2;
- break;
- case 43:
- data16 = GetMonData(&gPlayerParty[a], MON_DATA_MAX_HP);
- buffer[0] = data16;
- buffer[1] = data16 >> 8;
- size = 2;
- break;
- case 44:
- data16 = GetMonData(&gPlayerParty[a], MON_DATA_ATK);
- buffer[0] = data16;
- buffer[1] = data16 >> 8;
- size = 2;
- break;
- case 45:
- data16 = GetMonData(&gPlayerParty[a], MON_DATA_DEF);
- buffer[0] = data16;
- buffer[1] = data16 >> 8;
- size = 2;
- break;
- case 46:
- data16 = GetMonData(&gPlayerParty[a], MON_DATA_SPEED);
- buffer[0] = data16;
- buffer[1] = data16 >> 8;
- size = 2;
- break;
- case 47:
- data16 = GetMonData(&gPlayerParty[a], MON_DATA_SPATK);
- buffer[0] = data16;
- buffer[1] = data16 >> 8;
- size = 2;
- break;
- case 48:
- data16 = GetMonData(&gPlayerParty[a], MON_DATA_SPDEF);
- buffer[0] = data16;
- buffer[1] = data16 >> 8;
- size = 2;
- break;
- case 49:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_COOL);
- size = 1;
- break;
- case 50:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_BEAUTY);
- size = 1;
- break;
- case 51:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_CUTE);
- size = 1;
- break;
- case 52:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SMART);
- size = 1;
- break;
- case 53:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_TOUGH);
- size = 1;
- break;
- case 54:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SHEEN);
- size = 1;
- break;
- case 55:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_COOL_RIBBON);
- size = 1;
- break;
- case 56:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_BEAUTY_RIBBON);
- size = 1;
- break;
- case 57:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_CUTE_RIBBON);
- size = 1;
- break;
- case 58:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SMART_RIBBON);
- size = 1;
- break;
- case 59:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_TOUGH_RIBBON);
- size = 1;
- break;
- }
- return size;
-}
-
-void WallyHandlecmd1(void)
-{
- PlayerHandlecmd1();
-}
-
-void WallyHandleSetAttributes(void)
-{
- u8 r4;
- u8 i;
-
- if (gBattleBufferA[gActiveBattler][2] == 0)
- {
- sub_8138294(gBattlerPartyIndexes[gActiveBattler]);
- }
- else
- {
- r4 = gBattleBufferA[gActiveBattler][2];
- for (i = 0; i < 6; i++)
- {
- if (r4 & 1)
- sub_8138294(i);
- r4 >>= 1;
- }
- }
- WallyBufferExecCompleted();
-}
-
-void sub_8138294(u8 a)
-{
- struct BattlePokemon *battlePokemon = (struct BattlePokemon *)&gBattleBufferA[gActiveBattler][3];
- struct MovePpInfo *moveData = (struct MovePpInfo *)&gBattleBufferA[gActiveBattler][3];
- s32 i;
-
- switch (gBattleBufferA[gActiveBattler][1])
- {
- case 0:
- {
- u8 iv;
-
- SetMonData(&gPlayerParty[a], MON_DATA_SPECIES, &battlePokemon->species);
- SetMonData(&gPlayerParty[a], MON_DATA_HELD_ITEM, &battlePokemon->item);
- for (i = 0; i < 4; i++)
- {
- SetMonData(&gPlayerParty[a], MON_DATA_MOVE1 + i, &battlePokemon->moves[i]);
- SetMonData(&gPlayerParty[a], MON_DATA_PP1 + i, &battlePokemon->pp[i]);
- }
- SetMonData(&gPlayerParty[a], MON_DATA_PP_BONUSES, &battlePokemon->ppBonuses);
- SetMonData(&gPlayerParty[a], MON_DATA_FRIENDSHIP, &battlePokemon->friendship);
- SetMonData(&gPlayerParty[a], MON_DATA_EXP, &battlePokemon->experience);
- iv = battlePokemon->hpIV;
- SetMonData(&gPlayerParty[a], MON_DATA_HP_IV, &iv);
- iv = battlePokemon->attackIV;
- SetMonData(&gPlayerParty[a], MON_DATA_ATK_IV, &iv);
- iv = battlePokemon->defenseIV;
- SetMonData(&gPlayerParty[a], MON_DATA_DEF_IV, &iv);
- iv = battlePokemon->speedIV;
- SetMonData(&gPlayerParty[a], MON_DATA_SPEED_IV, &iv);
- iv = battlePokemon->spAttackIV;
- SetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV, &iv);
- iv = battlePokemon->spDefenseIV;
- SetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV, &iv);
- SetMonData(&gPlayerParty[a], MON_DATA_PERSONALITY, &battlePokemon->personality);
- SetMonData(&gPlayerParty[a], MON_DATA_STATUS, &battlePokemon->status1);
- SetMonData(&gPlayerParty[a], MON_DATA_LEVEL, &battlePokemon->level);
- SetMonData(&gPlayerParty[a], MON_DATA_HP, &battlePokemon->hp);
- SetMonData(&gPlayerParty[a], MON_DATA_MAX_HP, &battlePokemon->maxHP);
- SetMonData(&gPlayerParty[a], MON_DATA_ATK, &battlePokemon->attack);
- SetMonData(&gPlayerParty[a], MON_DATA_DEF, &battlePokemon->defense);
- SetMonData(&gPlayerParty[a], MON_DATA_SPEED, &battlePokemon->speed);
- SetMonData(&gPlayerParty[a], MON_DATA_SPATK, &battlePokemon->spAttack);
- SetMonData(&gPlayerParty[a], MON_DATA_SPDEF, &battlePokemon->spDefense);
- }
- break;
- case 1:
- SetMonData(&gPlayerParty[a], MON_DATA_SPECIES, &gBattleBufferA[gActiveBattler][3]);
- break;
- case 2:
- SetMonData(&gPlayerParty[a], MON_DATA_HELD_ITEM, &gBattleBufferA[gActiveBattler][3]);
- break;
- case 3:
- for (i = 0; i < 4; i++)
- {
- SetMonData(&gPlayerParty[a], MON_DATA_MOVE1 + i, &moveData->moves[i]);
- SetMonData(&gPlayerParty[a], MON_DATA_PP1 + i, &moveData->pp[i]);
- }
- SetMonData(&gPlayerParty[a], MON_DATA_PP_BONUSES, &moveData->ppBonuses);
- break;
- case 4:
- case 5:
- case 6:
- case 7:
- SetMonData(&gPlayerParty[a], MON_DATA_MOVE1 + gBattleBufferA[gActiveBattler][1] - 4, &gBattleBufferA[gActiveBattler][3]);
- break;
- case 8:
- SetMonData(&gPlayerParty[a], MON_DATA_PP1, &gBattleBufferA[gActiveBattler][3]);
- SetMonData(&gPlayerParty[a], MON_DATA_PP2, &gBattleBufferA[gActiveBattler][4]);
- SetMonData(&gPlayerParty[a], MON_DATA_PP3, &gBattleBufferA[gActiveBattler][5]);
- SetMonData(&gPlayerParty[a], MON_DATA_PP4, &gBattleBufferA[gActiveBattler][6]);
- SetMonData(&gPlayerParty[a], MON_DATA_PP_BONUSES, &gBattleBufferA[gActiveBattler][7]);
- break;
- case 9:
- case 10:
- case 11:
- case 12:
- SetMonData(&gPlayerParty[a], MON_DATA_PP1 + gBattleBufferA[gActiveBattler][1] - 9, &gBattleBufferA[gActiveBattler][3]);
- break;
- case 17:
- SetMonData(&gPlayerParty[a], MON_DATA_OT_ID, &gBattleBufferA[gActiveBattler][3]);
- break;
- case 18:
- SetMonData(&gPlayerParty[a], MON_DATA_EXP, &gBattleBufferA[gActiveBattler][3]);
- break;
- case 19:
- SetMonData(&gPlayerParty[a], MON_DATA_HP_EV, &gBattleBufferA[gActiveBattler][3]);
- break;
- case 20:
- SetMonData(&gPlayerParty[a], MON_DATA_ATK_EV, &gBattleBufferA[gActiveBattler][3]);
- break;
- case 21:
- SetMonData(&gPlayerParty[a], MON_DATA_DEF_EV, &gBattleBufferA[gActiveBattler][3]);
- break;
- case 22:
- SetMonData(&gPlayerParty[a], MON_DATA_SPEED_EV, &gBattleBufferA[gActiveBattler][3]);
- break;
- case 23:
- SetMonData(&gPlayerParty[a], MON_DATA_SPATK_EV, &gBattleBufferA[gActiveBattler][3]);
- break;
- case 24:
- SetMonData(&gPlayerParty[a], MON_DATA_SPDEF_EV, &gBattleBufferA[gActiveBattler][3]);
- break;
- case 25:
- SetMonData(&gPlayerParty[a], MON_DATA_FRIENDSHIP, &gBattleBufferA[gActiveBattler][3]);
- break;
- case 26:
- SetMonData(&gPlayerParty[a], MON_DATA_POKERUS, &gBattleBufferA[gActiveBattler][3]);
- break;
- case 27:
- SetMonData(&gPlayerParty[a], MON_DATA_MET_LOCATION, &gBattleBufferA[gActiveBattler][3]);
- break;
- case 28:
- SetMonData(&gPlayerParty[a], MON_DATA_MET_LEVEL, &gBattleBufferA[gActiveBattler][3]);
- break;
- case 29:
- SetMonData(&gPlayerParty[a], MON_DATA_MET_GAME, &gBattleBufferA[gActiveBattler][3]);
- break;
- case 30:
- SetMonData(&gPlayerParty[a], MON_DATA_POKEBALL, &gBattleBufferA[gActiveBattler][3]);
- break;
- case 31:
- SetMonData(&gPlayerParty[a], MON_DATA_HP_IV, &gBattleBufferA[gActiveBattler][3]);
- SetMonData(&gPlayerParty[a], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBattler][4]);
- SetMonData(&gPlayerParty[a], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBattler][5]);
- SetMonData(&gPlayerParty[a], MON_DATA_SPEED_IV, &gBattleBufferA[gActiveBattler][6]);
- SetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBattler][7]);
- SetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBattler][8]);
- break;
- case 32:
- SetMonData(&gPlayerParty[a], MON_DATA_HP_IV, &gBattleBufferA[gActiveBattler][3]);
- break;
- case 33:
- SetMonData(&gPlayerParty[a], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBattler][3]);
- break;
- case 34:
- SetMonData(&gPlayerParty[a], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBattler][3]);
- break;
- case 35:
- SetMonData(&gPlayerParty[a], MON_DATA_SPEED_IV, &gBattleBufferA[gActiveBattler][3]);
- break;
- case 36:
- SetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBattler][3]);
- break;
- case 37:
- SetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBattler][3]);
- break;
- case 38:
- SetMonData(&gPlayerParty[a], MON_DATA_PERSONALITY, &gBattleBufferA[gActiveBattler][3]);
- break;
- case 39:
- SetMonData(&gPlayerParty[a], MON_DATA_CHECKSUM, &gBattleBufferA[gActiveBattler][3]);
- break;
- case 40:
- SetMonData(&gPlayerParty[a], MON_DATA_STATUS, &gBattleBufferA[gActiveBattler][3]);
- break;
- case 41:
- SetMonData(&gPlayerParty[a], MON_DATA_LEVEL, &gBattleBufferA[gActiveBattler][3]);
- break;
- case 42:
- SetMonData(&gPlayerParty[a], MON_DATA_HP, &gBattleBufferA[gActiveBattler][3]);
- break;
- case 43:
- SetMonData(&gPlayerParty[a], MON_DATA_MAX_HP, &gBattleBufferA[gActiveBattler][3]);
- break;
- case 44:
- SetMonData(&gPlayerParty[a], MON_DATA_ATK, &gBattleBufferA[gActiveBattler][3]);
- break;
- case 45:
- SetMonData(&gPlayerParty[a], MON_DATA_DEF, &gBattleBufferA[gActiveBattler][3]);
- break;
- case 46:
- SetMonData(&gPlayerParty[a], MON_DATA_SPEED, &gBattleBufferA[gActiveBattler][3]);
- break;
- case 47:
- SetMonData(&gPlayerParty[a], MON_DATA_SPATK, &gBattleBufferA[gActiveBattler][3]);
- break;
- case 48:
- SetMonData(&gPlayerParty[a], MON_DATA_SPDEF, &gBattleBufferA[gActiveBattler][3]);
- break;
- case 49:
- SetMonData(&gPlayerParty[a], MON_DATA_COOL, &gBattleBufferA[gActiveBattler][3]);
- break;
- case 50:
- SetMonData(&gPlayerParty[a], MON_DATA_BEAUTY, &gBattleBufferA[gActiveBattler][3]);
- break;
- case 51:
- SetMonData(&gPlayerParty[a], MON_DATA_CUTE, &gBattleBufferA[gActiveBattler][3]);
- break;
- case 52:
- SetMonData(&gPlayerParty[a], MON_DATA_SMART, &gBattleBufferA[gActiveBattler][3]);
- break;
- case 53:
- SetMonData(&gPlayerParty[a], MON_DATA_TOUGH, &gBattleBufferA[gActiveBattler][3]);
- break;
- case 54:
- SetMonData(&gPlayerParty[a], MON_DATA_SHEEN, &gBattleBufferA[gActiveBattler][3]);
- break;
- case 55:
- SetMonData(&gPlayerParty[a], MON_DATA_COOL_RIBBON, &gBattleBufferA[gActiveBattler][3]);
- break;
- case 56:
- SetMonData(&gPlayerParty[a], MON_DATA_BEAUTY_RIBBON, &gBattleBufferA[gActiveBattler][3]);
- break;
- case 57:
- SetMonData(&gPlayerParty[a], MON_DATA_CUTE_RIBBON, &gBattleBufferA[gActiveBattler][3]);
- break;
- case 58:
- SetMonData(&gPlayerParty[a], MON_DATA_SMART_RIBBON, &gBattleBufferA[gActiveBattler][3]);
- break;
- case 59:
- SetMonData(&gPlayerParty[a], MON_DATA_TOUGH_RIBBON, &gBattleBufferA[gActiveBattler][3]);
- break;
- }
- HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler);
-}
-
-void WallyHandlecmd3(void)
-{
- WallyBufferExecCompleted();
-}
-
-void WallyHandleLoadPokeSprite(void)
-{
- WallyBufferExecCompleted();
-}
-
-void WallyHandleSendOutPoke(void)
-{
- WallyBufferExecCompleted();
-}
-
-void WallyHandleReturnPokeToBall(void)
-{
- if (gBattleBufferA[gActiveBattler][1] == 0)
- {
- move_anim_start_t4(gActiveBattler, gActiveBattler, gActiveBattler, 1);
- gBattleBankFunc[gActiveBattler] = sub_813789C;
- }
- else
- {
- FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBattler]]);
- DestroySprite(&gSprites[gBankSpriteIds[gActiveBattler]]);
- sub_8043DB0(gHealthboxIDs[gActiveBattler]);
- WallyBufferExecCompleted();
- }
-}
-
-void WallyHandleTrainerThrow(void)
-{
- LoadPlayerTrainerBankSprite(2, gActiveBattler);
- GetMonSpriteTemplate_803C5A0(2, GetBattlerPosition(gActiveBattler));
- gBankSpriteIds[gActiveBattler] = CreateSprite(
- &gUnknown_02024E8C,
- 80, 80 + 4 * (8 - gTrainerBackPicCoords[2].coords),
- 30);
- gSprites[gBankSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
- gSprites[gBankSpriteIds[gActiveBattler]].pos2.x = 240;
- gSprites[gBankSpriteIds[gActiveBattler]].data[0] = -2;
- gSprites[gBankSpriteIds[gActiveBattler]].callback = sub_80313A0;
- gBattleBankFunc[gActiveBattler] = sub_813741C;
-}
-
-void WallyHandleTrainerSlide(void)
-{
- LoadPlayerTrainerBankSprite(2, gActiveBattler);
- GetMonSpriteTemplate_803C5A0(2, GetBattlerPosition(gActiveBattler));
- gBankSpriteIds[gActiveBattler] = CreateSprite(
- &gUnknown_02024E8C,
- 80, 80 + 4 * (8 - gTrainerBackPicCoords[2].coords),
- 30);
- gSprites[gBankSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
- gSprites[gBankSpriteIds[gActiveBattler]].pos2.x = -96;
- gSprites[gBankSpriteIds[gActiveBattler]].data[0] = 2;
- gSprites[gBankSpriteIds[gActiveBattler]].callback = sub_80313A0;
- gBattleBankFunc[gActiveBattler] = sub_8137908;
-}
-
-void WallyHandleTrainerSlideBack(void)
-{
- WallyBufferExecCompleted();
-}
-
-void WallyHandlecmd10(void)
-{
- WallyBufferExecCompleted();
-}
-
-void WallyHandlecmd11(void)
-{
- WallyBufferExecCompleted();
-}
-
-void WallyHandlecmd12(void)
-{
- ewram17840.unk8 = 4;
- gDoingBattleAnim = TRUE;
- move_anim_start_t4(gActiveBattler, gActiveBattler, GetBattlerAtPosition(1), 4);
- gBattleBankFunc[gActiveBattler] = bx_wait_t5;
-}
-
-void WallyHandleBallThrow(void)
-{
- u8 val = gBattleBufferA[gActiveBattler][1];
-
- ewram17840.unk8 = val;
- gDoingBattleAnim = TRUE;
- move_anim_start_t4(gActiveBattler, gActiveBattler, GetBattlerAtPosition(1), 4);
- gBattleBankFunc[gActiveBattler] = bx_wait_t5;
-}
-
-void WallyHandlePuase(void)
-{
- WallyBufferExecCompleted();
-}
-
-void WallyHandleMoveAnimation(void)
-{
- u16 move = gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8);
-
- gAnimMoveTurn = gBattleBufferA[gActiveBattler][3];
- gAnimMovePower = gBattleBufferA[gActiveBattler][4] | (gBattleBufferA[gActiveBattler][5] << 8);
- gAnimMoveDmg = gBattleBufferA[gActiveBattler][6] | (gBattleBufferA[gActiveBattler][7] << 8) | (gBattleBufferA[gActiveBattler][8] << 16) | (gBattleBufferA[gActiveBattler][9] << 24);
- gAnimFriendship = gBattleBufferA[gActiveBattler][10];
- gWeatherMoveAnim = gBattleBufferA[gActiveBattler][12] | (gBattleBufferA[gActiveBattler][13] << 8);
- gAnimDisableStructPtr = (struct DisableStruct *)&gBattleBufferA[gActiveBattler][16];
- gTransformedPersonalities[gActiveBattler] = gAnimDisableStructPtr->transformedMonPersonality;
- if (sub_8031720(move, gAnimMoveTurn) != 0)
- {
- // Dead code. sub_8031720 always returns 0.
- WallyBufferExecCompleted();
- }
- else
- {
- ewram17810[gActiveBattler].unk4 = 0;
- gBattleBankFunc[gActiveBattler] = sub_81390D0;
- }
-}
-
-void sub_81390D0(void)
-{
- u16 r4 = gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8);
-
-#ifndef NONMATCHING
- asm("":::"r6");
-#endif
-
- switch (ewram17810[gActiveBattler].unk4)
- {
- case 0:
- if (ewram17800[gActiveBattler].substituteSprite == 1)
- move_anim_start_t4(gActiveBattler, gActiveBattler, gActiveBattler, 5);
- ewram17810[gActiveBattler].unk4 = 1;
- break;
- case 1:
- if (ewram17810[gActiveBattler].unk0_6 == 0)
- {
- sub_80326EC(0);
- DoMoveAnim(r4);
- ewram17810[gActiveBattler].unk4 = 2;
- }
- break;
- case 2:
- gAnimScriptCallback();
- if (!gAnimScriptActive)
- {
- sub_80326EC(1);
- if (ewram17800[gActiveBattler].substituteSprite == 1)
- move_anim_start_t4(gActiveBattler, gActiveBattler, gActiveBattler, 6);
- ewram17810[gActiveBattler].unk4 = 3;
- }
- break;
- case 3:
- if (ewram17810[gActiveBattler].unk0_6 == 0)
- {
- sub_8031F24();
- sub_80324BC(gActiveBattler, gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8));
- ewram17810[gActiveBattler].unk4 = 0;
- WallyBufferExecCompleted();
- }
- break;
- }
-}
-
-void WallyHandlePrintString(void)
-{
- u16 *ptr;
-
- gBattle_BG0_X = 0;
- gBattle_BG0_Y = 0;
- ptr = (u16 *)&gBattleBufferA[gActiveBattler][2];
- if (*ptr == 2)
- DestroyMenuCursor();
- BufferStringBattle(*ptr);
- Text_InitWindow8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 0x90, 2, 15);
- gBattleBankFunc[gActiveBattler] = sub_8137454;
-}
-
-void WallyHandlePrintStringPlayerOnly(void)
-{
- if (GetBattlerSide(gActiveBattler) == 0)
- WallyHandlePrintString();
- else
- WallyBufferExecCompleted();
-}
-
-void WallyHandlecmd18(void)
-{
- s32 i;
-
- gBattle_BG0_X = 0;
- gBattle_BG0_Y = 160;
- gUnknown_03004210.paletteNum = 0;
- Text_FillWindowRectDefPalette(&gUnknown_03004210, 10, 2, 15, 27, 18);
- Text_FillWindowRectDefPalette(&gUnknown_03004210, 10, 2, 35, 16, 36);
- gBattleBankFunc[gActiveBattler] = sub_81372BC;
- Text_InitWindow(&gUnknown_03004210, BattleText_MenuOptions, 400, 18, 35);
- Text_PrintWindow8002F44(&gUnknown_03004210);
- MenuCursor_Create814A5C0(0, 0xFFFF, 12, 0x2D9F, 0);
- for (i = 0; i < 4; i++)
- nullsub_8(i);
- sub_802E3E4(0, 0);
- StrCpyDecodeToDisplayedStringBattle(BattleText_WallyMenu);
-#ifdef ENGLISH
- Text_InitWindow(&gUnknown_03004210, gDisplayedStringBattle, 440, 2, 35);
-#else
- Text_InitWindow(&gUnknown_03004210, gDisplayedStringBattle, 444, 2, 35);
-#endif
- Text_PrintWindow8002F44(&gUnknown_03004210);
-}
-
-void WallyHandlecmd19(void)
-{
- WallyBufferExecCompleted();
-}
-
-void WallyHandlecmd20(void)
-{
- switch (ewram160A9)
- {
- case 0:
- sub_80304A8();
- ewram160A9++;
- ewram160AB = 80;
- // fall through
- case 1:
- ewram160AB--;
- if (ewram160AB == 0)
- {
- DestroyMenuCursor();
- PlaySE(SE_SELECT);
- Emitcmd33(1, 10, 256);
- WallyBufferExecCompleted();
- }
- break;
- }
-}
-
-void WallyHandleOpenBag(void)
-{
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB(0, 0, 0));
- gBattleBankFunc[gActiveBattler] = sub_81374C4;
- gBankInMenu = gActiveBattler;
-}
-
-void WallyHandlecmd22(void)
-{
- WallyBufferExecCompleted();
-}
-
-void WallyHandlecmd23(void)
-{
- WallyBufferExecCompleted();
-}
-
-void WallyHandleHealthBarUpdate(void)
-{
- s16 r7;
-
- load_gfxc_health_bar(0);
- r7 = gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8);
- if (r7 != 0x7FFF)
- {
- u32 maxHP = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MAX_HP);
- u32 curHP = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_HP);
-
- sub_8043D84(gActiveBattler, gHealthboxIDs[gActiveBattler], maxHP, curHP, r7);
- }
- else
- {
- u32 maxHP = GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_MAX_HP);
-
- sub_8043D84(gActiveBattler, gHealthboxIDs[gActiveBattler], maxHP, 0, r7);
- sub_80440EC(gHealthboxIDs[gActiveBattler], 0, 0);
- }
- gBattleBankFunc[gActiveBattler] = sub_81377B0;
-}
-
-void WallyHandleExpBarUpdate(void)
-{
- WallyBufferExecCompleted();
-}
-
-void WallyHandleStatusIconUpdate(void)
-{
- WallyBufferExecCompleted();
-}
-
-void WallyHandleStatusAnimation(void)
-{
- WallyBufferExecCompleted();
-}
-
-void WallyHandleStatusXor(void)
-{
- WallyBufferExecCompleted();
-}
-
-void WallyHandlecmd29(void)
-{
- WallyBufferExecCompleted();
-}
-
-void WallyHandleDMATransfer(void)
-{
- WallyBufferExecCompleted();
-}
-
-void WallyHandlecmd31(void)
-{
- WallyBufferExecCompleted();
-}
-
-void WallyHandlecmd32(void)
-{
- WallyBufferExecCompleted();
-}
-
-void WallyHandlecmd33(void)
-{
- WallyBufferExecCompleted();
-}
-
-void WallyHandlecmd34(void)
-{
- WallyBufferExecCompleted();
-}
-
-void WallyHandlecmd35(void)
-{
- WallyBufferExecCompleted();
-}
-
-void WallyHandlecmd36(void)
-{
- WallyBufferExecCompleted();
-}
-
-void WallyHandlecmd37(void)
-{
- WallyBufferExecCompleted();
-}
-
-void WallyHandlecmd38(void)
-{
- WallyBufferExecCompleted();
-}
-
-void WallyHandlecmd39(void)
-{
- WallyBufferExecCompleted();
-}
-
-void WallyHandlecmd40(void)
-{
- WallyBufferExecCompleted();
-}
-
-void WallyHandleHitAnimation(void)
-{
- if (gSprites[gBankSpriteIds[gActiveBattler]].invisible == TRUE)
- {
- WallyBufferExecCompleted();
- }
- else
- {
- gDoingBattleAnim = 1;
- gSprites[gBankSpriteIds[gActiveBattler]].data[1] = 0;
- sub_8047858(gActiveBattler);
- gBattleBankFunc[gActiveBattler] = bx_blink_t5;
- }
-}
-
-void WallyHandlecmd42(void)
-{
- WallyBufferExecCompleted();
-}
-
-void WallyHandleEffectivenessSound(void)
-{
- PlaySE(gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8));
- WallyBufferExecCompleted();
-}
-
-void WallyHandlecmd44(void)
-{
- PlayFanfare(gBattleBufferA[gActiveBattler][1] | (gBattleBufferA[gActiveBattler][2] << 8));
- WallyBufferExecCompleted();
-}
-
-void WallyHandleFaintingCry(void)
-{
- PlayCry1(GetMonData(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], MON_DATA_SPECIES), 25);
- WallyBufferExecCompleted();
-}
-
-void WallyHandleIntroSlide(void)
-{
- StartBattleIntroAnim(gBattleBufferA[gActiveBattler][1]);
- gUnknown_02024DE8 |= 1;
- WallyBufferExecCompleted();
-}
-
-void WallyHandleTrainerBallThrow(void)
-{
- u8 paletteNum;
- u8 taskId;
-
- oamt_add_pos2_onto_pos1(&gSprites[gBankSpriteIds[gActiveBattler]]);
- gSprites[gBankSpriteIds[gActiveBattler]].data[0] = 50;
- gSprites[gBankSpriteIds[gActiveBattler]].data[2] = -40;
- gSprites[gBankSpriteIds[gActiveBattler]].data[4] = gSprites[gBankSpriteIds[gActiveBattler]].pos1.y;
- gSprites[gBankSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
- gSprites[gBankSpriteIds[gActiveBattler]].data[5] = gActiveBattler;
- StoreSpriteCallbackInData(&gSprites[gBankSpriteIds[gActiveBattler]], sub_8030E38);
- StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBattler]], 1);
- paletteNum = AllocSpritePalette(0xD6F8);
- LoadCompressedPalette(gTrainerBackPicPaletteTable[2].data, 0x100 + paletteNum * 16, 32);
- gSprites[gBankSpriteIds[gActiveBattler]].oam.paletteNum = paletteNum;
- taskId = CreateTask(sub_8139A2C, 5);
- gTasks[taskId].data[0] = gActiveBattler;
- if (ewram17810[gActiveBattler].unk0_0)
- gTasks[gUnknown_02024E68[gActiveBattler]].func = sub_8044CA0;
- ewram17810[4].unk9 |= 1;
- gBattleBankFunc[gActiveBattler] = nullsub_91;
-}
-
-void sub_81398BC(u8 bank)
-{
- u16 species;
-
- ewram17800[bank].transformedSpecies = 0;
- gBattlerPartyIndexes[bank] = gBattleBufferA[bank][1];
- species = GetMonData(&gPlayerParty[gBattlerPartyIndexes[bank]], MON_DATA_SPECIES);
- gUnknown_0300434C[bank] = CreateInvisibleSpriteWithCallback(sub_80312F0);
- GetMonSpriteTemplate_803C56C(species, GetBattlerPosition(bank));
- gBankSpriteIds[bank] = CreateSprite(
- &gUnknown_02024E8C,
- GetBattlerSpriteCoord(bank, 2),
- sub_8077F68(bank),
- GetBattlerSubpriority(bank));
- gSprites[gUnknown_0300434C[bank]].data[1] = gBankSpriteIds[bank];
- gSprites[gBankSpriteIds[bank]].data[0] = bank;
- gSprites[gBankSpriteIds[bank]].data[2] = species;
- gSprites[gBankSpriteIds[bank]].oam.paletteNum = bank;
- StartSpriteAnim(&gSprites[gBankSpriteIds[bank]], gBattleMonForms[bank]);
- gSprites[gBankSpriteIds[bank]].invisible = TRUE;
- gSprites[gBankSpriteIds[bank]].callback = SpriteCallbackDummy;
- gSprites[gUnknown_0300434C[bank]].data[0] = StartSendOutMonAnimation(0, 0xFF);
-}
-
-void sub_8139A2C(u8 taskId)
-{
- if (gTasks[taskId].data[1] < 31)
- {
- gTasks[taskId].data[1]++;
- }
- else
- {
- u8 savedActiveBank = gActiveBattler;
-
- gActiveBattler = gTasks[taskId].data[0];
- gBattleBufferA[gActiveBattler][1] = gBattlerPartyIndexes[gActiveBattler];
- sub_81398BC(gActiveBattler);
- gBattleBankFunc[gActiveBattler] = sub_8137538;
- gActiveBattler = savedActiveBank;
- DestroyTask(taskId);
- }
-}
-
-void WallyHandlecmd48(void)
-{
- if (gBattleBufferA[gActiveBattler][1] != 0 && GetBattlerSide(gActiveBattler) == 0)
- {
- WallyBufferExecCompleted();
- }
- else
- {
- ewram17810[gActiveBattler].unk0_0 = 1;
- gUnknown_02024E68[gActiveBattler] = sub_8044804(gActiveBattler, (struct BattleInterfaceStruct2 *)&gBattleBufferA[gActiveBattler][4], gBattleBufferA[gActiveBattler][1], gBattleBufferA[gActiveBattler][2]);
- WallyBufferExecCompleted();
- }
-}
-
-void WallyHandlecmd49(void)
-{
- WallyBufferExecCompleted();
-}
-
-void WallyHandlecmd50(void)
-{
- WallyBufferExecCompleted();
-}
-
-void WallyHandleSpriteInvisibility(void)
-{
- WallyBufferExecCompleted();
-}
-
-void WallyHandleBattleAnimation(void)
-{
- u8 val2 = gBattleBufferA[gActiveBattler][1];
- u16 val = gBattleBufferA[gActiveBattler][2] | (gBattleBufferA[gActiveBattler][3] << 8);
-
- if (move_anim_start_t3(gActiveBattler, gActiveBattler, gActiveBattler, val2, val))
- WallyBufferExecCompleted();
- else
- gBattleBankFunc[gActiveBattler] = sub_8137940;
-}
-
-void WallyHandleLinkStandbyMsg(void)
-{
- WallyBufferExecCompleted();
-}
-
-void WallyHandleResetActionMoveSelection(void)
-{
- WallyBufferExecCompleted();
-}
-
-void WallyHandlecmd55(void)
-{
- gBattleOutcome = gBattleBufferA[gActiveBattler][1];
- FadeOutMapMusic(5);
- BeginFastPaletteFade(3);
- WallyBufferExecCompleted();
- if ((gBattleTypeFlags & BATTLE_TYPE_LINK) && !(gBattleTypeFlags & BATTLE_TYPE_WILD))
- gBattleBankFunc[gActiveBattler] = sub_813746C;
-}
-
-void WallyHandlecmd56(void)
-{
-}