summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDiegoisawesome <Diegoisawesome@users.noreply.github.com>2018-12-17 15:59:08 -0600
committerGitHub <noreply@github.com>2018-12-17 15:59:08 -0600
commit26bfd93b3599b76b0d0edad441fe79f261e4d04e (patch)
treedf73355f94e2f7fb78cc2c4b02c33291df187944 /src
parentd1e6e705ccf05f93933ae4494b1d388550d81d26 (diff)
parent60484153a5630bfe88c1623b7ec1cf7052d67752 (diff)
Merge pull request #451 from shinny456/master
decompile electric.s
Diffstat (limited to 'src')
-rw-r--r--src/battle_anim.c4
-rw-r--r--src/battle_anim_80A5C6C.c8
-rwxr-xr-xsrc/battle_anim_8170478.c2
-rw-r--r--src/battle_anim_effects_1.c12
-rw-r--r--src/battle_controller_link_opponent.c6
-rw-r--r--src/battle_controller_link_partner.c6
-rw-r--r--src/battle_controller_opponent.c6
-rw-r--r--src/battle_controller_player.c6
-rw-r--r--src/battle_controller_player_partner.c8
-rw-r--r--src/battle_controller_recorded_opponent.c6
-rw-r--r--src/battle_controller_recorded_player.c8
-rw-r--r--src/battle_controller_wally.c2
-rw-r--r--src/contest.c2
-rw-r--r--src/electric.c1100
-rw-r--r--src/ghost.c2
-rw-r--r--src/reshow_battle_screen.c8
16 files changed, 1127 insertions, 59 deletions
diff --git a/src/battle_anim.c b/src/battle_anim.c
index 5e62c0957..c3fa2e2aa 100644
--- a/src/battle_anim.c
+++ b/src/battle_anim.c
@@ -1656,7 +1656,7 @@ static void ScriptCmd_createsprite(void)
else
argVar *= -1;
- subpriority = sub_80A82E4(gBattleAnimTarget) + (s8)(argVar);
+ subpriority = GetBattlerSubpriority(gBattleAnimTarget) + (s8)(argVar);
}
else
{
@@ -1665,7 +1665,7 @@ static void ScriptCmd_createsprite(void)
else
argVar *= -1;
- subpriority = sub_80A82E4(gBattleAnimAttacker) + (s8)(argVar);
+ subpriority = GetBattlerSubpriority(gBattleAnimAttacker) + (s8)(argVar);
}
if (subpriority < 3)
diff --git a/src/battle_anim_80A5C6C.c b/src/battle_anim_80A5C6C.c
index 9adbdd779..c4cf1600b 100644
--- a/src/battle_anim_80A5C6C.c
+++ b/src/battle_anim_80A5C6C.c
@@ -47,7 +47,7 @@ void sub_80A7AFC(u8 taskId);
void sub_80A8CAC(u8 taskId);
void AnimTask_BlendMonInAndOutStep(u8 taskId);
bool8 sub_80A7238(void);
-u8 sub_80A82E4(u8 battlerId);
+u8 GetBattlerSubpriority(u8 battlerId);
void sub_80A8D78(struct Task *task, u8 taskId);
// EWRAM vars
@@ -1968,13 +1968,13 @@ void sub_80A8278(void)
{
if (IsBattlerSpriteVisible(i))
{
- gSprites[gBattlerSpriteIds[i]].subpriority = sub_80A82E4(i);
+ gSprites[gBattlerSpriteIds[i]].subpriority = GetBattlerSubpriority(i);
gSprites[gBattlerSpriteIds[i]].oam.priority = 2;
}
}
}
-u8 sub_80A82E4(u8 battlerId)
+u8 GetBattlerSubpriority(u8 battlerId)
{
u8 position;
u8 ret;
@@ -2339,7 +2339,7 @@ void sub_80A8BC4(u8 taskId)
dest = (task->data[4] + 0x10) * 0x10;
src = (gSprites[task->data[0]].oam.paletteNum + 0x10) * 0x10;
- task->data[6] = sub_80A82E4(gBattleAnimAttacker);
+ task->data[6] = GetBattlerSubpriority(gBattleAnimAttacker);
if (task->data[6] == 20 || task->data[6] == 40)
task->data[6] = 2;
else
diff --git a/src/battle_anim_8170478.c b/src/battle_anim_8170478.c
index 94f2c95b5..a570e1bfa 100755
--- a/src/battle_anim_8170478.c
+++ b/src/battle_anim_8170478.c
@@ -756,7 +756,7 @@ void sub_8170F2C(u8 taskId)
}
ballId = ItemIdToBallId(gLastUsedItem);
- subpriority = sub_80A82E4(GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT)) + 1;
+ subpriority = GetBattlerSubpriority(GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT)) + 1;
spriteId = CreateSprite(&gBallSpriteTemplates[ballId], x + 32, y | 80, subpriority);
gSprites[spriteId].data[0] = 34;
gSprites[spriteId].data[1] = GetBattlerSpriteCoord(gBattleAnimTarget, 0);
diff --git a/src/battle_anim_effects_1.c b/src/battle_anim_effects_1.c
index 0f56c05d8..78e0608e1 100644
--- a/src/battle_anim_effects_1.c
+++ b/src/battle_anim_effects_1.c
@@ -2257,9 +2257,9 @@ static void sub_80FE9E4(struct Sprite* sprite)
else
{
if (sprite->data[5] > 0x7F)
- sprite->subpriority = sub_80A82E4(gBattleAnimTarget) + 1;
+ sprite->subpriority = GetBattlerSubpriority(gBattleAnimTarget) + 1;
else
- sprite->subpriority = sub_80A82E4(gBattleAnimTarget) + 6;
+ sprite->subpriority = GetBattlerSubpriority(gBattleAnimTarget) + 6;
sprite->pos2.x += Sin(sprite->data[5], 5);
sprite->pos2.y += Cos(sprite->data[5], 14);
@@ -2278,7 +2278,7 @@ void sub_80FEA58(u8 taskId)
gBattleAnimArgs[1] = 0;
gBattleAnimArgs[2] = 80;
gBattleAnimArgs[3] = 0;
- CreateSpriteAndAnimate(&gUnknown_08592210, 0, 0, sub_80A82E4(gBattleAnimTarget) + 1);
+ CreateSpriteAndAnimate(&gUnknown_08592210, 0, 0, GetBattlerSubpriority(gBattleAnimTarget) + 1);
}
if (gTasks[taskId].data[1] == 15)
@@ -2465,9 +2465,9 @@ static void sub_80FEECC(struct Sprite* sprite)
sprite->pos2.x += Sin(sprite->data[5], 32);
sprite->pos2.y += Cos(sprite->data[5], -5);
if ((u16)(sprite->data[5] - 0x40) < 0x80)
- sprite->subpriority = sub_80A82E4(gBattleAnimAttacker) - 1;
+ sprite->subpriority = GetBattlerSubpriority(gBattleAnimAttacker) - 1;
else
- sprite->subpriority = sub_80A82E4(gBattleAnimAttacker) + 1;
+ sprite->subpriority = GetBattlerSubpriority(gBattleAnimAttacker) + 1;
sprite->data[5] = (sprite->data[5] + 5) & 0xFF;
}
@@ -3205,7 +3205,7 @@ void sub_80FFFC0(u8 taskId)
{
struct Task *task = &gTasks[taskId];
- task->data[4] = sub_80A82E4(gBattleAnimTarget) - 1;
+ task->data[4] = GetBattlerSubpriority(gBattleAnimTarget) - 1;
task->data[6] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
task->data[7] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
task->data[10] = sub_80A861C(gBattleAnimTarget, 1);
diff --git a/src/battle_controller_link_opponent.c b/src/battle_controller_link_opponent.c
index 8cbc62aab..32a9e926a 100644
--- a/src/battle_controller_link_opponent.c
+++ b/src/battle_controller_link_opponent.c
@@ -1136,7 +1136,7 @@ static void LinkOpponentHandleLoadMonSprite(void)
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate,
GetBattlerSpriteCoord(gActiveBattler, 2),
GetBattlerSpriteDefault_Y(gActiveBattler),
- sub_80A82E4(gActiveBattler));
+ GetBattlerSubpriority(gActiveBattler));
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -240;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = gActiveBattler;
@@ -1170,7 +1170,7 @@ static void sub_8066494(u8 battlerId, bool8 dontClearSubstituteBit)
&gMultiuseSpriteTemplate,
GetBattlerSpriteCoord(battlerId, 2),
GetBattlerSpriteDefault_Y(battlerId),
- sub_80A82E4(battlerId));
+ GetBattlerSubpriority(battlerId));
gSprites[gUnknown_03005D7C[battlerId]].data[1] = gBattlerSpriteIds[battlerId];
gSprites[gUnknown_03005D7C[battlerId]].data[2] = battlerId;
@@ -1302,7 +1302,7 @@ static void LinkOpponentHandleDrawTrainerPic(void)
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate,
xPos,
(8 - gTrainerFrontPicCoords[trainerPicId].coords) * 4 + 40,
- sub_80A82E4(gActiveBattler));
+ GetBattlerSubpriority(gActiveBattler));
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -240;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 2;
diff --git a/src/battle_controller_link_partner.c b/src/battle_controller_link_partner.c
index 0cd15f39e..e4cc0ac34 100644
--- a/src/battle_controller_link_partner.c
+++ b/src/battle_controller_link_partner.c
@@ -1024,7 +1024,7 @@ static void LinkPartnerHandleLoadMonSprite(void)
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate,
GetBattlerSpriteCoord(gActiveBattler, 2),
GetBattlerSpriteDefault_Y(gActiveBattler),
- sub_80A82E4(gActiveBattler));
+ GetBattlerSubpriority(gActiveBattler));
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -240;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = gActiveBattler;
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
@@ -1055,7 +1055,7 @@ static void sub_814CC98(u8 battlerId, bool8 dontClearSubstituteBit)
&gMultiuseSpriteTemplate,
GetBattlerSpriteCoord(battlerId, 2),
GetBattlerSpriteDefault_Y(battlerId),
- sub_80A82E4(battlerId));
+ GetBattlerSubpriority(battlerId));
gSprites[gUnknown_03005D7C[battlerId]].data[1] = gBattlerSpriteIds[battlerId];
gSprites[gUnknown_03005D7C[battlerId]].data[2] = battlerId;
@@ -1143,7 +1143,7 @@ static void LinkPartnerHandleDrawTrainerPic(void)
DecompressTrainerBackPic(trainerPicId, gActiveBattler);
SetMultiuseSpriteTemplateToTrainerBack(trainerPicId, GetBattlerPosition(gActiveBattler));
- gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, xPos, (8 - gTrainerBackPicCoords[trainerPicId].coords) * 4 + 80, sub_80A82E4(gActiveBattler));
+ gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, xPos, (8 - gTrainerBackPicCoords[trainerPicId].coords) * 4 + 80, GetBattlerSubpriority(gActiveBattler));
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = 240;
diff --git a/src/battle_controller_opponent.c b/src/battle_controller_opponent.c
index c057e8575..516e7192a 100644
--- a/src/battle_controller_opponent.c
+++ b/src/battle_controller_opponent.c
@@ -1128,7 +1128,7 @@ static void OpponentHandleLoadMonSprite(void)
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate,
GetBattlerSpriteCoord(gActiveBattler, 2),
GetBattlerSpriteDefault_Y(gActiveBattler),
- sub_80A82E4(gActiveBattler));
+ GetBattlerSubpriority(gActiveBattler));
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -240;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = gActiveBattler;
@@ -1163,7 +1163,7 @@ static void sub_80613DC(u8 battlerId, bool8 dontClearSubstituteBit)
gBattlerSpriteIds[battlerId] = CreateSprite(&gMultiuseSpriteTemplate,
GetBattlerSpriteCoord(battlerId, 2),
GetBattlerSpriteDefault_Y(battlerId),
- sub_80A82E4(battlerId));
+ GetBattlerSubpriority(battlerId));
gSprites[gBattlerSpriteIds[battlerId]].data[0] = battlerId;
gSprites[gBattlerSpriteIds[battlerId]].data[2] = species;
@@ -1293,7 +1293,7 @@ static void OpponentHandleDrawTrainerPic(void)
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate,
xPos,
(8 - gTrainerFrontPicCoords[trainerPicId].coords) * 4 + 40,
- sub_80A82E4(gActiveBattler));
+ GetBattlerSubpriority(gActiveBattler));
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -240;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 2;
diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c
index 2bd5ef365..e0e618918 100644
--- a/src/battle_controller_player.c
+++ b/src/battle_controller_player.c
@@ -2200,7 +2200,7 @@ static void sub_805B258(u8 battlerId, bool8 dontClearSubstituteBit)
&gMultiuseSpriteTemplate,
GetBattlerSpriteCoord(battlerId, 2),
GetBattlerSpriteDefault_Y(battlerId),
- sub_80A82E4(battlerId));
+ GetBattlerSubpriority(battlerId));
gSprites[gUnknown_03005D7C[battlerId]].data[1] = gBattlerSpriteIds[battlerId];
gSprites[gUnknown_03005D7C[battlerId]].data[2] = battlerId;
@@ -2314,7 +2314,7 @@ static void PlayerHandleDrawTrainerPic(void)
trainerPicId = PlayerGenderToFrontTrainerPicId(gSaveBlock2Ptr->playerGender);
DecompressTrainerFrontPic(trainerPicId, gActiveBattler);
SetMultiuseSpriteTemplateToTrainerFront(trainerPicId, GetBattlerPosition(gActiveBattler));
- gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, xPos, yPos, sub_80A82E4(gActiveBattler));
+ gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, xPos, yPos, GetBattlerSubpriority(gActiveBattler));
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicId].tag);
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = 240;
@@ -2329,7 +2329,7 @@ static void PlayerHandleDrawTrainerPic(void)
{
DecompressTrainerBackPic(trainerPicId, gActiveBattler);
SetMultiuseSpriteTemplateToTrainerBack(trainerPicId, GetBattlerPosition(gActiveBattler));
- gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, xPos, yPos, sub_80A82E4(gActiveBattler));
+ gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, xPos, yPos, GetBattlerSubpriority(gActiveBattler));
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = 240;
diff --git a/src/battle_controller_player_partner.c b/src/battle_controller_player_partner.c
index 02dd1383b..2e8a4a079 100644
--- a/src/battle_controller_player_partner.c
+++ b/src/battle_controller_player_partner.c
@@ -1211,7 +1211,7 @@ static void PlayerPartnerHandleLoadMonSprite(void)
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate,
GetBattlerSpriteCoord(gActiveBattler, 2),
GetBattlerSpriteDefault_Y(gActiveBattler),
- sub_80A82E4(gActiveBattler));
+ GetBattlerSubpriority(gActiveBattler));
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -240;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = gActiveBattler;
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
@@ -1242,7 +1242,7 @@ static void sub_81BD0E4(u8 battlerId, bool8 dontClearSubstituteBit)
&gMultiuseSpriteTemplate,
GetBattlerSpriteCoord(battlerId, 2),
GetBattlerSpriteDefault_Y(battlerId),
- sub_80A82E4(battlerId));
+ GetBattlerSubpriority(battlerId));
gSprites[gUnknown_03005D7C[battlerId]].data[1] = gBattlerSpriteIds[battlerId];
gSprites[gUnknown_03005D7C[battlerId]].data[2] = battlerId;
@@ -1322,7 +1322,7 @@ static void PlayerPartnerHandleDrawTrainerPic(void)
{
DecompressTrainerBackPic(trainerPicId, gActiveBattler);
SetMultiuseSpriteTemplateToTrainerBack(trainerPicId, GetBattlerPosition(gActiveBattler));
- gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, xPos, yPos, sub_80A82E4(gActiveBattler));
+ gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, xPos, yPos, GetBattlerSubpriority(gActiveBattler));
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = 240;
@@ -1333,7 +1333,7 @@ static void PlayerPartnerHandleDrawTrainerPic(void)
{
DecompressTrainerFrontPic(trainerPicId, gActiveBattler);
SetMultiuseSpriteTemplateToTrainerFront(trainerPicId, GetBattlerPosition(gActiveBattler));
- gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, xPos, yPos, sub_80A82E4(gActiveBattler));
+ gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, xPos, yPos, GetBattlerSubpriority(gActiveBattler));
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicId].tag);
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = 240;
diff --git a/src/battle_controller_recorded_opponent.c b/src/battle_controller_recorded_opponent.c
index 0cf3634dc..52c147c1f 100644
--- a/src/battle_controller_recorded_opponent.c
+++ b/src/battle_controller_recorded_opponent.c
@@ -1119,7 +1119,7 @@ static void RecordedOpponentHandleLoadMonSprite(void)
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate,
GetBattlerSpriteCoord(gActiveBattler, 2),
GetBattlerSpriteDefault_Y(gActiveBattler),
- sub_80A82E4(gActiveBattler));
+ GetBattlerSubpriority(gActiveBattler));
@@ -1154,7 +1154,7 @@ static void sub_81885D8(u8 battlerId, bool8 dontClearSubstituteBit)
gBattlerSpriteIds[battlerId] = CreateSprite(&gMultiuseSpriteTemplate,
GetBattlerSpriteCoord(battlerId, 2),
GetBattlerSpriteDefault_Y(battlerId),
- sub_80A82E4(battlerId));
+ GetBattlerSubpriority(battlerId));
gSprites[gUnknown_03005D7C[battlerId]].data[1] = gBattlerSpriteIds[battlerId];
gSprites[gUnknown_03005D7C[battlerId]].data[2] = battlerId;
@@ -1251,7 +1251,7 @@ static void RecordedOpponentHandleDrawTrainerPic(void)
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate,
xPos,
(8 - gTrainerFrontPicCoords[trainerPicId].coords) * 4 + 40,
- sub_80A82E4(gActiveBattler));
+ GetBattlerSubpriority(gActiveBattler));
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -240;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = 2;
diff --git a/src/battle_controller_recorded_player.c b/src/battle_controller_recorded_player.c
index 4d7fdc01e..b11be2e47 100644
--- a/src/battle_controller_recorded_player.c
+++ b/src/battle_controller_recorded_player.c
@@ -1105,7 +1105,7 @@ static void RecordedPlayerHandleLoadMonSprite(void)
gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate,
GetBattlerSpriteCoord(gActiveBattler, 2),
GetBattlerSpriteDefault_Y(gActiveBattler),
- sub_80A82E4(gActiveBattler));
+ GetBattlerSubpriority(gActiveBattler));
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = -240;
gSprites[gBattlerSpriteIds[gActiveBattler]].data[0] = gActiveBattler;
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
@@ -1136,7 +1136,7 @@ static void sub_818BA6C(u8 battlerId, bool8 dontClearSubstituteBit)
&gMultiuseSpriteTemplate,
GetBattlerSpriteCoord(battlerId, 2),
GetBattlerSpriteDefault_Y(battlerId),
- sub_80A82E4(battlerId));
+ GetBattlerSubpriority(battlerId));
gSprites[gUnknown_03005D7C[battlerId]].data[1] = gBattlerSpriteIds[battlerId];
gSprites[gUnknown_03005D7C[battlerId]].data[2] = battlerId;
@@ -1236,7 +1236,7 @@ static void RecordedPlayerHandleDrawTrainerPic(void)
trainerPicId = PlayerGenderToFrontTrainerPicId(gSaveBlock2Ptr->playerGender);
DecompressTrainerFrontPic(trainerPicId, gActiveBattler);
SetMultiuseSpriteTemplateToTrainerFront(trainerPicId, GetBattlerPosition(gActiveBattler));
- gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, xPos, yPos, sub_80A82E4(gActiveBattler));
+ gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, xPos, yPos, GetBattlerSubpriority(gActiveBattler));
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicId].tag);
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = 240;
@@ -1250,7 +1250,7 @@ static void RecordedPlayerHandleDrawTrainerPic(void)
{
DecompressTrainerBackPic(trainerPicId, gActiveBattler);
SetMultiuseSpriteTemplateToTrainerBack(trainerPicId, GetBattlerPosition(gActiveBattler));
- gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, xPos, yPos, sub_80A82E4(gActiveBattler));
+ gBattlerSpriteIds[gActiveBattler] = CreateSprite(&gMultiuseSpriteTemplate, xPos, yPos, GetBattlerSubpriority(gActiveBattler));
gSprites[gBattlerSpriteIds[gActiveBattler]].oam.paletteNum = gActiveBattler;
gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x = 240;
diff --git a/src/battle_controller_wally.c b/src/battle_controller_wally.c
index 5d87c4f90..2d5eb69fd 100644
--- a/src/battle_controller_wally.c
+++ b/src/battle_controller_wally.c
@@ -1464,7 +1464,7 @@ static void sub_816AA80(u8 battlerId)
gBattlerSpriteIds[battlerId] = CreateSprite(&gMultiuseSpriteTemplate,
GetBattlerSpriteCoord(battlerId, 2),
GetBattlerSpriteDefault_Y(battlerId),
- sub_80A82E4(battlerId));
+ GetBattlerSubpriority(battlerId));
gSprites[gUnknown_03005D7C[battlerId]].data[1] = gBattlerSpriteIds[battlerId];
gSprites[gUnknown_03005D7C[battlerId]].data[2] = battlerId;
diff --git a/src/contest.c b/src/contest.c
index 0c4397f30..201a7472e 100644
--- a/src/contest.c
+++ b/src/contest.c
@@ -2520,7 +2520,7 @@ u8 sub_80DB174(u16 species, u32 otId, u32 personality, u32 index)
spriteId = CreateSprite(&gMultiuseSpriteTemplate, 0x70, GetBattlerSpriteFinal_Y(2, species, FALSE), 30);
gSprites[spriteId].oam.paletteNum = 2;
gSprites[spriteId].oam.priority = 2;
- gSprites[spriteId].subpriority = sub_80A82E4(2);
+ gSprites[spriteId].subpriority = GetBattlerSubpriority(2);
gSprites[spriteId].callback = SpriteCallbackDummy;
gSprites[spriteId].data[0] = gSprites[spriteId].oam.paletteNum;
gSprites[spriteId].data[2] = species;
diff --git a/src/electric.c b/src/electric.c
index 5d65915b2..4a0c5525e 100644
--- a/src/electric.c
+++ b/src/electric.c
@@ -1,24 +1,44 @@
#include "global.h"
#include "battle_anim.h"
#include "constants/rgb.h"
+#include "trig.h"
+#include "constants/songs.h"
+#include "sound.h"
-extern void sub_810A1A8(struct Sprite *);
-extern void sub_810A214(struct Sprite *);
-extern void sub_810A274(struct Sprite *);
-extern void sub_810A308(struct Sprite *);
+extern void sub_80A62EC(struct Sprite *);
+extern void sub_810E2C8(struct Sprite *);
+extern bool8 sub_810B614(struct Task *task, u8 taskId);
extern void TranslateAnimSpriteToTargetMonLocation(struct Sprite *);
-extern void sub_810A46C(struct Sprite *);
-extern void sub_810A5BC(struct Sprite *);
-extern void sub_810A628(struct Sprite *);
-extern void sub_810A75C(struct Sprite *);
-extern void sub_810A9DC(struct Sprite *);
-extern void sub_810AA2C(struct Sprite *);
-extern void sub_810ACD8(struct Sprite *);
-extern void sub_810AD30(struct Sprite *);
-extern void sub_810AD98(struct Sprite *);
-extern void sub_810B1F0(struct Sprite *);
-extern void sub_810B23C(struct Sprite *);
-extern void sub_810B51C(struct Sprite *);
+
+static void sub_810A1A8(struct Sprite *);
+static void sub_810A1F8(struct Sprite *);
+static void sub_810A214(struct Sprite *);
+static void sub_810A258(struct Sprite *);
+static void sub_810A274(struct Sprite *);
+static void sub_810A308(struct Sprite *);
+static void sub_810A46C(struct Sprite *);
+static void sub_810A4F4(struct Sprite *);
+static void sub_810A56C(struct Sprite *);
+static void sub_810A5BC(struct Sprite *);
+static void sub_810A628(struct Sprite *);
+static void sub_810A6EC(struct Sprite *);
+static void sub_810A75C(struct Sprite *);
+static void sub_810A834(u8 taskId);
+static void sub_810A9DC(struct Sprite *);
+static void sub_810AA2C(struct Sprite *);
+static void sub_810AAB0(struct Sprite *);
+static void sub_810AB78(u8 taskId);
+static void sub_810AC8C(struct Sprite *);
+static void sub_810ACC0(struct Sprite *);
+static void sub_810ACD8(struct Sprite *);
+static void sub_810AD30(struct Sprite *);
+static void sub_810AD98(struct Sprite *);
+static void sub_810ADF8(struct Sprite *);
+static bool8 sub_810B154(struct Task *task, u8 taskId);
+static void sub_810B1F0(struct Sprite *);
+static void sub_810B23C(struct Sprite *);
+static bool8 sub_810B430(struct Task *task, u8 taskId);
+static void sub_810B51C(struct Sprite *);
const union AnimCmd gUnknown_085956A4[] =
{
@@ -436,3 +456,1051 @@ const struct SpriteTemplate gUnknown_08595A30 =
.affineAnims = gDummySpriteAffineAnimTable,
.callback = sub_810B51C,
};
+
+static void sub_810A1A8(struct Sprite *sprite)
+{
+ if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
+ sprite->pos1.x -= gBattleAnimArgs[0];
+ else
+ sprite->pos1.x += gBattleAnimArgs[0];
+
+ sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->callback = sub_810A1F8;
+}
+
+static void sub_810A1F8(struct Sprite *sprite)
+{
+ if (sprite->animEnded)
+ DestroyAnimSprite(sprite);
+}
+
+static void sub_810A214(struct Sprite *sprite)
+{
+ if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
+ sprite->pos1.x -= gBattleAnimArgs[0];
+ else
+ sprite->pos1.x += gBattleAnimArgs[0];
+
+ sprite->callback = sub_810A258;
+}
+
+static void sub_810A258(struct Sprite *sprite)
+{
+ if (sprite->affineAnimEnded)
+ move_anim_8074EE0(sprite);
+}
+
+static void sub_810A274(struct Sprite *sprite)
+{
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
+
+ if (GetBattlerSide(gBattleAnimAttacker) != B_SIDE_PLAYER)
+ {
+ sprite->pos1.x -= gBattleAnimArgs[0];
+ sprite->pos1.y -= gBattleAnimArgs[1];
+ }
+ else
+ {
+ sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->pos1.y += gBattleAnimArgs[1];
+ }
+ sprite->data[0] = 0;
+ sprite->data[1] = gBattleAnimArgs[2];
+ sprite->data[2] = gBattleAnimArgs[3];
+ sprite->data[3] = gBattleAnimArgs[4];
+ StoreSpriteCallbackInData6(sprite, move_anim_8074EE0);
+ sprite->callback = sub_80A62EC;
+}
+
+static void sub_810A308(struct Sprite *sprite)
+{
+ u8 slot;
+ u32 matrixNum;
+ s16 sineVal;
+
+ switch (gBattleAnimArgs[4])
+ {
+ case 0:
+ slot = gBattleAnimAttacker;
+ break;
+ case 1:
+ default:
+ slot = gBattleAnimTarget;
+ break;
+ case 2:
+ if (!IsBattlerSpriteVisible(gBattleAnimAttacker ^ 2))
+ {
+ slot = gBattleAnimAttacker;
+ }
+ else
+ {
+ slot = gBattleAnimAttacker ^ 2;
+ }
+ break;
+ case 3:
+ if (IsBattlerSpriteVisible(gBattleAnimAttacker ^ 2))
+ {
+ slot = gBattleAnimTarget ^ 2;
+ }
+ else
+ {
+ slot = gBattleAnimTarget;
+ }
+ break;
+ }
+
+ if (gBattleAnimArgs[5] == 0)
+ {
+ sprite->pos1.x = GetBattlerSpriteCoord(slot, 0);
+ sprite->pos1.y = GetBattlerSpriteCoord(slot, 1);
+ }
+ else
+ {
+ sprite->pos1.x = GetBattlerSpriteCoord(slot, 2);
+ sprite->pos1.y = GetBattlerSpriteCoord(slot, 3);
+ }
+
+ sprite->pos2.x = (gSineTable[gBattleAnimArgs[0]] * gBattleAnimArgs[1]) >> 8;
+ sprite->pos2.y = (gSineTable[gBattleAnimArgs[0] + 64] * gBattleAnimArgs[1]) >> 8;
+
+ if (gBattleAnimArgs[6] & 1)
+ {
+ sprite->oam.priority = sub_80A8328(slot) + 1;
+ }
+
+ matrixNum = sprite->oam.matrixNum;
+ sineVal = gSineTable[gBattleAnimArgs[2]];
+
+ gOamMatrices[matrixNum].a = gOamMatrices[matrixNum].d = gSineTable[gBattleAnimArgs[2] + 64];
+ gOamMatrices[matrixNum].b = sineVal;
+ gOamMatrices[matrixNum].c = -sineVal;
+
+ sprite->data[0] = gBattleAnimArgs[3];
+ sprite->callback = sub_810E2C8;
+}
+
+static void sub_810A46C(struct Sprite *sprite)
+{
+ InitAnimSpritePos(sprite, 1);
+ sprite->data[0] = gBattleAnimArgs[3];
+ sprite->data[1] = sprite->pos1.x;
+ sprite->data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
+ sprite->data[3] = sprite->pos1.y;
+ sprite->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
+ InitAnimLinearTranslation(sprite);
+ sprite->data[5] = gBattleAnimArgs[2];
+ sprite->data[6] = gBattleAnimArgs[5];
+ sprite->data[7] = gBattleAnimArgs[4];
+ sprite->oam.tileNum += gBattleAnimArgs[6] * 4;
+ sprite->callback = sub_810A4F4;
+ sub_810A4F4(sprite);
+}
+
+static void sub_810A4F4(struct Sprite *sprite)
+{
+ if (!TranslateAnimLinear(sprite))
+ {
+ sprite->pos2.x += Sin(sprite->data[7], sprite->data[5]);
+ sprite->pos2.y += Cos(sprite->data[7], sprite->data[5]);
+ sprite->data[7] = (sprite->data[7] + sprite->data[6]) & 0xFF;
+ if(!(sprite->data[7] % 3))
+ sprite->invisible ^= 1;
+ }
+ else
+ DestroyAnimSprite(sprite);
+}
+
+static void sub_810A56C(struct Sprite *sprite)
+{
+ if (--sprite->data[5] == -1)
+ {
+ sprite->invisible ^= 1;
+ sprite->data[5] = sprite->data[4];
+ }
+ if (sprite->data[3]-- <= 0)
+ DestroyAnimSprite(sprite);
+}
+
+static void sub_810A5BC(struct Sprite *sprite)
+{
+ if (IsContest() || GetBattlerSide(gBattleAnimTarget) == B_SIDE_PLAYER)
+ gBattleAnimArgs[1] = -gBattleAnimArgs[1];
+
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 2) + gBattleAnimArgs[1];
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 3) + gBattleAnimArgs[2];
+ sprite->data[3] = gBattleAnimArgs[0];
+ sprite->data[4] = gBattleAnimArgs[3];
+ sprite->data[5] = gBattleAnimArgs[3];
+ sprite->callback = sub_810A56C;
+}
+
+static void sub_810A628(struct Sprite *sprite)
+{
+ u8 bank;
+
+ sprite->data[0] = gBattleAnimArgs[3];
+ if (gBattleAnimArgs[7] & 0x8000)
+ bank = gBattleAnimTarget;
+ else
+ bank = gBattleAnimAttacker;
+
+ if (IsContest() || GetBattlerSide(bank) == B_SIDE_PLAYER)
+ gBattleAnimArgs[0] = -gBattleAnimArgs[0];
+
+ sprite->pos1.x = GetBattlerSpriteCoord(bank, 2) + gBattleAnimArgs[0];
+ sprite->pos1.y = GetBattlerSpriteCoord(bank, 3) + gBattleAnimArgs[1];
+
+ sprite->data[4] = gBattleAnimArgs[7] & 0x7FFF;
+ sprite->data[5] = gBattleAnimArgs[2];
+ sprite->data[6] = gBattleAnimArgs[5];
+ sprite->data[7] = gBattleAnimArgs[4];
+
+ sprite->oam.tileNum += gBattleAnimArgs[6] * 4;
+ sprite->callback = sub_810A6EC;
+ sub_810A6EC(sprite);
+}
+
+static void sub_810A6EC(struct Sprite *sprite)
+{
+ sprite->pos2.x = Sin(sprite->data[7], sprite->data[5]);
+ sprite->pos2.y = Cos(sprite->data[7], sprite->data[5]);
+
+ sprite->data[7] = (sprite->data[7] + sprite->data[6]) & 0xFF;
+ if (sprite->data[7] % sprite->data[4] == 0)
+ sprite->invisible ^= 1;
+
+ if (sprite->data[0]-- <= 0)
+ DestroyAnimSprite(sprite);
+}
+
+static void sub_810A75C(struct Sprite *sprite)
+{
+ sub_80A6980(sprite, FALSE);
+ sprite->oam.tileNum += gBattleAnimArgs[3] * 4;
+
+ if (gBattleAnimArgs[3] == 1)
+ sprite->oam.matrixNum = 8;
+ else if (gBattleAnimArgs[3] == 2)
+ sprite->oam.matrixNum = 16;
+
+ sprite->data[0] = gBattleAnimArgs[2];
+ sprite->callback = WaitAnimForDuration;
+ StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
+}
+
+void sub_810A7DC(u8 taskId)
+{
+ gTasks[taskId].data[0] = GetBattlerSpriteCoord(gBattleAnimTarget, 0) + gBattleAnimArgs[0];
+ gTasks[taskId].data[1] = GetBattlerSpriteCoord(gBattleAnimTarget, 1) + gBattleAnimArgs[1];
+ gTasks[taskId].data[2] = gBattleAnimArgs[2];
+ gTasks[taskId].func = sub_810A834;
+}
+
+#ifdef NONMATCHING // couldn't get the proper tail merging in the "CreateSprite" switch cases.(ported from ruby)
+static void sub_810A834(u8 taskId)
+{
+ u16 r8;
+ s16 r12;
+ s16 r2;
+ u8 spriteId = 0;
+ u8 r7 = 0;
+ u8 sp = gTasks[taskId].data[2];
+ s16 r4 = gTasks[taskId].data[0];
+ s16 r6 = gTasks[taskId].data[1];
+
+ if (!gTasks[taskId].data[2])
+ {
+ r8 = 0;
+ r2 = 1;
+ r12 = 16;
+ }
+ else
+ {
+ r12 = 16;
+ r8 = 8;
+ r2 = 4;
+ }
+
+ switch (gTasks[taskId].data[10])
+ {
+ case 0:
+ r8 += r2 * 0;
+ spriteId = CreateSprite(&gUnknown_08595828, r4, r6 + (r12 * 1), 2);
+ r7++;
+ break;
+ case 2:
+ r8 += r2;
+ spriteId = CreateSprite(&gUnknown_08595828, r4, r6 + (r12 * 2), 2);
+ r7++;
+ break;
+ case 4:
+ r8 += r2 * 2;
+ spriteId = CreateSprite(&gUnknown_08595828, r4, r6 + (r12 * 3), 2);
+ r7++;
+ break;
+ case 6:
+ r8 += r2 * 3;
+ spriteId = CreateSprite(&gUnknown_08595828, r4, r6 + (r12 * 4), 2);
+ r7++;
+ break;
+ case 8:
+ spriteId = CreateSprite(&gUnknown_08595828, r4, r6 + (r12 * 5), 2);
+ r7++;
+ break;
+ case 10:
+ DestroyAnimVisualTask(taskId);
+ return;
+ }
+
+ if (r7)
+ {
+ gSprites[spriteId].oam.tileNum += r8;
+ gSprites[spriteId].data[0] = sp;
+ gSprites[spriteId].callback(&gSprites[spriteId]);
+ }
+
+ gTasks[taskId].data[10]++;
+}
+#else
+NAKED
+static void sub_810A834(u8 taskId)
+{
+ asm_unified("\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0x4\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ mov r9, r0\n\
+ movs r5, 0\n\
+ movs r7, 0\n\
+ ldr r1, =gTasks\n\
+ lsls r0, 2\n\
+ add r0, r9\n\
+ lsls r0, 3\n\
+ adds r0, r1\n\
+ ldrb r2, [r0, 0xC]\n\
+ str r2, [sp]\n\
+ ldrh r4, [r0, 0x8]\n\
+ ldrh r6, [r0, 0xA]\n\
+ movs r3, 0xC\n\
+ ldrsh r0, [r0, r3]\n\
+ mov r10, r1\n\
+ cmp r0, 0\n\
+ bne _0810A878\n\
+ movs r0, 0\n\
+ mov r8, r0\n\
+ movs r2, 0x1\n\
+ movs r1, 0x10\n\
+ mov r12, r1\n\
+ b _0810A882\n\
+ .pool\n\
+_0810A878:\n\
+ movs r2, 0x10\n\
+ mov r12, r2\n\
+ movs r3, 0x8\n\
+ mov r8, r3\n\
+ movs r2, 0x4\n\
+_0810A882:\n\
+ mov r0, r9\n\
+ lsls r1, r0, 2\n\
+ adds r0, r1, r0\n\
+ lsls r0, 3\n\
+ add r0, r10\n\
+ movs r3, 0x1C\n\
+ ldrsh r0, [r0, r3]\n\
+ mov r10, r1\n\
+ cmp r0, 0xA\n\
+ bhi _0810A978\n\
+ lsls r0, 2\n\
+ ldr r1, =_0810A8A4\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+ .pool\n\
+ .align 2, 0\n\
+_0810A8A4:\n\
+ .4byte _0810A8D0\n\
+ .4byte _0810A978\n\
+ .4byte _0810A8E4\n\
+ .4byte _0810A978\n\
+ .4byte _0810A904\n\
+ .4byte _0810A978\n\
+ .4byte _0810A91A\n\
+ .4byte _0810A978\n\
+ .4byte _0810A93C\n\
+ .4byte _0810A978\n\
+ .4byte _0810A970\n\
+_0810A8D0:\n\
+ ldr r0, =gUnknown_08595828\n\
+ lsls r1, r4, 16\n\
+ asrs r1, 16\n\
+ lsls r2, r6, 16\n\
+ asrs r2, 16\n\
+ mov r4, r12\n\
+ lsls r3, r4, 16\n\
+ b _0810A952\n\
+ .pool\n\
+_0810A8E4:\n\
+ mov r0, r12\n\
+ lsls r3, r0, 17\n\
+ mov r1, r8\n\
+ adds r0, r1, r2\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ mov r8, r0\n\
+ ldr r0, =gUnknown_08595828\n\
+ lsls r1, r4, 16\n\
+ asrs r1, 16\n\
+ lsls r2, r6, 16\n\
+ asrs r2, 16\n\
+ b _0810A952\n\
+ .pool\n\
+_0810A904:\n\
+ mov r3, r12\n\
+ lsls r0, r3, 16\n\
+ asrs r0, 16\n\
+ lsls r3, r0, 1\n\
+ adds r3, r0\n\
+ lsls r0, r2, 1\n\
+ add r0, r8\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ mov r8, r0\n\
+ b _0810A946\n\
+_0810A91A:\n\
+ mov r0, r12\n\
+ lsls r3, r0, 18\n\
+ lsls r0, r2, 1\n\
+ adds r0, r2\n\
+ add r0, r8\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ mov r8, r0\n\
+ ldr r0, =gUnknown_08595828\n\
+ lsls r1, r4, 16\n\
+ asrs r1, 16\n\
+ lsls r2, r6, 16\n\
+ asrs r2, 16\n\
+ b _0810A952\n\
+ .pool\n\
+_0810A93C:\n\
+ mov r1, r12\n\
+ lsls r0, r1, 16\n\
+ asrs r0, 16\n\
+ lsls r3, r0, 2\n\
+ adds r3, r0\n\
+_0810A946:\n\
+ ldr r0, =gUnknown_08595828\n\
+ lsls r1, r4, 16\n\
+ asrs r1, 16\n\
+ lsls r2, r6, 16\n\
+ asrs r2, 16\n\
+ lsls r3, 16\n\
+_0810A952:\n\
+ asrs r3, 16\n\
+ adds r2, r3\n\
+ lsls r2, 16\n\
+ asrs r2, 16\n\
+ movs r3, 0x2\n\
+ bl CreateSprite\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+ adds r0, r7, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r7, r0, 24\n\
+ b _0810A978\n\
+ .pool\n\
+_0810A970:\n\
+ mov r0, r9\n\
+ bl DestroyAnimVisualTask\n\
+ b _0810A9BC\n\
+_0810A978:\n\
+ cmp r7, 0\n\
+ beq _0810A9AC\n\
+ ldr r4, =gSprites\n\
+ lsls r3, r5, 4\n\
+ adds r3, r5\n\
+ lsls r3, 2\n\
+ adds r0, r3, r4\n\
+ ldrh r5, [r0, 0x4]\n\
+ lsls r2, r5, 22\n\
+ lsrs r2, 22\n\
+ add r2, r8\n\
+ ldr r6, =0x000003ff\n\
+ adds r1, r6, 0\n\
+ ands r2, r1\n\
+ ldr r1, =0xfffffc00\n\
+ ands r1, r5\n\
+ orrs r1, r2\n\
+ strh r1, [r0, 0x4]\n\
+ mov r1, sp\n\
+ ldrh r1, [r1]\n\
+ strh r1, [r0, 0x2E]\n\
+ adds r4, 0x1C\n\
+ adds r3, r4\n\
+ ldr r1, [r3]\n\
+ bl _call_via_r1\n\
+_0810A9AC:\n\
+ ldr r0, =gTasks\n\
+ mov r1, r10\n\
+ add r1, r9\n\
+ lsls r1, 3\n\
+ adds r1, r0\n\
+ ldrh r0, [r1, 0x1C]\n\
+ adds r0, 0x1\n\
+ strh r0, [r1, 0x1C]\n\
+_0810A9BC:\n\
+ add sp, 0x4\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .pool\n\
+ ");
+}
+#endif
+
+static void sub_810A9DC(struct Sprite *sprite)
+{
+ if (!sprite->data[0])
+ {
+ sprite->oam.shape = 2;
+ sprite->oam.size = 0;
+ }
+ else
+ {
+ sprite->oam.shape = 0;
+ sprite->oam.size = 1;
+ }
+ if (++sprite->data[1] == 15)
+ DestroySprite(sprite);
+}
+
+static void sub_810AA2C(struct Sprite *sprite)
+{
+ u8 spriteId;
+
+ sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->pos1.y += gBattleAnimArgs[1];
+ spriteId = CreateSprite(&gUnknown_08595840, sprite->pos1.x + 32, sprite->pos1.y, sprite->subpriority);
+ gSprites[spriteId].oam.tileNum += 8;
+ gAnimVisualTaskCount++;
+ gSprites[spriteId].callback = sub_810AAB0;
+ sprite->callback = sub_810AAB0;
+}
+
+static void sub_810AAB0(struct Sprite *sprite)
+{
+ if (++sprite->data[0] == 3)
+ {
+ sprite->data[0] = 0;
+ sprite->invisible ^= 1;
+ }
+
+ if (++sprite->data[1] == 51)
+ DestroyAnimSprite(sprite);
+}
+
+void sub_810AAFC(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ if (!gBattleAnimArgs[0])
+ {
+ task->data[14] = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ task->data[15] = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+ }
+ else
+ {
+ task->data[14] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
+ task->data[15] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
+ }
+
+ task->data[6] = gBattleAnimArgs[1];
+ task->data[7] = 0;
+ task->data[8] = 0;
+ task->data[9] = 0;
+ task->data[10] = 0;
+ task->data[11] = gBattleAnimArgs[3];
+ task->data[12] = 0;
+ task->data[13] = gBattleAnimArgs[2];
+ task->func = sub_810AB78;
+}
+
+void sub_810AB78(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ if (task->data[6])
+ {
+ if (++task->data[12] > task->data[13])
+ {
+ u8 spriteId;
+ task->data[12] = 0;
+ spriteId = CreateSprite(&gUnknown_085958A8, task->data[14], task->data[15], 2);
+ if (spriteId != MAX_SPRITES)
+ {
+ struct Sprite *sprite = &gSprites[spriteId];
+ sprite->pos1.x += gUnknown_08595858[task->data[9]][0];
+ sprite->pos1.y += gUnknown_08595858[task->data[9]][1];
+
+ sprite->data[0] = 40 - task->data[8] * 5;
+ sprite->data[1] = sprite->pos1.x;
+ sprite->data[2] = task->data[14];
+ sprite->data[3] = sprite->pos1.y;
+ sprite->data[4] = task->data[15];
+ sprite->data[5] = taskId;
+
+ InitAnimLinearTranslation(sprite);
+ StoreSpriteCallbackInData6(sprite, sub_810ACC0);
+ sprite->callback = sub_80A67D8;
+
+ if (++task->data[9] > 15)
+ task->data[9] = 0;
+
+ if (++task->data[10] >= task->data[11])
+ {
+ task->data[10] = 0;
+ if (task->data[8] <= 5)
+ task->data[8]++;
+ }
+
+ task->data[7]++;
+ task->data[6]--;
+ }
+ }
+ }
+ else if(task->data[7] == 0)
+ DestroyAnimVisualTask(taskId);
+}
+
+static void sub_810AC8C(struct Sprite *sprite)
+{
+ if (TranslateAnimLinear(sprite))
+ {
+ gTasks[sprite->data[5]].data[7]--;
+ DestroySprite(sprite);
+ }
+}
+
+static void sub_810ACC0(struct Sprite *sprite)
+{
+ StartSpriteAnim(sprite, 1);
+ sprite->callback = sub_810AC8C;
+}
+
+static void sub_810ACD8(struct Sprite *sprite)
+{
+ if (!gBattleAnimArgs[0])
+ {
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+ }
+ else
+ {
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
+ }
+
+ StoreSpriteCallbackInData6(sprite, move_anim_8074EE0);
+ sprite->callback = sub_80A67BC;
+}
+
+static void sub_810AD30(struct Sprite *sprite)
+{
+ if (!gBattleAnimArgs[0])
+ {
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+ }
+ else
+ {
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
+ }
+
+ sprite->pos2.x = gBattleAnimArgs[1];
+ sprite->pos2.y = gBattleAnimArgs[2];
+ StoreSpriteCallbackInData6(sprite, DestroyAnimSprite);
+ sprite->callback = sub_80A67D8;
+}
+
+static void sub_810AD98(struct Sprite *sprite)
+{
+ StartSpriteAffineAnim(sprite, 1);
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+ sprite->data[6] = GetAnimBattlerSpriteId(0);
+ sprite->data[7] = 16;
+
+ if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_OPPONENT)
+ sprite->data[7] *= -1;
+
+ sprite->callback = sub_810ADF8;
+}
+
+static void sub_810ADF8(struct Sprite *sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ if (++sprite->data[1] > 40)
+ sprite->data[0]++;
+ break;
+ case 1:
+ sprite->pos1.x += sprite->data[7];
+ gSprites[sprite->data[6]].pos2.x += sprite->data[7];
+ if ((u16)(sprite->pos1.x + 80) > 400)
+ move_anim_8074EE0(sprite);
+ }
+}
+
+void sub_810AE5C(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ task->data[15] = GetAnimBattlerSpriteId(0);
+ task->data[14] = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ if (GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER)
+ {
+ task->data[14] = -32;
+ task->data[13] = 2;
+ }
+ else
+ {
+ task->data[14] = 32;
+ task->data[13] = -2;
+ }
+
+ gSprites[task->data[15]].pos2.x = task->data[14];
+ task->data[0]++;
+ break;
+ case 1:
+ if (++task->data[1] > 1)
+ {
+ task->data[1] = 0;
+ gSprites[task->data[15]].invisible ^= 1;
+
+ if (task->data[14])
+ {
+ task->data[14] += task->data[13];
+ gSprites[task->data[15]].pos2.x = task->data[14];
+ }
+ else
+ task->data[0]++;
+
+ }
+ break;
+ case 2:
+ if (++task->data[1] > 1)
+ {
+ task->data[1] = 0;
+ gSprites[task->data[15]].invisible ^= 1;
+
+ if (++task->data[2] == 8)
+ task->data[0]++;
+ }
+ break;
+ case 3:
+ gSprites[task->data[15]].invisible = 0;
+ DestroyAnimVisualTask(taskId);
+ }
+}
+
+void sub_810AFCC(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ switch(task->data[0])
+ {
+ case 0:
+ task->data[1] = GetBattlerSide(gBattleAnimAttacker) == B_SIDE_PLAYER ? 1 : -1;
+
+ switch (gBattleAnimArgs[0])
+ {
+ case 0:
+ task->data[3] = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ task->data[5] = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+ task->data[4] = (task->data[1] * 128) + 120;
+ break;
+ case 4:
+ task->data[3] = 120 - (task->data[1] * 128);
+ task->data[5] = GetBattlerSpriteCoord(gBattleAnimTarget, 3);
+ task->data[4] = GetBattlerSpriteCoord(gBattleAnimTarget, 2) - (task->data[1] * 32);
+ break;
+ default:
+ if ((gBattleAnimArgs[0] & 1) != 0)
+ {
+ task->data[3] = 256;
+ task->data[4] = -16;
+ }
+ else
+ {
+ task->data[3] = -16;
+ task->data[4] = 256;
+ }
+
+ if (task->data[1] == 1)
+ {
+ task->data[5] = 80 - gBattleAnimArgs[0] * 10;
+ }
+ else
+ {
+ u16 temp;
+ task->data[5] = gBattleAnimArgs[0] * 10 + 40;
+ temp = task->data[3];
+ task->data[3] = task->data[4];
+ task->data[4] = temp;
+ }
+ }
+
+ if (task->data[3] < task->data[4])
+ {
+ task->data[1] = 1;
+ task->data[6] = 0;
+ }
+ else
+ {
+ task->data[1] = -1;
+ task->data[6] = 3;
+ }
+
+ task->data[0]++;
+ break;
+ case 1:
+ if (++task->data[2] > 0)
+ {
+ task->data[2] = 0;
+ if (sub_810B154(task, taskId) || sub_810B154(task, taskId))
+ task->data[0]++;
+ }
+ break;
+ case 2:
+ if (task->data[7] == 0)
+ DestroyAnimVisualTask(taskId);
+ }
+}
+
+static bool8 sub_810B154(struct Task *task, u8 taskId)
+{
+ u8 spriteId = CreateSprite(&gUnknown_08595A00, task->data[3], task->data[5], 35);
+ if (spriteId != MAX_SPRITES)
+ {
+ gSprites[spriteId].data[6] = taskId;
+ gSprites[spriteId].data[7] = 7;
+ task->data[7]++;
+ }
+
+ task->data[6] += task->data[1];
+ if (task->data[6] < 0)
+ task->data[6] = 3;
+
+ if (task->data[6] > 3)
+ task->data[6] = 0;
+
+ task->data[3] += task->data[1] * 16;
+
+ if ((task->data[1] == 1 && task->data[3] >= task->data[4])
+ || (task->data[1] == -1 && task->data[3] <= task->data[4]))
+ {
+ return TRUE;
+ }
+ else
+ {
+ return FALSE;
+ }
+}
+
+static void sub_810B1F0(struct Sprite *sprite)
+{
+ if (++sprite->data[0] > 12)
+ {
+ gTasks[sprite->data[6]].data[sprite->data[7]]--;
+ FreeOamMatrix(sprite->oam.matrixNum);
+ DestroySprite(sprite);
+ }
+}
+
+static void sub_810B23C(struct Sprite *sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ sprite->pos1.x = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+ StartSpriteAffineAnim(sprite, 2);
+ sprite->data[0]++;
+ break;
+ case 1:
+ if (sprite->affineAnimEnded)
+ move_anim_8074EE0(sprite);
+ }
+}
+
+void sub_810B29C(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ task->data[6] = GetBattlerSpriteCoord(gBattleAnimAttacker, 2);
+ task->data[7] = GetBattlerSpriteCoord(gBattleAnimAttacker, 3);
+ task->data[8] = 4;
+ task->data[10] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
+ task->data[9] = (task->data[10] - task->data[6]) / 5;
+ task->data[4] = 7;
+ task->data[5] = -1;
+ task->data[11] = 12;
+ task->data[12] = BattleAnimAdjustPanning(task->data[11] - 76);
+ task->data[13] = BattleAnimAdjustPanning(SOUND_PAN_TARGET);
+ task->data[14] = task->data[12];
+ task->data[15] = (task->data[13] - task->data[12]) / 3;
+ task->data[0]++;
+ break;
+ case 1:
+ if (++task->data[1] > 0)
+ {
+ task->data[1] = 0;
+ if (sub_810B430(task, taskId))
+ {
+ if (task->data[2] == 5)
+ task->data[0] = 3;
+ else
+ task->data[0]++;
+ }
+ }
+
+ if (task->data[11])
+ task->data[11]--;
+ break;
+ case 2:
+ if (task->data[11])
+ task->data[11]--;
+
+ if (++task->data[1] > 4)
+ {
+ task->data[1] = 0;
+ if (task->data[2] & 1)
+ {
+ task->data[7] = 4;
+ task->data[8] = 68;
+ task->data[4] = 0;
+ task->data[5] = 1;
+ }
+ else
+ {
+ task->data[7] = 68;
+ task->data[8] = 4;
+ task->data[4] = 7;
+ task->data[5] = -1;
+ }
+
+ if (task->data[11])
+ task->data[0] = 4;
+ else
+ task->data[0] = 1;
+ }
+ break;
+ case 3:
+ if (task->data[3] == 0)
+ DestroyAnimVisualTask(taskId);
+ break;
+ case 4:
+ if (task->data[11])
+ task->data[11]--;
+ else
+ task->data[0] = 1;
+ break;
+ }
+}
+
+static bool8 sub_810B430(struct Task *task, u8 taskId)
+{
+ u8 spriteId = CreateSprite(&gUnknown_08595A30, task->data[6], task->data[7], 35);
+ if (spriteId != MAX_SPRITES)
+ {
+ gSprites[spriteId].oam.tileNum += task->data[4];
+ task->data[4] += task->data[5];
+ if (task->data[4] < 0)
+ task->data[4] = 7;
+ if (task->data[4] > 7)
+ task->data[4] = 0;
+
+ gSprites[spriteId].data[6] = taskId;
+ gSprites[spriteId].data[7] = 3;
+ task->data[3]++;
+ }
+
+ if (task->data[4] == 0 && task->data[5] > 0)
+ {
+ task->data[14] += task->data[15];
+ PlaySE12WithPanning(SE_W085, task->data[14]);
+ }
+
+ if ((task->data[5] < 0 && task->data[7] <= task->data[8])
+ || (task->data[5] > 0 && task->data[7] >= task->data[8]))
+ {
+ task->data[2]++;
+ task->data[6] += task->data[9];
+ return TRUE;
+ }
+ else
+ {
+ task->data[7] += task->data[5] * 8;
+ return FALSE;
+ }
+}
+
+static void sub_810B51C(struct Sprite *sprite)
+{
+ if (++sprite->data[0] > 12)
+ {
+ gTasks[sprite->data[6]].data[sprite->data[7]]--;
+ DestroySprite(sprite);
+ }
+}
+
+void sub_810B55C(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ task->data[15] = GetBattlerSpriteCoord(gBattleAnimTarget, 1) + 32;
+ task->data[14] = task->data[15];
+ while (task->data[14] > 16)
+ {
+ task->data[14] -= 32;
+ }
+
+ task->data[13] = GetBattlerSpriteCoord(gBattleAnimTarget, 2);
+ task->data[12] = GetBattlerSubpriority(gBattleAnimTarget) - 2;
+ task->data[0]++;
+ break;
+ case 1:
+ if (++task->data[1] > 1)
+ {
+ task->data[1] = 0;
+ if (sub_810B614(task, taskId))
+ task->data[0]++;
+ }
+ break;
+ case 2:
+ if (task->data[10] == 0)
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
diff --git a/src/ghost.c b/src/ghost.c
index 0464d1491..3135004da 100644
--- a/src/ghost.c
+++ b/src/ghost.c
@@ -1171,7 +1171,7 @@ void sub_8112C6C(u8 taskId)
task->data[11] = (sub_80A861C(gBattleAnimAttacker, 1) / 2) + 8;
task->data[7] = 0;
task->data[5] = sub_80A8328(gBattleAnimAttacker);
- task->data[6] = sub_80A82E4(gBattleAnimAttacker) - 2;
+ task->data[6] = GetBattlerSubpriority(gBattleAnimAttacker) - 2;
task->data[3] = 0;
task->data[4] = 16;
SetGpuReg(REG_OFFSET_BLDCNT, (BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_ALL));
diff --git a/src/reshow_battle_screen.c b/src/reshow_battle_screen.c
index 7f2eb3746..1a5221616 100644
--- a/src/reshow_battle_screen.c
+++ b/src/reshow_battle_screen.c
@@ -226,7 +226,7 @@ static void CreateBattlerSprite(u8 battler)
return;
SetMultiuseSpriteTemplateToPokemon(GetMonData(&gEnemyParty[gBattlerPartyIndexes[battler]], MON_DATA_SPECIES), GetBattlerPosition(battler));
- gBattlerSpriteIds[battler] = CreateSprite(&gMultiuseSpriteTemplate, GetBattlerSpriteCoord(battler, 2), posY, sub_80A82E4(battler));
+ gBattlerSpriteIds[battler] = CreateSprite(&gMultiuseSpriteTemplate, GetBattlerSpriteCoord(battler, 2), posY, GetBattlerSubpriority(battler));
gSprites[gBattlerSpriteIds[battler]].oam.paletteNum = battler;
gSprites[gBattlerSpriteIds[battler]].callback = SpriteCallbackDummy;
gSprites[gBattlerSpriteIds[battler]].data[0] = battler;
@@ -241,7 +241,7 @@ static void CreateBattlerSprite(u8 battler)
SetMultiuseSpriteTemplateToTrainerBack(gSaveBlock2Ptr->playerGender, GetBattlerPosition(B_POSITION_PLAYER_LEFT));
gBattlerSpriteIds[battler] = CreateSprite(&gMultiuseSpriteTemplate, 0x50,
(8 - gTrainerBackPicCoords[gSaveBlock2Ptr->playerGender].coords) * 4 + 80,
- sub_80A82E4(0));
+ GetBattlerSubpriority(0));
gSprites[gBattlerSpriteIds[battler]].oam.paletteNum = battler;
gSprites[gBattlerSpriteIds[battler]].callback = SpriteCallbackDummy;
gSprites[gBattlerSpriteIds[battler]].data[0] = battler;
@@ -251,7 +251,7 @@ static void CreateBattlerSprite(u8 battler)
SetMultiuseSpriteTemplateToTrainerBack(TRAINER_BACK_PIC_WALLY, GetBattlerPosition(0));
gBattlerSpriteIds[battler] = CreateSprite(&gMultiuseSpriteTemplate, 0x50,
(8 - gTrainerBackPicCoords[TRAINER_BACK_PIC_WALLY].coords) * 4 + 80,
- sub_80A82E4(0));
+ GetBattlerSubpriority(0));
gSprites[gBattlerSpriteIds[battler]].oam.paletteNum = battler;
gSprites[gBattlerSpriteIds[battler]].callback = SpriteCallbackDummy;
gSprites[gBattlerSpriteIds[battler]].data[0] = battler;
@@ -262,7 +262,7 @@ static void CreateBattlerSprite(u8 battler)
return;
SetMultiuseSpriteTemplateToPokemon(GetMonData(&gPlayerParty[gBattlerPartyIndexes[battler]], MON_DATA_SPECIES), GetBattlerPosition(battler));
- gBattlerSpriteIds[battler] = CreateSprite(&gMultiuseSpriteTemplate, GetBattlerSpriteCoord(battler, 2), posY, sub_80A82E4(battler));
+ gBattlerSpriteIds[battler] = CreateSprite(&gMultiuseSpriteTemplate, GetBattlerSpriteCoord(battler, 2), posY, GetBattlerSubpriority(battler));
gSprites[gBattlerSpriteIds[battler]].oam.paletteNum = battler;
gSprites[gBattlerSpriteIds[battler]].callback = SpriteCallbackDummy;
gSprites[gBattlerSpriteIds[battler]].data[0] = battler;