summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/battle/anim/aurora.c4
-rw-r--r--src/battle/anim/blow_kiss.c4
-rw-r--r--src/battle/anim/bubble.c4
-rw-r--r--src/battle/anim/bug.c14
-rw-r--r--src/battle/anim/bullet.c2
-rw-r--r--src/battle/anim/current.c8
-rw-r--r--src/battle/anim/dark.c4
-rw-r--r--src/battle/anim/dragon.c2
-rw-r--r--src/battle/anim/energy_wave.c6
-rw-r--r--src/battle/anim/fight.c18
-rw-r--r--src/battle/anim/fire_2.c4
-rw-r--r--src/battle/anim/flying.c10
-rw-r--r--src/battle/anim/flying_path.c28
-rw-r--r--src/battle/anim/ghost.c4
-rw-r--r--src/battle/anim/grip.c2
-rw-r--r--src/battle/anim/ground.c16
-rw-r--r--src/battle/anim/guard.c2
-rw-r--r--src/battle/anim/guillotine.c6
-rw-r--r--src/battle/anim/heal_bell.c2
-rw-r--r--src/battle/anim/leaf.c4
-rw-r--r--src/battle/anim/musical.c4
-rw-r--r--src/battle/anim/orbit.c8
-rw-r--r--src/battle/anim/orbs.c12
-rw-r--r--src/battle/anim/poison.c10
-rw-r--r--src/battle/anim/psychic.c4
-rw-r--r--src/battle/anim/ring.c4
-rw-r--r--src/battle/anim/rock.c6
-rw-r--r--src/battle/anim/scan.c4
-rw-r--r--src/battle/anim/seed.c4
-rw-r--r--src/battle/anim/sonic.c2
-rw-r--r--src/battle/anim/sunlight.c2
-rw-r--r--src/battle/anim/sword.c2
-rw-r--r--src/battle/anim/tile.c2
-rw-r--r--src/battle/anim/unused_8.c2
-rw-r--r--src/battle/anim/water.c2
-rw-r--r--src/battle/anim/wisp_orb.c2
-rw-r--r--src/battle/battle_7.c2
-rw-r--r--src/battle/battle_anim_812C144.c8
-rwxr-xr-xsrc/battle/battle_anim_813F0F4.c1540
-rw-r--r--src/battle/battle_controller_linkopponent.c8
-rw-r--r--src/battle/battle_controller_linkpartner.c8
-rw-r--r--src/battle/battle_controller_opponent.c6
-rw-r--r--src/battle/battle_controller_player.c8
-rw-r--r--src/battle/battle_controller_wally.c6
-rw-r--r--src/battle/pokeball.c18
-rw-r--r--src/pokemon_1.c7
-rw-r--r--src/pokemon_summary_screen.c2
-rw-r--r--src/rom_8077ABC.c36
48 files changed, 1692 insertions, 171 deletions
diff --git a/src/battle/anim/aurora.c b/src/battle/anim/aurora.c
index 5aff17f48..c17748440 100644
--- a/src/battle/anim/aurora.c
+++ b/src/battle/anim/aurora.c
@@ -68,7 +68,7 @@ void sub_80D33B4(struct Sprite *sprite)
sprite->data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 2) + r6;
sprite->data[3] = sprite->pos1.y;
sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 3) + gBattleAnimArgs[3];
- InitAnimSpriteTranslationDeltas(sprite);
+ InitAnimLinearTranslation(sprite);
sprite->callback = sub_80D344C;
sprite->affineAnimPaused = TRUE;
sprite->callback(sprite);
@@ -81,7 +81,7 @@ static void sub_80D344C(struct Sprite *sprite)
StartSpriteAnim(sprite, 1);
sprite->affineAnimPaused = FALSE;
}
- if (TranslateAnimSpriteByDeltas(sprite) != 0)
+ if (TranslateAnimLinear(sprite) != 0)
DestroyAnimSprite(sprite);
}
diff --git a/src/battle/anim/blow_kiss.c b/src/battle/anim/blow_kiss.c
index 0235794c2..80056614f 100644
--- a/src/battle/anim/blow_kiss.c
+++ b/src/battle/anim/blow_kiss.c
@@ -33,13 +33,13 @@ void sub_80D1F58(struct Sprite* sprite)
sprite->data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 2);
sprite->data[3] = sprite->pos1.y;
sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 3);
- InitAnimSpriteTranslationDeltas(sprite);
+ InitAnimLinearTranslation(sprite);
sprite->callback = sub_80D1FA4;
}
static void sub_80D1FA4(struct Sprite* sprite)
{
- if (TranslateAnimSpriteByDeltas(sprite) == 0)
+ if (TranslateAnimLinear(sprite) == 0)
{
sprite->pos2.y += Sin(sprite->data[5], 14);
sprite->data[5] = (sprite->data[5] + 4) & 0xFF;
diff --git a/src/battle/anim/bubble.c b/src/battle/anim/bubble.c
index e024091d7..ceefd82cf 100644
--- a/src/battle/anim/bubble.c
+++ b/src/battle/anim/bubble.c
@@ -80,7 +80,7 @@ void sub_80D31C8(struct Sprite* sprite)
sprite->data[3] = sprite->pos1.y;
sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 3);
- InitAnimSpriteTranslationDeltas(sprite);
+ InitAnimLinearTranslation(sprite);
newSpriteId = CreateInvisibleSpriteWithCallback(SpriteCallbackDummy);
sprite->data[5] = newSpriteId;
@@ -106,7 +106,7 @@ static void sub_80D32E8(struct Sprite *sprite)
u16 index = gSprites[spriteId].data[3];
sprite->data[0] = 1;
- TranslateAnimSpriteByDeltas(sprite);
+ TranslateAnimLinear(sprite);
sprite->pos2.x += Sin(index / 256, gSprites[spriteId].data[0]);
sprite->pos2.y += Cos(index / 256, gSprites[spriteId].data[1]);
diff --git a/src/battle/anim/bug.c b/src/battle/anim/bug.c
index c4c7fe937..e4ea01f5c 100644
--- a/src/battle/anim/bug.c
+++ b/src/battle/anim/bug.c
@@ -224,7 +224,7 @@ void sub_80DC824(struct Sprite *sprite)
sprite->data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 2) + gBattleAnimArgs[2];
sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 3) + gBattleAnimArgs[3];
- sprite->callback = StartTranslateAnimSpriteByDeltas;
+ sprite->callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
}
@@ -249,7 +249,7 @@ void sub_80DC8F4(struct Sprite *sprite)
sprite->data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 2);
sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 3);
- sprite->callback = StartTranslateAnimSpriteByDeltas;
+ sprite->callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
}
@@ -282,7 +282,7 @@ void sub_80DC9A0(struct Sprite *sprite)
static void sub_80DCA38(struct Sprite *sprite)
{
- if (TranslateAnimSpriteByDeltas(sprite))
+ if (TranslateAnimLinear(sprite))
{
DestroyAnimSprite(sprite);
return;
@@ -414,7 +414,7 @@ void AnimTranslateStinger(struct Sprite *sprite)
sprite->data[2] = lVarX;
sprite->data[4] = lVarY;
- sprite->callback = StartTranslateAnimSpriteByDeltas;
+ sprite->callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
}
@@ -438,7 +438,7 @@ void AnimMissileArc(struct Sprite *sprite)
sprite->data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 2) + gBattleAnimArgs[2];
sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 3) + gBattleAnimArgs[3];
sprite->data[5] = gBattleAnimArgs[5];
- InitAnimSpriteTranslationOverDuration(sprite);
+ InitAnimArcTranslation(sprite);
sprite->callback = AnimMissileArcStep;
sprite->invisible = TRUE;
@@ -448,7 +448,7 @@ static void AnimMissileArcStep(struct Sprite *sprite)
{
sprite->invisible = FALSE;
- if (TranslateAnimSpriteLinearAndSine(sprite))
+ if (TranslateAnimArc(sprite))
{
DestroyAnimSprite(sprite);
}
@@ -468,7 +468,7 @@ static void AnimMissileArcStep(struct Sprite *sprite)
x2 += x1;
y2 += y1;
- if (!TranslateAnimSpriteLinearAndSine(sprite))
+ if (!TranslateAnimArc(sprite))
{
u16 rotation = ArcTan2Neg(sprite->pos1.x + sprite->pos2.x - x2,
sprite->pos1.y + sprite->pos2.y - y2);
diff --git a/src/battle/anim/bullet.c b/src/battle/anim/bullet.c
index 764903247..60c001853 100644
--- a/src/battle/anim/bullet.c
+++ b/src/battle/anim/bullet.c
@@ -44,7 +44,7 @@ void sub_80CFFD8(struct Sprite* sprite)
sprite->data[0] = 20;
sprite->data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 2);
sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 3);
- sprite->callback = StartTranslateAnimSpriteByDeltas;
+ sprite->callback = StartAnimLinearTranslation;
sprite->affineAnimPaused = 1;
StoreSpriteCallbackInData(sprite, sub_80D0030);
}
diff --git a/src/battle/anim/current.c b/src/battle/anim/current.c
index af72edef0..fb7bc4e1c 100644
--- a/src/battle/anim/current.c
+++ b/src/battle/anim/current.c
@@ -366,7 +366,7 @@ void sub_80D648C(struct Sprite *sprite)
sprite->data[3] = sprite->pos1.y;
sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 3);
- InitAnimSpriteTranslationDeltas(sprite);
+ InitAnimLinearTranslation(sprite);
sprite->data[5] = gBattleAnimArgs[2];
sprite->data[6] = gBattleAnimArgs[5];
sprite->data[7] = gBattleAnimArgs[4];
@@ -378,7 +378,7 @@ void sub_80D648C(struct Sprite *sprite)
static void sub_80D6514(struct Sprite *sprite)
{
- if (!TranslateAnimSpriteByDeltas(sprite))
+ if (!TranslateAnimLinear(sprite))
{
sprite->pos2.x += Sin(sprite->data[7], sprite->data[5]);
sprite->pos2.y += Cos(sprite->data[7], sprite->data[5]);
@@ -857,7 +857,7 @@ static void sub_80D6BB8(u8 taskId)
sprite->data[4] = task->data[15];
sprite->data[5] = taskId;
- InitAnimSpriteTranslationDeltas(sprite);
+ InitAnimLinearTranslation(sprite);
StoreSpriteCallbackInData(sprite, sub_80D6D00);
sprite->callback = sub_8078600;
@@ -887,7 +887,7 @@ static void sub_80D6BB8(u8 taskId)
static void sub_80D6CCC(struct Sprite *sprite)
{
- if (TranslateAnimSpriteByDeltas(sprite))
+ if (TranslateAnimLinear(sprite))
{
gTasks[sprite->data[5]].data[7]--;
DestroySprite(sprite);
diff --git a/src/battle/anim/dark.c b/src/battle/anim/dark.c
index 59db85342..09e16b8fe 100644
--- a/src/battle/anim/dark.c
+++ b/src/battle/anim/dark.c
@@ -402,13 +402,13 @@ void sub_80DFFD0(struct Sprite *sprite)
sprite->data[4] = sprite->pos1.y + 12;
sprite->data[5] = -12;
- InitAnimSpriteTranslationOverDuration(sprite);
+ InitAnimArcTranslation(sprite);
sprite->callback = sub_80E00D0;
}
static void sub_80E00D0(struct Sprite *sprite)
{
- if (TranslateAnimSpriteLinearAndSine(sprite))
+ if (TranslateAnimArc(sprite))
move_anim_8074EE0(sprite);
}
diff --git a/src/battle/anim/dragon.c b/src/battle/anim/dragon.c
index 163529ecb..0b5b1b88b 100644
--- a/src/battle/anim/dragon.c
+++ b/src/battle/anim/dragon.c
@@ -242,7 +242,7 @@ void sub_80DF63C(struct Sprite *sprite)
StartSpriteAnim(sprite, 1);
}
sprite->data[0] = gBattleAnimArgs[4];
- sprite->callback = StartTranslateAnimSpriteByDeltas;
+ sprite->callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData(sprite, move_anim_8074EE0);
}
diff --git a/src/battle/anim/energy_wave.c b/src/battle/anim/energy_wave.c
index 9ac362b57..cbca5338c 100644
--- a/src/battle/anim/energy_wave.c
+++ b/src/battle/anim/energy_wave.c
@@ -170,7 +170,7 @@ void sub_80D3554(struct Sprite *sprite)
sprite->data[3] = sprite->pos1.y;
sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 3);
- InitAnimSpriteTranslationDeltas(sprite);
+ InitAnimLinearTranslation(sprite);
sprite->data[5] = 0xD200 / sprite->data[0];
sprite->data[7] = gBattleAnimArgs[3];
@@ -191,7 +191,7 @@ void sub_80D3554(struct Sprite *sprite)
static void sub_80D35DC(struct Sprite *sprite)
{
- if (TranslateAnimSpriteByDeltas(sprite))
+ if (TranslateAnimLinear(sprite))
{
DestroyAnimSprite(sprite);
}
@@ -299,6 +299,6 @@ void sub_80D3728(struct Sprite *sprite)
sprite->data[0] = gBattleAnimArgs[4];
sprite->data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 2) + gBattleAnimArgs[2];
sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, var2) + gBattleAnimArgs[3];
- sprite->callback = StartTranslateAnimSpriteByDeltas;
+ sprite->callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
}
diff --git a/src/battle/anim/fight.c b/src/battle/anim/fight.c
index af2af1981..1a534aec7 100644
--- a/src/battle/anim/fight.c
+++ b/src/battle/anim/fight.c
@@ -567,7 +567,7 @@ void sub_80D92D0(struct Sprite *sprite)
}
sprite->data[4] = sprite->pos1.y - 20;
- sprite->callback = StartTranslateAnimSpriteByDeltas;
+ sprite->callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData(sprite, sub_80D9328);
}
@@ -583,7 +583,7 @@ static void sub_80D9328(struct Sprite *sprite)
sprite->pos2.y = 0;
sprite->pos2.x = 0;
- sprite->callback = StartTranslateAnimSpriteByDeltas;
+ sprite->callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
}
}
@@ -604,7 +604,7 @@ void sub_80D9378(struct Sprite *sprite)
sprite->data[3] = sprite->pos1.y;
sprite->data[4] = sprite->pos1.y;
- InitAnimSpriteTranslationDeltas(sprite);
+ InitAnimLinearTranslation(sprite);
sprite->data[5] = gBattleAnimArgs[5];
sprite->data[6] = gBattleAnimArgs[4];
@@ -615,7 +615,7 @@ void sub_80D9378(struct Sprite *sprite)
static void sub_80D9404(struct Sprite *sprite)
{
- if (!TranslateAnimSpriteByDeltas(sprite))
+ if (!TranslateAnimLinear(sprite))
{
sprite->pos2.y += Sin(sprite->data[7] >> 8, sprite->data[5]);
sprite->data[7] += sprite->data[6];
@@ -672,7 +672,7 @@ static void AnimStompFootStep(struct Sprite *sprite)
sprite->data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 2);
sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 3);
- sprite->callback = StartTranslateAnimSpriteByDeltas;
+ sprite->callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData(sprite, AnimStompFootEnd);
}
}
@@ -846,9 +846,9 @@ static void sub_80D986C(struct Sprite *sprite)
sprite->data[3] = sprite->pos1.y;
sprite->data[4] = GetBattlerSpriteCoord(sprite->data[7], 3);
- InitAnimSpriteTranslationDeltas(sprite);
+ InitAnimLinearTranslation(sprite);
StoreSpriteCallbackInData(sprite, move_anim_8074EE0);
- sprite->callback = TranslateAnimSpriteByDeltasUntil;
+ sprite->callback = TranslateAnimLinearUntil;
}
}
@@ -941,9 +941,9 @@ void sub_80D9A38(struct Sprite *sprite)
sprite->data[3] = sprite->pos1.y;
sprite->data[4] = GetBattlerSpriteCoord(bank, 3);
- InitAnimSpriteTranslationDeltas(sprite);
+ InitAnimLinearTranslation(sprite);
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
- sprite->callback = TranslateAnimSpriteByDeltasUntil;
+ sprite->callback = TranslateAnimLinearUntil;
}
static void sub_80D9B24(struct Sprite *sprite)
diff --git a/src/battle/anim/fire_2.c b/src/battle/anim/fire_2.c
index b055d7c80..68e13e1c1 100644
--- a/src/battle/anim/fire_2.c
+++ b/src/battle/anim/fire_2.c
@@ -241,7 +241,7 @@ static void AnimFireRingStep1(struct Sprite *sprite)
sprite->data[3] = sprite->pos1.y;
sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 3);
- InitAnimSpriteTranslationDeltas(sprite);
+ InitAnimLinearTranslation(sprite);
sprite->callback = AnimFireRingStep2;
}
@@ -249,7 +249,7 @@ static void AnimFireRingStep1(struct Sprite *sprite)
static void AnimFireRingStep2(struct Sprite *sprite)
{
- if (TranslateAnimSpriteByDeltas(sprite))
+ if (TranslateAnimLinear(sprite))
{
sprite->data[0] = 0;
diff --git a/src/battle/anim/flying.c b/src/battle/anim/flying.c
index e8c50816c..35022db1f 100644
--- a/src/battle/anim/flying.c
+++ b/src/battle/anim/flying.c
@@ -496,14 +496,14 @@ void sub_80DA16C(struct Sprite *sprite)
sprite->data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 2) + gBattleAnimArgs[2];
sprite->data[3] = sprite->pos1.y;
sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 3) + gBattleAnimArgs[3];
- InitAnimSpriteTranslationDeltas(sprite);
+ InitAnimLinearTranslation(sprite);
sprite->callback = sub_80785E4;
StoreSpriteCallbackInData(sprite, sub_80DA1EC);
}
void sub_80DA1EC(struct Sprite *sprite)
{
- if (TranslateAnimSpriteByDeltas(sprite) != 0)
+ if (TranslateAnimLinear(sprite) != 0)
{
DestroyAnimSprite(sprite);
}
@@ -543,7 +543,7 @@ void sub_80DA208(struct Sprite *sprite)
sprite->data[2] = sprite->data[2] + gBattleAnimArgs[2];
sprite->data[4] = sprite->data[4] + gBattleAnimArgs[3];
- sprite->callback = StartTranslateAnimSpriteByDeltas;
+ sprite->callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
SeekSpriteAnim(sprite, gBattleAnimArgs[5]);
@@ -596,14 +596,14 @@ void sub_80DA38C(struct Sprite *sprite)
sprite->data[3] = sprite->pos1.y;
sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 3);
- InitAnimSpriteTranslationDeltas(sprite);
+ InitAnimLinearTranslation(sprite);
sprite->callback = sub_80DA410;
}
void sub_80DA410(struct Sprite *sprite)
{
sprite->data[0] = 1;
- TranslateAnimSpriteByDeltas(sprite);
+ TranslateAnimLinear(sprite);
if (((u16)sprite->data[3] >> 8) > 200)
{
diff --git a/src/battle/anim/flying_path.c b/src/battle/anim/flying_path.c
index b190e9e8c..d2f85ad35 100644
--- a/src/battle/anim/flying_path.c
+++ b/src/battle/anim/flying_path.c
@@ -102,7 +102,7 @@ void sub_80CBDF4(u8 taskId)
gSprites[task->data[2]].data[3] = task->data[9];
gSprites[task->data[2]].data[4] = task->data[7] + (task->data[11] / 2 + 10) * task->data[5];
gSprites[task->data[2]].data[5] = sub_80CC338(&gSprites[task->data[2]]);
- InitAnimSpriteTranslationOverDuration(&gSprites[task->data[2]]);
+ InitAnimArcTranslation(&gSprites[task->data[2]]);
task->func = sub_80CBF5C;
}
@@ -115,7 +115,7 @@ static void sub_80CBF5C(u8 taskId)
{
case 4:
sub_80CC358(task, taskId);
- if (TranslateAnimSpriteLinearAndSine(sprite) == 0)
+ if (TranslateAnimArc(sprite) == 0)
{
break;
}
@@ -127,7 +127,7 @@ static void sub_80CBF5C(u8 taskId)
break;
case 8:
sub_80CC358(task, taskId);
- if (TranslateAnimSpriteLinearAndSine(sprite) == 0)
+ if (TranslateAnimArc(sprite) == 0)
{
break;
}
@@ -139,7 +139,7 @@ static void sub_80CBF5C(u8 taskId)
break;
case 0:
sub_80CC358(task, taskId);
- if (TranslateAnimSpriteLinearAndSine(sprite) == 0)
+ if (TranslateAnimArc(sprite) == 0)
break;
task->data[15] = 1;
@@ -160,12 +160,12 @@ static void sub_80CBF5C(u8 taskId)
task->data[3] = a;
sprite->subpriority = task->data[4];
StartSpriteAnim(sprite, task->data[3]);
- InitAnimSpriteTranslationOverDuration(sprite);
+ InitAnimArcTranslation(sprite);
task->data[0]++;
break;
case 2:
sub_80CC358(task, taskId);
- if (TranslateAnimSpriteLinearAndSine(sprite) == 0)
+ if (TranslateAnimArc(sprite) == 0)
break;
task->data[15] = 3;
@@ -185,7 +185,7 @@ static void sub_80CBF5C(u8 taskId)
task->data[3] = 2;
sprite->subpriority = task->data[4];
StartSpriteAnim(sprite, task->data[3]);
- InitAnimSpriteTranslationOverDuration(sprite);
+ InitAnimArcTranslation(sprite);
task->data[0]++;
break;
case 5:
@@ -203,12 +203,12 @@ static void sub_80CBF5C(u8 taskId)
task->data[3] = 3;
sprite->subpriority = task->data[4];
StartSpriteAnim(sprite, task->data[3]);
- InitAnimSpriteTranslationOverDuration(sprite);
+ InitAnimArcTranslation(sprite);
task->data[0]++;
break;
case 6:
sub_80CC358(task, taskId);
- if (TranslateAnimSpriteLinearAndSine(sprite) == 0)
+ if (TranslateAnimArc(sprite) == 0)
break;
task->data[15] = 7;
@@ -229,7 +229,7 @@ static void sub_80CBF5C(u8 taskId)
task->data[3] = 4;
sprite->subpriority = task->data[4];
StartSpriteAnim(sprite, task->data[3]);
- InitAnimSpriteTranslationOverDuration(sprite);
+ InitAnimArcTranslation(sprite);
task->data[0]++;
break;
case 9:
@@ -246,12 +246,12 @@ static void sub_80CBF5C(u8 taskId)
task->data[3] = 5;
sprite->subpriority = task->data[4];
StartSpriteAnim(sprite, task->data[3]);
- InitAnimSpriteTranslationOverDuration(sprite);
+ InitAnimArcTranslation(sprite);
task->data[0]++;
break;
case 10:
sub_80CC358(task, taskId);
- if (TranslateAnimSpriteLinearAndSine(sprite) == 0)
+ if (TranslateAnimArc(sprite) == 0)
{
break;
}
@@ -277,13 +277,13 @@ static void sub_80CBF5C(u8 taskId)
task->data[3] = 6;
sprite->subpriority = task->data[4];
StartSpriteAnim(sprite, task->data[3]);
- InitAnimSpriteTranslationOverDuration(sprite);
+ InitAnimArcTranslation(sprite);
task->data[0]++;
break;
}
case 12:
sub_80CC358(task, taskId);
- if (TranslateAnimSpriteLinearAndSine(sprite) != 0)
+ if (TranslateAnimArc(sprite) != 0)
{
DestroySprite(sprite);
task->data[0]++;
diff --git a/src/battle/anim/ghost.c b/src/battle/anim/ghost.c
index 52d9c7e72..c11cea5a0 100644
--- a/src/battle/anim/ghost.c
+++ b/src/battle/anim/ghost.c
@@ -242,7 +242,7 @@ static void sub_80DDBD8(struct Sprite *sprite)
s16 r0;
s16 r2;
sub_80DDCC8(sprite);
- if (TranslateAnimSpriteByDeltas(sprite))
+ if (TranslateAnimLinear(sprite))
{
sprite->callback = sub_80DDC4C;
return;
@@ -265,7 +265,7 @@ static void sub_80DDC4C(struct Sprite *sprite)
s16 r2;
s16 r0;
sprite->data[0] = 1;
- TranslateAnimSpriteByDeltas(sprite);
+ TranslateAnimLinear(sprite);
sprite->pos2.x += Sin(sprite->data[5], 10);
sprite->pos2.y += Cos(sprite->data[5], 15);
diff --git a/src/battle/anim/grip.c b/src/battle/anim/grip.c
index 1ec779c09..b5c191449 100644
--- a/src/battle/anim/grip.c
+++ b/src/battle/anim/grip.c
@@ -67,7 +67,7 @@ void sub_80D0178(struct Sprite* sprite)
sprite->data[0] = 6;
sprite->data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 2) + r8;
sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 3) + r6;
- sprite->callback = StartTranslateAnimSpriteByDeltas;
+ sprite->callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData(sprite, sub_80D020C);
}
diff --git a/src/battle/anim/ground.c b/src/battle/anim/ground.c
index 67b4c9c9c..cf73ead2f 100644
--- a/src/battle/anim/ground.c
+++ b/src/battle/anim/ground.c
@@ -160,13 +160,13 @@ static void AnimBonemerangProjectile(struct Sprite *sprite)
sprite->data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 2);
sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 3);
sprite->data[5] = -40;
- InitAnimSpriteTranslationOverDuration(sprite);
+ InitAnimArcTranslation(sprite);
sprite->callback = AnimBonemerangProjectileStep;
}
static void AnimBonemerangProjectileStep(struct Sprite *sprite)
{
- if (TranslateAnimSpriteLinearAndSine(sprite))
+ if (TranslateAnimArc(sprite))
{
sprite->pos1.x += sprite->pos2.x;
sprite->pos1.y += sprite->pos2.y;
@@ -176,14 +176,14 @@ static void AnimBonemerangProjectileStep(struct Sprite *sprite)
sprite->data[2] = GetBattlerSpriteCoord(gAnimBankAttacker, 2);
sprite->data[4] = GetBattlerSpriteCoord(gAnimBankAttacker, 3);
sprite->data[5] = 40;
- InitAnimSpriteTranslationOverDuration(sprite);
+ InitAnimArcTranslation(sprite);
sprite->callback = AnimBonemerangProjectileEnd;
}
}
static void AnimBonemerangProjectileEnd(struct Sprite *sprite)
{
- if (TranslateAnimSpriteLinearAndSine(sprite))
+ if (TranslateAnimArc(sprite))
DestroyAnimSprite(sprite);
}
@@ -203,7 +203,7 @@ static void AnimBoneHitProjectile(struct Sprite *sprite)
sprite->data[0] = gBattleAnimArgs[4];
sprite->data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 2) + gBattleAnimArgs[2];
sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 3) + gBattleAnimArgs[3];
- sprite->callback = StartTranslateAnimSpriteByDeltas;
+ sprite->callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
}
@@ -233,7 +233,7 @@ static void AnimDirtScatter(struct Sprite *sprite)
sprite->data[0] = gBattleAnimArgs[2];
sprite->data[2] = targetXPos + xOffset;
sprite->data[4] = targetYPos + yOffset;
- sprite->callback = StartTranslateAnimSpriteByDeltas;
+ sprite->callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData(sprite, move_anim_8074EE0);
}
@@ -537,13 +537,13 @@ static void AnimFissureDirtPlumeParticle(struct Sprite *sprite)
sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[2];
sprite->data[4] = sprite->pos1.y + gBattleAnimArgs[3];
sprite->data[5] = gBattleAnimArgs[4];
- InitAnimSpriteTranslationOverDuration(sprite);
+ InitAnimArcTranslation(sprite);
sprite->callback = AnimFissureDirtPlumeParticleStep;
}
static void AnimFissureDirtPlumeParticleStep(struct Sprite *sprite)
{
- if (TranslateAnimSpriteLinearAndSine(sprite))
+ if (TranslateAnimArc(sprite))
DestroyAnimSprite(sprite);
}
diff --git a/src/battle/anim/guard.c b/src/battle/anim/guard.c
index 341f74372..b1f194ef5 100644
--- a/src/battle/anim/guard.c
+++ b/src/battle/anim/guard.c
@@ -61,6 +61,6 @@ void sub_80D3014(struct Sprite *sprite)
sprite->data[2] = sprite->pos1.x;
sprite->data[4] = sprite->pos1.y - 72;
- sprite->callback = StartTranslateAnimSpriteByDeltas;
+ sprite->callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
}
diff --git a/src/battle/anim/guillotine.c b/src/battle/anim/guillotine.c
index eb1bc7733..bc0fce4dd 100644
--- a/src/battle/anim/guillotine.c
+++ b/src/battle/anim/guillotine.c
@@ -71,7 +71,7 @@ void sub_80D0228(struct Sprite* sprite)
sprite->data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 2) + r9;
sprite->data[3] = sprite->pos1.y;
sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 3) + r6;
- InitAnimSpriteTranslationDeltas(sprite);
+ InitAnimLinearTranslation(sprite);
sprite->data[5] = gBattleAnimArgs[0];
sprite->data[6] = sprite->data[0];
sprite->callback = sub_80D02D0;
@@ -79,7 +79,7 @@ void sub_80D0228(struct Sprite* sprite)
static void sub_80D02D0(struct Sprite* sprite)
{
- if (TranslateAnimSpriteByDeltas(sprite) && sprite->animEnded == 1)
+ if (TranslateAnimLinear(sprite) && sprite->animEnded == 1)
{
SeekSpriteAnim(sprite, 0);
sprite->animPaused = 1;
@@ -119,6 +119,6 @@ static void sub_80D0344(struct Sprite* sprite)
static void sub_80D03A8(struct Sprite* sprite)
{
- if (TranslateAnimSpriteByDeltas(sprite) != 0)
+ if (TranslateAnimLinear(sprite) != 0)
DestroyAnimSprite(sprite);
}
diff --git a/src/battle/anim/heal_bell.c b/src/battle/anim/heal_bell.c
index 09029c9ff..c9f26b093 100644
--- a/src/battle/anim/heal_bell.c
+++ b/src/battle/anim/heal_bell.c
@@ -126,7 +126,7 @@ void sub_80D1C08(struct Sprite* sprite)
sprite->data[0] = gBattleAnimArgs[4];
sprite->data[2] = GetBattlerSpriteCoord(gAnimBankAttacker, 0) + gBattleAnimArgs[2];
sprite->data[4] = GetBattlerSpriteCoord(gAnimBankAttacker, 1) + gBattleAnimArgs[3];
- sprite->callback = StartTranslateAnimSpriteByDeltas;
+ sprite->callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
sub_80D1BA8(sprite, gBattleAnimArgs[5], gBattleAnimArgs[6]);
}
diff --git a/src/battle/anim/leaf.c b/src/battle/anim/leaf.c
index d31e4dbd6..2d36d7360 100644
--- a/src/battle/anim/leaf.c
+++ b/src/battle/anim/leaf.c
@@ -207,7 +207,7 @@ void AnimTranslateLinearSingleSineWave(struct Sprite* sprite)
}
sprite->data[5] = gBattleAnimArgs[5];
- InitAnimSpriteTranslationOverDuration(sprite);
+ InitAnimArcTranslation(sprite);
if (GetBattlerSide(gAnimBankAttacker) == GetBattlerSide(gAnimBankTarget))
{
sprite->data[0] = 1;
@@ -228,7 +228,7 @@ static void AnimTranslateLinearSingleSineWaveStep(struct Sprite* sprite)
s16 r0;
sprite->data[0] = 1;
- TranslateAnimSpriteLinearAndSine(sprite);
+ TranslateAnimArc(sprite);
r0 = sprite->data[7];
sprite->data[0] = a;
if (b > 0xC8 && r0 <= 0x37 && sprite->oam.affineParam == 0)
diff --git a/src/battle/anim/musical.c b/src/battle/anim/musical.c
index 17836ace7..b67cd17b8 100644
--- a/src/battle/anim/musical.c
+++ b/src/battle/anim/musical.c
@@ -368,14 +368,14 @@ void sub_80CEE60(struct Sprite* sprite)
sprite->data[2] = a + sprite->data[1];
sprite->data[3] = sprite->pos1.y;
sprite->data[4] = sprite->data[3] - 40;
- InitAnimSpriteTranslationDeltas(sprite);
+ InitAnimLinearTranslation(sprite);
sprite->data[5] = gBattleAnimArgs[3];
sprite->callback = sub_80CEEE8;
}
static void sub_80CEEE8(struct Sprite* sprite)
{
- if (TranslateAnimSpriteByDeltas(sprite) == 0)
+ if (TranslateAnimLinear(sprite) == 0)
{
s16 a;
a = Sin(sprite->data[5], 8);
diff --git a/src/battle/anim/orbit.c b/src/battle/anim/orbit.c
index e76e0923e..f938a2707 100644
--- a/src/battle/anim/orbit.c
+++ b/src/battle/anim/orbit.c
@@ -158,7 +158,7 @@ void sub_80CAD54(struct Sprite* sprite)
sprite->data[2] = sprite->pos1.x;
sprite->data[3] = sprite->pos1.y;
sprite->data[4] = GetBattlerSpriteCoord(gAnimBankAttacker, 3) + gBattleAnimArgs[2];
- InitAnimSpriteTranslationDeltas(sprite);
+ InitAnimLinearTranslation(sprite);
sprite->data[5] = 0x40;
sprite->callback = sub_80CADA8;
sub_80CADA8(sprite);
@@ -166,7 +166,7 @@ void sub_80CAD54(struct Sprite* sprite)
static void sub_80CADA8(struct Sprite* sprite)
{
- if (!TranslateAnimSpriteByDeltas(sprite))
+ if (!TranslateAnimLinear(sprite))
{
sprite->pos2.x += Sin(sprite->data[5], 32);
sprite->pos2.y += Cos(sprite->data[5], -5);
@@ -195,7 +195,7 @@ void sub_80CAE20(struct Sprite* sprite)
sprite->data[2] = sprite->pos1.x;
sprite->data[3] = sprite->pos1.y;
sprite->data[4] = GetBattlerSpriteCoord(gAnimBankAttacker, 3) + gBattleAnimArgs[2];
- InitAnimSpriteTranslationDeltas(sprite);
+ InitAnimLinearTranslation(sprite);
sprite->data[5] = 0x40;
sprite->callback = sub_80CAE74;
sub_80CAE74(sprite);
@@ -203,7 +203,7 @@ void sub_80CAE20(struct Sprite* sprite)
static void sub_80CAE74(struct Sprite* sprite)
{
- if (!TranslateAnimSpriteByDeltas(sprite))
+ if (!TranslateAnimLinear(sprite))
{
sprite->pos2.x += Sin(sprite->data[5], 8);
if ((u16)(sprite->data[5] - 0x3B) < 5 || (u16)(sprite->data[5] - 0xBB) < 5)
diff --git a/src/battle/anim/orbs.c b/src/battle/anim/orbs.c
index af6568bd8..b97f0c246 100644
--- a/src/battle/anim/orbs.c
+++ b/src/battle/anim/orbs.c
@@ -196,7 +196,7 @@ void sub_80CA7B0(struct Sprite* sprite)
sprite->data[0] = gBattleAnimArgs[2];
sprite->data[2] = GetBattlerSpriteCoord(gAnimBankAttacker, 2);
sprite->data[4] = GetBattlerSpriteCoord(gAnimBankAttacker, 3);
- sprite->callback = StartTranslateAnimSpriteByDeltas;
+ sprite->callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData(sprite, move_anim_8074EE0);
}
@@ -207,7 +207,7 @@ void sub_80CA800(struct Sprite* sprite)
sprite->data[0] = gBattleAnimArgs[2];
sprite->data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 2);
sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 3);
- sprite->callback = StartTranslateAnimSpriteByDeltas;
+ sprite->callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
}
@@ -219,7 +219,7 @@ void sub_80CA858(struct Sprite* sprite)
sprite->data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 2);
sprite->data[3] = sprite->pos1.y;
sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 3);
- InitAnimSpriteTranslationDeltas(sprite);
+ InitAnimLinearTranslation(sprite);
sprite->data[5] = gBattleAnimArgs[3];
sprite->callback = sub_80CA8B4;
sub_80CA8B4(sprite);
@@ -227,7 +227,7 @@ void sub_80CA858(struct Sprite* sprite)
static void sub_80CA8B4(struct Sprite* sprite)
{
- if (TranslateAnimSpriteByDeltas(sprite))
+ if (TranslateAnimLinear(sprite))
{
DestroySprite(sprite);
}
@@ -272,13 +272,13 @@ void sub_80CA9A8(struct Sprite* sprite)
sprite->data[2] = GetBattlerSpriteCoord(gAnimBankAttacker, 2);
sprite->data[4] = GetBattlerSpriteCoord(gAnimBankAttacker, 3);
sprite->data[5] = gBattleAnimArgs[2];
- InitAnimSpriteTranslationOverDuration(sprite);
+ InitAnimArcTranslation(sprite);
sprite->callback = sub_80CA9F8;
}
static void sub_80CA9F8(struct Sprite* sprite)
{
- if (TranslateAnimSpriteLinearAndSine(sprite))
+ if (TranslateAnimArc(sprite))
DestroyAnimSprite(sprite);
}
diff --git a/src/battle/anim/poison.c b/src/battle/anim/poison.c
index 4d6673adf..99f534e1c 100644
--- a/src/battle/anim/poison.c
+++ b/src/battle/anim/poison.c
@@ -204,14 +204,14 @@ void sub_80D9D70(struct Sprite *sprite)
sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 3);
sprite->data[5] = -30;
- InitAnimSpriteTranslationOverDuration(sprite);
+ InitAnimArcTranslation(sprite);
sprite->callback = sub_80D9DD4;
}
static void sub_80D9DD4(struct Sprite *sprite) // same as sub_80D9E78
{
- if (TranslateAnimSpriteLinearAndSine(sprite))
+ if (TranslateAnimArc(sprite))
DestroyAnimSprite(sprite);
}
@@ -232,14 +232,14 @@ void sub_80D9DF0(struct Sprite *sprite)
sprite->data[4] = l2 + gBattleAnimArgs[5];
sprite->data[5] = -30;
- InitAnimSpriteTranslationOverDuration(sprite);
+ InitAnimArcTranslation(sprite);
sprite->callback = sub_80D9E78;
}
static void sub_80D9E78(struct Sprite *sprite) // same as sub_80D9DD4
{
- if (TranslateAnimSpriteLinearAndSine(sprite))
+ if (TranslateAnimArc(sprite))
DestroyAnimSprite(sprite);
}
@@ -284,7 +284,7 @@ void sub_80D9F14(struct Sprite *sprite)
sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[2];
sprite->data[4] = sprite->pos1.y + sprite->data[0];
- sprite->callback = StartTranslateAnimSpriteByDeltas;
+ sprite->callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
}
diff --git a/src/battle/anim/psychic.c b/src/battle/anim/psychic.c
index a63652646..704fa0306 100644
--- a/src/battle/anim/psychic.c
+++ b/src/battle/anim/psychic.c
@@ -912,7 +912,7 @@ static void sub_80DC1FC(u8 taskId)
gSprites[spriteId].data[4] = task->data[14];
gSprites[spriteId].data[5] = task->data[10];
- InitAnimSpriteTranslationOverDuration(&gSprites[spriteId]);
+ InitAnimArcTranslation(&gSprites[spriteId]);
StartSpriteAffineAnim(&gSprites[spriteId], task->data[2] & 3);
}
@@ -929,7 +929,7 @@ static void sub_80DC1FC(u8 taskId)
void sub_80DC2B0(struct Sprite *sprite)
{
- if (TranslateAnimSpriteLinearAndSine(sprite))
+ if (TranslateAnimArc(sprite))
{
FreeOamMatrix(sprite->oam.matrixNum);
DestroySprite(sprite);
diff --git a/src/battle/anim/ring.c b/src/battle/anim/ring.c
index 024728ecc..a2cf618a6 100644
--- a/src/battle/anim/ring.c
+++ b/src/battle/anim/ring.c
@@ -240,7 +240,7 @@ void sub_80D0FD8(struct Sprite* sprite)
void sub_80D1098(struct Sprite* sprite)
{
- if (TranslateAnimSpriteByDeltas(sprite))
+ if (TranslateAnimLinear(sprite))
{
FreeSpriteOamMatrix(sprite);
DestroyAnimSprite(sprite);
@@ -327,7 +327,7 @@ void sub_80D10B8(struct Sprite* sprite)
sprite->data[2] = sp0;
sprite->data[4] = sp1;
sprite->data[0] = gBattleAnimArgs[0];
- InitAnimSpriteTranslationDeltas(sprite);
+ InitAnimLinearTranslation(sprite);
sprite->callback = sub_80D1098;
sub_80D1098(sprite);
}
diff --git a/src/battle/anim/rock.c b/src/battle/anim/rock.c
index 4e839d3e8..7738e4d0c 100644
--- a/src/battle/anim/rock.c
+++ b/src/battle/anim/rock.c
@@ -564,7 +564,7 @@ void sub_80DD490(struct Sprite *sprite)
sprite->data[2] = sprite->pos1.x;
sprite->data[4] = sprite->pos1.y + gBattleAnimArgs[2];
- sprite->callback = StartTranslateAnimSpriteByDeltas;
+ sprite->callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
}
@@ -729,7 +729,7 @@ static void sub_80DD774(struct Task *task)
gSprites[spriteId].data[5] = -16 - (task->data[1] * 2);
gSprites[spriteId].oam.tileNum += var0;
- InitAnimSpriteTranslationOverDuration(&gSprites[spriteId]);
+ InitAnimArcTranslation(&gSprites[spriteId]);
task->data[11]++;
}
@@ -738,7 +738,7 @@ static void sub_80DD774(struct Task *task)
void sub_80DD87C(struct Sprite *sprite)
{
- if (TranslateAnimSpriteLinearAndSine(sprite))
+ if (TranslateAnimArc(sprite))
{
u8 taskId = FindTaskIdByFunc(sub_80DD604);
if (taskId != 0xFF)
diff --git a/src/battle/anim/scan.c b/src/battle/anim/scan.c
index 9f427a9c4..409acf549 100644
--- a/src/battle/anim/scan.c
+++ b/src/battle/anim/scan.c
@@ -77,7 +77,7 @@ static void sub_80CD408(struct Sprite* sprite)
sprite->data[0] = 8;
sprite->data[2] = sprite->pos1.x + gUnknown_083D6DDC[sprite->data[5] >> 8][0];
sprite->data[4] = sprite->pos1.y + gUnknown_083D6DDC[sprite->data[5] >> 8][1];
- sprite->callback = StartTranslateAnimSpriteByDeltas;
+ sprite->callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData(sprite, sub_80CD4B8);
sprite->data[5] += 0x100;
PlaySE12WithPanning(0xD2, BattleAnimAdjustPanning(0x3F));
@@ -142,7 +142,7 @@ static void sub_80CD4EC(struct Sprite* sprite)
sprite->data[0] = 6;
sprite->data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 2) + a;
sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 3) + b;
- sprite->callback = StartTranslateAnimSpriteByDeltas;
+ sprite->callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData(sprite, sub_80CD654);
}
}
diff --git a/src/battle/anim/seed.c b/src/battle/anim/seed.c
index 11eebada0..bf8142a49 100644
--- a/src/battle/anim/seed.c
+++ b/src/battle/anim/seed.c
@@ -61,13 +61,13 @@ void AnimLeechSeed(struct Sprite* sprite)
sprite->data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 0) + gBattleAnimArgs[2];
sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 1) + gBattleAnimArgs[3];
sprite->data[5] = gBattleAnimArgs[5];
- InitAnimSpriteTranslationOverDuration(sprite);
+ InitAnimArcTranslation(sprite);
sprite->callback = AnimLeechSeedStep;
}
static void AnimLeechSeedStep(struct Sprite* sprite)
{
- if (TranslateAnimSpriteLinearAndSine(sprite))
+ if (TranslateAnimArc(sprite))
{
sprite->invisible = 1;
sprite->data[0] = 10;
diff --git a/src/battle/anim/sonic.c b/src/battle/anim/sonic.c
index 0494c42ed..4a9ade286 100644
--- a/src/battle/anim/sonic.c
+++ b/src/battle/anim/sonic.c
@@ -148,7 +148,7 @@ void AnimSonicBoomProjectile(struct Sprite* sprite)
sprite->data[0] = gBattleAnimArgs[4];
sprite->data[2] = targetXPos;
sprite->data[4] = targetYPos;
- sprite->callback = StartTranslateAnimSpriteByDeltas;
+ sprite->callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
}
diff --git a/src/battle/anim/sunlight.c b/src/battle/anim/sunlight.c
index 7efc85b37..5edb9afea 100644
--- a/src/battle/anim/sunlight.c
+++ b/src/battle/anim/sunlight.c
@@ -37,6 +37,6 @@ void sub_80D517C(struct Sprite *sprite)
sprite->data[0] = 60;
sprite->data[2] = 140;
sprite->data[4] = 80;
- sprite->callback = StartTranslateAnimSpriteByDeltas;
+ sprite->callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
}
diff --git a/src/battle/anim/sword.c b/src/battle/anim/sword.c
index 7fb410224..fcb85a794 100644
--- a/src/battle/anim/sword.c
+++ b/src/battle/anim/sword.c
@@ -50,6 +50,6 @@ static void sub_80CF6B4(struct Sprite* sprite)
sprite->data[0] = 6;
sprite->data[2] = sprite->pos1.x;
sprite->data[4] = sprite->pos1.y - 32;
- sprite->callback = StartTranslateAnimSpriteByDeltas;
+ sprite->callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
}
diff --git a/src/battle/anim/tile.c b/src/battle/anim/tile.c
index a10850808..12cfd53b3 100644
--- a/src/battle/anim/tile.c
+++ b/src/battle/anim/tile.c
@@ -175,7 +175,7 @@ static void sub_80CE1AC(struct Sprite* sprite)
sprite->data[0] = 30;
sprite->data[2] = GetBattlerSpriteCoord(gAnimBankAttacker, 2);
sprite->data[4] = GetBattlerSpriteCoord(gAnimBankAttacker, 3);
- sprite->callback = StartTranslateAnimSpriteByDeltas;
+ sprite->callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
}
}
diff --git a/src/battle/anim/unused_8.c b/src/battle/anim/unused_8.c
index a005bee1c..92f5973db 100644
--- a/src/battle/anim/unused_8.c
+++ b/src/battle/anim/unused_8.c
@@ -78,7 +78,7 @@ static void sub_80CF490(struct Sprite* sprite)
sprite->data[0] = sprite->data[1];
sprite->data[2] = sprite->pos1.x;
sprite->data[4] = sprite->pos1.y + 15;
- sprite->callback = StartTranslateAnimSpriteByDeltas;
+ sprite->callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData(sprite, sub_80CF4B8);
}
diff --git a/src/battle/anim/water.c b/src/battle/anim/water.c
index 0afe133f0..1c354d916 100644
--- a/src/battle/anim/water.c
+++ b/src/battle/anim/water.c
@@ -198,7 +198,7 @@ void sub_80D37FC(struct Sprite *sprite)
sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[2];
sprite->data[4] = sprite->pos1.y + gBattleAnimArgs[4];
- sprite->callback = StartTranslateAnimSpriteByDeltas;
+ sprite->callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
}
diff --git a/src/battle/anim/wisp_orb.c b/src/battle/anim/wisp_orb.c
index 32373ca2a..f9e21d704 100644
--- a/src/battle/anim/wisp_orb.c
+++ b/src/battle/anim/wisp_orb.c
@@ -133,7 +133,7 @@ static void sub_80D5C5C(struct Sprite *sprite)
s16 initialData5;
s16 newData5;
- if (!TranslateAnimSpriteByDeltas(sprite))
+ if (!TranslateAnimLinear(sprite))
{
sprite->pos2.x += Sin(sprite->data[5], 16);
initialData5 = sprite->data[5];
diff --git a/src/battle/battle_7.c b/src/battle/battle_7.c
index 75afc2739..87a0f0309 100644
--- a/src/battle/battle_7.c
+++ b/src/battle/battle_7.c
@@ -1,6 +1,7 @@
#include "global.h"
#include "battle.h"
#include "battle_anim.h"
+#include "battle_anim_813F0F4.h"
#include "battle_interface.h"
#include "blend_palette.h"
#include "contest.h"
@@ -95,7 +96,6 @@ const struct SpritePalette gUnknown_0820A4D4[] =
extern void c3_0802FDF4(u8);
extern void sub_80440EC();
extern void sub_804777C();
-extern void sub_8141828();
extern u8 GetBattlerSpriteCoord();
extern u8 IsBankSpritePresent(u8);
extern u8 sub_8077F68(u8);
diff --git a/src/battle/battle_anim_812C144.c b/src/battle/battle_anim_812C144.c
index bcdd2b693..0e9c45023 100644
--- a/src/battle/battle_anim_812C144.c
+++ b/src/battle/battle_anim_812C144.c
@@ -169,7 +169,7 @@ void sub_812C2BC(struct Sprite *sprite)
sprite->data[0] = gBattleAnimArgs[2];
sprite->data[2] = x;
sprite->data[4] = y;
- sprite->callback = StartTranslateAnimSpriteByDeltas;
+ sprite->callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
}
@@ -349,13 +349,13 @@ void sub_812C720(struct Sprite *sprite)
sprite->data[4] = y + gBattleAnimArgs[3];
sprite->data[5] = -50;
- InitAnimSpriteTranslationOverDuration(sprite);
+ InitAnimArcTranslation(sprite);
sprite->callback = sub_812C798;
}
static void sub_812C798(struct Sprite *sprite)
{
- if (TranslateAnimSpriteLinearAndSine(sprite))
+ if (TranslateAnimArc(sprite))
{
sprite->data[0] = 30;
sprite->data[1] = 0;
@@ -950,7 +950,7 @@ void sub_812D294(struct Sprite *sprite)
sprite->data[0] = 20;
sprite->data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 2);
sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 3);
- sprite->callback = StartTranslateAnimSpriteByDeltas;
+ sprite->callback = StartAnimLinearTranslation;
}
}
diff --git a/src/battle/battle_anim_813F0F4.c b/src/battle/battle_anim_813F0F4.c
index 785dd92b4..219395baf 100755
--- a/src/battle/battle_anim_813F0F4.c
+++ b/src/battle/battle_anim_813F0F4.c
@@ -1,16 +1,27 @@
#include "global.h"
#include "battle.h"
#include "battle_anim.h"
+#include "battle_anim_813F0F4.h"
+#include "battle_interface.h"
#include "blend_palette.h"
#include "decompress.h"
#include "ewram.h"
+#include "m4a.h"
+#include "main.h"
#include "palette.h"
#include "pokeball.h"
#include "rom_8077ABC.h"
+#include "sound.h"
#include "sprite.h"
#include "task.h"
+#include "trig.h"
#include "util.h"
#include "constants/items.h"
+#include "constants/songs.h"
+
+extern int gUnknown_03005F0C;
+extern u16 gUnknown_03005F10;
+extern u16 gUnknown_03005F14;
extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
@@ -19,18 +30,61 @@ extern u8 gHealthboxIDs[];
extern u8 gBankSpriteIds[];
extern u16 gBattlerPartyIndexes[];
extern u16 gLastUsedItem;
+extern u8 gDoingBattleAnim;
+extern u8 gEffectBank;
extern const u8 gUnknown_08D2EE48[];
extern const u8 gUnknown_08D2EDFC[];
extern const u16 gUnknown_08D2E150[];
+extern const struct CompressedSpritePalette gUnknown_0840B2B8[];
+extern const struct SpriteTemplate gSpriteTemplate_840B3B4[];
+extern const struct SpriteTemplate gSpriteTemplate_8402500;
+extern const struct SpriteTemplate gBattleAnimSpriteTemplate_84024E8;
+extern const u8 gUnknown_0840B378[];
+extern const struct CompressedSpriteSheet gUnknown_0840B258[];
+extern const TaskFunc gUnknown_0840B384[];
+extern const u16 gUnknown_0840B4D4[];
+extern const struct CompressedSpriteSheet gBattleAnimPicTable[];
+extern const struct CompressedSpritePalette gBattleAnimPaletteTable[];
static void sub_813F300(u8 taskId);
static void sub_813F6CC(u8 taskId);
-u8 ball_number_to_ball_processing_index(u16);
-u8 sub_814086C(u8, u8, int, int, u8);
-u8 sub_8141314(u8, u8, int, u8);
-void sub_813FD90(struct Sprite *sprite);
-void sub_813FB7C(u8 taskId);
+static void sub_813FD34(u8 taskId);
+static void sub_813FD90(struct Sprite *sprite);
+static void sub_813FB7C(u8 taskId);
+static void sub_813FCBC(u8 taskId);
+static void sub_813FDC0(struct Sprite *sprite);
+static void sub_813FE70(struct Sprite *sprite);
+static void sub_81407B8(struct Sprite *sprite);
+static void sub_813FEC8(struct Sprite *sprite);
+static void sub_8140014(struct Sprite *sprite);
+static void sub_8140058(struct Sprite *sprite);
+static void sub_8140410(struct Sprite *sprite);
+static void sub_8140158(struct Sprite *sprite);
+static void sub_81401A0(struct Sprite *sprite);
+static void sub_8140434(struct Sprite *sprite);
+static void sub_81405F4(struct Sprite *sprite);
+static void sub_8140454(struct Sprite *sprite);
+static void sub_81404E4(struct Sprite *sprite);
+static void sub_81405C8(struct Sprite *sprite);
+static void sub_81406BC(struct Sprite *sprite);
+static void sub_81407F4(struct Sprite *sprite);
+static void sub_8140A08(struct Sprite *sprite);
+static void sub_8140A28(struct Sprite *sprite);
+static void sub_8141294(struct Sprite *sprite);
+static void sub_8140ECC(struct Sprite *sprite);
+static void sub_8140FF8(struct Sprite *sprite);
+static void sub_8141230(struct Sprite *sprite);
+static void sub_81413DC(u8 taskId);
+static void sub_814146C(u8 taskId);
+static void sub_81414BC(u8 taskId);
+static void sub_814191C(u8 taskId);
+static void sub_8141B20(struct Sprite *sprite);
+static void sub_8141B74(struct Sprite *sprite);
+static void sub_8141AD8(u8 taskId);
+static void sub_8141CBC(struct Sprite *sprite);
+static void sub_8141CF4(struct Sprite *sprite);
+static void sub_8141D20(struct Sprite *sprite);
void unref_sub_813F0F4(u8 taskId)
@@ -267,7 +321,7 @@ void sub_813F844(u8 taskId)
u16 ball;
u8 ballIndex;
u8 x, y;
- int priority, subpriority;
+ u8 priority, subpriority;
u32 selectedPalettes;
spriteId = gBankSpriteIds[gAnimBankAttacker];
@@ -367,3 +421,1477 @@ void sub_813FA94(u8 taskId)
gTasks[taskId].data[0] = spriteId;
gTasks[taskId].func = sub_813FB7C;
}
+
+static void sub_813FB7C(u8 taskId)
+{
+ u8 spriteId = gTasks[taskId].data[0];
+ if ((u16)gSprites[spriteId].data[0] == 0xFFFF)
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_813FBB8(u8 taskId)
+{
+ int x, y;
+ u8 ballIndex;
+ u8 subpriority;
+ u8 spriteId;
+
+ if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL)
+ {
+ x = 32;
+ y = 11;
+ }
+ else
+ {
+ x = 23;
+ y = 5;
+ }
+
+ ballIndex = ball_number_to_ball_processing_index(gLastUsedItem);
+ subpriority = sub_8079E90(GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT)) + 1;
+ spriteId = CreateSprite(&gBallSpriteTemplates[ballIndex], x + 32, y | 80, subpriority);
+ gSprites[spriteId].data[0] = 34;
+ gSprites[spriteId].data[1] = GetBattlerSpriteCoord(gAnimBankTarget, 0);
+ gSprites[spriteId].data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 1) - 16;
+ gSprites[spriteId].callback = SpriteCallbackDummy;
+ StartSpriteAnim(&gSprites[gBankSpriteIds[GetBattlerAtPosition(B_POSITION_PLAYER_LEFT)]], 1);
+ gTasks[taskId].data[0] = spriteId;
+ gTasks[taskId].func = sub_813FCBC;
+}
+
+static void sub_813FCBC(u8 taskId)
+{
+ if (gSprites[gBankSpriteIds[GetBattlerAtPosition(B_POSITION_PLAYER_LEFT)]].animCmdIndex == 1)
+ {
+ PlaySE12WithPanning(SE_NAGERU, 0);
+ gSprites[gTasks[taskId].data[0]].callback = sub_813FD90;
+ CreateTask(sub_813FD34, 10);
+ gTasks[taskId].func = sub_813FB7C;
+ }
+}
+
+static void sub_813FD34(u8 taskId)
+{
+ if (gSprites[gBankSpriteIds[GetBattlerAtPosition(B_POSITION_PLAYER_LEFT)]].animEnded)
+ {
+ StartSpriteAnim(&gSprites[gBankSpriteIds[GetBattlerAtPosition(B_POSITION_PLAYER_LEFT)]], 0);
+ DestroyTask(taskId);
+ }
+}
+
+static void sub_813FD90(struct Sprite *sprite)
+{
+ u16 temp = sprite->data[1];
+ u16 temp2 = sprite->data[2];
+ sprite->data[1] = sprite->pos1.x;
+ sprite->data[2] = temp;
+ sprite->data[3] = sprite->pos1.y;
+ sprite->data[4] = temp2;
+ sprite->data[5] = -40;
+ InitAnimArcTranslation(sprite);
+ sprite->callback = sub_813FDC0;
+}
+
+static void sub_813FDC0(struct Sprite *sprite)
+{
+ int i;
+ u8 ballIndex;
+ int ballIndex2; // extra var needed to match
+
+ if (TranslateAnimArc(sprite))
+ {
+ if (ewram17840.unk8 == 5)
+ {
+ sprite->callback = sub_81407B8;
+ }
+ else
+ {
+ StartSpriteAnim(sprite, 1);
+ sprite->pos1.x += sprite->pos2.x;
+ sprite->pos1.y += sprite->pos2.y;
+ sprite->pos2.x = 0;
+ sprite->pos2.y = 0;
+
+ for (i = 0; i < 8; i++)
+ {
+ sprite->data[i] = 0;
+ }
+
+ sprite->data[5] = 0;
+ sprite->callback = sub_813FE70;
+ ballIndex = ball_number_to_ball_processing_index(gLastUsedItem);
+ ballIndex2 = ballIndex;
+ if (ballIndex2 > 11)
+ return;
+ if (ballIndex2 < 0)
+ return;
+
+ sub_814086C(sprite->pos1.x, sprite->pos1.y - 5, 1, 28, ballIndex);
+ sub_8141314(0, gAnimBankTarget, 14, ballIndex);
+ }
+ }
+}
+
+static void sub_813FE70(struct Sprite *sprite)
+{
+ if (++sprite->data[5] == 10)
+ {
+ sprite->data[5] = CreateTask(TaskDummy, 50);
+ sprite->callback = sub_813FEC8;
+ gSprites[gBankSpriteIds[gAnimBankTarget]].data[1] = 0;
+ }
+}
+
+static void sub_813FEC8(struct Sprite *sprite)
+{
+ u8 spriteId;
+ u8 taskId;
+
+ spriteId = gBankSpriteIds[gAnimBankTarget];
+ taskId = sprite->data[5];
+
+ if (++gTasks[taskId].data[1] == 11)
+ PlaySE(SE_SUIKOMU);
+
+ switch (gTasks[taskId].data[0])
+ {
+ case 0:
+ sub_8078E70(spriteId, 0);
+ gTasks[taskId].data[10] = 256;
+ gUnknown_03005F0C = 28;
+ gUnknown_03005F14 = (gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y) - (sprite->pos1.y + sprite->pos2.y);
+ gUnknown_03005F10 = (u32)(gUnknown_03005F14 * 256) / 28;
+ gTasks[taskId].data[2] = gUnknown_03005F10;
+ gTasks[taskId].data[0]++;
+ break;
+ case 1:
+ gTasks[taskId].data[10] += 0x20;
+ obj_id_set_rotscale(spriteId, gTasks[taskId].data[10], gTasks[taskId].data[10], 0);
+ gTasks[taskId].data[3] += gTasks[taskId].data[2];
+ gSprites[spriteId].pos2.y = -gTasks[taskId].data[3] >> 8;
+ if (gTasks[taskId].data[10] >= 0x480)
+ gTasks[taskId].data[0]++;
+ break;
+ case 2:
+ sub_8078F40(spriteId);
+ gSprites[spriteId].invisible = 1;
+ gTasks[taskId].data[0]++;
+ break;
+ default:
+ if (gTasks[taskId].data[1] > 10)
+ {
+ DestroyTask(taskId);
+ StartSpriteAnim(sprite, 2);
+ sprite->data[5] = 0;
+ sprite->callback = sub_8140014;
+ }
+ break;
+ }
+}
+
+static void sub_8140014(struct Sprite *sprite)
+{
+ int angle;
+
+ if (sprite->animEnded)
+ {
+ sprite->data[3] = 0;
+ sprite->data[4] = 32;
+ sprite->data[5] = 0;
+ angle = 0;
+ sprite->pos1.y += Cos(angle, 32);
+ sprite->pos2.y = -Cos(angle, sprite->data[4]);
+ sprite->callback = sub_8140058;
+ }
+}
+
+static void sub_8140058(struct Sprite *sprite)
+{
+ bool8 lastBounce;
+ int bounceCount;
+
+ lastBounce = 0;
+
+ switch (sprite->data[3] & 0xFF)
+ {
+ case 0:
+ sprite->pos2.y = -Cos(sprite->data[5], sprite->data[4]);
+ sprite->data[5] += (sprite->data[3] >> 8) + 4;
+ if (sprite->data[5] >= 64)
+ {
+ sprite->data[4] -= 10;
+ sprite->data[3] += 257;
+
+ bounceCount = sprite->data[3] >> 8;
+ if (bounceCount == 4)
+ lastBounce = 1;
+
+ // Play a different sound effect for each pokeball bounce.
+ switch (bounceCount)
+ {
+ case 1:
+ PlaySE(SE_KON);
+ break;
+ case 2:
+ PlaySE(SE_KON2);
+ break;
+ case 3:
+ PlaySE(SE_KON3);
+ break;
+ default:
+ PlaySE(SE_KON4);
+ break;
+ }
+ }
+ break;
+ case 1:
+ sprite->pos2.y = -Cos(sprite->data[5], sprite->data[4]);
+ sprite->data[5] -= (sprite->data[3] >> 8) + 4;
+ if (sprite->data[5] <= 0)
+ {
+ sprite->data[5] = 0;
+ sprite->data[3] &= -0x100;
+ }
+ break;
+ }
+
+ if (lastBounce)
+ {
+ sprite->data[3] = 0;
+ sprite->pos1.y += Cos(64, 32);
+ sprite->pos2.y = 0;
+ if (ewram17840.unk8 == 0)
+ {
+ sprite->data[5] = 0;
+ sprite->callback = sub_8140410;
+ }
+ else
+ {
+ sprite->callback = sub_8140158;
+ sprite->data[4] = 1;
+ sprite->data[5] = 0;
+ }
+ }
+}
+
+static void sub_8140158(struct Sprite *sprite)
+{
+ if (++sprite->data[3] == 31)
+ {
+ sprite->data[3] = 0;
+ sprite->affineAnimPaused = 1;
+ StartSpriteAffineAnim(sprite, 1);
+ ewram17840.unkC = 0;
+ sprite->callback = sub_81401A0;
+ PlaySE(SE_BOWA);
+ }
+}
+
+static void sub_81401A0(struct Sprite *sprite)
+{
+ s8 state;
+ u16 var0;
+
+ switch (sprite->data[3] & 0xFF)
+ {
+ case 0:
+ if ((s16)ewram17840.unkC > 0xFF)
+ {
+ sprite->pos2.x += sprite->data[4];
+ ewram17840.unkC &= 0xFF;
+ }
+ else
+ {
+ ewram17840.unkC += 0xB0;
+ }
+
+ sprite->data[5]++;
+ sprite->affineAnimPaused = 0;
+ var0 = sprite->data[5] + 7;
+ if (var0 > 14)
+ {
+ ewram17840.unkC = 0;
+ sprite->data[3]++;
+ sprite->data[5] = 0;
+ }
+ break;
+ case 1:
+ if (++sprite->data[5] == 1)
+ {
+ sprite->data[5] = 0;
+ sprite->data[4] = -sprite->data[4];
+ sprite->data[3]++;
+ sprite->affineAnimPaused = 0;
+ if (sprite->data[4] < 0)
+ ChangeSpriteAffineAnim(sprite, 2);
+ else
+ ChangeSpriteAffineAnim(sprite, 1);
+ }
+ else
+ {
+ sprite->affineAnimPaused = 1;
+ }
+ break;
+ case 2:
+ if ((s16)ewram17840.unkC > 0xFF)
+ {
+ sprite->pos2.x += sprite->data[4];
+ ewram17840.unkC &= 0xFF;
+ }
+ else
+ {
+ ewram17840.unkC += 0xB0;
+ }
+
+ sprite->data[5]++;
+ sprite->affineAnimPaused = 0;
+ var0 = sprite->data[5] + 12;
+ if (var0 > 24)
+ {
+ ewram17840.unkC = 0;
+ sprite->data[3]++;
+ sprite->data[5] = 0;
+ }
+ break;
+ case 3:
+ if (sprite->data[5]++ < 0)
+ {
+ sprite->affineAnimPaused = 1;
+ break;
+ }
+
+ sprite->data[5] = 0;
+ sprite->data[4] = -sprite->data[4];
+ sprite->data[3]++;
+ sprite->affineAnimPaused = 0;
+ if (sprite->data[4] < 0)
+ ChangeSpriteAffineAnim(sprite, 2);
+ else
+ ChangeSpriteAffineAnim(sprite, 1);
+ // fall through
+ case 4:
+ if ((s16)ewram17840.unkC > 0xFF)
+ {
+ sprite->pos2.x += sprite->data[4];
+ ewram17840.unkC &= 0xFF;
+ }
+ else
+ {
+ ewram17840.unkC += 0xB0;
+ }
+
+ sprite->data[5]++;
+ sprite->affineAnimPaused = 0;
+ var0 = sprite->data[5] + 4;
+ if (var0 > 8)
+ {
+ ewram17840.unkC = 0;
+ sprite->data[3]++;
+ sprite->data[5] = 0;
+ sprite->data[4] = -sprite->data[4];
+ }
+ break;
+ case 5:
+ sprite->data[3] += 0x100;
+ state = sprite->data[3] >> 8;
+ if (state == ewram17840.unk8)
+ {
+ sprite->affineAnimPaused = 1;
+ sprite->callback = sub_8140410;
+ }
+ else
+ {
+ if (ewram17840.unk8 == 4 && state == 3)
+ {
+ sprite->callback = sub_8140434;
+ sprite->affineAnimPaused = 1;
+ }
+ else
+ {
+ sprite->data[3]++;
+ sprite->affineAnimPaused = 1;
+ }
+ }
+ break;
+ case 6:
+ default:
+ if (++sprite->data[5] == 31)
+ {
+ sprite->data[5] = 0;
+ sprite->data[3] &= -0x100;
+ StartSpriteAffineAnim(sprite, 3);
+ if (sprite->data[4] < 0)
+ StartSpriteAffineAnim(sprite, 2);
+ else
+ StartSpriteAffineAnim(sprite, 1);
+
+ PlaySE(SE_BOWA);
+ }
+ break;
+ }
+}
+
+static void sub_8140410(struct Sprite *sprite)
+{
+ if (++sprite->data[5] == 31)
+ {
+ sprite->data[5] = 0;
+ sprite->callback = sub_81405F4;
+ }
+}
+
+static void sub_8140434(struct Sprite *sprite)
+{
+ sprite->animPaused = 1;
+ sprite->callback = sub_8140454;
+ sprite->data[3] = 0;
+ sprite->data[4] = 0;
+ sprite->data[5] = 0;
+}
+
+static void sub_8140454(struct Sprite *sprite)
+{
+ u8 *battler = &gAnimBankTarget;
+
+ sprite->data[4]++;
+ if (sprite->data[4] == 40)
+ return;
+
+ if (sprite->data[4] == 95)
+ {
+ gDoingBattleAnim = 0;
+ UpdateOamPriorityInAllHealthboxes(1);
+ m4aMPlayAllStop();
+ PlaySE(MUS_FANFA5);
+ }
+ else if (sprite->data[4] == 315)
+ {
+ FreeOamMatrix(gSprites[gBankSpriteIds[*battler]].oam.matrixNum);
+ DestroySprite(&gSprites[gBankSpriteIds[*battler]]);
+ sprite->data[0] = 0;
+ sprite->callback = sub_81404E4;
+ }
+}
+
+static void sub_81404E4(struct Sprite *sprite)
+{
+ u8 paletteIndex;
+
+ switch (sprite->data[0])
+ {
+ case 0:
+ sprite->data[1] = 0;
+ sprite->data[2] = 0;
+ sprite->oam.objMode = ST_OAM_OBJ_BLEND;
+ REG_BLDCNT = 0x3F40;
+ REG_BLDALPHA = 0x0010;
+ paletteIndex = IndexOfSpritePaletteTag(sprite->template->paletteTag);
+ BeginNormalPaletteFade(1 << (paletteIndex + 0x10), 0, 0, 16, RGB(31, 31, 31));
+ sprite->data[0]++;
+ break;
+ case 1:
+ if (sprite->data[1]++ > 0)
+ {
+ sprite->data[1] = 0;
+ sprite->data[2]++;
+ REG_BLDALPHA = (sprite->data[2] << 8) | (16 - sprite->data[2]);
+ if (sprite->data[2] == 16)
+ sprite->data[0]++;
+ }
+ break;
+ case 2:
+ sprite->invisible = 1;
+ sprite->data[0]++;
+ break;
+ default:
+ if (!gPaletteFade.active)
+ {
+ REG_BLDCNT = 0;
+ REG_BLDALPHA = 0;
+ sprite->data[0] = 0;
+ sprite->callback = sub_81405C8;
+ }
+ break;
+ }
+}
+
+static void sub_81405C8(struct Sprite *sprite)
+{
+ if (sprite->data[0] == 0)
+ {
+ sprite->data[0] = -1;
+ }
+ else
+ {
+ FreeSpriteOamMatrix(sprite);
+ DestroySprite(sprite);
+ }
+}
+
+// fakematching. I think the return type of ball_number_to_ball_processing_index()
+// is wrong because of the weird required casting.
+static void sub_81405F4(struct Sprite *sprite)
+{
+ u8 ballIndex;
+ int ballIndex2; // extra var needed to match
+
+ StartSpriteAnim(sprite, 1);
+ StartSpriteAffineAnim(sprite, 0);
+ sprite->callback = sub_81406BC;
+
+ ballIndex = ball_number_to_ball_processing_index(gLastUsedItem);
+ ballIndex2 = ballIndex;
+ if (ballIndex2 > 11)
+ goto LABEL;
+ if (ballIndex2 < 0)
+ goto LABEL;
+
+ sub_814086C(sprite->pos1.x, sprite->pos1.y - 5, 1, 28, ballIndex);
+ sub_8141314(1, gAnimBankTarget, 14, ballIndex);
+
+ LABEL:
+ gSprites[gBankSpriteIds[gAnimBankTarget]].invisible = 0;
+ StartSpriteAffineAnim(&gSprites[gBankSpriteIds[gAnimBankTarget]], 1);
+ AnimateSprite(&gSprites[gBankSpriteIds[gAnimBankTarget]]);
+ gSprites[gBankSpriteIds[gAnimBankTarget]].data[1] = 0x1000;
+}
+
+static void sub_81406BC(struct Sprite *sprite)
+{
+ int next = FALSE;
+
+ if (sprite->animEnded)
+ sprite->invisible = 1;
+
+ if (gSprites[gBankSpriteIds[gAnimBankTarget]].affineAnimEnded)
+ {
+ StartSpriteAffineAnim(&gSprites[gBankSpriteIds[gAnimBankTarget]], 0);
+ next = TRUE;
+ }
+ else
+ {
+ gSprites[gBankSpriteIds[gAnimBankTarget]].data[1] -= 288;
+ gSprites[gBankSpriteIds[gAnimBankTarget]].pos2.y = gSprites[gBankSpriteIds[gAnimBankTarget]].data[1] >> 8;
+ }
+
+ if (sprite->animEnded && next)
+ {
+ gSprites[gBankSpriteIds[gAnimBankTarget]].pos2.y = 0;
+ gSprites[gBankSpriteIds[gAnimBankTarget]].invisible = ewram17840.unk9_1;
+ sprite->data[0] = 0;
+ sprite->callback = sub_81405C8;
+ gDoingBattleAnim = 0;
+ UpdateOamPriorityInAllHealthboxes(1);
+ }
+}
+
+static void sub_81407B8(struct Sprite *sprite)
+{
+ int i;
+
+ sprite->pos1.x += sprite->pos2.x;
+ sprite->pos1.y += sprite->pos2.y;
+ sprite->pos2.y = 0;
+ sprite->pos2.x = 0;
+ for (i = 0; i < 6; i++)
+ sprite->data[i] = 0;
+
+ sprite->callback = sub_81407F4;
+}
+
+#ifdef NONMATCHING
+// there is some weird typing going on with var0 and var1.
+static void sub_81407F4(struct Sprite *sprite)
+{
+ s16 var0, var1;
+
+ var0 = sprite->data[0] + 0x800;
+ var1 = sprite->data[1] + 0x680;
+ sprite->pos2.x -= var1 >> 8;
+ sprite->pos2.y += var0 >> 8;
+ sprite->data[0] = var0 & 0xFF;
+ sprite->data[1] = var1 & 0xFF;
+
+ if (sprite->pos1.y + sprite->pos2.y > 160
+ || sprite->pos1.x + sprite->pos2.x < -8)
+ {
+ sprite->data[0] = 0;
+ sprite->callback = sub_81405C8;
+ gDoingBattleAnim = 0;
+ UpdateOamPriorityInAllHealthboxes(1);
+ }
+}
+#else
+NAKED
+static void sub_81407F4(struct Sprite *sprite)
+{
+ asm(".syntax unified\n\
+ push {r4,lr}\n\
+ adds r4, r0, 0\n\
+ movs r0, 0x80\n\
+ lsls r0, 4\n\
+ adds r2, r0, 0\n\
+ ldrh r1, [r4, 0x2E]\n\
+ adds r2, r1\n\
+ movs r0, 0xD0\n\
+ lsls r0, 3\n\
+ adds r3, r0, 0\n\
+ ldrh r1, [r4, 0x30]\n\
+ adds r3, r1\n\
+ lsls r1, r3, 16\n\
+ asrs r1, 24\n\
+ ldrh r0, [r4, 0x24]\n\
+ subs r0, r1\n\
+ strh r0, [r4, 0x24]\n\
+ lsls r0, r2, 16\n\
+ asrs r0, 24\n\
+ ldrh r1, [r4, 0x26]\n\
+ adds r0, r1\n\
+ strh r0, [r4, 0x26]\n\
+ movs r0, 0xFF\n\
+ ands r2, r0\n\
+ strh r2, [r4, 0x2E]\n\
+ ands r3, r0\n\
+ strh r3, [r4, 0x30]\n\
+ movs r2, 0x22\n\
+ ldrsh r0, [r4, r2]\n\
+ movs r2, 0x26\n\
+ ldrsh r1, [r4, r2]\n\
+ adds r0, r1\n\
+ cmp r0, 0xA0\n\
+ bgt _0814084A\n\
+ movs r1, 0x20\n\
+ ldrsh r0, [r4, r1]\n\
+ movs r2, 0x24\n\
+ ldrsh r1, [r4, r2]\n\
+ adds r0, r1\n\
+ movs r1, 0x8\n\
+ negs r1, r1\n\
+ cmp r0, r1\n\
+ bge _0814085E\n\
+_0814084A:\n\
+ movs r0, 0\n\
+ strh r0, [r4, 0x2E]\n\
+ ldr r0, _08140864 @ =sub_81405C8\n\
+ str r0, [r4, 0x1C]\n\
+ ldr r1, _08140868 @ =gDoingBattleAnim\n\
+ movs r0, 0\n\
+ strb r0, [r1]\n\
+ movs r0, 0x1\n\
+ bl UpdateOamPriorityInAllHealthboxes\n\
+_0814085E:\n\
+ pop {r4}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_08140864: .4byte sub_81405C8\n\
+_08140868: .4byte gDoingBattleAnim\n\
+ .syntax divided\n");
+}
+#endif // NONMATCHING
+
+u8 sub_814086C(u8 x, u8 y, u8 priority, u8 subpriority, u8 ballIndex)
+{
+ u8 taskId;
+
+ if (GetSpriteTileStartByTag(gUnknown_0840B258[ballIndex].tag) == 0xFFFF)
+ {
+ LoadCompressedObjectPic(&gUnknown_0840B258[ballIndex]);
+ LoadCompressedObjectPalette(&gUnknown_0840B2B8[ballIndex]);
+ }
+
+ taskId = CreateTask(gUnknown_0840B384[ballIndex], 5);
+ gTasks[taskId].data[1] = x;
+ gTasks[taskId].data[2] = y;
+ gTasks[taskId].data[3] = priority;
+ gTasks[taskId].data[4] = subpriority;
+ gTasks[taskId].data[15] = ballIndex;
+ PlaySE(SE_BOWA2);
+ if (gMain.inBattle)
+ ewram17840.unkA++;
+
+ return taskId;
+}
+
+void sub_8140930(u8 taskId)
+{
+ u8 spriteId;
+ u8 x, y;
+ u8 priority, subpriority;
+ u8 ballIndex;
+ u8 var0;
+
+ ballIndex = gTasks[taskId].data[15];
+ if (gTasks[taskId].data[0] < 16)
+ {
+ x = gTasks[taskId].data[1];
+ y = gTasks[taskId].data[2];
+ priority = gTasks[taskId].data[3];
+ subpriority = gTasks[taskId].data[4];
+
+ spriteId = CreateSprite(&gSpriteTemplate_840B3B4[ballIndex], x, y, subpriority);
+ StartSpriteAnim(&gSprites[spriteId], gUnknown_0840B378[ballIndex]);
+ gSprites[spriteId].callback = sub_8140A08;
+ gSprites[spriteId].oam.priority = priority;
+
+ var0 = (u8)gTasks[taskId].data[0];
+ if (var0 >= 8)
+ var0 -= 8;
+
+ gSprites[spriteId].data[0] = var0 * 32;
+ if (gTasks[taskId].data[0] == 15)
+ {
+ gSprites[spriteId].data[7] = 1;
+ DestroyTask(taskId);
+ return;
+ }
+ }
+
+ gTasks[taskId].data[0]++;
+}
+
+static void sub_8140A08(struct Sprite *sprite)
+{
+ if (sprite->data[1] == 0)
+ sprite->callback = sub_8140A28;
+ else
+ sprite->data[1]--;
+}
+
+static void sub_8140A28(struct Sprite *sprite)
+{
+ sprite->pos2.x = Sin(sprite->data[0], sprite->data[1]);
+ sprite->pos2.y = Cos(sprite->data[0], sprite->data[1]);
+ sprite->data[1] += 2;
+ if (sprite->data[1] == 50)
+ sub_8141294(sprite);
+}
+
+void sub_8140A64(u8 taskId)
+{
+ u8 i;
+ u8 x, y, priority, subpriority, ballIndex;
+ u8 spriteId;
+
+ ballIndex = gTasks[taskId].data[15];
+ x = gTasks[taskId].data[1];
+ y = gTasks[taskId].data[2];
+ priority = gTasks[taskId].data[3];
+ subpriority = gTasks[taskId].data[4];
+
+ for (i = 0; i < 8; i++)
+ {
+ spriteId = CreateSprite(&gSpriteTemplate_840B3B4[ballIndex], x, y, subpriority);
+ StartSpriteAnim(&gSprites[spriteId], gUnknown_0840B378[ballIndex]);
+ gSprites[spriteId].callback = sub_8140ECC;
+ gSprites[spriteId].oam.priority = priority;
+ gSprites[spriteId].data[0] = i * 32;
+ gSprites[spriteId].data[4] = 10;
+ gSprites[spriteId].data[5] = 2;
+ gSprites[spriteId].data[6] = 1;
+ }
+
+ gSprites[spriteId].data[7] = 1;
+ DestroyTask(taskId);
+}
+
+void sub_8140B3C(u8 taskId)
+{
+ u8 i;
+ u8 x, y, priority, subpriority, ballIndex;
+ u8 spriteId;
+
+ ballIndex = gTasks[taskId].data[15];
+ x = gTasks[taskId].data[1];
+ y = gTasks[taskId].data[2];
+ priority = gTasks[taskId].data[3];
+ subpriority = gTasks[taskId].data[4];
+
+ for (i = 0; i < 8; i++)
+ {
+ spriteId = CreateSprite(&gSpriteTemplate_840B3B4[ballIndex], x, y, subpriority);
+ StartSpriteAnim(&gSprites[spriteId], gUnknown_0840B378[ballIndex]);
+ gSprites[spriteId].callback = sub_8140ECC;
+ gSprites[spriteId].oam.priority = priority;
+ gSprites[spriteId].data[0] = i * 32;
+ gSprites[spriteId].data[4] = 10;
+ gSprites[spriteId].data[5] = 1;
+ gSprites[spriteId].data[6] = 2;
+ }
+
+ gSprites[spriteId].data[7] = 1;
+ DestroyTask(taskId);
+}
+
+void sub_8140C14(u8 taskId)
+{
+ u8 i;
+ u8 x, y, priority, subpriority, ballIndex;
+ u8 spriteId;
+
+ ballIndex = gTasks[taskId].data[15];
+ x = gTasks[taskId].data[1];
+ y = gTasks[taskId].data[2];
+ priority = gTasks[taskId].data[3];
+ subpriority = gTasks[taskId].data[4];
+
+ for (i = 0; i < 8; i++)
+ {
+ spriteId = CreateSprite(&gSpriteTemplate_840B3B4[ballIndex], x, y, subpriority);
+ StartSpriteAnim(&gSprites[spriteId], gUnknown_0840B378[ballIndex]);
+ gSprites[spriteId].callback = sub_8140ECC;
+ gSprites[spriteId].oam.priority = priority;
+ gSprites[spriteId].data[0] = i * 32;
+ gSprites[spriteId].data[4] = 4;
+ gSprites[spriteId].data[5] = 1;
+ gSprites[spriteId].data[6] = 1;
+ }
+
+ gSprites[spriteId].data[7] = 1;
+ DestroyTask(taskId);
+}
+
+void sub_8140CE8(u8 taskId)
+{
+ u8 i;
+ u8 x, y, priority, subpriority, ballIndex;
+ u8 spriteId;
+
+ ballIndex = gTasks[taskId].data[15];
+ x = gTasks[taskId].data[1];
+ y = gTasks[taskId].data[2];
+ priority = gTasks[taskId].data[3];
+ subpriority = gTasks[taskId].data[4];
+
+ for (i = 0; i < 10; i++)
+ {
+ spriteId = CreateSprite(&gSpriteTemplate_840B3B4[ballIndex], x, y, subpriority);
+ StartSpriteAnim(&gSprites[spriteId], gUnknown_0840B378[ballIndex]);
+ gSprites[spriteId].callback = sub_8140ECC;
+ gSprites[spriteId].oam.priority = priority;
+ gSprites[spriteId].data[0] = i * 25;
+ gSprites[spriteId].data[4] = 5;
+ gSprites[spriteId].data[5] = 1;
+ gSprites[spriteId].data[6] = 1;
+ }
+
+ gSprites[spriteId].data[7] = 1;
+ DestroyTask(taskId);
+}
+
+void sub_8140DC4(u8 taskId)
+{
+ u8 i;
+ u8 x, y, priority, subpriority, ballIndex;
+ u8 spriteId;
+
+ if (gTasks[taskId].data[7])
+ {
+ gTasks[taskId].data[7]--;
+ }
+ else
+ {
+ ballIndex = gTasks[taskId].data[15];
+ x = gTasks[taskId].data[1];
+ y = gTasks[taskId].data[2];
+ priority = gTasks[taskId].data[3];
+ subpriority = gTasks[taskId].data[4];
+
+ for (i = 0; i < 8; i++)
+ {
+ spriteId = CreateSprite(&gSpriteTemplate_840B3B4[ballIndex], x, y, subpriority);
+ StartSpriteAnim(&gSprites[spriteId], gUnknown_0840B378[ballIndex]);
+ gSprites[spriteId].callback = sub_8140ECC;
+ gSprites[spriteId].oam.priority = priority;
+ gSprites[spriteId].data[0] = i * 32;
+ gSprites[spriteId].data[4] = 8;
+ gSprites[spriteId].data[5] = 2;
+ gSprites[spriteId].data[6] = 2;
+ }
+
+ gTasks[taskId].data[7] = 8;
+ if (++gTasks[taskId].data[0] == 2)
+ {
+ gSprites[spriteId].data[7] = 1;
+ DestroyTask(taskId);
+ }
+ }
+}
+
+static void sub_8140ECC(struct Sprite *sprite)
+{
+ sprite->pos2.x = Sin(sprite->data[0], sprite->data[1]);
+ sprite->pos2.y = Cos(sprite->data[0], sprite->data[2]);
+ sprite->data[0] = (sprite->data[0] + sprite->data[4]) & 0xFF;
+ sprite->data[1] += sprite->data[5];
+ sprite->data[2] += sprite->data[6];
+ if (++sprite->data[3] == 51)
+ sub_8141294(sprite);
+}
+
+void sub_8140F24(u8 taskId)
+{
+ u8 i;
+ u8 x, y, priority, subpriority, ballIndex;
+ u8 spriteId;
+
+ ballIndex = gTasks[taskId].data[15];
+ x = gTasks[taskId].data[1];
+ y = gTasks[taskId].data[2];
+ priority = gTasks[taskId].data[3];
+ subpriority = gTasks[taskId].data[4];
+
+ for (i = 0; i < 12; i++)
+ {
+ spriteId = CreateSprite(&gSpriteTemplate_840B3B4[ballIndex], x, y, subpriority);
+ StartSpriteAnim(&gSprites[spriteId], gUnknown_0840B378[ballIndex]);
+ gSprites[spriteId].callback = sub_8140FF8;
+ gSprites[spriteId].oam.priority = priority;
+ gSprites[spriteId].data[0] = i * 21;
+ }
+
+ gSprites[spriteId].data[7] = 1;
+ DestroyTask(taskId);
+}
+
+static void sub_8140FF8(struct Sprite *sprite)
+{
+ sprite->pos2.x = Sin(sprite->data[0], sprite->data[1]);
+ sprite->pos2.y = Cos(sprite->data[0], Sin(sprite->data[0], sprite->data[2]));
+ sprite->data[0] = (sprite->data[0] + 6) & 0xFF;
+ sprite->data[1]++;
+ sprite->data[2]++;
+ if (++sprite->data[3] == 51)
+ sub_8141294(sprite);
+}
+
+void sub_8141058(u8 taskId)
+{
+ u8 i, j;
+ u8 x, y, priority, subpriority, ballIndex;
+ u8 spriteId;
+
+ ballIndex = gTasks[taskId].data[15];
+ x = gTasks[taskId].data[1];
+ y = gTasks[taskId].data[2];
+ priority = gTasks[taskId].data[3];
+ subpriority = gTasks[taskId].data[4];
+
+ for (j = 0; j < 2; j++)
+ {
+ for (i = 0; i < 8; i++)
+ {
+ spriteId = CreateSprite(&gSpriteTemplate_840B3B4[ballIndex], x, y, subpriority);
+ StartSpriteAnim(&gSprites[spriteId], gUnknown_0840B378[ballIndex]);
+ gSprites[spriteId].callback = sub_8140ECC;
+ gSprites[spriteId].oam.priority = priority;
+ gSprites[spriteId].data[0] = i * 32;
+ gSprites[spriteId].data[4] = 8;
+
+ if (j == 0)
+ {
+ gSprites[spriteId].data[5] = 2;
+ gSprites[spriteId].data[6] = 1;
+ }
+ else
+ {
+ gSprites[spriteId].data[5] = 1;
+ gSprites[spriteId].data[6] = 2;
+ }
+ }
+ }
+
+ gSprites[spriteId].data[7] = 1;
+ DestroyTask(taskId);
+}
+
+void sub_8141164(u8 taskId)
+{
+ u8 i;
+ u8 x, y, priority, subpriority, ballIndex;
+ u8 spriteId;
+
+ ballIndex = gTasks[taskId].data[15];
+ x = gTasks[taskId].data[1];
+ y = gTasks[taskId].data[2];
+ priority = gTasks[taskId].data[3];
+ subpriority = gTasks[taskId].data[4];
+
+ for (i = 0; i < 8; i++)
+ {
+ spriteId = CreateSprite(&gSpriteTemplate_840B3B4[ballIndex], x, y, subpriority);
+ StartSpriteAnim(&gSprites[spriteId], gUnknown_0840B378[ballIndex]);
+ gSprites[spriteId].callback = sub_8141230;
+ gSprites[spriteId].oam.priority = priority;
+ gSprites[spriteId].data[0] = i * 32;
+ }
+
+ gSprites[spriteId].data[7] = 1;
+ DestroyTask(taskId);
+}
+
+static void sub_8141230(struct Sprite *sprite)
+{
+ sprite->pos2.x = Sin(sprite->data[0], sprite->data[1]);
+ sprite->pos2.y = Cos(sprite->data[0], Sin(sprite->data[0] & 0x3F, sprite->data[2]));
+ sprite->data[0] = (sprite->data[0] + 10) & 0xFF;
+ sprite->data[1]++;
+ sprite->data[2]++;
+ if (++sprite->data[3] == 51)
+ sub_8141294(sprite);
+}
+
+static void sub_8141294(struct Sprite *sprite)
+{
+ int i;
+ int temp;
+
+ if (!gMain.inBattle)
+ {
+ temp = sprite->data[7]; // temp var needed to match
+ if (temp == 1)
+ DestroySpriteAndFreeResources(sprite);
+ else
+ DestroySprite(sprite);
+ }
+ else if (sprite->data[7] == 1)
+ {
+ if (--ewram17840.unkA == 0)
+ {
+ for (i = 0; i < 12; i++)
+ {
+ FreeSpriteTilesByTag(gUnknown_0840B258[i].tag);
+ FreeSpritePaletteByTag(gUnknown_0840B2B8[i].tag);
+ }
+
+ DestroySprite(sprite);
+ }
+ else
+ DestroySprite(sprite);
+ }
+ else
+ DestroySprite(sprite);
+}
+
+u8 sub_8141314(u8 arg0, u8 battler, u32 selectedPalettes, u8 ballIndex)
+{
+ u8 taskId;
+
+ taskId = CreateTask(sub_81413DC, 5);
+ gTasks[taskId].data[15] = ballIndex;
+ gTasks[taskId].data[3] = battler;
+ gTasks[taskId].data[10] = selectedPalettes;
+ gTasks[taskId].data[11] = selectedPalettes >> 16;
+
+ if (!arg0)
+ {
+ BlendPalette(battler * 16 + 0x100, 16, 0, gUnknown_0840B4D4[ballIndex]);
+ gTasks[taskId].data[1] = 1;
+ }
+ else
+ {
+ BlendPalette(battler * 16 + 0x100, 16, 16, gUnknown_0840B4D4[ballIndex]);
+ gTasks[taskId].data[0] = 16;
+ gTasks[taskId].data[1] = -1;
+ gTasks[taskId].func = sub_814146C;
+ }
+
+ BeginNormalPaletteFade(selectedPalettes, 0, 0, 16, RGB(31, 31, 31));
+ return taskId;
+}
+
+static void sub_81413DC(u8 taskId)
+{
+ u8 ballIndex = gTasks[taskId].data[15];
+
+ if (gTasks[taskId].data[2] <= 16)
+ {
+ BlendPalette(gTasks[taskId].data[3] * 16 + 0x100, 16, gTasks[taskId].data[0], gUnknown_0840B4D4[ballIndex]);
+ gTasks[taskId].data[0] += gTasks[taskId].data[1];
+ gTasks[taskId].data[2]++;
+ }
+ else if (!gPaletteFade.active)
+ {
+ u32 selectedPalettes = (u16)gTasks[taskId].data[10] | ((u16)gTasks[taskId].data[11] << 16);
+ BeginNormalPaletteFade(selectedPalettes, 0, 16, 0, RGB(31, 31, 31));
+ DestroyTask(taskId);
+ }
+}
+
+static void sub_814146C(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ u32 selectedPalettes = (u16)gTasks[taskId].data[10] | ((u16)gTasks[taskId].data[11] << 16);
+ BeginNormalPaletteFade(selectedPalettes, 0, 16, 0, RGB(31, 31, 31));
+ gTasks[taskId].func = sub_81414BC;
+ }
+}
+
+static void sub_81414BC(u8 taskId)
+{
+ u8 ballIndex = gTasks[taskId].data[15];
+
+ if (gTasks[taskId].data[2] <= 16)
+ {
+ BlendPalette(gTasks[taskId].data[3] * 16 + 0x100, 16, gTasks[taskId].data[0], gUnknown_0840B4D4[ballIndex]);
+ gTasks[taskId].data[0] += gTasks[taskId].data[1];
+ gTasks[taskId].data[2]++;
+ }
+ else
+ {
+ DestroyTask(taskId);
+ }
+}
+
+void sub_814151C(u8 taskId)
+{
+ u8 spriteId;
+ u32 x;
+ u32 done;
+
+ done = FALSE;
+ spriteId = gBankSpriteIds[gAnimBankAttacker];
+ switch (gTasks[taskId].data[10])
+ {
+ case 0:
+ gTasks[taskId].data[11] = gBattleAnimArgs[0];
+ gTasks[taskId].data[0] += 0x500;
+ if (GetBattlerSide(gAnimBankAttacker) != B_SIDE_PLAYER)
+ gSprites[spriteId].pos2.x += gTasks[taskId].data[0] >> 8;
+ else
+ gSprites[spriteId].pos2.x -= gTasks[taskId].data[0] >> 8;
+
+ gTasks[taskId].data[0] &= 0xFF;
+ x = gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x + 32;
+ if (x > 304)
+ gTasks[taskId].data[10]++;
+ break;
+ case 1:
+ refresh_graphics_maybe(gAnimBankAttacker, gTasks[taskId].data[11], spriteId);
+ gTasks[taskId].data[10]++;
+ break;
+ case 2:
+ gTasks[taskId].data[0] += 0x500;
+ if (GetBattlerSide(gAnimBankAttacker) != B_SIDE_PLAYER)
+ gSprites[spriteId].pos2.x -= gTasks[taskId].data[0] >> 8;
+ else
+ gSprites[spriteId].pos2.x += gTasks[taskId].data[0] >> 8;
+
+ gTasks[taskId].data[0] &= 0xFF;
+ if (GetBattlerSide(gAnimBankAttacker) != B_SIDE_PLAYER)
+ {
+ if (gSprites[spriteId].pos2.x <= 0)
+ {
+ gSprites[spriteId].pos2.x = 0;
+ // done = FALSE; // fakematching--can't get the tail merge correct
+ goto DONE;
+ }
+ }
+ else
+ {
+ if (gSprites[spriteId].pos2.x >= 0)
+ {
+ gSprites[spriteId].pos2.x = 0;
+ done = TRUE;
+ }
+ }
+
+ if (done)
+ {
+ DONE:
+ DestroyAnimVisualTask(taskId);
+ }
+ break;
+ }
+}
+
+void sub_81416C4(u8 taskId)
+{
+ u8 spriteId;
+
+ switch (gTasks[taskId].data[15])
+ {
+ case 0:
+ if (GetBattlerPosition_permutated(gAnimBankAttacker) == 1)
+ REG_BLDCNT = 0x3F42;
+ else
+ REG_BLDCNT = 0x3F44;
+
+ REG_BLDALPHA = 0x0010;
+ gTasks[taskId].data[15]++;
+ break;
+ case 1:
+ if (gTasks[taskId].data[1]++ > 1)
+ {
+ gTasks[taskId].data[1] = 0;
+ gTasks[taskId].data[0]++;
+ REG_BLDALPHA = (gTasks[taskId].data[0] << 8) | (16 - gTasks[taskId].data[0]);
+ if (gTasks[taskId].data[0] == 16)
+ gTasks[taskId].data[15]++;
+ }
+ break;
+ case 2:
+ spriteId = gBankSpriteIds[gAnimBankAttacker];
+ DmaClear32(3, (void *)OBJ_VRAM0 + gSprites[spriteId].oam.tileNum * TILE_SIZE_4BPP, 0x800);
+ sub_80324E0(gAnimBankAttacker);
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+void sub_81417D8(u8 taskId)
+{
+ gBattleAnimArgs[7] = ewram17800[gAnimBankAttacker].substituteSprite;
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_8141808(u8 taskId)
+{
+ gAnimBankTarget = gEffectBank;
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_8141828(u8 battler, struct Pokemon *mon)
+{
+ int isShiny;
+ u32 otId, personality;
+ u32 shinyValue;
+ u8 taskId1, taskId2;
+
+ isShiny = 0;
+ ewram17810[battler].unk0_7 = 1;
+ otId = GetMonData(mon, MON_DATA_OT_ID);
+ personality = GetMonData(mon, MON_DATA_PERSONALITY);
+
+ if (IsAnimBankSpriteVisible(battler))
+ {
+ shinyValue = HIHALF(otId) ^ LOHALF(otId) ^ HIHALF(personality) ^ LOHALF(personality);
+ if (shinyValue < 8)
+ isShiny = TRUE;
+
+ if (isShiny)
+ {
+ if (GetSpriteTileStartByTag(0x27F9) == 0xFFFF)
+ {
+ LoadCompressedObjectPic(&gBattleAnimPicTable[233]);
+ LoadCompressedObjectPalette(&gBattleAnimPaletteTable[233]);
+ }
+
+ taskId1 = CreateTask(sub_814191C, 10);
+ taskId2 = CreateTask(sub_814191C, 10);
+ gTasks[taskId1].data[0] = battler;
+ gTasks[taskId2].data[0] = battler;
+ gTasks[taskId1].data[1] = 0;
+ gTasks[taskId2].data[1] = 1;
+ return;
+ }
+ }
+
+ ewram17810[battler].unk1_0 = 1;
+}
+
+static void sub_814191C(u8 taskId)
+{
+ u8 battler;
+ u8 x, y;
+ u8 spriteId;
+ u16 counter;
+ s16 state;
+ u8 pan;
+
+ if (gTasks[taskId].data[13] < 60)
+ {
+ gTasks[taskId].data[13]++;
+ return;
+ }
+
+ if (ewram17840.unkA)
+ return;
+
+ counter = gTasks[taskId].data[10]++;
+ if (counter & 3)
+ return;
+
+ battler = gTasks[taskId].data[0];
+ x = GetBattlerSpriteCoord(battler, 0);
+ y = GetBattlerSpriteCoord(battler, 1);
+ state = gTasks[taskId].data[11];
+ if (state == 0)
+ {
+ spriteId = CreateSprite(&gBattleAnimSpriteTemplate_84024E8, x, y, 5);
+ }
+ else if (state >= 0 && gTasks[taskId].data[11] < 4)
+ {
+ spriteId = CreateSprite(&gSpriteTemplate_8402500, x, y, 5);
+ gSprites[spriteId].oam.tileNum += 4;
+ }
+ else
+ {
+ spriteId = CreateSprite(&gSpriteTemplate_8402500, x, y, 5);
+ gSprites[spriteId].oam.tileNum += 5;
+ }
+
+ if (gTasks[taskId].data[1] == 0)
+ {
+ gSprites[spriteId].callback = sub_8141B20;
+ }
+ else
+ {
+ gSprites[spriteId].callback = sub_8141B74;
+ gSprites[spriteId].pos2.x = -32;
+ gSprites[spriteId].pos2.y = 32;
+ gSprites[spriteId].invisible = 1;
+ if (gTasks[taskId].data[11] == 0)
+ {
+ if (GetBattlerSide(battler) == B_SIDE_PLAYER)
+ pan = 192;
+ else
+ pan = 63;
+
+ PlaySE12WithPanning(SE_REAPOKE, pan);
+ }
+ }
+
+ gSprites[spriteId].data[0] = taskId;
+ gTasks[taskId].data[11]++;
+ gTasks[taskId].data[12]++;
+ if (gTasks[taskId].data[11] == 5)
+ gTasks[taskId].func = sub_8141AD8;
+}
+
+static void sub_8141AD8(u8 taskId)
+{
+ u8 battler;
+
+ if (gTasks[taskId].data[12] == 0)
+ {
+ if (gTasks[taskId].data[1] == 1)
+ {
+ battler = gTasks[taskId].data[0];
+ ewram17810[battler].unk1_0 = 1;
+ }
+
+ DestroyTask(taskId);
+ }
+}
+
+static void sub_8141B20(struct Sprite *sprite)
+{
+ sprite->pos2.x = Sin(sprite->data[1], 24);
+ sprite->pos2.y = Cos(sprite->data[1], 24);
+ sprite->data[1] += 12;
+ if (sprite->data[1] > 0xFF)
+ {
+ gTasks[sprite->data[0]].data[12]--;
+ FreeSpriteOamMatrix(sprite);
+ DestroySprite(sprite);
+ }
+}
+
+static void sub_8141B74(struct Sprite *sprite)
+{
+ if (sprite->data[1] < 4)
+ {
+ sprite->data[1]++;
+ }
+ else
+ {
+ sprite->invisible = 0;
+ sprite->pos2.x += 5;
+ sprite->pos2.y -= 5;
+ if (sprite->pos2.x > 32)
+ {
+ gTasks[sprite->data[0]].data[12]--;
+ FreeSpriteOamMatrix(sprite);
+ DestroySprite(sprite);
+ }
+ }
+}
+
+void sub_8141BD4(u8 taskId)
+{
+ u8 paletteIndex;
+
+ LoadCompressedObjectPic(&gBattleAnimPicTable[269]);
+ LoadCompressedObjectPalette(&gBattleAnimPaletteTable[269]);
+ paletteIndex = IndexOfSpritePaletteTag(0x281D); // unused
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_8141C08(u8 taskId)
+{
+ FreeSpriteTilesByTag(0x281D);
+ FreeSpritePaletteByTag(0x281D);
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_8141C30(struct Sprite *sprite)
+{
+ InitAnimSpritePos(sprite, 0);
+ sprite->data[0] = 30;
+ sprite->data[2] = GetBattlerSpriteCoord(GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), 0) + gBattleAnimArgs[2];
+ sprite->data[4] = GetBattlerSpriteCoord(GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), 1) + gBattleAnimArgs[3];
+ sprite->data[5] = -32;
+ InitAnimArcTranslation(sprite);
+ StartSpriteAnim(&gSprites[gBankSpriteIds[gAnimBankAttacker]], 1);
+ sprite->callback = sub_8141CBC;
+}
+
+static void sub_8141CBC(struct Sprite *sprite)
+{
+ if (gSprites[gBankSpriteIds[gAnimBankAttacker]].animCmdIndex == 1)
+ sprite->callback = sub_8141CF4;
+}
+
+static void sub_8141CF4(struct Sprite *sprite)
+{
+ if (TranslateAnimArc(sprite))
+ {
+ sprite->data[0] = 0;
+ sprite->invisible = 1;
+ sprite->callback = sub_8141D20;
+ }
+}
+
+static void sub_8141D20(struct Sprite *sprite)
+{
+ if (gSprites[gBankSpriteIds[gAnimBankAttacker]].animEnded)
+ {
+ if (++sprite->data[0] > 0)
+ {
+ StartSpriteAnim(&gSprites[gBankSpriteIds[gAnimBankAttacker]], 0);
+ DestroyAnimSprite(sprite);
+ }
+ }
+}
+
+void sub_8141D7C(u8 taskId)
+{
+ gAnimBankAttacker = GetBattlerAtPosition(B_POSITION_PLAYER_LEFT);
+ gAnimBankTarget = GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT);
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_8141DAC(u8 taskId)
+{
+ if (ewram17840.unk0 == 83)
+ gBattleAnimArgs[0] = 1;
+ else if (ewram17840.unk0 == 250)
+ gBattleAnimArgs[0] = 2;
+ else if (ewram17840.unk0 == 128)
+ gBattleAnimArgs[0] = 3;
+ else if (ewram17840.unk0 == 328)
+ gBattleAnimArgs[0] = 4;
+ else
+ gBattleAnimArgs[0] = 0;
+
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_8141E10(u8 taskId)
+{
+ gAnimBankAttacker = ewram17840.unk0;
+ gAnimBankTarget = ewram17840.unk0 >> 8;
+ DestroyAnimVisualTask(taskId);
+}
diff --git a/src/battle/battle_controller_linkopponent.c b/src/battle/battle_controller_linkopponent.c
index a759822cd..8ca3d160a 100644
--- a/src/battle/battle_controller_linkopponent.c
+++ b/src/battle/battle_controller_linkopponent.c
@@ -1,6 +1,7 @@
#include "global.h"
#include "battle.h"
#include "battle_anim.h"
+#include "battle_anim_813F0F4.h"
#include "battle_interface.h"
#include "data2.h"
#include "link.h"
@@ -71,7 +72,7 @@ extern void sub_80313A0(struct Sprite *);
extern void sub_803757C(void);
extern void oamt_add_pos2_onto_pos1();
extern void StoreSpriteCallbackInData();
-extern void StartTranslateAnimSpriteByDeltas(struct Sprite *);
+extern void StartAnimLinearTranslation(struct Sprite *);
extern void sub_80375B4(void);
extern void sub_8010384(struct Sprite *);
extern void sub_8037B78(void);
@@ -103,7 +104,6 @@ extern u8 move_anim_start_t3();
extern void sub_8037FD8(void);
extern void sub_8037F34(void);
extern void LinkOpponentBufferExecCompleted(void);
-extern void sub_8141828();
extern void sub_804777C();
// this file's functions
@@ -1280,7 +1280,7 @@ void LinkOpponentHandleTrainerSlideBack(void)
gSprites[gBankSpriteIds[gActiveBattler]].data[0] = 35;
gSprites[gBankSpriteIds[gActiveBattler]].data[2] = 280;
gSprites[gBankSpriteIds[gActiveBattler]].data[4] = gSprites[gBankSpriteIds[gActiveBattler]].pos1.y;
- gSprites[gBankSpriteIds[gActiveBattler]].callback = StartTranslateAnimSpriteByDeltas;
+ gSprites[gBankSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData(&gSprites[gBankSpriteIds[gActiveBattler]], SpriteCallbackDummy);
gBattleBankFunc[gActiveBattler] = sub_80375B4;
}
@@ -1631,7 +1631,7 @@ void LinkOpponentHandleTrainerBallThrow(void)
gSprites[gBankSpriteIds[gActiveBattler]].data[0] = 35;
gSprites[gBankSpriteIds[gActiveBattler]].data[2] = 280;
gSprites[gBankSpriteIds[gActiveBattler]].data[4] = gSprites[gBankSpriteIds[gActiveBattler]].pos1.y;
- gSprites[gBankSpriteIds[gActiveBattler]].callback = StartTranslateAnimSpriteByDeltas;
+ gSprites[gBankSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData(&gSprites[gBankSpriteIds[gActiveBattler]], sub_803A3A8);
taskId = CreateTask(sub_803A2C4, 5);
gTasks[taskId].data[0] = gActiveBattler;
diff --git a/src/battle/battle_controller_linkpartner.c b/src/battle/battle_controller_linkpartner.c
index 16aef5791..dff4edfc1 100644
--- a/src/battle/battle_controller_linkpartner.c
+++ b/src/battle/battle_controller_linkpartner.c
@@ -1,6 +1,7 @@
#include "global.h"
#include "battle.h"
#include "battle_anim.h"
+#include "battle_anim_813F0F4.h"
#include "battle_interface.h"
#include "data2.h"
#include "battle_811DA74.h"
@@ -73,7 +74,7 @@ extern u8 sub_8031720();
extern u8 mplay_80342A4();
extern void oamt_add_pos2_onto_pos1();
extern void StoreSpriteCallbackInData();
-extern void StartTranslateAnimSpriteByDeltas(struct Sprite *);
+extern void StartAnimLinearTranslation(struct Sprite *);
extern void sub_80105EC(struct Sprite *);
extern s32 sub_803FC34(u16);
extern void LoadPlayerTrainerBankSprite();
@@ -97,7 +98,6 @@ 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);
// this file's functions
@@ -1224,7 +1224,7 @@ void LinkPartnerHandleTrainerSlideBack(void)
gSprites[gBankSpriteIds[gActiveBattler]].data[0] = 35;
gSprites[gBankSpriteIds[gActiveBattler]].data[2] = -40;
gSprites[gBankSpriteIds[gActiveBattler]].data[4] = gSprites[gBankSpriteIds[gActiveBattler]].pos1.y;
- gSprites[gBankSpriteIds[gActiveBattler]].callback = StartTranslateAnimSpriteByDeltas;
+ gSprites[gBankSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData(&gSprites[gBankSpriteIds[gActiveBattler]], SpriteCallbackDummy);
gBattleBankFunc[gActiveBattler] = sub_811DB1C;
}
@@ -1576,7 +1576,7 @@ void LinkPartnerHandleTrainerBallThrow(void)
gSprites[gBankSpriteIds[gActiveBattler]].data[0] = 50;
gSprites[gBankSpriteIds[gActiveBattler]].data[2] = -40;
gSprites[gBankSpriteIds[gActiveBattler]].data[4] = gSprites[gBankSpriteIds[gActiveBattler]].pos1.y;
- gSprites[gBankSpriteIds[gActiveBattler]].callback = StartTranslateAnimSpriteByDeltas;
+ gSprites[gBankSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
gSprites[gBankSpriteIds[gActiveBattler]].data[5] = gActiveBattler;
StoreSpriteCallbackInData(&gSprites[gBankSpriteIds[gActiveBattler]], sub_8030E38);
StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBattler]], 1);
diff --git a/src/battle/battle_controller_opponent.c b/src/battle/battle_controller_opponent.c
index d8760e21f..ee313c098 100644
--- a/src/battle/battle_controller_opponent.c
+++ b/src/battle/battle_controller_opponent.c
@@ -83,7 +83,7 @@ extern void sub_80313A0(struct Sprite *);
extern void sub_8032B4C(void);
extern void sub_8031A6C(u16, u8);
extern void sub_8032B84(void);
-extern void StartTranslateAnimSpriteByDeltas(struct Sprite *);
+extern void StartAnimLinearTranslation(struct Sprite *);
extern void sub_8032BBC(void);
extern void oamt_add_pos2_onto_pos1();
extern void StoreSpriteCallbackInData();
@@ -1284,7 +1284,7 @@ void OpponentHandleTrainerSlideBack(void)
gSprites[gBankSpriteIds[gActiveBattler]].data[0] = 35;
gSprites[gBankSpriteIds[gActiveBattler]].data[2] = 280;
gSprites[gBankSpriteIds[gActiveBattler]].data[4] = gSprites[gBankSpriteIds[gActiveBattler]].pos1.y;
- gSprites[gBankSpriteIds[gActiveBattler]].callback = StartTranslateAnimSpriteByDeltas;
+ gSprites[gBankSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData(&gSprites[gBankSpriteIds[gActiveBattler]], SpriteCallbackDummy);
gBattleBankFunc[gActiveBattler] = sub_8032BBC;
}
@@ -2223,7 +2223,7 @@ void OpponentHandleTrainerBallThrow(void)
gSprites[gBankSpriteIds[gActiveBattler]].data[0] = 35;
gSprites[gBankSpriteIds[gActiveBattler]].data[2] = 280;
gSprites[gBankSpriteIds[gActiveBattler]].data[4] = gSprites[gBankSpriteIds[gActiveBattler]].pos1.y;
- gSprites[gBankSpriteIds[gActiveBattler]].callback = StartTranslateAnimSpriteByDeltas;
+ gSprites[gBankSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData(&gSprites[gBankSpriteIds[gActiveBattler]], sub_8035C10);
taskId = CreateTask(sub_8035C44, 5);
gTasks[taskId].data[0] = gActiveBattler;
diff --git a/src/battle/battle_controller_player.c b/src/battle/battle_controller_player.c
index a83946554..654a2c195 100644
--- a/src/battle/battle_controller_player.c
+++ b/src/battle/battle_controller_player.c
@@ -2,6 +2,7 @@
#include "data2.h"
#include "battle.h"
#include "battle_anim.h"
+#include "battle_anim_813F0F4.h"
#include "battle_interface.h"
#include "battle_message.h"
#include "item.h"
@@ -94,7 +95,7 @@ extern void sub_8047858();
extern u8 GetBattlerSide(u8);
extern void StartBattleIntroAnim();
extern void oamt_add_pos2_onto_pos1();
-extern void StartTranslateAnimSpriteByDeltas(struct Sprite *);
+extern void StartAnimLinearTranslation(struct Sprite *);
extern void StoreSpriteCallbackInData();
extern void BattleLoadPlayerMonSprite();
extern bool8 IsDoubleBattle(void);
@@ -164,7 +165,6 @@ extern void sub_8010520(struct Sprite *);
extern void sub_8010574(struct Sprite *);
extern bool8 IsDoubleBattle();
extern void sub_804777C();
-extern void sub_8141828();
extern void sub_8094E20(u8);
extern void nullsub_14(void);
extern void sub_80A6DCC(void);
@@ -2612,7 +2612,7 @@ void PlayerHandleTrainerSlideBack(void)
gSprites[gBankSpriteIds[gActiveBattler]].data[0] = 50;
gSprites[gBankSpriteIds[gActiveBattler]].data[2] = -40;
gSprites[gBankSpriteIds[gActiveBattler]].data[4] = gSprites[gBankSpriteIds[gActiveBattler]].pos1.y;
- gSprites[gBankSpriteIds[gActiveBattler]].callback = StartTranslateAnimSpriteByDeltas;
+ gSprites[gBankSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData(&gSprites[gBankSpriteIds[gActiveBattler]], SpriteCallbackDummy);
StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBattler]], 1);
gBattleBankFunc[gActiveBattler] = sub_802D274;
@@ -3067,7 +3067,7 @@ void PlayerHandleTrainerBallThrow(void)
gSprites[gBankSpriteIds[gActiveBattler]].data[0] = 50;
gSprites[gBankSpriteIds[gActiveBattler]].data[2] = -40;
gSprites[gBankSpriteIds[gActiveBattler]].data[4] = gSprites[gBankSpriteIds[gActiveBattler]].pos1.y;
- gSprites[gBankSpriteIds[gActiveBattler]].callback = StartTranslateAnimSpriteByDeltas;
+ gSprites[gBankSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
gSprites[gBankSpriteIds[gActiveBattler]].data[5] = gActiveBattler;
StoreSpriteCallbackInData(&gSprites[gBankSpriteIds[gActiveBattler]], sub_8030E38);
StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBattler]], 1);
diff --git a/src/battle/battle_controller_wally.c b/src/battle/battle_controller_wally.c
index ed4eadee6..312ef9d12 100644
--- a/src/battle/battle_controller_wally.c
+++ b/src/battle/battle_controller_wally.c
@@ -1,6 +1,7 @@
#include "global.h"
#include "battle.h"
#include "battle_anim.h"
+#include "battle_anim_813F0F4.h"
#include "battle_interface.h"
#include "battle_message.h"
#include "data2.h"
@@ -63,7 +64,6 @@ extern void Emitcmd35(u8, u16);
extern void nullsub_14(void);
extern void PrepareBagForWallyTutorial(void);
-extern void sub_8141828();
extern void sub_8045A5C();
extern void sub_804777C();
extern void sub_8043DFC();
@@ -85,7 +85,7 @@ extern void sub_80304A8(void);
extern void sub_8047858();
extern void StartBattleIntroAnim();
extern void oamt_add_pos2_onto_pos1();
-extern void StartTranslateAnimSpriteByDeltas(struct Sprite *);
+extern void StartAnimLinearTranslation(struct Sprite *);
extern void sub_8030E38(struct Sprite *);
extern void StoreSpriteCallbackInData();
extern u8 sub_8046400();
@@ -1482,7 +1482,7 @@ void WallyHandleTrainerBallThrow(void)
gSprites[gBankSpriteIds[gActiveBattler]].data[0] = 50;
gSprites[gBankSpriteIds[gActiveBattler]].data[2] = -40;
gSprites[gBankSpriteIds[gActiveBattler]].data[4] = gSprites[gBankSpriteIds[gActiveBattler]].pos1.y;
- gSprites[gBankSpriteIds[gActiveBattler]].callback = StartTranslateAnimSpriteByDeltas;
+ gSprites[gBankSpriteIds[gActiveBattler]].callback = StartAnimLinearTranslation;
gSprites[gBankSpriteIds[gActiveBattler]].data[5] = gActiveBattler;
StoreSpriteCallbackInData(&gSprites[gBankSpriteIds[gActiveBattler]], sub_8030E38);
StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBattler]], 1);
diff --git a/src/battle/pokeball.c b/src/battle/pokeball.c
index c619141a1..ac15246d6 100644
--- a/src/battle/pokeball.c
+++ b/src/battle/pokeball.c
@@ -1,6 +1,7 @@
#include "global.h"
#include "gba/m4a_internal.h"
#include "battle.h"
+#include "battle_anim_813F0F4.h"
#include "decompress.h"
#include "graphics.h"
#include "m4a.h"
@@ -296,11 +297,8 @@ const struct SpriteTemplate gBallSpriteTemplates[] =
},
};
-extern u32 ball_number_to_ball_processing_index(u16); // not sure of return type
-extern void InitAnimSpriteTranslationOverDuration();
-extern bool8 TranslateAnimSpriteLinearAndSine(struct Sprite *);
-extern u8 sub_814086C(u8, u8, int, int, u8);
-extern u8 sub_8141314(u8, u8, int, u8);
+extern void InitAnimArcTranslation();
+extern bool8 TranslateAnimArc(struct Sprite *);
static void sub_8046464(u8);
static void sub_80466E8(struct Sprite *);
@@ -397,7 +395,7 @@ static void sub_8046464(u8 taskId)
gSprites[spriteId].data[2] = GetBattlerSpriteCoord(gBankTarget, 0);
gSprites[spriteId].data[4] = GetBattlerSpriteCoord(gBankTarget, 1) - 16;
gSprites[spriteId].data[5] = -40;
- InitAnimSpriteTranslationOverDuration(&gSprites[spriteId]);
+ InitAnimArcTranslation(&gSprites[spriteId]);
gSprites[spriteId].oam.affineParam = taskId;
gTasks[taskId].data[4] = gBankTarget;
gTasks[taskId].func = TaskDummy;
@@ -406,7 +404,7 @@ static void sub_8046464(u8 taskId)
static void objc_0804ABD4(struct Sprite *sprite)
{
- if (TranslateAnimSpriteLinearAndSine(sprite))
+ if (TranslateAnimArc(sprite))
{
u8 taskId = sprite->oam.affineParam;
u8 r5 = gTasks[taskId].data[4];
@@ -834,7 +832,7 @@ static void sub_8047074(struct Sprite *sprite)
sprite->data[4] = GetBattlerSpriteCoord(sprite->data[6], 3) + 24;
sprite->data[5] = -30;
sprite->oam.affineParam = sprite->data[6];
- InitAnimSpriteTranslationOverDuration(sprite);
+ InitAnimArcTranslation(sprite);
sprite->callback = sub_80470C4;
}
@@ -858,7 +856,7 @@ static void sub_80470C4(struct Sprite *sprite)
StartSpriteAffineAnim(sprite, 4);
}
r4 = sprite->data[0];
- TranslateAnimSpriteByDeltas(sprite);
+ TranslateAnimLinear(sprite);
sprite->data[7] += sprite->data[6] / 3;
sprite->pos2.y += Sin(HIBYTE(sprite->data[7]), sprite->data[5]);
sprite->oam.affineParam += 0x100;
@@ -876,7 +874,7 @@ static void sub_80470C4(struct Sprite *sprite)
}
else
{
- if (TranslateAnimSpriteLinearAndSine(sprite))
+ if (TranslateAnimArc(sprite))
{
sprite->pos1.x += sprite->pos2.x;
sprite->pos1.y += sprite->pos2.y;
diff --git a/src/pokemon_1.c b/src/pokemon_1.c
index 0622ec614..4f5094024 100644
--- a/src/pokemon_1.c
+++ b/src/pokemon_1.c
@@ -13,12 +13,7 @@
#include "trainer.h"
#include "text.h"
#include "ewram.h"
-
-//Extracts the upper 16 bits of a 32-bit number
-#define HIHALF(n) (((n) & 0xFFFF0000) >> 16)
-
-//Extracts the lower 16 bits of a 32-bit number
-#define LOHALF(n) ((n) & 0xFFFF)
+#include "util.h"
extern u16 gMoveToLearn;
diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c
index aabacbe2f..bef221451 100644
--- a/src/pokemon_summary_screen.c
+++ b/src/pokemon_summary_screen.c
@@ -3,6 +3,7 @@
#include "constants/songs.h"
#include "constants/species.h"
#include "battle.h"
+#include "battle_anim_813F0F4.h"
#include "contest.h"
#include "data2.h"
#include "decompress.h"
@@ -118,7 +119,6 @@ static u8 *sub_80A1E58(u8 *, u8);
static void sub_80A0A2C(struct Pokemon *, u8, u8);
static void sub_80A1FF8(const u8 *, u8, u8, u8);
-extern u8 ball_number_to_ball_processing_index(u16);
extern u8 StorageSystemGetNextMonIndex(struct BoxPokemon *, u8, u8, u8);
extern struct MusicPlayerInfo gMPlay_BGM;
diff --git a/src/rom_8077ABC.c b/src/rom_8077ABC.c
index 00ce3d8df..e81d02251 100644
--- a/src/rom_8077ABC.c
+++ b/src/rom_8077ABC.c
@@ -760,18 +760,18 @@ void sub_807867C(struct Sprite *sprite, s16 a2)
}
}
-void InitAnimSpriteTranslationOverDuration(struct Sprite *sprite)
+void InitAnimArcTranslation(struct Sprite *sprite)
{
sprite->data[1] = sprite->pos1.x;
sprite->data[3] = sprite->pos1.y;
- InitAnimSpriteTranslationDeltas(sprite);
+ InitAnimLinearTranslation(sprite);
sprite->data[6] = 0x8000 / sprite->data[0];
sprite->data[7] = 0;
}
-bool8 TranslateAnimSpriteLinearAndSine(struct Sprite *sprite)
+bool8 TranslateAnimArc(struct Sprite *sprite)
{
- if (TranslateAnimSpriteByDeltas(sprite))
+ if (TranslateAnimLinear(sprite))
return TRUE;
sprite->data[7] += sprite->data[6];
sprite->pos2.y += Sin((u8)(sprite->data[7] >> 8), sprite->data[5]);
@@ -951,7 +951,7 @@ void InitSpriteDataForLinearTranslation(struct Sprite *sprite)
sprite->data[3] = 0;
}
-void InitAnimSpriteTranslationDeltas(struct Sprite *sprite)
+void InitAnimLinearTranslation(struct Sprite *sprite)
{
int x = sprite->data[2] - sprite->data[1];
int y = sprite->data[4] - sprite->data[3];
@@ -979,16 +979,16 @@ void InitAnimSpriteTranslationDeltas(struct Sprite *sprite)
sprite->data[3] = 0;
}
-void StartTranslateAnimSpriteByDeltas(struct Sprite *sprite)
+void StartAnimLinearTranslation(struct Sprite *sprite)
{
sprite->data[1] = sprite->pos1.x;
sprite->data[3] = sprite->pos1.y;
- InitAnimSpriteTranslationDeltas(sprite);
- sprite->callback = TranslateAnimSpriteByDeltasUntil;
+ InitAnimLinearTranslation(sprite);
+ sprite->callback = TranslateAnimLinearUntil;
sprite->callback(sprite);
}
-bool8 TranslateAnimSpriteByDeltas(struct Sprite *sprite)
+bool8 TranslateAnimLinear(struct Sprite *sprite)
{
u16 v1, v2, x, y;
@@ -1018,9 +1018,9 @@ bool8 TranslateAnimSpriteByDeltas(struct Sprite *sprite)
return FALSE;
}
-void TranslateAnimSpriteByDeltasUntil(struct Sprite *sprite)
+void TranslateAnimLinearUntil(struct Sprite *sprite)
{
- if (TranslateAnimSpriteByDeltas(sprite))
+ if (TranslateAnimLinear(sprite))
SetCallbackToStoredInData(sprite);
}
@@ -1028,7 +1028,7 @@ void sub_8078BD4(struct Sprite *sprite)
{
int v1 = abs(sprite->data[2] - sprite->data[1]) << 8;
sprite->data[0] = v1 / sprite->data[0];
- InitAnimSpriteTranslationDeltas(sprite);
+ InitAnimLinearTranslation(sprite);
}
void sub_8078C00(struct Sprite *sprite)
@@ -1036,7 +1036,7 @@ void sub_8078C00(struct Sprite *sprite)
sprite->data[1] = sprite->pos1.x;
sprite->data[3] = sprite->pos1.y;
sub_8078BD4(sprite);
- sprite->callback = TranslateAnimSpriteByDeltasUntil;
+ sprite->callback = TranslateAnimLinearUntil;
sprite->callback(sprite);
}
@@ -1420,7 +1420,7 @@ void TranslateAnimSpriteToTargetMonLocation(struct Sprite *sprite)
sprite->data[0] = gBattleAnimArgs[4];
sprite->data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 2) + gBattleAnimArgs[2];
sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, v2) + gBattleAnimArgs[3];
- sprite->callback = StartTranslateAnimSpriteByDeltas;
+ sprite->callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
}
@@ -1433,13 +1433,13 @@ void sub_80794A8(struct Sprite *sprite)
sprite->data[2] = GetBattlerSpriteCoord(gAnimBankTarget, 2) + gBattleAnimArgs[2];
sprite->data[4] = GetBattlerSpriteCoord(gAnimBankTarget, 3) + gBattleAnimArgs[3];
sprite->data[5] = gBattleAnimArgs[5];
- InitAnimSpriteTranslationOverDuration(sprite);
+ InitAnimArcTranslation(sprite);
sprite->callback = sub_8079518;
}
void sub_8079518(struct Sprite *sprite)
{
- if (TranslateAnimSpriteLinearAndSine(sprite))
+ if (TranslateAnimArc(sprite))
DestroyAnimSprite(sprite);
}
@@ -1473,7 +1473,7 @@ void sub_8079534(struct Sprite *sprite)
sprite->data[0] = gBattleAnimArgs[4];
sprite->data[2] = GetBattlerSpriteCoord(slot, 2) + gBattleAnimArgs[2];
sprite->data[4] = GetBattlerSpriteCoord(slot, r7) + gBattleAnimArgs[3];
- sprite->callback = StartTranslateAnimSpriteByDeltas;
+ sprite->callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
}
@@ -2351,6 +2351,6 @@ void sub_807A9BC(struct Sprite *sprite)
sprite->pos1.x += x;
sprite->pos1.y = gBattleAnimArgs[5] - 80;
}
- sprite->callback = StartTranslateAnimSpriteByDeltas;
+ sprite->callback = StartAnimLinearTranslation;
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
}