summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcamthesaxman <cameronghall@cox.net>2017-08-26 20:19:34 -0500
committercamthesaxman <cameronghall@cox.net>2017-08-26 20:19:34 -0500
commit42a36959b95aad5a55a2f7bb17dcdc941dd89750 (patch)
treec8ee4852d5a69345bfc070a86095d7aaff934f28
parent991cbbffbcdbba6ba71ea9a08a7a28a29377f976 (diff)
fix build
-rw-r--r--asm/battle_controller_safari.s2
-rw-r--r--src/battle_2.c4
-rw-r--r--src/battle_7.c56
-rw-r--r--src/battle_8.c1642
-rw-r--r--src/battle_811DA74.c1606
-rw-r--r--src/battle_controller_linkopponent2.c14
-rw-r--r--src/battle_controller_linkpartner.c22
-rw-r--r--src/battle_controller_opponent.c16
-rw-r--r--src/battle_controller_player.c26
-rw-r--r--src/battle_controller_wally.c12
10 files changed, 76 insertions, 3324 deletions
diff --git a/asm/battle_controller_safari.s b/asm/battle_controller_safari.s
index a92f74550..97bcd15b5 100644
--- a/asm/battle_controller_safari.s
+++ b/asm/battle_controller_safari.s
@@ -587,7 +587,7 @@ SafariHandleTrainerThrow: @ 812B8B8
ldrb r0, [r4, 0x8]
ldr r5, _0812B970 @ =gActiveBank
ldrb r1, [r5]
- bl sub_8031AF4
+ bl LoadPlayerTrainerBankSprite
ldrb r6, [r4, 0x8]
ldrb r0, [r5]
bl GetBankIdentity
diff --git a/src/battle_2.c b/src/battle_2.c
index 06e20bb06..106d3333b 100644
--- a/src/battle_2.c
+++ b/src/battle_2.c
@@ -1347,8 +1347,8 @@ void sub_8010384(struct Sprite *sprite)
u16 species;
u8 yOffset;
- if (ewram17800[r6].unk2 != 0)
- species = ewram17800[r6].unk2;
+ if (ewram17800[r6].transformedSpecies != 0)
+ species = ewram17800[r6].transformedSpecies;
else
species = sprite->data2;
diff --git a/src/battle_7.c b/src/battle_7.c
index 4ae220f6c..cf3a3522e 100644
--- a/src/battle_7.c
+++ b/src/battle_7.c
@@ -177,9 +177,9 @@ bool8 move_anim_start_t3(u8 a, u8 b, u8 c, u8 d, u16 e)
gBattleMonForms[a] = e & 0x7F;
return TRUE;
}
- if (ewram17800[a].unk0_2 && sub_803163C(d) == 0)
+ if (ewram17800[a].substituteSprite && sub_803163C(d) == 0)
return TRUE;
- if (ewram17800[a].unk0_2 && d == 2 && gSprites[gObjectBankIDs[a]].invisible)
+ if (ewram17800[a].substituteSprite && d == 2 && gSprites[gObjectBankIDs[a]].invisible)
{
refresh_graphics_maybe(a, 1, gObjectBankIDs[a]);
sub_80324E0(a);
@@ -268,7 +268,7 @@ bool8 mplay_80342A4(u8 a)
return TRUE;
}
-void sub_8031794(struct Pokemon *pkmn, u8 b)
+void BattleLoadOpponentMonSprite(struct Pokemon *pkmn, u8 b)
{
u32 personalityValue;
u16 species;
@@ -279,14 +279,14 @@ void sub_8031794(struct Pokemon *pkmn, u8 b)
const u8 *lzPaletteData;
personalityValue = GetMonData(pkmn, MON_DATA_PERSONALITY);
- if (ewram17800[b].unk2 == 0)
+ if (ewram17800[b].transformedSpecies == 0)
{
species = GetMonData(pkmn, MON_DATA_SPECIES);
r7 = personalityValue;
}
else
{
- species = ewram17800[b].unk2;
+ species = ewram17800[b].transformedSpecies;
r7 = gPID_perBank[b];
}
otId = GetMonData(pkmn, MON_DATA_OT_ID);
@@ -300,7 +300,7 @@ void sub_8031794(struct Pokemon *pkmn, u8 b)
species,
r7);
paletteOffset = 0x100 + b * 16;
- if (ewram17800[b].unk2 == 0)
+ if (ewram17800[b].transformedSpecies == 0)
lzPaletteData = pokemon_get_pal(pkmn);
else
lzPaletteData = species_and_otid_get_pal(species, otId, personalityValue);
@@ -313,14 +313,14 @@ void sub_8031794(struct Pokemon *pkmn, u8 b)
sub_800D238(lzPaletteData, ewram + 0x16400);
LoadPalette(ewram + 0x16400 + gBattleMonForms[b] * 32, paletteOffset, 0x20);
}
- if (ewram17800[b].unk2 != 0)
+ if (ewram17800[b].transformedSpecies != 0)
{
BlendPalette(paletteOffset, 16, 6, 0x7FFF);
CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, 32);
}
}
-void sub_80318FC(struct Pokemon *pkmn, u8 b)
+void BattleLoadPlayerMonSprite(struct Pokemon *pkmn, u8 b)
{
u32 personalityValue;
u16 species;
@@ -331,14 +331,14 @@ void sub_80318FC(struct Pokemon *pkmn, u8 b)
const u8 *lzPaletteData;
personalityValue = GetMonData(pkmn, MON_DATA_PERSONALITY);
- if (ewram17800[b].unk2 == 0)
+ if (ewram17800[b].transformedSpecies == 0)
{
species = GetMonData(pkmn, MON_DATA_SPECIES);
r7 = personalityValue;
}
else
{
- species = ewram17800[b].unk2;
+ species = ewram17800[b].transformedSpecies;
r7 = gPID_perBank[b];
}
otId = GetMonData(pkmn, MON_DATA_OT_ID);
@@ -352,7 +352,7 @@ void sub_80318FC(struct Pokemon *pkmn, u8 b)
species,
r7);
paletteOffset = 0x100 + b * 16;
- if (ewram17800[b].unk2 == 0)
+ if (ewram17800[b].transformedSpecies == 0)
lzPaletteData = pokemon_get_pal(pkmn);
else
lzPaletteData = species_and_otid_get_pal(species, otId, personalityValue);
@@ -365,7 +365,7 @@ void sub_80318FC(struct Pokemon *pkmn, u8 b)
sub_800D238(lzPaletteData, ewram + 0x16400);
LoadPalette(ewram + 0x16400 + gBattleMonForms[b] * 32, paletteOffset, 0x20);
}
- if (ewram17800[b].unk2 != 0)
+ if (ewram17800[b].transformedSpecies != 0)
{
BlendPalette(paletteOffset, 16, 6, 0x7FFF);
CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, 32);
@@ -400,7 +400,7 @@ void sub_8031A6C(u16 a, u8 b)
LoadCompressedObjectPalette(&gTrainerFrontPicPaletteTable[a]);
}
-void sub_8031AF4(u16 a, u8 b)
+void LoadPlayerTrainerBankSprite(u16 a, u8 b)
{
u8 status;
@@ -602,12 +602,12 @@ void sub_8031F24(void)
s32 i;
for (i = 0; i < gNoOfAllBanks; i++)
- ewram17800[i].unk0_0 = gSprites[gObjectBankIDs[i]].invisible;
+ ewram17800[i].invisible = gSprites[gObjectBankIDs[i]].invisible;
}
void sub_8031F88(u8 a)
{
- ewram17800[a].unk0_0 = gSprites[gObjectBankIDs[a]].invisible;
+ ewram17800[a].invisible = gSprites[gObjectBankIDs[a]].invisible;
}
void sub_8031FC4(u8 a, u8 b, bool8 c)
@@ -625,7 +625,7 @@ void sub_8031FC4(u8 a, u8 b, bool8 c)
paletteOffset = 0x100 + a * 16;
LoadPalette(ewram + 0x16400 + ewram17840.unk0 * 32, paletteOffset, 32);
gBattleMonForms[a] = ewram17840.unk0;
- if (ewram17800[a].unk2 != 0)
+ if (ewram17800[a].transformedSpecies != 0)
{
BlendPalette(paletteOffset, 16, 6, 0x7FFF);
CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, 32);
@@ -704,7 +704,7 @@ void sub_8031FC4(u8 a, u8 b, bool8 c)
CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, 32);
if (!IsContest())
{
- ewram17800[a].unk2 = species;
+ ewram17800[a].transformedSpecies = species;
gBattleMonForms[a] = gBattleMonForms[b];
}
gSprites[gObjectBankIDs[a]].pos1.y = sub_8077F68(a);
@@ -712,7 +712,7 @@ void sub_8031FC4(u8 a, u8 b, bool8 c)
}
}
-void sub_8032350(u8 a, u8 b)
+void BattleLoadSubstituteSprite(u8 a, u8 b)
{
u8 r4;
u16 foo;
@@ -745,16 +745,16 @@ void sub_8032350(u8 a, u8 b)
if (!IsContest())
{
if (GetBankSide(a) != 0)
- sub_8031794(&gEnemyParty[gBattlePartyID[a]], a);
+ BattleLoadOpponentMonSprite(&gEnemyParty[gBattlePartyID[a]], a);
else
- sub_80318FC(&gPlayerParty[gBattlePartyID[a]], a);
+ BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[a]], a);
}
}
}
void refresh_graphics_maybe(u8 a, u8 b, u8 spriteId)
{
- sub_8032350(a, b);
+ BattleLoadSubstituteSprite(a, b);
StartSpriteAnim(&gSprites[spriteId], gBattleMonForms[a]);
if (b == 0)
gSprites[spriteId].pos1.y = sub_8077F7C(a);
@@ -765,12 +765,12 @@ void refresh_graphics_maybe(u8 a, u8 b, u8 spriteId)
void sub_80324BC(u8 a, u16 b)
{
if (b == 0xA4)
- ewram17800[a].unk0_2 = 1;
+ ewram17800[a].substituteSprite = 1;
}
void sub_80324E0(u8 a)
{
- ewram17800[a].unk0_2 = 0;
+ ewram17800[a].substituteSprite = 0;
}
void sub_80324F8(struct Pokemon *pkmn, u8 b)
@@ -891,9 +891,9 @@ void sub_80328A4(struct Sprite *sprite)
}
if (gAnimScriptActive || r7->invisible)
invisible = TRUE;
- else if (ewram17800[r4].unk2 != 0 && gEnemyMonElevation[ewram17800[r4].unk2] == 0)
+ else if (ewram17800[r4].transformedSpecies != 0 && gEnemyMonElevation[ewram17800[r4].transformedSpecies] == 0)
invisible = TRUE;
- if (ewram17800[r4].unk0_2)
+ if (ewram17800[r4].substituteSprite)
invisible = TRUE;
sprite->pos1.x = r7->pos1.x;
sprite->pos2.x = r7->pos2.x;
@@ -909,8 +909,8 @@ void sub_8032984(u8 a, u16 b)
{
if (GetBankSide(a) != 0)
{
- if (ewram17800[a].unk2 != 0)
- b = ewram17800[a].unk2;
+ if (ewram17800[a].transformedSpecies != 0)
+ b = ewram17800[a].transformedSpecies;
if (gEnemyMonElevation[b] != 0)
gSprites[ewram17810[a].unk7].callback = sub_80328A4;
else
@@ -948,7 +948,7 @@ void sub_8032A38(void)
void sub_8032AA8(u8 a, u8 b)
{
- ewram17800[a].unk2 = 0;
+ ewram17800[a].transformedSpecies = 0;
gBattleMonForms[a] = 0;
if (b == 0)
sub_80324E0(a);
diff --git a/src/battle_8.c b/src/battle_8.c
deleted file mode 100644
index 44e42d0d6..000000000
--- a/src/battle_8.c
+++ /dev/null
@@ -1,1642 +0,0 @@
-#include "global.h"
-#include "battle.h"
-#include "battle_ai.h"
-#include "battle_interface.h"
-#include "data2.h"
-#include "graphics.h"
-#include "main.h"
-#include "pokemon.h"
-#include "rng.h"
-#include "rom3.h"
-#include "songs.h"
-#include "sound.h"
-#include "sprite.h"
-#include "string_util.h"
-#include "task.h"
-#include "text.h"
-#include "util.h"
-
-struct UnknownStruct3
-{
- u16 moves[4];
- u8 pp[4];
- u8 ppBonuses;
-};
-
-extern u8 gActiveBank;
-extern u8 gBattleBufferA[][0x200];
-extern u16 gBattlePartyID[];
-extern u8 gObjectBankIDs[];
-extern u8 gBattleMonForms[];
-extern struct SpriteTemplate gUnknown_02024E8C;
-extern void (*gBattleBankFunc[])(void);
-extern u8 gUnknown_0300434C[];
-extern u8 gHealthboxIDs[];
-extern u16 gBattleTypeFlags;
-extern u16 gTrainerBattleOpponent;
-extern u32 *gDisableStructMoveAnim;
-extern u32 gMoveDmgMoveAnim;
-extern u16 gMovePowerMoveAnim;
-extern u8 gHappinessMoveAnim;
-extern u16 gWeatherMoveAnim;
-extern u32 gPID_perBank[];
-extern u8 gUnknown_0202F7C4;
-extern u8 gAnimScriptActive;
-extern void (*gAnimScriptCallback)(void);
-extern struct Window gUnknown_03004210;
-extern u16 gUnknown_030042A0;
-extern u16 gUnknown_030042A4;
-extern u8 gDisplayedStringBattle[];
-extern u8 gBankTarget;
-extern u8 gAbsentBankFlags;
-extern bool8 gDoingBattleAnim;
-extern u16 gUnknown_02024DE8;
-extern u8 gUnknown_02024E68[];
-extern MainCallback gPreBattleCallback1;
-
-extern u8 sub_8077ABC();
-extern u8 sub_8077F68();
-extern u8 sub_8079E90();
-extern void sub_8033018(void);
-extern void BattleLoadOpponentMonSprite();
-extern u8 GetBankIdentity(u8);
-extern void sub_8032984(u8, u16);
-extern void sub_80333D4(void);
-extern void sub_80312F0(struct Sprite *);
-extern u8 sub_8046400();
-extern void sub_8032A08();
-extern void sub_8043DB0();
-extern void sub_8033160(void);
-extern u8 sub_8135FBC(void);
-extern u8 get_trainer_class_pic_index(void);
-extern void sub_80313A0(struct Sprite *);
-extern void sub_8032B4C(void);
-extern void sub_8031A6C(u16, u8);
-extern void sub_8032B84(void);
-extern void sub_8078B34(struct Sprite *);
-extern void sub_8032BBC(void);
-extern void oamt_add_pos2_onto_pos1();
-extern void oamt_set_x3A_32();
-extern void sub_803311C(void);
-extern void sub_8010384(struct Sprite *);
-extern bool8 mplay_80342A4(u8);
-extern u8 sub_8031720();
-extern void ExecuteMoveAnim();
-extern void sub_80326EC();
-extern void sub_8031F24(void);
-extern void sub_80324BC();
-extern void BufferStringBattle();
-extern void sub_80331D0(void);
-extern void sub_8036B0C(void);
-extern u8 GetBankByPlayerAI(u8);
-extern u8 sub_8036CD4(void);
-extern void sub_80330C8(void);
-extern void sub_8043D84();
-extern void sub_8045A5C();
-void sub_8033494(void);
-extern void move_anim_start_t2_for_situation();
-extern void bx_blink_t7(void);
-extern void sub_8047858();
-extern u8 GetBankSide(u8);
-extern void sub_80E43C0();
-extern void sub_8044CA0(u8);
-extern void nullsub_45(void);
-extern void sub_8031B74();
-extern bool8 IsDoubleBattle(void);
-extern void sub_8032E2C(void);
-extern u8 sub_8078874();
-extern u8 move_anim_start_t3();
-extern void sub_80334C0(void);
-extern void OpponentBufferExecCompleted(void);
-
-u32 sub_8033598(u8, u8 *);
-void sub_8033E24(u8);
-void sub_803495C(u8, u8);
-void sub_8034B74(void);
-void sub_8035238(void);
-void sub_8035C10(struct Sprite *);
-void sub_8035C44(u8);
-void sub_8035E2C(void);
-
-void OpponentHandleGetAttributes(void)
-{
- u8 buffer[256];
- int r6 = 0;
- s32 i;
-
- if (gBattleBufferA[gActiveBank][2] == 0)
- {
- r6 = sub_8033598(gBattlePartyID[gActiveBank], buffer);
- }
- else
- {
- u8 r4 = gBattleBufferA[gActiveBank][2];
-
- for (i = 0; i < 6; i++)
- {
- if (r4 & 1)
- r6 += sub_8033598(i, buffer + r6);
- r4 >>= 1;
- }
- }
- dp01_build_cmdbuf_x1D_1D_numargs_varargs(1, r6, buffer);
- OpponentBufferExecCompleted();
-}
-
-u32 sub_8033598(u8 a, u8 *buffer)
-{
- struct BattlePokemon battlePokemon;
- struct UnknownStruct3 moveData;
- u8 nickname[20];
- u8 *src;
- s16 data16;
- u32 data32;
- s32 size = 0;
-
- switch (gBattleBufferA[gActiveBank][1])
- {
- case 0:
- battlePokemon.species = GetMonData(&gEnemyParty[a], MON_DATA_SPECIES);
- battlePokemon.item = GetMonData(&gEnemyParty[a], MON_DATA_HELD_ITEM);
- for (size = 0; size < 4; size++)
- {
- battlePokemon.moves[size] = GetMonData(&gEnemyParty[a], MON_DATA_MOVE1 + size);
- battlePokemon.pp[size] = GetMonData(&gEnemyParty[a], MON_DATA_PP1 + size);
- }
- battlePokemon.ppBonuses = GetMonData(&gEnemyParty[a], MON_DATA_PP_BONUSES);
- battlePokemon.friendship = GetMonData(&gEnemyParty[a], MON_DATA_FRIENDSHIP);
- battlePokemon.experience = GetMonData(&gEnemyParty[a], MON_DATA_EXP);
- battlePokemon.hpIV = GetMonData(&gEnemyParty[a], MON_DATA_HP_IV);
- battlePokemon.attackIV = GetMonData(&gEnemyParty[a], MON_DATA_ATK_IV);
- battlePokemon.defenseIV = GetMonData(&gEnemyParty[a], MON_DATA_DEF_IV);
- battlePokemon.speedIV = GetMonData(&gEnemyParty[a], MON_DATA_SPD_IV);
- battlePokemon.spAttackIV = GetMonData(&gEnemyParty[a], MON_DATA_SPATK_IV);
- battlePokemon.spDefenseIV = GetMonData(&gEnemyParty[a], MON_DATA_SPDEF_IV);
- battlePokemon.personality = GetMonData(&gEnemyParty[a], MON_DATA_PERSONALITY);
- battlePokemon.status1 = GetMonData(&gEnemyParty[a], MON_DATA_STATUS);
- battlePokemon.level = GetMonData(&gEnemyParty[a], MON_DATA_LEVEL);
- battlePokemon.hp = GetMonData(&gEnemyParty[a], MON_DATA_HP);
- battlePokemon.maxHP = GetMonData(&gEnemyParty[a], MON_DATA_MAX_HP);
- battlePokemon.attack = GetMonData(&gEnemyParty[a], MON_DATA_ATK);
- battlePokemon.defense = GetMonData(&gEnemyParty[a], MON_DATA_DEF);
- battlePokemon.speed = GetMonData(&gEnemyParty[a], MON_DATA_SPD);
- battlePokemon.spAttack = GetMonData(&gEnemyParty[a], MON_DATA_SPATK);
- battlePokemon.spDefense = GetMonData(&gEnemyParty[a], MON_DATA_SPDEF);
- battlePokemon.isEgg = GetMonData(&gEnemyParty[a], MON_DATA_IS_EGG);
- battlePokemon.altAbility = GetMonData(&gEnemyParty[a], MON_DATA_ALT_ABILITY);
- battlePokemon.otId = GetMonData(&gEnemyParty[a], MON_DATA_OT_ID);
- GetMonData(&gEnemyParty[a], MON_DATA_NICKNAME, nickname);
- StringCopy10(battlePokemon.nickname, nickname);
- GetMonData(&gEnemyParty[a], MON_DATA_OT_NAME, battlePokemon.otName);
- src = (u8 *)&battlePokemon;
- for (size = 0; size < sizeof(battlePokemon); size++)
- buffer[size] = src[size];
- break;
- case 1:
- data16 = GetMonData(&gEnemyParty[a], MON_DATA_SPECIES);
- buffer[0] = data16;
- buffer[1] = data16 >> 8;
- size = 2;
- break;
- case 2:
- data16 = GetMonData(&gEnemyParty[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(&gEnemyParty[a], MON_DATA_MOVE1 + size);
- moveData.pp[size] = GetMonData(&gEnemyParty[a], MON_DATA_PP1 + size);
- }
- moveData.ppBonuses = GetMonData(&gEnemyParty[a], MON_DATA_PP_BONUSES);
- src = (u8 *)&moveData;
- for (size = 0; size < sizeof(moveData); size++)
- buffer[size] = src[size];
- break;
- case 4:
- case 5:
- case 6:
- case 7:
- data16 = GetMonData(&gEnemyParty[a], MON_DATA_MOVE1 + gBattleBufferA[gActiveBank][1] - 4);
- buffer[0] = data16;
- buffer[1] = data16 >> 8;
- size = 2;
- break;
- case 8:
- for (size = 0; size < 4; size++)
- buffer[size] = GetMonData(&gEnemyParty[a], MON_DATA_PP1 + size);
- buffer[size] = GetMonData(&gEnemyParty[a], MON_DATA_PP_BONUSES);
- size++;
- break;
- case 9:
- case 10:
- case 11:
- case 12:
- buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_PP1 + gBattleBufferA[gActiveBank][1] - 9);
- size = 1;
- break;
- case 17:
- data32 = GetMonData(&gEnemyParty[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(&gEnemyParty[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(&gEnemyParty[a], MON_DATA_HP_EV);
- size = 1;
- break;
- case 20:
- buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_ATK_EV);
- size = 1;
- break;
- case 21:
- buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_DEF_EV);
- size = 1;
- break;
- case 22:
- buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_SPD_EV);
- size = 1;
- break;
- case 23:
- buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_SPATK_EV);
- size = 1;
- break;
- case 24:
- buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_SPDEF_EV);
- size = 1;
- break;
- case 25:
- buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_FRIENDSHIP);
- size = 1;
- break;
- case 26:
- buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_POKERUS);
- size = 1;
- break;
- case 27:
- buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_MET_LOCATION);
- size = 1;
- break;
- case 28:
- buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_MET_LEVEL);
- size = 1;
- break;
- case 29:
- buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_MET_GAME);
- size = 1;
- break;
- case 30:
- buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_POKEBALL);
- size = 1;
- break;
- case 31:
- buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_HP_IV);
- buffer[1] = GetMonData(&gEnemyParty[a], MON_DATA_ATK_IV);
- buffer[2] = GetMonData(&gEnemyParty[a], MON_DATA_DEF_IV);
- buffer[3] = GetMonData(&gEnemyParty[a], MON_DATA_SPD_IV);
- buffer[4] = GetMonData(&gEnemyParty[a], MON_DATA_SPATK_IV);
- buffer[5] = GetMonData(&gEnemyParty[a], MON_DATA_SPDEF_IV);
- size = 6;
- break;
- case 32:
- buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_HP_IV);
- size = 1;
- break;
- case 33:
- buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_ATK_IV);
- size = 1;
- break;
- case 34:
- buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_DEF_IV);
- size = 1;
- break;
- case 35:
- buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_SPD_IV);
- size = 1;
- break;
- case 36:
- buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_SPATK_IV);
- size = 1;
- break;
- case 37:
- buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_SPDEF_IV);
- size = 1;
- break;
- case 38:
- data32 = GetMonData(&gEnemyParty[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(&gEnemyParty[a], MON_DATA_CHECKSUM);
- buffer[0] = data16;
- buffer[1] = data16 >> 8;
- size = 2;
- break;
- case 40:
- data32 = GetMonData(&gEnemyParty[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(&gEnemyParty[a], MON_DATA_LEVEL);
- size = 1;
- break;
- case 42:
- data16 = GetMonData(&gEnemyParty[a], MON_DATA_HP);
- buffer[0] = data16;
- buffer[1] = data16 >> 8;
- size = 2;
- break;
- case 43:
- data16 = GetMonData(&gEnemyParty[a], MON_DATA_MAX_HP);
- buffer[0] = data16;
- buffer[1] = data16 >> 8;
- size = 2;
- break;
- case 44:
- data16 = GetMonData(&gEnemyParty[a], MON_DATA_ATK);
- buffer[0] = data16;
- buffer[1] = data16 >> 8;
- size = 2;
- break;
- case 45:
- data16 = GetMonData(&gEnemyParty[a], MON_DATA_DEF);
- buffer[0] = data16;
- buffer[1] = data16 >> 8;
- size = 2;
- break;
- case 46:
- data16 = GetMonData(&gEnemyParty[a], MON_DATA_SPD);
- buffer[0] = data16;
- buffer[1] = data16 >> 8;
- size = 2;
- break;
- case 47:
- data16 = GetMonData(&gEnemyParty[a], MON_DATA_SPATK);
- buffer[0] = data16;
- buffer[1] = data16 >> 8;
- size = 2;
- break;
- case 48:
- data16 = GetMonData(&gEnemyParty[a], MON_DATA_SPDEF);
- buffer[0] = data16;
- buffer[1] = data16 >> 8;
- size = 2;
- break;
- case 49:
- buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_COOL);
- size = 1;
- break;
- case 50:
- buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_BEAUTY);
- size = 1;
- break;
- case 51:
- buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_CUTE);
- size = 1;
- break;
- case 52:
- buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_SMART);
- size = 1;
- break;
- case 53:
- buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_TOUGH);
- size = 1;
- break;
- case 54:
- buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_SHEEN);
- size = 1;
- break;
- case 55:
- buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_COOL_RIBBON);
- size = 1;
- break;
- case 56:
- buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_BEAUTY_RIBBON);
- size = 1;
- break;
- case 57:
- buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_CUTE_RIBBON);
- size = 1;
- break;
- case 58:
- buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_SMART_RIBBON);
- size = 1;
- break;
- case 59:
- buffer[0] = GetMonData(&gEnemyParty[a], MON_DATA_TOUGH_RIBBON);
- size = 1;
- break;
- }
- return size;
-}
-
-void dp01t_01_2_read_pokmon_data_slice(void)
-{
- struct BattlePokemon buffer;
- u8 *src = (u8 *)&gEnemyParty[gBattlePartyID[gActiveBank]] + gBattleBufferA[gActiveBank][1];
- u8 *dst = (u8 *)&buffer + gBattleBufferA[gActiveBank][1];
- u8 i;
-
- for (i = 0; i < gBattleBufferA[gActiveBank][2]; i++)
- dst[i] = src[i];
- dp01_build_cmdbuf_x1D_1D_numargs_varargs(1, gBattleBufferA[gActiveBank][2], dst);
- OpponentBufferExecCompleted();
-}
-
-void OpponentHandleSetAttributes(void)
-{
- u8 i;
- u8 r4;
-
- if (gBattleBufferA[gActiveBank][2] == 0)
- {
- sub_8033E24(gBattlePartyID[gActiveBank]);
- }
- else
- {
- r4 = gBattleBufferA[gActiveBank][2];
- for (i = 0; i < 6; i++)
- {
- if (r4 & 1)
- sub_8033E24(i);
- r4 >>= 1;
- }
- }
- OpponentBufferExecCompleted();
-}
-
-void sub_8033E24(u8 a)
-{
- struct BattlePokemon *battlePokemon = (struct BattlePokemon *)&gBattleBufferA[gActiveBank][3];
- struct UnknownStruct3 *moveData = (struct UnknownStruct3 *)&gBattleBufferA[gActiveBank][3];
- s32 i;
-
- switch (gBattleBufferA[gActiveBank][1])
- {
- case 0:
- {
- u8 iv;
-
- SetMonData(&gEnemyParty[a], MON_DATA_SPECIES, (u8 *)&battlePokemon->species);
- SetMonData(&gEnemyParty[a], MON_DATA_HELD_ITEM, (u8 *)&battlePokemon->item);
- for (i = 0; i < 4; i++)
- {
- SetMonData(&gEnemyParty[a], MON_DATA_MOVE1 + i, (u8 *)&battlePokemon->moves[i]);
- SetMonData(&gEnemyParty[a], MON_DATA_PP1 + i, (u8 *)&battlePokemon->pp[i]);
- }
- SetMonData(&gEnemyParty[a], MON_DATA_PP_BONUSES, (u8 *)&battlePokemon->ppBonuses);
- SetMonData(&gEnemyParty[a], MON_DATA_FRIENDSHIP, (u8 *)&battlePokemon->friendship);
- SetMonData(&gEnemyParty[a], MON_DATA_EXP, (u8 *)&battlePokemon->experience);
- iv = battlePokemon->hpIV;
- SetMonData(&gEnemyParty[a], MON_DATA_HP_IV, (u8 *)&iv);
- iv = battlePokemon->attackIV;
- SetMonData(&gEnemyParty[a], MON_DATA_ATK_IV, (u8 *)&iv);
- iv = battlePokemon->defenseIV;
- SetMonData(&gEnemyParty[a], MON_DATA_DEF_IV, (u8 *)&iv);
- iv = battlePokemon->speedIV;
- SetMonData(&gEnemyParty[a], MON_DATA_SPD_IV, (u8 *)&iv);
- iv = battlePokemon->spAttackIV;
- SetMonData(&gEnemyParty[a], MON_DATA_SPATK_IV, (u8 *)&iv);
- iv = battlePokemon->spDefenseIV;
- SetMonData(&gEnemyParty[a], MON_DATA_SPDEF_IV, (u8 *)&iv);
- SetMonData(&gEnemyParty[a], MON_DATA_PERSONALITY, (u8 *)&battlePokemon->personality);
- SetMonData(&gEnemyParty[a], MON_DATA_STATUS, (u8 *)&battlePokemon->status1);
- SetMonData(&gEnemyParty[a], MON_DATA_LEVEL, (u8 *)&battlePokemon->level);
- SetMonData(&gEnemyParty[a], MON_DATA_HP, (u8 *)&battlePokemon->hp);
- SetMonData(&gEnemyParty[a], MON_DATA_MAX_HP, (u8 *)&battlePokemon->maxHP);
- SetMonData(&gEnemyParty[a], MON_DATA_ATK, (u8 *)&battlePokemon->attack);
- SetMonData(&gEnemyParty[a], MON_DATA_DEF, (u8 *)&battlePokemon->defense);
- SetMonData(&gEnemyParty[a], MON_DATA_SPD, (u8 *)&battlePokemon->speed);
- SetMonData(&gEnemyParty[a], MON_DATA_SPATK, (u8 *)&battlePokemon->spAttack);
- SetMonData(&gEnemyParty[a], MON_DATA_SPDEF, (u8 *)&battlePokemon->spDefense);
- }
- break;
- case 1:
- SetMonData(&gEnemyParty[a], MON_DATA_SPECIES, &gBattleBufferA[gActiveBank][3]);
- break;
- case 2:
- SetMonData(&gEnemyParty[a], MON_DATA_HELD_ITEM, &gBattleBufferA[gActiveBank][3]);
- break;
- case 3:
- for (i = 0; i < 4; i++)
- {
- SetMonData(&gEnemyParty[a], MON_DATA_MOVE1 + i, (u8 *)&moveData->moves[i]);
- SetMonData(&gEnemyParty[a], MON_DATA_PP1 + i, (u8 *)&moveData->pp[i]);
- }
- SetMonData(&gEnemyParty[a], MON_DATA_PP_BONUSES, &moveData->ppBonuses);
- break;
- case 4:
- case 5:
- case 6:
- case 7:
- SetMonData(&gEnemyParty[a], MON_DATA_MOVE1 + gBattleBufferA[gActiveBank][1] - 4, &gBattleBufferA[gActiveBank][3]);
- break;
- case 8:
- SetMonData(&gEnemyParty[a], MON_DATA_PP1, &gBattleBufferA[gActiveBank][3]);
- SetMonData(&gEnemyParty[a], MON_DATA_PP2, &gBattleBufferA[gActiveBank][4]);
- SetMonData(&gEnemyParty[a], MON_DATA_PP3, &gBattleBufferA[gActiveBank][5]);
- SetMonData(&gEnemyParty[a], MON_DATA_PP4, &gBattleBufferA[gActiveBank][6]);
- SetMonData(&gEnemyParty[a], MON_DATA_PP_BONUSES, &gBattleBufferA[gActiveBank][7]);
- break;
- case 9:
- case 10:
- case 11:
- case 12:
- SetMonData(&gEnemyParty[a], MON_DATA_PP1 + gBattleBufferA[gActiveBank][1] - 9, &gBattleBufferA[gActiveBank][3]);
- break;
- case 17:
- SetMonData(&gEnemyParty[a], MON_DATA_OT_ID, &gBattleBufferA[gActiveBank][3]);
- break;
- case 18:
- SetMonData(&gEnemyParty[a], MON_DATA_EXP, &gBattleBufferA[gActiveBank][3]);
- break;
- case 19:
- SetMonData(&gEnemyParty[a], MON_DATA_HP_EV, &gBattleBufferA[gActiveBank][3]);
- break;
- case 20:
- SetMonData(&gEnemyParty[a], MON_DATA_ATK_EV, &gBattleBufferA[gActiveBank][3]);
- break;
- case 21:
- SetMonData(&gEnemyParty[a], MON_DATA_DEF_EV, &gBattleBufferA[gActiveBank][3]);
- break;
- case 22:
- SetMonData(&gEnemyParty[a], MON_DATA_SPD_EV, &gBattleBufferA[gActiveBank][3]);
- break;
- case 23:
- SetMonData(&gEnemyParty[a], MON_DATA_SPATK_EV, &gBattleBufferA[gActiveBank][3]);
- break;
- case 24:
- SetMonData(&gEnemyParty[a], MON_DATA_SPDEF_EV, &gBattleBufferA[gActiveBank][3]);
- break;
- case 25:
- SetMonData(&gEnemyParty[a], MON_DATA_FRIENDSHIP, &gBattleBufferA[gActiveBank][3]);
- break;
- case 26:
- SetMonData(&gEnemyParty[a], MON_DATA_POKERUS, &gBattleBufferA[gActiveBank][3]);
- break;
- case 27:
- SetMonData(&gEnemyParty[a], MON_DATA_MET_LOCATION, &gBattleBufferA[gActiveBank][3]);
- break;
- case 28:
- SetMonData(&gEnemyParty[a], MON_DATA_MET_LEVEL, &gBattleBufferA[gActiveBank][3]);
- break;
- case 29:
- SetMonData(&gEnemyParty[a], MON_DATA_MET_GAME, &gBattleBufferA[gActiveBank][3]);
- break;
- case 30:
- SetMonData(&gEnemyParty[a], MON_DATA_POKEBALL, &gBattleBufferA[gActiveBank][3]);
- break;
- case 31:
- SetMonData(&gEnemyParty[a], MON_DATA_HP_IV, &gBattleBufferA[gActiveBank][3]);
- SetMonData(&gEnemyParty[a], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBank][4]);
- SetMonData(&gEnemyParty[a], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBank][5]);
- SetMonData(&gEnemyParty[a], MON_DATA_SPD_IV, &gBattleBufferA[gActiveBank][6]);
- SetMonData(&gEnemyParty[a], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBank][7]);
- SetMonData(&gEnemyParty[a], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBank][8]);
- break;
- case 32:
- SetMonData(&gEnemyParty[a], MON_DATA_HP_IV, &gBattleBufferA[gActiveBank][3]);
- break;
- case 33:
- SetMonData(&gEnemyParty[a], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBank][3]);
- break;
- case 34:
- SetMonData(&gEnemyParty[a], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBank][3]);
- break;
- case 35:
- SetMonData(&gEnemyParty[a], MON_DATA_SPD_IV, &gBattleBufferA[gActiveBank][3]);
- break;
- case 36:
- SetMonData(&gEnemyParty[a], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBank][3]);
- break;
- case 37:
- SetMonData(&gEnemyParty[a], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBank][3]);
- break;
- case 38:
- SetMonData(&gEnemyParty[a], MON_DATA_PERSONALITY, &gBattleBufferA[gActiveBank][3]);
- break;
- case 39:
- SetMonData(&gEnemyParty[a], MON_DATA_CHECKSUM, &gBattleBufferA[gActiveBank][3]);
- break;
- case 40:
- SetMonData(&gEnemyParty[a], MON_DATA_STATUS, &gBattleBufferA[gActiveBank][3]);
- break;
- case 41:
- SetMonData(&gEnemyParty[a], MON_DATA_LEVEL, &gBattleBufferA[gActiveBank][3]);
- break;
- case 42:
- SetMonData(&gEnemyParty[a], MON_DATA_HP, &gBattleBufferA[gActiveBank][3]);
- break;
- case 43:
- SetMonData(&gEnemyParty[a], MON_DATA_MAX_HP, &gBattleBufferA[gActiveBank][3]);
- break;
- case 44:
- SetMonData(&gEnemyParty[a], MON_DATA_ATK, &gBattleBufferA[gActiveBank][3]);
- break;
- case 45:
- SetMonData(&gEnemyParty[a], MON_DATA_DEF, &gBattleBufferA[gActiveBank][3]);
- break;
- case 46:
- SetMonData(&gEnemyParty[a], MON_DATA_SPD, &gBattleBufferA[gActiveBank][3]);
- break;
- case 47:
- SetMonData(&gEnemyParty[a], MON_DATA_SPATK, &gBattleBufferA[gActiveBank][3]);
- break;
- case 48:
- SetMonData(&gEnemyParty[a], MON_DATA_SPDEF, &gBattleBufferA[gActiveBank][3]);
- break;
- case 49:
- SetMonData(&gEnemyParty[a], MON_DATA_COOL, &gBattleBufferA[gActiveBank][3]);
- break;
- case 50:
- SetMonData(&gEnemyParty[a], MON_DATA_BEAUTY, &gBattleBufferA[gActiveBank][3]);
- break;
- case 51:
- SetMonData(&gEnemyParty[a], MON_DATA_CUTE, &gBattleBufferA[gActiveBank][3]);
- break;
- case 52:
- SetMonData(&gEnemyParty[a], MON_DATA_SMART, &gBattleBufferA[gActiveBank][3]);
- break;
- case 53:
- SetMonData(&gEnemyParty[a], MON_DATA_TOUGH, &gBattleBufferA[gActiveBank][3]);
- break;
- case 54:
- SetMonData(&gEnemyParty[a], MON_DATA_SHEEN, &gBattleBufferA[gActiveBank][3]);
- break;
- case 55:
- SetMonData(&gEnemyParty[a], MON_DATA_COOL_RIBBON, &gBattleBufferA[gActiveBank][3]);
- break;
- case 56:
- SetMonData(&gEnemyParty[a], MON_DATA_BEAUTY_RIBBON, &gBattleBufferA[gActiveBank][3]);
- break;
- case 57:
- SetMonData(&gEnemyParty[a], MON_DATA_CUTE_RIBBON, &gBattleBufferA[gActiveBank][3]);
- break;
- case 58:
- SetMonData(&gEnemyParty[a], MON_DATA_SMART_RIBBON, &gBattleBufferA[gActiveBank][3]);
- break;
- case 59:
- SetMonData(&gEnemyParty[a], MON_DATA_TOUGH_RIBBON, &gBattleBufferA[gActiveBank][3]);
- break;
- }
-}
-
-void sub_8034744(void)
-{
- u8 *dst;
- u8 i;
-
- dst = (u8 *)&gEnemyParty[gBattlePartyID[gActiveBank]] + gBattleBufferA[gActiveBank][1];
- for (i = 0; i < gBattleBufferA[gActiveBank][2]; i++)
- dst[i] = gBattleBufferA[gActiveBank][3 + i];
- OpponentBufferExecCompleted();
-}
-
-void OpponentHandleLoadPokeSprite(void)
-{
- u16 species = GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES);
-
- BattleLoadOpponentMonSprite(&gEnemyParty[gBattlePartyID[gActiveBank]], gActiveBank);
- GetMonSpriteTemplate_803C56C(species, GetBankIdentity(gActiveBank));
- gObjectBankIDs[gActiveBank] = CreateSprite(
- &gUnknown_02024E8C,
- sub_8077ABC(gActiveBank, 2),
- sub_8077F68(gActiveBank),
- sub_8079E90(gActiveBank));
- gSprites[gObjectBankIDs[gActiveBank]].pos2.x = -240;
- gSprites[gObjectBankIDs[gActiveBank]].data0 = gActiveBank;
- gSprites[gObjectBankIDs[gActiveBank]].data2 = species;
- gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = gActiveBank;
- StartSpriteAnim(&gSprites[gObjectBankIDs[gActiveBank]], gBattleMonForms[gActiveBank]);
- sub_8032984(gActiveBank, GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES));
- gBattleBankFunc[gActiveBank] = sub_8033018;
-}
-
-void OpponentHandleSendOutPoke(void)
-{
- gBattlePartyID[gActiveBank] = gBattleBufferA[gActiveBank][1];
-
- sub_803495C(gActiveBank, gBattleBufferA[gActiveBank][2]);
- gBattleBankFunc[gActiveBank] = sub_80333D4;
-}
-
-void sub_803495C(u8 a, u8 b)
-{
- u16 species;
-
- sub_8032AA8(a, b);
- gBattlePartyID[a] = gBattleBufferA[a][1];
- species = GetMonData(&gEnemyParty[gBattlePartyID[a]], MON_DATA_SPECIES);
- gUnknown_0300434C[a] = CreateInvisibleSpriteWithCallback(sub_80312F0);
- BattleLoadOpponentMonSprite(&gEnemyParty[gBattlePartyID[a]], a);
- GetMonSpriteTemplate_803C56C(species, GetBankIdentity(a));
- gObjectBankIDs[a] = CreateSprite(
- &gUnknown_02024E8C,
- sub_8077ABC(a, 2),
- sub_8077F68(a),
- sub_8079E90(a));
- gSprites[gObjectBankIDs[a]].data0 = a;
- gSprites[gObjectBankIDs[a]].data2 = species;
- gSprites[gUnknown_0300434C[a]].data1 = gObjectBankIDs[a];
- gSprites[gObjectBankIDs[a]].oam.paletteNum = a;
- StartSpriteAnim(&gSprites[gObjectBankIDs[a]], gBattleMonForms[a]);
- gSprites[gObjectBankIDs[a]].invisible = TRUE;
- gSprites[gObjectBankIDs[a]].callback = SpriteCallbackDummy;
- gSprites[gUnknown_0300434C[a]].data0 = sub_8046400(0, 0xFE);
-}
-
-void OpponentHandleReturnPokeToBall(void)
-{
- if (gBattleBufferA[gActiveBank][1] == 0)
- {
- ewram17810[gActiveBank].unk4 = 0;
- gBattleBankFunc[gActiveBank] = sub_8034B74;
- }
- else
- {
- FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]);
- DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]);
- sub_8032A08(gActiveBank);
- sub_8043DB0(gHealthboxIDs[gActiveBank]);
- OpponentBufferExecCompleted();
- }
-}
-
-void sub_8034B74(void)
-{
- switch (ewram17810[gActiveBank].unk4)
- {
- case 0:
- if (ewram17800[gActiveBank].substituteSprite)
- move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5);
- ewram17810[gActiveBank].unk4 = 1;
- break;
- case 1:
- if (!ewram17810[gActiveBank].unk0_6)
- {
- ewram17810[gActiveBank].unk4 = 0;
- move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 2);
- gBattleBankFunc[gActiveBank] = sub_8033160;
- }
- break;
- }
-}
-
-void OpponentHandleTrainerThrow(void)
-{
- u32 trainerPicIndex;
-
- if (gTrainerBattleOpponent == 0x400)
- trainerPicIndex = GetSecretBaseTrainerPicIndex();
- else if (gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER)
- trainerPicIndex = get_trainer_class_pic_index();
- else if (gBattleTypeFlags & BATTLE_TYPE_EREADER_TRAINER)
- trainerPicIndex = sub_8135FBC();
- else
- trainerPicIndex = gTrainers[gTrainerBattleOpponent].trainerPic;
-
- sub_8031A6C(trainerPicIndex, gActiveBank);
- GetMonSpriteTemplate_803C5A0(trainerPicIndex, GetBankIdentity(gActiveBank));
- gObjectBankIDs[gActiveBank] = CreateSprite(
- &gUnknown_02024E8C,
- 0xB0,
- 40 + 4 * (8 - gTrainerFrontPicCoords[trainerPicIndex].coords),
- sub_8079E90(gActiveBank));
- gSprites[gObjectBankIDs[gActiveBank]].pos2.x = -240;
- gSprites[gObjectBankIDs[gActiveBank]].data0 = 2;
- gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicIndex].tag);
- gSprites[gObjectBankIDs[gActiveBank]].data5 = gSprites[gObjectBankIDs[gActiveBank]].oam.tileNum;
- gSprites[gObjectBankIDs[gActiveBank]].oam.tileNum = GetSpriteTileStartByTag(gTrainerFrontPicTable[trainerPicIndex].tag);
- gSprites[gObjectBankIDs[gActiveBank]].oam.affineParam = trainerPicIndex;
- gSprites[gObjectBankIDs[gActiveBank]].callback = sub_80313A0;
- gBattleBankFunc[gActiveBank] = sub_8032B4C;
-}
-
-void OpponentHandleTrainerSlide(void)
-{
- u32 trainerPicIndex;
-
- if (gTrainerBattleOpponent == 0x400)
- trainerPicIndex = GetSecretBaseTrainerPicIndex();
- else if (gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER)
- trainerPicIndex = get_trainer_class_pic_index();
- else if (gBattleTypeFlags & BATTLE_TYPE_EREADER_TRAINER)
- trainerPicIndex = sub_8135FBC();
- else
- trainerPicIndex = gTrainers[gTrainerBattleOpponent].trainerPic;
-
- sub_8031A6C(trainerPicIndex, gActiveBank);
- GetMonSpriteTemplate_803C5A0(trainerPicIndex, GetBankIdentity(gActiveBank));
- gObjectBankIDs[gActiveBank] = CreateSprite(
- &gUnknown_02024E8C,
- 0xB0,
- 40 + 4 * (8 - gTrainerFrontPicCoords[trainerPicIndex].coords),
- 0x1E);
- gSprites[gObjectBankIDs[gActiveBank]].pos2.x = 96;
- gSprites[gObjectBankIDs[gActiveBank]].pos1.x += 32;
- gSprites[gObjectBankIDs[gActiveBank]].data0 = -2;
- gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicIndex].tag);
- gSprites[gObjectBankIDs[gActiveBank]].data5 = gSprites[gObjectBankIDs[gActiveBank]].oam.tileNum;
- gSprites[gObjectBankIDs[gActiveBank]].oam.tileNum = GetSpriteTileStartByTag(gTrainerFrontPicTable[trainerPicIndex].tag);
- gSprites[gObjectBankIDs[gActiveBank]].oam.affineParam = trainerPicIndex;
- gSprites[gObjectBankIDs[gActiveBank]].callback = sub_80313A0;
- gBattleBankFunc[gActiveBank] = sub_8032B84;
-}
-
-void OpponentHandleTrainerSlideBack(void)
-{
- oamt_add_pos2_onto_pos1(&gSprites[gObjectBankIDs[gActiveBank]]);
- gSprites[gObjectBankIDs[gActiveBank]].data0 = 35;
- gSprites[gObjectBankIDs[gActiveBank]].data2 = 280;
- gSprites[gObjectBankIDs[gActiveBank]].data4 = gSprites[gObjectBankIDs[gActiveBank]].pos1.y;
- gSprites[gObjectBankIDs[gActiveBank]].callback = sub_8078B34;
- oamt_set_x3A_32(&gSprites[gObjectBankIDs[gActiveBank]], SpriteCallbackDummy);
- gBattleBankFunc[gActiveBank] = sub_8032BBC;
-}
-
-void sub_8035030(void)
-{
- if (ewram17810[gActiveBank].unk4 == 0)
- {
- if (ewram17800[gActiveBank].substituteSprite)
- move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5);
- ewram17810[gActiveBank].unk4++;
- }
- else if (!ewram17810[gActiveBank].unk0_6)
- {
- ewram17810[gActiveBank].unk4 = 0;
- PlaySE12WithPanning(SE_POKE_DEAD, 63);
- gSprites[gObjectBankIDs[gActiveBank]].callback = sub_8010384;
- gBattleBankFunc[gActiveBank] = sub_803311C;
- }
-}
-
-void sub_80350D4(void)
-{
- OpponentBufferExecCompleted();
-}
-
-void sub_80350E0(void)
-{
- OpponentBufferExecCompleted();
-}
-
-void OpponentHandleBallThrow(void)
-{
- OpponentBufferExecCompleted();
-}
-
-void OpponentHandlePause(void)
-{
- OpponentBufferExecCompleted();
-}
-
-void OpponentHandleMoveAnimation(void)
-{
- if (!mplay_80342A4(gActiveBank))
- {
- u32 r0 = gBattleBufferA[gActiveBank][1]
- | (gBattleBufferA[gActiveBank][2] << 8);
-
- gUnknown_0202F7C4 = gBattleBufferA[gActiveBank][3];
- gMovePowerMoveAnim = gBattleBufferA[gActiveBank][4]
- | (gBattleBufferA[gActiveBank][5] << 8);
- gMoveDmgMoveAnim = gBattleBufferA[gActiveBank][6]
- | (gBattleBufferA[gActiveBank][7] << 8)
- | (gBattleBufferA[gActiveBank][8] << 16)
- | (gBattleBufferA[gActiveBank][9] << 24);
- gHappinessMoveAnim = gBattleBufferA[gActiveBank][10];
- gWeatherMoveAnim = gBattleBufferA[gActiveBank][12]
- | (gBattleBufferA[gActiveBank][13] << 8);
- gDisableStructMoveAnim = (u32 *)&gBattleBufferA[gActiveBank][16];
- gPID_perBank[gActiveBank] = *gDisableStructMoveAnim;
-
- // Dead code. sub_8031720 always returns 0.
- if (sub_8031720(r0, gUnknown_0202F7C4) != 0)
- {
- OpponentBufferExecCompleted();
- }
- else
- {
- ewram17810[gActiveBank].unk4 = 0;
- gBattleBankFunc[gActiveBank] = sub_8035238;
- }
- }
-}
-
-void sub_8035238(void)
-{
- u16 r4 = gBattleBufferA[gActiveBank][1]
- | (gBattleBufferA[gActiveBank][2] << 8);
- u8 r7 = gBattleBufferA[gActiveBank][11];
-
- switch (ewram17810[gActiveBank].unk4)
- {
- case 0:
- if (ewram17800[gActiveBank].substituteSprite && !ewram17800[gActiveBank].unk0_3)
- {
- ewram17800[gActiveBank].unk0_3 = 1;
- move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5);
- }
- ewram17810[gActiveBank].unk4 = 1;
- break;
- case 1:
- if (!ewram17810[gActiveBank].unk0_6)
- {
- sub_80326EC(0);
- ExecuteMoveAnim(r4);
- ewram17810[gActiveBank].unk4 = 2;
- }
- break;
- case 2:
- gAnimScriptCallback();
- if (!gAnimScriptActive)
- {
- sub_80326EC(1);
- if ((ewram17800[gActiveBank].substituteSprite) && r7 <= 1)
- {
- move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 6);
- ewram17800[gActiveBank].unk0_3 = 0;
- }
- ewram17810[gActiveBank].unk4 = 3;
- }
- break;
- case 3:
- if (!ewram17810[gActiveBank].unk0_6)
- {
- sub_8031F24();
- sub_80324BC(
- gActiveBank,
- gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8));
- ewram17810[gActiveBank].unk4 = 0;
- OpponentBufferExecCompleted();
- }
- break;
- }
-}
-
-void OpponentHandlePrintString(void)
-{
- gUnknown_030042A4 = 0;
- gUnknown_030042A0 = 0;
- BufferStringBattle(*(u16 *)&gBattleBufferA[gActiveBank][2]);
- sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15);
- gBattleBankFunc[gActiveBank] = sub_80331D0;
-}
-
-void OpponentHandlePrintStringPlayerOnly(void)
-{
- OpponentBufferExecCompleted();
-}
-
-void sub_803540C(void)
-{
- sub_8036B0C();
- OpponentBufferExecCompleted();
-}
-
-void sub_803541C(void)
-{
- OpponentBufferExecCompleted();
-}
-
-#ifdef NONMATCHING
-void sub_8035428(void)
-{
- u16 r4;
- // Needed to match closer
- struct {u16 moves[4];} *r5 = (void *)&gBattleBufferA[gActiveBank][4];
-
- if (gBattleTypeFlags & 0x498)
- {
- BattleAI_SetupAIData();
- r4 = BattleAI_GetAIActionToUse();
- switch (r4)
- {
- case 5:
- dp01_build_cmdbuf_x21_a_bb(1, 4, 0);
- break;
- case 4:
- dp01_build_cmdbuf_x21_a_bb(1, 3, 0);
- break;
- default:
- if (gBattleMoves[r5->moves[r4]].target & 0x12)
- gBankTarget = gActiveBank;
- if (gBattleMoves[r5->moves[r4]].target & 8)
- {
- gBankTarget = GetBankByPlayerAI(0);
- if (gAbsentBankFlags & gBitTable[gBankTarget])
- gBankTarget = GetBankByPlayerAI(2);
- }
- r4 |= gBankTarget << 8;
- dp01_build_cmdbuf_x21_a_bb(1, 10, r4);
- break;
- }
- OpponentBufferExecCompleted();
- }
- else
- {
- u16 r2;
-
- do
- {
- // Can't for the life of me get this to match.
- r4 = Random() % 4;
- r2 = r5->moves[r4];
- } while (r2 == 0);
-
- if (gBattleMoves[r2].target & 0x12)
- {
- r4 |= gActiveBank << 8;
- dp01_build_cmdbuf_x21_a_bb(1, 10, r4);
- }
- else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
- {
- u16 r2 = GetBankByPlayerAI(Random() & 2) << 8;
-
- dp01_build_cmdbuf_x21_a_bb(1, 10, r4 | r2);
- }
- else
- {
- u16 r2 = GetBankByPlayerAI(0) << 8;
-
- dp01_build_cmdbuf_x21_a_bb(1, 10, r4 | r2);
- }
- OpponentBufferExecCompleted();
- }
-}
-#else
-__attribute__((naked))
-void sub_8035428(void)
-{
- asm(".syntax unified\n\
- push {r4-r6,lr}\n\
- ldr r6, _0803545C @ =gActiveBank\n\
- ldrb r0, [r6]\n\
- lsls r0, 9\n\
- ldr r1, _08035460 @ =gUnknown_02023A64\n\
- adds r5, r0, r1\n\
- ldr r0, _08035464 @ =gBattleTypeFlags\n\
- ldrh r1, [r0]\n\
- movs r0, 0x93\n\
- lsls r0, 3\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _080354F8\n\
- bl BattleAI_SetupAIData\n\
- bl BattleAI_GetAIActionToUse\n\
- lsls r0, 24\n\
- lsrs r4, r0, 24\n\
- cmp r4, 0x4\n\
- beq _08035468\n\
- cmp r4, 0x5\n\
- bne _08035474\n\
- movs r0, 0x1\n\
- movs r1, 0x4\n\
- b _0803546C\n\
- .align 2, 0\n\
-_0803545C: .4byte gActiveBank\n\
-_08035460: .4byte gUnknown_02023A64\n\
-_08035464: .4byte gBattleTypeFlags\n\
-_08035468:\n\
- movs r0, 0x1\n\
- movs r1, 0x3\n\
-_0803546C:\n\
- movs r2, 0\n\
- bl dp01_build_cmdbuf_x21_a_bb\n\
- b _080354E0\n\
-_08035474:\n\
- ldr r3, _080354E8 @ =gBattleMoves\n\
- lsls r0, r4, 1\n\
- adds r2, r5, r0\n\
- ldrh r1, [r2]\n\
- lsls r0, r1, 1\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- adds r0, r3\n\
- ldrb r1, [r0, 0x6]\n\
- movs r0, 0x12\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08035494\n\
- ldr r1, _080354EC @ =gBankTarget\n\
- ldrb r0, [r6]\n\
- strb r0, [r1]\n\
-_08035494:\n\
- ldrh r1, [r2]\n\
- lsls r0, r1, 1\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- adds r0, r3\n\
- ldrb r1, [r0, 0x6]\n\
- movs r0, 0x8\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _080354CE\n\
- movs r0, 0\n\
- bl GetBankByPlayerAI\n\
- ldr r5, _080354EC @ =gBankTarget\n\
- strb r0, [r5]\n\
- ldr r0, _080354F0 @ =gAbsentBankFlags\n\
- ldrb r1, [r0]\n\
- ldr r2, _080354F4 @ =gBitTable\n\
- ldrb r0, [r5]\n\
- lsls r0, 2\n\
- adds r0, r2\n\
- ldr r0, [r0]\n\
- ands r1, r0\n\
- cmp r1, 0\n\
- beq _080354CE\n\
- movs r0, 0x2\n\
- bl GetBankByPlayerAI\n\
- strb r0, [r5]\n\
-_080354CE:\n\
- ldr r0, _080354EC @ =gBankTarget\n\
- ldrb r0, [r0]\n\
- lsls r0, 8\n\
- orrs r4, r0\n\
- movs r0, 0x1\n\
- movs r1, 0xA\n\
- adds r2, r4, 0\n\
- bl dp01_build_cmdbuf_x21_a_bb\n\
-_080354E0:\n\
- bl OpponentBufferExecCompleted\n\
- b _0803558A\n\
- .align 2, 0\n\
-_080354E8: .4byte gBattleMoves\n\
-_080354EC: .4byte gBankTarget\n\
-_080354F0: .4byte gAbsentBankFlags\n\
-_080354F4: .4byte gBitTable\n\
-_080354F8:\n\
- movs r6, 0x3\n\
-_080354FA:\n\
- bl Random\n\
- adds r4, r0, 0\n\
- ands r4, r6\n\
- lsls r0, r4, 1\n\
- adds r0, r5, r0\n\
- ldrh r2, [r0]\n\
- cmp r2, 0\n\
- beq _080354FA\n\
- ldr r1, _08035534 @ =gBattleMoves\n\
- lsls r0, r2, 1\n\
- adds r0, r2\n\
- lsls r0, 2\n\
- adds r0, r1\n\
- ldrb r1, [r0, 0x6]\n\
- movs r0, 0x12\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0803553C\n\
- ldr r0, _08035538 @ =gActiveBank\n\
- ldrb r0, [r0]\n\
- lsls r0, 8\n\
- orrs r4, r0\n\
- movs r0, 0x1\n\
- movs r1, 0xA\n\
- adds r2, r4, 0\n\
- bl dp01_build_cmdbuf_x21_a_bb\n\
- b _08035586\n\
- .align 2, 0\n\
-_08035534: .4byte gBattleMoves\n\
-_08035538: .4byte gActiveBank\n\
-_0803553C:\n\
- ldr r0, _0803556C @ =gBattleTypeFlags\n\
- ldrh r1, [r0]\n\
- movs r0, 0x1\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08035570\n\
- bl Random\n\
- movs r1, 0x2\n\
- ands r1, r0\n\
- lsls r1, 24\n\
- lsrs r1, 24\n\
- adds r0, r1, 0\n\
- bl GetBankByPlayerAI\n\
- adds r2, r0, 0\n\
- lsls r2, 24\n\
- lsrs r2, 16\n\
- orrs r2, r4\n\
- movs r0, 0x1\n\
- movs r1, 0xA\n\
- bl dp01_build_cmdbuf_x21_a_bb\n\
- b _08035586\n\
- .align 2, 0\n\
-_0803556C: .4byte gBattleTypeFlags\n\
-_08035570:\n\
- movs r0, 0\n\
- bl GetBankByPlayerAI\n\
- adds r2, r0, 0\n\
- lsls r2, 24\n\
- lsrs r2, 16\n\
- orrs r2, r4\n\
- movs r0, 0x1\n\
- movs r1, 0xA\n\
- bl dp01_build_cmdbuf_x21_a_bb\n\
-_08035586:\n\
- bl OpponentBufferExecCompleted\n\
-_0803558A:\n\
- pop {r4-r6}\n\
- pop {r0}\n\
- bx r0\n\
- .syntax divided\n");
-}
-#endif
-
-void sub_8035590(void)
-{
- // What is this?
- dp01_build_cmdbuf_x23_aa_0(1, ewram[0x160D4 + gActiveBank / 2 * 2]);
- OpponentBufferExecCompleted();
-}
-
-void sub_80355C0(void)
-{
- s32 r4;
-
- if (ewram[0x160C8 + GetBankIdentity(gActiveBank) / 2] == 6)
- {
- u8 r6;
- u8 r5;
-
- r4 = sub_8036CD4();
- if (r4 == 6)
- {
- if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
- {
- r5 = GetBankByPlayerAI(1);
- r6 = r5;
- }
- else
- {
- r6 = GetBankByPlayerAI(1);
- r5 = GetBankByPlayerAI(3);
- }
- for (r4 = 0; r4 < 6; r4++)
- {
- if (GetMonData(&gEnemyParty[r4], MON_DATA_HP) != 0
- && r4 != gBattlePartyID[r6]
- && r4 != gBattlePartyID[r5])
- break;
- }
- }
- }
- else
- {
- r4 = ewram[0x160C8 + GetBankIdentity(gActiveBank) / 2];
- ewram[0x160C8 + GetBankIdentity(gActiveBank) / 2] = 6;
- }
- ewram[0x16068 + gActiveBank] = r4;
- dp01_build_cmdbuf_x22_a_three_bytes(1, r4, 0);
- OpponentBufferExecCompleted();
-}
-
-void sub_80356C0(void)
-{
- OpponentBufferExecCompleted();
-}
-
-void OpponentHandleHealthBarUpdate(void)
-{
- s16 r7;
-
- load_gfxc_health_bar(0);
- r7 = (gBattleBufferA[gActiveBank][3] << 8) | gBattleBufferA[gActiveBank][2];
- if (r7 != 0x7FFF)
- {
- u32 maxHP = GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_MAX_HP);
- u32 hp = GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_HP);
-
- sub_8043D84(gActiveBank, gHealthboxIDs[gActiveBank], maxHP, hp, r7);
- }
- else
- {
- u32 maxHP = GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_MAX_HP);
-
- sub_8043D84(gActiveBank, gHealthboxIDs[gActiveBank], maxHP, 0, r7);
- }
- gBattleBankFunc[gActiveBank] = sub_80330C8;
-}
-
-void OpponentHandleExpBarUpdate(void)
-{
- OpponentBufferExecCompleted();
-}
-
-void OpponentHandleStatusIconUpdate(void)
-{
- if (mplay_80342A4(gActiveBank) == 0)
- {
- sub_8045A5C(gHealthboxIDs[gActiveBank], &gEnemyParty[gBattlePartyID[gActiveBank]], 9);
- ewram17810[gActiveBank].unk0_4 = 0;
- gBattleBankFunc[gActiveBank] = sub_8033494;
- }
-}
-
-void OpponentHandleStatusAnimation(void)
-{
- if (mplay_80342A4(gActiveBank) == 0)
- {
- move_anim_start_t2_for_situation(
- gBattleBufferA[gActiveBank][1],
- gBattleBufferA[gActiveBank][2]
- | (gBattleBufferA[gActiveBank][3] << 8)
- | (gBattleBufferA[gActiveBank][4] << 16)
- | (gBattleBufferA[gActiveBank][5] << 24));
- gBattleBankFunc[gActiveBank] = sub_8033494;
- }
-}
-
-void OpponentHandleStatusXor(void)
-{
- OpponentBufferExecCompleted();
-}
-
-void sub_80358B0(void)
-{
- OpponentBufferExecCompleted();
-}
-
-void OpponentHandleDMATransfer(void)
-{
- OpponentBufferExecCompleted();
-}
-
-void sub_80358C8(void)
-{
- OpponentBufferExecCompleted();
-}
-
-void sub_80358D4(void)
-{
- OpponentBufferExecCompleted();
-}
-
-void sub_80358E0(void)
-{
- OpponentBufferExecCompleted();
-}
-
-void sub_80358EC(void)
-{
- OpponentBufferExecCompleted();
-}
-
-void sub_80358F8(void)
-{
- OpponentBufferExecCompleted();
-}
-
-void sub_8035904(void)
-{
- OpponentBufferExecCompleted();
-}
-
-void sub_8035910(void)
-{
- gUnknown_020238C8.unk0_0 = 0;
- OpponentBufferExecCompleted();
-}
-
-void sub_803592C(void)
-{
- gUnknown_020238C8.unk0_0 = gBattleBufferA[gActiveBank][1];
- OpponentBufferExecCompleted();
-}
-
-void sub_8035964(void)
-{
- gUnknown_020238C8.unk0_7 = 0;
- OpponentBufferExecCompleted();
-}
-
-void sub_803597C(void)
-{
- gUnknown_020238C8.unk0_7 ^= 1;
- OpponentBufferExecCompleted();
-}
-
-void OpponentHandleHitAnimation(void)
-{
- if (gSprites[gObjectBankIDs[gActiveBank]].invisible == TRUE)
- {
- OpponentBufferExecCompleted();
- }
- else
- {
- gDoingBattleAnim = TRUE;
- gSprites[gObjectBankIDs[gActiveBank]].data1 = 0;
- sub_8047858(gActiveBank);
- gBattleBankFunc[gActiveBank] = bx_blink_t7;
- }
-}
-
-void sub_8035A14(void)
-{
- OpponentBufferExecCompleted();
-}
-
-void OpponentHandleEffectivenessSound(void)
-{
- s8 pan;
-
- if (GetBankSide(gActiveBank) == 0)
- pan = -64;
- else
- pan = 63;
- PlaySE12WithPanning(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8), pan);
- OpponentBufferExecCompleted();
-}
-
-void sub_8035A64(void)
-{
- PlayFanfare(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8));
- OpponentBufferExecCompleted();
-}
-
-void OpponentHandleFaintingCry(void)
-{
- PlayCry3(
- GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES),
- 25, 5);
- OpponentBufferExecCompleted();
-}
-
-void dp01t_2E_7_battle_intro(void)
-{
- sub_80E43C0(gBattleBufferA[gActiveBank][1]);
- gUnknown_02024DE8 |= 1;
- OpponentBufferExecCompleted();
-}
-
-void sub_8035B04(void)
-{
- u8 taskId;
-
- oamt_add_pos2_onto_pos1(&gSprites[gObjectBankIDs[gActiveBank]]);
- gSprites[gObjectBankIDs[gActiveBank]].data0 = 35;
- gSprites[gObjectBankIDs[gActiveBank]].data2 = 280;
- gSprites[gObjectBankIDs[gActiveBank]].data4 = gSprites[gObjectBankIDs[gActiveBank]].pos1.y;
- gSprites[gObjectBankIDs[gActiveBank]].callback = sub_8078B34;
- oamt_set_x3A_32(&gSprites[gObjectBankIDs[gActiveBank]], sub_8035C10);
- taskId = CreateTask(sub_8035C44, 5);
- gTasks[taskId].data[0] = gActiveBank;
- if (ewram17810[gActiveBank].unk0_0)
- gTasks[gUnknown_02024E68[gActiveBank]].func = sub_8044CA0;
- ewram17840.unk9_0 = 1;
- gBattleBankFunc[gActiveBank] = nullsub_45;
-}
-
-void sub_8035C10(struct Sprite *sprite)
-{
- sub_8031B74(sprite->oam.affineParam);
- sprite->oam.tileNum = sprite->data5;
- FreeSpriteOamMatrix(sprite);
- DestroySprite(sprite);
-}
-
-void sub_8035C44(u8 taskId)
-{
- u8 r9;
-
- r9 = gActiveBank;
- gActiveBank = gTasks[taskId].data[0];
- if (!IsDoubleBattle() || (gBattleTypeFlags & BATTLE_TYPE_MULTI))
- {
- gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank];
- sub_803495C(gActiveBank, 0);
- }
- else
- {
- gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank];
- sub_803495C(gActiveBank, 0);
- gActiveBank ^= 2;
- gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank];
- sub_803495C(gActiveBank, 0);
- gActiveBank ^= 2;
- }
- gBattleBankFunc[gActiveBank] = sub_8032E2C;
- gActiveBank = r9;
- DestroyTask(taskId);
-}
-
-void dp01t_30_7_0803D67C(void)
-{
- if (gBattleBufferA[gActiveBank][1] != 0 && GetBankSide(gActiveBank) == 0)
- {
- OpponentBufferExecCompleted();
- return;
- }
-
- ewram17810[gActiveBank].unk0_0 = 1;
- if (gBattleBufferA[gActiveBank][2] != 0)
- {
- if (ewram17810[gActiveBank].unk1_1 < 2)
- {
- ewram17810[gActiveBank].unk1_1++;
- return;
- }
- else
- {
- ewram17810[gActiveBank].unk1_1 = 0;
- }
- }
- gUnknown_02024E68[gActiveBank] = sub_8044804(
- gActiveBank,
- (struct BattleInterfaceStruct2 *)&gBattleBufferA[gActiveBank][4],
- gBattleBufferA[gActiveBank][1],
- gBattleBufferA[gActiveBank][2]);
- ewram17810[gActiveBank].unk5 = 0;
- if (gBattleBufferA[gActiveBank][2] != 0)
- ewram17810[gActiveBank].unk5 = 0x5D;
- gBattleBankFunc[gActiveBank] = sub_8035E2C;
-}
-
-void sub_8035E2C(void)
-{
- if (ewram17810[gActiveBank].unk5++ >= 93)
- {
- ewram17810[gActiveBank].unk5 = 0;
- OpponentBufferExecCompleted();
- }
-}
-
-void sub_8035E6C(void)
-{
- if (ewram17810[gActiveBank].unk0_0)
- gTasks[gUnknown_02024E68[gActiveBank]].func = sub_8044CA0;
- OpponentBufferExecCompleted();
-}
-
-void sub_8035EB8(void)
-{
- OpponentBufferExecCompleted();
-}
-
-void OpponentHandleSpriteInvisibility(void)
-{
- if (sub_8078874(gActiveBank) != 0)
- {
- gSprites[gObjectBankIDs[gActiveBank]].invisible = gBattleBufferA[gActiveBank][1];
- sub_8031F88(gActiveBank);
- }
- OpponentBufferExecCompleted();
-}
-
-void OpponentHandleBattleAnimation(void)
-{
- if (mplay_80342A4(gActiveBank) == 0)
- {
- u8 r3 = gBattleBufferA[gActiveBank][1];
- u16 r4 = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8);
-
- if (move_anim_start_t3(gActiveBank, gActiveBank, gActiveBank, r3, r4) != 0)
- OpponentBufferExecCompleted();
- else
- gBattleBankFunc[gActiveBank] = sub_80334C0;
- }
-}
-
-void OpponentHandleLinkStandbyMsg(void)
-{
- OpponentBufferExecCompleted();
-}
-
-void OpponentHandleResetActionMoveSelection(void)
-{
- OpponentBufferExecCompleted();
-}
-
-void sub_8035FA4(void)
-{
- if ((gBattleTypeFlags & BATTLE_TYPE_LINK) && !(gBattleTypeFlags & BATTLE_TYPE_WILD))
- {
- gMain.inBattle = FALSE;
- gMain.callback1 = gPreBattleCallback1;
- SetMainCallback2(gMain.savedCallback);
- }
- OpponentBufferExecCompleted();
-}
-
-void nullsub_46(void)
-{
-}
diff --git a/src/battle_811DA74.c b/src/battle_811DA74.c
deleted file mode 100644
index 14f547b82..000000000
--- a/src/battle_811DA74.c
+++ /dev/null
@@ -1,1606 +0,0 @@
-#include "global.h"
-#include "battle.h"
-#include "battle_interface.h"
-#include "data2.h"
-#include "battle_811DA74.h"
-#include "battle_anim_813F0F4.h"
-#include "link.h"
-#include "m4a.h"
-#include "main.h"
-#include "palette.h"
-#include "pokeball.h"
-#include "pokemon.h"
-#include "rom3.h"
-#include "rom_8077ABC.h"
-#include "sound.h"
-#include "songs.h"
-#include "sprite.h"
-#include "string_util.h"
-#include "task.h"
-#include "text.h"
-#include "util.h"
-
-struct UnknownStruct1
-{
- u8 unk0;
- u8 unk1;
- u8 unk2[0x1FE];
-};
-
-//Possibly PokemonSubstruct1
-struct UnknownStruct3
-{
- u16 moves[4];
- u8 pp[4];
- u8 ppBonuses;
-};
-
-extern u16 gBattleTypeFlags;
-extern u8 gDisplayedStringBattle[];
-extern u8 gBattleBufferA[][0x200];
-extern u8 gActiveBank;
-extern u32 gBattleExecBuffer;
-extern u16 gBattlePartyID[];
-extern u8 gObjectBankIDs[];
-extern u8 gBattleOutcome;
-extern u16 gUnknown_02024DE8;
-extern u8 gUnknown_02024E68[];
-extern u8 gDoingBattleAnim;
-extern u32 gPID_perBank[];
-extern struct SpriteTemplate gUnknown_02024E8C;
-extern u32 *gDisableStructMoveAnim;
-extern u32 gMoveDmgMoveAnim;
-extern u16 gMovePowerMoveAnim;
-extern u8 gHappinessMoveAnim;
-extern u16 gWeatherMoveAnim;
-extern u8 gUnknown_0202F7C4;
-extern struct Window gUnknown_03004210;
-extern u16 gUnknown_030042A0;
-extern u16 gUnknown_030042A4;
-extern MainCallback gPreBattleCallback1;
-extern void (*gBattleBankFunc[])(void);
-extern u8 gHealthboxIDs[];
-extern u8 gUnknown_0300434C[];
-extern u8 gBattleMonForms[];
-extern u8 gAnimScriptActive;
-extern void (*gAnimScriptCallback)(void);
-extern void (*const gLinkPartnerBufferCommands[])(void);
-
-extern u8 move_anim_start_t3();
-extern u8 sub_8078874();
-extern void sub_8044CA0(u8);
-extern void sub_8030E38(struct Sprite *);
-extern void sub_80E43C0();
-extern void sub_8047858();
-extern void move_anim_start_t2_for_situation();
-extern void load_gfxc_health_bar();
-extern void sub_8043D84();
-extern void BufferStringBattle();
-extern void sub_8031F24(void);
-extern void sub_80326EC();
-extern void ExecuteMoveAnim();
-extern void sub_80324BC();
-extern u8 sub_8031720();
-extern u8 mplay_80342A4();
-extern void oamt_add_pos2_onto_pos1();
-extern void oamt_set_x3A_32();
-extern void sub_8078B34(struct Sprite *);
-extern void sub_80105EC(struct Sprite *);
-extern s32 sub_803FC34(u16);
-extern void LoadPlayerTrainerBankSprite();
-extern void sub_80313A0(struct Sprite *);
-extern u8 sub_8046400();
-extern void sub_80312F0(struct Sprite *);
-extern u8 CreateInvisibleSpriteWithCallback();
-extern void BattleLoadPlayerMonSprite();
-extern u8 sub_8077ABC();
-extern u8 sub_8077F68();
-extern u8 sub_8079E90();
-extern void nullsub_10();
-extern void sub_8045A5C();
-extern void sub_804777C();
-extern void sub_8043DFC();
-//extern s16 sub_8045C78();
-extern void sub_80440EC();
-extern void sub_80324F8();
-extern void nullsub_9(u16);
-extern void sub_8043DB0();
-extern void move_anim_start_t4();
-extern void c3_0802FDF4(u8);
-extern void sub_8031F88();
-extern void sub_8141828();
-extern void c2_8011A1C(void);
-
-void LinkPartnerBufferRunCommand(void);
-void sub_811E0A0(void);
-void LinkPartnerBufferExecCompleted(void);
-u32 dp01_getattr_by_ch1_for_player_pokemon(u8 a, u8 *b);
-void sub_811EC68(u8);
-void sub_811F864(u8, u8);
-void sub_811FA5C(void);
-void sub_811FF30(void);
-void sub_812071C(u8);
-void sub_81208E0(void);
-
-
-void nullsub_74(void)
-{
-}
-
-void SetBankFuncToLinkPartnerBufferRunCommand(void)
-{
- gBattleBankFunc[gActiveBank] = LinkPartnerBufferRunCommand;
-}
-
-void LinkPartnerBufferRunCommand(void)
-{
- if (gBattleExecBuffer & gBitTable[gActiveBank])
- {
- if (gBattleBufferA[gActiveBank][0] <= 0x38)
- gLinkPartnerBufferCommands[gBattleBufferA[gActiveBank][0]]();
- else
- LinkPartnerBufferExecCompleted();
- }
-}
-
-void sub_811DAE4(void)
-{
- if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy)
- LinkPartnerBufferExecCompleted();
-}
-
-void sub_811DB1C(void)
-{
- if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy)
- {
- nullsub_10(0);
- FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]);
- DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]);
- LinkPartnerBufferExecCompleted();
- }
-}
-
-void sub_811DB84(void)
-{
- if ((--ewram17810[gActiveBank].unk9) == 0xFF)
- {
- ewram17810[gActiveBank].unk9 = 0;
- LinkPartnerBufferExecCompleted();
- }
-}
-
-void sub_811DBC0(void)
-{
- bool8 r6 = FALSE;
-
- if (!IsDoubleBattle() || (IsDoubleBattle() && (gBattleTypeFlags & 0x40)))
- {
- if (gSprites[gHealthboxIDs[gActiveBank]].callback == SpriteCallbackDummy)
- r6 = TRUE;
- }
- else
- {
- if (gSprites[gHealthboxIDs[gActiveBank]].callback == SpriteCallbackDummy
- && gSprites[gHealthboxIDs[gActiveBank ^ 2]].callback == SpriteCallbackDummy)
- r6 = TRUE;
- }
- if (IsCryPlayingOrClearCrySongs())
- r6 = FALSE;
- if (r6)
- {
- ewram17810[gActiveBank].unk9 = 3;
- gBattleBankFunc[gActiveBank] = sub_811DB84;
- }
-}
-
-void sub_811DCA0(void)
-{
- u8 r2;
-
- if (!ewram17810[gActiveBank].unk0_3)
- {
- // I couldn't get it to work as a bitfield here
- r2 = *((u8 *)&ewram17810[gActiveBank ^ 2]) & 8;
- if (!r2 && (++ewram17810[gActiveBank].unk9) != 1)
- {
- ewram17810[gActiveBank].unk9 = r2;
- if (IsDoubleBattle() && !(gBattleTypeFlags & 0x40))
- {
- DestroySprite(&gSprites[gUnknown_0300434C[gActiveBank ^ 2]]);
- sub_8045A5C(gHealthboxIDs[gActiveBank ^ 2], &gPlayerParty[gBattlePartyID[gActiveBank ^ 2]], 0);
- sub_804777C(gActiveBank ^ 2);
- sub_8043DFC(gHealthboxIDs[gActiveBank ^ 2]);
- }
- DestroySprite(&gSprites[gUnknown_0300434C[gActiveBank]]);
- sub_8045A5C(gHealthboxIDs[gActiveBank], &gPlayerParty[gBattlePartyID[gActiveBank]], 0);
- sub_804777C(gActiveBank);
- sub_8043DFC(gHealthboxIDs[gActiveBank]);
- (s8)ewram17810[4].unk9 &= ~1;
- gBattleBankFunc[gActiveBank] = sub_811DBC0;
- }
- }
-}
-
-void sub_811DDE8(void)
-{
- if (gSprites[gObjectBankIDs[gActiveBank]].animEnded
- && gSprites[gObjectBankIDs[gActiveBank]].pos2.x == 0)
- LinkPartnerBufferExecCompleted();
-}
-
-void bx_t3_healthbar_update(void)
-{
- s16 r4;
-
- r4 = sub_8045C78(gActiveBank, gHealthboxIDs[gActiveBank], 0, 0);
- sub_8043DFC(gHealthboxIDs[gActiveBank]);
- if (r4 != -1)
- {
- sub_80440EC(gHealthboxIDs[gActiveBank], r4, 0);
- }
- else
- {
- sub_80324F8(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
- LinkPartnerBufferExecCompleted();
- }
-}
-
-void sub_811DE98(void)
-{
- if (gSprites[gObjectBankIDs[gActiveBank]].pos1.y + gSprites[gObjectBankIDs[gActiveBank]].pos2.y > 160)
- {
- nullsub_9(GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES));
- FreeOamMatrix(gSprites[gObjectBankIDs[gActiveBank]].oam.matrixNum);
- DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]);
- sub_8043DB0(gHealthboxIDs[gActiveBank]);
- LinkPartnerBufferExecCompleted();
- }
-}
-
-void sub_811DF34(void)
-{
- if (!ewram17810[gActiveBank].unk0_6)
- {
- FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]);
- DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]);
- sub_8043DB0(gHealthboxIDs[gActiveBank]);
- LinkPartnerBufferExecCompleted();
- }
-}
-
-void sub_811DFA0(void)
-{
- if (gUnknown_03004210.state == 0)
- LinkPartnerBufferExecCompleted();
-}
-
-void bx_blink_t3(void)
-{
- u8 spriteId = gObjectBankIDs[gActiveBank];
- if (gSprites[spriteId].data1 == 32)
- {
- gSprites[spriteId].data1 = 0;
- gSprites[spriteId].invisible = FALSE;
- gDoingBattleAnim = 0;
- LinkPartnerBufferExecCompleted();
- }
- else
- {
- if ((gSprites[spriteId].data1 % 4) == 0)
- {
- gSprites[spriteId].invisible ^= 1;
- }
- gSprites[spriteId].data1++;
- }
-}
-
-void sub_811E034(void)
-{
- if (gSprites[gHealthboxIDs[gActiveBank]].callback == SpriteCallbackDummy)
- {
- if (ewram17800[gActiveBank].substituteSprite)
- move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 6);
- gBattleBankFunc[gActiveBank] = sub_811E0A0;
- }
-}
-
-void sub_811E0A0(void)
-{
- if (!ewram17810[gActiveBank].unk0_6)
- LinkPartnerBufferExecCompleted();
-}
-
-void sub_811E0CC(void)
-{
- if (ewram17810[gActiveBank].unk1_0)
- {
- ewram17810[gActiveBank].unk0_7 = 0;
- ewram17810[gActiveBank].unk1_0 = 0;
- FreeSpriteTilesByTag(0x27F9);
- FreeSpritePaletteByTag(0x27F9);
- CreateTask(c3_0802FDF4, 10);
- sub_80324F8(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
- StartSpriteAnim(&gSprites[gObjectBankIDs[gActiveBank]], 0);
- sub_8045A5C(gHealthboxIDs[gActiveBank], &gPlayerParty[gBattlePartyID[gActiveBank]], 0);
- sub_804777C(gActiveBank);
- sub_8043DFC(gHealthboxIDs[gActiveBank]);
- sub_8031F88(gActiveBank);
- gBattleBankFunc[gActiveBank] = sub_811E034;
- }
-}
-
-void sub_811E1BC(void)
-{
- if (!ewram17810[gActiveBank].unk0_3 && !ewram17810[gActiveBank].unk0_7)
- sub_8141828(gActiveBank, &gPlayerParty[gBattlePartyID[gActiveBank]]);
- if (gSprites[gUnknown_0300434C[gActiveBank]].callback == SpriteCallbackDummy
- && !ewram17810[gActiveBank].unk0_3)
- {
- DestroySprite(&gSprites[gUnknown_0300434C[gActiveBank]]);
- gBattleBankFunc[gActiveBank] = sub_811E0CC;
- }
-}
-
-void sub_811E258(void)
-{
- if (gReceivedRemoteLinkPlayers == 0)
- {
- m4aSongNumStop(0x5A);
- gMain.inBattle = FALSE;
- gMain.callback1 = gPreBattleCallback1;
- SetMainCallback2(c2_8011A1C);
- }
-}
-
-void sub_811E29C(void)
-{
- if (!gPaletteFade.active)
- {
- if (gBattleTypeFlags & 2)
- {
- sub_800832C();
- gBattleBankFunc[gActiveBank] = sub_811E258;
- }
- else
- {
- m4aSongNumStop(0x5A);
- gMain.inBattle = FALSE;
- gMain.callback1 = gPreBattleCallback1;
- SetMainCallback2(gMain.savedCallback);
- }
- }
-}
-
-void LinkPartnerBufferExecCompleted(void)
-{
- u8 multiplayerId;
-
- gBattleBankFunc[gActiveBank] = LinkPartnerBufferRunCommand;
- if (gBattleTypeFlags & 2)
- {
- multiplayerId = GetMultiplayerId();
- dp01_prepare_buffer_wireless_probably(2, 4, &multiplayerId);
- gBattleBufferA[gActiveBank][0] = 0x38;
- }
- else
- {
- gBattleExecBuffer &= ~gBitTable[gActiveBank];
- }
-}
-
-void sub_811E38C(void)
-{
- if (!ewram17810[gActiveBank].unk0_4)
- LinkPartnerBufferExecCompleted();
-}
-
-void sub_811E3B8(void)
-{
- if (!ewram17810[gActiveBank].unk0_5)
- LinkPartnerBufferExecCompleted();
-}
-
-void LinkPartnerHandleGetAttributes(void)
-{
- u8 unk[256];
- int r6 = 0;
- s32 i;
-
- if (gBattleBufferA[gActiveBank][2] == 0)
- {
- r6 = dp01_getattr_by_ch1_for_player_pokemon(gBattlePartyID[gActiveBank], unk);
- }
- else
- {
- u8 r4 = gBattleBufferA[gActiveBank][2];
-
- for (i = 0; i < 6; i++)
- {
- if (r4 & 1)
- r6 += dp01_getattr_by_ch1_for_player_pokemon(i, unk + r6);
- r4 >>= 1;
- }
- }
- dp01_build_cmdbuf_x1D_1D_numargs_varargs(1, r6, unk);
- LinkPartnerBufferExecCompleted();
-}
-
-// Duplicate of dp01_getattr_by_ch1_for_player_pokemon_
-u32 dp01_getattr_by_ch1_for_player_pokemon(u8 a, u8 *buffer)
-{
- struct BattlePokemon battlePokemon;
- struct UnknownStruct3 moveData;
- u8 nickname[20];
- u8 *src;
- s16 data16;
- u32 data32;
- s32 size = 0;
-
- switch (gBattleBufferA[gActiveBank][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_SPD_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_SPD);
- 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);
- src = (u8 *)&battlePokemon;
- for (size = 0; size < sizeof(battlePokemon); size++)
- buffer[size] = src[size];
- 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);
- src = (u8 *)&moveData;
- for (size = 0; size < sizeof(moveData); size++)
- buffer[size] = src[size];
- break;
- case 4:
- case 5:
- case 6:
- case 7:
- data16 = GetMonData(&gPlayerParty[a], MON_DATA_MOVE1 + gBattleBufferA[gActiveBank][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[gActiveBank][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_SPD_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_SPD_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_SPD_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_SPD);
- 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 sub_811EC04(void)
-{
- LinkPartnerBufferExecCompleted();
-}
-
-void LinkPartnerHandleSetAttributes(void)
-{
- u8 i;
- u8 r4;
-
- if (gBattleBufferA[gActiveBank][2] == 0)
- {
- sub_811EC68(gBattlePartyID[gActiveBank]);
- }
- else
- {
- r4 = gBattleBufferA[gActiveBank][2];
- for (i = 0; i < 6; i++)
- {
- if (r4 & 1)
- sub_811EC68(i);
- r4 >>= 1;
- }
- }
- LinkPartnerBufferExecCompleted();
-}
-
-// Duplicate of dp01_setattr_by_ch1_for_player_pokemon
-void sub_811EC68(u8 a)
-{
- struct BattlePokemon *battlePokemon = (struct BattlePokemon *)&gBattleBufferA[gActiveBank][3];
- struct UnknownStruct3 *moveData = (struct UnknownStruct3 *)&gBattleBufferA[gActiveBank][3];
- s32 i;
-
- switch (gBattleBufferA[gActiveBank][1])
- {
- case 0:
- {
- u8 iv;
-
- SetMonData(&gPlayerParty[a], MON_DATA_SPECIES, (u8 *)&battlePokemon->species);
- SetMonData(&gPlayerParty[a], MON_DATA_HELD_ITEM, (u8 *)&battlePokemon->item);
- for (i = 0; i < 4; i++)
- {
- SetMonData(&gPlayerParty[a], MON_DATA_MOVE1 + i, (u8 *)&battlePokemon->moves[i]);
- SetMonData(&gPlayerParty[a], MON_DATA_PP1 + i, (u8 *)&battlePokemon->pp[i]);
- }
- SetMonData(&gPlayerParty[a], MON_DATA_PP_BONUSES, (u8 *)&battlePokemon->ppBonuses);
- SetMonData(&gPlayerParty[a], MON_DATA_FRIENDSHIP, (u8 *)&battlePokemon->friendship);
- SetMonData(&gPlayerParty[a], MON_DATA_EXP, (u8 *)&battlePokemon->experience);
- iv = battlePokemon->hpIV;
- SetMonData(&gPlayerParty[a], MON_DATA_HP_IV, (u8 *)&iv);
- iv = battlePokemon->attackIV;
- SetMonData(&gPlayerParty[a], MON_DATA_ATK_IV, (u8 *)&iv);
- iv = battlePokemon->defenseIV;
- SetMonData(&gPlayerParty[a], MON_DATA_DEF_IV, (u8 *)&iv);
- iv = battlePokemon->speedIV;
- SetMonData(&gPlayerParty[a], MON_DATA_SPD_IV, (u8 *)&iv);
- iv = battlePokemon->spAttackIV;
- SetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV, (u8 *)&iv);
- iv = battlePokemon->spDefenseIV;
- SetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV, (u8 *)&iv);
- SetMonData(&gPlayerParty[a], MON_DATA_PERSONALITY, (u8 *)&battlePokemon->personality);
- SetMonData(&gPlayerParty[a], MON_DATA_STATUS, (u8 *)&battlePokemon->status1);
- SetMonData(&gPlayerParty[a], MON_DATA_LEVEL, (u8 *)&battlePokemon->level);
- SetMonData(&gPlayerParty[a], MON_DATA_HP, (u8 *)&battlePokemon->hp);
- SetMonData(&gPlayerParty[a], MON_DATA_MAX_HP, (u8 *)&battlePokemon->maxHP);
- SetMonData(&gPlayerParty[a], MON_DATA_ATK, (u8 *)&battlePokemon->attack);
- SetMonData(&gPlayerParty[a], MON_DATA_DEF, (u8 *)&battlePokemon->defense);
- SetMonData(&gPlayerParty[a], MON_DATA_SPD, (u8 *)&battlePokemon->speed);
- SetMonData(&gPlayerParty[a], MON_DATA_SPATK, (u8 *)&battlePokemon->spAttack);
- SetMonData(&gPlayerParty[a], MON_DATA_SPDEF, (u8 *)&battlePokemon->spDefense);
- }
- break;
- case 1:
- SetMonData(&gPlayerParty[a], MON_DATA_SPECIES, &gBattleBufferA[gActiveBank][3]);
- break;
- case 2:
- SetMonData(&gPlayerParty[a], MON_DATA_HELD_ITEM, &gBattleBufferA[gActiveBank][3]);
- break;
- case 3:
- for (i = 0; i < 4; i++)
- {
- SetMonData(&gPlayerParty[a], MON_DATA_MOVE1 + i, (u8 *)&moveData->moves[i]);
- SetMonData(&gPlayerParty[a], MON_DATA_PP1 + i, (u8 *)&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[gActiveBank][1] - 4, &gBattleBufferA[gActiveBank][3]);
- break;
- case 8:
- SetMonData(&gPlayerParty[a], MON_DATA_PP1, &gBattleBufferA[gActiveBank][3]);
- SetMonData(&gPlayerParty[a], MON_DATA_PP2, &gBattleBufferA[gActiveBank][4]);
- SetMonData(&gPlayerParty[a], MON_DATA_PP3, &gBattleBufferA[gActiveBank][5]);
- SetMonData(&gPlayerParty[a], MON_DATA_PP4, &gBattleBufferA[gActiveBank][6]);
- SetMonData(&gPlayerParty[a], MON_DATA_PP_BONUSES, &gBattleBufferA[gActiveBank][7]);
- break;
- case 9:
- case 10:
- case 11:
- case 12:
- SetMonData(&gPlayerParty[a], MON_DATA_PP1 + gBattleBufferA[gActiveBank][1] - 9, &gBattleBufferA[gActiveBank][3]);
- break;
- case 17:
- SetMonData(&gPlayerParty[a], MON_DATA_OT_ID, &gBattleBufferA[gActiveBank][3]);
- break;
- case 18:
- SetMonData(&gPlayerParty[a], MON_DATA_EXP, &gBattleBufferA[gActiveBank][3]);
- break;
- case 19:
- SetMonData(&gPlayerParty[a], MON_DATA_HP_EV, &gBattleBufferA[gActiveBank][3]);
- break;
- case 20:
- SetMonData(&gPlayerParty[a], MON_DATA_ATK_EV, &gBattleBufferA[gActiveBank][3]);
- break;
- case 21:
- SetMonData(&gPlayerParty[a], MON_DATA_DEF_EV, &gBattleBufferA[gActiveBank][3]);
- break;
- case 22:
- SetMonData(&gPlayerParty[a], MON_DATA_SPD_EV, &gBattleBufferA[gActiveBank][3]);
- break;
- case 23:
- SetMonData(&gPlayerParty[a], MON_DATA_SPATK_EV, &gBattleBufferA[gActiveBank][3]);
- break;
- case 24:
- SetMonData(&gPlayerParty[a], MON_DATA_SPDEF_EV, &gBattleBufferA[gActiveBank][3]);
- break;
- case 25:
- SetMonData(&gPlayerParty[a], MON_DATA_FRIENDSHIP, &gBattleBufferA[gActiveBank][3]);
- break;
- case 26:
- SetMonData(&gPlayerParty[a], MON_DATA_POKERUS, &gBattleBufferA[gActiveBank][3]);
- break;
- case 27:
- SetMonData(&gPlayerParty[a], MON_DATA_MET_LOCATION, &gBattleBufferA[gActiveBank][3]);
- break;
- case 28:
- SetMonData(&gPlayerParty[a], MON_DATA_MET_LEVEL, &gBattleBufferA[gActiveBank][3]);
- break;
- case 29:
- SetMonData(&gPlayerParty[a], MON_DATA_MET_GAME, &gBattleBufferA[gActiveBank][3]);
- break;
- case 30:
- SetMonData(&gPlayerParty[a], MON_DATA_POKEBALL, &gBattleBufferA[gActiveBank][3]);
- break;
- case 31:
- SetMonData(&gPlayerParty[a], MON_DATA_HP_IV, &gBattleBufferA[gActiveBank][3]);
- SetMonData(&gPlayerParty[a], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBank][4]);
- SetMonData(&gPlayerParty[a], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBank][5]);
- SetMonData(&gPlayerParty[a], MON_DATA_SPD_IV, &gBattleBufferA[gActiveBank][6]);
- SetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBank][7]);
- SetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBank][8]);
- break;
- case 32:
- SetMonData(&gPlayerParty[a], MON_DATA_HP_IV, &gBattleBufferA[gActiveBank][3]);
- break;
- case 33:
- SetMonData(&gPlayerParty[a], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBank][3]);
- break;
- case 34:
- SetMonData(&gPlayerParty[a], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBank][3]);
- break;
- case 35:
- SetMonData(&gPlayerParty[a], MON_DATA_SPD_IV, &gBattleBufferA[gActiveBank][3]);
- break;
- case 36:
- SetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBank][3]);
- break;
- case 37:
- SetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBank][3]);
- break;
- case 38:
- SetMonData(&gPlayerParty[a], MON_DATA_PERSONALITY, &gBattleBufferA[gActiveBank][3]);
- break;
- case 39:
- SetMonData(&gPlayerParty[a], MON_DATA_CHECKSUM, &gBattleBufferA[gActiveBank][3]);
- break;
- case 40:
- SetMonData(&gPlayerParty[a], MON_DATA_STATUS, &gBattleBufferA[gActiveBank][3]);
- break;
- case 41:
- SetMonData(&gPlayerParty[a], MON_DATA_LEVEL, &gBattleBufferA[gActiveBank][3]);
- break;
- case 42:
- SetMonData(&gPlayerParty[a], MON_DATA_HP, &gBattleBufferA[gActiveBank][3]);
- break;
- case 43:
- SetMonData(&gPlayerParty[a], MON_DATA_MAX_HP, &gBattleBufferA[gActiveBank][3]);
- break;
- case 44:
- SetMonData(&gPlayerParty[a], MON_DATA_ATK, &gBattleBufferA[gActiveBank][3]);
- break;
- case 45:
- SetMonData(&gPlayerParty[a], MON_DATA_DEF, &gBattleBufferA[gActiveBank][3]);
- break;
- case 46:
- SetMonData(&gPlayerParty[a], MON_DATA_SPD, &gBattleBufferA[gActiveBank][3]);
- break;
- case 47:
- SetMonData(&gPlayerParty[a], MON_DATA_SPATK, &gBattleBufferA[gActiveBank][3]);
- break;
- case 48:
- SetMonData(&gPlayerParty[a], MON_DATA_SPDEF, &gBattleBufferA[gActiveBank][3]);
- break;
- case 49:
- SetMonData(&gPlayerParty[a], MON_DATA_COOL, &gBattleBufferA[gActiveBank][3]);
- break;
- case 50:
- SetMonData(&gPlayerParty[a], MON_DATA_BEAUTY, &gBattleBufferA[gActiveBank][3]);
- break;
- case 51:
- SetMonData(&gPlayerParty[a], MON_DATA_CUTE, &gBattleBufferA[gActiveBank][3]);
- break;
- case 52:
- SetMonData(&gPlayerParty[a], MON_DATA_SMART, &gBattleBufferA[gActiveBank][3]);
- break;
- case 53:
- SetMonData(&gPlayerParty[a], MON_DATA_TOUGH, &gBattleBufferA[gActiveBank][3]);
- break;
- case 54:
- SetMonData(&gPlayerParty[a], MON_DATA_SHEEN, &gBattleBufferA[gActiveBank][3]);
- break;
- case 55:
- SetMonData(&gPlayerParty[a], MON_DATA_COOL_RIBBON, &gBattleBufferA[gActiveBank][3]);
- break;
- case 56:
- SetMonData(&gPlayerParty[a], MON_DATA_BEAUTY_RIBBON, &gBattleBufferA[gActiveBank][3]);
- break;
- case 57:
- SetMonData(&gPlayerParty[a], MON_DATA_CUTE_RIBBON, &gBattleBufferA[gActiveBank][3]);
- break;
- case 58:
- SetMonData(&gPlayerParty[a], MON_DATA_SMART_RIBBON, &gBattleBufferA[gActiveBank][3]);
- break;
- case 59:
- SetMonData(&gPlayerParty[a], MON_DATA_TOUGH_RIBBON, &gBattleBufferA[gActiveBank][3]);
- break;
- }
- sub_80324F8(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
-}
-
-void sub_811F664(void)
-{
- u8 *dst;
- u8 i;
-
- dst = (u8 *)&gPlayerParty[gBattlePartyID[gActiveBank]] + gBattleBufferA[gActiveBank][1];
- for (i = 0; i < gBattleBufferA[gActiveBank][2]; i++)
- dst[i] = gBattleBufferA[gActiveBank][3 + i];
- LinkPartnerBufferExecCompleted();
-}
-
-void sub_811F6D8(void)
-{
- BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
- GetMonSpriteTemplate_803C56C(
- GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES),
- GetBankIdentity(gActiveBank));
- gObjectBankIDs[gActiveBank] = CreateSprite(
- &gUnknown_02024E8C,
- sub_8077ABC(gActiveBank, 2),
- sub_8077F68(gActiveBank),
- sub_8079E90(gActiveBank));
- gSprites[gObjectBankIDs[gActiveBank]].pos2.x = -240;
- gSprites[gObjectBankIDs[gActiveBank]].data0 = gActiveBank;
- gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = gActiveBank;
- StartSpriteAnim(&gSprites[gObjectBankIDs[gActiveBank]], gBattleMonForms[gActiveBank]);
- gBattleBankFunc[gActiveBank] = sub_811DDE8;
-}
-
-void sub_811F7F4(void)
-{
- sub_8032AA8(gActiveBank, gBattleBufferA[gActiveBank][2]);
- gBattlePartyID[gActiveBank] = gBattleBufferA[gActiveBank][1];
- BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
- sub_811F864(gActiveBank, gBattleBufferA[gActiveBank][2]);
- gBattleBankFunc[gActiveBank] = sub_811E1BC;
-}
-
-void sub_811F864(u8 a, u8 b)
-{
- u16 species;
-
- sub_8032AA8(a, b);
- gBattlePartyID[a] = gBattleBufferA[a][1];
- species = GetMonData(&gPlayerParty[gBattlePartyID[a]], MON_DATA_SPECIES);
- gUnknown_0300434C[a] = CreateInvisibleSpriteWithCallback(sub_80312F0);
- GetMonSpriteTemplate_803C56C(species, GetBankIdentity(a));
- gObjectBankIDs[a] = CreateSprite(
- &gUnknown_02024E8C,
- sub_8077ABC(a, 2),
- sub_8077F68(a),
- sub_8079E90(a));
- gSprites[gUnknown_0300434C[a]].data1 = gObjectBankIDs[a];
- gSprites[gObjectBankIDs[a]].data0 = a;
- gSprites[gObjectBankIDs[a]].data2 = species;
- gSprites[gObjectBankIDs[a]].oam.paletteNum = a;
- StartSpriteAnim(&gSprites[gObjectBankIDs[a]], gBattleMonForms[a]);
- gSprites[gObjectBankIDs[a]].invisible = TRUE;
- gSprites[gObjectBankIDs[a]].callback = SpriteCallbackDummy;
- gSprites[gUnknown_0300434C[a]].data0 = sub_8046400(0, 0xFF);
-}
-
-void sub_811F9D0(void)
-{
- if (gBattleBufferA[gActiveBank][1] == 0)
- {
- ewram17810[gActiveBank].unk4 = 0;
- gBattleBankFunc[gActiveBank] = sub_811FA5C;
- }
- else
- {
- FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]);
- DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]);
- sub_8043DB0(gHealthboxIDs[gActiveBank]);
- LinkPartnerBufferExecCompleted();
- }
-}
-
-void sub_811FA5C(void)
-{
- switch (ewram17810[gActiveBank].unk4)
- {
- case 0:
- if (ewram17800[gActiveBank].substituteSprite)
- move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5);
- ewram17810[gActiveBank].unk4 = 1;
- break;
- case 1:
- if (!ewram17810[gActiveBank].unk0_6)
- {
- ewram17810[gActiveBank].unk4 = 0;
- move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 1);
- gBattleBankFunc[gActiveBank] = sub_811DF34;
- }
- break;
- }
-}
-
-void sub_811FAE4(void)
-{
- s16 xOffset;
- u32 gender;
-
- if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
- {
- if (GetBankIdentity(gActiveBank) & 2)
- xOffset = 16;
- else
- xOffset = -16;
- gender = gLinkPlayers[sub_803FC34(gActiveBank)].gender;
- }
- else
- {
- xOffset = 0;
- gender = gLinkPlayers[GetMultiplayerId() ^ 1].gender;
- }
- LoadPlayerTrainerBankSprite(gender, gActiveBank);
- GetMonSpriteTemplate_803C5A0(gender, GetBankIdentity(gActiveBank));
- gObjectBankIDs[gActiveBank] = CreateSprite(
- &gUnknown_02024E8C,
- 80 + xOffset, 80 + 4 * (8 - gTrainerBackPicCoords[gender].coords),
- sub_8079E90(gActiveBank));
- gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = gActiveBank;
- gSprites[gObjectBankIDs[gActiveBank]].pos2.x = 240;
- gSprites[gObjectBankIDs[gActiveBank]].data0 = -2;
- gSprites[gObjectBankIDs[gActiveBank]].callback = sub_80313A0;
- gBattleBankFunc[gActiveBank] = sub_811DAE4;
-}
-
-void sub_811FC30(void)
-{
- LinkPartnerBufferExecCompleted();
-}
-
-void sub_811FC3C(void)
-{
- oamt_add_pos2_onto_pos1(&gSprites[gObjectBankIDs[gActiveBank]]);
- gSprites[gObjectBankIDs[gActiveBank]].data0 = 35;
- gSprites[gObjectBankIDs[gActiveBank]].data2 = -40;
- gSprites[gObjectBankIDs[gActiveBank]].data4 = gSprites[gObjectBankIDs[gActiveBank]].pos1.y;
- gSprites[gObjectBankIDs[gActiveBank]].callback = sub_8078B34;
- oamt_set_x3A_32(&gSprites[gObjectBankIDs[gActiveBank]], SpriteCallbackDummy);
- gBattleBankFunc[gActiveBank] = sub_811DB1C;
-}
-
-void sub_811FCE8(void)
-{
- if (ewram17810[gActiveBank].unk4 == 0)
- {
- if (ewram17800[gActiveBank].substituteSprite)
- move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5);
- ewram17810[gActiveBank].unk4++;
- }
- else if (!ewram17810[gActiveBank].unk0_6)
- {
- ewram17810[gActiveBank].unk4 = 0;
- sub_80324F8(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
- PlaySE12WithPanning(SE_POKE_DEAD, -64);
- gSprites[gObjectBankIDs[gActiveBank]].data1 = 0;
- gSprites[gObjectBankIDs[gActiveBank]].data2 = 5;
- gSprites[gObjectBankIDs[gActiveBank]].callback = sub_80105EC;
- gBattleBankFunc[gActiveBank] = sub_811DE98;
- }
-}
-
-void sub_811FDCC(void)
-{
- LinkPartnerBufferExecCompleted();
-}
-
-void sub_811FDD8(void)
-{
- LinkPartnerBufferExecCompleted();
-}
-
-void sub_811FDE4(void)
-{
- LinkPartnerBufferExecCompleted();
-}
-
-void sub_811FDF0(void)
-{
- LinkPartnerBufferExecCompleted();
-}
-
-void sub_811FDFC(void)
-{
- if (!mplay_80342A4(gActiveBank))
- {
- u32 r0 = gBattleBufferA[gActiveBank][1]
- | (gBattleBufferA[gActiveBank][2] << 8);
-
- gUnknown_0202F7C4 = gBattleBufferA[gActiveBank][3];
- gMovePowerMoveAnim = gBattleBufferA[gActiveBank][4]
- | (gBattleBufferA[gActiveBank][5] << 8);
- gMoveDmgMoveAnim = gBattleBufferA[gActiveBank][6]
- | (gBattleBufferA[gActiveBank][7] << 8)
- | (gBattleBufferA[gActiveBank][8] << 16)
- | (gBattleBufferA[gActiveBank][9] << 24);
- gHappinessMoveAnim = gBattleBufferA[gActiveBank][10];
- gWeatherMoveAnim = gBattleBufferA[gActiveBank][12]
- | (gBattleBufferA[gActiveBank][13] << 8);
- gDisableStructMoveAnim = (u32 *)&gBattleBufferA[gActiveBank][16];
- gPID_perBank[gActiveBank] = *gDisableStructMoveAnim;
-
- if (sub_8031720(r0, gUnknown_0202F7C4) != 0)
- LinkPartnerBufferExecCompleted();
- else
- {
- ewram17810[gActiveBank].unk4 = 0;
- gBattleBankFunc[gActiveBank] = sub_811FF30;
- }
- }
-}
-
-void sub_811FF30(void)
-{
- u16 r4 = gBattleBufferA[gActiveBank][1]
- | (gBattleBufferA[gActiveBank][2] << 8);
- u8 r7 = gBattleBufferA[gActiveBank][11];
-
- switch (ewram17810[gActiveBank].unk4)
- {
- case 0:
- if (ewram17800[gActiveBank].substituteSprite && !ewram17800[gActiveBank].unk0_3)
- {
- ewram17800[gActiveBank].unk0_3 = 1;
- move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5);
- }
- ewram17810[gActiveBank].unk4 = 1;
- break;
- case 1:
- if (!ewram17810[gActiveBank].unk0_6)
- {
- sub_80326EC(0);
- ExecuteMoveAnim(r4);
- ewram17810[gActiveBank].unk4 = 2;
- }
- break;
- case 2:
- gAnimScriptCallback();
- if (!gAnimScriptActive)
- {
- sub_80326EC(1);
- if ((ewram17800[gActiveBank].substituteSprite) && r7 <= 1)
- {
- move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 6);
- ewram17800[gActiveBank].unk0_3 = 0;
- }
- ewram17810[gActiveBank].unk4 = 3;
- }
- break;
- case 3:
- if (!ewram17810[gActiveBank].unk0_6)
- {
- sub_8031F24();
- sub_80324BC(
- gActiveBank,
- gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8));
- ewram17810[gActiveBank].unk4 = 0;
- LinkPartnerBufferExecCompleted();
- }
- break;
- }
-}
-
-void sub_8120094(void)
-{
- gUnknown_030042A4 = 0;
- gUnknown_030042A0 = 0;
- BufferStringBattle(*(u16 *)&gBattleBufferA[gActiveBank][2]);
- sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15);
- gBattleBankFunc[gActiveBank] = sub_811DFA0;
-}
-
-void sub_81200F8(void)
-{
- LinkPartnerBufferExecCompleted();
-}
-
-void sub_8120104(void)
-{
- LinkPartnerBufferExecCompleted();
-}
-
-void sub_8120110(void)
-{
- LinkPartnerBufferExecCompleted();
-}
-
-void sub_812011C(void)
-{
- LinkPartnerBufferExecCompleted();
-}
-
-void sub_8120128(void)
-{
- LinkPartnerBufferExecCompleted();
-}
-
-void sub_8120134(void)
-{
- LinkPartnerBufferExecCompleted();
-}
-
-void sub_8120140(void)
-{
- LinkPartnerBufferExecCompleted();
-}
-
-void LinkPartnerHandleHealthBarUpdate(void)
-{
- s16 r7;
-
- load_gfxc_health_bar(0);
- r7 = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8);
- if (r7 != 0x7FFF)
- {
- u32 maxHP = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MAX_HP);
- u32 hp = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_HP);
-
- sub_8043D84(gActiveBank, gHealthboxIDs[gActiveBank], maxHP, hp, r7);
- }
- else
- {
- u32 maxHP = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MAX_HP);
-
- sub_8043D84(gActiveBank, gHealthboxIDs[gActiveBank], maxHP, 0, r7);
- }
- gBattleBankFunc[gActiveBank] = bx_t3_healthbar_update;
-}
-
-void LinkPartnerHandleExpBarUpdate(void)
-{
- LinkPartnerBufferExecCompleted();
-}
-
-void LinkPartnerHandleStatusIconUpdate(void)
-{
- if (mplay_80342A4(gActiveBank) == 0)
- {
- sub_8045A5C(gHealthboxIDs[gActiveBank], &gPlayerParty[gBattlePartyID[gActiveBank]], 9);
- ewram17810[gActiveBank].unk0_4 = 0;
- gBattleBankFunc[gActiveBank] = sub_811E38C;
- }
-}
-
-void LinkPartnerHandleStatusAnimation(void)
-{
- if (mplay_80342A4(gActiveBank) == 0)
- {
- move_anim_start_t2_for_situation(
- gBattleBufferA[gActiveBank][1],
- gBattleBufferA[gActiveBank][2]
- | (gBattleBufferA[gActiveBank][3] << 8)
- | (gBattleBufferA[gActiveBank][4] << 16)
- | (gBattleBufferA[gActiveBank][5] << 24));
- gBattleBankFunc[gActiveBank] = sub_811E38C;
- }
-}
-
-void sub_8120324(void)
-{
- LinkPartnerBufferExecCompleted();
-}
-
-void sub_8120330(void)
-{
- LinkPartnerBufferExecCompleted();
-}
-
-void sub_812033C(void)
-{
- LinkPartnerBufferExecCompleted();
-}
-
-void sub_8120348(void)
-{
- LinkPartnerBufferExecCompleted();
-}
-
-void sub_8120354(void)
-{
- LinkPartnerBufferExecCompleted();
-}
-
-void sub_8120360(void)
-{
- LinkPartnerBufferExecCompleted();
-}
-
-void sub_812036C(void)
-{
- LinkPartnerBufferExecCompleted();
-}
-
-void sub_8120378(void)
-{
- LinkPartnerBufferExecCompleted();
-}
-
-void sub_8120384(void)
-{
- LinkPartnerBufferExecCompleted();
-}
-
-void sub_8120390(void)
-{
- gUnknown_020238C8.unk0_0 = 0;
- LinkPartnerBufferExecCompleted();
-}
-
-void sub_81203AC(void)
-{
- gUnknown_020238C8.unk0_0 = gBattleBufferA[gActiveBank][1];
- LinkPartnerBufferExecCompleted();
-}
-
-void sub_81203E4(void)
-{
- gUnknown_020238C8.unk0_7 = 0;
- LinkPartnerBufferExecCompleted();
-}
-
-void sub_81203FC(void)
-{
- gUnknown_020238C8.unk0_7 ^= 1;
- LinkPartnerBufferExecCompleted();
-}
-
-void LinkPartnerHandleHitAnimation(void)
-{
- if (gSprites[gObjectBankIDs[gActiveBank]].invisible == TRUE)
- {
- LinkPartnerBufferExecCompleted();
- }
- else
- {
- gDoingBattleAnim = TRUE;
- gSprites[gObjectBankIDs[gActiveBank]].data1 = 0;
- sub_8047858(gActiveBank);
- gBattleBankFunc[gActiveBank] = bx_blink_t3;
- }
-}
-
-void sub_8120494(void)
-{
- LinkPartnerBufferExecCompleted();
-}
-
-void LinkPartnerHandleEffectivenessSound(void)
-{
- s8 pan;
-
- if (GetBankSide(gActiveBank) == 0)
- pan = -64;
- else
- pan = 63;
- PlaySE12WithPanning(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8), pan);
- LinkPartnerBufferExecCompleted();
-}
-
-void sub_81204E4(void)
-{
- PlayFanfare(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8));
- LinkPartnerBufferExecCompleted();
-}
-
-void LinkPartnerHandleFaintingCry(void)
-{
- PlayCry3(
- GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES),
- -25, 5);
- LinkPartnerBufferExecCompleted();
-}
-
-void dp01t_2E_3_battle_intro(void)
-{
- sub_80E43C0(gBattleBufferA[gActiveBank][1]);
- gUnknown_02024DE8 |= 1;
- LinkPartnerBufferExecCompleted();
-}
-
-void sub_8120588(void)
-{
- u8 r4;
- u8 taskId;
-
- oamt_add_pos2_onto_pos1(&gSprites[gObjectBankIDs[gActiveBank]]);
- gSprites[gObjectBankIDs[gActiveBank]].data0 = 50;
- gSprites[gObjectBankIDs[gActiveBank]].data2 = -40;
- gSprites[gObjectBankIDs[gActiveBank]].data4 = gSprites[gObjectBankIDs[gActiveBank]].pos1.y;
- gSprites[gObjectBankIDs[gActiveBank]].callback = sub_8078B34;
- gSprites[gObjectBankIDs[gActiveBank]].data5 = gActiveBank;
- oamt_set_x3A_32(&gSprites[gObjectBankIDs[gActiveBank]], sub_8030E38);
- StartSpriteAnim(&gSprites[gObjectBankIDs[gActiveBank]], 1);
- r4 = AllocSpritePalette(0xD6F9);
- LoadCompressedPalette(
- gTrainerBackPicPaletteTable[gLinkPlayers[sub_803FC34(gActiveBank)].gender].data,
- 0x100 + r4 * 16, 0x20);
- gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = r4;
- taskId = CreateTask(sub_812071C, 5);
- gTasks[taskId].data[0] = gActiveBank;
- if (ewram17810[gActiveBank].unk0_0)
- gTasks[gUnknown_02024E68[gActiveBank]].func = sub_8044CA0;
- ewram17840.unk9_0 = 1;
- gBattleBankFunc[gActiveBank] = nullsub_74;
-}
-
-void sub_812071C(u8 taskId)
-{
- u8 r9;
-
- if (gTasks[taskId].data[1] < 24)
- {
- gTasks[taskId].data[1]++;
- return;
- }
-
- r9 = gActiveBank;
- gActiveBank = gTasks[taskId].data[0];
- if (!IsDoubleBattle() || (gBattleTypeFlags & BATTLE_TYPE_MULTI))
- {
- gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank];
- sub_811F864(gActiveBank, 0);
- }
- else
- {
- gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank];
- sub_811F864(gActiveBank, 0);
- gActiveBank ^= 2;
- gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank];
- BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
- sub_811F864(gActiveBank, 0);
- gActiveBank ^= 2;
- }
- gBattleBankFunc[gActiveBank] = sub_811DCA0;
- gActiveBank = r9;
- DestroyTask(taskId);
-}
-
-void dp01t_30_3_80EB11C(void)
-{
- if (gBattleBufferA[gActiveBank][1] != 0 && GetBankSide(gActiveBank) == 0)
- {
- LinkPartnerBufferExecCompleted();
- return;
- }
-
- ewram17810[gActiveBank].unk0_0 = 1;
- gUnknown_02024E68[gActiveBank] = sub_8044804(
- gActiveBank,
- (struct BattleInterfaceStruct2 *)&gBattleBufferA[gActiveBank][4],
- gBattleBufferA[gActiveBank][1],
- gBattleBufferA[gActiveBank][2]);
- ewram17810[gActiveBank].unk5 = 0;
- if (gBattleBufferA[gActiveBank][2] != 0)
- ewram17810[gActiveBank].unk5 = 0x5D;
- gBattleBankFunc[gActiveBank] = sub_81208E0;
-}
-
-void sub_81208E0(void)
-{
- if (ewram17810[gActiveBank].unk5++ >= 93)
- {
- ewram17810[gActiveBank].unk5 = 0;
- LinkPartnerBufferExecCompleted();
- }
-}
-
-void sub_8120920(void)
-{
- if (ewram17810[gActiveBank].unk0_0)
- gTasks[gUnknown_02024E68[gActiveBank]].func = sub_8044CA0;
- LinkPartnerBufferExecCompleted();
-}
-
-void sub_812096C(void)
-{
- LinkPartnerBufferExecCompleted();
-}
-
-void sub_8120978(void)
-{
- if (sub_8078874(gActiveBank) != 0)
- {
- gSprites[gObjectBankIDs[gActiveBank]].invisible = gBattleBufferA[gActiveBank][1];
- sub_8031F88(gActiveBank);
- }
- LinkPartnerBufferExecCompleted();
-}
-
-void sub_81209D8(void)
-{
- if (mplay_80342A4(gActiveBank) == 0)
- {
- u8 r3 = gBattleBufferA[gActiveBank][1];
- u16 r4 = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8);
-
- if (move_anim_start_t3(gActiveBank, gActiveBank, gActiveBank, r3, r4) != 0)
- LinkPartnerBufferExecCompleted();
- else
- gBattleBankFunc[gActiveBank] = sub_811E3B8;
- }
-}
-
-void sub_8120A40(void)
-{
- LinkPartnerBufferExecCompleted();
-}
-
-void sub_8120A4C(void)
-{
- LinkPartnerBufferExecCompleted();
-}
-
-void sub_8120A58(void)
-{
- gBattleOutcome = gBattleBufferA[gActiveBank][1];
- FadeOutMapMusic(5);
- BeginFastPaletteFade(3);
- LinkPartnerBufferExecCompleted();
- gBattleBankFunc[gActiveBank] = sub_811E29C;
-}
-
-void nullsub_75(void)
-{
-}
diff --git a/src/battle_controller_linkopponent2.c b/src/battle_controller_linkopponent2.c
index 57932131b..2ca7c7970 100644
--- a/src/battle_controller_linkopponent2.c
+++ b/src/battle_controller_linkopponent2.c
@@ -52,7 +52,7 @@ extern u8 gUnknown_0300434C[];
extern u8 sub_8077F68();
extern u8 sub_8079E90();
extern u8 GetBankIdentity(u8);
-extern void sub_8031794(struct Pokemon *, u8);
+extern void BattleLoadOpponentMonSprite(struct Pokemon *, u8);
extern void sub_8037A74(void);
extern void sub_8032984(u8, u16);
extern void sub_8037E30(void);
@@ -822,7 +822,7 @@ void LinkOpponentHandleLoadPokeSprite(void)
{
u16 species = GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES);
- sub_8031794(&gEnemyParty[gBattlePartyID[gActiveBank]], gActiveBank);
+ BattleLoadOpponentMonSprite(&gEnemyParty[gBattlePartyID[gActiveBank]], gActiveBank);
GetMonSpriteTemplate_803C56C(species, GetBankIdentity(gActiveBank));
gObjectBankIDs[gActiveBank] = CreateSprite(
&gUnknown_02024E8C,
@@ -852,7 +852,7 @@ void sub_8039430(u8 a, u8 b)
gBattlePartyID[a] = gBattleBufferA[a][1];
species = GetMonData(&gEnemyParty[gBattlePartyID[a]], MON_DATA_SPECIES);
gUnknown_0300434C[a] = CreateInvisibleSpriteWithCallback(sub_80312F0);
- sub_8031794(&gEnemyParty[gBattlePartyID[a]], a);
+ BattleLoadOpponentMonSprite(&gEnemyParty[gBattlePartyID[a]], a);
GetMonSpriteTemplate_803C56C(species, GetBankIdentity(a));
gObjectBankIDs[a] = CreateSprite(
&gUnknown_02024E8C,
@@ -891,7 +891,7 @@ void sub_8039648(void)
switch (ewram17810[gActiveBank].unk4)
{
case 0:
- if (ewram17800[gActiveBank].unk0_2)
+ if (ewram17800[gActiveBank].substituteSprite)
move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5);
ewram17810[gActiveBank].unk4 = 1;
break;
@@ -960,7 +960,7 @@ void LinkOpponentHandlecmd10(void)
{
if (ewram17810[gActiveBank].unk4 == 0)
{
- if (ewram17800[gActiveBank].unk0_2)
+ if (ewram17800[gActiveBank].substituteSprite)
move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5);
ewram17810[gActiveBank].unk4++;
}
@@ -1035,7 +1035,7 @@ void sub_8039B64(void)
switch (ewram17810[gActiveBank].unk4)
{
case 0:
- if (ewram17800[gActiveBank].unk0_2 && !ewram17800[gActiveBank].unk0_3)
+ if (ewram17800[gActiveBank].substituteSprite && !ewram17800[gActiveBank].unk0_3)
{
ewram17800[gActiveBank].unk0_3 = 1;
move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5);
@@ -1055,7 +1055,7 @@ void sub_8039B64(void)
if (!gAnimScriptActive)
{
sub_80326EC(1);
- if ((ewram17800[gActiveBank].unk0_2) && r7 <= 1)
+ if ((ewram17800[gActiveBank].substituteSprite) && r7 <= 1)
{
move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 6);
ewram17800[gActiveBank].unk0_3 = 0;
diff --git a/src/battle_controller_linkpartner.c b/src/battle_controller_linkpartner.c
index f516c9bce..4308a8a5c 100644
--- a/src/battle_controller_linkpartner.c
+++ b/src/battle_controller_linkpartner.c
@@ -86,12 +86,12 @@ extern void oamt_set_x3A_32();
extern void sub_8078B34(struct Sprite *);
extern void sub_80105EC(struct Sprite *);
extern s32 sub_803FC34(u16);
-extern void sub_8031AF4();
+extern void LoadPlayerTrainerBankSprite();
extern void sub_80313A0(struct Sprite *);
extern u8 sub_8046400();
extern void sub_80312F0(struct Sprite *);
extern u8 CreateInvisibleSpriteWithCallback();
-extern void sub_80318FC();
+extern void BattleLoadPlayerMonSprite();
extern u8 sub_8077ABC();
extern u8 sub_8077F68();
extern u8 sub_8079E90();
@@ -420,7 +420,7 @@ void sub_811E034(void)
{
if (gSprites[gHealthboxIDs[gActiveBank]].callback == SpriteCallbackDummy)
{
- if (ewram17800[gActiveBank].unk0_2)
+ if (ewram17800[gActiveBank].substituteSprite)
move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 6);
gBattleBankFunc[gActiveBank] = sub_811E0A0;
}
@@ -1111,7 +1111,7 @@ void LinkPartnerHandlecmd3(void)
void LinkPartnerHandleLoadPokeSprite(void)
{
- sub_80318FC(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
+ BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
GetMonSpriteTemplate_803C56C(
GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES),
GetBankIdentity(gActiveBank));
@@ -1131,7 +1131,7 @@ void LinkPartnerHandleSendOutPoke(void)
{
sub_8032AA8(gActiveBank, gBattleBufferA[gActiveBank][2]);
gBattlePartyID[gActiveBank] = gBattleBufferA[gActiveBank][1];
- sub_80318FC(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
+ BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
sub_811F864(gActiveBank, gBattleBufferA[gActiveBank][2]);
gBattleBankFunc[gActiveBank] = sub_811E1BC;
}
@@ -1181,7 +1181,7 @@ void sub_811FA5C(void)
switch (ewram17810[gActiveBank].unk4)
{
case 0:
- if (ewram17800[gActiveBank].unk0_2)
+ if (ewram17800[gActiveBank].substituteSprite)
move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5);
ewram17810[gActiveBank].unk4 = 1;
break;
@@ -1214,7 +1214,7 @@ void LinkPartnerHandleTrainerThrow(void)
xOffset = 0;
gender = gLinkPlayers[GetMultiplayerId() ^ 1].gender;
}
- sub_8031AF4(gender, gActiveBank);
+ LoadPlayerTrainerBankSprite(gender, gActiveBank);
GetMonSpriteTemplate_803C5A0(gender, GetBankIdentity(gActiveBank));
gObjectBankIDs[gActiveBank] = CreateSprite(
&gUnknown_02024E8C,
@@ -1247,7 +1247,7 @@ void LinkPartnerHandlecmd10(void)
{
if (ewram17810[gActiveBank].unk4 == 0)
{
- if (ewram17800[gActiveBank].unk0_2)
+ if (ewram17800[gActiveBank].substituteSprite)
move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5);
ewram17810[gActiveBank].unk4++;
}
@@ -1322,7 +1322,7 @@ void sub_811FF30(void)
switch (ewram17810[gActiveBank].unk4)
{
case 0:
- if (ewram17800[gActiveBank].unk0_2 && !ewram17800[gActiveBank].unk0_3)
+ if (ewram17800[gActiveBank].substituteSprite && !ewram17800[gActiveBank].unk0_3)
{
ewram17800[gActiveBank].unk0_3 = 1;
move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5);
@@ -1342,7 +1342,7 @@ void sub_811FF30(void)
if (!gAnimScriptActive)
{
sub_80326EC(1);
- if ((ewram17800[gActiveBank].unk0_2) && r7 <= 1)
+ if ((ewram17800[gActiveBank].substituteSprite) && r7 <= 1)
{
move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 6);
ewram17800[gActiveBank].unk0_3 = 0;
@@ -1630,7 +1630,7 @@ void sub_812071C(u8 taskId)
sub_811F864(gActiveBank, 0);
gActiveBank ^= 2;
gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank];
- sub_80318FC(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
+ BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
sub_811F864(gActiveBank, 0);
gActiveBank ^= 2;
}
diff --git a/src/battle_controller_opponent.c b/src/battle_controller_opponent.c
index b24130bb8..abfa3fef2 100644
--- a/src/battle_controller_opponent.c
+++ b/src/battle_controller_opponent.c
@@ -67,7 +67,7 @@ extern u8 sub_8077ABC();
extern u8 sub_8077F68();
extern u8 sub_8079E90();
extern void sub_8033018(void);
-extern void sub_8031794();
+extern void BattleLoadOpponentMonSprite();
extern u8 GetBankIdentity(u8);
extern void sub_8032984(u8, u16);
extern void sub_80333D4(void);
@@ -465,7 +465,7 @@ void sub_8033264(void)
{
if (gSprites[gHealthboxIDs[gActiveBank]].callback == SpriteCallbackDummy)
{
- if (ewram17800[gActiveBank].unk0_2)
+ if (ewram17800[gActiveBank].substituteSprite)
move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 6);
gBattleBankFunc[gActiveBank] = sub_80332D0;
}
@@ -1127,7 +1127,7 @@ void OpponentHandleLoadPokeSprite(void)
{
u16 species = GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES);
- sub_8031794(&gEnemyParty[gBattlePartyID[gActiveBank]], gActiveBank);
+ BattleLoadOpponentMonSprite(&gEnemyParty[gBattlePartyID[gActiveBank]], gActiveBank);
GetMonSpriteTemplate_803C56C(species, GetBankIdentity(gActiveBank));
gObjectBankIDs[gActiveBank] = CreateSprite(
&gUnknown_02024E8C,
@@ -1159,7 +1159,7 @@ void sub_803495C(u8 a, u8 b)
gBattlePartyID[a] = gBattleBufferA[a][1];
species = GetMonData(&gEnemyParty[gBattlePartyID[a]], MON_DATA_SPECIES);
gUnknown_0300434C[a] = CreateInvisibleSpriteWithCallback(sub_80312F0);
- sub_8031794(&gEnemyParty[gBattlePartyID[a]], a);
+ BattleLoadOpponentMonSprite(&gEnemyParty[gBattlePartyID[a]], a);
GetMonSpriteTemplate_803C56C(species, GetBankIdentity(a));
gObjectBankIDs[a] = CreateSprite(
&gUnknown_02024E8C,
@@ -1198,7 +1198,7 @@ void sub_8034B74(void)
switch (ewram17810[gActiveBank].unk4)
{
case 0:
- if (ewram17800[gActiveBank].unk0_2)
+ if (ewram17800[gActiveBank].substituteSprite)
move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5);
ewram17810[gActiveBank].unk4 = 1;
break;
@@ -1289,7 +1289,7 @@ void OpponentHandlecmd10(void)
{
if (ewram17810[gActiveBank].unk4 == 0)
{
- if (ewram17800[gActiveBank].unk0_2)
+ if (ewram17800[gActiveBank].substituteSprite)
move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5);
ewram17810[gActiveBank].unk4++;
}
@@ -1364,7 +1364,7 @@ void sub_8035238(void)
switch (ewram17810[gActiveBank].unk4)
{
case 0:
- if (ewram17800[gActiveBank].unk0_2 && !ewram17800[gActiveBank].unk0_3)
+ if (ewram17800[gActiveBank].substituteSprite && !ewram17800[gActiveBank].unk0_3)
{
ewram17800[gActiveBank].unk0_3 = 1;
move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5);
@@ -1384,7 +1384,7 @@ void sub_8035238(void)
if (!gAnimScriptActive)
{
sub_80326EC(1);
- if ((ewram17800[gActiveBank].unk0_2) && r7 <= 1)
+ if ((ewram17800[gActiveBank].substituteSprite) && r7 <= 1)
{
move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 6);
ewram17800[gActiveBank].unk0_3 = 0;
diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c
index a537d9adb..269f20642 100644
--- a/src/battle_controller_player.c
+++ b/src/battle_controller_player.c
@@ -102,7 +102,7 @@ extern void sub_80E43C0();
extern void oamt_add_pos2_onto_pos1();
extern void sub_8078B34(struct Sprite *);
extern void oamt_set_x3A_32();
-extern void sub_80318FC();
+extern void BattleLoadPlayerMonSprite();
extern bool8 IsDoubleBattle(void);
extern void sub_802D500(void);
extern bool8 sub_8078874(u8);
@@ -124,7 +124,7 @@ extern void sub_80105EC(struct Sprite *);
extern void sub_802D274(void);
extern void sub_802D23C(void);
extern u8 GetBankIdentity(u8);
-extern void sub_8031AF4();
+extern void LoadPlayerTrainerBankSprite();
extern void sub_80313A0(struct Sprite *);
extern void sub_802D204(void);
extern u8 sub_8079E90();
@@ -1067,7 +1067,7 @@ void sub_802D680(void)
ewram17810[gActiveBank].unk1_0 = 0;
FreeSpriteTilesByTag(0x27F9);
FreeSpritePaletteByTag(0x27F9);
- if (ewram17800[gActiveBank].unk0_2)
+ if (ewram17800[gActiveBank].substituteSprite)
move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 6);
gBattleBankFunc[gActiveBank] = sub_802D730;
}
@@ -2298,7 +2298,7 @@ void PlayerHandlecmd3(void)
void PlayerHandleLoadPokeSprite(void)
{
- sub_80318FC(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
+ BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = gActiveBank;
gBattleBankFunc[gActiveBank] = bx_0802E404;
}
@@ -2307,7 +2307,7 @@ void PlayerHandleSendOutPoke(void)
{
sub_8032AA8(gActiveBank, gBattleBufferA[gActiveBank][2]);
gBattlePartyID[gActiveBank] = gBattleBufferA[gActiveBank][1];
- sub_80318FC(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
+ BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
gActionSelectionCursor[gActiveBank] = 0;
gMoveSelectionCursor[gActiveBank] = 0;
sub_802F934(gActiveBank, gBattleBufferA[gActiveBank][2]);
@@ -2359,7 +2359,7 @@ void sub_802FB2C(void)
switch (ewram17810[gActiveBank].unk4)
{
case 0:
- if (ewram17800[gActiveBank].unk0_2)
+ if (ewram17800[gActiveBank].substituteSprite)
move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5);
ewram17810[gActiveBank].unk4 = 1;
break;
@@ -2388,7 +2388,7 @@ void PlayerHandleTrainerThrow(void)
{
r7 = 0;
}
- sub_8031AF4(gSaveBlock2.playerGender, gActiveBank);
+ LoadPlayerTrainerBankSprite(gSaveBlock2.playerGender, gActiveBank);
GetMonSpriteTemplate_803C5A0(gSaveBlock2.playerGender, GetBankIdentity(gActiveBank));
gObjectBankIDs[gActiveBank] = CreateSprite(
&gUnknown_02024E8C,
@@ -2404,7 +2404,7 @@ void PlayerHandleTrainerThrow(void)
void PlayerHandleTrainerSlide(void)
{
- sub_8031AF4(gSaveBlock2.playerGender, gActiveBank);
+ LoadPlayerTrainerBankSprite(gSaveBlock2.playerGender, gActiveBank);
GetMonSpriteTemplate_803C5A0(gSaveBlock2.playerGender, GetBankIdentity(gActiveBank));
gObjectBankIDs[gActiveBank] = CreateSprite(
&gUnknown_02024E8C,
@@ -2434,7 +2434,7 @@ void PlayerHandlecmd10(void)
{
if (ewram17810[gActiveBank].unk4 == 0)
{
- if (ewram17800[gActiveBank].unk0_2)
+ if (ewram17800[gActiveBank].substituteSprite)
move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5);
ewram17810[gActiveBank].unk4++;
}
@@ -2522,7 +2522,7 @@ void sub_8030190(void)
switch (ewram17810[gActiveBank].unk4)
{
case 0:
- if (ewram17800[gActiveBank].unk0_2 == 1 && ewram17800[gActiveBank].unk0_3 == 0)
+ if (ewram17800[gActiveBank].substituteSprite == 1 && ewram17800[gActiveBank].unk0_3 == 0)
{
ewram17800[gActiveBank].unk0_3 = 1;
move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5);
@@ -2542,7 +2542,7 @@ void sub_8030190(void)
if (!gAnimScriptActive)
{
sub_80326EC(1);
- if (ewram17800[gActiveBank].unk0_2 == 1 && r7 < 2)
+ if (ewram17800[gActiveBank].substituteSprite == 1 && r7 < 2)
{
move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 6);
ewram17800[gActiveBank].unk0_3 = 0;
@@ -2916,7 +2916,7 @@ void sub_8030E38(struct Sprite *sprite)
FreeSpriteOamMatrix(sprite);
FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(sprite->oam.paletteNum));
DestroySprite(sprite);
- sub_80318FC(&gPlayerParty[gBattlePartyID[r4]], r4);
+ BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[r4]], r4);
StartSpriteAnim(&gSprites[gObjectBankIDs[r4]], 0);
}
@@ -2942,7 +2942,7 @@ void task05_08033660(u8 taskId)
sub_802F934(gActiveBank, 0);
gActiveBank ^= 2;
gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank];
- sub_80318FC(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
+ BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
sub_802F934(gActiveBank, 0);
gActiveBank ^= 2;
}
diff --git a/src/battle_controller_wally.c b/src/battle_controller_wally.c
index 08bad3c12..36e525bcc 100644
--- a/src/battle_controller_wally.c
+++ b/src/battle_controller_wally.c
@@ -72,7 +72,7 @@ extern void sub_8043DFC();
extern bool8 IsDoubleBattle(void);
extern void c3_0802FDF4(u8);
extern void PlayerHandlecmd1(void);
-extern void sub_8031AF4();
+extern void LoadPlayerTrainerBankSprite();
extern u8 GetBankIdentity(u8);
extern void sub_80313A0(struct Sprite *);
extern u8 GetBankByPlayerAI(u8);
@@ -1106,7 +1106,7 @@ void WallyHandleReturnPokeToBall(void)
void WallyHandleTrainerThrow(void)
{
- sub_8031AF4(2, gActiveBank);
+ LoadPlayerTrainerBankSprite(2, gActiveBank);
GetMonSpriteTemplate_803C5A0(2, GetBankIdentity(gActiveBank));
gObjectBankIDs[gActiveBank] = CreateSprite(
&gUnknown_02024E8C,
@@ -1121,7 +1121,7 @@ void WallyHandleTrainerThrow(void)
void WallyHandleTrainerSlide(void)
{
- sub_8031AF4(2, gActiveBank);
+ LoadPlayerTrainerBankSprite(2, gActiveBank);
GetMonSpriteTemplate_803C5A0(2, GetBankIdentity(gActiveBank));
gObjectBankIDs[gActiveBank] = CreateSprite(
&gUnknown_02024E8C,
@@ -1206,7 +1206,7 @@ void sub_81390D0(void)
switch (ewram17810[gActiveBank].unk4)
{
case 0:
- if (ewram17800[gActiveBank].unk0_2 == 1)
+ if (ewram17800[gActiveBank].substituteSprite == 1)
move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5);
ewram17810[gActiveBank].unk4 = 1;
break;
@@ -1223,7 +1223,7 @@ void sub_81390D0(void)
if (!gAnimScriptActive)
{
sub_80326EC(1);
- if (ewram17800[gActiveBank].unk0_2 == 1)
+ if (ewram17800[gActiveBank].substituteSprite == 1)
move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 6);
ewram17810[gActiveBank].unk4 = 3;
}
@@ -1507,7 +1507,7 @@ void sub_81398BC(u8 bank)
{
u16 species;
- ewram17800[bank].unk2 = 0;
+ ewram17800[bank].transformedSpecies = 0;
gBattlePartyID[bank] = gBattleBufferA[bank][1];
species = GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_SPECIES);
gUnknown_0300434C[bank] = CreateInvisibleSpriteWithCallback(sub_80312F0);